PowerPC floating point little-endian [4 of 15]
[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, drem, 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, pow10, 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    lgamma_r,
62    nan.
63
64    Parameter handling is primitive in the moment:
65    --verbose=[0..3] for different levels of output:
66    0: only error count
67    1: basic report on failed tests (default)
68    2: full report on all tests
69    -v for full output (equals --verbose=3)
70    -u for generation of an ULPs file
71  */
72
73 /* "Philosophy":
74
75    This suite tests some aspects of the correct implementation of
76    mathematical functions in libm.  Some simple, specific parameters
77    are tested for correctness but there's no exhaustive
78    testing.  Handling of specific inputs (e.g. infinity, not-a-number)
79    is also tested.  Correct handling of exceptions is checked
80    against.  These implemented tests should check all cases that are
81    specified in ISO C99.
82
83    NaN values: There exist signalling and quiet NaNs.  This implementation
84    only uses quiet NaN as parameter.  Where the sign of a NaN is
85    significant, this is not tested.  The payload of NaNs is not examined.
86
87    Inline functions: Inlining functions should give an improvement in
88    speed - but not in precission.  The inlined functions return
89    reasonable values for a reasonable range of input values.  The
90    result is not necessarily correct for all values and exceptions are
91    not correctly raised in all cases.  Problematic input and return
92    values are infinity, not-a-number and minus zero.  This suite
93    therefore does not check these specific inputs and the exception
94    handling for inlined mathematical functions - just the "reasonable"
95    values are checked.
96
97    Beware: The tests might fail for any of the following reasons:
98    - Tests are wrong
99    - Functions are wrong
100    - Floating Point Unit not working properly
101    - Compiler has errors
102
103    With e.g. gcc 2.7.2.2 the test for cexp fails because of a compiler error.
104
105
106    To Do: All parameter should be numbers that can be represented as
107    exact floating point values.  Currently some values cannot be
108    represented exactly and therefore the result is not the expected
109    result.  For this we will use 36 digits so that numbers can be
110    represented exactly.  */
111
112 #ifndef _GNU_SOURCE
113 # define _GNU_SOURCE
114 #endif
115
116 #include <complex.h>
117 #include <math.h>
118 #include <float.h>
119 #include <fenv.h>
120 #include <limits.h>
121
122 #include <errno.h>
123 #include <stdlib.h>
124 #include <stdio.h>
125 #include <string.h>
126 #include <argp.h>
127 #include <tininess.h>
128 #include <math-tests.h>
129
130 /* Structure for ulp data for a test, a function, or the real or
131    imaginary part of a function.  */
132 struct ulp_data
133 {
134   const char *name;
135   FLOAT max_ulp;
136 };
137
138 /* This header defines test_ulps, func_ulps, func_real_ulps and
139    func_imag_ulps arrays.  */
140 #include "libm-test-ulps.h"
141
142 /* Allow platforms without all rounding modes to test properly,
143    assuming they provide an __FE_UNDEFINED in <bits/fenv.h> which
144    causes fesetround() to return failure.  */
145 #ifndef FE_TONEAREST
146 # define FE_TONEAREST   __FE_UNDEFINED
147 #endif
148 #ifndef FE_TOWARDZERO
149 # define FE_TOWARDZERO  __FE_UNDEFINED
150 #endif
151 #ifndef FE_UPWARD
152 # define FE_UPWARD      __FE_UNDEFINED
153 #endif
154 #ifndef FE_DOWNWARD
155 # define FE_DOWNWARD    __FE_UNDEFINED
156 #endif
157
158 /* Possible exceptions */
159 #define NO_EXCEPTION                    0x0
160 #define INVALID_EXCEPTION               0x1
161 #define DIVIDE_BY_ZERO_EXCEPTION        0x2
162 #define OVERFLOW_EXCEPTION              0x4
163 #define UNDERFLOW_EXCEPTION             0x8
164 #define INEXACT_EXCEPTION               0x10
165 /* The next flags signals that those exceptions are allowed but not required.   */
166 #define INVALID_EXCEPTION_OK            0x20
167 #define DIVIDE_BY_ZERO_EXCEPTION_OK     0x40
168 #define OVERFLOW_EXCEPTION_OK           0x80
169 #define UNDERFLOW_EXCEPTION_OK          0x100
170 /* For "inexact" exceptions, the default is allowed but not required
171    unless INEXACT_EXCEPTION or NO_INEXACT_EXCEPTION is specified.  */
172 #define NO_INEXACT_EXCEPTION            0x200
173 #define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK
174 /* Some special test flags, passed together with exceptions.  */
175 #define IGNORE_ZERO_INF_SIGN            0x400
176 /* Indicate errno settings required or disallowed.  */
177 #define ERRNO_UNCHANGED                 0x800
178 #define ERRNO_EDOM                      0x1000
179 #define ERRNO_ERANGE                    0x2000
180
181 /* Values underflowing only for float.  */
182 #ifdef TEST_FLOAT
183 # define UNDERFLOW_EXCEPTION_FLOAT      UNDERFLOW_EXCEPTION
184 # define UNDERFLOW_EXCEPTION_OK_FLOAT   UNDERFLOW_EXCEPTION_OK
185 #else
186 # define UNDERFLOW_EXCEPTION_FLOAT      0
187 # define UNDERFLOW_EXCEPTION_OK_FLOAT   0
188 #endif
189 /* Values underflowing only for double or types with a larger least
190    positive normal value.  */
191 #if defined TEST_FLOAT || defined TEST_DOUBLE \
192   || (defined TEST_LDOUBLE && LDBL_MIN_EXP >= DBL_MIN_EXP)
193 # define UNDERFLOW_EXCEPTION_DOUBLE     UNDERFLOW_EXCEPTION
194 # define UNDERFLOW_EXCEPTION_OK_DOUBLE  UNDERFLOW_EXCEPTION_OK
195 #else
196 # define UNDERFLOW_EXCEPTION_DOUBLE     0
197 # define UNDERFLOW_EXCEPTION_OK_DOUBLE  0
198 #endif
199 /* Values underflowing only for IBM long double or types with a larger least
200    positive normal value.  */
201 #if defined TEST_FLOAT || (defined TEST_LDOUBLE && LDBL_MIN_EXP > DBL_MIN_EXP)
202 # define UNDERFLOW_EXCEPTION_LDOUBLE_IBM        UNDERFLOW_EXCEPTION
203 #else
204 # define UNDERFLOW_EXCEPTION_LDOUBLE_IBM        0
205 #endif
206 /* Values underflowing on architectures detecting tininess before
207    rounding, but not on those detecting tininess after rounding.  */
208 #define UNDERFLOW_EXCEPTION_BEFORE_ROUNDING     (TININESS_AFTER_ROUNDING \
209                                                  ? 0                    \
210                                                  : UNDERFLOW_EXCEPTION)
211
212 /* Various constants (we must supply them precalculated for accuracy).  */
213 #define M_PI_6l                 .52359877559829887307710723054658383L
214 #define M_E2l                   7.389056098930650227230427460575008L
215 #define M_E3l                   20.085536923187667740928529654581719L
216 #define M_2_SQRT_PIl            3.5449077018110320545963349666822903L   /* 2 sqrt (M_PIl)  */
217 #define M_SQRT_PIl              1.7724538509055160272981674833411451L   /* sqrt (M_PIl)  */
218 #define M_LOG_SQRT_PIl          0.57236494292470008707171367567652933L  /* log(sqrt(M_PIl))  */
219 #define M_LOG_2_SQRT_PIl        1.265512123484645396488945797134706L    /* log(2*sqrt(M_PIl))  */
220 #define M_PI_34l                2.356194490192344928846982537459627163L /* 3*pi/4 */
221 #define M_PI_34_LOG10El         1.023282265381381010614337719073516828L
222 #define M_PI2_LOG10El           0.682188176920920673742891812715677885L
223 #define M_PI4_LOG10El           0.341094088460460336871445906357838943L
224 #define M_PI_LOG10El            1.364376353841841347485783625431355770L
225 #define M_1_DIV_El              0.367879441171442321595523770161460867L /* 1 div e  */
226
227 #define ulps_file_name "ULPs"   /* Name of the ULPs file.  */
228 static FILE *ulps_file;         /* File to document difference.  */
229 static int output_ulps;         /* Should ulps printed?  */
230 static char *output_dir;        /* Directory where generated files will be written.  */
231
232 static int noErrors;    /* number of errors */
233 static int noTests;     /* number of tests (without testing exceptions) */
234 static int noExcTests;  /* number of tests for exception flags */
235 static int noErrnoTests;/* number of tests for errno values */
236
237 static int verbose;
238 static int output_max_error;    /* Should the maximal errors printed?  */
239 static int output_points;       /* Should the single function results printed?  */
240 static int ignore_max_ulp;      /* Should we ignore max_ulp?  */
241
242 #define plus_zero       CHOOSE (0.0L, 0.0, 0.0f,        \
243                                 0.0L, 0.0, 0.0f)
244 #define minus_zero      CHOOSE (-0.0L, -0.0, -0.0f,     \
245                                 -0.0L, -0.0, -0.0f)
246 #define plus_infty      CHOOSE (HUGE_VALL, HUGE_VAL, HUGE_VALF, \
247                                 HUGE_VALL, HUGE_VAL, HUGE_VALF)
248 #define minus_infty     CHOOSE (-HUGE_VALL, -HUGE_VAL, -HUGE_VALF,      \
249                                 -HUGE_VALL, -HUGE_VAL, -HUGE_VALF)
250 #define qnan_value      FUNC (__builtin_nan) ("")
251 #define max_value       CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX,     \
252                                 LDBL_MAX, DBL_MAX, FLT_MAX)
253 #define min_value       CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN,     \
254                                 LDBL_MIN, DBL_MIN, FLT_MIN)
255 #define min_subnorm_value       CHOOSE (__LDBL_DENORM_MIN__,    \
256                                         __DBL_DENORM_MIN__,     \
257                                         __FLT_DENORM_MIN__,     \
258                                         __LDBL_DENORM_MIN__,    \
259                                         __DBL_DENORM_MIN__,     \
260                                         __FLT_DENORM_MIN__)
261
262 static FLOAT max_error, real_max_error, imag_max_error;
263
264
265 #define BUILD_COMPLEX(real, imag) \
266   ({ __complex__ FLOAT __retval;                                              \
267      __real__ __retval = (real);                                              \
268      __imag__ __retval = (imag);                                              \
269      __retval; })
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 #define MIN_EXP CHOOSE ((LDBL_MIN_EXP-1), (DBL_MIN_EXP-1), (FLT_MIN_EXP-1),     \
274                         (LDBL_MIN_EXP-1), (DBL_MIN_EXP-1), (FLT_MIN_EXP-1))
275
276 /* Compare KEY (a string, with the name of a test or a function) with
277    ULP (a pointer to a struct ulp_data structure), returning a value
278    less than, equal to or greater than zero for use in bsearch.  */
279
280 static int
281 compare_ulp_data (const void *key, const void *ulp)
282 {
283   const char *keystr = key;
284   const struct ulp_data *ulpdat = ulp;
285   return strcmp (keystr, ulpdat->name);
286 }
287
288 /* Return the ulps for NAME in array DATA with NMEMB elements, or 0 if
289    no ulps listed.  */
290
291 static FLOAT
292 find_ulps (const char *name, const struct ulp_data *data, size_t nmemb)
293 {
294   const struct ulp_data *entry = bsearch (name, data, nmemb, sizeof (*data),
295                                           compare_ulp_data);
296   if (entry == NULL)
297     return 0;
298   else
299     return entry->max_ulp;
300 }
301
302 /* Return the ulps for test NAME.  */
303
304 static FLOAT
305 find_test_ulps (const char *name)
306 {
307   return find_ulps (name, test_ulps,
308                     sizeof (test_ulps) / sizeof (test_ulps[0]));
309 }
310
311 /* Return the ulps for real function NAME.  */
312
313 static FLOAT
314 find_function_ulps (const char *name)
315 {
316   return find_ulps (name, func_ulps,
317                     sizeof (func_ulps) / sizeof (func_ulps[0]));
318 }
319
320 /* Return the ulps for complex function NAME.  */
321
322 static __complex__ FLOAT
323 find_complex_function_ulps (const char *name)
324 {
325   FLOAT ulp_real = find_ulps (name, func_real_ulps,
326                               (sizeof (func_real_ulps)
327                                / sizeof (func_real_ulps[0])));
328   FLOAT ulp_imag = find_ulps (name, func_imag_ulps,
329                               (sizeof (func_imag_ulps)
330                                / sizeof (func_imag_ulps[0])));
331   return BUILD_COMPLEX (ulp_real, ulp_imag);
332 }
333
334 static void
335 init_max_error (void)
336 {
337   max_error = 0;
338   real_max_error = 0;
339   imag_max_error = 0;
340   feclearexcept (FE_ALL_EXCEPT);
341   errno = 0;
342 }
343
344 static void
345 set_max_error (FLOAT current, FLOAT *curr_max_error)
346 {
347   if (current > *curr_max_error)
348     *curr_max_error = current;
349 }
350
351
352 /* Print a FLOAT.  */
353 static void
354 print_float (FLOAT f)
355 {
356   /* As printf doesn't differ between a sNaN and a qNaN, do this manually.  */
357   if (issignaling (f))
358     printf ("sNaN\n");
359   else if (isnan (f))
360     printf ("qNaN\n");
361   else
362     printf ("% .20" PRINTF_EXPR "  % .20" PRINTF_XEXPR "\n", f, f);
363 }
364
365 /* Should the message print to screen?  This depends on the verbose flag,
366    and the test status.  */
367 static int
368 print_screen (int ok)
369 {
370   if (output_points
371       && (verbose > 1
372           || (verbose == 1 && ok == 0)))
373     return 1;
374   return 0;
375 }
376
377
378 /* Should the message print to screen?  This depends on the verbose flag,
379    and the test status.  */
380 static int
381 print_screen_max_error (int ok)
382 {
383   if (output_max_error
384       && (verbose > 1
385           || ((verbose == 1) && (ok == 0))))
386     return 1;
387   return 0;
388 }
389
390 /* Update statistic counters.  */
391 static void
392 update_stats (int ok)
393 {
394   ++noTests;
395   if (!ok)
396     ++noErrors;
397 }
398
399 static void
400 print_ulps (const char *test_name, FLOAT ulp)
401 {
402   if (output_ulps)
403     {
404       fprintf (ulps_file, "Test \"%s\":\n", test_name);
405       fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
406                CHOOSE("ldouble", "double", "float",
407                       "ildouble", "idouble", "ifloat"),
408                FUNC(ceil) (ulp));
409     }
410 }
411
412 static void
413 print_function_ulps (const char *function_name, FLOAT ulp)
414 {
415   if (output_ulps)
416     {
417       fprintf (ulps_file, "Function: \"%s\":\n", function_name);
418       fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
419                CHOOSE("ldouble", "double", "float",
420                       "ildouble", "idouble", "ifloat"),
421                FUNC(ceil) (ulp));
422     }
423 }
424
425
426 static void
427 print_complex_function_ulps (const char *function_name, FLOAT real_ulp,
428                              FLOAT imag_ulp)
429 {
430   if (output_ulps)
431     {
432       if (real_ulp != 0.0)
433         {
434           fprintf (ulps_file, "Function: Real part of \"%s\":\n", function_name);
435           fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
436                    CHOOSE("ldouble", "double", "float",
437                           "ildouble", "idouble", "ifloat"),
438                    FUNC(ceil) (real_ulp));
439         }
440       if (imag_ulp != 0.0)
441         {
442           fprintf (ulps_file, "Function: Imaginary part of \"%s\":\n", function_name);
443           fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
444                    CHOOSE("ldouble", "double", "float",
445                           "ildouble", "idouble", "ifloat"),
446                    FUNC(ceil) (imag_ulp));
447         }
448
449
450     }
451 }
452
453
454
455 /* Test if Floating-Point stack hasn't changed */
456 static void
457 fpstack_test (const char *test_name)
458 {
459 #if defined (__i386__) || defined (__x86_64__)
460   static int old_stack;
461   int sw;
462
463   asm ("fnstsw" : "=a" (sw));
464   sw >>= 11;
465   sw &= 7;
466
467   if (sw != old_stack)
468     {
469       printf ("FP-Stack wrong after test %s (%d, should be %d)\n",
470               test_name, sw, old_stack);
471       ++noErrors;
472       old_stack = sw;
473     }
474 #endif
475 }
476
477
478 static void
479 print_max_error (const char *func_name)
480 {
481   FLOAT allowed = find_function_ulps (func_name);
482   int ok = 0;
483
484   if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
485     {
486       ok = 1;
487     }
488
489   if (!ok)
490     print_function_ulps (func_name, max_error);
491
492
493   if (print_screen_max_error (ok))
494     {
495       printf ("Maximal error of `%s'\n", func_name);
496       printf (" is      : %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (max_error));
497       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (allowed));
498     }
499
500   update_stats (ok);
501 }
502
503
504 static void
505 print_complex_max_error (const char *func_name)
506 {
507   __complex__ FLOAT allowed = find_complex_function_ulps (func_name);
508   int ok = 0;
509
510   if ((real_max_error == 0 && imag_max_error == 0)
511       || (real_max_error <= __real__ allowed
512           && imag_max_error <= __imag__ allowed
513           && !ignore_max_ulp))
514     {
515       ok = 1;
516     }
517
518   if (!ok)
519     print_complex_function_ulps (func_name, real_max_error, imag_max_error);
520
521
522   if (print_screen_max_error (ok))
523     {
524       printf ("Maximal error of real part of: %s\n", func_name);
525       printf (" is      : %.0" PRINTF_NEXPR " ulp\n",
526               FUNC(ceil) (real_max_error));
527       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
528               FUNC(ceil) (__real__ allowed));
529       printf ("Maximal error of imaginary part of: %s\n", func_name);
530       printf (" is      : %.0" PRINTF_NEXPR " ulp\n",
531               FUNC(ceil) (imag_max_error));
532       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
533               FUNC(ceil) (__imag__ allowed));
534     }
535
536   update_stats (ok);
537 }
538
539
540 /* Test whether a given exception was raised.  */
541 static void
542 test_single_exception (const char *test_name,
543                        int exception,
544                        int exc_flag,
545                        int fe_flag,
546                        const char *flag_name)
547 {
548 #ifndef TEST_INLINE
549   int ok = 1;
550   if (exception & exc_flag)
551     {
552       if (fetestexcept (fe_flag))
553         {
554           if (print_screen (1))
555             printf ("Pass: %s: Exception \"%s\" set\n", test_name, flag_name);
556         }
557       else
558         {
559           ok = 0;
560           if (print_screen (0))
561             printf ("Failure: %s: Exception \"%s\" not set\n",
562                     test_name, flag_name);
563         }
564     }
565   else
566     {
567       if (fetestexcept (fe_flag))
568         {
569           ok = 0;
570           if (print_screen (0))
571             printf ("Failure: %s: Exception \"%s\" set\n",
572                     test_name, flag_name);
573         }
574       else
575         {
576           if (print_screen (1))
577             printf ("%s: Exception \"%s\" not set\n", test_name,
578                     flag_name);
579         }
580     }
581   if (!ok)
582     ++noErrors;
583
584 #endif
585 }
586
587
588 /* Test whether exceptions given by EXCEPTION are raised.  Ignore thereby
589    allowed but not required exceptions.
590 */
591 static void
592 test_exceptions (const char *test_name, int exception)
593 {
594   if (EXCEPTION_TESTS (FLOAT))
595     {
596       ++noExcTests;
597 #ifdef FE_DIVBYZERO
598       if ((exception & DIVIDE_BY_ZERO_EXCEPTION_OK) == 0)
599         test_single_exception (test_name, exception,
600                                DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO,
601                                "Divide by zero");
602 #endif
603 #ifdef FE_INVALID
604       if ((exception & INVALID_EXCEPTION_OK) == 0)
605         test_single_exception (test_name, exception,
606                                INVALID_EXCEPTION, FE_INVALID,
607                                "Invalid operation");
608 #endif
609 #ifdef FE_OVERFLOW
610       if ((exception & OVERFLOW_EXCEPTION_OK) == 0)
611         test_single_exception (test_name, exception, OVERFLOW_EXCEPTION,
612                                FE_OVERFLOW, "Overflow");
613 #endif
614 #ifdef FE_UNDERFLOW
615       if ((exception & UNDERFLOW_EXCEPTION_OK) == 0)
616         test_single_exception (test_name, exception, UNDERFLOW_EXCEPTION,
617                                FE_UNDERFLOW, "Underflow");
618 #endif
619 #ifdef FE_INEXACT
620       if ((exception & (INEXACT_EXCEPTION | NO_INEXACT_EXCEPTION)) != 0)
621         test_single_exception (test_name, exception, INEXACT_EXCEPTION,
622                                FE_INEXACT, "Inexact");
623 #endif
624     }
625   feclearexcept (FE_ALL_EXCEPT);
626 }
627
628 /* Test whether errno for TEST_NAME, set to ERRNO_VALUE, has value
629    EXPECTED_VALUE (description EXPECTED_NAME).  */
630 static void
631 test_single_errno (const char *test_name, int errno_value,
632                    int expected_value, const char *expected_name)
633 {
634 #ifndef TEST_INLINE
635   if (errno_value == expected_value)
636     {
637       if (print_screen (1))
638         printf ("Pass: %s: errno set to %d (%s)\n", test_name, errno_value,
639                 expected_name);
640     }
641   else
642     {
643       ++noErrors;
644       if (print_screen (0))
645         printf ("Failure: %s: errno set to %d, expected %d (%s)\n",
646                 test_name, errno_value, expected_value, expected_name);
647     }
648 #endif
649 }
650
651 /* Test whether errno (value ERRNO_VALUE) has been for TEST_NAME set
652    as required by EXCEPTIONS.  */
653 static void
654 test_errno (const char *test_name, int errno_value, int exceptions)
655 {
656   ++noErrnoTests;
657   if (exceptions & ERRNO_UNCHANGED)
658     test_single_errno (test_name, errno_value, 0, "unchanged");
659   if (exceptions & ERRNO_EDOM)
660     test_single_errno (test_name, errno_value, EDOM, "EDOM");
661   if (exceptions & ERRNO_ERANGE)
662     test_single_errno (test_name, errno_value, ERANGE, "ERANGE");
663 }
664
665 /* Returns the number of ulps that GIVEN is away from EXPECTED.  */
666 #define ULPDIFF(given, expected) \
667         (FUNC(fabs) ((given) - (expected)) / ulp (expected))
668
669 /* Returns the size of an ulp for VALUE.  */
670 static FLOAT
671 ulp (FLOAT value)
672 {
673   FLOAT ulp;
674
675   switch (fpclassify (value))
676     {
677       case FP_ZERO:
678         /* We compute the distance to the next FP which is the same as the
679            value of the smallest subnormal number. Previously we used
680            2^(-MANT_DIG) which is too large a value to be useful. Note that we
681            can't use ilogb(0), since that isn't a valid thing to do. As a point
682            of comparison Java's ulp returns the next normal value e.g.
683            2^(1 - MAX_EXP) for ulp(0), but that is not what we want for
684            glibc.  */
685         /* Fall through...  */
686       case FP_SUBNORMAL:
687         /* The next closest subnormal value is a constant distance away.  */
688         ulp = FUNC(ldexp) (1.0, MIN_EXP - MANT_DIG);
689         break;
690
691       case FP_NORMAL:
692         ulp = FUNC(ldexp) (1.0, FUNC(ilogb) (value) - MANT_DIG);
693         break;
694
695       default:
696         /* It should never happen. */
697         abort ();
698         break;
699     }
700   return ulp;
701 }
702
703 static void
704 check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
705                       int exceptions,
706                       FLOAT *curr_max_error)
707 {
708   int ok = 0;
709   int print_diff = 0;
710   FLOAT diff = 0;
711   FLOAT ulps = 0;
712   int errno_value = errno;
713
714   test_exceptions (test_name, exceptions);
715   test_errno (test_name, errno_value, exceptions);
716   FLOAT max_ulp = find_test_ulps (test_name);
717   if (issignaling (computed) && issignaling (expected))
718     ok = 1;
719   else if (issignaling (computed) || issignaling (expected))
720     ok = 0;
721   else if (isnan (computed) && isnan (expected))
722     ok = 1;
723   else if (isinf (computed) && isinf (expected))
724     {
725       /* Test for sign of infinities.  */
726       if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
727           && signbit (computed) != signbit (expected))
728         {
729           ok = 0;
730           printf ("infinity has wrong sign.\n");
731         }
732       else
733         ok = 1;
734     }
735   /* Don't calculate ULPs for infinities or any kind of NaNs.  */
736   else if (isinf (computed) || isnan (computed)
737            || isinf (expected) || isnan (expected))
738     ok = 0;
739   else
740     {
741       diff = FUNC(fabs) (computed - expected);
742       ulps = ULPDIFF (computed, expected);
743       set_max_error (ulps, curr_max_error);
744       print_diff = 1;
745       if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
746           && computed == 0.0 && expected == 0.0
747           && signbit(computed) != signbit (expected))
748         ok = 0;
749       else if (ulps <= 0.5 || (ulps <= max_ulp && !ignore_max_ulp))
750         ok = 1;
751       else
752         {
753           ok = 0;
754           print_ulps (test_name, ulps);
755         }
756
757     }
758   if (print_screen (ok))
759     {
760       if (!ok)
761         printf ("Failure: ");
762       printf ("Test: %s\n", test_name);
763       printf ("Result:\n");
764       printf (" is:         ");
765       print_float (computed);
766       printf (" should be:  ");
767       print_float (expected);
768       if (print_diff)
769         {
770           printf (" difference: % .20" PRINTF_EXPR "  % .20" PRINTF_XEXPR
771                   "\n", diff, diff);
772           printf (" ulp       : % .4" PRINTF_NEXPR "\n", ulps);
773           printf (" max.ulp   : % .4" PRINTF_NEXPR "\n", max_ulp);
774         }
775     }
776   update_stats (ok);
777
778   fpstack_test (test_name);
779   errno = 0;
780 }
781
782
783 static void
784 check_float (const char *test_name, FLOAT computed, FLOAT expected,
785              int exceptions)
786 {
787   check_float_internal (test_name, computed, expected,
788                         exceptions, &max_error);
789 }
790
791
792 static void
793 check_complex (const char *test_name, __complex__ FLOAT computed,
794                __complex__ FLOAT expected,
795                int exception)
796 {
797   FLOAT part_comp, part_exp;
798   char *str;
799
800   if (asprintf (&str, "Real part of: %s", test_name) == -1)
801     abort ();
802
803   part_comp = __real__ computed;
804   part_exp = __real__ expected;
805
806   check_float_internal (str, part_comp, part_exp,
807                         exception, &real_max_error);
808   free (str);
809
810   if (asprintf (&str, "Imaginary part of: %s", test_name) == -1)
811     abort ();
812
813   part_comp = __imag__ computed;
814   part_exp = __imag__ expected;
815
816   /* Don't check again for exceptions or errno, just pass through the
817      zero/inf sign test.  */
818   check_float_internal (str, part_comp, part_exp,
819                         exception & IGNORE_ZERO_INF_SIGN,
820                         &imag_max_error);
821   free (str);
822 }
823
824
825 /* Check that computed and expected values are equal (int values).  */
826 static void
827 check_int (const char *test_name, int computed, int expected,
828            int exceptions)
829 {
830   int ok = 0;
831   int errno_value = errno;
832
833   test_exceptions (test_name, exceptions);
834   test_errno (test_name, errno_value, exceptions);
835   noTests++;
836   if (computed == expected)
837     ok = 1;
838
839   if (print_screen (ok))
840     {
841       if (!ok)
842         printf ("Failure: ");
843       printf ("Test: %s\n", test_name);
844       printf ("Result:\n");
845       printf (" is:         %d\n", computed);
846       printf (" should be:  %d\n", expected);
847     }
848
849   update_stats (ok);
850   fpstack_test (test_name);
851   errno = 0;
852 }
853
854
855 /* Check that computed and expected values are equal (long int values).  */
856 static void
857 check_long (const char *test_name, long int computed, long int expected,
858             int exceptions)
859 {
860   int ok = 0;
861   int errno_value = errno;
862
863   test_exceptions (test_name, exceptions);
864   test_errno (test_name, errno_value, exceptions);
865   noTests++;
866   if (computed == expected)
867     ok = 1;
868
869   if (print_screen (ok))
870     {
871       if (!ok)
872         printf ("Failure: ");
873       printf ("Test: %s\n", test_name);
874       printf ("Result:\n");
875       printf (" is:         %ld\n", computed);
876       printf (" should be:  %ld\n", expected);
877     }
878
879   update_stats (ok);
880   fpstack_test (test_name);
881   errno = 0;
882 }
883
884
885 /* Check that computed value is true/false.  */
886 static void
887 check_bool (const char *test_name, int computed, int expected,
888             int exceptions)
889 {
890   int ok = 0;
891   int errno_value = errno;
892
893   test_exceptions (test_name, exceptions);
894   test_errno (test_name, errno_value, exceptions);
895   noTests++;
896   if ((computed == 0) == (expected == 0))
897     ok = 1;
898
899   if (print_screen (ok))
900     {
901       if (!ok)
902         printf ("Failure: ");
903       printf ("Test: %s\n", test_name);
904       printf ("Result:\n");
905       printf (" is:         %d\n", computed);
906       printf (" should be:  %d\n", expected);
907     }
908
909   update_stats (ok);
910   fpstack_test (test_name);
911   errno = 0;
912 }
913
914
915 /* check that computed and expected values are equal (long int values) */
916 static void
917 check_longlong (const char *test_name, long long int computed,
918                 long long int expected,
919                 int exceptions)
920 {
921   int ok = 0;
922   int errno_value = errno;
923
924   test_exceptions (test_name, exceptions);
925   test_errno (test_name, errno_value, exceptions);
926   noTests++;
927   if (computed == expected)
928     ok = 1;
929
930   if (print_screen (ok))
931     {
932       if (!ok)
933         printf ("Failure:");
934       printf ("Test: %s\n", test_name);
935       printf ("Result:\n");
936       printf (" is:         %lld\n", computed);
937       printf (" should be:  %lld\n", expected);
938     }
939
940   update_stats (ok);
941   fpstack_test (test_name);
942   errno = 0;
943 }
944
945 /* Structures for each kind of test.  */
946 struct test_f_f_data
947 {
948   const char *arg_str;
949   FLOAT arg;
950   FLOAT expected;
951   int exceptions;
952 };
953 struct test_ff_f_data
954 {
955   const char *arg_str;
956   FLOAT arg1, arg2;
957   FLOAT expected;
958   int exceptions;
959 };
960 struct test_ff_f_data_nexttoward
961 {
962   const char *arg_str;
963   FLOAT arg1;
964   long double arg2;
965   FLOAT expected;
966   int exceptions;
967 };
968 struct test_fi_f_data
969 {
970   const char *arg_str;
971   FLOAT arg1;
972   int arg2;
973   FLOAT expected;
974   int exceptions;
975 };
976 struct test_fl_f_data
977 {
978   const char *arg_str;
979   FLOAT arg1;
980   long int arg2;
981   FLOAT expected;
982   int exceptions;
983 };
984 struct test_if_f_data
985 {
986   const char *arg_str;
987   int arg1;
988   FLOAT arg2;
989   FLOAT expected;
990   int exceptions;
991 };
992 struct test_fff_f_data
993 {
994   const char *arg_str;
995   FLOAT arg1, arg2, arg3;
996   FLOAT expected;
997   int exceptions;
998 };
999 struct test_c_f_data
1000 {
1001   const char *arg_str;
1002   FLOAT argr, argc;
1003   FLOAT expected;
1004   int exceptions;
1005 };
1006 /* Used for both RUN_TEST_LOOP_f_f1 and RUN_TEST_LOOP_fI_f1.  */
1007 struct test_f_f1_data
1008 {
1009   const char *arg_str;
1010   FLOAT arg;
1011   FLOAT expected;
1012   int exceptions;
1013   int extra_test;
1014   int extra_expected;
1015 };
1016 struct test_fF_f1_data
1017 {
1018   const char *arg_str;
1019   FLOAT arg;
1020   FLOAT expected;
1021   int exceptions;
1022   int extra_test;
1023   FLOAT extra_expected;
1024 };
1025 struct test_ffI_f1_data
1026 {
1027   const char *arg_str;
1028   FLOAT arg1, arg2;
1029   FLOAT expected;
1030   int exceptions;
1031   int extra_test;
1032   int extra_expected;
1033 };
1034 struct test_c_c_data
1035 {
1036   const char *arg_str;
1037   FLOAT argr, argc;
1038   FLOAT expr, expc;
1039   int exceptions;
1040 };
1041 struct test_cc_c_data
1042 {
1043   const char *arg_str;
1044   FLOAT arg1r, arg1c, arg2r, arg2c;
1045   FLOAT expr, expc;
1046   int exceptions;
1047 };
1048 /* Used for all of RUN_TEST_LOOP_f_i, RUN_TEST_LOOP_f_i_tg,
1049    RUN_TEST_LOOP_f_b and RUN_TEST_LOOP_f_b_tg.  */
1050 struct test_f_i_data
1051 {
1052   const char *arg_str;
1053   FLOAT arg;
1054   int expected;
1055   int exceptions;
1056 };
1057 struct test_ff_i_data
1058 {
1059   const char *arg_str;
1060   FLOAT arg1, arg2;
1061   int expected;
1062   int exceptions;
1063 };
1064 struct test_f_l_data
1065 {
1066   const char *arg_str;
1067   FLOAT arg;
1068   long int expected;
1069   int exceptions;
1070 };
1071 struct test_f_L_data
1072 {
1073   const char *arg_str;
1074   FLOAT arg;
1075   long long int expected;
1076   int exceptions;
1077 };
1078 struct test_fFF_11_data
1079 {
1080   const char *arg_str;
1081   FLOAT arg;
1082   int exceptions;
1083   int extra1_test;
1084   FLOAT extra1_expected;
1085   int extra2_test;
1086   FLOAT extra2_expected;
1087 };
1088
1089 /* Set the rounding mode, or restore the saved value.  */
1090 #define IF_ROUND_INIT_  /* Empty.  */
1091 #define IF_ROUND_INIT_FE_DOWNWARD               \
1092   int save_round_mode = fegetround ();          \
1093   if (ROUNDING_TESTS (FLOAT, FE_DOWNWARD)       \
1094       && fesetround (FE_DOWNWARD) == 0)
1095 #define IF_ROUND_INIT_FE_TONEAREST              \
1096   int save_round_mode = fegetround ();          \
1097   if (ROUNDING_TESTS (FLOAT, FE_TONEAREST)      \
1098       && fesetround (FE_TONEAREST) == 0)
1099 #define IF_ROUND_INIT_FE_TOWARDZERO             \
1100   int save_round_mode = fegetround ();          \
1101   if (ROUNDING_TESTS (FLOAT, FE_TOWARDZERO)     \
1102       && fesetround (FE_TOWARDZERO) == 0)
1103 #define IF_ROUND_INIT_FE_UPWARD                 \
1104   int save_round_mode = fegetround ();          \
1105   if (ROUNDING_TESTS (FLOAT, FE_UPWARD)         \
1106       && fesetround (FE_UPWARD) == 0)
1107 #define ROUND_RESTORE_  /* Empty.  */
1108 #define ROUND_RESTORE_FE_DOWNWARD               \
1109   fesetround (save_round_mode)
1110 #define ROUND_RESTORE_FE_TONEAREST              \
1111   fesetround (save_round_mode)
1112 #define ROUND_RESTORE_FE_TOWARDZERO             \
1113   fesetround (save_round_mode)
1114 #define ROUND_RESTORE_FE_UPWARD                 \
1115   fesetround (save_round_mode)
1116
1117 /* Common setup for an individual test.  */
1118 #define COMMON_TEST_SETUP(ARG_STR)                                      \
1119   char *test_name;                                                      \
1120   if (asprintf (&test_name, "%s (%s)", this_func, (ARG_STR)) == -1)     \
1121     abort ()
1122
1123 /* Setup for a test with an extra output.  */
1124 #define EXTRA_OUTPUT_TEST_SETUP(ARG_STR, N)                     \
1125   char *extra##N##_name;                                        \
1126   if (asprintf (&extra##N##_name, "%s (%s) extra output " #N,   \
1127                 this_func, (ARG_STR)) == -1)                    \
1128     abort ()
1129
1130 /* Common cleanup after an individual test.  */
1131 #define COMMON_TEST_CLEANUP                     \
1132   free (test_name)
1133
1134 /* Cleanup for a test with an extra output.  */
1135 #define EXTRA_OUTPUT_TEST_CLEANUP(N)            \
1136   free (extra##N##_name)
1137
1138 /* Run an individual test, including any required setup and checking
1139    of results, or loop over all tests in an array.  */
1140 #define RUN_TEST_f_f(ARG_STR, FUNC_NAME, ARG, EXPECTED, \
1141                      EXCEPTIONS)                                \
1142   do                                                            \
1143     {                                                           \
1144       COMMON_TEST_SETUP (ARG_STR);                              \
1145       check_float (test_name, FUNC (FUNC_NAME) (ARG), EXPECTED, \
1146                    EXCEPTIONS);                                 \
1147       COMMON_TEST_CLEANUP;                                      \
1148     }                                                           \
1149   while (0)
1150 #define RUN_TEST_LOOP_f_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1151   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1152     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1153       RUN_TEST_f_f ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,      \
1154                     (ARRAY)[i].expected, (ARRAY)[i].exceptions);        \
1155   ROUND_RESTORE_ ## ROUNDING_MODE
1156 #define RUN_TEST_2_f(ARG_STR, FUNC_NAME, ARG1, ARG2, EXPECTED,          \
1157                      EXCEPTIONS)                                        \
1158   do                                                                    \
1159     {                                                                   \
1160       COMMON_TEST_SETUP (ARG_STR);                                      \
1161       check_float (test_name, FUNC (FUNC_NAME) (ARG1, ARG2), EXPECTED,  \
1162                    EXCEPTIONS);                                         \
1163       COMMON_TEST_CLEANUP;                                              \
1164     }                                                                   \
1165   while (0)
1166 #define RUN_TEST_LOOP_2_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1167   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1168     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1169       RUN_TEST_2_f ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg1,     \
1170                     (ARRAY)[i].arg2, (ARRAY)[i].expected,               \
1171                     (ARRAY)[i].exceptions);                             \
1172   ROUND_RESTORE_ ## ROUNDING_MODE
1173 #define RUN_TEST_ff_f RUN_TEST_2_f
1174 #define RUN_TEST_LOOP_ff_f RUN_TEST_LOOP_2_f
1175 #define RUN_TEST_fi_f RUN_TEST_2_f
1176 #define RUN_TEST_LOOP_fi_f RUN_TEST_LOOP_2_f
1177 #define RUN_TEST_fl_f RUN_TEST_2_f
1178 #define RUN_TEST_LOOP_fl_f RUN_TEST_LOOP_2_f
1179 #define RUN_TEST_if_f RUN_TEST_2_f
1180 #define RUN_TEST_LOOP_if_f RUN_TEST_LOOP_2_f
1181 #define RUN_TEST_fff_f(ARG_STR, FUNC_NAME, ARG1, ARG2, ARG3,            \
1182                        EXPECTED, EXCEPTIONS)                            \
1183   do                                                                    \
1184     {                                                                   \
1185       COMMON_TEST_SETUP (ARG_STR);                                      \
1186       check_float (test_name, FUNC (FUNC_NAME) (ARG1, ARG2, ARG3),      \
1187                    EXPECTED, EXCEPTIONS);                               \
1188       COMMON_TEST_CLEANUP;                                              \
1189     }                                                                   \
1190   while (0)
1191 #define RUN_TEST_LOOP_fff_f(FUNC_NAME, ARRAY, ROUNDING_MODE)            \
1192   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1193     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1194       RUN_TEST_fff_f ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg1,   \
1195                       (ARRAY)[i].arg2, (ARRAY)[i].arg3,                 \
1196                       (ARRAY)[i].expected, (ARRAY)[i].exceptions);      \
1197   ROUND_RESTORE_ ## ROUNDING_MODE
1198 #define RUN_TEST_c_f(ARG_STR, FUNC_NAME, ARG1, ARG2, EXPECTED,          \
1199                      EXCEPTIONS)                                        \
1200   do                                                                    \
1201     {                                                                   \
1202       COMMON_TEST_SETUP (ARG_STR);                                      \
1203       check_float (test_name,                                           \
1204                    FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1, ARG2)),       \
1205                    EXPECTED, EXCEPTIONS);                               \
1206       COMMON_TEST_CLEANUP;                                              \
1207     }                                                                   \
1208   while (0)
1209 #define RUN_TEST_LOOP_c_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1210   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1211     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1212       RUN_TEST_c_f ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].argr,     \
1213                     (ARRAY)[i].argc, (ARRAY)[i].expected,               \
1214                     (ARRAY)[i].exceptions);                             \
1215   ROUND_RESTORE_ ## ROUNDING_MODE
1216 #define RUN_TEST_f_f1(ARG_STR, FUNC_NAME, ARG, EXPECTED,        \
1217                       EXCEPTIONS, EXTRA_VAR, EXTRA_TEST,        \
1218                       EXTRA_EXPECTED)                           \
1219   do                                                            \
1220     {                                                           \
1221       COMMON_TEST_SETUP (ARG_STR);                              \
1222       (EXTRA_VAR) = (EXTRA_EXPECTED) == 0 ? 1 : 0;              \
1223       check_float (test_name, FUNC (FUNC_NAME) (ARG), EXPECTED, \
1224                    EXCEPTIONS);                                 \
1225       EXTRA_OUTPUT_TEST_SETUP (ARG_STR, 1);                     \
1226       if (EXTRA_TEST)                                           \
1227         check_int (extra1_name, EXTRA_VAR, EXTRA_EXPECTED, 0);  \
1228       EXTRA_OUTPUT_TEST_CLEANUP (1);                            \
1229       COMMON_TEST_CLEANUP;                                      \
1230     }                                                           \
1231   while (0)
1232 #define RUN_TEST_LOOP_f_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR)  \
1233   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1234     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1235       RUN_TEST_f_f1 ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,     \
1236                      (ARRAY)[i].expected, (ARRAY)[i].exceptions,        \
1237                      EXTRA_VAR, (ARRAY)[i].extra_test,                  \
1238                      (ARRAY)[i].extra_expected);                        \
1239   ROUND_RESTORE_ ## ROUNDING_MODE
1240 #define RUN_TEST_fF_f1(ARG_STR, FUNC_NAME, ARG, EXPECTED,               \
1241                        EXCEPTIONS, EXTRA_VAR, EXTRA_TEST,               \
1242                        EXTRA_EXPECTED)                                  \
1243   do                                                                    \
1244     {                                                                   \
1245       COMMON_TEST_SETUP (ARG_STR);                                      \
1246       (EXTRA_VAR) = (EXTRA_EXPECTED) == 0 ? 1 : 0;                      \
1247       check_float (test_name, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1248                    EXPECTED, EXCEPTIONS);                               \
1249       EXTRA_OUTPUT_TEST_SETUP (ARG_STR, 1);                             \
1250       if (EXTRA_TEST)                                                   \
1251         check_float (extra1_name, EXTRA_VAR, EXTRA_EXPECTED, 0);        \
1252       EXTRA_OUTPUT_TEST_CLEANUP (1);                                    \
1253       COMMON_TEST_CLEANUP;                                              \
1254     }                                                                   \
1255   while (0)
1256 #define RUN_TEST_LOOP_fF_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
1257   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1258     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1259       RUN_TEST_fF_f1 ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,    \
1260                       (ARRAY)[i].expected, (ARRAY)[i].exceptions,       \
1261                       EXTRA_VAR, (ARRAY)[i].extra_test,                 \
1262                       (ARRAY)[i].extra_expected);                       \
1263   ROUND_RESTORE_ ## ROUNDING_MODE
1264 #define RUN_TEST_fI_f1(ARG_STR, FUNC_NAME, ARG, EXPECTED,               \
1265                        EXCEPTIONS, EXTRA_VAR, EXTRA_TEST,               \
1266                        EXTRA_EXPECTED)                                  \
1267   do                                                                    \
1268     {                                                                   \
1269       COMMON_TEST_SETUP (ARG_STR);                                      \
1270       (EXTRA_VAR) = (EXTRA_EXPECTED) == 0 ? 1 : 0;                      \
1271       check_float (test_name, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1272                    EXPECTED, EXCEPTIONS);                               \
1273       EXTRA_OUTPUT_TEST_SETUP (ARG_STR, 1);                             \
1274       if (EXTRA_TEST)                                                   \
1275         check_int (extra1_name, EXTRA_VAR, EXTRA_EXPECTED, 0);          \
1276       EXTRA_OUTPUT_TEST_CLEANUP (1);                                    \
1277       COMMON_TEST_CLEANUP;                                              \
1278     }                                                                   \
1279   while (0)
1280 #define RUN_TEST_LOOP_fI_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
1281   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1282     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1283       RUN_TEST_fI_f1 ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,    \
1284                       (ARRAY)[i].expected, (ARRAY)[i].exceptions,       \
1285                       EXTRA_VAR, (ARRAY)[i].extra_test,                 \
1286                       (ARRAY)[i].extra_expected);                       \
1287   ROUND_RESTORE_ ## ROUNDING_MODE
1288 #define RUN_TEST_ffI_f1(ARG_STR, FUNC_NAME, ARG1, ARG2, EXPECTED,       \
1289                         EXCEPTIONS, EXTRA_VAR, EXTRA_TEST,              \
1290                         EXTRA_EXPECTED)                                 \
1291   do                                                                    \
1292     {                                                                   \
1293       COMMON_TEST_SETUP (ARG_STR);                                      \
1294       (EXTRA_VAR) = (EXTRA_EXPECTED) == 0 ? 1 : 0;                      \
1295       check_float (test_name,                                           \
1296                    FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)),         \
1297                    EXPECTED, EXCEPTIONS);                               \
1298       EXTRA_OUTPUT_TEST_SETUP (ARG_STR, 1);                             \
1299       if (EXTRA_TEST)                                                   \
1300         check_int (extra1_name, EXTRA_VAR, EXTRA_EXPECTED, 0);          \
1301       EXTRA_OUTPUT_TEST_CLEANUP (1);                                    \
1302       COMMON_TEST_CLEANUP;                                              \
1303     }                                                                   \
1304   while (0)
1305 #define RUN_TEST_LOOP_ffI_f1(FUNC_NAME, ARRAY, ROUNDING_MODE,           \
1306                              EXTRA_VAR)                                 \
1307   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1308     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1309       RUN_TEST_ffI_f1 ((ARRAY)[i].arg_str, FUNC_NAME,                   \
1310                        (ARRAY)[i].arg1, (ARRAY)[i].arg2,                \
1311                        (ARRAY)[i].expected, (ARRAY)[i].exceptions,      \
1312                        EXTRA_VAR, (ARRAY)[i].extra_test,                \
1313                        (ARRAY)[i].extra_expected);                      \
1314   ROUND_RESTORE_ ## ROUNDING_MODE
1315 #define RUN_TEST_c_c(ARG_STR, FUNC_NAME, ARGR, ARGC, EXPR, EXPC,        \
1316                      EXCEPTIONS)                                        \
1317   do                                                                    \
1318     {                                                                   \
1319       COMMON_TEST_SETUP (ARG_STR);                                      \
1320       check_complex (test_name,                                         \
1321                      FUNC (FUNC_NAME) (BUILD_COMPLEX (ARGR, ARGC)),     \
1322                      BUILD_COMPLEX (EXPR, EXPC), EXCEPTIONS);           \
1323       COMMON_TEST_CLEANUP;                                              \
1324     }                                                                   \
1325   while (0)
1326 #define RUN_TEST_LOOP_c_c(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1327   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1328     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1329       RUN_TEST_c_c ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].argr,     \
1330                     (ARRAY)[i].argc, (ARRAY)[i].expr, (ARRAY)[i].expc,  \
1331                     (ARRAY)[i].exceptions);                             \
1332   ROUND_RESTORE_ ## ROUNDING_MODE
1333 #define RUN_TEST_cc_c(ARG_STR, FUNC_NAME, ARG1R, ARG1C, ARG2R, ARG2C,   \
1334                       EXPR, EXPC, EXCEPTIONS)                           \
1335   do                                                                    \
1336     {                                                                   \
1337       COMMON_TEST_SETUP (ARG_STR);                                      \
1338       check_complex (test_name,                                         \
1339                      FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1R, ARG1C),    \
1340                                        BUILD_COMPLEX (ARG2R, ARG2C)),   \
1341                      BUILD_COMPLEX (EXPR, EXPC), EXCEPTIONS);           \
1342       COMMON_TEST_CLEANUP;                                              \
1343     }                                                                   \
1344   while (0)
1345 #define RUN_TEST_LOOP_cc_c(FUNC_NAME, ARRAY, ROUNDING_MODE)             \
1346   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1347     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1348       RUN_TEST_cc_c ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg1r,   \
1349                      (ARRAY)[i].arg1c, (ARRAY)[i].arg2r,                \
1350                      (ARRAY)[i].arg2c, (ARRAY)[i].expr,                 \
1351                      (ARRAY)[i].expc, (ARRAY)[i].exceptions);           \
1352   ROUND_RESTORE_ ## ROUNDING_MODE
1353 #define RUN_TEST_f_i(ARG_STR, FUNC_NAME, ARG, EXPECTED, EXCEPTIONS)     \
1354   do                                                                    \
1355     {                                                                   \
1356       COMMON_TEST_SETUP (ARG_STR);                                      \
1357       check_int (test_name, FUNC (FUNC_NAME) (ARG), EXPECTED,           \
1358                  EXCEPTIONS);                                           \
1359       COMMON_TEST_CLEANUP;                                              \
1360     }                                                                   \
1361   while (0)
1362 #define RUN_TEST_LOOP_f_i(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1363   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1364     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1365       RUN_TEST_f_i ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,      \
1366                     (ARRAY)[i].expected, (ARRAY)[i].exceptions);        \
1367   ROUND_RESTORE_ ## ROUNDING_MODE
1368 #define RUN_TEST_f_i_tg(ARG_STR, FUNC_NAME, ARG, EXPECTED,              \
1369                         EXCEPTIONS)                                     \
1370   do                                                                    \
1371     {                                                                   \
1372       COMMON_TEST_SETUP (ARG_STR);                                      \
1373       check_int (test_name, FUNC_NAME (ARG), EXPECTED, EXCEPTIONS);     \
1374       COMMON_TEST_CLEANUP;                                              \
1375     }                                                                   \
1376   while (0)
1377 #define RUN_TEST_LOOP_f_i_tg(FUNC_NAME, ARRAY, ROUNDING_MODE)           \
1378   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1379     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1380       RUN_TEST_f_i_tg ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,   \
1381                        (ARRAY)[i].expected, (ARRAY)[i].exceptions);     \
1382   ROUND_RESTORE_ ## ROUNDING_MODE
1383 #define RUN_TEST_ff_i_tg(ARG_STR, FUNC_NAME, ARG1, ARG2, EXPECTED,      \
1384                          EXCEPTIONS)                                    \
1385   do                                                                    \
1386     {                                                                   \
1387       COMMON_TEST_SETUP (ARG_STR);                                      \
1388       check_int (test_name, FUNC_NAME (ARG1, ARG2), EXPECTED,           \
1389                  EXCEPTIONS);                                           \
1390       COMMON_TEST_CLEANUP;                                              \
1391     }                                                                   \
1392   while (0)
1393 #define RUN_TEST_LOOP_ff_i_tg(FUNC_NAME, ARRAY, ROUNDING_MODE)          \
1394   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1395     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1396       RUN_TEST_ff_i_tg ((ARRAY)[i].arg_str, FUNC_NAME,          \
1397                         (ARRAY)[i].arg1, (ARRAY)[i].arg2,               \
1398                         (ARRAY)[i].expected, (ARRAY)[i].exceptions);    \
1399   ROUND_RESTORE_ ## ROUNDING_MODE
1400 #define RUN_TEST_f_b(ARG_STR, FUNC_NAME, ARG, EXPECTED, EXCEPTIONS)     \
1401   do                                                                    \
1402     {                                                                   \
1403       COMMON_TEST_SETUP (ARG_STR);                                      \
1404       check_bool (test_name, FUNC (FUNC_NAME) (ARG), EXPECTED,          \
1405                   EXCEPTIONS);                                          \
1406       COMMON_TEST_CLEANUP;                                              \
1407     }                                                                   \
1408   while (0)
1409 #define RUN_TEST_LOOP_f_b(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1410   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1411     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1412       RUN_TEST_f_b ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,      \
1413                     (ARRAY)[i].expected, (ARRAY)[i].exceptions);        \
1414   ROUND_RESTORE_ ## ROUNDING_MODE
1415 #define RUN_TEST_f_b_tg(ARG_STR, FUNC_NAME, ARG, EXPECTED,              \
1416                         EXCEPTIONS)                                     \
1417   do                                                                    \
1418     {                                                                   \
1419       COMMON_TEST_SETUP (ARG_STR);                                      \
1420       check_bool (test_name, FUNC_NAME (ARG), EXPECTED, EXCEPTIONS);    \
1421       COMMON_TEST_CLEANUP;                                              \
1422     }                                                                   \
1423   while (0)
1424 #define RUN_TEST_LOOP_f_b_tg(FUNC_NAME, ARRAY, ROUNDING_MODE)           \
1425   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1426     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1427       RUN_TEST_f_b_tg ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,   \
1428                        (ARRAY)[i].expected, (ARRAY)[i].exceptions);     \
1429   ROUND_RESTORE_ ## ROUNDING_MODE
1430 #define RUN_TEST_f_l(ARG_STR, FUNC_NAME, ARG, EXPECTED, EXCEPTIONS)     \
1431   do                                                                    \
1432     {                                                                   \
1433       COMMON_TEST_SETUP (ARG_STR);                                      \
1434       check_long (test_name, FUNC (FUNC_NAME) (ARG), EXPECTED,          \
1435                   EXCEPTIONS);                                          \
1436       COMMON_TEST_CLEANUP;                                              \
1437     }                                                                   \
1438   while (0)
1439 #define RUN_TEST_LOOP_f_l(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1440   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1441     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1442       RUN_TEST_f_l ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,      \
1443                     (ARRAY)[i].expected, (ARRAY)[i].exceptions);        \
1444   ROUND_RESTORE_ ## ROUNDING_MODE
1445 #define RUN_TEST_f_L(ARG_STR, FUNC_NAME, ARG, EXPECTED, EXCEPTIONS)     \
1446   do                                                                    \
1447     {                                                                   \
1448       COMMON_TEST_SETUP (ARG_STR);                                      \
1449       check_longlong (test_name, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1450                       EXCEPTIONS);                                      \
1451       COMMON_TEST_CLEANUP;                                              \
1452     }                                                                   \
1453   while (0)
1454 #define RUN_TEST_LOOP_f_L(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1455   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1456     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1457       RUN_TEST_f_L ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,      \
1458                     (ARRAY)[i].expected, (ARRAY)[i].exceptions);        \
1459   ROUND_RESTORE_ ## ROUNDING_MODE
1460 #define RUN_TEST_fFF_11(ARG_STR, FUNC_NAME, ARG, EXCEPTIONS,            \
1461                         EXTRA1_VAR, EXTRA1_TEST,                        \
1462                         EXTRA1_EXPECTED, EXTRA2_VAR,                    \
1463                         EXTRA2_TEST, EXTRA2_EXPECTED)                   \
1464   do                                                                    \
1465     {                                                                   \
1466       COMMON_TEST_SETUP (ARG_STR);                                      \
1467       FUNC (FUNC_NAME) (ARG, &(EXTRA1_VAR), &(EXTRA2_VAR));             \
1468       EXTRA_OUTPUT_TEST_SETUP (ARG_STR, 1);                             \
1469       if (EXTRA1_TEST)                                                  \
1470         check_float (extra1_name, EXTRA1_VAR, EXTRA1_EXPECTED,          \
1471                      EXCEPTIONS);                                       \
1472       EXTRA_OUTPUT_TEST_CLEANUP (1);                                    \
1473       EXTRA_OUTPUT_TEST_SETUP (ARG_STR, 2);                             \
1474       if (EXTRA2_TEST)                                                  \
1475         check_float (extra2_name, EXTRA2_VAR, EXTRA2_EXPECTED, 0);      \
1476       EXTRA_OUTPUT_TEST_CLEANUP (2);                                    \
1477       COMMON_TEST_CLEANUP;                                              \
1478     }                                                                   \
1479   while (0)
1480 #define RUN_TEST_LOOP_fFF_11(FUNC_NAME, ARRAY, ROUNDING_MODE,           \
1481                              EXTRA1_VAR, EXTRA2_VAR)                    \
1482   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1483     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1484       RUN_TEST_fFF_11 ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg,   \
1485                        (ARRAY)[i].exceptions,                           \
1486                        EXTRA1_VAR, (ARRAY)[i].extra1_test,              \
1487                        (ARRAY)[i].extra1_expected,                      \
1488                        EXTRA2_VAR,                                      \
1489                        (ARRAY)[i].extra2_test,                          \
1490                        (ARRAY)[i].extra2_expected);                     \
1491   ROUND_RESTORE_ ## ROUNDING_MODE
1492
1493 /* Start and end the tests for a given function.  */
1494 #define START(FUNC)                             \
1495   const char *this_func = #FUNC;                \
1496   init_max_error ()
1497 #define END                                     \
1498   print_max_error (this_func)
1499 #define END_COMPLEX                             \
1500   print_complex_max_error (this_func)
1501
1502 /* This is to prevent messages from the SVID libm emulation.  */
1503 int
1504 matherr (struct exception *x __attribute__ ((unused)))
1505 {
1506   return 1;
1507 }
1508
1509
1510 /****************************************************************************
1511   Tests for single functions of libm.
1512   Please keep them alphabetically sorted!
1513 ****************************************************************************/
1514
1515 static const struct test_f_f_data acos_test_data[] =
1516   {
1517     TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1518     TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1519     TEST_f_f (acos, qnan_value, qnan_value),
1520
1521     /* |x| > 1: */
1522     TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1523     TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1524     TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1525     TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1526
1527     TEST_f_f (acos, 0, M_PI_2l),
1528     TEST_f_f (acos, minus_zero, M_PI_2l),
1529     TEST_f_f (acos, 1, 0),
1530     TEST_f_f (acos, -1, M_PIl),
1531     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1532     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1533     TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L),
1534     TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L),
1535     TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L),
1536     TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L),
1537     TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L),
1538 #ifndef TEST_FLOAT
1539     TEST_f_f (acos, 0x0.ffffffff8p0L, 1.5258789062648029736620564947844627548516e-5L),
1540     TEST_f_f (acos, -0x0.ffffffff8p0L, 3.1415773948007305904329067627145550395696L),
1541     TEST_f_f (acos, 0x0.ffffffffffffp0L, 8.4293697021788088529885473244391795127130e-8L),
1542     TEST_f_f (acos, -0x0.ffffffffffffp0L, 3.1415925692960962166745548533940296398054L),
1543 #endif
1544 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1545     TEST_f_f (acos, 0x0.ffffffffffffffffp0L, 3.2927225399135962333718255320079907245059e-10L),
1546     TEST_f_f (acos, -0x0.ffffffffffffffffp0L, 3.1415926532605209844712837599423203309964L),
1547 #endif
1548   };
1549
1550 static void
1551 acos_test (void)
1552 {
1553   START (acos);
1554   RUN_TEST_LOOP_f_f (acos, acos_test_data, );
1555   END;
1556 }
1557
1558
1559 static const struct test_f_f_data acos_tonearest_test_data[] =
1560   {
1561     TEST_f_f (acos, 0, M_PI_2l),
1562     TEST_f_f (acos, minus_zero, M_PI_2l),
1563     TEST_f_f (acos, 1, 0),
1564     TEST_f_f (acos, -1, M_PIl),
1565     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1566     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1567   };
1568
1569 static void
1570 acos_test_tonearest (void)
1571 {
1572   START (acos_tonearest);
1573   RUN_TEST_LOOP_f_f (acos, acos_tonearest_test_data, FE_TONEAREST);
1574   END;
1575 }
1576
1577
1578 static const struct test_f_f_data acos_towardzero_test_data[] =
1579   {
1580     TEST_f_f (acos, 0, M_PI_2l),
1581     TEST_f_f (acos, minus_zero, M_PI_2l),
1582     TEST_f_f (acos, 1, 0),
1583     TEST_f_f (acos, -1, M_PIl),
1584     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1585     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1586   };
1587
1588 static void
1589 acos_test_towardzero (void)
1590 {
1591   START (acos_towardzero);
1592   RUN_TEST_LOOP_f_f (acos, acos_towardzero_test_data, FE_TOWARDZERO);
1593   END;
1594 }
1595
1596
1597 static const struct test_f_f_data acos_downward_test_data[] =
1598   {
1599     TEST_f_f (acos, 0, M_PI_2l),
1600     TEST_f_f (acos, minus_zero, M_PI_2l),
1601     TEST_f_f (acos, 1, 0),
1602     TEST_f_f (acos, -1, M_PIl),
1603     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1604     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1605   };
1606
1607 static void
1608 acos_test_downward (void)
1609 {
1610   START (acos_downward);
1611   RUN_TEST_LOOP_f_f (acos, acos_downward_test_data, FE_DOWNWARD);
1612   END;
1613 }
1614
1615
1616 static const struct test_f_f_data acos_upward_test_data[] =
1617   {
1618     TEST_f_f (acos, 0, M_PI_2l),
1619     TEST_f_f (acos, minus_zero, M_PI_2l),
1620     TEST_f_f (acos, 1, 0),
1621     TEST_f_f (acos, -1, M_PIl),
1622     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1623     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1624   };
1625
1626 static void
1627 acos_test_upward (void)
1628 {
1629   START (acos_upward);
1630   RUN_TEST_LOOP_f_f (acos, acos_upward_test_data, FE_UPWARD);
1631   END;
1632 }
1633
1634 static const struct test_f_f_data acosh_test_data[] =
1635   {
1636     TEST_f_f (acosh, plus_infty, plus_infty),
1637     TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1638     TEST_f_f (acosh, qnan_value, qnan_value),
1639
1640     /* x < 1:  */
1641     TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1642     TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1643
1644     TEST_f_f (acosh, 1, 0),
1645     TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
1646   };
1647
1648 static void
1649 acosh_test (void)
1650 {
1651   START (acosh);
1652   RUN_TEST_LOOP_f_f (acosh, acosh_test_data, );
1653   END;
1654 }
1655
1656 static const struct test_f_f_data asin_test_data[] =
1657   {
1658     TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1659     TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1660     TEST_f_f (asin, qnan_value, qnan_value),
1661
1662     /* asin x == qNaN plus invalid exception for |x| > 1.  */
1663     TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1664     TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1665     TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1666     TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1667
1668     TEST_f_f (asin, 0, 0),
1669     TEST_f_f (asin, minus_zero, minus_zero),
1670     TEST_f_f (asin, 0.5, M_PI_6l),
1671     TEST_f_f (asin, -0.5, -M_PI_6l),
1672     TEST_f_f (asin, 1.0, M_PI_2l),
1673     TEST_f_f (asin, -1.0, -M_PI_2l),
1674     TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L),
1675     TEST_f_f (asin, 0x0.ffffffp0L, 1.5704510598101804156437184421571127056013L),
1676     TEST_f_f (asin, -0x0.ffffffp0L, -1.5704510598101804156437184421571127056013L),
1677 #ifndef TEST_FLOAT
1678     TEST_f_f (asin, 0x0.ffffffff8p0L, 1.5707810680058339712015850710748035974710L),
1679     TEST_f_f (asin, -0x0.ffffffff8p0L, -1.5707810680058339712015850710748035974710L),
1680     TEST_f_f (asin, 0x0.ffffffffffffp0L, 1.5707962425011995974432331617542781977068L),
1681     TEST_f_f (asin, -0x0.ffffffffffffp0L, -1.5707962425011995974432331617542781977068L),
1682 #endif
1683 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1684     TEST_f_f (asin, 0x0.ffffffffffffffffp0L, 1.5707963264656243652399620683025688888978L),
1685     TEST_f_f (asin, -0x0.ffffffffffffffffp0L, -1.5707963264656243652399620683025688888978L),
1686 #endif
1687   };
1688
1689 static void
1690 asin_test (void)
1691 {
1692   START (asin);
1693   RUN_TEST_LOOP_f_f (asin, asin_test_data, );
1694   END;
1695 }
1696
1697
1698 static const struct test_f_f_data asin_tonearest_test_data[] =
1699   {
1700     TEST_f_f (asin, 0, 0),
1701     TEST_f_f (asin, minus_zero, minus_zero),
1702     TEST_f_f (asin, 0.5, M_PI_6l),
1703     TEST_f_f (asin, -0.5, -M_PI_6l),
1704     TEST_f_f (asin, 1.0, M_PI_2l),
1705     TEST_f_f (asin, -1.0, -M_PI_2l),
1706   };
1707
1708 static void
1709 asin_test_tonearest (void)
1710 {
1711   START (asin_tonearest);
1712   RUN_TEST_LOOP_f_f (asin, asin_tonearest_test_data, FE_TONEAREST);
1713   END;
1714 }
1715
1716
1717 static const struct test_f_f_data asin_towardzero_test_data[] =
1718   {
1719     TEST_f_f (asin, 0, 0),
1720     TEST_f_f (asin, minus_zero, minus_zero),
1721     TEST_f_f (asin, 0.5, M_PI_6l),
1722     TEST_f_f (asin, -0.5, -M_PI_6l),
1723     TEST_f_f (asin, 1.0, M_PI_2l),
1724     TEST_f_f (asin, -1.0, -M_PI_2l),
1725   };
1726
1727 static void
1728 asin_test_towardzero (void)
1729 {
1730   START (asin_towardzero);
1731   RUN_TEST_LOOP_f_f (asin, asin_towardzero_test_data, FE_TOWARDZERO);
1732   END;
1733 }
1734
1735
1736 static const struct test_f_f_data asin_downward_test_data[] =
1737   {
1738     TEST_f_f (asin, 0, 0),
1739     TEST_f_f (asin, minus_zero, minus_zero),
1740     TEST_f_f (asin, 0.5, M_PI_6l),
1741     TEST_f_f (asin, -0.5, -M_PI_6l),
1742     TEST_f_f (asin, 1.0, M_PI_2l),
1743     TEST_f_f (asin, -1.0, -M_PI_2l),
1744   };
1745
1746 static void
1747 asin_test_downward (void)
1748 {
1749   START (asin_downward);
1750   RUN_TEST_LOOP_f_f (asin, asin_downward_test_data, FE_DOWNWARD);
1751   END;
1752 }
1753
1754
1755 static const struct test_f_f_data asin_upward_test_data[] =
1756   {
1757     TEST_f_f (asin, 0, 0),
1758     TEST_f_f (asin, minus_zero, minus_zero),
1759     TEST_f_f (asin, 0.5, M_PI_6l),
1760     TEST_f_f (asin, -0.5, -M_PI_6l),
1761     TEST_f_f (asin, 1.0, M_PI_2l),
1762     TEST_f_f (asin, -1.0, -M_PI_2l),
1763   };
1764
1765 static void
1766 asin_test_upward (void)
1767 {
1768   START (asin_upward);
1769   RUN_TEST_LOOP_f_f (asin, asin_upward_test_data, FE_UPWARD);
1770   END;
1771 }
1772
1773 static const struct test_f_f_data asinh_test_data[] =
1774   {
1775     TEST_f_f (asinh, 0, 0),
1776     TEST_f_f (asinh, minus_zero, minus_zero),
1777 #ifndef TEST_INLINE
1778     TEST_f_f (asinh, plus_infty, plus_infty),
1779     TEST_f_f (asinh, minus_infty, minus_infty),
1780 #endif
1781     TEST_f_f (asinh, qnan_value, qnan_value),
1782     TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L),
1783   };
1784
1785 static void
1786 asinh_test (void)
1787 {
1788   START (asinh);
1789   RUN_TEST_LOOP_f_f (asinh, asinh_test_data, );
1790   END;
1791 }
1792
1793 static const struct test_f_f_data atan_test_data[] =
1794   {
1795     TEST_f_f (atan, 0, 0),
1796     TEST_f_f (atan, minus_zero, minus_zero),
1797
1798     TEST_f_f (atan, plus_infty, M_PI_2l),
1799     TEST_f_f (atan, minus_infty, -M_PI_2l),
1800     TEST_f_f (atan, qnan_value, qnan_value),
1801     TEST_f_f (atan, max_value, M_PI_2l),
1802     TEST_f_f (atan, -max_value, -M_PI_2l),
1803
1804     TEST_f_f (atan, 1, M_PI_4l),
1805     TEST_f_f (atan, -1, -M_PI_4l),
1806
1807     TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L),
1808
1809     TEST_f_f (atan, 0x1p-100L, 0x1p-100L),
1810 #ifndef TEST_FLOAT
1811     TEST_f_f (atan, 0x1p-600L, 0x1p-600L),
1812 #endif
1813 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1814     TEST_f_f (atan, 0x1p-10000L, 0x1p-10000L),
1815 #endif
1816   };
1817
1818 static void
1819 atan_test (void)
1820 {
1821   START (atan);
1822   RUN_TEST_LOOP_f_f (atan, atan_test_data, );
1823   END;
1824 }
1825
1826
1827
1828 static const struct test_f_f_data atanh_test_data[] =
1829   {
1830     TEST_f_f (atanh, 0, 0),
1831     TEST_f_f (atanh, minus_zero, minus_zero),
1832
1833     TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
1834     TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
1835     TEST_f_f (atanh, qnan_value, qnan_value),
1836
1837     /* atanh (x) == qNaN plus invalid exception if |x| > 1.  */
1838     TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1839     TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1840     TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1841     TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
1842
1843     TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
1844   };
1845
1846 static void
1847 atanh_test (void)
1848 {
1849   START (atanh);
1850   RUN_TEST_LOOP_f_f (atanh, atanh_test_data, );
1851   END;
1852 }
1853
1854 static const struct test_ff_f_data atan2_test_data[] =
1855   {
1856     /* atan2 (0,x) == 0 for x > 0.  */
1857     TEST_ff_f (atan2, 0, 1, 0),
1858
1859     /* atan2 (-0,x) == -0 for x > 0.  */
1860     TEST_ff_f (atan2, minus_zero, 1, minus_zero),
1861
1862     TEST_ff_f (atan2, 0, 0, 0),
1863     TEST_ff_f (atan2, minus_zero, 0, minus_zero),
1864
1865     /* atan2 (+0,x) == +pi for x < 0.  */
1866     TEST_ff_f (atan2, 0, -1, M_PIl),
1867
1868     /* atan2 (-0,x) == -pi for x < 0.  */
1869     TEST_ff_f (atan2, minus_zero, -1, -M_PIl),
1870
1871     TEST_ff_f (atan2, 0, minus_zero, M_PIl),
1872     TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl),
1873
1874     /* atan2 (y,+0) == pi/2 for y > 0.  */
1875     TEST_ff_f (atan2, 1, 0, M_PI_2l),
1876
1877     /* atan2 (y,-0) == pi/2 for y > 0.  */
1878     TEST_ff_f (atan2, 1, minus_zero, M_PI_2l),
1879
1880     /* atan2 (y,+0) == -pi/2 for y < 0.  */
1881     TEST_ff_f (atan2, -1, 0, -M_PI_2l),
1882
1883     /* atan2 (y,-0) == -pi/2 for y < 0.  */
1884     TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l),
1885
1886     /* atan2 (y,inf) == +0 for finite y > 0.  */
1887     TEST_ff_f (atan2, 1, plus_infty, 0),
1888
1889     /* atan2 (y,inf) == -0 for finite y < 0.  */
1890     TEST_ff_f (atan2, -1, plus_infty, minus_zero),
1891
1892     /* atan2(+inf, x) == pi/2 for finite x.  */
1893     TEST_ff_f (atan2, plus_infty, -1, M_PI_2l),
1894
1895     /* atan2(-inf, x) == -pi/2 for finite x.  */
1896     TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l),
1897
1898     /* atan2 (y,-inf) == +pi for finite y > 0.  */
1899     TEST_ff_f (atan2, 1, minus_infty, M_PIl),
1900
1901     /* atan2 (y,-inf) == -pi for finite y < 0.  */
1902     TEST_ff_f (atan2, -1, minus_infty, -M_PIl),
1903
1904     TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l),
1905     TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l),
1906     TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l),
1907     TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l),
1908     TEST_ff_f (atan2, qnan_value, qnan_value, qnan_value),
1909
1910     TEST_ff_f (atan2, max_value, max_value, M_PI_4l),
1911
1912     TEST_ff_f (atan2, max_value, min_value, M_PI_2l),
1913     TEST_ff_f (atan2, -max_value, -min_value, -M_PI_2l),
1914
1915     TEST_ff_f (atan2, 0.75L, 1, 0.643501108793284386802809228717322638L),
1916     TEST_ff_f (atan2, -0.75L, 1.0L, -0.643501108793284386802809228717322638L),
1917     TEST_ff_f (atan2, 0.75L, -1.0L, 2.49809154479650885165983415456218025L),
1918     TEST_ff_f (atan2, -0.75L, -1.0L, -2.49809154479650885165983415456218025L),
1919     TEST_ff_f (atan2, 0.390625L, .00029L, 1.57005392693128974780151246612928941L),
1920     TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L),
1921
1922     TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L),
1923 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1924     TEST_ff_f (atan2, 0x1.00000000000001p0L, 0x1.00000000000001p0L, M_PI_4l),
1925 #endif
1926   };
1927
1928 static void
1929 atan2_test (void)
1930 {
1931   START (atan2);
1932   RUN_TEST_LOOP_ff_f (atan2, atan2_test_data, );
1933   END;
1934 }
1935
1936 static const struct test_c_f_data cabs_test_data[] =
1937   {
1938     /* cabs (x + iy) is specified as hypot (x,y) */
1939
1940     /* cabs (+inf + i x) == +inf.  */
1941     TEST_c_f (cabs, plus_infty, 1.0, plus_infty),
1942     /* cabs (-inf + i x) == +inf.  */
1943     TEST_c_f (cabs, minus_infty, 1.0, plus_infty),
1944
1945     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1946     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1947
1948     TEST_c_f (cabs, qnan_value, qnan_value, qnan_value),
1949
1950     /* cabs (x,y) == cabs (y,x).  */
1951     TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1952     /* cabs (x,y) == cabs (-x,y).  */
1953     TEST_c_f (cabs, -12.390625L, 0.75L, 12.4133028598606664302388810868156657L),
1954     /* cabs (x,y) == cabs (-y,x).  */
1955     TEST_c_f (cabs, -0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1956     /* cabs (x,y) == cabs (-x,-y).  */
1957     TEST_c_f (cabs, -12.390625L, -0.75L, 12.4133028598606664302388810868156657L),
1958     /* cabs (x,y) == cabs (-y,-x).  */
1959     TEST_c_f (cabs, -0.75L, -12.390625L, 12.4133028598606664302388810868156657L),
1960     /* cabs (x,0) == fabs (x).  */
1961     TEST_c_f (cabs, -0.75L, 0, 0.75L),
1962     TEST_c_f (cabs, 0.75L, 0, 0.75L),
1963     TEST_c_f (cabs, -1.0L, 0, 1.0L),
1964     TEST_c_f (cabs, 1.0L, 0, 1.0L),
1965     TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L),
1966     TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L),
1967
1968     TEST_c_f (cabs, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
1969   };
1970
1971 static void
1972 cabs_test (void)
1973 {
1974   START (cabs);
1975   RUN_TEST_LOOP_c_f (cabs, cabs_test_data, );
1976   END;
1977 }
1978
1979
1980 static const struct test_c_c_data cacos_test_data[] =
1981   {
1982     TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero),
1983     TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero),
1984     TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0),
1985     TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0),
1986
1987     TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty),
1988     TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty),
1989
1990     TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty),
1991     TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty),
1992
1993     TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty),
1994     TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty),
1995     TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty),
1996     TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty),
1997     TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty),
1998     TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty),
1999
2000     TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty),
2001     TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty),
2002     TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty),
2003     TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty),
2004
2005     TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty),
2006     TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty),
2007     TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty),
2008     TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty),
2009
2010     TEST_c_c (cacos, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
2011     TEST_c_c (cacos, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
2012
2013     TEST_c_c (cacos, 0, qnan_value, M_PI_2l, qnan_value),
2014     TEST_c_c (cacos, minus_zero, qnan_value, M_PI_2l, qnan_value),
2015
2016     TEST_c_c (cacos, qnan_value, plus_infty, qnan_value, minus_infty),
2017     TEST_c_c (cacos, qnan_value, minus_infty, qnan_value, plus_infty),
2018
2019     TEST_c_c (cacos, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2020     TEST_c_c (cacos, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2021
2022     TEST_c_c (cacos, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2023     TEST_c_c (cacos, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2024
2025     TEST_c_c (cacos, qnan_value, qnan_value, qnan_value, qnan_value),
2026
2027     TEST_c_c (cacos, plus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
2028     TEST_c_c (cacos, minus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
2029     TEST_c_c (cacos, plus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
2030     TEST_c_c (cacos, minus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
2031     TEST_c_c (cacos, plus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
2032     TEST_c_c (cacos, minus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
2033     TEST_c_c (cacos, plus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
2034     TEST_c_c (cacos, minus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
2035     TEST_c_c (cacos, plus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
2036     TEST_c_c (cacos, minus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
2037     TEST_c_c (cacos, plus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
2038     TEST_c_c (cacos, minus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
2039
2040     TEST_c_c (cacos, -1.5L, plus_zero, M_PIl, -0.9624236501192068949955178268487368462704L),
2041     TEST_c_c (cacos, -1.5L, minus_zero, M_PIl, 0.9624236501192068949955178268487368462704L),
2042     TEST_c_c (cacos, -1.0L, plus_zero, M_PIl, minus_zero),
2043     TEST_c_c (cacos, -1.0L, minus_zero, M_PIl, plus_zero),
2044     TEST_c_c (cacos, -0.5L, plus_zero, 2.094395102393195492308428922186335256131L, minus_zero),
2045     TEST_c_c (cacos, -0.5L, minus_zero, 2.094395102393195492308428922186335256131L, plus_zero),
2046     TEST_c_c (cacos, 0.5L, plus_zero, 1.047197551196597746154214461093167628066L, minus_zero),
2047     TEST_c_c (cacos, 0.5L, minus_zero, 1.047197551196597746154214461093167628066L, plus_zero),
2048     TEST_c_c (cacos, 1.0L, plus_zero, plus_zero, minus_zero),
2049     TEST_c_c (cacos, 1.0L, minus_zero, plus_zero, plus_zero),
2050     TEST_c_c (cacos, 1.5L, plus_zero, plus_zero, -0.9624236501192068949955178268487368462704L),
2051     TEST_c_c (cacos, 1.5L, minus_zero, plus_zero, 0.9624236501192068949955178268487368462704L),
2052
2053     TEST_c_c (cacos, 0x1p50L, 1.0L, 8.881784197001252323389053344727730248720e-16L, -3.535050620855721078027883819436720218708e1L),
2054     TEST_c_c (cacos, 0x1p50L, -1.0L, 8.881784197001252323389053344727730248720e-16L, 3.535050620855721078027883819436720218708e1L),
2055     TEST_c_c (cacos, -0x1p50L, 1.0L, 3.141592653589792350284223683154270545292L, -3.535050620855721078027883819436720218708e1L),
2056     TEST_c_c (cacos, -0x1p50L, -1.0L, 3.141592653589792350284223683154270545292L, 3.535050620855721078027883819436720218708e1L),
2057     TEST_c_c (cacos, 1.0L, 0x1p50L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436759661753e1L),
2058     TEST_c_c (cacos, -1.0L, 0x1p50L, 1.570796326794897507409741391764983781004L, -3.535050620855721078027883819436759661753e1L),
2059     TEST_c_c (cacos, 1.0L, -0x1p50L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436759661753e1L),
2060     TEST_c_c (cacos, -1.0L, -0x1p50L, 1.570796326794897507409741391764983781004L, 3.535050620855721078027883819436759661753e1L),
2061 #ifndef TEST_FLOAT
2062     TEST_c_c (cacos, 0x1p500L, 1.0L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
2063     TEST_c_c (cacos, 0x1p500L, -1.0L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
2064     TEST_c_c (cacos, -0x1p500L, 1.0L, 3.141592653589793238462643383279502884197L, -3.472667374605326000180332928505464606058e2L),
2065     TEST_c_c (cacos, -0x1p500L, -1.0L, 3.141592653589793238462643383279502884197L, 3.472667374605326000180332928505464606058e2L),
2066     TEST_c_c (cacos, 1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
2067     TEST_c_c (cacos, -1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
2068     TEST_c_c (cacos, 1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
2069     TEST_c_c (cacos, -1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
2070 #endif
2071 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2072     TEST_c_c (cacos, 0x1p5000L, 1.0L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
2073     TEST_c_c (cacos, 0x1p5000L, -1.0L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
2074     TEST_c_c (cacos, -0x1p5000L, 1.0L, 3.141592653589793238462643383279502884197L, -3.466429049980286492395577839412341016946e3L),
2075     TEST_c_c (cacos, -0x1p5000L, -1.0L, 3.141592653589793238462643383279502884197L, 3.466429049980286492395577839412341016946e3L),
2076     TEST_c_c (cacos, 1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
2077     TEST_c_c (cacos, -1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
2078     TEST_c_c (cacos, 1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
2079     TEST_c_c (cacos, -1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
2080 #endif
2081
2082     TEST_c_c (cacos, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, -8.973081118419833726837456344608533993585e1L),
2083 #ifndef TEST_FLOAT
2084     TEST_c_c (cacos, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, -7.107906849659093345062145442726115449315e2L),
2085 #endif
2086 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2087     TEST_c_c (cacos, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, -1.135753137836666928715489992987020363057e4L),
2088 #endif
2089
2090     TEST_c_c (cacos, 0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442097L, -1.194763217287109304111930828519090523536L),
2091     TEST_c_c (cacos, 0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442097L, 1.194763217287109304111930828519090523536L),
2092     TEST_c_c (cacos, -0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442100L, -1.194763217287109304111930828519090523536L),
2093     TEST_c_c (cacos, -0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442100L, 1.194763217287109304111930828519090523536L),
2094     TEST_c_c (cacos, 1.5L, 0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
2095     TEST_c_c (cacos, -1.5L, 0x1.fp-129L, 3.141592653589793238462643383279502884195L, -9.624236501192068949955178268487368462704e-1L),
2096     TEST_c_c (cacos, 1.5L, -0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
2097     TEST_c_c (cacos, -1.5L, -0x1.fp-129L, 3.141592653589793238462643383279502884195L, 9.624236501192068949955178268487368462704e-1L),
2098 #ifndef TEST_FLOAT
2099     TEST_c_c (cacos, 0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
2100     TEST_c_c (cacos, 0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
2101     TEST_c_c (cacos, -0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
2102     TEST_c_c (cacos, -0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
2103     TEST_c_c (cacos, 1.5L, 0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
2104     TEST_c_c (cacos, -1.5L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
2105     TEST_c_c (cacos, 1.5L, -0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
2106     TEST_c_c (cacos, -1.5L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
2107 #endif
2108 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2109     TEST_c_c (cacos, 0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
2110     TEST_c_c (cacos, 0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
2111     TEST_c_c (cacos, -0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
2112     TEST_c_c (cacos, -0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
2113     TEST_c_c (cacos, 1.5L, 0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
2114     TEST_c_c (cacos, -1.5L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
2115     TEST_c_c (cacos, 1.5L, -0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
2116     TEST_c_c (cacos, -1.5L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
2117 #endif
2118
2119     TEST_c_c (cacos, 0.5L, 1.0L, 1.221357263937683325603909865564381489366L, -9.261330313501824245501244453057873152694e-1L),
2120     TEST_c_c (cacos, 0.5L, -1.0L, 1.221357263937683325603909865564381489366L, 9.261330313501824245501244453057873152694e-1L),
2121     TEST_c_c (cacos, -0.5L, 1.0L, 1.920235389652109912858733517715121394831L, -9.261330313501824245501244453057873152694e-1L),
2122     TEST_c_c (cacos, -0.5L, -1.0L, 1.920235389652109912858733517715121394831L, 9.261330313501824245501244453057873152694e-1L),
2123     TEST_c_c (cacos, 1.0L, 0.5L, 6.748888455860063801646649673121744318756e-1L, -7.328576759736452608886724437653071523305e-1L),
2124     TEST_c_c (cacos, -1.0L, 0.5L, 2.466703808003786858297978415967328452322L, -7.328576759736452608886724437653071523305e-1L),
2125     TEST_c_c (cacos, 1.0L, -0.5L, 6.748888455860063801646649673121744318756e-1L, 7.328576759736452608886724437653071523305e-1L),
2126     TEST_c_c (cacos, -1.0L, -0.5L, 2.466703808003786858297978415967328452322L, 7.328576759736452608886724437653071523305e-1L),
2127     TEST_c_c (cacos, 0.25L, 1.0L, 1.394493894017929688812643125003661339452L, -8.924633639033482359562124741744951972772e-1L),
2128     TEST_c_c (cacos, 0.25L, -1.0L, 1.394493894017929688812643125003661339452L, 8.924633639033482359562124741744951972772e-1L),
2129     TEST_c_c (cacos, -0.25L, 1.0L, 1.747098759571863549650000258275841544745L, -8.924633639033482359562124741744951972772e-1L),
2130     TEST_c_c (cacos, -0.25L, -1.0L, 1.747098759571863549650000258275841544745L, 8.924633639033482359562124741744951972772e-1L),
2131     TEST_c_c (cacos, 1.0L, 0.25L, 4.890443302710802929202843732146540079124e-1L, -5.097911466811016354623559941115413499164e-1L),
2132     TEST_c_c (cacos, -1.0L, 0.25L, 2.652548323318712945542359010064848876285L, -5.097911466811016354623559941115413499164e-1L),
2133     TEST_c_c (cacos, 1.0L, -0.25L, 4.890443302710802929202843732146540079124e-1L, 5.097911466811016354623559941115413499164e-1L),
2134     TEST_c_c (cacos, -1.0L, -0.25L, 2.652548323318712945542359010064848876285L, 5.097911466811016354623559941115413499164e-1L),
2135     TEST_c_c (cacos, 0x1.fp-10L, 1.0L, 1.569458417435338878318763342108699202986L, -8.813742198809567991336704287826445879025e-1L),
2136     TEST_c_c (cacos, 0x1.fp-10L, -1.0L, 1.569458417435338878318763342108699202986L, 8.813742198809567991336704287826445879025e-1L),
2137     TEST_c_c (cacos, -0x1.fp-10L, 1.0L, 1.572134236154454360143880041170803681211L, -8.813742198809567991336704287826445879025e-1L),
2138     TEST_c_c (cacos, -0x1.fp-10L, -1.0L, 1.572134236154454360143880041170803681211L, 8.813742198809567991336704287826445879025e-1L),
2139     TEST_c_c (cacos, 1.0L, 0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, -4.350501469856803800217957402220976497152e-2L),
2140     TEST_c_c (cacos, -1.0L, 0x1.fp-10L, 3.098101355958774410750062883737683164607L, -4.350501469856803800217957402220976497152e-2L),
2141     TEST_c_c (cacos, 1.0L, -0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, 4.350501469856803800217957402220976497152e-2L),
2142     TEST_c_c (cacos, -1.0L, -0x1.fp-10L, 3.098101355958774410750062883737683164607L, 4.350501469856803800217957402220976497152e-2L),
2143     TEST_c_c (cacos, 0x1.fp-30L, 1.0L, 1.570796325518966635014803151387033957091L, -8.813735870195430258081932989769495326854e-1L),
2144     TEST_c_c (cacos, 0x1.fp-30L, -1.0L, 1.570796325518966635014803151387033957091L, 8.813735870195430258081932989769495326854e-1L),
2145     TEST_c_c (cacos, -0x1.fp-30L, 1.0L, 1.570796328070826603447840231892468927106L, -8.813735870195430258081932989769495326854e-1L),
2146     TEST_c_c (cacos, -0x1.fp-30L, -1.0L, 1.570796328070826603447840231892468927106L, 8.813735870195430258081932989769495326854e-1L),
2147     TEST_c_c (cacos, 1.0L, 0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, -4.247867098745151888768727039216644758847e-5L),
2148     TEST_c_c (cacos, -1.0L, 0x1.fp-30L, 3.141550174918818561961484385371624132331L, -4.247867098745151888768727039216644758847e-5L),
2149     TEST_c_c (cacos, 1.0L, -0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, 4.247867098745151888768727039216644758847e-5L),
2150     TEST_c_c (cacos, -1.0L, -0x1.fp-30L, 3.141550174918818561961484385371624132331L, 4.247867098745151888768727039216644758847e-5L),
2151     TEST_c_c (cacos, 0x1.fp-100L, 1.0L, 1.570796326794896619231321691638670687364L, -8.813735870195430252326093249797923090282e-1L),
2152     TEST_c_c (cacos, 0x1.fp-100L, -1.0L, 1.570796326794896619231321691638670687364L, 8.813735870195430252326093249797923090282e-1L),
2153     TEST_c_c (cacos, -0x1.fp-100L, 1.0L, 1.570796326794896619231321691640832196834L, -8.813735870195430252326093249797923090282e-1L),
2154     TEST_c_c (cacos, -0x1.fp-100L, -1.0L, 1.570796326794896619231321691640832196834L, 8.813735870195430252326093249797923090282e-1L),
2155     TEST_c_c (cacos, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, -1.236292038260260888664514866457202186027e-15L),
2156     TEST_c_c (cacos, -1.0L, 0x1.fp-100L, 3.141592653589792002170605123018614219682L, -1.236292038260260888664514866457202186027e-15L),
2157     TEST_c_c (cacos, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, 1.236292038260260888664514866457202186027e-15L),
2158     TEST_c_c (cacos, -1.0L, -0x1.fp-100L, 3.141592653589792002170605123018614219682L, 1.236292038260260888664514866457202186027e-15L),
2159     TEST_c_c (cacos, 0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442097L, -8.813735870195430252326093249797923090282e-1L),
2160     TEST_c_c (cacos, 0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442097L, 8.813735870195430252326093249797923090282e-1L),
2161     TEST_c_c (cacos, -0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442101L, -8.813735870195430252326093249797923090282e-1L),
2162     TEST_c_c (cacos, -0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442101L, 8.813735870195430252326093249797923090282e-1L),
2163     TEST_c_c (cacos, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, -5.335635276982233498398987585285818977933e-20L),
2164     TEST_c_c (cacos, -1.0L, 0x1.fp-129L, 3.141592653589793238409287030509680549213L, -5.335635276982233498398987585285818977933e-20L),
2165     TEST_c_c (cacos, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, 5.335635276982233498398987585285818977933e-20L),
2166     TEST_c_c (cacos, -1.0L, -0x1.fp-129L, 3.141592653589793238409287030509680549213L, 5.335635276982233498398987585285818977933e-20L),
2167 #ifndef TEST_FLOAT
2168     TEST_c_c (cacos, 0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2169     TEST_c_c (cacos, 0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2170     TEST_c_c (cacos, -0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2171     TEST_c_c (cacos, -0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2172     TEST_c_c (cacos, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2173     TEST_c_c (cacos, -1.0L, 0x1.fp-1000L, 3.141592653589793238462643383279502884197L, -4.252291453851660175550490409247739011867e-151L),
2174     TEST_c_c (cacos, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2175     TEST_c_c (cacos, -1.0L, -0x1.fp-1000L, 3.141592653589793238462643383279502884197L, 4.252291453851660175550490409247739011867e-151L),
2176     TEST_c_c (cacos, 0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2177     TEST_c_c (cacos, 0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2178     TEST_c_c (cacos, -0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2179     TEST_c_c (cacos, -0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2180     TEST_c_c (cacos, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2181     TEST_c_c (cacos, -1.0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -7.340879205566679497036857179189356754017e-155L),
2182     TEST_c_c (cacos, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2183     TEST_c_c (cacos, -1.0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 7.340879205566679497036857179189356754017e-155L),
2184 #endif
2185 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2186     TEST_c_c (cacos, 0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2187     TEST_c_c (cacos, 0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2188     TEST_c_c (cacos, -0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2189     TEST_c_c (cacos, -0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2190     TEST_c_c (cacos, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2191     TEST_c_c (cacos, -1.0L, 0x1.fp-10000L, 3.141592653589793238462643383279502884197L, -9.854680208706673586644342922051388714633e-1506L),
2192     TEST_c_c (cacos, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2193     TEST_c_c (cacos, -1.0L, -0x1.fp-10000L, 3.141592653589793238462643383279502884197L, 9.854680208706673586644342922051388714633e-1506L),
2194     TEST_c_c (cacos, 0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2195     TEST_c_c (cacos, 0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2196     TEST_c_c (cacos, -0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2197     TEST_c_c (cacos, -0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2198     TEST_c_c (cacos, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2199     TEST_c_c (cacos, -1.0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.023632056840860275214893047597614177639e-2467L),
2200     TEST_c_c (cacos, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2201     TEST_c_c (cacos, -1.0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.023632056840860275214893047597614177639e-2467L),
2202 #endif
2203
2204     TEST_c_c (cacos, 0x1p-23L, 0x1.000002p0L, 1.570796242501204621739026081991856762292L, -8.813736713132400470205730751186547909968e-1L),
2205     TEST_c_c (cacos, 0x1p-23L, -0x1.000002p0L, 1.570796242501204621739026081991856762292L, 8.813736713132400470205730751186547909968e-1L),
2206     TEST_c_c (cacos, -0x1p-23L, 0x1.000002p0L, 1.570796411088588616723617301287646121905L, -8.813736713132400470205730751186547909968e-1L),
2207     TEST_c_c (cacos, -0x1p-23L, -0x1.000002p0L, 1.570796411088588616723617301287646121905L, 8.813736713132400470205730751186547909968e-1L),
2208     TEST_c_c (cacos, 0x1.000002p0L, 0x1p-23L, 2.222118384408546368406374049167636760903e-4L, -5.364668491573609633134147164031476452679e-4L),
2209     TEST_c_c (cacos, -0x1.000002p0L, 0x1p-23L, 3.141370441751352383825802745874586120521L, -5.364668491573609633134147164031476452679e-4L),
2210     TEST_c_c (cacos, 0x1.000002p0L, -0x1p-23L, 2.222118384408546368406374049167636760903e-4L, 5.364668491573609633134147164031476452679e-4L),
2211     TEST_c_c (cacos, -0x1.000002p0L, -0x1p-23L, 3.141370441751352383825802745874586120521L, 5.364668491573609633134147164031476452679e-4L),
2212     TEST_c_c (cacos, 0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442097L, -8.813736713132375348727889167749389235161e-1L),
2213     TEST_c_c (cacos, 0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442097L, 8.813736713132375348727889167749389235161e-1L),
2214     TEST_c_c (cacos, -0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442101L, -8.813736713132375348727889167749389235161e-1L),
2215     TEST_c_c (cacos, -0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442101L, 8.813736713132375348727889167749389235161e-1L),
2216     TEST_c_c (cacos, 0x1.000002p0L, 0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, -4.882812451493617206486388134172712975070e-4L),
2217     TEST_c_c (cacos, -0x1.000002p0L, 0x1.fp-129L, 3.141592653589793238462643383279502878367L, -4.882812451493617206486388134172712975070e-4L),
2218     TEST_c_c (cacos, 0x1.000002p0L, -0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, 4.882812451493617206486388134172712975070e-4L),
2219     TEST_c_c (cacos, -0x1.000002p0L, -0x1.fp-129L, 3.141592653589793238462643383279502878367L, 4.882812451493617206486388134172712975070e-4L),
2220     TEST_c_c (cacos, 0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
2221     TEST_c_c (cacos, 0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
2222     TEST_c_c (cacos, -0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
2223     TEST_c_c (cacos, -0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
2224     TEST_c_c (cacos, 0x1.000002p0L, 0.0L, 0.0L, -4.882812451493617206486388134172712975070e-4L),
2225     TEST_c_c (cacos, -0x1.000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.882812451493617206486388134172712975070e-4L),
2226     TEST_c_c (cacos, 0x1.000002p0L, -0.0L, 0.0L, 4.882812451493617206486388134172712975070e-4L),
2227     TEST_c_c (cacos, -0x1.000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.882812451493617206486388134172712975070e-4L),
2228 #ifndef TEST_FLOAT
2229     TEST_c_c (cacos, 0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, -8.813735870195431822418551933572982483664e-1L),
2230     TEST_c_c (cacos, 0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, 8.813735870195431822418551933572982483664e-1L),
2231     TEST_c_c (cacos, -0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, -8.813735870195431822418551933572982483664e-1L),
2232     TEST_c_c (cacos, -0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, 8.813735870195431822418551933572982483664e-1L),
2233     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1p-52L, 9.590301705980041385828904092662391018164e-9L, -2.315303644582684770975188768022139415020e-8L),
2234     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1p-52L, 3.141592643999491532482601997450598791535L, -2.315303644582684770975188768022139415020e-8L),
2235     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1p-52L, 9.590301705980041385828904092662391018164e-9L, 2.315303644582684770975188768022139415020e-8L),
2236     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1p-52L, 3.141592643999491532482601997450598791535L, 2.315303644582684770975188768022139415020e-8L),
2237     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2238     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2239     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2240     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2241     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, -2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2242     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2243     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, 2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2244     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2245     TEST_c_c (cacos, 0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2246     TEST_c_c (cacos, 0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2247     TEST_c_c (cacos, -0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2248     TEST_c_c (cacos, -0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2249     TEST_c_c (cacos, 0x1.0000000000001p0L, 0.0L, 0.0L, -2.107342425544701550354780375182800088393e-8L),
2250     TEST_c_c (cacos, -0x1.0000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2251     TEST_c_c (cacos, 0x1.0000000000001p0L, -0.0L, 0.0L, 2.107342425544701550354780375182800088393e-8L),
2252     TEST_c_c (cacos, -0x1.0000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2253 #endif
2254 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2255     TEST_c_c (cacos, 0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, -8.813735870195430253092739958139610131001e-1L),
2256     TEST_c_c (cacos, 0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, 8.813735870195430253092739958139610131001e-1L),
2257     TEST_c_c (cacos, -0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, -8.813735870195430253092739958139610131001e-1L),
2258     TEST_c_c (cacos, -0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, 8.813735870195430253092739958139610131001e-1L),
2259     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1p-63L, 2.119177303101063432592523199680782317447e-10L, -5.116146586219826555037807251857670783420e-10L),
2260     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1p-63L, 3.141592653377875508152537040020250564229L, -5.116146586219826555037807251857670783420e-10L),
2261     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1p-63L, 2.119177303101063432592523199680782317447e-10L, 5.116146586219826555037807251857670783420e-10L),
2262     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1p-63L, 3.141592653377875508152537040020250564229L, 5.116146586219826555037807251857670783420e-10L),
2263 # if LDBL_MIN_EXP <= -16381
2264     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2265     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2266     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2267     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2268     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, -4.656612873077392578082927418388212703712e-10L),
2269     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2270     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, 4.656612873077392578082927418388212703712e-10L),
2271     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2272 # endif
2273     TEST_c_c (cacos, 0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2274     TEST_c_c (cacos, 0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2275     TEST_c_c (cacos, -0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2276     TEST_c_c (cacos, -0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2277     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0.0L, 0.0L, -4.656612873077392578082927418388212703712e-10L),
2278     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2279     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0.0L, 0.0L, 4.656612873077392578082927418388212703712e-10L),
2280     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2281 #endif
2282 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2283     TEST_c_c (cacos, 0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, -8.813735870195430252326093249798097405561e-1L),
2284     TEST_c_c (cacos, 0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, 8.813735870195430252326093249798097405561e-1L),
2285     TEST_c_c (cacos, -0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, -8.813735870195430252326093249798097405561e-1L),
2286     TEST_c_c (cacos, -0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, 8.813735870195430252326093249798097405561e-1L),
2287     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1p-106L, 5.394221422390606848017034778914096659726e-17L, -2.285028863093221674154232933662774454211e-16L),
2288     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1p-106L, 3.141592653589793184520429159373434404027L, -2.285028863093221674154232933662774454211e-16L),
2289     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1p-106L, 5.394221422390606848017034778914096659726e-17L, 2.285028863093221674154232933662774454211e-16L),
2290     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1p-106L, 3.141592653589793184520429159373434404027L, 2.285028863093221674154232933662774454211e-16L),
2291     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2292     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2293     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2294     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2295     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, -2.220446049250313080847263336181636063482e-16L),
2296     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2297     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, 2.220446049250313080847263336181636063482e-16L),
2298     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2299     TEST_c_c (cacos, 0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2300     TEST_c_c (cacos, 0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2301     TEST_c_c (cacos, -0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2302     TEST_c_c (cacos, -0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2303     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0.0L, 0.0L, -2.220446049250313080847263336181636063482e-16L),
2304     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2305     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0.0L, 0.0L, 2.220446049250313080847263336181636063482e-16L),
2306     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2307 #endif
2308 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2309     TEST_c_c (cacos, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, -8.813735870195430252326093249797924452120e-1L),
2310     TEST_c_c (cacos, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, 8.813735870195430252326093249797924452120e-1L),
2311     TEST_c_c (cacos, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, -8.813735870195430252326093249797924452120e-1L),
2312     TEST_c_c (cacos, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, 8.813735870195430252326093249797924452120e-1L),
2313     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 4.767863183742677481693563511435642755521e-18L, -2.019699255375255198156433710951064632386e-17L),
2314     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 3.141592653589793233694780199536825402504L, -2.019699255375255198156433710951064632386e-17L),
2315     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 4.767863183742677481693563511435642755521e-18L, 2.019699255375255198156433710951064632386e-17L),
2316     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 3.141592653589793233694780199536825402504L, 2.019699255375255198156433710951064632386e-17L),
2317     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2318     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2319     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2320     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2321     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, -1.962615573354718824241727964954454332780e-17L),
2322     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2323     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, 1.962615573354718824241727964954454332780e-17L),
2324     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2325     TEST_c_c (cacos, 0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2326     TEST_c_c (cacos, 0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2327     TEST_c_c (cacos, -0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2328     TEST_c_c (cacos, -0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2329     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0.0L, 0.0L, -1.962615573354718824241727964954454332780e-17L),
2330     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2331     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0.0L, 0.0L, 1.962615573354718824241727964954454332780e-17L),
2332     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2333 #endif
2334
2335     TEST_c_c (cacos, 0x1p-23L, 0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, -8.813735448726963984495965873956465777250e-1L),
2336     TEST_c_c (cacos, 0x1p-23L, -0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, 8.813735448726963984495965873956465777250e-1L),
2337     TEST_c_c (cacos, -0x1p-23L, 0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, -8.813735448726963984495965873956465777250e-1L),
2338     TEST_c_c (cacos, -0x1p-23L, -0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, 8.813735448726963984495965873956465777250e-1L),
2339     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1p-23L, 4.391863861910487109445187743978204002614e-4L, -2.714321200917194650737217746780928423385e-4L),
2340     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1p-23L, 3.141153467203602189751698864505105063797L, -2.714321200917194650737217746780928423385e-4L),
2341     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1p-23L, 4.391863861910487109445187743978204002614e-4L, 2.714321200917194650737217746780928423385e-4L),
2342     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1p-23L, 3.141153467203602189751698864505105063797L, 2.714321200917194650737217746780928423385e-4L),
2343     TEST_c_c (cacos, 0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, -8.813735448726938863015878255140556727969e-1L),
2344     TEST_c_c (cacos, 0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, 8.813735448726938863015878255140556727969e-1L),
2345     TEST_c_c (cacos, -0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, -8.813735448726938863015878255140556727969e-1L),
2346     TEST_c_c (cacos, -0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, 8.813735448726938863015878255140556727969e-1L),
2347     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, -8.245504387859737323891843603996428534945e-36L),
2348     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1.fp-129L, 3.141247386605077034875040133796864147700L, -8.245504387859737323891843603996428534945e-36L),
2349     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, 8.245504387859737323891843603996428534945e-36L),
2350     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1.fp-129L, 3.141247386605077034875040133796864147700L, 8.245504387859737323891843603996428534945e-36L),
2351     TEST_c_c (cacos, 0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2352     TEST_c_c (cacos, 0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2353     TEST_c_c (cacos, -0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2354     TEST_c_c (cacos, -0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2355     TEST_c_c (cacos, 0x0.ffffffp0L, 0.0L, 3.452669847162035876032494826387364972849e-4L, -0.0L),
2356     TEST_c_c (cacos, -0x0.ffffffp0L, 0.0L, 3.141247386605077034875040133796864147700L, -0.0L),
2357     TEST_c_c (cacos, 0x0.ffffffp0L, -0.0L, 3.452669847162035876032494826387364972849e-4L, 0.0L),
2358     TEST_c_c (cacos, -0x0.ffffffp0L, -0.0L, 3.141247386605077034875040133796864147700L, 0.0L),
2359     TEST_c_c (cacos, 0x1p-23L, 0.5L, 1.570796220170866625230343643673321150378L, -4.812118250596059896127318386463676808798e-1L),
2360     TEST_c_c (cacos, 0x1p-23L, -0.5L, 1.570796220170866625230343643673321150378L, 4.812118250596059896127318386463676808798e-1L),
2361     TEST_c_c (cacos, -0x1p-23L, 0.5L, 1.570796433418926613232299739606181733819L, -4.812118250596059896127318386463676808798e-1L),
2362     TEST_c_c (cacos, -0x1p-23L, -0.5L, 1.570796433418926613232299739606181733819L, 4.812118250596059896127318386463676808798e-1L),
2363     TEST_c_c (cacos, 0.5L, 0x1p-23L, 1.047197551196603215914744618665204532273L, -1.376510308240943236356088341381173571841e-7L),
2364     TEST_c_c (cacos, -0.5L, 0x1p-23L, 2.094395102393190022547898764614298351924L, -1.376510308240943236356088341381173571841e-7L),
2365     TEST_c_c (cacos, 0.5L, -0x1p-23L, 1.047197551196603215914744618665204532273L, 1.376510308240943236356088341381173571841e-7L),
2366     TEST_c_c (cacos, -0.5L, -0x1p-23L, 2.094395102393190022547898764614298351924L, 1.376510308240943236356088341381173571841e-7L),
2367     TEST_c_c (cacos, 0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442096L, -4.812118250596034474977589134243684231352e-1L),
2368     TEST_c_c (cacos, 0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442096L, 4.812118250596034474977589134243684231352e-1L),
2369     TEST_c_c (cacos, -0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442101L, -4.812118250596034474977589134243684231352e-1L),
2370     TEST_c_c (cacos, -0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442101L, 4.812118250596034474977589134243684231352e-1L),
2371     TEST_c_c (cacos, 0.5L, 0x1.fp-129L, 1.047197551196597746154214461093167628066L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2372     TEST_c_c (cacos, -0.5L, 0x1.fp-129L, 2.094395102393195492308428922186335256131L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2373     TEST_c_c (cacos, 0.5L, -0x1.fp-129L, 1.047197551196597746154214461093167628066L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2374     TEST_c_c (cacos, -0.5L, -0x1.fp-129L, 2.094395102393195492308428922186335256131L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2375     TEST_c_c (cacos, 0x1p-23L, 0x1p-23L, 1.570796207585607068450636380271254316214L, -1.192092895507818146886315028596704749235e-7L),
2376     TEST_c_c (cacos, 0x1p-23L, -0x1p-23L, 1.570796207585607068450636380271254316214L, 1.192092895507818146886315028596704749235e-7L),
2377     TEST_c_c (cacos, -0x1p-23L, 0x1p-23L, 1.570796446004186170012007003008248567984L, -1.192092895507818146886315028596704749235e-7L),
2378     TEST_c_c (cacos, -0x1p-23L, -0x1p-23L, 1.570796446004186170012007003008248567984L, 1.192092895507818146886315028596704749235e-7L),
2379     TEST_c_c (cacos, 0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442096L, -1.192092895507809676556842485683592032154e-7L),
2380     TEST_c_c (cacos, 0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442096L, 1.192092895507809676556842485683592032154e-7L),
2381     TEST_c_c (cacos, -0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442101L, -1.192092895507809676556842485683592032154e-7L),
2382     TEST_c_c (cacos, -0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442101L, 1.192092895507809676556842485683592032154e-7L),
2383     TEST_c_c (cacos, 0x1p-23L, 0x1.fp-129L, 1.570796207585607068449789347324000006847L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2384     TEST_c_c (cacos, -0x1p-23L, 0x1.fp-129L, 1.570796446004186170012854035955502877351L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2385     TEST_c_c (cacos, 0x1p-23L, -0x1.fp-129L, 1.570796207585607068449789347324000006847L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2386     TEST_c_c (cacos, -0x1p-23L, -0x1.fp-129L, 1.570796446004186170012854035955502877351L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2387     TEST_c_c (cacos, 0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2388     TEST_c_c (cacos, 0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2389     TEST_c_c (cacos, -0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2390     TEST_c_c (cacos, -0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2391     TEST_c_c (cacos, 0x1p-23L, 0.0L, 1.570796207585607068449789347324000006847L, -0.0L),
2392     TEST_c_c (cacos, -0x1p-23L, 0.0L, 1.570796446004186170012854035955502877351L, -0.0L),
2393     TEST_c_c (cacos, 0x1p-23L, -0.0L, 1.570796207585607068449789347324000006847L, 0.0L),
2394     TEST_c_c (cacos, -0x1p-23L, -0.0L, 1.570796446004186170012854035955502877351L, 0.0L),
2395     TEST_c_c (cacos, 0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2396     TEST_c_c (cacos, 0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2397     TEST_c_c (cacos, -0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442101L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2398     TEST_c_c (cacos, -0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442101L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2399 #ifndef TEST_FLOAT
2400     TEST_c_c (cacos, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, -8.813735870195429467279863907910458761820e-1L),
2401     TEST_c_c (cacos, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, 8.813735870195429467279863907910458761820e-1L),
2402     TEST_c_c (cacos, -0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, -8.813735870195429467279863907910458761820e-1L),
2403     TEST_c_c (cacos, -0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, 8.813735870195429467279863907910458761820e-1L),
2404     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.895456983915074112227925127005564372844e-8L, -1.171456840272878582596796205397918831268e-8L),
2405     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1p-52L, 3.141592634635223399311902261000251614142L, -1.171456840272878582596796205397918831268e-8L),
2406     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.895456983915074112227925127005564372844e-8L, 1.171456840272878582596796205397918831268e-8L),
2407     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1p-52L, 3.141592634635223399311902261000251614142L, 1.171456840272878582596796205397918831268e-8L),
2408     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2409     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2410     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2411     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2412     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2413     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.141592638688632044614986995416067458693L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2414     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2415     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.141592638688632044614986995416067458693L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2416     TEST_c_c (cacos, 0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2417     TEST_c_c (cacos, 0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2418     TEST_c_c (cacos, -0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2419     TEST_c_c (cacos, -0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2420     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0.0L, 1.490116119384765638786343542550461592240e-8L, -0.0L),
2421     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0.0L, 3.141592638688632044614986995416067458693L, -0.0L),
2422     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0.0L, 1.490116119384765638786343542550461592240e-8L, 0.0L),
2423     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0.0L, 3.141592638688632044614986995416067458693L, 0.0L),
2424 #endif
2425     TEST_c_c (cacos, 0x1p-52L, 0.5L, 1.570796326794896420628589431857911675917L, -4.812118250596034474977589134243772428682e-1L),
2426     TEST_c_c (cacos, 0x1p-52L, -0.5L, 1.570796326794896420628589431857911675917L, 4.812118250596034474977589134243772428682e-1L),
2427     TEST_c_c (cacos, -0x1p-52L, 0.5L, 1.570796326794896817834053951421591208280L, -4.812118250596034474977589134243772428682e-1L),
2428     TEST_c_c (cacos, -0x1p-52L, -0.5L, 1.570796326794896817834053951421591208280L, 4.812118250596034474977589134243772428682e-1L),
2429     TEST_c_c (cacos, 0.5L, 0x1p-52L, 1.047197551196597746154214461093186605110L, -2.563950248511418570403591756798643804971e-16L),
2430     TEST_c_c (cacos, -0.5L, 0x1p-52L, 2.094395102393195492308428922186316279087L, -2.563950248511418570403591756798643804971e-16L),
2431     TEST_c_c (cacos, 0.5L, -0x1p-52L, 1.047197551196597746154214461093186605110L, 2.563950248511418570403591756798643804971e-16L),
2432     TEST_c_c (cacos, -0.5L, -0x1p-52L, 2.094395102393195492308428922186316279087L, 2.563950248511418570403591756798643804971e-16L),
2433 #ifndef TEST_FLOAT
2434     TEST_c_c (cacos, 0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2435     TEST_c_c (cacos, 0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2436     TEST_c_c (cacos, -0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2437     TEST_c_c (cacos, -0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2438     TEST_c_c (cacos, 0.5L, 0x1.fp-1025L, 1.047197551196597746154214461093167628066L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2439     TEST_c_c (cacos, -0.5L, 0x1.fp-1025L, 2.094395102393195492308428922186335256131L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2440     TEST_c_c (cacos, 0.5L, -0x1.fp-1025L, 1.047197551196597746154214461093167628066L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2441     TEST_c_c (cacos, -0.5L, -0x1.fp-1025L, 2.094395102393195492308428922186335256131L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2442 #endif
2443     TEST_c_c (cacos, 0x1p-52L, 0x1p-52L, 1.570796326794896397186716766608443357372L, -2.220446049250313080847263336181677117148e-16L),
2444     TEST_c_c (cacos, 0x1p-52L, -0x1p-52L, 1.570796326794896397186716766608443357372L, 2.220446049250313080847263336181677117148e-16L),
2445     TEST_c_c (cacos, -0x1p-52L, 0x1p-52L, 1.570796326794896841275926616671059526825L, -2.220446049250313080847263336181677117148e-16L),
2446     TEST_c_c (cacos, -0x1p-52L, -0x1p-52L, 1.570796326794896841275926616671059526825L, 2.220446049250313080847263336181677117148e-16L),
2447 #ifndef TEST_FLOAT
2448     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2449     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2450     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2451     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2452     TEST_c_c (cacos, 0x1p-52L, 0x1.fp-1025L, 1.570796326794896397186716766608443357372L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2453     TEST_c_c (cacos, -0x1p-52L, 0x1.fp-1025L, 1.570796326794896841275926616671059526825L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2454     TEST_c_c (cacos, 0x1p-52L, -0x1.fp-1025L, 1.570796326794896397186716766608443357372L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2455     TEST_c_c (cacos, -0x1p-52L, -0x1.fp-1025L, 1.570796326794896841275926616671059526825L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2456 #endif
2457     TEST_c_c (cacos, 0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2458     TEST_c_c (cacos, 0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2459     TEST_c_c (cacos, -0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2460     TEST_c_c (cacos, -0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2461     TEST_c_c (cacos, 0x1p-52L, 0.0L, 1.570796326794896397186716766608443357372L, -0.0L),
2462     TEST_c_c (cacos, -0x1p-52L, 0.0L, 1.570796326794896841275926616671059526825L, -0.0L),
2463     TEST_c_c (cacos, 0x1p-52L, -0.0L, 1.570796326794896397186716766608443357372L, 0.0L),
2464     TEST_c_c (cacos, -0x1p-52L, -0.0L, 1.570796326794896841275926616671059526825L, 0.0L),
2465 #ifndef TEST_FLOAT
2466     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2467     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2468     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2469     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2470 #endif
2471 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2472     TEST_c_c (cacos, 0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, -8.813735870195430251942769895627079569937e-1L),
2473     TEST_c_c (cacos, 0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, 8.813735870195430251942769895627079569937e-1L),
2474     TEST_c_c (cacos, -0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, -8.813735870195430251942769895627079569937e-1L),
2475     TEST_c_c (cacos, -0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, 8.813735870195430251942769895627079569937e-1L),
2476     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1p-63L, 4.188407771167967636741951941902992986043e-10L, -2.588578361325995866221775673638805081337e-10L),
2477     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1p-63L, 3.141592653170952461345846619605307690007L, -2.588578361325995866221775673638805081337e-10L),
2478     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1p-63L, 4.188407771167967636741951941902992986043e-10L, 2.588578361325995866221775673638805081337e-10L),
2479     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1p-63L, 3.141592653170952461345846619605307690007L, 2.588578361325995866221775673638805081337e-10L),
2480 # if LDBL_MIN_EXP <= -16381
2481     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2482     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2483     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2484     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2485     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, -2.472906068161537187835415298076415423459e-4923L),
2486     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.141592653260520984471283759942320330996L, -2.472906068161537187835415298076415423459e-4923L),
2487     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, 2.472906068161537187835415298076415423459e-4923L),
2488     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.141592653260520984471283759942320330996L, 2.472906068161537187835415298076415423459e-4923L),
2489 # endif
2490     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2491     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2492     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2493     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2494     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0.0L, 3.292722539913596233371825532007990724506e-10L, -0.0L),
2495     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0.0L, 3.141592653260520984471283759942320330996L, -0.0L),
2496     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0.0L, 3.292722539913596233371825532007990724506e-10L, 0.0L),
2497     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0.0L, 3.141592653260520984471283759942320330996L, 0.0L),
2498 #endif
2499     TEST_c_c (cacos, 0x1p-63L, 0.5L, 1.570796326794896619134347701278529840650L, -4.812118250596034474977589134243684231373e-1L),
2500     TEST_c_c (cacos, 0x1p-63L, -0.5L, 1.570796326794896619134347701278529840650L, 4.812118250596034474977589134243684231373e-1L),
2501     TEST_c_c (cacos, -0x1p-63L, 0.5L, 1.570796326794896619328295682000973043547L, -4.812118250596034474977589134243684231373e-1L),
2502     TEST_c_c (cacos, -0x1p-63L, -0.5L, 1.570796326794896619328295682000973043547L, 4.812118250596034474977589134243684231373e-1L),
2503     TEST_c_c (cacos, 0.5L, 0x1p-63L, 1.047197551196597746154214461093167628070L, -1.251928832280966098829878787499365228659e-19L),
2504     TEST_c_c (cacos, -0.5L, 0x1p-63L, 2.094395102393195492308428922186335256127L, -1.251928832280966098829878787499365228659e-19L),
2505     TEST_c_c (cacos, 0.5L, -0x1p-63L, 1.047197551196597746154214461093167628070L, 1.251928832280966098829878787499365228659e-19L),
2506     TEST_c_c (cacos, -0.5L, -0x1p-63L, 2.094395102393195492308428922186335256127L, 1.251928832280966098829878787499365228659e-19L),
2507 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2508     TEST_c_c (cacos, 0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2509     TEST_c_c (cacos, 0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2510     TEST_c_c (cacos, -0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2511     TEST_c_c (cacos, -0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2512     TEST_c_c (cacos, 0.5L, 0x1.fp-16385L, 1.047197551196597746154214461093167628066L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2513     TEST_c_c (cacos, -0.5L, 0x1.fp-16385L, 2.094395102393195492308428922186335256131L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2514     TEST_c_c (cacos, 0.5L, -0x1.fp-16385L, 1.047197551196597746154214461093167628066L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2515     TEST_c_c (cacos, -0.5L, -0x1.fp-16385L, 2.094395102393195492308428922186335256131L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2516 #endif
2517     TEST_c_c (cacos, 0x1p-63L, 0x1p-63L, 1.570796326794896619122901474391200998698L, -1.084202172485504434007452800869941711430e-19L),
2518     TEST_c_c (cacos, 0x1p-63L, -0x1p-63L, 1.570796326794896619122901474391200998698L, 1.084202172485504434007452800869941711430e-19L),
2519     TEST_c_c (cacos, -0x1p-63L, 0x1p-63L, 1.570796326794896619339741908888301885499L, -1.084202172485504434007452800869941711430e-19L),
2520     TEST_c_c (cacos, -0x1p-63L, -0x1p-63L, 1.570796326794896619339741908888301885499L, 1.084202172485504434007452800869941711430e-19L),
2521 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2522     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2523     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2524     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2525     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2526     TEST_c_c (cacos, 0x1p-63L, 0x1.fp-16385L, 1.570796326794896619122901474391200998698L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2527     TEST_c_c (cacos, -0x1p-63L, 0x1.fp-16385L, 1.570796326794896619339741908888301885499L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2528     TEST_c_c (cacos, 0x1p-63L, -0x1.fp-16385L, 1.570796326794896619122901474391200998698L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2529     TEST_c_c (cacos, -0x1p-63L, -0x1.fp-16385L, 1.570796326794896619339741908888301885499L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2530 #endif
2531     TEST_c_c (cacos, 0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2532     TEST_c_c (cacos, 0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2533     TEST_c_c (cacos, -0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2534     TEST_c_c (cacos, -0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2535     TEST_c_c (cacos, 0x1p-63L, 0.0L, 1.570796326794896619122901474391200998698L, -0.0L),
2536     TEST_c_c (cacos, -0x1p-63L, 0.0L, 1.570796326794896619339741908888301885499L, -0.0L),
2537     TEST_c_c (cacos, 0x1p-63L, -0.0L, 1.570796326794896619122901474391200998698L, 0.0L),
2538     TEST_c_c (cacos, -0x1p-63L, -0.0L, 1.570796326794896619339741908888301885499L, 0.0L),
2539 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2540     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2541     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2542     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2543     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2544 #endif
2545 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2546     TEST_c_c (cacos, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, -8.813735870195430252326093249797835932642e-1L),
2547     TEST_c_c (cacos, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, 8.813735870195430252326093249797835932642e-1L),
2548     TEST_c_c (cacos, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, -8.813735870195430252326093249797835932642e-1L),
2549     TEST_c_c (cacos, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, 8.813735870195430252326093249797835932642e-1L),
2550     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.997188458999618357060632049675702684031e-16L, -1.234330349600789959989661887846005659983e-16L),
2551     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 3.141592653589793038743797483317667178134L, -1.234330349600789959989661887846005659983e-16L),
2552     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.997188458999618357060632049675702684031e-16L, 1.234330349600789959989661887846005659983e-16L),
2553     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 3.141592653589793038743797483317667178134L, 1.234330349600789959989661887846005659983e-16L),
2554     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2555     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2556     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2557     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2558     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2559     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.141592653589793081453397514901996944859L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2560     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2561     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.141592653589793081453397514901996944859L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2562     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2563     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2564     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2565     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2566     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570092458683775059393382371963565104164e-16L, -0.0L),
2567     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 3.141592653589793081453397514901996944859L, -0.0L),
2568     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570092458683775059393382371963565104164e-16L, 0.0L),
2569     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 3.141592653589793081453397514901996944859L, 0.0L),
2570 #endif
2571     TEST_c_c (cacos, 0x1p-105L, 0.5L, 1.570796326794896619231321691639729392766L, -4.812118250596034474977589134243684231352e-1L),
2572     TEST_c_c (cacos, 0x1p-105L, -0.5L, 1.570796326794896619231321691639729392766L, 4.812118250596034474977589134243684231352e-1L),
2573     TEST_c_c (cacos, -0x1p-105L, 0.5L, 1.570796326794896619231321691639773491431L, -4.812118250596034474977589134243684231352e-1L),
2574     TEST_c_c (cacos, -0x1p-105L, -0.5L, 1.570796326794896619231321691639773491431L, 4.812118250596034474977589134243684231352e-1L),
2575     TEST_c_c (cacos, 0.5L, 0x1p-105L, 1.047197551196597746154214461093167628066L, -2.846556599890768890940941645338546615370e-32L),
2576     TEST_c_c (cacos, -0.5L, 0x1p-105L, 2.094395102393195492308428922186335256131L, -2.846556599890768890940941645338546615370e-32L),
2577     TEST_c_c (cacos, 0.5L, -0x1p-105L, 1.047197551196597746154214461093167628066L, 2.846556599890768890940941645338546615370e-32L),
2578     TEST_c_c (cacos, -0.5L, -0x1p-105L, 2.094395102393195492308428922186335256131L, 2.846556599890768890940941645338546615370e-32L),
2579     TEST_c_c (cacos, 0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639726790195L, -2.465190328815661891911651766508706967729e-32L),
2580     TEST_c_c (cacos, 0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639726790195L, 2.465190328815661891911651766508706967729e-32L),
2581     TEST_c_c (cacos, -0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639776094002L, -2.465190328815661891911651766508706967729e-32L),
2582     TEST_c_c (cacos, -0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639776094002L, 2.465190328815661891911651766508706967729e-32L),
2583 #ifndef TEST_FLOAT
2584     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2585     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2586     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2587     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2588     TEST_c_c (cacos, 0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639726790195L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2589     TEST_c_c (cacos, -0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639776094002L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2590     TEST_c_c (cacos, 0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639726790195L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2591     TEST_c_c (cacos, -0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639776094002L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2592 #endif
2593     TEST_c_c (cacos, 0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2594     TEST_c_c (cacos, 0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2595     TEST_c_c (cacos, -0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2596     TEST_c_c (cacos, -0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2597     TEST_c_c (cacos, 0x1p-105L, 0.0L, 1.570796326794896619231321691639726790195L, -0.0L),
2598     TEST_c_c (cacos, -0x1p-105L, 0.0L, 1.570796326794896619231321691639776094002L, -0.0L),
2599     TEST_c_c (cacos, 0x1p-105L, -0.0L, 1.570796326794896619231321691639726790195L, 0.0L),
2600     TEST_c_c (cacos, -0x1p-105L, -0.0L, 1.570796326794896619231321691639776094002L, 0.0L),
2601 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2602     TEST_c_c (cacos, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, -8.813735870195430252326093249797922409363e-1L),
2603     TEST_c_c (cacos, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, 8.813735870195430252326093249797922409363e-1L),
2604     TEST_c_c (cacos, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, -8.813735870195430252326093249797922409363e-1L),
2605     TEST_c_c (cacos, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, 8.813735870195430252326093249797922409363e-1L),
2606     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.765281878332676474347460257221369818872e-17L, -1.091004200533850618345330909857103457781e-17L),
2607     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 3.141592653589793220809824599952738140723L, -1.091004200533850618345330909857103457781e-17L),
2608     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.765281878332676474347460257221369818872e-17L, 1.091004200533850618345330909857103457781e-17L),
2609     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 3.141592653589793220809824599952738140723L, 1.091004200533850618345330909857103457781e-17L),
2610     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2611     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2612     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2613     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2614     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, -5.867357004219059108790368268900490184505e-4916L),
2615     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 3.141592653589793224584855575465046128902L, -5.867357004219059108790368268900490184505e-4916L),
2616     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, 5.867357004219059108790368268900490184505e-4916L),
2617     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 3.141592653589793224584855575465046128902L, 5.867357004219059108790368268900490184505e-4916L),
2618     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2619     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2620     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2621     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2622     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.387778780781445675529539585113525401762e-17L, -0.0L),
2623     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 3.141592653589793224584855575465046128902L, -0.0L),
2624     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.387778780781445675529539585113525401762e-17L, 0.0L),
2625     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 3.141592653589793224584855575465046128902L, 0.0L),
2626 #endif
2627     TEST_c_c (cacos, 0x1p-112L, 0.5L, 1.570796326794896619231321691639751269838L, -4.812118250596034474977589134243684231352e-1L),
2628     TEST_c_c (cacos, 0x1p-112L, -0.5L, 1.570796326794896619231321691639751269838L, 4.812118250596034474977589134243684231352e-1L),
2629     TEST_c_c (cacos, -0x1p-112L, 0.5L, 1.570796326794896619231321691639751614359L, -4.812118250596034474977589134243684231352e-1L),
2630     TEST_c_c (cacos, -0x1p-112L, -0.5L, 1.570796326794896619231321691639751614359L, 4.812118250596034474977589134243684231352e-1L),
2631     TEST_c_c (cacos, 0.5L, 0x1p-112L, 1.047197551196597746154214461093167628066L, -2.223872343664663196047610660420739543258e-34L),
2632     TEST_c_c (cacos, -0.5L, 0x1p-112L, 2.094395102393195492308428922186335256131L, -2.223872343664663196047610660420739543258e-34L),
2633     TEST_c_c (cacos, 0.5L, -0x1p-112L, 1.047197551196597746154214461093167628066L, 2.223872343664663196047610660420739543258e-34L),
2634     TEST_c_c (cacos, -0.5L, -0x1p-112L, 2.094395102393195492308428922186335256131L, 2.223872343664663196047610660420739543258e-34L),
2635     TEST_c_c (cacos, 0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751249506L, -1.925929944387235853055977942584927318538e-34L),
2636     TEST_c_c (cacos, 0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751249506L, 1.925929944387235853055977942584927318538e-34L),
2637     TEST_c_c (cacos, -0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751634692L, -1.925929944387235853055977942584927318538e-34L),
2638     TEST_c_c (cacos, -0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751634692L, 1.925929944387235853055977942584927318538e-34L),
2639 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2640     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2641     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2642     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2643     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2644     TEST_c_c (cacos, 0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751249506L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2645     TEST_c_c (cacos, -0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751634692L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2646     TEST_c_c (cacos, 0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751249506L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2647     TEST_c_c (cacos, -0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751634692L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2648 #endif
2649     TEST_c_c (cacos, 0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2650     TEST_c_c (cacos, 0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2651     TEST_c_c (cacos, -0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2652     TEST_c_c (cacos, -0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2653     TEST_c_c (cacos, 0x1p-112L, 0.0L, 1.570796326794896619231321691639751249506L, -0.0L),
2654     TEST_c_c (cacos, -0x1p-112L, 0.0L, 1.570796326794896619231321691639751634692L, -0.0L),
2655     TEST_c_c (cacos, 0x1p-112L, -0.0L, 1.570796326794896619231321691639751249506L, 0.0L),
2656     TEST_c_c (cacos, -0x1p-112L, -0.0L, 1.570796326794896619231321691639751634692L, 0.0L),
2657
2658     TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L),
2659     TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L),
2660   };
2661
2662 static void
2663 cacos_test (void)
2664 {
2665   START (cacos);
2666   RUN_TEST_LOOP_c_c (cacos, cacos_test_data, );
2667   END_COMPLEX;
2668 }
2669
2670 static const struct test_c_c_data cacosh_test_data[] =
2671   {
2672     TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l),
2673     TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l),
2674     TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l),
2675     TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l),
2676     TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l),
2677     TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l),
2678
2679     TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l),
2680     TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
2681
2682     TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l),
2683     TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l),
2684     TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l),
2685     TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l),
2686     TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l),
2687     TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
2688
2689     TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl),
2690     TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl),
2691     TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl),
2692     TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl),
2693
2694     TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0),
2695     TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero),
2696     TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0),
2697     TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero),
2698
2699     TEST_c_c (cacosh, plus_infty, qnan_value, plus_infty, qnan_value),
2700     TEST_c_c (cacosh, minus_infty, qnan_value, plus_infty, qnan_value),
2701
2702     TEST_c_c (cacosh, 0, qnan_value, qnan_value, qnan_value),
2703     TEST_c_c (cacosh, minus_zero, qnan_value, qnan_value, qnan_value),
2704
2705     TEST_c_c (cacosh, qnan_value, plus_infty, plus_infty, qnan_value),
2706     TEST_c_c (cacosh, qnan_value, minus_infty, plus_infty, qnan_value),
2707
2708     TEST_c_c (cacosh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2709     TEST_c_c (cacosh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2710
2711     TEST_c_c (cacosh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2712     TEST_c_c (cacosh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2713
2714     TEST_c_c (cacosh, qnan_value, qnan_value, qnan_value, qnan_value),
2715
2716     TEST_c_c (cacosh, plus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2717     TEST_c_c (cacosh, minus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2718     TEST_c_c (cacosh, plus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2719     TEST_c_c (cacosh, minus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2720     TEST_c_c (cacosh, plus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2721     TEST_c_c (cacosh, minus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2722     TEST_c_c (cacosh, plus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2723     TEST_c_c (cacosh, minus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2724     TEST_c_c (cacosh, plus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2725     TEST_c_c (cacosh, minus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2726     TEST_c_c (cacosh, plus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2727     TEST_c_c (cacosh, minus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2728
2729     TEST_c_c (cacosh, -1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, M_PIl),
2730     TEST_c_c (cacosh, -1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, -M_PIl),
2731     TEST_c_c (cacosh, -1.0L, plus_zero, plus_zero, M_PIl),
2732     TEST_c_c (cacosh, -1.0L, minus_zero, plus_zero, -M_PIl),
2733     TEST_c_c (cacosh, -0.5L, plus_zero, plus_zero, 2.094395102393195492308428922186335256131L),
2734     TEST_c_c (cacosh, -0.5L, minus_zero, plus_zero, -2.094395102393195492308428922186335256131L),
2735     TEST_c_c (cacosh, 0.5L, plus_zero, plus_zero, 1.047197551196597746154214461093167628066L),
2736     TEST_c_c (cacosh, 0.5L, minus_zero, plus_zero, -1.047197551196597746154214461093167628066L),
2737     TEST_c_c (cacosh, 1.0L, plus_zero, plus_zero, plus_zero),
2738     TEST_c_c (cacosh, 1.0L, minus_zero, plus_zero, minus_zero),
2739     TEST_c_c (cacosh, 1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, plus_zero),
2740     TEST_c_c (cacosh, 1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, minus_zero),
2741
2742     TEST_c_c (cacosh, 0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 8.881784197001252323389053344727730248720e-16L),
2743     TEST_c_c (cacosh, 0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -8.881784197001252323389053344727730248720e-16L),
2744     TEST_c_c (cacosh, -0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 3.141592653589792350284223683154270545292L),
2745     TEST_c_c (cacosh, -0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -3.141592653589792350284223683154270545292L),
2746     TEST_c_c (cacosh, 1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794895731052901991514519103193L),
2747     TEST_c_c (cacosh, -1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794897507409741391764983781004L),
2748     TEST_c_c (cacosh, 1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794895731052901991514519103193L),
2749     TEST_c_c (cacosh, -1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794897507409741391764983781004L),
2750 #ifndef TEST_FLOAT
2751     TEST_c_c (cacosh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
2752     TEST_c_c (cacosh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
2753     TEST_c_c (cacosh, -0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.141592653589793238462643383279502884197L),
2754     TEST_c_c (cacosh, -0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.141592653589793238462643383279502884197L),
2755     TEST_c_c (cacosh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2756     TEST_c_c (cacosh, -1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2757     TEST_c_c (cacosh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2758     TEST_c_c (cacosh, -1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2759 #endif
2760 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2761     TEST_c_c (cacosh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
2762     TEST_c_c (cacosh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
2763     TEST_c_c (cacosh, -0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 3.141592653589793238462643383279502884197L),
2764     TEST_c_c (cacosh, -0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -3.141592653589793238462643383279502884197L),
2765     TEST_c_c (cacosh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2766     TEST_c_c (cacosh, -1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2767     TEST_c_c (cacosh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2768     TEST_c_c (cacosh, -1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2769 #endif
2770     TEST_c_c (cacosh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
2771 #ifndef TEST_FLOAT
2772     TEST_c_c (cacosh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
2773 #endif
2774 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2775     TEST_c_c (cacosh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
2776 #endif
2777     TEST_c_c (cacosh, 0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442097L),
2778     TEST_c_c (cacosh, 0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442097L),
2779     TEST_c_c (cacosh, -0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442100L),
2780     TEST_c_c (cacosh, -0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442100L),
2781     TEST_c_c (cacosh, 1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2782     TEST_c_c (cacosh, -1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884195L),
2783     TEST_c_c (cacosh, 1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2784     TEST_c_c (cacosh, -1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884195L),
2785 #ifndef TEST_FLOAT
2786     TEST_c_c (cacosh, 0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2787     TEST_c_c (cacosh, 0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2788     TEST_c_c (cacosh, -0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2789     TEST_c_c (cacosh, -0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2790     TEST_c_c (cacosh, 1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2791     TEST_c_c (cacosh, -1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2792     TEST_c_c (cacosh, 1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2793     TEST_c_c (cacosh, -1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2794 #endif
2795 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2796     TEST_c_c (cacosh, 0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2797     TEST_c_c (cacosh, 0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2798     TEST_c_c (cacosh, -0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2799     TEST_c_c (cacosh, -0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2800     TEST_c_c (cacosh, 1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2801     TEST_c_c (cacosh, -1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2802     TEST_c_c (cacosh, 1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2803     TEST_c_c (cacosh, -1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2804 #endif
2805     TEST_c_c (cacosh, 0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.221357263937683325603909865564381489366L),
2806     TEST_c_c (cacosh, 0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.221357263937683325603909865564381489366L),
2807     TEST_c_c (cacosh, -0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.920235389652109912858733517715121394831L),
2808     TEST_c_c (cacosh, -0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.920235389652109912858733517715121394831L),
2809     TEST_c_c (cacosh, 1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 6.748888455860063801646649673121744318756e-1L),
2810     TEST_c_c (cacosh, -1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 2.466703808003786858297978415967328452322L),
2811     TEST_c_c (cacosh, 1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -6.748888455860063801646649673121744318756e-1L),
2812     TEST_c_c (cacosh, -1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -2.466703808003786858297978415967328452322L),
2813     TEST_c_c (cacosh, 0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.394493894017929688812643125003661339452L),
2814     TEST_c_c (cacosh, 0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.394493894017929688812643125003661339452L),
2815     TEST_c_c (cacosh, -0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.747098759571863549650000258275841544745L),
2816     TEST_c_c (cacosh, -0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.747098759571863549650000258275841544745L),
2817     TEST_c_c (cacosh, 1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 4.890443302710802929202843732146540079124e-1L),
2818     TEST_c_c (cacosh, -1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 2.652548323318712945542359010064848876285L),
2819     TEST_c_c (cacosh, 1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -4.890443302710802929202843732146540079124e-1L),
2820     TEST_c_c (cacosh, -1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -2.652548323318712945542359010064848876285L),
2821     TEST_c_c (cacosh, 0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.569458417435338878318763342108699202986L),
2822     TEST_c_c (cacosh, 0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.569458417435338878318763342108699202986L),
2823     TEST_c_c (cacosh, -0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.572134236154454360143880041170803681211L),
2824     TEST_c_c (cacosh, -0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.572134236154454360143880041170803681211L),
2825     TEST_c_c (cacosh, 1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 4.349129763101882771258049954181971959031e-2L),
2826     TEST_c_c (cacosh, -1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 3.098101355958774410750062883737683164607L),
2827     TEST_c_c (cacosh, 1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -4.349129763101882771258049954181971959031e-2L),
2828     TEST_c_c (cacosh, -1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -3.098101355958774410750062883737683164607L),
2829     TEST_c_c (cacosh, 0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796325518966635014803151387033957091L),
2830     TEST_c_c (cacosh, 0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796325518966635014803151387033957091L),
2831     TEST_c_c (cacosh, -0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796328070826603447840231892468927106L),
2832     TEST_c_c (cacosh, -0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796328070826603447840231892468927106L),
2833     TEST_c_c (cacosh, 1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 4.247867097467650115899790787875186617316e-5L),
2834     TEST_c_c (cacosh, -1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 3.141550174918818561961484385371624132331L),
2835     TEST_c_c (cacosh, 1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -4.247867097467650115899790787875186617316e-5L),
2836     TEST_c_c (cacosh, -1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -3.141550174918818561961484385371624132331L),
2837     TEST_c_c (cacosh, 0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691638670687364L),
2838     TEST_c_c (cacosh, 0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691638670687364L),
2839     TEST_c_c (cacosh, -0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691640832196834L),
2840     TEST_c_c (cacosh, -0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691640832196834L),
2841     TEST_c_c (cacosh, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 1.236292038260260888664514866456887257525e-15L),
2842     TEST_c_c (cacosh, -1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 3.141592653589792002170605123018614219682L),
2843     TEST_c_c (cacosh, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -1.236292038260260888664514866456887257525e-15L),
2844     TEST_c_c (cacosh, -1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -3.141592653589792002170605123018614219682L),
2845     TEST_c_c (cacosh, 0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442097L),
2846     TEST_c_c (cacosh, 0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442097L),
2847     TEST_c_c (cacosh, -0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442101L),
2848     TEST_c_c (cacosh, -0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442101L),
2849     TEST_c_c (cacosh, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 5.335635276982233498398987585285818977930e-20L),
2850     TEST_c_c (cacosh, -1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 3.141592653589793238409287030509680549213L),
2851     TEST_c_c (cacosh, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -5.335635276982233498398987585285818977930e-20L),
2852     TEST_c_c (cacosh, -1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -3.141592653589793238409287030509680549213L),
2853 #ifndef TEST_FLOAT
2854     TEST_c_c (cacosh, 0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2855     TEST_c_c (cacosh, 0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2856     TEST_c_c (cacosh, -0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2857     TEST_c_c (cacosh, -0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2858     TEST_c_c (cacosh, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2859     TEST_c_c (cacosh, -1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 3.141592653589793238462643383279502884197L),
2860     TEST_c_c (cacosh, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2861     TEST_c_c (cacosh, -1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -3.141592653589793238462643383279502884197L),
2862     TEST_c_c (cacosh, 0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2863     TEST_c_c (cacosh, 0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2864     TEST_c_c (cacosh, -0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2865     TEST_c_c (cacosh, -0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2866     TEST_c_c (cacosh, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2867     TEST_c_c (cacosh, -1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 3.141592653589793238462643383279502884197L),
2868     TEST_c_c (cacosh, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2869     TEST_c_c (cacosh, -1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -3.141592653589793238462643383279502884197L),
2870 #endif
2871 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2872     TEST_c_c (cacosh, 0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2873     TEST_c_c (cacosh, 0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2874     TEST_c_c (cacosh, -0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2875     TEST_c_c (cacosh, -0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2876     TEST_c_c (cacosh, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2877     TEST_c_c (cacosh, -1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 3.141592653589793238462643383279502884197L),
2878     TEST_c_c (cacosh, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2879     TEST_c_c (cacosh, -1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -3.141592653589793238462643383279502884197L),
2880     TEST_c_c (cacosh, 0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2881     TEST_c_c (cacosh, 0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2882     TEST_c_c (cacosh, -0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2883     TEST_c_c (cacosh, -0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2884     TEST_c_c (cacosh, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2885     TEST_c_c (cacosh, -1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 3.141592653589793238462643383279502884197L),
2886     TEST_c_c (cacosh, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2887     TEST_c_c (cacosh, -1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -3.141592653589793238462643383279502884197L),
2888 #endif
2889     TEST_c_c (cacosh, 0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796242501204621739026081991856762292L),
2890     TEST_c_c (cacosh, 0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796242501204621739026081991856762292L),
2891     TEST_c_c (cacosh, -0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796411088588616723617301287646121905L),
2892     TEST_c_c (cacosh, -0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796411088588616723617301287646121905L),
2893     TEST_c_c (cacosh, 0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 2.222118384408546368406374049167636760903e-4L),
2894     TEST_c_c (cacosh, -0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 3.141370441751352383825802745874586120521L),
2895     TEST_c_c (cacosh, 0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -2.222118384408546368406374049167636760903e-4L),
2896     TEST_c_c (cacosh, -0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -3.141370441751352383825802745874586120521L),
2897     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442097L),
2898     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442097L),
2899     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442101L),
2900     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442101L),
2901     TEST_c_c (cacosh, 0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 5.830451806317544230969669308596361881467e-36L),
2902     TEST_c_c (cacosh, -0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502878367L),
2903     TEST_c_c (cacosh, 0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -5.830451806317544230969669308596361881467e-36L),
2904     TEST_c_c (cacosh, -0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502878367L),
2905     TEST_c_c (cacosh, 0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2906     TEST_c_c (cacosh, 0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2907     TEST_c_c (cacosh, -0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2908     TEST_c_c (cacosh, -0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2909     TEST_c_c (cacosh, 0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 0.0L),
2910     TEST_c_c (cacosh, -0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502884197L),
2911     TEST_c_c (cacosh, 0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -0.0L),
2912     TEST_c_c (cacosh, -0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502884197L),
2913 #ifndef TEST_FLOAT
2914     TEST_c_c (cacosh, 0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896462222075823262262934288L),
2915     TEST_c_c (cacosh, 0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896462222075823262262934288L),
2916     TEST_c_c (cacosh, -0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896776240567560017239949909L),
2917     TEST_c_c (cacosh, -0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896776240567560017239949909L),
2918     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 9.590301705980041385828904092662391018164e-9L),
2919     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 3.141592643999491532482601997450598791535L),
2920     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -9.590301705980041385828904092662391018164e-9L),
2921     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -3.141592643999491532482601997450598791535L),
2922     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2923     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2924     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2925     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2926     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2927     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2928     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2929     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2930     TEST_c_c (cacosh, 0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2931     TEST_c_c (cacosh, 0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2932     TEST_c_c (cacosh, -0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2933     TEST_c_c (cacosh, -0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2934     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 0.0L),
2935     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2936     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -0.0L),
2937     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2938 #endif
2939 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2940     TEST_c_c (cacosh, 0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619154657020805582738031L),
2941     TEST_c_c (cacosh, 0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619154657020805582738031L),
2942     TEST_c_c (cacosh, -0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619307986362473920146166L),
2943     TEST_c_c (cacosh, -0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619307986362473920146166L),
2944     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 2.119177303101063432592523199680782317447e-10L),
2945     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 3.141592653377875508152537040020250564229L),
2946     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -2.119177303101063432592523199680782317447e-10L),
2947     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -3.141592653377875508152537040020250564229L),
2948 # if LDBL_MIN_EXP <= -16381
2949     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2950     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2951     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2952     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2953     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 1.748608650034385653922359120438227480943e-4923L),
2954     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2955     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -1.748608650034385653922359120438227480943e-4923L),
2956     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2957 # endif
2958     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2959     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2960     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2961     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2962     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 0.0L),
2963     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2964     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -0.0L),
2965     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2966 #endif
2967 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2968     TEST_c_c (cacosh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639742726335L),
2969     TEST_c_c (cacosh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639742726335L),
2970     TEST_c_c (cacosh, -0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639760157863L),
2971     TEST_c_c (cacosh, -0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639760157863L),
2972     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 5.394221422390606848017034778914096659726e-17L),
2973     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 3.141592653589793184520429159373434404027L),
2974     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -5.394221422390606848017034778914096659726e-17L),
2975     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -3.141592653589793184520429159373434404027L),
2976     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2977     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2978     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2979     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2980     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2981     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2982     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2983     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2984     TEST_c_c (cacosh, 0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2985     TEST_c_c (cacosh, 0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2986     TEST_c_c (cacosh, -0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2987     TEST_c_c (cacosh, -0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2988     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 0.0L),
2989     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2990     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -0.0L),
2991     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2992 #endif
2993 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2994     TEST_c_c (cacosh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751374007L),
2995     TEST_c_c (cacosh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751374007L),
2996     TEST_c_c (cacosh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751510190L),
2997     TEST_c_c (cacosh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751510190L),
2998     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 4.767863183742677481693563511435642755521e-18L),
2999     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 3.141592653589793233694780199536825402504L),
3000     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -4.767863183742677481693563511435642755521e-18L),
3001     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -3.141592653589793233694780199536825402504L),
3002     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
3003     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
3004     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
3005     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
3006     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 4.148847925325683229178506116378864361396e-4916L),
3007     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
3008     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -4.148847925325683229178506116378864361396e-4916L),
3009     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
3010     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
3011     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
3012     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
3013     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
3014     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 0.0L),
3015     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
3016     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -0.0L),
3017     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
3018 #endif
3019     TEST_c_c (cacosh, 0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796242501197085295336701632142060969L),
3020     TEST_c_c (cacosh, 0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796242501197085295336701632142060969L),
3021     TEST_c_c (cacosh, -0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796411088596153167306681647360823228L),
3022     TEST_c_c (cacosh, -0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796411088596153167306681647360823228L),
3023     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 4.391863861910487109445187743978204002614e-4L),
3024     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 3.141153467203602189751698864505105063797L),
3025     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -4.391863861910487109445187743978204002614e-4L),
3026     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -3.141153467203602189751698864505105063797L),
3027     TEST_c_c (cacosh, 0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442097L),
3028     TEST_c_c (cacosh, 0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442097L),
3029     TEST_c_c (cacosh, -0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442101L),
3030     TEST_c_c (cacosh, -0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442101L),
3031     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.452669847162035876032494826387364972849e-4L),
3032     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.141247386605077034875040133796864147700L),
3033     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.452669847162035876032494826387364972849e-4L),
3034     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.141247386605077034875040133796864147700L),
3035     TEST_c_c (cacosh, 0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
3036     TEST_c_c (cacosh, 0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
3037     TEST_c_c (cacosh, -0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
3038     TEST_c_c (cacosh, -0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
3039     TEST_c_c (cacosh, 0x0.ffffffp0L, 0.0L, 0.0L, 3.452669847162035876032494826387364972849e-4L),
3040     TEST_c_c (cacosh, -0x0.ffffffp0L, 0.0L, 0.0L, 3.141247386605077034875040133796864147700L),
3041     TEST_c_c (cacosh, 0x0.ffffffp0L, -0.0L, 0.0L, -3.452669847162035876032494826387364972849e-4L),
3042     TEST_c_c (cacosh, -0x0.ffffffp0L, -0.0L, 0.0L, -3.141247386605077034875040133796864147700L),
3043     TEST_c_c (cacosh, 0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796220170866625230343643673321150378L),
3044     TEST_c_c (cacosh, 0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796220170866625230343643673321150378L),
3045     TEST_c_c (cacosh, -0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796433418926613232299739606181733819L),
3046     TEST_c_c (cacosh, -0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796433418926613232299739606181733819L),
3047     TEST_c_c (cacosh, 0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 1.047197551196603215914744618665204532273L),
3048     TEST_c_c (cacosh, -0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 2.094395102393190022547898764614298351924L),
3049     TEST_c_c (cacosh, 0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -1.047197551196603215914744618665204532273L),
3050     TEST_c_c (cacosh, -0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -2.094395102393190022547898764614298351924L),
3051     TEST_c_c (cacosh, 0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442096L),
3052     TEST_c_c (cacosh, 0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442096L),
3053     TEST_c_c (cacosh, -0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442101L),
3054     TEST_c_c (cacosh, -0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442101L),
3055     TEST_c_c (cacosh, 0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
3056     TEST_c_c (cacosh, -0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
3057     TEST_c_c (cacosh, 0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
3058     TEST_c_c (cacosh, -0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
3059     TEST_c_c (cacosh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796207585607068450636380271254316214L),
3060     TEST_c_c (cacosh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796207585607068450636380271254316214L),
3061     TEST_c_c (cacosh, -0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796446004186170012007003008248567984L),
3062     TEST_c_c (cacosh, -0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796446004186170012007003008248567984L),
3063     TEST_c_c (cacosh, 0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442096L),
3064     TEST_c_c (cacosh, 0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442096L),
3065     TEST_c_c (cacosh, -0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442101L),
3066     TEST_c_c (cacosh, -0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442101L),
3067     TEST_c_c (cacosh, 0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
3068     TEST_c_c (cacosh, -0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
3069     TEST_c_c (cacosh, 0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
3070     TEST_c_c (cacosh, -0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
3071     TEST_c_c (cacosh, 0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
3072     TEST_c_c (cacosh, 0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
3073     TEST_c_c (cacosh, -0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
3074     TEST_c_c (cacosh, -0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
3075     TEST_c_c (cacosh, 0x1p-23L, 0.0L, 0.0L, 1.570796207585607068449789347324000006847L),
3076     TEST_c_c (cacosh, -0x1p-23L, 0.0L, 0.0L, 1.570796446004186170012854035955502877351L),
3077     TEST_c_c (cacosh, 0x1p-23L, -0.0L, 0.0L, -1.570796207585607068449789347324000006847L),
3078     TEST_c_c (cacosh, -0x1p-23L, -0.0L, 0.0L, -1.570796446004186170012854035955502877351L),
3079     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
3080     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
3081     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
3082     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
3083 #ifndef TEST_FLOAT
3084     TEST_c_c (cacosh, 0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896462222075823262236786996L),
3085     TEST_c_c (cacosh, 0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896462222075823262236786996L),
3086     TEST_c_c (cacosh, -0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896776240567560017266097201L),
3087     TEST_c_c (cacosh, -0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896776240567560017266097201L),
3088     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 1.895456983915074112227925127005564372844e-8L),
3089     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 3.141592634635223399311902261000251614142L),
3090     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -1.895456983915074112227925127005564372844e-8L),
3091     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -3.141592634635223399311902261000251614142L),
3092     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
3093     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
3094     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
3095     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
3096     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3097     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3098     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3099     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3100     TEST_c_c (cacosh, 0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
3101     TEST_c_c (cacosh, 0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
3102     TEST_c_c (cacosh, -0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
3103     TEST_c_c (cacosh, -0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
3104     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0.0L, 0.0L, 1.490116119384765638786343542550461592240e-8L),
3105     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0.0L, 0.0L, 3.141592638688632044614986995416067458693L),
3106     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0.0L, 0.0L, -1.490116119384765638786343542550461592240e-8L),
3107     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0.0L, 0.0L, -3.141592638688632044614986995416067458693L),
3108 #endif
3109     TEST_c_c (cacosh, 0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896420628589431857911675917L),
3110     TEST_c_c (cacosh, 0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896420628589431857911675917L),
3111     TEST_c_c (cacosh, -0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896817834053951421591208280L),
3112     TEST_c_c (cacosh, -0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896817834053951421591208280L),
3113     TEST_c_c (cacosh, 0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 1.047197551196597746154214461093186605110L),
3114     TEST_c_c (cacosh, -0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 2.094395102393195492308428922186316279087L),
3115     TEST_c_c (cacosh, 0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -1.047197551196597746154214461093186605110L),
3116     TEST_c_c (cacosh, -0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -2.094395102393195492308428922186316279087L),
3117 #ifndef TEST_FLOAT
3118     TEST_c_c (cacosh, 0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3119     TEST_c_c (cacosh, 0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3120     TEST_c_c (cacosh, -0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3121     TEST_c_c (cacosh, -0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3122     TEST_c_c (cacosh, 0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
3123     TEST_c_c (cacosh, -0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
3124     TEST_c_c (cacosh, 0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
3125     TEST_c_c (cacosh, -0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
3126 #endif
3127     TEST_c_c (cacosh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896397186716766608443357372L),
3128     TEST_c_c (cacosh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896397186716766608443357372L),
3129     TEST_c_c (cacosh, -0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896841275926616671059526825L),
3130     TEST_c_c (cacosh, -0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896841275926616671059526825L),
3131 #ifndef TEST_FLOAT
3132     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3133     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3134     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3135     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3136     TEST_c_c (cacosh, 0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
3137     TEST_c_c (cacosh, -0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
3138     TEST_c_c (cacosh, 0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
3139     TEST_c_c (cacosh, -0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
3140 #endif
3141     TEST_c_c (cacosh, 0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3142     TEST_c_c (cacosh, 0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3143     TEST_c_c (cacosh, -0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3144     TEST_c_c (cacosh, -0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3145     TEST_c_c (cacosh, 0x1p-52L, 0.0L, 0.0L, 1.570796326794896397186716766608443357372L),
3146     TEST_c_c (cacosh, -0x1p-52L, 0.0L, 0.0L, 1.570796326794896841275926616671059526825L),
3147     TEST_c_c (cacosh, 0x1p-52L, -0.0L, 0.0L, -1.570796326794896397186716766608443357372L),
3148     TEST_c_c (cacosh, -0x1p-52L, -0.0L, 0.0L, -1.570796326794896841275926616671059526825L),
3149 #ifndef TEST_FLOAT
3150     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3151     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3152     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3153     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3154 #endif
3155 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3156     TEST_c_c (cacosh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619154657020805582738025L),
3157     TEST_c_c (cacosh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619154657020805582738025L),
3158     TEST_c_c (cacosh, -0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619307986362473920146173L),
3159     TEST_c_c (cacosh, -0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619307986362473920146173L),
3160     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 4.188407771167967636741951941902992986043e-10L),
3161     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 3.141592653170952461345846619605307690007L),
3162     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -4.188407771167967636741951941902992986043e-10L),
3163     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -3.141592653170952461345846619605307690007L),
3164 # if LDBL_MIN_EXP <= -16381
3165     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3166     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3167     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3168     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3169     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.292722539913596233371825532007990724506e-10L),
3170     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.141592653260520984471283759942320330996L),
3171     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.292722539913596233371825532007990724506e-10L),
3172     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.141592653260520984471283759942320330996L),
3173 # endif
3174     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3175     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3176     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3177     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3178     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.292722539913596233371825532007990724506e-10L),
3179     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.141592653260520984471283759942320330996L),
3180     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.292722539913596233371825532007990724506e-10L),
3181     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.141592653260520984471283759942320330996L),
3182 #endif
3183     TEST_c_c (cacosh, 0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619134347701278529840650L),
3184     TEST_c_c (cacosh, 0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619134347701278529840650L),
3185     TEST_c_c (cacosh, -0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619328295682000973043547L),
3186     TEST_c_c (cacosh, -0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619328295682000973043547L),
3187     TEST_c_c (cacosh, 0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 1.047197551196597746154214461093167628070L),
3188     TEST_c_c (cacosh, -0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 2.094395102393195492308428922186335256127L),
3189     TEST_c_c (cacosh, 0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -1.047197551196597746154214461093167628070L),
3190     TEST_c_c (cacosh, -0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -2.094395102393195492308428922186335256127L),
3191 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3192     TEST_c_c (cacosh, 0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3193     TEST_c_c (cacosh, 0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3194     TEST_c_c (cacosh, -0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3195     TEST_c_c (cacosh, -0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3196     TEST_c_c (cacosh, 0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
3197     TEST_c_c (cacosh, -0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
3198     TEST_c_c (cacosh, 0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
3199     TEST_c_c (cacosh, -0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
3200 #endif
3201     TEST_c_c (cacosh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619122901474391200998698L),
3202     TEST_c_c (cacosh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619122901474391200998698L),
3203     TEST_c_c (cacosh, -0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619339741908888301885499L),
3204     TEST_c_c (cacosh, -0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619339741908888301885499L),
3205 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3206     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3207     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3208     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3209     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3210     TEST_c_c (cacosh, 0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
3211     TEST_c_c (cacosh, -0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
3212     TEST_c_c (cacosh, 0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
3213     TEST_c_c (cacosh, -0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
3214 #endif
3215     TEST_c_c (cacosh, 0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3216     TEST_c_c (cacosh, 0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3217     TEST_c_c (cacosh, -0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3218     TEST_c_c (cacosh, -0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3219     TEST_c_c (cacosh, 0x1p-63L, 0.0L, 0.0L, 1.570796326794896619122901474391200998698L),
3220     TEST_c_c (cacosh, -0x1p-63L, 0.0L, 0.0L, 1.570796326794896619339741908888301885499L),
3221     TEST_c_c (cacosh, 0x1p-63L, -0.0L, 0.0L, -1.570796326794896619122901474391200998698L),
3222     TEST_c_c (cacosh, -0x1p-63L, -0.0L, 0.0L, -1.570796326794896619339741908888301885499L),
3223 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3224     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3225     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3226     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3227     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3228 #endif
3229 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3230     TEST_c_c (cacosh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639734010571L),
3231     TEST_c_c (cacosh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639734010571L),
3232     TEST_c_c (cacosh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639768873627L),
3233     TEST_c_c (cacosh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639768873627L),
3234     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 1.997188458999618357060632049675702684031e-16L),
3235     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 3.141592653589793038743797483317667178134L),
3236     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -1.997188458999618357060632049675702684031e-16L),
3237     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -3.141592653589793038743797483317667178134L),
3238     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3239     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3240     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3241     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3242     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3243     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3244     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3245     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3246     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3247     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3248     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3249     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3250     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 1.570092458683775059393382371963565104164e-16L),
3251     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 3.141592653589793081453397514901996944859L),
3252     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -1.570092458683775059393382371963565104164e-16L),
3253     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -3.141592653589793081453397514901996944859L),
3254 #endif
3255     TEST_c_c (cacosh, 0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639729392766L),
3256     TEST_c_c (cacosh, 0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639729392766L),
3257     TEST_c_c (cacosh, -0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639773491431L),
3258     TEST_c_c (cacosh, -0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639773491431L),
3259     TEST_c_c (cacosh, 0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 1.047197551196597746154214461093167628066L),
3260     TEST_c_c (cacosh, -0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 2.094395102393195492308428922186335256131L),
3261     TEST_c_c (cacosh, 0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -1.047197551196597746154214461093167628066L),
3262     TEST_c_c (cacosh, -0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -2.094395102393195492308428922186335256131L),
3263     TEST_c_c (cacosh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639726790195L),
3264     TEST_c_c (cacosh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639726790195L),
3265     TEST_c_c (cacosh, -0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639776094002L),
3266     TEST_c_c (cacosh, -0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639776094002L),
3267 #ifndef TEST_FLOAT
3268     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3269     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3270     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3271     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3272     TEST_c_c (cacosh, 0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3273     TEST_c_c (cacosh, -0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3274     TEST_c_c (cacosh, 0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3275     TEST_c_c (cacosh, -0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3276 #endif
3277     TEST_c_c (cacosh, 0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3278     TEST_c_c (cacosh, 0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3279     TEST_c_c (cacosh, -0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3280     TEST_c_c (cacosh, -0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3281     TEST_c_c (cacosh, 0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639726790195L),
3282     TEST_c_c (cacosh, -0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639776094002L),
3283     TEST_c_c (cacosh, 0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639726790195L),
3284     TEST_c_c (cacosh, -0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639776094002L),
3285 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3286     TEST_c_c (cacosh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751305915L),
3287     TEST_c_c (cacosh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751305915L),
3288     TEST_c_c (cacosh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751578282L),
3289     TEST_c_c (cacosh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751578282L),
3290     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 1.765281878332676474347460257221369818872e-17L),
3291     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 3.141592653589793220809824599952738140723L),
3292     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -1.765281878332676474347460257221369818872e-17L),
3293     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -3.141592653589793220809824599952738140723L),
3294     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3295     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3296     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3297     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3298     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 1.387778780781445675529539585113525401762e-17L),
3299     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 3.141592653589793224584855575465046128902L),
3300     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -1.387778780781445675529539585113525401762e-17L),
3301     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -3.141592653589793224584855575465046128902L),
3302     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3303     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3304     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3305     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3306     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 1.387778780781445675529539585113525401762e-17L),
3307     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 3.141592653589793224584855575465046128902L),
3308     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -1.387778780781445675529539585113525401762e-17L),
3309     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -3.141592653589793224584855575465046128902L),
3310 #endif
3311     TEST_c_c (cacosh, 0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751269838L),
3312     TEST_c_c (cacosh, 0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751269838L),
3313     TEST_c_c (cacosh, -0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751614359L),
3314     TEST_c_c (cacosh, -0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751614359L),
3315     TEST_c_c (cacosh, 0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 1.047197551196597746154214461093167628066L),
3316     TEST_c_c (cacosh, -0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 2.094395102393195492308428922186335256131L),
3317     TEST_c_c (cacosh, 0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -1.047197551196597746154214461093167628066L),
3318     TEST_c_c (cacosh, -0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -2.094395102393195492308428922186335256131L),
3319     TEST_c_c (cacosh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751249506L),
3320     TEST_c_c (cacosh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751249506L),
3321     TEST_c_c (cacosh, -0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751634692L),
3322     TEST_c_c (cacosh, -0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751634692L),
3323 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3324     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3325     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3326     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3327     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3328     TEST_c_c (cacosh, 0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3329     TEST_c_c (cacosh, -0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3330     TEST_c_c (cacosh, 0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3331     TEST_c_c (cacosh, -0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3332 #endif
3333     TEST_c_c (cacosh, 0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3334     TEST_c_c (cacosh, 0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3335     TEST_c_c (cacosh, -0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3336     TEST_c_c (cacosh, -0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3337     TEST_c_c (cacosh, 0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751249506L),
3338     TEST_c_c (cacosh, -0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751634692L),
3339     TEST_c_c (cacosh, 0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751249506L),
3340     TEST_c_c (cacosh, -0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751634692L),
3341
3342     TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L),
3343     TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L),
3344   };
3345
3346 static void
3347 cacosh_test (void)
3348 {
3349   START (cacosh);
3350   RUN_TEST_LOOP_c_c (cacosh, cacosh_test_data, );
3351   END_COMPLEX;
3352 }
3353
3354
3355 static const struct test_c_f_data carg_test_data[] =
3356   {
3357     /* carg (x + iy) is specified as atan2 (y, x) */
3358
3359     /* carg (x + i 0) == 0 for x > 0.  */
3360     TEST_c_f (carg, 2.0, 0, 0),
3361     /* carg (x - i 0) == -0 for x > 0.  */
3362     TEST_c_f (carg, 2.0, minus_zero, minus_zero),
3363
3364     TEST_c_f (carg, 0, 0, 0),
3365     TEST_c_f (carg, 0, minus_zero, minus_zero),
3366
3367     /* carg (x + i 0) == +pi for x < 0.  */
3368     TEST_c_f (carg, -2.0, 0, M_PIl),
3369
3370     /* carg (x - i 0) == -pi for x < 0.  */
3371     TEST_c_f (carg, -2.0, minus_zero, -M_PIl),
3372
3373     TEST_c_f (carg, minus_zero, 0, M_PIl),
3374     TEST_c_f (carg, minus_zero, minus_zero, -M_PIl),
3375
3376     /* carg (+0 + i y) == pi/2 for y > 0.  */
3377     TEST_c_f (carg, 0, 2.0, M_PI_2l),
3378
3379     /* carg (-0 + i y) == pi/2 for y > 0.  */
3380     TEST_c_f (carg, minus_zero, 2.0, M_PI_2l),
3381
3382     /* carg (+0 + i y) == -pi/2 for y < 0.  */
3383     TEST_c_f (carg, 0, -2.0, -M_PI_2l),
3384
3385     /* carg (-0 + i y) == -pi/2 for y < 0.  */
3386     TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l),
3387
3388     /* carg (inf + i y) == +0 for finite y > 0.  */
3389     TEST_c_f (carg, plus_infty, 2.0, 0),
3390
3391     /* carg (inf + i y) == -0 for finite y < 0.  */
3392     TEST_c_f (carg, plus_infty, -2.0, minus_zero),
3393
3394     /* carg(x + i inf) == pi/2 for finite x.  */
3395     TEST_c_f (carg, 10.0, plus_infty, M_PI_2l),
3396
3397     /* carg(x - i inf) == -pi/2 for finite x.  */
3398     TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l),
3399
3400     /* carg (-inf + i y) == +pi for finite y > 0.  */
3401     TEST_c_f (carg, minus_infty, 10.0, M_PIl),
3402
3403     /* carg (-inf + i y) == -pi for finite y < 0.  */
3404     TEST_c_f (carg, minus_infty, -10.0, -M_PIl),
3405
3406     TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l),
3407
3408     TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l),
3409
3410     TEST_c_f (carg, minus_infty, plus_infty, M_PI_34l),
3411
3412     TEST_c_f (carg, minus_infty, minus_infty, -M_PI_34l),
3413
3414     TEST_c_f (carg, qnan_value, qnan_value, qnan_value),
3415   };
3416
3417 static void
3418 carg_test (void)
3419 {
3420   START (carg);
3421   RUN_TEST_LOOP_c_f (carg, carg_test_data, );
3422   END;
3423 }
3424
3425 static const struct test_c_c_data casin_test_data[] =
3426   {
3427     TEST_c_c (casin, 0, 0, 0.0, 0.0),
3428     TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0),
3429     TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero),
3430     TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero),
3431
3432     TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty),
3433     TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty),
3434     TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty),
3435     TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty),
3436
3437     TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty),
3438     TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty),
3439     TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty),
3440     TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty),
3441     TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty),
3442     TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty),
3443     TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty),
3444     TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty),
3445
3446     TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty),
3447     TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty),
3448     TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty),
3449     TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty),
3450
3451     TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty),
3452     TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty),
3453     TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty),
3454     TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty),
3455
3456     TEST_c_c (casin, qnan_value, plus_infty, qnan_value, plus_infty),
3457     TEST_c_c (casin, qnan_value, minus_infty, qnan_value, minus_infty),
3458
3459     TEST_c_c (casin, 0.0, qnan_value, 0.0, qnan_value),
3460     TEST_c_c (casin, minus_zero, qnan_value, minus_zero, qnan_value),
3461
3462     TEST_c_c (casin, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3463     TEST_c_c (casin, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3464
3465     TEST_c_c (casin, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3466     TEST_c_c (casin, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3467
3468     TEST_c_c (casin, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3469     TEST_c_c (casin, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3470
3471     TEST_c_c (casin, qnan_value, qnan_value, qnan_value, qnan_value),
3472
3473     TEST_c_c (casin, plus_zero, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L),
3474     TEST_c_c (casin, minus_zero, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L),
3475     TEST_c_c (casin, plus_zero, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L),
3476     TEST_c_c (casin, minus_zero, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L),
3477     TEST_c_c (casin, plus_zero, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L),
3478     TEST_c_c (casin, minus_zero, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L),
3479     TEST_c_c (casin, plus_zero, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L),
3480     TEST_c_c (casin, minus_zero, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L),
3481     TEST_c_c (casin, plus_zero, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L),
3482     TEST_c_c (casin, minus_zero, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L),
3483     TEST_c_c (casin, plus_zero, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L),
3484     TEST_c_c (casin, minus_zero, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L),
3485
3486     TEST_c_c (casin, -1.5L, plus_zero, -M_PI_2l, 0.9624236501192068949955178268487368462704L),
3487     TEST_c_c (casin, -1.5L, minus_zero, -M_PI_2l, -0.9624236501192068949955178268487368462704L),
3488     TEST_c_c (casin, -1.0L, plus_zero, -M_PI_2l, plus_zero),
3489     TEST_c_c (casin, -1.0L, minus_zero, -M_PI_2l, minus_zero),
3490     TEST_c_c (casin, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L, plus_zero),
3491     TEST_c_c (casin, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L, minus_zero),
3492     TEST_c_c (casin, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L, plus_zero),
3493     TEST_c_c (casin, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L, minus_zero),
3494     TEST_c_c (casin, 1.0L, plus_zero, M_PI_2l, plus_zero),
3495     TEST_c_c (casin, 1.0L, minus_zero, M_PI_2l, minus_zero),
3496     TEST_c_c (casin, 1.5L, plus_zero, M_PI_2l, 0.9624236501192068949955178268487368462704L),
3497     TEST_c_c (casin, 1.5L, minus_zero, M_PI_2l, -0.9624236501192068949955178268487368462704L),
3498
3499     TEST_c_c (casin, 0x1p50L, 1.0L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3500     TEST_c_c (casin, 0x1p50L, -1.0L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3501     TEST_c_c (casin, -0x1p50L, 1.0L, -1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3502     TEST_c_c (casin, -0x1p50L, -1.0L, -1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3503     TEST_c_c (casin, 1.0L, 0x1p50L, 8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3504     TEST_c_c (casin, -1.0L, 0x1p50L, -8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3505     TEST_c_c (casin, 1.0L, -0x1p50L, 8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3506     TEST_c_c (casin, -1.0L, -0x1p50L, -8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3507 #ifndef TEST_FLOAT
3508     TEST_c_c (casin, 0x1p500L, 1.0L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3509     TEST_c_c (casin, 0x1p500L, -1.0L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3510     TEST_c_c (casin, -0x1p500L, 1.0L, -1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3511     TEST_c_c (casin, -0x1p500L, -1.0L, -1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3512     TEST_c_c (casin, 1.0L, 0x1p500L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3513     TEST_c_c (casin, -1.0L, 0x1p500L, -3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3514     TEST_c_c (casin, 1.0L, -0x1p500L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3515     TEST_c_c (casin, -1.0L, -0x1p500L, -3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3516 #endif
3517 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3518     TEST_c_c (casin, 0x1p5000L, 1.0L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3519     TEST_c_c (casin, 0x1p5000L, -1.0L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3520     TEST_c_c (casin, -0x1p5000L, 1.0L, -1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3521     TEST_c_c (casin, -0x1p5000L, -1.0L, -1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3522     TEST_c_c (casin, 1.0L, 0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3523     TEST_c_c (casin, -1.0L, 0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3524     TEST_c_c (casin, 1.0L, -0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3525     TEST_c_c (casin, -1.0L, -0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3526 #endif
3527
3528     TEST_c_c (casin, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, 8.973081118419833726837456344608533993585e1L),
3529 #ifndef TEST_FLOAT
3530     TEST_c_c (casin, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, 7.107906849659093345062145442726115449315e2L),
3531 #endif
3532 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3533     TEST_c_c (casin, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, 1.135753137836666928715489992987020363057e4L),
3534 #endif
3535
3536     TEST_c_c (casin, 0x1.fp-129L, 1.5L, 1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3537     TEST_c_c (casin, 0x1.fp-129L, -1.5L, 1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3538     TEST_c_c (casin, -0x1.fp-129L, 1.5L, -1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3539     TEST_c_c (casin, -0x1.fp-129L, -1.5L, -1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3540     TEST_c_c (casin, 1.5L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3541     TEST_c_c (casin, -1.5L, 0x1.fp-129L, -1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3542     TEST_c_c (casin, 1.5L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3543     TEST_c_c (casin, -1.5L, -0x1.fp-129L, -1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3544 #ifndef TEST_FLOAT
3545     TEST_c_c (casin, 0x1.fp-1025L, 1.5L, 2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3546     TEST_c_c (casin, 0x1.fp-1025L, -1.5L, 2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3547     TEST_c_c (casin, -0x1.fp-1025L, 1.5L, -2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3548     TEST_c_c (casin, -0x1.fp-1025L, -1.5L, -2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3549     TEST_c_c (casin, 1.5L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3550     TEST_c_c (casin, -1.5L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3551     TEST_c_c (casin, 1.5L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3552     TEST_c_c (casin, -1.5L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3553 #endif
3554 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3555     TEST_c_c (casin, 0x1.fp-16385L, 1.5L, 4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3556     TEST_c_c (casin, 0x1.fp-16385L, -1.5L, 4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3557     TEST_c_c (casin, -0x1.fp-16385L, 1.5L, -4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3558     TEST_c_c (casin, -0x1.fp-16385L, -1.5L, -4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3559     TEST_c_c (casin, 1.5L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3560     TEST_c_c (casin, -1.5L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3561     TEST_c_c (casin, 1.5L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3562     TEST_c_c (casin, -1.5L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3563 #endif
3564
3565     TEST_c_c (casin, 0.5L, 1.0L, 3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3566     TEST_c_c (casin, 0.5L, -1.0L, 3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3567     TEST_c_c (casin, -0.5L, 1.0L, -3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3568     TEST_c_c (casin, -0.5L, -1.0L, -3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3569     TEST_c_c (casin, 1.0L, 0.5L, 8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3570     TEST_c_c (casin, -1.0L, 0.5L, -8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3571     TEST_c_c (casin, 1.0L, -0.5L, 8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3572     TEST_c_c (casin, -1.0L, -0.5L, -8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3573     TEST_c_c (casin, 0.25L, 1.0L, 1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3574     TEST_c_c (casin, 0.25L, -1.0L, 1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3575     TEST_c_c (casin, -0.25L, 1.0L, -1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3576     TEST_c_c (casin, -0.25L, -1.0L, -1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3577     TEST_c_c (casin, 1.0L, 0.25L, 1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3578     TEST_c_c (casin, -1.0L, 0.25L, -1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3579     TEST_c_c (casin, 1.0L, -0.25L, 1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3580     TEST_c_c (casin, -1.0L, -0.25L, -1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3581     TEST_c_c (casin, 0x1.fp-10L, 1.0L, 1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3582     TEST_c_c (casin, 0x1.fp-10L, -1.0L, 1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3583     TEST_c_c (casin, -0x1.fp-10L, 1.0L, -1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3584     TEST_c_c (casin, -0x1.fp-10L, -1.0L, -1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3585     TEST_c_c (casin, 1.0L, 0x1.fp-10L, 1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3586     TEST_c_c (casin, -1.0L, 0x1.fp-10L, -1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3587     TEST_c_c (casin, 1.0L, -0x1.fp-10L, 1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3588     TEST_c_c (casin, -1.0L, -0x1.fp-10L, -1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3589     TEST_c_c (casin, 0x1.fp-30L, 1.0L, 1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3590     TEST_c_c (casin, 0x1.fp-30L, -1.0L, 1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3591     TEST_c_c (casin, -0x1.fp-30L, 1.0L, -1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3592     TEST_c_c (casin, -0x1.fp-30L, -1.0L, -1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3593     TEST_c_c (casin, 1.0L, 0x1.fp-30L, 1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3594     TEST_c_c (casin, -1.0L, 0x1.fp-30L, -1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3595     TEST_c_c (casin, 1.0L, -0x1.fp-30L, 1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3596     TEST_c_c (casin, -1.0L, -0x1.fp-30L, -1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3597     TEST_c_c (casin, 0x1.fp-100L, 1.0L, 1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3598     TEST_c_c (casin, 0x1.fp-100L, -1.0L, 1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3599     TEST_c_c (casin, -0x1.fp-100L, 1.0L, -1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3600     TEST_c_c (casin, -0x1.fp-100L, -1.0L, -1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3601     TEST_c_c (casin, 1.0L, 0x1.fp-100L, 1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3602     TEST_c_c (casin, -1.0L, 0x1.fp-100L, -1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3603     TEST_c_c (casin, 1.0L, -0x1.fp-100L, 1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3604     TEST_c_c (casin, -1.0L, -0x1.fp-100L, -1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3605     TEST_c_c (casin, 0x1.fp-129L, 1.0L, 2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3606     TEST_c_c (casin, 0x1.fp-129L, -1.0L, 2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3607     TEST_c_c (casin, -0x1.fp-129L, 1.0L, -2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3608     TEST_c_c (casin, -0x1.fp-129L, -1.0L, -2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3609     TEST_c_c (casin, 1.0L, 0x1.fp-129L, 1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3610     TEST_c_c (casin, -1.0L, 0x1.fp-129L, -1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3611     TEST_c_c (casin, 1.0L, -0x1.fp-129L, 1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3612     TEST_c_c (casin, -1.0L, -0x1.fp-129L, -1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3613 #ifndef TEST_FLOAT
3614     TEST_c_c (casin, 0x1.fp-1000L, 1.0L, 1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3615     TEST_c_c (casin, 0x1.fp-1000L, -1.0L, 1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3616     TEST_c_c (casin, -0x1.fp-1000L, 1.0L, -1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3617     TEST_c_c (casin, -0x1.fp-1000L, -1.0L, -1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3618     TEST_c_c (casin, 1.0L, 0x1.fp-1000L, 1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3619     TEST_c_c (casin, -1.0L, 0x1.fp-1000L, -1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3620     TEST_c_c (casin, 1.0L, -0x1.fp-1000L, 1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3621     TEST_c_c (casin, -1.0L, -0x1.fp-1000L, -1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3622     TEST_c_c (casin, 0x1.fp-1025L, 1.0L, 3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3623     TEST_c_c (casin, 0x1.fp-1025L, -1.0L, 3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3624     TEST_c_c (casin, -0x1.fp-1025L, 1.0L, -3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3625     TEST_c_c (casin, -0x1.fp-1025L, -1.0L, -3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3626     TEST_c_c (casin, 1.0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3627     TEST_c_c (casin, -1.0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3628     TEST_c_c (casin, 1.0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3629     TEST_c_c (casin, -1.0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3630 #endif
3631 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3632     TEST_c_c (casin, 0x1.fp-10000L, 1.0L, 6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3633     TEST_c_c (casin, 0x1.fp-10000L, -1.0L, 6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3634     TEST_c_c (casin, -0x1.fp-10000L, 1.0L, -6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3635     TEST_c_c (casin, -0x1.fp-10000L, -1.0L, -6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3636     TEST_c_c (casin, 1.0L, 0x1.fp-10000L, 1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3637     TEST_c_c (casin, -1.0L, 0x1.fp-10000L, -1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3638     TEST_c_c (casin, 1.0L, -0x1.fp-10000L, 1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3639     TEST_c_c (casin, -1.0L, -0x1.fp-10000L, -1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3640     TEST_c_c (casin, 0x1.fp-16385L, 1.0L, 5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3641     TEST_c_c (casin, 0x1.fp-16385L, -1.0L, 5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3642     TEST_c_c (casin, -0x1.fp-16385L, 1.0L, -5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3643     TEST_c_c (casin, -0x1.fp-16385L, -1.0L, -5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3644     TEST_c_c (casin, 1.0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3645     TEST_c_c (casin, -1.0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3646     TEST_c_c (casin, 1.0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3647     TEST_c_c (casin, -1.0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3648 #endif
3649
3650     TEST_c_c (casin, 0x1p-23L, 0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3651     TEST_c_c (casin, 0x1p-23L, -0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3652     TEST_c_c (casin, -0x1p-23L, 0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3653     TEST_c_c (casin, -0x1p-23L, -0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3654     TEST_c_c (casin, 0x1.000002p0L, 0x1p-23L, 1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3655     TEST_c_c (casin, -0x1.000002p0L, 0x1p-23L, -1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3656     TEST_c_c (casin, 0x1.000002p0L, -0x1p-23L, 1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3657     TEST_c_c (casin, -0x1.000002p0L, -0x1p-23L, -1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3658     TEST_c_c (casin, 0x1.fp-129L, 0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3659     TEST_c_c (casin, 0x1.fp-129L, -0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3660     TEST_c_c (casin, -0x1.fp-129L, 0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3661     TEST_c_c (casin, -0x1.fp-129L, -0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3662     TEST_c_c (casin, 0x1.000002p0L, 0x1.fp-129L, 1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3663     TEST_c_c (casin, -0x1.000002p0L, 0x1.fp-129L, -1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3664     TEST_c_c (casin, 0x1.000002p0L, -0x1.fp-129L, 1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3665     TEST_c_c (casin, -0x1.000002p0L, -0x1.fp-129L, -1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3666     TEST_c_c (casin, 0.0L, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L),
3667     TEST_c_c (casin, 0.0L, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L),
3668     TEST_c_c (casin, -0.0L, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L),
3669     TEST_c_c (casin, -0.0L, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L),
3670     TEST_c_c (casin, 0x1.000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3671     TEST_c_c (casin, -0x1.000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3672     TEST_c_c (casin, 0x1.000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3673     TEST_c_c (casin, -0x1.000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3674 #ifndef TEST_FLOAT
3675     TEST_c_c (casin, 0x1p-52L, 0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3676     TEST_c_c (casin, 0x1p-52L, -0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3677     TEST_c_c (casin, -0x1p-52L, 0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3678     TEST_c_c (casin, -0x1p-52L, -0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3679     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1p-52L, 1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3680     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1p-52L, -1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3681     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1p-52L, 1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3682     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1p-52L, -1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3683     TEST_c_c (casin, 0x1.fp-1025L, 0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3684     TEST_c_c (casin, 0x1.fp-1025L, -0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3685     TEST_c_c (casin, -0x1.fp-1025L, 0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3686     TEST_c_c (casin, -0x1.fp-1025L, -0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3687     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3688     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3689     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3690     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3691     TEST_c_c (casin, 0.0L, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L),
3692     TEST_c_c (casin, 0.0L, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L),
3693     TEST_c_c (casin, -0.0L, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L),
3694     TEST_c_c (casin, -0.0L, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L),
3695     TEST_c_c (casin, 0x1.0000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3696     TEST_c_c (casin, -0x1.0000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3697     TEST_c_c (casin, 0x1.0000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3698     TEST_c_c (casin, -0x1.0000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3699 #endif
3700 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3701     TEST_c_c (casin, 0x1p-63L, 0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3702     TEST_c_c (casin, 0x1p-63L, -0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3703     TEST_c_c (casin, -0x1p-63L, 0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3704     TEST_c_c (casin, -0x1p-63L, -0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3705     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1p-63L, 1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3706     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1p-63L, -1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3707     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1p-63L, 1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3708     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1p-63L, -1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3709 # if LDBL_MIN_EXP <= -16381
3710     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3711     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3712     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3713     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3714     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3715     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3716     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3717     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3718 # endif
3719     TEST_c_c (casin, 0.0L, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L),
3720     TEST_c_c (casin, 0.0L, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L),
3721     TEST_c_c (casin, -0.0L, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L),
3722     TEST_c_c (casin, -0.0L, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L),
3723     TEST_c_c (casin, 0x1.0000000000000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3724     TEST_c_c (casin, -0x1.0000000000000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3725     TEST_c_c (casin, 0x1.0000000000000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3726     TEST_c_c (casin, -0x1.0000000000000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3727 #endif
3728 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3729     TEST_c_c (casin, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3730     TEST_c_c (casin, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3731     TEST_c_c (casin, -0x1p-106L, 0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3732     TEST_c_c (casin, -0x1p-106L, -0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3733     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1p-106L, 1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3734     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1p-106L, -1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3735     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1p-106L, 1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3736     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1p-106L, -1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3737     TEST_c_c (casin, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3738     TEST_c_c (casin, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3739     TEST_c_c (casin, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3740     TEST_c_c (casin, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3741     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3742     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3743     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3744     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3745     TEST_c_c (casin, 0.0L, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L),
3746     TEST_c_c (casin, 0.0L, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L),
3747     TEST_c_c (casin, -0.0L, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L),
3748     TEST_c_c (casin, -0.0L, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L),
3749     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3750     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3751     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3752     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3753 #endif
3754 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3755     TEST_c_c (casin, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3756     TEST_c_c (casin, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3757     TEST_c_c (casin, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3758     TEST_c_c (casin, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3759     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3760     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3761     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3762     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3763     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3764     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3765     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3766     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3767     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3768     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3769     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3770     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3771     TEST_c_c (casin, 0.0L, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L),
3772     TEST_c_c (casin, 0.0L, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L),
3773     TEST_c_c (casin, -0.0L, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L),
3774     TEST_c_c (casin, -0.0L, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L),
3775     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3776     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3777     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3778     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3779 #endif
3780
3781     TEST_c_c (casin, 0x1p-23L, 0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3782     TEST_c_c (casin, 0x1p-23L, -0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3783     TEST_c_c (casin, -0x1p-23L, 0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3784     TEST_c_c (casin, -0x1p-23L, -0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3785     TEST_c_c (casin, 0x0.ffffffp0L, 0x1p-23L, 1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3786     TEST_c_c (casin, -0x0.ffffffp0L, 0x1p-23L, -1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3787     TEST_c_c (casin, 0x0.ffffffp0L, -0x1p-23L, 1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3788     TEST_c_c (casin, -0x0.ffffffp0L, -0x1p-23L, -1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3789     TEST_c_c (casin, 0x1.fp-129L, 0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3790     TEST_c_c (casin, 0x1.fp-129L, -0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3791     TEST_c_c (casin, -0x1.fp-129L, 0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3792     TEST_c_c (casin, -0x1.fp-129L, -0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3793     TEST_c_c (casin, 0x0.ffffffp0L, 0x1.fp-129L, 1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3794     TEST_c_c (casin, -0x0.ffffffp0L, 0x1.fp-129L, -1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3795     TEST_c_c (casin, 0x0.ffffffp0L, -0x1.fp-129L, 1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3796     TEST_c_c (casin, -0x0.ffffffp0L, -0x1.fp-129L, -1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3797     TEST_c_c (casin, 0.0L, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L),
3798     TEST_c_c (casin, 0.0L, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L),
3799     TEST_c_c (casin, -0.0L, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L),
3800     TEST_c_c (casin, -0.0L, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L),
3801     TEST_c_c (casin, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L, 0.0L),
3802     TEST_c_c (casin, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L, 0.0L),
3803     TEST_c_c (casin, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L, -0.0L),
3804     TEST_c_c (casin, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L, -0.0L),
3805     TEST_c_c (casin, 0x1p-23L, 0.5L, 1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3806     TEST_c_c (casin, 0x1p-23L, -0.5L, 1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3807     TEST_c_c (casin, -0x1p-23L, 0.5L, -1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3808     TEST_c_c (casin, -0x1p-23L, -0.5L, -1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3809     TEST_c_c (casin, 0.5L, 0x1p-23L, 5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3810     TEST_c_c (casin, -0.5L, 0x1p-23L, -5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3811     TEST_c_c (casin, 0.5L, -0x1p-23L, 5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3812     TEST_c_c (casin, -0.5L, -0x1p-23L, -5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3813     TEST_c_c (casin, 0x1.fp-129L, 0.5L, 2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3814     TEST_c_c (casin, 0x1.fp-129L, -0.5L, 2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3815     TEST_c_c (casin, -0x1.fp-129L, 0.5L, -2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3816     TEST_c_c (casin, -0x1.fp-129L, -0.5L, -2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3817     TEST_c_c (casin, 0.5L, 0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3818     TEST_c_c (casin, -0.5L, 0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3819     TEST_c_c (casin, 0.5L, -0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3820     TEST_c_c (casin, -0.5L, -0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3821     TEST_c_c (casin, 0x1p-23L, 0x1p-23L, 1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3822     TEST_c_c (casin, 0x1p-23L, -0x1p-23L, 1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3823     TEST_c_c (casin, -0x1p-23L, 0x1p-23L, -1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3824     TEST_c_c (casin, -0x1p-23L, -0x1p-23L, -1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3825     /* Bug 15319: underflow exception may be missing.  */
3826     TEST_c_c (casin, 0x1.fp-129L, 0x1p-23L, 2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3827     TEST_c_c (casin, 0x1.fp-129L, -0x1p-23L, 2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3828     TEST_c_c (casin, -0x1.fp-129L, 0x1p-23L, -2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3829     TEST_c_c (casin, -0x1.fp-129L, -0x1p-23L, -2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3830     TEST_c_c (casin, 0x1p-23L, 0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3831     TEST_c_c (casin, -0x1p-23L, 0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3832     TEST_c_c (casin, 0x1p-23L, -0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3833     TEST_c_c (casin, -0x1p-23L, -0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3834     TEST_c_c (casin, 0.0L, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L),
3835     TEST_c_c (casin, 0.0L, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L),
3836     TEST_c_c (casin, -0.0L, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L),
3837     TEST_c_c (casin, -0.0L, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L),
3838     TEST_c_c (casin, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L, 0.0L),
3839     TEST_c_c (casin, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L, 0.0L),
3840     TEST_c_c (casin, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L, -0.0L),
3841     TEST_c_c (casin, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L, -0.0L),
3842     TEST_c_c (casin, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3843     TEST_c_c (casin, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3844     TEST_c_c (casin, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3845     TEST_c_c (casin, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3846 #ifndef TEST_FLOAT
3847     TEST_c_c (casin, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3848     TEST_c_c (casin, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3849     TEST_c_c (casin, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3850     TEST_c_c (casin, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3851     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3852     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1p-52L, -1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3853     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3854     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1p-52L, -1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3855     TEST_c_c (casin, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3856     TEST_c_c (casin, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3857     TEST_c_c (casin, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3858     TEST_c_c (casin, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3859     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3860     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3861     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3862     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3863     TEST_c_c (casin, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L),
3864     TEST_c_c (casin, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L),
3865     TEST_c_c (casin, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L),
3866     TEST_c_c (casin, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L),
3867     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L, 0.0L),
3868     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L, 0.0L),
3869     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L, -0.0L),
3870     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L, -0.0L),
3871 #endif
3872     TEST_c_c (casin, 0x1p-52L, 0.5L, 1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3873     TEST_c_c (casin, 0x1p-52L, -0.5L, 1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3874     TEST_c_c (casin, -0x1p-52L, 0.5L, -1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3875     TEST_c_c (casin, -0x1p-52L, -0.5L, -1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3876     TEST_c_c (casin, 0.5L, 0x1p-52L, 5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3877     TEST_c_c (casin, -0.5L, 0x1p-52L, -5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3878     TEST_c_c (casin, 0.5L, -0x1p-52L, 5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3879     TEST_c_c (casin, -0.5L, -0x1p-52L, -5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3880 #ifndef TEST_FLOAT
3881     TEST_c_c (casin, 0x1.fp-1025L, 0.5L, 4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3882     TEST_c_c (casin, 0x1.fp-1025L, -0.5L, 4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3883     TEST_c_c (casin, -0x1.fp-1025L, 0.5L, -4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3884     TEST_c_c (casin, -0x1.fp-1025L, -0.5L, -4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3885     TEST_c_c (casin, 0.5L, 0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3886     TEST_c_c (casin, -0.5L, 0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3887     TEST_c_c (casin, 0.5L, -0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3888     TEST_c_c (casin, -0.5L, -0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3889 #endif
3890     TEST_c_c (casin, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3891     TEST_c_c (casin, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3892     TEST_c_c (casin, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3893     TEST_c_c (casin, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3894 #ifndef TEST_FLOAT
3895     /* Bug 15319: underflow exception may be missing.  */
3896     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3897     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3898     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3899     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3900     TEST_c_c (casin, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3901     TEST_c_c (casin, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3902     TEST_c_c (casin, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3903     TEST_c_c (casin, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3904 #endif
3905     TEST_c_c (casin, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L),
3906     TEST_c_c (casin, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L),
3907     TEST_c_c (casin, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L),
3908     TEST_c_c (casin, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L),
3909     TEST_c_c (casin, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L, 0.0L),
3910     TEST_c_c (casin, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L, 0.0L),
3911     TEST_c_c (casin, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L, -0.0L),
3912     TEST_c_c (casin, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L, -0.0L),
3913 #ifndef TEST_FLOAT
3914     TEST_c_c (casin, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3915     TEST_c_c (casin, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3916     TEST_c_c (casin, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3917     TEST_c_c (casin, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3918 #endif
3919 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3920     TEST_c_c (casin, 0x1p-63L, 0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3921     TEST_c_c (casin, 0x1p-63L, -0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3922     TEST_c_c (casin, -0x1p-63L, 0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3923     TEST_c_c (casin, -0x1p-63L, -0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3924     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1p-63L, 1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3925     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1p-63L, -1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3926     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1p-63L, 1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3927     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1p-63L, -1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3928 # if LDBL_MIN_EXP <= -16381
3929     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3930     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3931     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3932     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3933     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3934     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3935     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3936     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3937 # endif
3938     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L),
3939     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L),
3940     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L),
3941     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L),
3942     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L, 0.0L),
3943     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L, 0.0L),
3944     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L, -0.0L),
3945     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L, -0.0L),
3946 #endif
3947     TEST_c_c (casin, 0x1p-63L, 0.5L, 9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3948     TEST_c_c (casin, 0x1p-63L, -0.5L, 9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3949     TEST_c_c (casin, -0x1p-63L, 0.5L, -9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3950     TEST_c_c (casin, -0x1p-63L, -0.5L, -9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3951     TEST_c_c (casin, 0.5L, 0x1p-63L, 5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3952     TEST_c_c (casin, -0.5L, 0x1p-63L, -5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3953     TEST_c_c (casin, 0.5L, -0x1p-63L, 5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3954     TEST_c_c (casin, -0.5L, -0x1p-63L, -5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3955 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3956     TEST_c_c (casin, 0x1.fp-16385L, 0.5L, 7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3957     TEST_c_c (casin, 0x1.fp-16385L, -0.5L, 7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3958     TEST_c_c (casin, -0x1.fp-16385L, 0.5L, -7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3959     TEST_c_c (casin, -0x1.fp-16385L, -0.5L, -7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3960     TEST_c_c (casin, 0.5L, 0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3961     TEST_c_c (casin, -0.5L, 0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3962     TEST_c_c (casin, 0.5L, -0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3963     TEST_c_c (casin, -0.5L, -0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3964 #endif
3965     TEST_c_c (casin, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3966     TEST_c_c (casin, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3967     TEST_c_c (casin, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3968     TEST_c_c (casin, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3969 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3970     /* Bug 15319: underflow exception may be missing.  */
3971     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION_OK),
3972     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION_OK),
3973     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION_OK),
3974     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION_OK),
3975     TEST_c_c (casin, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3976     TEST_c_c (casin, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3977     TEST_c_c (casin, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3978     TEST_c_c (casin, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3979 #endif
3980     TEST_c_c (casin, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L),
3981     TEST_c_c (casin, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L),
3982     TEST_c_c (casin, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L),
3983     TEST_c_c (casin, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L),
3984     TEST_c_c (casin, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L, 0.0L),
3985     TEST_c_c (casin, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L, 0.0L),
3986     TEST_c_c (casin, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L, -0.0L),
3987     TEST_c_c (casin, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L, -0.0L),
3988 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3989     TEST_c_c (casin, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3990     TEST_c_c (casin, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3991     TEST_c_c (casin, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3992     TEST_c_c (casin, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3993 #endif
3994 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3995     TEST_c_c (casin, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3996     TEST_c_c (casin, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3997     TEST_c_c (casin, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3998     TEST_c_c (casin, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3999     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
4000     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
4001     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
4002     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
4003     TEST_c_c (casin, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4004     TEST_c_c (casin, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4005     TEST_c_c (casin, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4006     TEST_c_c (casin, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4007     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4008     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4009     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4010     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4011     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L),
4012     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L),
4013     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L),
4014     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L),
4015     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L, 0.0L),
4016     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L, 0.0L),
4017     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L, -0.0L),
4018     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L, -0.0L),
4019 #endif
4020     TEST_c_c (casin, 0x1p-105L, 0.5L, 2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
4021     TEST_c_c (casin, 0x1p-105L, -0.5L, 2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
4022     TEST_c_c (casin, -0x1p-105L, 0.5L, -2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
4023     TEST_c_c (casin, -0x1p-105L, -0.5L, -2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
4024     TEST_c_c (casin, 0.5L, 0x1p-105L, 5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
4025     TEST_c_c (casin, -0.5L, 0x1p-105L, -5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
4026     TEST_c_c (casin, 0.5L, -0x1p-105L, 5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
4027     TEST_c_c (casin, -0.5L, -0x1p-105L, -5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
4028     TEST_c_c (casin, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4029     TEST_c_c (casin, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4030     TEST_c_c (casin, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4031     TEST_c_c (casin, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4032 #ifndef TEST_FLOAT
4033     /* Bug 15319: underflow exception may be missing.  */
4034     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4035     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4036     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4037     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4038     TEST_c_c (casin, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4039     TEST_c_c (casin, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4040     TEST_c_c (casin, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4041     TEST_c_c (casin, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4042 #endif
4043     TEST_c_c (casin, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
4044     TEST_c_c (casin, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
4045     TEST_c_c (casin, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
4046     TEST_c_c (casin, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
4047     TEST_c_c (casin, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
4048     TEST_c_c (casin, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
4049     TEST_c_c (casin, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
4050     TEST_c_c (casin, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
4051 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4052     TEST_c_c (casin, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
4053     TEST_c_c (casin, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
4054     TEST_c_c (casin, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
4055     TEST_c_c (casin, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
4056     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
4057     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
4058     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
4059     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
4060     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
4061     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
4062     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
4063     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
4064     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
4065     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
4066     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
4067     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
4068     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L),
4069     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L),
4070     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L),
4071     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L),
4072     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L, 0.0L),
4073     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L, 0.0L),
4074     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L, -0.0L),
4075     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L, -0.0L),
4076 #endif
4077     TEST_c_c (casin, 0x1p-112L, 0.5L, 1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
4078     TEST_c_c (casin, 0x1p-112L, -0.5L, 1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
4079     TEST_c_c (casin, -0x1p-112L, 0.5L, -1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
4080     TEST_c_c (casin, -0x1p-112L, -0.5L, -1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
4081     TEST_c_c (casin, 0.5L, 0x1p-112L, 5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
4082     TEST_c_c (casin, -0.5L, 0x1p-112L, -5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
4083     TEST_c_c (casin, 0.5L, -0x1p-112L, 5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
4084     TEST_c_c (casin, -0.5L, -0x1p-112L, -5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
4085     TEST_c_c (casin, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4086     TEST_c_c (casin, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4087     TEST_c_c (casin, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4088     TEST_c_c (casin, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4089 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4090     /* Bug 15319: underflow exception may be missing.  */
4091     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION_OK),
4092     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION_OK),
4093     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION_OK),
4094     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION_OK),
4095     TEST_c_c (casin, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4096     TEST_c_c (casin, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4097     TEST_c_c (casin, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4098     TEST_c_c (casin, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4099 #endif
4100     TEST_c_c (casin, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
4101     TEST_c_c (casin, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
4102     TEST_c_c (casin, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
4103     TEST_c_c (casin, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
4104     TEST_c_c (casin, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
4105     TEST_c_c (casin, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
4106     TEST_c_c (casin, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4107     TEST_c_c (casin, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4108
4109     TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L),
4110     TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L),
4111   };
4112
4113 static void
4114 casin_test (void)
4115 {
4116   START (casin);
4117   RUN_TEST_LOOP_c_c (casin, casin_test_data, );
4118   END_COMPLEX;
4119 }
4120
4121
4122 static const struct test_c_c_data casinh_test_data[] =
4123   {
4124     TEST_c_c (casinh, 0, 0, 0.0, 0.0),
4125     TEST_c_c (casinh, minus_zero, 0, minus_zero, 0),
4126     TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero),
4127     TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero),
4128
4129     TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l),
4130     TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
4131     TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l),
4132     TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l),
4133
4134     TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l),
4135     TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l),
4136     TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l),
4137     TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l),
4138     TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l),
4139     TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l),
4140     TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l),
4141     TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
4142
4143     TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0),
4144     TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero),
4145     TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0),
4146     TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero),
4147
4148     TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0),
4149     TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero),
4150     TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0),
4151     TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero),
4152
4153     TEST_c_c (casinh, plus_infty, qnan_value, plus_infty, qnan_value),
4154     TEST_c_c (casinh, minus_infty, qnan_value, minus_infty, qnan_value),
4155
4156     TEST_c_c (casinh, qnan_value, 0, qnan_value, 0.0),
4157     TEST_c_c (casinh, qnan_value, minus_zero, qnan_value, minus_zero),
4158
4159     TEST_c_c (casinh, qnan_value, plus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
4160     TEST_c_c (casinh, qnan_value, minus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
4161
4162     TEST_c_c (casinh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4163     TEST_c_c (casinh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4164
4165     TEST_c_c (casinh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4166     TEST_c_c (casinh, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4167
4168     TEST_c_c (casinh, qnan_value, qnan_value, qnan_value, qnan_value),
4169
4170     TEST_c_c (casinh, plus_zero, -1.5L, 0.9624236501192068949955178268487368462704L, -M_PI_2l),
4171     TEST_c_c (casinh, minus_zero, -1.5L, -0.9624236501192068949955178268487368462704L, -M_PI_2l),
4172     TEST_c_c (casinh, plus_zero, -1.0L, plus_zero, -M_PI_2l),
4173     TEST_c_c (casinh, minus_zero, -1.0L, minus_zero, -M_PI_2l),
4174     TEST_c_c (casinh, plus_zero, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L),
4175     TEST_c_c (casinh, minus_zero, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L),
4176     TEST_c_c (casinh, plus_zero, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L),
4177     TEST_c_c (casinh, minus_zero, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L),
4178     TEST_c_c (casinh, plus_zero, 1.0L, plus_zero, M_PI_2l),
4179     TEST_c_c (casinh, minus_zero, 1.0L, minus_zero, M_PI_2l),
4180     TEST_c_c (casinh, plus_zero, 1.5L, 0.9624236501192068949955178268487368462704L, M_PI_2l),
4181     TEST_c_c (casinh, minus_zero, 1.5L, -0.9624236501192068949955178268487368462704L, M_PI_2l),
4182
4183     TEST_c_c (casinh, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L, plus_zero),
4184     TEST_c_c (casinh, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L, minus_zero),
4185     TEST_c_c (casinh, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L, plus_zero),
4186     TEST_c_c (casinh, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L, minus_zero),
4187     TEST_c_c (casinh, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L, plus_zero),
4188     TEST_c_c (casinh, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L, minus_zero),
4189     TEST_c_c (casinh, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L, plus_zero),
4190     TEST_c_c (casinh, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L, minus_zero),
4191     TEST_c_c (casinh, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L, plus_zero),
4192     TEST_c_c (casinh, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L, minus_zero),
4193     TEST_c_c (casinh, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L, plus_zero),
4194     TEST_c_c (casinh, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L, minus_zero),
4195
4196     TEST_c_c (casinh, 0x1p50L, 1.0L, 3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
4197     TEST_c_c (casinh, 0x1p50L, -1.0L, 3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
4198     TEST_c_c (casinh, -0x1p50L, 1.0L, -3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
4199     TEST_c_c (casinh, -0x1p50L, -1.0L, -3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
4200     TEST_c_c (casinh, 1.0L, 0x1p50L, 3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
4201     TEST_c_c (casinh, -1.0L, 0x1p50L, -3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
4202     TEST_c_c (casinh, 1.0L, -0x1p50L, 3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
4203     TEST_c_c (casinh, -1.0L, -0x1p50L, -3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
4204 #ifndef TEST_FLOAT
4205     TEST_c_c (casinh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
4206     TEST_c_c (casinh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
4207     TEST_c_c (casinh, -0x1p500L, 1.0L, -3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
4208     TEST_c_c (casinh, -0x1p500L, -1.0L, -3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
4209     TEST_c_c (casinh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
4210     TEST_c_c (casinh, -1.0L, 0x1p500L, -3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
4211     TEST_c_c (casinh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
4212     TEST_c_c (casinh, -1.0L, -0x1p500L, -3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
4213 #endif
4214 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4215     TEST_c_c (casinh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
4216     TEST_c_c (casinh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
4217     TEST_c_c (casinh, -0x1p5000L, 1.0L, -3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
4218     TEST_c_c (casinh, -0x1p5000L, -1.0L, -3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
4219     TEST_c_c (casinh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
4220     TEST_c_c (casinh, -1.0L, 0x1p5000L, -3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
4221     TEST_c_c (casinh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
4222     TEST_c_c (casinh, -1.0L, -0x1p5000L, -3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
4223 #endif
4224
4225     TEST_c_c (casinh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
4226 #ifndef TEST_FLOAT
4227     TEST_c_c (casinh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
4228 #endif
4229 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4230     TEST_c_c (casinh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
4231 #endif
4232
4233     TEST_c_c (casinh, 0x1.fp-129L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4234     TEST_c_c (casinh, 0x1.fp-129L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4235     TEST_c_c (casinh, -0x1.fp-129L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4236     TEST_c_c (casinh, -0x1.fp-129L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4237     TEST_c_c (casinh, 1.5L, 0x1.fp-129L, 1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4238     TEST_c_c (casinh, -1.5L, 0x1.fp-129L, -1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4239     TEST_c_c (casinh, 1.5L, -0x1.fp-129L, 1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4240     TEST_c_c (casinh, -1.5L, -0x1.fp-129L, -1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4241 #ifndef TEST_FLOAT
4242     TEST_c_c (casinh, 0x1.fp-1025L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4243     TEST_c_c (casinh, 0x1.fp-1025L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4244     TEST_c_c (casinh, -0x1.fp-1025L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4245     TEST_c_c (casinh, -0x1.fp-1025L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4246     TEST_c_c (casinh, 1.5L, 0x1.fp-1025L, 1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4247     TEST_c_c (casinh, -1.5L, 0x1.fp-1025L, -1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4248     TEST_c_c (casinh, 1.5L, -0x1.fp-1025L, 1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4249     TEST_c_c (casinh, -1.5L, -0x1.fp-1025L, -1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4250 #endif
4251 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4252     TEST_c_c (casinh, 0x1.fp-16385L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4253     TEST_c_c (casinh, 0x1.fp-16385L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4254     TEST_c_c (casinh, -0x1.fp-16385L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4255     TEST_c_c (casinh, -0x1.fp-16385L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4256     TEST_c_c (casinh, 1.5L, 0x1.fp-16385L, 1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4257     TEST_c_c (casinh, -1.5L, 0x1.fp-16385L, -1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4258     TEST_c_c (casinh, 1.5L, -0x1.fp-16385L, 1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4259     TEST_c_c (casinh, -1.5L, -0x1.fp-16385L, -1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4260 #endif
4261
4262     TEST_c_c (casinh, 0.5L, 1.0L, 7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4263     TEST_c_c (casinh, 0.5L, -1.0L, 7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4264     TEST_c_c (casinh, -0.5L, 1.0L, -7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4265     TEST_c_c (casinh, -0.5L, -1.0L, -7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4266     TEST_c_c (casinh, 1.0L, 0.5L, 9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4267     TEST_c_c (casinh, -1.0L, 0.5L, -9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4268     TEST_c_c (casinh, 1.0L, -0.5L, 9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4269     TEST_c_c (casinh, -1.0L, -0.5L, -9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4270     TEST_c_c (casinh, 0.25L, 1.0L, 5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4271     TEST_c_c (casinh, 0.25L, -1.0L, 5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4272     TEST_c_c (casinh, -0.25L, 1.0L, -5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4273     TEST_c_c (casinh, -0.25L, -1.0L, -5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4274     TEST_c_c (casinh, 1.0L, 0.25L, 8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4275     TEST_c_c (casinh, -1.0L, 0.25L, -8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4276     TEST_c_c (casinh, 1.0L, -0.25L, 8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4277     TEST_c_c (casinh, -1.0L, -0.25L, -8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4278     TEST_c_c (casinh, 0x1.fp-10L, 1.0L, 4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4279     TEST_c_c (casinh, 0x1.fp-10L, -1.0L, 4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4280     TEST_c_c (casinh, -0x1.fp-10L, 1.0L, -4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4281     TEST_c_c (casinh, -0x1.fp-10L, -1.0L, -4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4282     TEST_c_c (casinh, 1.0L, 0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4283     TEST_c_c (casinh, -1.0L, 0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4284     TEST_c_c (casinh, 1.0L, -0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4285     TEST_c_c (casinh, -1.0L, -0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4286     TEST_c_c (casinh, 0x1.fp-30L, 1.0L, 4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4287     TEST_c_c (casinh, 0x1.fp-30L, -1.0L, 4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4288     TEST_c_c (casinh, -0x1.fp-30L, 1.0L, -4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4289     TEST_c_c (casinh, -0x1.fp-30L, -1.0L, -4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4290     TEST_c_c (casinh, 1.0L, 0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4291     TEST_c_c (casinh, -1.0L, 0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4292     TEST_c_c (casinh, 1.0L, -0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4293     TEST_c_c (casinh, -1.0L, -0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4294     TEST_c_c (casinh, 0x1.fp-100L, 1.0L, 1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4295     TEST_c_c (casinh, 0x1.fp-100L, -1.0L, 1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4296     TEST_c_c (casinh, -0x1.fp-100L, 1.0L, -1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4297     TEST_c_c (casinh, -0x1.fp-100L, -1.0L, -1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4298     TEST_c_c (casinh, 1.0L, 0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4299     TEST_c_c (casinh, -1.0L, 0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4300     TEST_c_c (casinh, 1.0L, -0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4301     TEST_c_c (casinh, -1.0L, -0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4302     TEST_c_c (casinh, 0x1.fp-129L, 1.0L, 5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4303     TEST_c_c (casinh, 0x1.fp-129L, -1.0L, 5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4304     TEST_c_c (casinh, -0x1.fp-129L, 1.0L, -5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4305     TEST_c_c (casinh, -0x1.fp-129L, -1.0L, -5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4306     TEST_c_c (casinh, 1.0L, 0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4307     TEST_c_c (casinh, -1.0L, 0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4308     TEST_c_c (casinh, 1.0L, -0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4309     TEST_c_c (casinh, -1.0L, -0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4310 #ifndef TEST_FLOAT
4311     TEST_c_c (casinh, 0x1.fp-1000L, 1.0L, 4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4312     TEST_c_c (casinh, 0x1.fp-1000L, -1.0L, 4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4313     TEST_c_c (casinh, -0x1.fp-1000L, 1.0L, -4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4314     TEST_c_c (casinh, -0x1.fp-1000L, -1.0L, -4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4315     TEST_c_c (casinh, 1.0L, 0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4316     TEST_c_c (casinh, -1.0L, 0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4317     TEST_c_c (casinh, 1.0L, -0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4318     TEST_c_c (casinh, -1.0L, -0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4319     TEST_c_c (casinh, 0x1.fp-1025L, 1.0L, 7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4320     TEST_c_c (casinh, 0x1.fp-1025L, -1.0L, 7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4321     TEST_c_c (casinh, -0x1.fp-1025L, 1.0L, -7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4322     TEST_c_c (casinh, -0x1.fp-1025L, -1.0L, -7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4323     TEST_c_c (casinh, 1.0L, 0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4324     TEST_c_c (casinh, -1.0L, 0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4325     TEST_c_c (casinh, 1.0L, -0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4326     TEST_c_c (casinh, -1.0L, -0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4327 #endif
4328 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4329     TEST_c_c (casinh, 0x1.fp-10000L, 1.0L, 9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4330     TEST_c_c (casinh, 0x1.fp-10000L, -1.0L, 9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4331     TEST_c_c (casinh, -0x1.fp-10000L, 1.0L, -9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4332     TEST_c_c (casinh, -0x1.fp-10000L, -1.0L, -9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4333     TEST_c_c (casinh, 1.0L, 0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4334     TEST_c_c (casinh, -1.0L, 0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4335     TEST_c_c (casinh, 1.0L, -0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4336     TEST_c_c (casinh, -1.0L, -0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4337     TEST_c_c (casinh, 0x1.fp-16385L, 1.0L, 9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4338     TEST_c_c (casinh, 0x1.fp-16385L, -1.0L, 9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4339     TEST_c_c (casinh, -0x1.fp-16385L, 1.0L, -9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4340     TEST_c_c (casinh, -0x1.fp-16385L, -1.0L, -9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4341     TEST_c_c (casinh, 1.0L, 0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4342     TEST_c_c (casinh, -1.0L, 0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4343     TEST_c_c (casinh, 1.0L, -0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4344     TEST_c_c (casinh, -1.0L, -0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4345 #endif
4346
4347     TEST_c_c (casinh, 0x1p-23L, 0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4348     TEST_c_c (casinh, 0x1p-23L, -0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4349     TEST_c_c (casinh, -0x1p-23L, 0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4350     TEST_c_c (casinh, -0x1p-23L, -0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4351     TEST_c_c (casinh, 0x1.000002p0L, 0x1p-23L, 8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4352     TEST_c_c (casinh, -0x1.000002p0L, 0x1p-23L, -8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4353     TEST_c_c (casinh, 0x1.000002p0L, -0x1p-23L, 8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4354     TEST_c_c (casinh, -0x1.000002p0L, -0x1p-23L, -8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4355     TEST_c_c (casinh, 0x1.fp-129L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4356     TEST_c_c (casinh, 0x1.fp-129L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4357     TEST_c_c (casinh, -0x1.fp-129L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4358     TEST_c_c (casinh, -0x1.fp-129L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4359     TEST_c_c (casinh, 0x1.000002p0L, 0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4360     TEST_c_c (casinh, -0x1.000002p0L, 0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4361     TEST_c_c (casinh, 0x1.000002p0L, -0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4362     TEST_c_c (casinh, -0x1.000002p0L, -0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4363     TEST_c_c (casinh, 0.0L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4364     TEST_c_c (casinh, 0.0L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4365     TEST_c_c (casinh, -0.0L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4366     TEST_c_c (casinh, -0.0L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4367     TEST_c_c (casinh, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L, 0.0L),
4368     TEST_c_c (casinh, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L, 0.0L),
4369     TEST_c_c (casinh, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L, -0.0L),
4370     TEST_c_c (casinh, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L, -0.0L),
4371 #ifndef TEST_FLOAT
4372     TEST_c_c (casinh, 0x1p-52L, 0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4373     TEST_c_c (casinh, 0x1p-52L, -0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4374     TEST_c_c (casinh, -0x1p-52L, 0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4375     TEST_c_c (casinh, -0x1p-52L, -0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4376     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1p-52L, 8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4377     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1p-52L, -8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4378     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1p-52L, 8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4379     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1p-52L, -8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4380     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4381     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4382     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4383     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4384     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4385     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4386     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4387     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4388     TEST_c_c (casinh, 0.0L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4389     TEST_c_c (casinh, 0.0L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4390     TEST_c_c (casinh, -0.0L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4391     TEST_c_c (casinh, -0.0L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4392     TEST_c_c (casinh, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L, 0.0L),
4393     TEST_c_c (casinh, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L, 0.0L),
4394     TEST_c_c (casinh, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L, -0.0L),
4395     TEST_c_c (casinh, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L, -0.0L),
4396 #endif
4397 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4398     TEST_c_c (casinh, 0x1p-63L, 0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4399     TEST_c_c (casinh, 0x1p-63L, -0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4400     TEST_c_c (casinh, -0x1p-63L, 0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4401     TEST_c_c (casinh, -0x1p-63L, -0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4402     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1p-63L, 8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4403     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1p-63L, -8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4404     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1p-63L, 8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4405     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1p-63L, -8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4406 # if LDBL_MIN_EXP <= -16381
4407     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4408     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4409     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4410     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4411     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4412     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4413     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4414     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4415 # endif
4416     TEST_c_c (casinh, 0.0L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4417     TEST_c_c (casinh, 0.0L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4418     TEST_c_c (casinh, -0.0L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4419     TEST_c_c (casinh, -0.0L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4420     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L, 0.0L),
4421     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L, 0.0L),
4422     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L, -0.0L),
4423     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L, -0.0L),
4424 #endif
4425 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4426     TEST_c_c (casinh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4427     TEST_c_c (casinh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4428     TEST_c_c (casinh, -0x1p-106L, 0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4429     TEST_c_c (casinh, -0x1p-106L, -0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4430     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4431     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1p-106L, -8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4432     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4433     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1p-106L, -8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4434     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4435     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4436     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4437     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4438     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4439     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4440     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4441     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4442     TEST_c_c (casinh, 0.0L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4443     TEST_c_c (casinh, 0.0L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4444     TEST_c_c (casinh, -0.0L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4445     TEST_c_c (casinh, -0.0L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4446     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L, 0.0L),
4447     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L, 0.0L),
4448     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L, -0.0L),
4449     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L, -0.0L),
4450 #endif
4451 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4452     TEST_c_c (casinh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4453     TEST_c_c (casinh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4454     TEST_c_c (casinh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4455     TEST_c_c (casinh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4456     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4457     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4458     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4459     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4460     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4461     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4462     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4463     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4464     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4465     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4466     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4467     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4468     TEST_c_c (casinh, 0.0L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4469     TEST_c_c (casinh, 0.0L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4470     TEST_c_c (casinh, -0.0L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4471     TEST_c_c (casinh, -0.0L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4472     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L, 0.0L),
4473     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L, 0.0L),
4474     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L, -0.0L),
4475     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L, -0.0L),
4476 #endif
4477
4478     TEST_c_c (casinh, 0x1p-23L, 0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4479     TEST_c_c (casinh, 0x1p-23L, -0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4480     TEST_c_c (casinh, -0x1p-23L, 0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4481     TEST_c_c (casinh, -0x1p-23L, -0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4482     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1p-23L, 8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4483     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1p-23L, -8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4484     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1p-23L, 8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4485     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1p-23L, -8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4486     TEST_c_c (casinh, 0x1.fp-129L, 0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4487     TEST_c_c (casinh, 0x1.fp-129L, -0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4488     TEST_c_c (casinh, -0x1.fp-129L, 0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4489     TEST_c_c (casinh, -0x1.fp-129L, -0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4490     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4491     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4492     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4493     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4494     TEST_c_c (casinh, 0.0L, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L),
4495     TEST_c_c (casinh, 0.0L, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L),
4496     TEST_c_c (casinh, -0.0L, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L),
4497     TEST_c_c (casinh, -0.0L, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L),
4498     TEST_c_c (casinh, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L, 0.0L),
4499     TEST_c_c (casinh, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L, 0.0L),
4500     TEST_c_c (casinh, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L, -0.0L),
4501     TEST_c_c (casinh, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L, -0.0L),
4502     TEST_c_c (casinh, 0x1p-23L, 0.5L, 1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4503     TEST_c_c (casinh, 0x1p-23L, -0.5L, 1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4504     TEST_c_c (casinh, -0x1p-23L, 0.5L, -1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4505     TEST_c_c (casinh, -0x1p-23L, -0.5L, -1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4506     TEST_c_c (casinh, 0.5L, 0x1p-23L, 4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4507     TEST_c_c (casinh, -0.5L, 0x1p-23L, -4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4508     TEST_c_c (casinh, 0.5L, -0x1p-23L, 4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4509     TEST_c_c (casinh, -0.5L, -0x1p-23L, -4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4510     TEST_c_c (casinh, 0x1.fp-129L, 0.5L, 3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4511     TEST_c_c (casinh, 0x1.fp-129L, -0.5L, 3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4512     TEST_c_c (casinh, -0x1.fp-129L, 0.5L, -3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4513     TEST_c_c (casinh, -0x1.fp-129L, -0.5L, -3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4514     TEST_c_c (casinh, 0.5L, 0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4515     TEST_c_c (casinh, -0.5L, 0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4516     TEST_c_c (casinh, 0.5L, -0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4517     TEST_c_c (casinh, -0.5L, -0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4518     TEST_c_c (casinh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4519     TEST_c_c (casinh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4520     TEST_c_c (casinh, -0x1p-23L, 0x1p-23L, -1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4521     TEST_c_c (casinh, -0x1p-23L, -0x1p-23L, -1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4522     TEST_c_c (casinh, 0x1.fp-129L, 0x1p-23L, 2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4523     TEST_c_c (casinh, 0x1.fp-129L, -0x1p-23L, 2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4524     TEST_c_c (casinh, -0x1.fp-129L, 0x1p-23L, -2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4525     TEST_c_c (casinh, -0x1.fp-129L, -0x1p-23L, -2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4526     /* Bug 15319: underflow exception may be missing.  */
4527     TEST_c_c (casinh, 0x1p-23L, 0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4528     TEST_c_c (casinh, -0x1p-23L, 0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4529     TEST_c_c (casinh, 0x1p-23L, -0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4530     TEST_c_c (casinh, -0x1p-23L, -0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4531     TEST_c_c (casinh, 0.0L, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L),
4532     TEST_c_c (casinh, 0.0L, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L),
4533     TEST_c_c (casinh, -0.0L, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L),
4534     TEST_c_c (casinh, -0.0L, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L),
4535     TEST_c_c (casinh, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L, 0.0L),
4536     TEST_c_c (casinh, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L, 0.0L),
4537     TEST_c_c (casinh, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L, -0.0L),
4538     TEST_c_c (casinh, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L, -0.0L),
4539     TEST_c_c (casinh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4540     TEST_c_c (casinh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4541     TEST_c_c (casinh, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4542     TEST_c_c (casinh, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4543 #ifndef TEST_FLOAT
4544     TEST_c_c (casinh, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4545     TEST_c_c (casinh, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4546     TEST_c_c (casinh, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4547     TEST_c_c (casinh, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4548     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1p-52L, 8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4549     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1p-52L, -8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4550     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1p-52L, 8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4551     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1p-52L, -8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4552     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4553     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4554     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4555     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4556     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4557     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4558     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4559     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4560     TEST_c_c (casinh, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L),
4561     TEST_c_c (casinh, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L),
4562     TEST_c_c (casinh, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L),
4563     TEST_c_c (casinh, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L),
4564     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L, 0.0L),
4565     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L, 0.0L),
4566     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L, -0.0L),
4567     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L, -0.0L),
4568 #endif
4569     TEST_c_c (casinh, 0x1p-52L, 0.5L, 2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4570     TEST_c_c (casinh, 0x1p-52L, -0.5L, 2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4571     TEST_c_c (casinh, -0x1p-52L, 0.5L, -2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4572     TEST_c_c (casinh, -0x1p-52L, -0.5L, -2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4573     TEST_c_c (casinh, 0.5L, 0x1p-52L, 4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4574     TEST_c_c (casinh, -0.5L, 0x1p-52L, -4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4575     TEST_c_c (casinh, 0.5L, -0x1p-52L, 4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4576     TEST_c_c (casinh, -0.5L, -0x1p-52L, -4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4577 #ifndef TEST_FLOAT
4578     TEST_c_c (casinh, 0x1.fp-1025L, 0.5L, 6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4579     TEST_c_c (casinh, 0x1.fp-1025L, -0.5L, 6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4580     TEST_c_c (casinh, -0x1.fp-1025L, 0.5L, -6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4581     TEST_c_c (casinh, -0x1.fp-1025L, -0.5L, -6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4582     TEST_c_c (casinh, 0.5L, 0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4583     TEST_c_c (casinh, -0.5L, 0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4584     TEST_c_c (casinh, 0.5L, -0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4585     TEST_c_c (casinh, -0.5L, -0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4586 #endif
4587     TEST_c_c (casinh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4588     TEST_c_c (casinh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4589     TEST_c_c (casinh, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4590     TEST_c_c (casinh, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4591 #ifndef TEST_FLOAT
4592     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4593     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4594     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4595     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4596     /* Bug 15319: underflow exception may be missing.  */
4597     TEST_c_c (casinh, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4598     TEST_c_c (casinh, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4599     TEST_c_c (casinh, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4600     TEST_c_c (casinh, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4601 #endif
4602     TEST_c_c (casinh, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L),
4603     TEST_c_c (casinh, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L),
4604     TEST_c_c (casinh, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L),
4605     TEST_c_c (casinh, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L),
4606     TEST_c_c (casinh, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L, 0.0L),
4607     TEST_c_c (casinh, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L, 0.0L),
4608     TEST_c_c (casinh, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L, -0.0L),
4609     TEST_c_c (casinh, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L, -0.0L),
4610 #ifndef TEST_FLOAT
4611     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4612     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4613     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4614     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4615 #endif
4616 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4617     TEST_c_c (casinh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4618     TEST_c_c (casinh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4619     TEST_c_c (casinh, -0x1p-63L, 0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4620     TEST_c_c (casinh, -0x1p-63L, -0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4621     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4622     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1p-63L, -8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4623     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4624     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1p-63L, -8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4625 # if LDBL_MIN_EXP <= -16381
4626     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4627     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4628     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4629     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4630     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4631     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4632     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4633     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4634 # endif
4635     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L),
4636     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L),
4637     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L),
4638     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L),
4639     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L, 0.0L),
4640     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L, 0.0L),
4641     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L, -0.0L),
4642     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L, -0.0L),
4643 #endif
4644     TEST_c_c (casinh, 0x1p-63L, 0.5L, 1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4645     TEST_c_c (casinh, 0x1p-63L, -0.5L, 1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4646     TEST_c_c (casinh, -0x1p-63L, 0.5L, -1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4647     TEST_c_c (casinh, -0x1p-63L, -0.5L, -1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4648     TEST_c_c (casinh, 0.5L, 0x1p-63L, 4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4649     TEST_c_c (casinh, -0.5L, 0x1p-63L, -4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4650     TEST_c_c (casinh, 0.5L, -0x1p-63L, 4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4651     TEST_c_c (casinh, -0.5L, -0x1p-63L, -4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4652 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4653     TEST_c_c (casinh, 0x1.fp-16385L, 0.5L, 9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4654     TEST_c_c (casinh, 0x1.fp-16385L, -0.5L, 9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4655     TEST_c_c (casinh, -0x1.fp-16385L, 0.5L, -9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4656     TEST_c_c (casinh, -0x1.fp-16385L, -0.5L, -9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4657     TEST_c_c (casinh, 0.5L, 0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4658     TEST_c_c (casinh, -0.5L, 0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4659     TEST_c_c (casinh, 0.5L, -0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4660     TEST_c_c (casinh, -0.5L, -0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4661 #endif
4662     TEST_c_c (casinh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4663     TEST_c_c (casinh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4664     TEST_c_c (casinh, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4665     TEST_c_c (casinh, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4666 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4667     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4668     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4669     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4670     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4671     /* Bug 15319: underflow exception may be missing.  */
4672     TEST_c_c (casinh, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION_OK),
4673     TEST_c_c (casinh, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION_OK),
4674     TEST_c_c (casinh, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION_OK),
4675     TEST_c_c (casinh, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION_OK),
4676 #endif
4677     TEST_c_c (casinh, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L),
4678     TEST_c_c (casinh, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L),
4679     TEST_c_c (casinh, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L),
4680     TEST_c_c (casinh, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L),
4681     TEST_c_c (casinh, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L, 0.0L),
4682     TEST_c_c (casinh, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L, 0.0L),
4683     TEST_c_c (casinh, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L, -0.0L),
4684     TEST_c_c (casinh, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L, -0.0L),
4685 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4686     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4687     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4688     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4689     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4690 #endif
4691 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4692     TEST_c_c (casinh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4693     TEST_c_c (casinh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4694     TEST_c_c (casinh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4695     TEST_c_c (casinh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4696     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4697     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4698     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4699     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4700     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4701     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4702     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4703     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4704     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4705     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4706     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4707     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4708     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L),
4709     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L),
4710     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L),
4711     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L),
4712     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L, 0.0L),
4713     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L, 0.0L),
4714     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L, -0.0L),
4715     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L, -0.0L),
4716 #endif
4717     TEST_c_c (casinh, 0x1p-105L, 0.5L, 2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4718     TEST_c_c (casinh, 0x1p-105L, -0.5L, 2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4719     TEST_c_c (casinh, -0x1p-105L, 0.5L, -2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4720     TEST_c_c (casinh, -0x1p-105L, -0.5L, -2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4721     TEST_c_c (casinh, 0.5L, 0x1p-105L, 4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4722     TEST_c_c (casinh, -0.5L, 0x1p-105L, -4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4723     TEST_c_c (casinh, 0.5L, -0x1p-105L, 4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4724     TEST_c_c (casinh, -0.5L, -0x1p-105L, -4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4725     TEST_c_c (casinh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4726     TEST_c_c (casinh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4727     TEST_c_c (casinh, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4728     TEST_c_c (casinh, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4729 #ifndef TEST_FLOAT
4730     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4731     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4732     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4733     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4734     /* Bug 15319: underflow exception may be missing.  */
4735     TEST_c_c (casinh, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4736     TEST_c_c (casinh, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4737     TEST_c_c (casinh, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4738     TEST_c_c (casinh, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4739 #endif
4740     TEST_c_c (casinh, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
4741     TEST_c_c (casinh, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
4742     TEST_c_c (casinh, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
4743     TEST_c_c (casinh, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
4744     TEST_c_c (casinh, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
4745     TEST_c_c (casinh, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
4746     TEST_c_c (casinh, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
4747     TEST_c_c (casinh, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
4748 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4749     TEST_c_c (casinh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4750     TEST_c_c (casinh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4751     TEST_c_c (casinh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4752     TEST_c_c (casinh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4753     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4754     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4755     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4756     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4757     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4758     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4759     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4760     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4761     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4762     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4763     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4764     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4765     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L),
4766     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L),
4767     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L),
4768     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L),
4769     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L, 0.0L),
4770     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L, 0.0L),
4771     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L, -0.0L),
4772     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L, -0.0L),
4773 #endif
4774     TEST_c_c (casinh, 0x1p-112L, 0.5L, 2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4775     TEST_c_c (casinh, 0x1p-112L, -0.5L, 2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4776     TEST_c_c (casinh, -0x1p-112L, 0.5L, -2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4777     TEST_c_c (casinh, -0x1p-112L, -0.5L, -2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4778     TEST_c_c (casinh, 0.5L, 0x1p-112L, 4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4779     TEST_c_c (casinh, -0.5L, 0x1p-112L, -4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4780     TEST_c_c (casinh, 0.5L, -0x1p-112L, 4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4781     TEST_c_c (casinh, -0.5L, -0x1p-112L, -4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4782     TEST_c_c (casinh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4783     TEST_c_c (casinh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4784     TEST_c_c (casinh, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4785     TEST_c_c (casinh, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4786 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4787     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4788     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4789     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4790     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4791     /* Bug 15319: underflow exception may be missing.  */
4792     TEST_c_c (casinh, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION_OK),
4793     TEST_c_c (casinh, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION_OK),
4794     TEST_c_c (casinh, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION_OK),
4795     TEST_c_c (casinh, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION_OK),
4796 #endif
4797     TEST_c_c (casinh, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
4798     TEST_c_c (casinh, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
4799     TEST_c_c (casinh, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
4800     TEST_c_c (casinh, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
4801     TEST_c_c (casinh, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
4802     TEST_c_c (casinh, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
4803     TEST_c_c (casinh, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4804     TEST_c_c (casinh, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4805
4806     TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L),
4807     TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L),
4808   };
4809
4810 static void
4811 casinh_test (void)
4812 {
4813   START (casinh);
4814   RUN_TEST_LOOP_c_c (casinh, casinh_test_data, );
4815   END_COMPLEX;
4816 }
4817
4818
4819 static const struct test_c_c_data catan_test_data[] =
4820   {
4821     TEST_c_c (catan, 0, 0, 0, 0),
4822     TEST_c_c (catan, minus_zero, 0, minus_zero, 0),
4823     TEST_c_c (catan, 0, minus_zero, 0, minus_zero),
4824     TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero),
4825
4826     TEST_c_c (catan, 1.0L, plus_zero, M_PI_4l, plus_zero),
4827     TEST_c_c (catan, 1.0L, minus_zero, M_PI_4l, minus_zero),
4828     TEST_c_c (catan, -1.0L, plus_zero, -M_PI_4l, plus_zero),
4829     TEST_c_c (catan, -1.0L, minus_zero, -M_PI_4l, minus_zero),
4830     TEST_c_c (catan, plus_zero, 1.0L, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4831     TEST_c_c (catan, minus_zero, 1.0L, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4832     TEST_c_c (catan, plus_zero, -1.0L, plus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4833     TEST_c_c (catan, minus_zero, -1.0L, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4834
4835     TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0),
4836     TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero),
4837     TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0),
4838     TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero),
4839
4840
4841     TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero),
4842     TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero),
4843     TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero),
4844     TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero),
4845     TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0),
4846     TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0),
4847     TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0),
4848     TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0),
4849
4850     TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero),
4851     TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero),
4852     TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero),
4853     TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero),
4854
4855     TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0),
4856     TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0),
4857     TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0),
4858     TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0),
4859
4860     TEST_c_c (catan, qnan_value, 0.0, qnan_value, 0),
4861     TEST_c_c (catan, qnan_value, minus_zero, qnan_value, minus_zero),
4862
4863     TEST_c_c (catan, qnan_value, plus_infty, qnan_value, 0),
4864     TEST_c_c (catan, qnan_value, minus_infty, qnan_value, minus_zero),
4865
4866     TEST_c_c (catan, 0.0, qnan_value, qnan_value, qnan_value),
4867     TEST_c_c (catan, minus_zero, qnan_value, qnan_value, qnan_value),
4868
4869     TEST_c_c (catan, plus_infty, qnan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4870     TEST_c_c (catan, minus_infty, qnan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4871
4872     TEST_c_c (catan, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4873     TEST_c_c (catan, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4874
4875     TEST_c_c (catan, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4876     TEST_c_c (catan, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4877
4878     TEST_c_c (catan, qnan_value, qnan_value, qnan_value, qnan_value),
4879
4880     TEST_c_c (catan, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L, 0.0L),
4881     TEST_c_c (catan, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L, -0.0L),
4882     TEST_c_c (catan, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L, 0.0L),
4883     TEST_c_c (catan, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L, -0.0L),
4884     TEST_c_c (catan, 0.0L, 0x1p50L, 1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4885     TEST_c_c (catan, -0.0L, 0x1p50L, -1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4886     TEST_c_c (catan, 0.0L, -0x1p50L, 1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4887     TEST_c_c (catan, -0.0L, -0x1p50L, -1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4888 #ifndef TEST_FLOAT
4889     TEST_c_c (catan, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4890     TEST_c_c (catan, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4891     TEST_c_c (catan, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4892     TEST_c_c (catan, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4893     TEST_c_c (catan, 0.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4894     TEST_c_c (catan, -0.0L, 0x1p500L, -1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4895     TEST_c_c (catan, 0.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4896     TEST_c_c (catan, -0.0L, -0x1p500L, -1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4897 #endif
4898 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4899     TEST_c_c (catan, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4900     TEST_c_c (catan, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4901     TEST_c_c (catan, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4902     TEST_c_c (catan, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4903     TEST_c_c (catan, 0.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4904     TEST_c_c (catan, -0.0L, 0x1p5000L, -1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4905     TEST_c_c (catan, 0.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4906     TEST_c_c (catan, -0.0L, -0x1p5000L, -1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4907 #endif
4908     TEST_c_c (catan, 0x1p63L, 0.5L, 1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4909     TEST_c_c (catan, 0x1p63L, -0.5L, 1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4910     TEST_c_c (catan, -0x1p63L, 0.5L, -1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4911     TEST_c_c (catan, -0x1p63L, -0.5L, -1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4912     TEST_c_c (catan, 0.5L, 0x1p63L, 1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4913     TEST_c_c (catan, -0.5L, 0x1p63L, -1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4914     TEST_c_c (catan, 0.5L, -0x1p63L, 1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4915     TEST_c_c (catan, -0.5L, -0x1p63L, -1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4916 #ifndef TEST_FLOAT
4917     TEST_c_c (catan, 0x1p511L, 0.5L, 1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4918     TEST_c_c (catan, 0x1p511L, -0.5L, 1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4919     TEST_c_c (catan, -0x1p511L, 0.5L, -1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4920     TEST_c_c (catan, -0x1p511L, -0.5L, -1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4921     TEST_c_c (catan, 0.5L, 0x1p511L, 1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4922     TEST_c_c (catan, -0.5L, 0x1p511L, -1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4923     TEST_c_c (catan, 0.5L, -0x1p511L, 1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4924     TEST_c_c (catan, -0.5L, -0x1p511L, -1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4925 #endif
4926 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4927     TEST_c_c (catan, 0x1p8191L, 0.5L, 1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4928     TEST_c_c (catan, 0x1p8191L, -0.5L, 1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4929     TEST_c_c (catan, -0x1p8191L, 0.5L, -1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4930     TEST_c_c (catan, -0x1p8191L, -0.5L, -1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4931     TEST_c_c (catan, 0.5L, 0x1p8191L, 1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4932     TEST_c_c (catan, -0.5L, 0x1p8191L, -1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4933     TEST_c_c (catan, 0.5L, -0x1p8191L, 1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4934     TEST_c_c (catan, -0.5L, -0x1p8191L, -1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4935 #endif
4936     TEST_c_c (catan, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L, 0.0L),
4937     TEST_c_c (catan, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L, -0.0L),
4938     TEST_c_c (catan, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L, 0.0L),
4939     TEST_c_c (catan, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L, -0.0L),
4940     TEST_c_c (catan, 0.0L, 0x1p100L, 1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4941     TEST_c_c (catan, -0.0L, 0x1p100L, -1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4942     TEST_c_c (catan, 0.0L, -0x1p100L, 1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4943     TEST_c_c (catan, -0.0L, -0x1p100L, -1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4944     TEST_c_c (catan, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L, 0.0L),
4945     TEST_c_c (catan, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L, -0.0L),
4946     TEST_c_c (catan, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L, 0.0L),
4947     TEST_c_c (catan, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L, -0.0L),
4948     TEST_c_c (catan, 0.0L, 0x1.fp127L, 1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4949     TEST_c_c (catan, -0.0L, 0x1.fp127L, -1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4950     TEST_c_c (catan, 0.0L, -0x1.fp127L, 1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4951     TEST_c_c (catan, -0.0L, -0x1.fp127L, -1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4952     TEST_c_c (catan, 0x1.fp127L, 0x1.fp127L, 1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4953     TEST_c_c (catan, 0x1.fp127L, -0x1.fp127L, 1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4954     TEST_c_c (catan, -0x1.fp127L, 0x1.fp127L, -1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4955     TEST_c_c (catan, -0x1.fp127L, -0x1.fp127L, -1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4956 #ifndef TEST_FLOAT
4957     TEST_c_c (catan, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4958     TEST_c_c (catan, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4959     TEST_c_c (catan, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4960     TEST_c_c (catan, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4961     TEST_c_c (catan, 0.0L, 0x1p900L, 1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4962     TEST_c_c (catan, -0.0L, 0x1p900L, -1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4963     TEST_c_c (catan, 0.0L, -0x1p900L, 1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4964     TEST_c_c (catan, -0.0L, -0x1p900L, -1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4965     TEST_c_c (catan, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4966     TEST_c_c (catan, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4967     TEST_c_c (catan, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4968     TEST_c_c (catan, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4969     TEST_c_c (catan, 0.0L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4970     TEST_c_c (catan, -0.0L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4971     TEST_c_c (catan, 0.0L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4972     TEST_c_c (catan, -0.0L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4973     TEST_c_c (catan, 0x1.fp1023L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4974     TEST_c_c (catan, 0x1.fp1023L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4975     TEST_c_c (catan, -0x1.fp1023L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4976     TEST_c_c (catan, -0x1.fp1023L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4977 #endif
4978 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4979     TEST_c_c (catan, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4980     TEST_c_c (catan, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4981     TEST_c_c (catan, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4982     TEST_c_c (catan, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4983     TEST_c_c (catan, 0.0L, 0x1p10000L, 1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4984     TEST_c_c (catan, -0.0L, 0x1p10000L, -1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4985     TEST_c_c (catan, 0.0L, -0x1p10000L, 1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4986     TEST_c_c (catan, -0.0L, -0x1p10000L, -1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4987     TEST_c_c (catan, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4988     TEST_c_c (catan, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4989     TEST_c_c (catan, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4990     TEST_c_c (catan, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4991     TEST_c_c (catan, 0.0L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4992     TEST_c_c (catan, -0.0L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4993     TEST_c_c (catan, 0.0L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4994     TEST_c_c (catan, -0.0L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4995     TEST_c_c (catan, 0x1.fp16383L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4996     TEST_c_c (catan, 0x1.fp16383L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4997     TEST_c_c (catan, -0x1.fp16383L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4998     TEST_c_c (catan, -0x1.fp16383L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4999 #endif
5000     TEST_c_c (catan, 0x1p-13L, 1.0L, 7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
5001     TEST_c_c (catan, 0x1p-13L, -1.0L, 7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
5002     TEST_c_c (catan, -0x1p-13L, 1.0L, -7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
5003     TEST_c_c (catan, -0x1p-13L, -1.0L, -7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
5004     TEST_c_c (catan, 1.0L, 0x1p-13L, 7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
5005     TEST_c_c (catan, -1.0L, 0x1p-13L, -7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
5006     TEST_c_c (catan, 1.0L, -0x1p-13L, 7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
5007     TEST_c_c (catan, -1.0L, -0x1p-13L, -7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
5008     TEST_c_c (catan, 0x1p-27L, 1.0L, 7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
5009     TEST_c_c (catan, 0x1p-27L, -1.0L, 7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
5010     TEST_c_c (catan, -0x1p-27L, 1.0L, -7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
5011     TEST_c_c (catan, -0x1p-27L, -1.0L, -7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
5012     TEST_c_c (catan, 1.0L, 0x1p-27L, 7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
5013     TEST_c_c (catan, -1.0L, 0x1p-27L, -7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
5014     TEST_c_c (catan, 1.0L, -0x1p-27L, 7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
5015     TEST_c_c (catan, -1.0L, -0x1p-27L, -7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
5016     TEST_c_c (catan, 0x1p-33L, 1.0L, 7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
5017     TEST_c_c (catan, 0x1p-33L, -1.0L, 7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
5018     TEST_c_c (catan, -0x1p-33L, 1.0L, -7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
5019     TEST_c_c (catan, -0x1p-33L, -1.0L, -7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
5020     TEST_c_c (catan, 1.0L, 0x1p-33L, 7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
5021     TEST_c_c (catan, -1.0L, 0x1p-33L, -7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
5022     TEST_c_c (catan, 1.0L, -0x1p-33L, 7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
5023     TEST_c_c (catan, -1.0L, -0x1p-33L, -7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
5024     TEST_c_c (catan, 0x1p-54L, 1.0L, 7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
5025     TEST_c_c (catan, 0x1p-54L, -1.0L, 7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
5026     TEST_c_c (catan, -0x1p-54L, 1.0L, -7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
5027     TEST_c_c (catan, -0x1p-54L, -1.0L, -7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
5028     TEST_c_c (catan, 1.0L, 0x1p-54L, 7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
5029     TEST_c_c (catan, -1.0L, 0x1p-54L, -7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
5030     TEST_c_c (catan, 1.0L, -0x1p-54L, 7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
5031     TEST_c_c (catan, -1.0L, -0x1p-54L, -7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
5032     TEST_c_c (catan, 0x1p-57L, 1.0L, 7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
5033     TEST_c_c (catan, 0x1p-57L, -1.0L, 7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
5034     TEST_c_c (catan, -0x1p-57L, 1.0L, -7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
5035     TEST_c_c (catan, -0x1p-57L, -1.0L, -7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
5036     TEST_c_c (catan, 1.0L, 0x1p-57L, 7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
5037     TEST_c_c (catan, -1.0L, 0x1p-57L, -7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
5038     TEST_c_c (catan, 1.0L, -0x1p-57L, 7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
5039     TEST_c_c (catan, -1.0L, -0x1p-57L, -7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
5040     TEST_c_c (catan, 0x1p-13L, 0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
5041     TEST_c_c (catan, 0x1p-13L, -0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
5042     TEST_c_c (catan, -0x1p-13L, 0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
5043     TEST_c_c (catan, -0x1p-13L, -0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
5044     TEST_c_c (catan, 0x1.000002p0L, 0x1p-13L, 7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
5045     TEST_c_c (catan, -0x1.000002p0L, 0x1p-13L, -7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
5046     TEST_c_c (catan, 0x1.000002p0L, -0x1p-13L, 7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
5047     TEST_c_c (catan, -0x1.000002p0L, -0x1p-13L, -7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
5048     TEST_c_c (catan, 0x1p-13L, 0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
5049     TEST_c_c (catan, 0x1p-13L, -0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
5050     TEST_c_c (catan, -0x1p-13L, 0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
5051     TEST_c_c (catan, -0x1p-13L, -0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
5052     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-13L, 7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
5053     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-13L, -7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
5054     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-13L, 7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
5055     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-13L, -7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
5056 #ifndef TEST_FLOAT
5057     TEST_c_c (catan, 0x1p-27L, 0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
5058     TEST_c_c (catan, 0x1p-27L, -0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
5059     TEST_c_c (catan, -0x1p-27L, 0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
5060     TEST_c_c (catan, -0x1p-27L, -0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
5061     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-27L, 7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
5062     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-27L, -7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
5063     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-27L, 7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
5064     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-27L, -7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
5065     TEST_c_c (catan, 0x1p-27L, 0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
5066     TEST_c_c (catan, 0x1p-27L, -0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
5067     TEST_c_c (catan, -0x1p-27L, 0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
5068     TEST_c_c (catan, -0x1p-27L, -0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
5069     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-27L, 7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
5070     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-27L, -7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
5071     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-27L, 7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
5072     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-27L, -7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
5073 #endif
5074 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5075     TEST_c_c (catan, 0x1p-33L, 0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
5076     TEST_c_c (catan, 0x1p-33L, -0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
5077     TEST_c_c (catan, -0x1p-33L, 0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
5078     TEST_c_c (catan, -0x1p-33L, -0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
5079     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-33L, 7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
5080     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-33L, -7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
5081     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-33L, 7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
5082     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-33L, -7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
5083     TEST_c_c (catan, 0x1p-33L, 0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
5084     TEST_c_c (catan, 0x1p-33L, -0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
5085     TEST_c_c (catan, -0x1p-33L, 0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
5086     TEST_c_c (catan, -0x1p-33L, -0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
5087     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-33L, 7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
5088     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-33L, -7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
5089     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-33L, 7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
5090     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-33L, -7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
5091 #endif
5092 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5093     TEST_c_c (catan, 0x1p-54L, 0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
5094     TEST_c_c (catan, 0x1p-54L, -0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
5095     TEST_c_c (catan, -0x1p-54L, 0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
5096     TEST_c_c (catan, -0x1p-54L, -0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
5097     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-54L, 7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
5098     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-54L, -7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
5099     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-54L, 7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
5100     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-54L, -7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
5101     TEST_c_c (catan, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
5102     TEST_c_c (catan, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
5103     TEST_c_c (catan, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
5104     TEST_c_c (catan, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
5105     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
5106     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
5107     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
5108     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
5109 #endif
5110 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5111     TEST_c_c (catan, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
5112     TEST_c_c (catan, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
5113     TEST_c_c (catan, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
5114     TEST_c_c (catan, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
5115     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
5116     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
5117     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
5118     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
5119     TEST_c_c (catan, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
5120     TEST_c_c (catan, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
5121     TEST_c_c (catan, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
5122     TEST_c_c (catan, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
5123     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
5124     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
5125     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
5126     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
5127 #endif
5128     TEST_c_c (catan, 1.0L, 0x1p-64L, 7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
5129     TEST_c_c (catan, 1.0L, -0x1p-64L, 7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
5130     TEST_c_c (catan, -1.0L, 0x1p-64L, -7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
5131     TEST_c_c (catan, -1.0L, -0x1p-64L, -7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
5132     TEST_c_c (catan, 0x1p-64L, 1.0L, 7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
5133     TEST_c_c (catan, -0x1p-64L, 1.0L, -7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
5134     TEST_c_c (catan, 0x1p-64L, -1.0L, 7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
5135     TEST_c_c (catan, -0x1p-64L, -1.0L, -7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
5136     TEST_c_c (catan, 1.0L, 0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
5137     TEST_c_c (catan, 1.0L, -0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
5138     TEST_c_c (catan, -1.0L, 0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
5139     TEST_c_c (catan, -1.0L, -0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
5140     TEST_c_c (catan, 0x1.3p-73L, 1.0L, 7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
5141     TEST_c_c (catan, -0x1.3p-73L, 1.0L, -7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
5142     TEST_c_c (catan, 0x1.3p-73L, -1.0L, 7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
5143     TEST_c_c (catan, -0x1.3p-73L, -1.0L, -7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
5144     TEST_c_c (catan, 1.0L, 0x1p-124L, 7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
5145     TEST_c_c (catan, 1.0L, -0x1p-124L, 7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
5146     TEST_c_c (catan, -1.0L, 0x1p-124L, -7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
5147     TEST_c_c (catan, -1.0L, -0x1p-124L, -7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
5148     TEST_c_c (catan, 0x1p-124L, 1.0L, 7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
5149     TEST_c_c (catan, -0x1p-124L, 1.0L, -7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
5150     TEST_c_c (catan, 0x1p-124L, -1.0L, 7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
5151     TEST_c_c (catan, -0x1p-124L, -1.0L, -7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
5152     TEST_c_c (catan, 0x1.000002p0L, 0x1p-126L, 7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5153     TEST_c_c (catan, 0x1.000002p0L, -0x1p-126L, 7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5154     TEST_c_c (catan, -0x1.000002p0L, 0x1p-126L, -7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5155     TEST_c_c (catan, -0x1.000002p0L, -0x1p-126L, -7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5156     TEST_c_c (catan, 0x1p-126L, 0x1.000002p0L, 1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
5157     TEST_c_c (catan, -0x1p-126L, 0x1.000002p0L, -1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
5158     TEST_c_c (catan, 0x1p-126L, -0x1.000002p0L, 1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
5159     TEST_c_c (catan, -0x1p-126L, -0x1.000002p0L, -1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
5160     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-126L, 7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5161     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-126L, 7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5162     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-126L, -7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5163     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-126L, -7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5164     TEST_c_c (catan, 0x1p-126L, 0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
5165     TEST_c_c (catan, -0x1p-126L, 0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
5166     TEST_c_c (catan, 0x1p-126L, -0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
5167     TEST_c_c (catan, -0x1p-126L, -0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
5168 #ifndef TEST_FLOAT
5169     TEST_c_c (catan, 1.0L, 0x1p-512L, 7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
5170     TEST_c_c (catan, 1.0L, -0x1p-512L, 7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
5171     TEST_c_c (catan, -1.0L, 0x1p-512L, -7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
5172     TEST_c_c (catan, -1.0L, -0x1p-512L, -7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
5173     TEST_c_c (catan, 0x1p-512L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
5174     TEST_c_c (catan, -0x1p-512L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
5175     TEST_c_c (catan, 0x1p-512L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
5176     TEST_c_c (catan, -0x1p-512L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
5177     TEST_c_c (catan, 1.0L, 0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
5178     TEST_c_c (catan, 1.0L, -0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
5179     TEST_c_c (catan, -1.0L, 0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
5180     TEST_c_c (catan, -1.0L, -0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
5181     TEST_c_c (catan, 0x1.3p-536L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
5182     TEST_c_c (catan, -0x1.3p-536L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
5183     TEST_c_c (catan, 0x1.3p-536L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
5184     TEST_c_c (catan, -0x1.3p-536L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
5185     TEST_c_c (catan, 1.0L, 0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5186     TEST_c_c (catan, 1.0L, -0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5187     TEST_c_c (catan, -1.0L, 0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5188     TEST_c_c (catan, -1.0L, -0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5189     TEST_c_c (catan, 0x1p-1020L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
5190     TEST_c_c (catan, -0x1p-1020L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
5191     TEST_c_c (catan, 0x1p-1020L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
5192     TEST_c_c (catan, -0x1p-1020L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
5193     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5194     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5195     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5196     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5197     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
5198     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
5199     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
5200     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
5201     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5202     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5203     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5204     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5205     TEST_c_c (catan, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5206     TEST_c_c (catan, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5207     TEST_c_c (catan, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5208     TEST_c_c (catan, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5209 #endif
5210 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5211     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5212     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5213     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5214     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5215     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5216     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5217     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5218     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5219     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5220     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5221     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5222     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5223     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5224     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5225     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5226     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5227 #endif
5228 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5229     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5230     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5231     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5232     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5233     TEST_c_c (catan, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5234     TEST_c_c (catan, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5235     TEST_c_c (catan, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5236     TEST_c_c (catan, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5237     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5238     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5239     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5240     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5241     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5242     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5243     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5244     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5245 #endif
5246 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5247     TEST_c_c (catan, 1.0L, 0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5248     TEST_c_c (catan, 1.0L, -0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5249     TEST_c_c (catan, -1.0L, 0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5250     TEST_c_c (catan, -1.0L, -0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5251     TEST_c_c (catan, 0x1p-8192L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5252     TEST_c_c (catan, -0x1p-8192L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5253     TEST_c_c (catan, 0x1p-8192L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5254     TEST_c_c (catan, -0x1p-8192L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5255     TEST_c_c (catan, 1.0L, 0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5256     TEST_c_c (catan, 1.0L, -0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5257     TEST_c_c (catan, -1.0L, 0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5258     TEST_c_c (catan, -1.0L, -0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5259     TEST_c_c (catan, 0x1.3p-8221L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5260     TEST_c_c (catan, -0x1.3p-8221L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5261     TEST_c_c (catan, 0x1.3p-8221L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5262     TEST_c_c (catan, -0x1.3p-8221L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5263     TEST_c_c (catan, 1.0L, 0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5264     TEST_c_c (catan, 1.0L, -0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5265     TEST_c_c (catan, -1.0L, 0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5266     TEST_c_c (catan, -1.0L, -0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5267     TEST_c_c (catan, 0x1.3p-8246L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5268     TEST_c_c (catan, -0x1.3p-8246L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5269     TEST_c_c (catan, 0x1.3p-8246L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5270     TEST_c_c (catan, -0x1.3p-8246L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5271     TEST_c_c (catan, 1.0L, 0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5272     TEST_c_c (catan, 1.0L, -0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5273     TEST_c_c (catan, -1.0L, 0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5274     TEST_c_c (catan, -1.0L, -0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5275     TEST_c_c (catan, 0x1p-16380L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5276     TEST_c_c (catan, -0x1p-16380L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5277     TEST_c_c (catan, 0x1p-16380L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5278     TEST_c_c (catan, -0x1p-16380L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5279     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5280     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5281     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5282     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5283     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5284     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5285     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5286     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5287     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5288     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5289     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5290     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5291     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5292     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5293     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5294     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5295 # if LDBL_MANT_DIG >= 113
5296     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5297     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5298     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5299     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5300     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5301     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5302     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5303     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5304     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5305     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5306     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5307     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5308     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5309     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5310     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5311     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5312 # endif
5313 #endif
5314
5315     TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L),
5316     TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L),
5317   };
5318
5319 static void
5320 catan_test (void)
5321 {
5322   START (catan);
5323   RUN_TEST_LOOP_c_c (catan, catan_test_data, );
5324   END_COMPLEX;
5325 }
5326
5327 static const struct test_c_c_data catanh_test_data[] =
5328   {
5329     TEST_c_c (catanh, 0, 0, 0.0, 0.0),
5330     TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0),
5331     TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero),
5332     TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero),
5333
5334     TEST_c_c (catanh, 1.0L, plus_zero, plus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5335     TEST_c_c (catanh, 1.0L, minus_zero, plus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5336     TEST_c_c (catanh, -1.0L, plus_zero, minus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5337     TEST_c_c (catanh, -1.0L, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5338     TEST_c_c (catanh, plus_zero, 1.0L, plus_zero, M_PI_4l),
5339     TEST_c_c (catanh, minus_zero, 1.0L, minus_zero, M_PI_4l),
5340     TEST_c_c (catanh, plus_zero, -1.0L, plus_zero, -M_PI_4l),
5341     TEST_c_c (catanh, minus_zero, -1.0L, minus_zero, -M_PI_4l),
5342
5343     TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l),
5344     TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l),
5345     TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l),
5346     TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l),
5347
5348     TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l),
5349     TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l),
5350     TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l),
5351     TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l),
5352     TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l),
5353     TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l),
5354     TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l),
5355     TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l),
5356
5357     TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l),
5358     TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l),
5359     TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l),
5360     TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l),
5361
5362     TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l),
5363     TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l),
5364     TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l),
5365     TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l),
5366
5367     TEST_c_c (catanh, 0, qnan_value, 0.0, qnan_value),
5368     TEST_c_c (catanh, minus_zero, qnan_value, minus_zero, qnan_value),
5369
5370     TEST_c_c (catanh, plus_infty, qnan_value, 0.0, qnan_value),
5371     TEST_c_c (catanh, minus_infty, qnan_value, minus_zero, qnan_value),
5372
5373     TEST_c_c (catanh, qnan_value, 0, qnan_value, qnan_value),
5374     TEST_c_c (catanh, qnan_value, minus_zero, qnan_value, qnan_value),
5375
5376     TEST_c_c (catanh, qnan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN),
5377     TEST_c_c (catanh, qnan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN),
5378
5379     TEST_c_c (catanh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5380     TEST_c_c (catanh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5381
5382     TEST_c_c (catanh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5383     TEST_c_c (catanh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5384
5385     TEST_c_c (catanh, qnan_value, qnan_value, qnan_value, qnan_value),
5386
5387     TEST_c_c (catanh, 0x1p50L, 0.0L, 8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5388     TEST_c_c (catanh, 0x1p50L, -0.0L, 8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5389     TEST_c_c (catanh, -0x1p50L, 0.0L, -8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5390     TEST_c_c (catanh, -0x1p50L, -0.0L, -8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5391     TEST_c_c (catanh, 0.0L, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L),
5392     TEST_c_c (catanh, -0.0L, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L),
5393     TEST_c_c (catanh, 0.0L, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L),
5394     TEST_c_c (catanh, -0.0L, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L),
5395 #ifndef TEST_FLOAT
5396     TEST_c_c (catanh, 0x1p500L, 0.0L, 3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5397     TEST_c_c (catanh, 0x1p500L, -0.0L, 3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5398     TEST_c_c (catanh, -0x1p500L, 0.0L, -3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5399     TEST_c_c (catanh, -0x1p500L, -0.0L, -3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5400     TEST_c_c (catanh, 0.0L, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L),
5401     TEST_c_c (catanh, -0.0L, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L),
5402     TEST_c_c (catanh, 0.0L, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L),
5403     TEST_c_c (catanh, -0.0L, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L),
5404 #endif
5405 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5406     TEST_c_c (catanh, 0x1p5000L, 0.0L, 7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5407     TEST_c_c (catanh, 0x1p5000L, -0.0L, 7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5408     TEST_c_c (catanh, -0x1p5000L, 0.0L, -7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5409     TEST_c_c (catanh, -0x1p5000L, -0.0L, -7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5410     TEST_c_c (catanh, 0.0L, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L),
5411     TEST_c_c (catanh, -0.0L, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L),
5412     TEST_c_c (catanh, 0.0L, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L),
5413     TEST_c_c (catanh, -0.0L, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L),
5414 #endif
5415     TEST_c_c (catanh, 0x1p63L, 0.5L, 1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5416     TEST_c_c (catanh, 0x1p63L, -0.5L, 1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5417     TEST_c_c (catanh, -0x1p63L, 0.5L, -1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5418     TEST_c_c (catanh, -0x1p63L, -0.5L, -1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5419     TEST_c_c (catanh, 0.5L, 0x1p63L, 5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5420     TEST_c_c (catanh, -0.5L, 0x1p63L, -5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5421     TEST_c_c (catanh, 0.5L, -0x1p63L, 5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5422     TEST_c_c (catanh, -0.5L, -0x1p63L, -5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5423 #ifndef TEST_FLOAT
5424     TEST_c_c (catanh, 0x1p511L, 0.5L, 1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5425     TEST_c_c (catanh, 0x1p511L, -0.5L, 1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5426     TEST_c_c (catanh, -0x1p511L, 0.5L, -1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5427     TEST_c_c (catanh, -0x1p511L, -0.5L, -1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5428     TEST_c_c (catanh, 0.5L, 0x1p511L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5429     TEST_c_c (catanh, -0.5L, 0x1p511L, -1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5430     TEST_c_c (catanh, 0.5L, -0x1p511L, 1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5431     TEST_c_c (catanh, -0.5L, -0x1p511L, -1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5432 #endif
5433 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5434     TEST_c_c (catanh, 0x1p8191L, 0.5L, 1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5435     TEST_c_c (catanh, 0x1p8191L, -0.5L, 1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5436     TEST_c_c (catanh, -0x1p8191L, 0.5L, -1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5437     TEST_c_c (catanh, -0x1p8191L, -0.5L, -1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5438     TEST_c_c (catanh, 0.5L, 0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5439     TEST_c_c (catanh, -0.5L, 0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5440     TEST_c_c (catanh, 0.5L, -0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5441     TEST_c_c (catanh, -0.5L, -0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5442 #endif
5443     TEST_c_c (catanh, 0x1p100L, 0.0L, 7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5444     TEST_c_c (catanh, 0x1p100L, -0.0L, 7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5445     TEST_c_c (catanh, -0x1p100L, 0.0L, -7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5446     TEST_c_c (catanh, -0x1p100L, -0.0L, -7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5447     TEST_c_c (catanh, 0.0L, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L),
5448     TEST_c_c (catanh, -0.0L, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L),
5449     TEST_c_c (catanh, 0.0L, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L),
5450     TEST_c_c (catanh, -0.0L, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L),
5451     TEST_c_c (catanh, 0x1.fp127L, 0.0L, 3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5452     TEST_c_c (catanh, 0x1.fp127L, -0.0L, 3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5453     TEST_c_c (catanh, -0x1.fp127L, 0.0L, -3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5454     TEST_c_c (catanh, -0x1.fp127L, -0.0L, -3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5455     TEST_c_c (catanh, 0.0L, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L),
5456     TEST_c_c (catanh, -0.0L, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L),
5457     TEST_c_c (catanh, 0.0L, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L),
5458     TEST_c_c (catanh, -0.0L, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L),
5459     TEST_c_c (catanh, 0x1.fp127L, 0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5460     TEST_c_c (catanh, 0x1.fp127L, -0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5461     TEST_c_c (catanh, -0x1.fp127L, 0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5462     TEST_c_c (catanh, -0x1.fp127L, -0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5463 #ifndef TEST_FLOAT
5464     TEST_c_c (catanh, 0x1p900L, 0.0L, 1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5465     TEST_c_c (catanh, 0x1p900L, -0.0L, 1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5466     TEST_c_c (catanh, -0x1p900L, 0.0L, -1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5467     TEST_c_c (catanh, -0x1p900L, -0.0L, -1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5468     TEST_c_c (catanh, 0.0L, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L),
5469     TEST_c_c (catanh, -0.0L, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L),
5470     TEST_c_c (catanh, 0.0L, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L),
5471     TEST_c_c (catanh, -0.0L, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L),
5472     TEST_c_c (catanh, 0x1.fp1023L, 0.0L, 5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5473     TEST_c_c (catanh, 0x1.fp1023L, -0.0L, 5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5474     TEST_c_c (catanh, -0x1.fp1023L, 0.0L, -5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5475     TEST_c_c (catanh, -0x1.fp1023L, -0.0L, -5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5476     TEST_c_c (catanh, 0.0L, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L),
5477     TEST_c_c (catanh, -0.0L, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L),
5478     TEST_c_c (catanh, 0.0L, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L),
5479     TEST_c_c (catanh, -0.0L, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L),
5480     TEST_c_c (catanh, 0x1.fp1023L, 0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5481     TEST_c_c (catanh, 0x1.fp1023L, -0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5482     TEST_c_c (catanh, -0x1.fp1023L, 0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5483     TEST_c_c (catanh, -0x1.fp1023L, -0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5484 #endif
5485 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5486     TEST_c_c (catanh, 0x1p10000L, 0.0L, 5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5487     TEST_c_c (catanh, 0x1p10000L, -0.0L, 5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5488     TEST_c_c (catanh, -0x1p10000L, 0.0L, -5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5489     TEST_c_c (catanh, -0x1p10000L, -0.0L, -5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5490     TEST_c_c (catanh, 0.0L, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L),
5491     TEST_c_c (catanh, -0.0L, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L),
5492     TEST_c_c (catanh, 0.0L, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L),
5493     TEST_c_c (catanh, -0.0L, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L),
5494     TEST_c_c (catanh, 0x1.fp16383L, 0.0L, 8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5495     TEST_c_c (catanh, 0x1.fp16383L, -0.0L, 8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5496     TEST_c_c (catanh, -0x1.fp16383L, 0.0L, -8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5497     TEST_c_c (catanh, -0x1.fp16383L, -0.0L, -8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5498     TEST_c_c (catanh, 0.0L, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L),
5499     TEST_c_c (catanh, -0.0L, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L),
5500     TEST_c_c (catanh, 0.0L, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L),
5501     TEST_c_c (catanh, -0.0L, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L),
5502     TEST_c_c (catanh, 0x1.fp16383L, 0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5503     TEST_c_c (catanh, 0x1.fp16383L, -0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5504     TEST_c_c (catanh, -0x1.fp16383L, 0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5505     TEST_c_c (catanh, -0x1.fp16383L, -0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5506 #endif
5507     TEST_c_c (catanh, 0x1p-13L, 1.0L, 6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5508     TEST_c_c (catanh, 0x1p-13L, -1.0L, 6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5509     TEST_c_c (catanh, -0x1p-13L, 1.0L, -6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5510     TEST_c_c (catanh, -0x1p-13L, -1.0L, -6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5511     TEST_c_c (catanh, 1.0L, 0x1p-13L, 4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5512     TEST_c_c (catanh, -1.0L, 0x1p-13L, -4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5513     TEST_c_c (catanh, 1.0L, -0x1p-13L, 4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5514     TEST_c_c (catanh, -1.0L, -0x1p-13L, -4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5515     TEST_c_c (catanh, 0x1p-27L, 1.0L, 3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5516     TEST_c_c (catanh, 0x1p-27L, -1.0L, 3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5517     TEST_c_c (catanh, -0x1p-27L, 1.0L, -3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5518     TEST_c_c (catanh, -0x1p-27L, -1.0L, -3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5519     TEST_c_c (catanh, 1.0L, 0x1p-27L, 9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5520     TEST_c_c (catanh, -1.0L, 0x1p-27L, -9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5521     TEST_c_c (catanh, 1.0L, -0x1p-27L, 9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5522     TEST_c_c (catanh, -1.0L, -0x1p-27L, -9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5523     TEST_c_c (catanh, 0x1p-33L, 1.0L, 5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5524     TEST_c_c (catanh, 0x1p-33L, -1.0L, 5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5525     TEST_c_c (catanh, -0x1p-33L, 1.0L, -5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5526     TEST_c_c (catanh, -0x1p-33L, -1.0L, -5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5527     TEST_c_c (catanh, 1.0L, 0x1p-33L, 1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5528     TEST_c_c (catanh, -1.0L, 0x1p-33L, -1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5529     TEST_c_c (catanh, 1.0L, -0x1p-33L, 1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5530     TEST_c_c (catanh, -1.0L, -0x1p-33L, -1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5531     TEST_c_c (catanh, 0x1p-54L, 1.0L, 2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5532     TEST_c_c (catanh, 0x1p-54L, -1.0L, 2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5533     TEST_c_c (catanh, -0x1p-54L, 1.0L, -2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5534     TEST_c_c (catanh, -0x1p-54L, -1.0L, -2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5535     TEST_c_c (catanh, 1.0L, 0x1p-54L, 1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5536     TEST_c_c (catanh, -1.0L, 0x1p-54L, -1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5537     TEST_c_c (catanh, 1.0L, -0x1p-54L, 1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5538     TEST_c_c (catanh, -1.0L, -0x1p-54L, -1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5539     TEST_c_c (catanh, 0x1p-57L, 1.0L, 3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5540     TEST_c_c (catanh, 0x1p-57L, -1.0L, 3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5541     TEST_c_c (catanh, -0x1p-57L, 1.0L, -3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5542     TEST_c_c (catanh, -0x1p-57L, -1.0L, -3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5543     TEST_c_c (catanh, 1.0L, 0x1p-57L, 2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5544     TEST_c_c (catanh, -1.0L, 0x1p-57L, -2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5545     TEST_c_c (catanh, 1.0L, -0x1p-57L, 2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5546     TEST_c_c (catanh, -1.0L, -0x1p-57L, -2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5547     TEST_c_c (catanh, 0x1p-13L, 0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5548     TEST_c_c (catanh, 0x1p-13L, -0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5549     TEST_c_c (catanh, -0x1p-13L, 0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5550     TEST_c_c (catanh, -0x1p-13L, -0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5551     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-13L, 4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5552     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-13L, -4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5553     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-13L, 4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5554     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-13L, -4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5555     TEST_c_c (catanh, 0x1p-13L, 0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5556     TEST_c_c (catanh, 0x1p-13L, -0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5557     TEST_c_c (catanh, -0x1p-13L, 0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5558     TEST_c_c (catanh, -0x1p-13L, -0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5559     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-13L, 4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5560     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-13L, -4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5561     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-13L, 4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5562     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-13L, -4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5563 #ifndef TEST_FLOAT
5564     TEST_c_c (catanh, 0x1p-27L, 0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5565     TEST_c_c (catanh, 0x1p-27L, -0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5566     TEST_c_c (catanh, -0x1p-27L, 0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5567     TEST_c_c (catanh, -0x1p-27L, -0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5568     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-27L, 9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5569     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-27L, -9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5570     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-27L, 9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5571     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-27L, -9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5572     TEST_c_c (catanh, 0x1p-27L, 0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5573     TEST_c_c (catanh, 0x1p-27L, -0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5574     TEST_c_c (catanh, -0x1p-27L, 0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5575     TEST_c_c (catanh, -0x1p-27L, -0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5576     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-27L, 9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5577     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-27L, -9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5578     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-27L, 9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5579     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-27L, -9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5580 #endif
5581 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5582     TEST_c_c (catanh, 0x1p-33L, 0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5583     TEST_c_c (catanh, 0x1p-33L, -0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5584     TEST_c_c (catanh, -0x1p-33L, 0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5585     TEST_c_c (catanh, -0x1p-33L, -0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5586     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-33L, 1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5587     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-33L, -1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5588     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-33L, 1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5589     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-33L, -1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5590     TEST_c_c (catanh, 0x1p-33L, 0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5591     TEST_c_c (catanh, 0x1p-33L, -0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5592     TEST_c_c (catanh, -0x1p-33L, 0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5593     TEST_c_c (catanh, -0x1p-33L, -0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5594     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-33L, 1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5595     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-33L, -1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5596     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-33L, 1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5597     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-33L, -1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5598 #endif
5599 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5600     TEST_c_c (catanh, 0x1p-54L, 0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5601     TEST_c_c (catanh, 0x1p-54L, -0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5602     TEST_c_c (catanh, -0x1p-54L, 0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5603     TEST_c_c (catanh, -0x1p-54L, -0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5604     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-54L, 1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5605     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-54L, -1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5606     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-54L, 1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5607     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-54L, -1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5608     TEST_c_c (catanh, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5609     TEST_c_c (catanh, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5610     TEST_c_c (catanh, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5611     TEST_c_c (catanh, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5612     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5613     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5614     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5615     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5616 #endif
5617 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5618     TEST_c_c (catanh, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5619     TEST_c_c (catanh, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5620     TEST_c_c (catanh, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5621     TEST_c_c (catanh, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5622     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5623     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5624     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5625     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5626     TEST_c_c (catanh, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5627     TEST_c_c (catanh, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5628     TEST_c_c (catanh, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5629     TEST_c_c (catanh, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5630     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5631     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5632     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5633     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5634 #endif
5635     TEST_c_c (catanh, 1.0L, 0x1p-64L, 2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5636     TEST_c_c (catanh, 1.0L, -0x1p-64L, 2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5637     TEST_c_c (catanh, -1.0L, 0x1p-64L, -2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5638     TEST_c_c (catanh, -1.0L, -0x1p-64L, -2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5639     TEST_c_c (catanh, 0x1p-64L, 1.0L, 2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5640     TEST_c_c (catanh, -0x1p-64L, 1.0L, -2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5641     TEST_c_c (catanh, 0x1p-64L, -1.0L, 2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5642     TEST_c_c (catanh, -0x1p-64L, -1.0L, -2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5643     TEST_c_c (catanh, 1.0L, 0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5644     TEST_c_c (catanh, 1.0L, -0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5645     TEST_c_c (catanh, -1.0L, 0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5646     TEST_c_c (catanh, -1.0L, -0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5647     TEST_c_c (catanh, 0x1.3p-73L, 1.0L, 6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5648     TEST_c_c (catanh, -0x1.3p-73L, 1.0L, -6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5649     TEST_c_c (catanh, 0x1.3p-73L, -1.0L, 6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5650     TEST_c_c (catanh, -0x1.3p-73L, -1.0L, -6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5651     TEST_c_c (catanh, 1.0L, 0x1p-124L, 4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5652     TEST_c_c (catanh, 1.0L, -0x1p-124L, 4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5653     TEST_c_c (catanh, -1.0L, 0x1p-124L, -4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5654     TEST_c_c (catanh, -1.0L, -0x1p-124L, -4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5655     TEST_c_c (catanh, 0x1p-124L, 1.0L, 2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5656     TEST_c_c (catanh, -0x1p-124L, 1.0L, -2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5657     TEST_c_c (catanh, 0x1p-124L, -1.0L, 2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5658     TEST_c_c (catanh, -0x1p-124L, -1.0L, -2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5659     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-126L, 8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5660     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-126L, 8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5661     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-126L, -8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5662     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-126L, -8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5663     TEST_c_c (catanh, 0x1p-126L, 0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5664     TEST_c_c (catanh, -0x1p-126L, 0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5665     TEST_c_c (catanh, 0x1p-126L, -0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5666     TEST_c_c (catanh, -0x1p-126L, -0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5667     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-126L, 8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5668     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-126L, 8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5669     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-126L, -8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5670     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-126L, -8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5671     TEST_c_c (catanh, 0x1p-126L, 0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5672     TEST_c_c (catanh, -0x1p-126L, 0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5673     TEST_c_c (catanh, 0x1p-126L, -0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5674     TEST_c_c (catanh, -0x1p-126L, -0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5675 #ifndef TEST_FLOAT
5676     TEST_c_c (catanh, 1.0L, 0x1p-512L, 1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5677     TEST_c_c (catanh, 1.0L, -0x1p-512L, 1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5678     TEST_c_c (catanh, -1.0L, 0x1p-512L, -1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5679     TEST_c_c (catanh, -1.0L, -0x1p-512L, -1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5680     TEST_c_c (catanh, 0x1p-512L, 1.0L, 3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5681     TEST_c_c (catanh, -0x1p-512L, 1.0L, -3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5682     TEST_c_c (catanh, 0x1p-512L, -1.0L, 3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5683     TEST_c_c (catanh, -0x1p-512L, -1.0L, -3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5684     TEST_c_c (catanh, 1.0L, 0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5685     TEST_c_c (catanh, 1.0L, -0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5686     TEST_c_c (catanh, -1.0L, 0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5687     TEST_c_c (catanh, -1.0L, -0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5688     TEST_c_c (catanh, 0x1.3p-536L, 1.0L, 2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5689     TEST_c_c (catanh, -0x1.3p-536L, 1.0L, -2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5690     TEST_c_c (catanh, 0x1.3p-536L, -1.0L, 2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5691     TEST_c_c (catanh, -0x1.3p-536L, -1.0L, -2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5692     TEST_c_c (catanh, 1.0L, 0x1p-1020L, 3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5693     TEST_c_c (catanh, 1.0L, -0x1p-1020L, 3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5694     TEST_c_c (catanh, -1.0L, 0x1p-1020L, -3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5695     TEST_c_c (catanh, -1.0L, -0x1p-1020L, -3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5696     TEST_c_c (catanh, 0x1p-1020L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5697     TEST_c_c (catanh, -0x1p-1020L, 1.0L, -4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5698     TEST_c_c (catanh, 0x1p-1020L, -1.0L, 4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5699     TEST_c_c (catanh, -0x1p-1020L, -1.0L, -4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5700     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-1022L, 1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5701     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-1022L, 1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5702     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-1022L, -1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5703     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-1022L, -1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5704     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5705     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5706     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5707     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5708     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-1022L, 1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5709     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-1022L, 1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5710     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-1022L, -1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5711     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-1022L, -1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5712     TEST_c_c (catanh, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5713     TEST_c_c (catanh, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5714     TEST_c_c (catanh, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5715     TEST_c_c (catanh, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5716 #endif
5717 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5718     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-1022L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5719     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-1022L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5720     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-1022L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5721     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-1022L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5722     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5723     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5724     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5725     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5726     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5727     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5728     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5729     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5730     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5731     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5732     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5733     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5734 #endif
5735 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5736     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5737     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5738     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5739     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5740     TEST_c_c (catanh, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5741     TEST_c_c (catanh, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5742     TEST_c_c (catanh, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5743     TEST_c_c (catanh, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5744     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5745     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5746     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5747     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5748     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5749     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5750     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5751     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5752 #endif
5753 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5754     TEST_c_c (catanh, 1.0L, 0x1p-8192L, 2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5755     TEST_c_c (catanh, 1.0L, -0x1p-8192L, 2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5756     TEST_c_c (catanh, -1.0L, 0x1p-8192L, -2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5757     TEST_c_c (catanh, -1.0L, -0x1p-8192L, -2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5758     TEST_c_c (catanh, 0x1p-8192L, 1.0L, 4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5759     TEST_c_c (catanh, -0x1p-8192L, 1.0L, -4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5760     TEST_c_c (catanh, 0x1p-8192L, -1.0L, 4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5761     TEST_c_c (catanh, -0x1p-8192L, -1.0L, -4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5762     TEST_c_c (catanh, 1.0L, 0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5763     TEST_c_c (catanh, 1.0L, -0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5764     TEST_c_c (catanh, -1.0L, 0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5765     TEST_c_c (catanh, -1.0L, -0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5766     TEST_c_c (catanh, 0x1.3p-8221L, 1.0L, 1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5767     TEST_c_c (catanh, -0x1.3p-8221L, 1.0L, -1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5768     TEST_c_c (catanh, 0x1.3p-8221L, -1.0L, 1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5769     TEST_c_c (catanh, -0x1.3p-8221L, -1.0L, -1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5770     TEST_c_c (catanh, 1.0L, 0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5771     TEST_c_c (catanh, 1.0L, -0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5772     TEST_c_c (catanh, -1.0L, 0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5773     TEST_c_c (catanh, -1.0L, -0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5774     TEST_c_c (catanh, 0x1.3p-8246L, 1.0L, 3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5775     TEST_c_c (catanh, -0x1.3p-8246L, 1.0L, -3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5776     TEST_c_c (catanh, 0x1.3p-8246L, -1.0L, 3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5777     TEST_c_c (catanh, -0x1.3p-8246L, -1.0L, -3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5778     TEST_c_c (catanh, 1.0L, 0x1p-16380L, 5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5779     TEST_c_c (catanh, 1.0L, -0x1p-16380L, 5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5780     TEST_c_c (catanh, -1.0L, 0x1p-16380L, -5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5781     TEST_c_c (catanh, -1.0L, -0x1p-16380L, -5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5782     TEST_c_c (catanh, 0x1p-16380L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5783     TEST_c_c (catanh, -0x1p-16380L, 1.0L, -6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5784     TEST_c_c (catanh, 0x1p-16380L, -1.0L, 6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5785     TEST_c_c (catanh, -0x1p-16380L, -1.0L, -6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5786     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-16382L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5787     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-16382L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5788     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-16382L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5789     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-16382L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5790     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5791     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5792     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5793     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5794     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5795     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5796     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5797     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5798     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5799     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5800     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5801     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5802 # if LDBL_MANT_DIG >= 113
5803     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5804     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5805     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5806     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5807     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5808     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5809     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5810     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5811     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5812     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5813     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5814     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5815     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5816     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5817     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5818     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5819 # endif
5820 #endif
5821
5822     TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L),
5823     TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L),
5824   };
5825
5826 static void
5827 catanh_test (void)
5828 {
5829   START (catanh);
5830   RUN_TEST_LOOP_c_c (catanh, catanh_test_data, );
5831   END_COMPLEX;
5832 }
5833
5834 static const struct test_f_f_data cbrt_test_data[] =
5835   {
5836     TEST_f_f (cbrt, 0.0, 0.0),
5837     TEST_f_f (cbrt, minus_zero, minus_zero),
5838
5839     TEST_f_f (cbrt, plus_infty, plus_infty),
5840     TEST_f_f (cbrt, minus_infty, minus_infty),
5841     TEST_f_f (cbrt, qnan_value, qnan_value),
5842
5843     TEST_f_f (cbrt, -0.001L, -0.1L),
5844     TEST_f_f (cbrt, 8, 2),
5845     TEST_f_f (cbrt, -27.0, -3.0),
5846     TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L),
5847     TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L),
5848
5849 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5850     TEST_f_f (cbrt, 0x1p16383L, 0x1p5461L),
5851     TEST_f_f (cbrt, 0x1p-16383L, 0x1p-5461L),
5852 #endif
5853   };
5854
5855 static void
5856 cbrt_test (void)
5857 {
5858   START (cbrt);
5859   RUN_TEST_LOOP_f_f (cbrt, cbrt_test_data, );
5860   END;
5861 }
5862
5863
5864 static const struct test_c_c_data ccos_test_data[] =
5865   {
5866     TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero),
5867     TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0),
5868     TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0),
5869     TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero),
5870
5871     TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5872     TEST_c_c (ccos, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5873     TEST_c_c (ccos, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5874     TEST_c_c (ccos, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5875
5876     TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero),
5877     TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0),
5878     TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0),
5879     TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero),
5880
5881     TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5882     TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5883     TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5884     TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5885
5886     TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty),
5887     TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty),
5888     TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty),
5889     TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty),
5890
5891     TEST_c_c (ccos, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5892     TEST_c_c (ccos, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5893     TEST_c_c (ccos, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5894     TEST_c_c (ccos, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5895
5896     TEST_c_c (ccos, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5897     TEST_c_c (ccos, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5898
5899     TEST_c_c (ccos, qnan_value, plus_infty, plus_infty, qnan_value),
5900     TEST_c_c (ccos, qnan_value, minus_infty, plus_infty, qnan_value),
5901
5902     TEST_c_c (ccos, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5903     TEST_c_c (ccos, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5904
5905     TEST_c_c (ccos, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5906     TEST_c_c (ccos, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5907
5908     TEST_c_c (ccos, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5909     TEST_c_c (ccos, -10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5910
5911     TEST_c_c (ccos, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5912     TEST_c_c (ccos, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5913
5914     TEST_c_c (ccos, qnan_value, qnan_value, qnan_value, qnan_value),
5915
5916     TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L),
5917     TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L),
5918
5919     TEST_c_c (ccos, 0.75, 89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5920     TEST_c_c (ccos, 0.75, -89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5921     TEST_c_c (ccos, -0.75, 89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5922     TEST_c_c (ccos, -0.75, -89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5923
5924 #ifndef TEST_FLOAT
5925     TEST_c_c (ccos, 0.75, 710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5926     TEST_c_c (ccos, 0.75, -710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5927     TEST_c_c (ccos, -0.75, 710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5928     TEST_c_c (ccos, -0.75, -710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5929 #endif
5930
5931 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5932     TEST_c_c (ccos, 0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5933     TEST_c_c (ccos, 0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5934     TEST_c_c (ccos, -0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5935     TEST_c_c (ccos, -0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5936 #endif
5937
5938 #ifdef TEST_FLOAT
5939     TEST_c_c (ccos, 0x1p-149, 180, plus_infty, -1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5940 #endif
5941
5942 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5943     TEST_c_c (ccos, 0x1p-1074, 1440, plus_infty, -5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5944 #endif
5945
5946 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5947     TEST_c_c (ccos, 0x1p-16434L, 22730, plus_infty, -1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5948 #endif
5949
5950     TEST_c_c (ccos, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5951     TEST_c_c (ccos, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5952   };
5953
5954 static void
5955 ccos_test (void)
5956 {
5957   START (ccos);
5958   RUN_TEST_LOOP_c_c (ccos, ccos_test_data, );
5959   END_COMPLEX;
5960 }
5961
5962
5963 static const struct test_c_c_data ccosh_test_data[] =
5964   {
5965     TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0),
5966     TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero),
5967     TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero),
5968     TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0),
5969
5970     TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5971     TEST_c_c (ccosh, minus_zero, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5972     TEST_c_c (ccosh, 0.0, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5973     TEST_c_c (ccosh, minus_zero, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5974
5975     TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0),
5976     TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero),
5977     TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero),
5978     TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0),
5979
5980     TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5981     TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5982     TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5983     TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5984
5985     TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty),
5986     TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty),
5987     TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty),
5988     TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty),
5989
5990     TEST_c_c (ccosh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5991     TEST_c_c (ccosh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5992     TEST_c_c (ccosh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5993     TEST_c_c (ccosh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5994
5995     TEST_c_c (ccosh, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5996     TEST_c_c (ccosh, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5997
5998     TEST_c_c (ccosh, plus_infty, qnan_value, plus_infty, qnan_value),
5999     TEST_c_c (ccosh, minus_infty, qnan_value, plus_infty, qnan_value),
6000
6001     TEST_c_c (ccosh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6002     TEST_c_c (ccosh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6003
6004     TEST_c_c (ccosh, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
6005     TEST_c_c (ccosh, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
6006
6007     TEST_c_c (ccosh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6008     TEST_c_c (ccosh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6009
6010     TEST_c_c (ccosh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6011     TEST_c_c (ccosh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6012
6013     TEST_c_c (ccosh, qnan_value, qnan_value, qnan_value, qnan_value),
6014
6015     TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L),
6016
6017     TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L),
6018
6019     TEST_c_c (ccosh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
6020     TEST_c_c (ccosh, -89.5, 0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
6021     TEST_c_c (ccosh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
6022     TEST_c_c (ccosh, -89.5, -0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
6023
6024 #ifndef TEST_FLOAT
6025     TEST_c_c (ccosh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
6026     TEST_c_c (ccosh, -710.5, 0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
6027     TEST_c_c (ccosh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
6028     TEST_c_c (ccosh, -710.5, -0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
6029 #endif
6030
6031 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6032     TEST_c_c (ccosh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
6033     TEST_c_c (ccosh, -11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
6034     TEST_c_c (ccosh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
6035     TEST_c_c (ccosh, -11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
6036 #endif
6037
6038 #ifdef TEST_FLOAT
6039     TEST_c_c (ccosh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
6040 #endif
6041
6042 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6043     TEST_c_c (ccosh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
6044 #endif
6045
6046 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6047     TEST_c_c (ccosh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
6048 #endif
6049
6050     TEST_c_c (ccosh, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6051     TEST_c_c (ccosh, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6052   };
6053
6054 static void
6055 ccosh_test (void)
6056 {
6057   START (ccosh);
6058   RUN_TEST_LOOP_c_c (ccosh, ccosh_test_data, );
6059   END_COMPLEX;
6060 }
6061
6062
6063 static const struct test_f_f_data ceil_test_data[] =
6064   {
6065     TEST_f_f (ceil, 0.0, 0.0, NO_INEXACT_EXCEPTION),
6066     TEST_f_f (ceil, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
6067     TEST_f_f (ceil, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
6068     TEST_f_f (ceil, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
6069     TEST_f_f (ceil, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
6070
6071     /* Bug 15479: spurious "inexact" exception may occur.  */
6072     TEST_f_f (ceil, M_PIl, 4.0),
6073     TEST_f_f (ceil, -M_PIl, -3.0),
6074     TEST_f_f (ceil, 0.1, 1.0),
6075     TEST_f_f (ceil, 0.25, 1.0),
6076     TEST_f_f (ceil, 0.625, 1.0),
6077     TEST_f_f (ceil, -0.1, minus_zero),
6078     TEST_f_f (ceil, -0.25, minus_zero),
6079     TEST_f_f (ceil, -0.625, minus_zero),
6080
6081 #ifdef TEST_LDOUBLE
6082     /* The result can only be represented in long double.  */
6083     TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L),
6084     TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L),
6085     TEST_f_f (ceil, 4503599627370496.5L, 4503599627370497.0L),
6086     TEST_f_f (ceil, 4503599627370496.75L, 4503599627370497.0L),
6087     TEST_f_f (ceil, 4503599627370497.5L, 4503599627370498.0L),
6088
6089     TEST_f_f (ceil, -4503599627370495.5L, -4503599627370495.0L),
6090     TEST_f_f (ceil, -4503599627370496.25L, -4503599627370496.0L),
6091     TEST_f_f (ceil, -4503599627370496.5L, -4503599627370496.0L),
6092     TEST_f_f (ceil, -4503599627370496.75L, -4503599627370496.0L),
6093     TEST_f_f (ceil, -4503599627370497.5L, -4503599627370497.0L),
6094
6095 # if LDBL_MANT_DIG > 100
6096     TEST_f_f (ceil, 4503599627370494.5000000000001L, 4503599627370495.0L),
6097     TEST_f_f (ceil, 4503599627370495.5000000000001L, 4503599627370496.0L),
6098     TEST_f_f (ceil, 4503599627370496.5000000000001L, 4503599627370497.0L),
6099     TEST_f_f (ceil, -4503599627370494.5000000000001L, -4503599627370494.0L),
6100     TEST_f_f (ceil, -4503599627370495.5000000000001L, -4503599627370495.0L),
6101     TEST_f_f (ceil, -4503599627370496.5000000000001L, -4503599627370496.0L),
6102 # endif
6103
6104     TEST_f_f (ceil, 9007199254740991.5L, 9007199254740992.0L),
6105     TEST_f_f (ceil, 9007199254740992.25L, 9007199254740993.0L),
6106     TEST_f_f (ceil, 9007199254740992.5L, 9007199254740993.0L),
6107     TEST_f_f (ceil, 9007199254740992.75L, 9007199254740993.0L),
6108     TEST_f_f (ceil, 9007199254740993.5L, 9007199254740994.0L),
6109
6110     TEST_f_f (ceil, -9007199254740991.5L, -9007199254740991.0L),
6111     TEST_f_f (ceil, -9007199254740992.25L, -9007199254740992.0L),
6112     TEST_f_f (ceil, -9007199254740992.5L, -9007199254740992.0L),
6113     TEST_f_f (ceil, -9007199254740992.75L, -9007199254740992.0L),
6114     TEST_f_f (ceil, -9007199254740993.5L, -9007199254740993.0L),
6115
6116 # if LDBL_MANT_DIG > 100
6117     TEST_f_f (ceil, 9007199254740991.0000000000001L, 9007199254740992.0L),
6118     TEST_f_f (ceil, 9007199254740992.0000000000001L, 9007199254740993.0L),
6119     TEST_f_f (ceil, 9007199254740993.0000000000001L, 9007199254740994.0L),
6120     TEST_f_f (ceil, 9007199254740991.5000000000001L, 9007199254740992.0L),
6121     TEST_f_f (ceil, 9007199254740992.5000000000001L, 9007199254740993.0L),
6122     TEST_f_f (ceil, 9007199254740993.5000000000001L, 9007199254740994.0L),
6123
6124     TEST_f_f (ceil, -9007199254740991.0000000000001L, -9007199254740991.0L),
6125     TEST_f_f (ceil, -9007199254740992.0000000000001L, -9007199254740992.0L),
6126     TEST_f_f (ceil, -9007199254740993.0000000000001L, -9007199254740993.0L),
6127     TEST_f_f (ceil, -9007199254740991.5000000000001L, -9007199254740991.0L),
6128     TEST_f_f (ceil, -9007199254740992.5000000000001L, -9007199254740992.0L),
6129     TEST_f_f (ceil, -9007199254740993.5000000000001L, -9007199254740993.0L),
6130 # endif
6131
6132     TEST_f_f (ceil, 72057594037927935.5L, 72057594037927936.0L),
6133     TEST_f_f (ceil, 72057594037927936.25L, 72057594037927937.0L),
6134     TEST_f_f (ceil, 72057594037927936.5L, 72057594037927937.0L),
6135     TEST_f_f (ceil, 72057594037927936.75L, 72057594037927937.0L),
6136     TEST_f_f (ceil, 72057594037927937.5L, 72057594037927938.0L),
6137
6138     TEST_f_f (ceil, -72057594037927935.5L, -72057594037927935.0L),
6139     TEST_f_f (ceil, -72057594037927936.25L, -72057594037927936.0L),
6140     TEST_f_f (ceil, -72057594037927936.5L, -72057594037927936.0L),
6141     TEST_f_f (ceil, -72057594037927936.75L, -72057594037927936.0L),
6142     TEST_f_f (ceil, -72057594037927937.5L, -72057594037927937.0L),
6143
6144     TEST_f_f (ceil, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
6145     TEST_f_f (ceil, 10141204801825835211973625643008.25L, 10141204801825835211973625643009.0L),
6146     TEST_f_f (ceil, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
6147     TEST_f_f (ceil, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
6148     TEST_f_f (ceil, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
6149 #endif
6150   };
6151
6152 static void
6153 ceil_test (void)
6154 {
6155   START (ceil);
6156   RUN_TEST_LOOP_f_f (ceil, ceil_test_data, );
6157   END;
6158 }
6159
6160
6161 static const struct test_c_c_data cexp_test_data[] =
6162   {
6163     TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0),
6164     TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0),
6165     TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero),
6166     TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero),
6167
6168     TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0),
6169     TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero),
6170
6171     TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0),
6172     TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero),
6173
6174     TEST_c_c (cexp, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6175     TEST_c_c (cexp, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6176
6177     TEST_c_c (cexp, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6178     TEST_c_c (cexp, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6179
6180     TEST_c_c (cexp, 100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6181     TEST_c_c (cexp, -100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6182
6183     TEST_c_c (cexp, 100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6184     TEST_c_c (cexp, -100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6185
6186     TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0),
6187     TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero),
6188     TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty),
6189     TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty),
6190
6191     TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6192     TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6193
6194     TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN),
6195     TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN),
6196
6197     TEST_c_c (cexp, minus_infty, qnan_value, 0, 0, IGNORE_ZERO_INF_SIGN),
6198
6199     TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value),
6200
6201     TEST_c_c (cexp, qnan_value, 0.0, qnan_value, 0.0),
6202     TEST_c_c (cexp, qnan_value, minus_zero, qnan_value, minus_zero),
6203     TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6204
6205     TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6206     TEST_c_c (cexp, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6207     TEST_c_c (cexp, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6208     TEST_c_c (cexp, qnan_value, qnan_value, qnan_value, qnan_value),
6209
6210     TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L),
6211     TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L),
6212
6213     TEST_c_c (cexp, 0, 0x1p65, 0.99888622066058013610642172179340364209972L, -0.047183876212354673805106149805700013943218L),
6214     TEST_c_c (cexp, 0, -0x1p65, 0.99888622066058013610642172179340364209972L, 0.047183876212354673805106149805700013943218L),
6215     TEST_c_c (cexp, 50, 0x1p127, 4.053997150228616856622417636046265337193e21L, 3.232070315463388524466674772633810238819e21L),
6216
6217 #ifndef TEST_FLOAT
6218     TEST_c_c (cexp, 0, 1e22, 0.5232147853951389454975944733847094921409L, -0.8522008497671888017727058937530293682618L),
6219     TEST_c_c (cexp, 0, 0x1p1023, -0.826369834614147994500785680811743734805L, 0.5631277798508840134529434079444683477104L),
6220     TEST_c_c (cexp, 500, 0x1p1023, -1.159886268932754433233243794561351783426e217L, 7.904017694554466595359379965081774849708e216L),
6221 #endif
6222
6223 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6224     TEST_c_c (cexp, 0, 0x1p16383L, 0.9210843909921906206874509522505756251609L, 0.3893629985894208126948115852610595405563L),
6225     TEST_c_c (cexp, -10000, 0x1p16383L, 1.045876464564882298442774542991176546722e-4343L, 4.421154026488516836023811173959413420548e-4344L),
6226 #endif
6227
6228     TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L),
6229     TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L, UNDERFLOW_EXCEPTION_FLOAT),
6230
6231 #ifndef TEST_FLOAT
6232     TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L),
6233     TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L, UNDERFLOW_EXCEPTION_DOUBLE),
6234 #endif
6235
6236 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6237     TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L),
6238     TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L, UNDERFLOW_EXCEPTION),
6239 #endif
6240
6241 #ifdef TEST_FLOAT
6242     TEST_c_c (cexp, 180, 0x1p-149, plus_infty, 2.087071793345235105931967606907855310664e33L, OVERFLOW_EXCEPTION),
6243 #endif
6244
6245 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6246     TEST_c_c (cexp, 1440, 0x1p-1074, plus_infty, 1.196295853897226111293303155636183216483e302L, OVERFLOW_EXCEPTION),
6247 #endif
6248
6249 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6250     TEST_c_c (cexp, 22730, 0x1p-16434L, plus_infty, 2.435706297811211974162115164702304105374e4924L, OVERFLOW_EXCEPTION),
6251 #endif
6252
6253     TEST_c_c (cexp, 1e6, 0, plus_infty, 0, OVERFLOW_EXCEPTION),
6254     TEST_c_c (cexp, 1e6, min_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
6255     TEST_c_c (cexp, 1e6, -min_value, plus_infty, minus_infty, OVERFLOW_EXCEPTION),
6256
6257     TEST_c_c (cexp, min_value, min_subnorm_value, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6258     TEST_c_c (cexp, min_value, -min_subnorm_value, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
6259   };
6260
6261 static void
6262 cexp_test (void)
6263 {
6264   START (cexp);
6265   RUN_TEST_LOOP_c_c (cexp, cexp_test_data, );
6266   END_COMPLEX;
6267 }
6268
6269
6270 static const struct test_c_f_data cimag_test_data[] =
6271   {
6272     TEST_c_f (cimag, 1.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
6273     TEST_c_f (cimag, 1.0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
6274     TEST_c_f (cimag, 1.0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
6275     TEST_c_f (cimag, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
6276     TEST_c_f (cimag, 1.0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
6277     TEST_c_f (cimag, 1.0, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
6278     TEST_c_f (cimag, 2.0, 3.0, 3.0, NO_INEXACT_EXCEPTION),
6279   };
6280
6281 static void
6282 cimag_test (void)
6283 {
6284   START (cimag);
6285   RUN_TEST_LOOP_c_f (cimag, cimag_test_data, );
6286   END;
6287 }
6288
6289 static const struct test_c_c_data clog_test_data[] =
6290   {
6291     TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6292     TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6293
6294     TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6295     TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6296
6297     TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l),
6298     TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l),
6299
6300     TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l),
6301     TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l),
6302
6303     TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l),
6304     TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l),
6305     TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l),
6306     TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l),
6307     TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l),
6308     TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l),
6309     TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l),
6310     TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l),
6311
6312     TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl),
6313     TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl),
6314     TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl),
6315     TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl),
6316
6317     TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0),
6318     TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0),
6319     TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero),
6320     TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero),
6321
6322     TEST_c_c (clog, plus_infty, qnan_value, plus_infty, qnan_value),
6323     TEST_c_c (clog, minus_infty, qnan_value, plus_infty, qnan_value),
6324
6325     TEST_c_c (clog, qnan_value, plus_infty, plus_infty, qnan_value),
6326     TEST_c_c (clog, qnan_value, minus_infty, plus_infty, qnan_value),
6327
6328     TEST_c_c (clog, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6329     TEST_c_c (clog, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6330     TEST_c_c (clog, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6331     TEST_c_c (clog, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6332
6333     TEST_c_c (clog, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6334     TEST_c_c (clog, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6335     TEST_c_c (clog, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6336     TEST_c_c (clog, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6337
6338     TEST_c_c (clog, qnan_value, qnan_value, qnan_value, qnan_value),
6339
6340     TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L),
6341     TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L),
6342
6343     TEST_c_c (clog, 0x1.fffffep+127L, 0x1.fffffep+127L, 89.06941264234832570836679262104313101776L, M_PI_4l),
6344     TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6345     TEST_c_c (clog, 0x1p-149L, 0x1p-149L, -102.9323563131518784484589700365392203592L, M_PI_4l),
6346     TEST_c_c (clog, 0x1p-147L, 0x1p-147L, -101.5460619520319878296245057936228672231L, M_PI_4l),
6347
6348 #ifndef TEST_FLOAT
6349     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 710.1292864836639693869320059713862337880L, M_PI_4l),
6350     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 709.8942846690411016323109979483151967689L, 0.4636476090008061606231772164674799632783L),
6351     TEST_c_c (clog, 0x1p-1074L, 0x1p-1074L, -744.0934983311012896593986823853525458290L, M_PI_4l),
6352     TEST_c_c (clog, 0x1p-1073L, 0x1p-1073L, -743.4003511505413443499814502638943692610L, M_PI_4l),
6353 #endif
6354
6355 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6356     TEST_c_c (clog, 0x1.fp+16383L, 0x1.fp+16383L, 11356.83823118610934184548269774874545400L, M_PI_4l),
6357     TEST_c_c (clog, 0x1.fp+16383L, 0x1p+16383L, 11356.60974243783798653123798337822335902L, 0.4764674194737066993385333770295162295856L),
6358     TEST_c_c (clog, 0x1p-16440L, 0x1p-16441L, -11395.22807662984378194141292922726786191L, 0.4636476090008061162142562314612144020285L),
6359 #endif
6360
6361     TEST_c_c (clog, 0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6362     TEST_c_c (clog, -0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6363     TEST_c_c (clog, 0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6364     TEST_c_c (clog, -0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6365     TEST_c_c (clog, -0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, M_PIl),
6366     TEST_c_c (clog, -0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, -M_PIl),
6367 #ifdef TEST_FLOAT
6368     TEST_c_c (clog, 0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, plus_zero, UNDERFLOW_EXCEPTION),
6369     TEST_c_c (clog, 0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, minus_zero, UNDERFLOW_EXCEPTION),
6370 #endif
6371
6372 #ifndef TEST_FLOAT
6373     TEST_c_c (clog, 0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6374     TEST_c_c (clog, -0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6375     TEST_c_c (clog, 0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6376     TEST_c_c (clog, -0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6377     TEST_c_c (clog, -0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, M_PIl),
6378     TEST_c_c (clog, -0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, -M_PIl),
6379 #endif
6380 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6381     TEST_c_c (clog, 0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, plus_zero, UNDERFLOW_EXCEPTION),
6382     TEST_c_c (clog, 0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, minus_zero, UNDERFLOW_EXCEPTION),
6383 #endif
6384
6385 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6386     TEST_c_c (clog, 0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6387     TEST_c_c (clog, -0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6388     TEST_c_c (clog, 0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6389     TEST_c_c (clog, -0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6390     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, M_PIl),
6391     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, -M_PIl),
6392     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6393     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6394 # if LDBL_MANT_DIG >= 113
6395     TEST_c_c (clog, 0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6396     TEST_c_c (clog, -0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6397     TEST_c_c (clog, 0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6398     TEST_c_c (clog, -0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6399     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, M_PIl),
6400     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, -M_PIl),
6401     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6402     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6403 # endif
6404 #endif
6405
6406     TEST_c_c (clog, 1.0L, 0x1.234566p-10L, 6.172834701221959432440126967147726538097e-7L, 1.111110564353742042376451655136933182201e-3L),
6407     TEST_c_c (clog, -1.0L, 0x1.234566p-20L, 5.886877547844618300918562490463748605537e-13L, 3.141591568520436206990380699322226378452L),
6408     TEST_c_c (clog, 0x1.234566p-30L, 1.0L, 5.614163921211322622623353961365728040115e-19L, 1.570796325735258575254858696548386439740L),
6409     TEST_c_c (clog, -0x1.234566p-40L, -1.0L, 5.354083939753840089583620652120903838944e-25L, -1.570796326795931422008642456283782656359L),
6410     TEST_c_c (clog, 0x1.234566p-50L, 1.0L, 5.106052341226425256332038420428899201070e-31L, 1.570796326794895608681734464330528755366L),
6411     TEST_c_c (clog, 0x1.234566p-60L, 1.0L, 4.869510976053643471080816669875627875933e-37L, 1.570796326794896618244456860363082279319L),
6412     TEST_c_c (clog, 0x1p-62L, 1.0L, 2.350988701644575015937473074444491355582e-38L, 1.570796326794896619014481257142650555297L),
6413     TEST_c_c (clog, 0x1p-63L, 1.0L, 5.877471754111437539843682686111228389059e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
6414     TEST_c_c (clog, 0x1p-64L, 1.0L, 1.469367938527859384960920671527807097271e-39L, 1.570796326794896619177111583015476220398L, UNDERFLOW_EXCEPTION_FLOAT),
6415 #ifndef TEST_FLOAT
6416     TEST_c_c (clog, 0x1p-510L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6417     TEST_c_c (clog, 0x1p-511L, 1.0L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6418     TEST_c_c (clog, 0x1p-512L, 1.0L, 2.781342323134001728862790896665505080274e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6419 #endif
6420 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6421     TEST_c_c (clog, 0x1p-8190L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 1.570796326794896619231321691639751442099L),
6422     TEST_c_c (clog, 0x1p-8191L, 1.0L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6423     TEST_c_c (clog, 0x1p-8192L, 1.0L, 4.202628928890116882828347271652190753248e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6424 #endif
6425
6426     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-10L, 8.298731898331237038231468223024422855654e-5L, 1.110938609507128729312743251313024793990e-3L),
6427     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-100L, 8.237022655933121125560939513260027133767e-5L, 8.974094312218060110948251664314290484113e-31L),
6428 #ifndef TEST_FLOAT
6429     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-30L, 2.649094282537168795982991778475646793277e-10L, 3.141592652530155111500161671113150737892L),
6430     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 2.649094276923003995420209214900915462737e-10L, 3.141592653589793238462643383279502884197L),
6431 #endif
6432 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6433     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 9.868649107778739757272772275265050767867e-19L, 9.868649106423871142816660980898339912137e-19L),
6434     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 9.868649107778739752403260515979017248596e-19L, 1.061846605795612822522063052130030717368e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6435 #endif
6436
6437     TEST_c_c (clog, 0x0.ffffffp0L, 0x0.ffffffp-100L, -5.960464655174753498633255797994360530379e-8L, 7.888609052210118054117285652827862296732e-31L),
6438 #ifndef TEST_FLOAT
6439     TEST_c_c (clog, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -1.110223024625156602053389888482372171810e-16L, 9.332636185032188789900895447238171696171e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6440 #endif
6441 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6442     TEST_c_c (clog, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -5.421010862427522170184200798202494495630e-20L, 3.548665303440282824232502561095699343814e-4516L),
6443 #endif
6444
6445     TEST_c_c (clog, 0x1a6p-10L, 0x3a5p-10L, -1.4305135209763571252847059962654228661815e-06L, 1.1460277178115757370775644871674016684074L),
6446     TEST_c_c (clog, 0xf2p-10L, 0x3e3p-10L, 6.1988446308070710970664736815277450078106e-06L, 1.3322126499153926210226335249558203898460L),
6447     TEST_c_c (clog, 0x4d4ep-15L, 0x6605p-15L, -1.6298145321400412054744424587143483169412e-08L, 0.9223574537155056772124552172295398141249L),
6448     TEST_c_c (clog, 0x2818p-15L, 0x798fp-15L, 1.5366822245016167178749091974664853785194e-08L, 1.2522014929038946066987318471922169174157L),
6449     TEST_c_c (clog, 0x9b57bp-20L, 0xcb7b4p-20L, -3.9563019528687610863490232935890272740908e-11L, 0.9187593477446338910857133065497364950682L),
6450     TEST_c_c (clog, 0x2731p-20L, 0xfffd0p-20L, 4.4110493034041283943115971658295280288115e-11L, 1.5612279663766352262688735061954290528838L),
6451     TEST_c_c (clog, 0x2ede88p-23L, 0x771c3fp-23L, -4.4764192352906350039050902870893173560494e-13L, 1.1959106857549200806818600493552847793381L),
6452     TEST_c_c (clog, 0x11682p-23L, 0x7ffed1p-23L, 1.1723955140027907954461000991619077811832e-12L, 1.5622968405332756349813737986164832897108L),
6453     TEST_c_c (clog, 0xa1f2c1p-24L, 0xc643aep-24L, -1.0480505352462576151523512837107080269981e-13L, 0.8858771987699967480545613322309315260313L),
6454     TEST_c_c (clog, 0x659feap-24L, 0xeaf6f9p-24L, 3.7303493627403868207597214252239749960738e-14L, 1.1625816408046866464773042283673653469061L),
6455 #ifndef TEST_FLOAT
6456     TEST_c_c (clog, 0x4447d7175p-35L, 0x6c445e00ap-35L, -1.4823076576950255933915367361099865652625e-20L, 1.0081311552703893116404606212158840190615L),
6457     TEST_c_c (clog, 0x2dd46725bp-35L, 0x7783a1284p-35L, 4.4469229730850767799109418892826021157328e-20L, 1.2046235979300843056806465045930070146351L),
6458     TEST_c_c (clog, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -3.0292258760486853327810377824479932031744e-26L, 0.7998237934177411746093524982030330293980L),
6459     TEST_c_c (clog, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 5.3718272201930019901317065495843842735179e-26L, 1.0503831592447830576186444373011142397404L),
6460     TEST_c_c (clog, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -6.2122796286154679676173624516405339768606e-30L, 1.4904138780720095276446375492434049214172L),
6461     TEST_c_c (clog, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 3.2047474274603604594851472963586149973093e-29L, 1.4422922682185099608731642353544207976604L),
6462     TEST_c_c (clog, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -9.7375017988218644730510244778042114638107e-30L, 0.9790637929494922564724108399524154766631L),
6463     TEST_c_c (clog, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 8.3076914081087805757422664530653247447136e-30L, 1.2072712126771536614482822173033535043206L),
6464     TEST_c_c (clog, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -2.5083311595699359750201056724289010648701e-30L, 1.3710185432462268491534742969536240564640L),
6465     TEST_c_c (clog, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 1.0168910106364605304135563536838075568606e-30L, 0.8208373755522359859870890246475340086663L),
6466     TEST_c_c (clog, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 5.0844550531823026520677817684239496041087e-32L, 1.2627468605458094918919206628466016525397L),
6467     TEST_c_c (clog, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -5.2000108498455368032511404449795741611813e-32L, 1.5288921536982513453421343495466824420259L),
6468 #endif
6469 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6470     TEST_c_c (clog, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -1.1931267660846218205882675852805793644095e-36L, 1.2402109774337032400594953899784058127412L),
6471     TEST_c_c (clog, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 6.4064442119814669184296141278612389400075e-37L, 0.9193591364645830864185131402313014890145L),
6472     TEST_c_c (clog, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -2.3362950222592964220878638677292132852104e-37L, 1.1856121127236268105413184264288408265852L),
6473     TEST_c_c (clog, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 2.4244570985709679851855191080208817099132e-37L, 1.1393074519572050614551047548718495655972L),
6474     TEST_c_c (clog, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -9.9182335850630508484862145328126979066934e-39L, 1.3146479888794807046338799047003947008804L),
6475 #endif
6476 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6477     TEST_c_c (clog, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -1.0509738482436128031927971874674370984602e-45L, 1.0509191467640012308402149909370784281448L),
6478     TEST_c_c (clog, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 1.3487497719126364307640897239165442763573e-43L, 1.1750493008528425228929764149024375035382L),
6479     TEST_c_c (clog, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -4.7775669192897997174762089350332738583822e-50L, 0.8393953487996880419413728440067635213372L),
6480     TEST_c_c (clog, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 2.8398125044729578740243199963484494962411e-50L, 0.9149964976334130461795060758257083099706L),
6481     TEST_c_c (clog, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -3.5048022044913950094635368750889659723004e-57L, 1.3345633256521815205858155673950177421079L),
6482     TEST_c_c (clog, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 4.1101771307217268747345114262406964584250e-56L, 1.4596065864518742494094402406719567059585L),
6483     TEST_c_c (clog, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -1.4281333889622737316199756373421183559948e-62L, 1.3673546561165378090903506783353927980633L),
6484     TEST_c_c (clog, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 1.0027319539522347477331743836657426754857e-62L, 0.8193464073721167323313606647411269414759L),
6485     TEST_c_c (clog, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -1.7471844652198029695350765775994001163767e-63L, 1.1789110097072986038243729592318526094314L),
6486     TEST_c_c (clog, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 4.3299788920664682288477984749202524623248e-63L, 1.4746938237585656250866370987773473745867L),
6487 #endif
6488 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6489     TEST_c_c (clog, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -1.1683999374665377365054966073875064467108e-66L, 1.3257197596350832748781065387304444940172L),
6490     TEST_c_c (clog, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 1.5077923002544367932999503838191154621839e-65L, 1.2897445708311412721399861948957141824914L),
6491     TEST_c_c (clog, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -7.1865869169568789348552370692485515571497e-67L, 0.8730167479365994646287897223471819363668L),
6492     TEST_c_c (clog, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 6.6255694866654064502633121109394710807528e-66L, 1.0526409614996288387567810726095850312049L),
6493     TEST_c_c (clog, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 4.6017338806965821566734340588575402712716e-67L, 1.3547418904611758959096647942223384691728L),
6494     TEST_c_c (clog, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 2.5993421227864195179698176012564317527271e-67L, 1.4132318089683022770487383611430906982461L),
6495 #endif
6496   };
6497
6498 static void
6499 clog_test (void)
6500 {
6501   START (clog);
6502   RUN_TEST_LOOP_c_c (clog, clog_test_data, );
6503   END_COMPLEX;
6504 }
6505
6506
6507 static const struct test_c_c_data clog10_test_data[] =
6508   {
6509     TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6510     TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6511
6512     TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6513     TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6514
6515     TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El),
6516
6517     TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El),
6518     TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El),
6519
6520     TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El),
6521     TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El),
6522     TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El),
6523     TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El),
6524     TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El),
6525     TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El),
6526     TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El),
6527     TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El),
6528
6529     TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El),
6530     TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El),
6531     TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El),
6532     TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El),
6533
6534     TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0),
6535     TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0),
6536     TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero),
6537     TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero),
6538
6539     TEST_c_c (clog10, plus_infty, qnan_value, plus_infty, qnan_value),
6540     TEST_c_c (clog10, minus_infty, qnan_value, plus_infty, qnan_value),
6541
6542     TEST_c_c (clog10, qnan_value, plus_infty, plus_infty, qnan_value),
6543     TEST_c_c (clog10, qnan_value, minus_infty, plus_infty, qnan_value),
6544
6545     TEST_c_c (clog10, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6546     TEST_c_c (clog10, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6547     TEST_c_c (clog10, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6548     TEST_c_c (clog10, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6549
6550     TEST_c_c (clog10, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6551     TEST_c_c (clog10, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6552     TEST_c_c (clog10, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6553     TEST_c_c (clog10, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6554
6555     TEST_c_c (clog10, qnan_value, qnan_value, qnan_value, qnan_value),
6556
6557     TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L),
6558     TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L),
6559
6560     TEST_c_c (clog10, 0x1.fffffep+127L, 0x1.fffffep+127L, 38.68235441693561449174780668781319348761L, M_PI4_LOG10El),
6561     TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6562     TEST_c_c (clog10, 0x1p-149L, 0x1p-149L, -44.70295435610120748924022586658721447508L, M_PI4_LOG10El),
6563     TEST_c_c (clog10, 0x1p-147L, 0x1p-147L, -44.10089436477324509881274807713822842154L, M_PI4_LOG10El),
6564
6565 #ifndef TEST_FLOAT
6566     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 308.4052305577487344482591243175787477115L, M_PI4_LOG10El),
6567     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 308.3031705664207720674749211936626341569L, 0.2013595981366865903254995612594728746470L),
6568     TEST_c_c (clog10, 0x1p-1074L, 0x1p-1074L, -323.1557003452838130619487034867432642357L, M_PI4_LOG10El),
6569     TEST_c_c (clog10, 0x1p-1073L, 0x1p-1073L, -322.8546703496198318667349645920187712089L, M_PI4_LOG10El),
6570 #endif
6571
6572 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6573     TEST_c_c (clog10, 0x1.fp+16383L, 0x1.fp+16383L, 4932.212175672014259683102930239951947672L, M_PI4_LOG10El),
6574     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p+16383L, 4932.112944269463028900262609694408579449L, 0.2069271710841128115912940666587802677383L),
6575     TEST_c_c (clog10, 0x1p-16440L, 0x1p-16441L, -4948.884673709346821106688037612752099609L, 0.2013595981366865710389502301937289472543L),
6576 #endif
6577
6578     TEST_c_c (clog10, 0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6579     TEST_c_c (clog10, -0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6580     TEST_c_c (clog10, 0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6581     TEST_c_c (clog10, -0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6582     TEST_c_c (clog10, -0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, 1.364376353841841347485783625431355770210L),
6583     TEST_c_c (clog10, -0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, -1.364376353841841347485783625431355770210L),
6584 #ifdef TEST_FLOAT
6585     TEST_c_c (clog10, 0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, plus_zero, UNDERFLOW_EXCEPTION),
6586     TEST_c_c (clog10, 0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, minus_zero, UNDERFLOW_EXCEPTION),
6587 #endif
6588
6589 #ifndef TEST_FLOAT
6590     TEST_c_c (clog10, 0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6591     TEST_c_c (clog10, -0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6592     TEST_c_c (clog10, 0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6593     TEST_c_c (clog10, -0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6594     TEST_c_c (clog10, -0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, 1.364376353841841347485783625431355770210L),
6595     TEST_c_c (clog10, -0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, -1.364376353841841347485783625431355770210L),
6596 #endif
6597 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6598     TEST_c_c (clog10, 0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, plus_zero, UNDERFLOW_EXCEPTION),
6599     TEST_c_c (clog10, 0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, minus_zero, UNDERFLOW_EXCEPTION),
6600 #endif
6601
6602 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6603     TEST_c_c (clog10, 0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6604     TEST_c_c (clog10, -0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6605     TEST_c_c (clog10, 0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6606     TEST_c_c (clog10, -0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6607     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6608     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6609     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6610     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6611 # if LDBL_MANT_DIG >= 113
6612     TEST_c_c (clog10, 0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6613     TEST_c_c (clog10, -0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6614     TEST_c_c (clog10, 0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6615     TEST_c_c (clog10, -0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6616     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6617     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6618     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6619     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6620 # endif
6621 #endif
6622
6623     TEST_c_c (clog10, 1.0L, 0x1.234566p-10L, 2.680828048441605163181684680300513080769e-7L, 4.825491868832381486767558728169977751564e-4L),
6624     TEST_c_c (clog10, -1.0L, 0x1.234566p-20L, 2.556638434669064077889576526006849923281e-13L, 1.364375882602207106407956770293808181427L),
6625     TEST_c_c (clog10, 0x1.234566p-30L, 1.0L, 2.438200411482400072282924063740535840474e-19L, 6.821881764607257184291586401763604544928e-1L),
6626     TEST_c_c (clog10, -0x1.234566p-40L, -1.0L, 2.325249110681915353442924915876654139373e-25L, -6.821881769213700828789403802671540158935e-1L),
6627     TEST_c_c (clog10, 0x1.234566p-50L, 1.0L, 2.217530356103816369479108963807448194409e-31L, 6.821881769209202348667823902864283966959e-1L),
6628     TEST_c_c (clog10, 0x1.234566p-60L, 1.0L, 2.114801746467415208319767917450504756866e-37L, 6.821881769209206733143018621078368211515e-1L),
6629     TEST_c_c (clog10, 0x1p-61L, 1.0L, 4.084085680564517578238994467153626207224e-38L, 6.821881769209206735545466044044889962925e-1L),
6630     TEST_c_c (clog10, 0x1p-62L, 1.0L, 1.021021420141129394559748616788406551878e-38L, 6.821881769209206736487192085600834406988e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6631     TEST_c_c (clog10, 0x1p-63L, 1.0L, 2.552553550352823486399371541971016379740e-39L, 6.821881769209206736958055106378806629019e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6632 #ifndef TEST_FLOAT
6633     TEST_c_c (clog10, 0x1p-509L, 1.0L, 7.730698388614835910296270976605350994446e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6634     TEST_c_c (clog10, 0x1p-510L, 1.0L, 1.932674597153708977574067744151337748612e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6635     TEST_c_c (clog10, 0x1p-511L, 1.0L, 4.831686492884272443935169360378344371529e-309L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6636 #endif
6637 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6638     TEST_c_c (clog10, 0x1p-8189L, 1.0L, 1.168114274114528946314738738025008370069e-4931L, 6.821881769209206737428918127156778851051e-1L),
6639     TEST_c_c (clog10, 0x1p-8190L, 1.0L, 2.920285685286322365786846845062520925172e-4932L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6640     TEST_c_c (clog10, 0x1p-8191L, 1.0L, 7.300714213215805914467117112656302312931e-4933L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6641 #endif
6642
6643     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-10L, 3.604093470239754109961125085078190708674e-5L, 4.824745078422174667425851670822596859720e-4L),
6644     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-100L, 3.577293486783822178310971763308187385546e-5L, 3.897399639875661463735636919790792140598e-31L),
6645 #ifndef TEST_FLOAT
6646     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-30L, 1.150487028947346337782682105935961875822e-10L, 1.364376353381646356131680448946397884147L),
6647     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 1.150487026509145544402795327729455391948e-10L, 1.364376353841841347485783625431355770210L),
6648 #endif
6649 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6650     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 4.285899851347756188767674032946882584784e-19L, 4.285899850759344225805480528847018395861e-19L),
6651     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 4.285899851347756186652871946325962330640e-19L, 4.611541215247321502041995872887317363241e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6652 #endif
6653
6654     TEST_c_c (clog10, 0x0.ffffffp0L, 0x0.ffffffp-100L, -2.588596909321764128428416045209904492216e-8L, 3.425979381266895667295625489912064603415e-31L),
6655 #ifndef TEST_FLOAT
6656     TEST_c_c (clog10, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -4.821637332766435821255375046554377090472e-17L, 4.053112396770095089737411317782466262176e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6657 #endif
6658 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6659     TEST_c_c (clog10, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -2.354315103889861110220423157644627849164e-20L, 1.541165759405643564697852372112893034397e-4516L),
6660 #endif
6661
6662     TEST_c_c (clog10, 0x1a6p-10L, 0x3a5p-10L, -6.2126412844802358329771948751248003038444e-07L, 0.4977135139537443711784513409096950995985L),
6663     TEST_c_c (clog10, 0xf2p-10L, 0x3e3p-10L, 2.6921240173351112953324592659528481616879e-06L, 0.5785726025799636431142862788413361783862L),
6664     TEST_c_c (clog10, 0x4d4ep-15L, 0x6605p-15L, -7.0781945783414996953799915941870192015212e-09L, 0.4005747524909781155537088181659175147564L),
6665     TEST_c_c (clog10, 0x2818p-15L, 0x798fp-15L, 6.6737261053986614395049481326819059203910e-09L, 0.5438241985991753781478398141908629586460L),
6666     TEST_c_c (clog10, 0x9b57bp-20L, 0xcb7b4p-20L, -1.7182001068739620267773842120965071561416e-11L, 0.3990121149225253562859800593935899629087L),
6667     TEST_c_c (clog10, 0x2731p-20L, 0xfffd0p-20L, 1.9156943718715958194239364991329064049438e-11L, 0.6780326907904082601285090019969008967595L),
6668     TEST_c_c (clog10, 0x2ede88p-23L, 0x771c3fp-23L, -1.9440841725722970687903291200493082253766e-13L, 0.5193774116724956222518530053006822210323L),
6669     TEST_c_c (clog10, 0x11682p-23L, 0x7ffed1p-23L, 5.0916490233953865181284669870035717560498e-13L, 0.6784968969384861816694467029319146542069L),
6670     TEST_c_c (clog10, 0xa1f2c1p-24L, 0xc643aep-24L, -4.5516256421319921959681423447271490869664e-14L, 0.3847315790697197749315054516562206543710L),
6671     TEST_c_c (clog10, 0x659feap-24L, 0xeaf6f9p-24L, 1.6200701438094619117335617123525612051457e-14L, 0.5049027913635038013499728086604870749732L),
6672 #ifndef TEST_FLOAT
6673     TEST_c_c (clog10, 0x4447d7175p-35L, 0x6c445e00ap-35L, -6.4375803621988389731799033530075237868110e-21L, 0.4378257977686804492768642780897650927167L),
6674     TEST_c_c (clog10, 0x2dd46725bp-35L, 0x7783a1284p-35L, 1.9312741086596516918394613098872836703188e-20L, 0.5231613813514771042838490538484014771862L),
6675     TEST_c_c (clog10, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -1.3155760824064879362415202279780039150764e-26L, 0.3473590599762514228227328130640352044313L),
6676     TEST_c_c (clog10, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 2.3329549194675052736016290082882121135546e-26L, 0.4561756099441139182878993697611751382976L),
6677     TEST_c_c (clog10, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -2.6979587627476803379953050733225113494503e-30L, 0.6472785229986997177606324374555347813105L),
6678     TEST_c_c (clog10, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 1.3918041236396763648388478552321724382899e-29L, 0.6263795733790237053262025311642907438291L),
6679     TEST_c_c (clog10, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -4.2289432987513243393180377141513840878196e-30L, 0.4252020027092323591068799049905597805296L),
6680     TEST_c_c (clog10, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 3.6079845358966994996207055940336690133424e-30L, 0.5243112258263349992771652393178033846555L),
6681     TEST_c_c (clog10, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -1.0893543813872082317104059174982092534059e-30L, 0.5954257879188711495921161433751775633232L),
6682     TEST_c_c (clog10, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 4.4163015461643576961232672330852798804976e-31L, 0.3564851427422832755956993418877523303529L),
6683     TEST_c_c (clog10, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 2.2081507730821788480616336165447731164865e-32L, 0.5484039935757001196548030312819898864760L),
6684     TEST_c_c (clog10, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -2.2583360179249556400630343805573865814771e-32L, 0.6639894257763289307423302343317622430835L),
6685 #endif
6686 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6687     TEST_c_c (clog10, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -5.1816837072162316773907242302011632570857e-37L, 0.5386167838952956925896424154370364458140L),
6688     TEST_c_c (clog10, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 2.7822833698845776001753149807484078521508e-37L, 0.3992725998539071066769046272515417679815L),
6689     TEST_c_c (clog10, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -1.0146400362652473358437501879334790111898e-37L, 0.5149047982335273098246594109614460842099L),
6690     TEST_c_c (clog10, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 1.0529283395205396881397407610630442563938e-37L, 0.4947949395762683446121140513971996916447L),
6691     TEST_c_c (clog10, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -4.3074341162203896332989394770760901408798e-39L, 0.5709443672155660428417571212549720987784L),
6692 #endif
6693 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6694     TEST_c_c (clog10, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -4.5643214291682663316715446865040356750881e-46L, 0.4564083863660793840592614609053162690362L),
6695     TEST_c_c (clog10, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 5.8575458340992751256451490143468457830297e-44L, 0.5103174273246635294300470585396890237265L),
6696     TEST_c_c (clog10, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -2.0748709499710785084693619097712106753591e-50L, 0.3645447681189598740620098186365764884771L),
6697     TEST_c_c (clog10, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 1.2333149003324592532859843519619084433953e-50L, 0.3973779298829931059309198145608711073016L),
6698     TEST_c_c (clog10, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -1.5221162575729652613635150540947625639689e-57L, 0.5795934880811949230121092882659698986043L),
6699     TEST_c_c (clog10, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 1.7850272475173865337808494725293124613817e-56L, 0.6338990862456906754888183278564382516852L),
6700     TEST_c_c (clog10, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -6.2023045024810589256360494043570293518879e-63L, 0.5938345819561308555003145899438513900776L),
6701     TEST_c_c (clog10, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 4.3548095442952115860848857519953610343042e-63L, 0.3558376234889641500775150477035448866763L),
6702     TEST_c_c (clog10, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -7.5879257211204444302994221436282805900756e-64L, 0.5119945461708707332160859198685423099187L),
6703     TEST_c_c (clog10, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 1.8804859395820231849002915747252695375405e-63L, 0.6404513901551516189871978418046651877394L),
6704 #endif
6705 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6706     TEST_c_c (clog10, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -5.0742964549782184008668435276046798273476e-67L, 0.5757527761596220360985719127090110408283L),
6707     TEST_c_c (clog10, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 6.5482587585671294601662599808612773010057e-66L, 0.5601289501766423782280643144987875760229L),
6708     TEST_c_c (clog10, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -3.1210950417524756037077807411854181477733e-67L, 0.3791463562379872585396164879981280044658L),
6709     TEST_c_c (clog10, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 2.8774482675253468630312378575186855052697e-66L, 0.4571561610046221605554903008571429975493L),
6710     TEST_c_c (clog10, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 1.9985076315737626043096596036300177494613e-67L, 0.5883569274304683249184005177865521205198L),
6711     TEST_c_c (clog10, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 1.1288799405048268615023706955013387413519e-67L, 0.6137587762850841972073301550420510507903L),
6712 #endif
6713   };
6714
6715 static void
6716 clog10_test (void)
6717 {
6718   START (clog10);
6719   RUN_TEST_LOOP_c_c (clog10, clog10_test_data, );
6720   END_COMPLEX;
6721 }
6722
6723
6724 static const struct test_c_c_data conj_test_data[] =
6725   {
6726     TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero, NO_INEXACT_EXCEPTION),
6727     TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0, NO_INEXACT_EXCEPTION),
6728     TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
6729     TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
6730     TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty, NO_INEXACT_EXCEPTION),
6731     TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0, NO_INEXACT_EXCEPTION),
6732     TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0, NO_INEXACT_EXCEPTION),
6733   };
6734
6735 static void
6736 conj_test (void)
6737 {
6738   START (conj);
6739   RUN_TEST_LOOP_c_c (conj, conj_test_data, );
6740   END_COMPLEX;
6741 }
6742
6743
6744 static const struct test_ff_f_data copysign_test_data[] =
6745   {
6746     TEST_ff_f (copysign, 0, 4, 0, NO_INEXACT_EXCEPTION),
6747     TEST_ff_f (copysign, 0, -4, minus_zero, NO_INEXACT_EXCEPTION),
6748     TEST_ff_f (copysign, minus_zero, 4, 0, NO_INEXACT_EXCEPTION),
6749     TEST_ff_f (copysign, minus_zero, -4, minus_zero, NO_INEXACT_EXCEPTION),
6750
6751     TEST_ff_f (copysign, plus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION),
6752     TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty, NO_INEXACT_EXCEPTION),
6753     TEST_ff_f (copysign, minus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION),
6754     TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty, NO_INEXACT_EXCEPTION),
6755
6756     TEST_ff_f (copysign, 0, plus_infty, 0, NO_INEXACT_EXCEPTION),
6757     TEST_ff_f (copysign, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
6758     TEST_ff_f (copysign, minus_zero, plus_infty, 0, NO_INEXACT_EXCEPTION),
6759     TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
6760
6761     /* XXX More correctly we would have to check the sign of the NaN.  */
6762     TEST_ff_f (copysign, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION),
6763     TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION),
6764     TEST_ff_f (copysign, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION),
6765     TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION),
6766   };
6767
6768 static void
6769 copysign_test (void)
6770 {
6771   START (copysign);
6772   RUN_TEST_LOOP_ff_f (copysign, copysign_test_data, );
6773   END;
6774 }
6775
6776
6777 static const struct test_f_f_data cos_test_data[] =
6778   {
6779     TEST_f_f (cos, 0, 1),
6780     TEST_f_f (cos, minus_zero, 1),
6781     TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6782     TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6783     TEST_f_f (cos, qnan_value, qnan_value, ERRNO_UNCHANGED),
6784
6785     TEST_f_f (cos, M_PI_6l * 2.0, 0.5),
6786     TEST_f_f (cos, M_PI_6l * 4.0, -0.5),
6787
6788     /* The value of M_PI_2l is never exactly PI/2, and therefore the
6789        answer is never exactly zero. The answer is equal to the error
6790        in rounding PI/2 for the type used.  Thus the answer is unique
6791        to each type.  */
6792 #ifdef TEST_FLOAT
6793     /* 32-bit float.  */
6794     TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L),
6795 #endif
6796 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
6797     /* 64-bit double or 64-bit long double.  */
6798     TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L),
6799 #endif
6800 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
6801     /* 96-bit long double.  */
6802     TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L),
6803 #endif
6804 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
6805     /* 128-bit IBM long double.  */
6806     TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L),
6807 #endif
6808 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
6809     /* 128-bit long double.  */
6810     TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L),
6811 #endif
6812
6813     TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L),
6814
6815     TEST_f_f (cos, 0x1p65, 0.99888622066058013610642172179340364209972L),
6816     TEST_f_f (cos, -0x1p65, 0.99888622066058013610642172179340364209972L),
6817
6818 #ifdef TEST_DOUBLE
6819     TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473),
6820 #endif
6821
6822     TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L),
6823
6824 #ifndef TEST_FLOAT
6825     TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L),
6826     TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L),
6827 #endif
6828
6829 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6830     TEST_f_f (cos, 0x1p16383L, 0.9210843909921906206874509522505756251609L),
6831 #endif
6832
6833     TEST_f_f (cos, 0x1p+120, -9.25879022854837867303861764107414946730833e-01L),
6834     TEST_f_f (cos, 0x1p+127, 7.81914638714960072263910298466369236613162e-01L),
6835     TEST_f_f (cos, 0x1.fffff8p+127, 9.98819362551949040703862043664101081064641e-01L),
6836     TEST_f_f (cos, 0x1.fffffep+127, 8.53021039830304158051791467692161107353094e-01L),
6837     TEST_f_f (cos, 0x1p+50, 8.68095904660550604334592502063501320395739e-01L),
6838     TEST_f_f (cos, 0x1p+28, -1.65568979490578758865468278195361551113358e-01L),
6839
6840 #ifdef TEST_DOUBLE
6841     TEST_f_f (cos, 0x1.000000cf4a2a2p0, 0x1.14a27f9e7521ep-1);
6842     TEST_f_f (cos, 0x1.0000010b239a9p0, 0x1.14a27f39bc09dp-1);
6843     TEST_f_f (cos, 0x1.00000162a932bp0, 0x1.14a27ea670b8cp-1);
6844     TEST_f_f (cos, 0x1.000002d452a10p0, 0x1.14a27c385222ep-1);
6845     TEST_f_f (cos, 0x1.000005bc7d86dp0, 0x1.14a27753ee07ap-1);
6846 #endif
6847   };
6848
6849 static void
6850 cos_test (void)
6851 {
6852   START (cos);
6853   RUN_TEST_LOOP_f_f (cos, cos_test_data, );
6854   END;
6855 }
6856
6857
6858 static const struct test_f_f_data cos_tonearest_test_data[] =
6859   {
6860     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6861     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6862     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6863     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6864     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6865     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6866     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6867     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6868     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6869     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6870   };
6871
6872 static void
6873 cos_test_tonearest (void)
6874 {
6875   START (cos_tonearest);
6876   RUN_TEST_LOOP_f_f (cos, cos_tonearest_test_data, FE_TONEAREST);
6877   END;
6878 }
6879
6880
6881 static const struct test_f_f_data cos_towardzero_test_data[] =
6882   {
6883     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6884     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6885     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6886     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6887     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6888     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6889     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6890     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6891     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6892     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6893   };
6894
6895 static void
6896 cos_test_towardzero (void)
6897 {
6898   START (cos_towardzero);
6899   RUN_TEST_LOOP_f_f (cos, cos_towardzero_test_data, FE_TOWARDZERO);
6900   END;
6901 }
6902
6903
6904 static const struct test_f_f_data cos_downward_test_data[] =
6905   {
6906     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6907     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6908     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6909     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6910     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6911     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6912     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6913     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6914     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6915     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6916   };
6917
6918 static void
6919 cos_test_downward (void)
6920 {
6921   START (cos_downward);
6922   RUN_TEST_LOOP_f_f (cos, cos_downward_test_data, FE_DOWNWARD);
6923   END;
6924 }
6925
6926
6927 static const struct test_f_f_data cos_upward_test_data[] =
6928   {
6929     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6930     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6931     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6932     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6933     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6934     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6935     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6936     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6937     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6938     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6939   };
6940
6941 static void
6942 cos_test_upward (void)
6943 {
6944   START (cos_upward);
6945   RUN_TEST_LOOP_f_f (cos, cos_upward_test_data, FE_UPWARD);
6946   END;
6947 }
6948
6949
6950 static const struct test_f_f_data cosh_test_data[] =
6951   {
6952     TEST_f_f (cosh, 0, 1),
6953     TEST_f_f (cosh, minus_zero, 1),
6954
6955 #ifndef TEST_INLINE
6956     TEST_f_f (cosh, plus_infty, plus_infty),
6957     TEST_f_f (cosh, minus_infty, plus_infty),
6958 #endif
6959     TEST_f_f (cosh, qnan_value, qnan_value),
6960
6961     TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L),
6962
6963 #ifndef TEST_FLOAT
6964     TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6965     TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6966 #endif
6967   };
6968
6969 static void
6970 cosh_test (void)
6971 {
6972   START (cosh);
6973   RUN_TEST_LOOP_f_f (cosh, cosh_test_data, );
6974   END;
6975 }
6976
6977
6978 static const struct test_f_f_data cosh_tonearest_test_data[] =
6979   {
6980     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6981     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6982     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6983   };
6984
6985 static void
6986 cosh_test_tonearest (void)
6987 {
6988   START (cosh_tonearest);
6989   RUN_TEST_LOOP_f_f (cosh, cosh_tonearest_test_data, FE_TONEAREST);
6990   END;
6991 }
6992
6993
6994 static const struct test_f_f_data cosh_towardzero_test_data[] =
6995   {
6996     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6997     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6998     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6999   };
7000
7001 static void
7002 cosh_test_towardzero (void)
7003 {
7004   START (cosh_towardzero);
7005   RUN_TEST_LOOP_f_f (cosh, cosh_towardzero_test_data, FE_TOWARDZERO);
7006   END;
7007 }
7008
7009
7010 static const struct test_f_f_data cosh_downward_test_data[] =
7011   {
7012     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7013     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7014     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7015   };
7016
7017 static void
7018 cosh_test_downward (void)
7019 {
7020   START (cosh_downward);
7021   RUN_TEST_LOOP_f_f (cosh, cosh_downward_test_data, FE_DOWNWARD);
7022   END;
7023 }
7024
7025
7026 static const struct test_f_f_data cosh_upward_test_data[] =
7027   {
7028     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7029     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7030     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7031   };
7032
7033 static void
7034 cosh_test_upward (void)
7035 {
7036   START (cosh_upward);
7037   RUN_TEST_LOOP_f_f (cosh, cosh_upward_test_data, FE_UPWARD);
7038   END;
7039 }
7040
7041
7042 static const struct test_cc_c_data cpow_test_data[] =
7043   {
7044     TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0),
7045     TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0),
7046 #if 0
7047     /* Disabled until we fix bug 14473.  */
7048     TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0),
7049 #endif
7050     TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0),
7051
7052     TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value),
7053
7054     TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L),
7055     TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L),
7056     TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 0.0L, 0.75L, 1.25L),
7057     TEST_cc_c (cpow, 0.75L, 1.25L, 0.0L, 1.0L, 0.331825439177608832276067945276730566L, 0.131338600281188544930936345230903032L),
7058   };
7059
7060 static void
7061 cpow_test (void)
7062 {
7063   START (cpow);
7064   RUN_TEST_LOOP_cc_c (cpow, cpow_test_data, );
7065   END_COMPLEX;
7066 }
7067
7068
7069 static const struct test_c_c_data cproj_test_data[] =
7070   {
7071     TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
7072     TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
7073     TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero, NO_INEXACT_EXCEPTION),
7074     TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0, NO_INEXACT_EXCEPTION),
7075
7076     TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
7077
7078     TEST_c_c (cproj, plus_zero, qnan_value, plus_zero, qnan_value, NO_INEXACT_EXCEPTION),
7079     TEST_c_c (cproj, minus_zero, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION),
7080     TEST_c_c (cproj, qnan_value, plus_zero, qnan_value, plus_zero, NO_INEXACT_EXCEPTION),
7081     TEST_c_c (cproj, qnan_value, minus_zero, qnan_value, minus_zero, NO_INEXACT_EXCEPTION),
7082
7083     TEST_c_c (cproj, 1.0, qnan_value, 1.0, qnan_value, NO_INEXACT_EXCEPTION),
7084     TEST_c_c (cproj, -1.0, qnan_value, -1.0, qnan_value, NO_INEXACT_EXCEPTION),
7085     TEST_c_c (cproj, qnan_value, 1.0, qnan_value, 1.0, NO_INEXACT_EXCEPTION),
7086     TEST_c_c (cproj, qnan_value, -1.0, qnan_value, -1.0, NO_INEXACT_EXCEPTION),
7087
7088     TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7089     TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7090     TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7091     TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7092
7093     TEST_c_c (cproj, plus_infty, plus_zero, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7094     TEST_c_c (cproj, plus_infty, minus_zero, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7095     TEST_c_c (cproj, minus_infty, plus_zero, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7096     TEST_c_c (cproj, minus_infty, minus_zero, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7097
7098     TEST_c_c (cproj, plus_zero, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7099     TEST_c_c (cproj, plus_zero, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7100     TEST_c_c (cproj, minus_zero, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7101     TEST_c_c (cproj, minus_zero, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7102
7103     TEST_c_c (cproj, plus_infty, 1.0, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7104     TEST_c_c (cproj, plus_infty, -1.0, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7105     TEST_c_c (cproj, minus_infty, 1.0, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7106     TEST_c_c (cproj, minus_infty, -1.0, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7107
7108     TEST_c_c (cproj, 1.0, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7109     TEST_c_c (cproj, 1.0, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7110     TEST_c_c (cproj, -1.0, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7111     TEST_c_c (cproj, -1.0, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7112
7113     TEST_c_c (cproj, plus_infty, qnan_value, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7114     TEST_c_c (cproj, plus_infty, -qnan_value, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7115     TEST_c_c (cproj, minus_infty, qnan_value, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7116     TEST_c_c (cproj, minus_infty, -qnan_value, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7117
7118     TEST_c_c (cproj, qnan_value, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7119     TEST_c_c (cproj, qnan_value, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7120     TEST_c_c (cproj, -qnan_value, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
7121     TEST_c_c (cproj, -qnan_value, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
7122
7123     TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0, NO_INEXACT_EXCEPTION),
7124     TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0, NO_INEXACT_EXCEPTION),
7125   };
7126
7127 static void
7128 cproj_test (void)
7129 {
7130   START (cproj);
7131   RUN_TEST_LOOP_c_c (cproj, cproj_test_data, );
7132   END_COMPLEX;
7133 }
7134
7135
7136 static const struct test_c_f_data creal_test_data[] =
7137   {
7138     TEST_c_f (creal, 0.0, 1.0, 0.0, NO_INEXACT_EXCEPTION),
7139     TEST_c_f (creal, minus_zero, 1.0, minus_zero, NO_INEXACT_EXCEPTION),
7140     TEST_c_f (creal, qnan_value, 1.0, qnan_value, NO_INEXACT_EXCEPTION),
7141     TEST_c_f (creal, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
7142     TEST_c_f (creal, plus_infty, 1.0, plus_infty, NO_INEXACT_EXCEPTION),
7143     TEST_c_f (creal, minus_infty, 1.0, minus_infty, NO_INEXACT_EXCEPTION),
7144     TEST_c_f (creal, 2.0, 3.0, 2.0, NO_INEXACT_EXCEPTION),
7145   };
7146
7147 static void
7148 creal_test (void)
7149 {
7150   START (creal);
7151   RUN_TEST_LOOP_c_f (creal, creal_test_data, );
7152   END;
7153 }
7154
7155 static const struct test_c_c_data csin_test_data[] =
7156   {
7157     TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0),
7158     TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0),
7159     TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero),
7160     TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero),
7161
7162     TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty),
7163     TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty),
7164     TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty),
7165     TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty),
7166
7167     TEST_c_c (csin, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7168     TEST_c_c (csin, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7169     TEST_c_c (csin, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7170     TEST_c_c (csin, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7171
7172     TEST_c_c (csin, plus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7173     TEST_c_c (csin, minus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7174     TEST_c_c (csin, plus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7175     TEST_c_c (csin, minus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7176
7177     TEST_c_c (csin, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7178     TEST_c_c (csin, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7179     TEST_c_c (csin, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7180     TEST_c_c (csin, minus_infty, -6.75,  qnan_value, qnan_value, INVALID_EXCEPTION),
7181
7182     TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty),
7183     TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty),
7184     TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty),
7185     TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty),
7186
7187     TEST_c_c (csin, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7188     TEST_c_c (csin, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7189
7190     TEST_c_c (csin, qnan_value, plus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7191     TEST_c_c (csin, qnan_value, minus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7192
7193     TEST_c_c (csin, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7194     TEST_c_c (csin, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7195
7196     TEST_c_c (csin, 0.0, qnan_value, 0.0, qnan_value),
7197     TEST_c_c (csin, minus_zero, qnan_value, minus_zero, qnan_value),
7198
7199     TEST_c_c (csin, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7200     TEST_c_c (csin, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7201
7202     TEST_c_c (csin, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7203     TEST_c_c (csin, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7204
7205     TEST_c_c (csin, qnan_value, qnan_value, qnan_value, qnan_value),
7206
7207     TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L),
7208     TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L),
7209
7210     TEST_c_c (csin, 0.75, 89.5, 2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7211     TEST_c_c (csin, 0.75, -89.5, 2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7212     TEST_c_c (csin, -0.75, 89.5, -2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7213     TEST_c_c (csin, -0.75, -89.5, -2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7214
7215 #ifndef TEST_FLOAT
7216     TEST_c_c (csin, 0.75, 710.5, 1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7217     TEST_c_c (csin, 0.75, -710.5, 1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7218     TEST_c_c (csin, -0.75, 710.5, -1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7219     TEST_c_c (csin, -0.75, -710.5, -1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7220 #endif
7221
7222 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7223     TEST_c_c (csin, 0.75, 11357.25, 8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7224     TEST_c_c (csin, 0.75, -11357.25, 8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7225     TEST_c_c (csin, -0.75, 11357.25, -8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7226     TEST_c_c (csin, -0.75, -11357.25, -8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7227 #endif
7228
7229 #ifdef TEST_FLOAT
7230     TEST_c_c (csin, 0x1p-149, 180, 1.043535896672617552965983803453927655332e33L, plus_infty, OVERFLOW_EXCEPTION),
7231 #endif
7232
7233 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7234     TEST_c_c (csin, 0x1p-1074, 1440, 5.981479269486130556466515778180916082415e301L, plus_infty, OVERFLOW_EXCEPTION),
7235 #endif
7236
7237 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7238     TEST_c_c (csin, 0x1p-16434L, 22730, 1.217853148905605987081057582351152052687e4924L, plus_infty, OVERFLOW_EXCEPTION),
7239 #endif
7240
7241     TEST_c_c (csin, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7242     TEST_c_c (csin, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7243   };
7244
7245 static void
7246 csin_test (void)
7247 {
7248   START (csin);
7249   RUN_TEST_LOOP_c_c (csin, csin_test_data, );
7250   END_COMPLEX;
7251 }
7252
7253
7254 static const struct test_c_c_data csinh_test_data[] =
7255   {
7256     TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0),
7257     TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0),
7258     TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero),
7259     TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero),
7260
7261     TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7262     TEST_c_c (csinh, minus_zero, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7263     TEST_c_c (csinh, 0.0, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7264     TEST_c_c (csinh, minus_zero, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7265
7266     TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0),
7267     TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0),
7268     TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero),
7269     TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero),
7270
7271     TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7272     TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7273     TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7274     TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7275
7276     TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty),
7277     TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty),
7278     TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty),
7279     TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty),
7280
7281     TEST_c_c (csinh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7282     TEST_c_c (csinh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7283     TEST_c_c (csinh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7284     TEST_c_c (csinh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7285
7286     TEST_c_c (csinh, 0.0, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7287     TEST_c_c (csinh, minus_zero, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7288
7289     TEST_c_c (csinh, plus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7290     TEST_c_c (csinh, minus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7291
7292     TEST_c_c (csinh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7293     TEST_c_c (csinh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7294
7295     TEST_c_c (csinh, qnan_value, 0.0, qnan_value, 0.0),
7296     TEST_c_c (csinh, qnan_value, minus_zero, qnan_value, minus_zero),
7297
7298     TEST_c_c (csinh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7299     TEST_c_c (csinh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7300
7301     TEST_c_c (csinh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7302     TEST_c_c (csinh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7303
7304     TEST_c_c (csinh, qnan_value, qnan_value, qnan_value, qnan_value),
7305
7306     TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L),
7307     TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L),
7308
7309     TEST_c_c (csinh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7310     TEST_c_c (csinh, -89.5, 0.75, -2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7311     TEST_c_c (csinh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7312     TEST_c_c (csinh, -89.5, -0.75, -2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7313
7314 #ifndef TEST_FLOAT
7315     TEST_c_c (csinh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7316     TEST_c_c (csinh, -710.5, 0.75, -1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7317     TEST_c_c (csinh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7318     TEST_c_c (csinh, -710.5, -0.75, -1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7319 #endif
7320
7321 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7322     TEST_c_c (csinh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7323     TEST_c_c (csinh, -11357.25, 0.75, -9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7324     TEST_c_c (csinh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7325     TEST_c_c (csinh, -11357.25, -0.75, -9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7326 #endif
7327
7328 #ifdef TEST_FLOAT
7329     TEST_c_c (csinh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
7330 #endif
7331
7332 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7333     TEST_c_c (csinh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
7334 #endif
7335
7336 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7337     TEST_c_c (csinh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
7338 #endif
7339
7340     TEST_c_c (csinh, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7341     TEST_c_c (csinh, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7342   };
7343
7344 static void
7345 csinh_test (void)
7346 {
7347   START (csinh);
7348   RUN_TEST_LOOP_c_c (csinh, csinh_test_data, );
7349   END_COMPLEX;
7350 }
7351
7352
7353 static const struct test_c_c_data csqrt_test_data[] =
7354   {
7355     TEST_c_c (csqrt, 0, 0, 0.0, 0.0),
7356     TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero),
7357     TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0),
7358     TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero),
7359
7360     TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty),
7361     TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty),
7362     TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty),
7363     TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty),
7364
7365     TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0),
7366     TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0),
7367     TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero),
7368     TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero),
7369
7370     TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty),
7371     TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty),
7372     TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty),
7373     TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty),
7374     TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty),
7375     TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty),
7376     TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty),
7377     TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty),
7378     TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty),
7379     TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty),
7380     TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty),
7381     TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty),
7382
7383     TEST_c_c (csqrt, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7384
7385     TEST_c_c (csqrt, plus_infty, qnan_value, plus_infty, qnan_value),
7386
7387     TEST_c_c (csqrt, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7388     TEST_c_c (csqrt, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7389     TEST_c_c (csqrt, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7390     TEST_c_c (csqrt, -1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7391
7392     TEST_c_c (csqrt, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7393     TEST_c_c (csqrt, qnan_value, 8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7394     TEST_c_c (csqrt, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7395     TEST_c_c (csqrt, qnan_value, -8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7396
7397     TEST_c_c (csqrt, qnan_value, qnan_value, qnan_value, qnan_value),
7398
7399     TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0),
7400     TEST_c_c (csqrt, -1, 0, 0.0, 1.0),
7401     TEST_c_c (csqrt, 0, 2, 1.0, 1.0),
7402     TEST_c_c (csqrt, 119, 120, 12.0, 5.0),
7403     TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L),
7404     TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L),
7405     TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L),
7406     /* Principal square root should be returned (i.e., non-negative real
7407        part).  */
7408     TEST_c_c (csqrt, 0, -1, M_SQRT1_2l, -M_SQRT1_2l),
7409
7410     TEST_c_c (csqrt, 0x1.fffffep+127L, 0x1.fffffep+127L, 2.026714405498316804978751017492482558075e+19L, 8.394925938143272988211878516208015586281e+18L),
7411     TEST_c_c (csqrt, 0x1.fffffep+127L, 1.0L, 1.844674352395372953599975585936590505260e+19L, 2.710505511993121390769065968615872097053e-20L),
7412     TEST_c_c (csqrt, 0x1p-149L, 0x1p-149L, 4.112805464342778798097003462770175200803e-23L, 1.703579802732953750368659735601389709551e-23L),
7413     TEST_c_c (csqrt, 0x1p-147L, 0x1p-147L, 8.225610928685557596194006925540350401606e-23L, 3.407159605465907500737319471202779419102e-23L),
7414
7415     TEST_c_c (csqrt, plus_zero, 0x1p-149L, 2.646977960169688559588507814623881131411e-23L, 2.646977960169688559588507814623881131411e-23L),
7416     TEST_c_c (csqrt, 0x1p-50L, 0x1p-149L, 2.980232238769531250000000000000000000000e-8L, 2.350988701644575015937473074444491355637e-38L),
7417 #ifdef TEST_FLOAT
7418     TEST_c_c (csqrt, 0x1p+127L, 0x1p-149L, 1.304381782533278221234957180625250836888e19L, plus_zero, UNDERFLOW_EXCEPTION),
7419 #endif
7420     TEST_c_c (csqrt, 0x1p-149L, 0x1p+127L, 9.223372036854775808000000000000000000000e18L, 9.223372036854775808000000000000000000000e18L),
7421     TEST_c_c (csqrt, 0x1.000002p-126L, 0x1.000002p-126L, 1.191195773697904627170323731331667740087e-19L, 4.934094449071842328766868579214125217132e-20L),
7422     TEST_c_c (csqrt, -0x1.000002p-126L, -0x1.000002p-126L, 4.934094449071842328766868579214125217132e-20L, -1.191195773697904627170323731331667740087e-19L),
7423
7424 #ifndef TEST_FLOAT
7425     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 1.473094556905565378990473658199034571917e+154L, 6.101757441282702188537080005372547713595e+153L),
7426     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 1.379778091031440685006200821918878702861e+154L, 3.257214233483129514781233066898042490248e+153L),
7427     TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L),
7428     TEST_c_c (csqrt, 0x1p-1073L, 0x1p-1073L, 3.453664695497464982856905711457966660085e-162L, 1.430554756764195530630723976279903095110e-162L),
7429
7430     TEST_c_c (csqrt, plus_zero, 0x1p-1074L, 1.571727784702628688909515672805082228285e-162L, 1.571727784702628688909515672805082228285e-162L),
7431     TEST_c_c (csqrt, 0x1p-500L, 0x1p-1074L, 5.527147875260444560247265192192255725514e-76L, 4.469444793151709302716387622440056066334e-249L),
7432 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7433     TEST_c_c (csqrt, 0x1p+1023L, 0x1p-1074L, 9.480751908109176726832526455652159260085e153L, plus_zero, UNDERFLOW_EXCEPTION),
7434 #endif
7435     TEST_c_c (csqrt, 0x1p-1074L, 0x1p+1023L, 6.703903964971298549787012499102923063740e153L, 6.703903964971298549787012499102923063740e153L),
7436     TEST_c_c (csqrt, 0x1.0000000000001p-1022L, 0x1.0000000000001p-1022L, 1.638872094839911521020410942677082920935e-154L, 6.788430486774966350907249113759995429568e-155L),
7437     TEST_c_c (csqrt, -0x1.0000000000001p-1022L, -0x1.0000000000001p-1022L, 6.788430486774966350907249113759995429568e-155L, -1.638872094839911521020410942677082920935e-154L),
7438 #endif
7439
7440 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7441     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1.fp+16383L, 1.179514222452201722651836720466795901016e+2466L, 4.885707879516577666702435054303191575148e+2465L),
7442     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1p+16383L, 1.106698967236475180613254276996359485630e+2466L, 2.687568007603946993388538156299100955642e+2465L),
7443     TEST_c_c (csqrt, 0x1p-16440L, 0x1p-16441L, 3.514690655930285351254618340783294558136e-2475L,  8.297059146828716918029689466551384219370e-2476L),
7444
7445     TEST_c_c (csqrt, plus_zero, 0x1p-16445L, 4.269191686890197837775136325621239761720e-2476L, 4.269191686890197837775136325621239761720e-2476L),
7446     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16445L, 2.660791472672778409283210520357607795518e-753L, 6.849840675828785164910701384823702064234e-4199L),
7447     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16445L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7448     TEST_c_c (csqrt, 0x1p-16445L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7449     TEST_c_c (csqrt, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-16382L, 2.014551439675644900131815801350165472778e-2466L, 8.344545284118961664300307045791497724440e-2467L),
7450     TEST_c_c (csqrt, -0x1.0000000000000002p-16382L, -0x1.0000000000000002p-16382L, 8.344545284118961664300307045791497724440e-2467L, -2.014551439675644900131815801350165472778e-2466L),
7451
7452 # if LDBL_MANT_DIG >= 113
7453     TEST_c_c (csqrt, plus_zero, 0x1p-16494L, 1.799329752913293143453817328207572571442e-2483L, 1.799329752913293143453817328207572571442e-2483L),
7454     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16494L, 2.660791472672778409283210520357607795518e-753L, 1.216776133331049643422030716668249905907e-4213L),
7455     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16494L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7456     TEST_c_c (csqrt, 0x1p-16494L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7457     TEST_c_c (csqrt, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-16382L, 2.014551439675644900022606748976158925145e-2466L, 8.344545284118961663847948339519226074126e-2467L),
7458     TEST_c_c (csqrt, -0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-16382L, 8.344545284118961663847948339519226074126e-2467L, -2.014551439675644900022606748976158925145e-2466L),
7459 # endif
7460 #endif
7461   };
7462
7463 static void
7464 csqrt_test (void)
7465 {
7466   START (csqrt);
7467   RUN_TEST_LOOP_c_c (csqrt, csqrt_test_data, );
7468   END_COMPLEX;
7469 }
7470
7471 static const struct test_c_c_data ctan_test_data[] =
7472   {
7473     TEST_c_c (ctan, 0, 0, 0.0, 0.0),
7474     TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero),
7475     TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0),
7476     TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero),
7477
7478     TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0),
7479     TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0),
7480     TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0),
7481     TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0),
7482
7483     TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0),
7484     TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0),
7485     TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0),
7486     TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0),
7487
7488     TEST_c_c (ctan, plus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7489     TEST_c_c (ctan, plus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7490     TEST_c_c (ctan, minus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7491     TEST_c_c (ctan, minus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7492     TEST_c_c (ctan, plus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7493     TEST_c_c (ctan, plus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7494     TEST_c_c (ctan, minus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7495     TEST_c_c (ctan, minus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7496
7497     TEST_c_c (ctan, qnan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN),
7498     TEST_c_c (ctan, qnan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN),
7499
7500     TEST_c_c (ctan, 0, qnan_value, 0.0, qnan_value),
7501     TEST_c_c (ctan, minus_zero, qnan_value, minus_zero, qnan_value),
7502
7503     TEST_c_c (ctan, 0.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7504     TEST_c_c (ctan, -4.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7505
7506     TEST_c_c (ctan, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7507     TEST_c_c (ctan, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7508     TEST_c_c (ctan, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7509     TEST_c_c (ctan, qnan_value, -0.25, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7510
7511     TEST_c_c (ctan, qnan_value, qnan_value, qnan_value, qnan_value),
7512
7513     TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L),
7514     TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L),
7515
7516     TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L, UNDERFLOW_EXCEPTION_FLOAT),
7517     TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0, UNDERFLOW_EXCEPTION_FLOAT),
7518
7519 #ifndef TEST_FLOAT
7520     TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7521     TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7522 #endif
7523
7524 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7525     TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0, UNDERFLOW_EXCEPTION),
7526     TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0, UNDERFLOW_EXCEPTION),
7527 #endif
7528
7529     TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0),
7530
7531     TEST_c_c (ctan, 0x1p127, 1, 0.2446359391192790896381501310437708987204L, 0.9101334047676183761532873794426475906201L),
7532
7533 #ifndef TEST_FLOAT
7534     TEST_c_c (ctan, 0x1p1023, 1, -0.2254627924997545057926782581695274244229L, 0.8786063118883068695462540226219865087189L),
7535 #endif
7536
7537 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7538     TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L),
7539 #endif
7540
7541     TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0, UNDERFLOW_EXCEPTION),
7542     TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0, UNDERFLOW_EXCEPTION),
7543     TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0, UNDERFLOW_EXCEPTION),
7544     TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0, UNDERFLOW_EXCEPTION),
7545   };
7546
7547 static void
7548 ctan_test (void)
7549 {
7550   START (ctan);
7551   RUN_TEST_LOOP_c_c (ctan, ctan_test_data, );
7552   END_COMPLEX;
7553 }
7554
7555
7556 static const struct test_c_c_data ctan_tonearest_test_data[] =
7557   {
7558     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7559
7560 #ifndef TEST_FLOAT
7561     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7562 #endif
7563
7564 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7565     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7566 #endif
7567   };
7568
7569 static void
7570 ctan_test_tonearest (void)
7571 {
7572   START (ctan_tonearest);
7573   RUN_TEST_LOOP_c_c (ctan, ctan_tonearest_test_data, FE_TONEAREST);
7574   END_COMPLEX;
7575 }
7576
7577
7578 static const struct test_c_c_data ctan_towardzero_test_data[] =
7579   {
7580     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7581
7582 #ifndef TEST_FLOAT
7583     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7584 #endif
7585
7586 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7587     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7588 #endif
7589   };
7590
7591 static void
7592 ctan_test_towardzero (void)
7593 {
7594   START (ctan_towardzero);
7595   RUN_TEST_LOOP_c_c (ctan, ctan_towardzero_test_data, FE_TOWARDZERO);
7596   END_COMPLEX;
7597 }
7598
7599
7600 static const struct test_c_c_data ctan_downward_test_data[] =
7601   {
7602     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7603
7604 #ifndef TEST_FLOAT
7605     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7606 #endif
7607
7608 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7609     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7610 #endif
7611   };
7612
7613 static void
7614 ctan_test_downward (void)
7615 {
7616   START (ctan_downward);
7617   RUN_TEST_LOOP_c_c (ctan, ctan_downward_test_data, FE_DOWNWARD);
7618   END_COMPLEX;
7619 }
7620
7621
7622 static const struct test_c_c_data ctan_upward_test_data[] =
7623   {
7624     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7625
7626 #ifndef TEST_FLOAT
7627     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7628 #endif
7629
7630 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7631     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7632 #endif
7633   };
7634
7635 static void
7636 ctan_test_upward (void)
7637 {
7638   START (ctan_upward);
7639   RUN_TEST_LOOP_c_c (ctan, ctan_upward_test_data, FE_UPWARD);
7640   END_COMPLEX;
7641 }
7642
7643
7644 static const struct test_c_c_data ctanh_test_data[] =
7645   {
7646     TEST_c_c (ctanh, 0, 0, 0.0, 0.0),
7647     TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero),
7648     TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0),
7649     TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero),
7650
7651     TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0),
7652     TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0),
7653     TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero),
7654     TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero),
7655     TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0),
7656     TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0),
7657     TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero),
7658     TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero),
7659
7660     TEST_c_c (ctanh, 0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7661     TEST_c_c (ctanh, 2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7662     TEST_c_c (ctanh, 0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7663     TEST_c_c (ctanh, 2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7664     TEST_c_c (ctanh, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7665     TEST_c_c (ctanh, -2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7666     TEST_c_c (ctanh, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7667     TEST_c_c (ctanh, -2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7668
7669     TEST_c_c (ctanh, plus_infty, qnan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7670     TEST_c_c (ctanh, minus_infty, qnan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7671
7672     TEST_c_c (ctanh, qnan_value, 0, qnan_value, 0.0),
7673     TEST_c_c (ctanh, qnan_value, minus_zero, qnan_value, minus_zero),
7674
7675     TEST_c_c (ctanh, qnan_value, 0.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7676     TEST_c_c (ctanh, qnan_value, -4.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7677
7678     TEST_c_c (ctanh, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7679     TEST_c_c (ctanh, 5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7680     TEST_c_c (ctanh, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7681     TEST_c_c (ctanh, -0.25, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7682
7683     TEST_c_c (ctanh, qnan_value, qnan_value, qnan_value, qnan_value),
7684
7685     TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0),
7686
7687     TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L),
7688     TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L),
7689
7690     TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L, UNDERFLOW_EXCEPTION_FLOAT),
7691     TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L, UNDERFLOW_EXCEPTION_FLOAT),
7692
7693 #ifndef TEST_FLOAT
7694     TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
7695     TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L, UNDERFLOW_EXCEPTION_DOUBLE),
7696 #endif
7697
7698 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7699     TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L, UNDERFLOW_EXCEPTION),
7700     TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L, UNDERFLOW_EXCEPTION),
7701 #endif
7702
7703     TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L),
7704
7705     TEST_c_c (ctanh, 1, 0x1p127, 0.9101334047676183761532873794426475906201L, 0.2446359391192790896381501310437708987204L),
7706
7707 #ifndef TEST_FLOAT
7708     TEST_c_c (ctanh, 1, 0x1p1023, 0.8786063118883068695462540226219865087189L, -0.2254627924997545057926782581695274244229L),
7709 #endif
7710
7711 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7712     TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L),
7713 #endif
7714
7715     TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero, UNDERFLOW_EXCEPTION),
7716     TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero, UNDERFLOW_EXCEPTION),
7717     TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero, UNDERFLOW_EXCEPTION),
7718     TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero, UNDERFLOW_EXCEPTION),
7719   };
7720
7721 static void
7722 ctanh_test (void)
7723 {
7724   START (ctanh);
7725   RUN_TEST_LOOP_c_c (ctanh, ctanh_test_data, );
7726   END_COMPLEX;
7727 }
7728
7729
7730 static const struct test_c_c_data ctanh_tonearest_test_data[] =
7731   {
7732     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7733
7734 #ifndef TEST_FLOAT
7735     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7736 #endif
7737
7738 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7739     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7740 #endif
7741   };
7742
7743 static void
7744 ctanh_test_tonearest (void)
7745 {
7746   START (ctanh_tonearest);
7747   RUN_TEST_LOOP_c_c (ctanh, ctanh_tonearest_test_data, FE_TONEAREST);
7748   END_COMPLEX;
7749 }
7750
7751
7752 static const struct test_c_c_data ctanh_towardzero_test_data[] =
7753   {
7754     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7755
7756 #ifndef TEST_FLOAT
7757     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7758 #endif
7759
7760 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7761     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7762 #endif
7763   };
7764
7765 static void
7766 ctanh_test_towardzero (void)
7767 {
7768   START (ctanh_towardzero);
7769   RUN_TEST_LOOP_c_c (ctanh, ctanh_towardzero_test_data, FE_TOWARDZERO);
7770   END_COMPLEX;
7771 }
7772
7773
7774 static const struct test_c_c_data ctanh_downward_test_data[] =
7775   {
7776     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7777
7778 #ifndef TEST_FLOAT
7779     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7780 #endif
7781
7782 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7783     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7784 #endif
7785   };
7786
7787 static void
7788 ctanh_test_downward (void)
7789 {
7790   START (ctanh_downward);
7791   RUN_TEST_LOOP_c_c (ctanh, ctanh_downward_test_data, FE_DOWNWARD);
7792   END_COMPLEX;
7793 }
7794
7795
7796 static const struct test_c_c_data ctanh_upward_test_data[] =
7797   {
7798     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7799
7800 #ifndef TEST_FLOAT
7801     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7802 #endif
7803
7804 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7805     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7806 #endif
7807   };
7808
7809 static void
7810 ctanh_test_upward (void)
7811 {
7812   START (ctanh_upward);
7813   RUN_TEST_LOOP_c_c (ctanh, ctanh_upward_test_data, FE_UPWARD);
7814   END_COMPLEX;
7815 }
7816
7817
7818 static const struct test_f_f_data erf_test_data[] =
7819   {
7820     TEST_f_f (erf, 0, 0),
7821     TEST_f_f (erf, minus_zero, minus_zero),
7822     TEST_f_f (erf, plus_infty, 1),
7823     TEST_f_f (erf, minus_infty, -1),
7824     TEST_f_f (erf, qnan_value, qnan_value),
7825
7826     TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L),
7827     TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L),
7828     TEST_f_f (erf, 1.25L, 0.922900128256458230136523481197281140L),
7829     TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L),
7830     TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L),
7831     TEST_f_f (erf, 27.0L, 1.0L),
7832     TEST_f_f (erf, -27.0L, -1.0L),
7833 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 54
7834     /* The input is not exactly representable as a double.  */
7835     TEST_f_f (erf, -0x1.fffffffffffff8p-2L, -0.5204998778130465132916303345518417673509L),
7836 #endif
7837   };
7838
7839 static void
7840 erf_test (void)
7841 {
7842   START (erf);
7843   RUN_TEST_LOOP_f_f (erf, erf_test_data, );
7844   END;
7845 }
7846
7847
7848 static const struct test_f_f_data erfc_test_data[] =
7849   {
7850     TEST_f_f (erfc, plus_infty, 0.0),
7851     TEST_f_f (erfc, minus_infty, 2.0),
7852     TEST_f_f (erfc, 0.0, 1.0),
7853     TEST_f_f (erfc, minus_zero, 1.0),
7854     TEST_f_f (erfc, qnan_value, qnan_value),
7855
7856     TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L),
7857     TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L),
7858     TEST_f_f (erfc, 1.25L, 0.0770998717435417698634765188027188596L),
7859     TEST_f_f (erfc, 2.0L, 0.00467773498104726583793074363274707139L),
7860     TEST_f_f (erfc, 0x1.f7303cp+1L, 2.705500297238986897105236321218861842255e-8L),
7861     TEST_f_f (erfc, 4.125L, 0.542340079956506600531223408575531062e-8L),
7862     TEST_f_f (erfc, 0x1.ffa002p+2L, 1.233585992097580296336099501489175967033e-29L),
7863     TEST_f_f (erfc, 0x1.ffffc8p+2L, 1.122671365033056305522366683719541099329e-29L),
7864 #ifdef TEST_LDOUBLE
7865 # if LDBL_MANT_DIG >= 54
7866     /* The input is not exactly representable as a double.  */
7867     TEST_f_f (erfc, -0x1.fffffffffffff8p-2L, 1.52049987781304651329163033455184176735L),
7868 # endif
7869     /* The result can only be represented in long double.  */
7870 # if LDBL_MIN_10_EXP < -319
7871     TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L),
7872 # endif
7873 # if LDBL_MANT_DIG >= 106
7874     TEST_f_f (erfc, 0x1.ffff56789abcdef0123456789a8p+2L, 1.123161416304655390092138725253789378459e-29L),
7875 # endif
7876 #endif
7877   };
7878
7879 static void
7880 erfc_test (void)
7881 {
7882   START (erfc);
7883   RUN_TEST_LOOP_f_f (erfc, erfc_test_data, );
7884   END;
7885 }
7886
7887
7888 static const struct test_f_f_data exp_test_data[] =
7889   {
7890     TEST_f_f (exp, 0, 1),
7891     TEST_f_f (exp, minus_zero, 1),
7892
7893 #ifndef TEST_INLINE
7894     TEST_f_f (exp, plus_infty, plus_infty),
7895     TEST_f_f (exp, minus_infty, 0),
7896 #endif
7897     TEST_f_f (exp, qnan_value, qnan_value),
7898     TEST_f_f (exp, 1, M_El),
7899
7900     TEST_f_f (exp, 2, M_E2l),
7901     TEST_f_f (exp, 3, M_E3l),
7902     TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L),
7903     TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L),
7904     TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L),
7905 #ifndef TEST_FLOAT
7906     TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L),
7907 #endif
7908 #if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024
7909     /* The result can only be represented in sane long double.  */
7910     TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L),
7911 #endif
7912
7913 #if !(defined TEST_LDOUBLE && LDBL_MAX_EXP > 1024)
7914     TEST_f_f (exp, 710, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
7915     TEST_f_f (exp, -1234, plus_zero, UNDERFLOW_EXCEPTION),
7916 #endif
7917     TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
7918     TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
7919     TEST_f_f (exp, -max_value, 0, UNDERFLOW_EXCEPTION),
7920   };
7921
7922 static void
7923 exp_test (void)
7924 {
7925   START (exp);
7926   RUN_TEST_LOOP_f_f (exp, exp_test_data, );
7927   END;
7928 }
7929
7930
7931 static const struct test_f_f_data exp_tonearest_test_data[] =
7932   {
7933     TEST_f_f (exp, 1, M_El),
7934     TEST_f_f (exp, 2, M_E2l),
7935     TEST_f_f (exp, 3, M_E3l),
7936   };
7937
7938 static void
7939 exp_test_tonearest (void)
7940 {
7941   START (exp_tonearest);
7942   RUN_TEST_LOOP_f_f (exp, exp_tonearest_test_data, FE_TONEAREST);
7943   END;
7944 }
7945
7946
7947 static const struct test_f_f_data exp_towardzero_test_data[] =
7948   {
7949     TEST_f_f (exp, 1, M_El),
7950     TEST_f_f (exp, 2, M_E2l),
7951     TEST_f_f (exp, 3, M_E3l),
7952   };
7953
7954 static void
7955 exp_test_towardzero (void)
7956 {
7957   START (exp_towardzero);
7958   RUN_TEST_LOOP_f_f (exp, exp_towardzero_test_data, FE_TOWARDZERO);
7959   END;
7960 }
7961
7962
7963 static const struct test_f_f_data exp_downward_test_data[] =
7964   {
7965     TEST_f_f (exp, 1, M_El),
7966     TEST_f_f (exp, 2, M_E2l),
7967     TEST_f_f (exp, 3, M_E3l),
7968   };
7969
7970 static void
7971 exp_test_downward (void)
7972 {
7973   START (exp_downward);
7974   RUN_TEST_LOOP_f_f (exp, exp_downward_test_data, FE_DOWNWARD);
7975   END;
7976 }
7977
7978
7979 static const struct test_f_f_data exp_upward_test_data[] =
7980   {
7981     TEST_f_f (exp, 1, M_El),
7982     TEST_f_f (exp, 2, M_E2l),
7983     TEST_f_f (exp, 3, M_E3l),
7984   };
7985
7986 static void
7987 exp_test_upward (void)
7988 {
7989   START (exp_upward);
7990   RUN_TEST_LOOP_f_f (exp, exp_upward_test_data, FE_UPWARD);
7991   END;
7992 }
7993
7994
7995 static const struct test_f_f_data exp10_test_data[] =
7996   {
7997     TEST_f_f (exp10, 0, 1),
7998     TEST_f_f (exp10, minus_zero, 1),
7999
8000     TEST_f_f (exp10, plus_infty, plus_infty),
8001     TEST_f_f (exp10, minus_infty, 0),
8002     TEST_f_f (exp10, qnan_value, qnan_value),
8003     TEST_f_f (exp10, 3, 1000),
8004     TEST_f_f (exp10, -1, 0.1L),
8005     TEST_f_f (exp10, 36, 1.0e36L),
8006     TEST_f_f (exp10, -36, 1.0e-36L),
8007 #ifndef TEST_FLOAT
8008     TEST_f_f (exp10, 305, 1.0e305L),
8009     TEST_f_f (exp10, -305, 1.0e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
8010 #endif
8011 #if defined TEST_LDOUBLE && LDBL_MAX_10_EXP >= 4932
8012     TEST_f_f (exp10, 4932, 1.0e4932L),
8013     TEST_f_f (exp10, -4932, 1.0e-4932L, UNDERFLOW_EXCEPTION),
8014 #endif
8015     TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8016     TEST_f_f (exp10, -1e6, 0, UNDERFLOW_EXCEPTION),
8017     TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8018     TEST_f_f (exp10, -max_value, 0, UNDERFLOW_EXCEPTION),
8019     TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L),
8020   };
8021
8022 static void
8023 exp10_test (void)
8024 {
8025   START (exp10);
8026   RUN_TEST_LOOP_f_f (exp10, exp10_test_data, );
8027   END;
8028 }
8029
8030 static void
8031 pow10_test (void)
8032 {
8033   START (pow10);
8034   /* pow10 uses the same test data as exp10.  */
8035   RUN_TEST_LOOP_f_f (pow10, exp10_test_data, );
8036   END;
8037 }
8038
8039
8040 static const struct test_f_f_data exp2_test_data[] =
8041   {
8042     TEST_f_f (exp2, 0, 1),
8043     TEST_f_f (exp2, minus_zero, 1),
8044     TEST_f_f (exp2, plus_infty, plus_infty),
8045     TEST_f_f (exp2, minus_infty, 0),
8046     TEST_f_f (exp2, qnan_value, qnan_value),
8047
8048     TEST_f_f (exp2, 10, 1024),
8049     TEST_f_f (exp2, -1, 0.5),
8050     TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8051     TEST_f_f (exp2, -1e6, 0, UNDERFLOW_EXCEPTION),
8052     TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8053     TEST_f_f (exp2, -max_value, 0, UNDERFLOW_EXCEPTION),
8054     TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L),
8055
8056     TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L),
8057     TEST_f_f (exp2, 127, 0x1p127),
8058     TEST_f_f (exp2, -149, 0x1p-149),
8059
8060 #ifndef TEST_FLOAT
8061     TEST_f_f (exp2, 1000.25, 1.274245659452564874772384918171765416737e+301L),
8062     TEST_f_f (exp2, 1023, 0x1p1023),
8063     TEST_f_f (exp2, -1074, 0x1p-1074),
8064 #endif
8065
8066 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8067     TEST_f_f (exp2, 16383, 0x1p16383L),
8068     TEST_f_f (exp2, -16400, 0x1p-16400L),
8069 #endif
8070   };
8071
8072 static void
8073 exp2_test (void)
8074 {
8075   START (exp2);
8076   RUN_TEST_LOOP_f_f (exp2, exp2_test_data, );
8077   END;
8078 }
8079
8080
8081 static const struct test_f_f_data expm1_test_data[] =
8082   {
8083     TEST_f_f (expm1, 0, 0),
8084     TEST_f_f (expm1, minus_zero, minus_zero),
8085
8086 #ifndef TEST_INLINE
8087     TEST_f_f (expm1, plus_infty, plus_infty),
8088     TEST_f_f (expm1, minus_infty, -1),
8089 #endif
8090     TEST_f_f (expm1, qnan_value, qnan_value),
8091
8092     TEST_f_f (expm1, 1, M_El - 1.0),
8093     TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L),
8094
8095     TEST_f_f (expm1, 50.0L, 5.1847055285870724640864533229334853848275e+21L),
8096
8097 #ifndef TEST_FLOAT
8098     TEST_f_f (expm1, 127.0L, 1.4302079958348104463583671072905261080748e+55L),
8099     TEST_f_f (expm1, 500.0L, 1.4035922178528374107397703328409120821806e+217L),
8100 #endif
8101
8102 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8103     TEST_f_f (expm1, 11356.25L, 9.05128237311923300051376115753226014206e+4931L),
8104 #endif
8105
8106     TEST_f_f (expm1, -10.0, -0.9999546000702375151484644084844394493898L),
8107     TEST_f_f (expm1, -16.0, -0.9999998874648252807408854862248209398728L),
8108     TEST_f_f (expm1, -17.0, -0.9999999586006228121483334034897228104472L),
8109     TEST_f_f (expm1, -18.0, -0.9999999847700202552873715638633707664826L),
8110     TEST_f_f (expm1, -36.0, -0.9999999999999997680477169756430611687736L),
8111     TEST_f_f (expm1, -37.0, -0.9999999999999999146695237425593420572195L),
8112     TEST_f_f (expm1, -38.0, -0.9999999999999999686086720795197037129104L),
8113     TEST_f_f (expm1, -44.0, -0.9999999999999999999221886775886620348429L),
8114     TEST_f_f (expm1, -45.0, -0.9999999999999999999713748141945060635553L),
8115     TEST_f_f (expm1, -46.0, -0.9999999999999999999894693826424461876212L),
8116     TEST_f_f (expm1, -73.0, -0.9999999999999999999999999999999802074012L),
8117     TEST_f_f (expm1, -74.0, -0.9999999999999999999999999999999927187098L),
8118     TEST_f_f (expm1, -75.0, -0.9999999999999999999999999999999973213630L),
8119     TEST_f_f (expm1, -78.0, -0.9999999999999999999999999999999998666385L),
8120     TEST_f_f (expm1, -79.0, -0.9999999999999999999999999999999999509391L),
8121     TEST_f_f (expm1, -80.0, -0.9999999999999999999999999999999999819515L),
8122     TEST_f_f (expm1, -100.0, -1.0),
8123     TEST_f_f (expm1, -1000.0, -1.0),
8124     TEST_f_f (expm1, -10000.0, -1.0),
8125     TEST_f_f (expm1, -100000.0, -1.0),
8126
8127     TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8128     TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8129     TEST_f_f (expm1, -max_value, -1),
8130   };
8131
8132 static void
8133 expm1_test (void)
8134 {
8135   START (expm1);
8136   RUN_TEST_LOOP_f_f (expm1, expm1_test_data, );
8137   END;
8138 }
8139
8140
8141 static const struct test_f_f_data fabs_test_data[] =
8142   {
8143     TEST_f_f (fabs, 0, 0, NO_INEXACT_EXCEPTION),
8144     TEST_f_f (fabs, minus_zero, 0, NO_INEXACT_EXCEPTION),
8145
8146     TEST_f_f (fabs, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
8147     TEST_f_f (fabs, minus_infty, plus_infty, NO_INEXACT_EXCEPTION),
8148     TEST_f_f (fabs, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
8149
8150     TEST_f_f (fabs, 38.0, 38.0, NO_INEXACT_EXCEPTION),
8151     TEST_f_f (fabs, -M_El, M_El, NO_INEXACT_EXCEPTION),
8152   };
8153
8154 static void
8155 fabs_test (void)
8156 {
8157   START (fabs);
8158   RUN_TEST_LOOP_f_f (fabs, fabs_test_data, );
8159   END;
8160 }
8161
8162
8163 static const struct test_ff_f_data fdim_test_data[] =
8164   {
8165     TEST_ff_f (fdim, 0, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8166     TEST_ff_f (fdim, 9, 0, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8167     TEST_ff_f (fdim, 0, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8168     TEST_ff_f (fdim, -9, 0, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8169     TEST_ff_f (fdim, 0, -9, 9, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8170
8171     TEST_ff_f (fdim, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8172     TEST_ff_f (fdim, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8173     TEST_ff_f (fdim, minus_infty, 9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8174     TEST_ff_f (fdim, minus_infty, -9, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8175     TEST_ff_f (fdim, 9, minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8176     TEST_ff_f (fdim, -9, minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8177     TEST_ff_f (fdim, 9, plus_infty, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8178     TEST_ff_f (fdim, -9, plus_infty, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8179
8180     TEST_ff_f (fdim, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8181     TEST_ff_f (fdim, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8182     TEST_ff_f (fdim, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8183     TEST_ff_f (fdim, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8184     TEST_ff_f (fdim, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8185     TEST_ff_f (fdim, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8186     TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8187     TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8188     TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8189     TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8190     TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8191
8192     TEST_ff_f (fdim, plus_infty, plus_infty, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8193     TEST_ff_f (fdim, plus_infty, minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8194     TEST_ff_f (fdim, minus_infty, plus_infty, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8195     TEST_ff_f (fdim, minus_infty, minus_infty, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
8196   };
8197
8198 static void
8199 fdim_test (void)
8200 {
8201   START (fdim);
8202   RUN_TEST_LOOP_ff_f (fdim, fdim_test_data, );
8203   END;
8204 }
8205
8206
8207 static const struct test_f_f_data floor_test_data[] =
8208   {
8209     TEST_f_f (floor, 0.0, 0.0, NO_INEXACT_EXCEPTION),
8210     TEST_f_f (floor, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
8211     TEST_f_f (floor, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
8212     TEST_f_f (floor, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
8213     TEST_f_f (floor, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
8214
8215     /* Bug 15479: spurious "inexact" exception may occur.  */
8216     TEST_f_f (floor, M_PIl, 3.0),
8217     TEST_f_f (floor, -M_PIl, -4.0),
8218
8219     TEST_f_f (floor, 0.1, 0.0),
8220     TEST_f_f (floor, 0.25, 0.0),
8221     TEST_f_f (floor, 0.625, 0.0),
8222     TEST_f_f (floor, -0.1, -1.0),
8223     TEST_f_f (floor, -0.25, -1.0),
8224     TEST_f_f (floor, -0.625, -1.0),
8225
8226 #ifdef TEST_LDOUBLE
8227     /* The result can only be represented in long double.  */
8228     TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L),
8229     TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L),
8230     TEST_f_f (floor, 4503599627370496.5L, 4503599627370496.0L),
8231     TEST_f_f (floor, 4503599627370496.75L, 4503599627370496.0L),
8232     TEST_f_f (floor, 4503599627370497.5L, 4503599627370497.0L),
8233 # if LDBL_MANT_DIG > 100
8234     TEST_f_f (floor, 4503599627370494.5000000000001L, 4503599627370494.0L),
8235     TEST_f_f (floor, 4503599627370495.5000000000001L, 4503599627370495.0L),
8236     TEST_f_f (floor, 4503599627370496.5000000000001L, 4503599627370496.0L),
8237 # endif
8238
8239     TEST_f_f (floor, -4503599627370495.5L, -4503599627370496.0L),
8240     TEST_f_f (floor, -4503599627370496.25L, -4503599627370497.0L),
8241     TEST_f_f (floor, -4503599627370496.5L, -4503599627370497.0L),
8242     TEST_f_f (floor, -4503599627370496.75L, -4503599627370497.0L),
8243     TEST_f_f (floor, -4503599627370497.5L, -4503599627370498.0L),
8244 # if LDBL_MANT_DIG > 100
8245     TEST_f_f (floor, -4503599627370494.5000000000001L, -4503599627370495.0L),
8246     TEST_f_f (floor, -4503599627370495.5000000000001L, -4503599627370496.0L),
8247     TEST_f_f (floor, -4503599627370496.5000000000001L, -4503599627370497.0L),
8248 # endif
8249
8250     TEST_f_f (floor, 9007199254740991.5L, 9007199254740991.0L),
8251     TEST_f_f (floor, 9007199254740992.25L, 9007199254740992.0L),
8252     TEST_f_f (floor, 9007199254740992.5L, 9007199254740992.0L),
8253     TEST_f_f (floor, 9007199254740992.75L, 9007199254740992.0L),
8254     TEST_f_f (floor, 9007199254740993.5L, 9007199254740993.0L),
8255
8256 # if LDBL_MANT_DIG > 100
8257     TEST_f_f (floor, 9007199254740991.0000000000001L, 9007199254740991.0L),
8258     TEST_f_f (floor, 9007199254740992.0000000000001L, 9007199254740992.0L),
8259     TEST_f_f (floor, 9007199254740993.0000000000001L, 9007199254740993.0L),
8260     TEST_f_f (floor, 9007199254740991.5000000000001L, 9007199254740991.0L),
8261     TEST_f_f (floor, 9007199254740992.5000000000001L, 9007199254740992.0L),
8262     TEST_f_f (floor, 9007199254740993.5000000000001L, 9007199254740993.0L),
8263 # endif
8264
8265     TEST_f_f (floor, -9007199254740991.5L, -9007199254740992.0L),
8266     TEST_f_f (floor, -9007199254740992.25L, -9007199254740993.0L),
8267     TEST_f_f (floor, -9007199254740992.5L, -9007199254740993.0L),
8268     TEST_f_f (floor, -9007199254740992.75L, -9007199254740993.0L),
8269     TEST_f_f (floor, -9007199254740993.5L, -9007199254740994.0L),
8270
8271 # if LDBL_MANT_DIG > 100
8272     TEST_f_f (floor, -9007199254740991.0000000000001L, -9007199254740992.0L),
8273     TEST_f_f (floor, -9007199254740992.0000000000001L, -9007199254740993.0L),
8274     TEST_f_f (floor, -9007199254740993.0000000000001L, -9007199254740994.0L),
8275     TEST_f_f (floor, -9007199254740991.5000000000001L, -9007199254740992.0L),
8276     TEST_f_f (floor, -9007199254740992.5000000000001L, -9007199254740993.0L),
8277     TEST_f_f (floor, -9007199254740993.5000000000001L, -9007199254740994.0L),
8278 # endif
8279
8280     TEST_f_f (floor, 72057594037927935.5L, 72057594037927935.0L),
8281     TEST_f_f (floor, 72057594037927936.25L, 72057594037927936.0L),
8282     TEST_f_f (floor, 72057594037927936.5L, 72057594037927936.0L),
8283     TEST_f_f (floor, 72057594037927936.75L, 72057594037927936.0L),
8284     TEST_f_f (floor, 72057594037927937.5L, 72057594037927937.0L),
8285
8286     TEST_f_f (floor, -72057594037927935.5L, -72057594037927936.0L),
8287     TEST_f_f (floor, -72057594037927936.25L, -72057594037927937.0L),
8288     TEST_f_f (floor, -72057594037927936.5L, -72057594037927937.0L),
8289     TEST_f_f (floor, -72057594037927936.75L, -72057594037927937.0L),
8290     TEST_f_f (floor, -72057594037927937.5L, -72057594037927938.0L),
8291
8292     TEST_f_f (floor, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
8293     TEST_f_f (floor, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
8294     TEST_f_f (floor, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
8295     TEST_f_f (floor, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
8296     TEST_f_f (floor, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
8297
8298     TEST_f_f (floor, 0xf.ffffffffffffff8p+47L, 0xf.fffffffffffep+47L),
8299     TEST_f_f (floor, -0x8.000000000000004p+48L, -0x8.000000000001p+48L),
8300 #endif
8301   };
8302
8303 static void
8304 floor_test (void)
8305 {
8306   START (floor);
8307   RUN_TEST_LOOP_f_f (floor, floor_test_data, );
8308   END;
8309 }
8310
8311
8312 static const struct test_fff_f_data fma_test_data[] =
8313   {
8314     TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0),
8315     TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value),
8316     TEST_fff_f (fma, 1.0, qnan_value, 3.0, qnan_value),
8317     TEST_fff_f (fma, 1.0, 2.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8318     TEST_fff_f (fma, plus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8319     TEST_fff_f (fma, minus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8320     TEST_fff_f (fma, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8321     TEST_fff_f (fma, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8322     TEST_fff_f (fma, plus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8323     TEST_fff_f (fma, minus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8324     TEST_fff_f (fma, 0.0, plus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8325     TEST_fff_f (fma, 0.0, minus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8326
8327     TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8328     TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8329     TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8330     TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8331     TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8332     TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8333     TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8334     TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, qnan_value, INVALID_EXCEPTION),
8335
8336     TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L),
8337
8338     TEST_fff_f (fma, -max_value, -max_value, minus_infty, minus_infty),
8339     TEST_fff_f (fma, max_value / 2, max_value / 2, minus_infty, minus_infty),
8340     TEST_fff_f (fma, -max_value, max_value, plus_infty, plus_infty),
8341     TEST_fff_f (fma, max_value / 2, -max_value / 4, plus_infty, plus_infty),
8342     TEST_fff_f (fma, plus_infty, 4, plus_infty, plus_infty),
8343     TEST_fff_f (fma, 2, minus_infty, minus_infty, minus_infty),
8344     TEST_fff_f (fma, minus_infty, minus_infty, plus_infty, plus_infty),
8345     TEST_fff_f (fma, plus_infty, minus_infty, minus_infty, minus_infty),
8346
8347     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8348     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8349     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8350     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8351     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8352     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8353     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8354     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8355     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8356     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8357     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8358     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8359     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8360     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8361     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8362     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8363     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8364     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8365     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8366     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8367     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8368     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8369     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8370     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8371
8372     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8373     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8374     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8375     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8376
8377     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8378     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8379     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8380     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8381     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8382     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8383     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8384     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8385
8386     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8387     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8388     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8389     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8390     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8391     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8392     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8393     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8394
8395 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8396     TEST_fff_f (fma, 0x1.7ff8p+13, 0x1.000002p+0, 0x1.ffffp-24, 0x1.7ff802p+13),
8397     TEST_fff_f (fma, 0x1.fffp+0, 0x1.00001p+0, -0x1.fffp+0, 0x1.fffp-20),
8398     TEST_fff_f (fma, 0x1.9abcdep+127, 0x0.9abcdep-126, -0x1.f08948p+0, 0x1.bb421p-25),
8399     TEST_fff_f (fma, 0x1.9abcdep+100, 0x0.9abcdep-126, -0x1.f08948p-27, 0x1.bb421p-52),
8400     TEST_fff_f (fma, 0x1.fffffep+127, 0x1.001p+0, -0x1.fffffep+127, 0x1.fffffep+115),
8401     TEST_fff_f (fma, -0x1.fffffep+127, 0x1.fffffep+0, 0x1.fffffep+127, -0x1.fffffap+127),
8402     TEST_fff_f (fma, 0x1.fffffep+127, 2.0, -0x1.fffffep+127, 0x1.fffffep+127),
8403     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8404     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8405     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8406     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8407     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8408     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8409     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8410     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8411     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8412     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
8413     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8414     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8415     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8416     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8417     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8418     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8419     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8420     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8421     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8422     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8423     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8424     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8425     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8426     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8427     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8428     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8429     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8430     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8431     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8432     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
8433     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8434     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8435     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8436     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
8437     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8438     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8439 #endif
8440 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8441     TEST_fff_f (fma, 0x1.7fp+13, 0x1.0000000000001p+0, 0x1.ffep-48, 0x1.7f00000000001p+13),
8442     TEST_fff_f (fma, 0x1.fffp+0, 0x1.0000000000001p+0, -0x1.fffp+0, 0x1.fffp-52),
8443     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, 0x1p-300, 1.0),
8444     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, -0x1p-300, 0x1.fffffffffffffp-1),
8445     TEST_fff_f (fma, 0x1.deadbeef2feedp+1023, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp+1, 0x1.0989687bc9da4p-53),
8446     TEST_fff_f (fma, 0x1.deadbeef2feedp+900, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp-122, 0x1.0989687bc9da4p-176),
8447     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 0x1.001p+0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1011),
8448     TEST_fff_f (fma, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+0, 0x1.fffffffffffffp+1023, -0x1.ffffffffffffdp+1023),
8449     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 2.0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023),
8450     TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0, UNDERFLOW_EXCEPTION),
8451     TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022, UNDERFLOW_EXCEPTION),
8452     TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022, UNDERFLOW_EXCEPTION),
8453     TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022, UNDERFLOW_EXCEPTION),
8454     TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022, UNDERFLOW_EXCEPTION),
8455     TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION),
8456     TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION),
8457     TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION),
8458     TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION),
8459     TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION),
8460     TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983),
8461     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8462     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8463     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8464     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8465     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8466     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8467     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8468     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8469     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8470     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
8471     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8472     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8473     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8474     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8475     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8476     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8477     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8478     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8479     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8480     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8481     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8482     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8483     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8484     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8485     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8486     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8487     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8488     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8489     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8490     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8491     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8492     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8493     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8494     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
8495     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
8496     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8497 #endif
8498 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8499     TEST_fff_f (fma, -0x8.03fcp+3696L, 0xf.fffffffffffffffp-6140L, 0x8.3ffffffffffffffp-2450L, -0x8.01ecp-2440L),
8500     TEST_fff_f (fma, 0x9.fcp+2033L, -0x8.000e1f000ff800fp-3613L, -0xf.fffffffffffc0ffp-1579L, -0xd.fc119fb093ed092p-1577L),
8501     TEST_fff_f (fma, 0xc.7fc000003ffffffp-1194L, 0x8.1e0003fffffffffp+15327L, -0x8.fffep+14072L, 0xc.ae9f164020effffp+14136L),
8502     TEST_fff_f (fma, -0x8.0001fc000000003p+1798L, 0xcp-2230L, 0x8.f7e000000000007p-468L, -0xc.0002f9ffee10404p-429L),
8503     TEST_fff_f (fma, 0xc.0000000000007ffp+10130L, -0x8.000000000000001p+4430L, 0xc.07000000001ffffp+14513L, -0xb.fffffffffffd7e4p+14563L),
8504     TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L, UNDERFLOW_EXCEPTION),
8505     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8506     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8507     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8508     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8509     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8510     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8511     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8512     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8513     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8514     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
8515     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
8516     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8517     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8518     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8519     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8520     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8521     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8522     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8523     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8524     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8525     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8526     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8527     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8528     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8529     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8530     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8531     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8532     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8533     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8534     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8535     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8536     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8537     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8538     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8539     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8540     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8541 #endif
8542 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8543     TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L),
8544     TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L, UNDERFLOW_EXCEPTION),
8545     TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L, UNDERFLOW_EXCEPTION),
8546     TEST_fff_f (fma, -0x1.ac79c9376ef447f3827c9e9de008p-2228L, -0x1.5ba830022b6139e21fbe7270cad8p-6314L, 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616L, 0x1.22f14a0253878a730cd1aee373adp-8541L),
8547     TEST_fff_f (fma, -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652L, 0x1.f34235ff9d095449c29b4831b62dp+3311L, 0x1.fbe4302df23354dbd0c4d3cfe606p+5879L, -0x1.bb473bfdfb7a6e18886ce6e57eafp+5964L),
8548     TEST_fff_f (fma, -0x1.ca8835fc6ecfb5398625fc891be5p-1686L, 0x1.621e1972bbe2180e5be9dd7d8df5p-7671L, -0x1.7d2d21b73b52cf20dec2a83902a4p-9395L, -0x1.3d2322191c9c88bc68a62ab8042cp-9356L),
8549     TEST_fff_f (fma, -0x1.55cff679ec49c2541fab41fc843ep-11819L, 0x1.e60e9f464f9e8df0509647c7c971p+12325L, 0x1.eaa2a7649d765c2f564f7a5beca7p+454L, -0x1.447e29fa7e406a285f4e350fcf86p+507L),
8550     TEST_fff_f (fma, 0x1.f0e7b1454908576f2537d863cf9bp+11432L, 0x1.cdce52f09d4ca76e68706f34b5d5p-1417L, -0x1.2e986187c70f146235ea2066e486p+9979L, 0x1.c030dad3cc5643f3dd0f5619f661p+10016L),
8551     TEST_fff_f (fma, 0x1.f102f7da4a57a3a4aab620e29452p-3098L, -0x1.cc06a4ff40248f9e2dcc4b6afd84p-11727L, 0x1.d512a11126b5ac8ed8973b8580c8p-14849L, -0x1.be8f1cf737ab4d1c31c54f5ec23bp-14824L),
8552     TEST_fff_f (fma, -0x1.fc47ac7434b993cd8dcb2b431f25p-3816L, 0x1.fbc9750da8468852d84558e1db6dp-5773L, -0x1.00a98abf783f75c40fe5b7a37d86p-9607L, -0x1.f81917b166f45e763cfcc057e2adp-9588L),
8553     TEST_fff_f (fma, 0x1.00000000000007ffffffffffffffp-9045L, -0x1.ffffffffffff80000001ffffffffp+4773L, -0x1.f8p-4316L, -0x1.00000000000f88000000fffffdffp-4271L),
8554     TEST_fff_f (fma, 0x1.4e922764c90701d4a2f21d01893dp-8683L, -0x1.955a12e2d7c9447c27fa022fc865p+212L, -0x1.e9634462eaef96528b90b6944578p-8521L, -0x1.08e1783184a371943d3598e10865p-8470L),
8555     TEST_fff_f (fma, 0x1.801181509c03bdbef10d6165588cp-15131L, 0x1.ad86f8e57d3d40bfa8007780af63p-368L, -0x1.6e9df0dab1c9f1d7a6043c390741p-15507L, 0x1.417c9b2b15e2ad57dc9e0e920844p-15498L),
8556     TEST_fff_f (fma, 0x1.ffffffffffffffp0L, 0x1.000000000000008p0L, -0x1p-1000L, 0x1.ffffffffffffffffffffffffffffp0L),
8557     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8558     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8559     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8560     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8561     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8562     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8563     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8564     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8565     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8566     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
8567     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
8568     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8569     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8570     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8571     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8572     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8573     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8574     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8575     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8576     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8577     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8578     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8579     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8580     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8581     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8582     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8583     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8584     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8585     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8586     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8587     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8588     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8589     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8590     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8591     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8592     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8593 #endif
8594   };
8595
8596 static void
8597 fma_test (void)
8598 {
8599   START (fma);
8600   RUN_TEST_LOOP_fff_f (fma, fma_test_data, );
8601   END;
8602 }
8603
8604
8605 static const struct test_fff_f_data fma_towardzero_test_data[] =
8606   {
8607     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8608     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8609     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8610     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8611     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8612     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8613     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8614     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8615     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8616     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8617     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8618     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8619     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8620     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8621     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8622     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8623     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8624     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8625     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8626     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8627     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8628     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8629     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8630     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8631
8632     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8633     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8634     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8635     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8636
8637     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8638     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8639     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8640     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8641     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8642     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8643     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8644     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8645
8646 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8647     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8648     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8649     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8650     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8651     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8652     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8653     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8654     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8655 #endif
8656
8657 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8658     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8659     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8660     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8661     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8662     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8663     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8664     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8665     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8666     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8667     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8668     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
8669     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8670     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8671     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8672     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8673     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8674     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8675     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8676     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8677     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8678     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8679     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8680     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
8681     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8682     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8683     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8684     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8685     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8686     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8687     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8688     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
8689     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8690     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8691     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8692     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
8693     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8694 #endif
8695 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8696     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8697     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8698     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8699     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8700     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8701     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8702     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8703     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8704     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8705     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8706     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
8707     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8708     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8709     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8710     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8711     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8712     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8713     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8714     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8715     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8716     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8717     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
8718     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
8719     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8720     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8721     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8722     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8723     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8724     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8725     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
8726     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
8727     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8728     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8729     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
8730     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
8731     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8732 #endif
8733 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8734     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8735     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8736     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8737     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8738     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8739     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8740     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8741     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8742     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8743     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8744     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8745     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8746     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8747     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8748     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8749     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8750     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8751     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8752     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8753     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8754     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8755     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
8756     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
8757     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8758     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8759     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8760     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8761     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8762     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8763     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8764     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8765     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8766     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8767     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
8768     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
8769     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8770 #endif
8771 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8772     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8773     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8774     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8775     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8776     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8777     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8778     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8779     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8780     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8781     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8782     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8783     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8784     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8785     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8786     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8787     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8788     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8789     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8790     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8791     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8792     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8793     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
8794     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
8795     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8796     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8797     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8798     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8799     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8800     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8801     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8802     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8803     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8804     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8805     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
8806     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
8807     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8808 #endif
8809   };
8810
8811 static void
8812 fma_test_towardzero (void)
8813 {
8814   START (fma_towardzero);
8815   RUN_TEST_LOOP_fff_f (fma, fma_towardzero_test_data, FE_TOWARDZERO);
8816   END;
8817 }
8818
8819
8820 static const struct test_fff_f_data fma_downward_test_data[] =
8821   {
8822     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8823     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, minus_zero),
8824     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, minus_zero),
8825     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8826     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, minus_zero),
8827     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8828     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8829     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, minus_zero),
8830     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8831     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, minus_zero),
8832     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, minus_zero),
8833     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8834     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, minus_zero),
8835     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8836     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8837     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, minus_zero),
8838     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8839     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, minus_zero),
8840     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, minus_zero),
8841     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8842     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, minus_zero),
8843     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8844     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8845     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, minus_zero),
8846
8847     TEST_fff_f (fma, 1.0, 1.0, -1.0, minus_zero),
8848     TEST_fff_f (fma, 1.0, -1.0, 1.0, minus_zero),
8849     TEST_fff_f (fma, -1.0, 1.0, 1.0, minus_zero),
8850     TEST_fff_f (fma, -1.0, -1.0, -1.0, minus_zero),
8851
8852     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8853     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8854     TEST_fff_f (fma, min_value, -min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8855     TEST_fff_f (fma, min_value, -min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8856     TEST_fff_f (fma, -min_value, min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8857     TEST_fff_f (fma, -min_value, min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8858     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8859     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8860
8861 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8862     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8863     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8864     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8865     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8866     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8867     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8868     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8869     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8870 #endif
8871
8872 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8873     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8874     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00008p-127, UNDERFLOW_EXCEPTION),
8875     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8876     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8877     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8878     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8879     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8880     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8881     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8882     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8883     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8884     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1.000002p127),
8885     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8886     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8887     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8888     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1.000002p-126),
8889     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8890     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8891     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8892     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8893     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8894     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8895     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8896     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-148, UNDERFLOW_EXCEPTION),
8897     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8898     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8899     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8900     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8901     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8902     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8903     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8904     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1.000002p127),
8905     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8906     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8907     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8908     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1.000002p103),
8909 #endif
8910 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8911     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8912     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
8913     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8914     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8915     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8916     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8917     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8918     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8919     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8920     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8921     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8922     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1.0000000000001p1023),
8923     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8924     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8925     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8926     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1.0000000000001p-1022),
8927     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8928     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8929     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8930     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8931     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8932     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
8933     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8934     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1073, UNDERFLOW_EXCEPTION),
8935     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8936     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8937     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8938     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8939     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8940     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
8941     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8942     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1.0000000000001p1023),
8943     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8944     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
8945     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
8946     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1.0000000000001p970),
8947 #endif
8948 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8949     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8950     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
8951     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8952     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8953     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8954     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8955     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8956     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8957     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8958     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8959     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
8960     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1.0000000000000002p16383L),
8961     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8962     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8963     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8964     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1.0000000000000002p-16382L),
8965     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8966     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8967     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8968     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8969     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8970     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
8971     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8972     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16444L, UNDERFLOW_EXCEPTION),
8973     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8974     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8975     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8976     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8977     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8978     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8979     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8980     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1.0000000000000002p16383L),
8981     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8982     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
8983     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8984     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1.0000000000000002p16319L),
8985 #endif
8986 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8987     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8988     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8989     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8990     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8991     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8992     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8993     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8994     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8995     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8996     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8997     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
8998     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
8999     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
9000     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9001     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9002     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1.0000000000000000000000000001p-16382L),
9003     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9004     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9005     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9006     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9007     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9008     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
9009     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9010     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16493L, UNDERFLOW_EXCEPTION),
9011     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9012     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9013     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9014     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9015     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9016     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9017     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9018     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9019     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9020     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
9021     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9022     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1.0000000000000000000000000001p16319L),
9023 #endif
9024   };
9025
9026 static void
9027 fma_test_downward (void)
9028 {
9029   START (fma_downward);
9030   RUN_TEST_LOOP_fff_f (fma, fma_downward_test_data, FE_DOWNWARD);
9031   END;
9032 }
9033
9034
9035 static const struct test_fff_f_data fma_upward_test_data[] =
9036   {
9037     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
9038     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
9039     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
9040     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
9041     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
9042     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
9043     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
9044     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
9045     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
9046     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
9047     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
9048     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
9049     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
9050     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
9051     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
9052     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
9053     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
9054     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
9055     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
9056     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
9057     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
9058     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
9059     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
9060     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
9061
9062     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
9063     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
9064     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
9065     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
9066
9067     TEST_fff_f (fma, min_value, min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9068     TEST_fff_f (fma, min_value, min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9069     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9070     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9071     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9072     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9073     TEST_fff_f (fma, -min_value, -min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9074     TEST_fff_f (fma, -min_value, -min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9075
9076 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
9077     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9078     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9079     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9080     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9081     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9082     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9083     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9084     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9085 #endif
9086
9087 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9088     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00008p-127, UNDERFLOW_EXCEPTION),
9089     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
9090     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9091     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9092     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9093     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9094     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9095     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9096     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1.000002p127),
9097     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
9098     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
9099     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
9100     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1.000002p-126),
9101     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9102     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9103     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
9104     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9105     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9106     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
9107     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9108     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-148, UNDERFLOW_EXCEPTION),
9109     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
9110     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
9111     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
9112     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
9113     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
9114     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
9115     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
9116     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1.000002p127),
9117     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
9118     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
9119     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
9120     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1.000002p103),
9121     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
9122     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
9123     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
9124 #endif
9125 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
9126     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
9127     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
9128     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9129     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9130     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9131     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9132     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9133     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9134     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1.0000000000001p1023),
9135     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
9136     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
9137     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
9138     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1.0000000000001p-1022),
9139     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9140     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9141     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
9142     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9143     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9144     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9145     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9146     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1073, UNDERFLOW_EXCEPTION),
9147     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9148     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
9149     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9150     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9151     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9152     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9153     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9154     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1.0000000000001p1023),
9155     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9156     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
9157     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9158     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1.0000000000001p970),
9159     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
9160     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
9161     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
9162 #endif
9163 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9164     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9165     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9166     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9167     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9168     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9169     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9170     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9171     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9172     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1.0000000000000002p16383L),
9173     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
9174     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9175     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
9176     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1.0000000000000002p-16382L),
9177     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9178     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9179     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
9180     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9181     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9182     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9183     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9184     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16444L, UNDERFLOW_EXCEPTION),
9185     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9186     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
9187     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9188     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9189     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9190     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9191     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9192     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1.0000000000000002p16383L),
9193     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9194     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9195     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9196     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1.0000000000000002p16319L),
9197     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9198     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
9199     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9200 #endif
9201 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9202     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9203     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9204     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9205     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9206     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9207     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9208     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9209     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9210     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9211     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
9212     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9213     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
9214     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1.0000000000000000000000000001p-16382L),
9215     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9216     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9217     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
9218     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9219     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9220     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9221     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9222     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16493L, UNDERFLOW_EXCEPTION),
9223     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9224     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
9225     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9226     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9227     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9228     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9229     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9230     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9231     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9232     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9233     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9234     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1.0000000000000000000000000001p16319L),
9235     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9236     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
9237     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9238 #endif
9239   };
9240
9241 static void
9242 fma_test_upward (void)
9243 {
9244   START (fma_upward);
9245   RUN_TEST_LOOP_fff_f (fma, fma_upward_test_data, FE_UPWARD);
9246   END;
9247 }
9248
9249
9250 static const struct test_ff_f_data fmax_test_data[] =
9251   {
9252     TEST_ff_f (fmax, 0, 0, 0, NO_INEXACT_EXCEPTION),
9253     TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
9254     TEST_ff_f (fmax, 9, 0, 9, NO_INEXACT_EXCEPTION),
9255     TEST_ff_f (fmax, 0, 9, 9, NO_INEXACT_EXCEPTION),
9256     TEST_ff_f (fmax, -9, 0, 0, NO_INEXACT_EXCEPTION),
9257     TEST_ff_f (fmax, 0, -9, 0, NO_INEXACT_EXCEPTION),
9258
9259     TEST_ff_f (fmax, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION),
9260     TEST_ff_f (fmax, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
9261     TEST_ff_f (fmax, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
9262     TEST_ff_f (fmax, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION),
9263
9264     TEST_ff_f (fmax, minus_infty, 9, 9, NO_INEXACT_EXCEPTION),
9265     TEST_ff_f (fmax, minus_infty, -9, -9, NO_INEXACT_EXCEPTION),
9266     TEST_ff_f (fmax, 9, minus_infty, 9, NO_INEXACT_EXCEPTION),
9267     TEST_ff_f (fmax, -9, minus_infty, -9, NO_INEXACT_EXCEPTION),
9268
9269     TEST_ff_f (fmax, 0, qnan_value, 0, NO_INEXACT_EXCEPTION),
9270     TEST_ff_f (fmax, 9, qnan_value, 9, NO_INEXACT_EXCEPTION),
9271     TEST_ff_f (fmax, -9, qnan_value, -9, NO_INEXACT_EXCEPTION),
9272     TEST_ff_f (fmax, qnan_value, 0, 0, NO_INEXACT_EXCEPTION),
9273     TEST_ff_f (fmax, qnan_value, 9, 9, NO_INEXACT_EXCEPTION),
9274     TEST_ff_f (fmax, qnan_value, -9, -9, NO_INEXACT_EXCEPTION),
9275     TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION),
9276     TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION),
9277     TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
9278     TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
9279     TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
9280   };
9281
9282 static void
9283 fmax_test (void)
9284 {
9285   START (fmax);
9286   RUN_TEST_LOOP_ff_f (fmax, fmax_test_data, );
9287   END;
9288 }
9289
9290
9291 static const struct test_ff_f_data fmin_test_data[] =
9292   {
9293     TEST_ff_f (fmin, 0, 0, 0, NO_INEXACT_EXCEPTION),
9294     TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
9295     TEST_ff_f (fmin, 9, 0, 0, NO_INEXACT_EXCEPTION),
9296     TEST_ff_f (fmin, 0, 9, 0, NO_INEXACT_EXCEPTION),
9297     TEST_ff_f (fmin, -9, 0, -9, NO_INEXACT_EXCEPTION),
9298     TEST_ff_f (fmin, 0, -9, -9, NO_INEXACT_EXCEPTION),
9299
9300     TEST_ff_f (fmin, plus_infty, 9, 9, NO_INEXACT_EXCEPTION),
9301     TEST_ff_f (fmin, 9, plus_infty, 9, NO_INEXACT_EXCEPTION),
9302     TEST_ff_f (fmin, plus_infty, -9, -9, NO_INEXACT_EXCEPTION),
9303     TEST_ff_f (fmin, -9, plus_infty, -9, NO_INEXACT_EXCEPTION),
9304     TEST_ff_f (fmin, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION),
9305     TEST_ff_f (fmin, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION),
9306     TEST_ff_f (fmin, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
9307     TEST_ff_f (fmin, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
9308
9309     TEST_ff_f (fmin, 0, qnan_value, 0, NO_INEXACT_EXCEPTION),
9310     TEST_ff_f (fmin, 9, qnan_value, 9, NO_INEXACT_EXCEPTION),
9311     TEST_ff_f (fmin, -9, qnan_value, -9, NO_INEXACT_EXCEPTION),
9312     TEST_ff_f (fmin, qnan_value, 0, 0, NO_INEXACT_EXCEPTION),
9313     TEST_ff_f (fmin, qnan_value, 9, 9, NO_INEXACT_EXCEPTION),
9314     TEST_ff_f (fmin, qnan_value, -9, -9, NO_INEXACT_EXCEPTION),
9315     TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION),
9316     TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION),
9317     TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
9318     TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
9319     TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
9320   };
9321
9322 static void
9323 fmin_test (void)
9324 {
9325   START (fmin);
9326   RUN_TEST_LOOP_ff_f (fmin, fmin_test_data, );
9327   END;
9328 }
9329
9330
9331 static const struct test_ff_f_data fmod_test_data[] =
9332   {
9333     /* fmod (+0, y) == +0 for y != 0.  */
9334     TEST_ff_f (fmod, 0, 3, 0, NO_INEXACT_EXCEPTION),
9335
9336     /* fmod (-0, y) == -0 for y != 0.  */
9337     TEST_ff_f (fmod, minus_zero, 3, minus_zero, NO_INEXACT_EXCEPTION),
9338
9339     /* fmod (+inf, y) == qNaN plus invalid exception.  */
9340     TEST_ff_f (fmod, plus_infty, 3, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
9341     /* fmod (-inf, y) == qNaN plus invalid exception.  */
9342     TEST_ff_f (fmod, minus_infty, 3, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
9343     /* fmod (x, +0) == qNaN plus invalid exception.  */
9344     TEST_ff_f (fmod, 3, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
9345     /* fmod (x, -0) == qNaN plus invalid exception.  */
9346     TEST_ff_f (fmod, 3, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
9347
9348     /* fmod (x, +inf) == x for x not infinite.  */
9349     TEST_ff_f (fmod, 3.0, plus_infty, 3.0, NO_INEXACT_EXCEPTION),
9350     /* fmod (x, -inf) == x for x not infinite.  */
9351     TEST_ff_f (fmod, 3.0, minus_infty, 3.0, NO_INEXACT_EXCEPTION),
9352
9353     TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
9354
9355     TEST_ff_f (fmod, 6.5, 2.25L, 2.0L, NO_INEXACT_EXCEPTION),
9356     TEST_ff_f (fmod, -6.5, 2.25L, -2.0L, NO_INEXACT_EXCEPTION),
9357     TEST_ff_f (fmod, 6.5, -2.25L, 2.0L, NO_INEXACT_EXCEPTION),
9358     TEST_ff_f (fmod, -6.5, -2.25L, -2.0L, NO_INEXACT_EXCEPTION),
9359
9360     TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero, NO_INEXACT_EXCEPTION),
9361 #ifndef TEST_FLOAT
9362     TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero, NO_INEXACT_EXCEPTION),
9363 #endif
9364 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
9365     TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero, NO_INEXACT_EXCEPTION),
9366 #endif
9367 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 56
9368     TEST_ff_f (fmod, -0x1.00000000000004p+0L, 0x1.fffffffffffff8p-1L, -0x1p-53L, NO_INEXACT_EXCEPTION),
9369     TEST_ff_f (fmod, 0x1.fffffffffffffap-1L, 0x1.fffffffffffff8p-1L, 0x1p-56L, NO_INEXACT_EXCEPTION),
9370     TEST_ff_f (fmod, -0x1.fffffffffffffap-1L, 0x1.fffffffffffff8p-1L, -0x1p-56L, NO_INEXACT_EXCEPTION),
9371     TEST_ff_f (fmod, 0x1.fffffffffffffap-1L, -0x1.fffffffffffff8p-1L, 0x1p-56L, NO_INEXACT_EXCEPTION),
9372     TEST_ff_f (fmod, -0x1.fffffffffffffap-1L, -0x1.fffffffffffff8p-1L, -0x1p-56L, NO_INEXACT_EXCEPTION),
9373 #endif
9374   };
9375
9376 static void
9377 fmod_test (void)
9378 {
9379   START (fmod);
9380   RUN_TEST_LOOP_ff_f (fmod, fmod_test_data, );
9381   END;
9382 }
9383
9384
9385 static const struct test_f_i_data fpclassify_test_data[] =
9386   {
9387     TEST_f_i (fpclassify, qnan_value, FP_NAN, NO_INEXACT_EXCEPTION),
9388     TEST_f_i (fpclassify, plus_infty, FP_INFINITE, NO_INEXACT_EXCEPTION),
9389     TEST_f_i (fpclassify, minus_infty, FP_INFINITE, NO_INEXACT_EXCEPTION),
9390     TEST_f_i (fpclassify, plus_zero, FP_ZERO, NO_INEXACT_EXCEPTION),
9391     TEST_f_i (fpclassify, minus_zero, FP_ZERO, NO_INEXACT_EXCEPTION),
9392     TEST_f_i (fpclassify, 1000, FP_NORMAL, NO_INEXACT_EXCEPTION),
9393     TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL, NO_INEXACT_EXCEPTION),
9394   };
9395
9396 static void
9397 fpclassify_test (void)
9398 {
9399   START (fpclassify);
9400   RUN_TEST_LOOP_f_i_tg (fpclassify, fpclassify_test_data, );
9401   END;
9402 }
9403
9404
9405 static const struct test_f_f1_data frexp_test_data[] =
9406   {
9407     TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE, NO_INEXACT_EXCEPTION),
9408     TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE, NO_INEXACT_EXCEPTION),
9409     TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE, NO_INEXACT_EXCEPTION),
9410
9411     TEST_fI_f1 (frexp, 0.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
9412     TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0, NO_INEXACT_EXCEPTION),
9413
9414     TEST_fI_f1 (frexp, 12.8L, 0.8L, 4, NO_INEXACT_EXCEPTION),
9415     TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5, NO_INEXACT_EXCEPTION),
9416   };
9417
9418 static void
9419 frexp_test (void)
9420 {
9421   int x;
9422
9423   START (frexp);
9424   RUN_TEST_LOOP_fI_f1 (frexp, frexp_test_data, , x);
9425   END;
9426 }
9427
9428 static const struct test_ff_f_data hypot_test_data[] =
9429   {
9430     TEST_ff_f (hypot, plus_infty, 1, plus_infty),
9431     TEST_ff_f (hypot, minus_infty, 1, plus_infty),
9432
9433 #ifndef TEST_INLINE
9434     TEST_ff_f (hypot, plus_infty, qnan_value, plus_infty),
9435     TEST_ff_f (hypot, minus_infty, qnan_value, plus_infty),
9436     TEST_ff_f (hypot, qnan_value, plus_infty, plus_infty),
9437     TEST_ff_f (hypot, qnan_value, minus_infty, plus_infty),
9438 #endif
9439
9440     TEST_ff_f (hypot, qnan_value, qnan_value, qnan_value),
9441
9442     /* hypot (x,y) == hypot (+-x, +-y)  */
9443     TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L),
9444     TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L),
9445     TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L),
9446     TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L),
9447     TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L),
9448     TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L),
9449     TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L),
9450     TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L),
9451
9452     /*  hypot (x,0) == fabs (x)  */
9453     TEST_ff_f (hypot, 0.75L, 0, 0.75L),
9454     TEST_ff_f (hypot, -0.75L, 0, 0.75L),
9455     TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L),
9456
9457     TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
9458
9459     TEST_ff_f (hypot, 1.0L, 0x1p-61L, 1.0L),
9460     TEST_ff_f (hypot, 0x1p+0L, 0x1.fp-129L, 0x1p+0L),
9461 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
9462     TEST_ff_f (hypot, 0x1.23456789abcdef0123456789ab8p-500L, 0x1.23456789abcdef0123456789ab8p-500L, 4.9155782399407039128612180934736799735113e-151L),
9463 #endif
9464
9465 #if !(defined TEST_FLOAT && defined TEST_INLINE)
9466     TEST_ff_f (hypot, 0x3p125L, 0x4p125L, 0x5p125L),
9467     TEST_ff_f (hypot, 0x1.234566p-126L, 0x1.234566p-126L, 1.891441686191081936598531534017449451173e-38L),
9468 #endif
9469
9470 #if !defined TEST_FLOAT && !(defined TEST_DOUBLE && defined TEST_INLINE)
9471     TEST_ff_f (hypot, 0x3p1021L, 0x4p1021L, 0x5p1021L),
9472     TEST_ff_f (hypot, 0x1p+0L, 0x0.3ep-1022L, 0x1p+0L),
9473 #endif
9474
9475 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 && !defined TEST_INLINE
9476     TEST_ff_f (hypot, 0x3p16381L, 0x4p16381L, 0x5p16381L),
9477 #endif
9478
9479     TEST_ff_f (hypot, 0x1p-149L, 0x1p-149L, 1.9817352931807469938024533350782879785095e-45L, UNDERFLOW_EXCEPTION_FLOAT),
9480
9481 #ifndef TEST_FLOAT
9482     TEST_ff_f (hypot, 0x1p-1074L, 0x1p-1074L, 6.9871433705131320800651344656990806305791e-324L, UNDERFLOW_EXCEPTION_DOUBLE),
9483 #endif
9484
9485 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381 && !defined TEST_INLINE
9486     TEST_ff_f (hypot, 0x1p-16445L, 0x1p-16445L, 5.1550906155442528702558159159596215039925e-4951L, UNDERFLOW_EXCEPTION),
9487 # if LDBL_MANT_DIG >= 113
9488     TEST_ff_f (hypot, 0x1p-16494L, 0x1p-16494L, 9.1572804726500807075521065242888978445857e-4966L, UNDERFLOW_EXCEPTION),
9489 # endif
9490 #endif
9491   };
9492
9493 static void
9494 hypot_test (void)
9495 {
9496   START (hypot);
9497   RUN_TEST_LOOP_ff_f (hypot, hypot_test_data, );
9498   END;
9499 }
9500
9501
9502 static const struct test_f_i_data ilogb_test_data[] =
9503   {
9504     TEST_f_i (ilogb, 1, 0, NO_INEXACT_EXCEPTION),
9505     TEST_f_i (ilogb, M_El, 1, NO_INEXACT_EXCEPTION),
9506     TEST_f_i (ilogb, 1024, 10, NO_INEXACT_EXCEPTION),
9507     TEST_f_i (ilogb, -2000, 10, NO_INEXACT_EXCEPTION),
9508
9509     /* ilogb (0.0) == FP_ILOGB0 plus invalid exception  */
9510     TEST_f_i (ilogb, 0.0, FP_ILOGB0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
9511     /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception  */
9512     TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
9513     /* ilogb (inf) == INT_MAX plus invalid exception  */
9514     TEST_f_i (ilogb, plus_infty, INT_MAX, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
9515     /* ilogb (-inf) == INT_MAX plus invalid exception  */
9516     TEST_f_i (ilogb, minus_infty, INT_MAX, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
9517   };
9518
9519 static void
9520 ilogb_test (void)
9521 {
9522   START (ilogb);
9523   RUN_TEST_LOOP_f_i (ilogb, ilogb_test_data, );
9524   END;
9525 }
9526
9527 static const struct test_f_i_data isfinite_test_data[] =
9528   {
9529     TEST_f_b (isfinite, 0, 1, NO_INEXACT_EXCEPTION),
9530     TEST_f_b (isfinite, minus_zero, 1, NO_INEXACT_EXCEPTION),
9531     TEST_f_b (isfinite, 10, 1, NO_INEXACT_EXCEPTION),
9532     TEST_f_b (isfinite, min_subnorm_value, 1, NO_INEXACT_EXCEPTION),
9533     TEST_f_b (isfinite, plus_infty, 0, NO_INEXACT_EXCEPTION),
9534     TEST_f_b (isfinite, minus_infty, 0, NO_INEXACT_EXCEPTION),
9535     TEST_f_b (isfinite, qnan_value, 0, NO_INEXACT_EXCEPTION),
9536   };
9537
9538 static void
9539 isfinite_test (void)
9540 {
9541   START (isfinite);
9542   RUN_TEST_LOOP_f_b_tg (isfinite, isfinite_test_data, );
9543   END;
9544 }
9545
9546 static void
9547 finite_test (void)
9548 {
9549   START (finite);
9550   /* finite uses the same test data as isfinite.  */
9551   RUN_TEST_LOOP_f_b (finite, isfinite_test_data, );
9552   END;
9553 }
9554
9555 static const struct test_ff_i_data isgreater_test_data[] =
9556   {
9557     TEST_ff_i (isgreater, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
9558     TEST_ff_i (isgreater, minus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
9559     TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9560     TEST_ff_i (isgreater, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9561     TEST_ff_i (isgreater, plus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
9562     TEST_ff_i (isgreater, plus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
9563     TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9564     TEST_ff_i (isgreater, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9565     TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1, NO_INEXACT_EXCEPTION),
9566     TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1, NO_INEXACT_EXCEPTION),
9567     TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9568     TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
9569     TEST_ff_i (isgreater, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
9570     TEST_ff_i (isgreater, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
9571     TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9572     TEST_ff_i (isgreater, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
9573   };
9574
9575 static void
9576 isgreater_test (void)
9577 {
9578   START (isgreater);
9579   RUN_TEST_LOOP_ff_i_tg (isgreater, isgreater_test_data, );
9580   END;
9581 }
9582
9583 static const struct test_ff_i_data isgreaterequal_test_data[] =
9584   {
9585     TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION),
9586     TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1, NO_INEXACT_EXCEPTION),
9587     TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9588     TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9589     TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION),
9590     TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1, NO_INEXACT_EXCEPTION),
9591     TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9592     TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9593     TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1, NO_INEXACT_EXCEPTION),
9594     TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1, NO_INEXACT_EXCEPTION),
9595     TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9596     TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
9597     TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
9598     TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
9599     TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9600     TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
9601   };
9602
9603 static void
9604 isgreaterequal_test (void)
9605 {
9606   START (isgreaterequal);
9607   RUN_TEST_LOOP_ff_i_tg (isgreaterequal, isgreaterequal_test_data, );
9608   END;
9609 }
9610
9611 static const struct test_f_i_data isinf_test_data[] =
9612   {
9613     TEST_f_b (isinf, 0, 0, NO_INEXACT_EXCEPTION),
9614     TEST_f_b (isinf, minus_zero, 0, NO_INEXACT_EXCEPTION),
9615     TEST_f_b (isinf, 10, 0, NO_INEXACT_EXCEPTION),
9616     TEST_f_b (isinf, min_subnorm_value, 0, NO_INEXACT_EXCEPTION),
9617     TEST_f_b (isinf, plus_infty, 1, NO_INEXACT_EXCEPTION),
9618     TEST_f_b (isinf, minus_infty, 1, NO_INEXACT_EXCEPTION),
9619     TEST_f_b (isinf, qnan_value, 0, NO_INEXACT_EXCEPTION),
9620   };
9621
9622 static void
9623 isinf_test (void)
9624 {
9625   START (isinf);
9626   RUN_TEST_LOOP_f_b_tg (isinf, isinf_test_data, );
9627   END;
9628 }
9629
9630 static const struct test_ff_i_data isless_test_data[] =
9631   {
9632     TEST_ff_i (isless, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
9633     TEST_ff_i (isless, minus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
9634     TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9635     TEST_ff_i (isless, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9636     TEST_ff_i (isless, plus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
9637     TEST_ff_i (isless, plus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
9638     TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9639     TEST_ff_i (isless, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9640     TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0, NO_INEXACT_EXCEPTION),
9641     TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0, NO_INEXACT_EXCEPTION),
9642     TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9643     TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
9644     TEST_ff_i (isless, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
9645     TEST_ff_i (isless, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
9646     TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9647     TEST_ff_i (isless, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
9648   };
9649
9650 static void
9651 isless_test (void)
9652 {
9653   START (isless);
9654   RUN_TEST_LOOP_ff_i_tg (isless, isless_test_data, );
9655   END;
9656 }
9657
9658 static const struct test_ff_i_data islessequal_test_data[] =
9659   {
9660     TEST_ff_i (islessequal, minus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION),
9661     TEST_ff_i (islessequal, minus_zero, plus_zero, 1, NO_INEXACT_EXCEPTION),
9662     TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9663     TEST_ff_i (islessequal, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9664     TEST_ff_i (islessequal, plus_zero, minus_zero, 1, NO_INEXACT_EXCEPTION),
9665     TEST_ff_i (islessequal, plus_zero, plus_zero, 1, NO_INEXACT_EXCEPTION),
9666     TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9667     TEST_ff_i (islessequal, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9668     TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0, NO_INEXACT_EXCEPTION),
9669     TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0, NO_INEXACT_EXCEPTION),
9670     TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9671     TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
9672     TEST_ff_i (islessequal, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
9673     TEST_ff_i (islessequal, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
9674     TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9675     TEST_ff_i (islessequal, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
9676   };
9677
9678 static void
9679 islessequal_test (void)
9680 {
9681   START (islessequal);
9682   RUN_TEST_LOOP_ff_i_tg (islessequal, islessequal_test_data, );
9683   END;
9684 }
9685
9686 static const struct test_ff_i_data islessgreater_test_data[] =
9687   {
9688     TEST_ff_i (islessgreater, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
9689     TEST_ff_i (islessgreater, minus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
9690     TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9691     TEST_ff_i (islessgreater, minus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9692     TEST_ff_i (islessgreater, plus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
9693     TEST_ff_i (islessgreater, plus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
9694     TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9695     TEST_ff_i (islessgreater, plus_zero, qnan_value, 0, NO_INEXACT_EXCEPTION),
9696     TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1, NO_INEXACT_EXCEPTION),
9697     TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1, NO_INEXACT_EXCEPTION),
9698     TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9699     TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0, NO_INEXACT_EXCEPTION),
9700     TEST_ff_i (islessgreater, qnan_value, minus_zero, 0, NO_INEXACT_EXCEPTION),
9701     TEST_ff_i (islessgreater, qnan_value, plus_zero, 0, NO_INEXACT_EXCEPTION),
9702     TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9703     TEST_ff_i (islessgreater, qnan_value, qnan_value, 0, NO_INEXACT_EXCEPTION),
9704   };
9705
9706 static void
9707 islessgreater_test (void)
9708 {
9709   START (islessgreater);
9710   RUN_TEST_LOOP_ff_i_tg (islessgreater, islessgreater_test_data, );
9711   END;
9712 }
9713
9714 static const struct test_f_i_data isnan_test_data[] =
9715   {
9716     TEST_f_b (isnan, 0, 0, NO_INEXACT_EXCEPTION),
9717     TEST_f_b (isnan, minus_zero, 0, NO_INEXACT_EXCEPTION),
9718     TEST_f_b (isnan, 10, 0, NO_INEXACT_EXCEPTION),
9719     TEST_f_b (isnan, min_subnorm_value, 0, NO_INEXACT_EXCEPTION),
9720     TEST_f_b (isnan, plus_infty, 0, NO_INEXACT_EXCEPTION),
9721     TEST_f_b (isnan, minus_infty, 0, NO_INEXACT_EXCEPTION),
9722     TEST_f_b (isnan, qnan_value, 1, NO_INEXACT_EXCEPTION),
9723   };
9724
9725 static void
9726 isnan_test (void)
9727 {
9728   START (isnan);
9729   RUN_TEST_LOOP_f_b_tg (isnan, isnan_test_data, );
9730   END;
9731 }
9732
9733 static const struct test_f_i_data isnormal_test_data[] =
9734   {
9735     TEST_f_b (isnormal, 0, 0, NO_INEXACT_EXCEPTION),
9736     TEST_f_b (isnormal, minus_zero, 0, NO_INEXACT_EXCEPTION),
9737     TEST_f_b (isnormal, 10, 1, NO_INEXACT_EXCEPTION),
9738     TEST_f_b (isnormal, min_subnorm_value, 0, NO_INEXACT_EXCEPTION),
9739     TEST_f_b (isnormal, plus_infty, 0, NO_INEXACT_EXCEPTION),
9740     TEST_f_b (isnormal, minus_infty, 0, NO_INEXACT_EXCEPTION),
9741     TEST_f_b (isnormal, qnan_value, 0, NO_INEXACT_EXCEPTION),
9742   };
9743
9744 static void
9745 isnormal_test (void)
9746 {
9747   START (isnormal);
9748   RUN_TEST_LOOP_f_b_tg (isnormal, isnormal_test_data, );
9749   END;
9750 }
9751
9752 static const struct test_f_i_data issignaling_test_data[] =
9753   {
9754     TEST_f_b (issignaling, 0, 0, NO_INEXACT_EXCEPTION),
9755     TEST_f_b (issignaling, minus_zero, 0, NO_INEXACT_EXCEPTION),
9756     TEST_f_b (issignaling, 10, 0, NO_INEXACT_EXCEPTION),
9757     TEST_f_b (issignaling, min_subnorm_value, 0, NO_INEXACT_EXCEPTION),
9758     TEST_f_b (issignaling, plus_infty, 0, NO_INEXACT_EXCEPTION),
9759     TEST_f_b (issignaling, minus_infty, 0, NO_INEXACT_EXCEPTION),
9760     TEST_f_b (issignaling, qnan_value, 0, NO_INEXACT_EXCEPTION),
9761   };
9762
9763 static void
9764 issignaling_test (void)
9765 {
9766   START (issignaling);
9767   RUN_TEST_LOOP_f_b_tg (issignaling, issignaling_test_data, );
9768   END;
9769 }
9770
9771 static const struct test_ff_i_data isunordered_test_data[] =
9772   {
9773     TEST_ff_i (isunordered, minus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
9774     TEST_ff_i (isunordered, minus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
9775     TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9776     TEST_ff_i (isunordered, minus_zero, qnan_value, 1, NO_INEXACT_EXCEPTION),
9777     TEST_ff_i (isunordered, plus_zero, minus_zero, 0, NO_INEXACT_EXCEPTION),
9778     TEST_ff_i (isunordered, plus_zero, plus_zero, 0, NO_INEXACT_EXCEPTION),
9779     TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9780     TEST_ff_i (isunordered, plus_zero, qnan_value, 1, NO_INEXACT_EXCEPTION),
9781     TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0, NO_INEXACT_EXCEPTION),
9782     TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0, NO_INEXACT_EXCEPTION),
9783     TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0, NO_INEXACT_EXCEPTION),
9784     TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1, NO_INEXACT_EXCEPTION),
9785     TEST_ff_i (isunordered, qnan_value, minus_zero, 1, NO_INEXACT_EXCEPTION),
9786     TEST_ff_i (isunordered, qnan_value, plus_zero, 1, NO_INEXACT_EXCEPTION),
9787     TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1, NO_INEXACT_EXCEPTION),
9788     TEST_ff_i (isunordered, qnan_value, qnan_value, 1, NO_INEXACT_EXCEPTION),
9789   };
9790
9791 static void
9792 isunordered_test (void)
9793 {
9794   START (isunordered);
9795   RUN_TEST_LOOP_ff_i_tg (isunordered, isunordered_test_data, );
9796   END;
9797 }
9798
9799 static const struct test_f_f_data j0_test_data[] =
9800   {
9801     /* j0 is the Bessel function of the first kind of order 0 */
9802     TEST_f_f (j0, qnan_value, qnan_value),
9803     TEST_f_f (j0, plus_infty, 0),
9804     TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L),
9805     TEST_f_f (j0, 0.0, 1.0),
9806     TEST_f_f (j0, 0.125L, 0.996097563041985204620768999453174712L),
9807     TEST_f_f (j0, 0.75L, 0.864242275166648623555731103820923211L),
9808     TEST_f_f (j0, 1.0, 0.765197686557966551449717526102663221L),
9809     TEST_f_f (j0, 1.5, 0.511827671735918128749051744283411720L),
9810     TEST_f_f (j0, 2.0, 0.223890779141235668051827454649948626L),
9811     TEST_f_f (j0, 8.0, 0.171650807137553906090869407851972001L),
9812     TEST_f_f (j0, 10.0, -0.245935764451348335197760862485328754L),
9813     TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
9814     TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
9815
9816     TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L),
9817
9818 #ifndef TEST_FLOAT
9819     TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L),
9820     TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L),
9821 #endif
9822
9823 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9824     TEST_f_f (j0, 0x1p16382L, -1.2193782500509000574176799046642541129387e-2466L),
9825     TEST_f_f (j0, 0x1p16383L, 9.5859502826270374691362975419147645151233e-2467L),
9826 #endif
9827   };
9828
9829 static void
9830 j0_test (void)
9831 {
9832   START (j0);
9833   RUN_TEST_LOOP_f_f (j0, j0_test_data, );
9834   END;
9835 }
9836
9837
9838 static const struct test_f_f_data j1_test_data[] =
9839   {
9840     /* j1 is the Bessel function of the first kind of order 1 */
9841     TEST_f_f (j1, qnan_value, qnan_value),
9842     TEST_f_f (j1, plus_infty, 0),
9843
9844     TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L),
9845     TEST_f_f (j1, 0.0, 0.0),
9846     TEST_f_f (j1, 0.125L, 0.0623780091344946810942311355879361177L),
9847     TEST_f_f (j1, 0.75L, 0.349243602174862192523281016426251335L),
9848     TEST_f_f (j1, 1.0, 0.440050585744933515959682203718914913L),
9849     TEST_f_f (j1, 1.5, 0.557936507910099641990121213156089400L),
9850     TEST_f_f (j1, 2.0, 0.576724807756873387202448242269137087L),
9851     TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L),
9852     TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L),
9853
9854     TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L),
9855
9856 #ifndef TEST_FLOAT
9857     TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
9858     TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
9859 #endif
9860
9861 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9862     TEST_f_f (j1, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
9863     TEST_f_f (j1, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
9864 #endif
9865   };
9866
9867 static void
9868 j1_test (void)
9869 {
9870   START (j1);
9871   RUN_TEST_LOOP_f_f (j1, j1_test_data, );
9872   END;
9873 }
9874
9875 static const struct test_if_f_data jn_test_data[] =
9876   {
9877     /* jn is the Bessel function of the first kind of order n.  */
9878     /* jn (0, x) == j0 (x)  */
9879     TEST_if_f (jn, 0, qnan_value, qnan_value),
9880     TEST_if_f (jn, 0, plus_infty, 0),
9881     TEST_if_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L),
9882     TEST_if_f (jn, 0, 0.0, 1.0),
9883     TEST_if_f (jn, 0, 0.125L, 0.996097563041985204620768999453174712L),
9884     TEST_if_f (jn, 0, 0.75L, 0.864242275166648623555731103820923211L),
9885     TEST_if_f (jn, 0, 1.0, 0.765197686557966551449717526102663221L),
9886     TEST_if_f (jn, 0, 1.5, 0.511827671735918128749051744283411720L),
9887     TEST_if_f (jn, 0, 2.0, 0.223890779141235668051827454649948626L),
9888     TEST_if_f (jn, 0, 8.0, 0.171650807137553906090869407851972001L),
9889     TEST_if_f (jn, 0, 10.0, -0.245935764451348335197760862485328754L),
9890     TEST_if_f (jn, 0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
9891     TEST_if_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
9892
9893     /* jn (1, x) == j1 (x)  */
9894     TEST_if_f (jn, 1, qnan_value, qnan_value),
9895     TEST_if_f (jn, 1, plus_infty, 0),
9896     TEST_if_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L),
9897     TEST_if_f (jn, 1, 0.0, 0.0),
9898     TEST_if_f (jn, 1, 0.125L, 0.0623780091344946810942311355879361177L),
9899     TEST_if_f (jn, 1, 0.75L, 0.349243602174862192523281016426251335L),
9900     TEST_if_f (jn, 1, 1.0, 0.440050585744933515959682203718914913L),
9901     TEST_if_f (jn, 1, 1.5, 0.557936507910099641990121213156089400L),
9902     TEST_if_f (jn, 1, 2.0, 0.576724807756873387202448242269137087L),
9903     TEST_if_f (jn, 1, 8.0, 0.234636346853914624381276651590454612L),
9904     TEST_if_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L),
9905
9906     /* jn (3, x)  */
9907     TEST_if_f (jn, 3, qnan_value, qnan_value),
9908     TEST_if_f (jn, 3, plus_infty, 0),
9909
9910     TEST_if_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L),
9911     TEST_if_f (jn, 3, 0.0, 0.0),
9912     TEST_if_f (jn, 3, 0.125L, 0.406503832554912875023029337653442868e-4L),
9913     TEST_if_f (jn, 3, 0.75L, 0.848438342327410884392755236884386804e-2L),
9914     TEST_if_f (jn, 3, 1.0, 0.0195633539826684059189053216217515083L),
9915     TEST_if_f (jn, 3, 2.0, 0.128943249474402051098793332969239835L),
9916     TEST_if_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L),
9917
9918     /*  jn (10, x)  */
9919     TEST_if_f (jn, 10, qnan_value, qnan_value),
9920     TEST_if_f (jn, 10, plus_infty, 0),
9921
9922     TEST_if_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L),
9923     TEST_if_f (jn, 10, 0.0, 0.0),
9924     TEST_if_f (jn, 10, 0.125L, 0.250543369809369890173993791865771547e-18L),
9925     TEST_if_f (jn, 10, 0.75L, 0.149621713117596814698712483621682835e-10L),
9926     TEST_if_f (jn, 10, 1.0, 0.263061512368745320699785368779050294e-9L),
9927     TEST_if_f (jn, 10, 2.0, 0.251538628271673670963516093751820639e-6L),
9928     TEST_if_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L),
9929
9930     /* BZ #11589 .*/
9931     TEST_if_f (jn, 2, 2.4048255576957729L, 0.43175480701968038399746111312430703L),
9932     TEST_if_f (jn, 3, 2.4048255576957729L, 0.19899990535769083404042146764530813L),
9933     TEST_if_f (jn, 4, 2.4048255576957729L, 0.647466661641779720084932282551219891E-1L),
9934     TEST_if_f (jn, 5, 2.4048255576957729L, 0.163892432048058525099230549946147698E-1L),
9935     TEST_if_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L),
9936     TEST_if_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L),
9937     TEST_if_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L),
9938     TEST_if_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L),
9939
9940     TEST_if_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L),
9941     TEST_if_f (jn, 2, 0x1p127L, -6.0784021821505059176832624052765568656702e-20L),
9942 #ifndef TEST_FLOAT
9943     TEST_if_f (jn, 2, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L),
9944 #endif
9945 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9946     TEST_if_f (jn, 2, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L),
9947 #endif
9948   };
9949
9950 static void
9951 jn_test (void)
9952 {
9953   START (jn);
9954   RUN_TEST_LOOP_if_f (jn, jn_test_data, );
9955   END;
9956 }
9957
9958
9959 static const struct test_fi_f_data ldexp_test_data[] =
9960   {
9961     TEST_fi_f (ldexp, 0, 0, 0, NO_INEXACT_EXCEPTION),
9962     TEST_fi_f (ldexp, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION),
9963
9964     TEST_fi_f (ldexp, plus_infty, 1, plus_infty, NO_INEXACT_EXCEPTION),
9965     TEST_fi_f (ldexp, minus_infty, 1, minus_infty, NO_INEXACT_EXCEPTION),
9966     TEST_fi_f (ldexp, qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION),
9967
9968     TEST_fi_f (ldexp, 0.8L, 4, 12.8L, NO_INEXACT_EXCEPTION),
9969     TEST_fi_f (ldexp, -0.854375L, 5, -27.34L, NO_INEXACT_EXCEPTION),
9970
9971     /* ldexp (x, 0) == x.  */
9972     TEST_fi_f (ldexp, 1.0L, 0L, 1.0L, NO_INEXACT_EXCEPTION),
9973   };
9974
9975 static void
9976 ldexp_test (void)
9977 {
9978   START (ldexp);
9979   RUN_TEST_LOOP_fi_f (ldexp, ldexp_test_data, );
9980   END;
9981 }
9982
9983
9984 static const struct test_f_f1_data lgamma_test_data[] =
9985   {
9986     TEST_f_f1 (lgamma, plus_infty, plus_infty, 1),
9987     TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
9988     TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
9989     TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE),
9990
9991     /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0.  */
9992     TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
9993     TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE),
9994     TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
9995     TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
9996
9997     TEST_f_f1 (lgamma, 1, 0, 1),
9998
9999     TEST_f_f1 (lgamma, 3, M_LN2l, 1),
10000
10001     TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1),
10002     TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1),
10003     TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1),
10004     TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1),
10005
10006     TEST_f_f1 (lgamma, 0x1p-5L, 3.4484891277979584796832693452686366085801e+00L, 1),
10007     TEST_f_f1 (lgamma, -0x1p-5L, 3.4845895751341394376217526729956836492792e+00L, -1),
10008     TEST_f_f1 (lgamma, 0x1p-10L, 6.9309089024194618895406190646600805357273e+00L, 1),
10009     TEST_f_f1 (lgamma, -0x1p-10L, 6.9320362775113082175565786721095494761582e+00L, -1),
10010     TEST_f_f1 (lgamma, 0x1p-15L, 1.0397190093941001762077888432721419773538e+01L, 1),
10011     TEST_f_f1 (lgamma, -0x1p-15L, 1.0397225324389321751118257981741350715545e+01L, -1),
10012     TEST_f_f1 (lgamma, 0x1p-20L, 1.3862943060723899573457963336920089012399e+01L, 1),
10013     TEST_f_f1 (lgamma, -0x1p-20L, 1.3862944161675408862049886226750366625112e+01L, -1),
10014     TEST_f_f1 (lgamma, 0x1p-25L, 1.7328679496796266133304874243201700664713e+01L, 1),
10015     TEST_f_f1 (lgamma, -0x1p-25L, 1.7328679531201000798551671833865469674673e+01L, -1),
10016     TEST_f_f1 (lgamma, 0x1p-30L, 2.0794415416260785304085859198055798098863e+01L, 1),
10017     TEST_f_f1 (lgamma, -0x1p-30L, 2.0794415417335933262374820960532606449975e+01L, -1),
10018     TEST_f_f1 (lgamma, 0x1p-40L, 2.7725887222397287402100277256545578941303e+01L, 1),
10019     TEST_f_f1 (lgamma, -0x1p-40L, 2.7725887222398337351278293820766115529596e+01L, -1),
10020     TEST_f_f1 (lgamma, 0x1p-50L, 3.4657359027997264958191108994508978906983e+01L, 1),
10021     TEST_f_f1 (lgamma, -0x1p-50L, 3.4657359027997265983532103151309975524744e+01L, -1),
10022     TEST_f_f1 (lgamma, 0x1p-60L, 4.1588830833596718564533272505187468598519e+01L, 1),
10023     TEST_f_f1 (lgamma, -0x1p-60L, 4.1588830833596718565534582069793719571779e+01L, -1),
10024     TEST_f_f1 (lgamma, 0x1p-64L, 4.4361419555836499802671564849429355013920e+01L, 1),
10025     TEST_f_f1 (lgamma, -0x1p-64L, 4.4361419555836499802734146697217245699749e+01L, -1),
10026     TEST_f_f1 (lgamma, 0x1p-70L, 4.8520302639196171659205759581386516869302e+01L, 1),
10027     TEST_f_f1 (lgamma, -0x1p-70L, 4.8520302639196171659206737422758202661268e+01L, -1),
10028     TEST_f_f1 (lgamma, 0x1p-100L, 6.9314718055994530941723212145817201464678e+01L, 1),
10029     TEST_f_f1 (lgamma, -0x1p-100L, 6.9314718055994530941723212145818112150422e+01L, -1),
10030     TEST_f_f1 (lgamma, 0x1p-126L, 8.7336544750553108986571247303730247577506e+01L, 1),
10031     TEST_f_f1 (lgamma, -0x1p-126L, 8.7336544750553108986571247303730247577520e+01L, -1),
10032     TEST_f_f1 (lgamma, 0x1p-149L, 1.0327892990343185110316758609726830864325e+02L, 1),
10033     TEST_f_f1 (lgamma, -0x1p-149L, 1.0327892990343185110316758609726830864325e+02L, -1),
10034 #ifndef TEST_FLOAT
10035     TEST_f_f1 (lgamma, 0x1p-200L, 1.3862943611198906188344642429163531361510e+02L, 1),
10036     TEST_f_f1 (lgamma, -0x1p-200L, 1.3862943611198906188344642429163531361510e+02L, -1),
10037     TEST_f_f1 (lgamma, 0x1p-500L, 3.4657359027997265470861606072908828403775e+02L, 1),
10038     TEST_f_f1 (lgamma, -0x1p-500L, 3.4657359027997265470861606072908828403775e+02L, -1),
10039     TEST_f_f1 (lgamma, 0x1p-1000L, 6.9314718055994530941723212145817656807550e+02L, 1),
10040     TEST_f_f1 (lgamma, -0x1p-1000L, 6.9314718055994530941723212145817656807550e+02L, -1),
10041     TEST_f_f1 (lgamma, 0x1p-1022L, 7.0839641853226410622441122813025645257316e+02L, 1),
10042     TEST_f_f1 (lgamma, -0x1p-1022L, 7.0839641853226410622441122813025645257316e+02L, -1),
10043     TEST_f_f1 (lgamma, 0x1p-1074L, 7.4444007192138126231410729844608163411309e+02L, 1),
10044     TEST_f_f1 (lgamma, -0x1p-1074L, 7.4444007192138126231410729844608163411309e+02L, -1),
10045 #endif
10046 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
10047     TEST_f_f1 (lgamma, 0x1p-5000L, 3.4657359027997265470861606072908828403775e+03L, 1),
10048     TEST_f_f1 (lgamma, -0x1p-5000L, 3.4657359027997265470861606072908828403775e+03L, -1),
10049     TEST_f_f1 (lgamma, 0x1p-10000L, 6.9314718055994530941723212145817656807550e+03L, 1),
10050     TEST_f_f1 (lgamma, -0x1p-10000L, 6.9314718055994530941723212145817656807550e+03L, -1),
10051     TEST_f_f1 (lgamma, 0x1p-16382L, 1.1355137111933024058873096613727848538213e+04L, 1),
10052     TEST_f_f1 (lgamma, -0x1p-16382L, 1.1355137111933024058873096613727848538213e+04L, -1),
10053     TEST_f_f1 (lgamma, 0x1p-16445L, 1.1398805384308300613366382237379713662002e+04L, 1),
10054     TEST_f_f1 (lgamma, -0x1p-16445L, 1.1398805384308300613366382237379713662002e+04L, -1),
10055 # if LDBL_MANT_DIG >= 113
10056     TEST_f_f1 (lgamma, 0x1p-16494L, 1.1432769596155737933527826611331164313837e+04L, 1),
10057     TEST_f_f1 (lgamma, -0x1p-16494L, 1.1432769596155737933527826611331164313837e+04L, -1),
10058 # endif
10059 #endif
10060   };
10061
10062 static void
10063 lgamma_test (void)
10064 {
10065   START (lgamma);
10066   RUN_TEST_LOOP_f_f1 (lgamma, lgamma_test_data, , signgam);
10067   END;
10068 }
10069
10070 static void
10071 gamma_test (void)
10072 {
10073   START (gamma);
10074   /* gamma uses the same test data as lgamma.  */
10075   RUN_TEST_LOOP_f_f1 (gamma, lgamma_test_data, , signgam);
10076   END;
10077 }
10078
10079
10080 static const struct test_f_l_data lrint_test_data[] =
10081   {
10082     /* XXX this test is incomplete.  We need to have a way to specifiy
10083        the rounding method and test the critical cases.  So far, only
10084        unproblematic numbers are tested.  */
10085     /* TODO: missing +/-Inf as well as qNaN tests.  */
10086     TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10087     TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10088     TEST_f_l (lrint, 0.2L, 0, INEXACT_EXCEPTION),
10089     TEST_f_l (lrint, -0.2L, 0, INEXACT_EXCEPTION),
10090
10091     TEST_f_l (lrint, 1.4L, 1, INEXACT_EXCEPTION),
10092     TEST_f_l (lrint, -1.4L, -1, INEXACT_EXCEPTION),
10093
10094     TEST_f_l (lrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
10095     TEST_f_l (lrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
10096
10097 #ifndef TEST_FLOAT
10098     TEST_f_l (lrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
10099     TEST_f_l (lrint, 1073741824.01, 1073741824, INEXACT_EXCEPTION),
10100 # if LONG_MAX > 281474976710656 && defined TEST_LDOUBLE
10101     TEST_f_l (lrint, 281474976710656.025L, 281474976710656, INEXACT_EXCEPTION),
10102 # endif
10103 #endif
10104   };
10105
10106 static void
10107 lrint_test (void)
10108 {
10109   START (lrint);
10110   RUN_TEST_LOOP_f_l (lrint, lrint_test_data, );
10111   END;
10112 }
10113
10114
10115 static const struct test_f_l_data lrint_tonearest_test_data[] =
10116   {
10117     TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10118     TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10119     TEST_f_l (lrint, 0.2L, 0, INEXACT_EXCEPTION),
10120     TEST_f_l (lrint, -0.2L, 0, INEXACT_EXCEPTION),
10121     TEST_f_l (lrint, 0.5L, 0, INEXACT_EXCEPTION),
10122     TEST_f_l (lrint, -0.5L, 0, INEXACT_EXCEPTION),
10123     TEST_f_l (lrint, 0.8L, 1, INEXACT_EXCEPTION),
10124     TEST_f_l (lrint, -0.8L, -1, INEXACT_EXCEPTION),
10125
10126     TEST_f_l (lrint, 1.4L, 1, INEXACT_EXCEPTION),
10127     TEST_f_l (lrint, -1.4L, -1, INEXACT_EXCEPTION),
10128
10129     TEST_f_l (lrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
10130     TEST_f_l (lrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
10131
10132 #ifndef TEST_FLOAT
10133     TEST_f_l (lrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
10134     TEST_f_l (lrint, 1073741824.01, 1073741824, INEXACT_EXCEPTION),
10135 # if LONG_MAX > 281474976710656 && defined TEST_LDOUBLE
10136     TEST_f_l (lrint, 281474976710656.025L, 281474976710656, INEXACT_EXCEPTION),
10137 # endif
10138 #endif
10139   };
10140
10141 static void
10142 lrint_test_tonearest (void)
10143 {
10144   START (lrint_tonearest);
10145   RUN_TEST_LOOP_f_l (lrint, lrint_tonearest_test_data, FE_TONEAREST);
10146   END;
10147 }
10148
10149
10150 static const struct test_f_l_data lrint_towardzero_test_data[] =
10151   {
10152     TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10153     TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10154     TEST_f_l (lrint, 0.2L, 0, INEXACT_EXCEPTION),
10155     TEST_f_l (lrint, -0.2L, 0, INEXACT_EXCEPTION),
10156     TEST_f_l (lrint, 0.5L, 0, INEXACT_EXCEPTION),
10157     TEST_f_l (lrint, -0.5L, 0, INEXACT_EXCEPTION),
10158     TEST_f_l (lrint, 0.8L, 0, INEXACT_EXCEPTION),
10159     TEST_f_l (lrint, -0.8L, 0, INEXACT_EXCEPTION),
10160
10161     TEST_f_l (lrint, 1.4L, 1, INEXACT_EXCEPTION),
10162     TEST_f_l (lrint, -1.4L, -1, INEXACT_EXCEPTION),
10163
10164     TEST_f_l (lrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
10165     TEST_f_l (lrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
10166
10167 #ifndef TEST_FLOAT
10168     TEST_f_l (lrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
10169     TEST_f_l (lrint, 1073741824.01, 1073741824, INEXACT_EXCEPTION),
10170 # if LONG_MAX > 281474976710656 && defined TEST_LDOUBLE
10171     TEST_f_l (lrint, 281474976710656.025L, 281474976710656, INEXACT_EXCEPTION),
10172 # endif
10173 #endif
10174   };
10175
10176 static void
10177 lrint_test_towardzero (void)
10178 {
10179   START (lrint_towardzero);
10180   RUN_TEST_LOOP_f_l (lrint, lrint_towardzero_test_data, FE_TOWARDZERO);
10181   END;
10182 }
10183
10184
10185 static const struct test_f_l_data lrint_downward_test_data[] =
10186   {
10187     TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10188     TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10189     TEST_f_l (lrint, 0.2L, 0, INEXACT_EXCEPTION),
10190     TEST_f_l (lrint, -0.2L, -1, INEXACT_EXCEPTION),
10191     TEST_f_l (lrint, 0.5L, 0, INEXACT_EXCEPTION),
10192     TEST_f_l (lrint, -0.5L, -1, INEXACT_EXCEPTION),
10193     TEST_f_l (lrint, 0.8L, 0, INEXACT_EXCEPTION),
10194     TEST_f_l (lrint, -0.8L, -1, INEXACT_EXCEPTION),
10195
10196     TEST_f_l (lrint, 1.4L, 1, INEXACT_EXCEPTION),
10197     TEST_f_l (lrint, -1.4L, -2, INEXACT_EXCEPTION),
10198
10199     TEST_f_l (lrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
10200     TEST_f_l (lrint, -8388600.3L, -8388601, INEXACT_EXCEPTION),
10201
10202 #ifndef TEST_FLOAT
10203     TEST_f_l (lrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
10204     TEST_f_l (lrint, 1073741824.01, 1073741824, INEXACT_EXCEPTION),
10205 # if LONG_MAX > 281474976710656 && defined TEST_LDOUBLE
10206     TEST_f_l (lrint, 281474976710656.025L, 281474976710656, INEXACT_EXCEPTION),
10207 # endif
10208 #endif
10209   };
10210
10211 static void
10212 lrint_test_downward (void)
10213 {
10214   START (lrint_downward);
10215   RUN_TEST_LOOP_f_l (lrint, lrint_downward_test_data, FE_DOWNWARD);
10216   END;
10217 }
10218
10219
10220 static const struct test_f_l_data lrint_upward_test_data[] =
10221   {
10222     TEST_f_l (lrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10223     TEST_f_l (lrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10224     TEST_f_l (lrint, 0.2L, 1, INEXACT_EXCEPTION),
10225     TEST_f_l (lrint, -0.2L, 0, INEXACT_EXCEPTION),
10226     TEST_f_l (lrint, 0.5L, 1, INEXACT_EXCEPTION),
10227     TEST_f_l (lrint, -0.5L, 0, INEXACT_EXCEPTION),
10228     TEST_f_l (lrint, 0.8L, 1, INEXACT_EXCEPTION),
10229     TEST_f_l (lrint, -0.8L, 0, INEXACT_EXCEPTION),
10230
10231     TEST_f_l (lrint, 1.4L, 2, INEXACT_EXCEPTION),
10232     TEST_f_l (lrint, -1.4L, -1, INEXACT_EXCEPTION),
10233
10234     TEST_f_l (lrint, 8388600.3L, 8388601, INEXACT_EXCEPTION),
10235     TEST_f_l (lrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
10236
10237 #ifndef TEST_FLOAT
10238     TEST_f_l (lrint, 1071930.0008, 1071931, INEXACT_EXCEPTION),
10239     TEST_f_l (lrint, 1073741824.01, 1073741825, INEXACT_EXCEPTION),
10240 # if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
10241     TEST_f_l (lrint, 281474976710656.025L, 281474976710657, INEXACT_EXCEPTION),
10242 # endif
10243 #endif
10244   };
10245
10246 static void
10247 lrint_test_upward (void)
10248 {
10249   START (lrint_upward);
10250   RUN_TEST_LOOP_f_l (lrint, lrint_upward_test_data, FE_UPWARD);
10251   END;
10252 }
10253
10254
10255 static const struct test_f_L_data llrint_test_data[] =
10256   {
10257     /* XXX this test is incomplete.  We need to have a way to specifiy
10258        the rounding method and test the critical cases.  So far, only
10259        unproblematic numbers are tested.  */
10260     /* TODO: missing +/-Inf as well as qNaN tests.  */
10261     TEST_f_L (llrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10262     TEST_f_L (llrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10263     TEST_f_L (llrint, 0.2L, 0, INEXACT_EXCEPTION),
10264     TEST_f_L (llrint, -0.2L, 0, INEXACT_EXCEPTION),
10265
10266     TEST_f_L (llrint, 1.4L, 1, INEXACT_EXCEPTION),
10267     TEST_f_L (llrint, -1.4L, -1, INEXACT_EXCEPTION),
10268
10269     TEST_f_L (llrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
10270     TEST_f_L (llrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
10271
10272 #ifndef TEST_FLOAT
10273     TEST_f_L (llrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
10274 #endif
10275
10276     /* Test boundary conditions.  */
10277     /* 0x1FFFFF */
10278     TEST_f_L (llrint, 2097151.0,2097151LL, NO_INEXACT_EXCEPTION),
10279     /* 0x800000 */
10280     TEST_f_L (llrint, 8388608.0, 8388608LL, NO_INEXACT_EXCEPTION),
10281     /* 0x1000000 */
10282     TEST_f_L (llrint, 16777216.0, 16777216LL, NO_INEXACT_EXCEPTION),
10283     /* 0x20000000000 */
10284     TEST_f_L (llrint, 2199023255552.0, 2199023255552LL, NO_INEXACT_EXCEPTION),
10285     /* 0x40000000000 */
10286     TEST_f_L (llrint, 4398046511104.0, 4398046511104LL, NO_INEXACT_EXCEPTION),
10287     /* 0x1000000000000 */
10288     TEST_f_L (llrint, 281474976710656.0, 281474976710656LL, NO_INEXACT_EXCEPTION),
10289     /* 0x10000000000000 */
10290     TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL, NO_INEXACT_EXCEPTION),
10291     /* 0x10000080000000 */
10292     TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL, NO_INEXACT_EXCEPTION),
10293     /* 0x20000000000000 */
10294     TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL, NO_INEXACT_EXCEPTION),
10295     /* 0x80000000000000 */
10296     TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL, NO_INEXACT_EXCEPTION),
10297     /* 0x100000000000000 */
10298     TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL, NO_INEXACT_EXCEPTION),
10299 #ifdef TEST_LDOUBLE
10300     /* The input can only be represented in long double.  */
10301     TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL, INEXACT_EXCEPTION),
10302     TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL, INEXACT_EXCEPTION),
10303     TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL, INEXACT_EXCEPTION),
10304     TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL, INEXACT_EXCEPTION),
10305     TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL, INEXACT_EXCEPTION),
10306
10307     TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL, INEXACT_EXCEPTION),
10308     TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL, INEXACT_EXCEPTION),
10309     TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL, INEXACT_EXCEPTION),
10310     TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL, INEXACT_EXCEPTION),
10311     TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL, INEXACT_EXCEPTION),
10312
10313 # if LDBL_MANT_DIG > 100
10314     TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL, INEXACT_EXCEPTION),
10315     TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL, INEXACT_EXCEPTION),
10316     TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL, INEXACT_EXCEPTION),
10317     TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL, INEXACT_EXCEPTION),
10318     TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL, INEXACT_EXCEPTION),
10319     TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL, INEXACT_EXCEPTION),
10320
10321     TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL, INEXACT_EXCEPTION),
10322     TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL, INEXACT_EXCEPTION),
10323     TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL, INEXACT_EXCEPTION),
10324     TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL, INEXACT_EXCEPTION),
10325     TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL, INEXACT_EXCEPTION),
10326     TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL, INEXACT_EXCEPTION),
10327 #endif
10328
10329     TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL, INEXACT_EXCEPTION),
10330     TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL, INEXACT_EXCEPTION),
10331     TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL, INEXACT_EXCEPTION),
10332     TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL, INEXACT_EXCEPTION),
10333     TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL, INEXACT_EXCEPTION),
10334
10335     TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL, INEXACT_EXCEPTION),
10336     TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL, INEXACT_EXCEPTION),
10337     TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL, INEXACT_EXCEPTION),
10338     TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL, INEXACT_EXCEPTION),
10339     TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL, INEXACT_EXCEPTION),
10340
10341 # if LDBL_MANT_DIG > 100
10342     TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL, INEXACT_EXCEPTION),
10343     TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL, INEXACT_EXCEPTION),
10344     TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL, INEXACT_EXCEPTION),
10345     TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL, INEXACT_EXCEPTION),
10346     TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL, INEXACT_EXCEPTION),
10347     TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL, INEXACT_EXCEPTION),
10348
10349     TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL, INEXACT_EXCEPTION),
10350     TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL, INEXACT_EXCEPTION),
10351     TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL, INEXACT_EXCEPTION),
10352     TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL, INEXACT_EXCEPTION),
10353     TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL, INEXACT_EXCEPTION),
10354     TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL, INEXACT_EXCEPTION),
10355 #endif
10356
10357     TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL, INEXACT_EXCEPTION),
10358     TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL, INEXACT_EXCEPTION),
10359     TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL, INEXACT_EXCEPTION),
10360     TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL, INEXACT_EXCEPTION),
10361     TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL, INEXACT_EXCEPTION),
10362
10363     TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL, INEXACT_EXCEPTION),
10364     TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL, INEXACT_EXCEPTION),
10365     TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL, INEXACT_EXCEPTION),
10366     TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL, INEXACT_EXCEPTION),
10367     TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL, INEXACT_EXCEPTION),
10368
10369 # if LDBL_MANT_DIG > 100
10370     TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL, INEXACT_EXCEPTION),
10371     TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
10372     TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL, NO_INEXACT_EXCEPTION),
10373     TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL, NO_INEXACT_EXCEPTION),
10374     TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL, INEXACT_EXCEPTION),
10375     TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL, INEXACT_EXCEPTION),
10376     TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L, INEXACT_EXCEPTION),
10377     TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
10378     TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL, INEXACT_EXCEPTION),
10379     TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL, INEXACT_EXCEPTION),
10380     TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL, NO_INEXACT_EXCEPTION),
10381     TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL, NO_INEXACT_EXCEPTION),
10382 # endif
10383 #endif
10384   };
10385
10386 static void
10387 llrint_test (void)
10388 {
10389   START (llrint);
10390   RUN_TEST_LOOP_f_L (llrint, llrint_test_data, );
10391   END;
10392 }
10393
10394 static const struct test_f_L_data llrint_tonearest_test_data[] =
10395   {
10396     TEST_f_L (llrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10397     TEST_f_L (llrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10398     TEST_f_L (llrint, 0.2L, 0, INEXACT_EXCEPTION),
10399     TEST_f_L (llrint, -0.2L, 0, INEXACT_EXCEPTION),
10400
10401     TEST_f_L (llrint, 1.4L, 1, INEXACT_EXCEPTION),
10402     TEST_f_L (llrint, -1.4L, -1, INEXACT_EXCEPTION),
10403
10404     TEST_f_L (llrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
10405     TEST_f_L (llrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
10406
10407 #ifndef TEST_FLOAT
10408     TEST_f_L (llrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
10409 #endif
10410
10411     /* Test boundary conditions.  */
10412     /* 0x1FFFFF */
10413     TEST_f_L (llrint, 2097151.0,2097151LL, NO_INEXACT_EXCEPTION),
10414     /* 0x800000 */
10415     TEST_f_L (llrint, 8388608.0, 8388608LL, NO_INEXACT_EXCEPTION),
10416     /* 0x1000000 */
10417     TEST_f_L (llrint, 16777216.0, 16777216LL, NO_INEXACT_EXCEPTION),
10418     /* 0x20000000000 */
10419     TEST_f_L (llrint, 2199023255552.0, 2199023255552LL, NO_INEXACT_EXCEPTION),
10420     /* 0x40000000000 */
10421     TEST_f_L (llrint, 4398046511104.0, 4398046511104LL, NO_INEXACT_EXCEPTION),
10422     /* 0x1000000000000 */
10423     TEST_f_L (llrint, 281474976710656.0, 281474976710656LL, NO_INEXACT_EXCEPTION),
10424     /* 0x10000000000000 */
10425     TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL, NO_INEXACT_EXCEPTION),
10426     /* 0x10000080000000 */
10427     TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL, NO_INEXACT_EXCEPTION),
10428     /* 0x20000000000000 */
10429     TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL, NO_INEXACT_EXCEPTION),
10430     /* 0x80000000000000 */
10431     TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL, NO_INEXACT_EXCEPTION),
10432     /* 0x100000000000000 */
10433     TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL, NO_INEXACT_EXCEPTION),
10434 #ifdef TEST_LDOUBLE
10435     /* The input can only be represented in long double.  */
10436     TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL, INEXACT_EXCEPTION),
10437     TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL, INEXACT_EXCEPTION),
10438     TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL, INEXACT_EXCEPTION),
10439     TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL, INEXACT_EXCEPTION),
10440     TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL, INEXACT_EXCEPTION),
10441
10442     TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL, INEXACT_EXCEPTION),
10443     TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL, INEXACT_EXCEPTION),
10444     TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL, INEXACT_EXCEPTION),
10445     TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL, INEXACT_EXCEPTION),
10446     TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL, INEXACT_EXCEPTION),
10447
10448 # if LDBL_MANT_DIG > 100
10449     TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL, INEXACT_EXCEPTION),
10450     TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL, INEXACT_EXCEPTION),
10451     TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL, INEXACT_EXCEPTION),
10452     TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL, INEXACT_EXCEPTION),
10453     TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL, INEXACT_EXCEPTION),
10454     TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL, INEXACT_EXCEPTION),
10455
10456     TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL, INEXACT_EXCEPTION),
10457     TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL, INEXACT_EXCEPTION),
10458     TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL, INEXACT_EXCEPTION),
10459     TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL, INEXACT_EXCEPTION),
10460     TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL, INEXACT_EXCEPTION),
10461     TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL, INEXACT_EXCEPTION),
10462 #endif
10463
10464     TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL, INEXACT_EXCEPTION),
10465     TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL, INEXACT_EXCEPTION),
10466     TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL, INEXACT_EXCEPTION),
10467     TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL, INEXACT_EXCEPTION),
10468     TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL, INEXACT_EXCEPTION),
10469
10470     TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL, INEXACT_EXCEPTION),
10471     TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL, INEXACT_EXCEPTION),
10472     TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL, INEXACT_EXCEPTION),
10473     TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL, INEXACT_EXCEPTION),
10474     TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL, INEXACT_EXCEPTION),
10475
10476 # if LDBL_MANT_DIG > 100
10477     TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL, INEXACT_EXCEPTION),
10478     TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL, INEXACT_EXCEPTION),
10479     TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL, INEXACT_EXCEPTION),
10480     TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL, INEXACT_EXCEPTION),
10481     TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL, INEXACT_EXCEPTION),
10482     TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL, INEXACT_EXCEPTION),
10483
10484     TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL, INEXACT_EXCEPTION),
10485     TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL, INEXACT_EXCEPTION),
10486     TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL, INEXACT_EXCEPTION),
10487     TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL, INEXACT_EXCEPTION),
10488     TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL, INEXACT_EXCEPTION),
10489     TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL, INEXACT_EXCEPTION),
10490 #endif
10491
10492     TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL, INEXACT_EXCEPTION),
10493     TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL, INEXACT_EXCEPTION),
10494     TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL, INEXACT_EXCEPTION),
10495     TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL, INEXACT_EXCEPTION),
10496     TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL, INEXACT_EXCEPTION),
10497
10498     TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL, INEXACT_EXCEPTION),
10499     TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL, INEXACT_EXCEPTION),
10500     TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL, INEXACT_EXCEPTION),
10501     TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL, INEXACT_EXCEPTION),
10502     TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL, INEXACT_EXCEPTION),
10503
10504 # if LDBL_MANT_DIG > 100
10505     TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL, INEXACT_EXCEPTION),
10506     TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
10507     TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL, NO_INEXACT_EXCEPTION),
10508     TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL, NO_INEXACT_EXCEPTION),
10509     TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL, INEXACT_EXCEPTION),
10510     TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL, INEXACT_EXCEPTION),
10511     TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L, INEXACT_EXCEPTION),
10512     TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
10513     TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL, INEXACT_EXCEPTION),
10514     TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL, INEXACT_EXCEPTION),
10515     TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL, NO_INEXACT_EXCEPTION),
10516     TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL, NO_INEXACT_EXCEPTION),
10517 # endif
10518 #endif
10519   };
10520
10521 static void
10522 llrint_test_tonearest (void)
10523 {
10524   START (llrint_tonearest);
10525   RUN_TEST_LOOP_f_L (llrint, llrint_tonearest_test_data, FE_TONEAREST);
10526   END;
10527 }
10528
10529 static const struct test_f_L_data llrint_towardzero_test_data[] =
10530   {
10531     TEST_f_L (llrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10532     TEST_f_L (llrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10533     TEST_f_L (llrint, 0.2L, 0, INEXACT_EXCEPTION),
10534     TEST_f_L (llrint, -0.2L, 0, INEXACT_EXCEPTION),
10535
10536     TEST_f_L (llrint, 1.4L, 1, INEXACT_EXCEPTION),
10537     TEST_f_L (llrint, -1.4L, -1, INEXACT_EXCEPTION),
10538
10539     TEST_f_L (llrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
10540     TEST_f_L (llrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
10541
10542 #ifndef TEST_FLOAT
10543     TEST_f_L (llrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
10544 #endif
10545
10546     /* Test boundary conditions.  */
10547     /* 0x1FFFFF */
10548     TEST_f_L (llrint, 2097151.0,2097151LL, NO_INEXACT_EXCEPTION),
10549     /* 0x800000 */
10550     TEST_f_L (llrint, 8388608.0, 8388608LL, NO_INEXACT_EXCEPTION),
10551     /* 0x1000000 */
10552     TEST_f_L (llrint, 16777216.0, 16777216LL, NO_INEXACT_EXCEPTION),
10553     /* 0x20000000000 */
10554     TEST_f_L (llrint, 2199023255552.0, 2199023255552LL, NO_INEXACT_EXCEPTION),
10555     /* 0x40000000000 */
10556     TEST_f_L (llrint, 4398046511104.0, 4398046511104LL, NO_INEXACT_EXCEPTION),
10557     /* 0x1000000000000 */
10558     TEST_f_L (llrint, 281474976710656.0, 281474976710656LL, NO_INEXACT_EXCEPTION),
10559     /* 0x10000000000000 */
10560     TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL, NO_INEXACT_EXCEPTION),
10561     /* 0x10000080000000 */
10562     TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL, NO_INEXACT_EXCEPTION),
10563     /* 0x20000000000000 */
10564     TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL, NO_INEXACT_EXCEPTION),
10565     /* 0x80000000000000 */
10566     TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL, NO_INEXACT_EXCEPTION),
10567     /* 0x100000000000000 */
10568     TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL, NO_INEXACT_EXCEPTION),
10569 #ifdef TEST_LDOUBLE
10570     /* The input can only be represented in long double.  */
10571     TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL, INEXACT_EXCEPTION),
10572     TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL, INEXACT_EXCEPTION),
10573     TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL, INEXACT_EXCEPTION),
10574     TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL, INEXACT_EXCEPTION),
10575     TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL, INEXACT_EXCEPTION),
10576
10577     TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL, INEXACT_EXCEPTION),
10578     TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL, INEXACT_EXCEPTION),
10579     TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL, INEXACT_EXCEPTION),
10580     TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL, INEXACT_EXCEPTION),
10581     TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL, INEXACT_EXCEPTION),
10582
10583 # if LDBL_MANT_DIG > 100
10584     TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL, INEXACT_EXCEPTION),
10585     TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL, INEXACT_EXCEPTION),
10586     TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL, INEXACT_EXCEPTION),
10587     TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL, INEXACT_EXCEPTION),
10588     TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL, INEXACT_EXCEPTION),
10589     TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL, INEXACT_EXCEPTION),
10590
10591     TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL, INEXACT_EXCEPTION),
10592     TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL, INEXACT_EXCEPTION),
10593     TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL, INEXACT_EXCEPTION),
10594     TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL, INEXACT_EXCEPTION),
10595     TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL, INEXACT_EXCEPTION),
10596     TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL, INEXACT_EXCEPTION),
10597 #endif
10598
10599     TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL, INEXACT_EXCEPTION),
10600     TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL, INEXACT_EXCEPTION),
10601     TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL, INEXACT_EXCEPTION),
10602     TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL, INEXACT_EXCEPTION),
10603     TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL, INEXACT_EXCEPTION),
10604
10605     TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL, INEXACT_EXCEPTION),
10606     TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL, INEXACT_EXCEPTION),
10607     TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL, INEXACT_EXCEPTION),
10608     TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL, INEXACT_EXCEPTION),
10609     TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL, INEXACT_EXCEPTION),
10610
10611 # if LDBL_MANT_DIG > 100
10612     TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL, INEXACT_EXCEPTION),
10613     TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL, INEXACT_EXCEPTION),
10614     TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL, INEXACT_EXCEPTION),
10615     TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL, INEXACT_EXCEPTION),
10616     TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL, INEXACT_EXCEPTION),
10617     TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL, INEXACT_EXCEPTION),
10618
10619     TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL, INEXACT_EXCEPTION),
10620     TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL, INEXACT_EXCEPTION),
10621     TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL, INEXACT_EXCEPTION),
10622     TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL, INEXACT_EXCEPTION),
10623     TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL, INEXACT_EXCEPTION),
10624     TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL, INEXACT_EXCEPTION),
10625 #endif
10626
10627     TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL, INEXACT_EXCEPTION),
10628     TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL, INEXACT_EXCEPTION),
10629     TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL, INEXACT_EXCEPTION),
10630     TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL, INEXACT_EXCEPTION),
10631     TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL, INEXACT_EXCEPTION),
10632
10633     TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL, INEXACT_EXCEPTION),
10634     TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL, INEXACT_EXCEPTION),
10635     TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL, INEXACT_EXCEPTION),
10636     TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL, INEXACT_EXCEPTION),
10637     TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL, INEXACT_EXCEPTION),
10638
10639 # if LDBL_MANT_DIG > 100
10640     TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL, INEXACT_EXCEPTION),
10641     TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL, INEXACT_EXCEPTION),
10642     TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL, NO_INEXACT_EXCEPTION),
10643     TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL, NO_INEXACT_EXCEPTION),
10644     TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL, INEXACT_EXCEPTION),
10645     TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL, INEXACT_EXCEPTION),
10646     TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L, INEXACT_EXCEPTION),
10647     TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
10648     TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL, INEXACT_EXCEPTION),
10649     TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL, INEXACT_EXCEPTION),
10650     TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL, NO_INEXACT_EXCEPTION),
10651     TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL, NO_INEXACT_EXCEPTION),
10652 # endif
10653 #endif
10654   };
10655
10656 static void
10657 llrint_test_towardzero (void)
10658 {
10659   START (llrint_towardzero);
10660   RUN_TEST_LOOP_f_L (llrint, llrint_towardzero_test_data, FE_TOWARDZERO);
10661   END;
10662 }
10663
10664 static const struct test_f_L_data llrint_downward_test_data[] =
10665   {
10666     TEST_f_L (llrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10667     TEST_f_L (llrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10668     TEST_f_L (llrint, 0.2L, 0, INEXACT_EXCEPTION),
10669     TEST_f_L (llrint, -0.2L, -1, INEXACT_EXCEPTION),
10670
10671     TEST_f_L (llrint, 1.4L, 1, INEXACT_EXCEPTION),
10672     TEST_f_L (llrint, -1.4L, -2, INEXACT_EXCEPTION),
10673
10674     TEST_f_L (llrint, 8388600.3L, 8388600, INEXACT_EXCEPTION),
10675     TEST_f_L (llrint, -8388600.3L, -8388601, INEXACT_EXCEPTION),
10676
10677 #ifndef TEST_FLOAT
10678     TEST_f_L (llrint, 1071930.0008, 1071930, INEXACT_EXCEPTION),
10679 #endif
10680
10681     /* Test boundary conditions.  */
10682     /* 0x1FFFFF */
10683     TEST_f_L (llrint, 2097151.0,2097151LL, NO_INEXACT_EXCEPTION),
10684     /* 0x800000 */
10685     TEST_f_L (llrint, 8388608.0, 8388608LL, NO_INEXACT_EXCEPTION),
10686     /* 0x1000000 */
10687     TEST_f_L (llrint, 16777216.0, 16777216LL, NO_INEXACT_EXCEPTION),
10688     /* 0x20000000000 */
10689     TEST_f_L (llrint, 2199023255552.0, 2199023255552LL, NO_INEXACT_EXCEPTION),
10690     /* 0x40000000000 */
10691     TEST_f_L (llrint, 4398046511104.0, 4398046511104LL, NO_INEXACT_EXCEPTION),
10692     /* 0x1000000000000 */
10693     TEST_f_L (llrint, 281474976710656.0, 281474976710656LL, NO_INEXACT_EXCEPTION),
10694     /* 0x10000000000000 */
10695     TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL, NO_INEXACT_EXCEPTION),
10696     /* 0x10000080000000 */
10697     TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL, NO_INEXACT_EXCEPTION),
10698     /* 0x20000000000000 */
10699     TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL, NO_INEXACT_EXCEPTION),
10700     /* 0x80000000000000 */
10701     TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL, NO_INEXACT_EXCEPTION),
10702     /* 0x100000000000000 */
10703     TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL, NO_INEXACT_EXCEPTION),
10704 #ifdef TEST_LDOUBLE
10705     /* The input can only be represented in long double.  */
10706     TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL, INEXACT_EXCEPTION),
10707     TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL, INEXACT_EXCEPTION),
10708     TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL, INEXACT_EXCEPTION),
10709     TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL, INEXACT_EXCEPTION),
10710     TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL, INEXACT_EXCEPTION),
10711
10712     TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL, INEXACT_EXCEPTION),
10713     TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL, INEXACT_EXCEPTION),
10714     TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL, INEXACT_EXCEPTION),
10715     TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL, INEXACT_EXCEPTION),
10716     TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL, INEXACT_EXCEPTION),
10717     TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL, INEXACT_EXCEPTION),
10718
10719     TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL, INEXACT_EXCEPTION),
10720     TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL, INEXACT_EXCEPTION),
10721     TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL, INEXACT_EXCEPTION),
10722     TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL, INEXACT_EXCEPTION),
10723     TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL, INEXACT_EXCEPTION),
10724
10725     TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL, INEXACT_EXCEPTION),
10726     TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL, INEXACT_EXCEPTION),
10727     TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL, INEXACT_EXCEPTION),
10728     TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL, INEXACT_EXCEPTION),
10729     TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL, INEXACT_EXCEPTION),
10730     TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL, INEXACT_EXCEPTION),
10731
10732     TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL, INEXACT_EXCEPTION),
10733     TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL, INEXACT_EXCEPTION),
10734     TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL, INEXACT_EXCEPTION),
10735     TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL, INEXACT_EXCEPTION),
10736     TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL, INEXACT_EXCEPTION),
10737
10738     TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL, INEXACT_EXCEPTION),
10739     TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL, INEXACT_EXCEPTION),
10740     TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL, INEXACT_EXCEPTION),
10741     TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL, INEXACT_EXCEPTION),
10742     TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL, INEXACT_EXCEPTION),
10743     TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL, INEXACT_EXCEPTION),
10744
10745     TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL, INEXACT_EXCEPTION),
10746     TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL, INEXACT_EXCEPTION),
10747     TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL, INEXACT_EXCEPTION),
10748     TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL, INEXACT_EXCEPTION),
10749     TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL, INEXACT_EXCEPTION),
10750
10751     TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL, INEXACT_EXCEPTION),
10752     TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL, INEXACT_EXCEPTION),
10753     TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL, INEXACT_EXCEPTION),
10754     TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL, INEXACT_EXCEPTION),
10755     TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL, INEXACT_EXCEPTION),
10756     TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL, INEXACT_EXCEPTION),
10757
10758     TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL, INEXACT_EXCEPTION),
10759     TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL, INEXACT_EXCEPTION),
10760     TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL, INEXACT_EXCEPTION),
10761     TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL, INEXACT_EXCEPTION),
10762     TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL, INEXACT_EXCEPTION),
10763
10764     TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL, INEXACT_EXCEPTION),
10765     TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL, INEXACT_EXCEPTION),
10766     TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL, INEXACT_EXCEPTION),
10767     TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL, INEXACT_EXCEPTION),
10768     TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL, INEXACT_EXCEPTION),
10769
10770 # if LDBL_MANT_DIG > 100
10771     TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL, INEXACT_EXCEPTION),
10772     TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
10773     TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL, NO_INEXACT_EXCEPTION),
10774     TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL, NO_INEXACT_EXCEPTION),
10775     TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL, INEXACT_EXCEPTION),
10776     TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL, INEXACT_EXCEPTION),
10777     TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L, INEXACT_EXCEPTION),
10778     TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL, INEXACT_EXCEPTION),
10779     TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL, INEXACT_EXCEPTION),
10780     TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL, INEXACT_EXCEPTION),
10781     TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL, NO_INEXACT_EXCEPTION),
10782     TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL, NO_INEXACT_EXCEPTION),
10783 # endif
10784 #endif
10785   };
10786
10787 static void
10788 llrint_test_downward (void)
10789 {
10790   START (llrint_downward);
10791   RUN_TEST_LOOP_f_L (llrint, llrint_downward_test_data, FE_DOWNWARD);
10792   END;
10793 }
10794
10795 static const struct test_f_L_data llrint_upward_test_data[] =
10796   {
10797     TEST_f_L (llrint, 0.0, 0, NO_INEXACT_EXCEPTION),
10798     TEST_f_L (llrint, minus_zero, 0, NO_INEXACT_EXCEPTION),
10799     TEST_f_L (llrint, 0.2L, 1, INEXACT_EXCEPTION),
10800     TEST_f_L (llrint, -0.2L, 0, INEXACT_EXCEPTION),
10801
10802     TEST_f_L (llrint, 1.4L, 2, INEXACT_EXCEPTION),
10803     TEST_f_L (llrint, -1.4L, -1, INEXACT_EXCEPTION),
10804
10805     TEST_f_L (llrint, 8388600.3L, 8388601, INEXACT_EXCEPTION),
10806     TEST_f_L (llrint, -8388600.3L, -8388600, INEXACT_EXCEPTION),
10807 #ifndef TEST_FLOAT
10808     TEST_f_L (llrint, 1071930.0008, 1071931, INEXACT_EXCEPTION),
10809 #endif
10810     /* Test boundary conditions.  */
10811     /* 0x1FFFFF */
10812     TEST_f_L (llrint, 2097151.0,2097151LL, NO_INEXACT_EXCEPTION),
10813     /* 0x800000 */
10814     TEST_f_L (llrint, 8388608.0, 8388608LL, NO_INEXACT_EXCEPTION),
10815     /* 0x1000000 */
10816     TEST_f_L (llrint, 16777216.0, 16777216LL, NO_INEXACT_EXCEPTION),
10817     /* 0x20000000000 */
10818     TEST_f_L (llrint, 2199023255552.0, 2199023255552LL, NO_INEXACT_EXCEPTION),
10819     /* 0x40000000000 */
10820     TEST_f_L (llrint, 4398046511104.0, 4398046511104LL, NO_INEXACT_EXCEPTION),
10821     /* 0x1000000000000 */
10822     TEST_f_L (llrint, 281474976710656.0, 281474976710656LL, NO_INEXACT_EXCEPTION),
10823     /* 0x10000000000000 */
10824     TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL, NO_INEXACT_EXCEPTION),
10825     /* 0x10000080000000 */
10826     TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL, NO_INEXACT_EXCEPTION),
10827     /* 0x20000000000000 */
10828     TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL, NO_INEXACT_EXCEPTION),
10829     /* 0x80000000000000 */
10830     TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL, NO_INEXACT_EXCEPTION),
10831     /* 0x100000000000000 */
10832     TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL, NO_INEXACT_EXCEPTION),
10833 #ifdef TEST_LDOUBLE
10834     /* The input can only be represented in long double.  */
10835     TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL, INEXACT_EXCEPTION),
10836     TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL, INEXACT_EXCEPTION),
10837     TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL, INEXACT_EXCEPTION),
10838     TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL, INEXACT_EXCEPTION),
10839     TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL, INEXACT_EXCEPTION),
10840
10841     TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL, INEXACT_EXCEPTION),
10842     TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL, INEXACT_EXCEPTION),
10843     TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL, INEXACT_EXCEPTION),
10844     TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL, INEXACT_EXCEPTION),
10845     TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL, INEXACT_EXCEPTION),
10846     TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL, INEXACT_EXCEPTION),
10847
10848     TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL, INEXACT_EXCEPTION),
10849     TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL, INEXACT_EXCEPTION),
10850     TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL, INEXACT_EXCEPTION),
10851     TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL, INEXACT_EXCEPTION),
10852     TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL, INEXACT_EXCEPTION),
10853
10854     TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL, INEXACT_EXCEPTION),
10855     TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL, INEXACT_EXCEPTION),
10856     TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL, INEXACT_EXCEPTION),
10857     TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL, INEXACT_EXCEPTION),
10858     TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL, INEXACT_EXCEPTION),
10859     TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL, INEXACT_EXCEPTION),
10860
10861     TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL, INEXACT_EXCEPTION),
10862     TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL, INEXACT_EXCEPTION),
10863     TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL, INEXACT_EXCEPTION),
10864     TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL, INEXACT_EXCEPTION),
10865     TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL, INEXACT_EXCEPTION),
10866
10867     TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL, INEXACT_EXCEPTION),
10868     TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL, INEXACT_EXCEPTION),
10869     TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL, INEXACT_EXCEPTION),
10870     TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL, INEXACT_EXCEPTION),
10871     TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL, INEXACT_EXCEPTION),
10872     TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL, INEXACT_EXCEPTION),
10873
10874     TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL, INEXACT_EXCEPTION),
10875     TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL, INEXACT_EXCEPTION),
10876     TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL, INEXACT_EXCEPTION),
10877     TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL, INEXACT_EXCEPTION),
10878     TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL, INEXACT_EXCEPTION),
10879
10880     TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL, INEXACT_EXCEPTION),
10881     TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL, INEXACT_EXCEPTION),
10882     TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL, INEXACT_EXCEPTION),
10883     TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL, INEXACT_EXCEPTION),
10884     TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL, INEXACT_EXCEPTION),
10885     TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL, INEXACT_EXCEPTION),
10886
10887     TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL, INEXACT_EXCEPTION),
10888     TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL, INEXACT_EXCEPTION),
10889     TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL, INEXACT_EXCEPTION),
10890     TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL, INEXACT_EXCEPTION),
10891     TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL, INEXACT_EXCEPTION),
10892
10893     TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL, INEXACT_EXCEPTION),
10894     TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL, INEXACT_EXCEPTION),
10895     TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL, INEXACT_EXCEPTION),
10896     TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL, INEXACT_EXCEPTION),
10897     TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL, INEXACT_EXCEPTION),
10898
10899 # if LDBL_MANT_DIG > 100
10900     TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL, INEXACT_EXCEPTION),
10901     TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL, INEXACT_EXCEPTION),
10902     TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL, NO_INEXACT_EXCEPTION),
10903     TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL, NO_INEXACT_EXCEPTION),
10904     TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL, INEXACT_EXCEPTION),
10905     TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL, INEXACT_EXCEPTION),
10906     TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L, INEXACT_EXCEPTION),
10907     TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL, INEXACT_EXCEPTION),
10908     TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL, INEXACT_EXCEPTION),
10909     TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL, INEXACT_EXCEPTION),
10910     TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL, NO_INEXACT_EXCEPTION),
10911     TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL, NO_INEXACT_EXCEPTION),
10912 # endif
10913 #endif
10914   };
10915
10916 static void
10917 llrint_test_upward (void)
10918 {
10919   START (llrint_upward);
10920   RUN_TEST_LOOP_f_L (llrint, llrint_upward_test_data, FE_UPWARD);
10921   END;
10922 }
10923
10924
10925 static const struct test_f_f_data log_test_data[] =
10926   {
10927     TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
10928     TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
10929
10930     TEST_f_f (log, 1, 0),
10931
10932     TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
10933     TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
10934     TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
10935     TEST_f_f (log, plus_infty, plus_infty),
10936     TEST_f_f (log, qnan_value, qnan_value),
10937
10938     TEST_f_f (log, M_El, 1),
10939     TEST_f_f (log, M_1_DIV_El, -1),
10940     TEST_f_f (log, 2, M_LN2l),
10941     TEST_f_f (log, 10, M_LN10l),
10942     TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L),
10943   };
10944
10945 static void
10946 log_test (void)
10947 {
10948   START (log);
10949   RUN_TEST_LOOP_f_f (log, log_test_data, );
10950   END;
10951 }
10952
10953
10954 static const struct test_f_f_data log10_test_data[] =
10955   {
10956     TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
10957     TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
10958
10959     TEST_f_f (log10, 1, 0),
10960
10961     /* log10 (x) == qNaN plus invalid exception if x < 0.  */
10962     TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
10963     TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
10964     TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
10965
10966     TEST_f_f (log10, plus_infty, plus_infty),
10967     TEST_f_f (log10, qnan_value, qnan_value),
10968
10969     TEST_f_f (log10, 0.1L, -1),
10970     TEST_f_f (log10, 10.0, 1),
10971     TEST_f_f (log10, 100.0, 2),
10972     TEST_f_f (log10, 10000.0, 4),
10973     TEST_f_f (log10, M_El, M_LOG10El),
10974     TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L),
10975   };
10976
10977 static void
10978 log10_test (void)
10979 {
10980   START (log10);
10981   RUN_TEST_LOOP_f_f (log10, log10_test_data, );
10982   END;
10983 }
10984
10985
10986 static const struct test_f_f_data log1p_test_data[] =
10987   {
10988     TEST_f_f (log1p, 0, 0),
10989     TEST_f_f (log1p, minus_zero, minus_zero),
10990
10991     TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10992     TEST_f_f (log1p, -2, qnan_value, INVALID_EXCEPTION),
10993     TEST_f_f (log1p, -max_value, qnan_value, INVALID_EXCEPTION),
10994     TEST_f_f (log1p, minus_infty, qnan_value, INVALID_EXCEPTION),
10995
10996     TEST_f_f (log1p, plus_infty, plus_infty),
10997     TEST_f_f (log1p, qnan_value, qnan_value),
10998
10999     TEST_f_f (log1p, M_El - 1.0, 1),
11000
11001     TEST_f_f (log1p, -0.25L, -0.287682072451780927439219005993827432L),
11002     TEST_f_f (log1p, -0.875, -2.07944154167983592825169636437452970L),
11003   };
11004
11005 static void
11006 log1p_test (void)
11007 {
11008   START (log1p);
11009   RUN_TEST_LOOP_f_f (log1p, log1p_test_data, );
11010   END;
11011 }
11012
11013
11014 static const struct test_f_f_data log2_test_data[] =
11015   {
11016     TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11017     TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11018
11019     TEST_f_f (log2, 1, 0),
11020
11021     TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11022     TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11023     TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11024
11025     TEST_f_f (log2, plus_infty, plus_infty),
11026     TEST_f_f (log2, qnan_value, qnan_value),
11027
11028     TEST_f_f (log2, M_El, M_LOG2El),
11029     TEST_f_f (log2, 2.0, 1),
11030     TEST_f_f (log2, 16.0, 4),
11031     TEST_f_f (log2, 256.0, 8),
11032     TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L),
11033   };
11034
11035 static void
11036 log2_test (void)
11037 {
11038   START (log2);
11039   RUN_TEST_LOOP_f_f (log2, log2_test_data, );
11040   END;
11041 }
11042
11043
11044 static const struct test_f_f_data logb_test_data[] =
11045   {
11046     TEST_f_f (logb, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
11047     TEST_f_f (logb, minus_infty, plus_infty, NO_INEXACT_EXCEPTION),
11048
11049     TEST_f_f (logb, 0, minus_infty, NO_INEXACT_EXCEPTION|DIVIDE_BY_ZERO_EXCEPTION),
11050
11051     TEST_f_f (logb, minus_zero, minus_infty, NO_INEXACT_EXCEPTION|DIVIDE_BY_ZERO_EXCEPTION),
11052     TEST_f_f (logb, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
11053
11054     TEST_f_f (logb, 1, 0, NO_INEXACT_EXCEPTION),
11055     TEST_f_f (logb, M_El, 1, NO_INEXACT_EXCEPTION),
11056     TEST_f_f (logb, 1024, 10, NO_INEXACT_EXCEPTION),
11057     TEST_f_f (logb, -2000, 10, NO_INEXACT_EXCEPTION),
11058
11059     TEST_f_f (logb, 0x0.1p-127, -131, NO_INEXACT_EXCEPTION),
11060     TEST_f_f (logb, 0x0.01p-127, -135, NO_INEXACT_EXCEPTION),
11061     TEST_f_f (logb, 0x0.011p-127, -135, NO_INEXACT_EXCEPTION),
11062 #ifndef TEST_FLOAT
11063     TEST_f_f (logb, 0x0.8p-1022, -1023, NO_INEXACT_EXCEPTION),
11064     TEST_f_f (logb, 0x0.1p-1022, -1026, NO_INEXACT_EXCEPTION),
11065     TEST_f_f (logb, 0x0.00111p-1022, -1034, NO_INEXACT_EXCEPTION),
11066     TEST_f_f (logb, 0x0.00001p-1022, -1042, NO_INEXACT_EXCEPTION),
11067     TEST_f_f (logb, 0x0.000011p-1022, -1042, NO_INEXACT_EXCEPTION),
11068     TEST_f_f (logb, 0x0.0000000000001p-1022, -1074, NO_INEXACT_EXCEPTION),
11069 #endif
11070 #if defined TEST_LDOUBLE && LDBL_MIN_EXP - LDBL_MANT_DIG <= -16400
11071     TEST_f_f (logb, 0x1p-16400L, -16400, NO_INEXACT_EXCEPTION),
11072     TEST_f_f (logb, 0x.00000000001p-16382L, -16426, NO_INEXACT_EXCEPTION),
11073 #endif
11074   };
11075
11076 static void
11077 logb_test (void)
11078 {
11079   START (logb);
11080   RUN_TEST_LOOP_f_f (logb, logb_test_data, );
11081   END;
11082 }
11083
11084 static const struct test_f_f_data logb_downward_test_data[] =
11085   {
11086     /* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.".  Libm
11087        should not return -0 from logb in any rounding mode.  PowerPC32 has
11088        failed with this test for power4 logb (and logbl on all PowerPC
11089        platforms) in the past due to instruction selection.  GCC PR 52775
11090        provides the availability of the fcfid insn in 32-bit mode which
11091        eliminates the use of fsub in this instance and prevents the negative
11092        signed 0.0.  */
11093
11094     /* BZ #887  */
11095     TEST_f_f (logb, 1.000e+0, plus_zero, NO_INEXACT_EXCEPTION),
11096   };
11097
11098 static void
11099 logb_test_downward (void)
11100 {
11101   START (logb_downward);
11102   RUN_TEST_LOOP_f_f (logb, logb_downward_test_data, FE_DOWNWARD);
11103   END;
11104 }
11105
11106 static const struct test_f_l_data lround_test_data[] =
11107   {
11108     /* TODO: missing +/-Inf as well as qNaN tests.  */
11109     TEST_f_l (lround, 0, 0),
11110     TEST_f_l (lround, minus_zero, 0),
11111     TEST_f_l (lround, 0.2L, 0.0),
11112     TEST_f_l (lround, -0.2L, 0),
11113     TEST_f_l (lround, 0.5, 1),
11114     TEST_f_l (lround, -0.5, -1),
11115     TEST_f_l (lround, 0.8L, 1),
11116     TEST_f_l (lround, -0.8L, -1),
11117     TEST_f_l (lround, 1.5, 2),
11118     TEST_f_l (lround, -1.5, -2),
11119     TEST_f_l (lround, 22514.5, 22515),
11120     TEST_f_l (lround, -22514.5, -22515),
11121     TEST_f_l (lround, 1071930.0008, 1071930),
11122 #ifndef TEST_FLOAT
11123     TEST_f_l (lround, 1073741824.01, 1073741824),
11124 # if LONG_MAX > 281474976710656
11125     TEST_f_l (lround, 281474976710656.025, 281474976710656),
11126     TEST_f_l (lround, 18014398509481974, 18014398509481974),
11127 # endif
11128     TEST_f_l (lround, 2097152.5, 2097153),
11129     TEST_f_l (lround, -2097152.5, -2097153),
11130     /* nextafter(0.5,-1)  */
11131     TEST_f_l (lround, 0x1.fffffffffffffp-2, 0),
11132     /* nextafter(-0.5,1)  */
11133     TEST_f_l (lround, -0x1.fffffffffffffp-2, 0),
11134 #else
11135     /* nextafter(0.5,-1)  */
11136     TEST_f_l (lround, 0x1.fffffp-2, 0),
11137     /* nextafter(-0.5,1)  */
11138     TEST_f_l (lround, -0x1.fffffp-2, 0),
11139     TEST_f_l (lround, 0x1.fffffep+23, 16777215),
11140     TEST_f_l (lround, -0x1.fffffep+23, -16777215),
11141 #endif
11142   };
11143
11144 static void
11145 lround_test (void)
11146 {
11147   START (lround);
11148   RUN_TEST_LOOP_f_l (lround, lround_test_data, );
11149   END;
11150 }
11151
11152
11153 static const struct test_f_L_data llround_test_data[] =
11154   {
11155     /* TODO: missing +/-Inf as well as qNaN tests.  */
11156     TEST_f_L (llround, 0, 0),
11157     TEST_f_L (llround, minus_zero, 0),
11158     TEST_f_L (llround, 0.2L, 0.0),
11159     TEST_f_L (llround, -0.2L, 0),
11160     TEST_f_L (llround, 0.5, 1),
11161     TEST_f_L (llround, -0.5, -1),
11162     TEST_f_L (llround, 0.8L, 1),
11163     TEST_f_L (llround, -0.8L, -1),
11164     TEST_f_L (llround, 1.5, 2),
11165     TEST_f_L (llround, -1.5, -2),
11166     TEST_f_L (llround, 22514.5, 22515),
11167     TEST_f_L (llround, -22514.5, -22515),
11168     TEST_f_L (llround, 1071930.0008, 1071930),
11169 #ifndef TEST_FLOAT
11170     TEST_f_L (llround, 2097152.5, 2097153),
11171     TEST_f_L (llround, -2097152.5, -2097153),
11172     TEST_f_L (llround, 34359738368.5, 34359738369ll),
11173     TEST_f_L (llround, -34359738368.5, -34359738369ll),
11174     TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL),
11175 #endif
11176
11177     /* Test boundary conditions.  */
11178     /* 0x1FFFFF */
11179     TEST_f_L (llround, 2097151.0, 2097151LL),
11180     /* 0x800000 */
11181     TEST_f_L (llround, 8388608.0, 8388608LL),
11182     /* 0x1000000 */
11183     TEST_f_L (llround, 16777216.0, 16777216LL),
11184     /* 0x20000000000 */
11185     TEST_f_L (llround, 2199023255552.0, 2199023255552LL),
11186     /* 0x40000000000 */
11187     TEST_f_L (llround, 4398046511104.0, 4398046511104LL),
11188     /* 0x1000000000000 */
11189     TEST_f_L (llround, 281474976710656.0, 281474976710656LL),
11190     /* 0x10000000000000 */
11191     TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL),
11192     /* 0x10000080000000 */
11193     TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL),
11194     /* 0x20000000000000 */
11195     TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL),
11196     /* 0x80000000000000 */
11197     TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL),
11198     /* 0x100000000000000 */
11199     TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL),
11200
11201 #ifndef TEST_FLOAT
11202     /* 0x100000000 */
11203     TEST_f_L (llround, 4294967295.5, 4294967296LL),
11204     /* 0x200000000 */
11205     TEST_f_L (llround, 8589934591.5, 8589934592LL),
11206
11207     /* nextafter(0.5,-1)  */
11208     TEST_f_L (llround, 0x1.fffffffffffffp-2, 0),
11209     /* nextafter(-0.5,1)  */
11210     TEST_f_L (llround, -0x1.fffffffffffffp-2, 0),
11211     /* On PowerPC an exponent of '52' is the largest incrementally
11212      * representable sequence of whole-numbers in the 'double' range.  We test
11213      * lround to make sure that a guard bit set during the lround operation
11214      * hasn't forced an erroneous shift giving us an incorrect result.  The odd
11215      * numbers between +-(2^52+1 and 2^53-1) are affected since they have the
11216      * rightmost bit set.  */
11217     /* +-(2^52+1)  */
11218     TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL),
11219     TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL),
11220     /* +-(2^53-1): Input is the last (positive and negative) incrementally
11221      * representable whole-number in the 'double' range that might round
11222      * erroneously.  */
11223     TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL),
11224     TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL),
11225 #else
11226     /* nextafter(0.5,-1)  */
11227     TEST_f_L (llround, 0x1.fffffep-2, 0),
11228     /* nextafter(-0.5,1)  */
11229     TEST_f_L (llround, -0x1.fffffep-2, 0),
11230     /* As above, on PowerPC an exponent of '23' is the largest incrementally
11231      * representable sequence of whole-numbers in the 'float' range.
11232      * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected.  */
11233     TEST_f_L (llround, 0x1.000002p+23,8388609),
11234     TEST_f_L (llround, -0x1.000002p+23,-8388609),
11235     TEST_f_L (llround, 0x1.fffffep+23, 16777215),
11236     TEST_f_L (llround, -0x1.fffffep+23, -16777215),
11237 #endif
11238
11239
11240 #ifdef TEST_LDOUBLE
11241     /* The input can only be represented in long double.  */
11242     TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL),
11243     TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL),
11244     TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL),
11245     TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL),
11246     TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL),
11247
11248 # if LDBL_MANT_DIG > 100
11249     TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL),
11250     TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL),
11251     TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL),
11252     TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL),
11253     TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL),
11254     TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL),
11255
11256     TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL),
11257     TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL),
11258     TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL),
11259     TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL),
11260     TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL),
11261     TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL),
11262 # endif
11263
11264     TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL),
11265     TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL),
11266     TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL),
11267     TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL),
11268     TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL),
11269
11270     TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL),
11271     TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL),
11272     TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL),
11273     TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL),
11274     TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL),
11275
11276 # if LDBL_MANT_DIG > 100
11277     TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL),
11278     TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL),
11279     TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL),
11280     TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL),
11281     TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL),
11282     TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL),
11283
11284     TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL),
11285     TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL),
11286     TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL),
11287     TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL),
11288     TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL),
11289     TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL),
11290 # endif
11291
11292     TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL),
11293     TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL),
11294     TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL),
11295     TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL),
11296     TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL),
11297
11298     TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL),
11299     TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL),
11300     TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL),
11301     TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL),
11302     TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL),
11303
11304     TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL),
11305     TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL),
11306     TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL),
11307     TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL),
11308     TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL),
11309
11310     TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL),
11311     TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL),
11312     TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL),
11313     TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL),
11314     TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL),
11315     TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL),
11316 #endif
11317   };
11318
11319 static void
11320 llround_test (void)
11321 {
11322   START (llround);
11323   RUN_TEST_LOOP_f_L (llround, llround_test_data, );
11324   END;
11325 }
11326
11327 static const struct test_fF_f1_data modf_test_data[] =
11328   {
11329     TEST_fF_f1 (modf, plus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION),
11330     TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty, NO_INEXACT_EXCEPTION),
11331     TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
11332     TEST_fF_f1 (modf, 0, 0, 0, NO_INEXACT_EXCEPTION),
11333     TEST_fF_f1 (modf, 1.5, 0.5, 1, NO_INEXACT_EXCEPTION),
11334     TEST_fF_f1 (modf, 2.5, 0.5, 2, NO_INEXACT_EXCEPTION),
11335     TEST_fF_f1 (modf, -2.5, -0.5, -2, NO_INEXACT_EXCEPTION),
11336     TEST_fF_f1 (modf, 20, 0, 20, NO_INEXACT_EXCEPTION),
11337     TEST_fF_f1 (modf, 21, 0, 21, NO_INEXACT_EXCEPTION),
11338     TEST_fF_f1 (modf, 89.5, 0.5, 89, NO_INEXACT_EXCEPTION),
11339   };
11340
11341 static void
11342 modf_test (void)
11343 {
11344   FLOAT x;
11345
11346   START (modf);
11347   RUN_TEST_LOOP_fF_f1 (modf, modf_test_data, , x);
11348   END;
11349 }
11350
11351
11352 static const struct test_f_f_data nearbyint_test_data[] =
11353   {
11354     TEST_f_f (nearbyint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
11355     TEST_f_f (nearbyint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
11356     TEST_f_f (nearbyint, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
11357     TEST_f_f (nearbyint, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
11358     TEST_f_f (nearbyint, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
11359
11360     /* Subnormal values */
11361     TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307, NO_INEXACT_EXCEPTION),
11362     TEST_f_f (nearbyint, -4.45015e-308, minus_zero, NO_INEXACT_EXCEPTION),
11363
11364     /* Default rounding mode is round to nearest.  */
11365     TEST_f_f (nearbyint, 0.5, 0.0, NO_INEXACT_EXCEPTION),
11366     TEST_f_f (nearbyint, 1.5, 2.0, NO_INEXACT_EXCEPTION),
11367     TEST_f_f (nearbyint, -0.5, minus_zero, NO_INEXACT_EXCEPTION),
11368     TEST_f_f (nearbyint, -1.5, -2.0, NO_INEXACT_EXCEPTION),
11369
11370     TEST_f_f (nearbyint, 262144.75, 262145.0, NO_INEXACT_EXCEPTION),
11371     TEST_f_f (nearbyint, 262142.75, 262143.0, NO_INEXACT_EXCEPTION),
11372     TEST_f_f (nearbyint, 524286.75, 524287.0, NO_INEXACT_EXCEPTION),
11373     TEST_f_f (nearbyint, 524288.75, 524289.0, NO_INEXACT_EXCEPTION),
11374
11375     TEST_f_f (nearbyint, 1048576.75, 1048577.0, NO_INEXACT_EXCEPTION),
11376     TEST_f_f (nearbyint, 2097152.75, 2097153.0, NO_INEXACT_EXCEPTION),
11377     TEST_f_f (nearbyint, 2492472.75, 2492473.0, NO_INEXACT_EXCEPTION),
11378     TEST_f_f (nearbyint, 2886220.75, 2886221.0, NO_INEXACT_EXCEPTION),
11379     TEST_f_f (nearbyint, 3058792.75, 3058793.0, NO_INEXACT_EXCEPTION),
11380     TEST_f_f (nearbyint, -1048576.75, -1048577.0, NO_INEXACT_EXCEPTION),
11381     TEST_f_f (nearbyint, -2097152.75, -2097153.0, NO_INEXACT_EXCEPTION),
11382     TEST_f_f (nearbyint, -2492472.75, -2492473.0, NO_INEXACT_EXCEPTION),
11383     TEST_f_f (nearbyint, -2886220.75, -2886221.0, NO_INEXACT_EXCEPTION),
11384     TEST_f_f (nearbyint, -3058792.75, -3058793.0, NO_INEXACT_EXCEPTION),
11385 #ifndef TEST_FLOAT
11386     TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0, NO_INEXACT_EXCEPTION),
11387     TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0, NO_INEXACT_EXCEPTION),
11388     TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0, NO_INEXACT_EXCEPTION),
11389     TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0, NO_INEXACT_EXCEPTION),
11390     TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0, NO_INEXACT_EXCEPTION),
11391     TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0, NO_INEXACT_EXCEPTION),
11392     TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0, NO_INEXACT_EXCEPTION),
11393     TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0, NO_INEXACT_EXCEPTION),
11394     TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0, NO_INEXACT_EXCEPTION),
11395     TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0, NO_INEXACT_EXCEPTION),
11396 #endif
11397   };
11398
11399 static void
11400 nearbyint_test (void)
11401 {
11402   START (nearbyint);
11403   RUN_TEST_LOOP_f_f (nearbyint, nearbyint_test_data, );
11404   END;
11405 }
11406
11407 static const struct test_ff_f_data nextafter_test_data[] =
11408   {
11409     TEST_ff_f (nextafter, 0, 0, 0, NO_INEXACT_EXCEPTION),
11410     TEST_ff_f (nextafter, minus_zero, 0, 0, NO_INEXACT_EXCEPTION),
11411     TEST_ff_f (nextafter, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
11412     TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
11413
11414     TEST_ff_f (nextafter, 9, 9, 9, NO_INEXACT_EXCEPTION),
11415     TEST_ff_f (nextafter, -9, -9, -9, NO_INEXACT_EXCEPTION),
11416     TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
11417     TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
11418
11419     TEST_ff_f (nextafter, qnan_value, 1.1L, qnan_value, NO_INEXACT_EXCEPTION),
11420     TEST_ff_f (nextafter, 1.1L, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
11421     TEST_ff_f (nextafter, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
11422
11423     TEST_ff_f (nextafter, max_value, plus_infty, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
11424     TEST_ff_f (nextafter, -max_value, minus_infty, minus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
11425
11426 #ifdef TEST_LDOUBLE
11427     // XXX Enable once gcc is fixed.
11428     //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 0x0.0000003ffffffff00000p-16385L),
11429 #endif
11430
11431     /* XXX We need the hexadecimal FP number representation here for further
11432        tests.  */
11433   };
11434
11435 static void
11436 nextafter_test (void)
11437 {
11438
11439   START (nextafter);
11440   RUN_TEST_LOOP_ff_f (nextafter, nextafter_test_data, );
11441   END;
11442 }
11443
11444
11445 static const struct test_ff_f_data_nexttoward nexttoward_test_data[] =
11446   {
11447     TEST_ff_f (nexttoward, 0, 0, 0, NO_INEXACT_EXCEPTION),
11448     TEST_ff_f (nexttoward, minus_zero, 0, 0, NO_INEXACT_EXCEPTION),
11449     TEST_ff_f (nexttoward, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
11450     TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
11451
11452     TEST_ff_f (nexttoward, 9, 9, 9, NO_INEXACT_EXCEPTION),
11453     TEST_ff_f (nexttoward, -9, -9, -9, NO_INEXACT_EXCEPTION),
11454     TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
11455     TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
11456
11457     TEST_ff_f (nexttoward, qnan_value, 1.1L, qnan_value, NO_INEXACT_EXCEPTION),
11458     TEST_ff_f (nexttoward, 1.1L, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
11459     TEST_ff_f (nexttoward, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
11460
11461 #ifdef TEST_FLOAT
11462     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.000002p0, NO_INEXACT_EXCEPTION),
11463     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.000002p0, NO_INEXACT_EXCEPTION),
11464     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.000002p0, NO_INEXACT_EXCEPTION),
11465     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11466     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11467     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11468     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.000002p0, NO_INEXACT_EXCEPTION),
11469     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.000002p0, NO_INEXACT_EXCEPTION),
11470     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.000002p0, NO_INEXACT_EXCEPTION),
11471     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11472     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11473     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11474     TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
11475 # if LDBL_MANT_DIG >= 64
11476     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.000002p0, NO_INEXACT_EXCEPTION),
11477     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11478     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.000002p0, NO_INEXACT_EXCEPTION),
11479     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11480 # endif
11481 # if LDBL_MANT_DIG >= 106
11482     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.000002p0, NO_INEXACT_EXCEPTION),
11483     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11484     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.000002p0, NO_INEXACT_EXCEPTION),
11485     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11486 # endif
11487 # if LDBL_MANT_DIG >= 113
11488     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.000002p0, NO_INEXACT_EXCEPTION),
11489     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11490     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.000002p0, NO_INEXACT_EXCEPTION),
11491     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffp0, NO_INEXACT_EXCEPTION),
11492 # endif
11493 #endif
11494 #ifdef TEST_DOUBLE
11495     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11496     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11497     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11498     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11499     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11500     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11501     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11502     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11503     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11504     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11505     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11506     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11507     TEST_ff_f (nexttoward, -1.0, -0x8.00346dc5d6388p-3L, -0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11508     TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
11509 # if LDBL_MANT_DIG >= 64
11510     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11511     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11512     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11513     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11514 # endif
11515 # if LDBL_MANT_DIG >= 106
11516     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11517     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11518     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11519     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11520 # endif
11521 # if LDBL_MANT_DIG >= 113
11522     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11523     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11524     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.0000000000001p0, NO_INEXACT_EXCEPTION),
11525     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.fffffffffffff8p0, NO_INEXACT_EXCEPTION),
11526 # endif
11527 #endif
11528   };
11529
11530 static void
11531 nexttoward_test (void)
11532 {
11533   START (nexttoward);
11534   RUN_TEST_LOOP_ff_f (nexttoward, nexttoward_test_data, );
11535   END;
11536 }
11537
11538
11539 static const struct test_ff_f_data pow_test_data[] =
11540   {
11541     TEST_ff_f (pow, 0, 0, 1),
11542     TEST_ff_f (pow, 0, minus_zero, 1),
11543     TEST_ff_f (pow, minus_zero, 0, 1),
11544     TEST_ff_f (pow, minus_zero, minus_zero, 1),
11545
11546     TEST_ff_f (pow, 10, 0, 1),
11547     TEST_ff_f (pow, 10, minus_zero, 1),
11548     TEST_ff_f (pow, -10, 0, 1),
11549     TEST_ff_f (pow, -10, minus_zero, 1),
11550
11551     TEST_ff_f (pow, qnan_value, 0, 1),
11552     TEST_ff_f (pow, qnan_value, minus_zero, 1),
11553
11554 #ifndef TEST_INLINE
11555     TEST_ff_f (pow, 1.1L, plus_infty, plus_infty),
11556     TEST_ff_f (pow, plus_infty, plus_infty, plus_infty),
11557     TEST_ff_f (pow, -1.1L, plus_infty, plus_infty),
11558     TEST_ff_f (pow, minus_infty, plus_infty, plus_infty),
11559
11560     TEST_ff_f (pow, 0.9L, plus_infty, 0),
11561     TEST_ff_f (pow, 1e-7L, plus_infty, 0),
11562     TEST_ff_f (pow, -0.9L, plus_infty, 0),
11563     TEST_ff_f (pow, -1e-7L, plus_infty, 0),
11564
11565     TEST_ff_f (pow, 1.1L, minus_infty, 0),
11566     TEST_ff_f (pow, plus_infty, minus_infty, 0),
11567     TEST_ff_f (pow, -1.1L, minus_infty, 0),
11568     TEST_ff_f (pow, minus_infty, minus_infty, 0),
11569
11570     TEST_ff_f (pow, 0.9L, minus_infty, plus_infty),
11571     TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty),
11572     TEST_ff_f (pow, -0.9L, minus_infty, plus_infty),
11573     TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty),
11574
11575     TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty),
11576     TEST_ff_f (pow, plus_infty, 1, plus_infty),
11577     TEST_ff_f (pow, plus_infty, 1e7L, plus_infty),
11578     TEST_ff_f (pow, plus_infty, min_subnorm_value, plus_infty),
11579
11580     TEST_ff_f (pow, plus_infty, -1e-7L, 0),
11581     TEST_ff_f (pow, plus_infty, -1, 0),
11582     TEST_ff_f (pow, plus_infty, -1e7L, 0),
11583     TEST_ff_f (pow, plus_infty, -min_subnorm_value, 0),
11584
11585     TEST_ff_f (pow, minus_infty, 1, minus_infty),
11586     TEST_ff_f (pow, minus_infty, 11, minus_infty),
11587     TEST_ff_f (pow, minus_infty, 1001, minus_infty),
11588
11589     TEST_ff_f (pow, minus_infty, 2, plus_infty),
11590     TEST_ff_f (pow, minus_infty, 12, plus_infty),
11591     TEST_ff_f (pow, minus_infty, 1002, plus_infty),
11592     TEST_ff_f (pow, minus_infty, 0.1L, plus_infty),
11593     TEST_ff_f (pow, minus_infty, 1.1L, plus_infty),
11594     TEST_ff_f (pow, minus_infty, 11.1L, plus_infty),
11595     TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty),
11596     TEST_ff_f (pow, minus_infty, min_subnorm_value, plus_infty),
11597
11598     TEST_ff_f (pow, minus_infty, -1, minus_zero),
11599     TEST_ff_f (pow, minus_infty, -11, minus_zero),
11600     TEST_ff_f (pow, minus_infty, -1001, minus_zero),
11601
11602     TEST_ff_f (pow, minus_infty, -2, 0),
11603     TEST_ff_f (pow, minus_infty, -12, 0),
11604     TEST_ff_f (pow, minus_infty, -1002, 0),
11605     TEST_ff_f (pow, minus_infty, -0.1L, 0),
11606     TEST_ff_f (pow, minus_infty, -1.1L, 0),
11607     TEST_ff_f (pow, minus_infty, -11.1L, 0),
11608     TEST_ff_f (pow, minus_infty, -1001.1L, 0),
11609     TEST_ff_f (pow, minus_infty, -min_subnorm_value, 0),
11610 #endif
11611
11612     TEST_ff_f (pow, qnan_value, qnan_value, qnan_value),
11613     TEST_ff_f (pow, 0, qnan_value, qnan_value),
11614     TEST_ff_f (pow, 1, qnan_value, 1),
11615     TEST_ff_f (pow, -1, qnan_value, qnan_value),
11616     TEST_ff_f (pow, qnan_value, 1, qnan_value),
11617     TEST_ff_f (pow, qnan_value, -1, qnan_value),
11618
11619     /* pow (x, qNaN) == qNaN.  */
11620     TEST_ff_f (pow, 3.0, qnan_value, qnan_value),
11621     TEST_ff_f (pow, minus_zero, qnan_value, qnan_value),
11622     TEST_ff_f (pow, plus_infty, qnan_value, qnan_value),
11623     TEST_ff_f (pow, -3.0, qnan_value, qnan_value),
11624     TEST_ff_f (pow, minus_infty, qnan_value, qnan_value),
11625
11626     TEST_ff_f (pow, qnan_value, 3.0, qnan_value),
11627     TEST_ff_f (pow, qnan_value, -3.0, qnan_value),
11628     TEST_ff_f (pow, qnan_value, plus_infty, qnan_value),
11629     TEST_ff_f (pow, qnan_value, minus_infty, qnan_value),
11630     TEST_ff_f (pow, qnan_value, 2.5, qnan_value),
11631     TEST_ff_f (pow, qnan_value, -2.5, qnan_value),
11632     TEST_ff_f (pow, qnan_value, min_subnorm_value, qnan_value),
11633     TEST_ff_f (pow, qnan_value, -min_subnorm_value, qnan_value),
11634
11635     TEST_ff_f (pow, 1, plus_infty, 1),
11636     TEST_ff_f (pow, -1, plus_infty, 1),
11637     TEST_ff_f (pow, 1, minus_infty, 1),
11638     TEST_ff_f (pow, -1, minus_infty, 1),
11639     TEST_ff_f (pow, 1, 1, 1),
11640     TEST_ff_f (pow, 1, -1, 1),
11641     TEST_ff_f (pow, 1, 1.25, 1),
11642     TEST_ff_f (pow, 1, -1.25, 1),
11643     TEST_ff_f (pow, 1, 0x1p62L, 1),
11644     TEST_ff_f (pow, 1, 0x1p63L, 1),
11645     TEST_ff_f (pow, 1, 0x1p64L, 1),
11646     TEST_ff_f (pow, 1, 0x1p72L, 1),
11647     TEST_ff_f (pow, 1, min_subnorm_value, 1),
11648     TEST_ff_f (pow, 1, -min_subnorm_value, 1),
11649
11650     /* pow (x, +-0) == 1.  */
11651     TEST_ff_f (pow, plus_infty, 0, 1),
11652     TEST_ff_f (pow, plus_infty, minus_zero, 1),
11653     TEST_ff_f (pow, minus_infty, 0, 1),
11654     TEST_ff_f (pow, minus_infty, minus_zero, 1),
11655     TEST_ff_f (pow, 32.75L, 0, 1),
11656     TEST_ff_f (pow, 32.75L, minus_zero, 1),
11657     TEST_ff_f (pow, -32.75L, 0, 1),
11658     TEST_ff_f (pow, -32.75L, minus_zero, 1),
11659     TEST_ff_f (pow, 0x1p72L, 0, 1),
11660     TEST_ff_f (pow, 0x1p72L, minus_zero, 1),
11661     TEST_ff_f (pow, 0x1p-72L, 0, 1),
11662     TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
11663
11664     TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11665     TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11666     TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11667     TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11668     TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11669     TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11670     TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11671     TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
11672
11673     TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11674     TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11675     TEST_ff_f (pow, 0, -0xffffff, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11676 #ifndef TEST_FLOAT
11677     TEST_ff_f (pow, 0, -0x1.fffffffffffffp+52L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11678 #endif
11679 #ifdef TEST_LDOUBLE
11680 # if LDBL_MANT_DIG >= 64
11681     TEST_ff_f (pow, 0, -0x1.fffffffffffffffep+63L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11682 # endif
11683 # if LDBL_MANT_DIG >= 106
11684     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffff8p+105L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11685 # endif
11686 # if LDBL_MANT_DIG >= 113
11687     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffffffp+112L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11688 # endif
11689 #endif
11690     TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11691     TEST_ff_f (pow, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11692     TEST_ff_f (pow, minus_zero, -0xffffff, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11693     TEST_ff_f (pow, minus_zero, -0x1fffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11694 #ifndef TEST_FLOAT
11695     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+52L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11696     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+53L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11697 #endif
11698 #ifdef TEST_LDOUBLE
11699 # if LDBL_MANT_DIG >= 64
11700     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+63L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11701     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+64L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11702 # endif
11703 # if LDBL_MANT_DIG >= 106
11704     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11705     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11706 # endif
11707 # if LDBL_MANT_DIG >= 113
11708     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11709     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11710 # endif
11711 #endif
11712
11713     TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11714     TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11715     TEST_ff_f (pow, 0, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11716     TEST_ff_f (pow, 0, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11717     TEST_ff_f (pow, 0, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11718     TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11719     TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11720     TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11721     TEST_ff_f (pow, minus_zero, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11722     TEST_ff_f (pow, minus_zero, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11723     TEST_ff_f (pow, minus_zero, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11724     TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11725
11726     TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
11727     TEST_ff_f (pow, 10, -0x1p72L, 0, UNDERFLOW_EXCEPTION),
11728     TEST_ff_f (pow, max_value, max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
11729     TEST_ff_f (pow, 10, -max_value, 0, UNDERFLOW_EXCEPTION),
11730
11731     TEST_ff_f (pow, 0, 1, 0),
11732     TEST_ff_f (pow, 0, 11, 0),
11733
11734     TEST_ff_f (pow, minus_zero, 1, minus_zero),
11735     TEST_ff_f (pow, minus_zero, 11, minus_zero),
11736
11737     TEST_ff_f (pow, 0, 2, 0),
11738     TEST_ff_f (pow, 0, 11.1L, 0),
11739
11740     TEST_ff_f (pow, minus_zero, 2, 0),
11741     TEST_ff_f (pow, minus_zero, 11.1L, 0),
11742     TEST_ff_f (pow, 0, plus_infty, 0),
11743     TEST_ff_f (pow, minus_zero, plus_infty, 0),
11744     TEST_ff_f (pow, 0, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11745     TEST_ff_f (pow, minus_zero, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11746
11747 #ifndef TEST_INLINE
11748     /* pow (x, +inf) == +inf for |x| > 1.  */
11749     TEST_ff_f (pow, 1.5, plus_infty, plus_infty),
11750
11751     /* pow (x, +inf) == +0 for |x| < 1.  */
11752     TEST_ff_f (pow, 0.5, plus_infty, 0.0),
11753
11754     /* pow (x, -inf) == +0 for |x| > 1.  */
11755     TEST_ff_f (pow, 1.5, minus_infty, 0.0),
11756
11757     /* pow (x, -inf) == +inf for |x| < 1.  */
11758     TEST_ff_f (pow, 0.5, minus_infty, plus_infty),
11759 #endif
11760
11761     /* pow (+inf, y) == +inf for y > 0.  */
11762     TEST_ff_f (pow, plus_infty, 2, plus_infty),
11763     TEST_ff_f (pow, plus_infty, 0xffffff, plus_infty),
11764 #ifndef TEST_FLOAT
11765     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffp+52L, plus_infty),
11766 #endif
11767 #ifdef TEST_LDOUBLE
11768 # if LDBL_MANT_DIG >= 64
11769     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffffep+63L, plus_infty),
11770 # endif
11771 # if LDBL_MANT_DIG >= 106
11772     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, plus_infty),
11773 # endif
11774 # if LDBL_MANT_DIG >= 113
11775     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, plus_infty),
11776 # endif
11777 #endif
11778     TEST_ff_f (pow, plus_infty, 0x1p24, plus_infty),
11779     TEST_ff_f (pow, plus_infty, 0x1p127, plus_infty),
11780     TEST_ff_f (pow, plus_infty, max_value, plus_infty),
11781
11782     /* pow (+inf, y) == +0 for y < 0.  */
11783     TEST_ff_f (pow, plus_infty, -1, 0.0),
11784     TEST_ff_f (pow, plus_infty, -0xffffff, 0.0),
11785 #ifndef TEST_FLOAT
11786     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffp+52L, 0.0),
11787 #endif
11788 #ifdef TEST_LDOUBLE
11789 # if LDBL_MANT_DIG >= 64
11790     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffffep+63L, 0.0),
11791 # endif
11792 # if LDBL_MANT_DIG >= 106
11793     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
11794 # endif
11795 # if LDBL_MANT_DIG >= 113
11796     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
11797 # endif
11798 #endif
11799     TEST_ff_f (pow, plus_infty, -0x1p24, 0.0),
11800     TEST_ff_f (pow, plus_infty, -0x1p127, 0.0),
11801     TEST_ff_f (pow, plus_infty, -max_value, 0.0),
11802
11803     /* pow (-inf, y) == -inf for y an odd integer > 0.  */
11804     TEST_ff_f (pow, minus_infty, 27, minus_infty),
11805     TEST_ff_f (pow, minus_infty, 0xffffff, minus_infty),
11806     TEST_ff_f (pow, minus_infty, 0x1fffffe, plus_infty),
11807 #ifndef TEST_FLOAT
11808     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+52L, minus_infty),
11809     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+53L, plus_infty),
11810 #endif
11811 #ifdef TEST_LDOUBLE
11812 # if LDBL_MANT_DIG >= 64
11813     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+63L, minus_infty),
11814     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+64L, plus_infty),
11815 # endif
11816 # if LDBL_MANT_DIG >= 106
11817     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty),
11818     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty),
11819 # endif
11820 # if LDBL_MANT_DIG >= 113
11821     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty),
11822     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty),
11823 # endif
11824 #endif
11825
11826     /* pow (-inf, y) == +inf for y > 0 and not an odd integer.  */
11827     TEST_ff_f (pow, minus_infty, 28, plus_infty),
11828     TEST_ff_f (pow, minus_infty, 0x1p24, plus_infty),
11829     TEST_ff_f (pow, minus_infty, 0x1p127, plus_infty),
11830     TEST_ff_f (pow, minus_infty, max_value, plus_infty),
11831
11832     /* pow (-inf, y) == -0 for y an odd integer < 0. */
11833     TEST_ff_f (pow, minus_infty, -3, minus_zero),
11834     TEST_ff_f (pow, minus_infty, -0xffffff, minus_zero),
11835     TEST_ff_f (pow, minus_infty, -0x1fffffe, plus_zero),
11836 #ifndef TEST_FLOAT
11837     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+52L, minus_zero),
11838     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+53L, plus_zero),
11839 #endif
11840 #ifdef TEST_LDOUBLE
11841 # if LDBL_MANT_DIG >= 64
11842     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+63L, minus_zero),
11843     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+64L, plus_zero),
11844 # endif
11845 # if LDBL_MANT_DIG >= 106
11846     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
11847     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
11848 # endif
11849 # if LDBL_MANT_DIG >= 113
11850     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
11851     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
11852 # endif
11853 #endif
11854     /* pow (-inf, y) == +0 for y < 0 and not an odd integer.  */
11855     TEST_ff_f (pow, minus_infty, -2.0, 0.0),
11856     TEST_ff_f (pow, minus_infty, -0x1p24, 0.0),
11857     TEST_ff_f (pow, minus_infty, -0x1p127, 0.0),
11858     TEST_ff_f (pow, minus_infty, -max_value, 0.0),
11859
11860     /* pow (+0, y) == +0 for y an odd integer > 0.  */
11861     TEST_ff_f (pow, 0.0, 27, 0.0),
11862     TEST_ff_f (pow, 0.0, 0xffffff, 0.0),
11863 #ifndef TEST_FLOAT
11864     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffp+52L, 0.0),
11865 #endif
11866 #ifdef TEST_LDOUBLE
11867 # if LDBL_MANT_DIG >= 64
11868     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffffep+63L, 0.0),
11869 # endif
11870 # if LDBL_MANT_DIG >= 106
11871     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
11872 # endif
11873 # if LDBL_MANT_DIG >= 113
11874     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
11875 # endif
11876 #endif
11877
11878     /* pow (-0, y) == -0 for y an odd integer > 0.  */
11879     TEST_ff_f (pow, minus_zero, 27, minus_zero),
11880     TEST_ff_f (pow, minus_zero, 0xffffff, minus_zero),
11881     TEST_ff_f (pow, minus_zero, 0x1fffffe, plus_zero),
11882 #ifndef TEST_FLOAT
11883     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+52L, minus_zero),
11884     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+53L, plus_zero),
11885 #endif
11886 #ifdef TEST_LDOUBLE
11887 # if LDBL_MANT_DIG >= 64
11888     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+63L, minus_zero),
11889     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+64L, plus_zero),
11890 # endif
11891 # if LDBL_MANT_DIG >= 106
11892     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
11893     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
11894 # endif
11895 # if LDBL_MANT_DIG >= 113
11896     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
11897     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
11898 # endif
11899 #endif
11900
11901     /* pow (+0, y) == +0 for y > 0 and not an odd integer.  */
11902     TEST_ff_f (pow, 0.0, 4, 0.0),
11903     TEST_ff_f (pow, 0.0, 0x1p24, 0.0),
11904     TEST_ff_f (pow, 0.0, 0x1p127, 0.0),
11905     TEST_ff_f (pow, 0.0, max_value, 0.0),
11906     TEST_ff_f (pow, 0.0, min_subnorm_value, 0.0),
11907
11908     /* pow (-0, y) == +0 for y > 0 and not an odd integer.  */
11909     TEST_ff_f (pow, minus_zero, 4, 0.0),
11910     TEST_ff_f (pow, minus_zero, 0x1p24, 0.0),
11911     TEST_ff_f (pow, minus_zero, 0x1p127, 0.0),
11912     TEST_ff_f (pow, minus_zero, max_value, 0.0),
11913     TEST_ff_f (pow, minus_zero, min_subnorm_value, 0.0),
11914
11915     TEST_ff_f (pow, 16, 0.25L, 2),
11916     TEST_ff_f (pow, 0x1p64L, 0.125L, 256),
11917     TEST_ff_f (pow, 2, 4, 16),
11918     TEST_ff_f (pow, 256, 8, 0x1p64L),
11919
11920     TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L),
11921
11922 #if defined TEST_DOUBLE || defined TEST_LDOUBLE
11923     TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION),
11924 #endif
11925
11926     TEST_ff_f (pow, -1.0, -0xffffff, -1.0),
11927     TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0),
11928 #ifndef TEST_FLOAT
11929     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+52L, -1.0),
11930     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+53L, 1.0),
11931 #endif
11932 #ifdef TEST_LDOUBLE
11933 # if LDBL_MANT_DIG >= 64
11934     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+63L, -1.0),
11935     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+64L, 1.0),
11936 # endif
11937 # if LDBL_MANT_DIG >= 106
11938     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
11939     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
11940 # endif
11941 # if LDBL_MANT_DIG >= 113
11942     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
11943     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
11944 # endif
11945 #endif
11946     TEST_ff_f (pow, -1.0, -max_value, 1.0),
11947
11948     TEST_ff_f (pow, -1.0, 0xffffff, -1.0),
11949     TEST_ff_f (pow, -1.0, 0x1fffffe, 1.0),
11950 #ifndef TEST_FLOAT
11951     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+52L, -1.0),
11952     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+53L, 1.0),
11953 #endif
11954 #ifdef TEST_LDOUBLE
11955 # if LDBL_MANT_DIG >= 64
11956     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+63L, -1.0),
11957     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+64L, 1.0),
11958 # endif
11959 # if LDBL_MANT_DIG >= 106
11960     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
11961     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
11962 # endif
11963 # if LDBL_MANT_DIG >= 113
11964     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
11965     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
11966 # endif
11967 #endif
11968     TEST_ff_f (pow, -1.0, max_value, 1.0),
11969
11970     TEST_ff_f (pow, -2.0, 126, 0x1p126),
11971     TEST_ff_f (pow, -2.0, 127, -0x1p127),
11972     /* Allow inexact results for float to be considered to underflow.  */
11973     TEST_ff_f (pow, -2.0, -126, 0x1p-126, UNDERFLOW_EXCEPTION_OK_FLOAT),
11974     TEST_ff_f (pow, -2.0, -127, -0x1p-127, UNDERFLOW_EXCEPTION_OK_FLOAT),
11975
11976     TEST_ff_f (pow, -2.0, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
11977     TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
11978 #ifndef TEST_FLOAT
11979     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
11980     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
11981 #endif
11982 #ifdef TEST_LDOUBLE
11983 # if LDBL_MANT_DIG >= 64
11984     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
11985     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
11986 # endif
11987 # if LDBL_MANT_DIG >= 106
11988     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
11989     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
11990 # endif
11991 # if LDBL_MANT_DIG >= 113
11992     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
11993     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
11994 # endif
11995 #endif
11996     TEST_ff_f (pow, -2.0, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
11997
11998     TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
11999     TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12000 #ifndef TEST_FLOAT
12001     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12002     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12003 #endif
12004 #ifdef TEST_LDOUBLE
12005 # if LDBL_MANT_DIG >= 64
12006     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12007     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12008 # endif
12009 # if LDBL_MANT_DIG >= 106
12010     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12011     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12012 # endif
12013 # if LDBL_MANT_DIG >= 113
12014     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12015     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12016 # endif
12017 #endif
12018     TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12019
12020     TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12021     TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12022     TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12023     TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
12024     TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
12025     TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12026     TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12027
12028     TEST_ff_f (pow, -max_value, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12029     TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12030 #ifndef TEST_FLOAT
12031     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12032     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12033 #endif
12034 #ifdef TEST_LDOUBLE
12035 # if LDBL_MANT_DIG >= 64
12036     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12037     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12038 # endif
12039 # if LDBL_MANT_DIG >= 106
12040     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12041     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12042 # endif
12043 # if LDBL_MANT_DIG >= 113
12044     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12045     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12046 # endif
12047 #endif
12048     TEST_ff_f (pow, -max_value, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12049
12050     TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12051     TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12052 #ifndef TEST_FLOAT
12053     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12054     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12055 #endif
12056 #ifdef TEST_LDOUBLE
12057 # if LDBL_MANT_DIG >= 64
12058     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12059     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12060 # endif
12061 # if LDBL_MANT_DIG >= 106
12062     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12063     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12064 # endif
12065 # if LDBL_MANT_DIG >= 113
12066     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12067     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12068 # endif
12069 #endif
12070     TEST_ff_f (pow, -max_value, max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12071
12072     TEST_ff_f (pow, -0.5, 126, 0x1p-126),
12073     TEST_ff_f (pow, -0.5, 127, -0x1p-127),
12074     TEST_ff_f (pow, -0.5, -126, 0x1p126),
12075     TEST_ff_f (pow, -0.5, -127, -0x1p127),
12076
12077     TEST_ff_f (pow, -0.5, -0xffffff, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12078     TEST_ff_f (pow, -0.5, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12079 #ifndef TEST_FLOAT
12080     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12081     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12082 #endif
12083 #ifdef TEST_LDOUBLE
12084 # if LDBL_MANT_DIG >= 64
12085     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12086     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12087 # endif
12088 # if LDBL_MANT_DIG >= 106
12089     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12090     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12091 # endif
12092 # if LDBL_MANT_DIG >= 113
12093     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12094     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12095 # endif
12096 #endif
12097     TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12098
12099     TEST_ff_f (pow, -0.5, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12100     TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12101 #ifndef TEST_FLOAT
12102     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12103     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12104 #endif
12105 #ifdef TEST_LDOUBLE
12106 # if LDBL_MANT_DIG >= 64
12107     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12108     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12109 # endif
12110 # if LDBL_MANT_DIG >= 106
12111     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12112     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12113 # endif
12114 # if LDBL_MANT_DIG >= 113
12115     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12116     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12117 # endif
12118 #endif
12119     TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12120
12121     TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12122     TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12123     TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12124     TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12125     TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12126     /* Allow inexact results to be considered to underflow.  */
12127     TEST_ff_f (pow, -min_value, 1, -min_value, UNDERFLOW_EXCEPTION_OK),
12128     TEST_ff_f (pow, -min_value, 2, plus_zero, UNDERFLOW_EXCEPTION),
12129     TEST_ff_f (pow, -min_value, 3, minus_zero, UNDERFLOW_EXCEPTION),
12130
12131     TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12132     TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12133 #ifndef TEST_FLOAT
12134     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12135     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12136 #endif
12137 #ifdef TEST_LDOUBLE
12138 # if LDBL_MANT_DIG >= 64
12139     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12140     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12141 # endif
12142 # if LDBL_MANT_DIG >= 106
12143     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12144     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12145 # endif
12146 # if LDBL_MANT_DIG >= 113
12147     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12148     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12149 # endif
12150 #endif
12151     TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
12152
12153     TEST_ff_f (pow, -min_value, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12154     TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12155 #ifndef TEST_FLOAT
12156     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12157     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12158 #endif
12159 #ifdef TEST_LDOUBLE
12160 # if LDBL_MANT_DIG >= 64
12161     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12162     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12163 # endif
12164 # if LDBL_MANT_DIG >= 106
12165     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12166     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12167 # endif
12168 # if LDBL_MANT_DIG >= 113
12169     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12170     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12171 # endif
12172 #endif
12173     TEST_ff_f (pow, -min_value, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12174
12175     TEST_ff_f (pow, 0x0.ffffffp0, 10, 0.999999403953712118183885036774764444747L),
12176     TEST_ff_f (pow, 0x0.ffffffp0, 100, 0.999994039553108359406305079606228341585L),
12177     TEST_ff_f (pow, 0x0.ffffffp0, 1000, 0.9999403971297699052276650144650733772182L),
12178     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p24, 0.3678794302077803437135155590023422899744L),
12179     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p30, 1.603807831524924233828134753069728224044e-28L),
12180     TEST_ff_f (pow, 0x0.ffffffp0, 0x1.234566p30, 2.374884712135295099971443365381007297732e-32L),
12181     TEST_ff_f (pow, 0x0.ffffffp0, -10, 1.000000596046643153205170848674671339688L),
12182     TEST_ff_f (pow, 0x0.ffffffp0, -100, 1.000005960482418779499387594989252621451L),
12183     TEST_ff_f (pow, 0x0.ffffffp0, -1000, 1.000059606422943986382898964231519867906L),
12184     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p24, 2.7182819094701610539628664526874952929416L),
12185     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p30, 6.2351609734265057988914412331288163636075e+27L),
12186     TEST_ff_f (pow, 0x0.ffffffp0, -0x1.234566p30, 4.2107307141696353498921307077142537353515e+31L),
12187     TEST_ff_f (pow, 0x1.000002p0, 0x1p24, 7.3890552180866447284268641248075832310141L),
12188     TEST_ff_f (pow, 0x1.000002p0, 0x1.234566p29, 4.2107033006507495188536371520637025716256e+31L),
12189     TEST_ff_f (pow, 0x1.000002p0, -0x1.234566p29, 2.3749001736727769098946062325205705312166e-32L),
12190
12191 #if !defined TEST_FLOAT
12192     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, 0x1.23456789abcdfp62L, 1.0118762747827252817436395051178295138220e-253L),
12193     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, -0x1.23456789abcdfp62L, 9.8826311568054561811190162420900667121992e+252L),
12194     TEST_ff_f (pow, 0x1.0000000000001p0L, 0x1.23456789abcdfp61L, 9.8826311568044974397135026217687399395481e+252L),
12195     TEST_ff_f (pow, 0x1.0000000000001p0L, -0x1.23456789abcdfp61L, 1.0118762747828234466621210689458255908670e-253L),
12196 #endif
12197
12198 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 && LDBL_MAX_EXP >= 16384
12199     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, 0x1.23456789abcdef0ep77L, 1.2079212226420368189981778807634890018840e-4048L),
12200     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, -0x1.23456789abcdef0ep77L, 8.2786855736563746280496724205839522148001e+4047L),
12201     TEST_ff_f (pow, 0x1.0000000000000002p0L, 0x1.23456789abcdef0ep76L, 8.2786855736563683535324500168799315131570e+4047L),
12202     TEST_ff_f (pow, 0x1.0000000000000002p0L, -0x1.23456789abcdef0ep76L, 1.2079212226420377344964713407722652880280e-4048L),
12203 #endif
12204
12205 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
12206     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.23456789abcdef0123456789abcdp126L, 1.2079212226420440237790185999151440179953e-4048L),
12207     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.23456789abcdef0123456789abcdp126L, 8.2786855736563252489063231915535105363602e+4047L),
12208     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, 0x1.23456789abcdef0123456789abcdp125L, 8.2786855736563252489063231915423647547782e+4047L),
12209     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, -0x1.23456789abcdef0123456789abcdp125L, 1.2079212226420440237790185999167702696503e-4048L),
12210 #endif
12211
12212 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
12213     TEST_ff_f (pow, 1e4932L, 0.75L, 1e3699L),
12214     TEST_ff_f (pow, 1e4928L, 0.75L, 1e3696L),
12215     TEST_ff_f (pow, 1e4924L, 0.75L, 1e3693L),
12216     TEST_ff_f (pow, 1e4920L, 0.75L, 1e3690L),
12217     TEST_ff_f (pow, 10.0L, 4932.0L, 1e4932L),
12218     TEST_ff_f (pow, 10.0L, 4931.0L, 1e4931L),
12219     TEST_ff_f (pow, 10.0L, 4930.0L, 1e4930L),
12220     TEST_ff_f (pow, 10.0L, 4929.0L, 1e4929L),
12221     TEST_ff_f (pow, 10.0L, -4931.0L, 1e-4931L),
12222     TEST_ff_f (pow, 10.0L, -4930.0L, 1e-4930L),
12223     TEST_ff_f (pow, 10.0L, -4929.0L, 1e-4929L),
12224     TEST_ff_f (pow, 1e27L, 182.0L, 1e4914L),
12225     TEST_ff_f (pow, 1e27L, -182.0L, 1e-4914L),
12226 #endif
12227
12228     TEST_ff_f (pow, min_subnorm_value, min_subnorm_value, 1.0L),
12229     TEST_ff_f (pow, min_subnorm_value, -min_subnorm_value, 1.0L),
12230     TEST_ff_f (pow, max_value, min_subnorm_value, 1.0L),
12231     TEST_ff_f (pow, max_value, -min_subnorm_value, 1.0L),
12232     TEST_ff_f (pow, 0.99L, min_subnorm_value, 1.0L),
12233     TEST_ff_f (pow, 0.99L, -min_subnorm_value, 1.0L),
12234     TEST_ff_f (pow, 1.01L, min_subnorm_value, 1.0L),
12235     TEST_ff_f (pow, 1.01L, -min_subnorm_value, 1.0L),
12236
12237     TEST_ff_f (pow, 2.0L, -100000.0L, plus_zero, UNDERFLOW_EXCEPTION),
12238   };
12239
12240 static void
12241 pow_test (void)
12242 {
12243
12244   START (pow);
12245   RUN_TEST_LOOP_ff_f (pow, pow_test_data, );
12246   END;
12247 }
12248
12249
12250 static const struct test_ff_f_data pow_tonearest_test_data[] =
12251   {
12252     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12253     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12254   };
12255
12256 static void
12257 pow_test_tonearest (void)
12258 {
12259   START (pow_tonearest);
12260   RUN_TEST_LOOP_ff_f (pow, pow_tonearest_test_data, FE_TONEAREST);
12261   END;
12262 }
12263
12264
12265 static const struct test_ff_f_data pow_towardzero_test_data[] =
12266   {
12267     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12268     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12269   };
12270
12271 static void
12272 pow_test_towardzero (void)
12273 {
12274   START (pow_towardzero);
12275   RUN_TEST_LOOP_ff_f (pow, pow_towardzero_test_data, FE_TOWARDZERO);
12276   END;
12277 }
12278
12279
12280 static const struct test_ff_f_data pow_downward_test_data[] =
12281   {
12282     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12283     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12284   };
12285
12286 static void
12287 pow_test_downward (void)
12288 {
12289   START (pow_downward);
12290   RUN_TEST_LOOP_ff_f (pow, pow_downward_test_data, FE_DOWNWARD);
12291   END;
12292 }
12293
12294
12295 static const struct test_ff_f_data pow_upward_test_data[] =
12296   {
12297     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12298     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12299   };
12300
12301 static void
12302 pow_test_upward (void)
12303 {
12304   START (pow_upward);
12305   RUN_TEST_LOOP_ff_f (pow, pow_upward_test_data, FE_UPWARD);
12306   END;
12307 }
12308
12309
12310 static const struct test_ff_f_data remainder_test_data[] =
12311   {
12312     TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12313     TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12314     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12315     TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12316     TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12317     TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12318     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12319     TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12320     TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12321     TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12322     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12323     TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12324     TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12325
12326     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12327     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12328
12329     TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION),
12330     TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION),
12331     TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION),
12332     TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION),
12333     TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION),
12334     TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION),
12335 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 56
12336     TEST_ff_f (remainder, -0x1.80000000000002p1L, 2.0, 0x1.fffffffffffff8p-1L, NO_INEXACT_EXCEPTION),
12337 #endif
12338   };
12339
12340 static void
12341 remainder_test (void)
12342 {
12343   START (remainder);
12344   RUN_TEST_LOOP_ff_f (remainder, remainder_test_data, );
12345   END;
12346 }
12347
12348 static void
12349 drem_test (void)
12350 {
12351   START (drem);
12352   /* drem uses the same test data as remainder.  */
12353   RUN_TEST_LOOP_ff_f (drem, remainder_test_data, );
12354   END;
12355 }
12356
12357
12358 static const struct test_ff_f_data remainder_tonearest_test_data[] =
12359   {
12360     TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12361     TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12362     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12363     TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12364     TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12365     TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12366     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12367     TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12368     TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12369     TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12370     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12371     TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12372     TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12373
12374     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12375     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12376
12377     TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION),
12378     TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION),
12379     TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION),
12380     TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION),
12381     TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION),
12382     TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION),
12383   };
12384
12385 static void
12386 remainder_test_tonearest (void)
12387 {
12388   START (remainder_tonearest);
12389   RUN_TEST_LOOP_ff_f (remainder, remainder_tonearest_test_data, FE_TONEAREST);
12390   END;
12391 }
12392
12393 static void
12394 drem_test_tonearest (void)
12395 {
12396   START (drem_tonearest);
12397   /* drem uses the same test data as remainder.  */
12398   RUN_TEST_LOOP_ff_f (drem, remainder_tonearest_test_data, FE_TONEAREST);
12399   END;
12400 }
12401
12402
12403 static const struct test_ff_f_data remainder_towardzero_test_data[] =
12404   {
12405     TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12406     TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12407     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12408     TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12409     TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12410     TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12411     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12412     TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12413     TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12414     TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12415     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12416     TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12417     TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12418
12419     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12420     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12421
12422     TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION),
12423     TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION),
12424     TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION),
12425     TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION),
12426     TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION),
12427     TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION),
12428   };
12429
12430 static void
12431 remainder_test_towardzero (void)
12432 {
12433   START (remainder_towardzero);
12434   RUN_TEST_LOOP_ff_f (remainder, remainder_towardzero_test_data, FE_TOWARDZERO);
12435   END;
12436 }
12437
12438 static void
12439 drem_test_towardzero (void)
12440 {
12441   START (drem_towardzero);
12442   /* drem uses the same test data as remainder.  */
12443   RUN_TEST_LOOP_ff_f (drem, remainder_towardzero_test_data, FE_TOWARDZERO);
12444   END;
12445 }
12446
12447
12448 static const struct test_ff_f_data remainder_downward_test_data[] =
12449   {
12450     TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12451     TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12452     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12453     TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12454     TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12455     TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12456     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12457     TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12458     TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12459     TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12460     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12461     TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12462     TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12463
12464     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12465     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12466
12467     TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION),
12468     TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION),
12469     TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION),
12470     TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION),
12471     TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION),
12472     TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION),
12473   };
12474
12475 static void
12476 remainder_test_downward (void)
12477 {
12478   START (remainder_downward);
12479   RUN_TEST_LOOP_ff_f (remainder, remainder_downward_test_data, FE_DOWNWARD);
12480   END;
12481 }
12482
12483 static void
12484 drem_test_downward (void)
12485 {
12486   START (drem_downward);
12487   /* drem uses the same test data as remainder.  */
12488   RUN_TEST_LOOP_ff_f (drem, remainder_downward_test_data, FE_DOWNWARD);
12489   END;
12490 }
12491
12492
12493 static const struct test_ff_f_data remainder_upward_test_data[] =
12494   {
12495     TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12496     TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12497     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12498     TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12499     TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12500     TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12501     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12502     TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12503     TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12504     TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
12505     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12506     TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12507     TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12508
12509     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12510     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
12511
12512     TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION),
12513     TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION),
12514     TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION),
12515     TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION),
12516     TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION),
12517     TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION),
12518   };
12519
12520 static void
12521 remainder_test_upward (void)
12522 {
12523   START (remainder_upward);
12524   RUN_TEST_LOOP_ff_f (remainder, remainder_upward_test_data, FE_UPWARD);
12525   END;
12526 }
12527
12528 static void
12529 drem_test_upward (void)
12530 {
12531   START (drem_upward);
12532   /* drem uses the same test data as remainder.  */
12533   RUN_TEST_LOOP_ff_f (drem, remainder_upward_test_data, FE_UPWARD);
12534   END;
12535 }
12536
12537 static const struct test_ffI_f1_data remquo_test_data[] =
12538   {
12539     TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
12540     TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
12541     TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
12542     TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
12543     TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE, NO_INEXACT_EXCEPTION),
12544
12545     TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2, NO_INEXACT_EXCEPTION),
12546     TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2, NO_INEXACT_EXCEPTION),
12547     TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2, NO_INEXACT_EXCEPTION),
12548     TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2, NO_INEXACT_EXCEPTION),
12549
12550     TEST_ffI_f1 (remquo, 5, 2, 1, 2, NO_INEXACT_EXCEPTION),
12551     TEST_ffI_f1 (remquo, 3, 2, -1, 2, NO_INEXACT_EXCEPTION),
12552   };
12553
12554 static void
12555 remquo_test (void)
12556 {
12557   /* x is needed.  */
12558   int x;
12559
12560   START (remquo);
12561   RUN_TEST_LOOP_ffI_f1 (remquo, remquo_test_data, , x);
12562   END;
12563 }
12564
12565 static const struct test_f_f_data rint_test_data[] =
12566   {
12567     /* TODO: missing qNaN tests.  */
12568
12569     TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
12570     TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
12571     TEST_f_f (rint, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
12572     TEST_f_f (rint, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
12573
12574     /* Default rounding mode is round to even.  */
12575     TEST_f_f (rint, 0.5, 0.0, INEXACT_EXCEPTION),
12576     TEST_f_f (rint, 1.5, 2.0, INEXACT_EXCEPTION),
12577     TEST_f_f (rint, 2.5, 2.0, INEXACT_EXCEPTION),
12578     TEST_f_f (rint, 3.5, 4.0, INEXACT_EXCEPTION),
12579     TEST_f_f (rint, 4.5, 4.0, INEXACT_EXCEPTION),
12580     TEST_f_f (rint, -0.5, -0.0, INEXACT_EXCEPTION),
12581     TEST_f_f (rint, -1.5, -2.0, INEXACT_EXCEPTION),
12582     TEST_f_f (rint, -2.5, -2.0, INEXACT_EXCEPTION),
12583     TEST_f_f (rint, -3.5, -4.0, INEXACT_EXCEPTION),
12584     TEST_f_f (rint, -4.5, -4.0, INEXACT_EXCEPTION),
12585     TEST_f_f (rint, 0.1, 0.0, INEXACT_EXCEPTION),
12586     TEST_f_f (rint, 0.25, 0.0, INEXACT_EXCEPTION),
12587     TEST_f_f (rint, 0.625, 1.0, INEXACT_EXCEPTION),
12588     TEST_f_f (rint, -0.1, -0.0, INEXACT_EXCEPTION),
12589     TEST_f_f (rint, -0.25, -0.0, INEXACT_EXCEPTION),
12590     TEST_f_f (rint, -0.625, -1.0, INEXACT_EXCEPTION),
12591     TEST_f_f (rint, 262144.75, 262145.0, INEXACT_EXCEPTION),
12592     TEST_f_f (rint, 262142.75, 262143.0, INEXACT_EXCEPTION),
12593     TEST_f_f (rint, 524286.75, 524287.0, INEXACT_EXCEPTION),
12594     TEST_f_f (rint, 524288.75, 524289.0, INEXACT_EXCEPTION),
12595     TEST_f_f (rint, 1048576.75, 1048577.0, INEXACT_EXCEPTION),
12596     TEST_f_f (rint, 2097152.75, 2097153.0, INEXACT_EXCEPTION),
12597     TEST_f_f (rint, -1048576.75, -1048577.0, INEXACT_EXCEPTION),
12598     TEST_f_f (rint, -2097152.75, -2097153.0, INEXACT_EXCEPTION),
12599 #ifndef TEST_FLOAT
12600     TEST_f_f (rint, 70368744177664.75, 70368744177665.0, INEXACT_EXCEPTION),
12601     TEST_f_f (rint, 140737488355328.75, 140737488355329.0, INEXACT_EXCEPTION),
12602     TEST_f_f (rint, 281474976710656.75, 281474976710657.0, INEXACT_EXCEPTION),
12603     TEST_f_f (rint, 562949953421312.75, 562949953421313.0, INEXACT_EXCEPTION),
12604     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0, INEXACT_EXCEPTION),
12605     TEST_f_f (rint, -70368744177664.75, -70368744177665.0, INEXACT_EXCEPTION),
12606     TEST_f_f (rint, -140737488355328.75, -140737488355329.0, INEXACT_EXCEPTION),
12607     TEST_f_f (rint, -281474976710656.75, -281474976710657.0, INEXACT_EXCEPTION),
12608     TEST_f_f (rint, -562949953421312.75, -562949953421313.0, INEXACT_EXCEPTION),
12609     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0, INEXACT_EXCEPTION),
12610 #endif
12611 #ifdef TEST_LDOUBLE
12612     /* The result can only be represented in long double.  */
12613     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
12614     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L, INEXACT_EXCEPTION),
12615     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
12616     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L, INEXACT_EXCEPTION),
12617     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L, INEXACT_EXCEPTION),
12618
12619 # if LDBL_MANT_DIG > 100
12620     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
12621     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
12622     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L, INEXACT_EXCEPTION),
12623 # endif
12624
12625     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
12626     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L, INEXACT_EXCEPTION),
12627     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
12628     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L, INEXACT_EXCEPTION),
12629     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L, INEXACT_EXCEPTION),
12630
12631 # if LDBL_MANT_DIG > 100
12632     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
12633     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
12634     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L, INEXACT_EXCEPTION),
12635
12636     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
12637     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12638     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12639     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12640     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12641     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L, INEXACT_EXCEPTION),
12642
12643     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
12644     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
12645     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
12646     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
12647     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
12648     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L, INEXACT_EXCEPTION),
12649 # endif
12650
12651     TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L, INEXACT_EXCEPTION),
12652     TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L, INEXACT_EXCEPTION),
12653     TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L, INEXACT_EXCEPTION),
12654     TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L, INEXACT_EXCEPTION),
12655     TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L, INEXACT_EXCEPTION),
12656
12657     TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L, INEXACT_EXCEPTION),
12658     TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L, INEXACT_EXCEPTION),
12659     TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L, INEXACT_EXCEPTION),
12660     TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L, INEXACT_EXCEPTION),
12661     TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L, INEXACT_EXCEPTION),
12662
12663     TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L, INEXACT_EXCEPTION),
12664     TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L, INEXACT_EXCEPTION),
12665     TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L, INEXACT_EXCEPTION),
12666     TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L, INEXACT_EXCEPTION),
12667     TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L, INEXACT_EXCEPTION),
12668
12669     TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L, INEXACT_EXCEPTION),
12670     TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L, INEXACT_EXCEPTION),
12671     TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L, INEXACT_EXCEPTION),
12672     TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L, INEXACT_EXCEPTION),
12673     TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L, INEXACT_EXCEPTION),
12674
12675 # if LDBL_MANT_DIG > 100
12676     TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L, INEXACT_EXCEPTION),
12677     TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L, INEXACT_EXCEPTION),
12678     TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L, INEXACT_EXCEPTION),
12679     TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L, INEXACT_EXCEPTION),
12680     TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L, INEXACT_EXCEPTION),
12681 # endif
12682 #endif
12683   };
12684
12685 static void
12686 rint_test (void)
12687 {
12688   START (rint);
12689   RUN_TEST_LOOP_f_f (rint, rint_test_data, );
12690   END;
12691 }
12692
12693 static const struct test_f_f_data rint_tonearest_test_data[] =
12694   {
12695     TEST_f_f (rint, 2.0, 2.0, NO_INEXACT_EXCEPTION),
12696     TEST_f_f (rint, 1.5, 2.0, INEXACT_EXCEPTION),
12697     TEST_f_f (rint, 1.0, 1.0, NO_INEXACT_EXCEPTION),
12698     TEST_f_f (rint, 0.5, 0.0, INEXACT_EXCEPTION),
12699     TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
12700     TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
12701     TEST_f_f (rint, -0.5, -0.0, INEXACT_EXCEPTION),
12702     TEST_f_f (rint, -1.0, -1.0, NO_INEXACT_EXCEPTION),
12703     TEST_f_f (rint, -1.5, -2.0, INEXACT_EXCEPTION),
12704     TEST_f_f (rint, -2.0, -2.0, NO_INEXACT_EXCEPTION),
12705     TEST_f_f (rint, 0.1, 0.0, INEXACT_EXCEPTION),
12706     TEST_f_f (rint, 0.25, 0.0, INEXACT_EXCEPTION),
12707     TEST_f_f (rint, 0.625, 1.0, INEXACT_EXCEPTION),
12708     TEST_f_f (rint, -0.1, -0.0, INEXACT_EXCEPTION),
12709     TEST_f_f (rint, -0.25, -0.0, INEXACT_EXCEPTION),
12710     TEST_f_f (rint, -0.625, -1.0, INEXACT_EXCEPTION),
12711     TEST_f_f (rint, 1048576.75, 1048577.0, INEXACT_EXCEPTION),
12712     TEST_f_f (rint, 2097152.75, 2097153.0, INEXACT_EXCEPTION),
12713     TEST_f_f (rint, -1048576.75, -1048577.0, INEXACT_EXCEPTION),
12714     TEST_f_f (rint, -2097152.75, -2097153.0, INEXACT_EXCEPTION),
12715 #ifndef TEST_FLOAT
12716     TEST_f_f (rint, 70368744177664.75, 70368744177665.0, INEXACT_EXCEPTION),
12717     TEST_f_f (rint, 140737488355328.75, 140737488355329.0, INEXACT_EXCEPTION),
12718     TEST_f_f (rint, 281474976710656.75, 281474976710657.0, INEXACT_EXCEPTION),
12719     TEST_f_f (rint, 562949953421312.75, 562949953421313.0, INEXACT_EXCEPTION),
12720     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0, INEXACT_EXCEPTION),
12721     TEST_f_f (rint, -70368744177664.75, -70368744177665.0, INEXACT_EXCEPTION),
12722     TEST_f_f (rint, -140737488355328.75, -140737488355329.0, INEXACT_EXCEPTION),
12723     TEST_f_f (rint, -281474976710656.75, -281474976710657.0, INEXACT_EXCEPTION),
12724     TEST_f_f (rint, -562949953421312.75, -562949953421313.0, INEXACT_EXCEPTION),
12725     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0, INEXACT_EXCEPTION),
12726 #endif
12727 #ifdef TEST_LDOUBLE
12728     /* The result can only be represented in long double.  */
12729     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
12730     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L, INEXACT_EXCEPTION),
12731     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
12732     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L, INEXACT_EXCEPTION),
12733     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L, INEXACT_EXCEPTION),
12734 # if LDBL_MANT_DIG > 100
12735     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
12736     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
12737     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L, INEXACT_EXCEPTION),
12738 # endif
12739     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
12740     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L, INEXACT_EXCEPTION),
12741     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
12742     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L, INEXACT_EXCEPTION),
12743     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L, INEXACT_EXCEPTION),
12744 # if LDBL_MANT_DIG > 100
12745     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
12746     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
12747     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L, INEXACT_EXCEPTION),
12748
12749     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
12750     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12751     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12752     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12753     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12754     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L, INEXACT_EXCEPTION),
12755
12756     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
12757     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
12758     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
12759     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
12760     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
12761     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L, INEXACT_EXCEPTION),
12762 # endif
12763 #endif
12764   };
12765
12766 static void
12767 rint_test_tonearest (void)
12768 {
12769   START (rint_tonearest);
12770   RUN_TEST_LOOP_f_f (rint, rint_tonearest_test_data, FE_TONEAREST);
12771   END;
12772 }
12773
12774 static const struct test_f_f_data rint_towardzero_test_data[] =
12775   {
12776     TEST_f_f (rint, 2.0, 2.0, NO_INEXACT_EXCEPTION),
12777     TEST_f_f (rint, 1.5, 1.0, INEXACT_EXCEPTION),
12778     TEST_f_f (rint, 1.0, 1.0, NO_INEXACT_EXCEPTION),
12779     TEST_f_f (rint, 0.5, 0.0, INEXACT_EXCEPTION),
12780     TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
12781     TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
12782     TEST_f_f (rint, -0.5, -0.0, INEXACT_EXCEPTION),
12783     TEST_f_f (rint, -1.0, -1.0, NO_INEXACT_EXCEPTION),
12784     TEST_f_f (rint, -1.5, -1.0, INEXACT_EXCEPTION),
12785     TEST_f_f (rint, -2.0, -2.0, NO_INEXACT_EXCEPTION),
12786     TEST_f_f (rint, 0.1, 0.0, INEXACT_EXCEPTION),
12787     TEST_f_f (rint, 0.25, 0.0, INEXACT_EXCEPTION),
12788     TEST_f_f (rint, 0.625, 0.0, INEXACT_EXCEPTION),
12789     TEST_f_f (rint, -0.1, -0.0, INEXACT_EXCEPTION),
12790     TEST_f_f (rint, -0.25, -0.0, INEXACT_EXCEPTION),
12791     TEST_f_f (rint, -0.625, -0.0, INEXACT_EXCEPTION),
12792     TEST_f_f (rint, 1048576.75, 1048576.0, INEXACT_EXCEPTION),
12793     TEST_f_f (rint, 2097152.75, 2097152.0, INEXACT_EXCEPTION),
12794     TEST_f_f (rint, -1048576.75, -1048576.0, INEXACT_EXCEPTION),
12795     TEST_f_f (rint, -2097152.75, -2097152.0, INEXACT_EXCEPTION),
12796 #ifndef TEST_FLOAT
12797     TEST_f_f (rint, 70368744177664.75, 70368744177664.0, INEXACT_EXCEPTION),
12798     TEST_f_f (rint, 140737488355328.75, 140737488355328.0, INEXACT_EXCEPTION),
12799     TEST_f_f (rint, 281474976710656.75, 281474976710656.0, INEXACT_EXCEPTION),
12800     TEST_f_f (rint, 562949953421312.75, 562949953421312.0, INEXACT_EXCEPTION),
12801     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0, INEXACT_EXCEPTION),
12802     TEST_f_f (rint, -70368744177664.75, -70368744177664.0, INEXACT_EXCEPTION),
12803     TEST_f_f (rint, -140737488355328.75, -140737488355328.0, INEXACT_EXCEPTION),
12804     TEST_f_f (rint, -281474976710656.75, -281474976710656.0, INEXACT_EXCEPTION),
12805     TEST_f_f (rint, -562949953421312.75, -562949953421312.0, INEXACT_EXCEPTION),
12806     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0, INEXACT_EXCEPTION),
12807 #endif
12808 #ifdef TEST_LDOUBLE
12809     /* The result can only be represented in long double.  */
12810     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L, INEXACT_EXCEPTION),
12811     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L, INEXACT_EXCEPTION),
12812     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
12813     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L, INEXACT_EXCEPTION),
12814     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L, INEXACT_EXCEPTION),
12815 # if LDBL_MANT_DIG > 100
12816     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L, INEXACT_EXCEPTION),
12817     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
12818     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
12819 # endif
12820     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L, INEXACT_EXCEPTION),
12821     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L, INEXACT_EXCEPTION),
12822     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
12823     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L, INEXACT_EXCEPTION),
12824     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L, INEXACT_EXCEPTION),
12825 # if LDBL_MANT_DIG > 100
12826     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L, INEXACT_EXCEPTION),
12827     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
12828     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
12829
12830     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
12831     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12832     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12833     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
12834     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12835     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12836
12837     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
12838     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
12839     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
12840     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
12841     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
12842     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
12843 # endif
12844 #endif
12845   };
12846
12847 static void
12848 rint_test_towardzero (void)
12849 {
12850   START (rint_towardzero);
12851   RUN_TEST_LOOP_f_f (rint, rint_towardzero_test_data, FE_TOWARDZERO);
12852   END;
12853 }
12854
12855 static const struct test_f_f_data rint_downward_test_data[] =
12856   {
12857     TEST_f_f (rint, 2.0, 2.0, NO_INEXACT_EXCEPTION),
12858     TEST_f_f (rint, 1.5, 1.0, INEXACT_EXCEPTION),
12859     TEST_f_f (rint, 1.0, 1.0, NO_INEXACT_EXCEPTION),
12860     TEST_f_f (rint, 0.5, 0.0, INEXACT_EXCEPTION),
12861     TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
12862     TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
12863     TEST_f_f (rint, -0.5, -1.0, INEXACT_EXCEPTION),
12864     TEST_f_f (rint, -1.0, -1.0, NO_INEXACT_EXCEPTION),
12865     TEST_f_f (rint, -1.5, -2.0, INEXACT_EXCEPTION),
12866     TEST_f_f (rint, -2.0, -2.0, NO_INEXACT_EXCEPTION),
12867     TEST_f_f (rint, 0.1, 0.0, INEXACT_EXCEPTION),
12868     TEST_f_f (rint, 0.25, 0.0, INEXACT_EXCEPTION),
12869     TEST_f_f (rint, 0.625, 0.0, INEXACT_EXCEPTION),
12870     TEST_f_f (rint, -0.1, -1.0, INEXACT_EXCEPTION),
12871     TEST_f_f (rint, -0.25, -1.0, INEXACT_EXCEPTION),
12872     TEST_f_f (rint, -0.625, -1.0, INEXACT_EXCEPTION),
12873     TEST_f_f (rint, 1048576.75, 1048576.0, INEXACT_EXCEPTION),
12874     TEST_f_f (rint, 2097152.75, 2097152.0, INEXACT_EXCEPTION),
12875     TEST_f_f (rint, -1048576.75, -1048577.0, INEXACT_EXCEPTION),
12876     TEST_f_f (rint, -2097152.75, -2097153.0, INEXACT_EXCEPTION),
12877 #ifndef TEST_FLOAT
12878     TEST_f_f (rint, 70368744177664.75, 70368744177664.0, INEXACT_EXCEPTION),
12879     TEST_f_f (rint, 140737488355328.75, 140737488355328.0, INEXACT_EXCEPTION),
12880     TEST_f_f (rint, 281474976710656.75, 281474976710656.0, INEXACT_EXCEPTION),
12881     TEST_f_f (rint, 562949953421312.75, 562949953421312.0, INEXACT_EXCEPTION),
12882     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0, INEXACT_EXCEPTION),
12883     TEST_f_f (rint, -70368744177664.75, -70368744177665.0, INEXACT_EXCEPTION),
12884     TEST_f_f (rint, -140737488355328.75, -140737488355329.0, INEXACT_EXCEPTION),
12885     TEST_f_f (rint, -281474976710656.75, -281474976710657.0, INEXACT_EXCEPTION),
12886     TEST_f_f (rint, -562949953421312.75, -562949953421313.0, INEXACT_EXCEPTION),
12887     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0, INEXACT_EXCEPTION),
12888 #endif
12889 #ifdef TEST_LDOUBLE
12890     /* The result can only be represented in long double.  */
12891     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L, INEXACT_EXCEPTION),
12892     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L, INEXACT_EXCEPTION),
12893     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
12894     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L, INEXACT_EXCEPTION),
12895     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L, INEXACT_EXCEPTION),
12896 # if LDBL_MANT_DIG > 100
12897     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L, INEXACT_EXCEPTION),
12898     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
12899     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
12900 # endif
12901     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
12902     TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L, INEXACT_EXCEPTION),
12903     TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L, INEXACT_EXCEPTION),
12904     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L, INEXACT_EXCEPTION),
12905     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L, INEXACT_EXCEPTION),
12906 # if LDBL_MANT_DIG > 100
12907     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
12908     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
12909     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L, INEXACT_EXCEPTION),
12910
12911     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
12912     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12913     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12914     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L, INEXACT_EXCEPTION),
12915     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12916     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12917
12918     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
12919     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
12920     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L, INEXACT_EXCEPTION),
12921     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
12922     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
12923     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L, INEXACT_EXCEPTION),
12924 # endif
12925 #endif
12926   };
12927
12928 static void
12929 rint_test_downward (void)
12930 {
12931   START (rint_downward);
12932   RUN_TEST_LOOP_f_f (rint, rint_downward_test_data, FE_DOWNWARD);
12933   END;
12934 }
12935
12936 static const struct test_f_f_data rint_upward_test_data[] =
12937   {
12938     TEST_f_f (rint, 2.0, 2.0, NO_INEXACT_EXCEPTION),
12939     TEST_f_f (rint, 1.5, 2.0, INEXACT_EXCEPTION),
12940     TEST_f_f (rint, 1.0, 1.0, NO_INEXACT_EXCEPTION),
12941     TEST_f_f (rint, 0.5, 1.0, INEXACT_EXCEPTION),
12942     TEST_f_f (rint, 0.0, 0.0, NO_INEXACT_EXCEPTION),
12943     TEST_f_f (rint, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
12944     TEST_f_f (rint, -0.5, -0.0, INEXACT_EXCEPTION),
12945     TEST_f_f (rint, -1.0, -1.0, NO_INEXACT_EXCEPTION),
12946     TEST_f_f (rint, -1.5, -1.0, INEXACT_EXCEPTION),
12947     TEST_f_f (rint, -2.0, -2.0, NO_INEXACT_EXCEPTION),
12948     TEST_f_f (rint, 0.1, 1.0, INEXACT_EXCEPTION),
12949     TEST_f_f (rint, 0.25, 1.0, INEXACT_EXCEPTION),
12950     TEST_f_f (rint, 0.625, 1.0, INEXACT_EXCEPTION),
12951     TEST_f_f (rint, -0.1, -0.0, INEXACT_EXCEPTION),
12952     TEST_f_f (rint, -0.25, -0.0, INEXACT_EXCEPTION),
12953     TEST_f_f (rint, -0.625, -0.0, INEXACT_EXCEPTION),
12954     TEST_f_f (rint, 1048576.75, 1048577.0, INEXACT_EXCEPTION),
12955     TEST_f_f (rint, 2097152.75, 2097153.0, INEXACT_EXCEPTION),
12956     TEST_f_f (rint, -1048576.75, -1048576.0, INEXACT_EXCEPTION),
12957     TEST_f_f (rint, -2097152.75, -2097152.0, INEXACT_EXCEPTION),
12958 #ifndef TEST_FLOAT
12959     TEST_f_f (rint, 70368744177664.75, 70368744177665.0, INEXACT_EXCEPTION),
12960     TEST_f_f (rint, 140737488355328.75, 140737488355329.0, INEXACT_EXCEPTION),
12961     TEST_f_f (rint, 281474976710656.75, 281474976710657.0, INEXACT_EXCEPTION),
12962     TEST_f_f (rint, 562949953421312.75, 562949953421313.0, INEXACT_EXCEPTION),
12963     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0, INEXACT_EXCEPTION),
12964     TEST_f_f (rint, -70368744177664.75, -70368744177664.0, INEXACT_EXCEPTION),
12965     TEST_f_f (rint, -140737488355328.75, -140737488355328.0, INEXACT_EXCEPTION),
12966     TEST_f_f (rint, -281474976710656.75, -281474976710656.0, INEXACT_EXCEPTION),
12967     TEST_f_f (rint, -562949953421312.75, -562949953421312.0, INEXACT_EXCEPTION),
12968     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0, INEXACT_EXCEPTION),
12969 #endif
12970 #ifdef TEST_LDOUBLE
12971     /* The result can only be represented in long double.  */
12972     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L, INEXACT_EXCEPTION),
12973     TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L, INEXACT_EXCEPTION),
12974     TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L, INEXACT_EXCEPTION),
12975     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L, INEXACT_EXCEPTION),
12976     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L, INEXACT_EXCEPTION),
12977 # if LDBL_MANT_DIG > 100
12978     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L, INEXACT_EXCEPTION),
12979     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L, INEXACT_EXCEPTION),
12980     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L, INEXACT_EXCEPTION),
12981 # endif
12982     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L, INEXACT_EXCEPTION),
12983     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L, INEXACT_EXCEPTION),
12984     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L, INEXACT_EXCEPTION),
12985     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L, INEXACT_EXCEPTION),
12986     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L, INEXACT_EXCEPTION),
12987 # if LDBL_MANT_DIG > 100
12988     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L, INEXACT_EXCEPTION),
12989     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L, INEXACT_EXCEPTION),
12990     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L, INEXACT_EXCEPTION),
12991
12992     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12993     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12994     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L, INEXACT_EXCEPTION),
12995     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L, INEXACT_EXCEPTION),
12996     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L, INEXACT_EXCEPTION),
12997     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L, INEXACT_EXCEPTION),
12998
12999     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
13000     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
13001     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
13002     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L, INEXACT_EXCEPTION),
13003     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L, INEXACT_EXCEPTION),
13004     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L, INEXACT_EXCEPTION),
13005 # endif
13006 #endif
13007   };
13008
13009 static void
13010 rint_test_upward (void)
13011 {
13012   START (rint_upward);
13013   RUN_TEST_LOOP_f_f (rint, rint_upward_test_data, FE_UPWARD);
13014   END;
13015 }
13016
13017 static const struct test_f_f_data round_test_data[] =
13018   {
13019     /* TODO: missing +/-Inf as well as qNaN tests.  */
13020
13021     TEST_f_f (round, 0, 0, NO_INEXACT_EXCEPTION),
13022     TEST_f_f (round, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
13023     /* Bug 15479: spurious "inexact" exception may occur.  */
13024     TEST_f_f (round, 0.2L, 0.0),
13025     TEST_f_f (round, -0.2L, minus_zero),
13026     TEST_f_f (round, 0.5, 1.0),
13027     TEST_f_f (round, -0.5, -1.0),
13028     TEST_f_f (round, 0.8L, 1.0),
13029     TEST_f_f (round, -0.8L, -1.0),
13030     TEST_f_f (round, 1.5, 2.0),
13031     TEST_f_f (round, -1.5, -2.0),
13032     TEST_f_f (round, 0.1, 0.0),
13033     TEST_f_f (round, 0.25, 0.0),
13034     TEST_f_f (round, 0.625, 1.0),
13035     TEST_f_f (round, -0.1, -0.0),
13036     TEST_f_f (round, -0.25, -0.0),
13037     TEST_f_f (round, -0.625, -1.0),
13038     TEST_f_f (round, 2097152.5, 2097153),
13039     TEST_f_f (round, -2097152.5, -2097153),
13040
13041 #ifdef TEST_LDOUBLE
13042     /* The result can only be represented in long double.  */
13043     TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L),
13044     TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L),
13045     TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L),
13046     TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L),
13047     TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L),
13048 # if LDBL_MANT_DIG > 100
13049     TEST_f_f (round, 4503599627370494.5000000000001L, 4503599627370495.0L),
13050     TEST_f_f (round, 4503599627370495.5000000000001L, 4503599627370496.0L),
13051     TEST_f_f (round, 4503599627370496.5000000000001L, 4503599627370497.0L),
13052 # endif
13053
13054     TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L),
13055     TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L),
13056     TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L),
13057     TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L),
13058     TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L),
13059 # if LDBL_MANT_DIG > 100
13060     TEST_f_f (round, -4503599627370494.5000000000001L, -4503599627370495.0L),
13061     TEST_f_f (round, -4503599627370495.5000000000001L, -4503599627370496.0L),
13062     TEST_f_f (round, -4503599627370496.5000000000001L, -4503599627370497.0L),
13063 # endif
13064
13065     TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L),
13066     TEST_f_f (round, 9007199254740992.25L, 9007199254740992.0L),
13067     TEST_f_f (round, 9007199254740992.5L, 9007199254740993.0L),
13068     TEST_f_f (round, 9007199254740992.75L, 9007199254740993.0L),
13069     TEST_f_f (round, 9007199254740993.5L, 9007199254740994.0L),
13070
13071     TEST_f_f (round, -9007199254740991.5L, -9007199254740992.0L),
13072     TEST_f_f (round, -9007199254740992.25L, -9007199254740992.0L),
13073     TEST_f_f (round, -9007199254740992.5L, -9007199254740993.0L),
13074     TEST_f_f (round, -9007199254740992.75L, -9007199254740993.0L),
13075     TEST_f_f (round, -9007199254740993.5L, -9007199254740994.0L),
13076
13077 # if LDBL_MANT_DIG > 100
13078     TEST_f_f (round, 9007199254740991.0000000000001L, 9007199254740991.0L),
13079     TEST_f_f (round, 9007199254740992.0000000000001L, 9007199254740992.0L),
13080     TEST_f_f (round, 9007199254740993.0000000000001L, 9007199254740993.0L),
13081     TEST_f_f (round, 9007199254740991.5000000000001L, 9007199254740992.0L),
13082     TEST_f_f (round, 9007199254740992.5000000000001L, 9007199254740993.0L),
13083     TEST_f_f (round, 9007199254740993.5000000000001L, 9007199254740994.0L),
13084
13085     TEST_f_f (round, -9007199254740991.0000000000001L, -9007199254740991.0L),
13086     TEST_f_f (round, -9007199254740992.0000000000001L, -9007199254740992.0L),
13087     TEST_f_f (round, -9007199254740993.0000000000001L, -9007199254740993.0L),
13088     TEST_f_f (round, -9007199254740991.5000000000001L, -9007199254740992.0L),
13089     TEST_f_f (round, -9007199254740992.5000000000001L, -9007199254740993.0L),
13090     TEST_f_f (round, -9007199254740993.5000000000001L, -9007199254740994.0L),
13091 # endif
13092
13093     TEST_f_f (round, 72057594037927935.5L, 72057594037927936.0L),
13094     TEST_f_f (round, 72057594037927936.25L, 72057594037927936.0L),
13095     TEST_f_f (round, 72057594037927936.5L, 72057594037927937.0L),
13096     TEST_f_f (round, 72057594037927936.75L, 72057594037927937.0L),
13097     TEST_f_f (round, 72057594037927937.5L, 72057594037927938.0L),
13098
13099     TEST_f_f (round, -72057594037927935.5L, -72057594037927936.0L),
13100     TEST_f_f (round, -72057594037927936.25L, -72057594037927936.0L),
13101     TEST_f_f (round, -72057594037927936.5L, -72057594037927937.0L),
13102     TEST_f_f (round, -72057594037927936.75L, -72057594037927937.0L),
13103     TEST_f_f (round, -72057594037927937.5L, -72057594037927938.0L),
13104
13105     TEST_f_f (round, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
13106     TEST_f_f (round, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
13107     TEST_f_f (round, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
13108     TEST_f_f (round, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
13109     TEST_f_f (round, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
13110 #endif
13111   };
13112
13113 static void
13114 round_test (void)
13115 {
13116   START (round);
13117   RUN_TEST_LOOP_f_f (round, round_test_data, );
13118   END;
13119 }
13120
13121
13122 static const struct test_ff_f_data scalb_test_data[] =
13123   {
13124     TEST_ff_f (scalb, 2.0, 0.5, qnan_value, INVALID_EXCEPTION),
13125     TEST_ff_f (scalb, 3.0, -2.5, qnan_value, INVALID_EXCEPTION),
13126
13127     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13128     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13129
13130     TEST_ff_f (scalb, 1, 0, 1),
13131     TEST_ff_f (scalb, -1, 0, -1),
13132
13133     TEST_ff_f (scalb, 0, plus_infty, qnan_value, INVALID_EXCEPTION),
13134     TEST_ff_f (scalb, minus_zero, plus_infty, qnan_value, INVALID_EXCEPTION),
13135
13136     TEST_ff_f (scalb, 0, 2, 0),
13137     TEST_ff_f (scalb, minus_zero, -4, minus_zero),
13138     TEST_ff_f (scalb, 0, 0, 0),
13139     TEST_ff_f (scalb, minus_zero, 0, minus_zero),
13140     TEST_ff_f (scalb, 0, -1, 0),
13141     TEST_ff_f (scalb, minus_zero, -10, minus_zero),
13142     TEST_ff_f (scalb, 0, minus_infty, 0),
13143     TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero),
13144
13145     TEST_ff_f (scalb, plus_infty, -1, plus_infty),
13146     TEST_ff_f (scalb, minus_infty, -10, minus_infty),
13147     TEST_ff_f (scalb, plus_infty, 0, plus_infty),
13148     TEST_ff_f (scalb, minus_infty, 0, minus_infty),
13149     TEST_ff_f (scalb, plus_infty, 2, plus_infty),
13150     TEST_ff_f (scalb, minus_infty, 100, minus_infty),
13151
13152     TEST_ff_f (scalb, 0.1L, minus_infty, 0.0),
13153     TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero),
13154
13155     TEST_ff_f (scalb, 1, plus_infty, plus_infty),
13156     TEST_ff_f (scalb, -1, plus_infty, minus_infty),
13157     TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty),
13158     TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty),
13159
13160     TEST_ff_f (scalb, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13161     TEST_ff_f (scalb, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13162
13163     TEST_ff_f (scalb, qnan_value, 1, qnan_value),
13164     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13165     TEST_ff_f (scalb, qnan_value, 0, qnan_value),
13166     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13167     TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value),
13168     TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value),
13169     TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value),
13170
13171     TEST_ff_f (scalb, 0.8L, 4, 12.8L),
13172     TEST_ff_f (scalb, -0.854375L, 5, -27.34L),
13173   };
13174
13175 static void
13176 scalb_test (void)
13177 {
13178
13179   START (scalb);
13180   RUN_TEST_LOOP_ff_f (scalb, scalb_test_data, );
13181   END;
13182 }
13183
13184
13185 static const struct test_fi_f_data scalbn_test_data[] =
13186   {
13187     TEST_fi_f (scalbn, 0, 0, 0, NO_INEXACT_EXCEPTION),
13188     TEST_fi_f (scalbn, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION),
13189
13190     TEST_fi_f (scalbn, plus_infty, 1, plus_infty, NO_INEXACT_EXCEPTION),
13191     TEST_fi_f (scalbn, minus_infty, 1, minus_infty, NO_INEXACT_EXCEPTION),
13192     TEST_fi_f (scalbn, qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION),
13193
13194     TEST_fi_f (scalbn, 0.8L, 4, 12.8L, NO_INEXACT_EXCEPTION),
13195     TEST_fi_f (scalbn, -0.854375L, 5, -27.34L, NO_INEXACT_EXCEPTION),
13196
13197     TEST_fi_f (scalbn, 1, 0L, 1, NO_INEXACT_EXCEPTION),
13198
13199     TEST_fi_f (scalbn, 1, INT_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13200     TEST_fi_f (scalbn, 1, INT_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13201     TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13202     TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13203     TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13204     TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13205     TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13206     TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13207   };
13208
13209 static void
13210 scalbn_test (void)
13211 {
13212
13213   START (scalbn);
13214   RUN_TEST_LOOP_fi_f (scalbn, scalbn_test_data, );
13215   END;
13216 }
13217
13218
13219 static const struct test_fl_f_data scalbln_test_data[] =
13220   {
13221     TEST_fl_f (scalbln, 0, 0, 0, NO_INEXACT_EXCEPTION),
13222     TEST_fl_f (scalbln, minus_zero, 0, minus_zero, NO_INEXACT_EXCEPTION),
13223
13224     TEST_fl_f (scalbln, plus_infty, 1, plus_infty, NO_INEXACT_EXCEPTION),
13225     TEST_fl_f (scalbln, minus_infty, 1, minus_infty, NO_INEXACT_EXCEPTION),
13226     TEST_fl_f (scalbln, qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION),
13227
13228     TEST_fl_f (scalbln, 0.8L, 4, 12.8L, NO_INEXACT_EXCEPTION),
13229     TEST_fl_f (scalbln, -0.854375L, 5, -27.34L, NO_INEXACT_EXCEPTION),
13230
13231     TEST_fl_f (scalbln, 1, 0L, 1, NO_INEXACT_EXCEPTION),
13232
13233     TEST_fl_f (scalbln, 1, INT_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13234     TEST_fl_f (scalbln, 1, INT_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13235     TEST_fl_f (scalbln, max_value, INT_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13236     TEST_fl_f (scalbln, max_value, INT_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13237     TEST_fl_f (scalbln, min_value, INT_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13238     TEST_fl_f (scalbln, min_value, INT_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13239     TEST_fl_f (scalbln, min_value / 4, INT_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13240     TEST_fl_f (scalbln, min_value / 4, INT_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13241
13242     TEST_fl_f (scalbln, 1, LONG_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13243     TEST_fl_f (scalbln, 1, LONG_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13244     TEST_fl_f (scalbln, max_value, LONG_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13245     TEST_fl_f (scalbln, max_value, LONG_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13246     TEST_fl_f (scalbln, min_value, LONG_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13247     TEST_fl_f (scalbln, min_value, LONG_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13248     TEST_fl_f (scalbln, min_value / 4, LONG_MAX, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13249     TEST_fl_f (scalbln, min_value / 4, LONG_MIN, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13250
13251 #if LONG_MAX >= 0x100000000
13252     TEST_fl_f (scalbln, 1, 0x88000000L, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13253     TEST_fl_f (scalbln, 1, -0x88000000L, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13254     TEST_fl_f (scalbln, max_value, 0x88000000L, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13255     TEST_fl_f (scalbln, max_value, -0x88000000L, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13256     TEST_fl_f (scalbln, min_value, 0x88000000L, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13257     TEST_fl_f (scalbln, min_value, -0x88000000L, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13258     TEST_fl_f (scalbln, min_value / 4, 0x88000000L, plus_infty, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
13259     TEST_fl_f (scalbln, min_value / 4, -0x88000000L, plus_zero, INEXACT_EXCEPTION|UNDERFLOW_EXCEPTION),
13260 #endif
13261   };
13262
13263 static void
13264 scalbln_test (void)
13265 {
13266
13267   START (scalbln);
13268   RUN_TEST_LOOP_fl_f (scalbln, scalbln_test_data, );
13269   END;
13270 }
13271
13272
13273 static const struct test_f_i_data signbit_test_data[] =
13274   {
13275     /* TODO: missing qNaN tests.  */
13276     TEST_f_b (signbit, 0, 0, NO_INEXACT_EXCEPTION),
13277     TEST_f_b (signbit, minus_zero, 1, NO_INEXACT_EXCEPTION),
13278     TEST_f_b (signbit, plus_infty, 0, NO_INEXACT_EXCEPTION),
13279     TEST_f_b (signbit, minus_infty, 1, NO_INEXACT_EXCEPTION),
13280
13281     /* signbit (x) != 0 for x < 0.  */
13282     TEST_f_b (signbit, -1, 1, NO_INEXACT_EXCEPTION),
13283     /* signbit (x) == 0 for x >= 0.  */
13284     TEST_f_b (signbit, 1, 0, NO_INEXACT_EXCEPTION),
13285   };
13286
13287 static void
13288 signbit_test (void)
13289 {
13290   START (signbit);
13291   RUN_TEST_LOOP_f_b_tg (signbit, signbit_test_data, );
13292   END;
13293 }
13294
13295
13296 static const struct test_f_f_data sin_test_data[] =
13297   {
13298     TEST_f_f (sin, 0, 0),
13299     TEST_f_f (sin, minus_zero, minus_zero),
13300     TEST_f_f (sin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13301     TEST_f_f (sin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13302     TEST_f_f (sin, qnan_value, qnan_value, ERRNO_UNCHANGED),
13303
13304     TEST_f_f (sin, M_PI_6l, 0.5),
13305     TEST_f_f (sin, -M_PI_6l, -0.5),
13306     TEST_f_f (sin, M_PI_2l, 1),
13307     TEST_f_f (sin, -M_PI_2l, -1),
13308     TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L),
13309
13310     TEST_f_f (sin, 0x1p65, -0.047183876212354673805106149805700013943218L),
13311     TEST_f_f (sin, -0x1p65, 0.047183876212354673805106149805700013943218L),
13312
13313     TEST_f_f (sin, 0x1.7f4134p+103, -6.6703229329788657073304190650534846045235e-08L),
13314
13315 #ifdef TEST_DOUBLE
13316     TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868),
13317     TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1),
13318 #endif
13319
13320 #ifndef TEST_FLOAT
13321     TEST_f_f (sin, 1e22, -0.8522008497671888017727058937530293682618L),
13322     TEST_f_f (sin, 0x1p1023, 0.5631277798508840134529434079444683477104L),
13323 #endif
13324
13325 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13326     TEST_f_f (sin, 0x1p16383L, 0.3893629985894208126948115852610595405563L),
13327 #endif
13328
13329     TEST_f_f (sin, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L),
13330     TEST_f_f (sin, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L),
13331     TEST_f_f (sin, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L),
13332     TEST_f_f (sin, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L),
13333     TEST_f_f (sin, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L),
13334     TEST_f_f (sin, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L),
13335
13336 #ifdef TEST_DOUBLE
13337     TEST_f_f (sin, 0.93340582292648832662962377071381, 0x1.9b78326675a75p-1);
13338     TEST_f_f (sin, 2.3328432680770916363144351635128, 0x1.7264abddb4205p-1);
13339     TEST_f_f (sin, 3.7439477503636453548097051680088, -0x1.2217622485d94p-1);
13340     TEST_f_f (sin, 3.9225160069792437411706487182528, -0x1.686a3d55a1306p-1);
13341     TEST_f_f (sin, 4.0711651639931289992091478779912, -0x1.9a4c6be7f5eadp-1);
13342     TEST_f_f (sin, 4.7858438478542097982426639646292, -0x1.fe9e8d4105e51p-1);
13343     TEST_f_f (sin, 5.9840767662578002727968851104379, -0x1.2dbd90aa4d692p-2);
13344 #endif
13345   };
13346
13347 static void
13348 sin_test (void)
13349 {
13350   START (sin);
13351   RUN_TEST_LOOP_f_f (sin, sin_test_data, );
13352   END;
13353 }
13354
13355
13356 static const struct test_f_f_data sin_tonearest_test_data[] =
13357   {
13358     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13359     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13360     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13361     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13362     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13363     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13364     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13365     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13366     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13367     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13368   };
13369
13370 static void
13371 sin_test_tonearest (void)
13372 {
13373   START (sin_tonearest);
13374   RUN_TEST_LOOP_f_f (sin, sin_tonearest_test_data, FE_TONEAREST);
13375   END;
13376 }
13377
13378
13379 static const struct test_f_f_data sin_towardzero_test_data[] =
13380   {
13381     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13382     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13383     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13384     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13385     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13386     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13387     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13388     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13389     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13390     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13391   };
13392
13393 static void
13394 sin_test_towardzero (void)
13395 {
13396   START (sin_towardzero);
13397   RUN_TEST_LOOP_f_f (sin, sin_towardzero_test_data, FE_TOWARDZERO);
13398   END;
13399 }
13400
13401
13402 static const struct test_f_f_data sin_downward_test_data[] =
13403   {
13404     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13405     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13406     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13407     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13408     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13409     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13410     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13411     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13412     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13413     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13414   };
13415
13416 static void
13417 sin_test_downward (void)
13418 {
13419   START (sin_downward);
13420   RUN_TEST_LOOP_f_f (sin, sin_downward_test_data, FE_DOWNWARD);
13421   END;
13422 }
13423
13424
13425 static const struct test_f_f_data sin_upward_test_data[] =
13426   {
13427     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13428     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13429     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13430     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13431     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13432     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13433     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13434     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13435     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13436     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13437   };
13438
13439 static void
13440 sin_test_upward (void)
13441 {
13442   START (sin_upward);
13443   RUN_TEST_LOOP_f_f (sin, sin_upward_test_data, FE_UPWARD);
13444   END;
13445 }
13446
13447
13448 static const struct test_fFF_11_data sincos_test_data[] =
13449   {
13450     TEST_fFF_11 (sincos, 0, 0, 1),
13451
13452     TEST_fFF_11 (sincos, minus_zero, minus_zero, 1),
13453     TEST_fFF_11 (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
13454     TEST_fFF_11 (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
13455     TEST_fFF_11 (sincos, qnan_value, qnan_value, qnan_value),
13456
13457     /* The value of M_PI_2l is never exactly PI/2, and therefore the
13458        answer is never exactly zero. The answer is equal to the error
13459        in rounding PI/2 for the type used.  Thus the answer is unique
13460        to each type.  */
13461 #ifdef TEST_FLOAT
13462     /* 32-bit float.  */
13463     TEST_fFF_11 (sincos, M_PI_2l, 1, -0x1.777a5cp-25L),
13464 #endif
13465 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
13466     /* 64-bit double or 64-bit long double.  */
13467     TEST_fFF_11 (sincos, M_PI_2l, 1, 0x1.1a62633145c07p-54L),
13468 #endif
13469 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
13470     /* 96-bit long double.  */
13471     TEST_fFF_11 (sincos, M_PI_2l, 1, -0xe.ce675d1fc8f8cbbp-69L),
13472 #endif
13473 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
13474     /* 128-bit IBM long double.  */
13475     TEST_fFF_11 (sincos, M_PI_2l, 1, 0x1.c1cd129024e088a67cc74020bcp-107L),
13476 #endif
13477 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
13478     /* 128-bit long double.  */
13479     TEST_fFF_11 (sincos, M_PI_2l, 1, 0x1.cd129024e088a67cc74020bbea64p-115L),
13480 #endif
13481
13482     TEST_fFF_11 (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L),
13483     TEST_fFF_11 (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5),
13484     TEST_fFF_11 (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L),
13485
13486     TEST_fFF_11 (sincos, 0x1p65, -0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L),
13487     TEST_fFF_11 (sincos, -0x1p65, 0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L),
13488
13489 #ifdef TEST_DOUBLE
13490     TEST_fFF_11 (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473),
13491 #endif
13492
13493 #ifndef TEST_FLOAT
13494     TEST_fFF_11 (sincos, 1e22, -0.8522008497671888017727058937530293682618L, 0.5232147853951389454975944733847094921409L),
13495     TEST_fFF_11 (sincos, 0x1p1023, 0.5631277798508840134529434079444683477104L, -0.826369834614147994500785680811743734805L),
13496 #endif
13497
13498 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13499     TEST_fFF_11 (sincos, 0x1p16383L, 0.3893629985894208126948115852610595405563L, 0.9210843909921906206874509522505756251609L),
13500 #endif
13501
13502     TEST_fFF_11 (sincos, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L, -9.25879022854837867303861764107414946730833e-01L),
13503     TEST_fFF_11 (sincos, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L, 7.81914638714960072263910298466369236613162e-01L),
13504     TEST_fFF_11 (sincos, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L, 9.98819362551949040703862043664101081064641e-01L),
13505     TEST_fFF_11 (sincos, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L, 8.53021039830304158051791467692161107353094e-01L),
13506     TEST_fFF_11 (sincos, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L, 8.68095904660550604334592502063501320395739e-01L),
13507     TEST_fFF_11 (sincos, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L, -1.65568979490578758865468278195361551113358e-01L),
13508   };
13509
13510 static void
13511 sincos_test (void)
13512 {
13513   FLOAT sin_res, cos_res;
13514
13515   START (sincos);
13516   RUN_TEST_LOOP_fFF_11 (sincos, sincos_test_data, , sin_res, cos_res);
13517   END;
13518 }
13519
13520 static const struct test_f_f_data sinh_test_data[] =
13521   {
13522     TEST_f_f (sinh, 0, 0),
13523     TEST_f_f (sinh, minus_zero, minus_zero),
13524
13525 #ifndef TEST_INLINE
13526     TEST_f_f (sinh, plus_infty, plus_infty),
13527     TEST_f_f (sinh, minus_infty, minus_infty),
13528 #endif
13529     TEST_f_f (sinh, qnan_value, qnan_value),
13530
13531     TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L),
13532     TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L),
13533   };
13534
13535 static void
13536 sinh_test (void)
13537 {
13538   START (sinh);
13539   RUN_TEST_LOOP_f_f (sinh, sinh_test_data, );
13540   END;
13541 }
13542
13543
13544 static const struct test_f_f_data sinh_tonearest_test_data[] =
13545   {
13546     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13547     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13548     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13549   };
13550
13551 static void
13552 sinh_test_tonearest (void)
13553 {
13554   START (sinh_tonearest);
13555   RUN_TEST_LOOP_f_f (sinh, sinh_tonearest_test_data, FE_TONEAREST);
13556   END;
13557 }
13558
13559
13560 static const struct test_f_f_data sinh_towardzero_test_data[] =
13561   {
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   };
13566
13567 static void
13568 sinh_test_towardzero (void)
13569 {
13570   START (sinh_towardzero);
13571   RUN_TEST_LOOP_f_f (sinh, sinh_towardzero_test_data, FE_TOWARDZERO);
13572   END;
13573 }
13574
13575
13576 static const struct test_f_f_data sinh_downward_test_data[] =
13577   {
13578     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13579     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13580     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13581   };
13582
13583 static void
13584 sinh_test_downward (void)
13585 {
13586   START (sinh_downward);
13587   RUN_TEST_LOOP_f_f (sinh, sinh_downward_test_data, FE_DOWNWARD);
13588   END;
13589 }
13590
13591
13592 static const struct test_f_f_data sinh_upward_test_data[] =
13593   {
13594     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13595     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13596     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13597   };
13598
13599 static void
13600 sinh_test_upward (void)
13601 {
13602   START (sinh_upward);
13603   RUN_TEST_LOOP_f_f (sinh, sinh_upward_test_data, FE_UPWARD);
13604   END;
13605 }
13606
13607
13608 static const struct test_f_f_data sqrt_test_data[] =
13609   {
13610     TEST_f_f (sqrt, 0, 0, NO_INEXACT_EXCEPTION),
13611     TEST_f_f (sqrt, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
13612     TEST_f_f (sqrt, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
13613
13614     TEST_f_f (sqrt, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
13615
13616     /* sqrt (x) == qNaN plus invalid exception for x < 0.  */
13617     TEST_f_f (sqrt, -1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
13618     TEST_f_f (sqrt, -max_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
13619     TEST_f_f (sqrt, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
13620
13621     TEST_f_f (sqrt, 2209, 47, NO_INEXACT_EXCEPTION),
13622     TEST_f_f (sqrt, 4, 2, NO_INEXACT_EXCEPTION),
13623     TEST_f_f (sqrt, 2, M_SQRT2l, INEXACT_EXCEPTION),
13624     TEST_f_f (sqrt, 0.25, 0.5, NO_INEXACT_EXCEPTION),
13625     TEST_f_f (sqrt, 6642.25, 81.5, NO_INEXACT_EXCEPTION),
13626     TEST_f_f (sqrt, 15190.5625L, 123.25L, NO_INEXACT_EXCEPTION),
13627     TEST_f_f (sqrt, 0.75L, 0.866025403784438646763723170752936183L, INEXACT_EXCEPTION),
13628   };
13629
13630 static void
13631 sqrt_test (void)
13632 {
13633   START (sqrt);
13634   RUN_TEST_LOOP_f_f (sqrt, sqrt_test_data, );
13635   END;
13636 }
13637
13638
13639 static const struct test_f_f_data tan_test_data[] =
13640   {
13641     TEST_f_f (tan, 0, 0),
13642     TEST_f_f (tan, minus_zero, minus_zero),
13643     TEST_f_f (tan, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13644     TEST_f_f (tan, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13645     TEST_f_f (tan, qnan_value, qnan_value, ERRNO_UNCHANGED),
13646
13647     TEST_f_f (tan, M_PI_4l, 1),
13648     TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L),
13649
13650     TEST_f_f (tan, 0x1p65, -0.0472364872359047946798414219288370688827L),
13651     TEST_f_f (tan, -0x1p65, 0.0472364872359047946798414219288370688827L),
13652
13653     TEST_f_f (tan, 0xc.9p-4, 0.9995162902115457818029468900654150261381L),
13654     TEST_f_f (tan, 0xc.908p-4, 0.9997603425502441410973077452249560802034L),
13655     TEST_f_f (tan, 0xc.90cp-4, 0.9998823910588060302788513970802357770031L),
13656     TEST_f_f (tan, 0xc.90ep-4, 0.9999434208994808753305784795924711152508L),
13657     TEST_f_f (tan, 0xc.90fp-4, 0.9999739372166156702433266059635165160515L),
13658     TEST_f_f (tan, 0xc.90f8p-4, 0.9999891957244072765118898375645469865764L),
13659     TEST_f_f (tan, 0xc.90fcp-4, 0.9999968250656122402859679132395522927393L),
13660     TEST_f_f (tan, 0xc.90fdp-4, 0.9999987324100083358016192309006353329444L),
13661     TEST_f_f (tan, 0xc.90fd8p-4, 0.9999996860835706212861509874451585282616L),
13662     TEST_f_f (tan, 0xc.90fdap-4, 0.9999999245021033010474530133665235922808L),
13663     TEST_f_f (tan, 0xc.ap-4, 1.0073556597407272165371804539701396631519L),
13664     TEST_f_f (tan, 0xc.98p-4, 1.0034282930863044654045449407466962736255L),
13665     TEST_f_f (tan, 0xc.94p-4, 1.0014703786820082237342656561856877993328L),
13666     TEST_f_f (tan, 0xc.92p-4, 1.0004928571392300571266638743539017593717L),
13667     TEST_f_f (tan, 0xc.91p-4, 1.0000044544650244953647966900221905361131L),
13668     TEST_f_f (tan, 0xc.90fep-4, 1.0000006397580424009014454926842136804016L),
13669     TEST_f_f (tan, 0xc.90fdcp-4, 1.0000001629206928242190327320047489394217L),
13670     TEST_f_f (tan, 0xc.90fdbp-4, 1.0000000437113909572052640953950483705005L),
13671
13672     TEST_f_f (tan, -0xc.9p-4, -0.9995162902115457818029468900654150261381L),
13673     TEST_f_f (tan, -0xc.908p-4, -0.9997603425502441410973077452249560802034L),
13674     TEST_f_f (tan, -0xc.90cp-4, -0.9998823910588060302788513970802357770031L),
13675     TEST_f_f (tan, -0xc.90ep-4, -0.9999434208994808753305784795924711152508L),
13676     TEST_f_f (tan, -0xc.90fp-4, -0.9999739372166156702433266059635165160515L),
13677     TEST_f_f (tan, -0xc.90f8p-4, -0.9999891957244072765118898375645469865764L),
13678     TEST_f_f (tan, -0xc.90fcp-4, -0.9999968250656122402859679132395522927393L),
13679     TEST_f_f (tan, -0xc.90fdp-4, -0.9999987324100083358016192309006353329444L),
13680     TEST_f_f (tan, -0xc.90fd8p-4, -0.9999996860835706212861509874451585282616L),
13681     TEST_f_f (tan, -0xc.90fdap-4, -0.9999999245021033010474530133665235922808L),
13682     TEST_f_f (tan, -0xc.ap-4, -1.0073556597407272165371804539701396631519L),
13683     TEST_f_f (tan, -0xc.98p-4, -1.0034282930863044654045449407466962736255L),
13684     TEST_f_f (tan, -0xc.94p-4, -1.0014703786820082237342656561856877993328L),
13685     TEST_f_f (tan, -0xc.92p-4, -1.0004928571392300571266638743539017593717L),
13686     TEST_f_f (tan, -0xc.91p-4, -1.0000044544650244953647966900221905361131L),
13687     TEST_f_f (tan, -0xc.90fep-4, -1.0000006397580424009014454926842136804016L),
13688     TEST_f_f (tan, -0xc.90fdcp-4, -1.0000001629206928242190327320047489394217L),
13689     TEST_f_f (tan, -0xc.90fdbp-4, -1.0000000437113909572052640953950483705005L),
13690
13691 #ifndef TEST_FLOAT
13692     TEST_f_f (tan, 1e22, -1.628778225606898878549375936939548513545L),
13693     TEST_f_f (tan, 0x1p1023, -0.6814476476066215012854144040167365190368L),
13694 #endif
13695
13696 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13697     TEST_f_f (tan, 0x1p16383L, 0.422722393732022337800504160054440141575L),
13698 #endif
13699   };
13700
13701 static void
13702 tan_test (void)
13703 {
13704   START (tan);
13705   RUN_TEST_LOOP_f_f (tan, tan_test_data, );
13706   END;
13707 }
13708
13709
13710 static const struct test_f_f_data tan_tonearest_test_data[] =
13711   {
13712     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13713     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13714     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13715     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13716     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13717     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13718     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13719     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13720     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13721     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13722   };
13723
13724 static void
13725 tan_test_tonearest (void)
13726 {
13727   START (tan_tonearest);
13728   RUN_TEST_LOOP_f_f (tan, tan_tonearest_test_data, FE_TONEAREST);
13729   END;
13730 }
13731
13732
13733 static const struct test_f_f_data tan_towardzero_test_data[] =
13734   {
13735     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13736     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13737     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13738     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13739     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13740     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13741     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13742     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13743     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13744     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13745   };
13746
13747 static void
13748 tan_test_towardzero (void)
13749 {
13750   START (tan_towardzero);
13751   RUN_TEST_LOOP_f_f (tan, tan_towardzero_test_data, FE_TOWARDZERO);
13752   END;
13753 }
13754
13755
13756 static const struct test_f_f_data tan_downward_test_data[] =
13757   {
13758     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13759     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13760     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13761     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13762     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13763     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13764     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13765     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13766     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13767     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13768   };
13769
13770 static void
13771 tan_test_downward (void)
13772 {
13773   START (tan_downward);
13774   RUN_TEST_LOOP_f_f (tan, tan_downward_test_data, FE_DOWNWARD);
13775   END;
13776 }
13777
13778
13779 static const struct test_f_f_data tan_upward_test_data[] =
13780   {
13781     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13782     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13783     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13784     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13785     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13786     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13787     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13788     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13789     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13790     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13791   };
13792
13793 static void
13794 tan_test_upward (void)
13795 {
13796   START (tan_upward);
13797   RUN_TEST_LOOP_f_f (tan, tan_upward_test_data, FE_UPWARD);
13798   END;
13799 }
13800
13801
13802 static const struct test_f_f_data tanh_test_data[] =
13803   {
13804     TEST_f_f (tanh, 0, 0),
13805     TEST_f_f (tanh, minus_zero, minus_zero),
13806
13807 #ifndef TEST_INLINE
13808     TEST_f_f (tanh, plus_infty, 1),
13809     TEST_f_f (tanh, minus_infty, -1),
13810 #endif
13811     TEST_f_f (tanh, qnan_value, qnan_value),
13812
13813     TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L),
13814     TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L),
13815
13816     TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L),
13817     TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L),
13818
13819     /* 2^-57  */
13820     TEST_f_f (tanh, 0x1p-57L, 6.938893903907228377647697925567626953125e-18L),
13821   };
13822
13823 static void
13824 tanh_test (void)
13825 {
13826   START (tanh);
13827   RUN_TEST_LOOP_f_f (tanh, tanh_test_data, );
13828   END;
13829 }
13830
13831 static const struct test_f_f_data tgamma_test_data[] =
13832   {
13833     TEST_f_f (tgamma, plus_infty, plus_infty),
13834     TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13835     TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
13836     TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
13837     /* tgamma (x) == qNaN plus invalid exception for integer x <= 0.  */
13838     TEST_f_f (tgamma, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13839     TEST_f_f (tgamma, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13840     TEST_f_f (tgamma, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13841     TEST_f_f (tgamma, qnan_value, qnan_value),
13842
13843     TEST_f_f (tgamma, 0.5, M_SQRT_PIl),
13844     TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl),
13845
13846     TEST_f_f (tgamma, 1, 1),
13847     TEST_f_f (tgamma, 2, 1),
13848     TEST_f_f (tgamma, 3, 2),
13849     TEST_f_f (tgamma, 4, 6),
13850     TEST_f_f (tgamma, 5, 24),
13851     TEST_f_f (tgamma, 6, 120),
13852     TEST_f_f (tgamma, 7, 720),
13853     TEST_f_f (tgamma, 8, 5040),
13854     TEST_f_f (tgamma, 9,  40320),
13855     TEST_f_f (tgamma, 10, 362880),
13856
13857     TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L),
13858     TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L),
13859
13860     TEST_f_f (tgamma, 1.5L, 8.8622692545275801364908374167057259139877e-01L),
13861     TEST_f_f (tgamma, 2.5L, 1.3293403881791370204736256125058588870982e+00L),
13862     TEST_f_f (tgamma, 3.5L, 3.3233509704478425511840640312646472177454e+00L),
13863     TEST_f_f (tgamma, 4.5L, 1.1631728396567448929144224109426265262109e+01L),
13864     TEST_f_f (tgamma, 5.5L, 5.2342777784553520181149008492418193679490e+01L),
13865     TEST_f_f (tgamma, 6.5L, 2.8788527781504436099631954670830006523720e+02L),
13866     TEST_f_f (tgamma, 7.5L, 1.8712543057977883464760770536039504240418e+03L),
13867     TEST_f_f (tgamma, 8.5L, 1.4034407293483412598570577902029628180313e+04L),
13868     TEST_f_f (tgamma, 9.5L, 1.1929246199460900708784991216725183953266e+05L),
13869     TEST_f_f (tgamma, -1.5L, 2.3632718012073547030642233111215269103967e+00L),
13870     TEST_f_f (tgamma, -2.5L, -9.4530872048294188122568932444861076415869e-01L),
13871     TEST_f_f (tgamma, -3.5L, 2.7008820585226910892162552127103164690248e-01L),
13872     TEST_f_f (tgamma, -4.5L, -6.0019601300504246427027893615784810422774e-02L),
13873     TEST_f_f (tgamma, -5.5L, 1.0912654781909862986732344293779056440504e-02L),
13874     TEST_f_f (tgamma, -6.5L, -1.6788699664476712287280529682737009908468e-03L),
13875     TEST_f_f (tgamma, -7.5L, 2.2384932885968949716374039576982679877958e-04L),
13876     TEST_f_f (tgamma, -8.5L, -2.6335215159963470254557693619979623385833e-05L),
13877     TEST_f_f (tgamma, -9.5L, 2.7721279115751021320587045915768024616666e-06L),
13878     TEST_f_f (tgamma, 0x1p-24L, 1.6777215422784394050795179874582764575261e+07L),
13879     TEST_f_f (tgamma, -0x1p-24L, -1.6777216577215723853867349114260580375249e+07L),
13880     TEST_f_f (tgamma, 0x1p-53L, 9.0071992547409914227843350984672492007618e+15L),
13881     TEST_f_f (tgamma, -0x1p-53L, -9.0071992547409925772156649015329704137860e+15L),
13882     TEST_f_f (tgamma, 0x1p-64L, 1.8446744073709551615422784335098467139447e+19L),
13883     TEST_f_f (tgamma, -0x1p-64L, -1.8446744073709551616577215664901532860660e+19L),
13884     TEST_f_f (tgamma, 0x1p-106L, 8.1129638414606681695789005144063422784335e+31L),
13885     TEST_f_f (tgamma, -0x1p-106L, -8.1129638414606681695789005144064577215665e+31L),
13886     TEST_f_f (tgamma, 0x1p-113L, 1.0384593717069655257060992658440191422784e+34L),
13887     TEST_f_f (tgamma, -0x1p-113L, -1.0384593717069655257060992658440192577216e+34L),
13888     TEST_f_f (tgamma, 0x1p-127L, 1.7014118346046923173168730371588410572742e+38L),
13889     TEST_f_f (tgamma, -0x1p-127L, -1.7014118346046923173168730371588410572858e+38L),
13890 #ifdef TEST_FLOAT
13891     TEST_f_f (tgamma, 0x1p-128L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13892     TEST_f_f (tgamma, -0x1p-128L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13893     TEST_f_f (tgamma, 0x1p-149L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13894     TEST_f_f (tgamma, -0x1p-149L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13895 #else
13896     TEST_f_f (tgamma, 0x1p-128L, 3.4028236692093846346337460743176821145542e+38L),
13897     TEST_f_f (tgamma, -0x1p-128L, -3.4028236692093846346337460743176821145658e+38L),
13898     TEST_f_f (tgamma, 0x1p-149L, 7.1362384635297994052914298472474756819137e+44L),
13899     TEST_f_f (tgamma, -0x1p-149L, -7.1362384635297994052914298472474756819137e+44L),
13900 #endif
13901 #ifndef TEST_FLOAT
13902     TEST_f_f (tgamma, 0x1p-1023L, 8.9884656743115795386465259539451236680899e+307L),
13903     TEST_f_f (tgamma, -0x1p-1023L, -8.9884656743115795386465259539451236680899e+307L),
13904 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
13905     TEST_f_f (tgamma, 0x1p-1024L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13906     TEST_f_f (tgamma, -0x1p-1024L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13907     TEST_f_f (tgamma, 0x1p-1074L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13908     TEST_f_f (tgamma, -0x1p-1074L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13909 # else
13910     TEST_f_f (tgamma, 0x1p-1024L, 1.7976931348623159077293051907890247336180e+308L),
13911     TEST_f_f (tgamma, -0x1p-1024L, -1.7976931348623159077293051907890247336180e+308L),
13912     TEST_f_f (tgamma, 0x1p-1074L, 2.0240225330731061835249534671891730704956e+323L),
13913     TEST_f_f (tgamma, -0x1p-1074L, -2.0240225330731061835249534671891730704956e+323L),
13914 # endif
13915 #endif
13916 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
13917     TEST_f_f (tgamma, 0x1p-16383L, 5.9486574767861588254287966331400356538172e+4931L),
13918     TEST_f_f (tgamma, -0x1p-16383L, -5.9486574767861588254287966331400356538172e+4931L),
13919     TEST_f_f (tgamma, 0x1p-16384L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13920     TEST_f_f (tgamma, -0x1p-16384L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13921     TEST_f_f (tgamma, 0x1p-16445L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13922     TEST_f_f (tgamma, -0x1p-16445L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13923 # if LDBL_MANT_DIG >= 113
13924     TEST_f_f (tgamma, 0x1p-16494L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13925     TEST_f_f (tgamma, -0x1p-16494L, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
13926 # endif
13927 #endif
13928     TEST_f_f (tgamma, 0x8.00001p0L, 5.0400096882277802019946778420223050233915e+03L),
13929     TEST_f_f (tgamma, 0x7.fffff8p0L, 5.0399951558933225045148935487583089307135e+03L),
13930     TEST_f_f (tgamma, 0x7.000008p0L, 7.2000064296977505705636258629805621178587e+02L),
13931     TEST_f_f (tgamma, 0x6.fffff8p0L, 7.1999935703082425988147448928288557689866e+02L),
13932     TEST_f_f (tgamma, 0x6.000008p0L, 1.2000009762487825358530770343720418162783e+02L),
13933     TEST_f_f (tgamma, 0x5.fffff8p0L, 1.1999990237520611552119807476573441975106e+02L),
13934     TEST_f_f (tgamma, 0x5.000008p0L, 2.4000017236155647574166073485628713443799e+01L),
13935     TEST_f_f (tgamma, 0x4.fffff8p0L, 2.3999982763857938712639837029547357501709e+01L),
13936     TEST_f_f (tgamma, 0x4.000008p0L, 6.0000035937827461765660468073471093546129e+00L),
13937     TEST_f_f (tgamma, 0x3.fffffcp0L, 5.9999982031095793171233994481968816873643e+00L),
13938     TEST_f_f (tgamma, 0x3.000004p0L, 2.0000004400179308360529417942462250547999e+00L),
13939     TEST_f_f (tgamma, 0x2.fffffcp0L, 1.9999995599822108706107786027549565954046e+00L),
13940     TEST_f_f (tgamma, 0x2.000004p0L, 1.0000001007996638509889062631687945799175e+00L),
13941     TEST_f_f (tgamma, 0x1.fffffep0L, 9.9999994960018563231526611134590489120697e-01L),
13942     TEST_f_f (tgamma, 0x1.000002p0L, 9.9999993119054472483596471908942669644327e-01L),
13943     TEST_f_f (tgamma, 0x0.ffffffp0L, 1.0000000344047381790797322460568297132998e+00L),
13944     TEST_f_f (tgamma, -0x0.ffffffp0L, -1.6777216422784419250710305882992376932423e+07L),
13945     TEST_f_f (tgamma, -0x1.000002p0L, 8.3886075772158332060084424806449513922858e+06L),
13946     TEST_f_f (tgamma, -0x1.fffffep0L, 4.1943044613922792026014320172298377770578e+06L),
13947     TEST_f_f (tgamma, -0x2.000004p0L, -2.0971515386080557574407223895988378776747e+06L),
13948     TEST_f_f (tgamma, -0x2.fffffcp0L, -6.9905087601970247876992248591045142913324e+05L),
13949     TEST_f_f (tgamma, -0x3.000004p0L, 6.9905045731381300146131914617735687322025e+05L),
13950     TEST_f_f (tgamma, -0x3.fffffcp0L, 1.7476272942159602684441970627092458855771e+05L),
13951     TEST_f_f (tgamma, -0x4.000008p0L, -8.7381270578483499672965708923121931082305e+04L),
13952     TEST_f_f (tgamma, -0x4.fffff8p0L, -1.7476280884325863043793087474680780379554e+04L),
13953     TEST_f_f (tgamma, -0x5.000008p0L, 1.7476252449031389167286893378510439443844e+04L),
13954     TEST_f_f (tgamma, -0x5.fffff8p0L, 2.9127137122026653716311560165769071985443e+03L),
13955     TEST_f_f (tgamma, -0x6.000008p0L, -2.9127085100239567622341538102130981196910e+03L),
13956     TEST_f_f (tgamma, -0x6.fffff8p0L, -4.1610198723079349791939054365613377035519e+02L),
13957     TEST_f_f (tgamma, -0x7.000008p0L, 4.1610118737306415004517215226199741948733e+02L),
13958     TEST_f_f (tgamma, -0x7.fffff8p0L, 5.2012751504050764429534086402871289946986e+01L),
13959     TEST_f_f (tgamma, -0x8.00001p0L, -2.6006296115134418896533598545925084576702e+01L),
13960     TEST_f_f (tgamma, -0x9.fffffp0L, 2.8896008370721717567612135720915723136310e-01L),
13961     TEST_f_f (tgamma, -0xa.00001p0L, -2.8895878754728051776830454190076999107021e-01L),
13962     TEST_f_f (tgamma, -0x13.ffffep0L, 2.1550026214525536756224040483579183652119e-13L),
13963     TEST_f_f (tgamma, -0x14.00002p0L, -2.1549777908265594916405421768142757507179e-13L),
13964     TEST_f_f (tgamma, -0x1d.ffffep0L, 1.9765721589464867957912772592816027583176e-27L),
13965     TEST_f_f (tgamma, -0x1e.00002p0L, -1.9765463890341964384070157599286498212650e-27L),
13966     TEST_f_f (tgamma, -0x27.ffffcp0L, 3.2129279441390812141195076945616975790225e-43L, UNDERFLOW_EXCEPTION_FLOAT),
13967     TEST_f_f (tgamma, -0x28.00004p0L, -3.2128372159115252365699015758097981155793e-43L, UNDERFLOW_EXCEPTION_FLOAT),
13968     TEST_f_f (tgamma, -0x28.ffffcp0L, -7.8364103489619817539676737414096652170685e-45L, UNDERFLOW_EXCEPTION_FLOAT),
13969     TEST_f_f (tgamma, -0x29.00004p0L, 7.8361876024016854597745353972619195760515e-45L, UNDERFLOW_EXCEPTION_FLOAT),
13970 #ifdef TEST_FLOAT
13971     TEST_f_f (tgamma, -0x29.ffffcp0L, plus_zero, UNDERFLOW_EXCEPTION_FLOAT),
13972     TEST_f_f (tgamma, -0x2a.00004p0L, minus_zero, UNDERFLOW_EXCEPTION_FLOAT),
13973 #else
13974     TEST_f_f (tgamma, -0x29.ffffcp0L, 1.8658121573125798145204120066590953505132e-46L),
13975     TEST_f_f (tgamma, -0x2a.00004p0L, -1.8657587834931410688246126853566488626385e-46L),
13976 #endif
13977 #ifndef TEST_FLOAT
13978     TEST_f_f (tgamma, 0x8.0000000000008p0L, 5.0400000000000180457125667322294144477136e+03L),
13979     TEST_f_f (tgamma, 0x7.ffffffffffffcp0L, 5.0399999999999909771437166339103165198442e+03L),
13980     TEST_f_f (tgamma, 0x7.0000000000004p0L, 7.2000000000000119762397445457359071259652e+02L),
13981     TEST_f_f (tgamma, 0x6.ffffffffffffcp0L, 7.1999999999999880237602554542848858572672e+02L),
13982     TEST_f_f (tgamma, 0x6.0000000000004p0L, 1.2000000000000018184042734842640022086408e+02L),
13983     TEST_f_f (tgamma, 0x5.ffffffffffffcp0L, 1.1999999999999981815957265157389249327533e+02L),
13984     TEST_f_f (tgamma, 0x5.0000000000004p0L, 2.4000000000000032104829055124673225982803e+01L),
13985     TEST_f_f (tgamma, 0x4.ffffffffffffcp0L, 2.3999999999999967895170944875373910918544e+01L),
13986     TEST_f_f (tgamma, 0x4.0000000000004p0L, 6.0000000000000066939396342309789716341613e+00L),
13987     TEST_f_f (tgamma, 0x3.ffffffffffffep0L, 5.9999999999999966530301828845138185025345e+00L),
13988     TEST_f_f (tgamma, 0x3.0000000000002p0L, 2.0000000000000008195971324717875960213536e+00L),
13989     TEST_f_f (tgamma, 0x2.ffffffffffffep0L, 1.9999999999999991804028675282128956223990e+00L),
13990     TEST_f_f (tgamma, 0x2.0000000000002p0L, 1.0000000000000001877539613108624482361963e+00L),
13991     TEST_f_f (tgamma, 0x1.fffffffffffffp0L, 9.9999999999999990612301934456883679778984e-01L),
13992     TEST_f_f (tgamma, 0x1.0000000000001p0L, 9.9999999999999987183237573039992418700531e-01L),
13993     TEST_f_f (tgamma, 0x0.fffffffffffff8p0L, 1.0000000000000000640838121348000744796665e+00L),
13994     TEST_f_f (tgamma, -0x0.fffffffffffff8p0L, -9.0071992547409924227843350984672961392521e+15L),
13995     TEST_f_f (tgamma, -0x1.0000000000001p0L, 4.5035996273704955772156649015331740980405e+15L),
13996     TEST_f_f (tgamma, -0x1.fffffffffffffp0L, 2.2517998136852484613921675492337776673289e+15L),
13997     TEST_f_f (tgamma, -0x2.0000000000002p0L, -1.1258999068426235386078324507668462444260e+15L),
13998     TEST_f_f (tgamma, -0x2.ffffffffffffep0L, -3.7529996894754154268627807196691509198813e+14L),
13999     TEST_f_f (tgamma, -0x3.0000000000002p0L, 3.7529996894754112398038859470009084971438e+14L),
14000     TEST_f_f (tgamma, -0x3.ffffffffffffep0L, 9.3824992236885396088236184658402406857503e+13L),
14001     TEST_f_f (tgamma, -0x4.0000000000004p0L, -4.6912496118442603911763815341745722862351e+13L),
14002     TEST_f_f (tgamma, -0x4.ffffffffffffcp0L, -9.3824992236885475509805702650262155809819e+12L),
14003     TEST_f_f (tgamma, -0x5.0000000000004p0L, 9.3824992236885191156860964016850034672946e+12L),
14004     TEST_f_f (tgamma, -0x5.ffffffffffffcp0L, 1.5637498706147581566449098589862357835505e+12L),
14005     TEST_f_f (tgamma, -0x6.0000000000004p0L, -1.5637498706147529544662012521330708016396e+12L),
14006     TEST_f_f (tgamma, -0x6.ffffffffffffcp0L, -2.2339283865925119357965832452642909859289e+11L),
14007     TEST_f_f (tgamma, -0x7.0000000000004p0L, 2.2339283865925039372192897706214475877342e+11L),
14008     TEST_f_f (tgamma, -0x7.ffffffffffffcp0L, 2.7924104832406402297655703264222230055898e+10L),
14009     TEST_f_f (tgamma, -0x8.0000000000008p0L, -1.3962052416203121511868106259843527348026e+10L),
14010     TEST_f_f (tgamma, -0x9.ffffffffffff8p0L, 1.5513391573559147700413058496716749249803e+08L),
14011     TEST_f_f (tgamma, -0xa.0000000000008p0L, -1.5513391573559018084419393002828541166901e+08L),
14012     TEST_f_f (tgamma, -0x13.ffffffffffffp0L, 1.1569515572952029402736625857313236848570e-04L),
14013     TEST_f_f (tgamma, -0x14.000000000001p0L, -1.1569515572951781096476686854873801225397e-04L),
14014     TEST_f_f (tgamma, -0x1d.ffffffffffffp0L, 1.0611571800204311628217068863959963842891e-18L),
14015     TEST_f_f (tgamma, -0x1e.000000000001p0L, -1.0611571800204053929094168642022073530425e-18L),
14016     TEST_f_f (tgamma, -0x27.fffffffffffep0L, 1.7249032006742266376460389310340465554361e-34L),
14017     TEST_f_f (tgamma, -0x28.000000000002p0L, -1.7249032006741359094184881234822934593822e-34L),
14018     TEST_f_f (tgamma, -0x28.fffffffffffep0L, -4.2070809772542120404320040128839297118648e-36L),
14019     TEST_f_f (tgamma, -0x29.000000000002p0L, 4.2070809772539892938717205103652583609422e-36L),
14020     TEST_f_f (tgamma, -0x29.fffffffffffep0L, 1.0016859469652887505173040814397197718981e-37L),
14021     TEST_f_f (tgamma, -0x2a.000000000002p0L, -1.0016859469652353766978684241048308120274e-37L),
14022     TEST_f_f (tgamma, -0x31.fffffffffffep0L, 4.6273774273632946947805289899230181990085e-51L),
14023     TEST_f_f (tgamma, -0x32.000000000002p0L, -4.6273774273630367887073532197576655720178e-51L),
14024     TEST_f_f (tgamma, -0x63.fffffffffffcp0L, 7.5400833348840965463348754984345825364294e-145L),
14025     TEST_f_f (tgamma, -0x64.000000000004p0L, -7.5400833348831085791638490135462230991587e-145L),
14026     TEST_f_f (tgamma, -0x95.fffffffffff8p0L, 6.1582369322723207086020016423767264008839e-250L),
14027     TEST_f_f (tgamma, -0x96.000000000008p0L, -6.1582369322705655439003240743176243138734e-250L),
14028     TEST_f_f (tgamma, -0xb4.fffffffffff8p0L, -9.6760879059917574597728750098636253931457e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14029     TEST_f_f (tgamma, -0xb5.000000000008p0L, 9.6760879059888966544677044221698800670218e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14030     TEST_f_f (tgamma, -0xb5.fffffffffff8p0L, 5.3165318164789884455066481673086605454904e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14031     TEST_f_f (tgamma, -0xb6.000000000008p0L, -5.3165318164774149139661976747137185876909e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14032     TEST_f_f (tgamma, -0xb6.fffffffffff8p0L, -2.9052086428846935908287469917922960610289e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14033     TEST_f_f (tgamma, -0xb7.000000000008p0L, 2.9052086428838328351126988236541632950925e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14034 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14035     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14036     TEST_f_f (tgamma, -0xb8.000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14037 # else
14038     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, 1.5789177406982032823826953250736039527543e-325L),
14039     TEST_f_f (tgamma, -0xb8.000000000008p0L, -1.5789177406977349925854817486109369828857e-325L),
14040 # endif
14041 #endif
14042 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14043     TEST_f_f (tgamma, 0x8.00000000000000000000000004p0L, 5.0400000000000000000000000000020034765587e+03L),
14044     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffep0L, 5.0399999999999999999999999999989982617206e+03L),
14045     TEST_f_f (tgamma, 0x7.00000000000000000000000002p0L, 7.2000000000000000000000000000013296297113e+02L),
14046     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffep0L, 7.1999999999999999999999999999986703702887e+02L),
14047     TEST_f_f (tgamma, 0x6.00000000000000000000000002p0L, 1.2000000000000000000000000000002018834292e+02L),
14048     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffep0L, 1.1999999999999999999999999999997981165708e+02L),
14049     TEST_f_f (tgamma, 0x5.00000000000000000000000002p0L, 2.4000000000000000000000000000003564352042e+01L),
14050     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffep0L, 2.3999999999999999999999999999996435647958e+01L),
14051     TEST_f_f (tgamma, 0x4.00000000000000000000000002p0L, 6.0000000000000000000000000000007431765907e+00L),
14052     TEST_f_f (tgamma, 0x3.ffffffffffffffffffffffffffp0L, 5.9999999999999999999999999999996284117046e+00L),
14053     TEST_f_f (tgamma, 0x3.00000000000000000000000001p0L, 2.0000000000000000000000000000000909935607e+00L),
14054     TEST_f_f (tgamma, 0x2.ffffffffffffffffffffffffffp0L, 1.9999999999999999999999999999999090064393e+00L),
14055     TEST_f_f (tgamma, 0x2.00000000000000000000000001p0L, 1.0000000000000000000000000000000208448771e+00L),
14056     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffff8p0L, 9.9999999999999999999999999999998957756146e-01L),
14057     TEST_f_f (tgamma, 0x1.000000000000000000000000008p0L, 9.9999999999999999999999999999998577053525e-01L),
14058     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffcp0L, 1.0000000000000000000000000000000071147324e+00L),
14059     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffcp0L, -8.1129638414606681695789005144064422784335e+31L),
14060     TEST_f_f (tgamma, -0x1.000000000000000000000000008p0L, 4.0564819207303340847894502572031577215665e+31L),
14061     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffff8p0L, 2.0282409603651670423947251286016461392168e+31L),
14062     TEST_f_f (tgamma, -0x2.00000000000000000000000001p0L, -1.0141204801825835211973625643007538607832e+31L),
14063     TEST_f_f (tgamma, -0x2.ffffffffffffffffffffffffffp0L, -3.3804016006086117373245418810028760196114e+30L),
14064     TEST_f_f (tgamma, -0x3.00000000000000000000000001p0L, 3.3804016006086117373245418810024573137219e+30L),
14065     TEST_f_f (tgamma, -0x3.ffffffffffffffffffffffffffp0L, 8.4510040015215293433113547025072942156952e+29L),
14066     TEST_f_f (tgamma, -0x4.00000000000000000000000002p0L, -4.2255020007607646716556773512527057843048e+29L),
14067     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffep0L, -8.4510040015215293433113547025080884313904e+28L),
14068     TEST_f_f (tgamma, -0x5.00000000000000000000000002p0L, 8.4510040015215293433113547025052449019430e+28L),
14069     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffep0L, 1.4085006669202548905518924504180378867132e+28L),
14070     TEST_f_f (tgamma, -0x6.00000000000000000000000002p0L, -1.4085006669202548905518924504175176688423e+28L),
14071     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffep0L, -2.0121438098860784150741320720257967542615e+27L),
14072     TEST_f_f (tgamma, -0x7.00000000000000000000000002p0L, 2.0121438098860784150741320720249968965322e+27L),
14073     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffep0L, 2.5151797623575980188426650900322769448110e+26L),
14074     TEST_f_f (tgamma, -0x8.00000000000000000000000004p0L, -1.2575898811787990094213325450153421028080e+26L),
14075     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffcp0L, 1.3973220901986655660237028277960625420495e+24L),
14076     TEST_f_f (tgamma, -0xa.00000000000000000000000004p0L, -1.3973220901986655660237028277947663821128e+24L),
14077     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffff8p0L, 1.0420893204640670202556853709074896123293e+12L),
14078     TEST_f_f (tgamma, -0x14.00000000000000000000000008p0L, -1.0420893204640670202556853709050065497299e+12L),
14079     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffff8p0L, 9.5580541610429641982963434151488827190079e-03L),
14080     TEST_f_f (tgamma, -0x1e.00000000000000000000000008p0L, -9.5580541610429641982963434151231128067179e-03L),
14081     TEST_f_f (tgamma, -0x27.fffffffffffffffffffffffffp0L, 1.5536546823612837336494536911280147806523e-18L),
14082     TEST_f_f (tgamma, -0x28.0000000000000000000000001p0L, -1.5536546823612837336494536911189419578973e-18L),
14083     TEST_f_f (tgamma, -0x28.fffffffffffffffffffffffffp0L, -3.7894016642958139845108626612879138384405e-20L),
14084     TEST_f_f (tgamma, -0x29.0000000000000000000000001p0L, 3.7894016642958139845108626612656391824122e-20L),
14085     TEST_f_f (tgamma, -0x29.fffffffffffffffffffffffffp0L, 9.0223849149900332964544349078285357440663e-22L),
14086     TEST_f_f (tgamma, -0x2a.0000000000000000000000001p0L, -9.0223849149900332964544349077751619246306e-22L),
14087     TEST_f_f (tgamma, -0x31.fffffffffffffffffffffffffp0L, 4.1679710515150795310771069868348482819424e-35L),
14088     TEST_f_f (tgamma, -0x32.0000000000000000000000001p0L, -4.1679710515150795310771069868090576746248e-35L),
14089     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffep0L, 6.7915032994648558610510614163560656864280e-129L),
14090     TEST_f_f (tgamma, -0x64.0000000000000000000000002p0L, -6.7915032994648558610510614162572689693253e-129L),
14091     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffcp0L, 5.5468467106873795353190582463444660395353e-234L),
14092     TEST_f_f (tgamma, -0x96.0000000000000000000000004p0L, -5.5468467106873795353190582461689495693675e-234L),
14093     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffcp0L, -8.7154451775644399729745472278589884205029e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14094     TEST_f_f (tgamma, -0xb5.0000000000000000000000004p0L, 8.7154451775644399729745472275729078899858e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14095     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffcp0L, 4.7887061415189230620739270482742524864974e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14096     TEST_f_f (tgamma, -0xb6.0000000000000000000000004p0L, -4.7887061415189230620739270481168993324524e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14097     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffcp0L, -2.6167793123054224382917634143575601407067e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14098     TEST_f_f (tgamma, -0xb7.0000000000000000000000004p0L, 2.6167793123054224382917634142714845691019e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14099     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffcp0L, 1.4221626697312078468976975078030462044826e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14100     TEST_f_f (tgamma, -0xb8.0000000000000000000000004p0L, -1.4221626697312078468976975077562172247612e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14101     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffcp0L, 1.1756150745511026776007338998283058108448e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14102     TEST_f_f (tgamma, -0xbc.0000000000000000000000004p0L, -1.1756150745511026776007338997894360215107e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14103     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffcp0L, -6.2201855796354639026493857133773832713743e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14104     TEST_f_f (tgamma, -0xbd.0000000000000000000000004p0L, 6.2201855796354639026493857131715153125175e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14105     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffcp0L, 3.2737818840186652119207293228302560914295e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14106     TEST_f_f (tgamma, -0xbe.0000000000000000000000004p0L, -3.2737818840186652119207293227217957948294e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14107 # if LDBL_MAX_EXP <= 1024
14108     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14109     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14110 # else
14111     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, -1.7140219288055838805867692789687487834686e-325L),
14112     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, 1.7140219288055838805867692789119066543632e-325L),
14113 # endif
14114 #endif
14115 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14116     TEST_f_f (tgamma, 0x8.000000000000001p0L, 5.0400000000000000088113830892247051102283e+03L),
14117     TEST_f_f (tgamma, 0x7.fffffffffffffff8p0L, 5.0399999999999999955943084553876474508520e+03L),
14118     TEST_f_f (tgamma, 0x7.0000000000000008p0L, 7.2000000000000000058477733127664675369681e+02L),
14119     TEST_f_f (tgamma, 0x6.fffffffffffffff8p0L, 7.1999999999999999941522266872335324679893e+02L),
14120     TEST_f_f (tgamma, 0x6.0000000000000008p0L, 1.2000000000000000008878927116622375680433e+02L),
14121     TEST_f_f (tgamma, 0x5.fffffffffffffff8p0L, 1.1999999999999999991121072883377624326546e+02L),
14122     TEST_f_f (tgamma, 0x5.0000000000000008p0L, 2.4000000000000000015676186062072582846211e+01L),
14123     TEST_f_f (tgamma, 0x4.fffffffffffffff8p0L, 2.3999999999999999984323813937927417165027e+01L),
14124     TEST_f_f (tgamma, 0x4.0000000000000008p0L, 6.0000000000000000032685252120268430507939e+00L),
14125     TEST_f_f (tgamma, 0x3.fffffffffffffffcp0L, 5.9999999999999999983657373939865784753909e+00L),
14126     TEST_f_f (tgamma, 0x3.0000000000000004p0L, 2.0000000000000000004001939123397399171482e+00L),
14127     TEST_f_f (tgamma, 0x2.fffffffffffffffcp0L, 1.9999999999999999995998060876602600829690e+00L),
14128     TEST_f_f (tgamma, 0x2.0000000000000004p0L, 1.0000000000000000000916767389213195151634e+00L),
14129     TEST_f_f (tgamma, 0x1.fffffffffffffffep0L, 9.9999999999999999995416163053934024243282e-01L),
14130     TEST_f_f (tgamma, 0x1.0000000000000002p0L, 9.9999999999999999993741815221210931418291e-01L),
14131     TEST_f_f (tgamma, 0x0.ffffffffffffffffp0L, 1.0000000000000000000312909238939453429173e+00L),
14132     TEST_f_f (tgamma, -0x0.ffffffffffffffffp0L, -1.8446744073709551616422784335098467139470e+19L),
14133     TEST_f_f (tgamma, -0x1.0000000000000002p0L, 9.2233720368547758075772156649015328607596e+18L),
14134     TEST_f_f (tgamma, -0x1.fffffffffffffffep0L, 4.6116860184273879044613921675492335697983e+18L),
14135     TEST_f_f (tgamma, -0x2.0000000000000004p0L, -2.3058430092136939515386078324507664305064e+18L),
14136     TEST_f_f (tgamma, -0x2.fffffffffffffffcp0L, -7.6861433640456465087601961140530007887063e+17L),
14137     TEST_f_f (tgamma, -0x3.0000000000000004p0L, 7.6861433640456465045731372192803325462836e+17L),
14138     TEST_f_f (tgamma, -0x3.fffffffffffffffcp0L, 1.9215358410114116272942156951799168638773e+17L),
14139     TEST_f_f (tgamma, -0x4.0000000000000008p0L, -9.6076792050570581270578430482008313684602e+16L),
14140     TEST_f_f (tgamma, -0x4.fffffffffffffff8p0L, -1.9215358410114116280884313903598337283601e+16L),
14141     TEST_f_f (tgamma, -0x5.0000000000000008p0L, 1.9215358410114116252449019429734996071487e+16L),
14142     TEST_f_f (tgamma, -0x5.fffffffffffffff8p0L, 3.2025597350190193803788671320812043622696e+15L),
14143     TEST_f_f (tgamma, -0x6.0000000000000008p0L, -3.2025597350190193751766884234743511972877e+15L),
14144     TEST_f_f (tgamma, -0x6.fffffffffffffff8p0L, -4.5750853357414562579675426149912896787735e+14L),
14145     TEST_f_f (tgamma, -0x7.0000000000000008p0L, 4.5750853357414562499689653215166468353753e+14L),
14146     TEST_f_f (tgamma, -0x7.fffffffffffffff8p0L, 5.7188566696768203227694481100089533685959e+13L),
14147     TEST_f_f (tgamma, -0x8.000000000000001p0L, -2.8594283348384101534210280804672371201060e+13L),
14148     TEST_f_f (tgamma, -0x9.fffffffffffffffp0L, 3.1771425942649001828476427167843945971988e+11L),
14149     TEST_f_f (tgamma, -0xa.000000000000001p0L, -3.1771425942649001698860433502350057763905e+11L),
14150     TEST_f_f (tgamma, -0x13.ffffffffffffffep0L, 2.3694367893405502075347562184931828448654e-01L),
14151     TEST_f_f (tgamma, -0x14.000000000000002p0L, -2.3694367893405501827041302245929389013031e-01L),
14152     TEST_f_f (tgamma, -0x1d.ffffffffffffffep0L, 2.1732499046818166459536268654187775086902e-15L),
14153     TEST_f_f (tgamma, -0x1e.000000000000002p0L, -2.1732499046818166201837145753965837196590e-15L),
14154     TEST_f_f (tgamma, -0x27.ffffffffffffffcp0L, 3.5326017549807232935581894777156474496719e-31L),
14155     TEST_f_f (tgamma, -0x28.000000000000004p0L, -3.5326017549807232028299619269080956965758e-31L),
14156     TEST_f_f (tgamma, -0x28.ffffffffffffffcp0L, -8.6161018414163982777002940498289948893044e-33L),
14157     TEST_f_f (tgamma, -0x29.000000000000004p0L, 8.6161018414163980549537337663264762179535e-33L),
14158     TEST_f_f (tgamma, -0x29.ffffffffffffffcp0L, 2.0514528193848567329552463626090806737389e-34L),
14159     TEST_f_f (tgamma, -0x2a.000000000000004p0L, -2.0514528193848566795814269269517457847791e-34L),
14160     TEST_f_f (tgamma, -0x31.ffffffffffffffcp0L, 9.4768689712397635680446279661359728835046e-48L),
14161     TEST_f_f (tgamma, -0x32.000000000000004p0L, -9.4768689712397633101385547903658075308777e-48L),
14162     TEST_f_f (tgamma, -0x63.ffffffffffffff8p0L, 1.5442090669841618542494279375256856430049e-141L),
14163     TEST_f_f (tgamma, -0x64.000000000000008p0L, -1.5442090669841617554527108348771968070612e-141L),
14164     TEST_f_f (tgamma, -0x95.ffffffffffffffp0L, 1.2612069237291916400144732227892704713839e-246L),
14165     TEST_f_f (tgamma, -0x96.00000000000001p0L, -1.2612069237291914644980030550324645611752e-246L),
14166     TEST_f_f (tgamma, -0xb4.ffffffffffffffp0L, -1.9816628031468191243385005680879281767694e-315L),
14167     TEST_f_f (tgamma, -0xb5.00000000000001p0L, 1.9816628031468188382579700510291588022368e-315L),
14168     TEST_f_f (tgamma, -0xb5.ffffffffffffffp0L, 1.0888257160147357826865964233809723297472e-317L),
14169     TEST_f_f (tgamma, -0xb6.00000000000001p0L, -1.0888257160147356253334423783317128355514e-317L),
14170     TEST_f_f (tgamma, -0xb6.ffffffffffffffp0L, -5.9498673006269714905418984659220067091260e-320L),
14171     TEST_f_f (tgamma, -0xb7.00000000000001p0L, 5.9498673006269706297861824177538685763601e-320L),
14172     TEST_f_f (tgamma, -0xb7.ffffffffffffffp0L, 3.2336235329494410277123118903958061569834e-322L),
14173     TEST_f_f (tgamma, -0xb8.00000000000001p0L, -3.2336235329494405594225146768193434900135e-322L),
14174     TEST_f_f (tgamma, -0xbb.ffffffffffffffp0L, 2.6730392040715350119087465463119939092815e-331L),
14175     TEST_f_f (tgamma, -0xbc.00000000000001p0L, -2.6730392040715346232108532050343031951651e-331L),
14176     TEST_f_f (tgamma, -0xbc.ffffffffffffffp0L, -1.4143064571807063556111222197839950086445e-333L),
14177     TEST_f_f (tgamma, -0xbd.00000000000001p0L, 1.4143064571807061497431633629389135273431e-333L),
14178     TEST_f_f (tgamma, -0xbd.ffffffffffffffp0L, 7.4437181956879281879706555863416819210399e-336L),
14179     TEST_f_f (tgamma, -0xbe.00000000000001p0L, -7.4437181956879271033676895858841525581153e-336L),
14180     TEST_f_f (tgamma, -0xbe.ffffffffffffffp0L, -3.8972346574282346536709453101948570578636e-338L),
14181     TEST_f_f (tgamma, -0xbf.00000000000001p0L, 3.8972346574282340852496542564155275274974e-338L),
14182     TEST_f_f (tgamma, -0xf9.ffffffffffffffp0L, 2.2289142548411573883553287678043297937797e-476L),
14183     TEST_f_f (tgamma, -0xfa.00000000000001p0L, -2.2289142548411570466476165308364665814265e-476L),
14184     TEST_f_f (tgamma, -0x1f3.fffffffffffffep0L, 2.9528489142763141594943668922610562530068e-1118L),
14185     TEST_f_f (tgamma, -0x1f4.00000000000002p0L, -2.9528489142763131406565394149878256133744e-1118L),
14186     TEST_f_f (tgamma, -0x2ed.fffffffffffffcp0L, 6.9801511765871818502006905472380418430269e-1817L),
14187     TEST_f_f (tgamma, -0x2ee.00000000000004p0L, -6.9801511765871767194421856376592926002995e-1817L),
14188     TEST_f_f (tgamma, -0x3e7.fffffffffffffcp0L, 4.4768809295877296071892611539415773519036e-2552L),
14189     TEST_f_f (tgamma, -0x3e8.00000000000004p0L, -4.4768809295877261735541135972060089530309e-2552L),
14190     TEST_f_f (tgamma, -0x4e1.fffffffffffff8p0L, 5.4651488569236507565341414077911790252381e-3315L),
14191     TEST_f_f (tgamma, -0x4e2.00000000000008p0L, -5.4651488569236421026544487194247355967789e-3315L),
14192     TEST_f_f (tgamma, -0x5db.fffffffffffff8p0L, 1.8718211510339187689122114747834510481993e-4099L),
14193     TEST_f_f (tgamma, -0x5dc.00000000000008p0L, -1.8718211510339157291960718369454861898499e-4099L),
14194     TEST_f_f (tgamma, -0x6d5.fffffffffffff8p0L, 4.2925786447266492555651378780094011518063e-4902L),
14195     TEST_f_f (tgamma, -0x6d6.00000000000008p0L, -4.2925786447266421378134368786479937285900e-4902L),
14196     TEST_f_f (tgamma, -0x6e2.fffffffffffff8p0L, -2.8229173528168668283609231628661510187536e-4944L, UNDERFLOW_EXCEPTION),
14197     TEST_f_f (tgamma, -0x6e3.00000000000008p0L, 2.8229173528168621428945467532322397890424e-4944L, UNDERFLOW_EXCEPTION),
14198     TEST_f_f (tgamma, -0x6e3.fffffffffffff8p0L, 1.6002932839097884515524894602387278842659e-4947L, UNDERFLOW_EXCEPTION),
14199     TEST_f_f (tgamma, -0x6e4.00000000000008p0L, -1.6002932839097857951909742110188634438017e-4947L, UNDERFLOW_EXCEPTION),
14200     TEST_f_f (tgamma, -0x6e4.fffffffffffff8p0L, -9.0668174725767051085164382743343408095146e-4951L, UNDERFLOW_EXCEPTION),
14201     TEST_f_f (tgamma, -0x6e5.00000000000008p0L, 9.0668174725766900571689083050287838090189e-4951L, UNDERFLOW_EXCEPTION),
14202 # if LDBL_MANT_DIG <= 64
14203     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION),
14204     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION),
14205 # else
14206     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, 5.1340982290921319983501912122292601780326e-4954L, UNDERFLOW_EXCEPTION),
14207     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, -5.1340982290921234748578193083614111497314e-4954L, UNDERFLOW_EXCEPTION),
14208 # endif
14209 # if LDBL_MANT_DIG >= 113
14210     TEST_f_f (tgamma, 0x8.0000000000000000000000000008p0L, 5.0400000000000000000000000000000156521606e+03L),
14211     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffffcp0L, 5.0399999999999999999999999999999921739197e+03L),
14212     TEST_f_f (tgamma, 0x7.0000000000000000000000000004p0L, 7.2000000000000000000000000000000103877321e+02L),
14213     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffffcp0L, 7.1999999999999999999999999999999896122679e+02L),
14214     TEST_f_f (tgamma, 0x6.0000000000000000000000000004p0L, 1.2000000000000000000000000000000015772143e+02L),
14215     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffffcp0L, 1.1999999999999999999999999999999984227857e+02L),
14216     TEST_f_f (tgamma, 0x5.0000000000000000000000000004p0L, 2.4000000000000000000000000000000027846500e+01L),
14217     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffffcp0L, 2.3999999999999999999999999999999972153500e+01L),
14218     TEST_f_f (tgamma, 0x4.0000000000000000000000000004p0L, 6.0000000000000000000000000000000058060671e+00L),
14219     TEST_f_f (tgamma, 0x3.fffffffffffffffffffffffffffep0L, 5.9999999999999999999999999999999970969664e+00L),
14220     TEST_f_f (tgamma, 0x3.0000000000000000000000000002p0L, 2.0000000000000000000000000000000007108872e+00L),
14221     TEST_f_f (tgamma, 0x2.fffffffffffffffffffffffffffep0L, 1.9999999999999999999999999999999992891128e+00L),
14222     TEST_f_f (tgamma, 0x2.0000000000000000000000000002p0L, 1.0000000000000000000000000000000001628506e+00L),
14223     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffffffp0L, 9.9999999999999999999999999999999991857470e-01L),
14224     TEST_f_f (tgamma, 0x1.0000000000000000000000000001p0L, 9.9999999999999999999999999999999988883231e-01L),
14225     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffff8p0L, 1.0000000000000000000000000000000000555838e+00L),
14226     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffff8p0L, -1.0384593717069655257060992658440192422784e+34L),
14227     TEST_f_f (tgamma, -0x1.0000000000000000000000000001p0L, 5.1922968585348276285304963292200955772157e+33L),
14228     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffffffp0L, 2.5961484292674138142652481646100484613922e+33L),
14229     TEST_f_f (tgamma, -0x2.0000000000000000000000000002p0L, -1.2980742146337069071326240823050235386078e+33L),
14230     TEST_f_f (tgamma, -0x2.fffffffffffffffffffffffffffep0L, -4.3269140487790230237754136076834154268628e+32L),
14231     TEST_f_f (tgamma, -0x3.0000000000000000000000000002p0L, 4.3269140487790230237754136076834112398039e+32L),
14232     TEST_f_f (tgamma, -0x3.fffffffffffffffffffffffffffep0L, 1.0817285121947557559438534019208539608824e+32L),
14233     TEST_f_f (tgamma, -0x4.0000000000000000000000000004p0L, -5.4086425609737787797192670096042603911764e+31L),
14234     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffffcp0L, -1.0817285121947557559438534019208547550981e+31L),
14235     TEST_f_f (tgamma, -0x5.0000000000000000000000000004p0L, 1.0817285121947557559438534019208519115686e+31L),
14236     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffffcp0L, 1.8028808536579262599064223365347581566449e+30L),
14237     TEST_f_f (tgamma, -0x6.0000000000000000000000000004p0L, -1.8028808536579262599064223365347529544662e+30L),
14238     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffffcp0L, -2.5755440766541803712948890521925119357966e+29L),
14239     TEST_f_f (tgamma, -0x7.0000000000000000000000000004p0L, 2.5755440766541803712948890521925039372193e+29L),
14240     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffffcp0L, 3.2194300958177254641186113152406402297656e+28L),
14241     TEST_f_f (tgamma, -0x8.0000000000000000000000000008p0L, -1.6097150479088627320593056576203121511868e+28L),
14242     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffff8p0L, 1.7885722754542919245103396195781369922635e+26L),
14243     TEST_f_f (tgamma, -0xa.0000000000000000000000000008p0L, -1.7885722754542919245103396195781240306642e+26L),
14244     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffffffp0L, 1.3338743301940057859272772747600099590309e+14L),
14245     TEST_f_f (tgamma, -0x14.000000000000000000000000001p0L, -1.3338743301940057859272772747599851284049e+14L),
14246     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffffffp0L, 1.2234309326134994173819319571374205986026e+00L),
14247     TEST_f_f (tgamma, -0x1e.000000000000000000000000001p0L, -1.2234309326134994173819319571373948286903e+00L),
14248     TEST_f_f (tgamma, -0x27.ffffffffffffffffffffffffffep0L, 1.9886779934224431790713007246380976767855e-16L),
14249     TEST_f_f (tgamma, -0x28.000000000000000000000000002p0L, -1.9886779934224431790713007246380069485580e-16L),
14250     TEST_f_f (tgamma, -0x28.ffffffffffffffffffffffffffep0L, -4.8504341302986419001739042064343853066259e-18L),
14251     TEST_f_f (tgamma, -0x29.000000000000000000000000002p0L, 4.8504341302986419001739042064341625600656e-18L),
14252     TEST_f_f (tgamma, -0x29.ffffffffffffffffffffffffffep0L, 1.1548652691187242619461676681986633377063e-19L),
14253     TEST_f_f (tgamma, -0x2a.000000000000000000000000002p0L, -1.1548652691187242619461676681986099638869e-19L),
14254     TEST_f_f (tgamma, -0x31.ffffffffffffffffffffffffffep0L, 5.3350029459393017997786969431322287652396e-33L),
14255     TEST_f_f (tgamma, -0x32.000000000000000000000000002p0L, -5.3350029459393017997786969431319708591664e-33L),
14256     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffffcp0L, 8.6931242233150155021453586128730281632676e-127L),
14257     TEST_f_f (tgamma, -0x64.000000000000000000000000004p0L, -8.6931242233150155021453586128720401960966e-127L),
14258     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffff8p0L, 7.0999637896798458052083945552094635720486e-232L),
14259     TEST_f_f (tgamma, -0x96.000000000000000000000000008p0L, -7.0999637896798458052083945552077084073470e-232L),
14260     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffff8p0L, -1.1155769827282483165407420451477844041365e-300L),
14261     TEST_f_f (tgamma, -0xb5.000000000000000000000000008p0L, 1.1155769827282483165407420451474983236060e-300L),
14262     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffff8p0L, 6.1295438611442215194546266216911239298981e-303L),
14263     TEST_f_f (tgamma, -0xb6.000000000000000000000000008p0L, -6.1295438611442215194546266216895503983577e-303L),
14264     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffff8p0L, -3.3494775197509407210134571703230189921356e-305L),
14265     TEST_f_f (tgamma, -0xb7.000000000000000000000000008p0L, 3.3494775197509407210134571703221582364195e-305L),
14266     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffff8p0L, 1.8203682172559460440290528099581627396147e-307L),
14267     TEST_f_f (tgamma, -0xb8.000000000000000000000000008p0L, -1.8203682172559460440290528099576944498174e-307L),
14268     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffff8p0L, 1.5047872954254114273289393917555491216542e-316L),
14269     TEST_f_f (tgamma, -0xbc.000000000000000000000000008p0L, -1.5047872954254114273289393917551604237609e-316L),
14270     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffff8p0L, -7.9618375419333937953912137129923244334851e-319L),
14271     TEST_f_f (tgamma, -0xbd.000000000000000000000000008p0L, 7.9618375419333937953912137129902657538965e-319L),
14272     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffff8p0L, 4.1904408115438914712585335331538555086887e-321L),
14273     TEST_f_f (tgamma, -0xbe.000000000000000000000000008p0L, -4.1904408115438914712585335331527709057227e-321L),
14274     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffff8p0L, -2.1939480688711473671510646770439036908579e-323L),
14275     TEST_f_f (tgamma, -0xbf.000000000000000000000000008p0L, 2.1939480688711473671510646770433352695669e-323L),
14276     TEST_f_f (tgamma, -0xf9.ffffffffffffffffffffffffff8p0L, 1.2547671759429278005937024349858508569625e-461L),
14277     TEST_f_f (tgamma, -0xfa.000000000000000000000000008p0L, -1.2547671759429278005937024349855091492502e-461L),
14278     TEST_f_f (tgamma, -0x1f3.ffffffffffffffffffffffffffp0L, 1.6623061587520224800948170558276526986560e-1103L),
14279     TEST_f_f (tgamma, -0x1f4.00000000000000000000000001p0L, -1.6623061587520224800948170558266338608285e-1103L),
14280     TEST_f_f (tgamma, -0x2ed.fffffffffffffffffffffffffep0L, 3.9294757797334687313030998663853566763041e-1802L),
14281     TEST_f_f (tgamma, -0x2ee.00000000000000000000000002p0L, -3.9294757797334687313030998663802259177992e-1802L),
14282     TEST_f_f (tgamma, -0x3e7.fffffffffffffffffffffffffep0L, 2.5202599107841713834679953735597552855978e-2537L),
14283     TEST_f_f (tgamma, -0x3e8.00000000000000000000000002p0L, -2.5202599107841713834679953735563216504503e-2537L),
14284     TEST_f_f (tgamma, -0x4e1.fffffffffffffffffffffffffcp0L, 3.0766052944457032773369415396747635242705e-3300L),
14285     TEST_f_f (tgamma, -0x4e2.00000000000000000000000004p0L, -3.0766052944457032773369415396661096445778e-3300L),
14286     TEST_f_f (tgamma, -0x5db.fffffffffffffffffffffffffcp0L, 1.0537416297875703295453200836588944487917e-4084L),
14287     TEST_f_f (tgamma, -0x5dc.00000000000000000000000004p0L, -1.0537416297875703295453200836558547326520e-4084L),
14288     TEST_f_f (tgamma, -0x6d5.fffffffffffffffffffffffffcp0L, 2.4165069481061837867659591369998698607387e-4887L),
14289     TEST_f_f (tgamma, -0x6d6.00000000000000000000000004p0L, -2.4165069481061837867659591369927521090377e-4887L),
14290     TEST_f_f (tgamma, -0x6e2.fffffffffffffffffffffffffcp0L, -1.5891611922804672355414813803008070609431e-4929L),
14291     TEST_f_f (tgamma, -0x6e3.00000000000000000000000004p0L, 1.5891611922804672355414813802961215945667e-4929L),
14292     TEST_f_f (tgamma, -0x6e3.fffffffffffffffffffffffffcp0L, 9.0088502963745308137272187091882496519917e-4933L, UNDERFLOW_EXCEPTION),
14293     TEST_f_f (tgamma, -0x6e4.00000000000000000000000004p0L, -9.0088502963745308137272187091616860368392e-4933L, UNDERFLOW_EXCEPTION),
14294     TEST_f_f (tgamma, -0x6e4.fffffffffffffffffffffffffcp0L, -5.1041644738665896961627301468488672286746e-4936L, UNDERFLOW_EXCEPTION),
14295     TEST_f_f (tgamma, -0x6e5.00000000000000000000000004p0L, 5.1041644738665896961627301468338158811446e-4936L, UNDERFLOW_EXCEPTION),
14296     TEST_f_f (tgamma, -0x6e5.fffffffffffffffffffffffffcp0L, 2.8902403589278537350864836618623260468143e-4939L, UNDERFLOW_EXCEPTION),
14297     TEST_f_f (tgamma, -0x6e6.00000000000000000000000004p0L, -2.8902403589278537350864836618538025544424e-4939L, UNDERFLOW_EXCEPTION),
14298     TEST_f_f (tgamma, -0x6eb.fffffffffffffffffffffffffcp0L, 9.4152481960798287090819640211017219042636e-4959L, UNDERFLOW_EXCEPTION),
14299     TEST_f_f (tgamma, -0x6ec.00000000000000000000000004p0L, -9.4152481960798287090819640210739431797168e-4959L, UNDERFLOW_EXCEPTION),
14300     TEST_f_f (tgamma, -0x6ec.fffffffffffffffffffffffffcp0L, -5.3103486723518492437010513373388172315540e-4962L, UNDERFLOW_EXCEPTION),
14301     TEST_f_f (tgamma, -0x6ed.00000000000000000000000004p0L, 5.3103486723518492437010513373231484108489e-4962L, UNDERFLOW_EXCEPTION),
14302     TEST_f_f (tgamma, -0x6ed.fffffffffffffffffffffffffcp0L, 2.9934321715624854812294539669328172615019e-4965L, UNDERFLOW_EXCEPTION),
14303     TEST_f_f (tgamma, -0x6ee.00000000000000000000000004p0L, -2.9934321715624854812294539669239841152754e-4965L, UNDERFLOW_EXCEPTION),
14304     TEST_f_f (tgamma, -0x6ee.fffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION),
14305     TEST_f_f (tgamma, -0x6ef.00000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION),
14306 # endif
14307 #endif
14308     TEST_f_f (tgamma, -0x1.0a32a2p+5L, 1.8125267978155035272941154746083439329912e-37L),
14309 #ifndef TEST_FLOAT
14310     TEST_f_f (tgamma, -0x1.5800000080001p+7L, -3.1439271448823567326093363350637118195240e-304L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14311 #endif
14312     TEST_f_f (tgamma, 18.5L, 1.4986120533153361177371791123515513270334e+15L),
14313     TEST_f_f (tgamma, 19.5L, 2.7724322986333718178137813578503699550119e+16L),
14314     TEST_f_f (tgamma, 23.5L, 5.3613035875444147334274983856108155717836e+21L),
14315     TEST_f_f (tgamma, 29.5L, 1.6348125198274266444378807806868221866931e+30L),
14316     TEST_f_f (tgamma, 30.5L, 4.8226969334909086010917483030261254507447e+31L),
14317     TEST_f_f (tgamma, 31.5L, 1.4709225647147271233329832324229682624771e+33L),
14318     TEST_f_f (tgamma, 32.5L, 4.6334060788513904384988971821323500268029e+34L),
14319     TEST_f_f (tgamma, 33.5L, 1.5058569756267018925121415841930137587110e+36L),
14320     TEST_f_f (tgamma, 34.5L, 5.0446208683494513399156743070465960916817e+37L),
14321     TEST_f_f (tgamma, 0x2.30a43cp+4L, 3.4027979115654976101247558405326779640190e+38L),
14322 #ifdef TEST_FLOAT
14323     TEST_f_f (tgamma, 0x2.30a44p+4L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14324 #else
14325     TEST_f_f (tgamma, 0x2.30a44p+4L, 3.4028438913396451054667218138127983367181e+38L),
14326 #endif
14327 #ifndef TEST_FLOAT
14328     TEST_f_f (tgamma, 0xa.b9fd72b0fb238p+4L, 1.7976931348622298700886249281842651388250e+308L),
14329 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14330     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14331 # else
14332     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, 1.7976931348624926129589466917917870782484e+308L),
14333 # endif
14334 #endif
14335 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14336     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f4p+4L, 1.7976931348623158079372897140307719334857e+308L),
14337 # if LDBL_MAX_EXP <= 1024
14338     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14339 # else
14340     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, 1.7976931348623158079372897140599422519044e+308L),
14341 # endif
14342 #endif
14343 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14344     TEST_f_f (tgamma, 0x6.db8c603359a97108p+8L, 1.1897314953572317517071551278058233700012e+4932L),
14345     TEST_f_f (tgamma, 0x6.db8c603359a9711p+8L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14346 # if LDBL_MANT_DIG >= 113
14347     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfdp+8L, 1.1897314953572317650857593266265995494998e+4932L),
14348     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfd4p+8L, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14349 # endif
14350 #endif
14351   };
14352
14353 static void
14354 tgamma_test (void)
14355 {
14356   START (tgamma);
14357   RUN_TEST_LOOP_f_f (tgamma, tgamma_test_data, );
14358   END;
14359 }
14360
14361
14362 static const struct test_f_f_data trunc_test_data[] =
14363   {
14364     TEST_f_f (trunc, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
14365     TEST_f_f (trunc, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
14366     TEST_f_f (trunc, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
14367
14368     TEST_f_f (trunc, 0, 0, NO_INEXACT_EXCEPTION),
14369     TEST_f_f (trunc, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
14370     /* Bug 15479: spurious "inexact" exception may occur.  */
14371     TEST_f_f (trunc, 0.1, 0),
14372     TEST_f_f (trunc, 0.25, 0),
14373     TEST_f_f (trunc, 0.625, 0),
14374     TEST_f_f (trunc, -0.1, minus_zero),
14375     TEST_f_f (trunc, -0.25, minus_zero),
14376     TEST_f_f (trunc, -0.625, minus_zero),
14377     TEST_f_f (trunc, 1, 1, NO_INEXACT_EXCEPTION),
14378     TEST_f_f (trunc, -1, -1, NO_INEXACT_EXCEPTION),
14379     TEST_f_f (trunc, 1.625, 1),
14380     TEST_f_f (trunc, -1.625, -1),
14381
14382     TEST_f_f (trunc, 1048580.625L, 1048580L),
14383     TEST_f_f (trunc, -1048580.625L, -1048580L),
14384
14385     TEST_f_f (trunc, 8388610.125L, 8388610.0L),
14386     TEST_f_f (trunc, -8388610.125L, -8388610.0L),
14387
14388     TEST_f_f (trunc, 4294967296.625L, 4294967296.0L),
14389     TEST_f_f (trunc, -4294967296.625L, -4294967296.0L),
14390
14391 #ifdef TEST_LDOUBLE
14392     /* The result can only be represented in long double.  */
14393     TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L),
14394     TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L),
14395     TEST_f_f (trunc, 4503599627370496.5L, 4503599627370496.0L),
14396     TEST_f_f (trunc, 4503599627370496.75L, 4503599627370496.0L),
14397     TEST_f_f (trunc, 4503599627370497.5L, 4503599627370497.0L),
14398
14399 # if LDBL_MANT_DIG > 100
14400     TEST_f_f (trunc, 4503599627370494.5000000000001L, 4503599627370494.0L),
14401     TEST_f_f (trunc, 4503599627370495.5000000000001L, 4503599627370495.0L),
14402     TEST_f_f (trunc, 4503599627370496.5000000000001L, 4503599627370496.0L),
14403 # endif
14404
14405     TEST_f_f (trunc, -4503599627370495.5L, -4503599627370495.0L),
14406     TEST_f_f (trunc, -4503599627370496.25L, -4503599627370496.0L),
14407     TEST_f_f (trunc, -4503599627370496.5L, -4503599627370496.0L),
14408     TEST_f_f (trunc, -4503599627370496.75L, -4503599627370496.0L),
14409     TEST_f_f (trunc, -4503599627370497.5L, -4503599627370497.0L),
14410
14411 # if LDBL_MANT_DIG > 100
14412     TEST_f_f (trunc, -4503599627370494.5000000000001L, -4503599627370494.0L),
14413     TEST_f_f (trunc, -4503599627370495.5000000000001L, -4503599627370495.0L),
14414     TEST_f_f (trunc, -4503599627370496.5000000000001L, -4503599627370496.0L),
14415 # endif
14416
14417     TEST_f_f (trunc, 9007199254740991.5L, 9007199254740991.0L),
14418     TEST_f_f (trunc, 9007199254740992.25L, 9007199254740992.0L),
14419     TEST_f_f (trunc, 9007199254740992.5L, 9007199254740992.0L),
14420     TEST_f_f (trunc, 9007199254740992.75L, 9007199254740992.0L),
14421     TEST_f_f (trunc, 9007199254740993.5L, 9007199254740993.0L),
14422
14423 # if LDBL_MANT_DIG > 100
14424     TEST_f_f (trunc, 9007199254740991.0000000000001L, 9007199254740991.0L),
14425     TEST_f_f (trunc, 9007199254740992.0000000000001L, 9007199254740992.0L),
14426     TEST_f_f (trunc, 9007199254740993.0000000000001L, 9007199254740993.0L),
14427     TEST_f_f (trunc, 9007199254740991.5000000000001L, 9007199254740991.0L),
14428     TEST_f_f (trunc, 9007199254740992.5000000000001L, 9007199254740992.0L),
14429     TEST_f_f (trunc, 9007199254740993.5000000000001L, 9007199254740993.0L),
14430 # endif
14431
14432     TEST_f_f (trunc, -9007199254740991.5L, -9007199254740991.0L),
14433     TEST_f_f (trunc, -9007199254740992.25L, -9007199254740992.0L),
14434     TEST_f_f (trunc, -9007199254740992.5L, -9007199254740992.0L),
14435     TEST_f_f (trunc, -9007199254740992.75L, -9007199254740992.0L),
14436     TEST_f_f (trunc, -9007199254740993.5L, -9007199254740993.0L),
14437
14438 # if LDBL_MANT_DIG > 100
14439     TEST_f_f (trunc, -9007199254740991.0000000000001L, -9007199254740991.0L),
14440     TEST_f_f (trunc, -9007199254740992.0000000000001L, -9007199254740992.0L),
14441     TEST_f_f (trunc, -9007199254740993.0000000000001L, -9007199254740993.0L),
14442     TEST_f_f (trunc, -9007199254740991.5000000000001L, -9007199254740991.0L),
14443     TEST_f_f (trunc, -9007199254740992.5000000000001L, -9007199254740992.0L),
14444     TEST_f_f (trunc, -9007199254740993.5000000000001L, -9007199254740993.0L),
14445 # endif
14446
14447     TEST_f_f (trunc, 72057594037927935.5L, 72057594037927935.0L),
14448     TEST_f_f (trunc, 72057594037927936.25L, 72057594037927936.0L),
14449     TEST_f_f (trunc, 72057594037927936.5L, 72057594037927936.0L),
14450     TEST_f_f (trunc, 72057594037927936.75L, 72057594037927936.0L),
14451     TEST_f_f (trunc, 72057594037927937.5L, 72057594037927937.0L),
14452
14453     TEST_f_f (trunc, -72057594037927935.5L, -72057594037927935.0L),
14454     TEST_f_f (trunc, -72057594037927936.25L, -72057594037927936.0L),
14455     TEST_f_f (trunc, -72057594037927936.5L, -72057594037927936.0L),
14456     TEST_f_f (trunc, -72057594037927936.75L, -72057594037927936.0L),
14457     TEST_f_f (trunc, -72057594037927937.5L, -72057594037927937.0L),
14458
14459     TEST_f_f (trunc, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
14460     TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
14461     TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
14462     TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
14463     TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
14464 #endif
14465   };
14466
14467 static void
14468 trunc_test (void)
14469 {
14470   START (trunc);
14471   RUN_TEST_LOOP_f_f (trunc, trunc_test_data, );
14472   END;
14473 }
14474
14475 static const struct test_f_f_data y0_test_data[] =
14476   {
14477     /* y0 is the Bessel function of the second kind of order 0 */
14478     TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
14479     TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
14480     TEST_f_f (y0, 0.0, minus_infty),
14481     TEST_f_f (y0, qnan_value, qnan_value),
14482     TEST_f_f (y0, plus_infty, 0),
14483
14484     TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L),
14485     TEST_f_f (y0, 0.75L, -0.137172769385772397522814379396581855L),
14486     TEST_f_f (y0, 1.0, 0.0882569642156769579829267660235151628L),
14487     TEST_f_f (y0, 1.5, 0.382448923797758843955068554978089862L),
14488     TEST_f_f (y0, 2.0, 0.510375672649745119596606592727157873L),
14489     TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L),
14490     TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L),
14491
14492     TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L),
14493
14494 #ifndef TEST_FLOAT
14495     TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
14496     TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
14497 #endif
14498
14499 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14500     TEST_f_f (y0, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
14501     TEST_f_f (y0, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
14502 #endif
14503
14504     TEST_f_f (y0, 0x1p-10L, -4.4865150767109739412411806297168793661098L),
14505     TEST_f_f (y0, 0x1p-20L, -8.8992283012125827603076426611387876938160L),
14506     TEST_f_f (y0, 0x1p-30L, -1.3311940304267782826037118027401817264906e+1L),
14507     TEST_f_f (y0, 0x1p-40L, -1.7724652307320814696990854700366226762563e+1L),
14508     TEST_f_f (y0, 0x1p-50L, -2.2137364310373846564919987139743760738155e+1L),
14509     TEST_f_f (y0, 0x1p-60L, -2.6550076313426878432849115782108205929120e+1L),
14510     TEST_f_f (y0, 0x1p-70L, -3.0962788316479910300778244424468159753887e+1L),
14511     TEST_f_f (y0, 0x1p-80L, -3.5375500319532942168707373066828113573541e+1L),
14512     TEST_f_f (y0, 0x1p-90L, -3.9788212322585974036636501709188067393195e+1L),
14513     TEST_f_f (y0, 0x1p-100L, -4.420092432563900590456563035154802121284e+1L),
14514     TEST_f_f (y0, 0x1p-110L, -4.861363632869203777249475899390797503250e+1L),
14515   };
14516
14517 static void
14518 y0_test (void)
14519 {
14520   START (y0);
14521   RUN_TEST_LOOP_f_f (y0, y0_test_data, );
14522   END;
14523 }
14524
14525
14526 static const struct test_f_f_data y1_test_data[] =
14527   {
14528     /* y1 is the Bessel function of the second kind of order 1 */
14529     TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
14530     TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
14531     TEST_f_f (y1, 0.0, minus_infty),
14532     TEST_f_f (y1, plus_infty, 0),
14533     TEST_f_f (y1, qnan_value, qnan_value),
14534
14535     TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L),
14536     TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L),
14537     TEST_f_f (y1, 1.0, -0.781212821300288716547150000047964821L),
14538     TEST_f_f (y1, 1.5, -0.412308626973911295952829820633445323L),
14539     TEST_f_f (y1, 2.0, -0.107032431540937546888370772277476637L),
14540     TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L),
14541     TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L),
14542
14543     TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L),
14544
14545 #ifndef TEST_FLOAT
14546     TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L),
14547     TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L),
14548 #endif
14549
14550 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14551     TEST_f_f (y1, 0x1p16382L, 1.2193782500509000574176799046642541129387e-2466L),
14552     TEST_f_f (y1, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L),
14553 #endif
14554
14555     TEST_f_f (y1, 0x1p-10L, -6.5190099301063115047395187618929589514382e+02L),
14556     TEST_f_f (y1, 0x1p-20L, -6.6754421443450423911167962313100637952285e+05L),
14557     TEST_f_f (y1, 0x1p-30L, -6.8356527557643159612937462812258975438856e+08L),
14558     TEST_f_f (y1, 0x1p-40L, -6.9997084219026594793707805777425993547887e+11L),
14559     TEST_f_f (y1, 0x1p-50L, -7.1677014240283233068755952926181262431559e+14L),
14560     TEST_f_f (y1, 0x1p-60L, -7.3397262582050030662406095795388448059822e+17L),
14561     TEST_f_f (y1, 0x1p-70L, -7.5158796884019231398303842094477769620063e+20L),
14562     TEST_f_f (y1, 0x1p-80L, -7.6962608009235692951863134304745236090943e+23L),
14563     TEST_f_f (y1, 0x1p-90L, -7.8809710601457349582707849528059121757126e+26L),
14564     TEST_f_f (y1, 0x1p-100L, -8.0701143655892325972692837916732540679297e+29L),
14565     TEST_f_f (y1, 0x1p-110L, -8.2637971103633741796037466026734121655600e+32L),
14566   };
14567
14568 static void
14569 y1_test (void)
14570 {
14571   START (y1);
14572   RUN_TEST_LOOP_f_f (y1, y1_test_data, );
14573   END;
14574 }
14575
14576
14577 static const struct test_if_f_data yn_test_data[] =
14578   {
14579     /* yn is the Bessel function of the second kind of order n */
14580     /* yn (0, x) == y0 (x)  */
14581     TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
14582     TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
14583     TEST_if_f (yn, 0, 0.0, minus_infty),
14584     TEST_if_f (yn, 0, qnan_value, qnan_value),
14585     TEST_if_f (yn, 0, plus_infty, 0),
14586
14587     TEST_if_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L),
14588     TEST_if_f (yn, 0, 0.75L, -0.137172769385772397522814379396581855L),
14589     TEST_if_f (yn, 0, 1.0, 0.0882569642156769579829267660235151628L),
14590     TEST_if_f (yn, 0, 1.5, 0.382448923797758843955068554978089862L),
14591     TEST_if_f (yn, 0, 2.0, 0.510375672649745119596606592727157873L),
14592     TEST_if_f (yn, 0, 8.0, 0.223521489387566220527323400498620359L),
14593     TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L),
14594
14595     /* yn (1, x) == y1 (x)  */
14596     TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
14597     TEST_if_f (yn, 1, 0.0, minus_infty),
14598     TEST_if_f (yn, 1, plus_infty, 0),
14599     TEST_if_f (yn, 1, qnan_value, qnan_value),
14600
14601     TEST_if_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L),
14602     TEST_if_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L),
14603     TEST_if_f (yn, 1, 1.0, -0.781212821300288716547150000047964821L),
14604     TEST_if_f (yn, 1, 1.5, -0.412308626973911295952829820633445323L),
14605     TEST_if_f (yn, 1, 2.0, -0.107032431540937546888370772277476637L),
14606     TEST_if_f (yn, 1, 8.0, -0.158060461731247494255555266187483550L),
14607     TEST_if_f (yn, 1, 10.0, 0.249015424206953883923283474663222803L),
14608
14609     /* yn (3, x)  */
14610     TEST_if_f (yn, 3, plus_infty, 0),
14611     TEST_if_f (yn, 3, qnan_value, qnan_value),
14612
14613     TEST_if_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L),
14614     TEST_if_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L),
14615     TEST_if_f (yn, 3, 1.0, -5.82151760596472884776175706442981440L),
14616     TEST_if_f (yn, 3, 2.0, -1.12778377684042778608158395773179238L),
14617     TEST_if_f (yn, 3, 10.0, -0.251362657183837329779204747654240998L),
14618
14619     /* yn (10, x)  */
14620     TEST_if_f (yn, 10, plus_infty, 0),
14621     TEST_if_f (yn, 10, qnan_value, qnan_value),
14622
14623     TEST_if_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L),
14624     TEST_if_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L),
14625     TEST_if_f (yn, 10, 1.0, -121618014.278689189288130426667971145L),
14626     TEST_if_f (yn, 10, 2.0, -129184.542208039282635913145923304214L),
14627     TEST_if_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L),
14628
14629     /* Check whether yn returns correct value for LDBL_MIN, DBL_MIN,
14630        and FLT_MIN.  See Bug 14173.  */
14631     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14632
14633     TEST_if_f (yn, 2, 0x1.ffff62p+99L, -5.5244413477397111790415387179517953221757e-16L),
14634     TEST_if_f (yn, 2, 0x1p127L, 6.8569250690166637098111268958532649249771e-21L),
14635 #ifndef TEST_FLOAT
14636     TEST_if_f (yn, 2, 0x1p1023L, -8.2687542933709649327986678723012001545638e-155L),
14637 #endif
14638 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14639     TEST_if_f (yn, 2, 0x1p16383L, 3.8895531955766020648617743624167352352217e-2467L),
14640 #endif
14641   };
14642
14643 static void
14644 yn_test (void)
14645 {
14646   START (yn);
14647   RUN_TEST_LOOP_if_f (yn, yn_test_data, );
14648   END;
14649 }
14650
14651
14652 static const struct test_f_f_data significand_test_data[] =
14653   {
14654     /* significand returns the mantissa of the exponential representation.  */
14655     /* TODO: missing +/-Inf as well as qNaN tests.  */
14656     TEST_f_f (significand, 4.0, 1.0, NO_INEXACT_EXCEPTION),
14657     TEST_f_f (significand, 6.0, 1.5, NO_INEXACT_EXCEPTION),
14658     TEST_f_f (significand, 8.0, 1.0, NO_INEXACT_EXCEPTION),
14659   };
14660
14661 static void
14662 significand_test (void)
14663 {
14664   START (significand);
14665   RUN_TEST_LOOP_f_f (significand, significand_test_data, );
14666   END;
14667 }
14668
14669
14670 static void
14671 initialize (void)
14672 {
14673   fpstack_test ("start *init*");
14674
14675   /* Clear all exceptions.  From now on we must not get random exceptions.  */
14676   feclearexcept (FE_ALL_EXCEPT);
14677   errno = 0;
14678
14679   /* Test to make sure we start correctly.  */
14680   fpstack_test ("end *init*");
14681 }
14682
14683 /* Definitions of arguments for argp functions.  */
14684 static const struct argp_option options[] =
14685 {
14686   { "verbose", 'v', "NUMBER", 0, "Level of verbosity (0..3)"},
14687   { "ulps-file", 'u', NULL, 0, "Output ulps to file ULPs"},
14688   { "no-max-error", 'f', NULL, 0,
14689     "Don't output maximal errors of functions"},
14690   { "no-points", 'p', NULL, 0,
14691     "Don't output results of functions invocations"},
14692   { "ignore-max-ulp", 'i', "yes/no", 0,
14693     "Ignore given maximal errors"},
14694   { "output-dir", 'o', "DIR", 0,
14695     "Directory where generated files will be placed"},
14696   { NULL, 0, NULL, 0, NULL }
14697 };
14698
14699 /* Short description of program.  */
14700 static const char doc[] = "Math test suite: " TEST_MSG ;
14701
14702 /* Prototype for option handler.  */
14703 static error_t parse_opt (int key, char *arg, struct argp_state *state);
14704
14705 /* Data structure to communicate with argp functions.  */
14706 static struct argp argp =
14707 {
14708   options, parse_opt, NULL, doc,
14709 };
14710
14711
14712 /* Handle program arguments.  */
14713 static error_t
14714 parse_opt (int key, char *arg, struct argp_state *state)
14715 {
14716   switch (key)
14717     {
14718     case 'f':
14719       output_max_error = 0;
14720       break;
14721     case 'i':
14722       if (strcmp (arg, "yes") == 0)
14723         ignore_max_ulp = 1;
14724       else if (strcmp (arg, "no") == 0)
14725         ignore_max_ulp = 0;
14726       break;
14727     case 'o':
14728       output_dir = (char *) malloc (strlen (arg) + 1);
14729       if (output_dir != NULL)
14730         strcpy (output_dir, arg);
14731       else
14732         return errno;
14733       break;
14734     case 'p':
14735       output_points = 0;
14736       break;
14737     case 'u':
14738       output_ulps = 1;
14739       break;
14740     case 'v':
14741       if (optarg)
14742         verbose = (unsigned int) strtoul (optarg, NULL, 0);
14743       else
14744         verbose = 3;
14745       break;
14746     default:
14747       return ARGP_ERR_UNKNOWN;
14748     }
14749   return 0;
14750 }
14751
14752 /* Verify that our ulp () implementation is behaving as expected
14753    or abort.  */
14754 void
14755 check_ulp (void)
14756 {
14757    FLOAT ulps, ulpx, value;
14758    int i;
14759    /* Check ulp of zero is a subnormal value...  */
14760    ulps = ulp (0x0.0p0);
14761    if (fpclassify (ulps) != FP_SUBNORMAL)
14762      {
14763        fprintf (stderr, "ulp (0x0.0p0) is not FP_SUBNORMAL!\n");
14764        exit (EXIT_FAILURE);
14765      }
14766    /* Check that the ulp of one is a normal value... */
14767    ulps = ulp (1.0L);
14768    if (fpclassify (ulps) != FP_NORMAL)
14769      {
14770        fprintf (stderr, "ulp (1.0L) is not FP_NORMAL\n");
14771        exit (EXIT_FAILURE);
14772      }
14773
14774    /* Compute the next subnormal value using nextafter to validate ulp.
14775       We allow +/- 1 ulp around the represented value.  */
14776    value = FUNC(nextafter) (0, 1);
14777    ulps = ULPDIFF (value, 0);
14778    ulpx = ulp (1.0L);
14779    if (ulps < (1.0L - ulpx) || ulps > (1.0L + ulpx))
14780      {
14781        fprintf (stderr, "Value outside of 1 +/- 1ulp.\n");
14782        exit (EXIT_FAILURE);
14783      }
14784    /* Compute the nearest representable number from 10 towards 20.
14785       The result is 10 + 1ulp.  We use this to check the ulp function.
14786       We allow +/- 1 ulp around the represented value.  */
14787    value = FUNC(nextafter) (10, 20);
14788    ulps = ULPDIFF (value, 10);
14789    ulpx = ulp (1.0L);
14790    if (ulps < (1.0L - ulpx) || ulps > (1.0L + ulpx))
14791      {
14792        fprintf (stderr, "Value outside of 1 +/- 1ulp.\n");
14793        exit (EXIT_FAILURE);
14794      }
14795    /* This gives one more ulp.  */
14796    value = FUNC(nextafter) (value, 20);
14797    ulps = ULPDIFF (value, 10);
14798    ulpx = ulp (2.0L);
14799    if (ulps < (2.0L - ulpx) || ulps > (2.0L + ulpx))
14800      {
14801        fprintf (stderr, "Value outside of 2 +/- 1ulp.\n");
14802        exit (EXIT_FAILURE);
14803      }
14804    /* And now calculate 100 ulp.  */
14805    for (i = 2; i < 100; i++)
14806      value = FUNC(nextafter) (value, 20);
14807    ulps = ULPDIFF (value, 10);
14808    ulpx = ulp (100.0L);
14809    if (ulps < (100.0L - ulpx) || ulps > (100.0L + ulpx))
14810      {
14811        fprintf (stderr, "Value outside of 100 +/- 1ulp.\n");
14812        exit (EXIT_FAILURE);
14813      }
14814 }
14815
14816 int
14817 main (int argc, char **argv)
14818 {
14819
14820   int remaining;
14821   char *ulps_file_path;
14822   size_t dir_len = 0;
14823
14824   verbose = 1;
14825   output_ulps = 0;
14826   output_max_error = 1;
14827   output_points = 1;
14828   output_dir = NULL;
14829   /* XXX set to 0 for releases.  */
14830   ignore_max_ulp = 0;
14831
14832   /* Parse and process arguments.  */
14833   argp_parse (&argp, argc, argv, 0, &remaining, NULL);
14834
14835   if (remaining != argc)
14836     {
14837       fprintf (stderr, "wrong number of arguments");
14838       argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
14839       exit (EXIT_FAILURE);
14840     }
14841
14842   if (output_ulps)
14843     {
14844       if (output_dir != NULL)
14845         dir_len = strlen (output_dir);
14846       ulps_file_path = (char *) malloc (dir_len + strlen (ulps_file_name) + 1);
14847       if (ulps_file_path == NULL)
14848         {
14849           perror ("can't allocate path for `ULPs' file: ");
14850           exit (1);
14851         }
14852       sprintf (ulps_file_path, "%s%s", output_dir == NULL ? "" : output_dir, ulps_file_name);
14853       ulps_file = fopen (ulps_file_path, "a");
14854       if (ulps_file == NULL)
14855         {
14856           perror ("can't open file `ULPs' for writing: ");
14857           exit (1);
14858         }
14859     }
14860
14861
14862   initialize ();
14863   printf (TEST_MSG);
14864
14865   check_ulp ();
14866
14867   /* Keep the tests a wee bit ordered (according to ISO C99).  */
14868   /* Classification macros:  */
14869   finite_test ();
14870   fpclassify_test ();
14871   isfinite_test ();
14872   isinf_test ();
14873   isnan_test ();
14874   isnormal_test ();
14875   issignaling_test ();
14876   signbit_test ();
14877
14878   /* Trigonometric functions:  */
14879   acos_test ();
14880   acos_test_tonearest ();
14881   acos_test_towardzero ();
14882   acos_test_downward ();
14883   acos_test_upward ();
14884   asin_test ();
14885   asin_test_tonearest ();
14886   asin_test_towardzero ();
14887   asin_test_downward ();
14888   asin_test_upward ();
14889   atan_test ();
14890   atan2_test ();
14891   cos_test ();
14892   cos_test_tonearest ();
14893   cos_test_towardzero ();
14894   cos_test_downward ();
14895   cos_test_upward ();
14896   sin_test ();
14897   sin_test_tonearest ();
14898   sin_test_towardzero ();
14899   sin_test_downward ();
14900   sin_test_upward ();
14901   sincos_test ();
14902   tan_test ();
14903   tan_test_tonearest ();
14904   tan_test_towardzero ();
14905   tan_test_downward ();
14906   tan_test_upward ();
14907
14908   /* Hyperbolic functions:  */
14909   acosh_test ();
14910   asinh_test ();
14911   atanh_test ();
14912   cosh_test ();
14913   cosh_test_tonearest ();
14914   cosh_test_towardzero ();
14915   cosh_test_downward ();
14916   cosh_test_upward ();
14917   sinh_test ();
14918   sinh_test_tonearest ();
14919   sinh_test_towardzero ();
14920   sinh_test_downward ();
14921   sinh_test_upward ();
14922   tanh_test ();
14923
14924   /* Exponential and logarithmic functions:  */
14925   exp_test ();
14926   exp_test_tonearest ();
14927   exp_test_towardzero ();
14928   exp_test_downward ();
14929   exp_test_upward ();
14930   exp10_test ();
14931   exp2_test ();
14932   expm1_test ();
14933   frexp_test ();
14934   ldexp_test ();
14935   log_test ();
14936   log10_test ();
14937   log1p_test ();
14938   log2_test ();
14939   logb_test ();
14940   logb_test_downward ();
14941   modf_test ();
14942   pow10_test ();
14943   ilogb_test ();
14944   scalb_test ();
14945   scalbn_test ();
14946   scalbln_test ();
14947   significand_test ();
14948
14949   /* Power and absolute value functions:  */
14950   cbrt_test ();
14951   fabs_test ();
14952   hypot_test ();
14953   pow_test ();
14954   pow_test_tonearest ();
14955   pow_test_towardzero ();
14956   pow_test_downward ();
14957   pow_test_upward ();
14958   sqrt_test ();
14959
14960   /* Error and gamma functions:  */
14961   erf_test ();
14962   erfc_test ();
14963   gamma_test ();
14964   lgamma_test ();
14965   tgamma_test ();
14966
14967   /* Nearest integer functions:  */
14968   ceil_test ();
14969   floor_test ();
14970   nearbyint_test ();
14971   rint_test ();
14972   rint_test_tonearest ();
14973   rint_test_towardzero ();
14974   rint_test_downward ();
14975   rint_test_upward ();
14976   lrint_test ();
14977   lrint_test_tonearest ();
14978   lrint_test_towardzero ();
14979   lrint_test_downward ();
14980   lrint_test_upward ();
14981   llrint_test ();
14982   llrint_test_tonearest ();
14983   llrint_test_towardzero ();
14984   llrint_test_downward ();
14985   llrint_test_upward ();
14986   round_test ();
14987   lround_test ();
14988   llround_test ();
14989   trunc_test ();
14990
14991   /* Remainder functions:  */
14992   drem_test ();
14993   drem_test_tonearest ();
14994   drem_test_towardzero ();
14995   drem_test_downward ();
14996   drem_test_upward ();
14997   fmod_test ();
14998   remainder_test ();
14999   remainder_test_tonearest ();
15000   remainder_test_towardzero ();
15001   remainder_test_downward ();
15002   remainder_test_upward ();
15003   remquo_test ();
15004
15005   /* Manipulation functions:  */
15006   copysign_test ();
15007   nextafter_test ();
15008   nexttoward_test ();
15009
15010   /* maximum, minimum and positive difference functions */
15011   fdim_test ();
15012   fmax_test ();
15013   fmin_test ();
15014
15015   /* Multiply and add:  */
15016   fma_test ();
15017   fma_test_towardzero ();
15018   fma_test_downward ();
15019   fma_test_upward ();
15020
15021   /* Comparison macros:  */
15022   isgreater_test ();
15023   isgreaterequal_test ();
15024   isless_test ();
15025   islessequal_test ();
15026   islessgreater_test ();
15027   isunordered_test ();
15028
15029   /* Complex functions:  */
15030   cabs_test ();
15031   cacos_test ();
15032   cacosh_test ();
15033   carg_test ();
15034   casin_test ();
15035   casinh_test ();
15036   catan_test ();
15037   catanh_test ();
15038   ccos_test ();
15039   ccosh_test ();
15040   cexp_test ();
15041   cimag_test ();
15042   clog10_test ();
15043   clog_test ();
15044   conj_test ();
15045   cpow_test ();
15046   cproj_test ();
15047   creal_test ();
15048   csin_test ();
15049   csinh_test ();
15050   csqrt_test ();
15051   ctan_test ();
15052   ctan_test_tonearest ();
15053   ctan_test_towardzero ();
15054   ctan_test_downward ();
15055   ctan_test_upward ();
15056   ctanh_test ();
15057   ctanh_test_tonearest ();
15058   ctanh_test_towardzero ();
15059   ctanh_test_downward ();
15060   ctanh_test_upward ();
15061
15062   /* Bessel functions:  */
15063   j0_test ();
15064   j1_test ();
15065   jn_test ();
15066   y0_test ();
15067   y1_test ();
15068   yn_test ();
15069
15070   if (output_ulps)
15071     fclose (ulps_file);
15072
15073   printf ("\nTest suite completed:\n");
15074   printf ("  %d test cases plus %d tests for exception flags and\n"
15075           "    %d tests for errno executed.\n",
15076           noTests, noExcTests, noErrnoTests);
15077   if (noErrors)
15078     {
15079       printf ("  %d errors occurred.\n", noErrors);
15080       return 1;
15081     }
15082   printf ("  All tests passed successfully.\n");
15083
15084   return 0;
15085 }
15086
15087 /*
15088  * Local Variables:
15089  * mode:c
15090  * End:
15091  */