]> git.ipfire.org Git - thirdparty/glibc.git/blame - math/libm-test.inc
ARM: Add Cortex-A15 optimized NEON and VFP memcpy routines, with IFUNC.
[thirdparty/glibc.git] / math / libm-test.inc
CommitLineData
568035b7 1/* Copyright (C) 1997-2013 Free Software Foundation, Inc.
8847214f 2 This file is part of the GNU C Library.
18394a08 3 Contributed by Andreas Jaeger <aj@suse.de>, 1997.
8847214f
UD
4
5 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
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.
8847214f
UD
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
41bdb6e2 13 Lesser General Public License for more details.
8847214f 14
41bdb6e2 15 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
8847214f
UD
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
f964490f 24 Macros:
8847214f
UD
25 FUNC(function): converts general function name (like cos) to
26 name with correct suffix (e.g. cosl or cosf)
27 MATHCONST(x): like FUNC but for constants (e.g convert 0.0 to 0.0L)
28 FLOAT: floating point type to test
29 - TEST_MSG: informal message to be displayed
30 CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat):
31 chooses one of the parameters as delta for testing
32 equality
33 PRINTF_EXPR Floating point conversion specification to print a variable
34 of type FLOAT with printf. PRINTF_EXPR just contains
35 the specifier, not the percent and width arguments,
36 e.g. "f".
37 PRINTF_XEXPR Like PRINTF_EXPR, but print in hexadecimal format.
38 PRINTF_NEXPR Like PRINTF_EXPR, but print nice. */
39
40/* This testsuite has currently tests for:
41 acos, acosh, asin, asinh, atan, atan2, atanh,
42 cbrt, ceil, copysign, cos, cosh, erf, erfc, exp, exp10, exp2, expm1,
ef1bb361 43 fabs, fdim, finite, floor, fma, fmax, fmin, fmod, fpclassify,
8847214f 44 frexp, gamma, hypot,
57267616 45 ilogb, isfinite, isinf, isnan, isnormal, issignaling,
0e8e0c1c 46 isless, islessequal, isgreater, isgreaterequal, islessgreater, isunordered,
8847214f
UD
47 j0, j1, jn,
48 ldexp, lgamma, log, log10, log1p, log2, logb,
28234b07 49 modf, nearbyint, nextafter, nexttoward,
8847214f
UD
50 pow, remainder, remquo, rint, lrint, llrint,
51 round, lround, llround,
52 scalb, scalbn, scalbln, signbit, sin, sincos, sinh, sqrt, tan, tanh, tgamma, trunc,
e9c7764e 53 y0, y1, yn, significand
8847214f
UD
54
55 and for the following complex math functions:
56 cabs, cacos, cacosh, carg, casin, casinh, catan, catanh,
28234b07
JM
57 ccos, ccosh, cexp, cimag, clog, clog10, conj, cpow, cproj, creal,
58 csin, csinh, csqrt, ctan, ctanh.
8847214f 59
28234b07
JM
60 At the moment the following functions and macros aren't tested:
61 drem (alias for remainder),
28234b07
JM
62 lgamma_r,
63 nan,
64 pow10 (alias for exp10).
8847214f
UD
65
66 Parameter handling is primitive in the moment:
67 --verbose=[0..3] for different levels of output:
68 0: only error count
69 1: basic report on failed tests (default)
70 2: full report on all tests
71 -v for full output (equals --verbose=3)
72 -u for generation of an ULPs file
73 */
74
75/* "Philosophy":
76
77 This suite tests some aspects of the correct implementation of
78 mathematical functions in libm. Some simple, specific parameters
79 are tested for correctness but there's no exhaustive
80 testing. Handling of specific inputs (e.g. infinity, not-a-number)
81 is also tested. Correct handling of exceptions is checked
82 against. These implemented tests should check all cases that are
ec751a23 83 specified in ISO C99.
8847214f 84
80bad0cc
JM
85 Exception testing: At the moment only divide-by-zero, invalid,
86 overflow and underflow exceptions are tested. Inexact exceptions
8847214f
UD
87 aren't checked at the moment.
88
89 NaN values: There exist signalling and quiet NaNs. This implementation
57267616
TS
90 only uses quiet NaN as parameter. Where the sign of a NaN is
91 significant, this is not tested. The payload of NaNs is not examined.
8847214f
UD
92
93 Inline functions: Inlining functions should give an improvement in
94 speed - but not in precission. The inlined functions return
95 reasonable values for a reasonable range of input values. The
96 result is not necessarily correct for all values and exceptions are
97 not correctly raised in all cases. Problematic input and return
98 values are infinity, not-a-number and minus zero. This suite
99 therefore does not check these specific inputs and the exception
100 handling for inlined mathematical functions - just the "reasonable"
101 values are checked.
102
103 Beware: The tests might fail for any of the following reasons:
104 - Tests are wrong
105 - Functions are wrong
106 - Floating Point Unit not working properly
107 - Compiler has errors
108
109 With e.g. gcc 2.7.2.2 the test for cexp fails because of a compiler error.
33996419
AJ
110
111
112 To Do: All parameter should be numbers that can be represented as
2550dfe9
AJ
113 exact floating point values. Currently some values cannot be
114 represented exactly and therefore the result is not the expected
115 result. For this we will use 36 digits so that numbers can be
116 represented exactly. */
8847214f
UD
117
118#ifndef _GNU_SOURCE
119# define _GNU_SOURCE
120#endif
121
122#include "libm-test-ulps.h"
123#include <complex.h>
124#include <math.h>
125#include <float.h>
126#include <fenv.h>
601d2942 127#include <limits.h>
8847214f
UD
128
129#include <errno.h>
130#include <stdlib.h>
131#include <stdio.h>
bdf09fab 132#include <string.h>
8847214f 133#include <argp.h>
ef82f4da 134#include <tininess.h>
8847214f 135
0af797de
CM
136/* Allow platforms without all rounding modes to test properly,
137 assuming they provide an __FE_UNDEFINED in <bits/fenv.h> which
138 causes fesetround() to return failure. */
139#ifndef FE_TONEAREST
140# define FE_TONEAREST __FE_UNDEFINED
141#endif
142#ifndef FE_TOWARDZERO
143# define FE_TOWARDZERO __FE_UNDEFINED
144#endif
145#ifndef FE_UPWARD
146# define FE_UPWARD __FE_UNDEFINED
147#endif
148#ifndef FE_DOWNWARD
149# define FE_DOWNWARD __FE_UNDEFINED
150#endif
151
8847214f
UD
152/* Possible exceptions */
153#define NO_EXCEPTION 0x0
154#define INVALID_EXCEPTION 0x1
155#define DIVIDE_BY_ZERO_EXCEPTION 0x2
c135cc1b 156#define OVERFLOW_EXCEPTION 0x4
80bad0cc 157#define UNDERFLOW_EXCEPTION 0x8
8847214f 158/* The next flags signals that those exceptions are allowed but not required. */
80bad0cc
JM
159#define INVALID_EXCEPTION_OK 0x10
160#define DIVIDE_BY_ZERO_EXCEPTION_OK 0x20
161#define OVERFLOW_EXCEPTION_OK 0x40
162#define UNDERFLOW_EXCEPTION_OK 0x80
8847214f 163#define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK
80bad0cc
JM
164/* Some special test flags, passed together with exceptions. */
165#define IGNORE_ZERO_INF_SIGN 0x100
f2da7793
JM
166/* Indicate errno settings required or disallowed. */
167#define ERRNO_UNCHANGED 0x200
168#define ERRNO_EDOM 0x400
169#define ERRNO_ERANGE 0x800
80bad0cc
JM
170
171/* Values underflowing only for float. */
172#ifdef TEST_FLOAT
173# define UNDERFLOW_EXCEPTION_FLOAT UNDERFLOW_EXCEPTION
174# define UNDERFLOW_EXCEPTION_OK_FLOAT UNDERFLOW_EXCEPTION_OK
175#else
176# define UNDERFLOW_EXCEPTION_FLOAT 0
177# define UNDERFLOW_EXCEPTION_OK_FLOAT 0
178#endif
179/* Values underflowing only for double or types with a larger least
180 positive normal value. */
181#if defined TEST_FLOAT || defined TEST_DOUBLE \
182 || (defined TEST_LDOUBLE && LDBL_MIN_EXP >= DBL_MIN_EXP)
183# define UNDERFLOW_EXCEPTION_DOUBLE UNDERFLOW_EXCEPTION
ccc8cadf 184# define UNDERFLOW_EXCEPTION_OK_DOUBLE UNDERFLOW_EXCEPTION_OK
80bad0cc
JM
185#else
186# define UNDERFLOW_EXCEPTION_DOUBLE 0
ccc8cadf 187# define UNDERFLOW_EXCEPTION_OK_DOUBLE 0
80bad0cc
JM
188#endif
189/* Values underflowing only for IBM long double or types with a larger least
190 positive normal value. */
191#if defined TEST_FLOAT || (defined TEST_LDOUBLE && LDBL_MIN_EXP > DBL_MIN_EXP)
192# define UNDERFLOW_EXCEPTION_LDOUBLE_IBM UNDERFLOW_EXCEPTION
193#else
194# define UNDERFLOW_EXCEPTION_LDOUBLE_IBM 0
195#endif
ef82f4da
JM
196/* Values underflowing on architectures detecting tininess before
197 rounding, but not on those detecting tininess after rounding. */
198#define UNDERFLOW_EXCEPTION_BEFORE_ROUNDING (TININESS_AFTER_ROUNDING \
199 ? 0 \
200 : UNDERFLOW_EXCEPTION)
8847214f
UD
201
202/* Various constants (we must supply them precalculated for accuracy). */
42be70d4
UD
203#define M_PI_6l .52359877559829887307710723054658383L
204#define M_E2l 7.389056098930650227230427460575008L
205#define M_E3l 20.085536923187667740928529654581719L
206#define M_2_SQRT_PIl 3.5449077018110320545963349666822903L /* 2 sqrt (M_PIl) */
207#define M_SQRT_PIl 1.7724538509055160272981674833411451L /* sqrt (M_PIl) */
3c6cad26
UD
208#define M_LOG_SQRT_PIl 0.57236494292470008707171367567652933L /* log(sqrt(M_PIl)) */
209#define M_LOG_2_SQRT_PIl 1.265512123484645396488945797134706L /* log(2*sqrt(M_PIl)) */
8847214f
UD
210#define M_PI_34l (M_PIl - M_PI_4l) /* 3*pi/4 */
211#define M_PI_34_LOG10El (M_PIl - M_PI_4l) * M_LOG10El
212#define M_PI2_LOG10El M_PI_2l * M_LOG10El
213#define M_PI4_LOG10El M_PI_4l * M_LOG10El
214#define M_PI_LOG10El M_PIl * M_LOG10El
72c7a71d 215#define M_SQRT_2_2 0.70710678118654752440084436210484903L /* sqrt (2) / 2 */
8847214f 216
26510bdd
CD
217#define ulps_file_name "ULPs" /* Name of the ULPs file. */
218static FILE *ulps_file; /* File to document difference. */
219static int output_ulps; /* Should ulps printed? */
220static char *output_dir; /* Directory where generated files will be written. */
8847214f
UD
221
222static int noErrors; /* number of errors */
223static int noTests; /* number of tests (without testing exceptions) */
224static int noExcTests; /* number of tests for exception flags */
f2da7793 225static int noErrnoTests;/* number of tests for errno values */
8847214f
UD
226
227static int verbose;
228static int output_max_error; /* Should the maximal errors printed? */
229static int output_points; /* Should the single function results printed? */
cd33623e 230static int ignore_max_ulp; /* Should we ignore max_ulp? */
8847214f 231
a7548d41
JM
232static const FLOAT plus_zero = CHOOSE (0.0L, 0.0, 0.0f,
233 0.0L, 0.0, 0.0f);
234static const FLOAT minus_zero = CHOOSE (-0.0L, -0.0, -0.0f,
235 -0.0L, -0.0, -0.0f);
236static const FLOAT plus_infty = CHOOSE (HUGE_VALL, HUGE_VAL, HUGE_VALF,
237 HUGE_VALL, HUGE_VAL, HUGE_VALF);
238static const FLOAT minus_infty = CHOOSE (-HUGE_VALL, -HUGE_VAL, -HUGE_VALF,
239 -HUGE_VALL, -HUGE_VAL, -HUGE_VALF);
240static const FLOAT qnan_value = FUNC (__builtin_nan) ("");
241static const FLOAT max_value = CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX,
242 LDBL_MAX, DBL_MAX, FLT_MAX);
243static const FLOAT min_value = CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN,
244 LDBL_MIN, DBL_MIN, FLT_MIN);
245static const FLOAT min_subnorm_value = CHOOSE (__LDBL_DENORM_MIN__,
246 __DBL_DENORM_MIN__,
247 __FLT_DENORM_MIN__,
248 __LDBL_DENORM_MIN__,
249 __DBL_DENORM_MIN__,
250 __FLT_DENORM_MIN__);
8847214f 251
6815fabc 252static FLOAT max_error, real_max_error, imag_max_error;
8847214f
UD
253
254
255#define BUILD_COMPLEX(real, imag) \
256 ({ __complex__ FLOAT __retval; \
257 __real__ __retval = (real); \
258 __imag__ __retval = (imag); \
259 __retval; })
260
261
262#define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1), \
bf582445 263 (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
8847214f
UD
264
265static void
266init_max_error (void)
267{
268 max_error = 0;
6815fabc
UD
269 real_max_error = 0;
270 imag_max_error = 0;
aaca11d8 271 feclearexcept (FE_ALL_EXCEPT);
f2da7793 272 errno = 0;
8847214f
UD
273}
274
275static void
6815fabc 276set_max_error (FLOAT current, FLOAT *curr_max_error)
8847214f 277{
6815fabc
UD
278 if (current > *curr_max_error)
279 *curr_max_error = current;
8847214f
UD
280}
281
282
57267616
TS
283/* Print a FLOAT. */
284static void
285print_float (FLOAT f)
286{
287 /* As printf doesn't differ between a sNaN and a qNaN, do this manually. */
288 if (issignaling (f))
289 printf ("sNaN\n");
290 else if (isnan (f))
291 printf ("qNaN\n");
292 else
293 printf ("% .20" PRINTF_EXPR " % .20" PRINTF_XEXPR "\n", f, f);
294}
295
8847214f
UD
296/* Should the message print to screen? This depends on the verbose flag,
297 and the test status. */
298static int
b7dab1e4 299print_screen (int ok)
8847214f
UD
300{
301 if (output_points
302 && (verbose > 1
b7dab1e4 303 || (verbose == 1 && ok == 0)))
8847214f
UD
304 return 1;
305 return 0;
306}
307
308
309/* Should the message print to screen? This depends on the verbose flag,
310 and the test status. */
311static int
b7dab1e4 312print_screen_max_error (int ok)
8847214f
UD
313{
314 if (output_max_error
315 && (verbose > 1
b7dab1e4 316 || ((verbose == 1) && (ok == 0))))
8847214f
UD
317 return 1;
318 return 0;
319}
320
321/* Update statistic counters. */
322static void
b7dab1e4 323update_stats (int ok)
8847214f
UD
324{
325 ++noTests;
b7dab1e4 326 if (!ok)
8847214f
UD
327 ++noErrors;
328}
329
330static void
331print_ulps (const char *test_name, FLOAT ulp)
332{
333 if (output_ulps)
334 {
335 fprintf (ulps_file, "Test \"%s\":\n", test_name);
303f1335 336 fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
8847214f 337 CHOOSE("ldouble", "double", "float",
303f1335
AS
338 "ildouble", "idouble", "ifloat"),
339 FUNC(ceil) (ulp));
8847214f
UD
340 }
341}
342
343static void
344print_function_ulps (const char *function_name, FLOAT ulp)
345{
346 if (output_ulps)
347 {
6815fabc 348 fprintf (ulps_file, "Function: \"%s\":\n", function_name);
303f1335 349 fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
8847214f 350 CHOOSE("ldouble", "double", "float",
303f1335
AS
351 "ildouble", "idouble", "ifloat"),
352 FUNC(ceil) (ulp));
8847214f
UD
353 }
354}
355
356
6815fabc
UD
357static void
358print_complex_function_ulps (const char *function_name, FLOAT real_ulp,
359 FLOAT imag_ulp)
360{
361 if (output_ulps)
362 {
363 if (real_ulp != 0.0)
364 {
365 fprintf (ulps_file, "Function: Real part of \"%s\":\n", function_name);
303f1335 366 fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
6815fabc 367 CHOOSE("ldouble", "double", "float",
303f1335
AS
368 "ildouble", "idouble", "ifloat"),
369 FUNC(ceil) (real_ulp));
6815fabc
UD
370 }
371 if (imag_ulp != 0.0)
372 {
373 fprintf (ulps_file, "Function: Imaginary part of \"%s\":\n", function_name);
303f1335 374 fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
6815fabc 375 CHOOSE("ldouble", "double", "float",
303f1335
AS
376 "ildouble", "idouble", "ifloat"),
377 FUNC(ceil) (imag_ulp));
6815fabc 378 }
15daa639
UD
379
380
6815fabc
UD
381 }
382}
383
384
8847214f
UD
385
386/* Test if Floating-Point stack hasn't changed */
387static void
388fpstack_test (const char *test_name)
389{
64487e12 390#if defined (__i386__) || defined (__x86_64__)
8847214f
UD
391 static int old_stack;
392 int sw;
393
394 asm ("fnstsw" : "=a" (sw));
395 sw >>= 11;
396 sw &= 7;
397
398 if (sw != old_stack)
399 {
400 printf ("FP-Stack wrong after test %s (%d, should be %d)\n",
401 test_name, sw, old_stack);
402 ++noErrors;
403 old_stack = sw;
404 }
405#endif
406}
407
408
409static void
b7dab1e4 410print_max_error (const char *func_name, FLOAT allowed)
8847214f 411{
8847214f
UD
412 int ok = 0;
413
cd33623e 414 if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
8847214f
UD
415 {
416 ok = 1;
417 }
418
419 if (!ok)
420 print_function_ulps (func_name, max_error);
421
422
b7dab1e4 423 if (print_screen_max_error (ok))
8847214f 424 {
6815fabc 425 printf ("Maximal error of `%s'\n", func_name);
303f1335
AS
426 printf (" is : %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (max_error));
427 printf (" accepted: %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (allowed));
8847214f
UD
428 }
429
b7dab1e4 430 update_stats (ok);
8847214f
UD
431}
432
433
6815fabc 434static void
b7dab1e4 435print_complex_max_error (const char *func_name, __complex__ FLOAT allowed)
6815fabc
UD
436{
437 int ok = 0;
438
303f1335
AS
439 if ((real_max_error == 0 && imag_max_error == 0)
440 || (real_max_error <= __real__ allowed
441 && imag_max_error <= __imag__ allowed
442 && !ignore_max_ulp))
6815fabc
UD
443 {
444 ok = 1;
445 }
446
447 if (!ok)
448 print_complex_function_ulps (func_name, real_max_error, imag_max_error);
449
450
b7dab1e4 451 if (print_screen_max_error (ok))
6815fabc
UD
452 {
453 printf ("Maximal error of real part of: %s\n", func_name);
303f1335
AS
454 printf (" is : %.0" PRINTF_NEXPR " ulp\n",
455 FUNC(ceil) (real_max_error));
456 printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
457 FUNC(ceil) (__real__ allowed));
6815fabc 458 printf ("Maximal error of imaginary part of: %s\n", func_name);
303f1335
AS
459 printf (" is : %.0" PRINTF_NEXPR " ulp\n",
460 FUNC(ceil) (imag_max_error));
461 printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
462 FUNC(ceil) (__imag__ allowed));
6815fabc
UD
463 }
464
b7dab1e4 465 update_stats (ok);
6815fabc
UD
466}
467
468
8847214f
UD
469/* Test whether a given exception was raised. */
470static void
471test_single_exception (const char *test_name,
472 int exception,
473 int exc_flag,
474 int fe_flag,
475 const char *flag_name)
476{
477#ifndef TEST_INLINE
478 int ok = 1;
479 if (exception & exc_flag)
480 {
481 if (fetestexcept (fe_flag))
482 {
b7dab1e4 483 if (print_screen (1))
8847214f
UD
484 printf ("Pass: %s: Exception \"%s\" set\n", test_name, flag_name);
485 }
486 else
487 {
488 ok = 0;
b7dab1e4 489 if (print_screen (0))
8847214f
UD
490 printf ("Failure: %s: Exception \"%s\" not set\n",
491 test_name, flag_name);
492 }
493 }
494 else
495 {
496 if (fetestexcept (fe_flag))
497 {
498 ok = 0;
b7dab1e4 499 if (print_screen (0))
8847214f
UD
500 printf ("Failure: %s: Exception \"%s\" set\n",
501 test_name, flag_name);
502 }
503 else
504 {
b7dab1e4 505 if (print_screen (1))
8847214f
UD
506 printf ("%s: Exception \"%s\" not set\n", test_name,
507 flag_name);
508 }
509 }
510 if (!ok)
511 ++noErrors;
512
513#endif
514}
515
516
517/* Test whether exceptions given by EXCEPTION are raised. Ignore thereby
518 allowed but not required exceptions.
519*/
520static void
521test_exceptions (const char *test_name, int exception)
522{
523 ++noExcTests;
524#ifdef FE_DIVBYZERO
525 if ((exception & DIVIDE_BY_ZERO_EXCEPTION_OK) == 0)
526 test_single_exception (test_name, exception,
527 DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO,
528 "Divide by zero");
529#endif
530#ifdef FE_INVALID
531 if ((exception & INVALID_EXCEPTION_OK) == 0)
532 test_single_exception (test_name, exception, INVALID_EXCEPTION, FE_INVALID,
533 "Invalid operation");
c135cc1b
JM
534#endif
535#ifdef FE_OVERFLOW
536 if ((exception & OVERFLOW_EXCEPTION_OK) == 0)
537 test_single_exception (test_name, exception, OVERFLOW_EXCEPTION,
538 FE_OVERFLOW, "Overflow");
80bad0cc
JM
539#endif
540#ifdef FE_UNDERFLOW
541 if ((exception & UNDERFLOW_EXCEPTION_OK) == 0)
542 test_single_exception (test_name, exception, UNDERFLOW_EXCEPTION,
543 FE_UNDERFLOW, "Underflow");
8847214f
UD
544#endif
545 feclearexcept (FE_ALL_EXCEPT);
546}
547
f2da7793
JM
548/* Test whether errno for TEST_NAME, set to ERRNO_VALUE, has value
549 EXPECTED_VALUE (description EXPECTED_NAME). */
550static void
551test_single_errno (const char *test_name, int errno_value,
552 int expected_value, const char *expected_name)
553{
554 if (errno_value == expected_value)
555 {
b7dab1e4 556 if (print_screen (1))
f2da7793
JM
557 printf ("Pass: %s: errno set to %d (%s)\n", test_name, errno_value,
558 expected_name);
559 }
560 else
561 {
562 ++noErrors;
b7dab1e4 563 if (print_screen (0))
f2da7793
JM
564 printf ("Failure: %s: errno set to %d, expected %d (%s)\n",
565 test_name, errno_value, expected_value, expected_name);
566 }
567}
568
569/* Test whether errno (value ERRNO_VALUE) has been for TEST_NAME set
570 as required by EXCEPTIONS. */
571static void
572test_errno (const char *test_name, int errno_value, int exceptions)
573{
574 ++noErrnoTests;
575 if (exceptions & ERRNO_UNCHANGED)
576 test_single_errno (test_name, errno_value, 0, "unchanged");
577 if (exceptions & ERRNO_EDOM)
578 test_single_errno (test_name, errno_value, EDOM, "EDOM");
579 if (exceptions & ERRNO_ERANGE)
580 test_single_errno (test_name, errno_value, ERANGE, "ERANGE");
581}
8847214f
UD
582
583static void
6815fabc 584check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
b7dab1e4 585 FLOAT max_ulp, int exceptions,
6815fabc 586 FLOAT *curr_max_error)
8847214f
UD
587{
588 int ok = 0;
589 int print_diff = 0;
590 FLOAT diff = 0;
591 FLOAT ulp = 0;
f2da7793 592 int errno_value = errno;
8847214f
UD
593
594 test_exceptions (test_name, exceptions);
f2da7793 595 test_errno (test_name, errno_value, exceptions);
57267616
TS
596 if (issignaling (computed) && issignaling (expected))
597 ok = 1;
598 else if (issignaling (computed) || issignaling (expected))
599 ok = 0;
600 else if (isnan (computed) && isnan (expected))
8847214f
UD
601 ok = 1;
602 else if (isinf (computed) && isinf (expected))
603 {
604 /* Test for sign of infinities. */
ba3752d5
UD
605 if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
606 && signbit (computed) != signbit (expected))
8847214f
UD
607 {
608 ok = 0;
609 printf ("infinity has wrong sign.\n");
610 }
611 else
612 ok = 1;
613 }
57267616
TS
614 /* Don't calculate ULPs for infinities or any kind of NaNs. */
615 else if (isinf (computed) || isnan (computed)
616 || isinf (expected) || isnan (expected))
8847214f
UD
617 ok = 0;
618 else
619 {
620 diff = FUNC(fabs) (computed - expected);
e6b29af8
UD
621 switch (fpclassify (expected))
622 {
623 case FP_ZERO:
624 /* ilogb (0) isn't allowed. */
625 ulp = diff / FUNC(ldexp) (1.0, - MANT_DIG);
626 break;
627 case FP_NORMAL:
628 ulp = diff / FUNC(ldexp) (1.0, FUNC(ilogb) (expected) - MANT_DIG);
629 break;
630 case FP_SUBNORMAL:
6c23e11c
JM
631 /* 1ulp for a subnormal value, shifted by MANT_DIG, is the
632 least normal value. */
633 ulp = (FUNC(ldexp) (diff, MANT_DIG) / min_value);
e6b29af8
UD
634 break;
635 default:
636 /* It should never happen. */
637 abort ();
638 break;
639 }
6815fabc 640 set_max_error (ulp, curr_max_error);
8847214f 641 print_diff = 1;
ba3752d5
UD
642 if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
643 && computed == 0.0 && expected == 0.0
644 && signbit(computed) != signbit (expected))
3a8e65a0 645 ok = 0;
f964490f 646 else if (ulp <= 0.5 || (ulp <= max_ulp && !ignore_max_ulp))
8847214f
UD
647 ok = 1;
648 else
649 {
650 ok = 0;
651 print_ulps (test_name, ulp);
652 }
653
654 }
b7dab1e4 655 if (print_screen (ok))
8847214f
UD
656 {
657 if (!ok)
658 printf ("Failure: ");
659 printf ("Test: %s\n", test_name);
660 printf ("Result:\n");
57267616
TS
661 printf (" is: ");
662 print_float (computed);
663 printf (" should be: ");
664 print_float (expected);
8847214f
UD
665 if (print_diff)
666 {
667 printf (" difference: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR
668 "\n", diff, diff);
669 printf (" ulp : % .4" PRINTF_NEXPR "\n", ulp);
670 printf (" max.ulp : % .4" PRINTF_NEXPR "\n", max_ulp);
671 }
672 }
b7dab1e4 673 update_stats (ok);
8847214f
UD
674
675 fpstack_test (test_name);
f2da7793 676 errno = 0;
8847214f
UD
677}
678
679
680static void
6815fabc 681check_float (const char *test_name, FLOAT computed, FLOAT expected,
b7dab1e4 682 FLOAT max_ulp, int exceptions)
6815fabc 683{
b7dab1e4 684 check_float_internal (test_name, computed, expected, max_ulp,
6815fabc
UD
685 exceptions, &max_error);
686}
687
688
689static void
690check_complex (const char *test_name, __complex__ FLOAT computed,
691 __complex__ FLOAT expected,
b7dab1e4 692 __complex__ FLOAT max_ulp,
6815fabc 693 int exception)
8847214f 694{
6815fabc 695 FLOAT part_comp, part_exp, part_max_ulp;
2fd89785
MS
696 char *str;
697
698 if (asprintf (&str, "Real part of: %s", test_name) == -1)
699 abort ();
8847214f 700
8847214f
UD
701 part_comp = __real__ computed;
702 part_exp = __real__ expected;
6815fabc 703 part_max_ulp = __real__ max_ulp;
15daa639 704
b7dab1e4 705 check_float_internal (str, part_comp, part_exp, part_max_ulp,
6815fabc 706 exception, &real_max_error);
2fd89785
MS
707 free (str);
708
709 if (asprintf (&str, "Imaginary part of: %s", test_name) == -1)
710 abort ();
8847214f 711
8847214f
UD
712 part_comp = __imag__ computed;
713 part_exp = __imag__ expected;
6815fabc 714 part_max_ulp = __imag__ max_ulp;
15daa639 715
f2da7793 716 /* Don't check again for exceptions or errno, just pass through the
8847214f 717 zero/inf sign test. */
b7dab1e4 718 check_float_internal (str, part_comp, part_exp, part_max_ulp,
6815fabc
UD
719 exception & IGNORE_ZERO_INF_SIGN,
720 &imag_max_error);
2fd89785 721 free (str);
8847214f
UD
722}
723
724
725/* Check that computed and expected values are equal (int values). */
726static void
727check_int (const char *test_name, int computed, int expected, int max_ulp,
b7dab1e4 728 int exceptions)
8847214f
UD
729{
730 int diff = computed - expected;
731 int ok = 0;
f2da7793 732 int errno_value = errno;
8847214f
UD
733
734 test_exceptions (test_name, exceptions);
f2da7793 735 test_errno (test_name, errno_value, exceptions);
8847214f
UD
736 noTests++;
737 if (abs (diff) <= max_ulp)
738 ok = 1;
739
740 if (!ok)
741 print_ulps (test_name, diff);
742
b7dab1e4 743 if (print_screen (ok))
8847214f
UD
744 {
745 if (!ok)
746 printf ("Failure: ");
747 printf ("Test: %s\n", test_name);
748 printf ("Result:\n");
749 printf (" is: %d\n", computed);
750 printf (" should be: %d\n", expected);
751 }
752
b7dab1e4 753 update_stats (ok);
8847214f 754 fpstack_test (test_name);
f2da7793 755 errno = 0;
8847214f
UD
756}
757
758
759/* Check that computed and expected values are equal (long int values). */
760static void
761check_long (const char *test_name, long int computed, long int expected,
b7dab1e4 762 long int max_ulp, int exceptions)
8847214f
UD
763{
764 long int diff = computed - expected;
765 int ok = 0;
f2da7793 766 int errno_value = errno;
8847214f
UD
767
768 test_exceptions (test_name, exceptions);
f2da7793 769 test_errno (test_name, errno_value, exceptions);
8847214f
UD
770 noTests++;
771 if (labs (diff) <= max_ulp)
772 ok = 1;
773
774 if (!ok)
775 print_ulps (test_name, diff);
776
b7dab1e4 777 if (print_screen (ok))
8847214f
UD
778 {
779 if (!ok)
780 printf ("Failure: ");
781 printf ("Test: %s\n", test_name);
782 printf ("Result:\n");
783 printf (" is: %ld\n", computed);
784 printf (" should be: %ld\n", expected);
785 }
786
b7dab1e4 787 update_stats (ok);
8847214f 788 fpstack_test (test_name);
f2da7793 789 errno = 0;
8847214f
UD
790}
791
792
793/* Check that computed value is true/false. */
794static void
795check_bool (const char *test_name, int computed, int expected,
b7dab1e4 796 long int max_ulp, int exceptions)
8847214f
UD
797{
798 int ok = 0;
f2da7793 799 int errno_value = errno;
8847214f
UD
800
801 test_exceptions (test_name, exceptions);
f2da7793 802 test_errno (test_name, errno_value, exceptions);
8847214f
UD
803 noTests++;
804 if ((computed == 0) == (expected == 0))
805 ok = 1;
806
b7dab1e4 807 if (print_screen (ok))
8847214f
UD
808 {
809 if (!ok)
810 printf ("Failure: ");
811 printf ("Test: %s\n", test_name);
812 printf ("Result:\n");
813 printf (" is: %d\n", computed);
814 printf (" should be: %d\n", expected);
815 }
816
b7dab1e4 817 update_stats (ok);
8847214f 818 fpstack_test (test_name);
f2da7793 819 errno = 0;
8847214f
UD
820}
821
822
823/* check that computed and expected values are equal (long int values) */
824static void
825check_longlong (const char *test_name, long long int computed,
826 long long int expected,
b7dab1e4 827 long long int max_ulp,
8847214f
UD
828 int exceptions)
829{
830 long long int diff = computed - expected;
831 int ok = 0;
f2da7793 832 int errno_value = errno;
8847214f
UD
833
834 test_exceptions (test_name, exceptions);
f2da7793 835 test_errno (test_name, errno_value, exceptions);
8847214f
UD
836 noTests++;
837 if (llabs (diff) <= max_ulp)
838 ok = 1;
839
840 if (!ok)
841 print_ulps (test_name, diff);
842
b7dab1e4 843 if (print_screen (ok))
8847214f
UD
844 {
845 if (!ok)
846 printf ("Failure:");
847 printf ("Test: %s\n", test_name);
848 printf ("Result:\n");
849 printf (" is: %lld\n", computed);
850 printf (" should be: %lld\n", expected);
851 }
852
b7dab1e4 853 update_stats (ok);
8847214f 854 fpstack_test (test_name);
f2da7793 855 errno = 0;
8847214f
UD
856}
857
f44bf14a
JM
858/* Run an individual test, including any required setup and checking
859 of results. */
860#define RUN_TEST_f_f(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
861 MAX_ULP, EXCEPTIONS) \
862 check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
863 MAX_ULP, EXCEPTIONS)
864#define RUN_TEST_2_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
865 MAX_ULP, EXCEPTIONS) \
866 check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2), EXPECTED, \
867 MAX_ULP, EXCEPTIONS)
868#define RUN_TEST_ff_f RUN_TEST_2_f
869#define RUN_TEST_fi_f RUN_TEST_2_f
870#define RUN_TEST_fl_f RUN_TEST_2_f
871#define RUN_TEST_fff_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, ARG3, \
872 EXPECTED, MAX_ULP, EXCEPTIONS) \
873 check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2, ARG3), \
874 EXPECTED, MAX_ULP, EXCEPTIONS)
875#define RUN_TEST_c_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
876 MAX_ULP, EXCEPTIONS) \
877 check_float (TEST_NAME, \
878 FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1, ARG2)), \
879 EXPECTED, MAX_ULP, EXCEPTIONS)
880#define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
881 MAX_ULP, EXCEPTIONS, \
882 EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
883 EXTRA_EXPECTED, EXTRA_ULP) \
884 do \
885 { \
886 (EXTRA_VAR) = (EXTRA_INIT); \
887 check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
888 MAX_ULP, EXCEPTIONS); \
889 if (EXTRA_TEST) \
890 check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED, \
891 EXTRA_ULP, 0); \
892 } \
893 while (0)
894#define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
895 MAX_ULP, EXCEPTIONS, \
896 EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
897 EXTRA_EXPECTED, EXTRA_ULP) \
898 do \
899 { \
900 (EXTRA_VAR) = (EXTRA_INIT); \
901 check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)), \
902 EXPECTED, MAX_ULP, EXCEPTIONS); \
903 if (EXTRA_TEST) \
904 check_float (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED, \
905 EXTRA_ULP, 0); \
906 } \
907 while (0)
908#define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
909 MAX_ULP, EXCEPTIONS, \
910 EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
911 EXTRA_EXPECTED, EXTRA_ULP) \
912 do \
913 { \
914 (EXTRA_VAR) = (EXTRA_INIT); \
915 check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)), \
916 EXPECTED, MAX_ULP, EXCEPTIONS); \
917 if (EXTRA_TEST) \
918 check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED, \
919 EXTRA_ULP, 0); \
920 } \
921 while (0)
922#define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
923 MAX_ULP, EXCEPTIONS, \
924 EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
925 EXTRA_EXPECTED, EXTRA_ULP) \
926 do \
927 { \
928 (EXTRA_VAR) = (EXTRA_INIT); \
929 check_float (TEST_NAME, \
930 FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)), \
931 EXPECTED, MAX_ULP, EXCEPTIONS); \
932 if (EXTRA_TEST) \
933 check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED, \
934 EXTRA_ULP, 0); \
935 } \
936 while (0)
937#define RUN_TEST_c_c(TEST_NAME, FUNC_NAME, ARGR, ARGC, EXPR, EXPC, \
938 MAX_ULP, EXCEPTIONS) \
939 check_complex (TEST_NAME, \
940 FUNC (FUNC_NAME) (BUILD_COMPLEX (ARGR, ARGC)), \
941 BUILD_COMPLEX (EXPR, EXPC), \
942 MAX_ULP, EXCEPTIONS)
943#define RUN_TEST_cc_c(TEST_NAME, FUNC_NAME, ARG1R, ARG1C, ARG2R, ARG2C, \
944 EXPR, EXPC, MAX_ULP, EXCEPTIONS) \
945 check_complex (TEST_NAME, \
946 FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1R, ARG1C), \
947 BUILD_COMPLEX (ARG2R, ARG2C)), \
948 BUILD_COMPLEX (EXPR, EXPC), \
949 MAX_ULP, EXCEPTIONS)
950#define RUN_TEST_f_i(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
951 MAX_ULP, EXCEPTIONS) \
952 check_int (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
953 MAX_ULP, EXCEPTIONS)
954#define RUN_TEST_f_i_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
955 MAX_ULP, EXCEPTIONS) \
956 check_int (TEST_NAME, FUNC_NAME (ARG), EXPECTED, \
957 MAX_ULP, EXCEPTIONS)
958#define RUN_TEST_ff_i_tg(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
959 MAX_ULP, EXCEPTIONS) \
960 check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED, \
961 MAX_ULP, EXCEPTIONS)
962#define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
963 MAX_ULP, EXCEPTIONS) \
964 check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
965 MAX_ULP, EXCEPTIONS)
966#define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
967 MAX_ULP, EXCEPTIONS) \
968 check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED, \
969 MAX_ULP, EXCEPTIONS)
970#define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
971 MAX_ULP, EXCEPTIONS) \
972 check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
973 MAX_ULP, EXCEPTIONS)
974#define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
975 MAX_ULP, EXCEPTIONS) \
976 check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
977 MAX_ULP, EXCEPTIONS)
978#define RUN_TEST_sincos(ARG, TEST_NAME_SIN, SIN_RES_VAR, EXPECTED_SIN, \
979 MAX_ULP_SIN, TEST_NAME_COS, COS_RES_VAR, \
980 EXPECTED_COS, MAX_ULP_COS, EXCEPTIONS) \
981 do \
982 { \
983 FUNC (sincos) (ARG, &(SIN_RES_VAR), &(COS_RES_VAR)); \
984 check_float (TEST_NAME_SIN, SIN_RES_VAR, \
985 EXPECTED_SIN, MAX_ULP_SIN, EXCEPTIONS); \
986 check_float (TEST_NAME_COS, COS_RES_VAR, \
987 EXPECTED_COS, MAX_ULP_COS, 0); \
988 } \
989 while (0)
990
8847214f
UD
991
992
993/* This is to prevent messages from the SVID libm emulation. */
994int
995matherr (struct exception *x __attribute__ ((unused)))
996{
997 return 1;
998}
999
1000
1001/****************************************************************************
1002 Tests for single functions of libm.
1003 Please keep them alphabetically sorted!
1004****************************************************************************/
1005
1006static void
1007acos_test (void)
1008{
e6d3c4a7
AJ
1009 errno = 0;
1010 FUNC(acos) (0);
1011 if (errno == ENOSYS)
1012 /* Function not implemented. */
1013 return;
1014
8847214f
UD
1015 START (acos);
1016
67e971f1
TS
1017 TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION);
1018 TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION);
1019 TEST_f_f (acos, qnan_value, qnan_value);
8847214f
UD
1020
1021 /* |x| > 1: */
67e971f1
TS
1022 TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION);
1023 TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION);
1024 TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION);
1025 TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION);
8847214f
UD
1026
1027 TEST_f_f (acos, 0, M_PI_2l);
1028 TEST_f_f (acos, minus_zero, M_PI_2l);
1029 TEST_f_f (acos, 1, 0);
1030 TEST_f_f (acos, -1, M_PIl);
1031 TEST_f_f (acos, 0.5, M_PI_6l*2.0);
1032 TEST_f_f (acos, -0.5, M_PI_6l*4.0);
2550dfe9 1033 TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L);
b6550497 1034 TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L);
96d10bdf 1035 TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L);
adfbc8ac
JM
1036 TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L);
1037 TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L);
1038#ifndef TEST_FLOAT
1039 TEST_f_f (acos, 0x0.ffffffff8p0L, 1.5258789062648029736620564947844627548516e-5L);
1040 TEST_f_f (acos, -0x0.ffffffff8p0L, 3.1415773948007305904329067627145550395696L);
1041 TEST_f_f (acos, 0x0.ffffffffffffp0L, 8.4293697021788088529885473244391795127130e-8L);
1042 TEST_f_f (acos, -0x0.ffffffffffffp0L, 3.1415925692960962166745548533940296398054L);
1043#endif
1044#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1045 TEST_f_f (acos, 0x0.ffffffffffffffffp0L, 3.2927225399135962333718255320079907245059e-10L);
1046 TEST_f_f (acos, -0x0.ffffffffffffffffp0L, 3.1415926532605209844712837599423203309964L);
1047#endif
8847214f
UD
1048 END (acos);
1049}
1050
5ba3cc69
JM
1051
1052static void
1053acos_test_tonearest (void)
1054{
1055 int save_round_mode;
1056 errno = 0;
1057 FUNC(acos) (0);
1058 if (errno == ENOSYS)
1059 /* Function not implemented. */
1060 return;
1061
1062 START (acos_tonearest);
1063
1064 save_round_mode = fegetround ();
1065
1066 if (!fesetround (FE_TONEAREST))
1067 {
1068 TEST_f_f (acos, 0, M_PI_2l);
1069 TEST_f_f (acos, minus_zero, M_PI_2l);
1070 TEST_f_f (acos, 1, 0);
1071 TEST_f_f (acos, -1, M_PIl);
1072 TEST_f_f (acos, 0.5, M_PI_6l*2.0);
1073 TEST_f_f (acos, -0.5, M_PI_6l*4.0);
1074 }
1075
1076 fesetround (save_round_mode);
1077
1078 END (acos_tonearest);
1079}
1080
1081
1082static void
1083acos_test_towardzero (void)
1084{
1085 int save_round_mode;
1086 errno = 0;
1087 FUNC(acos) (0);
1088 if (errno == ENOSYS)
1089 /* Function not implemented. */
1090 return;
1091
1092 START (acos_towardzero);
1093
1094 save_round_mode = fegetround ();
1095
1096 if (!fesetround (FE_TOWARDZERO))
1097 {
1098 TEST_f_f (acos, 0, M_PI_2l);
1099 TEST_f_f (acos, minus_zero, M_PI_2l);
1100 TEST_f_f (acos, 1, 0);
1101 TEST_f_f (acos, -1, M_PIl);
1102 TEST_f_f (acos, 0.5, M_PI_6l*2.0);
1103 TEST_f_f (acos, -0.5, M_PI_6l*4.0);
1104 }
1105
1106 fesetround (save_round_mode);
1107
1108 END (acos_towardzero);
1109}
1110
1111
1112static void
1113acos_test_downward (void)
1114{
1115 int save_round_mode;
1116 errno = 0;
1117 FUNC(acos) (0);
1118 if (errno == ENOSYS)
1119 /* Function not implemented. */
1120 return;
1121
1122 START (acos_downward);
1123
1124 save_round_mode = fegetround ();
1125
1126 if (!fesetround (FE_DOWNWARD))
1127 {
1128 TEST_f_f (acos, 0, M_PI_2l);
1129 TEST_f_f (acos, minus_zero, M_PI_2l);
1130 TEST_f_f (acos, 1, 0);
1131 TEST_f_f (acos, -1, M_PIl);
1132 TEST_f_f (acos, 0.5, M_PI_6l*2.0);
1133 TEST_f_f (acos, -0.5, M_PI_6l*4.0);
1134 }
1135
1136 fesetround (save_round_mode);
1137
1138 END (acos_downward);
1139}
1140
1141
1142static void
1143acos_test_upward (void)
1144{
1145 int save_round_mode;
1146 errno = 0;
1147 FUNC(acos) (0);
1148 if (errno == ENOSYS)
1149 /* Function not implemented. */
1150 return;
1151
1152 START (acos_upward);
1153
1154 save_round_mode = fegetround ();
1155
1156 if (!fesetround (FE_UPWARD))
1157 {
1158 TEST_f_f (acos, 0, M_PI_2l);
1159 TEST_f_f (acos, minus_zero, M_PI_2l);
1160 TEST_f_f (acos, 1, 0);
1161 TEST_f_f (acos, -1, M_PIl);
1162 TEST_f_f (acos, 0.5, M_PI_6l*2.0);
1163 TEST_f_f (acos, -0.5, M_PI_6l*4.0);
1164 }
1165
1166 fesetround (save_round_mode);
1167
1168 END (acos_upward);
1169}
1170
8847214f
UD
1171static void
1172acosh_test (void)
1173{
aaca11d8
UD
1174 errno = 0;
1175 FUNC(acosh) (7);
1176 if (errno == ENOSYS)
1177 /* Function not implemented. */
1178 return;
1179
8847214f
UD
1180 START (acosh);
1181
1182 TEST_f_f (acosh, plus_infty, plus_infty);
67e971f1 1183 TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION);
64d063b8 1184 TEST_f_f (acosh, qnan_value, qnan_value);
8847214f
UD
1185
1186 /* x < 1: */
67e971f1
TS
1187 TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION);
1188 TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION);
8847214f
UD
1189
1190 TEST_f_f (acosh, 1, 0);
2550dfe9 1191 TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L);
8847214f
UD
1192
1193 END (acosh);
1194}
1195
1196static void
1197asin_test (void)
1198{
e6d3c4a7
AJ
1199 errno = 0;
1200 FUNC(asin) (0);
1201 if (errno == ENOSYS)
1202 /* Function not implemented. */
1203 return;
8847214f
UD
1204
1205 START (asin);
1206
67e971f1
TS
1207 TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION);
1208 TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION);
1209 TEST_f_f (asin, qnan_value, qnan_value);
8847214f 1210
67e971f1
TS
1211 /* asin x == qNaN plus invalid exception for |x| > 1. */
1212 TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION);
1213 TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION);
1214 TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION);
1215 TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION);
8847214f
UD
1216
1217 TEST_f_f (asin, 0, 0);
1218 TEST_f_f (asin, minus_zero, minus_zero);
1219 TEST_f_f (asin, 0.5, M_PI_6l);
1220 TEST_f_f (asin, -0.5, -M_PI_6l);
1221 TEST_f_f (asin, 1.0, M_PI_2l);
1222 TEST_f_f (asin, -1.0, -M_PI_2l);
2550dfe9 1223 TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L);
adfbc8ac
JM
1224 TEST_f_f (asin, 0x0.ffffffp0L, 1.5704510598101804156437184421571127056013L);
1225 TEST_f_f (asin, -0x0.ffffffp0L, -1.5704510598101804156437184421571127056013L);
1226#ifndef TEST_FLOAT
1227 TEST_f_f (asin, 0x0.ffffffff8p0L, 1.5707810680058339712015850710748035974710L);
1228 TEST_f_f (asin, -0x0.ffffffff8p0L, -1.5707810680058339712015850710748035974710L);
1229 TEST_f_f (asin, 0x0.ffffffffffffp0L, 1.5707962425011995974432331617542781977068L);
1230 TEST_f_f (asin, -0x0.ffffffffffffp0L, -1.5707962425011995974432331617542781977068L);
1231#endif
1232#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1233 TEST_f_f (asin, 0x0.ffffffffffffffffp0L, 1.5707963264656243652399620683025688888978L);
1234 TEST_f_f (asin, -0x0.ffffffffffffffffp0L, -1.5707963264656243652399620683025688888978L);
1235#endif
8847214f
UD
1236
1237 END (asin);
1238}
1239
5ba3cc69
JM
1240
1241static void
1242asin_test_tonearest (void)
1243{
1244 int save_round_mode;
1245 errno = 0;
1246 FUNC(asin) (0);
1247 if (errno == ENOSYS)
1248 /* Function not implemented. */
1249 return;
1250
1251 START (asin_tonearest);
1252
1253 save_round_mode = fegetround ();
1254
1255 if (!fesetround (FE_TONEAREST))
1256 {
1257 TEST_f_f (asin, 0, 0);
1258 TEST_f_f (asin, minus_zero, minus_zero);
1259 TEST_f_f (asin, 0.5, M_PI_6l);
1260 TEST_f_f (asin, -0.5, -M_PI_6l);
1261 TEST_f_f (asin, 1.0, M_PI_2l);
1262 TEST_f_f (asin, -1.0, -M_PI_2l);
1263 }
1264
1265 fesetround (save_round_mode);
1266
1267 END (asin_tonearest);
1268}
1269
1270
1271static void
1272asin_test_towardzero (void)
1273{
1274 int save_round_mode;
1275 errno = 0;
1276 FUNC(asin) (0);
1277 if (errno == ENOSYS)
1278 /* Function not implemented. */
1279 return;
1280
1281 START (asin_towardzero);
1282
1283 save_round_mode = fegetround ();
1284
1285 if (!fesetround (FE_TOWARDZERO))
1286 {
1287 TEST_f_f (asin, 0, 0);
1288 TEST_f_f (asin, minus_zero, minus_zero);
1289 TEST_f_f (asin, 0.5, M_PI_6l);
1290 TEST_f_f (asin, -0.5, -M_PI_6l);
1291 TEST_f_f (asin, 1.0, M_PI_2l);
1292 TEST_f_f (asin, -1.0, -M_PI_2l);
1293 }
1294
1295 fesetround (save_round_mode);
1296
1297 END (asin_towardzero);
1298}
1299
1300
1301static void
1302asin_test_downward (void)
1303{
1304 int save_round_mode;
1305 errno = 0;
1306 FUNC(asin) (0);
1307 if (errno == ENOSYS)
1308 /* Function not implemented. */
1309 return;
1310
1311 START (asin_downward);
1312
1313 save_round_mode = fegetround ();
1314
1315 if (!fesetround (FE_DOWNWARD))
1316 {
1317 TEST_f_f (asin, 0, 0);
1318 TEST_f_f (asin, minus_zero, minus_zero);
1319 TEST_f_f (asin, 0.5, M_PI_6l);
1320 TEST_f_f (asin, -0.5, -M_PI_6l);
1321 TEST_f_f (asin, 1.0, M_PI_2l);
1322 TEST_f_f (asin, -1.0, -M_PI_2l);
1323 }
1324
1325 fesetround (save_round_mode);
1326
1327 END (asin_downward);
1328}
1329
1330
1331static void
1332asin_test_upward (void)
1333{
1334 int save_round_mode;
1335 errno = 0;
1336 FUNC(asin) (0);
1337 if (errno == ENOSYS)
1338 /* Function not implemented. */
1339 return;
1340
1341 START (asin_upward);
1342
1343 save_round_mode = fegetround ();
1344
1345 if (!fesetround (FE_UPWARD))
1346 {
1347 TEST_f_f (asin, 0, 0);
1348 TEST_f_f (asin, minus_zero, minus_zero);
1349 TEST_f_f (asin, 0.5, M_PI_6l);
1350 TEST_f_f (asin, -0.5, -M_PI_6l);
1351 TEST_f_f (asin, 1.0, M_PI_2l);
1352 TEST_f_f (asin, -1.0, -M_PI_2l);
1353 }
1354
1355 fesetround (save_round_mode);
1356
1357 END (asin_upward);
1358}
1359
8847214f
UD
1360static void
1361asinh_test (void)
1362{
aaca11d8 1363 errno = 0;
3c6cad26 1364 FUNC(asinh) (0.7L);
aaca11d8
UD
1365 if (errno == ENOSYS)
1366 /* Function not implemented. */
1367 return;
1368
8847214f
UD
1369 START (asinh);
1370
1371 TEST_f_f (asinh, 0, 0);
1372 TEST_f_f (asinh, minus_zero, minus_zero);
15daa639 1373#ifndef TEST_INLINE
8847214f
UD
1374 TEST_f_f (asinh, plus_infty, plus_infty);
1375 TEST_f_f (asinh, minus_infty, minus_infty);
15daa639 1376#endif
67e971f1 1377 TEST_f_f (asinh, qnan_value, qnan_value);
2550dfe9 1378 TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L);
8847214f
UD
1379
1380 END (asinh);
1381}
1382
1383static void
1384atan_test (void)
1385{
e6d3c4a7
AJ
1386 errno = 0;
1387 FUNC(atan) (0);
1388 if (errno == ENOSYS)
1389 /* Function not implemented. */
1390 return;
8847214f
UD
1391
1392 START (atan);
1393
1394 TEST_f_f (atan, 0, 0);
1395 TEST_f_f (atan, minus_zero, minus_zero);
1396
1397 TEST_f_f (atan, plus_infty, M_PI_2l);
1398 TEST_f_f (atan, minus_infty, -M_PI_2l);
67e971f1 1399 TEST_f_f (atan, qnan_value, qnan_value);
6d33cc9d
DM
1400 TEST_f_f (atan, max_value, M_PI_2l);
1401 TEST_f_f (atan, -max_value, -M_PI_2l);
8847214f
UD
1402
1403 TEST_f_f (atan, 1, M_PI_4l);
1404 TEST_f_f (atan, -1, -M_PI_4l);
1405
2550dfe9 1406 TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L);
8847214f 1407
0a42601f
JM
1408 TEST_f_f (atan, 0x1p-100L, 0x1p-100L);
1409#ifndef TEST_FLOAT
1410 TEST_f_f (atan, 0x1p-600L, 0x1p-600L);
1411#endif
1412#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1413 TEST_f_f (atan, 0x1p-10000L, 0x1p-10000L);
1414#endif
1415
8847214f
UD
1416 END (atan);
1417}
1418
1419
1420
1421static void
1422atanh_test (void)
1423{
aaca11d8 1424 errno = 0;
3c6cad26 1425 FUNC(atanh) (0.7L);
aaca11d8
UD
1426 if (errno == ENOSYS)
1427 /* Function not implemented. */
1428 return;
8847214f
UD
1429
1430 START (atanh);
1431
1432
1433 TEST_f_f (atanh, 0, 0);
1434 TEST_f_f (atanh, minus_zero, minus_zero);
1435
1436 TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
1437 TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
67e971f1 1438 TEST_f_f (atanh, qnan_value, qnan_value);
8847214f 1439
67e971f1
TS
1440 /* atanh (x) == qNaN plus invalid exception if |x| > 1. */
1441 TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION);
1442 TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION);
1443 TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION);
1444 TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION);
8847214f 1445
2550dfe9 1446 TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L);
8847214f
UD
1447
1448 END (atanh);
1449}
1450
1451static void
1452atan2_test (void)
1453{
aaca11d8
UD
1454 errno = 0;
1455 FUNC(atan2) (-0, 1);
1456 if (errno == ENOSYS)
1457 /* Function not implemented. */
1458 return;
1459
8847214f
UD
1460 START (atan2);
1461
1462 /* atan2 (0,x) == 0 for x > 0. */
1463 TEST_ff_f (atan2, 0, 1, 0);
1464
1465 /* atan2 (-0,x) == -0 for x > 0. */
1466 TEST_ff_f (atan2, minus_zero, 1, minus_zero);
1467
1468 TEST_ff_f (atan2, 0, 0, 0);
1469 TEST_ff_f (atan2, minus_zero, 0, minus_zero);
1470
1471 /* atan2 (+0,x) == +pi for x < 0. */
1472 TEST_ff_f (atan2, 0, -1, M_PIl);
1473
1474 /* atan2 (-0,x) == -pi for x < 0. */
1475 TEST_ff_f (atan2, minus_zero, -1, -M_PIl);
1476
1477 TEST_ff_f (atan2, 0, minus_zero, M_PIl);
1478 TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl);
1479
1480 /* atan2 (y,+0) == pi/2 for y > 0. */
1481 TEST_ff_f (atan2, 1, 0, M_PI_2l);
1482
1483 /* atan2 (y,-0) == pi/2 for y > 0. */
1484 TEST_ff_f (atan2, 1, minus_zero, M_PI_2l);
1485
1486 /* atan2 (y,+0) == -pi/2 for y < 0. */
1487 TEST_ff_f (atan2, -1, 0, -M_PI_2l);
1488
1489 /* atan2 (y,-0) == -pi/2 for y < 0. */
1490 TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l);
1491
1492 /* atan2 (y,inf) == +0 for finite y > 0. */
1493 TEST_ff_f (atan2, 1, plus_infty, 0);
1494
1495 /* atan2 (y,inf) == -0 for finite y < 0. */
1496 TEST_ff_f (atan2, -1, plus_infty, minus_zero);
1497
1498 /* atan2(+inf, x) == pi/2 for finite x. */
1499 TEST_ff_f (atan2, plus_infty, -1, M_PI_2l);
1500
1501 /* atan2(-inf, x) == -pi/2 for finite x. */
1502 TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l);
1503
1504 /* atan2 (y,-inf) == +pi for finite y > 0. */
1505 TEST_ff_f (atan2, 1, minus_infty, M_PIl);
1506
1507 /* atan2 (y,-inf) == -pi for finite y < 0. */
1508 TEST_ff_f (atan2, -1, minus_infty, -M_PIl);
1509
1510 TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l);
1511 TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l);
1512 TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l);
1513 TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l);
67e971f1 1514 TEST_ff_f (atan2, qnan_value, qnan_value, qnan_value);
8847214f 1515
7726d6a9
JM
1516 TEST_ff_f (atan2, max_value, max_value, M_PI_4l);
1517
6d33cc9d
DM
1518 TEST_ff_f (atan2, max_value, min_value, M_PI_2l);
1519 TEST_ff_f (atan2, -max_value, -min_value, -M_PI_2l);
1520
2550dfe9
AJ
1521 TEST_ff_f (atan2, 0.75L, 1, 0.643501108793284386802809228717322638L);
1522 TEST_ff_f (atan2, -0.75L, 1.0L, -0.643501108793284386802809228717322638L);
1523 TEST_ff_f (atan2, 0.75L, -1.0L, 2.49809154479650885165983415456218025L);
1524 TEST_ff_f (atan2, -0.75L, -1.0L, -2.49809154479650885165983415456218025L);
1525 TEST_ff_f (atan2, 0.390625L, .00029L, 1.57005392693128974780151246612928941L);
1526 TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L);
8847214f 1527
3c8605c7 1528 TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L);
16a0e2ec
JM
1529#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1530 TEST_ff_f (atan2, 0x1.00000000000001p0L, 0x1.00000000000001p0L, M_PI_4l);
1531#endif
bb3f4825 1532
8847214f
UD
1533 END (atan2);
1534}
1535
8847214f
UD
1536static void
1537cabs_test (void)
1538{
aaca11d8 1539 errno = 0;
3c6cad26 1540 FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L));
aaca11d8
UD
1541 if (errno == ENOSYS)
1542 /* Function not implemented. */
1543 return;
1544
8847214f
UD
1545 START (cabs);
1546
1547 /* cabs (x + iy) is specified as hypot (x,y) */
1548
1549 /* cabs (+inf + i x) == +inf. */
1550 TEST_c_f (cabs, plus_infty, 1.0, plus_infty);
1551 /* cabs (-inf + i x) == +inf. */
1552 TEST_c_f (cabs, minus_infty, 1.0, plus_infty);
1553
67e971f1
TS
1554 TEST_c_f (cabs, minus_infty, qnan_value, plus_infty);
1555 TEST_c_f (cabs, minus_infty, qnan_value, plus_infty);
8847214f 1556
67e971f1 1557 TEST_c_f (cabs, qnan_value, qnan_value, qnan_value);
8847214f
UD
1558
1559 /* cabs (x,y) == cabs (y,x). */
2550dfe9 1560 TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L);
8847214f 1561 /* cabs (x,y) == cabs (-x,y). */
2550dfe9 1562 TEST_c_f (cabs, -12.390625L, 0.75L, 12.4133028598606664302388810868156657L);
8847214f 1563 /* cabs (x,y) == cabs (-y,x). */
2550dfe9 1564 TEST_c_f (cabs, -0.75L, 12.390625L, 12.4133028598606664302388810868156657L);
8847214f 1565 /* cabs (x,y) == cabs (-x,-y). */
2550dfe9 1566 TEST_c_f (cabs, -12.390625L, -0.75L, 12.4133028598606664302388810868156657L);
8847214f 1567 /* cabs (x,y) == cabs (-y,-x). */
2550dfe9 1568 TEST_c_f (cabs, -0.75L, -12.390625L, 12.4133028598606664302388810868156657L);
8847214f 1569 /* cabs (x,0) == fabs (x). */
2550dfe9
AJ
1570 TEST_c_f (cabs, -0.75L, 0, 0.75L);
1571 TEST_c_f (cabs, 0.75L, 0, 0.75L);
8847214f
UD
1572 TEST_c_f (cabs, -1.0L, 0, 1.0L);
1573 TEST_c_f (cabs, 1.0L, 0, 1.0L);
1574 TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L);
1575 TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L);
1576
2550dfe9 1577 TEST_c_f (cabs, 0.75L, 1.25L, 1.45773797371132511771853821938639577L);
8847214f
UD
1578
1579 END (cabs);
1580}
1581
2550dfe9 1582
8847214f
UD
1583static void
1584cacos_test (void)
1585{
aaca11d8 1586 errno = 0;
3c6cad26 1587 FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
1588 if (errno == ENOSYS)
1589 /* Function not implemented. */
1590 return;
1591
8847214f
UD
1592 START (cacos);
1593
1594
1595 TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero);
1596 TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero);
1597 TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0);
1598 TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0);
1599
1600 TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty);
1601 TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty);
1602
1603 TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty);
1604 TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty);
1605
1606 TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty);
1607 TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty);
1608 TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty);
1609 TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty);
3c6cad26
UD
1610 TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty);
1611 TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty);
8847214f
UD
1612
1613 TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty);
1614 TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty);
1615 TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty);
1616 TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty);
1617
1618 TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty);
1619 TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty);
1620 TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty);
1621 TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty);
1622
67e971f1
TS
1623 TEST_c_c (cacos, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
1624 TEST_c_c (cacos, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
8847214f 1625
67e971f1
TS
1626 TEST_c_c (cacos, 0, qnan_value, M_PI_2l, qnan_value);
1627 TEST_c_c (cacos, minus_zero, qnan_value, M_PI_2l, qnan_value);
8847214f 1628
67e971f1
TS
1629 TEST_c_c (cacos, qnan_value, plus_infty, qnan_value, minus_infty);
1630 TEST_c_c (cacos, qnan_value, minus_infty, qnan_value, plus_infty);
8847214f 1631
67e971f1
TS
1632 TEST_c_c (cacos, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
1633 TEST_c_c (cacos, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 1634
67e971f1
TS
1635 TEST_c_c (cacos, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
1636 TEST_c_c (cacos, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 1637
67e971f1 1638 TEST_c_c (cacos, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 1639
d1d3431a
JM
1640 TEST_c_c (cacos, plus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L);
1641 TEST_c_c (cacos, minus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L);
1642 TEST_c_c (cacos, plus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L);
1643 TEST_c_c (cacos, minus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L);
1644 TEST_c_c (cacos, plus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L);
1645 TEST_c_c (cacos, minus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L);
1646 TEST_c_c (cacos, plus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L);
1647 TEST_c_c (cacos, minus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L);
1648 TEST_c_c (cacos, plus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L);
1649 TEST_c_c (cacos, minus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L);
1650 TEST_c_c (cacos, plus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L);
1651 TEST_c_c (cacos, minus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L);
1652
1653 TEST_c_c (cacos, -1.5L, plus_zero, M_PIl, -0.9624236501192068949955178268487368462704L);
1654 TEST_c_c (cacos, -1.5L, minus_zero, M_PIl, 0.9624236501192068949955178268487368462704L);
1655 TEST_c_c (cacos, -1.0L, plus_zero, M_PIl, minus_zero);
1656 TEST_c_c (cacos, -1.0L, minus_zero, M_PIl, plus_zero);
1657 TEST_c_c (cacos, -0.5L, plus_zero, 2.094395102393195492308428922186335256131L, minus_zero);
1658 TEST_c_c (cacos, -0.5L, minus_zero, 2.094395102393195492308428922186335256131L, plus_zero);
1659 TEST_c_c (cacos, 0.5L, plus_zero, 1.047197551196597746154214461093167628066L, minus_zero);
1660 TEST_c_c (cacos, 0.5L, minus_zero, 1.047197551196597746154214461093167628066L, plus_zero);
1661 TEST_c_c (cacos, 1.0L, plus_zero, plus_zero, minus_zero);
1662 TEST_c_c (cacos, 1.0L, minus_zero, plus_zero, plus_zero);
1663 TEST_c_c (cacos, 1.5L, plus_zero, plus_zero, -0.9624236501192068949955178268487368462704L);
1664 TEST_c_c (cacos, 1.5L, minus_zero, plus_zero, 0.9624236501192068949955178268487368462704L);
1665
728d7b43
JM
1666 TEST_c_c (cacos, 0x1p50L, 1.0L, 8.881784197001252323389053344727730248720e-16L, -3.535050620855721078027883819436720218708e1L);
1667 TEST_c_c (cacos, 0x1p50L, -1.0L, 8.881784197001252323389053344727730248720e-16L, 3.535050620855721078027883819436720218708e1L);
1668 TEST_c_c (cacos, -0x1p50L, 1.0L, 3.141592653589792350284223683154270545292L, -3.535050620855721078027883819436720218708e1L);
1669 TEST_c_c (cacos, -0x1p50L, -1.0L, 3.141592653589792350284223683154270545292L, 3.535050620855721078027883819436720218708e1L);
1670 TEST_c_c (cacos, 1.0L, 0x1p50L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436759661753e1L);
1671 TEST_c_c (cacos, -1.0L, 0x1p50L, 1.570796326794897507409741391764983781004L, -3.535050620855721078027883819436759661753e1L);
1672 TEST_c_c (cacos, 1.0L, -0x1p50L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436759661753e1L);
1673 TEST_c_c (cacos, -1.0L, -0x1p50L, 1.570796326794897507409741391764983781004L, 3.535050620855721078027883819436759661753e1L);
1674#ifndef TEST_FLOAT
1675 TEST_c_c (cacos, 0x1p500L, 1.0L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L);
1676 TEST_c_c (cacos, 0x1p500L, -1.0L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L);
1677 TEST_c_c (cacos, -0x1p500L, 1.0L, 3.141592653589793238462643383279502884197L, -3.472667374605326000180332928505464606058e2L);
1678 TEST_c_c (cacos, -0x1p500L, -1.0L, 3.141592653589793238462643383279502884197L, 3.472667374605326000180332928505464606058e2L);
1679 TEST_c_c (cacos, 1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L);
1680 TEST_c_c (cacos, -1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L);
1681 TEST_c_c (cacos, 1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L);
1682 TEST_c_c (cacos, -1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L);
1683#endif
1684#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1685 TEST_c_c (cacos, 0x1p5000L, 1.0L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L);
1686 TEST_c_c (cacos, 0x1p5000L, -1.0L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L);
1687 TEST_c_c (cacos, -0x1p5000L, 1.0L, 3.141592653589793238462643383279502884197L, -3.466429049980286492395577839412341016946e3L);
1688 TEST_c_c (cacos, -0x1p5000L, -1.0L, 3.141592653589793238462643383279502884197L, 3.466429049980286492395577839412341016946e3L);
1689 TEST_c_c (cacos, 1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L);
1690 TEST_c_c (cacos, -1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L);
1691 TEST_c_c (cacos, 1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L);
1692 TEST_c_c (cacos, -1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L);
1693#endif
1694
1695 TEST_c_c (cacos, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, -8.973081118419833726837456344608533993585e1L);
1696#ifndef TEST_FLOAT
1697 TEST_c_c (cacos, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, -7.107906849659093345062145442726115449315e2L);
1698#endif
1699#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1700 TEST_c_c (cacos, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, -1.135753137836666928715489992987020363057e4L);
1701#endif
1702
8cf28c5e
JM
1703 TEST_c_c (cacos, 0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442097L, -1.194763217287109304111930828519090523536L);
1704 TEST_c_c (cacos, 0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442097L, 1.194763217287109304111930828519090523536L);
1705 TEST_c_c (cacos, -0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442100L, -1.194763217287109304111930828519090523536L);
1706 TEST_c_c (cacos, -0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442100L, 1.194763217287109304111930828519090523536L);
1707 TEST_c_c (cacos, 1.5L, 0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT);
1708 TEST_c_c (cacos, -1.5L, 0x1.fp-129L, 3.141592653589793238462643383279502884195L, -9.624236501192068949955178268487368462704e-1L);
1709 TEST_c_c (cacos, 1.5L, -0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT);
1710 TEST_c_c (cacos, -1.5L, -0x1.fp-129L, 3.141592653589793238462643383279502884195L, 9.624236501192068949955178268487368462704e-1L);
1711#ifndef TEST_FLOAT
1712 TEST_c_c (cacos, 0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L);
1713 TEST_c_c (cacos, 0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L);
1714 TEST_c_c (cacos, -0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L);
1715 TEST_c_c (cacos, -0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L);
1716 TEST_c_c (cacos, 1.5L, 0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
1717 TEST_c_c (cacos, -1.5L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L);
1718 TEST_c_c (cacos, 1.5L, -0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
1719 TEST_c_c (cacos, -1.5L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L);
1720#endif
1721#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1722 TEST_c_c (cacos, 0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L);
1723 TEST_c_c (cacos, 0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L);
1724 TEST_c_c (cacos, -0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L);
1725 TEST_c_c (cacos, -0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L);
1726 TEST_c_c (cacos, 1.5L, 0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION);
1727 TEST_c_c (cacos, -1.5L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L);
1728 TEST_c_c (cacos, 1.5L, -0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION);
1729 TEST_c_c (cacos, -1.5L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L);
1730#endif
1731
0a1b2ae6
JM
1732 TEST_c_c (cacos, 0.5L, 1.0L, 1.221357263937683325603909865564381489366L, -9.261330313501824245501244453057873152694e-1L);
1733 TEST_c_c (cacos, 0.5L, -1.0L, 1.221357263937683325603909865564381489366L, 9.261330313501824245501244453057873152694e-1L);
1734 TEST_c_c (cacos, -0.5L, 1.0L, 1.920235389652109912858733517715121394831L, -9.261330313501824245501244453057873152694e-1L);
1735 TEST_c_c (cacos, -0.5L, -1.0L, 1.920235389652109912858733517715121394831L, 9.261330313501824245501244453057873152694e-1L);
1736 TEST_c_c (cacos, 1.0L, 0.5L, 6.748888455860063801646649673121744318756e-1L, -7.328576759736452608886724437653071523305e-1L);
1737 TEST_c_c (cacos, -1.0L, 0.5L, 2.466703808003786858297978415967328452322L, -7.328576759736452608886724437653071523305e-1L);
1738 TEST_c_c (cacos, 1.0L, -0.5L, 6.748888455860063801646649673121744318756e-1L, 7.328576759736452608886724437653071523305e-1L);
1739 TEST_c_c (cacos, -1.0L, -0.5L, 2.466703808003786858297978415967328452322L, 7.328576759736452608886724437653071523305e-1L);
1740 TEST_c_c (cacos, 0.25L, 1.0L, 1.394493894017929688812643125003661339452L, -8.924633639033482359562124741744951972772e-1L);
1741 TEST_c_c (cacos, 0.25L, -1.0L, 1.394493894017929688812643125003661339452L, 8.924633639033482359562124741744951972772e-1L);
1742 TEST_c_c (cacos, -0.25L, 1.0L, 1.747098759571863549650000258275841544745L, -8.924633639033482359562124741744951972772e-1L);
1743 TEST_c_c (cacos, -0.25L, -1.0L, 1.747098759571863549650000258275841544745L, 8.924633639033482359562124741744951972772e-1L);
1744 TEST_c_c (cacos, 1.0L, 0.25L, 4.890443302710802929202843732146540079124e-1L, -5.097911466811016354623559941115413499164e-1L);
1745 TEST_c_c (cacos, -1.0L, 0.25L, 2.652548323318712945542359010064848876285L, -5.097911466811016354623559941115413499164e-1L);
1746 TEST_c_c (cacos, 1.0L, -0.25L, 4.890443302710802929202843732146540079124e-1L, 5.097911466811016354623559941115413499164e-1L);
1747 TEST_c_c (cacos, -1.0L, -0.25L, 2.652548323318712945542359010064848876285L, 5.097911466811016354623559941115413499164e-1L);
1748 TEST_c_c (cacos, 0x1.fp-10L, 1.0L, 1.569458417435338878318763342108699202986L, -8.813742198809567991336704287826445879025e-1L);
1749 TEST_c_c (cacos, 0x1.fp-10L, -1.0L, 1.569458417435338878318763342108699202986L, 8.813742198809567991336704287826445879025e-1L);
1750 TEST_c_c (cacos, -0x1.fp-10L, 1.0L, 1.572134236154454360143880041170803681211L, -8.813742198809567991336704287826445879025e-1L);
1751 TEST_c_c (cacos, -0x1.fp-10L, -1.0L, 1.572134236154454360143880041170803681211L, 8.813742198809567991336704287826445879025e-1L);
1752 TEST_c_c (cacos, 1.0L, 0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, -4.350501469856803800217957402220976497152e-2L);
1753 TEST_c_c (cacos, -1.0L, 0x1.fp-10L, 3.098101355958774410750062883737683164607L, -4.350501469856803800217957402220976497152e-2L);
1754 TEST_c_c (cacos, 1.0L, -0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, 4.350501469856803800217957402220976497152e-2L);
1755 TEST_c_c (cacos, -1.0L, -0x1.fp-10L, 3.098101355958774410750062883737683164607L, 4.350501469856803800217957402220976497152e-2L);
1756 TEST_c_c (cacos, 0x1.fp-30L, 1.0L, 1.570796325518966635014803151387033957091L, -8.813735870195430258081932989769495326854e-1L);
1757 TEST_c_c (cacos, 0x1.fp-30L, -1.0L, 1.570796325518966635014803151387033957091L, 8.813735870195430258081932989769495326854e-1L);
1758 TEST_c_c (cacos, -0x1.fp-30L, 1.0L, 1.570796328070826603447840231892468927106L, -8.813735870195430258081932989769495326854e-1L);
1759 TEST_c_c (cacos, -0x1.fp-30L, -1.0L, 1.570796328070826603447840231892468927106L, 8.813735870195430258081932989769495326854e-1L);
1760 TEST_c_c (cacos, 1.0L, 0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, -4.247867098745151888768727039216644758847e-5L);
1761 TEST_c_c (cacos, -1.0L, 0x1.fp-30L, 3.141550174918818561961484385371624132331L, -4.247867098745151888768727039216644758847e-5L);
1762 TEST_c_c (cacos, 1.0L, -0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, 4.247867098745151888768727039216644758847e-5L);
1763 TEST_c_c (cacos, -1.0L, -0x1.fp-30L, 3.141550174918818561961484385371624132331L, 4.247867098745151888768727039216644758847e-5L);
1764 TEST_c_c (cacos, 0x1.fp-100L, 1.0L, 1.570796326794896619231321691638670687364L, -8.813735870195430252326093249797923090282e-1L);
1765 TEST_c_c (cacos, 0x1.fp-100L, -1.0L, 1.570796326794896619231321691638670687364L, 8.813735870195430252326093249797923090282e-1L);
1766 TEST_c_c (cacos, -0x1.fp-100L, 1.0L, 1.570796326794896619231321691640832196834L, -8.813735870195430252326093249797923090282e-1L);
1767 TEST_c_c (cacos, -0x1.fp-100L, -1.0L, 1.570796326794896619231321691640832196834L, 8.813735870195430252326093249797923090282e-1L);
1768 TEST_c_c (cacos, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, -1.236292038260260888664514866457202186027e-15L);
1769 TEST_c_c (cacos, -1.0L, 0x1.fp-100L, 3.141592653589792002170605123018614219682L, -1.236292038260260888664514866457202186027e-15L);
1770 TEST_c_c (cacos, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, 1.236292038260260888664514866457202186027e-15L);
1771 TEST_c_c (cacos, -1.0L, -0x1.fp-100L, 3.141592653589792002170605123018614219682L, 1.236292038260260888664514866457202186027e-15L);
1772 TEST_c_c (cacos, 0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442097L, -8.813735870195430252326093249797923090282e-1L);
1773 TEST_c_c (cacos, 0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442097L, 8.813735870195430252326093249797923090282e-1L);
1774 TEST_c_c (cacos, -0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442101L, -8.813735870195430252326093249797923090282e-1L);
1775 TEST_c_c (cacos, -0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442101L, 8.813735870195430252326093249797923090282e-1L);
1776 TEST_c_c (cacos, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, -5.335635276982233498398987585285818977933e-20L);
1777 TEST_c_c (cacos, -1.0L, 0x1.fp-129L, 3.141592653589793238409287030509680549213L, -5.335635276982233498398987585285818977933e-20L);
1778 TEST_c_c (cacos, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, 5.335635276982233498398987585285818977933e-20L);
1779 TEST_c_c (cacos, -1.0L, -0x1.fp-129L, 3.141592653589793238409287030509680549213L, 5.335635276982233498398987585285818977933e-20L);
1780#ifndef TEST_FLOAT
1781 TEST_c_c (cacos, 0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L);
1782 TEST_c_c (cacos, 0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L);
1783 TEST_c_c (cacos, -0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L);
1784 TEST_c_c (cacos, -0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L);
1785 TEST_c_c (cacos, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L);
1786 TEST_c_c (cacos, -1.0L, 0x1.fp-1000L, 3.141592653589793238462643383279502884197L, -4.252291453851660175550490409247739011867e-151L);
1787 TEST_c_c (cacos, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L);
1788 TEST_c_c (cacos, -1.0L, -0x1.fp-1000L, 3.141592653589793238462643383279502884197L, 4.252291453851660175550490409247739011867e-151L);
1789 TEST_c_c (cacos, 0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L);
1790 TEST_c_c (cacos, 0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L);
1791 TEST_c_c (cacos, -0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L);
1792 TEST_c_c (cacos, -0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L);
1793 TEST_c_c (cacos, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L);
1794 TEST_c_c (cacos, -1.0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -7.340879205566679497036857179189356754017e-155L);
1795 TEST_c_c (cacos, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L);
1796 TEST_c_c (cacos, -1.0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 7.340879205566679497036857179189356754017e-155L);
1797#endif
1798#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1799 TEST_c_c (cacos, 0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L);
1800 TEST_c_c (cacos, 0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L);
1801 TEST_c_c (cacos, -0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L);
1802 TEST_c_c (cacos, -0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L);
1803 TEST_c_c (cacos, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L);
1804 TEST_c_c (cacos, -1.0L, 0x1.fp-10000L, 3.141592653589793238462643383279502884197L, -9.854680208706673586644342922051388714633e-1506L);
1805 TEST_c_c (cacos, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L);
1806 TEST_c_c (cacos, -1.0L, -0x1.fp-10000L, 3.141592653589793238462643383279502884197L, 9.854680208706673586644342922051388714633e-1506L);
1807 TEST_c_c (cacos, 0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L);
1808 TEST_c_c (cacos, 0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L);
1809 TEST_c_c (cacos, -0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L);
1810 TEST_c_c (cacos, -0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L);
1811 TEST_c_c (cacos, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L);
1812 TEST_c_c (cacos, -1.0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.023632056840860275214893047597614177639e-2467L);
1813 TEST_c_c (cacos, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L);
1814 TEST_c_c (cacos, -1.0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.023632056840860275214893047597614177639e-2467L);
1815#endif
1816
4d14f449
JM
1817 TEST_c_c (cacos, 0x1p-23L, 0x1.000002p0L, 1.570796242501204621739026081991856762292L, -8.813736713132400470205730751186547909968e-1L);
1818 TEST_c_c (cacos, 0x1p-23L, -0x1.000002p0L, 1.570796242501204621739026081991856762292L, 8.813736713132400470205730751186547909968e-1L);
1819 TEST_c_c (cacos, -0x1p-23L, 0x1.000002p0L, 1.570796411088588616723617301287646121905L, -8.813736713132400470205730751186547909968e-1L);
1820 TEST_c_c (cacos, -0x1p-23L, -0x1.000002p0L, 1.570796411088588616723617301287646121905L, 8.813736713132400470205730751186547909968e-1L);
1821 TEST_c_c (cacos, 0x1.000002p0L, 0x1p-23L, 2.222118384408546368406374049167636760903e-4L, -5.364668491573609633134147164031476452679e-4L);
1822 TEST_c_c (cacos, -0x1.000002p0L, 0x1p-23L, 3.141370441751352383825802745874586120521L, -5.364668491573609633134147164031476452679e-4L);
1823 TEST_c_c (cacos, 0x1.000002p0L, -0x1p-23L, 2.222118384408546368406374049167636760903e-4L, 5.364668491573609633134147164031476452679e-4L);
1824 TEST_c_c (cacos, -0x1.000002p0L, -0x1p-23L, 3.141370441751352383825802745874586120521L, 5.364668491573609633134147164031476452679e-4L);
1825 TEST_c_c (cacos, 0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442097L, -8.813736713132375348727889167749389235161e-1L);
1826 TEST_c_c (cacos, 0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442097L, 8.813736713132375348727889167749389235161e-1L);
1827 TEST_c_c (cacos, -0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442101L, -8.813736713132375348727889167749389235161e-1L);
1828 TEST_c_c (cacos, -0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442101L, 8.813736713132375348727889167749389235161e-1L);
1829 TEST_c_c (cacos, 0x1.000002p0L, 0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, -4.882812451493617206486388134172712975070e-4L);
1830 TEST_c_c (cacos, -0x1.000002p0L, 0x1.fp-129L, 3.141592653589793238462643383279502878367L, -4.882812451493617206486388134172712975070e-4L);
1831 TEST_c_c (cacos, 0x1.000002p0L, -0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, 4.882812451493617206486388134172712975070e-4L);
1832 TEST_c_c (cacos, -0x1.000002p0L, -0x1.fp-129L, 3.141592653589793238462643383279502878367L, 4.882812451493617206486388134172712975070e-4L);
1833 TEST_c_c (cacos, 0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L);
1834 TEST_c_c (cacos, 0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L);
1835 TEST_c_c (cacos, -0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L);
1836 TEST_c_c (cacos, -0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L);
1837 TEST_c_c (cacos, 0x1.000002p0L, 0.0L, 0.0L, -4.882812451493617206486388134172712975070e-4L);
1838 TEST_c_c (cacos, -0x1.000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.882812451493617206486388134172712975070e-4L);
1839 TEST_c_c (cacos, 0x1.000002p0L, -0.0L, 0.0L, 4.882812451493617206486388134172712975070e-4L);
1840 TEST_c_c (cacos, -0x1.000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.882812451493617206486388134172712975070e-4L);
3a7182a1 1841#ifndef TEST_FLOAT
4d14f449
JM
1842 TEST_c_c (cacos, 0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, -8.813735870195431822418551933572982483664e-1L);
1843 TEST_c_c (cacos, 0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, 8.813735870195431822418551933572982483664e-1L);
1844 TEST_c_c (cacos, -0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, -8.813735870195431822418551933572982483664e-1L);
1845 TEST_c_c (cacos, -0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, 8.813735870195431822418551933572982483664e-1L);
1846 TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1p-52L, 9.590301705980041385828904092662391018164e-9L, -2.315303644582684770975188768022139415020e-8L);
1847 TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1p-52L, 3.141592643999491532482601997450598791535L, -2.315303644582684770975188768022139415020e-8L);
1848 TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1p-52L, 9.590301705980041385828904092662391018164e-9L, 2.315303644582684770975188768022139415020e-8L);
1849 TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1p-52L, 3.141592643999491532482601997450598791535L, 2.315303644582684770975188768022139415020e-8L);
1850 TEST_c_c (cacos, 0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L);
1851 TEST_c_c (cacos, 0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L);
1852 TEST_c_c (cacos, -0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L);
1853 TEST_c_c (cacos, -0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L);
1854 TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, -2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
1855 TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L);
1856 TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, 2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
1857 TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L);
1858 TEST_c_c (cacos, 0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L);
1859 TEST_c_c (cacos, 0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L);
1860 TEST_c_c (cacos, -0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L);
1861 TEST_c_c (cacos, -0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L);
1862 TEST_c_c (cacos, 0x1.0000000000001p0L, 0.0L, 0.0L, -2.107342425544701550354780375182800088393e-8L);
1863 TEST_c_c (cacos, -0x1.0000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L);
1864 TEST_c_c (cacos, 0x1.0000000000001p0L, -0.0L, 0.0L, 2.107342425544701550354780375182800088393e-8L);
1865 TEST_c_c (cacos, -0x1.0000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L);
3a7182a1
JM
1866#endif
1867#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4d14f449
JM
1868 TEST_c_c (cacos, 0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, -8.813735870195430253092739958139610131001e-1L);
1869 TEST_c_c (cacos, 0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, 8.813735870195430253092739958139610131001e-1L);
1870 TEST_c_c (cacos, -0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, -8.813735870195430253092739958139610131001e-1L);
1871 TEST_c_c (cacos, -0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, 8.813735870195430253092739958139610131001e-1L);
1872 TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1p-63L, 2.119177303101063432592523199680782317447e-10L, -5.116146586219826555037807251857670783420e-10L);
1873 TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1p-63L, 3.141592653377875508152537040020250564229L, -5.116146586219826555037807251857670783420e-10L);
1874 TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1p-63L, 2.119177303101063432592523199680782317447e-10L, 5.116146586219826555037807251857670783420e-10L);
1875 TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1p-63L, 3.141592653377875508152537040020250564229L, 5.116146586219826555037807251857670783420e-10L);
3a7182a1 1876# if LDBL_MIN_EXP <= -16381
4d14f449
JM
1877 TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L);
1878 TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L);
1879 TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L);
1880 TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L);
1881 TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, -4.656612873077392578082927418388212703712e-10L);
1882 TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L);
1883 TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, 4.656612873077392578082927418388212703712e-10L);
1884 TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L);
3a7182a1 1885# endif
4d14f449
JM
1886 TEST_c_c (cacos, 0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L);
1887 TEST_c_c (cacos, 0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L);
1888 TEST_c_c (cacos, -0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L);
1889 TEST_c_c (cacos, -0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L);
1890 TEST_c_c (cacos, 0x1.0000000000000002p0L, 0.0L, 0.0L, -4.656612873077392578082927418388212703712e-10L);
1891 TEST_c_c (cacos, -0x1.0000000000000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L);
1892 TEST_c_c (cacos, 0x1.0000000000000002p0L, -0.0L, 0.0L, 4.656612873077392578082927418388212703712e-10L);
1893 TEST_c_c (cacos, -0x1.0000000000000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L);
3a7182a1
JM
1894#endif
1895#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4d14f449
JM
1896 TEST_c_c (cacos, 0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, -8.813735870195430252326093249798097405561e-1L);
1897 TEST_c_c (cacos, 0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, 8.813735870195430252326093249798097405561e-1L);
1898 TEST_c_c (cacos, -0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, -8.813735870195430252326093249798097405561e-1L);
1899 TEST_c_c (cacos, -0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, 8.813735870195430252326093249798097405561e-1L);
1900 TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1p-106L, 5.394221422390606848017034778914096659726e-17L, -2.285028863093221674154232933662774454211e-16L);
1901 TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1p-106L, 3.141592653589793184520429159373434404027L, -2.285028863093221674154232933662774454211e-16L);
1902 TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1p-106L, 5.394221422390606848017034778914096659726e-17L, 2.285028863093221674154232933662774454211e-16L);
1903 TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1p-106L, 3.141592653589793184520429159373434404027L, 2.285028863093221674154232933662774454211e-16L);
1904 TEST_c_c (cacos, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L);
1905 TEST_c_c (cacos, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L);
1906 TEST_c_c (cacos, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L);
1907 TEST_c_c (cacos, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L);
1908 TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, -2.220446049250313080847263336181636063482e-16L);
1909 TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L);
1910 TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, 2.220446049250313080847263336181636063482e-16L);
1911 TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L);
1912 TEST_c_c (cacos, 0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L);
1913 TEST_c_c (cacos, 0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L);
1914 TEST_c_c (cacos, -0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L);
1915 TEST_c_c (cacos, -0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L);
1916 TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0.0L, 0.0L, -2.220446049250313080847263336181636063482e-16L);
1917 TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L);
1918 TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0.0L, 0.0L, 2.220446049250313080847263336181636063482e-16L);
1919 TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L);
3a7182a1
JM
1920#endif
1921#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4d14f449
JM
1922 TEST_c_c (cacos, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, -8.813735870195430252326093249797924452120e-1L);
1923 TEST_c_c (cacos, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, 8.813735870195430252326093249797924452120e-1L);
1924 TEST_c_c (cacos, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, -8.813735870195430252326093249797924452120e-1L);
1925 TEST_c_c (cacos, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, 8.813735870195430252326093249797924452120e-1L);
1926 TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 4.767863183742677481693563511435642755521e-18L, -2.019699255375255198156433710951064632386e-17L);
1927 TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 3.141592653589793233694780199536825402504L, -2.019699255375255198156433710951064632386e-17L);
1928 TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 4.767863183742677481693563511435642755521e-18L, 2.019699255375255198156433710951064632386e-17L);
1929 TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 3.141592653589793233694780199536825402504L, 2.019699255375255198156433710951064632386e-17L);
1930 TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L);
1931 TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L);
1932 TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L);
1933 TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L);
1934 TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, -1.962615573354718824241727964954454332780e-17L);
1935 TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L);
1936 TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, 1.962615573354718824241727964954454332780e-17L);
1937 TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L);
1938 TEST_c_c (cacos, 0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L);
1939 TEST_c_c (cacos, 0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L);
1940 TEST_c_c (cacos, -0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L);
1941 TEST_c_c (cacos, -0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L);
1942 TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0.0L, 0.0L, -1.962615573354718824241727964954454332780e-17L);
1943 TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L);
1944 TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0.0L, 0.0L, 1.962615573354718824241727964954454332780e-17L);
1945 TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L);
3a7182a1
JM
1946#endif
1947
ccc8cadf
JM
1948 TEST_c_c (cacos, 0x1p-23L, 0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, -8.813735448726963984495965873956465777250e-1L);
1949 TEST_c_c (cacos, 0x1p-23L, -0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, 8.813735448726963984495965873956465777250e-1L);
1950 TEST_c_c (cacos, -0x1p-23L, 0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, -8.813735448726963984495965873956465777250e-1L);
1951 TEST_c_c (cacos, -0x1p-23L, -0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, 8.813735448726963984495965873956465777250e-1L);
1952 TEST_c_c (cacos, 0x0.ffffffp0L, 0x1p-23L, 4.391863861910487109445187743978204002614e-4L, -2.714321200917194650737217746780928423385e-4L);
1953 TEST_c_c (cacos, -0x0.ffffffp0L, 0x1p-23L, 3.141153467203602189751698864505105063797L, -2.714321200917194650737217746780928423385e-4L);
1954 TEST_c_c (cacos, 0x0.ffffffp0L, -0x1p-23L, 4.391863861910487109445187743978204002614e-4L, 2.714321200917194650737217746780928423385e-4L);
1955 TEST_c_c (cacos, -0x0.ffffffp0L, -0x1p-23L, 3.141153467203602189751698864505105063797L, 2.714321200917194650737217746780928423385e-4L);
1956 TEST_c_c (cacos, 0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, -8.813735448726938863015878255140556727969e-1L);
1957 TEST_c_c (cacos, 0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, 8.813735448726938863015878255140556727969e-1L);
1958 TEST_c_c (cacos, -0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, -8.813735448726938863015878255140556727969e-1L);
1959 TEST_c_c (cacos, -0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, 8.813735448726938863015878255140556727969e-1L);
1960 TEST_c_c (cacos, 0x0.ffffffp0L, 0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, -8.245504387859737323891843603996428534945e-36L);
1961 TEST_c_c (cacos, -0x0.ffffffp0L, 0x1.fp-129L, 3.141247386605077034875040133796864147700L, -8.245504387859737323891843603996428534945e-36L);
1962 TEST_c_c (cacos, 0x0.ffffffp0L, -0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, 8.245504387859737323891843603996428534945e-36L);
1963 TEST_c_c (cacos, -0x0.ffffffp0L, -0x1.fp-129L, 3.141247386605077034875040133796864147700L, 8.245504387859737323891843603996428534945e-36L);
1964 TEST_c_c (cacos, 0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L);
1965 TEST_c_c (cacos, 0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L);
1966 TEST_c_c (cacos, -0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L);
1967 TEST_c_c (cacos, -0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L);
1968 TEST_c_c (cacos, 0x0.ffffffp0L, 0.0L, 3.452669847162035876032494826387364972849e-4L, -0.0L);
1969 TEST_c_c (cacos, -0x0.ffffffp0L, 0.0L, 3.141247386605077034875040133796864147700L, -0.0L);
1970 TEST_c_c (cacos, 0x0.ffffffp0L, -0.0L, 3.452669847162035876032494826387364972849e-4L, 0.0L);
1971 TEST_c_c (cacos, -0x0.ffffffp0L, -0.0L, 3.141247386605077034875040133796864147700L, 0.0L);
1972 TEST_c_c (cacos, 0x1p-23L, 0.5L, 1.570796220170866625230343643673321150378L, -4.812118250596059896127318386463676808798e-1L);
1973 TEST_c_c (cacos, 0x1p-23L, -0.5L, 1.570796220170866625230343643673321150378L, 4.812118250596059896127318386463676808798e-1L);
1974 TEST_c_c (cacos, -0x1p-23L, 0.5L, 1.570796433418926613232299739606181733819L, -4.812118250596059896127318386463676808798e-1L);
1975 TEST_c_c (cacos, -0x1p-23L, -0.5L, 1.570796433418926613232299739606181733819L, 4.812118250596059896127318386463676808798e-1L);
1976 TEST_c_c (cacos, 0.5L, 0x1p-23L, 1.047197551196603215914744618665204532273L, -1.376510308240943236356088341381173571841e-7L);
1977 TEST_c_c (cacos, -0.5L, 0x1p-23L, 2.094395102393190022547898764614298351924L, -1.376510308240943236356088341381173571841e-7L);
1978 TEST_c_c (cacos, 0.5L, -0x1p-23L, 1.047197551196603215914744618665204532273L, 1.376510308240943236356088341381173571841e-7L);
1979 TEST_c_c (cacos, -0.5L, -0x1p-23L, 2.094395102393190022547898764614298351924L, 1.376510308240943236356088341381173571841e-7L);
1980 TEST_c_c (cacos, 0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442096L, -4.812118250596034474977589134243684231352e-1L);
1981 TEST_c_c (cacos, 0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442096L, 4.812118250596034474977589134243684231352e-1L);
1982 TEST_c_c (cacos, -0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442101L, -4.812118250596034474977589134243684231352e-1L);
1983 TEST_c_c (cacos, -0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442101L, 4.812118250596034474977589134243684231352e-1L);
1984 TEST_c_c (cacos, 0.5L, 0x1.fp-129L, 1.047197551196597746154214461093167628066L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1985 TEST_c_c (cacos, -0.5L, 0x1.fp-129L, 2.094395102393195492308428922186335256131L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1986 TEST_c_c (cacos, 0.5L, -0x1.fp-129L, 1.047197551196597746154214461093167628066L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1987 TEST_c_c (cacos, -0.5L, -0x1.fp-129L, 2.094395102393195492308428922186335256131L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1988 TEST_c_c (cacos, 0x1p-23L, 0x1p-23L, 1.570796207585607068450636380271254316214L, -1.192092895507818146886315028596704749235e-7L);
1989 TEST_c_c (cacos, 0x1p-23L, -0x1p-23L, 1.570796207585607068450636380271254316214L, 1.192092895507818146886315028596704749235e-7L);
1990 TEST_c_c (cacos, -0x1p-23L, 0x1p-23L, 1.570796446004186170012007003008248567984L, -1.192092895507818146886315028596704749235e-7L);
1991 TEST_c_c (cacos, -0x1p-23L, -0x1p-23L, 1.570796446004186170012007003008248567984L, 1.192092895507818146886315028596704749235e-7L);
1992 TEST_c_c (cacos, 0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442096L, -1.192092895507809676556842485683592032154e-7L);
1993 TEST_c_c (cacos, 0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442096L, 1.192092895507809676556842485683592032154e-7L);
1994 TEST_c_c (cacos, -0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442101L, -1.192092895507809676556842485683592032154e-7L);
1995 TEST_c_c (cacos, -0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442101L, 1.192092895507809676556842485683592032154e-7L);
1996 TEST_c_c (cacos, 0x1p-23L, 0x1.fp-129L, 1.570796207585607068449789347324000006847L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1997 TEST_c_c (cacos, -0x1p-23L, 0x1.fp-129L, 1.570796446004186170012854035955502877351L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1998 TEST_c_c (cacos, 0x1p-23L, -0x1.fp-129L, 1.570796207585607068449789347324000006847L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1999 TEST_c_c (cacos, -0x1p-23L, -0x1.fp-129L, 1.570796446004186170012854035955502877351L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT);
2000 TEST_c_c (cacos, 0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L);
2001 TEST_c_c (cacos, 0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L);
2002 TEST_c_c (cacos, -0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L);
2003 TEST_c_c (cacos, -0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L);
2004 TEST_c_c (cacos, 0x1p-23L, 0.0L, 1.570796207585607068449789347324000006847L, -0.0L);
2005 TEST_c_c (cacos, -0x1p-23L, 0.0L, 1.570796446004186170012854035955502877351L, -0.0L);
2006 TEST_c_c (cacos, 0x1p-23L, -0.0L, 1.570796207585607068449789347324000006847L, 0.0L);
2007 TEST_c_c (cacos, -0x1p-23L, -0.0L, 1.570796446004186170012854035955502877351L, 0.0L);
2008 TEST_c_c (cacos, 0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
2009 TEST_c_c (cacos, 0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
2010 TEST_c_c (cacos, -0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442101L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
2011 TEST_c_c (cacos, -0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442101L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
2012#ifndef TEST_FLOAT
2013 TEST_c_c (cacos, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, -8.813735870195429467279863907910458761820e-1L);
2014 TEST_c_c (cacos, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, 8.813735870195429467279863907910458761820e-1L);
2015 TEST_c_c (cacos, -0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, -8.813735870195429467279863907910458761820e-1L);
2016 TEST_c_c (cacos, -0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, 8.813735870195429467279863907910458761820e-1L);
2017 TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.895456983915074112227925127005564372844e-8L, -1.171456840272878582596796205397918831268e-8L);
2018 TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1p-52L, 3.141592634635223399311902261000251614142L, -1.171456840272878582596796205397918831268e-8L);
2019 TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.895456983915074112227925127005564372844e-8L, 1.171456840272878582596796205397918831268e-8L);
2020 TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1p-52L, 3.141592634635223399311902261000251614142L, 1.171456840272878582596796205397918831268e-8L);
2021 TEST_c_c (cacos, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L);
2022 TEST_c_c (cacos, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L);
2023 TEST_c_c (cacos, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L);
2024 TEST_c_c (cacos, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L);
2025 TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2026 TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.141592638688632044614986995416067458693L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2027 TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2028 TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.141592638688632044614986995416067458693L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2029 TEST_c_c (cacos, 0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L);
2030 TEST_c_c (cacos, 0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L);
2031 TEST_c_c (cacos, -0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L);
2032 TEST_c_c (cacos, -0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L);
2033 TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0.0L, 1.490116119384765638786343542550461592240e-8L, -0.0L);
2034 TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0.0L, 3.141592638688632044614986995416067458693L, -0.0L);
2035 TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0.0L, 1.490116119384765638786343542550461592240e-8L, 0.0L);
2036 TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0.0L, 3.141592638688632044614986995416067458693L, 0.0L);
2037#endif
2038 TEST_c_c (cacos, 0x1p-52L, 0.5L, 1.570796326794896420628589431857911675917L, -4.812118250596034474977589134243772428682e-1L);
2039 TEST_c_c (cacos, 0x1p-52L, -0.5L, 1.570796326794896420628589431857911675917L, 4.812118250596034474977589134243772428682e-1L);
2040 TEST_c_c (cacos, -0x1p-52L, 0.5L, 1.570796326794896817834053951421591208280L, -4.812118250596034474977589134243772428682e-1L);
2041 TEST_c_c (cacos, -0x1p-52L, -0.5L, 1.570796326794896817834053951421591208280L, 4.812118250596034474977589134243772428682e-1L);
2042 TEST_c_c (cacos, 0.5L, 0x1p-52L, 1.047197551196597746154214461093186605110L, -2.563950248511418570403591756798643804971e-16L);
2043 TEST_c_c (cacos, -0.5L, 0x1p-52L, 2.094395102393195492308428922186316279087L, -2.563950248511418570403591756798643804971e-16L);
2044 TEST_c_c (cacos, 0.5L, -0x1p-52L, 1.047197551196597746154214461093186605110L, 2.563950248511418570403591756798643804971e-16L);
2045 TEST_c_c (cacos, -0.5L, -0x1p-52L, 2.094395102393195492308428922186316279087L, 2.563950248511418570403591756798643804971e-16L);
2046#ifndef TEST_FLOAT
2047 TEST_c_c (cacos, 0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L);
2048 TEST_c_c (cacos, 0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L);
2049 TEST_c_c (cacos, -0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L);
2050 TEST_c_c (cacos, -0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L);
2051 TEST_c_c (cacos, 0.5L, 0x1.fp-1025L, 1.047197551196597746154214461093167628066L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2052 TEST_c_c (cacos, -0.5L, 0x1.fp-1025L, 2.094395102393195492308428922186335256131L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2053 TEST_c_c (cacos, 0.5L, -0x1.fp-1025L, 1.047197551196597746154214461093167628066L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2054 TEST_c_c (cacos, -0.5L, -0x1.fp-1025L, 2.094395102393195492308428922186335256131L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2055#endif
2056 TEST_c_c (cacos, 0x1p-52L, 0x1p-52L, 1.570796326794896397186716766608443357372L, -2.220446049250313080847263336181677117148e-16L);
2057 TEST_c_c (cacos, 0x1p-52L, -0x1p-52L, 1.570796326794896397186716766608443357372L, 2.220446049250313080847263336181677117148e-16L);
2058 TEST_c_c (cacos, -0x1p-52L, 0x1p-52L, 1.570796326794896841275926616671059526825L, -2.220446049250313080847263336181677117148e-16L);
2059 TEST_c_c (cacos, -0x1p-52L, -0x1p-52L, 1.570796326794896841275926616671059526825L, 2.220446049250313080847263336181677117148e-16L);
2060#ifndef TEST_FLOAT
2061 TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L);
2062 TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L);
2063 TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L);
2064 TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L);
2065 TEST_c_c (cacos, 0x1p-52L, 0x1.fp-1025L, 1.570796326794896397186716766608443357372L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2066 TEST_c_c (cacos, -0x1p-52L, 0x1.fp-1025L, 1.570796326794896841275926616671059526825L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2067 TEST_c_c (cacos, 0x1p-52L, -0x1.fp-1025L, 1.570796326794896397186716766608443357372L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2068 TEST_c_c (cacos, -0x1p-52L, -0x1.fp-1025L, 1.570796326794896841275926616671059526825L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2069#endif
2070 TEST_c_c (cacos, 0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L);
2071 TEST_c_c (cacos, 0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L);
2072 TEST_c_c (cacos, -0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L);
2073 TEST_c_c (cacos, -0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L);
2074 TEST_c_c (cacos, 0x1p-52L, 0.0L, 1.570796326794896397186716766608443357372L, -0.0L);
2075 TEST_c_c (cacos, -0x1p-52L, 0.0L, 1.570796326794896841275926616671059526825L, -0.0L);
2076 TEST_c_c (cacos, 0x1p-52L, -0.0L, 1.570796326794896397186716766608443357372L, 0.0L);
2077 TEST_c_c (cacos, -0x1p-52L, -0.0L, 1.570796326794896841275926616671059526825L, 0.0L);
2078#ifndef TEST_FLOAT
2079 TEST_c_c (cacos, 0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2080 TEST_c_c (cacos, 0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2081 TEST_c_c (cacos, -0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2082 TEST_c_c (cacos, -0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2083#endif
2084#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2085 TEST_c_c (cacos, 0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, -8.813735870195430251942769895627079569937e-1L);
2086 TEST_c_c (cacos, 0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, 8.813735870195430251942769895627079569937e-1L);
2087 TEST_c_c (cacos, -0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, -8.813735870195430251942769895627079569937e-1L);
2088 TEST_c_c (cacos, -0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, 8.813735870195430251942769895627079569937e-1L);
2089 TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1p-63L, 4.188407771167967636741951941902992986043e-10L, -2.588578361325995866221775673638805081337e-10L);
2090 TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1p-63L, 3.141592653170952461345846619605307690007L, -2.588578361325995866221775673638805081337e-10L);
2091 TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1p-63L, 4.188407771167967636741951941902992986043e-10L, 2.588578361325995866221775673638805081337e-10L);
2092 TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1p-63L, 3.141592653170952461345846619605307690007L, 2.588578361325995866221775673638805081337e-10L);
2093# if LDBL_MIN_EXP <= -16381
2094 TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L);
2095 TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L);
2096 TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L);
2097 TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L);
2098 TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, -2.472906068161537187835415298076415423459e-4923L);
2099 TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.141592653260520984471283759942320330996L, -2.472906068161537187835415298076415423459e-4923L);
2100 TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, 2.472906068161537187835415298076415423459e-4923L);
2101 TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.141592653260520984471283759942320330996L, 2.472906068161537187835415298076415423459e-4923L);
2102# endif
2103 TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L);
2104 TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L);
2105 TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L);
2106 TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L);
2107 TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0.0L, 3.292722539913596233371825532007990724506e-10L, -0.0L);
2108 TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0.0L, 3.141592653260520984471283759942320330996L, -0.0L);
2109 TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0.0L, 3.292722539913596233371825532007990724506e-10L, 0.0L);
2110 TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0.0L, 3.141592653260520984471283759942320330996L, 0.0L);
2111#endif
2112 TEST_c_c (cacos, 0x1p-63L, 0.5L, 1.570796326794896619134347701278529840650L, -4.812118250596034474977589134243684231373e-1L);
2113 TEST_c_c (cacos, 0x1p-63L, -0.5L, 1.570796326794896619134347701278529840650L, 4.812118250596034474977589134243684231373e-1L);
2114 TEST_c_c (cacos, -0x1p-63L, 0.5L, 1.570796326794896619328295682000973043547L, -4.812118250596034474977589134243684231373e-1L);
2115 TEST_c_c (cacos, -0x1p-63L, -0.5L, 1.570796326794896619328295682000973043547L, 4.812118250596034474977589134243684231373e-1L);
2116 TEST_c_c (cacos, 0.5L, 0x1p-63L, 1.047197551196597746154214461093167628070L, -1.251928832280966098829878787499365228659e-19L);
2117 TEST_c_c (cacos, -0.5L, 0x1p-63L, 2.094395102393195492308428922186335256127L, -1.251928832280966098829878787499365228659e-19L);
2118 TEST_c_c (cacos, 0.5L, -0x1p-63L, 1.047197551196597746154214461093167628070L, 1.251928832280966098829878787499365228659e-19L);
2119 TEST_c_c (cacos, -0.5L, -0x1p-63L, 2.094395102393195492308428922186335256127L, 1.251928832280966098829878787499365228659e-19L);
2120#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2121 TEST_c_c (cacos, 0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L);
2122 TEST_c_c (cacos, 0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L);
2123 TEST_c_c (cacos, -0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L);
2124 TEST_c_c (cacos, -0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L);
2125 TEST_c_c (cacos, 0.5L, 0x1.fp-16385L, 1.047197551196597746154214461093167628066L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION);
2126 TEST_c_c (cacos, -0.5L, 0x1.fp-16385L, 2.094395102393195492308428922186335256131L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION);
2127 TEST_c_c (cacos, 0.5L, -0x1.fp-16385L, 1.047197551196597746154214461093167628066L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION);
2128 TEST_c_c (cacos, -0.5L, -0x1.fp-16385L, 2.094395102393195492308428922186335256131L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION);
2129#endif
2130 TEST_c_c (cacos, 0x1p-63L, 0x1p-63L, 1.570796326794896619122901474391200998698L, -1.084202172485504434007452800869941711430e-19L);
2131 TEST_c_c (cacos, 0x1p-63L, -0x1p-63L, 1.570796326794896619122901474391200998698L, 1.084202172485504434007452800869941711430e-19L);
2132 TEST_c_c (cacos, -0x1p-63L, 0x1p-63L, 1.570796326794896619339741908888301885499L, -1.084202172485504434007452800869941711430e-19L);
2133 TEST_c_c (cacos, -0x1p-63L, -0x1p-63L, 1.570796326794896619339741908888301885499L, 1.084202172485504434007452800869941711430e-19L);
2134#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2135 TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L);
2136 TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L);
2137 TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L);
2138 TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L);
2139 TEST_c_c (cacos, 0x1p-63L, 0x1.fp-16385L, 1.570796326794896619122901474391200998698L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION);
2140 TEST_c_c (cacos, -0x1p-63L, 0x1.fp-16385L, 1.570796326794896619339741908888301885499L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION);
2141 TEST_c_c (cacos, 0x1p-63L, -0x1.fp-16385L, 1.570796326794896619122901474391200998698L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION);
2142 TEST_c_c (cacos, -0x1p-63L, -0x1.fp-16385L, 1.570796326794896619339741908888301885499L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION);
2143#endif
2144 TEST_c_c (cacos, 0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L);
2145 TEST_c_c (cacos, 0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L);
2146 TEST_c_c (cacos, -0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L);
2147 TEST_c_c (cacos, -0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L);
2148 TEST_c_c (cacos, 0x1p-63L, 0.0L, 1.570796326794896619122901474391200998698L, -0.0L);
2149 TEST_c_c (cacos, -0x1p-63L, 0.0L, 1.570796326794896619339741908888301885499L, -0.0L);
2150 TEST_c_c (cacos, 0x1p-63L, -0.0L, 1.570796326794896619122901474391200998698L, 0.0L);
2151 TEST_c_c (cacos, -0x1p-63L, -0.0L, 1.570796326794896619339741908888301885499L, 0.0L);
2152#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2153 TEST_c_c (cacos, 0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
2154 TEST_c_c (cacos, 0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
2155 TEST_c_c (cacos, -0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
2156 TEST_c_c (cacos, -0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
2157#endif
2158#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2159 TEST_c_c (cacos, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, -8.813735870195430252326093249797835932642e-1L);
2160 TEST_c_c (cacos, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, 8.813735870195430252326093249797835932642e-1L);
2161 TEST_c_c (cacos, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, -8.813735870195430252326093249797835932642e-1L);
2162 TEST_c_c (cacos, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, 8.813735870195430252326093249797835932642e-1L);
2163 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.997188458999618357060632049675702684031e-16L, -1.234330349600789959989661887846005659983e-16L);
2164 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 3.141592653589793038743797483317667178134L, -1.234330349600789959989661887846005659983e-16L);
2165 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.997188458999618357060632049675702684031e-16L, 1.234330349600789959989661887846005659983e-16L);
2166 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 3.141592653589793038743797483317667178134L, 1.234330349600789959989661887846005659983e-16L);
2167 TEST_c_c (cacos, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L);
2168 TEST_c_c (cacos, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L);
2169 TEST_c_c (cacos, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L);
2170 TEST_c_c (cacos, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L);
2171 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2172 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.141592653589793081453397514901996944859L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2173 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2174 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.141592653589793081453397514901996944859L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2175 TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L);
2176 TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L);
2177 TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L);
2178 TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L);
2179 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570092458683775059393382371963565104164e-16L, -0.0L);
2180 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 3.141592653589793081453397514901996944859L, -0.0L);
2181 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570092458683775059393382371963565104164e-16L, 0.0L);
2182 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 3.141592653589793081453397514901996944859L, 0.0L);
2183#endif
2184 TEST_c_c (cacos, 0x1p-105L, 0.5L, 1.570796326794896619231321691639729392766L, -4.812118250596034474977589134243684231352e-1L);
2185 TEST_c_c (cacos, 0x1p-105L, -0.5L, 1.570796326794896619231321691639729392766L, 4.812118250596034474977589134243684231352e-1L);
2186 TEST_c_c (cacos, -0x1p-105L, 0.5L, 1.570796326794896619231321691639773491431L, -4.812118250596034474977589134243684231352e-1L);
2187 TEST_c_c (cacos, -0x1p-105L, -0.5L, 1.570796326794896619231321691639773491431L, 4.812118250596034474977589134243684231352e-1L);
2188 TEST_c_c (cacos, 0.5L, 0x1p-105L, 1.047197551196597746154214461093167628066L, -2.846556599890768890940941645338546615370e-32L);
2189 TEST_c_c (cacos, -0.5L, 0x1p-105L, 2.094395102393195492308428922186335256131L, -2.846556599890768890940941645338546615370e-32L);
2190 TEST_c_c (cacos, 0.5L, -0x1p-105L, 1.047197551196597746154214461093167628066L, 2.846556599890768890940941645338546615370e-32L);
2191 TEST_c_c (cacos, -0.5L, -0x1p-105L, 2.094395102393195492308428922186335256131L, 2.846556599890768890940941645338546615370e-32L);
2192 TEST_c_c (cacos, 0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639726790195L, -2.465190328815661891911651766508706967729e-32L);
2193 TEST_c_c (cacos, 0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639726790195L, 2.465190328815661891911651766508706967729e-32L);
2194 TEST_c_c (cacos, -0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639776094002L, -2.465190328815661891911651766508706967729e-32L);
2195 TEST_c_c (cacos, -0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639776094002L, 2.465190328815661891911651766508706967729e-32L);
2196#ifndef TEST_FLOAT
2197 TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L);
2198 TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L);
2199 TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L);
2200 TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L);
2201 TEST_c_c (cacos, 0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639726790195L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2202 TEST_c_c (cacos, -0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639776094002L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2203 TEST_c_c (cacos, 0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639726790195L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2204 TEST_c_c (cacos, -0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639776094002L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2205#endif
2206 TEST_c_c (cacos, 0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L);
2207 TEST_c_c (cacos, 0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L);
2208 TEST_c_c (cacos, -0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L);
2209 TEST_c_c (cacos, -0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L);
2210 TEST_c_c (cacos, 0x1p-105L, 0.0L, 1.570796326794896619231321691639726790195L, -0.0L);
2211 TEST_c_c (cacos, -0x1p-105L, 0.0L, 1.570796326794896619231321691639776094002L, -0.0L);
2212 TEST_c_c (cacos, 0x1p-105L, -0.0L, 1.570796326794896619231321691639726790195L, 0.0L);
2213 TEST_c_c (cacos, -0x1p-105L, -0.0L, 1.570796326794896619231321691639776094002L, 0.0L);
2214#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2215 TEST_c_c (cacos, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, -8.813735870195430252326093249797922409363e-1L);
2216 TEST_c_c (cacos, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, 8.813735870195430252326093249797922409363e-1L);
2217 TEST_c_c (cacos, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, -8.813735870195430252326093249797922409363e-1L);
2218 TEST_c_c (cacos, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, 8.813735870195430252326093249797922409363e-1L);
2219 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.765281878332676474347460257221369818872e-17L, -1.091004200533850618345330909857103457781e-17L);
2220 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 3.141592653589793220809824599952738140723L, -1.091004200533850618345330909857103457781e-17L);
2221 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.765281878332676474347460257221369818872e-17L, 1.091004200533850618345330909857103457781e-17L);
2222 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 3.141592653589793220809824599952738140723L, 1.091004200533850618345330909857103457781e-17L);
2223 TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L);
2224 TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L);
2225 TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L);
2226 TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L);
2227 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, -5.867357004219059108790368268900490184505e-4916L);
2228 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 3.141592653589793224584855575465046128902L, -5.867357004219059108790368268900490184505e-4916L);
2229 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, 5.867357004219059108790368268900490184505e-4916L);
2230 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 3.141592653589793224584855575465046128902L, 5.867357004219059108790368268900490184505e-4916L);
2231 TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L);
2232 TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L);
2233 TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L);
2234 TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L);
2235 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.387778780781445675529539585113525401762e-17L, -0.0L);
2236 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 3.141592653589793224584855575465046128902L, -0.0L);
2237 TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.387778780781445675529539585113525401762e-17L, 0.0L);
2238 TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 3.141592653589793224584855575465046128902L, 0.0L);
2239#endif
2240 TEST_c_c (cacos, 0x1p-112L, 0.5L, 1.570796326794896619231321691639751269838L, -4.812118250596034474977589134243684231352e-1L);
2241 TEST_c_c (cacos, 0x1p-112L, -0.5L, 1.570796326794896619231321691639751269838L, 4.812118250596034474977589134243684231352e-1L);
2242 TEST_c_c (cacos, -0x1p-112L, 0.5L, 1.570796326794896619231321691639751614359L, -4.812118250596034474977589134243684231352e-1L);
2243 TEST_c_c (cacos, -0x1p-112L, -0.5L, 1.570796326794896619231321691639751614359L, 4.812118250596034474977589134243684231352e-1L);
2244 TEST_c_c (cacos, 0.5L, 0x1p-112L, 1.047197551196597746154214461093167628066L, -2.223872343664663196047610660420739543258e-34L);
2245 TEST_c_c (cacos, -0.5L, 0x1p-112L, 2.094395102393195492308428922186335256131L, -2.223872343664663196047610660420739543258e-34L);
2246 TEST_c_c (cacos, 0.5L, -0x1p-112L, 1.047197551196597746154214461093167628066L, 2.223872343664663196047610660420739543258e-34L);
2247 TEST_c_c (cacos, -0.5L, -0x1p-112L, 2.094395102393195492308428922186335256131L, 2.223872343664663196047610660420739543258e-34L);
2248 TEST_c_c (cacos, 0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751249506L, -1.925929944387235853055977942584927318538e-34L);
2249 TEST_c_c (cacos, 0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751249506L, 1.925929944387235853055977942584927318538e-34L);
2250 TEST_c_c (cacos, -0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751634692L, -1.925929944387235853055977942584927318538e-34L);
2251 TEST_c_c (cacos, -0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751634692L, 1.925929944387235853055977942584927318538e-34L);
2252#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2253 TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L);
2254 TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L);
2255 TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L);
2256 TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L);
2257 TEST_c_c (cacos, 0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751249506L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
2258 TEST_c_c (cacos, -0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751634692L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
2259 TEST_c_c (cacos, 0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751249506L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
2260 TEST_c_c (cacos, -0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751634692L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
2261#endif
2262 TEST_c_c (cacos, 0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L);
2263 TEST_c_c (cacos, 0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L);
2264 TEST_c_c (cacos, -0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L);
2265 TEST_c_c (cacos, -0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L);
2266 TEST_c_c (cacos, 0x1p-112L, 0.0L, 1.570796326794896619231321691639751249506L, -0.0L);
2267 TEST_c_c (cacos, -0x1p-112L, 0.0L, 1.570796326794896619231321691639751634692L, -0.0L);
2268 TEST_c_c (cacos, 0x1p-112L, -0.0L, 1.570796326794896619231321691639751249506L, 0.0L);
2269 TEST_c_c (cacos, -0x1p-112L, -0.0L, 1.570796326794896619231321691639751634692L, 0.0L);
2270
2550dfe9 2271 TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L);
33e885db 2272 TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L);
8847214f 2273
6815fabc 2274 END (cacos, complex);
8847214f
UD
2275}
2276
8847214f
UD
2277static void
2278cacosh_test (void)
2279{
aaca11d8 2280 errno = 0;
3c6cad26 2281 FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
2282 if (errno == ENOSYS)
2283 /* Function not implemented. */
2284 return;
2285
8847214f
UD
2286 START (cacosh);
2287
2288
2289 TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l);
2290 TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l);
2291 TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l);
2292 TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l);
2293 TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l);
2294 TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l);
2295
2296 TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l);
2297 TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l);
2298
2299 TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l);
2300 TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l);
2301 TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l);
2302 TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l);
3c6cad26
UD
2303 TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l);
2304 TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l);
8847214f
UD
2305
2306 TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl);
2307 TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl);
2308 TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl);
2309 TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl);
2310
2311 TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0);
2312 TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero);
2313 TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0);
2314 TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero);
2315
67e971f1
TS
2316 TEST_c_c (cacosh, plus_infty, qnan_value, plus_infty, qnan_value);
2317 TEST_c_c (cacosh, minus_infty, qnan_value, plus_infty, qnan_value);
8847214f 2318
67e971f1
TS
2319 TEST_c_c (cacosh, 0, qnan_value, qnan_value, qnan_value);
2320 TEST_c_c (cacosh, minus_zero, qnan_value, qnan_value, qnan_value);
8847214f 2321
67e971f1
TS
2322 TEST_c_c (cacosh, qnan_value, plus_infty, plus_infty, qnan_value);
2323 TEST_c_c (cacosh, qnan_value, minus_infty, plus_infty, qnan_value);
8847214f 2324
67e971f1
TS
2325 TEST_c_c (cacosh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
2326 TEST_c_c (cacosh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 2327
67e971f1
TS
2328 TEST_c_c (cacosh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
2329 TEST_c_c (cacosh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 2330
67e971f1 2331 TEST_c_c (cacosh, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 2332
d1d3431a
JM
2333 TEST_c_c (cacosh, plus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l);
2334 TEST_c_c (cacosh, minus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l);
2335 TEST_c_c (cacosh, plus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l);
2336 TEST_c_c (cacosh, minus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l);
2337 TEST_c_c (cacosh, plus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l);
2338 TEST_c_c (cacosh, minus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l);
2339 TEST_c_c (cacosh, plus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l);
2340 TEST_c_c (cacosh, minus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l);
2341 TEST_c_c (cacosh, plus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l);
2342 TEST_c_c (cacosh, minus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l);
2343 TEST_c_c (cacosh, plus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l);
2344 TEST_c_c (cacosh, minus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l);
2345
2346 TEST_c_c (cacosh, -1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, M_PIl);
2347 TEST_c_c (cacosh, -1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, -M_PIl);
2348 TEST_c_c (cacosh, -1.0L, plus_zero, plus_zero, M_PIl);
2349 TEST_c_c (cacosh, -1.0L, minus_zero, plus_zero, -M_PIl);
2350 TEST_c_c (cacosh, -0.5L, plus_zero, plus_zero, 2.094395102393195492308428922186335256131L);
2351 TEST_c_c (cacosh, -0.5L, minus_zero, plus_zero, -2.094395102393195492308428922186335256131L);
2352 TEST_c_c (cacosh, 0.5L, plus_zero, plus_zero, 1.047197551196597746154214461093167628066L);
2353 TEST_c_c (cacosh, 0.5L, minus_zero, plus_zero, -1.047197551196597746154214461093167628066L);
2354 TEST_c_c (cacosh, 1.0L, plus_zero, plus_zero, plus_zero);
2355 TEST_c_c (cacosh, 1.0L, minus_zero, plus_zero, minus_zero);
2356 TEST_c_c (cacosh, 1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, plus_zero);
2357 TEST_c_c (cacosh, 1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, minus_zero);
2358
52ce4860
JM
2359 TEST_c_c (cacosh, 0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 8.881784197001252323389053344727730248720e-16L);
2360 TEST_c_c (cacosh, 0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -8.881784197001252323389053344727730248720e-16L);
2361 TEST_c_c (cacosh, -0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 3.141592653589792350284223683154270545292L);
2362 TEST_c_c (cacosh, -0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -3.141592653589792350284223683154270545292L);
2363 TEST_c_c (cacosh, 1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794895731052901991514519103193L);
2364 TEST_c_c (cacosh, -1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794897507409741391764983781004L);
2365 TEST_c_c (cacosh, 1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794895731052901991514519103193L);
2366 TEST_c_c (cacosh, -1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794897507409741391764983781004L);
2367#ifndef TEST_FLOAT
2368 TEST_c_c (cacosh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L);
2369 TEST_c_c (cacosh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L);
2370 TEST_c_c (cacosh, -0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.141592653589793238462643383279502884197L);
2371 TEST_c_c (cacosh, -0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.141592653589793238462643383279502884197L);
2372 TEST_c_c (cacosh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L);
2373 TEST_c_c (cacosh, -1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L);
2374 TEST_c_c (cacosh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L);
2375 TEST_c_c (cacosh, -1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L);
2376#endif
2377#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2378 TEST_c_c (cacosh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L);
2379 TEST_c_c (cacosh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L);
2380 TEST_c_c (cacosh, -0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 3.141592653589793238462643383279502884197L);
2381 TEST_c_c (cacosh, -0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -3.141592653589793238462643383279502884197L);
2382 TEST_c_c (cacosh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L);
2383 TEST_c_c (cacosh, -1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L);
2384 TEST_c_c (cacosh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L);
2385 TEST_c_c (cacosh, -1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L);
2386#endif
2387 TEST_c_c (cacosh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L);
2388#ifndef TEST_FLOAT
2389 TEST_c_c (cacosh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L);
2390#endif
2391#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2392 TEST_c_c (cacosh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L);
2393#endif
2394 TEST_c_c (cacosh, 0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442097L);
2395 TEST_c_c (cacosh, 0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442097L);
2396 TEST_c_c (cacosh, -0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442100L);
2397 TEST_c_c (cacosh, -0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442100L);
2398 TEST_c_c (cacosh, 1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT);
2399 TEST_c_c (cacosh, -1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884195L);
2400 TEST_c_c (cacosh, 1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT);
2401 TEST_c_c (cacosh, -1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884195L);
2402#ifndef TEST_FLOAT
2403 TEST_c_c (cacosh, 0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L);
2404 TEST_c_c (cacosh, 0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L);
2405 TEST_c_c (cacosh, -0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L);
2406 TEST_c_c (cacosh, -0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L);
2407 TEST_c_c (cacosh, 1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2408 TEST_c_c (cacosh, -1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L);
2409 TEST_c_c (cacosh, 1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
2410 TEST_c_c (cacosh, -1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L);
2411#endif
2412#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2413 TEST_c_c (cacosh, 0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L);
2414 TEST_c_c (cacosh, 0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L);
2415 TEST_c_c (cacosh, -0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L);
2416 TEST_c_c (cacosh, -0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L);
2417 TEST_c_c (cacosh, 1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION);
2418 TEST_c_c (cacosh, -1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L);
2419 TEST_c_c (cacosh, 1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION);
2420 TEST_c_c (cacosh, -1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L);
2421#endif
2422 TEST_c_c (cacosh, 0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.221357263937683325603909865564381489366L);
2423 TEST_c_c (cacosh, 0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.221357263937683325603909865564381489366L);
2424 TEST_c_c (cacosh, -0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.920235389652109912858733517715121394831L);
2425 TEST_c_c (cacosh, -0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.920235389652109912858733517715121394831L);
2426 TEST_c_c (cacosh, 1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 6.748888455860063801646649673121744318756e-1L);
2427 TEST_c_c (cacosh, -1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 2.466703808003786858297978415967328452322L);
2428 TEST_c_c (cacosh, 1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -6.748888455860063801646649673121744318756e-1L);
2429 TEST_c_c (cacosh, -1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -2.466703808003786858297978415967328452322L);
2430 TEST_c_c (cacosh, 0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.394493894017929688812643125003661339452L);
2431 TEST_c_c (cacosh, 0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.394493894017929688812643125003661339452L);
2432 TEST_c_c (cacosh, -0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.747098759571863549650000258275841544745L);
2433 TEST_c_c (cacosh, -0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.747098759571863549650000258275841544745L);
2434 TEST_c_c (cacosh, 1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 4.890443302710802929202843732146540079124e-1L);
2435 TEST_c_c (cacosh, -1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 2.652548323318712945542359010064848876285L);
2436 TEST_c_c (cacosh, 1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -4.890443302710802929202843732146540079124e-1L);
2437 TEST_c_c (cacosh, -1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -2.652548323318712945542359010064848876285L);
2438 TEST_c_c (cacosh, 0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.569458417435338878318763342108699202986L);
2439 TEST_c_c (cacosh, 0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.569458417435338878318763342108699202986L);
2440 TEST_c_c (cacosh, -0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.572134236154454360143880041170803681211L);
2441 TEST_c_c (cacosh, -0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.572134236154454360143880041170803681211L);
2442 TEST_c_c (cacosh, 1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 4.349129763101882771258049954181971959031e-2L);
2443 TEST_c_c (cacosh, -1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 3.098101355958774410750062883737683164607L);
2444 TEST_c_c (cacosh, 1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -4.349129763101882771258049954181971959031e-2L);
2445 TEST_c_c (cacosh, -1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -3.098101355958774410750062883737683164607L);
2446 TEST_c_c (cacosh, 0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796325518966635014803151387033957091L);
2447 TEST_c_c (cacosh, 0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796325518966635014803151387033957091L);
2448 TEST_c_c (cacosh, -0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796328070826603447840231892468927106L);
2449 TEST_c_c (cacosh, -0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796328070826603447840231892468927106L);
2450 TEST_c_c (cacosh, 1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 4.247867097467650115899790787875186617316e-5L);
2451 TEST_c_c (cacosh, -1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 3.141550174918818561961484385371624132331L);
2452 TEST_c_c (cacosh, 1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -4.247867097467650115899790787875186617316e-5L);
2453 TEST_c_c (cacosh, -1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -3.141550174918818561961484385371624132331L);
2454 TEST_c_c (cacosh, 0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691638670687364L);
2455 TEST_c_c (cacosh, 0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691638670687364L);
2456 TEST_c_c (cacosh, -0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691640832196834L);
2457 TEST_c_c (cacosh, -0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691640832196834L);
2458 TEST_c_c (cacosh, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 1.236292038260260888664514866456887257525e-15L);
2459 TEST_c_c (cacosh, -1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 3.141592653589792002170605123018614219682L);
2460 TEST_c_c (cacosh, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -1.236292038260260888664514866456887257525e-15L);
2461 TEST_c_c (cacosh, -1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -3.141592653589792002170605123018614219682L);
2462 TEST_c_c (cacosh, 0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442097L);
2463 TEST_c_c (cacosh, 0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442097L);
2464 TEST_c_c (cacosh, -0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442101L);
2465 TEST_c_c (cacosh, -0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442101L);
2466 TEST_c_c (cacosh, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 5.335635276982233498398987585285818977930e-20L);
2467 TEST_c_c (cacosh, -1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 3.141592653589793238409287030509680549213L);
2468 TEST_c_c (cacosh, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -5.335635276982233498398987585285818977930e-20L);
2469 TEST_c_c (cacosh, -1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -3.141592653589793238409287030509680549213L);
2470#ifndef TEST_FLOAT
2471 TEST_c_c (cacosh, 0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L);
2472 TEST_c_c (cacosh, 0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L);
2473 TEST_c_c (cacosh, -0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L);
2474 TEST_c_c (cacosh, -0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L);
2475 TEST_c_c (cacosh, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L);
2476 TEST_c_c (cacosh, -1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 3.141592653589793238462643383279502884197L);
2477 TEST_c_c (cacosh, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L);
2478 TEST_c_c (cacosh, -1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -3.141592653589793238462643383279502884197L);
2479 TEST_c_c (cacosh, 0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L);
2480 TEST_c_c (cacosh, 0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L);
2481 TEST_c_c (cacosh, -0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L);
2482 TEST_c_c (cacosh, -0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L);
2483 TEST_c_c (cacosh, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L);
2484 TEST_c_c (cacosh, -1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 3.141592653589793238462643383279502884197L);
2485 TEST_c_c (cacosh, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L);
2486 TEST_c_c (cacosh, -1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -3.141592653589793238462643383279502884197L);
2487#endif
2488#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2489 TEST_c_c (cacosh, 0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L);
2490 TEST_c_c (cacosh, 0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L);
2491 TEST_c_c (cacosh, -0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L);
2492 TEST_c_c (cacosh, -0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L);
2493 TEST_c_c (cacosh, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L);
2494 TEST_c_c (cacosh, -1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 3.141592653589793238462643383279502884197L);
2495 TEST_c_c (cacosh, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L);
2496 TEST_c_c (cacosh, -1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -3.141592653589793238462643383279502884197L);
2497 TEST_c_c (cacosh, 0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L);
2498 TEST_c_c (cacosh, 0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L);
2499 TEST_c_c (cacosh, -0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L);
2500 TEST_c_c (cacosh, -0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L);
2501 TEST_c_c (cacosh, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L);
2502 TEST_c_c (cacosh, -1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 3.141592653589793238462643383279502884197L);
2503 TEST_c_c (cacosh, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L);
2504 TEST_c_c (cacosh, -1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -3.141592653589793238462643383279502884197L);
2505#endif
2506 TEST_c_c (cacosh, 0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796242501204621739026081991856762292L);
2507 TEST_c_c (cacosh, 0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796242501204621739026081991856762292L);
2508 TEST_c_c (cacosh, -0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796411088588616723617301287646121905L);
2509 TEST_c_c (cacosh, -0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796411088588616723617301287646121905L);
2510 TEST_c_c (cacosh, 0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 2.222118384408546368406374049167636760903e-4L);
2511 TEST_c_c (cacosh, -0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 3.141370441751352383825802745874586120521L);
2512 TEST_c_c (cacosh, 0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -2.222118384408546368406374049167636760903e-4L);
2513 TEST_c_c (cacosh, -0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -3.141370441751352383825802745874586120521L);
2514 TEST_c_c (cacosh, 0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442097L);
2515 TEST_c_c (cacosh, 0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442097L);
2516 TEST_c_c (cacosh, -0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442101L);
2517 TEST_c_c (cacosh, -0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442101L);
2518 TEST_c_c (cacosh, 0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 5.830451806317544230969669308596361881467e-36L);
2519 TEST_c_c (cacosh, -0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502878367L);
2520 TEST_c_c (cacosh, 0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -5.830451806317544230969669308596361881467e-36L);
2521 TEST_c_c (cacosh, -0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502878367L);
2522 TEST_c_c (cacosh, 0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L);
2523 TEST_c_c (cacosh, 0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L);
2524 TEST_c_c (cacosh, -0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L);
2525 TEST_c_c (cacosh, -0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L);
2526 TEST_c_c (cacosh, 0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 0.0L);
2527 TEST_c_c (cacosh, -0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502884197L);
2528 TEST_c_c (cacosh, 0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -0.0L);
2529 TEST_c_c (cacosh, -0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502884197L);
2530#ifndef TEST_FLOAT
2531 TEST_c_c (cacosh, 0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896462222075823262262934288L);
2532 TEST_c_c (cacosh, 0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896462222075823262262934288L);
2533 TEST_c_c (cacosh, -0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896776240567560017239949909L);
2534 TEST_c_c (cacosh, -0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896776240567560017239949909L);
2535 TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 9.590301705980041385828904092662391018164e-9L);
2536 TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 3.141592643999491532482601997450598791535L);
2537 TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -9.590301705980041385828904092662391018164e-9L);
2538 TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -3.141592643999491532482601997450598791535L);
2539 TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L);
2540 TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L);
2541 TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L);
2542 TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L);
2543 TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2544 TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L);
2545 TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2546 TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L);
2547 TEST_c_c (cacosh, 0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L);
2548 TEST_c_c (cacosh, 0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L);
2549 TEST_c_c (cacosh, -0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L);
2550 TEST_c_c (cacosh, -0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L);
2551 TEST_c_c (cacosh, 0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 0.0L);
2552 TEST_c_c (cacosh, -0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L);
2553 TEST_c_c (cacosh, 0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -0.0L);
2554 TEST_c_c (cacosh, -0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L);
2555#endif
2556#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2557 TEST_c_c (cacosh, 0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619154657020805582738031L);
2558 TEST_c_c (cacosh, 0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619154657020805582738031L);
2559 TEST_c_c (cacosh, -0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619307986362473920146166L);
2560 TEST_c_c (cacosh, -0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619307986362473920146166L);
2561 TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 2.119177303101063432592523199680782317447e-10L);
2562 TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 3.141592653377875508152537040020250564229L);
2563 TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -2.119177303101063432592523199680782317447e-10L);
2564 TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -3.141592653377875508152537040020250564229L);
2565# if LDBL_MIN_EXP <= -16381
2566 TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L);
2567 TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L);
2568 TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L);
2569 TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L);
2570 TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 1.748608650034385653922359120438227480943e-4923L);
2571 TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L);
2572 TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -1.748608650034385653922359120438227480943e-4923L);
2573 TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L);
2574# endif
2575 TEST_c_c (cacosh, 0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L);
2576 TEST_c_c (cacosh, 0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L);
2577 TEST_c_c (cacosh, -0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L);
2578 TEST_c_c (cacosh, -0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L);
2579 TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 0.0L);
2580 TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L);
2581 TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -0.0L);
2582 TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L);
2583#endif
2584#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2585 TEST_c_c (cacosh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639742726335L);
2586 TEST_c_c (cacosh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639742726335L);
2587 TEST_c_c (cacosh, -0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639760157863L);
2588 TEST_c_c (cacosh, -0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639760157863L);
2589 TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 5.394221422390606848017034778914096659726e-17L);
2590 TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 3.141592653589793184520429159373434404027L);
2591 TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -5.394221422390606848017034778914096659726e-17L);
2592 TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -3.141592653589793184520429159373434404027L);
2593 TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L);
2594 TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L);
2595 TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L);
2596 TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L);
2597 TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2598 TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L);
2599 TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2600 TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L);
2601 TEST_c_c (cacosh, 0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L);
2602 TEST_c_c (cacosh, 0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L);
2603 TEST_c_c (cacosh, -0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L);
2604 TEST_c_c (cacosh, -0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L);
2605 TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 0.0L);
2606 TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L);
2607 TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -0.0L);
2608 TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L);
2609#endif
2610#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2611 TEST_c_c (cacosh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751374007L);
2612 TEST_c_c (cacosh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751374007L);
2613 TEST_c_c (cacosh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751510190L);
2614 TEST_c_c (cacosh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751510190L);
2615 TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 4.767863183742677481693563511435642755521e-18L);
2616 TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 3.141592653589793233694780199536825402504L);
2617 TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -4.767863183742677481693563511435642755521e-18L);
2618 TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -3.141592653589793233694780199536825402504L);
2619 TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L);
2620 TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L);
2621 TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L);
2622 TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L);
2623 TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 4.148847925325683229178506116378864361396e-4916L);
2624 TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L);
2625 TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -4.148847925325683229178506116378864361396e-4916L);
2626 TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L);
2627 TEST_c_c (cacosh, 0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L);
2628 TEST_c_c (cacosh, 0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L);
2629 TEST_c_c (cacosh, -0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L);
2630 TEST_c_c (cacosh, -0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L);
2631 TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 0.0L);
2632 TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L);
2633 TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -0.0L);
2634 TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L);
2635#endif
2636 TEST_c_c (cacosh, 0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796242501197085295336701632142060969L);
2637 TEST_c_c (cacosh, 0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796242501197085295336701632142060969L);
2638 TEST_c_c (cacosh, -0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796411088596153167306681647360823228L);
2639 TEST_c_c (cacosh, -0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796411088596153167306681647360823228L);
2640 TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 4.391863861910487109445187743978204002614e-4L);
2641 TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 3.141153467203602189751698864505105063797L);
2642 TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -4.391863861910487109445187743978204002614e-4L);
2643 TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -3.141153467203602189751698864505105063797L);
2644 TEST_c_c (cacosh, 0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442097L);
2645 TEST_c_c (cacosh, 0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442097L);
2646 TEST_c_c (cacosh, -0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442101L);
2647 TEST_c_c (cacosh, -0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442101L);
2648 TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.452669847162035876032494826387364972849e-4L);
2649 TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.141247386605077034875040133796864147700L);
2650 TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.452669847162035876032494826387364972849e-4L);
2651 TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.141247386605077034875040133796864147700L);
2652 TEST_c_c (cacosh, 0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L);
2653 TEST_c_c (cacosh, 0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L);
2654 TEST_c_c (cacosh, -0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L);
2655 TEST_c_c (cacosh, -0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L);
2656 TEST_c_c (cacosh, 0x0.ffffffp0L, 0.0L, 0.0L, 3.452669847162035876032494826387364972849e-4L);
2657 TEST_c_c (cacosh, -0x0.ffffffp0L, 0.0L, 0.0L, 3.141247386605077034875040133796864147700L);
2658 TEST_c_c (cacosh, 0x0.ffffffp0L, -0.0L, 0.0L, -3.452669847162035876032494826387364972849e-4L);
2659 TEST_c_c (cacosh, -0x0.ffffffp0L, -0.0L, 0.0L, -3.141247386605077034875040133796864147700L);
2660 TEST_c_c (cacosh, 0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796220170866625230343643673321150378L);
2661 TEST_c_c (cacosh, 0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796220170866625230343643673321150378L);
2662 TEST_c_c (cacosh, -0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796433418926613232299739606181733819L);
2663 TEST_c_c (cacosh, -0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796433418926613232299739606181733819L);
2664 TEST_c_c (cacosh, 0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 1.047197551196603215914744618665204532273L);
2665 TEST_c_c (cacosh, -0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 2.094395102393190022547898764614298351924L);
2666 TEST_c_c (cacosh, 0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -1.047197551196603215914744618665204532273L);
2667 TEST_c_c (cacosh, -0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -2.094395102393190022547898764614298351924L);
2668 TEST_c_c (cacosh, 0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442096L);
2669 TEST_c_c (cacosh, 0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442096L);
2670 TEST_c_c (cacosh, -0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442101L);
2671 TEST_c_c (cacosh, -0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442101L);
2672 TEST_c_c (cacosh, 0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT);
2673 TEST_c_c (cacosh, -0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT);
2674 TEST_c_c (cacosh, 0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT);
2675 TEST_c_c (cacosh, -0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT);
2676 TEST_c_c (cacosh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796207585607068450636380271254316214L);
2677 TEST_c_c (cacosh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796207585607068450636380271254316214L);
2678 TEST_c_c (cacosh, -0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796446004186170012007003008248567984L);
2679 TEST_c_c (cacosh, -0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796446004186170012007003008248567984L);
2680 TEST_c_c (cacosh, 0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442096L);
2681 TEST_c_c (cacosh, 0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442096L);
2682 TEST_c_c (cacosh, -0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442101L);
2683 TEST_c_c (cacosh, -0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442101L);
2684 TEST_c_c (cacosh, 0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT);
2685 TEST_c_c (cacosh, -0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT);
2686 TEST_c_c (cacosh, 0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT);
2687 TEST_c_c (cacosh, -0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT);
2688 TEST_c_c (cacosh, 0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L);
2689 TEST_c_c (cacosh, 0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L);
2690 TEST_c_c (cacosh, -0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L);
2691 TEST_c_c (cacosh, -0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L);
2692 TEST_c_c (cacosh, 0x1p-23L, 0.0L, 0.0L, 1.570796207585607068449789347324000006847L);
2693 TEST_c_c (cacosh, -0x1p-23L, 0.0L, 0.0L, 1.570796446004186170012854035955502877351L);
2694 TEST_c_c (cacosh, 0x1p-23L, -0.0L, 0.0L, -1.570796207585607068449789347324000006847L);
2695 TEST_c_c (cacosh, -0x1p-23L, -0.0L, 0.0L, -1.570796446004186170012854035955502877351L);
2696 TEST_c_c (cacosh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT);
2697 TEST_c_c (cacosh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT);
2698 TEST_c_c (cacosh, -0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT);
2699 TEST_c_c (cacosh, -0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT);
2700#ifndef TEST_FLOAT
2701 TEST_c_c (cacosh, 0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896462222075823262236786996L);
2702 TEST_c_c (cacosh, 0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896462222075823262236786996L);
2703 TEST_c_c (cacosh, -0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896776240567560017266097201L);
2704 TEST_c_c (cacosh, -0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896776240567560017266097201L);
2705 TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 1.895456983915074112227925127005564372844e-8L);
2706 TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 3.141592634635223399311902261000251614142L);
2707 TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -1.895456983915074112227925127005564372844e-8L);
2708 TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -3.141592634635223399311902261000251614142L);
2709 TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L);
2710 TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L);
2711 TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L);
2712 TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L);
2713 TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2714 TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2715 TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2716 TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2717 TEST_c_c (cacosh, 0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L);
2718 TEST_c_c (cacosh, 0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L);
2719 TEST_c_c (cacosh, -0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L);
2720 TEST_c_c (cacosh, -0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L);
2721 TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0.0L, 0.0L, 1.490116119384765638786343542550461592240e-8L);
2722 TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0.0L, 0.0L, 3.141592638688632044614986995416067458693L);
2723 TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0.0L, 0.0L, -1.490116119384765638786343542550461592240e-8L);
2724 TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0.0L, 0.0L, -3.141592638688632044614986995416067458693L);
2725#endif
2726 TEST_c_c (cacosh, 0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896420628589431857911675917L);
2727 TEST_c_c (cacosh, 0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896420628589431857911675917L);
2728 TEST_c_c (cacosh, -0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896817834053951421591208280L);
2729 TEST_c_c (cacosh, -0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896817834053951421591208280L);
2730 TEST_c_c (cacosh, 0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 1.047197551196597746154214461093186605110L);
2731 TEST_c_c (cacosh, -0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 2.094395102393195492308428922186316279087L);
2732 TEST_c_c (cacosh, 0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -1.047197551196597746154214461093186605110L);
2733 TEST_c_c (cacosh, -0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -2.094395102393195492308428922186316279087L);
2734#ifndef TEST_FLOAT
2735 TEST_c_c (cacosh, 0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L);
2736 TEST_c_c (cacosh, 0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L);
2737 TEST_c_c (cacosh, -0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L);
2738 TEST_c_c (cacosh, -0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L);
2739 TEST_c_c (cacosh, 0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE);
2740 TEST_c_c (cacosh, -0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE);
2741 TEST_c_c (cacosh, 0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE);
2742 TEST_c_c (cacosh, -0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE);
2743#endif
2744 TEST_c_c (cacosh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896397186716766608443357372L);
2745 TEST_c_c (cacosh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896397186716766608443357372L);
2746 TEST_c_c (cacosh, -0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896841275926616671059526825L);
2747 TEST_c_c (cacosh, -0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896841275926616671059526825L);
2748#ifndef TEST_FLOAT
2749 TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L);
2750 TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L);
2751 TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L);
2752 TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L);
2753 TEST_c_c (cacosh, 0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE);
2754 TEST_c_c (cacosh, -0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE);
2755 TEST_c_c (cacosh, 0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE);
2756 TEST_c_c (cacosh, -0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE);
2757#endif
2758 TEST_c_c (cacosh, 0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L);
2759 TEST_c_c (cacosh, 0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L);
2760 TEST_c_c (cacosh, -0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L);
2761 TEST_c_c (cacosh, -0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L);
2762 TEST_c_c (cacosh, 0x1p-52L, 0.0L, 0.0L, 1.570796326794896397186716766608443357372L);
2763 TEST_c_c (cacosh, -0x1p-52L, 0.0L, 0.0L, 1.570796326794896841275926616671059526825L);
2764 TEST_c_c (cacosh, 0x1p-52L, -0.0L, 0.0L, -1.570796326794896397186716766608443357372L);
2765 TEST_c_c (cacosh, -0x1p-52L, -0.0L, 0.0L, -1.570796326794896841275926616671059526825L);
2766#ifndef TEST_FLOAT
2767 TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
2768 TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
2769 TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
2770 TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
2771#endif
2772#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2773 TEST_c_c (cacosh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619154657020805582738025L);
2774 TEST_c_c (cacosh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619154657020805582738025L);
2775 TEST_c_c (cacosh, -0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619307986362473920146173L);
2776 TEST_c_c (cacosh, -0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619307986362473920146173L);
2777 TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 4.188407771167967636741951941902992986043e-10L);
2778 TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 3.141592653170952461345846619605307690007L);
2779 TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -4.188407771167967636741951941902992986043e-10L);
2780 TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -3.141592653170952461345846619605307690007L);
2781# if LDBL_MIN_EXP <= -16381
2782 TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L);
2783 TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L);
2784 TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L);
2785 TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L);
2786 TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.292722539913596233371825532007990724506e-10L);
2787 TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.141592653260520984471283759942320330996L);
2788 TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.292722539913596233371825532007990724506e-10L);
2789 TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.141592653260520984471283759942320330996L);
2790# endif
2791 TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L);
2792 TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L);
2793 TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L);
2794 TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L);
2795 TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.292722539913596233371825532007990724506e-10L);
2796 TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.141592653260520984471283759942320330996L);
2797 TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.292722539913596233371825532007990724506e-10L);
2798 TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.141592653260520984471283759942320330996L);
2799#endif
2800 TEST_c_c (cacosh, 0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619134347701278529840650L);
2801 TEST_c_c (cacosh, 0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619134347701278529840650L);
2802 TEST_c_c (cacosh, -0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619328295682000973043547L);
2803 TEST_c_c (cacosh, -0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619328295682000973043547L);
2804 TEST_c_c (cacosh, 0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 1.047197551196597746154214461093167628070L);
2805 TEST_c_c (cacosh, -0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 2.094395102393195492308428922186335256127L);
2806 TEST_c_c (cacosh, 0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -1.047197551196597746154214461093167628070L);
2807 TEST_c_c (cacosh, -0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -2.094395102393195492308428922186335256127L);
2808#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2809 TEST_c_c (cacosh, 0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L);
2810 TEST_c_c (cacosh, 0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L);
2811 TEST_c_c (cacosh, -0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L);
2812 TEST_c_c (cacosh, -0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L);
2813 TEST_c_c (cacosh, 0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION);
2814 TEST_c_c (cacosh, -0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION);
2815 TEST_c_c (cacosh, 0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION);
2816 TEST_c_c (cacosh, -0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION);
2817#endif
2818 TEST_c_c (cacosh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619122901474391200998698L);
2819 TEST_c_c (cacosh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619122901474391200998698L);
2820 TEST_c_c (cacosh, -0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619339741908888301885499L);
2821 TEST_c_c (cacosh, -0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619339741908888301885499L);
2822#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2823 TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L);
2824 TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L);
2825 TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L);
2826 TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L);
2827 TEST_c_c (cacosh, 0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION);
2828 TEST_c_c (cacosh, -0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION);
2829 TEST_c_c (cacosh, 0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION);
2830 TEST_c_c (cacosh, -0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION);
2831#endif
2832 TEST_c_c (cacosh, 0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L);
2833 TEST_c_c (cacosh, 0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L);
2834 TEST_c_c (cacosh, -0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L);
2835 TEST_c_c (cacosh, -0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L);
2836 TEST_c_c (cacosh, 0x1p-63L, 0.0L, 0.0L, 1.570796326794896619122901474391200998698L);
2837 TEST_c_c (cacosh, -0x1p-63L, 0.0L, 0.0L, 1.570796326794896619339741908888301885499L);
2838 TEST_c_c (cacosh, 0x1p-63L, -0.0L, 0.0L, -1.570796326794896619122901474391200998698L);
2839 TEST_c_c (cacosh, -0x1p-63L, -0.0L, 0.0L, -1.570796326794896619339741908888301885499L);
2840#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2841 TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
2842 TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
2843 TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
2844 TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
2845#endif
2846#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2847 TEST_c_c (cacosh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639734010571L);
2848 TEST_c_c (cacosh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639734010571L);
2849 TEST_c_c (cacosh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639768873627L);
2850 TEST_c_c (cacosh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639768873627L);
2851 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 1.997188458999618357060632049675702684031e-16L);
2852 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 3.141592653589793038743797483317667178134L);
2853 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -1.997188458999618357060632049675702684031e-16L);
2854 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -3.141592653589793038743797483317667178134L);
2855 TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L);
2856 TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L);
2857 TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L);
2858 TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L);
2859 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2860 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2861 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2862 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
2863 TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L);
2864 TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L);
2865 TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L);
2866 TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L);
2867 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 1.570092458683775059393382371963565104164e-16L);
2868 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 3.141592653589793081453397514901996944859L);
2869 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -1.570092458683775059393382371963565104164e-16L);
2870 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -3.141592653589793081453397514901996944859L);
2871#endif
2872 TEST_c_c (cacosh, 0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639729392766L);
2873 TEST_c_c (cacosh, 0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639729392766L);
2874 TEST_c_c (cacosh, -0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639773491431L);
2875 TEST_c_c (cacosh, -0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639773491431L);
2876 TEST_c_c (cacosh, 0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 1.047197551196597746154214461093167628066L);
2877 TEST_c_c (cacosh, -0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 2.094395102393195492308428922186335256131L);
2878 TEST_c_c (cacosh, 0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -1.047197551196597746154214461093167628066L);
2879 TEST_c_c (cacosh, -0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -2.094395102393195492308428922186335256131L);
2880 TEST_c_c (cacosh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639726790195L);
2881 TEST_c_c (cacosh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639726790195L);
2882 TEST_c_c (cacosh, -0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639776094002L);
2883 TEST_c_c (cacosh, -0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639776094002L);
2884#ifndef TEST_FLOAT
2885 TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L);
2886 TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L);
2887 TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L);
2888 TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L);
2889 TEST_c_c (cacosh, 0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE);
2890 TEST_c_c (cacosh, -0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE);
2891 TEST_c_c (cacosh, 0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE);
2892 TEST_c_c (cacosh, -0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE);
2893#endif
2894 TEST_c_c (cacosh, 0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L);
2895 TEST_c_c (cacosh, 0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L);
2896 TEST_c_c (cacosh, -0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L);
2897 TEST_c_c (cacosh, -0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L);
2898 TEST_c_c (cacosh, 0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639726790195L);
2899 TEST_c_c (cacosh, -0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639776094002L);
2900 TEST_c_c (cacosh, 0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639726790195L);
2901 TEST_c_c (cacosh, -0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639776094002L);
2902#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2903 TEST_c_c (cacosh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751305915L);
2904 TEST_c_c (cacosh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751305915L);
2905 TEST_c_c (cacosh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751578282L);
2906 TEST_c_c (cacosh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751578282L);
2907 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 1.765281878332676474347460257221369818872e-17L);
2908 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 3.141592653589793220809824599952738140723L);
2909 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -1.765281878332676474347460257221369818872e-17L);
2910 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -3.141592653589793220809824599952738140723L);
2911 TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L);
2912 TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L);
2913 TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L);
2914 TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L);
2915 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 1.387778780781445675529539585113525401762e-17L);
2916 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 3.141592653589793224584855575465046128902L);
2917 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -1.387778780781445675529539585113525401762e-17L);
2918 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -3.141592653589793224584855575465046128902L);
2919 TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L);
2920 TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L);
2921 TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L);
2922 TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L);
2923 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 1.387778780781445675529539585113525401762e-17L);
2924 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 3.141592653589793224584855575465046128902L);
2925 TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -1.387778780781445675529539585113525401762e-17L);
2926 TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -3.141592653589793224584855575465046128902L);
2927#endif
2928 TEST_c_c (cacosh, 0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751269838L);
2929 TEST_c_c (cacosh, 0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751269838L);
2930 TEST_c_c (cacosh, -0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751614359L);
2931 TEST_c_c (cacosh, -0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751614359L);
2932 TEST_c_c (cacosh, 0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 1.047197551196597746154214461093167628066L);
2933 TEST_c_c (cacosh, -0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 2.094395102393195492308428922186335256131L);
2934 TEST_c_c (cacosh, 0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -1.047197551196597746154214461093167628066L);
2935 TEST_c_c (cacosh, -0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -2.094395102393195492308428922186335256131L);
2936 TEST_c_c (cacosh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751249506L);
2937 TEST_c_c (cacosh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751249506L);
2938 TEST_c_c (cacosh, -0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751634692L);
2939 TEST_c_c (cacosh, -0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751634692L);
2940#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2941 TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L);
2942 TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L);
2943 TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L);
2944 TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L);
2945 TEST_c_c (cacosh, 0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION);
2946 TEST_c_c (cacosh, -0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION);
2947 TEST_c_c (cacosh, 0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION);
2948 TEST_c_c (cacosh, -0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION);
2949#endif
2950 TEST_c_c (cacosh, 0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L);
2951 TEST_c_c (cacosh, 0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L);
2952 TEST_c_c (cacosh, -0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L);
2953 TEST_c_c (cacosh, -0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L);
2954 TEST_c_c (cacosh, 0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751249506L);
2955 TEST_c_c (cacosh, -0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751634692L);
2956 TEST_c_c (cacosh, 0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751249506L);
2957 TEST_c_c (cacosh, -0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751634692L);
2958
2550dfe9 2959 TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L);
4f7e7f8e 2960 TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L);
8847214f 2961
6815fabc 2962 END (cacosh, complex);
8847214f
UD
2963}
2964
2550dfe9 2965
8847214f
UD
2966static void
2967carg_test (void)
2968{
2969 START (carg);
2970
2971 /* carg (x + iy) is specified as atan2 (y, x) */
2972
2973 /* carg (x + i 0) == 0 for x > 0. */
2974 TEST_c_f (carg, 2.0, 0, 0);
2975 /* carg (x - i 0) == -0 for x > 0. */
2976 TEST_c_f (carg, 2.0, minus_zero, minus_zero);
2977
2978 TEST_c_f (carg, 0, 0, 0);
2979 TEST_c_f (carg, 0, minus_zero, minus_zero);
2980
2981 /* carg (x + i 0) == +pi for x < 0. */
2982 TEST_c_f (carg, -2.0, 0, M_PIl);
2983
2984 /* carg (x - i 0) == -pi for x < 0. */
2985 TEST_c_f (carg, -2.0, minus_zero, -M_PIl);
2986
2987 TEST_c_f (carg, minus_zero, 0, M_PIl);
2988 TEST_c_f (carg, minus_zero, minus_zero, -M_PIl);
2989
2990 /* carg (+0 + i y) == pi/2 for y > 0. */
2991 TEST_c_f (carg, 0, 2.0, M_PI_2l);
2992
2993 /* carg (-0 + i y) == pi/2 for y > 0. */
2994 TEST_c_f (carg, minus_zero, 2.0, M_PI_2l);
2995
2996 /* carg (+0 + i y) == -pi/2 for y < 0. */
2997 TEST_c_f (carg, 0, -2.0, -M_PI_2l);
2998
2999 /* carg (-0 + i y) == -pi/2 for y < 0. */
3000 TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l);
3001
3002 /* carg (inf + i y) == +0 for finite y > 0. */
3003 TEST_c_f (carg, plus_infty, 2.0, 0);
3004
3005 /* carg (inf + i y) == -0 for finite y < 0. */
3006 TEST_c_f (carg, plus_infty, -2.0, minus_zero);
3007
3008 /* carg(x + i inf) == pi/2 for finite x. */
3009 TEST_c_f (carg, 10.0, plus_infty, M_PI_2l);
3010
3011 /* carg(x - i inf) == -pi/2 for finite x. */
3012 TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l);
3013
3014 /* carg (-inf + i y) == +pi for finite y > 0. */
3015 TEST_c_f (carg, minus_infty, 10.0, M_PIl);
3016
3017 /* carg (-inf + i y) == -pi for finite y < 0. */
3018 TEST_c_f (carg, minus_infty, -10.0, -M_PIl);
3019
3020 TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l);
3021
3022 TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l);
3023
3024 TEST_c_f (carg, minus_infty, plus_infty, 3 * M_PI_4l);
3025
3026 TEST_c_f (carg, minus_infty, minus_infty, -3 * M_PI_4l);
3027
67e971f1 3028 TEST_c_f (carg, qnan_value, qnan_value, qnan_value);
15daa639 3029
8847214f
UD
3030 END (carg);
3031}
3032
3033static void
3034casin_test (void)
3035{
aaca11d8 3036 errno = 0;
3c6cad26 3037 FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
3038 if (errno == ENOSYS)
3039 /* Function not implemented. */
3040 return;
3041
8847214f
UD
3042 START (casin);
3043
3044 TEST_c_c (casin, 0, 0, 0.0, 0.0);
3045 TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0);
3046 TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero);
3047 TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero);
3048
3049 TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty);
3050 TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty);
3051 TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty);
3052 TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty);
3053
3054 TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty);
3055 TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty);
3056 TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty);
3057 TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty);
3058 TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty);
3059 TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty);
3c6cad26
UD
3060 TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty);
3061 TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty);
8847214f
UD
3062
3063 TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty);
3064 TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty);
3065 TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty);
3066 TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty);
3067
3068 TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty);
3069 TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty);
3070 TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty);
3071 TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty);
3072
67e971f1
TS
3073 TEST_c_c (casin, qnan_value, plus_infty, qnan_value, plus_infty);
3074 TEST_c_c (casin, qnan_value, minus_infty, qnan_value, minus_infty);
8847214f 3075
67e971f1
TS
3076 TEST_c_c (casin, 0.0, qnan_value, 0.0, qnan_value);
3077 TEST_c_c (casin, minus_zero, qnan_value, minus_zero, qnan_value);
8847214f 3078
67e971f1
TS
3079 TEST_c_c (casin, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
3080 TEST_c_c (casin, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
8847214f 3081
67e971f1
TS
3082 TEST_c_c (casin, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
3083 TEST_c_c (casin, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 3084
67e971f1
TS
3085 TEST_c_c (casin, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
3086 TEST_c_c (casin, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 3087
67e971f1 3088 TEST_c_c (casin, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 3089
d1d3431a
JM
3090 TEST_c_c (casin, plus_zero, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L);
3091 TEST_c_c (casin, minus_zero, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L);
3092 TEST_c_c (casin, plus_zero, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L);
3093 TEST_c_c (casin, minus_zero, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L);
3094 TEST_c_c (casin, plus_zero, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L);
3095 TEST_c_c (casin, minus_zero, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L);
3096 TEST_c_c (casin, plus_zero, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L);
3097 TEST_c_c (casin, minus_zero, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L);
3098 TEST_c_c (casin, plus_zero, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L);
3099 TEST_c_c (casin, minus_zero, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L);
3100 TEST_c_c (casin, plus_zero, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L);
3101 TEST_c_c (casin, minus_zero, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L);
3102
3103 TEST_c_c (casin, -1.5L, plus_zero, -M_PI_2l, 0.9624236501192068949955178268487368462704L);
3104 TEST_c_c (casin, -1.5L, minus_zero, -M_PI_2l, -0.9624236501192068949955178268487368462704L);
3105 TEST_c_c (casin, -1.0L, plus_zero, -M_PI_2l, plus_zero);
3106 TEST_c_c (casin, -1.0L, minus_zero, -M_PI_2l, minus_zero);
3107 TEST_c_c (casin, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L, plus_zero);
3108 TEST_c_c (casin, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L, minus_zero);
3109 TEST_c_c (casin, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L, plus_zero);
3110 TEST_c_c (casin, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L, minus_zero);
3111 TEST_c_c (casin, 1.0L, plus_zero, M_PI_2l, plus_zero);
3112 TEST_c_c (casin, 1.0L, minus_zero, M_PI_2l, minus_zero);
3113 TEST_c_c (casin, 1.5L, plus_zero, M_PI_2l, 0.9624236501192068949955178268487368462704L);
3114 TEST_c_c (casin, 1.5L, minus_zero, M_PI_2l, -0.9624236501192068949955178268487368462704L);
3115
cdc1c96f
JM
3116 TEST_c_c (casin, 0x1p50L, 1.0L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L);
3117 TEST_c_c (casin, 0x1p50L, -1.0L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L);
3118 TEST_c_c (casin, -0x1p50L, 1.0L, -1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L);
3119 TEST_c_c (casin, -0x1p50L, -1.0L, -1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L);
3120 TEST_c_c (casin, 1.0L, 0x1p50L, 8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L);
3121 TEST_c_c (casin, -1.0L, 0x1p50L, -8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L);
3122 TEST_c_c (casin, 1.0L, -0x1p50L, 8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L);
3123 TEST_c_c (casin, -1.0L, -0x1p50L, -8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L);
3124#ifndef TEST_FLOAT
3125 TEST_c_c (casin, 0x1p500L, 1.0L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L);
3126 TEST_c_c (casin, 0x1p500L, -1.0L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L);
3127 TEST_c_c (casin, -0x1p500L, 1.0L, -1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L);
3128 TEST_c_c (casin, -0x1p500L, -1.0L, -1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L);
3129 TEST_c_c (casin, 1.0L, 0x1p500L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L);
3130 TEST_c_c (casin, -1.0L, 0x1p500L, -3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L);
3131 TEST_c_c (casin, 1.0L, -0x1p500L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L);
3132 TEST_c_c (casin, -1.0L, -0x1p500L, -3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L);
3133#endif
3134#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3135 TEST_c_c (casin, 0x1p5000L, 1.0L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L);
3136 TEST_c_c (casin, 0x1p5000L, -1.0L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L);
3137 TEST_c_c (casin, -0x1p5000L, 1.0L, -1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L);
3138 TEST_c_c (casin, -0x1p5000L, -1.0L, -1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L);
3139 TEST_c_c (casin, 1.0L, 0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L);
3140 TEST_c_c (casin, -1.0L, 0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L);
3141 TEST_c_c (casin, 1.0L, -0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L);
3142 TEST_c_c (casin, -1.0L, -0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L);
3143#endif
3144
a9708fed
JM
3145 TEST_c_c (casin, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, 8.973081118419833726837456344608533993585e1L);
3146#ifndef TEST_FLOAT
3147 TEST_c_c (casin, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, 7.107906849659093345062145442726115449315e2L);
3148#endif
3149#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3150 TEST_c_c (casin, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, 1.135753137836666928715489992987020363057e4L);
3151#endif
3152
8cf28c5e
JM
3153 TEST_c_c (casin, 0x1.fp-129L, 1.5L, 1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT);
3154 TEST_c_c (casin, 0x1.fp-129L, -1.5L, 1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT);
3155 TEST_c_c (casin, -0x1.fp-129L, 1.5L, -1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT);
3156 TEST_c_c (casin, -0x1.fp-129L, -1.5L, -1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT);
3157 TEST_c_c (casin, 1.5L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L);
3158 TEST_c_c (casin, -1.5L, 0x1.fp-129L, -1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L);
3159 TEST_c_c (casin, 1.5L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L);
3160 TEST_c_c (casin, -1.5L, -0x1.fp-129L, -1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L);
3161#ifndef TEST_FLOAT
3162 TEST_c_c (casin, 0x1.fp-1025L, 1.5L, 2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE);
3163 TEST_c_c (casin, 0x1.fp-1025L, -1.5L, 2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE);
3164 TEST_c_c (casin, -0x1.fp-1025L, 1.5L, -2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE);
3165 TEST_c_c (casin, -0x1.fp-1025L, -1.5L, -2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE);
3166 TEST_c_c (casin, 1.5L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L);
3167 TEST_c_c (casin, -1.5L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L);
3168 TEST_c_c (casin, 1.5L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L);
3169 TEST_c_c (casin, -1.5L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L);
3170#endif
3171#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3172 TEST_c_c (casin, 0x1.fp-16385L, 1.5L, 4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION);
3173 TEST_c_c (casin, 0x1.fp-16385L, -1.5L, 4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION);
3174 TEST_c_c (casin, -0x1.fp-16385L, 1.5L, -4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION);
3175 TEST_c_c (casin, -0x1.fp-16385L, -1.5L, -4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION);
3176 TEST_c_c (casin, 1.5L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L);
3177 TEST_c_c (casin, -1.5L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L);
3178 TEST_c_c (casin, 1.5L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L);
3179 TEST_c_c (casin, -1.5L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L);
3180#endif
3181
0a1b2ae6
JM
3182 TEST_c_c (casin, 0.5L, 1.0L, 3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L);
3183 TEST_c_c (casin, 0.5L, -1.0L, 3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L);
3184 TEST_c_c (casin, -0.5L, 1.0L, -3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L);
3185 TEST_c_c (casin, -0.5L, -1.0L, -3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L);
3186 TEST_c_c (casin, 1.0L, 0.5L, 8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L);
3187 TEST_c_c (casin, -1.0L, 0.5L, -8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L);
3188 TEST_c_c (casin, 1.0L, -0.5L, 8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L);
3189 TEST_c_c (casin, -1.0L, -0.5L, -8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L);
3190 TEST_c_c (casin, 0.25L, 1.0L, 1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L);
3191 TEST_c_c (casin, 0.25L, -1.0L, 1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L);
3192 TEST_c_c (casin, -0.25L, 1.0L, -1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L);
3193 TEST_c_c (casin, -0.25L, -1.0L, -1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L);
3194 TEST_c_c (casin, 1.0L, 0.25L, 1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L);
3195 TEST_c_c (casin, -1.0L, 0.25L, -1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L);
3196 TEST_c_c (casin, 1.0L, -0.25L, 1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L);
3197 TEST_c_c (casin, -1.0L, -0.25L, -1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L);
3198 TEST_c_c (casin, 0x1.fp-10L, 1.0L, 1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L);
3199 TEST_c_c (casin, 0x1.fp-10L, -1.0L, 1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L);
3200 TEST_c_c (casin, -0x1.fp-10L, 1.0L, -1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L);
3201 TEST_c_c (casin, -0x1.fp-10L, -1.0L, -1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L);
3202 TEST_c_c (casin, 1.0L, 0x1.fp-10L, 1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L);
3203 TEST_c_c (casin, -1.0L, 0x1.fp-10L, -1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L);
3204 TEST_c_c (casin, 1.0L, -0x1.fp-10L, 1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L);
3205 TEST_c_c (casin, -1.0L, -0x1.fp-10L, -1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L);
3206 TEST_c_c (casin, 0x1.fp-30L, 1.0L, 1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L);
3207 TEST_c_c (casin, 0x1.fp-30L, -1.0L, 1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L);
3208 TEST_c_c (casin, -0x1.fp-30L, 1.0L, -1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L);
3209 TEST_c_c (casin, -0x1.fp-30L, -1.0L, -1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L);
3210 TEST_c_c (casin, 1.0L, 0x1.fp-30L, 1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L);
3211 TEST_c_c (casin, -1.0L, 0x1.fp-30L, -1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L);
3212 TEST_c_c (casin, 1.0L, -0x1.fp-30L, 1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L);
3213 TEST_c_c (casin, -1.0L, -0x1.fp-30L, -1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L);
3214 TEST_c_c (casin, 0x1.fp-100L, 1.0L, 1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L);
3215 TEST_c_c (casin, 0x1.fp-100L, -1.0L, 1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L);
3216 TEST_c_c (casin, -0x1.fp-100L, 1.0L, -1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L);
3217 TEST_c_c (casin, -0x1.fp-100L, -1.0L, -1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L);
3218 TEST_c_c (casin, 1.0L, 0x1.fp-100L, 1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L);
3219 TEST_c_c (casin, -1.0L, 0x1.fp-100L, -1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L);
3220 TEST_c_c (casin, 1.0L, -0x1.fp-100L, 1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L);
3221 TEST_c_c (casin, -1.0L, -0x1.fp-100L, -1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L);
3222 TEST_c_c (casin, 0x1.fp-129L, 1.0L, 2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3223 TEST_c_c (casin, 0x1.fp-129L, -1.0L, 2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3224 TEST_c_c (casin, -0x1.fp-129L, 1.0L, -2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3225 TEST_c_c (casin, -0x1.fp-129L, -1.0L, -2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3226 TEST_c_c (casin, 1.0L, 0x1.fp-129L, 1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L);
3227 TEST_c_c (casin, -1.0L, 0x1.fp-129L, -1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L);
3228 TEST_c_c (casin, 1.0L, -0x1.fp-129L, 1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L);
3229 TEST_c_c (casin, -1.0L, -0x1.fp-129L, -1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L);
3230#ifndef TEST_FLOAT
3231 TEST_c_c (casin, 0x1.fp-1000L, 1.0L, 1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3232 TEST_c_c (casin, 0x1.fp-1000L, -1.0L, 1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3233 TEST_c_c (casin, -0x1.fp-1000L, 1.0L, -1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3234 TEST_c_c (casin, -0x1.fp-1000L, -1.0L, -1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3235 TEST_c_c (casin, 1.0L, 0x1.fp-1000L, 1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L);
3236 TEST_c_c (casin, -1.0L, 0x1.fp-1000L, -1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L);
3237 TEST_c_c (casin, 1.0L, -0x1.fp-1000L, 1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L);
3238 TEST_c_c (casin, -1.0L, -0x1.fp-1000L, -1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L);
3239 TEST_c_c (casin, 0x1.fp-1025L, 1.0L, 3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3240 TEST_c_c (casin, 0x1.fp-1025L, -1.0L, 3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3241 TEST_c_c (casin, -0x1.fp-1025L, 1.0L, -3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3242 TEST_c_c (casin, -0x1.fp-1025L, -1.0L, -3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3243 TEST_c_c (casin, 1.0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L);
3244 TEST_c_c (casin, -1.0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L);
3245 TEST_c_c (casin, 1.0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L);
3246 TEST_c_c (casin, -1.0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L);
3247#endif
3248#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3249 TEST_c_c (casin, 0x1.fp-10000L, 1.0L, 6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L);
3250 TEST_c_c (casin, 0x1.fp-10000L, -1.0L, 6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L);
3251 TEST_c_c (casin, -0x1.fp-10000L, 1.0L, -6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L);
3252 TEST_c_c (casin, -0x1.fp-10000L, -1.0L, -6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L);
3253 TEST_c_c (casin, 1.0L, 0x1.fp-10000L, 1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L);
3254 TEST_c_c (casin, -1.0L, 0x1.fp-10000L, -1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L);
3255 TEST_c_c (casin, 1.0L, -0x1.fp-10000L, 1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L);
3256 TEST_c_c (casin, -1.0L, -0x1.fp-10000L, -1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L);
3257 TEST_c_c (casin, 0x1.fp-16385L, 1.0L, 5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION);
3258 TEST_c_c (casin, 0x1.fp-16385L, -1.0L, 5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION);
3259 TEST_c_c (casin, -0x1.fp-16385L, 1.0L, -5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION);
3260 TEST_c_c (casin, -0x1.fp-16385L, -1.0L, -5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION);
3261 TEST_c_c (casin, 1.0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L);
3262 TEST_c_c (casin, -1.0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L);
3263 TEST_c_c (casin, 1.0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L);
3264 TEST_c_c (casin, -1.0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L);
3265#endif
3266
4d14f449
JM
3267 TEST_c_c (casin, 0x1p-23L, 0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L);
3268 TEST_c_c (casin, 0x1p-23L, -0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L);
3269 TEST_c_c (casin, -0x1p-23L, 0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L);
3270 TEST_c_c (casin, -0x1p-23L, -0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L);
3271 TEST_c_c (casin, 0x1.000002p0L, 0x1p-23L, 1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L);
3272 TEST_c_c (casin, -0x1.000002p0L, 0x1p-23L, -1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L);
3273 TEST_c_c (casin, 0x1.000002p0L, -0x1p-23L, 1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L);
3274 TEST_c_c (casin, -0x1.000002p0L, -0x1p-23L, -1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L);
3275 TEST_c_c (casin, 0x1.fp-129L, 0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3276 TEST_c_c (casin, 0x1.fp-129L, -0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3277 TEST_c_c (casin, -0x1.fp-129L, 0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3278 TEST_c_c (casin, -0x1.fp-129L, -0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3279 TEST_c_c (casin, 0x1.000002p0L, 0x1.fp-129L, 1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L);
3280 TEST_c_c (casin, -0x1.000002p0L, 0x1.fp-129L, -1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L);
3281 TEST_c_c (casin, 0x1.000002p0L, -0x1.fp-129L, 1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L);
3282 TEST_c_c (casin, -0x1.000002p0L, -0x1.fp-129L, -1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L);
3283 TEST_c_c (casin, 0.0L, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L);
3284 TEST_c_c (casin, 0.0L, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L);
3285 TEST_c_c (casin, -0.0L, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L);
3286 TEST_c_c (casin, -0.0L, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L);
3287 TEST_c_c (casin, 0x1.000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L);
3288 TEST_c_c (casin, -0x1.000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L);
3289 TEST_c_c (casin, 0x1.000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L);
3290 TEST_c_c (casin, -0x1.000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L);
3a7182a1 3291#ifndef TEST_FLOAT
4d14f449
JM
3292 TEST_c_c (casin, 0x1p-52L, 0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L);
3293 TEST_c_c (casin, 0x1p-52L, -0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L);
3294 TEST_c_c (casin, -0x1p-52L, 0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L);
3295 TEST_c_c (casin, -0x1p-52L, -0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L);
3296 TEST_c_c (casin, 0x1.0000000000001p0L, 0x1p-52L, 1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L);
3297 TEST_c_c (casin, -0x1.0000000000001p0L, 0x1p-52L, -1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L);
3298 TEST_c_c (casin, 0x1.0000000000001p0L, -0x1p-52L, 1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L);
3299 TEST_c_c (casin, -0x1.0000000000001p0L, -0x1p-52L, -1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L);
3300 TEST_c_c (casin, 0x1.fp-1025L, 0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3301 TEST_c_c (casin, 0x1.fp-1025L, -0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3302 TEST_c_c (casin, -0x1.fp-1025L, 0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3303 TEST_c_c (casin, -0x1.fp-1025L, -0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3304 TEST_c_c (casin, 0x1.0000000000001p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L);
3305 TEST_c_c (casin, -0x1.0000000000001p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L);
3306 TEST_c_c (casin, 0x1.0000000000001p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L);
3307 TEST_c_c (casin, -0x1.0000000000001p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L);
3308 TEST_c_c (casin, 0.0L, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L);
3309 TEST_c_c (casin, 0.0L, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L);
3310 TEST_c_c (casin, -0.0L, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L);
3311 TEST_c_c (casin, -0.0L, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L);
3312 TEST_c_c (casin, 0x1.0000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L);
3313 TEST_c_c (casin, -0x1.0000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L);
3314 TEST_c_c (casin, 0x1.0000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L);
3315 TEST_c_c (casin, -0x1.0000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L);
3a7182a1
JM
3316#endif
3317#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4d14f449
JM
3318 TEST_c_c (casin, 0x1p-63L, 0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L);
3319 TEST_c_c (casin, 0x1p-63L, -0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L);
3320 TEST_c_c (casin, -0x1p-63L, 0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L);
3321 TEST_c_c (casin, -0x1p-63L, -0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L);
3322 TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1p-63L, 1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L);
3323 TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1p-63L, -1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L);
3324 TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1p-63L, 1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L);
3325 TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1p-63L, -1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L);
3a7182a1 3326# if LDBL_MIN_EXP <= -16381
4d14f449
JM
3327 TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION);
3328 TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION);
3329 TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION);
3330 TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION);
3331 TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L);
3332 TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L);
3333 TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L);
3334 TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L);
3a7182a1 3335# endif
4d14f449
JM
3336 TEST_c_c (casin, 0.0L, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L);
3337 TEST_c_c (casin, 0.0L, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L);
3338 TEST_c_c (casin, -0.0L, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L);
3339 TEST_c_c (casin, -0.0L, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L);
3340 TEST_c_c (casin, 0x1.0000000000000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L);
3341 TEST_c_c (casin, -0x1.0000000000000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L);
3342 TEST_c_c (casin, 0x1.0000000000000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L);
3343 TEST_c_c (casin, -0x1.0000000000000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L);
3a7182a1
JM
3344#endif
3345#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4d14f449
JM
3346 TEST_c_c (casin, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L);
3347 TEST_c_c (casin, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L);
3348 TEST_c_c (casin, -0x1p-106L, 0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L);
3349 TEST_c_c (casin, -0x1p-106L, -0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L);
3350 TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1p-106L, 1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L);
3351 TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1p-106L, -1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L);
3352 TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1p-106L, 1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L);
3353 TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1p-106L, -1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L);
3354 TEST_c_c (casin, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3355 TEST_c_c (casin, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3356 TEST_c_c (casin, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3357 TEST_c_c (casin, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3358 TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L);
3359 TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L);
3360 TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L);
3361 TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L);
3362 TEST_c_c (casin, 0.0L, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L);
3363 TEST_c_c (casin, 0.0L, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L);
3364 TEST_c_c (casin, -0.0L, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L);
3365 TEST_c_c (casin, -0.0L, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L);
3366 TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L);
3367 TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L);
3368 TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L);
3369 TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L);
3a7182a1
JM
3370#endif
3371#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4d14f449
JM
3372 TEST_c_c (casin, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L);
3373 TEST_c_c (casin, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L);
3374 TEST_c_c (casin, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L);
3375 TEST_c_c (casin, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L);
3376 TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L);
3377 TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L);
3378 TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L);
3379 TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L);
3380 TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION);
3381 TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION);
3382 TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION);
3383 TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION);
3384 TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L);
3385 TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L);
3386 TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L);
3387 TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L);
3388 TEST_c_c (casin, 0.0L, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L);
3389 TEST_c_c (casin, 0.0L, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L);
3390 TEST_c_c (casin, -0.0L, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L);
3391 TEST_c_c (casin, -0.0L, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L);
3392 TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L);
3393 TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L);
3394 TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L);
3395 TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L);
3a7182a1
JM
3396#endif
3397
ccc8cadf
JM
3398 TEST_c_c (casin, 0x1p-23L, 0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L);
3399 TEST_c_c (casin, 0x1p-23L, -0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L);
3400 TEST_c_c (casin, -0x1p-23L, 0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L);
3401 TEST_c_c (casin, -0x1p-23L, -0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L);
3402 TEST_c_c (casin, 0x0.ffffffp0L, 0x1p-23L, 1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L);
3403 TEST_c_c (casin, -0x0.ffffffp0L, 0x1p-23L, -1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L);
3404 TEST_c_c (casin, 0x0.ffffffp0L, -0x1p-23L, 1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L);
3405 TEST_c_c (casin, -0x0.ffffffp0L, -0x1p-23L, -1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L);
3406 TEST_c_c (casin, 0x1.fp-129L, 0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3407 TEST_c_c (casin, 0x1.fp-129L, -0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3408 TEST_c_c (casin, -0x1.fp-129L, 0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3409 TEST_c_c (casin, -0x1.fp-129L, -0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3410 TEST_c_c (casin, 0x0.ffffffp0L, 0x1.fp-129L, 1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L);
3411 TEST_c_c (casin, -0x0.ffffffp0L, 0x1.fp-129L, -1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L);
3412 TEST_c_c (casin, 0x0.ffffffp0L, -0x1.fp-129L, 1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L);
3413 TEST_c_c (casin, -0x0.ffffffp0L, -0x1.fp-129L, -1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L);
3414 TEST_c_c (casin, 0.0L, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L);
3415 TEST_c_c (casin, 0.0L, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L);
3416 TEST_c_c (casin, -0.0L, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L);
3417 TEST_c_c (casin, -0.0L, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L);
3418 TEST_c_c (casin, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L, 0.0L);
3419 TEST_c_c (casin, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L, 0.0L);
3420 TEST_c_c (casin, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L, -0.0L);
3421 TEST_c_c (casin, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L, -0.0L);
3422 TEST_c_c (casin, 0x1p-23L, 0.5L, 1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L);
3423 TEST_c_c (casin, 0x1p-23L, -0.5L, 1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L);
3424 TEST_c_c (casin, -0x1p-23L, 0.5L, -1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L);
3425 TEST_c_c (casin, -0x1p-23L, -0.5L, -1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L);
3426 TEST_c_c (casin, 0.5L, 0x1p-23L, 5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L);
3427 TEST_c_c (casin, -0.5L, 0x1p-23L, -5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L);
3428 TEST_c_c (casin, 0.5L, -0x1p-23L, 5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L);
3429 TEST_c_c (casin, -0.5L, -0x1p-23L, -5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L);
3430 TEST_c_c (casin, 0x1.fp-129L, 0.5L, 2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3431 TEST_c_c (casin, 0x1.fp-129L, -0.5L, 2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3432 TEST_c_c (casin, -0x1.fp-129L, 0.5L, -2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3433 TEST_c_c (casin, -0x1.fp-129L, -0.5L, -2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT);
3434 TEST_c_c (casin, 0.5L, 0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3435 TEST_c_c (casin, -0.5L, 0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3436 TEST_c_c (casin, 0.5L, -0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3437 TEST_c_c (casin, -0.5L, -0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3438 TEST_c_c (casin, 0x1p-23L, 0x1p-23L, 1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L);
3439 TEST_c_c (casin, 0x1p-23L, -0x1p-23L, 1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L);
3440 TEST_c_c (casin, -0x1p-23L, 0x1p-23L, -1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L);
3441 TEST_c_c (casin, -0x1p-23L, -0x1p-23L, -1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L);
3442 /* Bug 15319: underflow exception may be missing. */
3443 TEST_c_c (casin, 0x1.fp-129L, 0x1p-23L, 2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT);
3444 TEST_c_c (casin, 0x1.fp-129L, -0x1p-23L, 2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT);
3445 TEST_c_c (casin, -0x1.fp-129L, 0x1p-23L, -2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT);
3446 TEST_c_c (casin, -0x1.fp-129L, -0x1p-23L, -2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT);
3447 TEST_c_c (casin, 0x1p-23L, 0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3448 TEST_c_c (casin, -0x1p-23L, 0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3449 TEST_c_c (casin, 0x1p-23L, -0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3450 TEST_c_c (casin, -0x1p-23L, -0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3451 TEST_c_c (casin, 0.0L, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L);
3452 TEST_c_c (casin, 0.0L, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L);
3453 TEST_c_c (casin, -0.0L, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L);
3454 TEST_c_c (casin, -0.0L, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L);
3455 TEST_c_c (casin, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L, 0.0L);
3456 TEST_c_c (casin, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L, 0.0L);
3457 TEST_c_c (casin, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L, -0.0L);
3458 TEST_c_c (casin, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L, -0.0L);
3459 TEST_c_c (casin, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3460 TEST_c_c (casin, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3461 TEST_c_c (casin, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3462 TEST_c_c (casin, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3463#ifndef TEST_FLOAT
3464 TEST_c_c (casin, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L);
3465 TEST_c_c (casin, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L);
3466 TEST_c_c (casin, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L);
3467 TEST_c_c (casin, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L);
3468 TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L);
3469 TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1p-52L, -1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L);
3470 TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L);
3471 TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1p-52L, -1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L);
3472 TEST_c_c (casin, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3473 TEST_c_c (casin, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3474 TEST_c_c (casin, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3475 TEST_c_c (casin, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3476 TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3477 TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3478 TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3479 TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3480 TEST_c_c (casin, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L);
3481 TEST_c_c (casin, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L);
3482 TEST_c_c (casin, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L);
3483 TEST_c_c (casin, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L);
3484 TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L, 0.0L);
3485 TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L, 0.0L);
3486 TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L, -0.0L);
3487 TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L, -0.0L);
3488#endif
3489 TEST_c_c (casin, 0x1p-52L, 0.5L, 1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L);
3490 TEST_c_c (casin, 0x1p-52L, -0.5L, 1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L);
3491 TEST_c_c (casin, -0x1p-52L, 0.5L, -1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L);
3492 TEST_c_c (casin, -0x1p-52L, -0.5L, -1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L);
3493 TEST_c_c (casin, 0.5L, 0x1p-52L, 5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L);
3494 TEST_c_c (casin, -0.5L, 0x1p-52L, -5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L);
3495 TEST_c_c (casin, 0.5L, -0x1p-52L, 5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L);
3496 TEST_c_c (casin, -0.5L, -0x1p-52L, -5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L);
3497#ifndef TEST_FLOAT
3498 TEST_c_c (casin, 0x1.fp-1025L, 0.5L, 4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3499 TEST_c_c (casin, 0x1.fp-1025L, -0.5L, 4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3500 TEST_c_c (casin, -0x1.fp-1025L, 0.5L, -4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3501 TEST_c_c (casin, -0x1.fp-1025L, -0.5L, -4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3502 TEST_c_c (casin, 0.5L, 0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3503 TEST_c_c (casin, -0.5L, 0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3504 TEST_c_c (casin, 0.5L, -0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3505 TEST_c_c (casin, -0.5L, -0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3506#endif
3507 TEST_c_c (casin, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L);
3508 TEST_c_c (casin, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L);
3509 TEST_c_c (casin, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L);
3510 TEST_c_c (casin, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L);
3511#ifndef TEST_FLOAT
3512 /* Bug 15319: underflow exception may be missing. */
3513 TEST_c_c (casin, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
3514 TEST_c_c (casin, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
3515 TEST_c_c (casin, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
3516 TEST_c_c (casin, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
3517 TEST_c_c (casin, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3518 TEST_c_c (casin, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3519 TEST_c_c (casin, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3520 TEST_c_c (casin, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3521#endif
3522 TEST_c_c (casin, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L);
3523 TEST_c_c (casin, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L);
3524 TEST_c_c (casin, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L);
3525 TEST_c_c (casin, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L);
3526 TEST_c_c (casin, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L, 0.0L);
3527 TEST_c_c (casin, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L, 0.0L);
3528 TEST_c_c (casin, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L, -0.0L);
3529 TEST_c_c (casin, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L, -0.0L);
3530#ifndef TEST_FLOAT
3531 TEST_c_c (casin, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3532 TEST_c_c (casin, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3533 TEST_c_c (casin, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3534 TEST_c_c (casin, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3535#endif
3536#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3537 TEST_c_c (casin, 0x1p-63L, 0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L);
3538 TEST_c_c (casin, 0x1p-63L, -0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L);
3539 TEST_c_c (casin, -0x1p-63L, 0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L);
3540 TEST_c_c (casin, -0x1p-63L, -0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L);
3541 TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1p-63L, 1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L);
3542 TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1p-63L, -1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L);
3543 TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1p-63L, 1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L);
3544 TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1p-63L, -1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L);
3545# if LDBL_MIN_EXP <= -16381
3546 TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION);
3547 TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION);
3548 TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION);
3549 TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION);
3550 TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L);
3551 TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L);
3552 TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L);
3553 TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L);
3554# endif
3555 TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L);
3556 TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L);
3557 TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L);
3558 TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L);
3559 TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L, 0.0L);
3560 TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L, 0.0L);
3561 TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L, -0.0L);
3562 TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L, -0.0L);
3563#endif
3564 TEST_c_c (casin, 0x1p-63L, 0.5L, 9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L);
3565 TEST_c_c (casin, 0x1p-63L, -0.5L, 9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L);
3566 TEST_c_c (casin, -0x1p-63L, 0.5L, -9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L);
3567 TEST_c_c (casin, -0x1p-63L, -0.5L, -9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L);
3568 TEST_c_c (casin, 0.5L, 0x1p-63L, 5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L);
3569 TEST_c_c (casin, -0.5L, 0x1p-63L, -5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L);
3570 TEST_c_c (casin, 0.5L, -0x1p-63L, 5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L);
3571 TEST_c_c (casin, -0.5L, -0x1p-63L, -5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L);
3572#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3573 TEST_c_c (casin, 0x1.fp-16385L, 0.5L, 7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION);
3574 TEST_c_c (casin, 0x1.fp-16385L, -0.5L, 7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION);
3575 TEST_c_c (casin, -0x1.fp-16385L, 0.5L, -7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION);
3576 TEST_c_c (casin, -0x1.fp-16385L, -0.5L, -7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION);
3577 TEST_c_c (casin, 0.5L, 0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION);
3578 TEST_c_c (casin, -0.5L, 0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION);
3579 TEST_c_c (casin, 0.5L, -0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION);
3580 TEST_c_c (casin, -0.5L, -0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION);
3581#endif
3582 TEST_c_c (casin, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L);
3583 TEST_c_c (casin, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L);
3584 TEST_c_c (casin, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L);
3585 TEST_c_c (casin, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L);
3586#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3587 TEST_c_c (casin, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION);
3588 TEST_c_c (casin, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION);
3589 TEST_c_c (casin, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION);
3590 TEST_c_c (casin, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION);
3591 TEST_c_c (casin, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION);
3592 TEST_c_c (casin, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION);
3593 TEST_c_c (casin, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION);
3594 TEST_c_c (casin, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION);
3595#endif
3596 TEST_c_c (casin, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L);
3597 TEST_c_c (casin, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L);
3598 TEST_c_c (casin, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L);
3599 TEST_c_c (casin, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L);
3600 TEST_c_c (casin, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L, 0.0L);
3601 TEST_c_c (casin, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L, 0.0L);
3602 TEST_c_c (casin, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L, -0.0L);
3603 TEST_c_c (casin, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L, -0.0L);
3604#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3605 TEST_c_c (casin, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
3606 TEST_c_c (casin, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
3607 TEST_c_c (casin, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
3608 TEST_c_c (casin, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
3609#endif
3610#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3611 TEST_c_c (casin, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L);
3612 TEST_c_c (casin, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L);
3613 TEST_c_c (casin, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L);
3614 TEST_c_c (casin, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L);
3615 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L);
3616 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L);
3617 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L);
3618 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L);
3619 TEST_c_c (casin, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3620 TEST_c_c (casin, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3621 TEST_c_c (casin, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3622 TEST_c_c (casin, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
3623 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3624 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3625 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3626 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3627 TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L);
3628 TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L);
3629 TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L);
3630 TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L);
3631 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L, 0.0L);
3632 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L, 0.0L);
3633 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L, -0.0L);
3634 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L, -0.0L);
3635#endif
3636 TEST_c_c (casin, 0x1p-105L, 0.5L, 2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L);
3637 TEST_c_c (casin, 0x1p-105L, -0.5L, 2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L);
3638 TEST_c_c (casin, -0x1p-105L, 0.5L, -2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L);
3639 TEST_c_c (casin, -0x1p-105L, -0.5L, -2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L);
3640 TEST_c_c (casin, 0.5L, 0x1p-105L, 5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L);
3641 TEST_c_c (casin, -0.5L, 0x1p-105L, -5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L);
3642 TEST_c_c (casin, 0.5L, -0x1p-105L, 5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L);
3643 TEST_c_c (casin, -0.5L, -0x1p-105L, -5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L);
3644 TEST_c_c (casin, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L);
3645 TEST_c_c (casin, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L);
3646 TEST_c_c (casin, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L);
3647 TEST_c_c (casin, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L);
3648#ifndef TEST_FLOAT
3649 /* Bug 15319: underflow exception may be missing. */
3650 TEST_c_c (casin, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
3651 TEST_c_c (casin, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
3652 TEST_c_c (casin, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
3653 TEST_c_c (casin, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
3654 TEST_c_c (casin, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3655 TEST_c_c (casin, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3656 TEST_c_c (casin, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3657 TEST_c_c (casin, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3658#endif
3659 TEST_c_c (casin, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L);
3660 TEST_c_c (casin, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L);
3661 TEST_c_c (casin, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L);
3662 TEST_c_c (casin, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L);
3663 TEST_c_c (casin, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L);
3664 TEST_c_c (casin, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L);
3665 TEST_c_c (casin, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L);
3666 TEST_c_c (casin, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L);
3667#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3668 TEST_c_c (casin, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L);
3669 TEST_c_c (casin, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L);
3670 TEST_c_c (casin, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L);
3671 TEST_c_c (casin, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L);
3672 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L);
3673 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L);
3674 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L);
3675 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L);
3676 TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION);
3677 TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION);
3678 TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION);
3679 TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION);
3680 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L);
3681 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L);
3682 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L);
3683 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L);
3684 TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L);
3685 TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L);
3686 TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L);
3687 TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L);
3688 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L, 0.0L);
3689 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L, 0.0L);
3690 TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L, -0.0L);
3691 TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L, -0.0L);
3692#endif
3693 TEST_c_c (casin, 0x1p-112L, 0.5L, 1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L);
3694 TEST_c_c (casin, 0x1p-112L, -0.5L, 1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L);
3695 TEST_c_c (casin, -0x1p-112L, 0.5L, -1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L);
3696 TEST_c_c (casin, -0x1p-112L, -0.5L, -1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L);
3697 TEST_c_c (casin, 0.5L, 0x1p-112L, 5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L);
3698 TEST_c_c (casin, -0.5L, 0x1p-112L, -5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L);
3699 TEST_c_c (casin, 0.5L, -0x1p-112L, 5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L);
3700 TEST_c_c (casin, -0.5L, -0x1p-112L, -5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L);
3701 TEST_c_c (casin, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L);
3702 TEST_c_c (casin, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L);
3703 TEST_c_c (casin, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L);
3704 TEST_c_c (casin, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L);
3705#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3706 TEST_c_c (casin, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION);
3707 TEST_c_c (casin, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION);
3708 TEST_c_c (casin, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION);
3709 TEST_c_c (casin, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION);
3710 TEST_c_c (casin, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
3711 TEST_c_c (casin, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
3712 TEST_c_c (casin, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
3713 TEST_c_c (casin, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
3714#endif
3715 TEST_c_c (casin, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L);
3716 TEST_c_c (casin, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L);
3717 TEST_c_c (casin, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L);
3718 TEST_c_c (casin, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L);
3719 TEST_c_c (casin, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L);
3720 TEST_c_c (casin, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L);
3721 TEST_c_c (casin, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L);
3722 TEST_c_c (casin, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L);
3723
2550dfe9 3724 TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L);
33e885db 3725 TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L);
8847214f 3726
6815fabc 3727 END (casin, complex);
8847214f
UD
3728}
3729
3730
3731static void
3732casinh_test (void)
3733{
aaca11d8 3734 errno = 0;
3c6cad26 3735 FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
3736 if (errno == ENOSYS)
3737 /* Function not implemented. */
3738 return;
3739
8847214f
UD
3740 START (casinh);
3741
3742 TEST_c_c (casinh, 0, 0, 0.0, 0.0);
3743 TEST_c_c (casinh, minus_zero, 0, minus_zero, 0);
3744 TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero);
3745 TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero);
3746
3747 TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l);
3748 TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l);
3749 TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l);
3750 TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l);
3751
3752 TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l);
3753 TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l);
3754 TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l);
3755 TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l);
3756 TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l);
3757 TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l);
3c6cad26
UD
3758 TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l);
3759 TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l);
8847214f
UD
3760
3761 TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0);
3762 TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero);
3763 TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0);
3764 TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero);
3765
3766 TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0);
3767 TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero);
3768 TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0);
3769 TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero);
3770
67e971f1
TS
3771 TEST_c_c (casinh, plus_infty, qnan_value, plus_infty, qnan_value);
3772 TEST_c_c (casinh, minus_infty, qnan_value, minus_infty, qnan_value);
8847214f 3773
67e971f1
TS
3774 TEST_c_c (casinh, qnan_value, 0, qnan_value, 0.0);
3775 TEST_c_c (casinh, qnan_value, minus_zero, qnan_value, minus_zero);
8847214f 3776
67e971f1
TS
3777 TEST_c_c (casinh, qnan_value, plus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN);
3778 TEST_c_c (casinh, qnan_value, minus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN);
8847214f 3779
67e971f1
TS
3780 TEST_c_c (casinh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
3781 TEST_c_c (casinh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 3782
67e971f1
TS
3783 TEST_c_c (casinh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
3784 TEST_c_c (casinh, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 3785
67e971f1 3786 TEST_c_c (casinh, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 3787
d1d3431a
JM
3788 TEST_c_c (casinh, plus_zero, -1.5L, 0.9624236501192068949955178268487368462704L, -M_PI_2l);
3789 TEST_c_c (casinh, minus_zero, -1.5L, -0.9624236501192068949955178268487368462704L, -M_PI_2l);
3790 TEST_c_c (casinh, plus_zero, -1.0L, plus_zero, -M_PI_2l);
3791 TEST_c_c (casinh, minus_zero, -1.0L, minus_zero, -M_PI_2l);
3792 TEST_c_c (casinh, plus_zero, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L);
3793 TEST_c_c (casinh, minus_zero, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L);
3794 TEST_c_c (casinh, plus_zero, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L);
3795 TEST_c_c (casinh, minus_zero, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L);
3796 TEST_c_c (casinh, plus_zero, 1.0L, plus_zero, M_PI_2l);
3797 TEST_c_c (casinh, minus_zero, 1.0L, minus_zero, M_PI_2l);
3798 TEST_c_c (casinh, plus_zero, 1.5L, 0.9624236501192068949955178268487368462704L, M_PI_2l);
3799 TEST_c_c (casinh, minus_zero, 1.5L, -0.9624236501192068949955178268487368462704L, M_PI_2l);
3800
3801 TEST_c_c (casinh, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L, plus_zero);
3802 TEST_c_c (casinh, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L, minus_zero);
3803 TEST_c_c (casinh, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L, plus_zero);
3804 TEST_c_c (casinh, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L, minus_zero);
3805 TEST_c_c (casinh, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L, plus_zero);
3806 TEST_c_c (casinh, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L, minus_zero);
3807 TEST_c_c (casinh, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L, plus_zero);
3808 TEST_c_c (casinh, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L, minus_zero);
3809 TEST_c_c (casinh, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L, plus_zero);
3810 TEST_c_c (casinh, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L, minus_zero);
3811 TEST_c_c (casinh, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L, plus_zero);
3812 TEST_c_c (casinh, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L, minus_zero);
3813
cdc1c96f
JM
3814 TEST_c_c (casinh, 0x1p50L, 1.0L, 3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L);
3815 TEST_c_c (casinh, 0x1p50L, -1.0L, 3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L);
3816 TEST_c_c (casinh, -0x1p50L, 1.0L, -3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L);
3817 TEST_c_c (casinh, -0x1p50L, -1.0L, -3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L);
3818 TEST_c_c (casinh, 1.0L, 0x1p50L, 3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L);
3819 TEST_c_c (casinh, -1.0L, 0x1p50L, -3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L);
3820 TEST_c_c (casinh, 1.0L, -0x1p50L, 3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L);
3821 TEST_c_c (casinh, -1.0L, -0x1p50L, -3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L);
3822#ifndef TEST_FLOAT
3823 TEST_c_c (casinh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L);
3824 TEST_c_c (casinh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L);
3825 TEST_c_c (casinh, -0x1p500L, 1.0L, -3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L);
3826 TEST_c_c (casinh, -0x1p500L, -1.0L, -3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L);
3827 TEST_c_c (casinh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L);
3828 TEST_c_c (casinh, -1.0L, 0x1p500L, -3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L);
3829 TEST_c_c (casinh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L);
3830 TEST_c_c (casinh, -1.0L, -0x1p500L, -3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L);
3831#endif
3832#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3833 TEST_c_c (casinh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L);
3834 TEST_c_c (casinh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L);
3835 TEST_c_c (casinh, -0x1p5000L, 1.0L, -3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L);
3836 TEST_c_c (casinh, -0x1p5000L, -1.0L, -3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L);
3837 TEST_c_c (casinh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L);
3838 TEST_c_c (casinh, -1.0L, 0x1p5000L, -3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L);
3839 TEST_c_c (casinh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L);
3840 TEST_c_c (casinh, -1.0L, -0x1p5000L, -3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L);
3841#endif
3842
a9708fed
JM
3843 TEST_c_c (casinh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L);
3844#ifndef TEST_FLOAT
3845 TEST_c_c (casinh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L);
3846#endif
3847#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3848 TEST_c_c (casinh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L);
3849#endif
3850
8cf28c5e
JM
3851 TEST_c_c (casinh, 0x1.fp-129L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L);
3852 TEST_c_c (casinh, 0x1.fp-129L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L);
3853 TEST_c_c (casinh, -0x1.fp-129L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L);
3854 TEST_c_c (casinh, -0x1.fp-129L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L);
3855 TEST_c_c (casinh, 1.5L, 0x1.fp-129L, 1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3856 TEST_c_c (casinh, -1.5L, 0x1.fp-129L, -1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3857 TEST_c_c (casinh, 1.5L, -0x1.fp-129L, 1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3858 TEST_c_c (casinh, -1.5L, -0x1.fp-129L, -1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3859#ifndef TEST_FLOAT
3860 TEST_c_c (casinh, 0x1.fp-1025L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L);
3861 TEST_c_c (casinh, 0x1.fp-1025L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L);
3862 TEST_c_c (casinh, -0x1.fp-1025L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L);
3863 TEST_c_c (casinh, -0x1.fp-1025L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L);
3864 TEST_c_c (casinh, 1.5L, 0x1.fp-1025L, 1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3865 TEST_c_c (casinh, -1.5L, 0x1.fp-1025L, -1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3866 TEST_c_c (casinh, 1.5L, -0x1.fp-1025L, 1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3867 TEST_c_c (casinh, -1.5L, -0x1.fp-1025L, -1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3868#endif
3869#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3870 TEST_c_c (casinh, 0x1.fp-16385L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L);
3871 TEST_c_c (casinh, 0x1.fp-16385L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L);
3872 TEST_c_c (casinh, -0x1.fp-16385L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L);
3873 TEST_c_c (casinh, -0x1.fp-16385L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L);
3874 TEST_c_c (casinh, 1.5L, 0x1.fp-16385L, 1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION);
3875 TEST_c_c (casinh, -1.5L, 0x1.fp-16385L, -1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION);
3876 TEST_c_c (casinh, 1.5L, -0x1.fp-16385L, 1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION);
3877 TEST_c_c (casinh, -1.5L, -0x1.fp-16385L, -1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION);
3878#endif
3879
0a1b2ae6
JM
3880 TEST_c_c (casinh, 0.5L, 1.0L, 7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L);
3881 TEST_c_c (casinh, 0.5L, -1.0L, 7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L);
3882 TEST_c_c (casinh, -0.5L, 1.0L, -7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L);
3883 TEST_c_c (casinh, -0.5L, -1.0L, -7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L);
3884 TEST_c_c (casinh, 1.0L, 0.5L, 9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L);
3885 TEST_c_c (casinh, -1.0L, 0.5L, -9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L);
3886 TEST_c_c (casinh, 1.0L, -0.5L, 9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L);
3887 TEST_c_c (casinh, -1.0L, -0.5L, -9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L);
3888 TEST_c_c (casinh, 0.25L, 1.0L, 5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L);
3889 TEST_c_c (casinh, 0.25L, -1.0L, 5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L);
3890 TEST_c_c (casinh, -0.25L, 1.0L, -5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L);
3891 TEST_c_c (casinh, -0.25L, -1.0L, -5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L);
3892 TEST_c_c (casinh, 1.0L, 0.25L, 8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L);
3893 TEST_c_c (casinh, -1.0L, 0.25L, -8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L);
3894 TEST_c_c (casinh, 1.0L, -0.25L, 8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L);
3895 TEST_c_c (casinh, -1.0L, -0.25L, -8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L);
3896 TEST_c_c (casinh, 0x1.fp-10L, 1.0L, 4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L);
3897 TEST_c_c (casinh, 0x1.fp-10L, -1.0L, 4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L);
3898 TEST_c_c (casinh, -0x1.fp-10L, 1.0L, -4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L);
3899 TEST_c_c (casinh, -0x1.fp-10L, -1.0L, -4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L);
3900 TEST_c_c (casinh, 1.0L, 0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L);
3901 TEST_c_c (casinh, -1.0L, 0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L);
3902 TEST_c_c (casinh, 1.0L, -0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L);
3903 TEST_c_c (casinh, -1.0L, -0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L);
3904 TEST_c_c (casinh, 0x1.fp-30L, 1.0L, 4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L);
3905 TEST_c_c (casinh, 0x1.fp-30L, -1.0L, 4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L);
3906 TEST_c_c (casinh, -0x1.fp-30L, 1.0L, -4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L);
3907 TEST_c_c (casinh, -0x1.fp-30L, -1.0L, -4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L);
3908 TEST_c_c (casinh, 1.0L, 0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L);
3909 TEST_c_c (casinh, -1.0L, 0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L);
3910 TEST_c_c (casinh, 1.0L, -0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L);
3911 TEST_c_c (casinh, -1.0L, -0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L);
3912 TEST_c_c (casinh, 0x1.fp-100L, 1.0L, 1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L);
3913 TEST_c_c (casinh, 0x1.fp-100L, -1.0L, 1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L);
3914 TEST_c_c (casinh, -0x1.fp-100L, 1.0L, -1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L);
3915 TEST_c_c (casinh, -0x1.fp-100L, -1.0L, -1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L);
3916 TEST_c_c (casinh, 1.0L, 0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L);
3917 TEST_c_c (casinh, -1.0L, 0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L);
3918 TEST_c_c (casinh, 1.0L, -0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L);
3919 TEST_c_c (casinh, -1.0L, -0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L);
3920 TEST_c_c (casinh, 0x1.fp-129L, 1.0L, 5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L);
3921 TEST_c_c (casinh, 0x1.fp-129L, -1.0L, 5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L);
3922 TEST_c_c (casinh, -0x1.fp-129L, 1.0L, -5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L);
3923 TEST_c_c (casinh, -0x1.fp-129L, -1.0L, -5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L);
3924 TEST_c_c (casinh, 1.0L, 0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3925 TEST_c_c (casinh, -1.0L, 0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3926 TEST_c_c (casinh, 1.0L, -0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3927 TEST_c_c (casinh, -1.0L, -0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3928#ifndef TEST_FLOAT
3929 TEST_c_c (casinh, 0x1.fp-1000L, 1.0L, 4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L);
3930 TEST_c_c (casinh, 0x1.fp-1000L, -1.0L, 4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L);
3931 TEST_c_c (casinh, -0x1.fp-1000L, 1.0L, -4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L);
3932 TEST_c_c (casinh, -0x1.fp-1000L, -1.0L, -4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L);
3933 TEST_c_c (casinh, 1.0L, 0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3934 TEST_c_c (casinh, -1.0L, 0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3935 TEST_c_c (casinh, 1.0L, -0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3936 TEST_c_c (casinh, -1.0L, -0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
3937 TEST_c_c (casinh, 0x1.fp-1025L, 1.0L, 7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L);
3938 TEST_c_c (casinh, 0x1.fp-1025L, -1.0L, 7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L);
3939 TEST_c_c (casinh, -0x1.fp-1025L, 1.0L, -7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L);
3940 TEST_c_c (casinh, -0x1.fp-1025L, -1.0L, -7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L);
3941 TEST_c_c (casinh, 1.0L, 0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3942 TEST_c_c (casinh, -1.0L, 0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3943 TEST_c_c (casinh, 1.0L, -0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3944 TEST_c_c (casinh, -1.0L, -0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
3945#endif
3946#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3947 TEST_c_c (casinh, 0x1.fp-10000L, 1.0L, 9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L);
3948 TEST_c_c (casinh, 0x1.fp-10000L, -1.0L, 9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L);
3949 TEST_c_c (casinh, -0x1.fp-10000L, 1.0L, -9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L);
3950 TEST_c_c (casinh, -0x1.fp-10000L, -1.0L, -9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L);
3951 TEST_c_c (casinh, 1.0L, 0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L);
3952 TEST_c_c (casinh, -1.0L, 0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L);
3953 TEST_c_c (casinh, 1.0L, -0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L);
3954 TEST_c_c (casinh, -1.0L, -0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L);
3955 TEST_c_c (casinh, 0x1.fp-16385L, 1.0L, 9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L);
3956 TEST_c_c (casinh, 0x1.fp-16385L, -1.0L, 9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L);
3957 TEST_c_c (casinh, -0x1.fp-16385L, 1.0L, -9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L);
3958 TEST_c_c (casinh, -0x1.fp-16385L, -1.0L, -9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L);
3959 TEST_c_c (casinh, 1.0L, 0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION);
3960 TEST_c_c (casinh, -1.0L, 0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION);
3961 TEST_c_c (casinh, 1.0L, -0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION);
3962 TEST_c_c (casinh, -1.0L, -0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION);
3963#endif
3964
4d14f449
JM
3965 TEST_c_c (casinh, 0x1p-23L, 0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L);
3966 TEST_c_c (casinh, 0x1p-23L, -0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L);
3967 TEST_c_c (casinh, -0x1p-23L, 0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L);
3968 TEST_c_c (casinh, -0x1p-23L, -0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L);
3969 TEST_c_c (casinh, 0x1.000002p0L, 0x1p-23L, 8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L);
3970 TEST_c_c (casinh, -0x1.000002p0L, 0x1p-23L, -8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L);
3971 TEST_c_c (casinh, 0x1.000002p0L, -0x1p-23L, 8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L);
3972 TEST_c_c (casinh, -0x1.000002p0L, -0x1p-23L, -8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L);
3973 TEST_c_c (casinh, 0x1.fp-129L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L);
3974 TEST_c_c (casinh, 0x1.fp-129L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L);
3975 TEST_c_c (casinh, -0x1.fp-129L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L);
3976 TEST_c_c (casinh, -0x1.fp-129L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L);
3977 TEST_c_c (casinh, 0x1.000002p0L, 0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3978 TEST_c_c (casinh, -0x1.000002p0L, 0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3979 TEST_c_c (casinh, 0x1.000002p0L, -0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3980 TEST_c_c (casinh, -0x1.000002p0L, -0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT);
3981 TEST_c_c (casinh, 0.0L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L);
3982 TEST_c_c (casinh, 0.0L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L);
3983 TEST_c_c (casinh, -0.0L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L);
3984 TEST_c_c (casinh, -0.0L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L);
3985 TEST_c_c (casinh, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L, 0.0L);
3986 TEST_c_c (casinh, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L, 0.0L);
3987 TEST_c_c (casinh, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L, -0.0L);
3988 TEST_c_c (casinh, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L, -0.0L);
3a7182a1 3989#ifndef TEST_FLOAT
4d14f449
JM
3990 TEST_c_c (casinh, 0x1p-52L, 0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L);
3991 TEST_c_c (casinh, 0x1p-52L, -0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L);
3992 TEST_c_c (casinh, -0x1p-52L, 0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L);
3993 TEST_c_c (casinh, -0x1p-52L, -0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L);
3994 TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1p-52L, 8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L);
3995 TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1p-52L, -8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L);
3996 TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1p-52L, 8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L);
3997 TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1p-52L, -8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L);
3998 TEST_c_c (casinh, 0x1.fp-1025L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L);
3999 TEST_c_c (casinh, 0x1.fp-1025L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L);
4000 TEST_c_c (casinh, -0x1.fp-1025L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L);
4001 TEST_c_c (casinh, -0x1.fp-1025L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L);
4002 TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4003 TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4004 TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4005 TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4006 TEST_c_c (casinh, 0.0L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L);
4007 TEST_c_c (casinh, 0.0L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L);
4008 TEST_c_c (casinh, -0.0L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L);
4009 TEST_c_c (casinh, -0.0L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L);
4010 TEST_c_c (casinh, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L, 0.0L);
4011 TEST_c_c (casinh, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L, 0.0L);
4012 TEST_c_c (casinh, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L, -0.0L);
4013 TEST_c_c (casinh, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L, -0.0L);
3a7182a1
JM
4014#endif
4015#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4d14f449
JM
4016 TEST_c_c (casinh, 0x1p-63L, 0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L);
4017 TEST_c_c (casinh, 0x1p-63L, -0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L);
4018 TEST_c_c (casinh, -0x1p-63L, 0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L);
4019 TEST_c_c (casinh, -0x1p-63L, -0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L);
4020 TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1p-63L, 8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L);
4021 TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1p-63L, -8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L);
4022 TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1p-63L, 8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L);
4023 TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1p-63L, -8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L);
3a7182a1 4024# if LDBL_MIN_EXP <= -16381
4d14f449
JM
4025 TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L);
4026 TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L);
4027 TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L);
4028 TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L);
4029 TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION);
4030 TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION);
4031 TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION);
4032 TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION);
3a7182a1 4033# endif
4d14f449
JM
4034 TEST_c_c (casinh, 0.0L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L);
4035 TEST_c_c (casinh, 0.0L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L);
4036 TEST_c_c (casinh, -0.0L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L);
4037 TEST_c_c (casinh, -0.0L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L);
4038 TEST_c_c (casinh, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L, 0.0L);
4039 TEST_c_c (casinh, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L, 0.0L);
4040 TEST_c_c (casinh, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L, -0.0L);
4041 TEST_c_c (casinh, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L, -0.0L);
3a7182a1
JM
4042#endif
4043#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4d14f449
JM
4044 TEST_c_c (casinh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L);
4045 TEST_c_c (casinh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L);
4046 TEST_c_c (casinh, -0x1p-106L, 0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L);
4047 TEST_c_c (casinh, -0x1p-106L, -0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L);
4048 TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L);
4049 TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1p-106L, -8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L);
4050 TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L);
4051 TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1p-106L, -8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L);
4052 TEST_c_c (casinh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L);
4053 TEST_c_c (casinh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L);
4054 TEST_c_c (casinh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L);
4055 TEST_c_c (casinh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L);
4056 TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4057 TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4058 TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4059 TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4060 TEST_c_c (casinh, 0.0L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L);
4061 TEST_c_c (casinh, 0.0L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L);
4062 TEST_c_c (casinh, -0.0L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L);
4063 TEST_c_c (casinh, -0.0L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L);
4064 TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L, 0.0L);
4065 TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L, 0.0L);
4066 TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L, -0.0L);
4067 TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L, -0.0L);
3a7182a1
JM
4068#endif
4069#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4d14f449
JM
4070 TEST_c_c (casinh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L);
4071 TEST_c_c (casinh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L);
4072 TEST_c_c (casinh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L);
4073 TEST_c_c (casinh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L);
4074 TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L);
4075 TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L);
4076 TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L);
4077 TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L);
4078 TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L);
4079 TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L);
4080 TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L);
4081 TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L);
4082 TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION);
4083 TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION);
4084 TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION);
4085 TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION);
4086 TEST_c_c (casinh, 0.0L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L);
4087 TEST_c_c (casinh, 0.0L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L);
4088 TEST_c_c (casinh, -0.0L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L);
4089 TEST_c_c (casinh, -0.0L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L);
4090 TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L, 0.0L);
4091 TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L, 0.0L);
4092 TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L, -0.0L);
4093 TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L, -0.0L);
3a7182a1
JM
4094#endif
4095
ccc8cadf
JM
4096 TEST_c_c (casinh, 0x1p-23L, 0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L);
4097 TEST_c_c (casinh, 0x1p-23L, -0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L);
4098 TEST_c_c (casinh, -0x1p-23L, 0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L);
4099 TEST_c_c (casinh, -0x1p-23L, -0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L);
4100 TEST_c_c (casinh, 0x0.ffffffp0L, 0x1p-23L, 8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L);
4101 TEST_c_c (casinh, -0x0.ffffffp0L, 0x1p-23L, -8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L);
4102 TEST_c_c (casinh, 0x0.ffffffp0L, -0x1p-23L, 8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L);
4103 TEST_c_c (casinh, -0x0.ffffffp0L, -0x1p-23L, -8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L);
4104 TEST_c_c (casinh, 0x1.fp-129L, 0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L);
4105 TEST_c_c (casinh, 0x1.fp-129L, -0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L);
4106 TEST_c_c (casinh, -0x1.fp-129L, 0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L);
4107 TEST_c_c (casinh, -0x1.fp-129L, -0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L);
4108 TEST_c_c (casinh, 0x0.ffffffp0L, 0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4109 TEST_c_c (casinh, -0x0.ffffffp0L, 0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4110 TEST_c_c (casinh, 0x0.ffffffp0L, -0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4111 TEST_c_c (casinh, -0x0.ffffffp0L, -0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4112 TEST_c_c (casinh, 0.0L, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L);
4113 TEST_c_c (casinh, 0.0L, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L);
4114 TEST_c_c (casinh, -0.0L, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L);
4115 TEST_c_c (casinh, -0.0L, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L);
4116 TEST_c_c (casinh, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L, 0.0L);
4117 TEST_c_c (casinh, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L, 0.0L);
4118 TEST_c_c (casinh, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L, -0.0L);
4119 TEST_c_c (casinh, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L, -0.0L);
4120 TEST_c_c (casinh, 0x1p-23L, 0.5L, 1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L);
4121 TEST_c_c (casinh, 0x1p-23L, -0.5L, 1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L);
4122 TEST_c_c (casinh, -0x1p-23L, 0.5L, -1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L);
4123 TEST_c_c (casinh, -0x1p-23L, -0.5L, -1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L);
4124 TEST_c_c (casinh, 0.5L, 0x1p-23L, 4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L);
4125 TEST_c_c (casinh, -0.5L, 0x1p-23L, -4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L);
4126 TEST_c_c (casinh, 0.5L, -0x1p-23L, 4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L);
4127 TEST_c_c (casinh, -0.5L, -0x1p-23L, -4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L);
4128 TEST_c_c (casinh, 0x1.fp-129L, 0.5L, 3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT);
4129 TEST_c_c (casinh, 0x1.fp-129L, -0.5L, 3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT);
4130 TEST_c_c (casinh, -0x1.fp-129L, 0.5L, -3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT);
4131 TEST_c_c (casinh, -0x1.fp-129L, -0.5L, -3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT);
4132 TEST_c_c (casinh, 0.5L, 0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4133 TEST_c_c (casinh, -0.5L, 0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4134 TEST_c_c (casinh, 0.5L, -0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4135 TEST_c_c (casinh, -0.5L, -0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4136 TEST_c_c (casinh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L);
4137 TEST_c_c (casinh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L);
4138 TEST_c_c (casinh, -0x1p-23L, 0x1p-23L, -1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L);
4139 TEST_c_c (casinh, -0x1p-23L, -0x1p-23L, -1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L);
4140 TEST_c_c (casinh, 0x1.fp-129L, 0x1p-23L, 2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT);
4141 TEST_c_c (casinh, 0x1.fp-129L, -0x1p-23L, 2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT);
4142 TEST_c_c (casinh, -0x1.fp-129L, 0x1p-23L, -2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT);
4143 TEST_c_c (casinh, -0x1.fp-129L, -0x1p-23L, -2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT);
4144 /* Bug 15319: underflow exception may be missing. */
4145 TEST_c_c (casinh, 0x1p-23L, 0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT);
4146 TEST_c_c (casinh, -0x1p-23L, 0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT);
4147 TEST_c_c (casinh, 0x1p-23L, -0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT);
4148 TEST_c_c (casinh, -0x1p-23L, -0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT);
4149 TEST_c_c (casinh, 0.0L, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L);
4150 TEST_c_c (casinh, 0.0L, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L);
4151 TEST_c_c (casinh, -0.0L, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L);
4152 TEST_c_c (casinh, -0.0L, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L);
4153 TEST_c_c (casinh, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L, 0.0L);
4154 TEST_c_c (casinh, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L, 0.0L);
4155 TEST_c_c (casinh, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L, -0.0L);
4156 TEST_c_c (casinh, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L, -0.0L);
4157 TEST_c_c (casinh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4158 TEST_c_c (casinh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4159 TEST_c_c (casinh, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4160 TEST_c_c (casinh, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4161#ifndef TEST_FLOAT
4162 TEST_c_c (casinh, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L);
4163 TEST_c_c (casinh, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L);
4164 TEST_c_c (casinh, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L);
4165 TEST_c_c (casinh, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L);
4166 TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1p-52L, 8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L);
4167 TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1p-52L, -8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L);
4168 TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1p-52L, 8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L);
4169 TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1p-52L, -8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L);
4170 TEST_c_c (casinh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4171 TEST_c_c (casinh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4172 TEST_c_c (casinh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4173 TEST_c_c (casinh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4174 TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4175 TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4176 TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4177 TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4178 TEST_c_c (casinh, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L);
4179 TEST_c_c (casinh, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L);
4180 TEST_c_c (casinh, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L);
4181 TEST_c_c (casinh, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L);
4182 TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L, 0.0L);
4183 TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L, 0.0L);
4184 TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L, -0.0L);
4185 TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L, -0.0L);
4186#endif
4187 TEST_c_c (casinh, 0x1p-52L, 0.5L, 2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L);
4188 TEST_c_c (casinh, 0x1p-52L, -0.5L, 2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L);
4189 TEST_c_c (casinh, -0x1p-52L, 0.5L, -2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L);
4190 TEST_c_c (casinh, -0x1p-52L, -0.5L, -2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L);
4191 TEST_c_c (casinh, 0.5L, 0x1p-52L, 4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L);
4192 TEST_c_c (casinh, -0.5L, 0x1p-52L, -4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L);
4193 TEST_c_c (casinh, 0.5L, -0x1p-52L, 4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L);
4194 TEST_c_c (casinh, -0.5L, -0x1p-52L, -4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L);
4195#ifndef TEST_FLOAT
4196 TEST_c_c (casinh, 0x1.fp-1025L, 0.5L, 6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
4197 TEST_c_c (casinh, 0x1.fp-1025L, -0.5L, 6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
4198 TEST_c_c (casinh, -0x1.fp-1025L, 0.5L, -6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
4199 TEST_c_c (casinh, -0x1.fp-1025L, -0.5L, -6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
4200 TEST_c_c (casinh, 0.5L, 0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4201 TEST_c_c (casinh, -0.5L, 0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4202 TEST_c_c (casinh, 0.5L, -0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4203 TEST_c_c (casinh, -0.5L, -0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4204#endif
4205 TEST_c_c (casinh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L);
4206 TEST_c_c (casinh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L);
4207 TEST_c_c (casinh, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L);
4208 TEST_c_c (casinh, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L);
4209#ifndef TEST_FLOAT
4210 TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE);
4211 TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE);
4212 TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE);
4213 TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE);
4214 /* Bug 15319: underflow exception may be missing. */
4215 TEST_c_c (casinh, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
4216 TEST_c_c (casinh, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
4217 TEST_c_c (casinh, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
4218 TEST_c_c (casinh, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
4219#endif
4220 TEST_c_c (casinh, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L);
4221 TEST_c_c (casinh, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L);
4222 TEST_c_c (casinh, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L);
4223 TEST_c_c (casinh, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L);
4224 TEST_c_c (casinh, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L, 0.0L);
4225 TEST_c_c (casinh, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L, 0.0L);
4226 TEST_c_c (casinh, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L, -0.0L);
4227 TEST_c_c (casinh, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L, -0.0L);
4228#ifndef TEST_FLOAT
4229 TEST_c_c (casinh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4230 TEST_c_c (casinh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4231 TEST_c_c (casinh, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4232 TEST_c_c (casinh, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4233#endif
4234#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4235 TEST_c_c (casinh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L);
4236 TEST_c_c (casinh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L);
4237 TEST_c_c (casinh, -0x1p-63L, 0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L);
4238 TEST_c_c (casinh, -0x1p-63L, -0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L);
4239 TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L);
4240 TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1p-63L, -8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L);
4241 TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L);
4242 TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1p-63L, -8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L);
4243# if LDBL_MIN_EXP <= -16381
4244 TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L);
4245 TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L);
4246 TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L);
4247 TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L);
4248 TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION);
4249 TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION);
4250 TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION);
4251 TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION);
4252# endif
4253 TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L);
4254 TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L);
4255 TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L);
4256 TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L);
4257 TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L, 0.0L);
4258 TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L, 0.0L);
4259 TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L, -0.0L);
4260 TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L, -0.0L);
4261#endif
4262 TEST_c_c (casinh, 0x1p-63L, 0.5L, 1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L);
4263 TEST_c_c (casinh, 0x1p-63L, -0.5L, 1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L);
4264 TEST_c_c (casinh, -0x1p-63L, 0.5L, -1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L);
4265 TEST_c_c (casinh, -0x1p-63L, -0.5L, -1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L);
4266 TEST_c_c (casinh, 0.5L, 0x1p-63L, 4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L);
4267 TEST_c_c (casinh, -0.5L, 0x1p-63L, -4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L);
4268 TEST_c_c (casinh, 0.5L, -0x1p-63L, 4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L);
4269 TEST_c_c (casinh, -0.5L, -0x1p-63L, -4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L);
4270#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4271 TEST_c_c (casinh, 0x1.fp-16385L, 0.5L, 9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION);
4272 TEST_c_c (casinh, 0x1.fp-16385L, -0.5L, 9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION);
4273 TEST_c_c (casinh, -0x1.fp-16385L, 0.5L, -9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION);
4274 TEST_c_c (casinh, -0x1.fp-16385L, -0.5L, -9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION);
4275 TEST_c_c (casinh, 0.5L, 0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION);
4276 TEST_c_c (casinh, -0.5L, 0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION);
4277 TEST_c_c (casinh, 0.5L, -0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION);
4278 TEST_c_c (casinh, -0.5L, -0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION);
4279#endif
4280 TEST_c_c (casinh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L);
4281 TEST_c_c (casinh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L);
4282 TEST_c_c (casinh, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L);
4283 TEST_c_c (casinh, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L);
4284#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4285 TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION);
4286 TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION);
4287 TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION);
4288 TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION);
4289 TEST_c_c (casinh, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION);
4290 TEST_c_c (casinh, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION);
4291 TEST_c_c (casinh, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION);
4292 TEST_c_c (casinh, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION);
4293#endif
4294 TEST_c_c (casinh, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L);
4295 TEST_c_c (casinh, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L);
4296 TEST_c_c (casinh, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L);
4297 TEST_c_c (casinh, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L);
4298 TEST_c_c (casinh, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L, 0.0L);
4299 TEST_c_c (casinh, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L, 0.0L);
4300 TEST_c_c (casinh, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L, -0.0L);
4301 TEST_c_c (casinh, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L, -0.0L);
4302#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4303 TEST_c_c (casinh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
4304 TEST_c_c (casinh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
4305 TEST_c_c (casinh, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
4306 TEST_c_c (casinh, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
4307#endif
4308#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4309 TEST_c_c (casinh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L);
4310 TEST_c_c (casinh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L);
4311 TEST_c_c (casinh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L);
4312 TEST_c_c (casinh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L);
4313 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L);
4314 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L);
4315 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L);
4316 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L);
4317 TEST_c_c (casinh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4318 TEST_c_c (casinh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4319 TEST_c_c (casinh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4320 TEST_c_c (casinh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4321 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4322 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4323 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4324 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4325 TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L);
4326 TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L);
4327 TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L);
4328 TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L);
4329 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L, 0.0L);
4330 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L, 0.0L);
4331 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L, -0.0L);
4332 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L, -0.0L);
4333#endif
4334 TEST_c_c (casinh, 0x1p-105L, 0.5L, 2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L);
4335 TEST_c_c (casinh, 0x1p-105L, -0.5L, 2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L);
4336 TEST_c_c (casinh, -0x1p-105L, 0.5L, -2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L);
4337 TEST_c_c (casinh, -0x1p-105L, -0.5L, -2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L);
4338 TEST_c_c (casinh, 0.5L, 0x1p-105L, 4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L);
4339 TEST_c_c (casinh, -0.5L, 0x1p-105L, -4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L);
4340 TEST_c_c (casinh, 0.5L, -0x1p-105L, 4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L);
4341 TEST_c_c (casinh, -0.5L, -0x1p-105L, -4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L);
4342 TEST_c_c (casinh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L);
4343 TEST_c_c (casinh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L);
4344 TEST_c_c (casinh, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L);
4345 TEST_c_c (casinh, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L);
4346#ifndef TEST_FLOAT
4347 TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE);
4348 TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE);
4349 TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE);
4350 TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE);
4351 /* Bug 15319: underflow exception may be missing. */
4352 TEST_c_c (casinh, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
4353 TEST_c_c (casinh, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
4354 TEST_c_c (casinh, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
4355 TEST_c_c (casinh, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE);
4356#endif
4357 TEST_c_c (casinh, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L);
4358 TEST_c_c (casinh, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L);
4359 TEST_c_c (casinh, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L);
4360 TEST_c_c (casinh, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L);
4361 TEST_c_c (casinh, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L);
4362 TEST_c_c (casinh, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L);
4363 TEST_c_c (casinh, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L);
4364 TEST_c_c (casinh, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L);
4365#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4366 TEST_c_c (casinh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L);
4367 TEST_c_c (casinh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L);
4368 TEST_c_c (casinh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L);
4369 TEST_c_c (casinh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L);
4370 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L);
4371 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L);
4372 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L);
4373 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L);
4374 TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L);
4375 TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L);
4376 TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L);
4377 TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L);
4378 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION);
4379 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION);
4380 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION);
4381 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION);
4382 TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L);
4383 TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L);
4384 TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L);
4385 TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L);
4386 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L, 0.0L);
4387 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L, 0.0L);
4388 TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L, -0.0L);
4389 TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L, -0.0L);
4390#endif
4391 TEST_c_c (casinh, 0x1p-112L, 0.5L, 2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L);
4392 TEST_c_c (casinh, 0x1p-112L, -0.5L, 2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L);
4393 TEST_c_c (casinh, -0x1p-112L, 0.5L, -2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L);
4394 TEST_c_c (casinh, -0x1p-112L, -0.5L, -2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L);
4395 TEST_c_c (casinh, 0.5L, 0x1p-112L, 4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L);
4396 TEST_c_c (casinh, -0.5L, 0x1p-112L, -4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L);
4397 TEST_c_c (casinh, 0.5L, -0x1p-112L, 4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L);
4398 TEST_c_c (casinh, -0.5L, -0x1p-112L, -4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L);
4399 TEST_c_c (casinh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L);
4400 TEST_c_c (casinh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L);
4401 TEST_c_c (casinh, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L);
4402 TEST_c_c (casinh, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L);
4403#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4404 TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION);
4405 TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION);
4406 TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION);
4407 TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION);
4408 TEST_c_c (casinh, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
4409 TEST_c_c (casinh, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
4410 TEST_c_c (casinh, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
4411 TEST_c_c (casinh, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION);
4412#endif
4413 TEST_c_c (casinh, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L);
4414 TEST_c_c (casinh, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L);
4415 TEST_c_c (casinh, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L);
4416 TEST_c_c (casinh, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L);
4417 TEST_c_c (casinh, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L);
4418 TEST_c_c (casinh, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L);
4419 TEST_c_c (casinh, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L);
4420 TEST_c_c (casinh, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L);
4421
2550dfe9 4422 TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L);
33e885db 4423 TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L);
8847214f 4424
6815fabc 4425 END (casinh, complex);
8847214f
UD
4426}
4427
4428
4429static void
4430catan_test (void)
4431{
aaca11d8 4432 errno = 0;
3c6cad26 4433 FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
4434 if (errno == ENOSYS)
4435 /* Function not implemented. */
4436 return;
4437
8847214f
UD
4438 START (catan);
4439
4440 TEST_c_c (catan, 0, 0, 0, 0);
4441 TEST_c_c (catan, minus_zero, 0, minus_zero, 0);
4442 TEST_c_c (catan, 0, minus_zero, 0, minus_zero);
4443 TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero);
4444
5e221800
JM
4445 TEST_c_c (catan, 1.0L, plus_zero, M_PI_4l, plus_zero);
4446 TEST_c_c (catan, 1.0L, minus_zero, M_PI_4l, minus_zero);
4447 TEST_c_c (catan, -1.0L, plus_zero, -M_PI_4l, plus_zero);
4448 TEST_c_c (catan, -1.0L, minus_zero, -M_PI_4l, minus_zero);
4449 TEST_c_c (catan, plus_zero, 1.0L, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
4450 TEST_c_c (catan, minus_zero, 1.0L, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
4451 TEST_c_c (catan, plus_zero, -1.0L, plus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
4452 TEST_c_c (catan, minus_zero, -1.0L, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
4453
8847214f
UD
4454 TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0);
4455 TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero);
4456 TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0);
4457 TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero);
4458
4459
4460 TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero);
4461 TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero);
4462 TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero);
4463 TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero);
4464 TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0);
4465 TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0);
3c6cad26
UD
4466 TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0);
4467 TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0);
8847214f
UD
4468
4469 TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero);
4470 TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero);
4471 TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero);
4472 TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero);
4473
4474 TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0);
4475 TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0);
4476 TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0);
4477 TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0);
4478
67e971f1
TS
4479 TEST_c_c (catan, qnan_value, 0.0, qnan_value, 0);
4480 TEST_c_c (catan, qnan_value, minus_zero, qnan_value, minus_zero);
8847214f 4481
67e971f1
TS
4482 TEST_c_c (catan, qnan_value, plus_infty, qnan_value, 0);
4483 TEST_c_c (catan, qnan_value, minus_infty, qnan_value, minus_zero);
8847214f 4484
67e971f1
TS
4485 TEST_c_c (catan, 0.0, qnan_value, qnan_value, qnan_value);
4486 TEST_c_c (catan, minus_zero, qnan_value, qnan_value, qnan_value);
8847214f 4487
67e971f1
TS
4488 TEST_c_c (catan, plus_infty, qnan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN);
4489 TEST_c_c (catan, minus_infty, qnan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN);
8847214f 4490
67e971f1
TS
4491 TEST_c_c (catan, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
4492 TEST_c_c (catan, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 4493
67e971f1
TS
4494 TEST_c_c (catan, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
4495 TEST_c_c (catan, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 4496
67e971f1 4497 TEST_c_c (catan, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 4498
2f38fbfe
JM
4499 TEST_c_c (catan, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L, 0.0L);
4500 TEST_c_c (catan, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L, -0.0L);
4501 TEST_c_c (catan, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L, 0.0L);
4502 TEST_c_c (catan, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L, -0.0L);
4503 TEST_c_c (catan, 0.0L, 0x1p50L, 1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L);
4504 TEST_c_c (catan, -0.0L, 0x1p50L, -1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L);
4505 TEST_c_c (catan, 0.0L, -0x1p50L, 1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L);
4506 TEST_c_c (catan, -0.0L, -0x1p50L, -1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L);
4507#ifndef TEST_FLOAT
4508 TEST_c_c (catan, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L);
4509 TEST_c_c (catan, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L);
4510 TEST_c_c (catan, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L);
4511 TEST_c_c (catan, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L);
4512 TEST_c_c (catan, 0.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L);
4513 TEST_c_c (catan, -0.0L, 0x1p500L, -1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L);
4514 TEST_c_c (catan, 0.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L);
4515 TEST_c_c (catan, -0.0L, -0x1p500L, -1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L);
4516#endif
4517#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4518 TEST_c_c (catan, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L);
4519 TEST_c_c (catan, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L);
4520 TEST_c_c (catan, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L);
4521 TEST_c_c (catan, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L);
4522 TEST_c_c (catan, 0.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L);
4523 TEST_c_c (catan, -0.0L, 0x1p5000L, -1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L);
4524 TEST_c_c (catan, 0.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L);
4525 TEST_c_c (catan, -0.0L, -0x1p5000L, -1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L);
4526#endif
9457fd95
JM
4527 TEST_c_c (catan, 0x1p63L, 0.5L, 1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4528 TEST_c_c (catan, 0x1p63L, -0.5L, 1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4529 TEST_c_c (catan, -0x1p63L, 0.5L, -1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4530 TEST_c_c (catan, -0x1p63L, -0.5L, -1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4531 TEST_c_c (catan, 0.5L, 0x1p63L, 1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L);
4532 TEST_c_c (catan, -0.5L, 0x1p63L, -1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L);
4533 TEST_c_c (catan, 0.5L, -0x1p63L, 1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L);
4534 TEST_c_c (catan, -0.5L, -0x1p63L, -1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L);
4535#ifndef TEST_FLOAT
4536 TEST_c_c (catan, 0x1p511L, 0.5L, 1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4537 TEST_c_c (catan, 0x1p511L, -0.5L, 1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4538 TEST_c_c (catan, -0x1p511L, 0.5L, -1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4539 TEST_c_c (catan, -0x1p511L, -0.5L, -1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4540 TEST_c_c (catan, 0.5L, 0x1p511L, 1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L);
4541 TEST_c_c (catan, -0.5L, 0x1p511L, -1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L);
4542 TEST_c_c (catan, 0.5L, -0x1p511L, 1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L);
4543 TEST_c_c (catan, -0.5L, -0x1p511L, -1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L);
4544#endif
4545#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4546 TEST_c_c (catan, 0x1p8191L, 0.5L, 1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION);
4547 TEST_c_c (catan, 0x1p8191L, -0.5L, 1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION);
4548 TEST_c_c (catan, -0x1p8191L, 0.5L, -1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION);
4549 TEST_c_c (catan, -0x1p8191L, -0.5L, -1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION);
4550 TEST_c_c (catan, 0.5L, 0x1p8191L, 1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L);
4551 TEST_c_c (catan, -0.5L, 0x1p8191L, -1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L);
4552 TEST_c_c (catan, 0.5L, -0x1p8191L, 1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L);
4553 TEST_c_c (catan, -0.5L, -0x1p8191L, -1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L);
4554#endif
5b4217d7
JM
4555 TEST_c_c (catan, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L, 0.0L);
4556 TEST_c_c (catan, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L, -0.0L);
4557 TEST_c_c (catan, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L, 0.0L);
4558 TEST_c_c (catan, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L, -0.0L);
4559 TEST_c_c (catan, 0.0L, 0x1p100L, 1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L);
4560 TEST_c_c (catan, -0.0L, 0x1p100L, -1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L);
4561 TEST_c_c (catan, 0.0L, -0x1p100L, 1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L);
4562 TEST_c_c (catan, -0.0L, -0x1p100L, -1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L);
4563 TEST_c_c (catan, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L, 0.0L);
4564 TEST_c_c (catan, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L, -0.0L);
4565 TEST_c_c (catan, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L, 0.0L);
4566 TEST_c_c (catan, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L, -0.0L);
4567 TEST_c_c (catan, 0.0L, 0x1.fp127L, 1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4568 TEST_c_c (catan, -0.0L, 0x1.fp127L, -1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4569 TEST_c_c (catan, 0.0L, -0x1.fp127L, 1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4570 TEST_c_c (catan, -0.0L, -0x1.fp127L, -1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4571 TEST_c_c (catan, 0x1.fp127L, 0x1.fp127L, 1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4572 TEST_c_c (catan, 0x1.fp127L, -0x1.fp127L, 1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4573 TEST_c_c (catan, -0x1.fp127L, 0x1.fp127L, -1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4574 TEST_c_c (catan, -0x1.fp127L, -0x1.fp127L, -1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4575#ifndef TEST_FLOAT
4576 TEST_c_c (catan, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L);
4577 TEST_c_c (catan, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L);
4578 TEST_c_c (catan, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L);
4579 TEST_c_c (catan, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L);
4580 TEST_c_c (catan, 0.0L, 0x1p900L, 1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L);
4581 TEST_c_c (catan, -0.0L, 0x1p900L, -1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L);
4582 TEST_c_c (catan, 0.0L, -0x1p900L, 1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L);
4583 TEST_c_c (catan, -0.0L, -0x1p900L, -1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L);
4584 TEST_c_c (catan, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L);
4585 TEST_c_c (catan, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L);
4586 TEST_c_c (catan, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L);
4587 TEST_c_c (catan, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L);
4588 TEST_c_c (catan, 0.0L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4589 TEST_c_c (catan, -0.0L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4590 TEST_c_c (catan, 0.0L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4591 TEST_c_c (catan, -0.0L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4592 TEST_c_c (catan, 0x1.fp1023L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4593 TEST_c_c (catan, 0x1.fp1023L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4594 TEST_c_c (catan, -0x1.fp1023L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4595 TEST_c_c (catan, -0x1.fp1023L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
4596#endif
4597#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4598 TEST_c_c (catan, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L);
4599 TEST_c_c (catan, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L);
4600 TEST_c_c (catan, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L);
4601 TEST_c_c (catan, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L);
4602 TEST_c_c (catan, 0.0L, 0x1p10000L, 1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L);
4603 TEST_c_c (catan, -0.0L, 0x1p10000L, -1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L);
4604 TEST_c_c (catan, 0.0L, -0x1p10000L, 1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L);
4605 TEST_c_c (catan, -0.0L, -0x1p10000L, -1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L);
4606 TEST_c_c (catan, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L);
4607 TEST_c_c (catan, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L);
4608 TEST_c_c (catan, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L);
4609 TEST_c_c (catan, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L);
4610 TEST_c_c (catan, 0.0L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION);
4611 TEST_c_c (catan, -0.0L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION);
4612 TEST_c_c (catan, 0.0L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION);
4613 TEST_c_c (catan, -0.0L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION);
4614 TEST_c_c (catan, 0x1.fp16383L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION);
4615 TEST_c_c (catan, 0x1.fp16383L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION);
4616 TEST_c_c (catan, -0x1.fp16383L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION);
4617 TEST_c_c (catan, -0x1.fp16383L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION);
4618#endif
caf84319
JM
4619 TEST_c_c (catan, 0x1p-13L, 1.0L, 7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L);
4620 TEST_c_c (catan, 0x1p-13L, -1.0L, 7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L);
4621 TEST_c_c (catan, -0x1p-13L, 1.0L, -7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L);
4622 TEST_c_c (catan, -0x1p-13L, -1.0L, -7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L);
4623 TEST_c_c (catan, 1.0L, 0x1p-13L, 7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L);
4624 TEST_c_c (catan, -1.0L, 0x1p-13L, -7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L);
4625 TEST_c_c (catan, 1.0L, -0x1p-13L, 7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L);
4626 TEST_c_c (catan, -1.0L, -0x1p-13L, -7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L);
4627 TEST_c_c (catan, 0x1p-27L, 1.0L, 7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L);
4628 TEST_c_c (catan, 0x1p-27L, -1.0L, 7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L);
4629 TEST_c_c (catan, -0x1p-27L, 1.0L, -7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L);
4630 TEST_c_c (catan, -0x1p-27L, -1.0L, -7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L);
4631 TEST_c_c (catan, 1.0L, 0x1p-27L, 7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L);
4632 TEST_c_c (catan, -1.0L, 0x1p-27L, -7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L);
4633 TEST_c_c (catan, 1.0L, -0x1p-27L, 7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L);
4634 TEST_c_c (catan, -1.0L, -0x1p-27L, -7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L);
4635 TEST_c_c (catan, 0x1p-33L, 1.0L, 7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L);
4636 TEST_c_c (catan, 0x1p-33L, -1.0L, 7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L);
4637 TEST_c_c (catan, -0x1p-33L, 1.0L, -7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L);
4638 TEST_c_c (catan, -0x1p-33L, -1.0L, -7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L);
4639 TEST_c_c (catan, 1.0L, 0x1p-33L, 7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L);
4640 TEST_c_c (catan, -1.0L, 0x1p-33L, -7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L);
4641 TEST_c_c (catan, 1.0L, -0x1p-33L, 7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L);
4642 TEST_c_c (catan, -1.0L, -0x1p-33L, -7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L);
4643 TEST_c_c (catan, 0x1p-54L, 1.0L, 7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L);
4644 TEST_c_c (catan, 0x1p-54L, -1.0L, 7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L);
4645 TEST_c_c (catan, -0x1p-54L, 1.0L, -7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L);
4646 TEST_c_c (catan, -0x1p-54L, -1.0L, -7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L);
4647 TEST_c_c (catan, 1.0L, 0x1p-54L, 7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L);
4648 TEST_c_c (catan, -1.0L, 0x1p-54L, -7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L);
4649 TEST_c_c (catan, 1.0L, -0x1p-54L, 7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L);
4650 TEST_c_c (catan, -1.0L, -0x1p-54L, -7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L);
4651 TEST_c_c (catan, 0x1p-57L, 1.0L, 7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L);
4652 TEST_c_c (catan, 0x1p-57L, -1.0L, 7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L);
4653 TEST_c_c (catan, -0x1p-57L, 1.0L, -7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L);
4654 TEST_c_c (catan, -0x1p-57L, -1.0L, -7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L);
4655 TEST_c_c (catan, 1.0L, 0x1p-57L, 7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L);
4656 TEST_c_c (catan, -1.0L, 0x1p-57L, -7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L);
4657 TEST_c_c (catan, 1.0L, -0x1p-57L, 7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L);
4658 TEST_c_c (catan, -1.0L, -0x1p-57L, -7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L);
4659 TEST_c_c (catan, 0x1p-13L, 0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L);
4660 TEST_c_c (catan, 0x1p-13L, -0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L);
4661 TEST_c_c (catan, -0x1p-13L, 0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L);
4662 TEST_c_c (catan, -0x1p-13L, -0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L);
4663 TEST_c_c (catan, 0x1.000002p0L, 0x1p-13L, 7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L);
4664 TEST_c_c (catan, -0x1.000002p0L, 0x1p-13L, -7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L);
4665 TEST_c_c (catan, 0x1.000002p0L, -0x1p-13L, 7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L);
4666 TEST_c_c (catan, -0x1.000002p0L, -0x1p-13L, -7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L);
4667 TEST_c_c (catan, 0x1p-13L, 0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L);
4668 TEST_c_c (catan, 0x1p-13L, -0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L);
4669 TEST_c_c (catan, -0x1p-13L, 0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L);
4670 TEST_c_c (catan, -0x1p-13L, -0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L);
4671 TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-13L, 7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L);
4672 TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-13L, -7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L);
4673 TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-13L, 7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L);
4674 TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-13L, -7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L);
4675#ifndef TEST_FLOAT
4676 TEST_c_c (catan, 0x1p-27L, 0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L);
4677 TEST_c_c (catan, 0x1p-27L, -0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L);
4678 TEST_c_c (catan, -0x1p-27L, 0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L);
4679 TEST_c_c (catan, -0x1p-27L, -0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L);
4680 TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-27L, 7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L);
4681 TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-27L, -7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L);
4682 TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-27L, 7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L);
4683 TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-27L, -7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L);
4684 TEST_c_c (catan, 0x1p-27L, 0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L);
4685 TEST_c_c (catan, 0x1p-27L, -0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L);
4686 TEST_c_c (catan, -0x1p-27L, 0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L);
4687 TEST_c_c (catan, -0x1p-27L, -0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L);
4688 TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-27L, 7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L);
4689 TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-27L, -7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L);
4690 TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-27L, 7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L);
4691 TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-27L, -7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L);
4692#endif
4693#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4694 TEST_c_c (catan, 0x1p-33L, 0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L);
4695 TEST_c_c (catan, 0x1p-33L, -0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L);
4696 TEST_c_c (catan, -0x1p-33L, 0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L);
4697 TEST_c_c (catan, -0x1p-33L, -0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L);
4698 TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-33L, 7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L);
4699 TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-33L, -7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L);
4700 TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-33L, 7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L);
4701 TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-33L, -7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L);
4702 TEST_c_c (catan, 0x1p-33L, 0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L);
4703 TEST_c_c (catan, 0x1p-33L, -0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L);
4704 TEST_c_c (catan, -0x1p-33L, 0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L);
4705 TEST_c_c (catan, -0x1p-33L, -0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L);
4706 TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-33L, 7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L);
4707 TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-33L, -7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L);
4708 TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-33L, 7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L);
4709 TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-33L, -7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L);
4710#endif
4711#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4712 TEST_c_c (catan, 0x1p-54L, 0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L);
4713 TEST_c_c (catan, 0x1p-54L, -0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L);
4714 TEST_c_c (catan, -0x1p-54L, 0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L);
4715 TEST_c_c (catan, -0x1p-54L, -0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L);
4716 TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-54L, 7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L);
4717 TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-54L, -7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L);
4718 TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-54L, 7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L);
4719 TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-54L, -7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L);
4720 TEST_c_c (catan, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L);
4721 TEST_c_c (catan, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L);
4722 TEST_c_c (catan, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L);
4723 TEST_c_c (catan, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L);
4724 TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L);
4725 TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L);
4726 TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L);
4727 TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L);
4728#endif
4729#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4730 TEST_c_c (catan, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L);
4731 TEST_c_c (catan, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L);
4732 TEST_c_c (catan, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L);
4733 TEST_c_c (catan, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L);
4734 TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L);
4735 TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L);
4736 TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L);
4737 TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L);
4738 TEST_c_c (catan, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L);
4739 TEST_c_c (catan, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L);
4740 TEST_c_c (catan, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L);
4741 TEST_c_c (catan, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L);
4742 TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L);
4743 TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L);
4744 TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L);
4745 TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L);
10de07f5
JM
4746#endif
4747 TEST_c_c (catan, 1.0L, 0x1p-64L, 7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L);
4748 TEST_c_c (catan, 1.0L, -0x1p-64L, 7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L);
4749 TEST_c_c (catan, -1.0L, 0x1p-64L, -7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L);
4750 TEST_c_c (catan, -1.0L, -0x1p-64L, -7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L);
4751 TEST_c_c (catan, 0x1p-64L, 1.0L, 7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L);
4752 TEST_c_c (catan, -0x1p-64L, 1.0L, -7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L);
4753 TEST_c_c (catan, 0x1p-64L, -1.0L, 7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L);
4754 TEST_c_c (catan, -0x1p-64L, -1.0L, -7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L);
4755 TEST_c_c (catan, 1.0L, 0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L);
4756 TEST_c_c (catan, 1.0L, -0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L);
4757 TEST_c_c (catan, -1.0L, 0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L);
4758 TEST_c_c (catan, -1.0L, -0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L);
4759 TEST_c_c (catan, 0x1.3p-73L, 1.0L, 7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L);
4760 TEST_c_c (catan, -0x1.3p-73L, 1.0L, -7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L);
4761 TEST_c_c (catan, 0x1.3p-73L, -1.0L, 7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L);
4762 TEST_c_c (catan, -0x1.3p-73L, -1.0L, -7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L);
4763 TEST_c_c (catan, 1.0L, 0x1p-124L, 7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L);
4764 TEST_c_c (catan, 1.0L, -0x1p-124L, 7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L);
4765 TEST_c_c (catan, -1.0L, 0x1p-124L, -7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L);
4766 TEST_c_c (catan, -1.0L, -0x1p-124L, -7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L);
4767 TEST_c_c (catan, 0x1p-124L, 1.0L, 7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L);
4768 TEST_c_c (catan, -0x1p-124L, 1.0L, -7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L);
4769 TEST_c_c (catan, 0x1p-124L, -1.0L, 7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L);
4770 TEST_c_c (catan, -0x1p-124L, -1.0L, -7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L);
4771 TEST_c_c (catan, 0x1.000002p0L, 0x1p-126L, 7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4772 TEST_c_c (catan, 0x1.000002p0L, -0x1p-126L, 7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4773 TEST_c_c (catan, -0x1.000002p0L, 0x1p-126L, -7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4774 TEST_c_c (catan, -0x1.000002p0L, -0x1p-126L, -7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4775 TEST_c_c (catan, 0x1p-126L, 0x1.000002p0L, 1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L);
4776 TEST_c_c (catan, -0x1p-126L, 0x1.000002p0L, -1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L);
4777 TEST_c_c (catan, 0x1p-126L, -0x1.000002p0L, 1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L);
4778 TEST_c_c (catan, -0x1p-126L, -0x1.000002p0L, -1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L);
4779 TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-126L, 7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4780 TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-126L, 7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4781 TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-126L, -7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4782 TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-126L, -7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT);
4783 TEST_c_c (catan, 0x1p-126L, 0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L);
4784 TEST_c_c (catan, -0x1p-126L, 0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L);
4785 TEST_c_c (catan, 0x1p-126L, -0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L);
4786 TEST_c_c (catan, -0x1p-126L, -0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L);
4787#ifndef TEST_FLOAT
4788 TEST_c_c (catan, 1.0L, 0x1p-512L, 7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L);
4789 TEST_c_c (catan, 1.0L, -0x1p-512L, 7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L);
4790 TEST_c_c (catan, -1.0L, 0x1p-512L, -7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L);
4791 TEST_c_c (catan, -1.0L, -0x1p-512L, -7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L);
4792 TEST_c_c (catan, 0x1p-512L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L);
4793 TEST_c_c (catan, -0x1p-512L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L);
4794 TEST_c_c (catan, 0x1p-512L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L);
4795 TEST_c_c (catan, -0x1p-512L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L);
4796 TEST_c_c (catan, 1.0L, 0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L);
4797 TEST_c_c (catan, 1.0L, -0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L);
4798 TEST_c_c (catan, -1.0L, 0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L);
4799 TEST_c_c (catan, -1.0L, -0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L);
4800 TEST_c_c (catan, 0x1.3p-536L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L);
4801 TEST_c_c (catan, -0x1.3p-536L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L);
4802 TEST_c_c (catan, 0x1.3p-536L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L);
4803 TEST_c_c (catan, -0x1.3p-536L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L);
4804 TEST_c_c (catan, 1.0L, 0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4805 TEST_c_c (catan, 1.0L, -0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4806 TEST_c_c (catan, -1.0L, 0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4807 TEST_c_c (catan, -1.0L, -0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4808 TEST_c_c (catan, 0x1p-1020L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L);
4809 TEST_c_c (catan, -0x1p-1020L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L);
4810 TEST_c_c (catan, 0x1p-1020L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L);
4811 TEST_c_c (catan, -0x1p-1020L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L);
4812 TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4813 TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4814 TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4815 TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4816 TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L);
4817 TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L);
4818 TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L);
4819 TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L);
4820 TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4821 TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4822 TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4823 TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4824 TEST_c_c (catan, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4825 TEST_c_c (catan, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4826 TEST_c_c (catan, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4827 TEST_c_c (catan, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
4828#endif
4829#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4830 TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4831 TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4832 TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4833 TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4834 TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L);
4835 TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L);
4836 TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L);
4837 TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L);
4838 TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4839 TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4840 TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4841 TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4842 TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L);
4843 TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L);
4844 TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L);
4845 TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L);
4846#endif
4847#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4848 TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4849 TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4850 TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4851 TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4852 TEST_c_c (catan, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L);
4853 TEST_c_c (catan, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L);
4854 TEST_c_c (catan, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L);
4855 TEST_c_c (catan, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L);
4856 TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4857 TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4858 TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4859 TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE);
4860 TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L);
4861 TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L);
4862 TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L);
4863 TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L);
4864#endif
4865#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4866 TEST_c_c (catan, 1.0L, 0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L);
4867 TEST_c_c (catan, 1.0L, -0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L);
4868 TEST_c_c (catan, -1.0L, 0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L);
4869 TEST_c_c (catan, -1.0L, -0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L);
4870 TEST_c_c (catan, 0x1p-8192L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L);
4871 TEST_c_c (catan, -0x1p-8192L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L);
4872 TEST_c_c (catan, 0x1p-8192L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L);
4873 TEST_c_c (catan, -0x1p-8192L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L);
4874 TEST_c_c (catan, 1.0L, 0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L);
4875 TEST_c_c (catan, 1.0L, -0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L);
4876 TEST_c_c (catan, -1.0L, 0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L);
4877 TEST_c_c (catan, -1.0L, -0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L);
4878 TEST_c_c (catan, 0x1.3p-8221L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L);
4879 TEST_c_c (catan, -0x1.3p-8221L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L);
4880 TEST_c_c (catan, 0x1.3p-8221L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L);
4881 TEST_c_c (catan, -0x1.3p-8221L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L);
4882 TEST_c_c (catan, 1.0L, 0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L);
4883 TEST_c_c (catan, 1.0L, -0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L);
4884 TEST_c_c (catan, -1.0L, 0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L);
4885 TEST_c_c (catan, -1.0L, -0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L);
4886 TEST_c_c (catan, 0x1.3p-8246L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L);
4887 TEST_c_c (catan, -0x1.3p-8246L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L);
4888 TEST_c_c (catan, 0x1.3p-8246L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L);
4889 TEST_c_c (catan, -0x1.3p-8246L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L);
4890 TEST_c_c (catan, 1.0L, 0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L);
4891 TEST_c_c (catan, 1.0L, -0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L);
4892 TEST_c_c (catan, -1.0L, 0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L);
4893 TEST_c_c (catan, -1.0L, -0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L);
4894 TEST_c_c (catan, 0x1p-16380L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L);
4895 TEST_c_c (catan, -0x1p-16380L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L);
4896 TEST_c_c (catan, 0x1p-16380L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L);
4897 TEST_c_c (catan, -0x1p-16380L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L);
4898 TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION);
4899 TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION);
4900 TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION);
4901 TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION);
4902 TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L);
4903 TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L);
4904 TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L);
4905 TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L);
4906 TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION);
4907 TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION);
4908 TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION);
4909 TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION);
4910 TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L);
4911 TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L);
4912 TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L);
4913 TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L);
4914# if LDBL_MANT_DIG >= 113
4915 TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION);
4916 TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION);
4917 TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION);
4918 TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION);
4919 TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L);
4920 TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L);
4921 TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L);
4922 TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L);
4923 TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION);
4924 TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION);
4925 TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION);
4926 TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION);
4927 TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L);
4928 TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L);
4929 TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L);
4930 TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L);
4931# endif
caf84319 4932#endif
2f38fbfe 4933
2550dfe9 4934 TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L);
33e885db 4935 TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L);
8847214f 4936
6815fabc 4937 END (catan, complex);
8847214f
UD
4938}
4939
4940static void
4941catanh_test (void)
4942{
aaca11d8 4943 errno = 0;
3c6cad26 4944 FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
4945 if (errno == ENOSYS)
4946 /* Function not implemented. */
4947 return;
4948
8847214f
UD
4949 START (catanh);
4950
4951 TEST_c_c (catanh, 0, 0, 0.0, 0.0);
4952 TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0);
4953 TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero);
4954 TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero);
4955
5e221800
JM
4956 TEST_c_c (catanh, 1.0L, plus_zero, plus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION);
4957 TEST_c_c (catanh, 1.0L, minus_zero, plus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION);
4958 TEST_c_c (catanh, -1.0L, plus_zero, minus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION);
4959 TEST_c_c (catanh, -1.0L, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION);
4960 TEST_c_c (catanh, plus_zero, 1.0L, plus_zero, M_PI_4l);
4961 TEST_c_c (catanh, minus_zero, 1.0L, minus_zero, M_PI_4l);
4962 TEST_c_c (catanh, plus_zero, -1.0L, plus_zero, -M_PI_4l);
4963 TEST_c_c (catanh, minus_zero, -1.0L, minus_zero, -M_PI_4l);
4964
8847214f
UD
4965 TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l);
4966 TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l);
4967 TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l);
4968 TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l);
4969
4970 TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l);
4971 TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l);
4972 TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l);
4973 TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l);
4974 TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l);
4975 TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l);
3c6cad26
UD
4976 TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l);
4977 TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l);
8847214f
UD
4978
4979 TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l);
4980 TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l);
4981 TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l);
4982 TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l);
4983
4984 TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l);
4985 TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l);
4986 TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l);
4987 TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l);
4988
67e971f1
TS
4989 TEST_c_c (catanh, 0, qnan_value, 0.0, qnan_value);
4990 TEST_c_c (catanh, minus_zero, qnan_value, minus_zero, qnan_value);
8847214f 4991
67e971f1
TS
4992 TEST_c_c (catanh, plus_infty, qnan_value, 0.0, qnan_value);
4993 TEST_c_c (catanh, minus_infty, qnan_value, minus_zero, qnan_value);
8847214f 4994
67e971f1
TS
4995 TEST_c_c (catanh, qnan_value, 0, qnan_value, qnan_value);
4996 TEST_c_c (catanh, qnan_value, minus_zero, qnan_value, qnan_value);
8847214f 4997
67e971f1
TS
4998 TEST_c_c (catanh, qnan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN);
4999 TEST_c_c (catanh, qnan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN);
8847214f 5000
67e971f1
TS
5001 TEST_c_c (catanh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5002 TEST_c_c (catanh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5003
67e971f1
TS
5004 TEST_c_c (catanh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5005 TEST_c_c (catanh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5006
67e971f1 5007 TEST_c_c (catanh, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 5008
2f38fbfe
JM
5009 TEST_c_c (catanh, 0x1p50L, 0.0L, 8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L);
5010 TEST_c_c (catanh, 0x1p50L, -0.0L, 8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L);
5011 TEST_c_c (catanh, -0x1p50L, 0.0L, -8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L);
5012 TEST_c_c (catanh, -0x1p50L, -0.0L, -8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L);
5013 TEST_c_c (catanh, 0.0L, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L);
5014 TEST_c_c (catanh, -0.0L, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L);
5015 TEST_c_c (catanh, 0.0L, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L);
5016 TEST_c_c (catanh, -0.0L, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L);
5017#ifndef TEST_FLOAT
5018 TEST_c_c (catanh, 0x1p500L, 0.0L, 3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L);
5019 TEST_c_c (catanh, 0x1p500L, -0.0L, 3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L);
5020 TEST_c_c (catanh, -0x1p500L, 0.0L, -3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L);
5021 TEST_c_c (catanh, -0x1p500L, -0.0L, -3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L);
5022 TEST_c_c (catanh, 0.0L, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L);
5023 TEST_c_c (catanh, -0.0L, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L);
5024 TEST_c_c (catanh, 0.0L, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L);
5025 TEST_c_c (catanh, -0.0L, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L);
5026#endif
5027#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5028 TEST_c_c (catanh, 0x1p5000L, 0.0L, 7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L);
5029 TEST_c_c (catanh, 0x1p5000L, -0.0L, 7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L);
5030 TEST_c_c (catanh, -0x1p5000L, 0.0L, -7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L);
5031 TEST_c_c (catanh, -0x1p5000L, -0.0L, -7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L);
5032 TEST_c_c (catanh, 0.0L, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L);
5033 TEST_c_c (catanh, -0.0L, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L);
5034 TEST_c_c (catanh, 0.0L, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L);
5035 TEST_c_c (catanh, -0.0L, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L);
5036#endif
9457fd95
JM
5037 TEST_c_c (catanh, 0x1p63L, 0.5L, 1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L);
5038 TEST_c_c (catanh, 0x1p63L, -0.5L, 1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L);
5039 TEST_c_c (catanh, -0x1p63L, 0.5L, -1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L);
5040 TEST_c_c (catanh, -0x1p63L, -0.5L, -1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L);
5041 TEST_c_c (catanh, 0.5L, 0x1p63L, 5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT);
5042 TEST_c_c (catanh, -0.5L, 0x1p63L, -5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT);
5043 TEST_c_c (catanh, 0.5L, -0x1p63L, 5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT);
5044 TEST_c_c (catanh, -0.5L, -0x1p63L, -5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT);
5045#ifndef TEST_FLOAT
5046 TEST_c_c (catanh, 0x1p511L, 0.5L, 1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L);
5047 TEST_c_c (catanh, 0x1p511L, -0.5L, 1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L);
5048 TEST_c_c (catanh, -0x1p511L, 0.5L, -1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L);
5049 TEST_c_c (catanh, -0x1p511L, -0.5L, -1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L);
5050 TEST_c_c (catanh, 0.5L, 0x1p511L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5051 TEST_c_c (catanh, -0.5L, 0x1p511L, -1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5052 TEST_c_c (catanh, 0.5L, -0x1p511L, 1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5053 TEST_c_c (catanh, -0.5L, -0x1p511L, -1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5054#endif
5055#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5056 TEST_c_c (catanh, 0x1p8191L, 0.5L, 1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L);
5057 TEST_c_c (catanh, 0x1p8191L, -0.5L, 1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L);
5058 TEST_c_c (catanh, -0x1p8191L, 0.5L, -1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L);
5059 TEST_c_c (catanh, -0x1p8191L, -0.5L, -1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L);
5060 TEST_c_c (catanh, 0.5L, 0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5061 TEST_c_c (catanh, -0.5L, 0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5062 TEST_c_c (catanh, 0.5L, -0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5063 TEST_c_c (catanh, -0.5L, -0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5064#endif
5b4217d7
JM
5065 TEST_c_c (catanh, 0x1p100L, 0.0L, 7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L);
5066 TEST_c_c (catanh, 0x1p100L, -0.0L, 7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L);
5067 TEST_c_c (catanh, -0x1p100L, 0.0L, -7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L);
5068 TEST_c_c (catanh, -0x1p100L, -0.0L, -7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L);
5069 TEST_c_c (catanh, 0.0L, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L);
5070 TEST_c_c (catanh, -0.0L, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L);
5071 TEST_c_c (catanh, 0.0L, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L);
5072 TEST_c_c (catanh, -0.0L, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L);
5073 TEST_c_c (catanh, 0x1.fp127L, 0.0L, 3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT);
5074 TEST_c_c (catanh, 0x1.fp127L, -0.0L, 3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT);
5075 TEST_c_c (catanh, -0x1.fp127L, 0.0L, -3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT);
5076 TEST_c_c (catanh, -0x1.fp127L, -0.0L, -3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT);
5077 TEST_c_c (catanh, 0.0L, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L);
5078 TEST_c_c (catanh, -0.0L, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L);
5079 TEST_c_c (catanh, 0.0L, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L);
5080 TEST_c_c (catanh, -0.0L, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L);
5081 TEST_c_c (catanh, 0x1.fp127L, 0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT);
5082 TEST_c_c (catanh, 0x1.fp127L, -0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT);
5083 TEST_c_c (catanh, -0x1.fp127L, 0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT);
5084 TEST_c_c (catanh, -0x1.fp127L, -0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT);
5085#ifndef TEST_FLOAT
5086 TEST_c_c (catanh, 0x1p900L, 0.0L, 1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L);
5087 TEST_c_c (catanh, 0x1p900L, -0.0L, 1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L);
5088 TEST_c_c (catanh, -0x1p900L, 0.0L, -1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L);
5089 TEST_c_c (catanh, -0x1p900L, -0.0L, -1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L);
5090 TEST_c_c (catanh, 0.0L, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L);
5091 TEST_c_c (catanh, -0.0L, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L);
5092 TEST_c_c (catanh, 0.0L, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L);
5093 TEST_c_c (catanh, -0.0L, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L);
5094 TEST_c_c (catanh, 0x1.fp1023L, 0.0L, 5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5095 TEST_c_c (catanh, 0x1.fp1023L, -0.0L, 5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5096 TEST_c_c (catanh, -0x1.fp1023L, 0.0L, -5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5097 TEST_c_c (catanh, -0x1.fp1023L, -0.0L, -5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5098 TEST_c_c (catanh, 0.0L, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L);
5099 TEST_c_c (catanh, -0.0L, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L);
5100 TEST_c_c (catanh, 0.0L, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L);
5101 TEST_c_c (catanh, -0.0L, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L);
5102 TEST_c_c (catanh, 0x1.fp1023L, 0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5103 TEST_c_c (catanh, 0x1.fp1023L, -0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5104 TEST_c_c (catanh, -0x1.fp1023L, 0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5105 TEST_c_c (catanh, -0x1.fp1023L, -0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
5106#endif
5107#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5108 TEST_c_c (catanh, 0x1p10000L, 0.0L, 5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L);
5109 TEST_c_c (catanh, 0x1p10000L, -0.0L, 5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L);
5110 TEST_c_c (catanh, -0x1p10000L, 0.0L, -5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L);
5111 TEST_c_c (catanh, -0x1p10000L, -0.0L, -5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L);
5112 TEST_c_c (catanh, 0.0L, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L);
5113 TEST_c_c (catanh, -0.0L, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L);
5114 TEST_c_c (catanh, 0.0L, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L);
5115 TEST_c_c (catanh, -0.0L, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L);
5116 TEST_c_c (catanh, 0x1.fp16383L, 0.0L, 8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5117 TEST_c_c (catanh, 0x1.fp16383L, -0.0L, 8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5118 TEST_c_c (catanh, -0x1.fp16383L, 0.0L, -8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5119 TEST_c_c (catanh, -0x1.fp16383L, -0.0L, -8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5120 TEST_c_c (catanh, 0.0L, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L);
5121 TEST_c_c (catanh, -0.0L, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L);
5122 TEST_c_c (catanh, 0.0L, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L);
5123 TEST_c_c (catanh, -0.0L, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L);
5124 TEST_c_c (catanh, 0x1.fp16383L, 0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5125 TEST_c_c (catanh, 0x1.fp16383L, -0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5126 TEST_c_c (catanh, -0x1.fp16383L, 0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5127 TEST_c_c (catanh, -0x1.fp16383L, -0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
5128#endif
caf84319
JM
5129 TEST_c_c (catanh, 0x1p-13L, 1.0L, 6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L);
5130 TEST_c_c (catanh, 0x1p-13L, -1.0L, 6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L);
5131 TEST_c_c (catanh, -0x1p-13L, 1.0L, -6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L);
5132 TEST_c_c (catanh, -0x1p-13L, -1.0L, -6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L);
5133 TEST_c_c (catanh, 1.0L, 0x1p-13L, 4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L);
5134 TEST_c_c (catanh, -1.0L, 0x1p-13L, -4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L);
5135 TEST_c_c (catanh, 1.0L, -0x1p-13L, 4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L);
5136 TEST_c_c (catanh, -1.0L, -0x1p-13L, -4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L);
5137 TEST_c_c (catanh, 0x1p-27L, 1.0L, 3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L);
5138 TEST_c_c (catanh, 0x1p-27L, -1.0L, 3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L);
5139 TEST_c_c (catanh, -0x1p-27L, 1.0L, -3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L);
5140 TEST_c_c (catanh, -0x1p-27L, -1.0L, -3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L);
5141 TEST_c_c (catanh, 1.0L, 0x1p-27L, 9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L);
5142 TEST_c_c (catanh, -1.0L, 0x1p-27L, -9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L);
5143 TEST_c_c (catanh, 1.0L, -0x1p-27L, 9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L);
5144 TEST_c_c (catanh, -1.0L, -0x1p-27L, -9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L);
5145 TEST_c_c (catanh, 0x1p-33L, 1.0L, 5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L);
5146 TEST_c_c (catanh, 0x1p-33L, -1.0L, 5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L);
5147 TEST_c_c (catanh, -0x1p-33L, 1.0L, -5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L);
5148 TEST_c_c (catanh, -0x1p-33L, -1.0L, -5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L);
5149 TEST_c_c (catanh, 1.0L, 0x1p-33L, 1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L);
5150 TEST_c_c (catanh, -1.0L, 0x1p-33L, -1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L);
5151 TEST_c_c (catanh, 1.0L, -0x1p-33L, 1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L);
5152 TEST_c_c (catanh, -1.0L, -0x1p-33L, -1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L);
5153 TEST_c_c (catanh, 0x1p-54L, 1.0L, 2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L);
5154 TEST_c_c (catanh, 0x1p-54L, -1.0L, 2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L);
5155 TEST_c_c (catanh, -0x1p-54L, 1.0L, -2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L);
5156 TEST_c_c (catanh, -0x1p-54L, -1.0L, -2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L);
5157 TEST_c_c (catanh, 1.0L, 0x1p-54L, 1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L);
5158 TEST_c_c (catanh, -1.0L, 0x1p-54L, -1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L);
5159 TEST_c_c (catanh, 1.0L, -0x1p-54L, 1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L);
5160 TEST_c_c (catanh, -1.0L, -0x1p-54L, -1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L);
5161 TEST_c_c (catanh, 0x1p-57L, 1.0L, 3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L);
5162 TEST_c_c (catanh, 0x1p-57L, -1.0L, 3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L);
5163 TEST_c_c (catanh, -0x1p-57L, 1.0L, -3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L);
5164 TEST_c_c (catanh, -0x1p-57L, -1.0L, -3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L);
5165 TEST_c_c (catanh, 1.0L, 0x1p-57L, 2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L);
5166 TEST_c_c (catanh, -1.0L, 0x1p-57L, -2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L);
5167 TEST_c_c (catanh, 1.0L, -0x1p-57L, 2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L);
5168 TEST_c_c (catanh, -1.0L, -0x1p-57L, -2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L);
5169 TEST_c_c (catanh, 0x1p-13L, 0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L);
5170 TEST_c_c (catanh, 0x1p-13L, -0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L);
5171 TEST_c_c (catanh, -0x1p-13L, 0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L);
5172 TEST_c_c (catanh, -0x1p-13L, -0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L);
5173 TEST_c_c (catanh, 0x1.000002p0L, 0x1p-13L, 4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L);
5174 TEST_c_c (catanh, -0x1.000002p0L, 0x1p-13L, -4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L);
5175 TEST_c_c (catanh, 0x1.000002p0L, -0x1p-13L, 4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L);
5176 TEST_c_c (catanh, -0x1.000002p0L, -0x1p-13L, -4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L);
5177 TEST_c_c (catanh, 0x1p-13L, 0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L);
5178 TEST_c_c (catanh, 0x1p-13L, -0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L);
5179 TEST_c_c (catanh, -0x1p-13L, 0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L);
5180 TEST_c_c (catanh, -0x1p-13L, -0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L);
5181 TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-13L, 4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L);
5182 TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-13L, -4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L);
5183 TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-13L, 4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L);
5184 TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-13L, -4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L);
5185#ifndef TEST_FLOAT
5186 TEST_c_c (catanh, 0x1p-27L, 0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L);
5187 TEST_c_c (catanh, 0x1p-27L, -0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L);
5188 TEST_c_c (catanh, -0x1p-27L, 0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L);
5189 TEST_c_c (catanh, -0x1p-27L, -0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L);
5190 TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-27L, 9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L);
5191 TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-27L, -9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L);
5192 TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-27L, 9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L);
5193 TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-27L, -9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L);
5194 TEST_c_c (catanh, 0x1p-27L, 0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L);
5195 TEST_c_c (catanh, 0x1p-27L, -0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L);
5196 TEST_c_c (catanh, -0x1p-27L, 0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L);
5197 TEST_c_c (catanh, -0x1p-27L, -0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L);
5198 TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-27L, 9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L);
5199 TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-27L, -9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L);
5200 TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-27L, 9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L);
5201 TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-27L, -9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L);
5202#endif
5203#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5204 TEST_c_c (catanh, 0x1p-33L, 0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L);
5205 TEST_c_c (catanh, 0x1p-33L, -0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L);
5206 TEST_c_c (catanh, -0x1p-33L, 0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L);
5207 TEST_c_c (catanh, -0x1p-33L, -0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L);
5208 TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-33L, 1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L);
5209 TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-33L, -1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L);
5210 TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-33L, 1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L);
5211 TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-33L, -1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L);
5212 TEST_c_c (catanh, 0x1p-33L, 0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L);
5213 TEST_c_c (catanh, 0x1p-33L, -0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L);
5214 TEST_c_c (catanh, -0x1p-33L, 0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L);
5215 TEST_c_c (catanh, -0x1p-33L, -0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L);
5216 TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-33L, 1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L);
5217 TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-33L, -1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L);
5218 TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-33L, 1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L);
5219 TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-33L, -1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L);
5220#endif
5221#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5222 TEST_c_c (catanh, 0x1p-54L, 0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L);
5223 TEST_c_c (catanh, 0x1p-54L, -0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L);
5224 TEST_c_c (catanh, -0x1p-54L, 0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L);
5225 TEST_c_c (catanh, -0x1p-54L, -0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L);
5226 TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-54L, 1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L);
5227 TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-54L, -1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L);
5228 TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-54L, 1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L);
5229 TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-54L, -1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L);
5230 TEST_c_c (catanh, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L);
5231 TEST_c_c (catanh, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L);
5232 TEST_c_c (catanh, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L);
5233 TEST_c_c (catanh, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L);
5234 TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L);
5235 TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L);
5236 TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L);
5237 TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L);
5238#endif
5239#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5240 TEST_c_c (catanh, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L);
5241 TEST_c_c (catanh, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L);
5242 TEST_c_c (catanh, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L);
5243 TEST_c_c (catanh, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L);
5244 TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L);
5245 TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L);
5246 TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L);
5247 TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L);
5248 TEST_c_c (catanh, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L);
5249 TEST_c_c (catanh, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L);
5250 TEST_c_c (catanh, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L);
5251 TEST_c_c (catanh, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L);
5252 TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L);
5253 TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L);
5254 TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L);
5255 TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L);
10de07f5
JM
5256#endif
5257 TEST_c_c (catanh, 1.0L, 0x1p-64L, 2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L);
5258 TEST_c_c (catanh, 1.0L, -0x1p-64L, 2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L);
5259 TEST_c_c (catanh, -1.0L, 0x1p-64L, -2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L);
5260 TEST_c_c (catanh, -1.0L, -0x1p-64L, -2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L);
5261 TEST_c_c (catanh, 0x1p-64L, 1.0L, 2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L);
5262 TEST_c_c (catanh, -0x1p-64L, 1.0L, -2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L);
5263 TEST_c_c (catanh, 0x1p-64L, -1.0L, 2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L);
5264 TEST_c_c (catanh, -0x1p-64L, -1.0L, -2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L);
5265 TEST_c_c (catanh, 1.0L, 0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L);
5266 TEST_c_c (catanh, 1.0L, -0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L);
5267 TEST_c_c (catanh, -1.0L, 0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L);
5268 TEST_c_c (catanh, -1.0L, -0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L);
5269 TEST_c_c (catanh, 0x1.3p-73L, 1.0L, 6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L);
5270 TEST_c_c (catanh, -0x1.3p-73L, 1.0L, -6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L);
5271 TEST_c_c (catanh, 0x1.3p-73L, -1.0L, 6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L);
5272 TEST_c_c (catanh, -0x1.3p-73L, -1.0L, -6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L);
5273 TEST_c_c (catanh, 1.0L, 0x1p-124L, 4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L);
5274 TEST_c_c (catanh, 1.0L, -0x1p-124L, 4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L);
5275 TEST_c_c (catanh, -1.0L, 0x1p-124L, -4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L);
5276 TEST_c_c (catanh, -1.0L, -0x1p-124L, -4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L);
5277 TEST_c_c (catanh, 0x1p-124L, 1.0L, 2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L);
5278 TEST_c_c (catanh, -0x1p-124L, 1.0L, -2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L);
5279 TEST_c_c (catanh, 0x1p-124L, -1.0L, 2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L);
5280 TEST_c_c (catanh, -0x1p-124L, -1.0L, -2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L);
5281 TEST_c_c (catanh, 0x1.000002p0L, 0x1p-126L, 8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L);
5282 TEST_c_c (catanh, 0x1.000002p0L, -0x1p-126L, 8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L);
5283 TEST_c_c (catanh, -0x1.000002p0L, 0x1p-126L, -8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L);
5284 TEST_c_c (catanh, -0x1.000002p0L, -0x1p-126L, -8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L);
5285 TEST_c_c (catanh, 0x1p-126L, 0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT);
5286 TEST_c_c (catanh, -0x1p-126L, 0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT);
5287 TEST_c_c (catanh, 0x1p-126L, -0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT);
5288 TEST_c_c (catanh, -0x1p-126L, -0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT);
5289 TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-126L, 8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L);
5290 TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-126L, 8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L);
5291 TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-126L, -8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L);
5292 TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-126L, -8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L);
5293 TEST_c_c (catanh, 0x1p-126L, 0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT);
5294 TEST_c_c (catanh, -0x1p-126L, 0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT);
5295 TEST_c_c (catanh, 0x1p-126L, -0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT);
5296 TEST_c_c (catanh, -0x1p-126L, -0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT);
5297#ifndef TEST_FLOAT
5298 TEST_c_c (catanh, 1.0L, 0x1p-512L, 1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L);
5299 TEST_c_c (catanh, 1.0L, -0x1p-512L, 1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L);
5300 TEST_c_c (catanh, -1.0L, 0x1p-512L, -1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L);
5301 TEST_c_c (catanh, -1.0L, -0x1p-512L, -1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L);
5302 TEST_c_c (catanh, 0x1p-512L, 1.0L, 3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L);
5303 TEST_c_c (catanh, -0x1p-512L, 1.0L, -3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L);
5304 TEST_c_c (catanh, 0x1p-512L, -1.0L, 3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L);
5305 TEST_c_c (catanh, -0x1p-512L, -1.0L, -3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L);
5306 TEST_c_c (catanh, 1.0L, 0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L);
5307 TEST_c_c (catanh, 1.0L, -0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L);
5308 TEST_c_c (catanh, -1.0L, 0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L);
5309 TEST_c_c (catanh, -1.0L, -0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L);
5310 TEST_c_c (catanh, 0x1.3p-536L, 1.0L, 2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L);
5311 TEST_c_c (catanh, -0x1.3p-536L, 1.0L, -2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L);
5312 TEST_c_c (catanh, 0x1.3p-536L, -1.0L, 2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L);
5313 TEST_c_c (catanh, -0x1.3p-536L, -1.0L, -2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L);
5314 TEST_c_c (catanh, 1.0L, 0x1p-1020L, 3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L);
5315 TEST_c_c (catanh, 1.0L, -0x1p-1020L, 3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L);
5316 TEST_c_c (catanh, -1.0L, 0x1p-1020L, -3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L);
5317 TEST_c_c (catanh, -1.0L, -0x1p-1020L, -3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L);
5318 TEST_c_c (catanh, 0x1p-1020L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
5319 TEST_c_c (catanh, -0x1p-1020L, 1.0L, -4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
5320 TEST_c_c (catanh, 0x1p-1020L, -1.0L, 4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
5321 TEST_c_c (catanh, -0x1p-1020L, -1.0L, -4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
5322 TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-1022L, 1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L);
5323 TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-1022L, 1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L);
5324 TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-1022L, -1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L);
5325 TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-1022L, -1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L);
5326 TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5327 TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5328 TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5329 TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5330 TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-1022L, 1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
5331 TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-1022L, 1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
5332 TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-1022L, -1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
5333 TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-1022L, -1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
5334 TEST_c_c (catanh, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5335 TEST_c_c (catanh, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5336 TEST_c_c (catanh, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5337 TEST_c_c (catanh, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5338#endif
5339#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5340 TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-1022L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L);
5341 TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-1022L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L);
5342 TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-1022L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L);
5343 TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-1022L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L);
5344 TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5345 TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5346 TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5347 TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5348 TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L);
5349 TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L);
5350 TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L);
5351 TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L);
5352 TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5353 TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5354 TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5355 TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5356#endif
5357#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5358 TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L);
5359 TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L);
5360 TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L);
5361 TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L);
5362 TEST_c_c (catanh, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5363 TEST_c_c (catanh, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5364 TEST_c_c (catanh, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5365 TEST_c_c (catanh, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5366 TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L);
5367 TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L);
5368 TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L);
5369 TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L);
5370 TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5371 TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5372 TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5373 TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
5374#endif
5375#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5376 TEST_c_c (catanh, 1.0L, 0x1p-8192L, 2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L);
5377 TEST_c_c (catanh, 1.0L, -0x1p-8192L, 2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L);
5378 TEST_c_c (catanh, -1.0L, 0x1p-8192L, -2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L);
5379 TEST_c_c (catanh, -1.0L, -0x1p-8192L, -2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L);
5380 TEST_c_c (catanh, 0x1p-8192L, 1.0L, 4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L);
5381 TEST_c_c (catanh, -0x1p-8192L, 1.0L, -4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L);
5382 TEST_c_c (catanh, 0x1p-8192L, -1.0L, 4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L);
5383 TEST_c_c (catanh, -0x1p-8192L, -1.0L, -4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L);
5384 TEST_c_c (catanh, 1.0L, 0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L);
5385 TEST_c_c (catanh, 1.0L, -0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L);
5386 TEST_c_c (catanh, -1.0L, 0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L);
5387 TEST_c_c (catanh, -1.0L, -0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L);
5388 TEST_c_c (catanh, 0x1.3p-8221L, 1.0L, 1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L);
5389 TEST_c_c (catanh, -0x1.3p-8221L, 1.0L, -1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L);
5390 TEST_c_c (catanh, 0x1.3p-8221L, -1.0L, 1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L);
5391 TEST_c_c (catanh, -0x1.3p-8221L, -1.0L, -1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L);
5392 TEST_c_c (catanh, 1.0L, 0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L);
5393 TEST_c_c (catanh, 1.0L, -0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L);
5394 TEST_c_c (catanh, -1.0L, 0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L);
5395 TEST_c_c (catanh, -1.0L, -0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L);
5396 TEST_c_c (catanh, 0x1.3p-8246L, 1.0L, 3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L);
5397 TEST_c_c (catanh, -0x1.3p-8246L, 1.0L, -3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L);
5398 TEST_c_c (catanh, 0x1.3p-8246L, -1.0L, 3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L);
5399 TEST_c_c (catanh, -0x1.3p-8246L, -1.0L, -3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L);
5400 TEST_c_c (catanh, 1.0L, 0x1p-16380L, 5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L);
5401 TEST_c_c (catanh, 1.0L, -0x1p-16380L, 5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L);
5402 TEST_c_c (catanh, -1.0L, 0x1p-16380L, -5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L);
5403 TEST_c_c (catanh, -1.0L, -0x1p-16380L, -5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L);
5404 TEST_c_c (catanh, 0x1p-16380L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L);
5405 TEST_c_c (catanh, -0x1p-16380L, 1.0L, -6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L);
5406 TEST_c_c (catanh, 0x1p-16380L, -1.0L, 6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L);
5407 TEST_c_c (catanh, -0x1p-16380L, -1.0L, -6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L);
5408 TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-16382L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L);
5409 TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-16382L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L);
5410 TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-16382L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L);
5411 TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-16382L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L);
5412 TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION);
5413 TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION);
5414 TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION);
5415 TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION);
5416 TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L);
5417 TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L);
5418 TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L);
5419 TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L);
5420 TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION);
5421 TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION);
5422 TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION);
5423 TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION);
5424# if LDBL_MANT_DIG >= 113
5425 TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L);
5426 TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L);
5427 TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L);
5428 TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L);
5429 TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION);
5430 TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION);
5431 TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION);
5432 TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION);
5433 TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L);
5434 TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L);
5435 TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L);
5436 TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L);
5437 TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION);
5438 TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION);
5439 TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION);
5440 TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION);
5441# endif
caf84319 5442#endif
2f38fbfe 5443
2550dfe9 5444 TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L);
33e885db 5445 TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L);
8847214f 5446
6815fabc 5447 END (catanh, complex);
8847214f
UD
5448}
5449
5450static void
5451cbrt_test (void)
5452{
42be70d4
UD
5453 errno = 0;
5454 FUNC(cbrt) (8);
5455 if (errno == ENOSYS)
5456 /* Function not implemented. */
5457 return;
5458
8847214f
UD
5459 START (cbrt);
5460
5461 TEST_f_f (cbrt, 0.0, 0.0);
5462 TEST_f_f (cbrt, minus_zero, minus_zero);
5463
5464 TEST_f_f (cbrt, plus_infty, plus_infty);
5465 TEST_f_f (cbrt, minus_infty, minus_infty);
67e971f1 5466 TEST_f_f (cbrt, qnan_value, qnan_value);
8847214f 5467
3c6cad26 5468 TEST_f_f (cbrt, -0.001L, -0.1L);
8847214f
UD
5469 TEST_f_f (cbrt, 8, 2);
5470 TEST_f_f (cbrt, -27.0, -3.0);
2550dfe9
AJ
5471 TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L);
5472 TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L);
8847214f
UD
5473
5474 END (cbrt);
5475}
5476
2550dfe9 5477
8847214f
UD
5478static void
5479ccos_test (void)
5480{
aaca11d8
UD
5481 errno = 0;
5482 FUNC(ccos) (BUILD_COMPLEX (0, 0));
5483 if (errno == ENOSYS)
5484 /* Function not implemented. */
5485 return;
8847214f
UD
5486
5487 START (ccos);
5488
5489 TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero);
5490 TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0);
5491 TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0);
5492 TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero);
5493
67e971f1
TS
5494 TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
5495 TEST_c_c (ccos, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
5496 TEST_c_c (ccos, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
5497 TEST_c_c (ccos, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
8847214f
UD
5498
5499 TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero);
5500 TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0);
5501 TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0);
5502 TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero);
5503
67e971f1
TS
5504 TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
5505 TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
5506 TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
5507 TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
8847214f
UD
5508
5509 TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty);
5510 TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty);
5511 TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty);
5512 TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty);
5513
67e971f1
TS
5514 TEST_c_c (ccos, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION);
5515 TEST_c_c (ccos, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION);
5516 TEST_c_c (ccos, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION);
5517 TEST_c_c (ccos, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f 5518
67e971f1
TS
5519 TEST_c_c (ccos, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
5520 TEST_c_c (ccos, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
8847214f 5521
67e971f1
TS
5522 TEST_c_c (ccos, qnan_value, plus_infty, plus_infty, qnan_value);
5523 TEST_c_c (ccos, qnan_value, minus_infty, plus_infty, qnan_value);
8847214f 5524
67e971f1
TS
5525 TEST_c_c (ccos, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5526 TEST_c_c (ccos, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5527
67e971f1
TS
5528 TEST_c_c (ccos, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
5529 TEST_c_c (ccos, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
8847214f 5530
67e971f1
TS
5531 TEST_c_c (ccos, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5532 TEST_c_c (ccos, -10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5533
67e971f1
TS
5534 TEST_c_c (ccos, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5535 TEST_c_c (ccos, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5536
67e971f1 5537 TEST_c_c (ccos, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 5538
2550dfe9 5539 TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L);
79df8ce5 5540 TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L);
8847214f 5541
e0b16cc2
JM
5542 TEST_c_c (ccos, 0.75, 89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L);
5543 TEST_c_c (ccos, 0.75, -89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L);
5544 TEST_c_c (ccos, -0.75, 89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L);
5545 TEST_c_c (ccos, -0.75, -89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L);
5546
5547#ifndef TEST_FLOAT
5548 TEST_c_c (ccos, 0.75, 710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L);
5549 TEST_c_c (ccos, 0.75, -710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L);
5550 TEST_c_c (ccos, -0.75, 710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L);
5551 TEST_c_c (ccos, -0.75, -710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L);
5552#endif
5553
5554#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5555 TEST_c_c (ccos, 0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L);
5556 TEST_c_c (ccos, 0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L);
5557 TEST_c_c (ccos, -0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L);
5558 TEST_c_c (ccos, -0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L);
5559#endif
5560
5561#ifdef TEST_FLOAT
5562 TEST_c_c (ccos, 0x1p-149, 180, plus_infty, -1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION);
5563#endif
5564
5565#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5566 TEST_c_c (ccos, 0x1p-1074, 1440, plus_infty, -5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION);
5567#endif
5568
5569#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5570 TEST_c_c (ccos, 0x1p-16434L, 22730, plus_infty, -1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION);
5571#endif
5572
f0302940
JM
5573 TEST_c_c (ccos, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION);
5574 TEST_c_c (ccos, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION);
5575
6815fabc 5576 END (ccos, complex);
8847214f
UD
5577}
5578
5579
5580static void
5581ccosh_test (void)
5582{
aaca11d8 5583 errno = 0;
3c6cad26 5584 FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
5585 if (errno == ENOSYS)
5586 /* Function not implemented. */
5587 return;
8847214f
UD
5588
5589 START (ccosh);
5590
5591 TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0);
5592 TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero);
5593 TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero);
5594 TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0);
5595
67e971f1
TS
5596 TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
5597 TEST_c_c (ccosh, minus_zero, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
5598 TEST_c_c (ccosh, 0.0, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
5599 TEST_c_c (ccosh, minus_zero, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
8847214f
UD
5600
5601 TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0);
5602 TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero);
5603 TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero);
5604 TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0);
5605
67e971f1
TS
5606 TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
5607 TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
5608 TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
5609 TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
8847214f
UD
5610
5611 TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty);
5612 TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty);
5613 TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty);
5614 TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty);
5615
67e971f1
TS
5616 TEST_c_c (ccosh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
5617 TEST_c_c (ccosh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
5618 TEST_c_c (ccosh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
5619 TEST_c_c (ccosh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f 5620
67e971f1
TS
5621 TEST_c_c (ccosh, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
5622 TEST_c_c (ccosh, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
8847214f 5623
67e971f1
TS
5624 TEST_c_c (ccosh, plus_infty, qnan_value, plus_infty, qnan_value);
5625 TEST_c_c (ccosh, minus_infty, qnan_value, plus_infty, qnan_value);
8847214f 5626
67e971f1
TS
5627 TEST_c_c (ccosh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5628 TEST_c_c (ccosh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5629
67e971f1
TS
5630 TEST_c_c (ccosh, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
5631 TEST_c_c (ccosh, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
8847214f 5632
67e971f1
TS
5633 TEST_c_c (ccosh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5634 TEST_c_c (ccosh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5635
67e971f1
TS
5636 TEST_c_c (ccosh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5637 TEST_c_c (ccosh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5638
67e971f1 5639 TEST_c_c (ccosh, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 5640
2550dfe9 5641 TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L);
8847214f 5642
79df8ce5 5643 TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L);
8847214f 5644
e0b16cc2
JM
5645 TEST_c_c (ccosh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L);
5646 TEST_c_c (ccosh, -89.5, 0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L);
5647 TEST_c_c (ccosh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L);
5648 TEST_c_c (ccosh, -89.5, -0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L);
5649
5650#ifndef TEST_FLOAT
5651 TEST_c_c (ccosh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L);
5652 TEST_c_c (ccosh, -710.5, 0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L);
5653 TEST_c_c (ccosh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L);
5654 TEST_c_c (ccosh, -710.5, -0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L);
5655#endif
5656
5657#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5658 TEST_c_c (ccosh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L);
5659 TEST_c_c (ccosh, -11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L);
5660 TEST_c_c (ccosh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L);
5661 TEST_c_c (ccosh, -11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L);
5662#endif
5663
5664#ifdef TEST_FLOAT
5665 TEST_c_c (ccosh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION);
5666#endif
5667
5668#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5669 TEST_c_c (ccosh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION);
5670#endif
5671
5672#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5673 TEST_c_c (ccosh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION);
5674#endif
5675
f0302940
JM
5676 TEST_c_c (ccosh, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION);
5677 TEST_c_c (ccosh, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION);
5678
6815fabc 5679 END (ccosh, complex);
8847214f
UD
5680}
5681
5682
5683static void
5684ceil_test (void)
5685{
5686 START (ceil);
5687
5688 TEST_f_f (ceil, 0.0, 0.0);
5689 TEST_f_f (ceil, minus_zero, minus_zero);
5690 TEST_f_f (ceil, plus_infty, plus_infty);
5691 TEST_f_f (ceil, minus_infty, minus_infty);
67e971f1 5692 TEST_f_f (ceil, qnan_value, qnan_value);
8847214f
UD
5693
5694 TEST_f_f (ceil, M_PIl, 4.0);
5695 TEST_f_f (ceil, -M_PIl, -3.0);
5c68d401 5696 TEST_f_f (ceil, 0.1, 1.0);
45740f46 5697 TEST_f_f (ceil, 0.25, 1.0);
5c68d401
RM
5698 TEST_f_f (ceil, 0.625, 1.0);
5699 TEST_f_f (ceil, -0.1, minus_zero);
97fd3a30 5700 TEST_f_f (ceil, -0.25, minus_zero);
5c68d401 5701 TEST_f_f (ceil, -0.625, minus_zero);
8847214f 5702
f964490f
RM
5703#ifdef TEST_LDOUBLE
5704 /* The result can only be represented in long double. */
5705 TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L);
5706 TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L);
5707 TEST_f_f (ceil, 4503599627370496.5L, 4503599627370497.0L);
5708 TEST_f_f (ceil, 4503599627370496.75L, 4503599627370497.0L);
5709 TEST_f_f (ceil, 4503599627370497.5L, 4503599627370498.0L);
5710
5711 TEST_f_f (ceil, -4503599627370495.5L, -4503599627370495.0L);
5712 TEST_f_f (ceil, -4503599627370496.25L, -4503599627370496.0L);
5713 TEST_f_f (ceil, -4503599627370496.5L, -4503599627370496.0L);
5714 TEST_f_f (ceil, -4503599627370496.75L, -4503599627370496.0L);
5715 TEST_f_f (ceil, -4503599627370497.5L, -4503599627370497.0L);
5716
5c68d401
RM
5717# if LDBL_MANT_DIG > 100
5718 TEST_f_f (ceil, 4503599627370494.5000000000001L, 4503599627370495.0L);
5719 TEST_f_f (ceil, 4503599627370495.5000000000001L, 4503599627370496.0L);
5720 TEST_f_f (ceil, 4503599627370496.5000000000001L, 4503599627370497.0L);
5721 TEST_f_f (ceil, -4503599627370494.5000000000001L, -4503599627370494.0L);
5722 TEST_f_f (ceil, -4503599627370495.5000000000001L, -4503599627370495.0L);
5723 TEST_f_f (ceil, -4503599627370496.5000000000001L, -4503599627370496.0L);
5724# endif
5725
f964490f
RM
5726 TEST_f_f (ceil, 9007199254740991.5L, 9007199254740992.0L);
5727 TEST_f_f (ceil, 9007199254740992.25L, 9007199254740993.0L);
5728 TEST_f_f (ceil, 9007199254740992.5L, 9007199254740993.0L);
5729 TEST_f_f (ceil, 9007199254740992.75L, 9007199254740993.0L);
5730 TEST_f_f (ceil, 9007199254740993.5L, 9007199254740994.0L);
5731
5732 TEST_f_f (ceil, -9007199254740991.5L, -9007199254740991.0L);
5733 TEST_f_f (ceil, -9007199254740992.25L, -9007199254740992.0L);
5734 TEST_f_f (ceil, -9007199254740992.5L, -9007199254740992.0L);
5735 TEST_f_f (ceil, -9007199254740992.75L, -9007199254740992.0L);
5736 TEST_f_f (ceil, -9007199254740993.5L, -9007199254740993.0L);
5737
5c68d401
RM
5738# if LDBL_MANT_DIG > 100
5739 TEST_f_f (ceil, 9007199254740991.0000000000001L, 9007199254740992.0L);
5740 TEST_f_f (ceil, 9007199254740992.0000000000001L, 9007199254740993.0L);
5741 TEST_f_f (ceil, 9007199254740993.0000000000001L, 9007199254740994.0L);
5742 TEST_f_f (ceil, 9007199254740991.5000000000001L, 9007199254740992.0L);
5743 TEST_f_f (ceil, 9007199254740992.5000000000001L, 9007199254740993.0L);
5744 TEST_f_f (ceil, 9007199254740993.5000000000001L, 9007199254740994.0L);
5745
5746 TEST_f_f (ceil, -9007199254740991.0000000000001L, -9007199254740991.0L);
5747 TEST_f_f (ceil, -9007199254740992.0000000000001L, -9007199254740992.0L);
5748 TEST_f_f (ceil, -9007199254740993.0000000000001L, -9007199254740993.0L);
5749 TEST_f_f (ceil, -9007199254740991.5000000000001L, -9007199254740991.0L);
5750 TEST_f_f (ceil, -9007199254740992.5000000000001L, -9007199254740992.0L);
5751 TEST_f_f (ceil, -9007199254740993.5000000000001L, -9007199254740993.0L);
5752# endif
5753
f964490f
RM
5754 TEST_f_f (ceil, 72057594037927935.5L, 72057594037927936.0L);
5755 TEST_f_f (ceil, 72057594037927936.25L, 72057594037927937.0L);
5756 TEST_f_f (ceil, 72057594037927936.5L, 72057594037927937.0L);
5757 TEST_f_f (ceil, 72057594037927936.75L, 72057594037927937.0L);
5758 TEST_f_f (ceil, 72057594037927937.5L, 72057594037927938.0L);
5759
5760 TEST_f_f (ceil, -72057594037927935.5L, -72057594037927935.0L);
5761 TEST_f_f (ceil, -72057594037927936.25L, -72057594037927936.0L);
5762 TEST_f_f (ceil, -72057594037927936.5L, -72057594037927936.0L);
5763 TEST_f_f (ceil, -72057594037927936.75L, -72057594037927936.0L);
5764 TEST_f_f (ceil, -72057594037927937.5L, -72057594037927937.0L);
5765
5766 TEST_f_f (ceil, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L);
5767 TEST_f_f (ceil, 10141204801825835211973625643008.25L, 10141204801825835211973625643009.0L);
5768 TEST_f_f (ceil, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L);
5769 TEST_f_f (ceil, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L);
5770 TEST_f_f (ceil, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L);
5771#endif
5772
8847214f
UD
5773 END (ceil);
5774}
5775
5776
5777static void
5778cexp_test (void)
5779{
aaca11d8
UD
5780 errno = 0;
5781 FUNC(cexp) (BUILD_COMPLEX (0, 0));
5782 if (errno == ENOSYS)
5783 /* Function not implemented. */
5784 return;
5785
8847214f
UD
5786 START (cexp);
5787
5788 TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0);
5789 TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0);
5790 TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero);
5791 TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero);
5792
5793 TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0);
5794 TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero);
5795
5796 TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0);
5797 TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero);
5798
67e971f1
TS
5799 TEST_c_c (cexp, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
5800 TEST_c_c (cexp, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f 5801
67e971f1
TS
5802 TEST_c_c (cexp, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
5803 TEST_c_c (cexp, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f 5804
67e971f1
TS
5805 TEST_c_c (cexp, 100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
5806 TEST_c_c (cexp, -100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f 5807
67e971f1
TS
5808 TEST_c_c (cexp, 100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
5809 TEST_c_c (cexp, -100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f
UD
5810
5811 TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0);
5812 TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero);
5813 TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty);
5814 TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty);
5815
67e971f1
TS
5816 TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
5817 TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
8847214f
UD
5818
5819 TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN);
5820 TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN);
5821
67e971f1 5822 TEST_c_c (cexp, minus_infty, qnan_value, 0, 0, IGNORE_ZERO_INF_SIGN);
8847214f 5823
67e971f1 5824 TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value);
8847214f 5825
67e971f1
TS
5826 TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5827 TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5828
67e971f1
TS
5829 TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5830 TEST_c_c (cexp, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5831 TEST_c_c (cexp, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5832 TEST_c_c (cexp, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 5833
9d0c92b2 5834 TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L);
d8337213 5835 TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L);
8847214f 5836
1a4ac776
JM
5837 TEST_c_c (cexp, 0, 0x1p65, 0.99888622066058013610642172179340364209972L, -0.047183876212354673805106149805700013943218L);
5838 TEST_c_c (cexp, 0, -0x1p65, 0.99888622066058013610642172179340364209972L, 0.047183876212354673805106149805700013943218L);
5839 TEST_c_c (cexp, 50, 0x1p127, 4.053997150228616856622417636046265337193e21L, 3.232070315463388524466674772633810238819e21L);
5840
5841#ifndef TEST_FLOAT
5842 TEST_c_c (cexp, 0, 1e22, 0.5232147853951389454975944733847094921409L, -0.8522008497671888017727058937530293682618L);
5843 TEST_c_c (cexp, 0, 0x1p1023, -0.826369834614147994500785680811743734805L, 0.5631277798508840134529434079444683477104L);
5844 TEST_c_c (cexp, 500, 0x1p1023, -1.159886268932754433233243794561351783426e217L, 7.904017694554466595359379965081774849708e216L);
5845#endif
5846
5847#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5848 TEST_c_c (cexp, 0, 0x1p16383L, 0.9210843909921906206874509522505756251609L, 0.3893629985894208126948115852610595405563L);
5849 TEST_c_c (cexp, -10000, 0x1p16383L, 1.045876464564882298442774542991176546722e-4343L, 4.421154026488516836023811173959413420548e-4344L);
5850#endif
5851
7c69cd14 5852 TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L);
80bad0cc 5853 TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L, UNDERFLOW_EXCEPTION_FLOAT);
7c69cd14
JM
5854
5855#ifndef TEST_FLOAT
5856 TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L);
80bad0cc 5857 TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L, UNDERFLOW_EXCEPTION_DOUBLE);
7c69cd14
JM
5858#endif
5859
5860#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5861 TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L);
80bad0cc 5862 TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L, UNDERFLOW_EXCEPTION);
7c69cd14
JM
5863#endif
5864
5865#ifdef TEST_FLOAT
5866 TEST_c_c (cexp, 180, 0x1p-149, plus_infty, 2.087071793345235105931967606907855310664e33L, OVERFLOW_EXCEPTION);
5867#endif
5868
5869#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5870 TEST_c_c (cexp, 1440, 0x1p-1074, plus_infty, 1.196295853897226111293303155636183216483e302L, OVERFLOW_EXCEPTION);
5871#endif
5872
5873#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5874 TEST_c_c (cexp, 22730, 0x1p-16434L, plus_infty, 2.435706297811211974162115164702304105374e4924L, OVERFLOW_EXCEPTION);
5875#endif
5876
5877 TEST_c_c (cexp, 1e6, 0, plus_infty, 0, OVERFLOW_EXCEPTION);
5878 TEST_c_c (cexp, 1e6, min_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION);
5879 TEST_c_c (cexp, 1e6, -min_value, plus_infty, minus_infty, OVERFLOW_EXCEPTION);
5880
05e166c8
JM
5881 TEST_c_c (cexp, min_value, min_subnorm_value, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION);
5882 TEST_c_c (cexp, min_value, -min_subnorm_value, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION);
5883
6815fabc 5884 END (cexp, complex);
8847214f
UD
5885}
5886
2550dfe9 5887
0cdc8e6f
UD
5888static void
5889cimag_test (void)
5890{
5891 START (cimag);
5892 TEST_c_f (cimag, 1.0, 0.0, 0.0);
5893 TEST_c_f (cimag, 1.0, minus_zero, minus_zero);
67e971f1
TS
5894 TEST_c_f (cimag, 1.0, qnan_value, qnan_value);
5895 TEST_c_f (cimag, qnan_value, qnan_value, qnan_value);
0cdc8e6f
UD
5896 TEST_c_f (cimag, 1.0, plus_infty, plus_infty);
5897 TEST_c_f (cimag, 1.0, minus_infty, minus_infty);
5898 TEST_c_f (cimag, 2.0, 3.0, 3.0);
5899
5900 END (cimag);
5901}
5902
8847214f
UD
5903static void
5904clog_test (void)
5905{
aaca11d8
UD
5906 errno = 0;
5907 FUNC(clog) (BUILD_COMPLEX (-2, -3));
5908 if (errno == ENOSYS)
5909 /* Function not implemented. */
5910 return;
5911
8847214f
UD
5912 START (clog);
5913
5914 TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
5915 TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
5916
5917 TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION);
5918 TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION);
5919
5920 TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l);
5921 TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l);
5922
5923 TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l);
5924 TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l);
5925
5926 TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l);
5927 TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l);
5928 TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l);
5929 TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l);
5930 TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l);
5931 TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l);
5932 TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l);
5933 TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l);
5934
5935 TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl);
5936 TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl);
5937 TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl);
5938 TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl);
5939
5940 TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0);
5941 TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0);
5942 TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero);
5943 TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero);
5944
67e971f1
TS
5945 TEST_c_c (clog, plus_infty, qnan_value, plus_infty, qnan_value);
5946 TEST_c_c (clog, minus_infty, qnan_value, plus_infty, qnan_value);
8847214f 5947
67e971f1
TS
5948 TEST_c_c (clog, qnan_value, plus_infty, plus_infty, qnan_value);
5949 TEST_c_c (clog, qnan_value, minus_infty, plus_infty, qnan_value);
8847214f 5950
67e971f1
TS
5951 TEST_c_c (clog, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5952 TEST_c_c (clog, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5953 TEST_c_c (clog, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5954 TEST_c_c (clog, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5955
67e971f1
TS
5956 TEST_c_c (clog, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5957 TEST_c_c (clog, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5958 TEST_c_c (clog, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
5959 TEST_c_c (clog, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 5960
67e971f1 5961 TEST_c_c (clog, qnan_value, qnan_value, qnan_value, qnan_value);
2550dfe9
AJ
5962
5963 TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L);
33e885db 5964 TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L);
8847214f 5965
1897ad44 5966 TEST_c_c (clog, 0x1.fffffep+127L, 0x1.fffffep+127L, 89.06941264234832570836679262104313101776L, M_PI_4l);
80bad0cc 5967 TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1897ad44
JM
5968 TEST_c_c (clog, 0x1p-149L, 0x1p-149L, -102.9323563131518784484589700365392203592L, M_PI_4l);
5969 TEST_c_c (clog, 0x1p-147L, 0x1p-147L, -101.5460619520319878296245057936228672231L, M_PI_4l);
5970
5971#ifndef TEST_FLOAT
5972 TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 710.1292864836639693869320059713862337880L, M_PI_4l);
5973 TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 709.8942846690411016323109979483151967689L, 0.4636476090008061606231772164674799632783L);
5974 TEST_c_c (clog, 0x1p-1074L, 0x1p-1074L, -744.0934983311012896593986823853525458290L, M_PI_4l);
5975 TEST_c_c (clog, 0x1p-1073L, 0x1p-1073L, -743.4003511505413443499814502638943692610L, M_PI_4l);
5976#endif
5977
5978#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5979 TEST_c_c (clog, 0x1.fp+16383L, 0x1.fp+16383L, 11356.83823118610934184548269774874545400L, M_PI_4l);
5980 TEST_c_c (clog, 0x1.fp+16383L, 0x1p+16383L, 11356.60974243783798653123798337822335902L, 0.4764674194737066993385333770295162295856L);
5981 TEST_c_c (clog, 0x1p-16440L, 0x1p-16441L, -11395.22807662984378194141292922726786191L, 0.4636476090008061162142562314612144020285L);
5982#endif
5983
638a572e
JM
5984 TEST_c_c (clog, 0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l);
5985 TEST_c_c (clog, -0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l);
5986 TEST_c_c (clog, 0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l);
5987 TEST_c_c (clog, -0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l);
5988 TEST_c_c (clog, -0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, M_PIl);
5989 TEST_c_c (clog, -0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, -M_PIl);
5990#ifdef TEST_FLOAT
5991 TEST_c_c (clog, 0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, plus_zero, UNDERFLOW_EXCEPTION);
5992 TEST_c_c (clog, 0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, minus_zero, UNDERFLOW_EXCEPTION);
5993#endif
5994
5995#ifndef TEST_FLOAT
5996 TEST_c_c (clog, 0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l);
5997 TEST_c_c (clog, -0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l);
5998 TEST_c_c (clog, 0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l);
5999 TEST_c_c (clog, -0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l);
6000 TEST_c_c (clog, -0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, M_PIl);
6001 TEST_c_c (clog, -0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, -M_PIl);
6002#endif
6003#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6004 TEST_c_c (clog, 0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, plus_zero, UNDERFLOW_EXCEPTION);
6005 TEST_c_c (clog, 0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, minus_zero, UNDERFLOW_EXCEPTION);
6006#endif
6007
6008#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6009 TEST_c_c (clog, 0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l);
6010 TEST_c_c (clog, -0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l);
6011 TEST_c_c (clog, 0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l);
6012 TEST_c_c (clog, -0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l);
6013 TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, M_PIl);
6014 TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, -M_PIl);
6015 TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION);
6016 TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION);
6017# if LDBL_MANT_DIG >= 113
6018 TEST_c_c (clog, 0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l);
6019 TEST_c_c (clog, -0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l);
6020 TEST_c_c (clog, 0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l);
6021 TEST_c_c (clog, -0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l);
6022 TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, M_PIl);
6023 TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, -M_PIl);
6024 TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION);
6025 TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION);
6026# endif
6027#endif
6028
da865e95
JM
6029 TEST_c_c (clog, 1.0L, 0x1.234566p-10L, 6.172834701221959432440126967147726538097e-7L, 1.111110564353742042376451655136933182201e-3L);
6030 TEST_c_c (clog, -1.0L, 0x1.234566p-20L, 5.886877547844618300918562490463748605537e-13L, 3.141591568520436206990380699322226378452L);
6031 TEST_c_c (clog, 0x1.234566p-30L, 1.0L, 5.614163921211322622623353961365728040115e-19L, 1.570796325735258575254858696548386439740L);
6032 TEST_c_c (clog, -0x1.234566p-40L, -1.0L, 5.354083939753840089583620652120903838944e-25L, -1.570796326795931422008642456283782656359L);
6033 TEST_c_c (clog, 0x1.234566p-50L, 1.0L, 5.106052341226425256332038420428899201070e-31L, 1.570796326794895608681734464330528755366L);
6034 TEST_c_c (clog, 0x1.234566p-60L, 1.0L, 4.869510976053643471080816669875627875933e-37L, 1.570796326794896618244456860363082279319L);
6035 TEST_c_c (clog, 0x1p-62L, 1.0L, 2.350988701644575015937473074444491355582e-38L, 1.570796326794896619014481257142650555297L);
6036 TEST_c_c (clog, 0x1p-63L, 1.0L, 5.877471754111437539843682686111228389059e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT);
6037 TEST_c_c (clog, 0x1p-64L, 1.0L, 1.469367938527859384960920671527807097271e-39L, 1.570796326794896619177111583015476220398L, UNDERFLOW_EXCEPTION_FLOAT);
6038#ifndef TEST_FLOAT
6039 TEST_c_c (clog, 0x1p-510L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
6040 TEST_c_c (clog, 0x1p-511L, 1.0L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
6041 TEST_c_c (clog, 0x1p-512L, 1.0L, 2.781342323134001728862790896665505080274e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE);
6042#endif
6043#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6044 TEST_c_c (clog, 0x1p-8190L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 1.570796326794896619231321691639751442099L);
6045 TEST_c_c (clog, 0x1p-8191L, 1.0L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
6046 TEST_c_c (clog, 0x1p-8192L, 1.0L, 4.202628928890116882828347271652190753248e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION);
6047#endif
6048
d0419dbf
JM
6049 TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-10L, 8.298731898331237038231468223024422855654e-5L, 1.110938609507128729312743251313024793990e-3L);
6050 TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-100L, 8.237022655933121125560939513260027133767e-5L, 8.974094312218060110948251664314290484113e-31L);
6051#ifndef TEST_FLOAT
6052 TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-30L, 2.649094282537168795982991778475646793277e-10L, 3.141592652530155111500161671113150737892L);
6053 TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 2.649094276923003995420209214900915462737e-10L, 3.141592653589793238462643383279502884197L);
6054#endif
6055#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6056 TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 9.868649107778739757272772275265050767867e-19L, 9.868649106423871142816660980898339912137e-19L);
c9c0279b 6057 TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 9.868649107778739752403260515979017248596e-19L, 1.061846605795612822522063052130030717368e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
d0419dbf
JM
6058#endif
6059
d032e0d2
JM
6060 TEST_c_c (clog, 0x0.ffffffp0L, 0x0.ffffffp-100L, -5.960464655174753498633255797994360530379e-8L, 7.888609052210118054117285652827862296732e-31L);
6061#ifndef TEST_FLOAT
c9c0279b 6062 TEST_c_c (clog, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -1.110223024625156602053389888482372171810e-16L, 9.332636185032188789900895447238171696171e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
d032e0d2
JM
6063#endif
6064#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6065 TEST_c_c (clog, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -5.421010862427522170184200798202494495630e-20L, 3.548665303440282824232502561095699343814e-4516L);
6066#endif
6067
6068 TEST_c_c (clog, 0x1a6p-10L, 0x3a5p-10L, -1.4305135209763571252847059962654228661815e-06L, 1.1460277178115757370775644871674016684074L);
6069 TEST_c_c (clog, 0xf2p-10L, 0x3e3p-10L, 6.1988446308070710970664736815277450078106e-06L, 1.3322126499153926210226335249558203898460L);
6070 TEST_c_c (clog, 0x4d4ep-15L, 0x6605p-15L, -1.6298145321400412054744424587143483169412e-08L, 0.9223574537155056772124552172295398141249L);
6071 TEST_c_c (clog, 0x2818p-15L, 0x798fp-15L, 1.5366822245016167178749091974664853785194e-08L, 1.2522014929038946066987318471922169174157L);
6072 TEST_c_c (clog, 0x9b57bp-20L, 0xcb7b4p-20L, -3.9563019528687610863490232935890272740908e-11L, 0.9187593477446338910857133065497364950682L);
6073 TEST_c_c (clog, 0x2731p-20L, 0xfffd0p-20L, 4.4110493034041283943115971658295280288115e-11L, 1.5612279663766352262688735061954290528838L);
6074 TEST_c_c (clog, 0x2ede88p-23L, 0x771c3fp-23L, -4.4764192352906350039050902870893173560494e-13L, 1.1959106857549200806818600493552847793381L);
6075 TEST_c_c (clog, 0x11682p-23L, 0x7ffed1p-23L, 1.1723955140027907954461000991619077811832e-12L, 1.5622968405332756349813737986164832897108L);
6076 TEST_c_c (clog, 0xa1f2c1p-24L, 0xc643aep-24L, -1.0480505352462576151523512837107080269981e-13L, 0.8858771987699967480545613322309315260313L);
6077 TEST_c_c (clog, 0x659feap-24L, 0xeaf6f9p-24L, 3.7303493627403868207597214252239749960738e-14L, 1.1625816408046866464773042283673653469061L);
6078#ifndef TEST_FLOAT
6079 TEST_c_c (clog, 0x4447d7175p-35L, 0x6c445e00ap-35L, -1.4823076576950255933915367361099865652625e-20L, 1.0081311552703893116404606212158840190615L);
6080 TEST_c_c (clog, 0x2dd46725bp-35L, 0x7783a1284p-35L, 4.4469229730850767799109418892826021157328e-20L, 1.2046235979300843056806465045930070146351L);
6081 TEST_c_c (clog, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -3.0292258760486853327810377824479932031744e-26L, 0.7998237934177411746093524982030330293980L);
6082 TEST_c_c (clog, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 5.3718272201930019901317065495843842735179e-26L, 1.0503831592447830576186444373011142397404L);
6083 TEST_c_c (clog, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -6.2122796286154679676173624516405339768606e-30L, 1.4904138780720095276446375492434049214172L);
6084 TEST_c_c (clog, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 3.2047474274603604594851472963586149973093e-29L, 1.4422922682185099608731642353544207976604L);
6085 TEST_c_c (clog, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -9.7375017988218644730510244778042114638107e-30L, 0.9790637929494922564724108399524154766631L);
6086 TEST_c_c (clog, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 8.3076914081087805757422664530653247447136e-30L, 1.2072712126771536614482822173033535043206L);
6087 TEST_c_c (clog, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -2.5083311595699359750201056724289010648701e-30L, 1.3710185432462268491534742969536240564640L);
6088 TEST_c_c (clog, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 1.0168910106364605304135563536838075568606e-30L, 0.8208373755522359859870890246475340086663L);
6089 TEST_c_c (clog, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 5.0844550531823026520677817684239496041087e-32L, 1.2627468605458094918919206628466016525397L);
6090 TEST_c_c (clog, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -5.2000108498455368032511404449795741611813e-32L, 1.5288921536982513453421343495466824420259L);
6091#endif
6092#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6093 TEST_c_c (clog, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -1.1931267660846218205882675852805793644095e-36L, 1.2402109774337032400594953899784058127412L);
6094 TEST_c_c (clog, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 6.4064442119814669184296141278612389400075e-37L, 0.9193591364645830864185131402313014890145L);
6095 TEST_c_c (clog, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -2.3362950222592964220878638677292132852104e-37L, 1.1856121127236268105413184264288408265852L);
6096 TEST_c_c (clog, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 2.4244570985709679851855191080208817099132e-37L, 1.1393074519572050614551047548718495655972L);
6097 TEST_c_c (clog, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -9.9182335850630508484862145328126979066934e-39L, 1.3146479888794807046338799047003947008804L);
6098#endif
6099#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6100 TEST_c_c (clog, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -1.0509738482436128031927971874674370984602e-45L, 1.0509191467640012308402149909370784281448L);
6101 TEST_c_c (clog, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 1.3487497719126364307640897239165442763573e-43L, 1.1750493008528425228929764149024375035382L);
6102 TEST_c_c (clog, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -4.7775669192897997174762089350332738583822e-50L, 0.8393953487996880419413728440067635213372L);
6103 TEST_c_c (clog, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 2.8398125044729578740243199963484494962411e-50L, 0.9149964976334130461795060758257083099706L);
6104 TEST_c_c (clog, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -3.5048022044913950094635368750889659723004e-57L, 1.3345633256521815205858155673950177421079L);
6105 TEST_c_c (clog, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 4.1101771307217268747345114262406964584250e-56L, 1.4596065864518742494094402406719567059585L);
6106 TEST_c_c (clog, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -1.4281333889622737316199756373421183559948e-62L, 1.3673546561165378090903506783353927980633L);
6107 TEST_c_c (clog, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 1.0027319539522347477331743836657426754857e-62L, 0.8193464073721167323313606647411269414759L);
6108 TEST_c_c (clog, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -1.7471844652198029695350765775994001163767e-63L, 1.1789110097072986038243729592318526094314L);
6109 TEST_c_c (clog, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 4.3299788920664682288477984749202524623248e-63L, 1.4746938237585656250866370987773473745867L);
6110#endif
6111#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6112 TEST_c_c (clog, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -1.1683999374665377365054966073875064467108e-66L, 1.3257197596350832748781065387304444940172L);
6113 TEST_c_c (clog, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 1.5077923002544367932999503838191154621839e-65L, 1.2897445708311412721399861948957141824914L);
6114 TEST_c_c (clog, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -7.1865869169568789348552370692485515571497e-67L, 0.8730167479365994646287897223471819363668L);
6115 TEST_c_c (clog, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 6.6255694866654064502633121109394710807528e-66L, 1.0526409614996288387567810726095850312049L);
6116 TEST_c_c (clog, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 4.6017338806965821566734340588575402712716e-67L, 1.3547418904611758959096647942223384691728L);
6117 TEST_c_c (clog, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 2.5993421227864195179698176012564317527271e-67L, 1.4132318089683022770487383611430906982461L);
6118#endif
6119
6815fabc 6120 END (clog, complex);
8847214f
UD
6121}
6122
6123
6124static void
6125clog10_test (void)
6126{
aaca11d8 6127 errno = 0;
3c6cad26 6128 FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
6129 if (errno == ENOSYS)
6130 /* Function not implemented. */
6131 return;
6132
8847214f
UD
6133 START (clog10);
6134
6135 TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
6136 TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
6137
6138 TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION);
6139 TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION);
6140
6141 TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El);
6142
6143 TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El);
6144 TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El);
6145
6146 TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El);
6147 TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El);
6148 TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El);
6149 TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El);
6150 TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El);
6151 TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El);
6152 TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El);
6153 TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El);
6154
6155 TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El);
6156 TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El);
6157 TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El);
6158 TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El);
6159
6160 TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0);
6161 TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0);
6162 TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero);
6163 TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero);
6164
67e971f1
TS
6165 TEST_c_c (clog10, plus_infty, qnan_value, plus_infty, qnan_value);
6166 TEST_c_c (clog10, minus_infty, qnan_value, plus_infty, qnan_value);
8847214f 6167
67e971f1
TS
6168 TEST_c_c (clog10, qnan_value, plus_infty, plus_infty, qnan_value);
6169 TEST_c_c (clog10, qnan_value, minus_infty, plus_infty, qnan_value);
8847214f 6170
67e971f1
TS
6171 TEST_c_c (clog10, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6172 TEST_c_c (clog10, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6173 TEST_c_c (clog10, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6174 TEST_c_c (clog10, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 6175
67e971f1
TS
6176 TEST_c_c (clog10, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6177 TEST_c_c (clog10, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6178 TEST_c_c (clog10, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6179 TEST_c_c (clog10, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 6180
67e971f1 6181 TEST_c_c (clog10, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 6182
2550dfe9 6183 TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L);
79df8ce5 6184 TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L);
8847214f 6185
1897ad44 6186 TEST_c_c (clog10, 0x1.fffffep+127L, 0x1.fffffep+127L, 38.68235441693561449174780668781319348761L, M_PI4_LOG10El);
80bad0cc 6187 TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L, UNDERFLOW_EXCEPTION_FLOAT);
1897ad44
JM
6188 TEST_c_c (clog10, 0x1p-149L, 0x1p-149L, -44.70295435610120748924022586658721447508L, M_PI4_LOG10El);
6189 TEST_c_c (clog10, 0x1p-147L, 0x1p-147L, -44.10089436477324509881274807713822842154L, M_PI4_LOG10El);
6190
6191#ifndef TEST_FLOAT
6192 TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 308.4052305577487344482591243175787477115L, M_PI4_LOG10El);
6193 TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 308.3031705664207720674749211936626341569L, 0.2013595981366865903254995612594728746470L);
6194 TEST_c_c (clog10, 0x1p-1074L, 0x1p-1074L, -323.1557003452838130619487034867432642357L, M_PI4_LOG10El);
6195 TEST_c_c (clog10, 0x1p-1073L, 0x1p-1073L, -322.8546703496198318667349645920187712089L, M_PI4_LOG10El);
6196#endif
6197
6198#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6199 TEST_c_c (clog10, 0x1.fp+16383L, 0x1.fp+16383L, 4932.212175672014259683102930239951947672L, M_PI4_LOG10El);
6200 TEST_c_c (clog10, 0x1.fp+16383L, 0x1p+16383L, 4932.112944269463028900262609694408579449L, 0.2069271710841128115912940666587802677383L);
6201 TEST_c_c (clog10, 0x1p-16440L, 0x1p-16441L, -4948.884673709346821106688037612752099609L, 0.2013595981366865710389502301937289472543L);
6202#endif
6203
638a572e
JM
6204 TEST_c_c (clog10, 0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L);
6205 TEST_c_c (clog10, -0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L);
6206 TEST_c_c (clog10, 0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L);
6207 TEST_c_c (clog10, -0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L);
6208 TEST_c_c (clog10, -0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, 1.364376353841841347485783625431355770210L);
6209 TEST_c_c (clog10, -0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, -1.364376353841841347485783625431355770210L);
6210#ifdef TEST_FLOAT
6211 TEST_c_c (clog10, 0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, plus_zero, UNDERFLOW_EXCEPTION);
6212 TEST_c_c (clog10, 0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, minus_zero, UNDERFLOW_EXCEPTION);
6213#endif
6214
6215#ifndef TEST_FLOAT
6216 TEST_c_c (clog10, 0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L);
6217 TEST_c_c (clog10, -0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L);
6218 TEST_c_c (clog10, 0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L);
6219 TEST_c_c (clog10, -0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L);
6220 TEST_c_c (clog10, -0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, 1.364376353841841347485783625431355770210L);
6221 TEST_c_c (clog10, -0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, -1.364376353841841347485783625431355770210L);
6222#endif
6223#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6224 TEST_c_c (clog10, 0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, plus_zero, UNDERFLOW_EXCEPTION);
6225 TEST_c_c (clog10, 0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, minus_zero, UNDERFLOW_EXCEPTION);
6226#endif
6227
6228#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6229 TEST_c_c (clog10, 0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L);
6230 TEST_c_c (clog10, -0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L);
6231 TEST_c_c (clog10, 0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L);
6232 TEST_c_c (clog10, -0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L);
6233 TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L);
6234 TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L);
6235 TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION);
6236 TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION);
6237# if LDBL_MANT_DIG >= 113
6238 TEST_c_c (clog10, 0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L);
6239 TEST_c_c (clog10, -0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L);
6240 TEST_c_c (clog10, 0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L);
6241 TEST_c_c (clog10, -0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L);
6242 TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L);
6243 TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L);
6244 TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION);
6245 TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION);
6246# endif
6247#endif
6248
da865e95
JM
6249 TEST_c_c (clog10, 1.0L, 0x1.234566p-10L, 2.680828048441605163181684680300513080769e-7L, 4.825491868832381486767558728169977751564e-4L);
6250 TEST_c_c (clog10, -1.0L, 0x1.234566p-20L, 2.556638434669064077889576526006849923281e-13L, 1.364375882602207106407956770293808181427L);
6251 TEST_c_c (clog10, 0x1.234566p-30L, 1.0L, 2.438200411482400072282924063740535840474e-19L, 6.821881764607257184291586401763604544928e-1L);
6252 TEST_c_c (clog10, -0x1.234566p-40L, -1.0L, 2.325249110681915353442924915876654139373e-25L, -6.821881769213700828789403802671540158935e-1L);
6253 TEST_c_c (clog10, 0x1.234566p-50L, 1.0L, 2.217530356103816369479108963807448194409e-31L, 6.821881769209202348667823902864283966959e-1L);
6254 TEST_c_c (clog10, 0x1.234566p-60L, 1.0L, 2.114801746467415208319767917450504756866e-37L, 6.821881769209206733143018621078368211515e-1L);
6255 TEST_c_c (clog10, 0x1p-61L, 1.0L, 4.084085680564517578238994467153626207224e-38L, 6.821881769209206735545466044044889962925e-1L);
6256 TEST_c_c (clog10, 0x1p-62L, 1.0L, 1.021021420141129394559748616788406551878e-38L, 6.821881769209206736487192085600834406988e-1L, UNDERFLOW_EXCEPTION_FLOAT);
6257 TEST_c_c (clog10, 0x1p-63L, 1.0L, 2.552553550352823486399371541971016379740e-39L, 6.821881769209206736958055106378806629019e-1L, UNDERFLOW_EXCEPTION_FLOAT);
6258#ifndef TEST_FLOAT
6259 TEST_c_c (clog10, 0x1p-509L, 1.0L, 7.730698388614835910296270976605350994446e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
6260 TEST_c_c (clog10, 0x1p-510L, 1.0L, 1.932674597153708977574067744151337748612e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
6261 TEST_c_c (clog10, 0x1p-511L, 1.0L, 4.831686492884272443935169360378344371529e-309L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE);
6262#endif
6263#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6264 TEST_c_c (clog10, 0x1p-8189L, 1.0L, 1.168114274114528946314738738025008370069e-4931L, 6.821881769209206737428918127156778851051e-1L);
6265 TEST_c_c (clog10, 0x1p-8190L, 1.0L, 2.920285685286322365786846845062520925172e-4932L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION);
6266 TEST_c_c (clog10, 0x1p-8191L, 1.0L, 7.300714213215805914467117112656302312931e-4933L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION);
6267#endif
6268
d0419dbf
JM
6269 TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-10L, 3.604093470239754109961125085078190708674e-5L, 4.824745078422174667425851670822596859720e-4L);
6270 TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-100L, 3.577293486783822178310971763308187385546e-5L, 3.897399639875661463735636919790792140598e-31L);
6271#ifndef TEST_FLOAT
6272 TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-30L, 1.150487028947346337782682105935961875822e-10L, 1.364376353381646356131680448946397884147L);
6273 TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 1.150487026509145544402795327729455391948e-10L, 1.364376353841841347485783625431355770210L);
6274#endif
6275#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6276 TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 4.285899851347756188767674032946882584784e-19L, 4.285899850759344225805480528847018395861e-19L);
c9c0279b 6277 TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 4.285899851347756186652871946325962330640e-19L, 4.611541215247321502041995872887317363241e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
d0419dbf
JM
6278#endif
6279
d032e0d2
JM
6280 TEST_c_c (clog10, 0x0.ffffffp0L, 0x0.ffffffp-100L, -2.588596909321764128428416045209904492216e-8L, 3.425979381266895667295625489912064603415e-31L);
6281#ifndef TEST_FLOAT
c9c0279b 6282 TEST_c_c (clog10, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -4.821637332766435821255375046554377090472e-17L, 4.053112396770095089737411317782466262176e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
d032e0d2
JM
6283#endif
6284#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6285 TEST_c_c (clog10, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -2.354315103889861110220423157644627849164e-20L, 1.541165759405643564697852372112893034397e-4516L);
6286#endif
6287
6288 TEST_c_c (clog10, 0x1a6p-10L, 0x3a5p-10L, -6.2126412844802358329771948751248003038444e-07L, 0.4977135139537443711784513409096950995985L);
6289 TEST_c_c (clog10, 0xf2p-10L, 0x3e3p-10L, 2.6921240173351112953324592659528481616879e-06L, 0.5785726025799636431142862788413361783862L);
6290 TEST_c_c (clog10, 0x4d4ep-15L, 0x6605p-15L, -7.0781945783414996953799915941870192015212e-09L, 0.4005747524909781155537088181659175147564L);
6291 TEST_c_c (clog10, 0x2818p-15L, 0x798fp-15L, 6.6737261053986614395049481326819059203910e-09L, 0.5438241985991753781478398141908629586460L);
6292 TEST_c_c (clog10, 0x9b57bp-20L, 0xcb7b4p-20L, -1.7182001068739620267773842120965071561416e-11L, 0.3990121149225253562859800593935899629087L);
6293 TEST_c_c (clog10, 0x2731p-20L, 0xfffd0p-20L, 1.9156943718715958194239364991329064049438e-11L, 0.6780326907904082601285090019969008967595L);
6294 TEST_c_c (clog10, 0x2ede88p-23L, 0x771c3fp-23L, -1.9440841725722970687903291200493082253766e-13L, 0.5193774116724956222518530053006822210323L);
6295 TEST_c_c (clog10, 0x11682p-23L, 0x7ffed1p-23L, 5.0916490233953865181284669870035717560498e-13L, 0.6784968969384861816694467029319146542069L);
6296 TEST_c_c (clog10, 0xa1f2c1p-24L, 0xc643aep-24L, -4.5516256421319921959681423447271490869664e-14L, 0.3847315790697197749315054516562206543710L);
6297 TEST_c_c (clog10, 0x659feap-24L, 0xeaf6f9p-24L, 1.6200701438094619117335617123525612051457e-14L, 0.5049027913635038013499728086604870749732L);
6298#ifndef TEST_FLOAT
6299 TEST_c_c (clog10, 0x4447d7175p-35L, 0x6c445e00ap-35L, -6.4375803621988389731799033530075237868110e-21L, 0.4378257977686804492768642780897650927167L);
6300 TEST_c_c (clog10, 0x2dd46725bp-35L, 0x7783a1284p-35L, 1.9312741086596516918394613098872836703188e-20L, 0.5231613813514771042838490538484014771862L);
6301 TEST_c_c (clog10, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -1.3155760824064879362415202279780039150764e-26L, 0.3473590599762514228227328130640352044313L);
6302 TEST_c_c (clog10, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 2.3329549194675052736016290082882121135546e-26L, 0.4561756099441139182878993697611751382976L);
6303 TEST_c_c (clog10, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -2.6979587627476803379953050733225113494503e-30L, 0.6472785229986997177606324374555347813105L);
6304 TEST_c_c (clog10, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 1.3918041236396763648388478552321724382899e-29L, 0.6263795733790237053262025311642907438291L);
6305 TEST_c_c (clog10, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -4.2289432987513243393180377141513840878196e-30L, 0.4252020027092323591068799049905597805296L);
6306 TEST_c_c (clog10, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 3.6079845358966994996207055940336690133424e-30L, 0.5243112258263349992771652393178033846555L);
6307 TEST_c_c (clog10, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -1.0893543813872082317104059174982092534059e-30L, 0.5954257879188711495921161433751775633232L);
6308 TEST_c_c (clog10, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 4.4163015461643576961232672330852798804976e-31L, 0.3564851427422832755956993418877523303529L);
6309 TEST_c_c (clog10, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 2.2081507730821788480616336165447731164865e-32L, 0.5484039935757001196548030312819898864760L);
6310 TEST_c_c (clog10, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -2.2583360179249556400630343805573865814771e-32L, 0.6639894257763289307423302343317622430835L);
6311#endif
6312#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6313 TEST_c_c (clog10, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -5.1816837072162316773907242302011632570857e-37L, 0.5386167838952956925896424154370364458140L);
6314 TEST_c_c (clog10, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 2.7822833698845776001753149807484078521508e-37L, 0.3992725998539071066769046272515417679815L);
6315 TEST_c_c (clog10, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -1.0146400362652473358437501879334790111898e-37L, 0.5149047982335273098246594109614460842099L);
6316 TEST_c_c (clog10, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 1.0529283395205396881397407610630442563938e-37L, 0.4947949395762683446121140513971996916447L);
6317 TEST_c_c (clog10, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -4.3074341162203896332989394770760901408798e-39L, 0.5709443672155660428417571212549720987784L);
6318#endif
6319#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6320 TEST_c_c (clog10, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -4.5643214291682663316715446865040356750881e-46L, 0.4564083863660793840592614609053162690362L);
6321 TEST_c_c (clog10, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 5.8575458340992751256451490143468457830297e-44L, 0.5103174273246635294300470585396890237265L);
6322 TEST_c_c (clog10, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -2.0748709499710785084693619097712106753591e-50L, 0.3645447681189598740620098186365764884771L);
6323 TEST_c_c (clog10, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 1.2333149003324592532859843519619084433953e-50L, 0.3973779298829931059309198145608711073016L);
6324 TEST_c_c (clog10, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -1.5221162575729652613635150540947625639689e-57L, 0.5795934880811949230121092882659698986043L);
6325 TEST_c_c (clog10, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 1.7850272475173865337808494725293124613817e-56L, 0.6338990862456906754888183278564382516852L);
6326 TEST_c_c (clog10, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -6.2023045024810589256360494043570293518879e-63L, 0.5938345819561308555003145899438513900776L);
6327 TEST_c_c (clog10, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 4.3548095442952115860848857519953610343042e-63L, 0.3558376234889641500775150477035448866763L);
6328 TEST_c_c (clog10, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -7.5879257211204444302994221436282805900756e-64L, 0.5119945461708707332160859198685423099187L);
6329 TEST_c_c (clog10, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 1.8804859395820231849002915747252695375405e-63L, 0.6404513901551516189871978418046651877394L);
6330#endif
6331#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6332 TEST_c_c (clog10, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -5.0742964549782184008668435276046798273476e-67L, 0.5757527761596220360985719127090110408283L);
6333 TEST_c_c (clog10, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 6.5482587585671294601662599808612773010057e-66L, 0.5601289501766423782280643144987875760229L);
6334 TEST_c_c (clog10, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -3.1210950417524756037077807411854181477733e-67L, 0.3791463562379872585396164879981280044658L);
6335 TEST_c_c (clog10, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 2.8774482675253468630312378575186855052697e-66L, 0.4571561610046221605554903008571429975493L);
6336 TEST_c_c (clog10, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 1.9985076315737626043096596036300177494613e-67L, 0.5883569274304683249184005177865521205198L);
6337 TEST_c_c (clog10, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 1.1288799405048268615023706955013387413519e-67L, 0.6137587762850841972073301550420510507903L);
6338#endif
6339
6815fabc 6340 END (clog10, complex);
8847214f
UD
6341}
6342
2550dfe9 6343
0cdc8e6f
UD
6344static void
6345conj_test (void)
6346{
6347 START (conj);
6348 TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero);
6349 TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0);
67e971f1 6350 TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value);
0cdc8e6f
UD
6351 TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty);
6352 TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty);
6353 TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0);
6354 TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0);
6355
6356 END (conj, complex);
6357}
6358
6359
8847214f
UD
6360static void
6361copysign_test (void)
6362{
6363 START (copysign);
6364
6365 TEST_ff_f (copysign, 0, 4, 0);
6366 TEST_ff_f (copysign, 0, -4, minus_zero);
6367 TEST_ff_f (copysign, minus_zero, 4, 0);
6368 TEST_ff_f (copysign, minus_zero, -4, minus_zero);
6369
6370 TEST_ff_f (copysign, plus_infty, 0, plus_infty);
6371 TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty);
6372 TEST_ff_f (copysign, minus_infty, 0, plus_infty);
6373 TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty);
6374
6375 TEST_ff_f (copysign, 0, plus_infty, 0);
6376 TEST_ff_f (copysign, 0, minus_zero, minus_zero);
6377 TEST_ff_f (copysign, minus_zero, plus_infty, 0);
6378 TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero);
6379
6380 /* XXX More correctly we would have to check the sign of the NaN. */
67e971f1
TS
6381 TEST_ff_f (copysign, qnan_value, 0, qnan_value);
6382 TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value);
6383 TEST_ff_f (copysign, -qnan_value, 0, qnan_value);
6384 TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value);
8847214f
UD
6385
6386 END (copysign);
6387}
6388
2550dfe9 6389
8847214f
UD
6390static void
6391cos_test (void)
6392{
e6d3c4a7
AJ
6393 errno = 0;
6394 FUNC(cos) (0);
6395 if (errno == ENOSYS)
6396 /* Function not implemented. */
6397 return;
6398
8847214f
UD
6399 START (cos);
6400
6401 TEST_f_f (cos, 0, 1);
6402 TEST_f_f (cos, minus_zero, 1);
f2da7793
JM
6403 TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
6404 TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
6405 TEST_f_f (cos, qnan_value, qnan_value, ERRNO_UNCHANGED);
8847214f
UD
6406
6407 TEST_f_f (cos, M_PI_6l * 2.0, 0.5);
6408 TEST_f_f (cos, M_PI_6l * 4.0, -0.5);
aba5e333
CD
6409
6410 /* The value of M_PI_2l is never exactly PI/2, and therefore the
6411 answer is never exactly zero. The answer is equal to the error
6412 in rounding PI/2 for the type used. Thus the answer is unique
6413 to each type. */
6414#ifdef TEST_FLOAT
6415 /* 32-bit float. */
418601aa 6416 TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L);
aba5e333
CD
6417#endif
6418#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
6419 /* 64-bit double or 64-bit long double. */
418601aa 6420 TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L);
aba5e333
CD
6421#endif
6422#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
6423 /* 96-bit long double. */
418601aa 6424 TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L);
aba5e333
CD
6425#endif
6426#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
6427 /* 128-bit IBM long double. */
418601aa 6428 TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L);
aba5e333
CD
6429#endif
6430#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
6431 /* 128-bit long double. */
418601aa 6432 TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L);
aba5e333 6433#endif
8847214f 6434
2550dfe9 6435 TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L);
8847214f 6436
ea40808a
AJ
6437 TEST_f_f (cos, 0x1p65, 0.99888622066058013610642172179340364209972L);
6438 TEST_f_f (cos, -0x1p65, 0.99888622066058013610642172179340364209972L);
8c0247db 6439
d32e4346
RM
6440#ifdef TEST_DOUBLE
6441 TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473);
8848d99d
JM
6442#endif
6443
7a845b2c
JM
6444 TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L);
6445
8848d99d
JM
6446#ifndef TEST_FLOAT
6447 TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L);
6448 TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L);
6449#endif
6450
6451#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6452 TEST_f_f (cos, 0x1p16383L, 0.9210843909921906206874509522505756251609L);
d32e4346
RM
6453#endif
6454
4ffffbd2
LD
6455 TEST_f_f (cos, 0x1p+120, -9.25879022854837867303861764107414946730833e-01L);
6456 TEST_f_f (cos, 0x1p+127, 7.81914638714960072263910298466369236613162e-01L);
6457 TEST_f_f (cos, 0x1.fffff8p+127, 9.98819362551949040703862043664101081064641e-01L);
6458 TEST_f_f (cos, 0x1.fffffep+127, 8.53021039830304158051791467692161107353094e-01L);
6459 TEST_f_f (cos, 0x1p+50, 8.68095904660550604334592502063501320395739e-01L);
6460 TEST_f_f (cos, 0x1p+28, -1.65568979490578758865468278195361551113358e-01L);
6461
8847214f
UD
6462 END (cos);
6463}
6464
2550dfe9 6465
804360ed
JM
6466static void
6467cos_test_tonearest (void)
6468{
6469 int save_round_mode;
6470 errno = 0;
6471 FUNC(cos) (0);
6472 if (errno == ENOSYS)
6473 /* Function not implemented. */
6474 return;
6475
6476 START (cos_tonearest);
6477
6478 save_round_mode = fegetround ();
6479
6480 if (!fesetround (FE_TONEAREST))
6481 {
6482 TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L);
6483 TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L);
6484 TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L);
6485 TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L);
6486 TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L);
6487 TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L);
6488 TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L);
6489 TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L);
6490 TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L);
6491 TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L);
6492 }
6493
6494 fesetround (save_round_mode);
6495
6496 END (cos_tonearest);
6497}
6498
6499
6500static void
6501cos_test_towardzero (void)
6502{
6503 int save_round_mode;
6504 errno = 0;
6505 FUNC(cos) (0);
6506 if (errno == ENOSYS)
6507 /* Function not implemented. */
6508 return;
6509
6510 START (cos_towardzero);
6511
6512 save_round_mode = fegetround ();
6513
6514 if (!fesetround (FE_TOWARDZERO))
6515 {
6516 TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L);
6517 TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L);
6518 TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L);
6519 TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L);
6520 TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L);
6521 TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L);
6522 TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L);
6523 TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L);
6524 TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L);
6525 TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L);
6526 }
6527
6528 fesetround (save_round_mode);
6529
6530 END (cos_towardzero);
6531}
6532
6533
6534static void
6535cos_test_downward (void)
6536{
6537 int save_round_mode;
6538 errno = 0;
6539 FUNC(cos) (0);
6540 if (errno == ENOSYS)
6541 /* Function not implemented. */
6542 return;
6543
6544 START (cos_downward);
6545
6546 save_round_mode = fegetround ();
6547
6548 if (!fesetround (FE_DOWNWARD))
6549 {
6550 TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L);
6551 TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L);
6552 TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L);
6553 TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L);
6554 TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L);
6555 TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L);
6556 TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L);
6557 TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L);
6558 TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L);
6559 TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L);
6560 }
6561
6562 fesetround (save_round_mode);
6563
6564 END (cos_downward);
6565}
6566
6567
6568static void
6569cos_test_upward (void)
6570{
6571 int save_round_mode;
6572 errno = 0;
6573 FUNC(cos) (0);
6574 if (errno == ENOSYS)
6575 /* Function not implemented. */
6576 return;
6577
6578 START (cos_upward);
6579
6580 save_round_mode = fegetround ();
6581
6582 if (!fesetround (FE_UPWARD))
6583 {
6584 TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L);
6585 TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L);
6586 TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L);
6587 TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L);
6588 TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L);
6589 TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L);
6590 TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L);
6591 TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L);
6592 TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L);
6593 TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L);
6594 }
6595
6596 fesetround (save_round_mode);
6597
6598 END (cos_upward);
6599}
6600
6601
8847214f
UD
6602static void
6603cosh_test (void)
6604{
aaca11d8 6605 errno = 0;
3c6cad26 6606 FUNC(cosh) (0.7L);
aaca11d8
UD
6607 if (errno == ENOSYS)
6608 /* Function not implemented. */
6609 return;
6610
8847214f
UD
6611 START (cosh);
6612 TEST_f_f (cosh, 0, 1);
6613 TEST_f_f (cosh, minus_zero, 1);
6614
15daa639 6615#ifndef TEST_INLINE
8847214f
UD
6616 TEST_f_f (cosh, plus_infty, plus_infty);
6617 TEST_f_f (cosh, minus_infty, plus_infty);
15daa639 6618#endif
67e971f1 6619 TEST_f_f (cosh, qnan_value, qnan_value);
8847214f 6620
2550dfe9
AJ
6621 TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L);
6622
e2283f38
JM
6623#ifndef TEST_FLOAT
6624 TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L);
6625 TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L);
6626#endif
6627
8847214f
UD
6628 END (cosh);
6629}
6630
6631
ca811b22
JM
6632static void
6633cosh_test_tonearest (void)
6634{
6635 int save_round_mode;
6636 errno = 0;
6637 FUNC(cosh) (0);
6638 if (errno == ENOSYS)
6639 /* Function not implemented. */
6640 return;
6641
6642 START (cosh_tonearest);
6643
6644 save_round_mode = fegetround ();
6645
6646 if (!fesetround (FE_TONEAREST))
6647 {
6648 TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L);
6649 TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L);
6650 TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L);
6651 }
6652
6653 fesetround (save_round_mode);
6654
6655 END (cosh_tonearest);
6656}
6657
6658
6659static void
6660cosh_test_towardzero (void)
6661{
6662 int save_round_mode;
6663 errno = 0;
6664 FUNC(cosh) (0);
6665 if (errno == ENOSYS)
6666 /* Function not implemented. */
6667 return;
6668
6669 START (cosh_towardzero);
6670
6671 save_round_mode = fegetround ();
6672
6673 if (!fesetround (FE_TOWARDZERO))
6674 {
6675 TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L);
6676 TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L);
6677 TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L);
6678 }
6679
6680 fesetround (save_round_mode);
6681
6682 END (cosh_towardzero);
6683}
6684
6685
6686static void
6687cosh_test_downward (void)
6688{
6689 int save_round_mode;
6690 errno = 0;
6691 FUNC(cosh) (0);
6692 if (errno == ENOSYS)
6693 /* Function not implemented. */
6694 return;
6695
6696 START (cosh_downward);
6697
6698 save_round_mode = fegetround ();
6699
6700 if (!fesetround (FE_DOWNWARD))
6701 {
6702 TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L);
6703 TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L);
6704 TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L);
6705 }
6706
6707 fesetround (save_round_mode);
6708
6709 END (cosh_downward);
6710}
6711
6712
6713static void
6714cosh_test_upward (void)
6715{
6716 int save_round_mode;
6717 errno = 0;
6718 FUNC(cosh) (0);
6719 if (errno == ENOSYS)
6720 /* Function not implemented. */
6721 return;
6722
6723 START (cosh_upward);
6724
6725 save_round_mode = fegetround ();
6726
6727 if (!fesetround (FE_UPWARD))
6728 {
6729 TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L);
6730 TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L);
6731 TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L);
6732 }
6733
6734 fesetround (save_round_mode);
6735
6736 END (cosh_upward);
6737}
6738
6739
8847214f
UD
6740static void
6741cpow_test (void)
6742{
aaca11d8
UD
6743 errno = 0;
6744 FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0));
6745 if (errno == ENOSYS)
6746 /* Function not implemented. */
6747 return;
6748
8847214f
UD
6749 START (cpow);
6750
6751 TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0);
6752 TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0);
6753
6754 TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0);
6755 TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0);
6756
67e971f1 6757 TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value);
15daa639 6758
96d10bdf
AJ
6759 TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L);
6760 TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L);
2550dfe9 6761 TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 0.0L, 0.75L, 1.25L);
96d10bdf 6762 TEST_cc_c (cpow, 0.75L, 1.25L, 0.0L, 1.0L, 0.331825439177608832276067945276730566L, 0.131338600281188544930936345230903032L);
2550dfe9 6763
6815fabc 6764 END (cpow, complex);
8847214f
UD
6765}
6766
2550dfe9 6767
8847214f
UD
6768static void
6769cproj_test (void)
6770{
6771 START (cproj);
6772 TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0);
6773 TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero);
6774 TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero);
6775 TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0);
6776
67e971f1 6777 TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f
UD
6778
6779 TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0);
6780 TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero);
6781 TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0);
6782 TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero);
6783
6784 TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0);
88e236a6 6785 TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0);
8847214f 6786
6815fabc 6787 END (cproj, complex);
8847214f
UD
6788}
6789
2550dfe9 6790
0cdc8e6f
UD
6791static void
6792creal_test (void)
6793{
6794 START (creal);
6795 TEST_c_f (creal, 0.0, 1.0, 0.0);
6796 TEST_c_f (creal, minus_zero, 1.0, minus_zero);
67e971f1
TS
6797 TEST_c_f (creal, qnan_value, 1.0, qnan_value);
6798 TEST_c_f (creal, qnan_value, qnan_value, qnan_value);
0cdc8e6f
UD
6799 TEST_c_f (creal, plus_infty, 1.0, plus_infty);
6800 TEST_c_f (creal, minus_infty, 1.0, minus_infty);
6801 TEST_c_f (creal, 2.0, 3.0, 2.0);
6802
6803 END (creal);
6804}
8847214f
UD
6805
6806static void
6807csin_test (void)
6808{
aaca11d8 6809 errno = 0;
3c6cad26 6810 FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
6811 if (errno == ENOSYS)
6812 /* Function not implemented. */
6813 return;
8847214f
UD
6814
6815 START (csin);
6816
6817 TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0);
6818 TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0);
6819 TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero);
6820 TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero);
6821
6822 TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty);
6823 TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty);
6824 TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty);
6825 TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty);
6826
67e971f1
TS
6827 TEST_c_c (csin, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6828 TEST_c_c (csin, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6829 TEST_c_c (csin, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6830 TEST_c_c (csin, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
8847214f 6831
67e971f1
TS
6832 TEST_c_c (csin, plus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6833 TEST_c_c (csin, minus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6834 TEST_c_c (csin, plus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6835 TEST_c_c (csin, minus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
8847214f 6836
67e971f1
TS
6837 TEST_c_c (csin, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION);
6838 TEST_c_c (csin, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION);
6839 TEST_c_c (csin, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION);
6840 TEST_c_c (csin, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f
UD
6841
6842 TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty);
6843 TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty);
6844 TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty);
6845 TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty);
6846
67e971f1
TS
6847 TEST_c_c (csin, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
6848 TEST_c_c (csin, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN);
8847214f 6849
67e971f1
TS
6850 TEST_c_c (csin, qnan_value, plus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
6851 TEST_c_c (csin, qnan_value, minus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
8847214f 6852
67e971f1
TS
6853 TEST_c_c (csin, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6854 TEST_c_c (csin, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 6855
67e971f1
TS
6856 TEST_c_c (csin, 0.0, qnan_value, 0.0, qnan_value);
6857 TEST_c_c (csin, minus_zero, qnan_value, minus_zero, qnan_value);
8847214f 6858
67e971f1
TS
6859 TEST_c_c (csin, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6860 TEST_c_c (csin, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 6861
67e971f1
TS
6862 TEST_c_c (csin, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6863 TEST_c_c (csin, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 6864
67e971f1 6865 TEST_c_c (csin, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 6866
2550dfe9 6867 TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L);
79df8ce5 6868 TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L);
8847214f 6869
e0b16cc2
JM
6870 TEST_c_c (csin, 0.75, 89.5, 2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L);
6871 TEST_c_c (csin, 0.75, -89.5, 2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L);
6872 TEST_c_c (csin, -0.75, 89.5, -2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L);
6873 TEST_c_c (csin, -0.75, -89.5, -2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L);
6874
6875#ifndef TEST_FLOAT
6876 TEST_c_c (csin, 0.75, 710.5, 1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L);
6877 TEST_c_c (csin, 0.75, -710.5, 1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L);
6878 TEST_c_c (csin, -0.75, 710.5, -1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L);
6879 TEST_c_c (csin, -0.75, -710.5, -1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L);
6880#endif
6881
6882#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6883 TEST_c_c (csin, 0.75, 11357.25, 8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L);
6884 TEST_c_c (csin, 0.75, -11357.25, 8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L);
6885 TEST_c_c (csin, -0.75, 11357.25, -8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L);
6886 TEST_c_c (csin, -0.75, -11357.25, -8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L);
6887#endif
6888
6889#ifdef TEST_FLOAT
6890 TEST_c_c (csin, 0x1p-149, 180, 1.043535896672617552965983803453927655332e33L, plus_infty, OVERFLOW_EXCEPTION);
6891#endif
6892
6893#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6894 TEST_c_c (csin, 0x1p-1074, 1440, 5.981479269486130556466515778180916082415e301L, plus_infty, OVERFLOW_EXCEPTION);
6895#endif
6896
6897#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6898 TEST_c_c (csin, 0x1p-16434L, 22730, 1.217853148905605987081057582351152052687e4924L, plus_infty, OVERFLOW_EXCEPTION);
6899#endif
6900
f0302940
JM
6901 TEST_c_c (csin, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION);
6902 TEST_c_c (csin, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION);
6903
6815fabc 6904 END (csin, complex);
8847214f
UD
6905}
6906
6907
6908static void
6909csinh_test (void)
6910{
aaca11d8 6911 errno = 0;
3c6cad26 6912 FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
6913 if (errno == ENOSYS)
6914 /* Function not implemented. */
6915 return;
8847214f
UD
6916
6917 START (csinh);
6918
6919 TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0);
6920 TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0);
6921 TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero);
6922 TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero);
6923
67e971f1
TS
6924 TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6925 TEST_c_c (csinh, minus_zero, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6926 TEST_c_c (csinh, 0.0, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6927 TEST_c_c (csinh, minus_zero, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
8847214f
UD
6928
6929 TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0);
6930 TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0);
6931 TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero);
6932 TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero);
6933
67e971f1
TS
6934 TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6935 TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6936 TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
6937 TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
8847214f
UD
6938
6939 TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty);
6940 TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty);
6941 TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty);
6942 TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty);
6943
67e971f1
TS
6944 TEST_c_c (csinh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
6945 TEST_c_c (csinh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
6946 TEST_c_c (csinh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
6947 TEST_c_c (csinh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f 6948
67e971f1
TS
6949 TEST_c_c (csinh, 0.0, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN);
6950 TEST_c_c (csinh, minus_zero, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN);
8847214f 6951
67e971f1
TS
6952 TEST_c_c (csinh, plus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN);
6953 TEST_c_c (csinh, minus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN);
8847214f 6954
67e971f1
TS
6955 TEST_c_c (csinh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6956 TEST_c_c (csinh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 6957
67e971f1
TS
6958 TEST_c_c (csinh, qnan_value, 0.0, qnan_value, 0.0);
6959 TEST_c_c (csinh, qnan_value, minus_zero, qnan_value, minus_zero);
8847214f 6960
67e971f1
TS
6961 TEST_c_c (csinh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6962 TEST_c_c (csinh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 6963
67e971f1
TS
6964 TEST_c_c (csinh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
6965 TEST_c_c (csinh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 6966
67e971f1 6967 TEST_c_c (csinh, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 6968
2550dfe9 6969 TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L);
79df8ce5 6970 TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L);
8847214f 6971
e0b16cc2
JM
6972 TEST_c_c (csinh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L);
6973 TEST_c_c (csinh, -89.5, 0.75, -2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L);
6974 TEST_c_c (csinh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L);
6975 TEST_c_c (csinh, -89.5, -0.75, -2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L);
6976
6977#ifndef TEST_FLOAT
6978 TEST_c_c (csinh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L);
6979 TEST_c_c (csinh, -710.5, 0.75, -1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L);
6980 TEST_c_c (csinh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L);
6981 TEST_c_c (csinh, -710.5, -0.75, -1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L);
6982#endif
6983
6984#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6985 TEST_c_c (csinh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L);
6986 TEST_c_c (csinh, -11357.25, 0.75, -9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L);
6987 TEST_c_c (csinh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L);
6988 TEST_c_c (csinh, -11357.25, -0.75, -9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L);
6989#endif
6990
6991#ifdef TEST_FLOAT
6992 TEST_c_c (csinh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION);
6993#endif
6994
6995#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6996 TEST_c_c (csinh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION);
6997#endif
6998
6999#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7000 TEST_c_c (csinh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION);
7001#endif
7002
f0302940
JM
7003 TEST_c_c (csinh, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION);
7004 TEST_c_c (csinh, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION);
7005
6815fabc 7006 END (csinh, complex);
8847214f
UD
7007}
7008
2550dfe9 7009
8847214f
UD
7010static void
7011csqrt_test (void)
7012{
aaca11d8
UD
7013 errno = 0;
7014 FUNC(csqrt) (BUILD_COMPLEX (-1, 0));
7015 if (errno == ENOSYS)
7016 /* Function not implemented. */
7017 return;
7018
8847214f
UD
7019 START (csqrt);
7020
7021 TEST_c_c (csqrt, 0, 0, 0.0, 0.0);
7022 TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero);
7023 TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0);
7024 TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero);
7025
7026 TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty);
7027 TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty);
7028 TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty);
7029 TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty);
7030
7031 TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0);
7032 TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0);
7033 TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero);
7034 TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero);
7035
7036 TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty);
7037 TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty);
7038 TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty);
7039 TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty);
7040 TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty);
7041 TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty);
7042 TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty);
7043 TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty);
7044 TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty);
7045 TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty);
7046 TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty);
7047 TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty);
7048
67e971f1 7049 TEST_c_c (csqrt, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
8847214f 7050
67e971f1 7051 TEST_c_c (csqrt, plus_infty, qnan_value, plus_infty, qnan_value);
8847214f 7052
67e971f1
TS
7053 TEST_c_c (csqrt, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7054 TEST_c_c (csqrt, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7055 TEST_c_c (csqrt, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7056 TEST_c_c (csqrt, -1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 7057
67e971f1
TS
7058 TEST_c_c (csqrt, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7059 TEST_c_c (csqrt, qnan_value, 8, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7060 TEST_c_c (csqrt, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7061 TEST_c_c (csqrt, qnan_value, -8, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 7062
67e971f1 7063 TEST_c_c (csqrt, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f
UD
7064
7065 TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0);
7066 TEST_c_c (csqrt, -1, 0, 0.0, 1.0);
7067 TEST_c_c (csqrt, 0, 2, 1.0, 1.0);
7068 TEST_c_c (csqrt, 119, 120, 12.0, 5.0);
2550dfe9 7069 TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L);
d8337213
UD
7070 TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L);
7071 TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L);
72c7a71d
UD
7072 /* Principal square root should be returned (i.e., non-negative real
7073 part). */
7074 TEST_c_c (csqrt, 0, -1, M_SQRT_2_2, -M_SQRT_2_2);
8847214f 7075
e456826d
JM
7076 TEST_c_c (csqrt, 0x1.fffffep+127L, 0x1.fffffep+127L, 2.026714405498316804978751017492482558075e+19L, 8.394925938143272988211878516208015586281e+18L);
7077 TEST_c_c (csqrt, 0x1.fffffep+127L, 1.0L, 1.844674352395372953599975585936590505260e+19L, 2.710505511993121390769065968615872097053e-20L);
7078 TEST_c_c (csqrt, 0x1p-149L, 0x1p-149L, 4.112805464342778798097003462770175200803e-23L, 1.703579802732953750368659735601389709551e-23L);
7079 TEST_c_c (csqrt, 0x1p-147L, 0x1p-147L, 8.225610928685557596194006925540350401606e-23L, 3.407159605465907500737319471202779419102e-23L);
7080
cdfe2c5e
JM
7081 TEST_c_c (csqrt, plus_zero, 0x1p-149L, 2.646977960169688559588507814623881131411e-23L, 2.646977960169688559588507814623881131411e-23L);
7082 TEST_c_c (csqrt, 0x1p-50L, 0x1p-149L, 2.980232238769531250000000000000000000000e-8L, 2.350988701644575015937473074444491355637e-38L);
7083#ifdef TEST_FLOAT
7084 TEST_c_c (csqrt, 0x1p+127L, 0x1p-149L, 1.304381782533278221234957180625250836888e19L, plus_zero, UNDERFLOW_EXCEPTION);
7085#endif
7086 TEST_c_c (csqrt, 0x1p-149L, 0x1p+127L, 9.223372036854775808000000000000000000000e18L, 9.223372036854775808000000000000000000000e18L);
7087 TEST_c_c (csqrt, 0x1.000002p-126L, 0x1.000002p-126L, 1.191195773697904627170323731331667740087e-19L, 4.934094449071842328766868579214125217132e-20L);
7088 TEST_c_c (csqrt, -0x1.000002p-126L, -0x1.000002p-126L, 4.934094449071842328766868579214125217132e-20L, -1.191195773697904627170323731331667740087e-19L);
7089
e456826d
JM
7090#ifndef TEST_FLOAT
7091 TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 1.473094556905565378990473658199034571917e+154L, 6.101757441282702188537080005372547713595e+153L);
7092 TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 1.379778091031440685006200821918878702861e+154L, 3.257214233483129514781233066898042490248e+153L);
cdfe2c5e
JM
7093 TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L);
7094 TEST_c_c (csqrt, 0x1p-1073L, 0x1p-1073L, 3.453664695497464982856905711457966660085e-162L, 1.430554756764195530630723976279903095110e-162L);
7095
7096 TEST_c_c (csqrt, plus_zero, 0x1p-1074L, 1.571727784702628688909515672805082228285e-162L, 1.571727784702628688909515672805082228285e-162L);
7097 TEST_c_c (csqrt, 0x1p-500L, 0x1p-1074L, 5.527147875260444560247265192192255725514e-76L, 4.469444793151709302716387622440056066334e-249L);
7098#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7099 TEST_c_c (csqrt, 0x1p+1023L, 0x1p-1074L, 9.480751908109176726832526455652159260085e153L, plus_zero, UNDERFLOW_EXCEPTION);
7100#endif
7101 TEST_c_c (csqrt, 0x1p-1074L, 0x1p+1023L, 6.703903964971298549787012499102923063740e153L, 6.703903964971298549787012499102923063740e153L);
7102 TEST_c_c (csqrt, 0x1.0000000000001p-1022L, 0x1.0000000000001p-1022L, 1.638872094839911521020410942677082920935e-154L, 6.788430486774966350907249113759995429568e-155L);
7103 TEST_c_c (csqrt, -0x1.0000000000001p-1022L, -0x1.0000000000001p-1022L, 6.788430486774966350907249113759995429568e-155L, -1.638872094839911521020410942677082920935e-154L);
e456826d
JM
7104#endif
7105
7106#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7107 TEST_c_c (csqrt, 0x1.fp+16383L, 0x1.fp+16383L, 1.179514222452201722651836720466795901016e+2466L, 4.885707879516577666702435054303191575148e+2465L);
7108 TEST_c_c (csqrt, 0x1.fp+16383L, 0x1p+16383L, 1.106698967236475180613254276996359485630e+2466L, 2.687568007603946993388538156299100955642e+2465L);
7109 TEST_c_c (csqrt, 0x1p-16440L, 0x1p-16441L, 3.514690655930285351254618340783294558136e-2475L, 8.297059146828716918029689466551384219370e-2476L);
cdfe2c5e
JM
7110
7111 TEST_c_c (csqrt, plus_zero, 0x1p-16445L, 4.269191686890197837775136325621239761720e-2476L, 4.269191686890197837775136325621239761720e-2476L);
7112 TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16445L, 2.660791472672778409283210520357607795518e-753L, 6.849840675828785164910701384823702064234e-4199L);
7113 TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16445L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION);
7114 TEST_c_c (csqrt, 0x1p-16445L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L);
7115 TEST_c_c (csqrt, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-16382L, 2.014551439675644900131815801350165472778e-2466L, 8.344545284118961664300307045791497724440e-2467L);
7116 TEST_c_c (csqrt, -0x1.0000000000000002p-16382L, -0x1.0000000000000002p-16382L, 8.344545284118961664300307045791497724440e-2467L, -2.014551439675644900131815801350165472778e-2466L);
7117
7118# if LDBL_MANT_DIG >= 113
7119 TEST_c_c (csqrt, plus_zero, 0x1p-16494L, 1.799329752913293143453817328207572571442e-2483L, 1.799329752913293143453817328207572571442e-2483L);
7120 TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16494L, 2.660791472672778409283210520357607795518e-753L, 1.216776133331049643422030716668249905907e-4213L);
7121 TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16494L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION);
7122 TEST_c_c (csqrt, 0x1p-16494L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L);
7123 TEST_c_c (csqrt, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-16382L, 2.014551439675644900022606748976158925145e-2466L, 8.344545284118961663847948339519226074126e-2467L);
7124 TEST_c_c (csqrt, -0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-16382L, 8.344545284118961663847948339519226074126e-2467L, -2.014551439675644900022606748976158925145e-2466L);
7125# endif
e456826d
JM
7126#endif
7127
6815fabc 7128 END (csqrt, complex);
8847214f
UD
7129}
7130
7131static void
7132ctan_test (void)
7133{
aaca11d8 7134 errno = 0;
3c6cad26 7135 FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
aaca11d8
UD
7136 if (errno == ENOSYS)
7137 /* Function not implemented. */
7138 return;
7139
8847214f
UD
7140 START (ctan);
7141
7142 TEST_c_c (ctan, 0, 0, 0.0, 0.0);
7143 TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero);
7144 TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0);
7145 TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero);
7146
7147 TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0);
7148 TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0);
7149 TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0);
7150 TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0);
7151
7152 TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0);
7153 TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0);
7154 TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0);
7155 TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0);
7156
67e971f1
TS
7157 TEST_c_c (ctan, plus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION);
7158 TEST_c_c (ctan, plus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION);
7159 TEST_c_c (ctan, minus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION);
7160 TEST_c_c (ctan, minus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION);
7161 TEST_c_c (ctan, plus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION);
7162 TEST_c_c (ctan, plus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION);
7163 TEST_c_c (ctan, minus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION);
7164 TEST_c_c (ctan, minus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f 7165
67e971f1
TS
7166 TEST_c_c (ctan, qnan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN);
7167 TEST_c_c (ctan, qnan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN);
8847214f 7168
67e971f1
TS
7169 TEST_c_c (ctan, 0, qnan_value, 0.0, qnan_value);
7170 TEST_c_c (ctan, minus_zero, qnan_value, minus_zero, qnan_value);
8847214f 7171
67e971f1
TS
7172 TEST_c_c (ctan, 0.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7173 TEST_c_c (ctan, -4.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 7174
67e971f1
TS
7175 TEST_c_c (ctan, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7176 TEST_c_c (ctan, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7177 TEST_c_c (ctan, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7178 TEST_c_c (ctan, qnan_value, -0.25, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 7179
67e971f1 7180 TEST_c_c (ctan, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f 7181
2550dfe9 7182 TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L);
79df8ce5 7183 TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L);
8847214f 7184
80bad0cc
JM
7185 TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L, UNDERFLOW_EXCEPTION_FLOAT);
7186 TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0, UNDERFLOW_EXCEPTION_FLOAT);
bcc8d661
JM
7187
7188#ifndef TEST_FLOAT
80bad0cc
JM
7189 TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE);
7190 TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE);
bcc8d661
JM
7191#endif
7192
7193#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
80bad0cc
JM
7194 TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0, UNDERFLOW_EXCEPTION);
7195 TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0, UNDERFLOW_EXCEPTION);
bcc8d661
JM
7196#endif
7197
7198 TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0);
7199
7200 TEST_c_c (ctan, 0x1p127, 1, 0.2446359391192790896381501310437708987204L, 0.9101334047676183761532873794426475906201L);
7201
7202#ifndef TEST_FLOAT
7203 TEST_c_c (ctan, 0x1p1023, 1, -0.2254627924997545057926782581695274244229L, 0.8786063118883068695462540226219865087189L);
7204#endif
7205
7206#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7207 TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L);
7208#endif
7209
80bad0cc
JM
7210 TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0, UNDERFLOW_EXCEPTION);
7211 TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0, UNDERFLOW_EXCEPTION);
7212 TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0, UNDERFLOW_EXCEPTION);
7213 TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0, UNDERFLOW_EXCEPTION);
bcc8d661 7214
6815fabc 7215 END (ctan, complex);
8847214f
UD
7216}
7217
7218
ca61cf32
JM
7219static void
7220ctan_test_tonearest (void)
7221{
7222 int save_round_mode;
7223 errno = 0;
7224 FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7225 if (errno == ENOSYS)
7226 /* Function not implemented. */
7227 return;
7228
7229 START (ctan_tonearest);
7230
7231 save_round_mode = fegetround ();
7232
7233 if (!fesetround (FE_TONEAREST))
7234 {
7235 TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L);
7236
7237#ifndef TEST_FLOAT
7238 TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L);
7239#endif
7240
7241#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7242 TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L);
7243#endif
7244 }
7245
7246 fesetround (save_round_mode);
7247
7248 END (ctan_tonearest, complex);
7249}
7250
7251
7252static void
7253ctan_test_towardzero (void)
7254{
7255 int save_round_mode;
7256 errno = 0;
7257 FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7258 if (errno == ENOSYS)
7259 /* Function not implemented. */
7260 return;
7261
7262 START (ctan_towardzero);
7263
7264 save_round_mode = fegetround ();
7265
7266 if (!fesetround (FE_TOWARDZERO))
7267 {
7268 TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L);
7269
7270#ifndef TEST_FLOAT
7271 TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L);
7272#endif
7273
7274#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7275 TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L);
7276#endif
7277 }
7278
7279 fesetround (save_round_mode);
7280
7281 END (ctan_towardzero, complex);
7282}
7283
7284
7285static void
7286ctan_test_downward (void)
7287{
7288 int save_round_mode;
7289 errno = 0;
7290 FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7291 if (errno == ENOSYS)
7292 /* Function not implemented. */
7293 return;
7294
7295 START (ctan_downward);
7296
7297 save_round_mode = fegetround ();
7298
7299 if (!fesetround (FE_DOWNWARD))
7300 {
7301 TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L);
7302
7303#ifndef TEST_FLOAT
7304 TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L);
7305#endif
7306
7307#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7308 TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L);
7309#endif
7310 }
7311
7312 fesetround (save_round_mode);
7313
7314 END (ctan_downward, complex);
7315}
7316
7317
7318static void
7319ctan_test_upward (void)
7320{
7321 int save_round_mode;
7322 errno = 0;
7323 FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7324 if (errno == ENOSYS)
7325 /* Function not implemented. */
7326 return;
7327
7328 START (ctan_upward);
7329
7330 save_round_mode = fegetround ();
7331
7332 if (!fesetround (FE_UPWARD))
7333 {
7334 TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L);
7335
7336#ifndef TEST_FLOAT
7337 TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L);
7338#endif
7339
7340#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7341 TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L);
7342#endif
7343 }
7344
7345 fesetround (save_round_mode);
7346
7347 END (ctan_upward, complex);
7348}
7349
7350
8847214f
UD
7351static void
7352ctanh_test (void)
7353{
aaca11d8
UD
7354 errno = 0;
7355 FUNC(ctanh) (BUILD_COMPLEX (0, 0));
7356 if (errno == ENOSYS)
7357 /* Function not implemented. */
7358 return;
7359
8847214f
UD
7360 START (ctanh);
7361
7362 TEST_c_c (ctanh, 0, 0, 0.0, 0.0);
7363 TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero);
7364 TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0);
7365 TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero);
7366
7367 TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0);
7368 TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0);
7369 TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero);
7370 TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero);
7371 TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0);
7372 TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0);
7373 TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero);
7374 TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero);
7375
67e971f1
TS
7376 TEST_c_c (ctanh, 0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
7377 TEST_c_c (ctanh, 2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
7378 TEST_c_c (ctanh, 0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
7379 TEST_c_c (ctanh, 2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
7380 TEST_c_c (ctanh, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
7381 TEST_c_c (ctanh, -2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
7382 TEST_c_c (ctanh, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
7383 TEST_c_c (ctanh, -2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
8847214f 7384
67e971f1
TS
7385 TEST_c_c (ctanh, plus_infty, qnan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN);
7386 TEST_c_c (ctanh, minus_infty, qnan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN);
8847214f 7387
67e971f1
TS
7388 TEST_c_c (ctanh, qnan_value, 0, qnan_value, 0.0);
7389 TEST_c_c (ctanh, qnan_value, minus_zero, qnan_value, minus_zero);
8847214f 7390
67e971f1
TS
7391 TEST_c_c (ctanh, qnan_value, 0.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7392 TEST_c_c (ctanh, qnan_value, -4.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 7393
67e971f1
TS
7394 TEST_c_c (ctanh, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7395 TEST_c_c (ctanh, 5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7396 TEST_c_c (ctanh, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
7397 TEST_c_c (ctanh, -0.25, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8847214f 7398
67e971f1 7399 TEST_c_c (ctanh, qnan_value, qnan_value, qnan_value, qnan_value);
8847214f
UD
7400
7401 TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0);
7402
2550dfe9 7403 TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L);
79df8ce5 7404 TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L);
8847214f 7405
80bad0cc
JM
7406 TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L, UNDERFLOW_EXCEPTION_FLOAT);
7407 TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L, UNDERFLOW_EXCEPTION_FLOAT);
bcc8d661
JM
7408
7409#ifndef TEST_FLOAT
80bad0cc
JM
7410 TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
7411 TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L, UNDERFLOW_EXCEPTION_DOUBLE);
bcc8d661
JM
7412#endif
7413
7414#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
80bad0cc
JM
7415 TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L, UNDERFLOW_EXCEPTION);
7416 TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L, UNDERFLOW_EXCEPTION);
bcc8d661
JM
7417#endif
7418
7419 TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L);
7420
7421 TEST_c_c (ctanh, 1, 0x1p127, 0.9101334047676183761532873794426475906201L, 0.2446359391192790896381501310437708987204L);
7422
7423#ifndef TEST_FLOAT
7424 TEST_c_c (ctanh, 1, 0x1p1023, 0.8786063118883068695462540226219865087189L, -0.2254627924997545057926782581695274244229L);
7425#endif
7426
7427#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7428 TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L);
7429#endif
7430
80bad0cc
JM
7431 TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero, UNDERFLOW_EXCEPTION);
7432 TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero, UNDERFLOW_EXCEPTION);
7433 TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero, UNDERFLOW_EXCEPTION);
7434 TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero, UNDERFLOW_EXCEPTION);
bcc8d661 7435
6815fabc 7436 END (ctanh, complex);
8847214f
UD
7437}
7438
2550dfe9 7439
ca61cf32
JM
7440static void
7441ctanh_test_tonearest (void)
7442{
7443 int save_round_mode;
7444 errno = 0;
7445 FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7446 if (errno == ENOSYS)
7447 /* Function not implemented. */
7448 return;
7449
7450 START (ctanh_tonearest);
7451
7452 save_round_mode = fegetround ();
7453
7454 if (!fesetround (FE_TONEAREST))
7455 {
7456 TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L);
7457
7458#ifndef TEST_FLOAT
7459 TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L);
7460#endif
7461
7462#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7463 TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L);
7464#endif
7465 }
7466
7467 fesetround (save_round_mode);
7468
7469 END (ctanh_tonearest, complex);
7470}
7471
7472
7473static void
7474ctanh_test_towardzero (void)
7475{
7476 int save_round_mode;
7477 errno = 0;
7478 FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7479 if (errno == ENOSYS)
7480 /* Function not implemented. */
7481 return;
7482
7483 START (ctanh_towardzero);
7484
7485 save_round_mode = fegetround ();
7486
7487 if (!fesetround (FE_TOWARDZERO))
7488 {
7489 TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L);
7490
7491#ifndef TEST_FLOAT
7492 TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L);
7493#endif
7494
7495#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7496 TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L);
7497#endif
7498 }
7499
7500 fesetround (save_round_mode);
7501
7502 END (ctanh_towardzero, complex);
7503}
7504
7505
7506static void
7507ctanh_test_downward (void)
7508{
7509 int save_round_mode;
7510 errno = 0;
7511 FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7512 if (errno == ENOSYS)
7513 /* Function not implemented. */
7514 return;
7515
7516 START (ctanh_downward);
7517
7518 save_round_mode = fegetround ();
7519
7520 if (!fesetround (FE_DOWNWARD))
7521 {
7522 TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L);
7523
7524#ifndef TEST_FLOAT
7525 TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L);
7526#endif
7527
7528#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7529 TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L);
7530#endif
7531 }
7532
7533 fesetround (save_round_mode);
7534
7535 END (ctanh_downward, complex);
7536}
7537
7538
7539static void
7540ctanh_test_upward (void)
7541{
7542 int save_round_mode;
7543 errno = 0;
7544 FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7545 if (errno == ENOSYS)
7546 /* Function not implemented. */
7547 return;
7548
7549 START (ctanh_upward);
7550
7551 save_round_mode = fegetround ();
7552
7553 if (!fesetround (FE_UPWARD))
7554 {
7555 TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L);
7556
7557#ifndef TEST_FLOAT
7558 TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L);
7559#endif
7560
7561#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7562 TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L);
7563#endif
7564 }
7565
7566 fesetround (save_round_mode);
7567
7568 END (ctanh_upward, complex);
7569}
7570
7571
8847214f
UD
7572static void
7573erf_test (void)
7574{
7575 errno = 0;
7576 FUNC(erf) (0);
7577 if (errno == ENOSYS)
7578 /* Function not implemented. */
7579 return;
7580
7581 START (erf);
7582
7583 TEST_f_f (erf, 0, 0);
7584 TEST_f_f (erf, minus_zero, minus_zero);
7585 TEST_f_f (erf, plus_infty, 1);
7586 TEST_f_f (erf, minus_infty, -1);
67e971f1 7587 TEST_f_f (erf, qnan_value, qnan_value);
8847214f 7588
2550dfe9
AJ
7589 TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L);
7590 TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L);
7591 TEST_f_f (erf, 1.25L, 0.922900128256458230136523481197281140L);
7592 TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L);
7593 TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L);
7594 TEST_f_f (erf, 27.0L, 1.0L);
8847214f
UD
7595
7596 END (erf);
7597}
7598
7599
7600static void
7601erfc_test (void)
7602{
7603 errno = 0;
7604 FUNC(erfc) (0);
7605 if (errno == ENOSYS)
7606 /* Function not implemented. */
7607 return;
7608
7609 START (erfc);
7610
7611 TEST_f_f (erfc, plus_infty, 0.0);
7612 TEST_f_f (erfc, minus_infty, 2.0);
7613 TEST_f_f (erfc, 0.0, 1.0);
7614 TEST_f_f (erfc, minus_zero, 1.0);
67e971f1 7615 TEST_f_f (erfc, qnan_value, qnan_value);
8847214f 7616
2550dfe9
AJ
7617 TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L);
7618 TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L);
7619 TEST_f_f (erfc, 1.25L, 0.0770998717435417698634765188027188596L);
7620 TEST_f_f (erfc, 2.0L, 0.00467773498104726583793074363274707139L);
7b1902cb 7621 TEST_f_f (erfc, 0x1.f7303cp+1L, 2.705500297238986897105236321218861842255e-8L);
2550dfe9 7622 TEST_f_f (erfc, 4.125L, 0.542340079956506600531223408575531062e-8L);
7b1902cb
JM
7623 TEST_f_f (erfc, 0x1.ffa002p+2L, 1.233585992097580296336099501489175967033e-29L);
7624 TEST_f_f (erfc, 0x1.ffffc8p+2L, 1.122671365033056305522366683719541099329e-29L);
2550dfe9
AJ
7625#ifdef TEST_LDOUBLE
7626 /* The result can only be represented in long double. */
f964490f 7627# if LDBL_MIN_10_EXP < -319
2550dfe9 7628 TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L);
f964490f 7629# endif
7b1902cb
JM
7630# if LDBL_MANT_DIG >= 106
7631 TEST_f_f (erfc, 0x1.ffff56789abcdef0123456789a8p+2L, 1.123161416304655390092138725253789378459e-29L);
7632# endif
2550dfe9 7633#endif
8847214f
UD
7634
7635 END (erfc);
7636}
7637
2550dfe9 7638
8847214f
UD
7639static void
7640exp_test (void)
7641{
e6d3c4a7
AJ
7642 errno = 0;
7643 FUNC(exp) (0);
7644 if (errno == ENOSYS)
7645 /* Function not implemented. */
7646 return;
7647
8847214f
UD
7648 START (exp);
7649
7650 TEST_f_f (exp, 0, 1);
7651 TEST_f_f (exp, minus_zero, 1);
7652
15daa639 7653#ifndef TEST_INLINE
8847214f
UD
7654 TEST_f_f (exp, plus_infty, plus_infty);
7655 TEST_f_f (exp, minus_infty, 0);
15daa639 7656#endif
67e971f1 7657 TEST_f_f (exp, qnan_value, qnan_value);
8847214f
UD
7658 TEST_f_f (exp, 1, M_El);
7659
7660 TEST_f_f (exp, 2, M_E2l);
7661 TEST_f_f (exp, 3, M_E3l);
2550dfe9 7662 TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L);
4c95adde 7663 TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L);
a7eb802f 7664 TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L);
e42a38dd
AZ
7665#ifndef TEST_FLOAT
7666 TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L);
7667#endif
8fb0af98
UD
7668#if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024
7669 /* The result can only be represented in sane long double. */
4c95adde
AJ
7670 TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L);
7671#endif
2550dfe9 7672
41498f4d
JM
7673#if !(defined TEST_LDOUBLE && LDBL_MAX_EXP > 1024)
7674 TEST_f_f (exp, 710, plus_infty, OVERFLOW_EXCEPTION);
7a25eb06 7675 TEST_f_f (exp, -1234, plus_zero, UNDERFLOW_EXCEPTION);
41498f4d
JM
7676#endif
7677 TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION);
7678 TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 7679 TEST_f_f (exp, -max_value, 0, UNDERFLOW_EXCEPTION);
41bf21a1 7680
8847214f
UD
7681 END (exp);
7682}
7683
7684
28afd92d
JM
7685static void
7686exp_test_tonearest (void)
7687{
7688 int save_round_mode;
7689 errno = 0;
7690 FUNC(exp) (0);
7691 if (errno == ENOSYS)
7692 /* Function not implemented. */
7693 return;
7694
7695 START (exp_tonearest);
7696
7697 save_round_mode = fegetround ();
7698
7699 if (!fesetround (FE_TONEAREST))
7700 {
7701 TEST_f_f (exp, 1, M_El);
7702 TEST_f_f (exp, 2, M_E2l);
7703 TEST_f_f (exp, 3, M_E3l);
7704 }
7705
7706 fesetround (save_round_mode);
7707
7708 END (exp_tonearest);
7709}
7710
7711
7712static void
7713exp_test_towardzero (void)
7714{
7715 int save_round_mode;
7716 errno = 0;
7717 FUNC(exp) (0);
7718 if (errno == ENOSYS)
7719 /* Function not implemented. */
7720 return;
7721
7722 START (exp_towardzero);
7723
7724 save_round_mode = fegetround ();
7725
7726 if (!fesetround (FE_TOWARDZERO))
7727 {
7728 TEST_f_f (exp, 1, M_El);
7729 TEST_f_f (exp, 2, M_E2l);
7730 TEST_f_f (exp, 3, M_E3l);
7731 }
7732
7733 fesetround (save_round_mode);
7734
7735 END (exp_towardzero);
7736}
7737
7738
7739static void
7740exp_test_downward (void)
7741{
7742 int save_round_mode;
7743 errno = 0;
7744 FUNC(exp) (0);
7745 if (errno == ENOSYS)
7746 /* Function not implemented. */
7747 return;
7748
7749 START (exp_downward);
7750
7751 save_round_mode = fegetround ();
7752
7753 if (!fesetround (FE_DOWNWARD))
7754 {
7755 TEST_f_f (exp, 1, M_El);
7756 TEST_f_f (exp, 2, M_E2l);
7757 TEST_f_f (exp, 3, M_E3l);
7758 }
7759
7760 fesetround (save_round_mode);
7761
7762 END (exp_downward);
7763}
7764
7765
7766static void
7767exp_test_upward (void)
7768{
7769 int save_round_mode;
7770 errno = 0;
7771 FUNC(exp) (0);
7772 if (errno == ENOSYS)
7773 /* Function not implemented. */
7774 return;
7775
7776 START (exp_upward);
7777
7778 save_round_mode = fegetround ();
7779
7780 if (!fesetround (FE_UPWARD))
7781 {
7782 TEST_f_f (exp, 1, M_El);
7783 TEST_f_f (exp, 2, M_E2l);
7784 TEST_f_f (exp, 3, M_E3l);
7785 }
7786
7787 fesetround (save_round_mode);
7788
7789 END (exp_upward);
7790}
7791
7792
8847214f
UD
7793static void
7794exp10_test (void)
7795{
7796 errno = 0;
7797 FUNC(exp10) (0);
7798 if (errno == ENOSYS)
7799 /* Function not implemented. */
7800 return;
7801
7802 START (exp10);
7803
7804 TEST_f_f (exp10, 0, 1);
7805 TEST_f_f (exp10, minus_zero, 1);
7806
7807 TEST_f_f (exp10, plus_infty, plus_infty);
7808 TEST_f_f (exp10, minus_infty, 0);
67e971f1 7809 TEST_f_f (exp10, qnan_value, qnan_value);
8847214f 7810 TEST_f_f (exp10, 3, 1000);
42be70d4 7811 TEST_f_f (exp10, -1, 0.1L);
9568c0c2 7812 TEST_f_f (exp10, 36, 1.0e36L);
d8b82cad
JM
7813 TEST_f_f (exp10, -36, 1.0e-36L);
7814#ifndef TEST_FLOAT
7815 TEST_f_f (exp10, 305, 1.0e305L);
80bad0cc 7816 TEST_f_f (exp10, -305, 1.0e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
d8b82cad
JM
7817#endif
7818#if defined TEST_LDOUBLE && LDBL_MAX_10_EXP >= 4932
7819 TEST_f_f (exp10, 4932, 1.0e4932L);
80bad0cc 7820 TEST_f_f (exp10, -4932, 1.0e-4932L, UNDERFLOW_EXCEPTION);
9568c0c2 7821#endif
c135cc1b 7822 TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 7823 TEST_f_f (exp10, -1e6, 0, UNDERFLOW_EXCEPTION);
41bf21a1 7824 TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 7825 TEST_f_f (exp10, -max_value, 0, UNDERFLOW_EXCEPTION);
2550dfe9 7826 TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L);
8847214f
UD
7827
7828 END (exp10);
7829}
7830
2550dfe9 7831
8847214f
UD
7832static void
7833exp2_test (void)
7834{
7835 errno = 0;
7836 FUNC(exp2) (0);
7837 if (errno == ENOSYS)
7838 /* Function not implemented. */
7839 return;
7840
7841 START (exp2);
7842
7843 TEST_f_f (exp2, 0, 1);
7844 TEST_f_f (exp2, minus_zero, 1);
7845 TEST_f_f (exp2, plus_infty, plus_infty);
7846 TEST_f_f (exp2, minus_infty, 0);
67e971f1 7847 TEST_f_f (exp2, qnan_value, qnan_value);
15daa639 7848
8847214f
UD
7849 TEST_f_f (exp2, 10, 1024);
7850 TEST_f_f (exp2, -1, 0.5);
0cb7efc5 7851 TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 7852 TEST_f_f (exp2, -1e6, 0, UNDERFLOW_EXCEPTION);
41bf21a1 7853 TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 7854 TEST_f_f (exp2, -max_value, 0, UNDERFLOW_EXCEPTION);
2550dfe9 7855 TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L);
8847214f 7856
48e44791
JM
7857 TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L);
7858 TEST_f_f (exp2, 127, 0x1p127);
7859 TEST_f_f (exp2, -149, 0x1p-149);
7860
7861#ifndef TEST_FLOAT
7862 TEST_f_f (exp2, 1000.25, 1.274245659452564874772384918171765416737e+301L);
7863 TEST_f_f (exp2, 1023, 0x1p1023);
7864 TEST_f_f (exp2, -1074, 0x1p-1074);
7865#endif
7866
7867#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7868 TEST_f_f (exp2, 16383, 0x1p16383L);
7869 TEST_f_f (exp2, -16400, 0x1p-16400L);
7870#endif
7871
8847214f
UD
7872 END (exp2);
7873}
7874
2550dfe9 7875
8847214f
UD
7876static void
7877expm1_test (void)
7878{
e6d3c4a7
AJ
7879 errno = 0;
7880 FUNC(expm1) (0);
7881 if (errno == ENOSYS)
7882 /* Function not implemented. */
7883 return;
7884
8847214f
UD
7885 START (expm1);
7886
7887 TEST_f_f (expm1, 0, 0);
7888 TEST_f_f (expm1, minus_zero, minus_zero);
7889
15daa639 7890#ifndef TEST_INLINE
8847214f
UD
7891 TEST_f_f (expm1, plus_infty, plus_infty);
7892 TEST_f_f (expm1, minus_infty, -1);
15daa639 7893#endif
67e971f1 7894 TEST_f_f (expm1, qnan_value, qnan_value);
8847214f
UD
7895
7896 TEST_f_f (expm1, 1, M_El - 1.0);
2550dfe9 7897 TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L);
8847214f 7898
495fd99f
JM
7899 TEST_f_f (expm1, 50.0L, 5.1847055285870724640864533229334853848275e+21L);
7900
7901#ifndef TEST_FLOAT
7902 TEST_f_f (expm1, 127.0L, 1.4302079958348104463583671072905261080748e+55L);
7903 TEST_f_f (expm1, 500.0L, 1.4035922178528374107397703328409120821806e+217L);
7904#endif
7905
0fcad3e2
JM
7906#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7907 TEST_f_f (expm1, 11356.25L, 9.05128237311923300051376115753226014206e+4931L);
7908#endif
7909
f17ac40d
JM
7910 TEST_f_f (expm1, -10.0, -0.9999546000702375151484644084844394493898L);
7911 TEST_f_f (expm1, -16.0, -0.9999998874648252807408854862248209398728L);
7912 TEST_f_f (expm1, -17.0, -0.9999999586006228121483334034897228104472L);
7913 TEST_f_f (expm1, -18.0, -0.9999999847700202552873715638633707664826L);
7914 TEST_f_f (expm1, -36.0, -0.9999999999999997680477169756430611687736L);
7915 TEST_f_f (expm1, -37.0, -0.9999999999999999146695237425593420572195L);
7916 TEST_f_f (expm1, -38.0, -0.9999999999999999686086720795197037129104L);
7917 TEST_f_f (expm1, -44.0, -0.9999999999999999999221886775886620348429L);
7918 TEST_f_f (expm1, -45.0, -0.9999999999999999999713748141945060635553L);
7919 TEST_f_f (expm1, -46.0, -0.9999999999999999999894693826424461876212L);
7920 TEST_f_f (expm1, -73.0, -0.9999999999999999999999999999999802074012L);
7921 TEST_f_f (expm1, -74.0, -0.9999999999999999999999999999999927187098L);
7922 TEST_f_f (expm1, -75.0, -0.9999999999999999999999999999999973213630L);
7923 TEST_f_f (expm1, -78.0, -0.9999999999999999999999999999999998666385L);
7924 TEST_f_f (expm1, -79.0, -0.9999999999999999999999999999999999509391L);
7925 TEST_f_f (expm1, -80.0, -0.9999999999999999999999999999999999819515L);
7926 TEST_f_f (expm1, -100.0, -1.0);
7927 TEST_f_f (expm1, -1000.0, -1.0);
7928 TEST_f_f (expm1, -10000.0, -1.0);
7929 TEST_f_f (expm1, -100000.0, -1.0);
7930
f2da7793 7931 TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE);
41498f4d 7932 TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION);
f17ac40d 7933 TEST_f_f (expm1, -max_value, -1);
bbc5d74d 7934
8847214f
UD
7935 END (expm1);
7936}
7937
2550dfe9 7938
8847214f
UD
7939static void
7940fabs_test (void)
7941{
7942 START (fabs);
7943
7944 TEST_f_f (fabs, 0, 0);
7945 TEST_f_f (fabs, minus_zero, 0);
7946
7947 TEST_f_f (fabs, plus_infty, plus_infty);
7948 TEST_f_f (fabs, minus_infty, plus_infty);
67e971f1 7949 TEST_f_f (fabs, qnan_value, qnan_value);
8847214f
UD
7950
7951 TEST_f_f (fabs, 38.0, 38.0);
7952 TEST_f_f (fabs, -M_El, M_El);
7953
7954 END (fabs);
7955}
7956
2550dfe9 7957
8847214f
UD
7958static void
7959fdim_test (void)
7960{
7961 START (fdim);
7962
7963 TEST_ff_f (fdim, 0, 0, 0);
7964 TEST_ff_f (fdim, 9, 0, 9);
7965 TEST_ff_f (fdim, 0, 9, 0);
7966 TEST_ff_f (fdim, -9, 0, 0);
7967 TEST_ff_f (fdim, 0, -9, 9);
7968
7969 TEST_ff_f (fdim, plus_infty, 9, plus_infty);
7970 TEST_ff_f (fdim, plus_infty, -9, plus_infty);
7971 TEST_ff_f (fdim, minus_infty, 9, 0);
7972 TEST_ff_f (fdim, minus_infty, -9, 0);
7973 TEST_ff_f (fdim, 9, minus_infty, plus_infty);
7974 TEST_ff_f (fdim, -9, minus_infty, plus_infty);
7975 TEST_ff_f (fdim, 9, plus_infty, 0);
7976 TEST_ff_f (fdim, -9, plus_infty, 0);
7977
67e971f1
TS
7978 TEST_ff_f (fdim, 0, qnan_value, qnan_value);
7979 TEST_ff_f (fdim, 9, qnan_value, qnan_value);
7980 TEST_ff_f (fdim, -9, qnan_value, qnan_value);
7981 TEST_ff_f (fdim, qnan_value, 9, qnan_value);
7982 TEST_ff_f (fdim, qnan_value, -9, qnan_value);
7983 TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value);
7984 TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value);
7985 TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value);
7986 TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value);
7987 TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value);
8847214f 7988
6497a1d0
UD
7989 TEST_ff_f (fdim, plus_infty, plus_infty, 0);
7990
8847214f
UD
7991 END (fdim);
7992}
7993
2550dfe9 7994
ef1bb361
JM
7995static void
7996finite_test (void)
7997{
7998 START (finite);
7999
8000 TEST_f_b (finite, 0, 1);
8001 TEST_f_b (finite, minus_zero, 1);
8002 TEST_f_b (finite, 10, 1);
8003 TEST_f_b (finite, min_subnorm_value, 1);
8004 TEST_f_b (finite, plus_infty, 0);
8005 TEST_f_b (finite, minus_infty, 0);
67e971f1 8006 TEST_f_b (finite, qnan_value, 0);
ef1bb361
JM
8007
8008 END (finite);
8009}
8010
8011
8847214f
UD
8012static void
8013floor_test (void)
8014{
8015 START (floor);
8016
8017 TEST_f_f (floor, 0.0, 0.0);
8018 TEST_f_f (floor, minus_zero, minus_zero);
8019 TEST_f_f (floor, plus_infty, plus_infty);
8020 TEST_f_f (floor, minus_infty, minus_infty);
67e971f1 8021 TEST_f_f (floor, qnan_value, qnan_value);
8847214f
UD
8022
8023 TEST_f_f (floor, M_PIl, 3.0);
8024 TEST_f_f (floor, -M_PIl, -4.0);
8025
5c68d401 8026 TEST_f_f (floor, 0.1, 0.0);
97fd3a30 8027 TEST_f_f (floor, 0.25, 0.0);
5c68d401
RM
8028 TEST_f_f (floor, 0.625, 0.0);
8029 TEST_f_f (floor, -0.1, -1.0);
97fd3a30 8030 TEST_f_f (floor, -0.25, -1.0);
5c68d401 8031 TEST_f_f (floor, -0.625, -1.0);
f964490f
RM
8032
8033#ifdef TEST_LDOUBLE
8034 /* The result can only be represented in long double. */
8035 TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L);
8036 TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L);
8037 TEST_f_f (floor, 4503599627370496.5L, 4503599627370496.0L);
8038 TEST_f_f (floor, 4503599627370496.75L, 4503599627370496.0L);
8039 TEST_f_f (floor, 4503599627370497.5L, 4503599627370497.0L);
5c68d401
RM
8040# if LDBL_MANT_DIG > 100
8041 TEST_f_f (floor, 4503599627370494.5000000000001L, 4503599627370494.0L);
8042 TEST_f_f (floor, 4503599627370495.5000000000001L, 4503599627370495.0L);
8043 TEST_f_f (floor, 4503599627370496.5000000000001L, 4503599627370496.0L);
8044# endif
f964490f
RM
8045
8046 TEST_f_f (floor, -4503599627370495.5L, -4503599627370496.0L);
8047 TEST_f_f (floor, -4503599627370496.25L, -4503599627370497.0L);
8048 TEST_f_f (floor, -4503599627370496.5L, -4503599627370497.0L);
8049 TEST_f_f (floor, -4503599627370496.75L, -4503599627370497.0L);
8050 TEST_f_f (floor, -4503599627370497.5L, -4503599627370498.0L);
5c68d401
RM
8051# if LDBL_MANT_DIG > 100
8052 TEST_f_f (floor, -4503599627370494.5000000000001L, -4503599627370495.0L);
8053 TEST_f_f (floor, -4503599627370495.5000000000001L, -4503599627370496.0L);
8054 TEST_f_f (floor, -4503599627370496.5000000000001L, -4503599627370497.0L);
8055# endif
f964490f
RM
8056
8057 TEST_f_f (floor, 9007199254740991.5L, 9007199254740991.0L);
8058 TEST_f_f (floor, 9007199254740992.25L, 9007199254740992.0L);
8059 TEST_f_f (floor, 9007199254740992.5L, 9007199254740992.0L);
8060 TEST_f_f (floor, 9007199254740992.75L, 9007199254740992.0L);
8061 TEST_f_f (floor, 9007199254740993.5L, 9007199254740993.0L);
8062
5c68d401
RM
8063# if LDBL_MANT_DIG > 100
8064 TEST_f_f (floor, 9007199254740991.0000000000001L, 9007199254740991.0L);
8065 TEST_f_f (floor, 9007199254740992.0000000000001L, 9007199254740992.0L);
8066 TEST_f_f (floor, 9007199254740993.0000000000001L, 9007199254740993.0L);
8067 TEST_f_f (floor, 9007199254740991.5000000000001L, 9007199254740991.0L);
8068 TEST_f_f (floor, 9007199254740992.5000000000001L, 9007199254740992.0L);
8069 TEST_f_f (floor, 9007199254740993.5000000000001L, 9007199254740993.0L);
8070# endif
8071
f964490f
RM
8072 TEST_f_f (floor, -9007199254740991.5L, -9007199254740992.0L);
8073 TEST_f_f (floor, -9007199254740992.25L, -9007199254740993.0L);
8074 TEST_f_f (floor, -9007199254740992.5L, -9007199254740993.0L);
8075 TEST_f_f (floor, -9007199254740992.75L, -9007199254740993.0L);
8076 TEST_f_f (floor, -9007199254740993.5L, -9007199254740994.0L);
8077
5c68d401
RM
8078# if LDBL_MANT_DIG > 100
8079 TEST_f_f (floor, -9007199254740991.0000000000001L, -9007199254740992.0L);
8080 TEST_f_f (floor, -9007199254740992.0000000000001L, -9007199254740993.0L);
8081 TEST_f_f (floor, -9007199254740993.0000000000001L, -9007199254740994.0L);
8082 TEST_f_f (floor, -9007199254740991.5000000000001L, -9007199254740992.0L);
8083 TEST_f_f (floor, -9007199254740992.5000000000001L, -9007199254740993.0L);
8084 TEST_f_f (floor, -9007199254740993.5000000000001L, -9007199254740994.0L);
8085# endif
8086
f964490f
RM
8087 TEST_f_f (floor, 72057594037927935.5L, 72057594037927935.0L);
8088 TEST_f_f (floor, 72057594037927936.25L, 72057594037927936.0L);
8089 TEST_f_f (floor, 72057594037927936.5L, 72057594037927936.0L);
8090 TEST_f_f (floor, 72057594037927936.75L, 72057594037927936.0L);
8091 TEST_f_f (floor, 72057594037927937.5L, 72057594037927937.0L);
8092
8093 TEST_f_f (floor, -72057594037927935.5L, -72057594037927936.0L);
8094 TEST_f_f (floor, -72057594037927936.25L, -72057594037927937.0L);
8095 TEST_f_f (floor, -72057594037927936.5L, -72057594037927937.0L);
8096 TEST_f_f (floor, -72057594037927936.75L, -72057594037927937.0L);
8097 TEST_f_f (floor, -72057594037927937.5L, -72057594037927938.0L);
8098
8099 TEST_f_f (floor, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L);
8100 TEST_f_f (floor, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L);
8101 TEST_f_f (floor, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L);
8102 TEST_f_f (floor, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L);
8103 TEST_f_f (floor, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L);
94e02fc4
AZ
8104
8105 TEST_f_f (floor, 0xf.ffffffffffffff8p+47L, 0xf.fffffffffffep+47L);
8106 TEST_f_f (floor, -0x8.000000000000004p+48L, -0x8.000000000001p+48L);
f964490f
RM
8107#endif
8108
8847214f
UD
8109 END (floor);
8110}
8111
2550dfe9 8112
8847214f
UD
8113static void
8114fma_test (void)
8115{
8116 START (fma);
8117
8118 TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0);
67e971f1
TS
8119 TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value);
8120 TEST_fff_f (fma, 1.0, qnan_value, 3.0, qnan_value);
8121 TEST_fff_f (fma, 1.0, 2.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8122 TEST_fff_f (fma, plus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8123 TEST_fff_f (fma, minus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8124 TEST_fff_f (fma, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8125 TEST_fff_f (fma, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK);
8126 TEST_fff_f (fma, plus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION);
8127 TEST_fff_f (fma, minus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION);
8128 TEST_fff_f (fma, 0.0, plus_infty, 1.0, qnan_value, INVALID_EXCEPTION);
8129 TEST_fff_f (fma, 0.0, minus_infty, 1.0, qnan_value, INVALID_EXCEPTION);
8130
8131 TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION);
8132 TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
8133 TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
8134 TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION);
8135 TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, qnan_value, INVALID_EXCEPTION);
8136 TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, qnan_value, INVALID_EXCEPTION);
8137 TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION);
8138 TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, qnan_value, INVALID_EXCEPTION);
8847214f 8139
2550dfe9 8140 TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L);
3e692e05
JJ
8141
8142 FLOAT fltmax = CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX,
8143 LDBL_MAX, DBL_MAX, FLT_MAX);
8144 TEST_fff_f (fma, -fltmax, -fltmax, minus_infty, minus_infty);
8145 TEST_fff_f (fma, fltmax / 2, fltmax / 2, minus_infty, minus_infty);
8146 TEST_fff_f (fma, -fltmax, fltmax, plus_infty, plus_infty);
8147 TEST_fff_f (fma, fltmax / 2, -fltmax / 4, plus_infty, plus_infty);
8148 TEST_fff_f (fma, plus_infty, 4, plus_infty, plus_infty);
8149 TEST_fff_f (fma, 2, minus_infty, minus_infty, minus_infty);
8150 TEST_fff_f (fma, minus_infty, minus_infty, plus_infty, plus_infty);
8151 TEST_fff_f (fma, plus_infty, minus_infty, minus_infty, minus_infty);
8152
8ec5b013
JM
8153 TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero);
8154 TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero);
8155 TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero);
8156 TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero);
8157 TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero);
8158 TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero);
8159 TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero);
8160 TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero);
8161 TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero);
8162 TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero);
8163 TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero);
8164 TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero);
8165 TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero);
8166 TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero);
8167 TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero);
8168 TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero);
8169 TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero);
8170 TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero);
8171 TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero);
8172 TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero);
8173 TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero);
8174 TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero);
8175 TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero);
8176 TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero);
8177
8178 TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero);
8179 TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero);
8180 TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero);
8181 TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero);
8182
bec749fd
JM
8183 TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8184 TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8185 TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8186 TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8187 TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8188 TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8189 TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8190 TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8191
a0c2940d
JM
8192 TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION);
8193 TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION);
8194 TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION);
8195 TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION);
8196 TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION);
8197 TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION);
8198 TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION);
8199 TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION);
8200
5e908464 8201#if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9ff8d36f
JJ
8202 TEST_fff_f (fma, 0x1.7ff8p+13, 0x1.000002p+0, 0x1.ffffp-24, 0x1.7ff802p+13);
8203 TEST_fff_f (fma, 0x1.fffp+0, 0x1.00001p+0, -0x1.fffp+0, 0x1.fffp-20);
5e908464
JJ
8204 TEST_fff_f (fma, 0x1.9abcdep+127, 0x0.9abcdep-126, -0x1.f08948p+0, 0x1.bb421p-25);
8205 TEST_fff_f (fma, 0x1.9abcdep+100, 0x0.9abcdep-126, -0x1.f08948p-27, 0x1.bb421p-52);
8206 TEST_fff_f (fma, 0x1.fffffep+127, 0x1.001p+0, -0x1.fffffep+127, 0x1.fffffep+115);
8207 TEST_fff_f (fma, -0x1.fffffep+127, 0x1.fffffep+0, 0x1.fffffep+127, -0x1.fffffap+127);
8208 TEST_fff_f (fma, 0x1.fffffep+127, 2.0, -0x1.fffffep+127, 0x1.fffffep+127);
8627a232
JM
8209 TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION);
8210 TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8211 TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8212 TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8213 TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION);
8214 TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION);
8215 TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION);
8216 TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION);
473611b2
JM
8217 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127);
8218 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127);
8219 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127);
8220 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127);
8221 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126);
8222 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8223 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8224 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126);
8225 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8226 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8227 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8228 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8229 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION);
8230 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION);
8231 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
8232 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8233 TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24);
8234 TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24);
8235 TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24);
8236 TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24);
82477c28
JM
8237 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127);
8238 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127);
8239 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127);
8240 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127);
8241 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103);
8242 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103);
8243 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103);
8244 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103);
5e908464
JJ
8245#endif
8246#if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8247 TEST_fff_f (fma, 0x1.7fp+13, 0x1.0000000000001p+0, 0x1.ffep-48, 0x1.7f00000000001p+13);
8248 TEST_fff_f (fma, 0x1.fffp+0, 0x1.0000000000001p+0, -0x1.fffp+0, 0x1.fffp-52);
8249 TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, 0x1p-300, 1.0);
8250 TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, -0x1p-300, 0x1.fffffffffffffp-1);
8251 TEST_fff_f (fma, 0x1.deadbeef2feedp+1023, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp+1, 0x1.0989687bc9da4p-53);
8252 TEST_fff_f (fma, 0x1.deadbeef2feedp+900, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp-122, 0x1.0989687bc9da4p-176);
8253 TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 0x1.001p+0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1011);
8254 TEST_fff_f (fma, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+0, 0x1.fffffffffffffp+1023, -0x1.ffffffffffffdp+1023);
8255 TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 2.0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023);
80bad0cc
JM
8256 TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0, UNDERFLOW_EXCEPTION);
8257 TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022, UNDERFLOW_EXCEPTION);
8258 TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022, UNDERFLOW_EXCEPTION);
8259 TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022, UNDERFLOW_EXCEPTION);
8260 TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022, UNDERFLOW_EXCEPTION);
8261 TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION);
8262 TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION);
8263 TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION);
8627a232 8264 TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION);
80bad0cc 8265 TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION);
3e692e05 8266 TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983);
8627a232
JM
8267 TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION);
8268 TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8269 TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8270 TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8271 TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION);
8272 TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION);
8273 TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION);
8274 TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION);
473611b2
JM
8275 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023);
8276 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023);
8277 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023);
8278 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023);
8279 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022);
8280 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8281 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8282 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022);
8283 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8284 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8285 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8286 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8287 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION);
8288 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION);
8289 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
8290 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8291 TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
8292 TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
8293 TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
8294 TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
82477c28
JM
8295 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023);
8296 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023);
8297 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023);
8298 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023);
8299 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970);
8300 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970);
8301 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970);
8302 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970);
3e692e05
JJ
8303#endif
8304#if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8305 TEST_fff_f (fma, -0x8.03fcp+3696L, 0xf.fffffffffffffffp-6140L, 0x8.3ffffffffffffffp-2450L, -0x8.01ecp-2440L);
8306 TEST_fff_f (fma, 0x9.fcp+2033L, -0x8.000e1f000ff800fp-3613L, -0xf.fffffffffffc0ffp-1579L, -0xd.fc119fb093ed092p-1577L);
8307 TEST_fff_f (fma, 0xc.7fc000003ffffffp-1194L, 0x8.1e0003fffffffffp+15327L, -0x8.fffep+14072L, 0xc.ae9f164020effffp+14136L);
8308 TEST_fff_f (fma, -0x8.0001fc000000003p+1798L, 0xcp-2230L, 0x8.f7e000000000007p-468L, -0xc.0002f9ffee10404p-429L);
8309 TEST_fff_f (fma, 0xc.0000000000007ffp+10130L, -0x8.000000000000001p+4430L, 0xc.07000000001ffffp+14513L, -0xb.fffffffffffd7e4p+14563L);
8627a232
JM
8310 TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L, UNDERFLOW_EXCEPTION);
8311 TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION);
8312 TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8313 TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8314 TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8315 TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION);
8316 TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION);
8317 TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION);
8318 TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION);
473611b2
JM
8319 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L);
8320 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L);
8321 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L);
8322 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L);
8323 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L);
8324 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8325 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8326 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L);
8327 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8328 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8329 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8330 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8331 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION);
8332 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION);
8333 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
8334 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8335 TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
8336 TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
8337 TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
8338 TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
82477c28
JM
8339 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L);
8340 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L);
8341 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L);
8342 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L);
8343 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L);
8344 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L);
8345 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L);
8346 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L);
9ff8d36f 8347#endif
7c08a05c
JJ
8348#if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8349 TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L);
80bad0cc
JM
8350 TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L, UNDERFLOW_EXCEPTION);
8351 TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L, UNDERFLOW_EXCEPTION);
7c08a05c
JJ
8352 TEST_fff_f (fma, -0x1.ac79c9376ef447f3827c9e9de008p-2228L, -0x1.5ba830022b6139e21fbe7270cad8p-6314L, 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616L, 0x1.22f14a0253878a730cd1aee373adp-8541L);
8353 TEST_fff_f (fma, -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652L, 0x1.f34235ff9d095449c29b4831b62dp+3311L, 0x1.fbe4302df23354dbd0c4d3cfe606p+5879L, -0x1.bb473bfdfb7a6e18886ce6e57eafp+5964L);
8354 TEST_fff_f (fma, -0x1.ca8835fc6ecfb5398625fc891be5p-1686L, 0x1.621e1972bbe2180e5be9dd7d8df5p-7671L, -0x1.7d2d21b73b52cf20dec2a83902a4p-9395L, -0x1.3d2322191c9c88bc68a62ab8042cp-9356L);
8355 TEST_fff_f (fma, -0x1.55cff679ec49c2541fab41fc843ep-11819L, 0x1.e60e9f464f9e8df0509647c7c971p+12325L, 0x1.eaa2a7649d765c2f564f7a5beca7p+454L, -0x1.447e29fa7e406a285f4e350fcf86p+507L);
8356 TEST_fff_f (fma, 0x1.f0e7b1454908576f2537d863cf9bp+11432L, 0x1.cdce52f09d4ca76e68706f34b5d5p-1417L, -0x1.2e986187c70f146235ea2066e486p+9979L, 0x1.c030dad3cc5643f3dd0f5619f661p+10016L);
8357 TEST_fff_f (fma, 0x1.f102f7da4a57a3a4aab620e29452p-3098L, -0x1.cc06a4ff40248f9e2dcc4b6afd84p-11727L, 0x1.d512a11126b5ac8ed8973b8580c8p-14849L, -0x1.be8f1cf737ab4d1c31c54f5ec23bp-14824L);
8358 TEST_fff_f (fma, -0x1.fc47ac7434b993cd8dcb2b431f25p-3816L, 0x1.fbc9750da8468852d84558e1db6dp-5773L, -0x1.00a98abf783f75c40fe5b7a37d86p-9607L, -0x1.f81917b166f45e763cfcc057e2adp-9588L);
8359 TEST_fff_f (fma, 0x1.00000000000007ffffffffffffffp-9045L, -0x1.ffffffffffff80000001ffffffffp+4773L, -0x1.f8p-4316L, -0x1.00000000000f88000000fffffdffp-4271L);
8360 TEST_fff_f (fma, 0x1.4e922764c90701d4a2f21d01893dp-8683L, -0x1.955a12e2d7c9447c27fa022fc865p+212L, -0x1.e9634462eaef96528b90b6944578p-8521L, -0x1.08e1783184a371943d3598e10865p-8470L);
8361 TEST_fff_f (fma, 0x1.801181509c03bdbef10d6165588cp-15131L, 0x1.ad86f8e57d3d40bfa8007780af63p-368L, -0x1.6e9df0dab1c9f1d7a6043c390741p-15507L, 0x1.417c9b2b15e2ad57dc9e0e920844p-15498L);
8627a232
JM
8362 TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION);
8363 TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8364 TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8365 TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8366 TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION);
8367 TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION);
8368 TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION);
8369 TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION);
473611b2
JM
8370 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L);
8371 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L);
8372 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L);
8373 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L);
8374 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L);
8375 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8376 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8377 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L);
8378 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8379 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8380 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8381 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8382 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION);
8383 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION);
8384 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
8385 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8386 TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
8387 TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
8388 TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
8389 TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
82477c28
JM
8390 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L);
8391 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L);
8392 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L);
8393 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L);
8394 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L);
8395 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L);
8396 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L);
8397 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L);
7c08a05c 8398#endif
2550dfe9 8399
8847214f
UD
8400 END (fma);
8401}
8402
8403
8ec5b013
JM
8404static void
8405fma_test_towardzero (void)
8406{
8407 int save_round_mode;
8408 START (fma_towardzero);
8409
8410 save_round_mode = fegetround ();
8411
8412 if (!fesetround (FE_TOWARDZERO))
8413 {
8414 TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero);
8415 TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero);
8416 TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero);
8417 TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero);
8418 TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero);
8419 TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero);
8420 TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero);
8421 TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero);
8422 TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero);
8423 TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero);
8424 TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero);
8425 TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero);
8426 TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero);
8427 TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero);
8428 TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero);
8429 TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero);
8430 TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero);
8431 TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero);
8432 TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero);
8433 TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero);
8434 TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero);
8435 TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero);
8436 TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero);
8437 TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero);
8438
8439 TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero);
8440 TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero);
8441 TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero);
8442 TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero);
bec749fd
JM
8443
8444 TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8445 TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8446 TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8447 TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8448 TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8449 TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8450 TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8451 TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8627a232 8452
7184dcdf 8453#if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304. */
a0c2940d
JM
8454 TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION);
8455 TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION);
8456 TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION);
8457 TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION);
8458 TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION);
8459 TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION);
8460 TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION);
8461 TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION);
7184dcdf 8462#endif
a0c2940d 8463
8627a232
JM
8464#if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8465 TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION);
8466 TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8467 TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8468 TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8469 TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8470 TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8471 TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8472 TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
473611b2
JM
8473 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127);
8474 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127);
8475 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127);
8476 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127);
8477 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126);
8478 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8479 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8480 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126);
8481 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8482 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION);
8483 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION);
8484 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8485 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION);
8486 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION);
8487 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION);
8488 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8489 TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24);
8490 TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24);
8491 TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24);
8492 TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24);
82477c28
JM
8493 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127);
8494 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127);
8495 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127);
8496 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127);
8497 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103);
8498 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103);
8499 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103);
8500 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103);
8627a232
JM
8501#endif
8502#if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8503 TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION);
8504 TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8505 TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8506 TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8507 TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8508 TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8509 TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8510 TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
473611b2
JM
8511 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023);
8512 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023);
8513 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023);
8514 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023);
8515 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022);
8516 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8517 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8518 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022);
8519 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8520 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION);
8521 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION);
8522 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8523 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION);
8524 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION);
8525 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION);
8526 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8527 TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
8528 TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
8529 TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
8530 TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
82477c28
JM
8531 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023);
8532 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023);
8533 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023);
8534 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023);
8535 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970);
8536 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970);
8537 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970);
8538 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970);
8627a232
JM
8539#endif
8540#if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8541 TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION);
8542 TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8543 TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8544 TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8545 TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8546 TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8547 TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8548 TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
473611b2
JM
8549 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L);
8550 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L);
8551 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L);
8552 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L);
8553 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L);
8554 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8555 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8556 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L);
8557 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8558 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION);
8559 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION);
8560 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8561 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION);
8562 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION);
8563 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION);
8564 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8565 TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
8566 TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
8567 TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
8568 TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
82477c28
JM
8569 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L);
8570 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L);
8571 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L);
8572 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L);
8573 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L);
8574 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L);
8575 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L);
8576 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L);
8627a232
JM
8577#endif
8578#if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8579 TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION);
8580 TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8581 TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8582 TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8583 TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8584 TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8585 TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8586 TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
473611b2
JM
8587 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L);
8588 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L);
8589 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L);
8590 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L);
8591 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L);
8592 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8593 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8594 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L);
8595 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8596 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8597 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8598 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8599 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION);
8600 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION);
8601 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION);
8602 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8603 TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
8604 TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
8605 TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
8606 TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
82477c28
JM
8607 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L);
8608 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L);
8609 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L);
8610 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L);
8611 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L);
8612 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L);
8613 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L);
8614 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L);
8627a232 8615#endif
8ec5b013
JM
8616 }
8617
8618 fesetround (save_round_mode);
8619
8620 END (fma_towardzero);
8621}
8622
8623
8624static void
8625fma_test_downward (void)
8626{
8627 int save_round_mode;
8628 START (fma_downward);
8629
8630 save_round_mode = fegetround ();
8631
8632 if (!fesetround (FE_DOWNWARD))
8633 {
8634 TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero);
8635 TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, minus_zero);
8636 TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, minus_zero);
8637 TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero);
8638 TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, minus_zero);
8639 TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero);
8640 TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero);
8641 TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, minus_zero);
8642 TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero);
8643 TEST_fff_f (fma, 1.0, plus_zero, minus_zero, minus_zero);
8644 TEST_fff_f (fma, 1.0, minus_zero, plus_zero, minus_zero);
8645 TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero);
8646 TEST_fff_f (fma, -1.0, plus_zero, plus_zero, minus_zero);
8647 TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero);
8648 TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero);
8649 TEST_fff_f (fma, -1.0, minus_zero, minus_zero, minus_zero);
8650 TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero);
8651 TEST_fff_f (fma, plus_zero, 1.0, minus_zero, minus_zero);
8652 TEST_fff_f (fma, plus_zero, -1.0, plus_zero, minus_zero);
8653 TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero);
8654 TEST_fff_f (fma, minus_zero, 1.0, plus_zero, minus_zero);
8655 TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero);
8656 TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero);
8657 TEST_fff_f (fma, minus_zero, -1.0, minus_zero, minus_zero);
8658
8659 TEST_fff_f (fma, 1.0, 1.0, -1.0, minus_zero);
8660 TEST_fff_f (fma, 1.0, -1.0, 1.0, minus_zero);
8661 TEST_fff_f (fma, -1.0, 1.0, 1.0, minus_zero);
8662 TEST_fff_f (fma, -1.0, -1.0, -1.0, minus_zero);
bec749fd
JM
8663
8664 TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8665 TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8666 TEST_fff_f (fma, min_value, -min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION);
8667 TEST_fff_f (fma, min_value, -min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION);
8668 TEST_fff_f (fma, -min_value, min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION);
8669 TEST_fff_f (fma, -min_value, min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION);
8670 TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8671 TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION);
8627a232 8672
7184dcdf 8673#if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304. */
a0c2940d
JM
8674 TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION);
8675 TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION);
8676 TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION);
8677 TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION);
8678 TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION);
8679 TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION);
8680 TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION);
8681 TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION);
7184dcdf 8682#endif
a0c2940d 8683
8627a232
JM
8684#if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8685 TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION);
8686 TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00008p-127, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8687 TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8688 TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8689 TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8690 TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION);
8691 TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8692 TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
473611b2
JM
8693 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127);
8694 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127);
8695 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127);
8696 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1.000002p127);
8697 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126);
8698 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8699 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8700 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1.000002p-126);
8701 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8702 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION);
8703 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8704 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION);
8705 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION);
8706 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION);
8707 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
8708 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-148, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8709 TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24);
8710 TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24);
8711 TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24);
8712 TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24);
82477c28
JM
8713 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127);
8714 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127);
8715 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127);
8716 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1.000002p127);
8717 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103);
8718 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103);
8719 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103);
8720 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1.000002p103);
8627a232
JM
8721#endif
8722#if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8723 TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION);
8724 TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8725 TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8726 TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8727 TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8728 TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION);
8729 TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8730 TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
473611b2
JM
8731 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023);
8732 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023);
8733 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023);
8734 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1.0000000000001p1023);
8735 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022);
8736 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8737 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8738 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1.0000000000001p-1022);
8739 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8740 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION);
8741 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8742 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION);
8743 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION);
8744 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION);
8745 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
8746 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1073, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8747 TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
8748 TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
8749 TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
8750 TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
82477c28
JM
8751 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023);
8752 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023);
8753 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023);
8754 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1.0000000000001p1023);
8755 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970);
8756 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970);
8757 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970);
8758 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1.0000000000001p970);
8627a232
JM
8759#endif
8760#if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8761 TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION);
8762 TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8763 TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8764 TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8765 TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8766 TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION);
8767 TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8768 TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
473611b2
JM
8769 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L);
8770 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L);
8771 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L);
8772 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1.0000000000000002p16383L);
8773 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L);
8774 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8775 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8776 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1.0000000000000002p-16382L);
8777 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8778 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION);
8779 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8780 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION);
8781 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION);
8782 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION);
8783 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
8784 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16444L, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8785 TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
8786 TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
8787 TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
8788 TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
82477c28
JM
8789 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L);
8790 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L);
8791 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L);
8792 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1.0000000000000002p16383L);
8793 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L);
8794 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L);
8795 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L);
8796 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1.0000000000000002p16319L);
8627a232
JM
8797#endif
8798#if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8799 TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION);
8800 TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8801 TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8802 TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8803 TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8804 TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION);
8805 TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8806 TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
473611b2
JM
8807 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L);
8808 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L);
8809 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L);
8810 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L);
8811 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L);
8812 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8813 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8814 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1.0000000000000000000000000001p-16382L);
8815 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8816 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8817 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
8818 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION);
8819 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION);
8820 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION);
8821 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
8822 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16493L, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8823 TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
8824 TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
8825 TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
8826 TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
82477c28
JM
8827 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L);
8828 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L);
8829 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L);
8830 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L);
8831 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L);
8832 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L);
8833 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L);
8834 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1.0000000000000000000000000001p16319L);
8627a232 8835#endif
8ec5b013
JM
8836 }
8837
8838 fesetround (save_round_mode);
8839
8840 END (fma_downward);
8841}
8842
8843
8844static void
8845fma_test_upward (void)
8846{
8847 int save_round_mode;
8848 START (fma_upward);
8849
8850 save_round_mode = fegetround ();
8851
8852 if (!fesetround (FE_UPWARD))
8853 {
8854 TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero);
8855 TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero);
8856 TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero);
8857 TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero);
8858 TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero);
8859 TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero);
8860 TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero);
8861 TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero);
8862 TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero);
8863 TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero);
8864 TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero);
8865 TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero);
8866 TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero);
8867 TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero);
8868 TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero);
8869 TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero);
8870 TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero);
8871 TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero);
8872 TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero);
8873 TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero);
8874 TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero);
8875 TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero);
8876 TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero);
8877 TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero);
8878
8879 TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero);
8880 TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero);
8881 TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero);
8882 TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero);
bec749fd
JM
8883
8884 TEST_fff_f (fma, min_value, min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION);
8885 TEST_fff_f (fma, min_value, min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION);
8886 TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8887 TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8888 TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8889 TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION);
8890 TEST_fff_f (fma, -min_value, -min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION);
8891 TEST_fff_f (fma, -min_value, -min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION);
8627a232 8892
7184dcdf 8893#if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304. */
a0c2940d
JM
8894 TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION);
8895 TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION);
8896 TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION);
8897 TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION);
8898 TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION);
8899 TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION);
8900 TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION);
8901 TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION);
7184dcdf 8902#endif
a0c2940d 8903
8627a232
JM
8904#if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8905 TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00008p-127, UNDERFLOW_EXCEPTION);
8906 TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8907 TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8908 TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8909 TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION);
8910 TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8911 TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8912 TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
473611b2
JM
8913 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1.000002p127);
8914 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127);
8915 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127);
8916 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127);
8917 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1.000002p-126);
8918 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8919 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8920 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126);
8921 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION);
8922 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8923 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION);
8924 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION);
8925 TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-148, UNDERFLOW_EXCEPTION);
8926 TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION);
8927 TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION);
8928 TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8929 TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24);
8930 TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24);
8931 TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24);
8932 TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24);
82477c28
JM
8933 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1.000002p127);
8934 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127);
8935 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127);
8936 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127);
8937 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1.000002p103);
8938 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103);
8939 TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103);
8940 TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103);
8627a232
JM
8941#endif
8942#if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8943 TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION);
8944 TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8945 TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8946 TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8947 TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION);
8948 TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8949 TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8950 TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
473611b2
JM
8951 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1.0000000000001p1023);
8952 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023);
8953 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023);
8954 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023);
8955 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1.0000000000001p-1022);
8956 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8957 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8958 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022);
8959 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION);
8960 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8961 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION);
8962 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION);
8963 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1073, UNDERFLOW_EXCEPTION);
8964 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION);
8965 TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION);
8966 TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
8967 TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
8968 TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
8969 TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106);
8970 TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106);
82477c28
JM
8971 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1.0000000000001p1023);
8972 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023);
8973 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023);
8974 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023);
8975 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1.0000000000001p970);
8976 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970);
8977 TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970);
8978 TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970);
8627a232
JM
8979#endif
8980#if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8981 TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION);
8982 TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION);
ef82f4da
JM
8983 TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8984 TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8985 TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION);
8986 TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8987 TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8988 TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
473611b2
JM
8989 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1.0000000000000002p16383L);
8990 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L);
8991 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L);
8992 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L);
8993 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1.0000000000000002p-16382L);
8994 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
8995 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8996 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L);
8997 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION);
8998 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
8999 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION);
9000 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
9001 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16444L, UNDERFLOW_EXCEPTION);
9002 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION);
9003 TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION);
9004 TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
9005 TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
9006 TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
9007 TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L);
9008 TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L);
82477c28
JM
9009 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1.0000000000000002p16383L);
9010 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L);
9011 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L);
9012 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L);
9013 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1.0000000000000002p16319L);
9014 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L);
9015 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L);
9016 TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L);
8627a232
JM
9017#endif
9018#if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9019 TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION);
9020 TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION);
ef82f4da
JM
9021 TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
9022 TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
9023 TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION);
9024 TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
9025 TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
9026 TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
473611b2
JM
9027 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L);
9028 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L);
9029 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L);
9030 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L);
9031 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1.0000000000000000000000000001p-16382L);
9032 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING);
9033 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
9034 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L);
9035 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION);
9036 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
9037 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION);
9038 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION);
9039 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16493L, UNDERFLOW_EXCEPTION);
9040 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION);
9041 TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION);
9042 TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION);
5b5b04d6
JM
9043 TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
9044 TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
9045 TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L);
9046 TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L);
82477c28
JM
9047 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L);
9048 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L);
9049 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L);
9050 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L);
9051 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1.0000000000000000000000000001p16319L);
9052 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L);
9053 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L);
9054 TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L);
8627a232 9055#endif
8ec5b013
JM
9056 }
9057
9058 fesetround (save_round_mode);
9059
9060 END (fma_upward);
9061}
9062
9063
8847214f
UD
9064static void
9065fmax_test (void)
9066{
9067 START (fmax);
9068
9069 TEST_ff_f (fmax, 0, 0, 0);
9070 TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero);
9071 TEST_ff_f (fmax, 9, 0, 9);
9072 TEST_ff_f (fmax, 0, 9, 9);
9073 TEST_ff_f (fmax, -9, 0, 0);
9074 TEST_ff_f (fmax, 0, -9, 0);
9075
9076 TEST_ff_f (fmax, plus_infty, 9, plus_infty);
9077 TEST_ff_f (fmax, 0, plus_infty, plus_infty);
9078 TEST_ff_f (fmax, -9, plus_infty, plus_infty);
9079 TEST_ff_f (fmax, plus_infty, -9, plus_infty);
9080
9081 TEST_ff_f (fmax, minus_infty, 9, 9);
9082 TEST_ff_f (fmax, minus_infty, -9, -9);
9083 TEST_ff_f (fmax, 9, minus_infty, 9);
9084 TEST_ff_f (fmax, -9, minus_infty, -9);
9085
67e971f1
TS
9086 TEST_ff_f (fmax, 0, qnan_value, 0);
9087 TEST_ff_f (fmax, 9, qnan_value, 9);
9088 TEST_ff_f (fmax, -9, qnan_value, -9);
9089 TEST_ff_f (fmax, qnan_value, 0, 0);
9090 TEST_ff_f (fmax, qnan_value, 9, 9);
9091 TEST_ff_f (fmax, qnan_value, -9, -9);
9092 TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty);
9093 TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty);
9094 TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty);
9095 TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty);
9096 TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value);
8847214f
UD
9097
9098 END (fmax);
9099}
9100
9101
9102static void
9103fmin_test (void)
9104{
9105 START (fmin);
9106
9107 TEST_ff_f (fmin, 0, 0, 0);
9108 TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero);
9109 TEST_ff_f (fmin, 9, 0, 0);
9110 TEST_ff_f (fmin, 0, 9, 0);
9111 TEST_ff_f (fmin, -9, 0, -9);
9112 TEST_ff_f (fmin, 0, -9, -9);
9113
9114 TEST_ff_f (fmin, plus_infty, 9, 9);
9115 TEST_ff_f (fmin, 9, plus_infty, 9);
9116 TEST_ff_f (fmin, plus_infty, -9, -9);
9117 TEST_ff_f (fmin, -9, plus_infty, -9);
9118 TEST_ff_f (fmin, minus_infty, 9, minus_infty);
9119 TEST_ff_f (fmin, minus_infty, -9, minus_infty);
9120 TEST_ff_f (fmin, 9, minus_infty, minus_infty);
9121 TEST_ff_f (fmin, -9, minus_infty, minus_infty);
9122
67e971f1
TS
9123 TEST_ff_f (fmin, 0, qnan_value, 0);
9124 TEST_ff_f (fmin, 9, qnan_value, 9);
9125 TEST_ff_f (fmin, -9, qnan_value, -9);
9126 TEST_ff_f (fmin, qnan_value, 0, 0);
9127 TEST_ff_f (fmin, qnan_value, 9, 9);
9128 TEST_ff_f (fmin, qnan_value, -9, -9);
9129 TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty);
9130 TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty);
9131 TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty);
9132 TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty);
9133 TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value);
8847214f
UD
9134
9135 END (fmin);
9136}
9137
9138
9139static void
9140fmod_test (void)
9141{
aaca11d8 9142 errno = 0;
3c6cad26 9143 FUNC(fmod) (6.5, 2.3L);
aaca11d8
UD
9144 if (errno == ENOSYS)
9145 /* Function not implemented. */
9146 return;
9147
8847214f
UD
9148 START (fmod);
9149
9150 /* fmod (+0, y) == +0 for y != 0. */
9151 TEST_ff_f (fmod, 0, 3, 0);
9152
9153 /* fmod (-0, y) == -0 for y != 0. */
9154 TEST_ff_f (fmod, minus_zero, 3, minus_zero);
9155
67e971f1 9156 /* fmod (+inf, y) == qNaN plus invalid exception. */
f2da7793 9157 TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
67e971f1 9158 /* fmod (-inf, y) == qNaN plus invalid exception. */
f2da7793 9159 TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
67e971f1 9160 /* fmod (x, +0) == qNaN plus invalid exception. */
f2da7793 9161 TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
67e971f1
TS
9162 /* fmod (x, -0) == qNaN plus invalid exception. */
9163 TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION);
8847214f
UD
9164
9165 /* fmod (x, +inf) == x for x not infinite. */
9166 TEST_ff_f (fmod, 3.0, plus_infty, 3.0);
9167 /* fmod (x, -inf) == x for x not infinite. */
9168 TEST_ff_f (fmod, 3.0, minus_infty, 3.0);
9169
67e971f1 9170 TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value);
15daa639 9171
2550dfe9
AJ
9172 TEST_ff_f (fmod, 6.5, 2.25L, 2.0L);
9173 TEST_ff_f (fmod, -6.5, 2.25L, -2.0L);
9174 TEST_ff_f (fmod, 6.5, -2.25L, 2.0L);
9175 TEST_ff_f (fmod, -6.5, -2.25L, -2.0L);
8847214f 9176
c5bfe3d5
JM
9177 TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero);
9178#ifndef TEST_FLOAT
9179 TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero);
9180#endif
9181#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
9182 TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero);
9183#endif
9184
8847214f
UD
9185 END (fmod);
9186}
9187
2550dfe9 9188
8847214f
UD
9189static void
9190fpclassify_test (void)
9191{
9192 START (fpclassify);
9193
67e971f1 9194 TEST_f_i (fpclassify, qnan_value, FP_NAN);
8847214f
UD
9195 TEST_f_i (fpclassify, plus_infty, FP_INFINITE);
9196 TEST_f_i (fpclassify, minus_infty, FP_INFINITE);
9197 TEST_f_i (fpclassify, plus_zero, FP_ZERO);
9198 TEST_f_i (fpclassify, minus_zero, FP_ZERO);
9199 TEST_f_i (fpclassify, 1000, FP_NORMAL);
ef1bb361 9200 TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL);
8847214f
UD
9201
9202 END (fpclassify);
9203}
9204
9205
9206static void
9207frexp_test (void)
9208{
9209 int x;
9210
9211 START (frexp);
9212
9213 TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE);
9214 TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE);
67e971f1 9215 TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE);
8847214f
UD
9216
9217 TEST_fI_f1 (frexp, 0.0, 0.0, 0.0);
9218 TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0);
9219
b15cb495
UD
9220 TEST_fI_f1 (frexp, 12.8L, 0.8L, 4);
9221 TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5);
8847214f
UD
9222
9223 END (frexp);
9224}
9225
9226
9227static void
9228gamma_test (void)
9229{
9230 errno = 0;
9231 FUNC(gamma) (1);
9232
9233 if (errno == ENOSYS)
9234 /* Function not implemented. */
9235 return;
8847214f
UD
9236
9237 START (gamma);
9238
5bf96de5
JM
9239 TEST_f_f1 (gamma, plus_infty, plus_infty, 1);
9240 TEST_f_f1 (gamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
9241 TEST_f_f1 (gamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
9242 TEST_f_f1 (gamma, minus_infty, plus_infty, IGNORE);
9243 TEST_f_f1 (gamma, qnan_value, qnan_value, IGNORE);
8847214f
UD
9244
9245 TEST_f_f1 (gamma, 1, 0, 1);
9246 TEST_f_f1 (gamma, 3, M_LN2l, 1);
9247
9248 TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1);
f30e0cd3 9249 TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1);
8847214f
UD
9250
9251 END (gamma);
9252}
9253
9254static void
9255hypot_test (void)
9256{
aaca11d8 9257 errno = 0;
3c6cad26 9258 FUNC(hypot) (0.7L, 12.4L);
aaca11d8
UD
9259 if (errno == ENOSYS)
9260 /* Function not implemented. */
9261 return;
9262
8847214f
UD
9263 START (hypot);
9264
d5dc2af3
JM
9265 TEST_ff_f (hypot, plus_infty, 1, plus_infty);
9266 TEST_ff_f (hypot, minus_infty, 1, plus_infty);
8847214f 9267
15daa639 9268#ifndef TEST_INLINE
67e971f1
TS
9269 TEST_ff_f (hypot, plus_infty, qnan_value, plus_infty);
9270 TEST_ff_f (hypot, minus_infty, qnan_value, plus_infty);
9271 TEST_ff_f (hypot, qnan_value, plus_infty, plus_infty);
9272 TEST_ff_f (hypot, qnan_value, minus_infty, plus_infty);
15daa639 9273#endif
8847214f 9274
67e971f1 9275 TEST_ff_f (hypot, qnan_value, qnan_value, qnan_value);
8847214f
UD
9276
9277 /* hypot (x,y) == hypot (+-x, +-y) */
d8337213
UD
9278 TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L);
9279 TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L);
9280 TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L);
9281 TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L);
9282 TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L);
9283 TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L);
9284 TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L);
9285 TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L);
8847214f
UD
9286
9287 /* hypot (x,0) == fabs (x) */
2550dfe9
AJ
9288 TEST_ff_f (hypot, 0.75L, 0, 0.75L);
9289 TEST_ff_f (hypot, -0.75L, 0, 0.75L);
3c6cad26 9290 TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L);
8847214f 9291
2550dfe9 9292 TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L);
8847214f 9293
8e27e3cc 9294 TEST_ff_f (hypot, 1.0L, 0x1p-61L, 1.0L);
16e616a7 9295 TEST_ff_f (hypot, 0x1p+0L, 0x1.fp-129L, 0x1p+0L);
1468ded3
JM
9296#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
9297 TEST_ff_f (hypot, 0x1.23456789abcdef0123456789ab8p-500L, 0x1.23456789abcdef0123456789ab8p-500L, 4.9155782399407039128612180934736799735113e-151L);
9298#endif
8e27e3cc 9299
aa4a2ae1
JM
9300#if !(defined TEST_FLOAT && defined TEST_INLINE)
9301 TEST_ff_f (hypot, 0x3p125L, 0x4p125L, 0x5p125L);
9302 TEST_ff_f (hypot, 0x1.234566p-126L, 0x1.234566p-126L, 1.891441686191081936598531534017449451173e-38L);
9303#endif
9304
5779f134 9305#if !defined TEST_FLOAT && !(defined TEST_DOUBLE && defined TEST_INLINE)
aa4a2ae1 9306 TEST_ff_f (hypot, 0x3p1021L, 0x4p1021L, 0x5p1021L);
16e616a7 9307 TEST_ff_f (hypot, 0x1p+0L, 0x0.3ep-1022L, 0x1p+0L);
aa4a2ae1
JM
9308#endif
9309
9310#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 && !defined TEST_INLINE
9311 TEST_ff_f (hypot, 0x3p16381L, 0x4p16381L, 0x5p16381L);
9312#endif
9313
8847214f
UD
9314 END (hypot);
9315}
9316
9317
9318static void
9319ilogb_test (void)
9320{
9321 START (ilogb);
9322
9323 TEST_f_i (ilogb, 1, 0);
9324 TEST_f_i (ilogb, M_El, 1);
9325 TEST_f_i (ilogb, 1024, 10);
9326 TEST_f_i (ilogb, -2000, 10);
9327
76da7265 9328 /* ilogb (0.0) == FP_ILOGB0 plus invalid exception */
f2da7793 9329 TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM);
67e971f1 9330 /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception */
f2da7793 9331 TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM);
76da7265 9332 /* ilogb (inf) == INT_MAX plus invalid exception */
f2da7793 9333 TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
76da7265 9334 /* ilogb (-inf) == INT_MAX plus invalid exception */
f2da7793 9335 TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
8847214f
UD
9336
9337 END (ilogb);
9338}
9339
9340static void
9341isfinite_test (void)
9342{
9343 START (isfinite);
9344
9345 TEST_f_b (isfinite, 0, 1);
9346 TEST_f_b (isfinite, minus_zero, 1);
9347 TEST_f_b (isfinite, 10, 1);
ef1bb361 9348 TEST_f_b (isfinite, min_subnorm_value, 1);
8847214f
UD
9349 TEST_f_b (isfinite, plus_infty, 0);
9350 TEST_f_b (isfinite, minus_infty, 0);
67e971f1 9351 TEST_f_b (isfinite, qnan_value, 0);
8847214f
UD
9352
9353 END (isfinite);
9354}
9355
0e8e0c1c
JM
9356static void
9357isgreater_test (void)
9358{
9359 START (isgreater);
9360
9361 TEST_ff_i (isgreater, minus_zero, minus_zero, 0);
9362 TEST_ff_i (isgreater, minus_zero, plus_zero, 0);
9363 TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0);
67e971f1 9364 TEST_ff_i (isgreater, minus_zero, qnan_value, 0);
0e8e0c1c
JM
9365 TEST_ff_i (isgreater, plus_zero, minus_zero, 0);
9366 TEST_ff_i (isgreater, plus_zero, plus_zero, 0);
9367 TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0);
67e971f1 9368 TEST_ff_i (isgreater, plus_zero, qnan_value, 0);
0e8e0c1c
JM
9369 TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1);
9370 TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1);
9371 TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0);
67e971f1
TS
9372 TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0);
9373 TEST_ff_i (isgreater, qnan_value, minus_zero, 0);
9374 TEST_ff_i (isgreater, qnan_value, plus_zero, 0);
9375 TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0);
9376 TEST_ff_i (isgreater, qnan_value, qnan_value, 0);
0e8e0c1c
JM
9377
9378 END (isgreater);
9379}
9380
9381static void
9382isgreaterequal_test (void)
9383{
9384 START (isgreaterequal);
9385
9386 TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1);
9387 TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1);
9388 TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0);
67e971f1 9389 TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0);
0e8e0c1c
JM
9390 TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1);
9391 TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1);
9392 TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0);
67e971f1 9393 TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0);
0e8e0c1c
JM
9394 TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1);
9395 TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1);
9396 TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1);
67e971f1
TS
9397 TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0);
9398 TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0);
9399 TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0);
9400 TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0);
9401 TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0);
0e8e0c1c
JM
9402
9403 END (isgreaterequal);
9404}
9405
ef1bb361
JM
9406static void
9407isinf_test (void)
9408{
9409 START (isinf);
9410
9411 TEST_f_b (isinf, 0, 0);
9412 TEST_f_b (isinf, minus_zero, 0);
9413 TEST_f_b (isinf, 10, 0);
9414 TEST_f_b (isinf, min_subnorm_value, 0);
9415 TEST_f_b (isinf, plus_infty, 1);
9416 TEST_f_b (isinf, minus_infty, 1);
67e971f1 9417 TEST_f_b (isinf, qnan_value, 0);
ef1bb361
JM
9418
9419 END (isinf);
9420}
9421
0e8e0c1c
JM
9422static void
9423isless_test (void)
9424{
9425 START (isless);
9426
9427 TEST_ff_i (isless, minus_zero, minus_zero, 0);
9428 TEST_ff_i (isless, minus_zero, plus_zero, 0);
9429 TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1);
67e971f1 9430 TEST_ff_i (isless, minus_zero, qnan_value, 0);
0e8e0c1c
JM
9431 TEST_ff_i (isless, plus_zero, minus_zero, 0);
9432 TEST_ff_i (isless, plus_zero, plus_zero, 0);
9433 TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1);
67e971f1 9434 TEST_ff_i (isless, plus_zero, qnan_value, 0);
0e8e0c1c
JM
9435 TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0);
9436 TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0);
9437 TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0);
67e971f1
TS
9438 TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0);
9439 TEST_ff_i (isless, qnan_value, minus_zero, 0);
9440 TEST_ff_i (isless, qnan_value, plus_zero, 0);
9441 TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0);
9442 TEST_ff_i (isless, qnan_value, qnan_value, 0);
0e8e0c1c
JM
9443
9444 END (isless);
9445}
9446
9447static void
9448islessequal_test (void)
9449{
9450 START (islessequal);
9451
9452 TEST_ff_i (islessequal, minus_zero, minus_zero, 1);
9453 TEST_ff_i (islessequal, minus_zero, plus_zero, 1);
9454 TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1);
67e971f1 9455 TEST_ff_i (islessequal, minus_zero, qnan_value, 0);
0e8e0c1c
JM
9456 TEST_ff_i (islessequal, plus_zero, minus_zero, 1);
9457 TEST_ff_i (islessequal, plus_zero, plus_zero, 1);
9458 TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1);
67e971f1 9459 TEST_ff_i (islessequal, plus_zero, qnan_value, 0);
0e8e0c1c
JM
9460 TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0);
9461 TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0);
9462 TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1);
67e971f1
TS
9463 TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0);
9464 TEST_ff_i (islessequal, qnan_value, minus_zero, 0);
9465 TEST_ff_i (islessequal, qnan_value, plus_zero, 0);
9466 TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0);
9467 TEST_ff_i (islessequal, qnan_value, qnan_value, 0);
0e8e0c1c
JM
9468
9469 END (islessequal);
9470}
9471
9472static void
9473islessgreater_test (void)
9474{
9475 START (islessgreater);
9476
9477 TEST_ff_i (islessgreater, minus_zero, minus_zero, 0);
9478 TEST_ff_i (islessgreater, minus_zero, plus_zero, 0);
9479 TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1);
67e971f1 9480 TEST_ff_i (islessgreater, minus_zero, qnan_value, 0);
0e8e0c1c
JM
9481 TEST_ff_i (islessgreater, plus_zero, minus_zero, 0);
9482 TEST_ff_i (islessgreater, plus_zero, plus_zero, 0);
9483 TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1);
67e971f1 9484 TEST_ff_i (islessgreater, plus_zero, qnan_value, 0);
0e8e0c1c
JM
9485 TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1);
9486 TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1);
9487 TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0);
67e971f1
TS
9488 TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0);
9489 TEST_ff_i (islessgreater, qnan_value, minus_zero, 0);
9490 TEST_ff_i (islessgreater, qnan_value, plus_zero, 0);
9491 TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0);
9492 TEST_ff_i (islessgreater, qnan_value, qnan_value, 0);
0e8e0c1c
JM
9493
9494 END (islessgreater);
9495}
9496
ef1bb361
JM
9497static void
9498isnan_test (void)
9499{
9500 START (isnan);
9501
9502 TEST_f_b (isnan, 0, 0);
9503 TEST_f_b (isnan, minus_zero, 0);
9504 TEST_f_b (isnan, 10, 0);
9505 TEST_f_b (isnan, min_subnorm_value, 0);
9506 TEST_f_b (isnan, plus_infty, 0);
9507 TEST_f_b (isnan, minus_infty, 0);
67e971f1 9508 TEST_f_b (isnan, qnan_value, 1);
ef1bb361
JM
9509
9510 END (isnan);
9511}
9512
8847214f
UD
9513static void
9514isnormal_test (void)
9515{
9516 START (isnormal);
9517
9518 TEST_f_b (isnormal, 0, 0);
9519 TEST_f_b (isnormal, minus_zero, 0);
9520 TEST_f_b (isnormal, 10, 1);
ef1bb361 9521 TEST_f_b (isnormal, min_subnorm_value, 0);
8847214f
UD
9522 TEST_f_b (isnormal, plus_infty, 0);
9523 TEST_f_b (isnormal, minus_infty, 0);
67e971f1 9524 TEST_f_b (isnormal, qnan_value, 0);
8847214f
UD
9525
9526 END (isnormal);
9527}
9528
57267616
TS
9529static void
9530issignaling_test (void)
9531{
9532 START (issignaling);
9533
9534 TEST_f_b (issignaling, 0, 0);
9535 TEST_f_b (issignaling, minus_zero, 0);
9536 TEST_f_b (issignaling, 10, 0);
9537 TEST_f_b (issignaling, min_subnorm_value, 0);
9538 TEST_f_b (issignaling, plus_infty, 0);
9539 TEST_f_b (issignaling, minus_infty, 0);
9540 TEST_f_b (issignaling, qnan_value, 0);
9541
9542 END (issignaling);
9543}
9544
0e8e0c1c
JM
9545static void
9546isunordered_test (void)
9547{
9548 START (isunordered);
9549
9550 TEST_ff_i (isunordered, minus_zero, minus_zero, 0);
9551 TEST_ff_i (isunordered, minus_zero, plus_zero, 0);
9552 TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0);
67e971f1 9553 TEST_ff_i (isunordered, minus_zero, qnan_value, 1);
0e8e0c1c
JM
9554 TEST_ff_i (isunordered, plus_zero, minus_zero, 0);
9555 TEST_ff_i (isunordered, plus_zero, plus_zero, 0);
9556 TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0);
67e971f1 9557 TEST_ff_i (isunordered, plus_zero, qnan_value, 1);
0e8e0c1c
JM
9558 TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0);
9559 TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0);
9560 TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0);
67e971f1
TS
9561 TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1);
9562 TEST_ff_i (isunordered, qnan_value, minus_zero, 1);
9563 TEST_ff_i (isunordered, qnan_value, plus_zero, 1);
9564 TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1);
9565 TEST_ff_i (isunordered, qnan_value, qnan_value, 1);
0e8e0c1c
JM
9566
9567 END (isunordered);
9568}
9569
8847214f
UD
9570static void
9571j0_test (void)
9572{
cd53c157 9573 FLOAT s, c;
8847214f 9574 errno = 0;
cd53c157
UD
9575 FUNC (sincos) (0, &s, &c);
9576 if (errno == ENOSYS)
9577 /* Required function not implemented. */
9578 return;
8847214f
UD
9579 FUNC(j0) (0);
9580 if (errno == ENOSYS)
9581 /* Function not implemented. */
9582 return;
9583
9584 START (j0);
9585
9586 /* j0 is the Bessel function of the first kind of order 0 */
67e971f1 9587 TEST_f_f (j0, qnan_value, qnan_value);
8847214f 9588 TEST_f_f (j0, plus_infty, 0);
2550dfe9 9589 TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L);
8847214f 9590 TEST_f_f (j0, 0.0, 1.0);
2550dfe9
AJ
9591 TEST_f_f (j0, 0.125L, 0.996097563041985204620768999453174712L);
9592 TEST_f_f (j0, 0.75L, 0.864242275166648623555731103820923211L);
9593 TEST_f_f (j0, 1.0, 0.765197686557966551449717526102663221L);
9594 TEST_f_f (j0, 1.5, 0.511827671735918128749051744283411720L);
9595 TEST_f_f (j0, 2.0, 0.223890779141235668051827454649948626L);
9596 TEST_f_f (j0, 8.0, 0.171650807137553906090869407851972001L);
9597 TEST_f_f (j0, 10.0, -0.245935764451348335197760862485328754L);
fa9ced58
AJ
9598 TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L);
9599 TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L);
8847214f 9600
41c7328e 9601 TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L);
c36e1d23
JM
9602
9603#ifndef TEST_FLOAT
2a185d32 9604 TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L);
98c48fe5 9605 TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L);
c36e1d23
JM
9606#endif
9607
d2f9799e
JM
9608#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9609 TEST_f_f (j0, 0x1p16382L, -1.2193782500509000574176799046642541129387e-2466L);
9610 TEST_f_f (j0, 0x1p16383L, 9.5859502826270374691362975419147645151233e-2467L);
9611#endif
9612
8847214f
UD
9613 END (j0);
9614}
9615
9616
9617static void
9618j1_test (void)
9619{
8a216c1b 9620 FLOAT s, c;
8847214f 9621 errno = 0;
cd53c157
UD
9622 FUNC (sincos) (0, &s, &c);
9623 if (errno == ENOSYS)
9624 /* Required function not implemented. */
9625 return;
8847214f
UD
9626 FUNC(j1) (0);
9627 if (errno == ENOSYS)
9628 /* Function not implemented. */
9629 return;
9630
9631 /* j1 is the Bessel function of the first kind of order 1 */
9632
9633 START (j1);
9634
67e971f1 9635 TEST_f_f (j1, qnan_value, qnan_value);
8847214f
UD
9636 TEST_f_f (j1, plus_infty, 0);
9637
2550dfe9 9638 TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L);
8847214f 9639 TEST_f_f (j1, 0.0, 0.0);
2550dfe9
AJ
9640 TEST_f_f (j1, 0.125L, 0.0623780091344946810942311355879361177L);
9641 TEST_f_f (j1, 0.75L, 0.349243602174862192523281016426251335L);
9642 TEST_f_f (j1, 1.0, 0.440050585744933515959682203718914913L);
9643 TEST_f_f (j1, 1.5, 0.557936507910099641990121213156089400L);
9644 TEST_f_f (j1, 2.0, 0.576724807756873387202448242269137087L);
9645 TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L);
9646 TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L);
8847214f 9647
c36e1d23
JM
9648 TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L);
9649
9650#ifndef TEST_FLOAT
2a185d32 9651 TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L);
98c48fe5 9652 TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L);
c36e1d23
JM
9653#endif
9654
d2f9799e
JM
9655#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9656 TEST_f_f (j1, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L);
9657 TEST_f_f (j1, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L);
9658#endif
9659
8847214f
UD
9660 END (j1);
9661}
9662
9663static void
9664jn_test (void)
9665{
8a216c1b 9666 FLOAT s, c;
8847214f 9667 errno = 0;
cd53c157
UD
9668 FUNC (sincos) (0, &s, &c);
9669 if (errno == ENOSYS)
9670 /* Required function not implemented. */
9671 return;
8847214f
UD
9672 FUNC(jn) (1, 1);
9673 if (errno == ENOSYS)
9674 /* Function not implemented. */
9675 return;
9676
9677 /* jn is the Bessel function of the first kind of order n. */
9678 START (jn);
9679
9680 /* jn (0, x) == j0 (x) */
67e971f1 9681 TEST_ff_f (jn, 0, qnan_value, qnan_value);
8847214f 9682 TEST_ff_f (jn, 0, plus_infty, 0);
2550dfe9 9683 TEST_ff_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L);
8847214f 9684 TEST_ff_f (jn, 0, 0.0, 1.0);
2550dfe9
AJ
9685 TEST_ff_f (jn, 0, 0.125L, 0.996097563041985204620768999453174712L);
9686 TEST_ff_f (jn, 0, 0.75L, 0.864242275166648623555731103820923211L);
9687 TEST_ff_f (jn, 0, 1.0, 0.765197686557966551449717526102663221L);
9688 TEST_ff_f (jn, 0, 1.5, 0.511827671735918128749051744283411720L);
9689 TEST_ff_f (jn, 0, 2.0, 0.223890779141235668051827454649948626L);
9690 TEST_ff_f (jn, 0, 8.0, 0.171650807137553906090869407851972001L);
9691 TEST_ff_f (jn, 0, 10.0, -0.245935764451348335197760862485328754L);
9692 TEST_ff_f (jn, 0, 4.0, -3.9714980986384737228659076845169804197562E-1L);
9693 TEST_ff_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L);
8847214f
UD
9694
9695 /* jn (1, x) == j1 (x) */
67e971f1 9696 TEST_ff_f (jn, 1, qnan_value, qnan_value);
8847214f 9697 TEST_ff_f (jn, 1, plus_infty, 0);
2550dfe9 9698 TEST_ff_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L);
8847214f 9699 TEST_ff_f (jn, 1, 0.0, 0.0);
2550dfe9
AJ
9700 TEST_ff_f (jn, 1, 0.125L, 0.0623780091344946810942311355879361177L);
9701 TEST_ff_f (jn, 1, 0.75L, 0.349243602174862192523281016426251335L);
9702 TEST_ff_f (jn, 1, 1.0, 0.440050585744933515959682203718914913L);
9703 TEST_ff_f (jn, 1, 1.5, 0.557936507910099641990121213156089400L);
9704 TEST_ff_f (jn, 1, 2.0, 0.576724807756873387202448242269137087L);
9705 TEST_ff_f (jn, 1, 8.0, 0.234636346853914624381276651590454612L);
9706 TEST_ff_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L);
8847214f
UD
9707
9708 /* jn (3, x) */
67e971f1 9709 TEST_ff_f (jn, 3, qnan_value, qnan_value);
8847214f
UD
9710 TEST_ff_f (jn, 3, plus_infty, 0);
9711
2550dfe9 9712 TEST_ff_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L);
8847214f 9713 TEST_ff_f (jn, 3, 0.0, 0.0);
2550dfe9
AJ
9714 TEST_ff_f (jn, 3, 0.125L, 0.406503832554912875023029337653442868e-4L);
9715 TEST_ff_f (jn, 3, 0.75L, 0.848438342327410884392755236884386804e-2L);
9716 TEST_ff_f (jn, 3, 1.0, 0.0195633539826684059189053216217515083L);
9717 TEST_ff_f (jn, 3, 2.0, 0.128943249474402051098793332969239835L);
9718 TEST_ff_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L);
8847214f
UD
9719
9720 /* jn (10, x) */
67e971f1 9721 TEST_ff_f (jn, 10, qnan_value, qnan_value);
8847214f
UD
9722 TEST_ff_f (jn, 10, plus_infty, 0);
9723
2550dfe9 9724 TEST_ff_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L);
8847214f 9725 TEST_ff_f (jn, 10, 0.0, 0.0);
2550dfe9
AJ
9726 TEST_ff_f (jn, 10, 0.125L, 0.250543369809369890173993791865771547e-18L);
9727 TEST_ff_f (jn, 10, 0.75L, 0.149621713117596814698712483621682835e-10L);
9728 TEST_ff_f (jn, 10, 1.0, 0.263061512368745320699785368779050294e-9L);
9729 TEST_ff_f (jn, 10, 2.0, 0.251538628271673670963516093751820639e-6L);
9730 TEST_ff_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L);
8847214f 9731
1248c1c4 9732 /* BZ #11589 .*/
cfdc0dd7
AS
9733 TEST_ff_f (jn, 2, 2.4048255576957729L, 0.43175480701968038399746111312430703L);
9734 TEST_ff_f (jn, 3, 2.4048255576957729L, 0.19899990535769083404042146764530813L);
9735 TEST_ff_f (jn, 4, 2.4048255576957729L, 0.647466661641779720084932282551219891E-1L);
9736 TEST_ff_f (jn, 5, 2.4048255576957729L, 0.163892432048058525099230549946147698E-1L);
9737 TEST_ff_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L);
9738 TEST_ff_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L);
9739 TEST_ff_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L);
c36e1d23
JM
9740 TEST_ff_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L);
9741
80bad0cc
JM
9742 /* Bug 14155: spurious exception may occur. */
9743 TEST_ff_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L, UNDERFLOW_EXCEPTION_OK);
1248c1c4 9744
8847214f
UD
9745 END (jn);
9746}
9747
9748
9749static void
9750ldexp_test (void)
9751{
af00a34d
TS
9752 START (ldexp);
9753
8847214f
UD
9754 TEST_ff_f (ldexp, 0, 0, 0);
9755 TEST_ff_f (ldexp, minus_zero, 0, minus_zero);
9756
9757 TEST_ff_f (ldexp, plus_infty, 1, plus_infty);
9758 TEST_ff_f (ldexp, minus_infty, 1, minus_infty);
67e971f1 9759 TEST_ff_f (ldexp, qnan_value, 1, qnan_value);
8847214f
UD
9760
9761 TEST_ff_f (ldexp, 0.8L, 4, 12.8L);
9762 TEST_ff_f (ldexp, -0.854375L, 5, -27.34L);
9763
9764 /* ldexp (x, 0) == x. */
9765 TEST_ff_f (ldexp, 1.0L, 0L, 1.0L);
af00a34d
TS
9766
9767 END (ldexp);
8847214f
UD
9768}
9769
2550dfe9 9770
8847214f
UD
9771static void
9772lgamma_test (void)
9773{
9774 errno = 0;
9775 FUNC(lgamma) (0);
9776 if (errno == ENOSYS)
9777 /* Function not implemented. */
9778 return;
8847214f
UD
9779
9780 START (lgamma);
9781
c31a5b1e
JM
9782 TEST_f_f1 (lgamma, plus_infty, plus_infty, 1);
9783 TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
9784 TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION);
9785 TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE);
8847214f
UD
9786
9787 /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0. */
c31a5b1e
JM
9788 TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
9789 TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE);
9790 TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
9791 TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION);
8847214f
UD
9792
9793 TEST_f_f1 (lgamma, 1, 0, 1);
9794
9795 TEST_f_f1 (lgamma, 3, M_LN2l, 1);
9796
9797 TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
9798 TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
79df8ce5
AJ
9799 TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1);
9800 TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1);
8847214f
UD
9801
9802 END (lgamma);
9803}
9804
2550dfe9 9805
8847214f
UD
9806static void
9807lrint_test (void)
9808{
9809 /* XXX this test is incomplete. We need to have a way to specifiy
9810 the rounding method and test the critical cases. So far, only
9811 unproblematic numbers are tested. */
64d063b8 9812 /* TODO: missing +/-Inf as well as qNaN tests. */
8847214f
UD
9813
9814 START (lrint);
9815
9816 TEST_f_l (lrint, 0.0, 0);
9817 TEST_f_l (lrint, minus_zero, 0);
3c6cad26
UD
9818 TEST_f_l (lrint, 0.2L, 0);
9819 TEST_f_l (lrint, -0.2L, 0);
8847214f 9820
3c6cad26
UD
9821 TEST_f_l (lrint, 1.4L, 1);
9822 TEST_f_l (lrint, -1.4L, -1);
8847214f 9823
3c6cad26
UD
9824 TEST_f_l (lrint, 8388600.3L, 8388600);
9825 TEST_f_l (lrint, -8388600.3L, -8388600);
8847214f 9826
3eb61415
UD
9827 TEST_f_l (lrint, 1071930.0008, 1071930);
9828#ifndef TEST_FLOAT
9829 TEST_f_l (lrint, 1073741824.01, 1073741824);
39007ae3
UD
9830# if LONG_MAX > 281474976710656
9831 TEST_f_l (lrint, 281474976710656.025, 281474976710656);
9832# endif
3eb61415
UD
9833#endif
9834
8847214f
UD
9835 END (lrint);
9836}
9837
2550dfe9 9838
6624dbc0
UD
9839static void
9840lrint_test_tonearest (void)
9841{
9842 int save_round_mode;
9843 START (lrint_tonearest);
9844
9845 save_round_mode = fegetround ();
9846
9847 if (!fesetround (FE_TONEAREST))
9848 {
9849 TEST_f_l (lrint, 0.0, 0);
9850 TEST_f_l (lrint, minus_zero, 0);
9851 TEST_f_l (lrint, 0.2L, 0);
9852 TEST_f_l (lrint, -0.2L, 0);
9853 TEST_f_l (lrint, 0.5L, 0);
9854 TEST_f_l (lrint, -0.5L, 0);
9855 TEST_f_l (lrint, 0.8L, 1);
9856 TEST_f_l (lrint, -0.8L, -1);
9857
9858 TEST_f_l (lrint, 1.4L, 1);
9859 TEST_f_l (lrint, -1.4L, -1);
9860
9861 TEST_f_l (lrint, 8388600.3L, 8388600);
9862 TEST_f_l (lrint, -8388600.3L, -8388600);
9863
9864 TEST_f_l (lrint, 1071930.0008, 1071930);
9865#ifndef TEST_FLOAT
9866 TEST_f_l (lrint, 1073741824.01, 1073741824);
9867# if LONG_MAX > 281474976710656
9868 TEST_f_l (lrint, 281474976710656.025, 281474976710656);
9869# endif
9870#endif
9871 }
9872
9873 fesetround (save_round_mode);
9874
9875 END (lrint_tonearest);
9876}
9877
9878
9879static void
9880lrint_test_towardzero (void)
9881{
9882 int save_round_mode;
9883 START (lrint_towardzero);
9884
9885 save_round_mode = fegetround ();
9886
9887 if (!fesetround (FE_TOWARDZERO))
9888 {
9889 TEST_f_l (lrint, 0.0, 0);
9890 TEST_f_l (lrint, minus_zero, 0);
9891 TEST_f_l (lrint, 0.2L, 0);
9892 TEST_f_l (lrint, -0.2L, 0);
9893 TEST_f_l (lrint, 0.5L, 0);
9894 TEST_f_l (lrint, -0.5L, 0);
9895 TEST_f_l (lrint, 0.8L, 0);
9896 TEST_f_l (lrint, -0.8L, 0);
9897
9898 TEST_f_l (lrint, 1.4L, 1);
9899 TEST_f_l (lrint, -1.4L, -1);
9900
9901 TEST_f_l (lrint, 8388600.3L, 8388600);
9902 TEST_f_l (lrint, -8388600.3L, -8388600);
9903
9904 TEST_f_l (lrint, 1071930.0008, 1071930);
9905#ifndef TEST_FLOAT
9906 TEST_f_l (lrint, 1073741824.01, 1073741824);
9907# if LONG_MAX > 281474976710656
9908 TEST_f_l (lrint, 281474976710656.025, 281474976710656);
9909# endif
9910#endif
9911 }
9912
9913 fesetround (save_round_mode);
9914
9915 END (lrint_towardzero);
9916}
9917
9918
9919static void
9920lrint_test_downward (void)
9921{
9922 int save_round_mode;
9923 START (lrint_downward);
9924
9925 save_round_mode = fegetround ();
9926
9927 if (!fesetround (FE_DOWNWARD))
9928 {
9929 TEST_f_l (lrint, 0.0, 0);
9930 TEST_f_l (lrint, minus_zero, 0);
9931 TEST_f_l (lrint, 0.2L, 0);
9932 TEST_f_l (lrint, -0.2L, -1);
9933 TEST_f_l (lrint, 0.5L, 0);
9934 TEST_f_l (lrint, -0.5L, -1);
9935 TEST_f_l (lrint, 0.8L, 0);
9936 TEST_f_l (lrint, -0.8L, -1);
9937
9938 TEST_f_l (lrint, 1.4L, 1);
9939 TEST_f_l (lrint, -1.4L, -2);
9940
9941 TEST_f_l (lrint, 8388600.3L, 8388600);
9942 TEST_f_l (lrint, -8388600.3L, -8388601);
9943
9944 TEST_f_l (lrint, 1071930.0008, 1071930);
9945#ifndef TEST_FLOAT
9946 TEST_f_l (lrint, 1073741824.01, 1073741824);
9947# if LONG_MAX > 281474976710656
9948 TEST_f_l (lrint, 281474976710656.025, 281474976710656);
9949# endif
9950#endif
9951 }
9952
9953 fesetround (save_round_mode);
9954
9955 END (lrint_downward);
9956}
9957
9958
9959static void
9960lrint_test_upward (void)
9961{
9962 int save_round_mode;
9963 START (lrint_upward);
9964
9965 save_round_mode = fegetround ();
9966
9967 if (!fesetround (FE_UPWARD))
9968 {
9969 TEST_f_l (lrint, 0.0, 0);
9970 TEST_f_l (lrint, minus_zero, 0);
9971 TEST_f_l (lrint, 0.2L, 1);
9972 TEST_f_l (lrint, -0.2L, 0);
9973 TEST_f_l (lrint, 0.5L, 1);
9974 TEST_f_l (lrint, -0.5L, 0);
9975 TEST_f_l (lrint, 0.8L, 1);
9976 TEST_f_l (lrint, -0.8L, 0);
9977
9978 TEST_f_l (lrint, 1.4L, 2);
9979 TEST_f_l (lrint, -1.4L, -1);
9980
9981 TEST_f_l (lrint, 8388600.3L, 8388601);
9982 TEST_f_l (lrint, -8388600.3L, -8388600);
9983
9984#ifndef TEST_FLOAT
9985 TEST_f_l (lrint, 1071930.0008, 1071931);
9986 TEST_f_l (lrint, 1073741824.01, 1073741825);
9987# if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
89210b4c 9988 TEST_f_l (lrint, 281474976710656.025, 281474976710656);
6624dbc0
UD
9989# endif
9990#endif
9991 }
9992
9993 fesetround (save_round_mode);
9994
9995 END (lrint_upward);
9996}
9997
9998
8847214f
UD
9999static void
10000llrint_test (void)
10001{
10002 /* XXX this test is incomplete. We need to have a way to specifiy
10003 the rounding method and test the critical cases. So far, only
10004 unproblematic numbers are tested. */
64d063b8 10005 /* TODO: missing +/-Inf as well as qNaN tests. */
8847214f
UD
10006
10007 START (llrint);
10008
10009 TEST_f_L (llrint, 0.0, 0);
10010 TEST_f_L (llrint, minus_zero, 0);
3c6cad26
UD
10011 TEST_f_L (llrint, 0.2L, 0);
10012 TEST_f_L (llrint, -0.2L, 0);
8847214f 10013
3c6cad26
UD
10014 TEST_f_L (llrint, 1.4L, 1);
10015 TEST_f_L (llrint, -1.4L, -1);
8847214f 10016
3c6cad26
UD
10017 TEST_f_L (llrint, 8388600.3L, 8388600);
10018 TEST_f_L (llrint, -8388600.3L, -8388600);
8847214f 10019
3eb61415
UD
10020 TEST_f_l (llrint, 1071930.0008, 1071930);
10021
8847214f
UD
10022 /* Test boundary conditions. */
10023 /* 0x1FFFFF */
10024 TEST_f_L (llrint, 2097151.0,2097151LL);
10025 /* 0x800000 */
10026 TEST_f_L (llrint, 8388608.0, 8388608LL);
10027 /* 0x1000000 */
10028 TEST_f_L (llrint, 16777216.0, 16777216LL);
10029 /* 0x20000000000 */
10030 TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10031 /* 0x40000000000 */
10032 TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
39007ae3
UD
10033 /* 0x1000000000000 */
10034 TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
8847214f
UD
10035 /* 0x10000000000000 */
10036 TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10037 /* 0x10000080000000 */
10038 TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10039 /* 0x20000000000000 */
10040 TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10041 /* 0x80000000000000 */
10042 TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10043 /* 0x100000000000000 */
10044 TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
f964490f
RM
10045#ifdef TEST_LDOUBLE
10046 /* The input can only be represented in long double. */
10047 TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10048 TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10049 TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10050 TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10051 TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10052
10053 TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10054 TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10055 TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10056 TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10057 TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10058
830fce04
RM
10059# if LDBL_MANT_DIG > 100
10060 TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10061 TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10062 TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10063 TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10064 TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10065 TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10066
10067 TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10068 TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10069 TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10070 TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10071 TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10072 TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10073#endif
10074
f964490f
RM
10075 TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10076 TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10077 TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10078 TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10079 TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10080
10081 TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10082 TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10083 TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10084 TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10085 TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10086
830fce04
RM
10087# if LDBL_MANT_DIG > 100
10088 TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10089 TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10090 TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10091 TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10092 TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10093 TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10094
10095 TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10096 TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10097 TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10098 TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10099 TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10100 TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10101#endif
10102
f964490f
RM
10103 TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10104 TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10105 TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10106 TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10107 TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10108
10109 TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10110 TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10111 TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10112 TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10113 TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
830fce04
RM
10114
10115# if LDBL_MANT_DIG > 100
10116 TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10117 TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10118 TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10119 TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10120 TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10121 TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10122 TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10123 TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10124 TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10125 TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10126 TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10127 TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10128# endif
f964490f 10129#endif
8847214f
UD
10130
10131 END (llrint);
10132}
10133
830fce04
RM
10134static void
10135llrint_test_tonearest (void)
10136{
10137 int save_round_mode;
10138 START (llrint_tonearest);
10139
10140 save_round_mode = fegetround ();
10141
10142 if (!fesetround (FE_TONEAREST))
10143 {
10144 TEST_f_L (llrint, 0.0, 0);
10145 TEST_f_L (llrint, minus_zero, 0);
10146 TEST_f_L (llrint, 0.2L, 0);
10147 TEST_f_L (llrint, -0.2L, 0);
10148
10149 TEST_f_L (llrint, 1.4L, 1);
10150 TEST_f_L (llrint, -1.4L, -1);
10151
10152 TEST_f_L (llrint, 8388600.3L, 8388600);
10153 TEST_f_L (llrint, -8388600.3L, -8388600);
10154
10155 TEST_f_l (llrint, 1071930.0008, 1071930);
10156
10157 /* Test boundary conditions. */
10158 /* 0x1FFFFF */
10159 TEST_f_L (llrint, 2097151.0,2097151LL);
10160 /* 0x800000 */
10161 TEST_f_L (llrint, 8388608.0, 8388608LL);
10162 /* 0x1000000 */
10163 TEST_f_L (llrint, 16777216.0, 16777216LL);
10164 /* 0x20000000000 */
10165 TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10166 /* 0x40000000000 */
10167 TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10168 /* 0x1000000000000 */
10169 TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10170 /* 0x10000000000000 */
10171 TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10172 /* 0x10000080000000 */
10173 TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10174 /* 0x20000000000000 */
10175 TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10176 /* 0x80000000000000 */
10177 TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10178 /* 0x100000000000000 */
10179 TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10180#ifdef TEST_LDOUBLE
10181 /* The input can only be represented in long double. */
10182 TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10183 TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10184 TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10185 TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10186 TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10187
10188 TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10189 TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10190 TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10191 TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10192 TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10193
10194# if LDBL_MANT_DIG > 100
10195 TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10196 TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10197 TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10198 TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10199 TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10200 TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10201
10202 TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10203 TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10204 TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10205 TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10206 TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10207 TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10208#endif
10209
10210 TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10211 TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10212 TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10213 TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10214 TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10215
10216 TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10217 TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10218 TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10219 TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10220 TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10221
10222# if LDBL_MANT_DIG > 100
10223 TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10224 TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10225 TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10226 TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10227 TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10228 TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10229
10230 TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10231 TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10232 TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10233 TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10234 TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10235 TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10236#endif
10237
10238 TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10239 TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10240 TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10241 TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10242 TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10243
10244 TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10245 TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10246 TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10247 TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10248 TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10249
10250# if LDBL_MANT_DIG > 100
10251 TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10252 TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10253 TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10254 TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10255 TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10256 TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10257 TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10258 TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10259 TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10260 TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10261 TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10262 TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10263# endif
10264#endif
10265 }
10266
10267 fesetround (save_round_mode);
10268
10269 END (llrint_tonearest);
10270}
10271
10272static void
10273llrint_test_towardzero (void)
10274{
10275 int save_round_mode;
10276 START (llrint_towardzero);
10277
10278 save_round_mode = fegetround ();
10279
10280 if (!fesetround (FE_TOWARDZERO))
10281 {
10282 TEST_f_L (llrint, 0.0, 0);
10283 TEST_f_L (llrint, minus_zero, 0);
10284 TEST_f_L (llrint, 0.2L, 0);
10285 TEST_f_L (llrint, -0.2L, 0);
10286
10287 TEST_f_L (llrint, 1.4L, 1);
10288 TEST_f_L (llrint, -1.4L, -1);
10289
10290 TEST_f_L (llrint, 8388600.3L, 8388600);
10291 TEST_f_L (llrint, -8388600.3L, -8388600);
10292
10293 TEST_f_l (llrint, 1071930.0008, 1071930);
10294
10295 /* Test boundary conditions. */
10296 /* 0x1FFFFF */
10297 TEST_f_L (llrint, 2097151.0,2097151LL);
10298 /* 0x800000 */
10299 TEST_f_L (llrint, 8388608.0, 8388608LL);
10300 /* 0x1000000 */
10301 TEST_f_L (llrint, 16777216.0, 16777216LL);
10302 /* 0x20000000000 */
10303 TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10304 /* 0x40000000000 */
10305 TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10306 /* 0x1000000000000 */
10307 TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10308 /* 0x10000000000000 */
10309 TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10310 /* 0x10000080000000 */
10311 TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10312 /* 0x20000000000000 */
10313 TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10314 /* 0x80000000000000 */
10315 TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10316 /* 0x100000000000000 */
10317 TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10318#ifdef TEST_LDOUBLE
10319 /* The input can only be represented in long double. */
10320 TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10321 TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10322 TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10323 TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10324 TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10325
10326 TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10327 TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10328 TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10329 TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10330 TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10331
10332# if LDBL_MANT_DIG > 100
10333 TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10334 TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10335 TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10336 TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10337 TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10338 TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10339
10340 TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10341 TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10342 TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10343 TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10344 TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10345 TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10346#endif
10347
10348 TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10349 TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10350 TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10351 TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10352 TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10353
10354 TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10355 TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10356 TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10357 TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10358 TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10359
10360# if LDBL_MANT_DIG > 100
10361 TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10362 TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10363 TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10364 TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10365 TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10366 TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10367
10368 TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10369 TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10370 TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10371 TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10372 TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10373 TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10374#endif
10375
10376 TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10377 TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10378 TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10379 TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10380 TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10381
10382 TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10383 TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10384 TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10385 TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10386 TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10387
10388# if LDBL_MANT_DIG > 100
10389 TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10390 TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10391 TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10392 TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10393 TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10394 TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10395 TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10396 TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10397 TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10398 TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10399 TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10400 TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10401# endif
10402#endif
10403 }
10404
10405 fesetround (save_round_mode);
10406
10407 END (llrint_towardzero);
10408}
10409
10410static void
10411llrint_test_downward (void)
10412{
10413 int save_round_mode;
10414 START (llrint_downward);
10415
10416 save_round_mode = fegetround ();
10417
10418 if (!fesetround (FE_DOWNWARD))
10419 {
10420 TEST_f_L (llrint, 0.0, 0);
10421 TEST_f_L (llrint, minus_zero, 0);
10422 TEST_f_L (llrint, 0.2L, 0);
10423 TEST_f_L (llrint, -0.2L, -1);
10424
10425 TEST_f_L (llrint, 1.4L, 1);
10426 TEST_f_L (llrint, -1.4L, -2);
10427
10428 TEST_f_L (llrint, 8388600.3L, 8388600);
10429 TEST_f_L (llrint, -8388600.3L, -8388601);
10430
10431 TEST_f_l (llrint, 1071930.0008, 1071930);
10432
10433 /* Test boundary conditions. */
10434 /* 0x1FFFFF */
10435 TEST_f_L (llrint, 2097151.0,2097151LL);
10436 /* 0x800000 */
10437 TEST_f_L (llrint, 8388608.0, 8388608LL);
10438 /* 0x1000000 */
10439 TEST_f_L (llrint, 16777216.0, 16777216LL);
10440 /* 0x20000000000 */
10441 TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10442 /* 0x40000000000 */
10443 TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10444 /* 0x1000000000000 */
10445 TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10446 /* 0x10000000000000 */
10447 TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10448 /* 0x10000080000000 */
10449 TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10450 /* 0x20000000000000 */
10451 TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10452 /* 0x80000000000000 */
10453 TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10454 /* 0x100000000000000 */
10455 TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10456#ifdef TEST_LDOUBLE
10457 /* The input can only be represented in long double. */
10458 TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10459 TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10460 TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10461 TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10462 TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10463
10464 TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10465 TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10466 TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10467 TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10468 TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10469 TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10470
10471 TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10472 TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL);
10473 TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL);
10474 TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10475 TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10476
10477 TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL);
10478 TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL);
10479 TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL);
10480 TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10481 TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10482 TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10483
10484 TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10485 TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10486 TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10487 TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10488 TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10489
10490 TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10491 TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10492 TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10493 TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10494 TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10495 TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10496
10497 TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10498 TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL);
10499 TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL);
10500 TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10501 TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10502
10503 TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL);
10504 TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL);
10505 TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL);
10506 TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10507 TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10508 TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10509
10510 TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10511 TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10512 TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10513 TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10514 TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10515
10516 TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10517 TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL);
10518 TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL);
10519 TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10520 TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10521
10522# if LDBL_MANT_DIG > 100
10523 TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10524 TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10525 TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10526 TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10527 TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10528 TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL);
10529 TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10530 TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL);
10531 TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10532 TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10533 TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10534 TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10535# endif
10536#endif
10537 }
10538
10539 fesetround (save_round_mode);
10540
10541 END (llrint_downward);
10542}
10543
10544static void
10545llrint_test_upward (void)
10546{
10547 int save_round_mode;
10548 START (llrint_upward);
10549
10550 save_round_mode = fegetround ();
10551
10552 if (!fesetround (FE_UPWARD))
10553 {
10554 TEST_f_L (llrint, 0.0, 0);
10555 TEST_f_L (llrint, minus_zero, 0);
10556 TEST_f_L (llrint, 0.2L, 1);
10557 TEST_f_L (llrint, -0.2L, 0);
10558
10559 TEST_f_L (llrint, 1.4L, 2);
10560 TEST_f_L (llrint, -1.4L, -1);
10561
10562 TEST_f_L (llrint, 8388600.3L, 8388601);
10563 TEST_f_L (llrint, -8388600.3L, -8388600);
10564#ifndef TEST_FLOAT
10565 TEST_f_l (llrint, 1071930.0008, 1071931);
10566#endif
10567 /* Test boundary conditions. */
10568 /* 0x1FFFFF */
10569 TEST_f_L (llrint, 2097151.0,2097151LL);
10570 /* 0x800000 */
10571 TEST_f_L (llrint, 8388608.0, 8388608LL);
10572 /* 0x1000000 */
10573 TEST_f_L (llrint, 16777216.0, 16777216LL);
10574 /* 0x20000000000 */
10575 TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10576 /* 0x40000000000 */
10577 TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10578 /* 0x1000000000000 */
10579 TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10580 /* 0x10000000000000 */
10581 TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10582 /* 0x10000080000000 */
10583 TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10584 /* 0x20000000000000 */
10585 TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10586 /* 0x80000000000000 */
10587 TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10588 /* 0x100000000000000 */
10589 TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10590#ifdef TEST_LDOUBLE
10591 /* The input can only be represented in long double. */
10592 TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10593 TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL);
10594 TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL);
10595 TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10596 TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10597
10598 TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL);
10599 TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL);
10600 TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL);
10601 TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10602 TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10603 TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10604
10605 TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10606 TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10607 TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10608 TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10609 TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10610
10611 TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10612 TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10613 TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10614 TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10615 TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10616 TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10617
10618 TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10619 TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL);
10620 TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL);
10621 TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10622 TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10623
10624 TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL);
10625 TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL);
10626 TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL);
10627 TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10628 TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10629 TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10630
10631 TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10632 TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10633 TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10634 TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10635 TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10636
10637 TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10638 TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10639 TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10640 TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10641 TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10642 TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10643
10644 TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10645 TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL);
10646 TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL);
10647 TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10648 TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10649
10650 TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10651 TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10652 TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10653 TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10654 TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10655
10656# if LDBL_MANT_DIG > 100
10657 TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10658 TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10659 TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10660 TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10661 TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL);
10662 TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10663 TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L);
10664 TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10665 TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10666 TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10667 TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10668 TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10669# endif
10670#endif
10671 }
10672
10673 fesetround (save_round_mode);
10674
10675 END (llrint_upward);
10676}
10677
2550dfe9 10678
8847214f
UD
10679static void
10680log_test (void)
10681{
e6d3c4a7
AJ
10682 errno = 0;
10683 FUNC(log) (1);
10684 if (errno == ENOSYS)
10685 /* Function not implemented. */
10686 return;
8847214f
UD
10687 START (log);
10688
10689 TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
10690 TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
10691
10692 TEST_f_f (log, 1, 0);
10693
67e971f1
TS
10694 TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION);
10695 TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION);
10696 TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION);
8847214f 10697 TEST_f_f (log, plus_infty, plus_infty);
67e971f1 10698 TEST_f_f (log, qnan_value, qnan_value);
8847214f
UD
10699
10700 TEST_f_f (log, M_El, 1);
10701 TEST_f_f (log, 1.0 / M_El, -1);
10702 TEST_f_f (log, 2, M_LN2l);
10703 TEST_f_f (log, 10, M_LN10l);
2550dfe9 10704 TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L);
8847214f
UD
10705
10706 END (log);
10707}
10708
10709
10710static void
10711log10_test (void)
10712{
e6d3c4a7
AJ
10713 errno = 0;
10714 FUNC(log10) (1);
10715 if (errno == ENOSYS)
10716 /* Function not implemented. */
10717 return;
10718
8847214f
UD
10719 START (log10);
10720
10721 TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
10722 TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
10723
10724 TEST_f_f (log10, 1, 0);
10725
67e971f1
TS
10726 /* log10 (x) == qNaN plus invalid exception if x < 0. */
10727 TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION);
10728 TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION);
10729 TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION);
8847214f
UD
10730
10731 TEST_f_f (log10, plus_infty, plus_infty);
67e971f1 10732 TEST_f_f (log10, qnan_value, qnan_value);
8847214f
UD
10733
10734 TEST_f_f (log10, 0.1L, -1);
10735 TEST_f_f (log10, 10.0, 1);
10736 TEST_f_f (log10, 100.0, 2);
10737 TEST_f_f (log10, 10000.0, 4);
10738 TEST_f_f (log10, M_El, M_LOG10El);
2550dfe9 10739 TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L);
8847214f
UD
10740
10741 END (log10);
10742}
10743
10744
10745static void
10746log1p_test (void)
10747{
e6d3c4a7
AJ
10748 errno = 0;
10749 FUNC(log1p) (0);
10750 if (errno == ENOSYS)
10751 /* Function not implemented. */
10752 return;
10753
8847214f
UD
10754 START (log1p);
10755
10756 TEST_f_f (log1p, 0, 0);
10757 TEST_f_f (log1p, minus_zero, minus_zero);
10758
10759 TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
67e971f1
TS
10760 TEST_f_f (log1p, -2, qnan_value, INVALID_EXCEPTION);
10761 TEST_f_f (log1p, -max_value, qnan_value, INVALID_EXCEPTION);
10762 TEST_f_f (log1p, minus_infty, qnan_value, INVALID_EXCEPTION);
8847214f
UD
10763
10764 TEST_f_f (log1p, plus_infty, plus_infty);
67e971f1 10765 TEST_f_f (log1p, qnan_value, qnan_value);
8847214f
UD
10766
10767 TEST_f_f (log1p, M_El - 1.0, 1);
10768
2550dfe9
AJ
10769 TEST_f_f (log1p, -0.25L, -0.287682072451780927439219005993827432L);
10770 TEST_f_f (log1p, -0.875, -2.07944154167983592825169636437452970L);
8847214f
UD
10771
10772 END (log1p);
10773}
10774
10775
10776static void
10777log2_test (void)
10778{
e6d3c4a7
AJ
10779 errno = 0;
10780 FUNC(log2) (1);
10781 if (errno == ENOSYS)
10782 /* Function not implemented. */
10783 return;
10784
8847214f
UD
10785 START (log2);
10786
10787 TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
10788 TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
10789
10790 TEST_f_f (log2, 1, 0);
10791
67e971f1
TS
10792 TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION);
10793 TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION);
10794 TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION);
8847214f
UD
10795
10796 TEST_f_f (log2, plus_infty, plus_infty);
67e971f1 10797 TEST_f_f (log2, qnan_value, qnan_value);
8847214f
UD
10798
10799 TEST_f_f (log2, M_El, M_LOG2El);
10800 TEST_f_f (log2, 2.0, 1);
10801 TEST_f_f (log2, 16.0, 4);
10802 TEST_f_f (log2, 256.0, 8);
2550dfe9 10803 TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L);
8847214f
UD
10804
10805 END (log2);
10806}
10807
10808
10809static void
10810logb_test (void)
10811{
10812 START (logb);
10813
10814 TEST_f_f (logb, plus_infty, plus_infty);
10815 TEST_f_f (logb, minus_infty, plus_infty);
10816
10817 TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
10818
10819 TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
67e971f1 10820 TEST_f_f (logb, qnan_value, qnan_value);
8847214f
UD
10821
10822 TEST_f_f (logb, 1, 0);
10823 TEST_f_f (logb, M_El, 1);
10824 TEST_f_f (logb, 1024, 10);
10825 TEST_f_f (logb, -2000, 10);
10826
89c9aa49
AZ
10827 TEST_f_f (logb, 0x0.1p-127, -131);
10828 TEST_f_f (logb, 0x0.01p-127, -135);
10829 TEST_f_f (logb, 0x0.011p-127, -135);
10830#ifndef TEST_FLOAT
10831 TEST_f_f (logb, 0x0.8p-1022, -1023);
10832 TEST_f_f (logb, 0x0.1p-1022, -1026);
10833 TEST_f_f (logb, 0x0.00111p-1022, -1034);
10834 TEST_f_f (logb, 0x0.00001p-1022, -1042);
10835 TEST_f_f (logb, 0x0.000011p-1022, -1042);
10836 TEST_f_f (logb, 0x0.0000000000001p-1022, -1074);
10837#endif
10838#if defined TEST_LDOUBLE && LDBL_MIN_EXP - LDBL_MANT_DIG <= -16400
10839 TEST_f_f (logb, 0x1p-16400L, -16400);
10840 TEST_f_f (logb, 0x.00000000001p-16382L, -16426);
10841#endif
10842
8847214f
UD
10843 END (logb);
10844}
10845
a462cb63
RA
10846static void
10847logb_test_downward (void)
10848{
10849 int save_round_mode;
10850 errno = 0;
10851
10852 FUNC(logb) (0);
10853 if (errno == ENOSYS)
10854 /* Function not implemented. */
10855 return;
10856
10857 START (logb_downward);
10858
10859 save_round_mode = fegetround ();
10860
10861 if (!fesetround (FE_DOWNWARD))
10862 {
10863
10864 /* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.". Libm
10865 should not return -0 from logb in any rounding mode. PowerPC32 has
10866 failed with this test for power4 logb (and logbl on all PowerPC
10867 platforms) in the past due to instruction selection. GCC PR 52775
10868 provides the availability of the fcfid insn in 32-bit mode which
10869 eliminates the use of fsub in this instance and prevents the negative
10870 signed 0.0. */
10871
60c8fca7 10872 /* BZ #887 */
a462cb63
RA
10873 TEST_f_f (logb, 1.000e+0, plus_zero);
10874 }
10875
10876 fesetround (save_round_mode);
10877
10878 END (logb_downward);
10879}
2550dfe9 10880
8847214f
UD
10881static void
10882lround_test (void)
10883{
64d063b8
TS
10884 /* TODO: missing +/-Inf as well as qNaN tests. */
10885
8847214f
UD
10886 START (lround);
10887
10888 TEST_f_l (lround, 0, 0);
10889 TEST_f_l (lround, minus_zero, 0);
3c6cad26
UD
10890 TEST_f_l (lround, 0.2L, 0.0);
10891 TEST_f_l (lround, -0.2L, 0);
8847214f
UD
10892 TEST_f_l (lround, 0.5, 1);
10893 TEST_f_l (lround, -0.5, -1);
3c6cad26
UD
10894 TEST_f_l (lround, 0.8L, 1);
10895 TEST_f_l (lround, -0.8L, -1);
8847214f
UD
10896 TEST_f_l (lround, 1.5, 2);
10897 TEST_f_l (lround, -1.5, -2);
10898 TEST_f_l (lround, 22514.5, 22515);
10899 TEST_f_l (lround, -22514.5, -22515);
3eb61415 10900 TEST_f_l (lround, 1071930.0008, 1071930);
8847214f 10901#ifndef TEST_FLOAT
3eb61415 10902 TEST_f_l (lround, 1073741824.01, 1073741824);
39007ae3
UD
10903# if LONG_MAX > 281474976710656
10904 TEST_f_l (lround, 281474976710656.025, 281474976710656);
169d7f11 10905 TEST_f_l (lround, 18014398509481974, 18014398509481974);
39007ae3 10906# endif
8847214f
UD
10907 TEST_f_l (lround, 2097152.5, 2097153);
10908 TEST_f_l (lround, -2097152.5, -2097153);
c1e6b459
UD
10909 /* nextafter(0.5,-1) */
10910 TEST_f_l (lround, 0x1.fffffffffffffp-2, 0);
10911 /* nextafter(-0.5,1) */
10912 TEST_f_l (lround, -0x1.fffffffffffffp-2, 0);
10913#else
10914 /* nextafter(0.5,-1) */
10915 TEST_f_l (lround, 0x1.fffffp-2, 0);
10916 /* nextafter(-0.5,1) */
10917 TEST_f_l (lround, -0x1.fffffp-2, 0);
10918 TEST_f_l (lround, 0x1.fffffep+23, 16777215);
10919 TEST_f_l (lround, -0x1.fffffep+23, -16777215);
8847214f
UD
10920#endif
10921 END (lround);
10922}
10923
10924
10925static void
10926llround_test (void)
10927{
64d063b8
TS
10928 /* TODO: missing +/-Inf as well as qNaN tests. */
10929
8847214f
UD
10930 START (llround);
10931
10932 TEST_f_L (llround, 0, 0);
10933 TEST_f_L (llround, minus_zero, 0);
3c6cad26
UD
10934 TEST_f_L (llround, 0.2L, 0.0);
10935 TEST_f_L (llround, -0.2L, 0);
8847214f
UD
10936 TEST_f_L (llround, 0.5, 1);
10937 TEST_f_L (llround, -0.5, -1);
3c6cad26
UD
10938 TEST_f_L (llround, 0.8L, 1);
10939 TEST_f_L (llround, -0.8L, -1);
8847214f
UD
10940 TEST_f_L (llround, 1.5, 2);
10941 TEST_f_L (llround, -1.5, -2);
10942 TEST_f_L (llround, 22514.5, 22515);
10943 TEST_f_L (llround, -22514.5, -22515);
3eb61415 10944 TEST_f_l (llround, 1071930.0008, 1071930);
8847214f
UD
10945#ifndef TEST_FLOAT
10946 TEST_f_L (llround, 2097152.5, 2097153);
10947 TEST_f_L (llround, -2097152.5, -2097153);
10948 TEST_f_L (llround, 34359738368.5, 34359738369ll);
10949 TEST_f_L (llround, -34359738368.5, -34359738369ll);
169d7f11 10950 TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL);
8847214f
UD
10951#endif
10952
10953 /* Test boundary conditions. */
10954 /* 0x1FFFFF */
10955 TEST_f_L (llround, 2097151.0, 2097151LL);
10956 /* 0x800000 */
10957 TEST_f_L (llround, 8388608.0, 8388608LL);
10958 /* 0x1000000 */
10959 TEST_f_L (llround, 16777216.0, 16777216LL);
10960 /* 0x20000000000 */
10961 TEST_f_L (llround, 2199023255552.0, 2199023255552LL);
10962 /* 0x40000000000 */
10963 TEST_f_L (llround, 4398046511104.0, 4398046511104LL);
39007ae3
UD
10964 /* 0x1000000000000 */
10965 TEST_f_L (llround, 281474976710656.0, 281474976710656LL);
8847214f
UD
10966 /* 0x10000000000000 */
10967 TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL);
10968 /* 0x10000080000000 */
3eb61415 10969 TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL);
8847214f
UD
10970 /* 0x20000000000000 */
10971 TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL);
10972 /* 0x80000000000000 */
10973 TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL);
10974 /* 0x100000000000000 */
10975 TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL);
10976
601d2942
UD
10977#ifndef TEST_FLOAT
10978 /* 0x100000000 */
10979 TEST_f_L (llround, 4294967295.5, 4294967296LL);
10980 /* 0x200000000 */
10981 TEST_f_L (llround, 8589934591.5, 8589934592LL);
c1e6b459
UD
10982
10983 /* nextafter(0.5,-1) */
10984 TEST_f_L (llround, 0x1.fffffffffffffp-2, 0);
10985 /* nextafter(-0.5,1) */
10986 TEST_f_L (llround, -0x1.fffffffffffffp-2, 0);
10987 /* On PowerPC an exponent of '52' is the largest incrementally
10988 * representable sequence of whole-numbers in the 'double' range. We test
10989 * lround to make sure that a guard bit set during the lround operation
10990 * hasn't forced an erroneous shift giving us an incorrect result. The odd
10991 * numbers between +-(2^52+1 and 2^53-1) are affected since they have the
10992 * rightmost bit set. */
10993 /* +-(2^52+1) */
10994 TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL);
10995 TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL);
10996 /* +-(2^53-1): Input is the last (positive and negative) incrementally
10997 * representable whole-number in the 'double' range that might round
10998 * erroneously. */
10999 TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL);
11000 TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL);
11001#else
11002 /* nextafter(0.5,-1) */
11003 TEST_f_L (llround, 0x1.fffffep-2, 0);
11004 /* nextafter(-0.5,1) */
11005 TEST_f_L (llround, -0x1.fffffep-2, 0);
11006 /* As above, on PowerPC an exponent of '23' is the largest incrementally
11007 * representable sequence of whole-numbers in the 'float' range.
11008 * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected. */
11009 TEST_f_L (llround, 0x1.000002p+23,8388609);
11010 TEST_f_L (llround, -0x1.000002p+23,-8388609);
11011 TEST_f_L (llround, 0x1.fffffep+23, 16777215);
11012 TEST_f_L (llround, -0x1.fffffep+23, -16777215);
601d2942
UD
11013#endif
11014
c1e6b459 11015
f964490f
RM
11016#ifdef TEST_LDOUBLE
11017 /* The input can only be represented in long double. */
11018 TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL);
11019 TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL);
11020 TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL);
11021 TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL);
11022 TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL);
11023
830fce04
RM
11024# if LDBL_MANT_DIG > 100
11025 TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL);
11026 TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL);
11027 TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL);
11028 TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL);
11029 TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL);
11030 TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL);
11031
11032 TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL);
11033 TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL);
11034 TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL);
11035 TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL);
11036 TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL);
11037 TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL);
11038# endif
11039
f964490f
RM
11040 TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL);
11041 TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL);
11042 TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL);
11043 TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL);
11044 TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL);
11045
11046 TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL);
11047 TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL);
11048 TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL);
11049 TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL);
11050 TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL);
11051
830fce04
RM
11052# if LDBL_MANT_DIG > 100
11053 TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL);
11054 TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL);
11055 TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL);
11056 TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL);
11057 TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL);
11058 TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL);
11059
11060 TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL);
11061 TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL);
11062 TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL);
11063 TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL);
11064 TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL);
11065 TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL);
11066# endif
11067
f964490f
RM
11068 TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL);
11069 TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL);
11070 TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL);
11071 TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL);
11072 TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL);
11073
11074 TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL);
11075 TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL);
11076 TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL);
11077 TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL);
11078 TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL);
11079
11080 TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL);
11081 TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL);
11082 TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL);
11083 TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL);
11084 TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL);
1e832e37
RM
11085
11086 TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL);
11087 TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL);
11088 TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL);
11089 TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL);
11090 TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL);
11091 TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL);
f964490f
RM
11092#endif
11093
8847214f
UD
11094 END (llround);
11095}
11096
11097static void
11098modf_test (void)
11099{
11100 FLOAT x;
11101
11102 START (modf);
11103
11104 TEST_fF_f1 (modf, plus_infty, 0, plus_infty);
11105 TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty);
67e971f1 11106 TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value);
8847214f
UD
11107 TEST_fF_f1 (modf, 0, 0, 0);
11108 TEST_fF_f1 (modf, 1.5, 0.5, 1);
11109 TEST_fF_f1 (modf, 2.5, 0.5, 2);
11110 TEST_fF_f1 (modf, -2.5, -0.5, -2);
11111 TEST_fF_f1 (modf, 20, 0, 20);
11112 TEST_fF_f1 (modf, 21, 0, 21);
11113 TEST_fF_f1 (modf, 89.5, 0.5, 89);
11114
11115 END (modf);
11116}
11117
11118
11119static void
11120nearbyint_test (void)
11121{
11122 START (nearbyint);
11123
11124 TEST_f_f (nearbyint, 0.0, 0.0);
11125 TEST_f_f (nearbyint, minus_zero, minus_zero);
11126 TEST_f_f (nearbyint, plus_infty, plus_infty);
11127 TEST_f_f (nearbyint, minus_infty, minus_infty);
67e971f1 11128 TEST_f_f (nearbyint, qnan_value, qnan_value);
8847214f 11129
a1267ba1
AZ
11130 /* Subnormal values */
11131 TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307);
11132 TEST_f_f (nearbyint, -4.45015e-308, minus_zero);
11133
1dc23588
UD
11134 /* Default rounding mode is round to nearest. */
11135 TEST_f_f (nearbyint, 0.5, 0.0);
11136 TEST_f_f (nearbyint, 1.5, 2.0);
11137 TEST_f_f (nearbyint, -0.5, minus_zero);
11138 TEST_f_f (nearbyint, -1.5, -2.0);
bdf09fab 11139
af0498dc
UD
11140 TEST_f_f (nearbyint, 262144.75, 262145.0);
11141 TEST_f_f (nearbyint, 262142.75, 262143.0);
11142 TEST_f_f (nearbyint, 524286.75, 524287.0);
11143 TEST_f_f (nearbyint, 524288.75, 524289.0);
11144
6cbeae47
JM
11145 TEST_f_f (nearbyint, 1048576.75, 1048577.0);
11146 TEST_f_f (nearbyint, 2097152.75, 2097153.0);
11147 TEST_f_f (nearbyint, 2492472.75, 2492473.0);
11148 TEST_f_f (nearbyint, 2886220.75, 2886221.0);
11149 TEST_f_f (nearbyint, 3058792.75, 3058793.0);
11150 TEST_f_f (nearbyint, -1048576.75, -1048577.0);
11151 TEST_f_f (nearbyint, -2097152.75, -2097153.0);
11152 TEST_f_f (nearbyint, -2492472.75, -2492473.0);
11153 TEST_f_f (nearbyint, -2886220.75, -2886221.0);
11154 TEST_f_f (nearbyint, -3058792.75, -3058793.0);
11155#ifndef TEST_FLOAT
11156 TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0);
11157 TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0);
11158 TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0);
11159 TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0);
11160 TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0);
11161 TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0);
11162 TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0);
11163 TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0);
11164 TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0);
11165 TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0);
11166#endif
11167
8847214f
UD
11168 END (nearbyint);
11169}
11170
11171static void
11172nextafter_test (void)
11173{
11174
11175 START (nextafter);
11176
11177 TEST_ff_f (nextafter, 0, 0, 0);
11178 TEST_ff_f (nextafter, minus_zero, 0, 0);
11179 TEST_ff_f (nextafter, 0, minus_zero, minus_zero);
11180 TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero);
11181
11182 TEST_ff_f (nextafter, 9, 9, 9);
11183 TEST_ff_f (nextafter, -9, -9, -9);
11184 TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty);
11185 TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty);
11186
67e971f1
TS
11187 TEST_ff_f (nextafter, qnan_value, 1.1L, qnan_value);
11188 TEST_ff_f (nextafter, 1.1L, qnan_value, qnan_value);
11189 TEST_ff_f (nextafter, qnan_value, qnan_value, qnan_value);
8847214f 11190
64b02fd2
UD
11191 FLOAT fltmax = CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX,
11192 LDBL_MAX, DBL_MAX, FLT_MAX);
c135cc1b
JM
11193 TEST_ff_f (nextafter, fltmax, plus_infty, plus_infty, OVERFLOW_EXCEPTION);
11194 TEST_ff_f (nextafter, -fltmax, minus_infty, minus_infty, OVERFLOW_EXCEPTION);
64b02fd2 11195
757de559
UD
11196#ifdef TEST_LDOUBLE
11197 // XXX Enable once gcc is fixed.
11198 //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 0x0.0000003ffffffff00000p-16385L);
11199#endif
11200
8847214f
UD
11201 /* XXX We need the hexadecimal FP number representation here for further
11202 tests. */
11203
11204 END (nextafter);
11205}
11206
fe559c5e 11207
8847214f
UD
11208static void
11209nexttoward_test (void)
11210{
11211 START (nexttoward);
11212 TEST_ff_f (nexttoward, 0, 0, 0);
11213 TEST_ff_f (nexttoward, minus_zero, 0, 0);
11214 TEST_ff_f (nexttoward, 0, minus_zero, minus_zero);
11215 TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero);
11216
11217 TEST_ff_f (nexttoward, 9, 9, 9);
11218 TEST_ff_f (nexttoward, -9, -9, -9);
11219 TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty);
11220 TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty);
11221
67e971f1
TS
11222 TEST_ff_f (nexttoward, qnan_value, 1.1L, qnan_value);
11223 TEST_ff_f (nexttoward, 1.1L, qnan_value, qnan_value);
11224 TEST_ff_f (nexttoward, qnan_value, qnan_value, qnan_value);
8847214f 11225
7cb029ee
JM
11226#ifdef TEST_FLOAT
11227 TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.000002p0);
11228 TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.000002p0);
11229 TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.000002p0);
11230 TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.ffffffp0);
11231 TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.ffffffp0);
11232 TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.ffffffp0);
11233 TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.000002p0);
11234 TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.000002p0);
11235 TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.000002p0);
11236 TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.ffffffp0);
11237 TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.ffffffp0);
11238 TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.ffffffp0);
80bad0cc 11239 TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145, UNDERFLOW_EXCEPTION);
7cb029ee
JM
11240# if LDBL_MANT_DIG >= 64
11241 TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.000002p0);
11242 TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.ffffffp0);
11243 TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.000002p0);
11244 TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.ffffffp0);
11245# endif
11246# if LDBL_MANT_DIG >= 106
11247 TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.000002p0);
11248 TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.ffffffp0);
11249 TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.000002p0);
11250 TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.ffffffp0);
11251# endif
11252# if LDBL_MANT_DIG >= 113
11253 TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.000002p0);
11254 TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffp0);
11255 TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.000002p0);
11256 TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffp0);
11257# endif
11258#endif
11259#ifdef TEST_DOUBLE
11260 TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.0000000000001p0);
11261 TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.0000000000001p0);
11262 TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.0000000000001p0);
11263 TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.fffffffffffff8p0);
11264 TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.fffffffffffff8p0);
11265 TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0);
11266 TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.0000000000001p0);
11267 TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.0000000000001p0);
11268 TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.0000000000001p0);
11269 TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.fffffffffffff8p0);
11270 TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.fffffffffffff8p0);
11271 TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0);
11272 TEST_ff_f (nexttoward, -1.0, -0x8.00346dc5d6388p-3L, -0x1.0000000000001p0);
80bad0cc 11273 TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073, UNDERFLOW_EXCEPTION);
7cb029ee
JM
11274# if LDBL_MANT_DIG >= 64
11275 TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.0000000000001p0);
11276 TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffff8p0);
11277 TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.0000000000001p0);
11278 TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffff8p0);
11279# endif
11280# if LDBL_MANT_DIG >= 106
11281 TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.0000000000001p0);
11282 TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.fffffffffffff8p0);
11283 TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.0000000000001p0);
11284 TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.fffffffffffff8p0);
11285# endif
11286# if LDBL_MANT_DIG >= 113
11287 TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.0000000000001p0);
11288 TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.fffffffffffff8p0);
11289 TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.0000000000001p0);
11290 TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.fffffffffffff8p0);
11291# endif
11292#endif
8847214f
UD
11293
11294 END (nexttoward);
11295}
8847214f
UD
11296
11297
11298static void
11299pow_test (void)
11300{
11301
e6d3c4a7
AJ
11302 errno = 0;
11303 FUNC(pow) (0, 0);
11304 if (errno == ENOSYS)
11305 /* Function not implemented. */
11306 return;
11307
8847214f
UD
11308 START (pow);
11309
11310 TEST_ff_f (pow, 0, 0, 1);
11311 TEST_ff_f (pow, 0, minus_zero, 1);
11312 TEST_ff_f (pow, minus_zero, 0, 1);
11313 TEST_ff_f (pow, minus_zero, minus_zero, 1);
11314
11315 TEST_ff_f (pow, 10, 0, 1);
11316 TEST_ff_f (pow, 10, minus_zero, 1);
11317 TEST_ff_f (pow, -10, 0, 1);
11318 TEST_ff_f (pow, -10, minus_zero, 1);
11319
67e971f1
TS
11320 TEST_ff_f (pow, qnan_value, 0, 1);
11321 TEST_ff_f (pow, qnan_value, minus_zero, 1);
8847214f
UD
11322
11323
15daa639 11324#ifndef TEST_INLINE
3c6cad26 11325 TEST_ff_f (pow, 1.1L, plus_infty, plus_infty);
8847214f 11326 TEST_ff_f (pow, plus_infty, plus_infty, plus_infty);
3c6cad26 11327 TEST_ff_f (pow, -1.1L, plus_infty, plus_infty);
8847214f
UD
11328 TEST_ff_f (pow, minus_infty, plus_infty, plus_infty);
11329
11330 TEST_ff_f (pow, 0.9L, plus_infty, 0);
11331 TEST_ff_f (pow, 1e-7L, plus_infty, 0);
11332 TEST_ff_f (pow, -0.9L, plus_infty, 0);
11333 TEST_ff_f (pow, -1e-7L, plus_infty, 0);
11334
3c6cad26 11335 TEST_ff_f (pow, 1.1L, minus_infty, 0);
8847214f 11336 TEST_ff_f (pow, plus_infty, minus_infty, 0);
3c6cad26 11337 TEST_ff_f (pow, -1.1L, minus_infty, 0);
8847214f
UD
11338 TEST_ff_f (pow, minus_infty, minus_infty, 0);
11339
11340 TEST_ff_f (pow, 0.9L, minus_infty, plus_infty);
11341 TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty);
11342 TEST_ff_f (pow, -0.9L, minus_infty, plus_infty);
11343 TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty);
11344
11345 TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty);
11346 TEST_ff_f (pow, plus_infty, 1, plus_infty);
11347 TEST_ff_f (pow, plus_infty, 1e7L, plus_infty);
60e235ee 11348 TEST_ff_f (pow, plus_infty, min_subnorm_value, plus_infty);
8847214f
UD
11349
11350 TEST_ff_f (pow, plus_infty, -1e-7L, 0);
11351 TEST_ff_f (pow, plus_infty, -1, 0);
11352 TEST_ff_f (pow, plus_infty, -1e7L, 0);
60e235ee 11353 TEST_ff_f (pow, plus_infty, -min_subnorm_value, 0);
8847214f
UD
11354
11355 TEST_ff_f (pow, minus_infty, 1, minus_infty);
11356 TEST_ff_f (pow, minus_infty, 11, minus_infty);
11357 TEST_ff_f (pow, minus_infty, 1001, minus_infty);
11358
11359 TEST_ff_f (pow, minus_infty, 2, plus_infty);
11360 TEST_ff_f (pow, minus_infty, 12, plus_infty);
11361 TEST_ff_f (pow, minus_infty, 1002, plus_infty);
3c6cad26
UD
11362 TEST_ff_f (pow, minus_infty, 0.1L, plus_infty);
11363 TEST_ff_f (pow, minus_infty, 1.1L, plus_infty);
11364 TEST_ff_f (pow, minus_infty, 11.1L, plus_infty);
11365 TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty);
60e235ee 11366 TEST_ff_f (pow, minus_infty, min_subnorm_value, plus_infty);
8847214f
UD
11367
11368 TEST_ff_f (pow, minus_infty, -1, minus_zero);
11369 TEST_ff_f (pow, minus_infty, -11, minus_zero);
11370 TEST_ff_f (pow, minus_infty, -1001, minus_zero);
11371
11372 TEST_ff_f (pow, minus_infty, -2, 0);
11373 TEST_ff_f (pow, minus_infty, -12, 0);
11374 TEST_ff_f (pow, minus_infty, -1002, 0);
3c6cad26
UD
11375 TEST_ff_f (pow, minus_infty, -0.1L, 0);
11376 TEST_ff_f (pow, minus_infty, -1.1L, 0);
11377 TEST_ff_f (pow, minus_infty, -11.1L, 0);
11378 TEST_ff_f (pow, minus_infty, -1001.1L, 0);
60e235ee 11379 TEST_ff_f (pow, minus_infty, -min_subnorm_value, 0);
15daa639 11380#endif
8847214f 11381
67e971f1
TS
11382 TEST_ff_f (pow, qnan_value, qnan_value, qnan_value);
11383 TEST_ff_f (pow, 0, qnan_value, qnan_value);
11384 TEST_ff_f (pow, 1, qnan_value, 1);
11385 TEST_ff_f (pow, -1, qnan_value, qnan_value);
11386 TEST_ff_f (pow, qnan_value, 1, qnan_value);
11387 TEST_ff_f (pow, qnan_value, -1, qnan_value);
11388
11389 /* pow (x, qNaN) == qNaN. */
11390 TEST_ff_f (pow, 3.0, qnan_value, qnan_value);
11391 TEST_ff_f (pow, minus_zero, qnan_value, qnan_value);
11392 TEST_ff_f (pow, plus_infty, qnan_value, qnan_value);
11393 TEST_ff_f (pow, -3.0, qnan_value, qnan_value);
11394 TEST_ff_f (pow, minus_infty, qnan_value, qnan_value);
11395
11396 TEST_ff_f (pow, qnan_value, 3.0, qnan_value);
11397 TEST_ff_f (pow, qnan_value, -3.0, qnan_value);
11398 TEST_ff_f (pow, qnan_value, plus_infty, qnan_value);
11399 TEST_ff_f (pow, qnan_value, minus_infty, qnan_value);
11400 TEST_ff_f (pow, qnan_value, 2.5, qnan_value);
11401 TEST_ff_f (pow, qnan_value, -2.5, qnan_value);
11402 TEST_ff_f (pow, qnan_value, min_subnorm_value, qnan_value);
11403 TEST_ff_f (pow, qnan_value, -min_subnorm_value, qnan_value);
8847214f 11404
6571c570
UD
11405 TEST_ff_f (pow, 1, plus_infty, 1);
11406 TEST_ff_f (pow, -1, plus_infty, 1);
11407 TEST_ff_f (pow, 1, minus_infty, 1);
11408 TEST_ff_f (pow, -1, minus_infty, 1);
164f863e
UD
11409 TEST_ff_f (pow, 1, 1, 1);
11410 TEST_ff_f (pow, 1, -1, 1);
11411 TEST_ff_f (pow, 1, 1.25, 1);
11412 TEST_ff_f (pow, 1, -1.25, 1);
11413 TEST_ff_f (pow, 1, 0x1p62L, 1);
11414 TEST_ff_f (pow, 1, 0x1p63L, 1);
11415 TEST_ff_f (pow, 1, 0x1p64L, 1);
11416 TEST_ff_f (pow, 1, 0x1p72L, 1);
60e235ee
JM
11417 TEST_ff_f (pow, 1, min_subnorm_value, 1);
11418 TEST_ff_f (pow, 1, -min_subnorm_value, 1);
164f863e
UD
11419
11420 /* pow (x, +-0) == 1. */
11421 TEST_ff_f (pow, plus_infty, 0, 1);
11422 TEST_ff_f (pow, plus_infty, minus_zero, 1);
11423 TEST_ff_f (pow, minus_infty, 0, 1);
11424 TEST_ff_f (pow, minus_infty, minus_zero, 1);
11425 TEST_ff_f (pow, 32.75L, 0, 1);
11426 TEST_ff_f (pow, 32.75L, minus_zero, 1);
11427 TEST_ff_f (pow, -32.75L, 0, 1);
11428 TEST_ff_f (pow, -32.75L, minus_zero, 1);
11429 TEST_ff_f (pow, 0x1p72L, 0, 1);
11430 TEST_ff_f (pow, 0x1p72L, minus_zero, 1);
11431 TEST_ff_f (pow, 0x1p-72L, 0, 1);
11432 TEST_ff_f (pow, 0x1p-72L, minus_zero, 1);
8847214f 11433
67e971f1
TS
11434 TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION);
11435 TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION);
11436 TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION);
11437 TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION);
11438 TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION);
11439 TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION);
11440 TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION);
11441 TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION);
8847214f 11442
f2da7793
JM
11443 TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11444 TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11445 TEST_ff_f (pow, 0, -0xffffff, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa 11446#ifndef TEST_FLOAT
f2da7793 11447 TEST_ff_f (pow, 0, -0x1.fffffffffffffp+52L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa
JM
11448#endif
11449#ifdef TEST_LDOUBLE
11450# if LDBL_MANT_DIG >= 64
f2da7793 11451 TEST_ff_f (pow, 0, -0x1.fffffffffffffffep+63L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa
JM
11452# endif
11453# if LDBL_MANT_DIG >= 106
f2da7793 11454 TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffff8p+105L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa
JM
11455# endif
11456# if LDBL_MANT_DIG >= 113
f2da7793 11457 TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffffffp+112L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa
JM
11458# endif
11459#endif
f2da7793
JM
11460 TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11461 TEST_ff_f (pow, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11462 TEST_ff_f (pow, minus_zero, -0xffffff, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11463 TEST_ff_f (pow, minus_zero, -0x1fffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa 11464#ifndef TEST_FLOAT
f2da7793
JM
11465 TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+52L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11466 TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+53L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa
JM
11467#endif
11468#ifdef TEST_LDOUBLE
11469# if LDBL_MANT_DIG >= 64
f2da7793
JM
11470 TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+63L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11471 TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+64L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa
JM
11472# endif
11473# if LDBL_MANT_DIG >= 106
f2da7793
JM
11474 TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11475 TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa
JM
11476# endif
11477# if LDBL_MANT_DIG >= 113
f2da7793
JM
11478 TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11479 TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
2460d3aa
JM
11480# endif
11481#endif
8847214f 11482
f2da7793
JM
11483 TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11484 TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11485 TEST_ff_f (pow, 0, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11486 TEST_ff_f (pow, 0, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11487 TEST_ff_f (pow, 0, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11488 TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11489 TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11490 TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11491 TEST_ff_f (pow, minus_zero, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11492 TEST_ff_f (pow, minus_zero, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11493 TEST_ff_f (pow, minus_zero, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
11494 TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
8847214f 11495
c135cc1b 11496 TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 11497 TEST_ff_f (pow, 10, -0x1p72L, 0, UNDERFLOW_EXCEPTION);
d7dd9453 11498 TEST_ff_f (pow, max_value, max_value, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 11499 TEST_ff_f (pow, 10, -max_value, 0, UNDERFLOW_EXCEPTION);
8847214f
UD
11500
11501 TEST_ff_f (pow, 0, 1, 0);
11502 TEST_ff_f (pow, 0, 11, 0);
11503
11504 TEST_ff_f (pow, minus_zero, 1, minus_zero);
11505 TEST_ff_f (pow, minus_zero, 11, minus_zero);
11506
8847214f 11507 TEST_ff_f (pow, 0, 2, 0);
3c6cad26 11508 TEST_ff_f (pow, 0, 11.1L, 0);
8847214f 11509
8847214f 11510 TEST_ff_f (pow, minus_zero, 2, 0);
3c6cad26 11511 TEST_ff_f (pow, minus_zero, 11.1L, 0);
164f863e
UD
11512 TEST_ff_f (pow, 0, plus_infty, 0);
11513 TEST_ff_f (pow, minus_zero, plus_infty, 0);
10285c21
JM
11514 TEST_ff_f (pow, 0, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK);
11515 TEST_ff_f (pow, minus_zero, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK);
8847214f 11516
15daa639 11517#ifndef TEST_INLINE
8847214f
UD
11518 /* pow (x, +inf) == +inf for |x| > 1. */
11519 TEST_ff_f (pow, 1.5, plus_infty, plus_infty);
11520
11521 /* pow (x, +inf) == +0 for |x| < 1. */
11522 TEST_ff_f (pow, 0.5, plus_infty, 0.0);
11523
11524 /* pow (x, -inf) == +0 for |x| > 1. */
11525 TEST_ff_f (pow, 1.5, minus_infty, 0.0);
11526
11527 /* pow (x, -inf) == +inf for |x| < 1. */
11528 TEST_ff_f (pow, 0.5, minus_infty, plus_infty);
15daa639 11529#endif
8847214f
UD
11530
11531 /* pow (+inf, y) == +inf for y > 0. */
11532 TEST_ff_f (pow, plus_infty, 2, plus_infty);
2460d3aa
JM
11533 TEST_ff_f (pow, plus_infty, 0xffffff, plus_infty);
11534#ifndef TEST_FLOAT
11535 TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffp+52L, plus_infty);
11536#endif
11537#ifdef TEST_LDOUBLE
11538# if LDBL_MANT_DIG >= 64
11539 TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffffep+63L, plus_infty);
11540# endif
11541# if LDBL_MANT_DIG >= 106
11542 TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, plus_infty);
11543# endif
11544# if LDBL_MANT_DIG >= 113
11545 TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, plus_infty);
11546# endif
11547#endif
11548 TEST_ff_f (pow, plus_infty, 0x1p24, plus_infty);
11549 TEST_ff_f (pow, plus_infty, 0x1p127, plus_infty);
11550 TEST_ff_f (pow, plus_infty, max_value, plus_infty);
8847214f
UD
11551
11552 /* pow (+inf, y) == +0 for y < 0. */
11553 TEST_ff_f (pow, plus_infty, -1, 0.0);
2460d3aa
JM
11554 TEST_ff_f (pow, plus_infty, -0xffffff, 0.0);
11555#ifndef TEST_FLOAT
11556 TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffp+52L, 0.0);
11557#endif
11558#ifdef TEST_LDOUBLE
11559# if LDBL_MANT_DIG >= 64
11560 TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffffep+63L, 0.0);
11561# endif
11562# if LDBL_MANT_DIG >= 106
11563 TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, 0.0);
11564# endif
11565# if LDBL_MANT_DIG >= 113
11566 TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, 0.0);
11567# endif
11568#endif
11569 TEST_ff_f (pow, plus_infty, -0x1p24, 0.0);
11570 TEST_ff_f (pow, plus_infty, -0x1p127, 0.0);
11571 TEST_ff_f (pow, plus_infty, -max_value, 0.0);
8847214f
UD
11572
11573 /* pow (-inf, y) == -inf for y an odd integer > 0. */
11574 TEST_ff_f (pow, minus_infty, 27, minus_infty);
2460d3aa
JM
11575 TEST_ff_f (pow, minus_infty, 0xffffff, minus_infty);
11576 TEST_ff_f (pow, minus_infty, 0x1fffffe, plus_infty);
11577#ifndef TEST_FLOAT
11578 TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+52L, minus_infty);
11579 TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+53L, plus_infty);
11580#endif
11581#ifdef TEST_LDOUBLE
11582# if LDBL_MANT_DIG >= 64
11583 TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+63L, minus_infty);
11584 TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+64L, plus_infty);
11585# endif
11586# if LDBL_MANT_DIG >= 106
11587 TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty);
11588 TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty);
11589# endif
11590# if LDBL_MANT_DIG >= 113
11591 TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty);
11592 TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty);
11593# endif
11594#endif
8847214f
UD
11595
11596 /* pow (-inf, y) == +inf for y > 0 and not an odd integer. */
11597 TEST_ff_f (pow, minus_infty, 28, plus_infty);
2460d3aa
JM
11598 TEST_ff_f (pow, minus_infty, 0x1p24, plus_infty);
11599 TEST_ff_f (pow, minus_infty, 0x1p127, plus_infty);
11600 TEST_ff_f (pow, minus_infty, max_value, plus_infty);
8847214f
UD
11601
11602 /* pow (-inf, y) == -0 for y an odd integer < 0. */
11603 TEST_ff_f (pow, minus_infty, -3, minus_zero);
2460d3aa
JM
11604 TEST_ff_f (pow, minus_infty, -0xffffff, minus_zero);
11605 TEST_ff_f (pow, minus_infty, -0x1fffffe, plus_zero);
11606#ifndef TEST_FLOAT
11607 TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+52L, minus_zero);
11608 TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+53L, plus_zero);
11609#endif
11610#ifdef TEST_LDOUBLE
11611# if LDBL_MANT_DIG >= 64
11612 TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+63L, minus_zero);
11613 TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+64L, plus_zero);
11614# endif
11615# if LDBL_MANT_DIG >= 106
11616 TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
11617 TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
11618# endif
11619# if LDBL_MANT_DIG >= 113
11620 TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
11621 TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
11622# endif
11623#endif
8847214f
UD
11624 /* pow (-inf, y) == +0 for y < 0 and not an odd integer. */
11625 TEST_ff_f (pow, minus_infty, -2.0, 0.0);
2460d3aa
JM
11626 TEST_ff_f (pow, minus_infty, -0x1p24, 0.0);
11627 TEST_ff_f (pow, minus_infty, -0x1p127, 0.0);
11628 TEST_ff_f (pow, minus_infty, -max_value, 0.0);
8847214f
UD
11629
11630 /* pow (+0, y) == +0 for y an odd integer > 0. */
11631 TEST_ff_f (pow, 0.0, 27, 0.0);
2460d3aa
JM
11632 TEST_ff_f (pow, 0.0, 0xffffff, 0.0);
11633#ifndef TEST_FLOAT
11634 TEST_ff_f (pow, 0.0, 0x1.fffffffffffffp+52L, 0.0);
11635#endif
11636#ifdef TEST_LDOUBLE
11637# if LDBL_MANT_DIG >= 64
11638 TEST_ff_f (pow, 0.0, 0x1.fffffffffffffffep+63L, 0.0);
11639# endif
11640# if LDBL_MANT_DIG >= 106
11641 TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffff8p+105L, 0.0);
11642# endif
11643# if LDBL_MANT_DIG >= 113
11644 TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffffffp+112L, 0.0);
11645# endif
11646#endif
8847214f
UD
11647
11648 /* pow (-0, y) == -0 for y an odd integer > 0. */
11649 TEST_ff_f (pow, minus_zero, 27, minus_zero);
2460d3aa
JM
11650 TEST_ff_f (pow, minus_zero, 0xffffff, minus_zero);
11651 TEST_ff_f (pow, minus_zero, 0x1fffffe, plus_zero);
11652#ifndef TEST_FLOAT
11653 TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+52L, minus_zero);
11654 TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+53L, plus_zero);
11655#endif
11656#ifdef TEST_LDOUBLE
11657# if LDBL_MANT_DIG >= 64
11658 TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+63L, minus_zero);
11659 TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+64L, plus_zero);
11660# endif
11661# if LDBL_MANT_DIG >= 106
11662 TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
11663 TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
11664# endif
11665# if LDBL_MANT_DIG >= 113
11666 TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
11667 TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
11668# endif
11669#endif
8847214f
UD
11670
11671 /* pow (+0, y) == +0 for y > 0 and not an odd integer. */
11672 TEST_ff_f (pow, 0.0, 4, 0.0);
2460d3aa
JM
11673 TEST_ff_f (pow, 0.0, 0x1p24, 0.0);
11674 TEST_ff_f (pow, 0.0, 0x1p127, 0.0);
11675 TEST_ff_f (pow, 0.0, max_value, 0.0);
60e235ee 11676 TEST_ff_f (pow, 0.0, min_subnorm_value, 0.0);
8847214f
UD
11677
11678 /* pow (-0, y) == +0 for y > 0 and not an odd integer. */
11679 TEST_ff_f (pow, minus_zero, 4, 0.0);
2460d3aa
JM
11680 TEST_ff_f (pow, minus_zero, 0x1p24, 0.0);
11681 TEST_ff_f (pow, minus_zero, 0x1p127, 0.0);
11682 TEST_ff_f (pow, minus_zero, max_value, 0.0);
60e235ee 11683 TEST_ff_f (pow, minus_zero, min_subnorm_value, 0.0);
8847214f 11684
164f863e
UD
11685 TEST_ff_f (pow, 16, 0.25L, 2);
11686 TEST_ff_f (pow, 0x1p64L, 0.125L, 256);
11687 TEST_ff_f (pow, 2, 4, 16);
11688 TEST_ff_f (pow, 256, 8, 0x1p64L);
11689
2550dfe9 11690 TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L);
8847214f 11691
4c95adde 11692#if defined TEST_DOUBLE || defined TEST_LDOUBLE
80bad0cc 11693 TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION);
8847214f
UD
11694#endif
11695
d6270972
JM
11696 TEST_ff_f (pow, -1.0, -0xffffff, -1.0);
11697 TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0);
11698#ifndef TEST_FLOAT
11699 TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+52L, -1.0);
11700 TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+53L, 1.0);
11701#endif
11702#ifdef TEST_LDOUBLE
11703# if LDBL_MANT_DIG >= 64
11704 TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+63L, -1.0);
11705 TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+64L, 1.0);
11706# endif
11707# if LDBL_MANT_DIG >= 106
11708 TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+105L, -1.0);
11709 TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+106L, 1.0);
11710# endif
11711# if LDBL_MANT_DIG >= 113
11712 TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+112L, -1.0);
11713 TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+113L, 1.0);
11714# endif
11715#endif
11716 TEST_ff_f (pow, -1.0, -max_value, 1.0);
11717
11718 TEST_ff_f (pow, -1.0, 0xffffff, -1.0);
11719 TEST_ff_f (pow, -1.0, 0x1fffffe, 1.0);
11720#ifndef TEST_FLOAT
11721 TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+52L, -1.0);
11722 TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+53L, 1.0);
11723#endif
11724#ifdef TEST_LDOUBLE
11725# if LDBL_MANT_DIG >= 64
11726 TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+63L, -1.0);
11727 TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+64L, 1.0);
11728# endif
11729# if LDBL_MANT_DIG >= 106
11730 TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+105L, -1.0);
11731 TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+106L, 1.0);
11732# endif
11733# if LDBL_MANT_DIG >= 113
11734 TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+112L, -1.0);
11735 TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+113L, 1.0);
11736# endif
11737#endif
11738 TEST_ff_f (pow, -1.0, max_value, 1.0);
11739
11740 TEST_ff_f (pow, -2.0, 126, 0x1p126);
11741 TEST_ff_f (pow, -2.0, 127, -0x1p127);
80bad0cc
JM
11742 /* Allow inexact results for float to be considered to underflow. */
11743 TEST_ff_f (pow, -2.0, -126, 0x1p-126, UNDERFLOW_EXCEPTION_OK_FLOAT);
11744 TEST_ff_f (pow, -2.0, -127, -0x1p-127, UNDERFLOW_EXCEPTION_OK_FLOAT);
d6270972 11745
80bad0cc
JM
11746 TEST_ff_f (pow, -2.0, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION);
11747 TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION);
d6270972 11748#ifndef TEST_FLOAT
80bad0cc
JM
11749 TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION);
11750 TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11751#endif
11752#ifdef TEST_LDOUBLE
11753# if LDBL_MANT_DIG >= 64
80bad0cc
JM
11754 TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION);
11755 TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11756# endif
11757# if LDBL_MANT_DIG >= 106
80bad0cc
JM
11758 TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION);
11759 TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11760# endif
11761# if LDBL_MANT_DIG >= 113
80bad0cc
JM
11762 TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION);
11763 TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11764# endif
11765#endif
80bad0cc 11766 TEST_ff_f (pow, -2.0, -max_value, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11767
11768 TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION);
11769 TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
11770#ifndef TEST_FLOAT
11771 TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION);
11772 TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION);
11773#endif
11774#ifdef TEST_LDOUBLE
11775# if LDBL_MANT_DIG >= 64
11776 TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION);
11777 TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION);
11778# endif
11779# if LDBL_MANT_DIG >= 106
11780 TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION);
11781 TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION);
11782# endif
11783# if LDBL_MANT_DIG >= 113
11784 TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION);
11785 TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION);
11786# endif
11787#endif
d7dd9453 11788 TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION);
d6270972 11789
67e971f1
TS
11790 TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION);
11791 TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION);
11792 TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION);
80bad0cc
JM
11793 TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION);
11794 TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11795 TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION);
11796 TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION);
11797
80bad0cc
JM
11798 TEST_ff_f (pow, -max_value, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION);
11799 TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION);
d6270972 11800#ifndef TEST_FLOAT
80bad0cc
JM
11801 TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION);
11802 TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11803#endif
11804#ifdef TEST_LDOUBLE
11805# if LDBL_MANT_DIG >= 64
80bad0cc
JM
11806 TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION);
11807 TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11808# endif
11809# if LDBL_MANT_DIG >= 106
80bad0cc
JM
11810 TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION);
11811 TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11812# endif
11813# if LDBL_MANT_DIG >= 113
80bad0cc
JM
11814 TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION);
11815 TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11816# endif
11817#endif
80bad0cc 11818 TEST_ff_f (pow, -max_value, -max_value, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11819
11820 TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION);
11821 TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
11822#ifndef TEST_FLOAT
11823 TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION);
11824 TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION);
11825#endif
11826#ifdef TEST_LDOUBLE
11827# if LDBL_MANT_DIG >= 64
11828 TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION);
11829 TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION);
11830# endif
11831# if LDBL_MANT_DIG >= 106
11832 TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION);
11833 TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION);
11834# endif
11835# if LDBL_MANT_DIG >= 113
11836 TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION);
11837 TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION);
11838# endif
11839#endif
d7dd9453 11840 TEST_ff_f (pow, -max_value, max_value, plus_infty, OVERFLOW_EXCEPTION);
d6270972
JM
11841
11842 TEST_ff_f (pow, -0.5, 126, 0x1p-126);
11843 TEST_ff_f (pow, -0.5, 127, -0x1p-127);
11844 TEST_ff_f (pow, -0.5, -126, 0x1p126);
11845 TEST_ff_f (pow, -0.5, -127, -0x1p127);
11846
11847 TEST_ff_f (pow, -0.5, -0xffffff, minus_infty, OVERFLOW_EXCEPTION);
11848 TEST_ff_f (pow, -0.5, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
11849#ifndef TEST_FLOAT
11850 TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION);
11851 TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION);
11852#endif
11853#ifdef TEST_LDOUBLE
11854# if LDBL_MANT_DIG >= 64
11855 TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION);
11856 TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION);
11857# endif
11858# if LDBL_MANT_DIG >= 106
11859 TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION);
11860 TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION);
11861# endif
11862# if LDBL_MANT_DIG >= 113
11863 TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION);
11864 TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION);
11865# endif
11866#endif
d7dd9453 11867 TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION);
d6270972 11868
80bad0cc
JM
11869 TEST_ff_f (pow, -0.5, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION);
11870 TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION);
d6270972 11871#ifndef TEST_FLOAT
80bad0cc
JM
11872 TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION);
11873 TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11874#endif
11875#ifdef TEST_LDOUBLE
11876# if LDBL_MANT_DIG >= 64
80bad0cc
JM
11877 TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION);
11878 TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11879# endif
11880# if LDBL_MANT_DIG >= 106
80bad0cc
JM
11881 TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION);
11882 TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11883# endif
11884# if LDBL_MANT_DIG >= 113
80bad0cc
JM
11885 TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION);
11886 TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11887# endif
11888#endif
80bad0cc 11889 TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION);
d6270972 11890
67e971f1
TS
11891 TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION);
11892 TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION);
11893 TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION);
d6270972
JM
11894 TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION);
11895 TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION);
80bad0cc
JM
11896 /* Allow inexact results to be considered to underflow. */
11897 TEST_ff_f (pow, -min_value, 1, -min_value, UNDERFLOW_EXCEPTION_OK);
11898 TEST_ff_f (pow, -min_value, 2, plus_zero, UNDERFLOW_EXCEPTION);
11899 TEST_ff_f (pow, -min_value, 3, minus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11900
11901 TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION);
11902 TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
11903#ifndef TEST_FLOAT
11904 TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION);
11905 TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION);
11906#endif
11907#ifdef TEST_LDOUBLE
11908# if LDBL_MANT_DIG >= 64
11909 TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION);
11910 TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION);
11911# endif
11912# if LDBL_MANT_DIG >= 106
11913 TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION);
11914 TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION);
11915# endif
11916# if LDBL_MANT_DIG >= 113
11917 TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION);
11918 TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION);
11919# endif
11920#endif
d7dd9453 11921 TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION);
d6270972 11922
80bad0cc
JM
11923 TEST_ff_f (pow, -min_value, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION);
11924 TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION);
d6270972 11925#ifndef TEST_FLOAT
80bad0cc
JM
11926 TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION);
11927 TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11928#endif
11929#ifdef TEST_LDOUBLE
11930# if LDBL_MANT_DIG >= 64
80bad0cc
JM
11931 TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION);
11932 TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11933# endif
11934# if LDBL_MANT_DIG >= 106
80bad0cc
JM
11935 TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION);
11936 TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11937# endif
11938# if LDBL_MANT_DIG >= 113
80bad0cc
JM
11939 TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION);
11940 TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION);
d6270972
JM
11941# endif
11942#endif
80bad0cc 11943 TEST_ff_f (pow, -min_value, max_value, plus_zero, UNDERFLOW_EXCEPTION);
d6270972 11944
c483f6b4
JM
11945 TEST_ff_f (pow, 0x0.ffffffp0, 10, 0.999999403953712118183885036774764444747L);
11946 TEST_ff_f (pow, 0x0.ffffffp0, 100, 0.999994039553108359406305079606228341585L);
11947 TEST_ff_f (pow, 0x0.ffffffp0, 1000, 0.9999403971297699052276650144650733772182L);
11948 TEST_ff_f (pow, 0x0.ffffffp0, 0x1p24, 0.3678794302077803437135155590023422899744L);
11949 TEST_ff_f (pow, 0x0.ffffffp0, 0x1p30, 1.603807831524924233828134753069728224044e-28L);
11950 TEST_ff_f (pow, 0x0.ffffffp0, 0x1.234566p30, 2.374884712135295099971443365381007297732e-32L);
11951 TEST_ff_f (pow, 0x0.ffffffp0, -10, 1.000000596046643153205170848674671339688L);
11952 TEST_ff_f (pow, 0x0.ffffffp0, -100, 1.000005960482418779499387594989252621451L);
11953 TEST_ff_f (pow, 0x0.ffffffp0, -1000, 1.000059606422943986382898964231519867906L);
11954 TEST_ff_f (pow, 0x0.ffffffp0, -0x1p24, 2.7182819094701610539628664526874952929416L);
11955 TEST_ff_f (pow, 0x0.ffffffp0, -0x1p30, 6.2351609734265057988914412331288163636075e+27L);
11956 TEST_ff_f (pow, 0x0.ffffffp0, -0x1.234566p30, 4.2107307141696353498921307077142537353515e+31L);
11957 TEST_ff_f (pow, 0x1.000002p0, 0x1p24, 7.3890552180866447284268641248075832310141L);
11958 TEST_ff_f (pow, 0x1.000002p0, 0x1.234566p29, 4.2107033006507495188536371520637025716256e+31L);
11959 TEST_ff_f (pow, 0x1.000002p0, -0x1.234566p29, 2.3749001736727769098946062325205705312166e-32L);
c483f6b4 11960
1bead169 11961#if !defined TEST_FLOAT
c483f6b4
JM
11962 TEST_ff_f (pow, 0x0.fffffffffffff8p0L, 0x1.23456789abcdfp62L, 1.0118762747827252817436395051178295138220e-253L);
11963 TEST_ff_f (pow, 0x0.fffffffffffff8p0L, -0x1.23456789abcdfp62L, 9.8826311568054561811190162420900667121992e+252L);
11964 TEST_ff_f (pow, 0x1.0000000000001p0L, 0x1.23456789abcdfp61L, 9.8826311568044974397135026217687399395481e+252L);
11965 TEST_ff_f (pow, 0x1.0000000000001p0L, -0x1.23456789abcdfp61L, 1.0118762747828234466621210689458255908670e-253L);
11966#endif
11967
1bead169
JM
11968#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 && LDBL_MAX_EXP >= 16384
11969 TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, 0x1.23456789abcdef0ep77L, 1.2079212226420368189981778807634890018840e-4048L);
11970 TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, -0x1.23456789abcdef0ep77L, 8.2786855736563746280496724205839522148001e+4047L);
11971 TEST_ff_f (pow, 0x1.0000000000000002p0L, 0x1.23456789abcdef0ep76L, 8.2786855736563683535324500168799315131570e+4047L);
11972 TEST_ff_f (pow, 0x1.0000000000000002p0L, -0x1.23456789abcdef0ep76L, 1.2079212226420377344964713407722652880280e-4048L);
11973#endif
11974
11975#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
11976 TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.23456789abcdef0123456789abcdp126L, 1.2079212226420440237790185999151440179953e-4048L);
11977 TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.23456789abcdef0123456789abcdp126L, 8.2786855736563252489063231915535105363602e+4047L);
11978 TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, 0x1.23456789abcdef0123456789abcdp125L, 8.2786855736563252489063231915423647547782e+4047L);
11979 TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, -0x1.23456789abcdef0123456789abcdp125L, 1.2079212226420440237790185999167702696503e-4048L);
11980#endif
11981
11982#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
11983 TEST_ff_f (pow, 1e4932L, 0.75L, 1e3699L);
11984 TEST_ff_f (pow, 1e4928L, 0.75L, 1e3696L);
11985 TEST_ff_f (pow, 1e4924L, 0.75L, 1e3693L);
11986 TEST_ff_f (pow, 1e4920L, 0.75L, 1e3690L);
11987 TEST_ff_f (pow, 10.0L, 4932.0L, 1e4932L);
11988 TEST_ff_f (pow, 10.0L, 4931.0L, 1e4931L);
11989 TEST_ff_f (pow, 10.0L, 4930.0L, 1e4930L);
11990 TEST_ff_f (pow, 10.0L, 4929.0L, 1e4929L);
11991 TEST_ff_f (pow, 10.0L, -4931.0L, 1e-4931L);
11992 TEST_ff_f (pow, 10.0L, -4930.0L, 1e-4930L);
11993 TEST_ff_f (pow, 10.0L, -4929.0L, 1e-4929L);
11994 TEST_ff_f (pow, 1e27L, 182.0L, 1e4914L);
11995 TEST_ff_f (pow, 1e27L, -182.0L, 1e-4914L);
11996#endif
11997
60e235ee
JM
11998 TEST_ff_f (pow, min_subnorm_value, min_subnorm_value, 1.0L);
11999 TEST_ff_f (pow, min_subnorm_value, -min_subnorm_value, 1.0L);
12000 TEST_ff_f (pow, max_value, min_subnorm_value, 1.0L);
12001 TEST_ff_f (pow, max_value, -min_subnorm_value, 1.0L);
12002 TEST_ff_f (pow, 0.99L, min_subnorm_value, 1.0L);
12003 TEST_ff_f (pow, 0.99L, -min_subnorm_value, 1.0L);
12004 TEST_ff_f (pow, 1.01L, min_subnorm_value, 1.0L);
12005 TEST_ff_f (pow, 1.01L, -min_subnorm_value, 1.0L);
12006
7a25eb06
JM
12007 TEST_ff_f (pow, 2.0L, -100000.0L, plus_zero, UNDERFLOW_EXCEPTION);
12008
8847214f
UD
12009 END (pow);
12010}
12011
b7cd39e8
JM
12012
12013static void
12014pow_test_tonearest (void)
12015{
12016 int save_round_mode;
12017 errno = 0;
12018 FUNC(pow) (0, 0);
12019 if (errno == ENOSYS)
12020 /* Function not implemented. */
12021 return;
12022
12023 START (pow_tonearest);
12024
12025 save_round_mode = fegetround ();
12026
12027 if (!fesetround (FE_TONEAREST))
12028 {
12029 TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L);
12030 TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L);
12031 }
12032
12033 fesetround (save_round_mode);
12034
12035 END (pow_tonearest);
12036}
12037
12038
12039static void
12040pow_test_towardzero (void)
12041{
12042 int save_round_mode;
12043 errno = 0;
12044 FUNC(pow) (0, 0);
12045 if (errno == ENOSYS)
12046 /* Function not implemented. */
12047 return;
12048
12049 START (pow_towardzero);
12050
12051 save_round_mode = fegetround ();
12052
12053 if (!fesetround (FE_TOWARDZERO))
12054 {
12055 TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L);
12056 TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L);
12057 }
12058
12059 fesetround (save_round_mode);
12060
12061 END (pow_towardzero);
12062}
12063
12064
12065static void
12066pow_test_downward (void)
12067{
12068 int save_round_mode;
12069 errno = 0;
12070 FUNC(pow) (0, 0);
12071 if (errno == ENOSYS)
12072 /* Function not implemented. */
12073 return;
12074
12075 START (pow_downward);
12076
12077 save_round_mode = fegetround ();
12078
12079 if (!fesetround (FE_DOWNWARD))
12080 {
12081 TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L);
12082 TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L);
12083 }
12084
12085 fesetround (save_round_mode);
12086
12087 END (pow_downward);
12088}
12089
12090
12091static void
12092pow_test_upward (void)
12093{
12094 int save_round_mode;
12095 errno = 0;
12096 FUNC(pow) (0, 0);
12097 if (errno == ENOSYS)
12098 /* Function not implemented. */
12099 return;
12100
12101 START (pow_upward);
12102
12103 save_round_mode = fegetround ();
12104
12105 if (!fesetround (FE_UPWARD))
12106 {
12107 TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L);
12108 TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L);
12109 }
12110
12111 fesetround (save_round_mode);
12112
12113 END (pow_upward);
12114}
12115
12116
8847214f
UD
12117static void
12118remainder_test (void)
12119{
aaca11d8
UD
12120 errno = 0;
12121 FUNC(remainder) (1.625, 1.0);
12122 if (errno == ENOSYS)
12123 /* Function not implemented. */
12124 return;
8847214f
UD
12125
12126 START (remainder);
12127
f2da7793
JM
12128 TEST_ff_f (remainder, 1, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12129 TEST_ff_f (remainder, 1, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12130 TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12131 TEST_ff_f (remainder, plus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12132 TEST_ff_f (remainder, plus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12133 TEST_ff_f (remainder, plus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12134 TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12135 TEST_ff_f (remainder, minus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12136 TEST_ff_f (remainder, minus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12137 TEST_ff_f (remainder, minus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12138 TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, ERRNO_UNCHANGED);
12139 TEST_ff_f (remainder, 0, qnan_value, qnan_value, ERRNO_UNCHANGED);
12140 TEST_ff_f (remainder, qnan_value, 0, qnan_value, ERRNO_UNCHANGED);
12141
12142 TEST_ff_f (remainder, 7.0, plus_infty, 7.0, ERRNO_UNCHANGED);
12143 TEST_ff_f (remainder, 7.0, minus_infty, 7.0, ERRNO_UNCHANGED);
a1cbf437 12144
8847214f
UD
12145 TEST_ff_f (remainder, 1.625, 1.0, -0.375);
12146 TEST_ff_f (remainder, -1.625, 1.0, 0.375);
12147 TEST_ff_f (remainder, 1.625, -1.0, -0.375);
12148 TEST_ff_f (remainder, -1.625, -1.0, 0.375);
12149 TEST_ff_f (remainder, 5.0, 2.0, 1.0);
12150 TEST_ff_f (remainder, 3.0, 2.0, -1.0);
12151
12152 END (remainder);
12153}
12154
12155static void
12156remquo_test (void)
12157{
12158 /* x is needed. */
12159 int x;
12160
aaca11d8
UD
12161 errno = 0;
12162 FUNC(remquo) (1.625, 1.0, &x);
12163 if (errno == ENOSYS)
12164 /* Function not implemented. */
12165 return;
12166
8847214f
UD
12167 START (remquo);
12168
67e971f1
TS
12169 TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION);
12170 TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION);
12171 TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
12172 TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
12173 TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE);
8847214f
UD
12174
12175 TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2);
12176 TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2);
12177 TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2);
12178 TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2);
12179
12180 TEST_ffI_f1 (remquo, 5, 2, 1, 2);
12181 TEST_ffI_f1 (remquo, 3, 2, -1, 2);
12182
12183 END (remquo);
12184}
12185
12186static void
12187rint_test (void)
12188{
64d063b8
TS
12189 /* TODO: missing qNaN tests. */
12190
8847214f
UD
12191 START (rint);
12192
12193 TEST_f_f (rint, 0.0, 0.0);
12194 TEST_f_f (rint, minus_zero, minus_zero);
12195 TEST_f_f (rint, plus_infty, plus_infty);
12196 TEST_f_f (rint, minus_infty, minus_infty);
12197
9949bc63 12198 /* Default rounding mode is round to even. */
1dc23588
UD
12199 TEST_f_f (rint, 0.5, 0.0);
12200 TEST_f_f (rint, 1.5, 2.0);
9949bc63
UD
12201 TEST_f_f (rint, 2.5, 2.0);
12202 TEST_f_f (rint, 3.5, 4.0);
12203 TEST_f_f (rint, 4.5, 4.0);
1dc23588
UD
12204 TEST_f_f (rint, -0.5, -0.0);
12205 TEST_f_f (rint, -1.5, -2.0);
9949bc63
UD
12206 TEST_f_f (rint, -2.5, -2.0);
12207 TEST_f_f (rint, -3.5, -4.0);
12208 TEST_f_f (rint, -4.5, -4.0);
5c68d401
RM
12209 TEST_f_f (rint, 0.1, 0.0);
12210 TEST_f_f (rint, 0.25, 0.0);
12211 TEST_f_f (rint, 0.625, 1.0);
12212 TEST_f_f (rint, -0.1, -0.0);
12213 TEST_f_f (rint, -0.25, -0.0);
12214 TEST_f_f (rint, -0.625, -1.0);
af0498dc
UD
12215 TEST_f_f (rint, 262144.75, 262145.0);
12216 TEST_f_f (rint, 262142.75, 262143.0);
12217 TEST_f_f (rint, 524286.75, 524287.0);
12218 TEST_f_f (rint, 524288.75, 524289.0);
fe45ce09
JM
12219 TEST_f_f (rint, 1048576.75, 1048577.0);
12220 TEST_f_f (rint, 2097152.75, 2097153.0);
12221 TEST_f_f (rint, -1048576.75, -1048577.0);
12222 TEST_f_f (rint, -2097152.75, -2097153.0);
12223#ifndef TEST_FLOAT
12224 TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
12225 TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
12226 TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
12227 TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
12228 TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
12229 TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
12230 TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
12231 TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
12232 TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
12233 TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
12234#endif
f964490f
RM
12235#ifdef TEST_LDOUBLE
12236 /* The result can only be represented in long double. */
12237 TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
12238 TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L);
12239 TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L);
12240 TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L);
12241 TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L);
830fce04 12242
5c68d401
RM
12243# if LDBL_MANT_DIG > 100
12244 TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L);
12245 TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L);
12246 TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L);
12247# endif
f964490f
RM
12248
12249 TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L);
12250 TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L);
12251 TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L);
12252 TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L);
12253 TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L);
830fce04 12254
5c68d401
RM
12255# if LDBL_MANT_DIG > 100
12256 TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L);
12257 TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L);
12258 TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L);
12259
12260 TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L);
12261 TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L);
12262 TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L);
12263 TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L);
12264 TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L);
12265 TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L);
12266
12267 TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L);
12268 TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L);
12269 TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L);
12270 TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L);
12271 TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L);
12272 TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L);
12273# endif
f964490f
RM
12274
12275 TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L);
12276 TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L);
12277 TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L);
12278 TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L);
12279 TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L);
12280
12281 TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L);
12282 TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L);
12283 TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L);
12284 TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L);
12285 TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L);
12286
12287 TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L);
12288 TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L);
12289 TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L);
12290 TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L);
12291 TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L);
12292
12293 TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L);
12294 TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L);
12295 TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L);
12296 TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L);
12297 TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L);
12298
12299 TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L);
12300 TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L);
12301 TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L);
12302 TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L);
12303 TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L);
12304#endif
1dc23588 12305
8847214f
UD
12306 END (rint);
12307}
12308
4d37c8aa
UD
12309static void
12310rint_test_tonearest (void)
12311{
12312 int save_round_mode;
12313 START (rint_tonearest);
12314
830fce04 12315 save_round_mode = fegetround ();
4d37c8aa
UD
12316
12317 if (!fesetround (FE_TONEAREST))
830fce04
RM
12318 {
12319 TEST_f_f (rint, 2.0, 2.0);
12320 TEST_f_f (rint, 1.5, 2.0);
12321 TEST_f_f (rint, 1.0, 1.0);
12322 TEST_f_f (rint, 0.5, 0.0);
12323 TEST_f_f (rint, 0.0, 0.0);
12324 TEST_f_f (rint, minus_zero, minus_zero);
12325 TEST_f_f (rint, -0.5, -0.0);
12326 TEST_f_f (rint, -1.0, -1.0);
12327 TEST_f_f (rint, -1.5, -2.0);
12328 TEST_f_f (rint, -2.0, -2.0);
12329 TEST_f_f (rint, 0.1, 0.0);
12330 TEST_f_f (rint, 0.25, 0.0);
12331 TEST_f_f (rint, 0.625, 1.0);
12332 TEST_f_f (rint, -0.1, -0.0);
12333 TEST_f_f (rint, -0.25, -0.0);
12334 TEST_f_f (rint, -0.625, -1.0);
fe45ce09
JM
12335 TEST_f_f (rint, 1048576.75, 1048577.0);
12336 TEST_f_f (rint, 2097152.75, 2097153.0);
12337 TEST_f_f (rint, -1048576.75, -1048577.0);
12338 TEST_f_f (rint, -2097152.75, -2097153.0);
12339#ifndef TEST_FLOAT
12340 TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
12341 TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
12342 TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
12343 TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
12344 TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
12345 TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
12346 TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
12347 TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
12348 TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
12349 TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
12350#endif
5c68d401 12351#ifdef TEST_LDOUBLE
830fce04
RM
12352 /* The result can only be represented in long double. */
12353 TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
12354 TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L);
12355 TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L);
12356 TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L);
12357 TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L);
5c68d401 12358# if LDBL_MANT_DIG > 100
830fce04
RM
12359 TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L);
12360 TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L);
12361 TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L);
5c68d401 12362# endif
830fce04
RM
12363 TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L);
12364 TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L);
12365 TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L);
12366 TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L);
12367 TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L);
5c68d401 12368# if LDBL_MANT_DIG > 100
830fce04
RM
12369 TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L);
12370 TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L);
12371 TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L);
12372
12373 TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L);
12374 TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L);
12375 TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L);
12376 TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L);
12377 TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L);
12378 TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L);
12379
12380 TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L);
12381 TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L);
12382 TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L);
12383 TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L);
12384 TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L);
12385 TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L);
5c68d401
RM
12386# endif
12387#endif
830fce04 12388 }
4d37c8aa 12389
830fce04 12390 fesetround (save_round_mode);
4d37c8aa
UD
12391
12392 END (rint_tonearest);
12393}
12394
12395static void
12396rint_test_towardzero (void)
12397{
12398 int save_round_mode;
12399 START (rint_towardzero);
12400
830fce04 12401 save_round_mode = fegetround ();
4d37c8aa
UD
12402
12403 if (!fesetround (FE_TOWARDZERO))
830fce04
RM
12404 {
12405 TEST_f_f (rint, 2.0, 2.0);
12406 TEST_f_f (rint, 1.5, 1.0);
12407 TEST_f_f (rint, 1.0, 1.0);
12408 TEST_f_f (rint, 0.5, 0.0);
12409 TEST_f_f (rint, 0.0, 0.0);
12410 TEST_f_f (rint, minus_zero, minus_zero);
12411 TEST_f_f (rint, -0.5, -0.0);
12412 TEST_f_f (rint, -1.0, -1.0);
12413 TEST_f_f (rint, -1.5, -1.0);
12414 TEST_f_f (rint, -2.0, -2.0);
12415 TEST_f_f (rint, 0.1, 0.0);
12416 TEST_f_f (rint, 0.25, 0.0);
12417 TEST_f_f (rint, 0.625, 0.0);
12418 TEST_f_f (rint, -0.1, -0.0);
12419 TEST_f_f (rint, -0.25, -0.0);
12420 TEST_f_f (rint, -0.625, -0.0);
fe45ce09
JM
12421 TEST_f_f (rint, 1048576.75, 1048576.0);
12422 TEST_f_f (rint, 2097152.75, 2097152.0);
12423 TEST_f_f (rint, -1048576.75, -1048576.0);
12424 TEST_f_f (rint, -2097152.75, -2097152.0);
12425#ifndef TEST_FLOAT
12426 TEST_f_f (rint, 70368744177664.75, 70368744177664.0);
12427 TEST_f_f (rint, 140737488355328.75, 140737488355328.0);
12428 TEST_f_f (rint, 281474976710656.75, 281474976710656.0);
12429 TEST_f_f (rint, 562949953421312.75, 562949953421312.0);
12430 TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0);
12431 TEST_f_f (rint, -70368744177664.75, -70368744177664.0);
12432 TEST_f_f (rint, -140737488355328.75, -140737488355328.0);
12433 TEST_f_f (rint, -281474976710656.75, -281474976710656.0);
12434 TEST_f_f (rint, -562949953421312.75, -562949953421312.0);
12435 TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0);
12436#endif
5c68d401 12437#ifdef TEST_LDOUBLE
830fce04
RM
12438 /* The result can only be represented in long double. */
12439 TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L);
12440 TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L);
12441 TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L);
12442 TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L);
12443 TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L);
5c68d401 12444# if LDBL_MANT_DIG > 100
830fce04
RM
12445 TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L);
12446 TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L);
12447 TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L);
5c68d401 12448# endif
830fce04
RM
12449 TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L);
12450 TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L);
12451 TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L);
12452 TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L);
12453 TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L);
5c68d401 12454# if LDBL_MANT_DIG > 100
830fce04
RM
12455 TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L);
12456 TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L);
12457 TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L);
12458
12459 TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L);
12460 TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L);
12461 TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L);
12462 TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L);
12463 TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L);
12464 TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L);
12465
12466 TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L);
12467 TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L);
12468 TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L);
12469 TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L);
12470 TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L);
12471 TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L);
5c68d401
RM
12472# endif
12473#endif
830fce04 12474 }
4d37c8aa 12475
830fce04 12476 fesetround (save_round_mode);
4d37c8aa
UD
12477
12478 END (rint_towardzero);
12479}
12480
12481static void
12482rint_test_downward (void)
12483{
12484 int save_round_mode;
12485 START (rint_downward);
12486
830fce04 12487 save_round_mode = fegetround ();
4d37c8aa
UD
12488
12489 if (!fesetround (FE_DOWNWARD))
830fce04
RM
12490 {
12491 TEST_f_f (rint, 2.0, 2.0);
12492 TEST_f_f (rint, 1.5, 1.0);
12493 TEST_f_f (rint, 1.0, 1.0);
12494 TEST_f_f (rint, 0.5, 0.0);
12495 TEST_f_f (rint, 0.0, 0.0);
12496 TEST_f_f (rint, minus_zero, minus_zero);
12497 TEST_f_f (rint, -0.5, -1.0);
12498 TEST_f_f (rint, -1.0, -1.0);
12499 TEST_f_f (rint, -1.5, -2.0);
12500 TEST_f_f (rint, -2.0, -2.0);
12501 TEST_f_f (rint, 0.1, 0.0);
12502 TEST_f_f (rint, 0.25, 0.0);
12503 TEST_f_f (rint, 0.625, 0.0);
12504 TEST_f_f (rint, -0.1, -1.0);
12505 TEST_f_f (rint, -0.25, -1.0);
12506 TEST_f_f (rint, -0.625, -1.0);
fe45ce09
JM
12507 TEST_f_f (rint, 1048576.75, 1048576.0);
12508 TEST_f_f (rint, 2097152.75, 2097152.0);
12509 TEST_f_f (rint, -1048576.75, -1048577.0);
12510 TEST_f_f (rint, -2097152.75, -2097153.0);
12511#ifndef TEST_FLOAT
12512 TEST_f_f (rint, 70368744177664.75, 70368744177664.0);
12513 TEST_f_f (rint, 140737488355328.75, 140737488355328.0);
12514 TEST_f_f (rint, 281474976710656.75, 281474976710656.0);
12515 TEST_f_f (rint, 562949953421312.75, 562949953421312.0);
12516 TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0);
12517 TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
12518 TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
12519 TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
12520 TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
12521 TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
12522#endif
5c68d401 12523#ifdef TEST_LDOUBLE
830fce04
RM
12524 /* The result can only be represented in long double. */
12525 TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L);
12526 TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L);
12527 TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L);
12528 TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L);
12529 TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L);
5c68d401 12530# if LDBL_MANT_DIG > 100
830fce04
RM
12531 TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L);
12532 TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L);
12533 TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L);
5c68d401 12534# endif
830fce04
RM
12535 TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L);
12536 TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L);
12537 TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L);
12538 TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L);
12539 TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L);
5c68d401 12540# if LDBL_MANT_DIG > 100
830fce04
RM
12541 TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L);
12542 TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L);
12543 TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L);
12544
12545 TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L);
12546 TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L);
12547 TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L);
12548 TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L);
12549 TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L);
12550 TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L);
12551
12552 TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L);
12553 TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L);
12554 TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L);
12555 TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L);
12556 TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L);
12557 TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L);
5c68d401
RM
12558# endif
12559#endif
830fce04 12560 }
4d37c8aa 12561
830fce04 12562 fesetround (save_round_mode);
4d37c8aa
UD
12563
12564 END (rint_downward);
12565}
12566
12567static void
12568rint_test_upward (void)
12569{
12570 int save_round_mode;
12571 START (rint_upward);
12572
830fce04 12573 save_round_mode = fegetround ();
4d37c8aa
UD
12574
12575 if (!fesetround (FE_UPWARD))
830fce04
RM
12576 {
12577 TEST_f_f (rint, 2.0, 2.0);
12578 TEST_f_f (rint, 1.5, 2.0);
12579 TEST_f_f (rint, 1.0, 1.0);
12580 TEST_f_f (rint, 0.5, 1.0);
12581 TEST_f_f (rint, 0.0, 0.0);
12582 TEST_f_f (rint, minus_zero, minus_zero);
12583 TEST_f_f (rint, -0.5, -0.0);
12584 TEST_f_f (rint, -1.0, -1.0);
12585 TEST_f_f (rint, -1.5, -1.0);
12586 TEST_f_f (rint, -2.0, -2.0);
12587 TEST_f_f (rint, 0.1, 1.0);
12588 TEST_f_f (rint, 0.25, 1.0);
12589 TEST_f_f (rint, 0.625, 1.0);
12590 TEST_f_f (rint, -0.1, -0.0);
12591 TEST_f_f (rint, -0.25, -0.0);
12592 TEST_f_f (rint, -0.625, -0.0);
fe45ce09
JM
12593 TEST_f_f (rint, 1048576.75, 1048577.0);
12594 TEST_f_f (rint, 2097152.75, 2097153.0);
12595 TEST_f_f (rint, -1048576.75, -1048576.0);
12596 TEST_f_f (rint, -2097152.75, -2097152.0);
12597#ifndef TEST_FLOAT
12598 TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
12599 TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
12600 TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
12601 TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
12602 TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
12603 TEST_f_f (rint, -70368744177664.75, -70368744177664.0);
12604 TEST_f_f (rint, -140737488355328.75, -140737488355328.0);
12605 TEST_f_f (rint, -281474976710656.75, -281474976710656.0);
12606 TEST_f_f (rint, -562949953421312.75, -562949953421312.0);
12607 TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0);
12608#endif
5c68d401 12609#ifdef TEST_LDOUBLE
830fce04
RM
12610 /* The result can only be represented in long double. */
12611 TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
12612 TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L);
12613 TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L);
12614 TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L);
12615 TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L);
5c68d401 12616# if LDBL_MANT_DIG > 100
830fce04
RM
12617 TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L);
12618 TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L);
12619 TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L);
5c68d401 12620# endif
830fce04
RM
12621 TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L);
12622 TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L);
12623 TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L);
12624 TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L);
12625 TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L);
5c68d401 12626# if LDBL_MANT_DIG > 100
830fce04
RM
12627 TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L);
12628 TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L);
12629 TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L);
12630
12631 TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L);
12632 TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L);
12633 TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L);
12634 TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L);
12635 TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L);
12636 TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L);
12637
12638 TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L);
12639 TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L);
12640 TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L);
12641 TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L);
12642 TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L);
12643 TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L);
5c68d401
RM
12644# endif
12645#endif
830fce04 12646 }
4d37c8aa 12647
830fce04 12648 fesetround (save_round_mode);
4d37c8aa
UD
12649
12650 END (rint_upward);
12651}
12652
8847214f
UD
12653static void
12654round_test (void)
12655{
64d063b8
TS
12656 /* TODO: missing +/-Inf as well as qNaN tests. */
12657
8847214f
UD
12658 START (round);
12659
12660 TEST_f_f (round, 0, 0);
12661 TEST_f_f (round, minus_zero, minus_zero);
3c6cad26
UD
12662 TEST_f_f (round, 0.2L, 0.0);
12663 TEST_f_f (round, -0.2L, minus_zero);
8847214f
UD
12664 TEST_f_f (round, 0.5, 1.0);
12665 TEST_f_f (round, -0.5, -1.0);
3c6cad26
UD
12666 TEST_f_f (round, 0.8L, 1.0);
12667 TEST_f_f (round, -0.8L, -1.0);
8847214f
UD
12668 TEST_f_f (round, 1.5, 2.0);
12669 TEST_f_f (round, -1.5, -2.0);
5c68d401
RM
12670 TEST_f_f (round, 0.1, 0.0);
12671 TEST_f_f (round, 0.25, 0.0);
12672 TEST_f_f (round, 0.625, 1.0);
12673 TEST_f_f (round, -0.1, -0.0);
12674 TEST_f_f (round, -0.25, -0.0);
12675 TEST_f_f (round, -0.625, -1.0);
8847214f
UD
12676 TEST_f_f (round, 2097152.5, 2097153);
12677 TEST_f_f (round, -2097152.5, -2097153);
12678
f964490f
RM
12679#ifdef TEST_LDOUBLE
12680 /* The result can only be represented in long double. */
12681 TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L);
12682 TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L);
830fce04 12683 TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L);
f964490f 12684 TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L);
5c68d401
RM
12685 TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L);
12686# if LDBL_MANT_DIG > 100
12687 TEST_f_f (round, 4503599627370494.5000000000001L, 4503599627370495.0L);
12688 TEST_f_f (round, 4503599627370495.5000000000001L, 4503599627370496.0L);
12689 TEST_f_f (round, 4503599627370496.5000000000001L, 4503599627370497.0L);
12690# endif
f964490f 12691
830fce04
RM
12692 TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L);
12693 TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L);
f964490f 12694 TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L);
830fce04 12695 TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L);
f964490f 12696 TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L);
5c68d401
RM
12697# if LDBL_MANT_DIG > 100
12698 TEST_f_f (round, -4503599627370494.5000000000001L, -4503599627370495.0L);
12699 TEST_f_f (round, -4503599627370495.5000000000001L, -4503599627370496.0L);
12700 TEST_f_f (round, -4503599627370496.5000000000001L, -4503599627370497.0L);
12701# endif
f964490f
RM
12702
12703 TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L);
12704 TEST_f_f (round, 9007199254740992.25L, 9007199254740992.0L);
12705 TEST_f_f (round, 9007199254740992.5L, 9007199254740993.0L);
12706 TEST_f_f (round, 9007199254740992.75L, 9007199254740993.0L);
12707 TEST_f_f (round, 9007199254740993.5L, 9007199254740994.0L);
12708
12709 TEST_f_f (round, -9007199254740991.5L, -9007199254740992.0L);
12710 TEST_f_f (round, -9007199254740992.25L, -9007199254740992.0L);
12711 TEST_f_f (round, -9007199254740992.5L, -9007199254740993.0L);
12712 TEST_f_f (round, -9007199254740992.75L, -9007199254740993.0L);
12713 TEST_f_f (round, -9007199254740993.5L, -9007199254740994.0L);
12714
5c68d401
RM
12715# if LDBL_MANT_DIG > 100
12716 TEST_f_f (round, 9007199254740991.0000000000001L, 9007199254740991.0L);
12717 TEST_f_f (round, 9007199254740992.0000000000001L, 9007199254740992.0L);
12718 TEST_f_f (round, 9007199254740993.0000000000001L, 9007199254740993.0L);
12719 TEST_f_f (round, 9007199254740991.5000000000001L, 9007199254740992.0L);
12720 TEST_f_f (round, 9007199254740992.5000000000001L, 9007199254740993.0L);
12721 TEST_f_f (round, 9007199254740993.5000000000001L, 9007199254740994.0L);
12722
12723 TEST_f_f (round, -9007199254740991.0000000000001L, -9007199254740991.0L);
12724 TEST_f_f (round, -9007199254740992.0000000000001L, -9007199254740992.0L);
12725 TEST_f_f (round, -9007199254740993.0000000000001L, -9007199254740993.0L);
12726 TEST_f_f (round, -9007199254740991.5000000000001L, -9007199254740992.0L);
12727 TEST_f_f (round, -9007199254740992.5000000000001L, -9007199254740993.0L);
12728 TEST_f_f (round, -9007199254740993.5000000000001L, -9007199254740994.0L);
12729# endif
12730
f964490f
RM
12731 TEST_f_f (round, 72057594037927935.5L, 72057594037927936.0L);
12732 TEST_f_f (round, 72057594037927936.25L, 72057594037927936.0L);
12733 TEST_f_f (round, 72057594037927936.5L, 72057594037927937.0L);
12734 TEST_f_f (round, 72057594037927936.75L, 72057594037927937.0L);
12735 TEST_f_f (round, 72057594037927937.5L, 72057594037927938.0L);
12736
12737 TEST_f_f (round, -72057594037927935.5L, -72057594037927936.0L);
12738 TEST_f_f (round, -72057594037927936.25L, -72057594037927936.0L);
12739 TEST_f_f (round, -72057594037927936.5L, -72057594037927937.0L);
12740 TEST_f_f (round, -72057594037927936.75L, -72057594037927937.0L);
12741 TEST_f_f (round, -72057594037927937.5L, -72057594037927938.0L);
12742
12743 TEST_f_f (round, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L);
12744 TEST_f_f (round, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L);
12745 TEST_f_f (round, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L);
12746 TEST_f_f (round, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L);
12747 TEST_f_f (round, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L);
12748#endif
12749
8847214f
UD
12750 END (round);
12751}
12752
12753
12754static void
12755scalb_test (void)
12756{
12757
12758 START (scalb);
12759
67e971f1
TS
12760 TEST_ff_f (scalb, 2.0, 0.5, qnan_value, INVALID_EXCEPTION);
12761 TEST_ff_f (scalb, 3.0, -2.5, qnan_value, INVALID_EXCEPTION);
8847214f 12762
67e971f1
TS
12763 TEST_ff_f (scalb, 0, qnan_value, qnan_value);
12764 TEST_ff_f (scalb, 1, qnan_value, qnan_value);
8847214f
UD
12765
12766 TEST_ff_f (scalb, 1, 0, 1);
12767 TEST_ff_f (scalb, -1, 0, -1);
12768
67e971f1
TS
12769 TEST_ff_f (scalb, 0, plus_infty, qnan_value, INVALID_EXCEPTION);
12770 TEST_ff_f (scalb, minus_zero, plus_infty, qnan_value, INVALID_EXCEPTION);
8847214f
UD
12771
12772 TEST_ff_f (scalb, 0, 2, 0);
12773 TEST_ff_f (scalb, minus_zero, -4, minus_zero);
12774 TEST_ff_f (scalb, 0, 0, 0);
12775 TEST_ff_f (scalb, minus_zero, 0, minus_zero);
12776 TEST_ff_f (scalb, 0, -1, 0);
12777 TEST_ff_f (scalb, minus_zero, -10, minus_zero);
12778 TEST_ff_f (scalb, 0, minus_infty, 0);
12779 TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero);
12780
12781 TEST_ff_f (scalb, plus_infty, -1, plus_infty);
12782 TEST_ff_f (scalb, minus_infty, -10, minus_infty);
12783 TEST_ff_f (scalb, plus_infty, 0, plus_infty);
12784 TEST_ff_f (scalb, minus_infty, 0, minus_infty);
12785 TEST_ff_f (scalb, plus_infty, 2, plus_infty);
12786 TEST_ff_f (scalb, minus_infty, 100, minus_infty);
12787
3c6cad26
UD
12788 TEST_ff_f (scalb, 0.1L, minus_infty, 0.0);
12789 TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero);
8847214f
UD
12790
12791 TEST_ff_f (scalb, 1, plus_infty, plus_infty);
12792 TEST_ff_f (scalb, -1, plus_infty, minus_infty);
12793 TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty);
12794 TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty);
12795
67e971f1
TS
12796 TEST_ff_f (scalb, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION);
12797 TEST_ff_f (scalb, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION);
8847214f 12798
67e971f1
TS
12799 TEST_ff_f (scalb, qnan_value, 1, qnan_value);
12800 TEST_ff_f (scalb, 1, qnan_value, qnan_value);
12801 TEST_ff_f (scalb, qnan_value, 0, qnan_value);
12802 TEST_ff_f (scalb, 0, qnan_value, qnan_value);
12803 TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value);
12804 TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value);
12805 TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value);
8847214f
UD
12806
12807 TEST_ff_f (scalb, 0.8L, 4, 12.8L);
12808 TEST_ff_f (scalb, -0.854375L, 5, -27.34L);
12809
12810 END (scalb);
12811}
12812
12813
12814static void
12815scalbn_test (void)
12816{
12817
12818 START (scalbn);
12819
12820 TEST_fi_f (scalbn, 0, 0, 0);
12821 TEST_fi_f (scalbn, minus_zero, 0, minus_zero);
12822
12823 TEST_fi_f (scalbn, plus_infty, 1, plus_infty);
12824 TEST_fi_f (scalbn, minus_infty, 1, minus_infty);
67e971f1 12825 TEST_fi_f (scalbn, qnan_value, 1, qnan_value);
8847214f
UD
12826
12827 TEST_fi_f (scalbn, 0.8L, 4, 12.8L);
12828 TEST_fi_f (scalbn, -0.854375L, 5, -27.34L);
12829
12830 TEST_fi_f (scalbn, 1, 0L, 1);
12831
c135cc1b 12832 TEST_fi_f (scalbn, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12833 TEST_fi_f (scalbn, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12834 TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12835 TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12836 TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12837 TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12838 TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12839 TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
a6d06d7b 12840
8847214f
UD
12841 END (scalbn);
12842}
12843
2550dfe9 12844
8847214f
UD
12845static void
12846scalbln_test (void)
12847{
12848
12849 START (scalbln);
12850
12851 TEST_fl_f (scalbln, 0, 0, 0);
12852 TEST_fl_f (scalbln, minus_zero, 0, minus_zero);
12853
12854 TEST_fl_f (scalbln, plus_infty, 1, plus_infty);
12855 TEST_fl_f (scalbln, minus_infty, 1, minus_infty);
67e971f1 12856 TEST_fl_f (scalbln, qnan_value, 1, qnan_value);
8847214f
UD
12857
12858 TEST_fl_f (scalbln, 0.8L, 4, 12.8L);
12859 TEST_fl_f (scalbln, -0.854375L, 5, -27.34L);
12860
12861 TEST_fl_f (scalbln, 1, 0L, 1);
12862
c135cc1b 12863 TEST_fi_f (scalbln, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12864 TEST_fi_f (scalbln, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12865 TEST_fi_f (scalbln, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12866 TEST_fi_f (scalbln, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12867 TEST_fi_f (scalbln, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12868 TEST_fi_f (scalbln, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12869 TEST_fi_f (scalbln, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12870 TEST_fi_f (scalbln, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
a6d06d7b 12871
c135cc1b 12872 TEST_fi_f (scalbln, 1, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12873 TEST_fi_f (scalbln, 1, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12874 TEST_fi_f (scalbln, max_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12875 TEST_fi_f (scalbln, max_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12876 TEST_fi_f (scalbln, min_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12877 TEST_fi_f (scalbln, min_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12878 TEST_fi_f (scalbln, min_value / 4, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12879 TEST_fi_f (scalbln, min_value / 4, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
a6d06d7b
JM
12880
12881#if LONG_MAX >= 0x100000000
c135cc1b 12882 TEST_fi_f (scalbln, 1, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12883 TEST_fi_f (scalbln, 1, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12884 TEST_fi_f (scalbln, max_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12885 TEST_fi_f (scalbln, max_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12886 TEST_fi_f (scalbln, min_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12887 TEST_fi_f (scalbln, min_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
c135cc1b 12888 TEST_fi_f (scalbln, min_value / 4, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
80bad0cc 12889 TEST_fi_f (scalbln, min_value / 4, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
a6d06d7b
JM
12890#endif
12891
8847214f
UD
12892 END (scalbn);
12893}
12894
2550dfe9 12895
8847214f
UD
12896static void
12897signbit_test (void)
12898{
64d063b8 12899 /* TODO: missing qNaN tests. */
8847214f
UD
12900
12901 START (signbit);
12902
12903 TEST_f_b (signbit, 0, 0);
12904 TEST_f_b (signbit, minus_zero, 1);
12905 TEST_f_b (signbit, plus_infty, 0);
12906 TEST_f_b (signbit, minus_infty, 1);
12907
12908 /* signbit (x) != 0 for x < 0. */
12909 TEST_f_b (signbit, -1, 1);
12910 /* signbit (x) == 0 for x >= 0. */
12911 TEST_f_b (signbit, 1, 0);
12912
12913 END (signbit);
12914}
12915
2550dfe9 12916
8847214f
UD
12917static void
12918sin_test (void)
12919{
e6d3c4a7
AJ
12920 errno = 0;
12921 FUNC(sin) (0);
12922 if (errno == ENOSYS)
12923 /* Function not implemented. */
12924 return;
12925
8847214f
UD
12926 START (sin);
12927
12928 TEST_f_f (sin, 0, 0);
12929 TEST_f_f (sin, minus_zero, minus_zero);
f2da7793
JM
12930 TEST_f_f (sin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12931 TEST_f_f (sin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
12932 TEST_f_f (sin, qnan_value, qnan_value, ERRNO_UNCHANGED);
8847214f
UD
12933
12934 TEST_f_f (sin, M_PI_6l, 0.5);
12935 TEST_f_f (sin, -M_PI_6l, -0.5);
12936 TEST_f_f (sin, M_PI_2l, 1);
12937 TEST_f_f (sin, -M_PI_2l, -1);
2550dfe9 12938 TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L);
8847214f 12939
ea40808a
AJ
12940 TEST_f_f (sin, 0x1p65, -0.047183876212354673805106149805700013943218L);
12941 TEST_f_f (sin, -0x1p65, 0.047183876212354673805106149805700013943218L);
8c0247db 12942
7a845b2c
JM
12943 TEST_f_f (sin, 0x1.7f4134p+103, -6.6703229329788657073304190650534846045235e-08L);
12944
d32e4346
RM
12945#ifdef TEST_DOUBLE
12946 TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868);
cb95113e 12947 TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1);
8848d99d
JM
12948#endif
12949
12950#ifndef TEST_FLOAT
12951 TEST_f_f (sin, 1e22, -0.8522008497671888017727058937530293682618L);
12952 TEST_f_f (sin, 0x1p1023, 0.5631277798508840134529434079444683477104L);
12953#endif
12954
12955#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
12956 TEST_f_f (sin, 0x1p16383L, 0.3893629985894208126948115852610595405563L);
d32e4346
RM
12957#endif
12958
4ffffbd2
LD
12959 TEST_f_f (sin, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L);
12960 TEST_f_f (sin, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L);
12961 TEST_f_f (sin, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L);
12962 TEST_f_f (sin, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L);
12963 TEST_f_f (sin, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L);
12964 TEST_f_f (sin, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L);
12965
8847214f
UD
12966 END (sin);
12967
12968}
12969
2550dfe9 12970
804360ed
JM
12971static void
12972sin_test_tonearest (void)
12973{
12974 int save_round_mode;
12975 errno = 0;
12976 FUNC(sin) (0);
12977 if (errno == ENOSYS)
12978 /* Function not implemented. */
12979 return;
12980
12981 START (sin_tonearest);
12982
12983 save_round_mode = fegetround ();
12984
12985 if (!fesetround (FE_TONEAREST))
12986 {
12987 TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L);
12988 TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L);
12989 TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L);
12990 TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L);
12991 TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L);
12992 TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L);
12993 TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L);
12994 TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L);
12995 TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L);
12996 TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L);
12997 }
12998
12999 fesetround (save_round_mode);
13000
13001 END (sin_tonearest);
13002}
13003
13004
13005static void
13006sin_test_towardzero (void)
13007{
13008 int save_round_mode;
13009 errno = 0;
13010 FUNC(sin) (0);
13011 if (errno == ENOSYS)
13012 /* Function not implemented. */
13013 return;
13014
13015 START (sin_towardzero);
13016
13017 save_round_mode = fegetround ();
13018
13019 if (!fesetround (FE_TOWARDZERO))
13020 {
13021 TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L);
13022 TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L);
13023 TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L);
13024 TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L);
13025 TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L);
13026 TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L);
13027 TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L);
13028 TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L);
13029 TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L);
13030 TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L);
13031 }
13032
13033 fesetround (save_round_mode);
13034
13035 END (sin_towardzero);
13036}
13037
13038
13039static void
13040sin_test_downward (void)
13041{
13042 int save_round_mode;
13043 errno = 0;
13044 FUNC(sin) (0);
13045 if (errno == ENOSYS)
13046 /* Function not implemented. */
13047 return;
13048
13049 START (sin_downward);
13050
13051 save_round_mode = fegetround ();
13052
13053 if (!fesetround (FE_DOWNWARD))
13054 {
13055 TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L);
13056 TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L);
13057 TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L);
13058 TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L);
13059 TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L);
13060 TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L);
13061 TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L);
13062 TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L);
13063 TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L);
13064 TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L);
13065 }
13066
13067 fesetround (save_round_mode);
13068
13069 END (sin_downward);
13070}
13071
13072
13073static void
13074sin_test_upward (void)
13075{
13076 int save_round_mode;
13077 errno = 0;
13078 FUNC(sin) (0);
13079 if (errno == ENOSYS)
13080 /* Function not implemented. */
13081 return;
13082
13083 START (sin_upward);
13084
13085 save_round_mode = fegetround ();
13086
13087 if (!fesetround (FE_UPWARD))
13088 {
13089 TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L);
13090 TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L);
13091 TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L);
13092 TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L);
13093 TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L);
13094 TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L);
13095 TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L);
13096 TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L);
13097 TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L);
13098 TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L);
13099 }
13100
13101 fesetround (save_round_mode);
13102
13103 END (sin_upward);
13104}
13105
13106
8847214f
UD
13107static void
13108sincos_test (void)
13109{
13110 FLOAT sin_res, cos_res;
13111
aaca11d8
UD
13112 errno = 0;
13113 FUNC(sincos) (0, &sin_res, &cos_res);
13114 if (errno == ENOSYS)
13115 /* Function not implemented. */
13116 return;
13117
8847214f
UD
13118 START (sincos);
13119
13120 /* sincos is treated differently because it returns void. */
13121 TEST_extra (sincos, 0, 0, 1);
13122
13123 TEST_extra (sincos, minus_zero, minus_zero, 1);
67e971f1
TS
13124 TEST_extra (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13125 TEST_extra (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13126 TEST_extra (sincos, qnan_value, qnan_value, qnan_value);
8847214f 13127
aba5e333
CD
13128 /* The value of M_PI_2l is never exactly PI/2, and therefore the
13129 answer is never exactly zero. The answer is equal to the error
13130 in rounding PI/2 for the type used. Thus the answer is unique
13131 to each type. */
13132#ifdef TEST_FLOAT
13133 /* 32-bit float. */
418601aa 13134 TEST_extra (sincos, M_PI_2l, 1, -0x1.777a5cp-25L);
aba5e333
CD
13135#endif
13136#if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
13137 /* 64-bit double or 64-bit long double. */
418601aa 13138 TEST_extra (sincos, M_PI_2l, 1, 0x1.1a62633145c07p-54L);
aba5e333
CD
13139#endif
13140#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
13141 /* 96-bit long double. */
418601aa 13142 TEST_extra (sincos, M_PI_2l, 1, -0xe.ce675d1fc8f8cbbp-69L);
aba5e333
CD
13143#endif
13144#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
13145 /* 128-bit IBM long double. */
418601aa 13146 TEST_extra (sincos, M_PI_2l, 1, 0x1.c1cd129024e088a67cc74020bcp-107L);
aba5e333
CD
13147#endif
13148#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
13149 /* 128-bit long double. */
418601aa 13150 TEST_extra (sincos, M_PI_2l, 1, 0x1.cd129024e088a67cc74020bbea64p-115L);
aba5e333
CD
13151#endif
13152
3c6cad26
UD
13153 TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);
13154 TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5);
2550dfe9 13155 TEST_extra (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L);
8847214f 13156
ea40808a
AJ
13157 TEST_extra (sincos, 0x1p65, -0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13158 TEST_extra (sincos, -0x1p65, 0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
8c0247db 13159
d32e4346
RM
13160#ifdef TEST_DOUBLE
13161 TEST_extra (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473);
8848d99d
JM
13162#endif
13163
13164#ifndef TEST_FLOAT
13165 TEST_extra (sincos, 1e22, -0.8522008497671888017727058937530293682618L, 0.5232147853951389454975944733847094921409L);
13166 TEST_extra (sincos, 0x1p1023, 0.5631277798508840134529434079444683477104L, -0.826369834614147994500785680811743734805L);
13167#endif
13168
13169#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13170 TEST_extra (sincos, 0x1p16383L, 0.3893629985894208126948115852610595405563L, 0.9210843909921906206874509522505756251609L);
d32e4346
RM
13171#endif
13172
4ffffbd2
LD
13173 TEST_extra (sincos, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L, -9.25879022854837867303861764107414946730833e-01L);
13174 TEST_extra (sincos, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L, 7.81914638714960072263910298466369236613162e-01L);
13175 TEST_extra (sincos, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L, 9.98819362551949040703862043664101081064641e-01L);
13176 TEST_extra (sincos, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L, 8.53021039830304158051791467692161107353094e-01L);
13177 TEST_extra (sincos, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L, 8.68095904660550604334592502063501320395739e-01L);
13178 TEST_extra (sincos, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L, -1.65568979490578758865468278195361551113358e-01L);
13179
8847214f
UD
13180 END (sincos);
13181}
13182
13183static void
13184sinh_test (void)
13185{
aaca11d8 13186 errno = 0;
3c6cad26 13187 FUNC(sinh) (0.7L);
aaca11d8
UD
13188 if (errno == ENOSYS)
13189 /* Function not implemented. */
13190 return;
13191
8847214f
UD
13192 START (sinh);
13193 TEST_f_f (sinh, 0, 0);
13194 TEST_f_f (sinh, minus_zero, minus_zero);
13195
15daa639 13196#ifndef TEST_INLINE
8847214f
UD
13197 TEST_f_f (sinh, plus_infty, plus_infty);
13198 TEST_f_f (sinh, minus_infty, minus_infty);
15daa639 13199#endif
67e971f1 13200 TEST_f_f (sinh, qnan_value, qnan_value);
8847214f 13201
2550dfe9 13202 TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L);
c9bfaa1b 13203 TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L);
30e5dcb7 13204
8847214f
UD
13205 END (sinh);
13206}
13207
ca811b22
JM
13208
13209static void
13210sinh_test_tonearest (void)
13211{
13212 int save_round_mode;
13213 errno = 0;
13214 FUNC(sinh) (0);
13215 if (errno == ENOSYS)
13216 /* Function not implemented. */
13217 return;
13218
13219 START (sinh_tonearest);
13220
13221 save_round_mode = fegetround ();
13222
13223 if (!fesetround (FE_TONEAREST))
13224 {
13225 TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L);
13226 TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L);
13227 TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L);
13228 }
13229
13230 fesetround (save_round_mode);
13231
13232 END (sinh_tonearest);
13233}
13234
13235
13236static void
13237sinh_test_towardzero (void)
13238{
13239 int save_round_mode;
13240 errno = 0;
13241 FUNC(sinh) (0);
13242 if (errno == ENOSYS)
13243 /* Function not implemented. */
13244 return;
13245
13246 START (sinh_towardzero);
13247
13248 save_round_mode = fegetround ();
13249
13250 if (!fesetround (FE_TOWARDZERO))
13251 {
13252 TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L);
13253 TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L);
13254 TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L);
13255 }
13256
13257 fesetround (save_round_mode);
13258
13259 END (sinh_towardzero);
13260}
13261
13262
13263static void
13264sinh_test_downward (void)
13265{
13266 int save_round_mode;
13267 errno = 0;
13268 FUNC(sinh) (0);
13269 if (errno == ENOSYS)
13270 /* Function not implemented. */
13271 return;
13272
13273 START (sinh_downward);
13274
13275 save_round_mode = fegetround ();
13276
13277 if (!fesetround (FE_DOWNWARD))
13278 {
13279 TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L);
13280 TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L);
13281 TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L);
13282 }
13283
13284 fesetround (save_round_mode);
13285
13286 END (sinh_downward);
13287}
13288
13289
13290static void
13291sinh_test_upward (void)
13292{
13293 int save_round_mode;
13294 errno = 0;
13295 FUNC(sinh) (0);
13296 if (errno == ENOSYS)
13297 /* Function not implemented. */
13298 return;
13299
13300 START (sinh_upward);
13301
13302 save_round_mode = fegetround ();
13303
13304 if (!fesetround (FE_UPWARD))
13305 {
13306 TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L);
13307 TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L);
13308 TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L);
13309 }
13310
13311 fesetround (save_round_mode);
13312
13313 END (sinh_upward);
13314}
13315
13316
8847214f
UD
13317static void
13318sqrt_test (void)
13319{
e6d3c4a7
AJ
13320 errno = 0;
13321 FUNC(sqrt) (1);
13322 if (errno == ENOSYS)
13323 /* Function not implemented. */
13324 return;
13325
8847214f
UD
13326 START (sqrt);
13327
13328 TEST_f_f (sqrt, 0, 0);
67e971f1 13329 TEST_f_f (sqrt, qnan_value, qnan_value);
8847214f
UD
13330 TEST_f_f (sqrt, plus_infty, plus_infty);
13331
13332 TEST_f_f (sqrt, minus_zero, minus_zero);
13333
67e971f1
TS
13334 /* sqrt (x) == qNaN plus invalid exception for x < 0. */
13335 TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION);
13336 TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION);
13337 TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION);
8847214f
UD
13338
13339 TEST_f_f (sqrt, 2209, 47);
13340 TEST_f_f (sqrt, 4, 2);
13341 TEST_f_f (sqrt, 2, M_SQRT2l);
13342 TEST_f_f (sqrt, 0.25, 0.5);
13343 TEST_f_f (sqrt, 6642.25, 81.5);
2550dfe9
AJ
13344 TEST_f_f (sqrt, 15190.5625L, 123.25L);
13345 TEST_f_f (sqrt, 0.75L, 0.866025403784438646763723170752936183L);
8847214f
UD
13346
13347 END (sqrt);
13348}
13349
2550dfe9 13350
8847214f
UD
13351static void
13352tan_test (void)
13353{
e6d3c4a7
AJ
13354 errno = 0;
13355 FUNC(tan) (0);
13356 if (errno == ENOSYS)
13357 /* Function not implemented. */
13358 return;
13359
8847214f
UD
13360 START (tan);
13361
13362 TEST_f_f (tan, 0, 0);
13363 TEST_f_f (tan, minus_zero, minus_zero);
f2da7793
JM
13364 TEST_f_f (tan, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
13365 TEST_f_f (tan, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM);
13366 TEST_f_f (tan, qnan_value, qnan_value, ERRNO_UNCHANGED);
8847214f 13367
9ad63c23 13368 TEST_f_f (tan, M_PI_4l, 1);
2550dfe9 13369 TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L);
8847214f 13370
ea40808a
AJ
13371 TEST_f_f (tan, 0x1p65, -0.0472364872359047946798414219288370688827L);
13372 TEST_f_f (tan, -0x1p65, 0.0472364872359047946798414219288370688827L);
11b90b9f 13373
9ad63c23
JM
13374 TEST_f_f (tan, 0xc.9p-4, 0.9995162902115457818029468900654150261381L);
13375 TEST_f_f (tan, 0xc.908p-4, 0.9997603425502441410973077452249560802034L);
13376 TEST_f_f (tan, 0xc.90cp-4, 0.9998823910588060302788513970802357770031L);
13377 TEST_f_f (tan, 0xc.90ep-4, 0.9999434208994808753305784795924711152508L);
13378 TEST_f_f (tan, 0xc.90fp-4, 0.9999739372166156702433266059635165160515L);
13379 TEST_f_f (tan, 0xc.90f8p-4, 0.9999891957244072765118898375645469865764L);
13380 TEST_f_f (tan, 0xc.90fcp-4, 0.9999968250656122402859679132395522927393L);
13381 TEST_f_f (tan, 0xc.90fdp-4, 0.9999987324100083358016192309006353329444L);
13382 TEST_f_f (tan, 0xc.90fd8p-4, 0.9999996860835706212861509874451585282616L);
13383 TEST_f_f (tan, 0xc.90fdap-4, 0.9999999245021033010474530133665235922808L);
13384 TEST_f_f (tan, 0xc.ap-4, 1.0073556597407272165371804539701396631519L);
13385 TEST_f_f (tan, 0xc.98p-4, 1.0034282930863044654045449407466962736255L);
13386 TEST_f_f (tan, 0xc.94p-4, 1.0014703786820082237342656561856877993328L);
13387 TEST_f_f (tan, 0xc.92p-4, 1.0004928571392300571266638743539017593717L);
13388 TEST_f_f (tan, 0xc.91p-4, 1.0000044544650244953647966900221905361131L);
13389 TEST_f_f (tan, 0xc.90fep-4, 1.0000006397580424009014454926842136804016L);
13390 TEST_f_f (tan, 0xc.90fdcp-4, 1.0000001629206928242190327320047489394217L);
13391 TEST_f_f (tan, 0xc.90fdbp-4, 1.0000000437113909572052640953950483705005L);
13392
13393 TEST_f_f (tan, -0xc.9p-4, -0.9995162902115457818029468900654150261381L);
13394 TEST_f_f (tan, -0xc.908p-4, -0.9997603425502441410973077452249560802034L);
13395 TEST_f_f (tan, -0xc.90cp-4, -0.9998823910588060302788513970802357770031L);
13396 TEST_f_f (tan, -0xc.90ep-4, -0.9999434208994808753305784795924711152508L);
13397 TEST_f_f (tan, -0xc.90fp-4, -0.9999739372166156702433266059635165160515L);
13398 TEST_f_f (tan, -0xc.90f8p-4, -0.9999891957244072765118898375645469865764L);
13399 TEST_f_f (tan, -0xc.90fcp-4, -0.9999968250656122402859679132395522927393L);
13400 TEST_f_f (tan, -0xc.90fdp-4, -0.9999987324100083358016192309006353329444L);
13401 TEST_f_f (tan, -0xc.90fd8p-4, -0.9999996860835706212861509874451585282616L);
13402 TEST_f_f (tan, -0xc.90fdap-4, -0.9999999245021033010474530133665235922808L);
13403 TEST_f_f (tan, -0xc.ap-4, -1.0073556597407272165371804539701396631519L);
13404 TEST_f_f (tan, -0xc.98p-4, -1.0034282930863044654045449407466962736255L);
13405 TEST_f_f (tan, -0xc.94p-4, -1.0014703786820082237342656561856877993328L);
13406 TEST_f_f (tan, -0xc.92p-4, -1.0004928571392300571266638743539017593717L);
13407 TEST_f_f (tan, -0xc.91p-4, -1.0000044544650244953647966900221905361131L);
13408 TEST_f_f (tan, -0xc.90fep-4, -1.0000006397580424009014454926842136804016L);
13409 TEST_f_f (tan, -0xc.90fdcp-4, -1.0000001629206928242190327320047489394217L);
13410 TEST_f_f (tan, -0xc.90fdbp-4, -1.0000000437113909572052640953950483705005L);
13411
11b90b9f
JM
13412#ifndef TEST_FLOAT
13413 TEST_f_f (tan, 1e22, -1.628778225606898878549375936939548513545L);
13414 TEST_f_f (tan, 0x1p1023, -0.6814476476066215012854144040167365190368L);
13415#endif
13416
13417#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13418 TEST_f_f (tan, 0x1p16383L, 0.422722393732022337800504160054440141575L);
ee010c9e
AJ
13419#endif
13420
8847214f
UD
13421 END (tan);
13422}
13423
804360ed
JM
13424
13425static void
13426tan_test_tonearest (void)
13427{
13428 int save_round_mode;
13429 errno = 0;
13430 FUNC(tan) (0);
13431 if (errno == ENOSYS)
13432 /* Function not implemented. */
13433 return;
13434
13435 START (tan_tonearest);
13436
13437 save_round_mode = fegetround ();
13438
13439 if (!fesetround (FE_TONEAREST))
13440 {
13441 TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L);
13442 TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L);
13443 TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L);
13444 TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L);
13445 TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L);
13446 TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L);
13447 TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L);
13448 TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L);
13449 TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L);
13450 TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L);
13451 }
13452
13453 fesetround (save_round_mode);
13454
13455 END (tan_tonearest);
13456}
13457
13458
13459static void
13460tan_test_towardzero (void)
13461{
13462 int save_round_mode;
13463 errno = 0;
13464 FUNC(tan) (0);
13465 if (errno == ENOSYS)
13466 /* Function not implemented. */
13467 return;
13468
13469 START (tan_towardzero);
13470
13471 save_round_mode = fegetround ();
13472
13473 if (!fesetround (FE_TOWARDZERO))
13474 {
13475 TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L);
13476 TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L);
13477 TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L);
13478 TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L);
13479 TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L);
13480 TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L);
13481 TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L);
13482 TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L);
13483 TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L);
13484 TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L);
13485 }
13486
13487 fesetround (save_round_mode);
13488
13489 END (tan_towardzero);
13490}
13491
13492
13493static void
13494tan_test_downward (void)
13495{
13496 int save_round_mode;
13497 errno = 0;
13498 FUNC(tan) (0);
13499 if (errno == ENOSYS)
13500 /* Function not implemented. */
13501 return;
13502
13503 START (tan_downward);
13504
13505 save_round_mode = fegetround ();
13506
13507 if (!fesetround (FE_DOWNWARD))
13508 {
13509 TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L);
13510 TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L);
13511 TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L);
13512 TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L);
13513 TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L);
13514 TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L);
13515 TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L);
13516 TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L);
13517 TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L);
13518 TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L);
13519 }
13520
13521 fesetround (save_round_mode);
13522
13523 END (tan_downward);
13524}
13525
13526
13527static void
13528tan_test_upward (void)
13529{
13530 int save_round_mode;
13531 errno = 0;
13532 FUNC(tan) (0);
13533 if (errno == ENOSYS)
13534 /* Function not implemented. */
13535 return;
13536
13537 START (tan_upward);
13538
13539 save_round_mode = fegetround ();
13540
13541 if (!fesetround (FE_UPWARD))
13542 {
13543 TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L);
13544 TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L);
13545 TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L);
13546 TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L);
13547 TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L);
13548 TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L);
13549 TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L);
13550 TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L);
13551 TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L);
13552 TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L);
13553 }
13554
13555 fesetround (save_round_mode);
13556
13557 END (tan_upward);
13558}
13559
13560
8847214f
UD
13561static void
13562tanh_test (void)
13563{
aaca11d8 13564 errno = 0;
3c6cad26 13565 FUNC(tanh) (0.7L);
aaca11d8
UD
13566 if (errno == ENOSYS)
13567 /* Function not implemented. */
13568 return;
13569
8847214f
UD
13570 START (tanh);
13571
13572 TEST_f_f (tanh, 0, 0);
13573 TEST_f_f (tanh, minus_zero, minus_zero);
13574
15daa639 13575#ifndef TEST_INLINE
8847214f
UD
13576 TEST_f_f (tanh, plus_infty, 1);
13577 TEST_f_f (tanh, minus_infty, -1);
15daa639 13578#endif
67e971f1 13579 TEST_f_f (tanh, qnan_value, qnan_value);
8847214f 13580
2550dfe9
AJ
13581 TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L);
13582 TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L);
3eab00bd
AJ
13583
13584 TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L);
13585 TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L);
8847214f 13586
30e5dcb7 13587 /* 2^-57 */
2550dfe9 13588 TEST_f_f (tanh, 0x1p-57L, 6.938893903907228377647697925567626953125e-18L);
30e5dcb7 13589
8847214f
UD
13590 END (tanh);
13591}
13592
13593static void
13594tgamma_test (void)
13595{
13596 errno = 0;
13597 FUNC(tgamma) (1);
13598 if (errno == ENOSYS)
13599 /* Function not implemented. */
13600 return;
8847214f
UD
13601
13602 START (tgamma);
13603
13604 TEST_f_f (tgamma, plus_infty, plus_infty);
41bf21a1 13605 TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION);
52495f29
UD
13606 TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
13607 TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
67e971f1
TS
13608 /* tgamma (x) == qNaN plus invalid exception for integer x <= 0. */
13609 TEST_f_f (tgamma, -2, qnan_value, INVALID_EXCEPTION);
13610 TEST_f_f (tgamma, -max_value, qnan_value, INVALID_EXCEPTION);
13611 TEST_f_f (tgamma, minus_infty, qnan_value, INVALID_EXCEPTION);
13612 TEST_f_f (tgamma, qnan_value, qnan_value);
8847214f
UD
13613
13614 TEST_f_f (tgamma, 0.5, M_SQRT_PIl);
13615 TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl);
13616
13617 TEST_f_f (tgamma, 1, 1);
d8cd06db
JM
13618 TEST_f_f (tgamma, 2, 1);
13619 TEST_f_f (tgamma, 3, 2);
8847214f 13620 TEST_f_f (tgamma, 4, 6);
d8cd06db
JM
13621 TEST_f_f (tgamma, 5, 24);
13622 TEST_f_f (tgamma, 6, 120);
13623 TEST_f_f (tgamma, 7, 720);
13624 TEST_f_f (tgamma, 8, 5040);
13625 TEST_f_f (tgamma, 9, 40320);
13626 TEST_f_f (tgamma, 10, 362880);
8847214f 13627
79df8ce5
AJ
13628 TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L);
13629 TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L);
8847214f 13630
d8cd06db
JM
13631 TEST_f_f (tgamma, 1.5L, 8.8622692545275801364908374167057259139877e-01L);
13632 TEST_f_f (tgamma, 2.5L, 1.3293403881791370204736256125058588870982e+00L);
13633 TEST_f_f (tgamma, 3.5L, 3.3233509704478425511840640312646472177454e+00L);
13634 TEST_f_f (tgamma, 4.5L, 1.1631728396567448929144224109426265262109e+01L);
13635 TEST_f_f (tgamma, 5.5L, 5.2342777784553520181149008492418193679490e+01L);
13636 TEST_f_f (tgamma, 6.5L, 2.8788527781504436099631954670830006523720e+02L);
13637 TEST_f_f (tgamma, 7.5L, 1.8712543057977883464760770536039504240418e+03L);
13638 TEST_f_f (tgamma, 8.5L, 1.4034407293483412598570577902029628180313e+04L);
13639 TEST_f_f (tgamma, 9.5L, 1.1929246199460900708784991216725183953266e+05L);
13640 TEST_f_f (tgamma, -1.5L, 2.3632718012073547030642233111215269103967e+00L);
13641 TEST_f_f (tgamma, -2.5L, -9.4530872048294188122568932444861076415869e-01L);
13642 TEST_f_f (tgamma, -3.5L, 2.7008820585226910892162552127103164690248e-01L);
13643 TEST_f_f (tgamma, -4.5L, -6.0019601300504246427027893615784810422774e-02L);
13644 TEST_f_f (tgamma, -5.5L, 1.0912654781909862986732344293779056440504e-02L);
13645 TEST_f_f (tgamma, -6.5L, -1.6788699664476712287280529682737009908468e-03L);
13646 TEST_f_f (tgamma, -7.5L, 2.2384932885968949716374039576982679877958e-04L);
13647 TEST_f_f (tgamma, -8.5L, -2.6335215159963470254557693619979623385833e-05L);
13648 TEST_f_f (tgamma, -9.5L, 2.7721279115751021320587045915768024616666e-06L);
13649 TEST_f_f (tgamma, 0x1p-24L, 1.6777215422784394050795179874582764575261e+07L);
13650 TEST_f_f (tgamma, -0x1p-24L, -1.6777216577215723853867349114260580375249e+07L);
13651 TEST_f_f (tgamma, 0x1p-53L, 9.0071992547409914227843350984672492007618e+15L);
13652 TEST_f_f (tgamma, -0x1p-53L, -9.0071992547409925772156649015329704137860e+15L);
13653 TEST_f_f (tgamma, 0x1p-64L, 1.8446744073709551615422784335098467139447e+19L);
13654 TEST_f_f (tgamma, -0x1p-64L, -1.8446744073709551616577215664901532860660e+19L);
13655 TEST_f_f (tgamma, 0x1p-106L, 8.1129638414606681695789005144063422784335e+31L);
13656 TEST_f_f (tgamma, -0x1p-106L, -8.1129638414606681695789005144064577215665e+31L);
13657 TEST_f_f (tgamma, 0x1p-113L, 1.0384593717069655257060992658440191422784e+34L);
13658 TEST_f_f (tgamma, -0x1p-113L, -1.0384593717069655257060992658440192577216e+34L);
13659 TEST_f_f (tgamma, 0x1p-127L, 1.7014118346046923173168730371588410572742e+38L);
13660 TEST_f_f (tgamma, -0x1p-127L, -1.7014118346046923173168730371588410572858e+38L);
13661#ifdef TEST_FLOAT
13662 TEST_f_f (tgamma, 0x1p-128L, plus_infty, OVERFLOW_EXCEPTION);
13663 TEST_f_f (tgamma, -0x1p-128L, minus_infty, OVERFLOW_EXCEPTION);
13664 TEST_f_f (tgamma, 0x1p-149L, plus_infty, OVERFLOW_EXCEPTION);
13665 TEST_f_f (tgamma, -0x1p-149L, minus_infty, OVERFLOW_EXCEPTION);
13666#else
13667 TEST_f_f (tgamma, 0x1p-128L, 3.4028236692093846346337460743176821145542e+38L);
13668 TEST_f_f (tgamma, -0x1p-128L, -3.4028236692093846346337460743176821145658e+38L);
13669 TEST_f_f (tgamma, 0x1p-149L, 7.1362384635297994052914298472474756819137e+44L);
13670 TEST_f_f (tgamma, -0x1p-149L, -7.1362384635297994052914298472474756819137e+44L);
13671#endif
13672#ifndef TEST_FLOAT
13673 TEST_f_f (tgamma, 0x1p-1023L, 8.9884656743115795386465259539451236680899e+307L);
13674 TEST_f_f (tgamma, -0x1p-1023L, -8.9884656743115795386465259539451236680899e+307L);
13675# if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
13676 TEST_f_f (tgamma, 0x1p-1024L, plus_infty, OVERFLOW_EXCEPTION);
13677 TEST_f_f (tgamma, -0x1p-1024L, minus_infty, OVERFLOW_EXCEPTION);
13678 TEST_f_f (tgamma, 0x1p-1074L, plus_infty, OVERFLOW_EXCEPTION);
13679 TEST_f_f (tgamma, -0x1p-1074L, minus_infty, OVERFLOW_EXCEPTION);
13680# else
13681 TEST_f_f (tgamma, 0x1p-1024L, 1.7976931348623159077293051907890247336180e+308L);
13682 TEST_f_f (tgamma, -0x1p-1024L, -1.7976931348623159077293051907890247336180e+308L);
13683 TEST_f_f (tgamma, 0x1p-1074L, 2.0240225330731061835249534671891730704956e+323L);
13684 TEST_f_f (tgamma, -0x1p-1074L, -2.0240225330731061835249534671891730704956e+323L);
13685# endif
13686#endif
13687#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
13688 TEST_f_f (tgamma, 0x1p-16383L, 5.9486574767861588254287966331400356538172e+4931L);
13689 TEST_f_f (tgamma, -0x1p-16383L, -5.9486574767861588254287966331400356538172e+4931L);
13690 TEST_f_f (tgamma, 0x1p-16384L, plus_infty, OVERFLOW_EXCEPTION);
13691 TEST_f_f (tgamma, -0x1p-16384L, minus_infty, OVERFLOW_EXCEPTION);
13692 TEST_f_f (tgamma, 0x1p-16445L, plus_infty, OVERFLOW_EXCEPTION);
13693 TEST_f_f (tgamma, -0x1p-16445L, minus_infty, OVERFLOW_EXCEPTION);
13694# if LDBL_MANT_DIG >= 113
13695 TEST_f_f (tgamma, 0x1p-16494L, plus_infty, OVERFLOW_EXCEPTION);
13696 TEST_f_f (tgamma, -0x1p-16494L, minus_infty, OVERFLOW_EXCEPTION);
13697# endif
13698#endif
13699 TEST_f_f (tgamma, 0x8.00001p0L, 5.0400096882277802019946778420223050233915e+03L);
13700 TEST_f_f (tgamma, 0x7.fffff8p0L, 5.0399951558933225045148935487583089307135e+03L);
13701 TEST_f_f (tgamma, 0x7.000008p0L, 7.2000064296977505705636258629805621178587e+02L);
13702 TEST_f_f (tgamma, 0x6.fffff8p0L, 7.1999935703082425988147448928288557689866e+02L);
13703 TEST_f_f (tgamma, 0x6.000008p0L, 1.2000009762487825358530770343720418162783e+02L);
13704 TEST_f_f (tgamma, 0x5.fffff8p0L, 1.1999990237520611552119807476573441975106e+02L);
13705 TEST_f_f (tgamma, 0x5.000008p0L, 2.4000017236155647574166073485628713443799e+01L);
13706 TEST_f_f (tgamma, 0x4.fffff8p0L, 2.3999982763857938712639837029547357501709e+01L);
13707 TEST_f_f (tgamma, 0x4.000008p0L, 6.0000035937827461765660468073471093546129e+00L);
13708 TEST_f_f (tgamma, 0x3.fffffcp0L, 5.9999982031095793171233994481968816873643e+00L);
13709 TEST_f_f (tgamma, 0x3.000004p0L, 2.0000004400179308360529417942462250547999e+00L);
13710 TEST_f_f (tgamma, 0x2.fffffcp0L, 1.9999995599822108706107786027549565954046e+00L);
13711 TEST_f_f (tgamma, 0x2.000004p0L, 1.0000001007996638509889062631687945799175e+00L);
13712 TEST_f_f (tgamma, 0x1.fffffep0L, 9.9999994960018563231526611134590489120697e-01L);
13713 TEST_f_f (tgamma, 0x1.000002p0L, 9.9999993119054472483596471908942669644327e-01L);
13714 TEST_f_f (tgamma, 0x0.ffffffp0L, 1.0000000344047381790797322460568297132998e+00L);
13715 TEST_f_f (tgamma, -0x0.ffffffp0L, -1.6777216422784419250710305882992376932423e+07L);
13716 TEST_f_f (tgamma, -0x1.000002p0L, 8.3886075772158332060084424806449513922858e+06L);
13717 TEST_f_f (tgamma, -0x1.fffffep0L, 4.1943044613922792026014320172298377770578e+06L);
13718 TEST_f_f (tgamma, -0x2.000004p0L, -2.0971515386080557574407223895988378776747e+06L);
13719 TEST_f_f (tgamma, -0x2.fffffcp0L, -6.9905087601970247876992248591045142913324e+05L);
13720 TEST_f_f (tgamma, -0x3.000004p0L, 6.9905045731381300146131914617735687322025e+05L);
13721 TEST_f_f (tgamma, -0x3.fffffcp0L, 1.7476272942159602684441970627092458855771e+05L);
13722 TEST_f_f (tgamma, -0x4.000008p0L, -8.7381270578483499672965708923121931082305e+04L);
13723 TEST_f_f (tgamma, -0x4.fffff8p0L, -1.7476280884325863043793087474680780379554e+04L);
13724 TEST_f_f (tgamma, -0x5.000008p0L, 1.7476252449031389167286893378510439443844e+04L);
13725 TEST_f_f (tgamma, -0x5.fffff8p0L, 2.9127137122026653716311560165769071985443e+03L);
13726 TEST_f_f (tgamma, -0x6.000008p0L, -2.9127085100239567622341538102130981196910e+03L);
13727 TEST_f_f (tgamma, -0x6.fffff8p0L, -4.1610198723079349791939054365613377035519e+02L);
13728 TEST_f_f (tgamma, -0x7.000008p0L, 4.1610118737306415004517215226199741948733e+02L);
13729 TEST_f_f (tgamma, -0x7.fffff8p0L, 5.2012751504050764429534086402871289946986e+01L);
13730 TEST_f_f (tgamma, -0x8.00001p0L, -2.6006296115134418896533598545925084576702e+01L);
13731 TEST_f_f (tgamma, -0x9.fffffp0L, 2.8896008370721717567612135720915723136310e-01L);
13732 TEST_f_f (tgamma, -0xa.00001p0L, -2.8895878754728051776830454190076999107021e-01L);
13733 TEST_f_f (tgamma, -0x13.ffffep0L, 2.1550026214525536756224040483579183652119e-13L);
13734 TEST_f_f (tgamma, -0x14.00002p0L, -2.1549777908265594916405421768142757507179e-13L);
13735 TEST_f_f (tgamma, -0x1d.ffffep0L, 1.9765721589464867957912772592816027583176e-27L);
13736 TEST_f_f (tgamma, -0x1e.00002p0L, -1.9765463890341964384070157599286498212650e-27L);
13737 TEST_f_f (tgamma, -0x27.ffffcp0L, 3.2129279441390812141195076945616975790225e-43L, UNDERFLOW_EXCEPTION_FLOAT);
13738 TEST_f_f (tgamma, -0x28.00004p0L, -3.2128372159115252365699015758097981155793e-43L, UNDERFLOW_EXCEPTION_FLOAT);
13739 TEST_f_f (tgamma, -0x28.ffffcp0L, -7.8364103489619817539676737414096652170685e-45L, UNDERFLOW_EXCEPTION_FLOAT);
13740 TEST_f_f (tgamma, -0x29.00004p0L, 7.8361876024016854597745353972619195760515e-45L, UNDERFLOW_EXCEPTION_FLOAT);
13741#ifdef TEST_FLOAT
13742 TEST_f_f (tgamma, -0x29.ffffcp0L, plus_zero, UNDERFLOW_EXCEPTION_FLOAT);
13743 TEST_f_f (tgamma, -0x2a.00004p0L, minus_zero, UNDERFLOW_EXCEPTION_FLOAT);
13744#else
13745 TEST_f_f (tgamma, -0x29.ffffcp0L, 1.8658121573125798145204120066590953505132e-46L);
13746 TEST_f_f (tgamma, -0x2a.00004p0L, -1.8657587834931410688246126853566488626385e-46L);
13747#endif
13748#ifndef TEST_FLOAT
13749 TEST_f_f (tgamma, 0x8.0000000000008p0L, 5.0400000000000180457125667322294144477136e+03L);
13750 TEST_f_f (tgamma, 0x7.ffffffffffffcp0L, 5.0399999999999909771437166339103165198442e+03L);
13751 TEST_f_f (tgamma, 0x7.0000000000004p0L, 7.2000000000000119762397445457359071259652e+02L);
13752 TEST_f_f (tgamma, 0x6.ffffffffffffcp0L, 7.1999999999999880237602554542848858572672e+02L);
13753 TEST_f_f (tgamma, 0x6.0000000000004p0L, 1.2000000000000018184042734842640022086408e+02L);
13754 TEST_f_f (tgamma, 0x5.ffffffffffffcp0L, 1.1999999999999981815957265157389249327533e+02L);
13755 TEST_f_f (tgamma, 0x5.0000000000004p0L, 2.4000000000000032104829055124673225982803e+01L);
13756 TEST_f_f (tgamma, 0x4.ffffffffffffcp0L, 2.3999999999999967895170944875373910918544e+01L);
13757 TEST_f_f (tgamma, 0x4.0000000000004p0L, 6.0000000000000066939396342309789716341613e+00L);
13758 TEST_f_f (tgamma, 0x3.ffffffffffffep0L, 5.9999999999999966530301828845138185025345e+00L);
13759 TEST_f_f (tgamma, 0x3.0000000000002p0L, 2.0000000000000008195971324717875960213536e+00L);
13760 TEST_f_f (tgamma, 0x2.ffffffffffffep0L, 1.9999999999999991804028675282128956223990e+00L);
13761 TEST_f_f (tgamma, 0x2.0000000000002p0L, 1.0000000000000001877539613108624482361963e+00L);
13762 TEST_f_f (tgamma, 0x1.fffffffffffffp0L, 9.9999999999999990612301934456883679778984e-01L);
13763 TEST_f_f (tgamma, 0x1.0000000000001p0L, 9.9999999999999987183237573039992418700531e-01L);
13764 TEST_f_f (tgamma, 0x0.fffffffffffff8p0L, 1.0000000000000000640838121348000744796665e+00L);
13765 TEST_f_f (tgamma, -0x0.fffffffffffff8p0L, -9.0071992547409924227843350984672961392521e+15L);
13766 TEST_f_f (tgamma, -0x1.0000000000001p0L, 4.5035996273704955772156649015331740980405e+15L);
13767 TEST_f_f (tgamma, -0x1.fffffffffffffp0L, 2.2517998136852484613921675492337776673289e+15L);
13768 TEST_f_f (tgamma, -0x2.0000000000002p0L, -1.1258999068426235386078324507668462444260e+15L);
13769 TEST_f_f (tgamma, -0x2.ffffffffffffep0L, -3.7529996894754154268627807196691509198813e+14L);
13770 TEST_f_f (tgamma, -0x3.0000000000002p0L, 3.7529996894754112398038859470009084971438e+14L);
13771 TEST_f_f (tgamma, -0x3.ffffffffffffep0L, 9.3824992236885396088236184658402406857503e+13L);
13772 TEST_f_f (tgamma, -0x4.0000000000004p0L, -4.6912496118442603911763815341745722862351e+13L);
13773 TEST_f_f (tgamma, -0x4.ffffffffffffcp0L, -9.3824992236885475509805702650262155809819e+12L);
13774 TEST_f_f (tgamma, -0x5.0000000000004p0L, 9.3824992236885191156860964016850034672946e+12L);
13775 TEST_f_f (tgamma, -0x5.ffffffffffffcp0L, 1.5637498706147581566449098589862357835505e+12L);
13776 TEST_f_f (tgamma, -0x6.0000000000004p0L, -1.5637498706147529544662012521330708016396e+12L);
13777 TEST_f_f (tgamma, -0x6.ffffffffffffcp0L, -2.2339283865925119357965832452642909859289e+11L);
13778 TEST_f_f (tgamma, -0x7.0000000000004p0L, 2.2339283865925039372192897706214475877342e+11L);
13779 TEST_f_f (tgamma, -0x7.ffffffffffffcp0L, 2.7924104832406402297655703264222230055898e+10L);
13780 TEST_f_f (tgamma, -0x8.0000000000008p0L, -1.3962052416203121511868106259843527348026e+10L);
13781 TEST_f_f (tgamma, -0x9.ffffffffffff8p0L, 1.5513391573559147700413058496716749249803e+08L);
13782 TEST_f_f (tgamma, -0xa.0000000000008p0L, -1.5513391573559018084419393002828541166901e+08L);
13783 TEST_f_f (tgamma, -0x13.ffffffffffffp0L, 1.1569515572952029402736625857313236848570e-04L);
13784 TEST_f_f (tgamma, -0x14.000000000001p0L, -1.1569515572951781096476686854873801225397e-04L);
13785 TEST_f_f (tgamma, -0x1d.ffffffffffffp0L, 1.0611571800204311628217068863959963842891e-18L);
13786 TEST_f_f (tgamma, -0x1e.000000000001p0L, -1.0611571800204053929094168642022073530425e-18L);
13787 TEST_f_f (tgamma, -0x27.fffffffffffep0L, 1.7249032006742266376460389310340465554361e-34L);
13788 TEST_f_f (tgamma, -0x28.000000000002p0L, -1.7249032006741359094184881234822934593822e-34L);
13789 TEST_f_f (tgamma, -0x28.fffffffffffep0L, -4.2070809772542120404320040128839297118648e-36L);
13790 TEST_f_f (tgamma, -0x29.000000000002p0L, 4.2070809772539892938717205103652583609422e-36L);
13791 TEST_f_f (tgamma, -0x29.fffffffffffep0L, 1.0016859469652887505173040814397197718981e-37L);
13792 TEST_f_f (tgamma, -0x2a.000000000002p0L, -1.0016859469652353766978684241048308120274e-37L);
13793 TEST_f_f (tgamma, -0x31.fffffffffffep0L, 4.6273774273632946947805289899230181990085e-51L);
13794 TEST_f_f (tgamma, -0x32.000000000002p0L, -4.6273774273630367887073532197576655720178e-51L);
13795 TEST_f_f (tgamma, -0x63.fffffffffffcp0L, 7.5400833348840965463348754984345825364294e-145L);
13796 TEST_f_f (tgamma, -0x64.000000000004p0L, -7.5400833348831085791638490135462230991587e-145L);
13797 TEST_f_f (tgamma, -0x95.fffffffffff8p0L, 6.1582369322723207086020016423767264008839e-250L);
13798 TEST_f_f (tgamma, -0x96.000000000008p0L, -6.1582369322705655439003240743176243138734e-250L);
13799 TEST_f_f (tgamma, -0xb4.fffffffffff8p0L, -9.6760879059917574597728750098636253931457e-319L, UNDERFLOW_EXCEPTION_DOUBLE);
13800 TEST_f_f (tgamma, -0xb5.000000000008p0L, 9.6760879059888966544677044221698800670218e-319L, UNDERFLOW_EXCEPTION_DOUBLE);
13801 TEST_f_f (tgamma, -0xb5.fffffffffff8p0L, 5.3165318164789884455066481673086605454904e-321L, UNDERFLOW_EXCEPTION_DOUBLE);
13802 TEST_f_f (tgamma, -0xb6.000000000008p0L, -5.3165318164774149139661976747137185876909e-321L, UNDERFLOW_EXCEPTION_DOUBLE);
13803 TEST_f_f (tgamma, -0xb6.fffffffffff8p0L, -2.9052086428846935908287469917922960610289e-323L, UNDERFLOW_EXCEPTION_DOUBLE);
13804 TEST_f_f (tgamma, -0xb7.000000000008p0L, 2.9052086428838328351126988236541632950925e-323L, UNDERFLOW_EXCEPTION_DOUBLE);
13805# if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
13806 TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE);
13807 TEST_f_f (tgamma, -0xb8.000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE);
13808# else
13809 TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, 1.5789177406982032823826953250736039527543e-325L);
13810 TEST_f_f (tgamma, -0xb8.000000000008p0L, -1.5789177406977349925854817486109369828857e-325L);
13811# endif
13812#endif
13813#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
13814 TEST_f_f (tgamma, 0x8.00000000000000000000000004p0L, 5.0400000000000000000000000000020034765587e+03L);
13815 TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffep0L, 5.0399999999999999999999999999989982617206e+03L);
13816 TEST_f_f (tgamma, 0x7.00000000000000000000000002p0L, 7.2000000000000000000000000000013296297113e+02L);
13817 TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffep0L, 7.1999999999999999999999999999986703702887e+02L);
13818 TEST_f_f (tgamma, 0x6.00000000000000000000000002p0L, 1.2000000000000000000000000000002018834292e+02L);
13819 TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffep0L, 1.1999999999999999999999999999997981165708e+02L);
13820 TEST_f_f (tgamma, 0x5.00000000000000000000000002p0L, 2.4000000000000000000000000000003564352042e+01L);
13821 TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffep0L, 2.3999999999999999999999999999996435647958e+01L);
13822 TEST_f_f (tgamma, 0x4.00000000000000000000000002p0L, 6.0000000000000000000000000000007431765907e+00L);
13823 TEST_f_f (tgamma, 0x3.ffffffffffffffffffffffffffp0L, 5.9999999999999999999999999999996284117046e+00L);
13824 TEST_f_f (tgamma, 0x3.00000000000000000000000001p0L, 2.0000000000000000000000000000000909935607e+00L);
13825 TEST_f_f (tgamma, 0x2.ffffffffffffffffffffffffffp0L, 1.9999999999999999999999999999999090064393e+00L);
13826 TEST_f_f (tgamma, 0x2.00000000000000000000000001p0L, 1.0000000000000000000000000000000208448771e+00L);
13827 TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffff8p0L, 9.9999999999999999999999999999998957756146e-01L);
13828 TEST_f_f (tgamma, 0x1.000000000000000000000000008p0L, 9.9999999999999999999999999999998577053525e-01L);
13829 TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffcp0L, 1.0000000000000000000000000000000071147324e+00L);
13830 TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffcp0L, -8.1129638414606681695789005144064422784335e+31L);
13831 TEST_f_f (tgamma, -0x1.000000000000000000000000008p0L, 4.0564819207303340847894502572031577215665e+31L);
13832 TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffff8p0L, 2.0282409603651670423947251286016461392168e+31L);
13833 TEST_f_f (tgamma, -0x2.00000000000000000000000001p0L, -1.0141204801825835211973625643007538607832e+31L);
13834 TEST_f_f (tgamma, -0x2.ffffffffffffffffffffffffffp0L, -3.3804016006086117373245418810028760196114e+30L);
13835 TEST_f_f (tgamma, -0x3.00000000000000000000000001p0L, 3.3804016006086117373245418810024573137219e+30L);
13836 TEST_f_f (tgamma, -0x3.ffffffffffffffffffffffffffp0L, 8.4510040015215293433113547025072942156952e+29L);
13837 TEST_f_f (tgamma, -0x4.00000000000000000000000002p0L, -4.2255020007607646716556773512527057843048e+29L);
13838 TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffep0L, -8.4510040015215293433113547025080884313904e+28L);
13839 TEST_f_f (tgamma, -0x5.00000000000000000000000002p0L, 8.4510040015215293433113547025052449019430e+28L);
13840 TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffep0L, 1.4085006669202548905518924504180378867132e+28L);
13841 TEST_f_f (tgamma, -0x6.00000000000000000000000002p0L, -1.4085006669202548905518924504175176688423e+28L);
13842 TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffep0L, -2.0121438098860784150741320720257967542615e+27L);
13843 TEST_f_f (tgamma, -0x7.00000000000000000000000002p0L, 2.0121438098860784150741320720249968965322e+27L);
13844 TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffep0L, 2.5151797623575980188426650900322769448110e+26L);
13845 TEST_f_f (tgamma, -0x8.00000000000000000000000004p0L, -1.2575898811787990094213325450153421028080e+26L);
13846 TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffcp0L, 1.3973220901986655660237028277960625420495e+24L);
13847 TEST_f_f (tgamma, -0xa.00000000000000000000000004p0L, -1.3973220901986655660237028277947663821128e+24L);
13848 TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffff8p0L, 1.0420893204640670202556853709074896123293e+12L);
13849 TEST_f_f (tgamma, -0x14.00000000000000000000000008p0L, -1.0420893204640670202556853709050065497299e+12L);
13850 TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffff8p0L, 9.5580541610429641982963434151488827190079e-03L);
13851 TEST_f_f (tgamma, -0x1e.00000000000000000000000008p0L, -9.5580541610429641982963434151231128067179e-03L);
13852 TEST_f_f (tgamma, -0x27.fffffffffffffffffffffffffp0L, 1.5536546823612837336494536911280147806523e-18L);
13853 TEST_f_f (tgamma, -0x28.0000000000000000000000001p0L, -1.5536546823612837336494536911189419578973e-18L);
13854 TEST_f_f (tgamma, -0x28.fffffffffffffffffffffffffp0L, -3.7894016642958139845108626612879138384405e-20L);
13855 TEST_f_f (tgamma, -0x29.0000000000000000000000001p0L, 3.7894016642958139845108626612656391824122e-20L);
13856 TEST_f_f (tgamma, -0x29.fffffffffffffffffffffffffp0L, 9.0223849149900332964544349078285357440663e-22L);
13857 TEST_f_f (tgamma, -0x2a.0000000000000000000000001p0L, -9.0223849149900332964544349077751619246306e-22L);
13858 TEST_f_f (tgamma, -0x31.fffffffffffffffffffffffffp0L, 4.1679710515150795310771069868348482819424e-35L);
13859 TEST_f_f (tgamma, -0x32.0000000000000000000000001p0L, -4.1679710515150795310771069868090576746248e-35L);
13860 TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffep0L, 6.7915032994648558610510614163560656864280e-129L);
13861 TEST_f_f (tgamma, -0x64.0000000000000000000000002p0L, -6.7915032994648558610510614162572689693253e-129L);
13862 TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffcp0L, 5.5468467106873795353190582463444660395353e-234L);
13863 TEST_f_f (tgamma, -0x96.0000000000000000000000004p0L, -5.5468467106873795353190582461689495693675e-234L);
13864 TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffcp0L, -8.7154451775644399729745472278589884205029e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
13865 TEST_f_f (tgamma, -0xb5.0000000000000000000000004p0L, 8.7154451775644399729745472275729078899858e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
13866 TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffcp0L, 4.7887061415189230620739270482742524864974e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
13867 TEST_f_f (tgamma, -0xb6.0000000000000000000000004p0L, -4.7887061415189230620739270481168993324524e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
13868 TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffcp0L, -2.6167793123054224382917634143575601407067e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
13869 TEST_f_f (tgamma, -0xb7.0000000000000000000000004p0L, 2.6167793123054224382917634142714845691019e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
13870 TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffcp0L, 1.4221626697312078468976975078030462044826e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
13871 TEST_f_f (tgamma, -0xb8.0000000000000000000000004p0L, -1.4221626697312078468976975077562172247612e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
13872 TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffcp0L, 1.1756150745511026776007338998283058108448e-318L, UNDERFLOW_EXCEPTION_DOUBLE);
13873 TEST_f_f (tgamma, -0xbc.0000000000000000000000004p0L, -1.1756150745511026776007338997894360215107e-318L, UNDERFLOW_EXCEPTION_DOUBLE);
13874 TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffcp0L, -6.2201855796354639026493857133773832713743e-321L, UNDERFLOW_EXCEPTION_DOUBLE);
13875 TEST_f_f (tgamma, -0xbd.0000000000000000000000004p0L, 6.2201855796354639026493857131715153125175e-321L, UNDERFLOW_EXCEPTION_DOUBLE);
13876 TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffcp0L, 3.2737818840186652119207293228302560914295e-323L, UNDERFLOW_EXCEPTION_DOUBLE);
13877 TEST_f_f (tgamma, -0xbe.0000000000000000000000004p0L, -3.2737818840186652119207293227217957948294e-323L, UNDERFLOW_EXCEPTION_DOUBLE);
13878# if LDBL_MAX_EXP <= 1024
13879 TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE);
13880 TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE);
13881# else
13882 TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, -1.7140219288055838805867692789687487834686e-325L);
13883 TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, 1.7140219288055838805867692789119066543632e-325L);
13884# endif
13885#endif
13886#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13887 TEST_f_f (tgamma, 0x8.000000000000001p0L, 5.0400000000000000088113830892247051102283e+03L);
13888 TEST_f_f (tgamma, 0x7.fffffffffffffff8p0L, 5.0399999999999999955943084553876474508520e+03L);
13889 TEST_f_f (tgamma, 0x7.0000000000000008p0L, 7.2000000000000000058477733127664675369681e+02L);
13890 TEST_f_f (tgamma, 0x6.fffffffffffffff8p0L, 7.1999999999999999941522266872335324679893e+02L);
13891 TEST_f_f (tgamma, 0x6.0000000000000008p0L, 1.2000000000000000008878927116622375680433e+02L);
13892 TEST_f_f (tgamma, 0x5.fffffffffffffff8p0L, 1.1999999999999999991121072883377624326546e+02L);
13893 TEST_f_f (tgamma, 0x5.0000000000000008p0L, 2.4000000000000000015676186062072582846211e+01L);
13894 TEST_f_f (tgamma, 0x4.fffffffffffffff8p0L, 2.3999999999999999984323813937927417165027e+01L);
13895 TEST_f_f (tgamma, 0x4.0000000000000008p0L, 6.0000000000000000032685252120268430507939e+00L);
13896 TEST_f_f (tgamma, 0x3.fffffffffffffffcp0L, 5.9999999999999999983657373939865784753909e+00L);
13897 TEST_f_f (tgamma, 0x3.0000000000000004p0L, 2.0000000000000000004001939123397399171482e+00L);
13898 TEST_f_f (tgamma, 0x2.fffffffffffffffcp0L, 1.9999999999999999995998060876602600829690e+00L);
13899 TEST_f_f (tgamma, 0x2.0000000000000004p0L, 1.0000000000000000000916767389213195151634e+00L);
13900 TEST_f_f (tgamma, 0x1.fffffffffffffffep0L, 9.9999999999999999995416163053934024243282e-01L);
13901 TEST_f_f (tgamma, 0x1.0000000000000002p0L, 9.9999999999999999993741815221210931418291e-01L);
13902 TEST_f_f (tgamma, 0x0.ffffffffffffffffp0L, 1.0000000000000000000312909238939453429173e+00L);
13903 TEST_f_f (tgamma, -0x0.ffffffffffffffffp0L, -1.8446744073709551616422784335098467139470e+19L);
13904 TEST_f_f (tgamma, -0x1.0000000000000002p0L, 9.2233720368547758075772156649015328607596e+18L);
13905 TEST_f_f (tgamma, -0x1.fffffffffffffffep0L, 4.6116860184273879044613921675492335697983e+18L);
13906 TEST_f_f (tgamma, -0x2.0000000000000004p0L, -2.3058430092136939515386078324507664305064e+18L);
13907 TEST_f_f (tgamma, -0x2.fffffffffffffffcp0L, -7.6861433640456465087601961140530007887063e+17L);
13908 TEST_f_f (tgamma, -0x3.0000000000000004p0L, 7.6861433640456465045731372192803325462836e+17L);
13909 TEST_f_f (tgamma, -0x3.fffffffffffffffcp0L, 1.9215358410114116272942156951799168638773e+17L);
13910 TEST_f_f (tgamma, -0x4.0000000000000008p0L, -9.6076792050570581270578430482008313684602e+16L);
13911 TEST_f_f (tgamma, -0x4.fffffffffffffff8p0L, -1.9215358410114116280884313903598337283601e+16L);
13912 TEST_f_f (tgamma, -0x5.0000000000000008p0L, 1.9215358410114116252449019429734996071487e+16L);
13913 TEST_f_f (tgamma, -0x5.fffffffffffffff8p0L, 3.2025597350190193803788671320812043622696e+15L);
13914 TEST_f_f (tgamma, -0x6.0000000000000008p0L, -3.2025597350190193751766884234743511972877e+15L);
13915 TEST_f_f (tgamma, -0x6.fffffffffffffff8p0L, -4.5750853357414562579675426149912896787735e+14L);
13916 TEST_f_f (tgamma, -0x7.0000000000000008p0L, 4.5750853357414562499689653215166468353753e+14L);
13917 TEST_f_f (tgamma, -0x7.fffffffffffffff8p0L, 5.7188566696768203227694481100089533685959e+13L);
13918 TEST_f_f (tgamma, -0x8.000000000000001p0L, -2.8594283348384101534210280804672371201060e+13L);
13919 TEST_f_f (tgamma, -0x9.fffffffffffffffp0L, 3.1771425942649001828476427167843945971988e+11L);
13920 TEST_f_f (tgamma, -0xa.000000000000001p0L, -3.1771425942649001698860433502350057763905e+11L);
13921 TEST_f_f (tgamma, -0x13.ffffffffffffffep0L, 2.3694367893405502075347562184931828448654e-01L);
13922 TEST_f_f (tgamma, -0x14.000000000000002p0L, -2.3694367893405501827041302245929389013031e-01L);
13923 TEST_f_f (tgamma, -0x1d.ffffffffffffffep0L, 2.1732499046818166459536268654187775086902e-15L);
13924 TEST_f_f (tgamma, -0x1e.000000000000002p0L, -2.1732499046818166201837145753965837196590e-15L);
13925 TEST_f_f (tgamma, -0x27.ffffffffffffffcp0L, 3.5326017549807232935581894777156474496719e-31L);
13926 TEST_f_f (tgamma, -0x28.000000000000004p0L, -3.5326017549807232028299619269080956965758e-31L);
13927 TEST_f_f (tgamma, -0x28.ffffffffffffffcp0L, -8.6161018414163982777002940498289948893044e-33L);
13928 TEST_f_f (tgamma, -0x29.000000000000004p0L, 8.6161018414163980549537337663264762179535e-33L);
13929 TEST_f_f (tgamma, -0x29.ffffffffffffffcp0L, 2.0514528193848567329552463626090806737389e-34L);
13930 TEST_f_f (tgamma, -0x2a.000000000000004p0L, -2.0514528193848566795814269269517457847791e-34L);
13931 TEST_f_f (tgamma, -0x31.ffffffffffffffcp0L, 9.4768689712397635680446279661359728835046e-48L);
13932 TEST_f_f (tgamma, -0x32.000000000000004p0L, -9.4768689712397633101385547903658075308777e-48L);
13933 TEST_f_f (tgamma, -0x63.ffffffffffffff8p0L, 1.5442090669841618542494279375256856430049e-141L);
13934 TEST_f_f (tgamma, -0x64.000000000000008p0L, -1.5442090669841617554527108348771968070612e-141L);
13935 TEST_f_f (tgamma, -0x95.ffffffffffffffp0L, 1.2612069237291916400144732227892704713839e-246L);
13936 TEST_f_f (tgamma, -0x96.00000000000001p0L, -1.2612069237291914644980030550324645611752e-246L);
13937 TEST_f_f (tgamma, -0xb4.ffffffffffffffp0L, -1.9816628031468191243385005680879281767694e-315L);
13938 TEST_f_f (tgamma, -0xb5.00000000000001p0L, 1.9816628031468188382579700510291588022368e-315L);
13939 TEST_f_f (tgamma, -0xb5.ffffffffffffffp0L, 1.0888257160147357826865964233809723297472e-317L);
13940 TEST_f_f (tgamma, -0xb6.00000000000001p0L, -1.0888257160147356253334423783317128355514e-317L);
13941 TEST_f_f (tgamma, -0xb6.ffffffffffffffp0L, -5.9498673006269714905418984659220067091260e-320L);
13942 TEST_f_f (tgamma, -0xb7.00000000000001p0L, 5.9498673006269706297861824177538685763601e-320L);
13943 TEST_f_f (tgamma, -0xb7.ffffffffffffffp0L, 3.2336235329494410277123118903958061569834e-322L);
13944 TEST_f_f (tgamma, -0xb8.00000000000001p0L, -3.2336235329494405594225146768193434900135e-322L);
13945 TEST_f_f (tgamma, -0xbb.ffffffffffffffp0L, 2.6730392040715350119087465463119939092815e-331L);
13946 TEST_f_f (tgamma, -0xbc.00000000000001p0L, -2.6730392040715346232108532050343031951651e-331L);
13947 TEST_f_f (tgamma, -0xbc.ffffffffffffffp0L, -1.4143064571807063556111222197839950086445e-333L);
13948 TEST_f_f (tgamma, -0xbd.00000000000001p0L, 1.4143064571807061497431633629389135273431e-333L);
13949 TEST_f_f (tgamma, -0xbd.ffffffffffffffp0L, 7.4437181956879281879706555863416819210399e-336L);
13950 TEST_f_f (tgamma, -0xbe.00000000000001p0L, -7.4437181956879271033676895858841525581153e-336L);
13951 TEST_f_f (tgamma, -0xbe.ffffffffffffffp0L, -3.8972346574282346536709453101948570578636e-338L);
13952 TEST_f_f (tgamma, -0xbf.00000000000001p0L, 3.8972346574282340852496542564155275274974e-338L);
13953 TEST_f_f (tgamma, -0xf9.ffffffffffffffp0L, 2.2289142548411573883553287678043297937797e-476L);
13954 TEST_f_f (tgamma, -0xfa.00000000000001p0L, -2.2289142548411570466476165308364665814265e-476L);
13955 TEST_f_f (tgamma, -0x1f3.fffffffffffffep0L, 2.9528489142763141594943668922610562530068e-1118L);
13956 TEST_f_f (tgamma, -0x1f4.00000000000002p0L, -2.9528489142763131406565394149878256133744e-1118L);
13957 TEST_f_f (tgamma, -0x2ed.fffffffffffffcp0L, 6.9801511765871818502006905472380418430269e-1817L);
13958 TEST_f_f (tgamma, -0x2ee.00000000000004p0L, -6.9801511765871767194421856376592926002995e-1817L);
13959 TEST_f_f (tgamma, -0x3e7.fffffffffffffcp0L, 4.4768809295877296071892611539415773519036e-2552L);
13960 TEST_f_f (tgamma, -0x3e8.00000000000004p0L, -4.4768809295877261735541135972060089530309e-2552L);
13961 TEST_f_f (tgamma, -0x4e1.fffffffffffff8p0L, 5.4651488569236507565341414077911790252381e-3315L);
13962 TEST_f_f (tgamma, -0x4e2.00000000000008p0L, -5.4651488569236421026544487194247355967789e-3315L);
13963 TEST_f_f (tgamma, -0x5db.fffffffffffff8p0L, 1.8718211510339187689122114747834510481993e-4099L);
13964 TEST_f_f (tgamma, -0x5dc.00000000000008p0L, -1.8718211510339157291960718369454861898499e-4099L);
13965 TEST_f_f (tgamma, -0x6d5.fffffffffffff8p0L, 4.2925786447266492555651378780094011518063e-4902L);
13966 TEST_f_f (tgamma, -0x6d6.00000000000008p0L, -4.2925786447266421378134368786479937285900e-4902L);
13967 TEST_f_f (tgamma, -0x6e2.fffffffffffff8p0L, -2.8229173528168668283609231628661510187536e-4944L, UNDERFLOW_EXCEPTION);
13968 TEST_f_f (tgamma, -0x6e3.00000000000008p0L, 2.8229173528168621428945467532322397890424e-4944L, UNDERFLOW_EXCEPTION);
13969 TEST_f_f (tgamma, -0x6e3.fffffffffffff8p0L, 1.6002932839097884515524894602387278842659e-4947L, UNDERFLOW_EXCEPTION);
13970 TEST_f_f (tgamma, -0x6e4.00000000000008p0L, -1.6002932839097857951909742110188634438017e-4947L, UNDERFLOW_EXCEPTION);
13971 TEST_f_f (tgamma, -0x6e4.fffffffffffff8p0L, -9.0668174725767051085164382743343408095146e-4951L, UNDERFLOW_EXCEPTION);
13972 TEST_f_f (tgamma, -0x6e5.00000000000008p0L, 9.0668174725766900571689083050287838090189e-4951L, UNDERFLOW_EXCEPTION);
13973# if LDBL_MANT_DIG <= 64
13974 TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION);
13975 TEST_f_f (tgamma, -0x6e6.00000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION);
13976# else
13977 TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, 5.1340982290921319983501912122292601780326e-4954L, UNDERFLOW_EXCEPTION);
13978 TEST_f_f (tgamma, -0x6e6.00000000000008p0L, -5.1340982290921234748578193083614111497314e-4954L, UNDERFLOW_EXCEPTION);
13979# endif
13980# if LDBL_MANT_DIG >= 113
13981 TEST_f_f (tgamma, 0x8.0000000000000000000000000008p0L, 5.0400000000000000000000000000000156521606e+03L);
13982 TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffffcp0L, 5.0399999999999999999999999999999921739197e+03L);
13983 TEST_f_f (tgamma, 0x7.0000000000000000000000000004p0L, 7.2000000000000000000000000000000103877321e+02L);
13984 TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffffcp0L, 7.1999999999999999999999999999999896122679e+02L);
13985 TEST_f_f (tgamma, 0x6.0000000000000000000000000004p0L, 1.2000000000000000000000000000000015772143e+02L);
13986 TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffffcp0L, 1.1999999999999999999999999999999984227857e+02L);
13987 TEST_f_f (tgamma, 0x5.0000000000000000000000000004p0L, 2.4000000000000000000000000000000027846500e+01L);
13988 TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffffcp0L, 2.3999999999999999999999999999999972153500e+01L);
13989 TEST_f_f (tgamma, 0x4.0000000000000000000000000004p0L, 6.0000000000000000000000000000000058060671e+00L);
13990 TEST_f_f (tgamma, 0x3.fffffffffffffffffffffffffffep0L, 5.9999999999999999999999999999999970969664e+00L);
13991 TEST_f_f (tgamma, 0x3.0000000000000000000000000002p0L, 2.0000000000000000000000000000000007108872e+00L);
13992 TEST_f_f (tgamma, 0x2.fffffffffffffffffffffffffffep0L, 1.9999999999999999999999999999999992891128e+00L);
13993 TEST_f_f (tgamma, 0x2.0000000000000000000000000002p0L, 1.0000000000000000000000000000000001628506e+00L);
13994 TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffffffp0L, 9.9999999999999999999999999999999991857470e-01L);
13995 TEST_f_f (tgamma, 0x1.0000000000000000000000000001p0L, 9.9999999999999999999999999999999988883231e-01L);
13996 TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffff8p0L, 1.0000000000000000000000000000000000555838e+00L);
13997 TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffff8p0L, -1.0384593717069655257060992658440192422784e+34L);
13998 TEST_f_f (tgamma, -0x1.0000000000000000000000000001p0L, 5.1922968585348276285304963292200955772157e+33L);
13999 TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffffffp0L, 2.5961484292674138142652481646100484613922e+33L);
14000 TEST_f_f (tgamma, -0x2.0000000000000000000000000002p0L, -1.2980742146337069071326240823050235386078e+33L);
14001 TEST_f_f (tgamma, -0x2.fffffffffffffffffffffffffffep0L, -4.3269140487790230237754136076834154268628e+32L);
14002 TEST_f_f (tgamma, -0x3.0000000000000000000000000002p0L, 4.3269140487790230237754136076834112398039e+32L);
14003 TEST_f_f (tgamma, -0x3.fffffffffffffffffffffffffffep0L, 1.0817285121947557559438534019208539608824e+32L);
14004 TEST_f_f (tgamma, -0x4.0000000000000000000000000004p0L, -5.4086425609737787797192670096042603911764e+31L);
14005 TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffffcp0L, -1.0817285121947557559438534019208547550981e+31L);
14006 TEST_f_f (tgamma, -0x5.0000000000000000000000000004p0L, 1.0817285121947557559438534019208519115686e+31L);
14007 TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffffcp0L, 1.8028808536579262599064223365347581566449e+30L);
14008 TEST_f_f (tgamma, -0x6.0000000000000000000000000004p0L, -1.8028808536579262599064223365347529544662e+30L);
14009 TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffffcp0L, -2.5755440766541803712948890521925119357966e+29L);
14010 TEST_f_f (tgamma, -0x7.0000000000000000000000000004p0L, 2.5755440766541803712948890521925039372193e+29L);
14011 TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffffcp0L, 3.2194300958177254641186113152406402297656e+28L);
14012 TEST_f_f (tgamma, -0x8.0000000000000000000000000008p0L, -1.6097150479088627320593056576203121511868e+28L);
14013 TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffff8p0L, 1.7885722754542919245103396195781369922635e+26L);
14014 TEST_f_f (tgamma, -0xa.0000000000000000000000000008p0L, -1.7885722754542919245103396195781240306642e+26L);
14015 TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffffffp0L, 1.3338743301940057859272772747600099590309e+14L);
14016 TEST_f_f (tgamma, -0x14.000000000000000000000000001p0L, -1.3338743301940057859272772747599851284049e+14L);
14017 TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffffffp0L, 1.2234309326134994173819319571374205986026e+00L);
14018 TEST_f_f (tgamma, -0x1e.000000000000000000000000001p0L, -1.2234309326134994173819319571373948286903e+00L);
14019 TEST_f_f (tgamma, -0x27.ffffffffffffffffffffffffffep0L, 1.9886779934224431790713007246380976767855e-16L);
14020 TEST_f_f (tgamma, -0x28.000000000000000000000000002p0L, -1.9886779934224431790713007246380069485580e-16L);
14021 TEST_f_f (tgamma, -0x28.ffffffffffffffffffffffffffep0L, -4.8504341302986419001739042064343853066259e-18L);
14022 TEST_f_f (tgamma, -0x29.000000000000000000000000002p0L, 4.8504341302986419001739042064341625600656e-18L);
14023 TEST_f_f (tgamma, -0x29.ffffffffffffffffffffffffffep0L, 1.1548652691187242619461676681986633377063e-19L);
14024 TEST_f_f (tgamma, -0x2a.000000000000000000000000002p0L, -1.1548652691187242619461676681986099638869e-19L);
14025 TEST_f_f (tgamma, -0x31.ffffffffffffffffffffffffffep0L, 5.3350029459393017997786969431322287652396e-33L);
14026 TEST_f_f (tgamma, -0x32.000000000000000000000000002p0L, -5.3350029459393017997786969431319708591664e-33L);
14027 TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffffcp0L, 8.6931242233150155021453586128730281632676e-127L);
14028 TEST_f_f (tgamma, -0x64.000000000000000000000000004p0L, -8.6931242233150155021453586128720401960966e-127L);
14029 TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffff8p0L, 7.0999637896798458052083945552094635720486e-232L);
14030 TEST_f_f (tgamma, -0x96.000000000000000000000000008p0L, -7.0999637896798458052083945552077084073470e-232L);
14031 TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffff8p0L, -1.1155769827282483165407420451477844041365e-300L);
14032 TEST_f_f (tgamma, -0xb5.000000000000000000000000008p0L, 1.1155769827282483165407420451474983236060e-300L);
14033 TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffff8p0L, 6.1295438611442215194546266216911239298981e-303L);
14034 TEST_f_f (tgamma, -0xb6.000000000000000000000000008p0L, -6.1295438611442215194546266216895503983577e-303L);
14035 TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffff8p0L, -3.3494775197509407210134571703230189921356e-305L);
14036 TEST_f_f (tgamma, -0xb7.000000000000000000000000008p0L, 3.3494775197509407210134571703221582364195e-305L);
14037 TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffff8p0L, 1.8203682172559460440290528099581627396147e-307L);
14038 TEST_f_f (tgamma, -0xb8.000000000000000000000000008p0L, -1.8203682172559460440290528099576944498174e-307L);
14039 TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffff8p0L, 1.5047872954254114273289393917555491216542e-316L);
14040 TEST_f_f (tgamma, -0xbc.000000000000000000000000008p0L, -1.5047872954254114273289393917551604237609e-316L);
14041 TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffff8p0L, -7.9618375419333937953912137129923244334851e-319L);
14042 TEST_f_f (tgamma, -0xbd.000000000000000000000000008p0L, 7.9618375419333937953912137129902657538965e-319L);
14043 TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffff8p0L, 4.1904408115438914712585335331538555086887e-321L);
14044 TEST_f_f (tgamma, -0xbe.000000000000000000000000008p0L, -4.1904408115438914712585335331527709057227e-321L);
14045 TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffff8p0L, -2.1939480688711473671510646770439036908579e-323L);
14046 TEST_f_f (tgamma, -0xbf.000000000000000000000000008p0L, 2.1939480688711473671510646770433352695669e-323L);
14047 TEST_f_f (tgamma, -0xf9.ffffffffffffffffffffffffff8p0L, 1.2547671759429278005937024349858508569625e-461L);
14048 TEST_f_f (tgamma, -0xfa.000000000000000000000000008p0L, -1.2547671759429278005937024349855091492502e-461L);
14049 TEST_f_f (tgamma, -0x1f3.ffffffffffffffffffffffffffp0L, 1.6623061587520224800948170558276526986560e-1103L);
14050 TEST_f_f (tgamma, -0x1f4.00000000000000000000000001p0L, -1.6623061587520224800948170558266338608285e-1103L);
14051 TEST_f_f (tgamma, -0x2ed.fffffffffffffffffffffffffep0L, 3.9294757797334687313030998663853566763041e-1802L);
14052 TEST_f_f (tgamma, -0x2ee.00000000000000000000000002p0L, -3.9294757797334687313030998663802259177992e-1802L);
14053 TEST_f_f (tgamma, -0x3e7.fffffffffffffffffffffffffep0L, 2.5202599107841713834679953735597552855978e-2537L);
14054 TEST_f_f (tgamma, -0x3e8.00000000000000000000000002p0L, -2.5202599107841713834679953735563216504503e-2537L);
14055 TEST_f_f (tgamma, -0x4e1.fffffffffffffffffffffffffcp0L, 3.0766052944457032773369415396747635242705e-3300L);
14056 TEST_f_f (tgamma, -0x4e2.00000000000000000000000004p0L, -3.0766052944457032773369415396661096445778e-3300L);
14057 TEST_f_f (tgamma, -0x5db.fffffffffffffffffffffffffcp0L, 1.0537416297875703295453200836588944487917e-4084L);
14058 TEST_f_f (tgamma, -0x5dc.00000000000000000000000004p0L, -1.0537416297875703295453200836558547326520e-4084L);
14059 TEST_f_f (tgamma, -0x6d5.fffffffffffffffffffffffffcp0L, 2.4165069481061837867659591369998698607387e-4887L);
14060 TEST_f_f (tgamma, -0x6d6.00000000000000000000000004p0L, -2.4165069481061837867659591369927521090377e-4887L);
14061 TEST_f_f (tgamma, -0x6e2.fffffffffffffffffffffffffcp0L, -1.5891611922804672355414813803008070609431e-4929L);
14062 TEST_f_f (tgamma, -0x6e3.00000000000000000000000004p0L, 1.5891611922804672355414813802961215945667e-4929L);
14063 TEST_f_f (tgamma, -0x6e3.fffffffffffffffffffffffffcp0L, 9.0088502963745308137272187091882496519917e-4933L, UNDERFLOW_EXCEPTION);
14064 TEST_f_f (tgamma, -0x6e4.00000000000000000000000004p0L, -9.0088502963745308137272187091616860368392e-4933L, UNDERFLOW_EXCEPTION);
14065 TEST_f_f (tgamma, -0x6e4.fffffffffffffffffffffffffcp0L, -5.1041644738665896961627301468488672286746e-4936L, UNDERFLOW_EXCEPTION);
14066 TEST_f_f (tgamma, -0x6e5.00000000000000000000000004p0L, 5.1041644738665896961627301468338158811446e-4936L, UNDERFLOW_EXCEPTION);
14067 TEST_f_f (tgamma, -0x6e5.fffffffffffffffffffffffffcp0L, 2.8902403589278537350864836618623260468143e-4939L, UNDERFLOW_EXCEPTION);
14068 TEST_f_f (tgamma, -0x6e6.00000000000000000000000004p0L, -2.8902403589278537350864836618538025544424e-4939L, UNDERFLOW_EXCEPTION);
14069 TEST_f_f (tgamma, -0x6eb.fffffffffffffffffffffffffcp0L, 9.4152481960798287090819640211017219042636e-4959L, UNDERFLOW_EXCEPTION);
14070 TEST_f_f (tgamma, -0x6ec.00000000000000000000000004p0L, -9.4152481960798287090819640210739431797168e-4959L, UNDERFLOW_EXCEPTION);
14071 TEST_f_f (tgamma, -0x6ec.fffffffffffffffffffffffffcp0L, -5.3103486723518492437010513373388172315540e-4962L, UNDERFLOW_EXCEPTION);
14072 TEST_f_f (tgamma, -0x6ed.00000000000000000000000004p0L, 5.3103486723518492437010513373231484108489e-4962L, UNDERFLOW_EXCEPTION);
14073 TEST_f_f (tgamma, -0x6ed.fffffffffffffffffffffffffcp0L, 2.9934321715624854812294539669328172615019e-4965L, UNDERFLOW_EXCEPTION);
14074 TEST_f_f (tgamma, -0x6ee.00000000000000000000000004p0L, -2.9934321715624854812294539669239841152754e-4965L, UNDERFLOW_EXCEPTION);
14075 TEST_f_f (tgamma, -0x6ee.fffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION);
14076 TEST_f_f (tgamma, -0x6ef.00000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION);
14077# endif
14078#endif
14079 TEST_f_f (tgamma, -0x1.0a32a2p+5L, 1.8125267978155035272941154746083439329912e-37L);
14080#ifndef TEST_FLOAT
14081 TEST_f_f (tgamma, -0x1.5800000080001p+7L, -3.1439271448823567326093363350637118195240e-304L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
14082#endif
14083 TEST_f_f (tgamma, 18.5L, 1.4986120533153361177371791123515513270334e+15L);
14084 TEST_f_f (tgamma, 19.5L, 2.7724322986333718178137813578503699550119e+16L);
14085 TEST_f_f (tgamma, 23.5L, 5.3613035875444147334274983856108155717836e+21L);
14086 TEST_f_f (tgamma, 29.5L, 1.6348125198274266444378807806868221866931e+30L);
14087 TEST_f_f (tgamma, 30.5L, 4.8226969334909086010917483030261254507447e+31L);
14088 TEST_f_f (tgamma, 31.5L, 1.4709225647147271233329832324229682624771e+33L);
14089 TEST_f_f (tgamma, 32.5L, 4.6334060788513904384988971821323500268029e+34L);
14090 TEST_f_f (tgamma, 33.5L, 1.5058569756267018925121415841930137587110e+36L);
14091 TEST_f_f (tgamma, 34.5L, 5.0446208683494513399156743070465960916817e+37L);
14092 TEST_f_f (tgamma, 0x2.30a43cp+4L, 3.4027979115654976101247558405326779640190e+38L);
14093#ifdef TEST_FLOAT
14094 TEST_f_f (tgamma, 0x2.30a44p+4L, plus_infty, OVERFLOW_EXCEPTION);
14095#else
14096 TEST_f_f (tgamma, 0x2.30a44p+4L, 3.4028438913396451054667218138127983367181e+38L);
14097#endif
14098#ifndef TEST_FLOAT
14099 TEST_f_f (tgamma, 0xa.b9fd72b0fb238p+4L, 1.7976931348622298700886249281842651388250e+308L);
14100# if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14101 TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, plus_infty, OVERFLOW_EXCEPTION);
14102# else
14103 TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, 1.7976931348624926129589466917917870782484e+308L);
14104# endif
14105#endif
14106#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14107 TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f4p+4L, 1.7976931348623158079372897140307719334857e+308L);
14108# if LDBL_MAX_EXP <= 1024
14109 TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, plus_infty, OVERFLOW_EXCEPTION);
14110# else
14111 TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, 1.7976931348623158079372897140599422519044e+308L);
14112# endif
14113#endif
14114#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14115 TEST_f_f (tgamma, 0x6.db8c603359a97108p+8L, 1.1897314953572317517071551278058233700012e+4932L);
14116 TEST_f_f (tgamma, 0x6.db8c603359a9711p+8L, plus_infty, OVERFLOW_EXCEPTION);
14117# if LDBL_MANT_DIG >= 113
14118 TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfdp+8L, 1.1897314953572317650857593266265995494998e+4932L);
14119 TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfd4p+8L, plus_infty, OVERFLOW_EXCEPTION);
14120# endif
14121#endif
14122
8847214f
UD
14123 END (tgamma);
14124}
14125
2550dfe9 14126
8847214f
UD
14127static void
14128trunc_test (void)
14129{
14130 START (trunc);
14131
14132 TEST_f_f (trunc, plus_infty, plus_infty);
14133 TEST_f_f (trunc, minus_infty, minus_infty);
67e971f1 14134 TEST_f_f (trunc, qnan_value, qnan_value);
8847214f
UD
14135
14136 TEST_f_f (trunc, 0, 0);
14137 TEST_f_f (trunc, minus_zero, minus_zero);
5c68d401
RM
14138 TEST_f_f (trunc, 0.1, 0);
14139 TEST_f_f (trunc, 0.25, 0);
8847214f 14140 TEST_f_f (trunc, 0.625, 0);
5c68d401
RM
14141 TEST_f_f (trunc, -0.1, minus_zero);
14142 TEST_f_f (trunc, -0.25, minus_zero);
8847214f
UD
14143 TEST_f_f (trunc, -0.625, minus_zero);
14144 TEST_f_f (trunc, 1, 1);
14145 TEST_f_f (trunc, -1, -1);
14146 TEST_f_f (trunc, 1.625, 1);
14147 TEST_f_f (trunc, -1.625, -1);
14148
14149 TEST_f_f (trunc, 1048580.625L, 1048580L);
14150 TEST_f_f (trunc, -1048580.625L, -1048580L);
14151
14152 TEST_f_f (trunc, 8388610.125L, 8388610.0L);
14153 TEST_f_f (trunc, -8388610.125L, -8388610.0L);
14154
14155 TEST_f_f (trunc, 4294967296.625L, 4294967296.0L);
14156 TEST_f_f (trunc, -4294967296.625L, -4294967296.0L);
14157
f964490f
RM
14158#ifdef TEST_LDOUBLE
14159 /* The result can only be represented in long double. */
14160 TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L);
14161 TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L);
14162 TEST_f_f (trunc, 4503599627370496.5L, 4503599627370496.0L);
14163 TEST_f_f (trunc, 4503599627370496.75L, 4503599627370496.0L);
14164 TEST_f_f (trunc, 4503599627370497.5L, 4503599627370497.0L);
14165
5c68d401
RM
14166# if LDBL_MANT_DIG > 100
14167 TEST_f_f (trunc, 4503599627370494.5000000000001L, 4503599627370494.0L);
14168 TEST_f_f (trunc, 4503599627370495.5000000000001L, 4503599627370495.0L);
14169 TEST_f_f (trunc, 4503599627370496.5000000000001L, 4503599627370496.0L);
14170# endif
830fce04 14171
f964490f
RM
14172 TEST_f_f (trunc, -4503599627370495.5L, -4503599627370495.0L);
14173 TEST_f_f (trunc, -4503599627370496.25L, -4503599627370496.0L);
14174 TEST_f_f (trunc, -4503599627370496.5L, -4503599627370496.0L);
14175 TEST_f_f (trunc, -4503599627370496.75L, -4503599627370496.0L);
14176 TEST_f_f (trunc, -4503599627370497.5L, -4503599627370497.0L);
830fce04 14177
5c68d401
RM
14178# if LDBL_MANT_DIG > 100
14179 TEST_f_f (trunc, -4503599627370494.5000000000001L, -4503599627370494.0L);
14180 TEST_f_f (trunc, -4503599627370495.5000000000001L, -4503599627370495.0L);
14181 TEST_f_f (trunc, -4503599627370496.5000000000001L, -4503599627370496.0L);
14182# endif
f964490f
RM
14183
14184 TEST_f_f (trunc, 9007199254740991.5L, 9007199254740991.0L);
14185 TEST_f_f (trunc, 9007199254740992.25L, 9007199254740992.0L);
14186 TEST_f_f (trunc, 9007199254740992.5L, 9007199254740992.0L);
14187 TEST_f_f (trunc, 9007199254740992.75L, 9007199254740992.0L);
14188 TEST_f_f (trunc, 9007199254740993.5L, 9007199254740993.0L);
14189
5c68d401
RM
14190# if LDBL_MANT_DIG > 100
14191 TEST_f_f (trunc, 9007199254740991.0000000000001L, 9007199254740991.0L);
14192 TEST_f_f (trunc, 9007199254740992.0000000000001L, 9007199254740992.0L);
14193 TEST_f_f (trunc, 9007199254740993.0000000000001L, 9007199254740993.0L);
14194 TEST_f_f (trunc, 9007199254740991.5000000000001L, 9007199254740991.0L);
14195 TEST_f_f (trunc, 9007199254740992.5000000000001L, 9007199254740992.0L);
14196 TEST_f_f (trunc, 9007199254740993.5000000000001L, 9007199254740993.0L);
14197# endif
14198
f964490f
RM
14199 TEST_f_f (trunc, -9007199254740991.5L, -9007199254740991.0L);
14200 TEST_f_f (trunc, -9007199254740992.25L, -9007199254740992.0L);
14201 TEST_f_f (trunc, -9007199254740992.5L, -9007199254740992.0L);
14202 TEST_f_f (trunc, -9007199254740992.75L, -9007199254740992.0L);
14203 TEST_f_f (trunc, -9007199254740993.5L, -9007199254740993.0L);
14204
5c68d401
RM
14205# if LDBL_MANT_DIG > 100
14206 TEST_f_f (trunc, -9007199254740991.0000000000001L, -9007199254740991.0L);
14207 TEST_f_f (trunc, -9007199254740992.0000000000001L, -9007199254740992.0L);
14208 TEST_f_f (trunc, -9007199254740993.0000000000001L, -9007199254740993.0L);
14209 TEST_f_f (trunc, -9007199254740991.5000000000001L, -9007199254740991.0L);
14210 TEST_f_f (trunc, -9007199254740992.5000000000001L, -9007199254740992.0L);
14211 TEST_f_f (trunc, -9007199254740993.5000000000001L, -9007199254740993.0L);
14212# endif
14213
f964490f
RM
14214 TEST_f_f (trunc, 72057594037927935.5L, 72057594037927935.0L);
14215 TEST_f_f (trunc, 72057594037927936.25L, 72057594037927936.0L);
14216 TEST_f_f (trunc, 72057594037927936.5L, 72057594037927936.0L);
14217 TEST_f_f (trunc, 72057594037927936.75L, 72057594037927936.0L);
14218 TEST_f_f (trunc, 72057594037927937.5L, 72057594037927937.0L);
14219
14220 TEST_f_f (trunc, -72057594037927935.5L, -72057594037927935.0L);
14221 TEST_f_f (trunc, -72057594037927936.25L, -72057594037927936.0L);
14222 TEST_f_f (trunc, -72057594037927936.5L, -72057594037927936.0L);
14223 TEST_f_f (trunc, -72057594037927936.75L, -72057594037927936.0L);
14224 TEST_f_f (trunc, -72057594037927937.5L, -72057594037927937.0L);
14225
14226 TEST_f_f (trunc, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L);
14227 TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L);
14228 TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L);
14229 TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L);
830fce04 14230 TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L);
f964490f 14231#endif
8847214f
UD
14232
14233 END (trunc);
14234}
14235
14236static void
14237y0_test (void)
14238{
8a216c1b 14239 FLOAT s, c;
8847214f 14240 errno = 0;
cd53c157
UD
14241 FUNC (sincos) (0, &s, &c);
14242 if (errno == ENOSYS)
14243 /* Required function not implemented. */
14244 return;
8847214f
UD
14245 FUNC(y0) (1);
14246 if (errno == ENOSYS)
14247 /* Function not implemented. */
14248 return;
14249
14250 /* y0 is the Bessel function of the second kind of order 0 */
14251 START (y0);
14252
caac9ddb 14253 TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION);
41bf21a1 14254 TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION);
8847214f 14255 TEST_f_f (y0, 0.0, minus_infty);
67e971f1 14256 TEST_f_f (y0, qnan_value, qnan_value);
8847214f
UD
14257 TEST_f_f (y0, plus_infty, 0);
14258
2550dfe9
AJ
14259 TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L);
14260 TEST_f_f (y0, 0.75L, -0.137172769385772397522814379396581855L);
14261 TEST_f_f (y0, 1.0, 0.0882569642156769579829267660235151628L);
14262 TEST_f_f (y0, 1.5, 0.382448923797758843955068554978089862L);
14263 TEST_f_f (y0, 2.0, 0.510375672649745119596606592727157873L);
14264 TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L);
14265 TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L);
8847214f 14266
c36e1d23
JM
14267 TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L);
14268
14269#ifndef TEST_FLOAT
2a185d32 14270 TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L);
98c48fe5 14271 TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L);
c36e1d23
JM
14272#endif
14273
d2f9799e
JM
14274#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14275 TEST_f_f (y0, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L);
14276 TEST_f_f (y0, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L);
14277#endif
14278
05b227bd
DM
14279 TEST_f_f (y0, 0x1p-10L, -4.4865150767109739412411806297168793661098L);
14280 TEST_f_f (y0, 0x1p-20L, -8.8992283012125827603076426611387876938160L);
14281 TEST_f_f (y0, 0x1p-30L, -1.3311940304267782826037118027401817264906e+1L);
14282 TEST_f_f (y0, 0x1p-40L, -1.7724652307320814696990854700366226762563e+1L);
14283 TEST_f_f (y0, 0x1p-50L, -2.2137364310373846564919987139743760738155e+1L);
14284 TEST_f_f (y0, 0x1p-60L, -2.6550076313426878432849115782108205929120e+1L);
14285 TEST_f_f (y0, 0x1p-70L, -3.0962788316479910300778244424468159753887e+1L);
14286 TEST_f_f (y0, 0x1p-80L, -3.5375500319532942168707373066828113573541e+1L);
14287 TEST_f_f (y0, 0x1p-90L, -3.9788212322585974036636501709188067393195e+1L);
14288 TEST_f_f (y0, 0x1p-100L, -4.420092432563900590456563035154802121284e+1L);
14289 TEST_f_f (y0, 0x1p-110L, -4.861363632869203777249475899390797503250e+1L);
14290
8847214f
UD
14291 END (y0);
14292}
14293
14294
14295static void
14296y1_test (void)
14297{
8a216c1b 14298 FLOAT s, c;
8847214f 14299 errno = 0;
cd53c157
UD
14300 FUNC (sincos) (0, &s, &c);
14301 if (errno == ENOSYS)
14302 /* Required function not implemented. */
14303 return;
8847214f
UD
14304 FUNC(y1) (1);
14305 if (errno == ENOSYS)
14306 /* Function not implemented. */
14307 return;
14308
14309 /* y1 is the Bessel function of the second kind of order 1 */
14310 START (y1);
14311
caac9ddb 14312 TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION);
41bf21a1 14313 TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION);
8847214f
UD
14314 TEST_f_f (y1, 0.0, minus_infty);
14315 TEST_f_f (y1, plus_infty, 0);
67e971f1 14316 TEST_f_f (y1, qnan_value, qnan_value);
8847214f 14317
2550dfe9
AJ
14318 TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L);
14319 TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L);
14320 TEST_f_f (y1, 1.0, -0.781212821300288716547150000047964821L);
14321 TEST_f_f (y1, 1.5, -0.412308626973911295952829820633445323L);
14322 TEST_f_f (y1, 2.0, -0.107032431540937546888370772277476637L);
14323 TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L);
14324 TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L);
8847214f 14325
41c7328e 14326 TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L);
c36e1d23
JM
14327
14328#ifndef TEST_FLOAT
2a185d32 14329 TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L);
98c48fe5 14330 TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L);
c36e1d23
JM
14331#endif
14332
d2f9799e
JM
14333#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14334 TEST_f_f (y1, 0x1p16382L, 1.2193782500509000574176799046642541129387e-2466L);
14335 TEST_f_f (y1, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L);
14336#endif
14337
05b227bd
DM
14338 TEST_f_f (y1, 0x1p-10L, -6.5190099301063115047395187618929589514382e+02L);
14339 TEST_f_f (y1, 0x1p-20L, -6.6754421443450423911167962313100637952285e+05L);
14340 TEST_f_f (y1, 0x1p-30L, -6.8356527557643159612937462812258975438856e+08L);
14341 TEST_f_f (y1, 0x1p-40L, -6.9997084219026594793707805777425993547887e+11L);
14342 TEST_f_f (y1, 0x1p-50L, -7.1677014240283233068755952926181262431559e+14L);
14343 TEST_f_f (y1, 0x1p-60L, -7.3397262582050030662406095795388448059822e+17L);
14344 TEST_f_f (y1, 0x1p-70L, -7.5158796884019231398303842094477769620063e+20L);
14345 TEST_f_f (y1, 0x1p-80L, -7.6962608009235692951863134304745236090943e+23L);
14346 TEST_f_f (y1, 0x1p-90L, -7.8809710601457349582707849528059121757126e+26L);
14347 TEST_f_f (y1, 0x1p-100L, -8.0701143655892325972692837916732540679297e+29L);
14348 TEST_f_f (y1, 0x1p-110L, -8.2637971103633741796037466026734121655600e+32L);
14349
8847214f
UD
14350 END (y1);
14351}
14352
2550dfe9 14353
8847214f
UD
14354static void
14355yn_test (void)
14356{
8a216c1b 14357 FLOAT s, c;
8847214f 14358 errno = 0;
cd53c157
UD
14359 FUNC (sincos) (0, &s, &c);
14360 if (errno == ENOSYS)
14361 /* Required function not implemented. */
14362 return;
8847214f
UD
14363 FUNC(yn) (1, 1);
14364 if (errno == ENOSYS)
14365 /* Function not implemented. */
14366 return;
14367
14368 /* yn is the Bessel function of the second kind of order n */
14369 START (yn);
14370
14371 /* yn (0, x) == y0 (x) */
caac9ddb 14372 TEST_ff_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION);
41bf21a1 14373 TEST_ff_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION);
8847214f 14374 TEST_ff_f (yn, 0, 0.0, minus_infty);
67e971f1 14375 TEST_ff_f (yn, 0, qnan_value, qnan_value);
8847214f
UD
14376 TEST_ff_f (yn, 0, plus_infty, 0);
14377
2550dfe9
AJ
14378 TEST_ff_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L);
14379 TEST_ff_f (yn, 0, 0.75L, -0.137172769385772397522814379396581855L);
14380 TEST_ff_f (yn, 0, 1.0, 0.0882569642156769579829267660235151628L);
14381 TEST_ff_f (yn, 0, 1.5, 0.382448923797758843955068554978089862L);
14382 TEST_ff_f (yn, 0, 2.0, 0.510375672649745119596606592727157873L);
14383 TEST_ff_f (yn, 0, 8.0, 0.223521489387566220527323400498620359L);
14384 TEST_ff_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L);
8847214f
UD
14385
14386 /* yn (1, x) == y1 (x) */
caac9ddb 14387 TEST_ff_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION);
8847214f
UD
14388 TEST_ff_f (yn, 1, 0.0, minus_infty);
14389 TEST_ff_f (yn, 1, plus_infty, 0);
67e971f1 14390 TEST_ff_f (yn, 1, qnan_value, qnan_value);
8847214f 14391
2550dfe9
AJ
14392 TEST_ff_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L);
14393 TEST_ff_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L);
14394 TEST_ff_f (yn, 1, 1.0, -0.781212821300288716547150000047964821L);
14395 TEST_ff_f (yn, 1, 1.5, -0.412308626973911295952829820633445323L);
14396 TEST_ff_f (yn, 1, 2.0, -0.107032431540937546888370772277476637L);
14397 TEST_ff_f (yn, 1, 8.0, -0.158060461731247494255555266187483550L);
14398 TEST_ff_f (yn, 1, 10.0, 0.249015424206953883923283474663222803L);
8847214f
UD
14399
14400 /* yn (3, x) */
14401 TEST_ff_f (yn, 3, plus_infty, 0);
67e971f1 14402 TEST_ff_f (yn, 3, qnan_value, qnan_value);
8847214f 14403
2550dfe9
AJ
14404 TEST_ff_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L);
14405 TEST_ff_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L);
14406 TEST_ff_f (yn, 3, 1.0, -5.82151760596472884776175706442981440L);
14407 TEST_ff_f (yn, 3, 2.0, -1.12778377684042778608158395773179238L);
14408 TEST_ff_f (yn, 3, 10.0, -0.251362657183837329779204747654240998L);
8847214f
UD
14409
14410 /* yn (10, x) */
14411 TEST_ff_f (yn, 10, plus_infty, 0);
67e971f1 14412 TEST_ff_f (yn, 10, qnan_value, qnan_value);
8847214f 14413
2550dfe9
AJ
14414 TEST_ff_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L);
14415 TEST_ff_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L);
14416 TEST_ff_f (yn, 10, 1.0, -121618014.278689189288130426667971145L);
14417 TEST_ff_f (yn, 10, 2.0, -129184.542208039282635913145923304214L);
14418 TEST_ff_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L);
8847214f 14419
541428fe
MP
14420 /* Check whether yn returns correct value for LDBL_MIN, DBL_MIN,
14421 and FLT_MIN. See Bug 14173. */
14422 TEST_ff_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION);
8847214f 14423
f2da7793 14424 TEST_ff_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE);
354691b7 14425
541428fe 14426 END (yn);
8847214f
UD
14427}
14428
14429
f5c8f285
UD
14430static void
14431significand_test (void)
14432{
14433 /* significand returns the mantissa of the exponential representation. */
64d063b8
TS
14434
14435 /* TODO: missing +/-Inf as well as qNaN tests. */
14436
f5c8f285
UD
14437 START (significand);
14438
14439 TEST_f_f (significand, 4.0, 1.0);
14440 TEST_f_f (significand, 6.0, 1.5);
14441 TEST_f_f (significand, 8.0, 1.0);
14442
14443 END (significand);
14444}
14445
14446
8847214f
UD
14447static void
14448initialize (void)
14449{
14450 fpstack_test ("start *init*");
8847214f 14451
8847214f
UD
14452 /* Clear all exceptions. From now on we must not get random exceptions. */
14453 feclearexcept (FE_ALL_EXCEPT);
f2da7793 14454 errno = 0;
8847214f
UD
14455
14456 /* Test to make sure we start correctly. */
14457 fpstack_test ("end *init*");
14458}
14459
14460/* Definitions of arguments for argp functions. */
14461static const struct argp_option options[] =
14462{
14463 { "verbose", 'v', "NUMBER", 0, "Level of verbosity (0..3)"},
14464 { "ulps-file", 'u', NULL, 0, "Output ulps to file ULPs"},
14465 { "no-max-error", 'f', NULL, 0,
14466 "Don't output maximal errors of functions"},
14467 { "no-points", 'p', NULL, 0,
14468 "Don't output results of functions invocations"},
cd33623e
UD
14469 { "ignore-max-ulp", 'i', "yes/no", 0,
14470 "Ignore given maximal errors"},
26510bdd
CD
14471 { "output-dir", 'o', "DIR", 0,
14472 "Directory where generated files will be placed"},
8847214f
UD
14473 { NULL, 0, NULL, 0, NULL }
14474};
14475
14476/* Short description of program. */
14477static const char doc[] = "Math test suite: " TEST_MSG ;
14478
14479/* Prototype for option handler. */
fe559c5e 14480static error_t parse_opt (int key, char *arg, struct argp_state *state);
8847214f
UD
14481
14482/* Data structure to communicate with argp functions. */
14483static struct argp argp =
14484{
14485 options, parse_opt, NULL, doc,
14486};
14487
14488
14489/* Handle program arguments. */
14490static error_t
14491parse_opt (int key, char *arg, struct argp_state *state)
14492{
14493 switch (key)
14494 {
14495 case 'f':
6815fabc 14496 output_max_error = 0;
8847214f 14497 break;
cd33623e
UD
14498 case 'i':
14499 if (strcmp (arg, "yes") == 0)
14500 ignore_max_ulp = 1;
14501 else if (strcmp (arg, "no") == 0)
14502 ignore_max_ulp = 0;
14503 break;
26510bdd
CD
14504 case 'o':
14505 output_dir = (char *) malloc (strlen (arg) + 1);
14506 if (output_dir != NULL)
14507 strcpy (output_dir, arg);
14508 else
14509 return errno;
14510 break;
8847214f 14511 case 'p':
6815fabc 14512 output_points = 0;
8847214f
UD
14513 break;
14514 case 'u':
14515 output_ulps = 1;
14516 break;
14517 case 'v':
14518 if (optarg)
14519 verbose = (unsigned int) strtoul (optarg, NULL, 0);
14520 else
14521 verbose = 3;
14522 break;
14523 default:
14524 return ARGP_ERR_UNKNOWN;
14525 }
14526 return 0;
14527}
14528
14529#if 0
14530/* function to check our ulp calculation. */
14531void
14532check_ulp (void)
14533{
14534 int i;
14535
14536 FLOAT u, diff, ulp;
14537 /* This gives one ulp. */
14538 u = FUNC(nextafter) (10, 20);
14539 check_equal (10.0, u, 1, &diff, &ulp);
14540 printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp);
14541
14542 /* This gives one more ulp. */
14543 u = FUNC(nextafter) (u, 20);
14544 check_equal (10.0, u, 2, &diff, &ulp);
14545 printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp);
14546
14547 /* And now calculate 100 ulp. */
14548 for (i = 2; i < 100; i++)
14549 u = FUNC(nextafter) (u, 20);
14550 check_equal (10.0, u, 100, &diff, &ulp);
14551 printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp);
14552}
14553#endif
14554
14555int
14556main (int argc, char **argv)
14557{
14558
14559 int remaining;
26510bdd
CD
14560 char *ulps_file_path;
14561 size_t dir_len = 0;
8847214f
UD
14562
14563 verbose = 1;
14564 output_ulps = 0;
14565 output_max_error = 1;
14566 output_points = 1;
26510bdd 14567 output_dir = NULL;
cd33623e
UD
14568 /* XXX set to 0 for releases. */
14569 ignore_max_ulp = 0;
bdf09fab 14570
8847214f
UD
14571 /* Parse and process arguments. */
14572 argp_parse (&argp, argc, argv, 0, &remaining, NULL);
14573
14574 if (remaining != argc)
14575 {
14576 fprintf (stderr, "wrong number of arguments");
14577 argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
14578 exit (EXIT_FAILURE);
14579 }
14580
14581 if (output_ulps)
14582 {
26510bdd
CD
14583 if (output_dir != NULL)
14584 dir_len = strlen (output_dir);
14585 ulps_file_path = (char *) malloc (dir_len + strlen (ulps_file_name) + 1);
14586 if (ulps_file_path == NULL)
14587 {
14588 perror ("can't allocate path for `ULPs' file: ");
14589 exit (1);
14590 }
14591 sprintf (ulps_file_path, "%s%s", output_dir == NULL ? "" : output_dir, ulps_file_name);
14592 ulps_file = fopen (ulps_file_path, "a");
8847214f
UD
14593 if (ulps_file == NULL)
14594 {
14595 perror ("can't open file `ULPs' for writing: ");
14596 exit (1);
14597 }
14598 }
14599
14600
14601 initialize ();
14602 printf (TEST_MSG);
14603
14604#if 0
14605 check_ulp ();
14606#endif
14607
ec751a23 14608 /* Keep the tests a wee bit ordered (according to ISO C99). */
8847214f 14609 /* Classification macros: */
ef1bb361 14610 finite_test ();
8847214f
UD
14611 fpclassify_test ();
14612 isfinite_test ();
ef1bb361
JM
14613 isinf_test ();
14614 isnan_test ();
8847214f 14615 isnormal_test ();
57267616 14616 issignaling_test ();
8847214f
UD
14617 signbit_test ();
14618
14619 /* Trigonometric functions: */
14620 acos_test ();
5ba3cc69
JM
14621 acos_test_tonearest ();
14622 acos_test_towardzero ();
14623 acos_test_downward ();
14624 acos_test_upward ();
8847214f 14625 asin_test ();
5ba3cc69
JM
14626 asin_test_tonearest ();
14627 asin_test_towardzero ();
14628 asin_test_downward ();
14629 asin_test_upward ();
8847214f
UD
14630 atan_test ();
14631 atan2_test ();
14632 cos_test ();
804360ed
JM
14633 cos_test_tonearest ();
14634 cos_test_towardzero ();
14635 cos_test_downward ();
14636 cos_test_upward ();
8847214f 14637 sin_test ();
804360ed
JM
14638 sin_test_tonearest ();
14639 sin_test_towardzero ();
14640 sin_test_downward ();
14641 sin_test_upward ();
8847214f
UD
14642 sincos_test ();
14643 tan_test ();
804360ed
JM
14644 tan_test_tonearest ();
14645 tan_test_towardzero ();
14646 tan_test_downward ();
14647 tan_test_upward ();
8847214f
UD
14648
14649 /* Hyperbolic functions: */
14650 acosh_test ();
14651 asinh_test ();
14652 atanh_test ();
14653 cosh_test ();
ca811b22
JM
14654 cosh_test_tonearest ();
14655 cosh_test_towardzero ();
14656 cosh_test_downward ();
14657 cosh_test_upward ();
8847214f 14658 sinh_test ();
ca811b22
JM
14659 sinh_test_tonearest ();
14660 sinh_test_towardzero ();
14661 sinh_test_downward ();
14662 sinh_test_upward ();
8847214f
UD
14663 tanh_test ();
14664
14665 /* Exponential and logarithmic functions: */
14666 exp_test ();
28afd92d
JM
14667 exp_test_tonearest ();
14668 exp_test_towardzero ();
14669 exp_test_downward ();
14670 exp_test_upward ();
8847214f
UD
14671 exp10_test ();
14672 exp2_test ();
14673 expm1_test ();
14674 frexp_test ();
14675 ldexp_test ();
14676 log_test ();
14677 log10_test ();
14678 log1p_test ();
14679 log2_test ();
14680 logb_test ();
a462cb63 14681 logb_test_downward ();
8847214f
UD
14682 modf_test ();
14683 ilogb_test ();
14684 scalb_test ();
14685 scalbn_test ();
14686 scalbln_test ();
f5c8f285 14687 significand_test ();
8847214f
UD
14688
14689 /* Power and absolute value functions: */
14690 cbrt_test ();
14691 fabs_test ();
14692 hypot_test ();
14693 pow_test ();
b7cd39e8
JM
14694 pow_test_tonearest ();
14695 pow_test_towardzero ();
14696 pow_test_downward ();
14697 pow_test_upward ();
8847214f
UD
14698 sqrt_test ();
14699
14700 /* Error and gamma functions: */
14701 erf_test ();
14702 erfc_test ();
14703 gamma_test ();
14704 lgamma_test ();
14705 tgamma_test ();
14706
14707 /* Nearest integer functions: */
14708 ceil_test ();
14709 floor_test ();
14710 nearbyint_test ();
14711 rint_test ();
4d37c8aa
UD
14712 rint_test_tonearest ();
14713 rint_test_towardzero ();
14714 rint_test_downward ();
14715 rint_test_upward ();
8847214f 14716 lrint_test ();
6624dbc0
UD
14717 lrint_test_tonearest ();
14718 lrint_test_towardzero ();
14719 lrint_test_downward ();
14720 lrint_test_upward ();
8847214f 14721 llrint_test ();
830fce04
RM
14722 llrint_test_tonearest ();
14723 llrint_test_towardzero ();
14724 llrint_test_downward ();
14725 llrint_test_upward ();
8847214f
UD
14726 round_test ();
14727 lround_test ();
14728 llround_test ();
14729 trunc_test ();
14730
14731 /* Remainder functions: */
14732 fmod_test ();
14733 remainder_test ();
14734 remquo_test ();
14735
14736 /* Manipulation functions: */
14737 copysign_test ();
14738 nextafter_test ();
fe559c5e 14739 nexttoward_test ();
8847214f
UD
14740
14741 /* maximum, minimum and positive difference functions */
14742 fdim_test ();
14743 fmax_test ();
14744 fmin_test ();
14745
14746 /* Multiply and add: */
14747 fma_test ();
8ec5b013
JM
14748 fma_test_towardzero ();
14749 fma_test_downward ();
14750 fma_test_upward ();
8847214f 14751
0e8e0c1c
JM
14752 /* Comparison macros: */
14753 isgreater_test ();
14754 isgreaterequal_test ();
14755 isless_test ();
14756 islessequal_test ();
14757 islessgreater_test ();
14758 isunordered_test ();
14759
8847214f
UD
14760 /* Complex functions: */
14761 cabs_test ();
14762 cacos_test ();
14763 cacosh_test ();
14764 carg_test ();
14765 casin_test ();
14766 casinh_test ();
14767 catan_test ();
14768 catanh_test ();
14769 ccos_test ();
14770 ccosh_test ();
14771 cexp_test ();
0cdc8e6f 14772 cimag_test ();
8847214f
UD
14773 clog10_test ();
14774 clog_test ();
0cdc8e6f 14775 conj_test ();
8847214f
UD
14776 cpow_test ();
14777 cproj_test ();
0cdc8e6f 14778 creal_test ();
8847214f
UD
14779 csin_test ();
14780 csinh_test ();
14781 csqrt_test ();
14782 ctan_test ();
ca61cf32
JM
14783 ctan_test_tonearest ();
14784 ctan_test_towardzero ();
14785 ctan_test_downward ();
14786 ctan_test_upward ();
8847214f 14787 ctanh_test ();
ca61cf32
JM
14788 ctanh_test_tonearest ();
14789 ctanh_test_towardzero ();
14790 ctanh_test_downward ();
14791 ctanh_test_upward ();
8847214f
UD
14792
14793 /* Bessel functions: */
14794 j0_test ();
14795 j1_test ();
14796 jn_test ();
14797 y0_test ();
14798 y1_test ();
14799 yn_test ();
14800
14801 if (output_ulps)
14802 fclose (ulps_file);
14803
14804 printf ("\nTest suite completed:\n");
f2da7793
JM
14805 printf (" %d test cases plus %d tests for exception flags and\n"
14806 " %d tests for errno executed.\n",
14807 noTests, noExcTests, noErrnoTests);
8847214f
UD
14808 if (noErrors)
14809 {
a9a56960 14810 printf (" %d errors occurred.\n", noErrors);
cf3141a5 14811 return 1;
8847214f
UD
14812 }
14813 printf (" All tests passed successfully.\n");
cf3141a5
AJ
14814
14815 return 0;
8847214f
UD
14816}
14817
14818/*
14819 * Local Variables:
14820 * mode:c
14821 * End:
14822 */