1 /* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3 Contributed by Andreas Jaeger <aj@arthur.rhein-neckar.de>, 1997.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public License as
7 published by the Free Software Foundation; either version 2 of the
8 License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
15 You should have received a copy of the GNU Library General Public
16 License along with the GNU C Library; see the file COPYING.LIB. If not,
17 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. */
20 /* Part of testsuite for libm.
22 This file is processed by a perl script. The resulting file has to
23 be included by a master file that defines:
26 FUNC(function): converts general function name (like cos) to
27 name with correct suffix (e.g. cosl or cosf)
28 MATHCONST(x): like FUNC but for constants (e.g convert 0.0 to 0.0L)
29 FLOAT: floating point type to test
30 - TEST_MSG: informal message to be displayed
31 CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat):
32 chooses one of the parameters as delta for testing
34 PRINTF_EXPR Floating point conversion specification to print a variable
35 of type FLOAT with printf. PRINTF_EXPR just contains
36 the specifier, not the percent and width arguments,
38 PRINTF_XEXPR Like PRINTF_EXPR, but print in hexadecimal format.
39 PRINTF_NEXPR Like PRINTF_EXPR, but print nice. */
41 /* This testsuite has currently tests for:
42 acos, acosh, asin, asinh, atan, atan2, atanh,
43 cbrt, ceil, copysign, cos, cosh, erf, erfc, exp, exp10, exp2, expm1,
44 fabs, fdim, floor, fma, fmax, fmin, fmod, fpclassify,
46 ilogb, isfinite, isinf, isnan, isnormal,
47 isless, islessequal, isgreater, isgreaterequal, islessgreater, isunordered,
49 ldexp, lgamma, log, log10, log1p, log2, logb,
50 modf, nearbyint, nextafter,
51 pow, remainder, remquo, rint, lrint, llrint,
52 round, lround, llround,
53 scalb, scalbn, scalbln, signbit, sin, sincos, sinh, sqrt, tan, tanh, tgamma, trunc,
56 and for the following complex math functions:
57 cabs, cacos, cacosh, carg, casin, casinh, catan, catanh,
58 ccos, ccosh, cexp, clog, cpow, cproj, csin, csinh, csqrt, ctan, ctanh.
60 At the moment the following functions aren't tested:
61 drem, significand, nan
63 Parameter handling is primitive in the moment:
64 --verbose=[0..3] for different levels of output:
66 1: basic report on failed tests (default)
67 2: full report on all tests
68 -v for full output (equals --verbose=3)
69 -u for generation of an ULPs file
74 This suite tests some aspects of the correct implementation of
75 mathematical functions in libm. Some simple, specific parameters
76 are tested for correctness but there's no exhaustive
77 testing. Handling of specific inputs (e.g. infinity, not-a-number)
78 is also tested. Correct handling of exceptions is checked
79 against. These implemented tests should check all cases that are
82 Exception testing: At the moment only divide-by-zero and invalid
83 exceptions are tested. Overflow/underflow and inexact exceptions
84 aren't checked at the moment.
86 NaN values: There exist signalling and quiet NaNs. This implementation
87 only uses signalling NaN as parameter but does not differenciate
88 between the two kinds of NaNs as result.
90 Inline functions: Inlining functions should give an improvement in
91 speed - but not in precission. The inlined functions return
92 reasonable values for a reasonable range of input values. The
93 result is not necessarily correct for all values and exceptions are
94 not correctly raised in all cases. Problematic input and return
95 values are infinity, not-a-number and minus zero. This suite
96 therefore does not check these specific inputs and the exception
97 handling for inlined mathematical functions - just the "reasonable"
100 Beware: The tests might fail for any of the following reasons:
102 - Functions are wrong
103 - Floating Point Unit not working properly
104 - Compiler has errors
106 With e.g. gcc 2.7.2.2 the test for cexp fails because of a compiler error.
109 To Do: All parameter should be numbers that can be represented as
110 exact floating point values. Currently some values cannot be represented
111 exactly and therefore the result is not the expected result.
118 #include "libm-test-ulps.h"
130 /* Possible exceptions */
131 #define NO_EXCEPTION 0x0
132 #define INVALID_EXCEPTION 0x1
133 #define DIVIDE_BY_ZERO_EXCEPTION 0x2
134 /* The next flags signals that those exceptions are allowed but not required. */
135 #define INVALID_EXCEPTION_OK 0x4
136 #define DIVIDE_BY_ZERO_EXCEPTION_OK 0x8
137 #define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK
138 /* Some special test flags, passed togther with exceptions. */
139 #define IGNORE_ZERO_INF_SIGN 0x10
141 /* Various constants (we must supply them precalculated for accuracy). */
142 #define M_PI_6l .52359877559829887307710723054658383L
143 #define M_E2l 7.389056098930650227230427460575008L
144 #define M_E3l 20.085536923187667740928529654581719L
145 #define M_2_SQRT_PIl 3.5449077018110320545963349666822903L /* 2 sqrt (M_PIl) */
146 #define M_SQRT_PIl 1.7724538509055160272981674833411451L /* sqrt (M_PIl) */
147 #define M_LOG_SQRT_PIl 0.57236494292470008707171367567652933L /* log(sqrt(M_PIl)) */
148 #define M_LOG_2_SQRT_PIl 1.265512123484645396488945797134706L /* log(2*sqrt(M_PIl)) */
149 #define M_PI_34l (M_PIl - M_PI_4l) /* 3*pi/4 */
150 #define M_PI_34_LOG10El (M_PIl - M_PI_4l) * M_LOG10El
151 #define M_PI2_LOG10El M_PI_2l * M_LOG10El
152 #define M_PI4_LOG10El M_PI_4l * M_LOG10El
153 #define M_PI_LOG10El M_PIl * M_LOG10El
155 static FILE *ulps_file; /* File to document difference. */
156 static int output_ulps; /* Should ulps printed? */
158 static int noErrors; /* number of errors */
159 static int noTests; /* number of tests (without testing exceptions) */
160 static int noExcTests; /* number of tests for exception flags */
161 static int noXFails; /* number of expected failures. */
162 static int noXPasses; /* number of unexpected passes. */
165 static int output_max_error; /* Should the maximal errors printed? */
166 static int output_points; /* Should the single function results printed? */
167 static int ignore_max_ulp; /* Should we ignore max_ulp? */
169 static FLOAT minus_zero, plus_zero;
170 static FLOAT plus_infty, minus_infty, nan_value;
172 static FLOAT max_error, real_max_error, imag_max_error;
175 #define BUILD_COMPLEX(real, imag) \
176 ({ __complex__ FLOAT __retval; \
177 __real__ __retval = (real); \
178 __imag__ __retval = (imag); \
181 #define BUILD_COMPLEX_INT(real, imag) \
182 ({ __complex__ int __retval; \
183 __real__ __retval = (real); \
184 __imag__ __retval = (imag); \
188 #define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1), \
189 (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
192 init_max_error (void)
197 feclearexcept (FE_ALL_EXCEPT);
201 set_max_error (FLOAT current, FLOAT *curr_max_error)
203 if (current > *curr_max_error)
204 *curr_max_error = current;
208 /* Should the message print to screen? This depends on the verbose flag,
209 and the test status. */
211 print_screen (int ok, int xfail)
215 || (verbose == 1 && ok == xfail)))
221 /* Should the message print to screen? This depends on the verbose flag,
222 and the test status. */
224 print_screen_max_error (int ok, int xfail)
228 || ((verbose == 1) && (ok == xfail))))
233 /* Update statistic counters. */
235 update_stats (int ok, int xfail)
240 else if (!ok && xfail)
242 else if (!ok && !xfail)
247 print_ulps (const char *test_name, FLOAT ulp)
251 fprintf (ulps_file, "Test \"%s\":\n", test_name);
252 fprintf (ulps_file, "%s: % .4" PRINTF_NEXPR "\n",
253 CHOOSE("ldouble", "double", "float",
254 "ildouble", "idouble", "ifloat"), ulp);
259 print_function_ulps (const char *function_name, FLOAT ulp)
263 fprintf (ulps_file, "Function: \"%s\":\n", function_name);
264 fprintf (ulps_file, "%s: % .4" PRINTF_NEXPR "\n",
265 CHOOSE("ldouble", "double", "float",
266 "ildouble", "idouble", "ifloat"), ulp);
272 print_complex_function_ulps (const char *function_name, FLOAT real_ulp,
279 fprintf (ulps_file, "Function: Real part of \"%s\":\n", function_name);
280 fprintf (ulps_file, "%s: % .4" PRINTF_NEXPR "\n",
281 CHOOSE("ldouble", "double", "float",
282 "ildouble", "idouble", "ifloat"), real_ulp);
286 fprintf (ulps_file, "Function: Imaginary part of \"%s\":\n", function_name);
287 fprintf (ulps_file, "%s: % .4" PRINTF_NEXPR "\n",
288 CHOOSE("ldouble", "double", "float",
289 "ildouble", "idouble", "ifloat"), imag_ulp);
298 /* Test if Floating-Point stack hasn't changed */
300 fpstack_test (const char *test_name)
303 static int old_stack;
306 asm ("fnstsw" : "=a" (sw));
312 printf ("FP-Stack wrong after test %s (%d, should be %d)\n",
313 test_name, sw, old_stack);
322 print_max_error (const char *func_name, FLOAT allowed, int xfail)
326 if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
332 print_function_ulps (func_name, max_error);
335 if (print_screen_max_error (ok, xfail))
337 printf ("Maximal error of `%s'\n", func_name);
338 printf (" is : % .4" PRINTF_NEXPR " ulp\n", max_error);
339 printf (" accepted: % .4" PRINTF_NEXPR " ulp\n", allowed);
342 update_stats (ok, xfail);
347 print_complex_max_error (const char *func_name, __complex__ FLOAT allowed,
348 __complex__ int xfail)
352 if ((real_max_error <= __real__ allowed)
353 && (imag_max_error <= __imag__ allowed))
359 print_complex_function_ulps (func_name, real_max_error, imag_max_error);
362 if (print_screen_max_error (ok, xfail))
364 printf ("Maximal error of real part of: %s\n", func_name);
365 printf (" is : % .4" PRINTF_NEXPR " ulp\n", real_max_error);
366 printf (" accepted: % .4" PRINTF_NEXPR " ulp\n", __real__ allowed);
367 printf ("Maximal error of imaginary part of: %s\n", func_name);
368 printf (" is : % .4" PRINTF_NEXPR " ulp\n", imag_max_error);
369 printf (" accepted: % .4" PRINTF_NEXPR " ulp\n", __imag__ allowed);
372 update_stats (ok, xfail);
376 /* Test whether a given exception was raised. */
378 test_single_exception (const char *test_name,
382 const char *flag_name)
386 if (exception & exc_flag)
388 if (fetestexcept (fe_flag))
390 if (print_screen (1, 0))
391 printf ("Pass: %s: Exception \"%s\" set\n", test_name, flag_name);
396 if (print_screen (0, 0))
397 printf ("Failure: %s: Exception \"%s\" not set\n",
398 test_name, flag_name);
403 if (fetestexcept (fe_flag))
406 if (print_screen (0, 0))
407 printf ("Failure: %s: Exception \"%s\" set\n",
408 test_name, flag_name);
412 if (print_screen (1, 0))
413 printf ("%s: Exception \"%s\" not set\n", test_name,
424 /* Test whether exceptions given by EXCEPTION are raised. Ignore thereby
425 allowed but not required exceptions.
428 test_exceptions (const char *test_name, int exception)
432 if ((exception & DIVIDE_BY_ZERO_EXCEPTION_OK) == 0)
433 test_single_exception (test_name, exception,
434 DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO,
438 if ((exception & INVALID_EXCEPTION_OK) == 0)
439 test_single_exception (test_name, exception, INVALID_EXCEPTION, FE_INVALID,
440 "Invalid operation");
442 feclearexcept (FE_ALL_EXCEPT);
447 check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
448 FLOAT max_ulp, int xfail, int exceptions,
449 FLOAT *curr_max_error)
456 test_exceptions (test_name, exceptions);
457 if (isnan (computed) && isnan (expected))
459 else if (isinf (computed) && isinf (expected))
461 /* Test for sign of infinities. */
462 if (((exceptions & IGNORE_ZERO_INF_SIGN) == 0)
463 && (isinf (computed) != isinf (expected)))
466 printf ("infinity has wrong sign.\n");
471 /* Don't calc ulp for NaNs or infinities. */
472 else if (isinf (computed) || isnan (computed) || isinf (expected) || isnan (expected))
476 diff = FUNC(fabs) (computed - expected);
477 /* ilogb (0) isn't allowed. */
479 ulp = diff / FUNC(ldexp) (1.0, - MANT_DIG);
481 ulp = diff / FUNC(ldexp) (1.0, FUNC(ilogb) (expected) - MANT_DIG);
482 set_max_error (ulp, curr_max_error);
484 if (((exceptions & IGNORE_ZERO_INF_SIGN) == 0)
485 && (computed == 0.0 && expected == 0.0
486 && signbit(computed) != signbit (expected)))
488 else if (ulp == 0.0 || (ulp <= max_ulp && !ignore_max_ulp))
493 print_ulps (test_name, ulp);
497 if (print_screen (ok, xfail))
500 printf ("Failure: ");
501 printf ("Test: %s\n", test_name);
502 printf ("Result:\n");
503 printf (" is: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR "\n",
505 printf (" should be: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR "\n",
509 printf (" difference: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR
511 printf (" ulp : % .4" PRINTF_NEXPR "\n", ulp);
512 printf (" max.ulp : % .4" PRINTF_NEXPR "\n", max_ulp);
515 update_stats (ok, xfail);
517 fpstack_test (test_name);
522 check_float (const char *test_name, FLOAT computed, FLOAT expected,
523 FLOAT max_ulp, int xfail, int exceptions)
525 check_float_internal (test_name, computed, expected, max_ulp, xfail,
526 exceptions, &max_error);
531 check_complex (const char *test_name, __complex__ FLOAT computed,
532 __complex__ FLOAT expected,
533 __complex__ FLOAT max_ulp, __complex__ int xfail,
536 FLOAT part_comp, part_exp, part_max_ulp;
540 sprintf (str, "Real part of: %s", test_name);
541 part_comp = __real__ computed;
542 part_exp = __real__ expected;
543 part_max_ulp = __real__ max_ulp;
544 part_xfail = __real__ xfail;
546 check_float_internal (str, part_comp, part_exp, part_max_ulp, part_xfail,
547 exception, &real_max_error);
549 sprintf (str, "Imaginary part of: %s", test_name);
550 part_comp = __imag__ computed;
551 part_exp = __imag__ expected;
552 part_max_ulp = __imag__ max_ulp;
553 part_xfail = __imag__ xfail;
555 /* Don't check again for exceptions, just pass through the
556 zero/inf sign test. */
557 check_float_internal (str, part_comp, part_exp, part_max_ulp, part_xfail,
558 exception & IGNORE_ZERO_INF_SIGN,
563 /* Check that computed and expected values are equal (int values). */
565 check_int (const char *test_name, int computed, int expected, int max_ulp,
566 int xfail, int exceptions)
568 int diff = computed - expected;
571 test_exceptions (test_name, exceptions);
573 if (abs (diff) <= max_ulp)
577 print_ulps (test_name, diff);
579 if (print_screen (ok, xfail))
582 printf ("Failure: ");
583 printf ("Test: %s\n", test_name);
584 printf ("Result:\n");
585 printf (" is: %d\n", computed);
586 printf (" should be: %d\n", expected);
589 update_stats (ok, xfail);
590 fpstack_test (test_name);
594 /* Check that computed and expected values are equal (long int values). */
596 check_long (const char *test_name, long int computed, long int expected,
597 long int max_ulp, int xfail, int exceptions)
599 long int diff = computed - expected;
602 test_exceptions (test_name, exceptions);
604 if (labs (diff) <= max_ulp)
608 print_ulps (test_name, diff);
610 if (print_screen (ok, xfail))
613 printf ("Failure: ");
614 printf ("Test: %s\n", test_name);
615 printf ("Result:\n");
616 printf (" is: %ld\n", computed);
617 printf (" should be: %ld\n", expected);
620 update_stats (ok, xfail);
621 fpstack_test (test_name);
625 /* Check that computed value is true/false. */
627 check_bool (const char *test_name, int computed, int expected,
628 long int max_ulp, int xfail, int exceptions)
632 test_exceptions (test_name, exceptions);
634 if ((computed == 0) == (expected == 0))
637 if (print_screen (ok, xfail))
640 printf ("Failure: ");
641 printf ("Test: %s\n", test_name);
642 printf ("Result:\n");
643 printf (" is: %d\n", computed);
644 printf (" should be: %d\n", expected);
647 update_stats (ok, xfail);
648 fpstack_test (test_name);
652 /* check that computed and expected values are equal (long int values) */
654 check_longlong (const char *test_name, long long int computed,
655 long long int expected,
656 long long int max_ulp, int xfail,
659 long long int diff = computed - expected;
662 test_exceptions (test_name, exceptions);
664 if (llabs (diff) <= max_ulp)
668 print_ulps (test_name, diff);
670 if (print_screen (ok, xfail))
674 printf ("Test: %s\n", test_name);
675 printf ("Result:\n");
676 printf (" is: %lld\n", computed);
677 printf (" should be: %lld\n", expected);
680 update_stats (ok, xfail);
681 fpstack_test (test_name);
686 /* This is to prevent messages from the SVID libm emulation. */
688 matherr (struct exception *x __attribute__ ((unused)))
694 /****************************************************************************
695 Tests for single functions of libm.
696 Please keep them alphabetically sorted!
697 ****************************************************************************/
705 /* Function not implemented. */
710 TEST_f_f (acos, plus_infty, nan_value, INVALID_EXCEPTION);
711 TEST_f_f (acos, minus_infty, nan_value, INVALID_EXCEPTION);
712 TEST_f_f (acos, nan_value, nan_value);
715 TEST_f_f (acos, 1.1L, nan_value, INVALID_EXCEPTION);
716 TEST_f_f (acos, -1.1L, nan_value, INVALID_EXCEPTION);
718 TEST_f_f (acos, 0, M_PI_2l);
719 TEST_f_f (acos, minus_zero, M_PI_2l);
720 TEST_f_f (acos, 1, 0);
721 TEST_f_f (acos, -1, M_PIl);
722 TEST_f_f (acos, 0.5, M_PI_6l*2.0);
723 TEST_f_f (acos, -0.5, M_PI_6l*4.0);
724 TEST_f_f (acos, 0.7L, 0.79539883018414355549096833892476432L);
735 /* Function not implemented. */
740 TEST_f_f (acosh, plus_infty, plus_infty);
741 TEST_f_f (acosh, minus_infty, nan_value, INVALID_EXCEPTION);
744 TEST_f_f (acosh, -1.1L, nan_value, INVALID_EXCEPTION);
746 TEST_f_f (acosh, 1, 0);
747 TEST_f_f (acosh, 7, 2.633915793849633417250092694615937L);
758 /* Function not implemented. */
763 TEST_f_f (asin, plus_infty, nan_value, INVALID_EXCEPTION);
764 TEST_f_f (asin, minus_infty, nan_value, INVALID_EXCEPTION);
765 TEST_f_f (asin, nan_value, nan_value);
767 /* asin x == NaN plus invalid exception for |x| > 1. */
768 TEST_f_f (asin, 1.1L, nan_value, INVALID_EXCEPTION);
769 TEST_f_f (asin, -1.1L, nan_value, INVALID_EXCEPTION);
771 TEST_f_f (asin, 0, 0);
772 TEST_f_f (asin, minus_zero, minus_zero);
773 TEST_f_f (asin, 0.5, M_PI_6l);
774 TEST_f_f (asin, -0.5, -M_PI_6l);
775 TEST_f_f (asin, 1.0, M_PI_2l);
776 TEST_f_f (asin, -1.0, -M_PI_2l);
777 TEST_f_f (asin, 0.7L, 0.77539749661075306374035335271498708L);
788 /* Function not implemented. */
793 TEST_f_f (asinh, 0, 0);
794 TEST_f_f (asinh, minus_zero, minus_zero);
796 TEST_f_f (asinh, plus_infty, plus_infty);
797 TEST_f_f (asinh, minus_infty, minus_infty);
799 TEST_f_f (asinh, nan_value, nan_value);
800 TEST_f_f (asinh, 0.7L, 0.652666566082355786L);
811 /* Function not implemented. */
816 TEST_f_f (atan, 0, 0);
817 TEST_f_f (atan, minus_zero, minus_zero);
819 TEST_f_f (atan, plus_infty, M_PI_2l);
820 TEST_f_f (atan, minus_infty, -M_PI_2l);
821 TEST_f_f (atan, nan_value, nan_value);
823 TEST_f_f (atan, 1, M_PI_4l);
824 TEST_f_f (atan, -1, -M_PI_4l);
826 TEST_f_f (atan, 0.7L, 0.61072596438920861654375887649023613L);
839 /* Function not implemented. */
845 TEST_f_f (atanh, 0, 0);
846 TEST_f_f (atanh, minus_zero, minus_zero);
848 TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
849 TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
850 TEST_f_f (atanh, nan_value, nan_value);
852 /* atanh (x) == NaN plus invalid exception if |x| > 1. */
853 TEST_f_f (atanh, 1.1L, nan_value, INVALID_EXCEPTION);
854 TEST_f_f (atanh, -1.1L, nan_value, INVALID_EXCEPTION);
856 TEST_f_f (atanh, 0.7L, 0.8673005276940531944L);
867 /* Function not implemented. */
872 /* atan2 (0,x) == 0 for x > 0. */
873 TEST_ff_f (atan2, 0, 1, 0);
875 /* atan2 (-0,x) == -0 for x > 0. */
876 TEST_ff_f (atan2, minus_zero, 1, minus_zero);
878 TEST_ff_f (atan2, 0, 0, 0);
879 TEST_ff_f (atan2, minus_zero, 0, minus_zero);
881 /* atan2 (+0,x) == +pi for x < 0. */
882 TEST_ff_f (atan2, 0, -1, M_PIl);
884 /* atan2 (-0,x) == -pi for x < 0. */
885 TEST_ff_f (atan2, minus_zero, -1, -M_PIl);
887 TEST_ff_f (atan2, 0, minus_zero, M_PIl);
888 TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl);
890 /* atan2 (y,+0) == pi/2 for y > 0. */
891 TEST_ff_f (atan2, 1, 0, M_PI_2l);
893 /* atan2 (y,-0) == pi/2 for y > 0. */
894 TEST_ff_f (atan2, 1, minus_zero, M_PI_2l);
896 /* atan2 (y,+0) == -pi/2 for y < 0. */
897 TEST_ff_f (atan2, -1, 0, -M_PI_2l);
899 /* atan2 (y,-0) == -pi/2 for y < 0. */
900 TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l);
902 /* atan2 (y,inf) == +0 for finite y > 0. */
903 TEST_ff_f (atan2, 1, plus_infty, 0);
905 /* atan2 (y,inf) == -0 for finite y < 0. */
906 TEST_ff_f (atan2, -1, plus_infty, minus_zero);
908 /* atan2(+inf, x) == pi/2 for finite x. */
909 TEST_ff_f (atan2, plus_infty, -1, M_PI_2l);
911 /* atan2(-inf, x) == -pi/2 for finite x. */
912 TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l);
914 /* atan2 (y,-inf) == +pi for finite y > 0. */
915 TEST_ff_f (atan2, 1, minus_infty, M_PIl);
917 /* atan2 (y,-inf) == -pi for finite y < 0. */
918 TEST_ff_f (atan2, -1, minus_infty, -M_PIl);
920 TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l);
921 TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l);
922 TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l);
923 TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l);
924 TEST_ff_f (atan2, nan_value, nan_value, nan_value);
926 TEST_ff_f (atan2, 0.7L, 1, 0.61072596438920861654375887649023613L);
927 TEST_ff_f (atan2, -0.7L, 1.0L, -0.61072596438920861654375887649023613L);
928 TEST_ff_f (atan2, 0.7L, -1.0L, 2.530866689200584621918884506789267L);
929 TEST_ff_f (atan2, -0.7L, -1.0L, -2.530866689200584621918884506789267L);
930 TEST_ff_f (atan2, 0.4L, 0.0003L, 1.5700463269355215717704032607580829L);
931 TEST_ff_f (atan2, 1.4L, -0.93L, 2.1571487668237843754887415992772736L);
941 FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L));
943 /* Function not implemented. */
948 /* cabs (x + iy) is specified as hypot (x,y) */
950 /* cabs (+inf + i x) == +inf. */
951 TEST_c_f (cabs, plus_infty, 1.0, plus_infty);
952 /* cabs (-inf + i x) == +inf. */
953 TEST_c_f (cabs, minus_infty, 1.0, plus_infty);
955 TEST_c_f (cabs, minus_infty, nan_value, plus_infty);
956 TEST_c_f (cabs, minus_infty, nan_value, plus_infty);
958 TEST_c_f (cabs, nan_value, nan_value, nan_value);
960 /* cabs (x,y) == cabs (y,x). */
961 TEST_c_f (cabs, 0.7L, 12.4L, 12.419742348374220601176836866763271L);
962 /* cabs (x,y) == cabs (-x,y). */
963 TEST_c_f (cabs, -12.4L, 0.7L, 12.419742348374220601176836866763271L);
964 /* cabs (x,y) == cabs (-y,x). */
965 TEST_c_f (cabs, -0.7L, 12.4L, 12.419742348374220601176836866763271L);
966 /* cabs (x,y) == cabs (-x,-y). */
967 TEST_c_f (cabs, -12.4L, -0.7L, 12.419742348374220601176836866763271L);
968 /* cabs (x,y) == cabs (-y,-x). */
969 TEST_c_f (cabs, -0.7L, -12.4L, 12.419742348374220601176836866763271L);
970 /* cabs (x,0) == fabs (x). */
971 TEST_c_f (cabs, -0.7L, 0, 0.7L);
972 TEST_c_f (cabs, 0.7L, 0, 0.7L);
973 TEST_c_f (cabs, -1.0L, 0, 1.0L);
974 TEST_c_f (cabs, 1.0L, 0, 1.0L);
975 TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L);
976 TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L);
978 TEST_c_f (cabs, 0.7L, 1.2L, 1.3892443989449804508432547041028554L);
987 FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L));
989 /* Function not implemented. */
995 TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero);
996 TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero);
997 TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0);
998 TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0);
1000 TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty);
1001 TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty);
1003 TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty);
1004 TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty);
1006 TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty);
1007 TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty);
1008 TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty);
1009 TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty);
1010 TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty);
1011 TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty);
1013 TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty);
1014 TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty);
1015 TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty);
1016 TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty);
1018 TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty);
1019 TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty);
1020 TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty);
1021 TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty);
1023 TEST_c_c (cacos, plus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
1024 TEST_c_c (cacos, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
1026 TEST_c_c (cacos, 0, nan_value, M_PI_2l, nan_value);
1027 TEST_c_c (cacos, minus_zero, nan_value, M_PI_2l, nan_value);
1029 TEST_c_c (cacos, nan_value, plus_infty, nan_value, minus_infty);
1030 TEST_c_c (cacos, nan_value, minus_infty, nan_value, plus_infty);
1032 TEST_c_c (cacos, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1033 TEST_c_c (cacos, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1035 TEST_c_c (cacos, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
1036 TEST_c_c (cacos, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
1038 TEST_c_c (cacos, nan_value, nan_value, nan_value, nan_value);
1040 TEST_c_c (cacos, 0.7L, 1.2L, 1.1351827477151551088992008271819053L, -1.0927647857577371459105272080819308L);
1041 TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L);
1043 END (cacos, complex);
1051 FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L));
1052 if (errno == ENOSYS)
1053 /* Function not implemented. */
1059 TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l);
1060 TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l);
1061 TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l);
1062 TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l);
1063 TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l);
1064 TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l);
1066 TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l);
1067 TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l);
1069 TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l);
1070 TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l);
1071 TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l);
1072 TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l);
1073 TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l);
1074 TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l);
1076 TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl);
1077 TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl);
1078 TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl);
1079 TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl);
1081 TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0);
1082 TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero);
1083 TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0);
1084 TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero);
1086 TEST_c_c (cacosh, plus_infty, nan_value, plus_infty, nan_value);
1087 TEST_c_c (cacosh, minus_infty, nan_value, plus_infty, nan_value);
1089 TEST_c_c (cacosh, 0, nan_value, nan_value, nan_value);
1090 TEST_c_c (cacosh, minus_zero, nan_value, nan_value, nan_value);
1092 TEST_c_c (cacosh, nan_value, plus_infty, plus_infty, nan_value);
1093 TEST_c_c (cacosh, nan_value, minus_infty, plus_infty, nan_value);
1095 TEST_c_c (cacosh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1096 TEST_c_c (cacosh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1098 TEST_c_c (cacosh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
1099 TEST_c_c (cacosh, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
1101 TEST_c_c (cacosh, nan_value, nan_value, nan_value, nan_value);
1103 TEST_c_c (cacosh, 0.7L, 1.2L, 1.0927647857577371459105272080819308L, 1.1351827477151551088992008271819053L);
1104 TEST_c_c (cacosh, -2, -3, -1.9833870299165354323470769028940395L, 2.1414491111159960199416055713254211L);
1106 END (cacosh, complex);
1114 /* carg (x + iy) is specified as atan2 (y, x) */
1116 /* carg (x + i 0) == 0 for x > 0. */
1117 TEST_c_f (carg, 2.0, 0, 0);
1118 /* carg (x - i 0) == -0 for x > 0. */
1119 TEST_c_f (carg, 2.0, minus_zero, minus_zero);
1121 TEST_c_f (carg, 0, 0, 0);
1122 TEST_c_f (carg, 0, minus_zero, minus_zero);
1124 /* carg (x + i 0) == +pi for x < 0. */
1125 TEST_c_f (carg, -2.0, 0, M_PIl);
1127 /* carg (x - i 0) == -pi for x < 0. */
1128 TEST_c_f (carg, -2.0, minus_zero, -M_PIl);
1130 TEST_c_f (carg, minus_zero, 0, M_PIl);
1131 TEST_c_f (carg, minus_zero, minus_zero, -M_PIl);
1133 /* carg (+0 + i y) == pi/2 for y > 0. */
1134 TEST_c_f (carg, 0, 2.0, M_PI_2l);
1136 /* carg (-0 + i y) == pi/2 for y > 0. */
1137 TEST_c_f (carg, minus_zero, 2.0, M_PI_2l);
1139 /* carg (+0 + i y) == -pi/2 for y < 0. */
1140 TEST_c_f (carg, 0, -2.0, -M_PI_2l);
1142 /* carg (-0 + i y) == -pi/2 for y < 0. */
1143 TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l);
1145 /* carg (inf + i y) == +0 for finite y > 0. */
1146 TEST_c_f (carg, plus_infty, 2.0, 0);
1148 /* carg (inf + i y) == -0 for finite y < 0. */
1149 TEST_c_f (carg, plus_infty, -2.0, minus_zero);
1151 /* carg(x + i inf) == pi/2 for finite x. */
1152 TEST_c_f (carg, 10.0, plus_infty, M_PI_2l);
1154 /* carg(x - i inf) == -pi/2 for finite x. */
1155 TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l);
1157 /* carg (-inf + i y) == +pi for finite y > 0. */
1158 TEST_c_f (carg, minus_infty, 10.0, M_PIl);
1160 /* carg (-inf + i y) == -pi for finite y < 0. */
1161 TEST_c_f (carg, minus_infty, -10.0, -M_PIl);
1163 TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l);
1165 TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l);
1167 TEST_c_f (carg, minus_infty, plus_infty, 3 * M_PI_4l);
1169 TEST_c_f (carg, minus_infty, minus_infty, -3 * M_PI_4l);
1171 TEST_c_f (carg, nan_value, nan_value, nan_value);
1180 FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L));
1181 if (errno == ENOSYS)
1182 /* Function not implemented. */
1187 TEST_c_c (casin, 0, 0, 0.0, 0.0);
1188 TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0);
1189 TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero);
1190 TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero);
1192 TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty);
1193 TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty);
1194 TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty);
1195 TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty);
1197 TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty);
1198 TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty);
1199 TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty);
1200 TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty);
1201 TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty);
1202 TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty);
1203 TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty);
1204 TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty);
1206 TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty);
1207 TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty);
1208 TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty);
1209 TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty);
1211 TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty);
1212 TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty);
1213 TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty);
1214 TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty);
1216 TEST_c_c (casin, nan_value, plus_infty, nan_value, plus_infty);
1217 TEST_c_c (casin, nan_value, minus_infty, nan_value, minus_infty);
1219 TEST_c_c (casin, 0.0, nan_value, 0.0, nan_value);
1220 TEST_c_c (casin, minus_zero, nan_value, minus_zero, nan_value);
1222 TEST_c_c (casin, plus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
1223 TEST_c_c (casin, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
1225 TEST_c_c (casin, nan_value, 10.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
1226 TEST_c_c (casin, nan_value, -10.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
1228 TEST_c_c (casin, 0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1229 TEST_c_c (casin, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1231 TEST_c_c (casin, nan_value, nan_value, nan_value, nan_value);
1233 TEST_c_c (casin, 0.7L, 1.2L, 0.4356135790797415103321208644578462L, 1.0927647857577371459105272080819308L);
1234 TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L);
1236 END (casin, complex);
1244 FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L));
1245 if (errno == ENOSYS)
1246 /* Function not implemented. */
1251 TEST_c_c (casinh, 0, 0, 0.0, 0.0);
1252 TEST_c_c (casinh, minus_zero, 0, minus_zero, 0);
1253 TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero);
1254 TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero);
1256 TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l);
1257 TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l);
1258 TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l);
1259 TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l);
1261 TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l);
1262 TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l);
1263 TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l);
1264 TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l);
1265 TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l);
1266 TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l);
1267 TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l);
1268 TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l);
1270 TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0);
1271 TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero);
1272 TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0);
1273 TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero);
1275 TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0);
1276 TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero);
1277 TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0);
1278 TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero);
1280 TEST_c_c (casinh, plus_infty, nan_value, plus_infty, nan_value);
1281 TEST_c_c (casinh, minus_infty, nan_value, minus_infty, nan_value);
1283 TEST_c_c (casinh, nan_value, 0, nan_value, 0.0);
1284 TEST_c_c (casinh, nan_value, minus_zero, nan_value, minus_zero);
1286 TEST_c_c (casinh, nan_value, plus_infty, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN);
1287 TEST_c_c (casinh, nan_value, minus_infty, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN);
1289 TEST_c_c (casinh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1290 TEST_c_c (casinh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1292 TEST_c_c (casinh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
1293 TEST_c_c (casinh, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1295 TEST_c_c (casinh, nan_value, nan_value, nan_value, nan_value);
1297 TEST_c_c (casinh, 0.7L, 1.2L, 0.97865459559367387689317593222160964L, 0.91135418953156011567903546856170941L);
1298 TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L);
1300 END (casinh, complex);
1308 FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L));
1309 if (errno == ENOSYS)
1310 /* Function not implemented. */
1315 TEST_c_c (catan, 0, 0, 0, 0);
1316 TEST_c_c (catan, minus_zero, 0, minus_zero, 0);
1317 TEST_c_c (catan, 0, minus_zero, 0, minus_zero);
1318 TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero);
1320 TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0);
1321 TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero);
1322 TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0);
1323 TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero);
1326 TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero);
1327 TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero);
1328 TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero);
1329 TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero);
1330 TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0);
1331 TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0);
1332 TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0);
1333 TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0);
1335 TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero);
1336 TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero);
1337 TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero);
1338 TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero);
1340 TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0);
1341 TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0);
1342 TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0);
1343 TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0);
1345 TEST_c_c (catan, nan_value, 0.0, nan_value, 0);
1346 TEST_c_c (catan, nan_value, minus_zero, nan_value, minus_zero);
1348 TEST_c_c (catan, nan_value, plus_infty, nan_value, 0);
1349 TEST_c_c (catan, nan_value, minus_infty, nan_value, minus_zero);
1351 TEST_c_c (catan, 0.0, nan_value, nan_value, nan_value);
1352 TEST_c_c (catan, minus_zero, nan_value, nan_value, nan_value);
1354 TEST_c_c (catan, plus_infty, nan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN);
1355 TEST_c_c (catan, minus_infty, nan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN);
1357 TEST_c_c (catan, nan_value, 10.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
1358 TEST_c_c (catan, nan_value, -10.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
1360 TEST_c_c (catan, 0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1361 TEST_c_c (catan, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1363 TEST_c_c (catan, nan_value, nan_value, nan_value, nan_value);
1365 TEST_c_c (catan, 0.7L, 1.2L, 1.0785743834118921877443707996386368L, 0.57705737765343067644394541889341712L);
1367 TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L);
1369 END (catan, complex);
1376 FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L));
1377 if (errno == ENOSYS)
1378 /* Function not implemented. */
1383 TEST_c_c (catanh, 0, 0, 0.0, 0.0);
1384 TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0);
1385 TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero);
1386 TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero);
1388 TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l);
1389 TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l);
1390 TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l);
1391 TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l);
1393 TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l);
1394 TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l);
1395 TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l);
1396 TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l);
1397 TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l);
1398 TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l);
1399 TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l);
1400 TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l);
1402 TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l);
1403 TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l);
1404 TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l);
1405 TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l);
1407 TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l);
1408 TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l);
1409 TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l);
1410 TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l);
1412 TEST_c_c (catanh, 0, nan_value, 0.0, nan_value);
1413 TEST_c_c (catanh, minus_zero, nan_value, minus_zero, nan_value);
1415 TEST_c_c (catanh, plus_infty, nan_value, 0.0, nan_value);
1416 TEST_c_c (catanh, minus_infty, nan_value, minus_zero, nan_value);
1418 TEST_c_c (catanh, nan_value, 0, nan_value, nan_value);
1419 TEST_c_c (catanh, nan_value, minus_zero, nan_value, nan_value);
1421 TEST_c_c (catanh, nan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN);
1422 TEST_c_c (catanh, nan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN);
1424 TEST_c_c (catanh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1425 TEST_c_c (catanh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1427 TEST_c_c (catanh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
1428 TEST_c_c (catanh, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
1430 TEST_c_c (catanh, nan_value, nan_value, nan_value, nan_value);
1432 TEST_c_c (catanh, 0.7L, 1.2L, 0.2600749516525135959200648705635915L, 0.97024030779509898497385130162655963L);
1433 TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L);
1435 END (catanh, complex);
1443 if (errno == ENOSYS)
1444 /* Function not implemented. */
1449 TEST_f_f (cbrt, 0.0, 0.0);
1450 TEST_f_f (cbrt, minus_zero, minus_zero);
1452 TEST_f_f (cbrt, plus_infty, plus_infty);
1453 TEST_f_f (cbrt, minus_infty, minus_infty);
1454 TEST_f_f (cbrt, nan_value, nan_value);
1456 TEST_f_f (cbrt, -0.001L, -0.1L);
1457 TEST_f_f (cbrt, 8, 2);
1458 TEST_f_f (cbrt, -27.0, -3.0);
1459 TEST_f_f (cbrt, 0.970299L, 0.99L);
1460 TEST_f_f (cbrt, 0.7L, 0.8879040017426007084L);
1469 FUNC(ccos) (BUILD_COMPLEX (0, 0));
1470 if (errno == ENOSYS)
1471 /* Function not implemented. */
1476 TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero);
1477 TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0);
1478 TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0);
1479 TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero);
1481 TEST_c_c (ccos, plus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1482 TEST_c_c (ccos, plus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1483 TEST_c_c (ccos, minus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1484 TEST_c_c (ccos, minus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1486 TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero);
1487 TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0);
1488 TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0);
1489 TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero);
1491 TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
1492 TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
1493 TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
1494 TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
1496 TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty);
1497 TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty);
1498 TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty);
1499 TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty);
1501 TEST_c_c (ccos, plus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION);
1502 TEST_c_c (ccos, plus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION);
1503 TEST_c_c (ccos, minus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION);
1504 TEST_c_c (ccos, minus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION);
1506 TEST_c_c (ccos, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
1507 TEST_c_c (ccos, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
1509 TEST_c_c (ccos, nan_value, plus_infty, plus_infty, nan_value);
1510 TEST_c_c (ccos, nan_value, minus_infty, plus_infty, nan_value);
1512 TEST_c_c (ccos, nan_value, 9.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
1513 TEST_c_c (ccos, nan_value, -9.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
1515 TEST_c_c (ccos, 0.0, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
1516 TEST_c_c (ccos, minus_zero, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
1518 TEST_c_c (ccos, 10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1519 TEST_c_c (ccos, -10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1521 TEST_c_c (ccos, plus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1522 TEST_c_c (ccos, minus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1524 TEST_c_c (ccos, nan_value, nan_value, nan_value, nan_value);
1526 TEST_c_c (ccos, 0.7L, 1.2L, 1.3848657645312111080L, -0.97242170335830028619L);
1528 TEST_c_c (ccos, -2, -3, -4.1896256909688072301L, -9.1092278937553365979L);
1530 END (ccos, complex);
1538 FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L));
1539 if (errno == ENOSYS)
1540 /* Function not implemented. */
1545 TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0);
1546 TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero);
1547 TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero);
1548 TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0);
1550 TEST_c_c (ccosh, 0.0, plus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1551 TEST_c_c (ccosh, minus_zero, plus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1552 TEST_c_c (ccosh, 0.0, minus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1553 TEST_c_c (ccosh, minus_zero, minus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1555 TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0);
1556 TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero);
1557 TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero);
1558 TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0);
1560 TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
1561 TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
1562 TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
1563 TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
1565 TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty);
1566 TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty);
1567 TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty);
1568 TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty);
1570 TEST_c_c (ccosh, 6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1571 TEST_c_c (ccosh, -6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1572 TEST_c_c (ccosh, 6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1573 TEST_c_c (ccosh, -6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1575 TEST_c_c (ccosh, 0.0, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
1576 TEST_c_c (ccosh, minus_zero, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
1578 TEST_c_c (ccosh, plus_infty, nan_value, plus_infty, nan_value);
1579 TEST_c_c (ccosh, minus_infty, nan_value, plus_infty, nan_value);
1581 TEST_c_c (ccosh, 9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1582 TEST_c_c (ccosh, -9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1584 TEST_c_c (ccosh, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
1585 TEST_c_c (ccosh, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
1587 TEST_c_c (ccosh, nan_value, 10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
1588 TEST_c_c (ccosh, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
1590 TEST_c_c (ccosh, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
1591 TEST_c_c (ccosh, nan_value, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
1593 TEST_c_c (ccosh, nan_value, nan_value, nan_value, nan_value);
1595 TEST_c_c (ccosh, 0.7L, 1.2L, 0.4548202223691477654L, 0.7070296600921537682L);
1597 TEST_c_c (ccosh, -2, -3, -3.7245455049153225654L, 0.5118225699873846088L);
1599 END (ccosh, complex);
1608 TEST_f_f (ceil, 0.0, 0.0);
1609 TEST_f_f (ceil, minus_zero, minus_zero);
1610 TEST_f_f (ceil, plus_infty, plus_infty);
1611 TEST_f_f (ceil, minus_infty, minus_infty);
1612 TEST_f_f (ceil, nan_value, nan_value);
1614 TEST_f_f (ceil, M_PIl, 4.0);
1615 TEST_f_f (ceil, -M_PIl, -3.0);
1625 FUNC(cexp) (BUILD_COMPLEX (0, 0));
1626 if (errno == ENOSYS)
1627 /* Function not implemented. */
1632 TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0);
1633 TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0);
1634 TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero);
1635 TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero);
1637 TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0);
1638 TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero);
1640 TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0);
1641 TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero);
1643 TEST_c_c (cexp, 0.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1644 TEST_c_c (cexp, minus_zero, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1646 TEST_c_c (cexp, 0.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1647 TEST_c_c (cexp, minus_zero, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1649 TEST_c_c (cexp, 100.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1650 TEST_c_c (cexp, -100.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1652 TEST_c_c (cexp, 100.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1653 TEST_c_c (cexp, -100.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
1655 TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0);
1656 TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero);
1657 TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty);
1658 TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty);
1660 TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1661 TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
1663 TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN);
1664 TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN);
1666 TEST_c_c (cexp, minus_infty, nan_value, 0, 0, IGNORE_ZERO_INF_SIGN);
1668 TEST_c_c (cexp, plus_infty, nan_value, plus_infty, nan_value);
1670 TEST_c_c (cexp, nan_value, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
1671 TEST_c_c (cexp, nan_value, 1.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
1673 TEST_c_c (cexp, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
1674 TEST_c_c (cexp, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1675 TEST_c_c (cexp, 1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1676 TEST_c_c (cexp, nan_value, nan_value, nan_value, nan_value);
1678 TEST_c_c (cexp, 0.7L, 1.2L, 0.72969890915032360123451688642930727L, 1.8768962328348102821139467908203072L);
1679 TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L);
1681 END (cexp, complex);
1688 TEST_c_f (cimag, 1.0, 0.0, 0.0);
1689 TEST_c_f (cimag, 1.0, minus_zero, minus_zero);
1690 TEST_c_f (cimag, 1.0, nan_value, nan_value);
1691 TEST_c_f (cimag, nan_value, nan_value, nan_value);
1692 TEST_c_f (cimag, 1.0, plus_infty, plus_infty);
1693 TEST_c_f (cimag, 1.0, minus_infty, minus_infty);
1694 TEST_c_f (cimag, 2.0, 3.0, 3.0);
1703 FUNC(clog) (BUILD_COMPLEX (-2, -3));
1704 if (errno == ENOSYS)
1705 /* Function not implemented. */
1710 TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
1711 TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
1713 TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION);
1714 TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION);
1716 TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l);
1717 TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l);
1719 TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l);
1720 TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l);
1722 TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l);
1723 TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l);
1724 TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l);
1725 TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l);
1726 TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l);
1727 TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l);
1728 TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l);
1729 TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l);
1731 TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl);
1732 TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl);
1733 TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl);
1734 TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl);
1736 TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0);
1737 TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0);
1738 TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero);
1739 TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero);
1741 TEST_c_c (clog, plus_infty, nan_value, plus_infty, nan_value);
1742 TEST_c_c (clog, minus_infty, nan_value, plus_infty, nan_value);
1744 TEST_c_c (clog, nan_value, plus_infty, plus_infty, nan_value);
1745 TEST_c_c (clog, nan_value, minus_infty, plus_infty, nan_value);
1747 TEST_c_c (clog, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1748 TEST_c_c (clog, 3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1749 TEST_c_c (clog, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1750 TEST_c_c (clog, -3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1752 TEST_c_c (clog, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK);
1753 TEST_c_c (clog, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK);
1754 TEST_c_c (clog, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK);
1755 TEST_c_c (clog, nan_value, -5, nan_value, nan_value, INVALID_EXCEPTION_OK);
1757 TEST_c_c (clog, nan_value, nan_value, nan_value, nan_value);
1758 TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L);
1760 END (clog, complex);
1768 FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L));
1769 if (errno == ENOSYS)
1770 /* Function not implemented. */
1775 TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
1776 TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
1778 TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION);
1779 TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION);
1781 TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El);
1783 TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El);
1784 TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El);
1786 TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El);
1787 TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El);
1788 TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El);
1789 TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El);
1790 TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El);
1791 TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El);
1792 TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El);
1793 TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El);
1795 TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El);
1796 TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El);
1797 TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El);
1798 TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El);
1800 TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0);
1801 TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0);
1802 TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero);
1803 TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero);
1805 TEST_c_c (clog10, plus_infty, nan_value, plus_infty, nan_value);
1806 TEST_c_c (clog10, minus_infty, nan_value, plus_infty, nan_value);
1808 TEST_c_c (clog10, nan_value, plus_infty, plus_infty, nan_value);
1809 TEST_c_c (clog10, nan_value, minus_infty, plus_infty, nan_value);
1811 TEST_c_c (clog10, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1812 TEST_c_c (clog10, 3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1813 TEST_c_c (clog10, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1814 TEST_c_c (clog10, -3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
1816 TEST_c_c (clog10, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK);
1817 TEST_c_c (clog10, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK);
1818 TEST_c_c (clog10, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK);
1819 TEST_c_c (clog10, nan_value, -5, nan_value, nan_value, INVALID_EXCEPTION_OK);
1821 TEST_c_c (clog10, nan_value, nan_value, nan_value, nan_value);
1823 TEST_c_c (clog10, 0.7L, 1.2L, 0.1427786545038868803L, 0.4528483579352493248L);
1824 TEST_c_c (clog10, -2, -3, 0.5569716761534183846L, -0.9375544629863747085L);
1826 END (clog10, complex);
1833 TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero);
1834 TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0);
1835 TEST_c_c (conj, nan_value, nan_value, nan_value, nan_value);
1836 TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty);
1837 TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty);
1838 TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0);
1839 TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0);
1841 END (conj, complex);
1846 copysign_test (void)
1850 TEST_ff_f (copysign, 0, 4, 0);
1851 TEST_ff_f (copysign, 0, -4, minus_zero);
1852 TEST_ff_f (copysign, minus_zero, 4, 0);
1853 TEST_ff_f (copysign, minus_zero, -4, minus_zero);
1855 TEST_ff_f (copysign, plus_infty, 0, plus_infty);
1856 TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty);
1857 TEST_ff_f (copysign, minus_infty, 0, plus_infty);
1858 TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty);
1860 TEST_ff_f (copysign, 0, plus_infty, 0);
1861 TEST_ff_f (copysign, 0, minus_zero, minus_zero);
1862 TEST_ff_f (copysign, minus_zero, plus_infty, 0);
1863 TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero);
1865 /* XXX More correctly we would have to check the sign of the NaN. */
1866 TEST_ff_f (copysign, nan_value, 0, nan_value);
1867 TEST_ff_f (copysign, nan_value, minus_zero, nan_value);
1868 TEST_ff_f (copysign, -nan_value, 0, nan_value);
1869 TEST_ff_f (copysign, -nan_value, minus_zero, nan_value);
1879 if (errno == ENOSYS)
1880 /* Function not implemented. */
1885 TEST_f_f (cos, 0, 1);
1886 TEST_f_f (cos, minus_zero, 1);
1887 TEST_f_f (cos, plus_infty, nan_value, INVALID_EXCEPTION);
1888 TEST_f_f (cos, minus_infty, nan_value, INVALID_EXCEPTION);
1889 TEST_f_f (cos, nan_value, nan_value);
1891 TEST_f_f (cos, M_PI_6l * 2.0, 0.5);
1892 TEST_f_f (cos, M_PI_6l * 4.0, -0.5);
1893 TEST_f_f (cos, M_PI_2l, 0);
1895 TEST_f_f (cos, 0.7L, 0.76484218728448842625585999019186495L);
1905 if (errno == ENOSYS)
1906 /* Function not implemented. */
1910 TEST_f_f (cosh, 0, 1);
1911 TEST_f_f (cosh, minus_zero, 1);
1914 TEST_f_f (cosh, plus_infty, plus_infty);
1915 TEST_f_f (cosh, minus_infty, plus_infty);
1917 TEST_f_f (cosh, nan_value, nan_value);
1919 TEST_f_f (cosh, 0.7L, 1.255169005630943018L);
1928 FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0));
1929 if (errno == ENOSYS)
1930 /* Function not implemented. */
1935 TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0);
1936 TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0);
1938 TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0);
1939 TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0);
1941 TEST_cc_c (cpow, nan_value, nan_value, nan_value, nan_value, nan_value, nan_value);
1943 END (cpow, complex);
1950 TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0);
1951 TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero);
1952 TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero);
1953 TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0);
1955 TEST_c_c (cproj, nan_value, nan_value, nan_value, nan_value);
1957 TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0);
1958 TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero);
1959 TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0);
1960 TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero);
1962 TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0);
1963 TEST_c_c (cproj, 2.0, 3.0, 0.2857142857142857142857142857142857L, 0.42857142857142857142857142857142855L);
1965 END (cproj, complex);
1972 TEST_c_f (creal, 0.0, 1.0, 0.0);
1973 TEST_c_f (creal, minus_zero, 1.0, minus_zero);
1974 TEST_c_f (creal, nan_value, 1.0, nan_value);
1975 TEST_c_f (creal, nan_value, nan_value, nan_value);
1976 TEST_c_f (creal, plus_infty, 1.0, plus_infty);
1977 TEST_c_f (creal, minus_infty, 1.0, minus_infty);
1978 TEST_c_f (creal, 2.0, 3.0, 2.0);
1987 FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L));
1988 if (errno == ENOSYS)
1989 /* Function not implemented. */
1994 TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0);
1995 TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0);
1996 TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero);
1997 TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero);
1999 TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty);
2000 TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty);
2001 TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty);
2002 TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty);
2004 TEST_c_c (csin, plus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2005 TEST_c_c (csin, minus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2006 TEST_c_c (csin, plus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2007 TEST_c_c (csin, minus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2009 TEST_c_c (csin, plus_infty, plus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2010 TEST_c_c (csin, minus_infty, plus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2011 TEST_c_c (csin, plus_infty, minus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2012 TEST_c_c (csin, minus_infty, minus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2014 TEST_c_c (csin, plus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION);
2015 TEST_c_c (csin, plus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION);
2016 TEST_c_c (csin, minus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION);
2017 TEST_c_c (csin, minus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION);
2019 TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty);
2020 TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty);
2021 TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty);
2022 TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty);
2024 TEST_c_c (csin, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
2025 TEST_c_c (csin, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
2027 TEST_c_c (csin, nan_value, plus_infty, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
2028 TEST_c_c (csin, nan_value, minus_infty, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
2030 TEST_c_c (csin, nan_value, 9.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2031 TEST_c_c (csin, nan_value, -9.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2033 TEST_c_c (csin, 0.0, nan_value, 0.0, nan_value);
2034 TEST_c_c (csin, minus_zero, nan_value, minus_zero, nan_value);
2036 TEST_c_c (csin, 10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2037 TEST_c_c (csin, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2039 TEST_c_c (csin, plus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2040 TEST_c_c (csin, minus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2042 TEST_c_c (csin, nan_value, nan_value, nan_value, nan_value);
2044 TEST_c_c (csin, 0.7L, 1.2L, 1.1664563419657581376L, 1.1544997246948547371L);
2046 TEST_c_c (csin, -2, -3, -9.1544991469114295734L, 4.1689069599665643507L);
2048 END (csin, complex);
2056 FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L));
2057 if (errno == ENOSYS)
2058 /* Function not implemented. */
2063 TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0);
2064 TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0);
2065 TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero);
2066 TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero);
2068 TEST_c_c (csinh, 0.0, plus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2069 TEST_c_c (csinh, minus_zero, plus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2070 TEST_c_c (csinh, 0.0, minus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2071 TEST_c_c (csinh, minus_zero, minus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2073 TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0);
2074 TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0);
2075 TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero);
2076 TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero);
2078 TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2079 TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2080 TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2081 TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
2083 TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty);
2084 TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty);
2085 TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty);
2086 TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty);
2088 TEST_c_c (csinh, 6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2089 TEST_c_c (csinh, -6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2090 TEST_c_c (csinh, 6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2091 TEST_c_c (csinh, -6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2093 TEST_c_c (csinh, 0.0, nan_value, 0.0, nan_value, IGNORE_ZERO_INF_SIGN);
2094 TEST_c_c (csinh, minus_zero, nan_value, 0.0, nan_value, IGNORE_ZERO_INF_SIGN);
2096 TEST_c_c (csinh, plus_infty, nan_value, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN);
2097 TEST_c_c (csinh, minus_infty, nan_value, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN);
2099 TEST_c_c (csinh, 9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2100 TEST_c_c (csinh, -9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2102 TEST_c_c (csinh, nan_value, 0.0, nan_value, 0.0);
2103 TEST_c_c (csinh, nan_value, minus_zero, nan_value, minus_zero);
2105 TEST_c_c (csinh, nan_value, 10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2106 TEST_c_c (csinh, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2108 TEST_c_c (csinh, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
2109 TEST_c_c (csinh, nan_value, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
2111 TEST_c_c (csinh, nan_value, nan_value, nan_value, nan_value);
2113 TEST_c_c (csinh, 0.7L, 1.2L, 0.27487868678117583582L, 1.1698665727426565139L);
2114 TEST_c_c (csinh, -2, -3, 3.5905645899857799520L, -0.5309210862485198052L);
2116 END (csinh, complex);
2123 FUNC(csqrt) (BUILD_COMPLEX (-1, 0));
2124 if (errno == ENOSYS)
2125 /* Function not implemented. */
2130 TEST_c_c (csqrt, 0, 0, 0.0, 0.0);
2131 TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero);
2132 TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0);
2133 TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero);
2135 TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty);
2136 TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty);
2137 TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty);
2138 TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty);
2140 TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0);
2141 TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0);
2142 TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero);
2143 TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero);
2145 TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty);
2146 TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty);
2147 TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty);
2148 TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty);
2149 TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty);
2150 TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty);
2151 TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty);
2152 TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty);
2153 TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty);
2154 TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty);
2155 TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty);
2156 TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty);
2158 TEST_c_c (csqrt, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
2160 TEST_c_c (csqrt, plus_infty, nan_value, plus_infty, nan_value);
2162 TEST_c_c (csqrt, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2163 TEST_c_c (csqrt, 1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2164 TEST_c_c (csqrt, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2165 TEST_c_c (csqrt, -1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2167 TEST_c_c (csqrt, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2168 TEST_c_c (csqrt, nan_value, 8, nan_value, nan_value, INVALID_EXCEPTION_OK);
2169 TEST_c_c (csqrt, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK);
2170 TEST_c_c (csqrt, nan_value, -8, nan_value, nan_value, INVALID_EXCEPTION_OK);
2172 TEST_c_c (csqrt, nan_value, nan_value, nan_value, nan_value);
2174 TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0);
2175 TEST_c_c (csqrt, -1, 0, 0.0, 1.0);
2176 TEST_c_c (csqrt, 0, 2, 1.0, 1.0);
2177 TEST_c_c (csqrt, 119, 120, 12.0, 5.0);
2178 TEST_c_c (csqrt, 0.7L, 1.2L, 1.022067610030026450706487883081139L, 0.58704531296356521154977678719838035L);
2179 TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L);
2180 TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L);
2182 END (csqrt, complex);
2189 FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
2190 if (errno == ENOSYS)
2191 /* Function not implemented. */
2196 TEST_c_c (ctan, 0, 0, 0.0, 0.0);
2197 TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero);
2198 TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0);
2199 TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero);
2201 TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0);
2202 TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0);
2203 TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0);
2204 TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0);
2206 TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0);
2207 TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0);
2208 TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0);
2209 TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0);
2211 TEST_c_c (ctan, plus_infty, 0, nan_value, nan_value, INVALID_EXCEPTION);
2212 TEST_c_c (ctan, plus_infty, 2, nan_value, nan_value, INVALID_EXCEPTION);
2213 TEST_c_c (ctan, minus_infty, 0, nan_value, nan_value, INVALID_EXCEPTION);
2214 TEST_c_c (ctan, minus_infty, 2, nan_value, nan_value, INVALID_EXCEPTION);
2215 TEST_c_c (ctan, plus_infty, minus_zero, nan_value, nan_value, INVALID_EXCEPTION);
2216 TEST_c_c (ctan, plus_infty, -2, nan_value, nan_value, INVALID_EXCEPTION);
2217 TEST_c_c (ctan, minus_infty, minus_zero, nan_value, nan_value, INVALID_EXCEPTION);
2218 TEST_c_c (ctan, minus_infty, -2, nan_value, nan_value, INVALID_EXCEPTION);
2220 TEST_c_c (ctan, nan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN);
2221 TEST_c_c (ctan, nan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN);
2223 TEST_c_c (ctan, 0, nan_value, 0.0, nan_value);
2224 TEST_c_c (ctan, minus_zero, nan_value, minus_zero, nan_value);
2226 TEST_c_c (ctan, 0.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2227 TEST_c_c (ctan, -4.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2229 TEST_c_c (ctan, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2230 TEST_c_c (ctan, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK);
2231 TEST_c_c (ctan, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK);
2232 TEST_c_c (ctan, nan_value, -0.25, nan_value, nan_value, INVALID_EXCEPTION_OK);
2234 TEST_c_c (ctan, nan_value, nan_value, nan_value, nan_value);
2236 TEST_c_c (ctan, 0.7L, 1.2L, 0.1720734197630349001L, 0.9544807059989405538L);
2237 TEST_c_c (ctan, -2, -3, 0.0037640256415042482L, -1.0032386273536098014L);
2239 END (ctan, complex);
2247 FUNC(ctanh) (BUILD_COMPLEX (0, 0));
2248 if (errno == ENOSYS)
2249 /* Function not implemented. */
2254 TEST_c_c (ctanh, 0, 0, 0.0, 0.0);
2255 TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero);
2256 TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0);
2257 TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero);
2259 TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0);
2260 TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0);
2261 TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero);
2262 TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero);
2263 TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0);
2264 TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0);
2265 TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero);
2266 TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero);
2268 TEST_c_c (ctanh, 0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2269 TEST_c_c (ctanh, 2, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2270 TEST_c_c (ctanh, 0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2271 TEST_c_c (ctanh, 2, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2272 TEST_c_c (ctanh, minus_zero, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2273 TEST_c_c (ctanh, -2, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2274 TEST_c_c (ctanh, minus_zero, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2275 TEST_c_c (ctanh, -2, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
2277 TEST_c_c (ctanh, plus_infty, nan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN);
2278 TEST_c_c (ctanh, minus_infty, nan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN);
2280 TEST_c_c (ctanh, nan_value, 0, nan_value, 0.0);
2281 TEST_c_c (ctanh, nan_value, minus_zero, nan_value, minus_zero);
2283 TEST_c_c (ctanh, nan_value, 0.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
2284 TEST_c_c (ctanh, nan_value, -4.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
2286 TEST_c_c (ctanh, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2287 TEST_c_c (ctanh, 5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2288 TEST_c_c (ctanh, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2289 TEST_c_c (ctanh, -0.25, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
2291 TEST_c_c (ctanh, nan_value, nan_value, nan_value, nan_value);
2293 TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0);
2295 TEST_c_c (ctanh, 0.7L, 1.2L, 1.3472197399061191630L, 0.4778641038326365540L);
2296 TEST_c_c (ctanh, -2, -3, -0.9653858790221331242L, 0.0098843750383224937L);
2298 END (ctanh, complex);
2306 if (errno == ENOSYS)
2307 /* Function not implemented. */
2312 TEST_f_f (erf, 0, 0);
2313 TEST_f_f (erf, minus_zero, minus_zero);
2314 TEST_f_f (erf, plus_infty, 1);
2315 TEST_f_f (erf, minus_infty, -1);
2316 TEST_f_f (erf, nan_value, nan_value);
2318 TEST_f_f (erf, 0.7L, 0.67780119383741847297L);
2320 TEST_f_f (erf, 1.2L, 0.91031397822963538024L);
2321 TEST_f_f (erf, 2.0, 0.99532226501895273416L);
2322 TEST_f_f (erf, 4.1L, 0.99999999329997234592L);
2323 TEST_f_f (erf, 27, 1.0L);
2334 if (errno == ENOSYS)
2335 /* Function not implemented. */
2340 TEST_f_f (erfc, plus_infty, 0.0);
2341 TEST_f_f (erfc, minus_infty, 2.0);
2342 TEST_f_f (erfc, 0.0, 1.0);
2343 TEST_f_f (erfc, minus_zero, 1.0);
2344 TEST_f_f (erfc, nan_value, nan_value);
2346 TEST_f_f (erfc, 0.7L, 0.32219880616258152702L);
2348 TEST_f_f (erfc, 1.2L, 0.089686021770364619762L);
2349 TEST_f_f (erfc, 2.0, 0.0046777349810472658379L);
2350 TEST_f_f (erfc, 4.1L, 0.67000276540848983727e-8L);
2351 TEST_f_f (erfc, 9, 0.41370317465138102381e-36L);
2361 if (errno == ENOSYS)
2362 /* Function not implemented. */
2367 TEST_f_f (exp, 0, 1);
2368 TEST_f_f (exp, minus_zero, 1);
2371 TEST_f_f (exp, plus_infty, plus_infty);
2372 TEST_f_f (exp, minus_infty, 0);
2374 TEST_f_f (exp, nan_value, nan_value);
2375 TEST_f_f (exp, 1, M_El);
2377 TEST_f_f (exp, 2, M_E2l);
2378 TEST_f_f (exp, 3, M_E3l);
2379 TEST_f_f (exp, 0.7L, 2.0137527074704765216L);
2380 TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L);
2382 /* The result can only be represented in long double. */
2383 TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L);
2394 if (errno == ENOSYS)
2395 /* Function not implemented. */
2400 TEST_f_f (exp10, 0, 1);
2401 TEST_f_f (exp10, minus_zero, 1);
2403 TEST_f_f (exp10, plus_infty, plus_infty);
2404 TEST_f_f (exp10, minus_infty, 0);
2405 TEST_f_f (exp10, nan_value, nan_value);
2406 TEST_f_f (exp10, 3, 1000);
2407 TEST_f_f (exp10, -1, 0.1L);
2408 TEST_f_f (exp10, 1e6, plus_infty);
2409 TEST_f_f (exp10, -1e6, 0);
2410 TEST_f_f (exp10, 0.7L, 5.0118723362727228500155418688494574L);
2420 if (errno == ENOSYS)
2421 /* Function not implemented. */
2426 TEST_f_f (exp2, 0, 1);
2427 TEST_f_f (exp2, minus_zero, 1);
2428 TEST_f_f (exp2, plus_infty, plus_infty);
2429 TEST_f_f (exp2, minus_infty, 0);
2430 TEST_f_f (exp2, nan_value, nan_value);
2432 TEST_f_f (exp2, 10, 1024);
2433 TEST_f_f (exp2, -1, 0.5);
2434 TEST_f_f (exp2, 1e6, plus_infty);
2435 TEST_f_f (exp2, -1e6, 0);
2436 TEST_f_f (exp2, 0.7L, 1.6245047927124710452L);
2446 if (errno == ENOSYS)
2447 /* Function not implemented. */
2452 TEST_f_f (expm1, 0, 0);
2453 TEST_f_f (expm1, minus_zero, minus_zero);
2456 TEST_f_f (expm1, plus_infty, plus_infty);
2457 TEST_f_f (expm1, minus_infty, -1);
2459 TEST_f_f (expm1, nan_value, nan_value);
2461 TEST_f_f (expm1, 1, M_El - 1.0);
2462 TEST_f_f (expm1, 0.7L, 1.0137527074704765216L);
2472 TEST_f_f (fabs, 0, 0);
2473 TEST_f_f (fabs, minus_zero, 0);
2475 TEST_f_f (fabs, plus_infty, plus_infty);
2476 TEST_f_f (fabs, minus_infty, plus_infty);
2477 TEST_f_f (fabs, nan_value, nan_value);
2479 TEST_f_f (fabs, 38.0, 38.0);
2480 TEST_f_f (fabs, -M_El, M_El);
2490 TEST_ff_f (fdim, 0, 0, 0);
2491 TEST_ff_f (fdim, 9, 0, 9);
2492 TEST_ff_f (fdim, 0, 9, 0);
2493 TEST_ff_f (fdim, -9, 0, 0);
2494 TEST_ff_f (fdim, 0, -9, 9);
2496 TEST_ff_f (fdim, plus_infty, 9, plus_infty);
2497 TEST_ff_f (fdim, plus_infty, -9, plus_infty);
2498 TEST_ff_f (fdim, minus_infty, 9, 0);
2499 TEST_ff_f (fdim, minus_infty, -9, 0);
2500 TEST_ff_f (fdim, 9, minus_infty, plus_infty);
2501 TEST_ff_f (fdim, -9, minus_infty, plus_infty);
2502 TEST_ff_f (fdim, 9, plus_infty, 0);
2503 TEST_ff_f (fdim, -9, plus_infty, 0);
2505 TEST_ff_f (fdim, 0, nan_value, nan_value);
2506 TEST_ff_f (fdim, 9, nan_value, nan_value);
2507 TEST_ff_f (fdim, -9, nan_value, nan_value);
2508 TEST_ff_f (fdim, nan_value, 9, nan_value);
2509 TEST_ff_f (fdim, nan_value, -9, nan_value);
2510 TEST_ff_f (fdim, plus_infty, nan_value, nan_value);
2511 TEST_ff_f (fdim, minus_infty, nan_value, nan_value);
2512 TEST_ff_f (fdim, nan_value, plus_infty, nan_value);
2513 TEST_ff_f (fdim, nan_value, minus_infty, nan_value);
2514 TEST_ff_f (fdim, nan_value, nan_value, nan_value);
2524 TEST_f_f (floor, 0.0, 0.0);
2525 TEST_f_f (floor, minus_zero, minus_zero);
2526 TEST_f_f (floor, plus_infty, plus_infty);
2527 TEST_f_f (floor, minus_infty, minus_infty);
2528 TEST_f_f (floor, nan_value, nan_value);
2530 TEST_f_f (floor, M_PIl, 3.0);
2531 TEST_f_f (floor, -M_PIl, -4.0);
2541 TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0);
2542 TEST_fff_f (fma, nan_value, 2.0, 3.0, nan_value);
2543 TEST_fff_f (fma, 1.0, nan_value, 3.0, nan_value);
2544 TEST_fff_f (fma, 1.0, 2.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2545 TEST_fff_f (fma, plus_infty, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2546 TEST_fff_f (fma, minus_infty, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
2547 TEST_fff_f (fma, 0.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
2548 TEST_fff_f (fma, 0.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
2549 TEST_fff_f (fma, plus_infty, 0.0, 1.0, nan_value, INVALID_EXCEPTION);
2550 TEST_fff_f (fma, minus_infty, 0.0, 1.0, nan_value, INVALID_EXCEPTION);
2551 TEST_fff_f (fma, 0.0, plus_infty, 1.0, nan_value, INVALID_EXCEPTION);
2552 TEST_fff_f (fma, 0.0, minus_infty, 1.0, nan_value, INVALID_EXCEPTION);
2554 TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, nan_value, INVALID_EXCEPTION);
2555 TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
2556 TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
2557 TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, nan_value, INVALID_EXCEPTION);
2568 TEST_ff_f (fmax, 0, 0, 0);
2569 TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero);
2570 TEST_ff_f (fmax, 9, 0, 9);
2571 TEST_ff_f (fmax, 0, 9, 9);
2572 TEST_ff_f (fmax, -9, 0, 0);
2573 TEST_ff_f (fmax, 0, -9, 0);
2575 TEST_ff_f (fmax, plus_infty, 9, plus_infty);
2576 TEST_ff_f (fmax, 0, plus_infty, plus_infty);
2577 TEST_ff_f (fmax, -9, plus_infty, plus_infty);
2578 TEST_ff_f (fmax, plus_infty, -9, plus_infty);
2580 TEST_ff_f (fmax, minus_infty, 9, 9);
2581 TEST_ff_f (fmax, minus_infty, -9, -9);
2582 TEST_ff_f (fmax, 9, minus_infty, 9);
2583 TEST_ff_f (fmax, -9, minus_infty, -9);
2585 TEST_ff_f (fmax, 0, nan_value, 0);
2586 TEST_ff_f (fmax, 9, nan_value, 9);
2587 TEST_ff_f (fmax, -9, nan_value, -9);
2588 TEST_ff_f (fmax, nan_value, 0, 0);
2589 TEST_ff_f (fmax, nan_value, 9, 9);
2590 TEST_ff_f (fmax, nan_value, -9, -9);
2591 TEST_ff_f (fmax, plus_infty, nan_value, plus_infty);
2592 TEST_ff_f (fmax, minus_infty, nan_value, minus_infty);
2593 TEST_ff_f (fmax, nan_value, plus_infty, plus_infty);
2594 TEST_ff_f (fmax, nan_value, minus_infty, minus_infty);
2595 TEST_ff_f (fmax, nan_value, nan_value, nan_value);
2606 TEST_ff_f (fmin, 0, 0, 0);
2607 TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero);
2608 TEST_ff_f (fmin, 9, 0, 0);
2609 TEST_ff_f (fmin, 0, 9, 0);
2610 TEST_ff_f (fmin, -9, 0, -9);
2611 TEST_ff_f (fmin, 0, -9, -9);
2613 TEST_ff_f (fmin, plus_infty, 9, 9);
2614 TEST_ff_f (fmin, 9, plus_infty, 9);
2615 TEST_ff_f (fmin, plus_infty, -9, -9);
2616 TEST_ff_f (fmin, -9, plus_infty, -9);
2617 TEST_ff_f (fmin, minus_infty, 9, minus_infty);
2618 TEST_ff_f (fmin, minus_infty, -9, minus_infty);
2619 TEST_ff_f (fmin, 9, minus_infty, minus_infty);
2620 TEST_ff_f (fmin, -9, minus_infty, minus_infty);
2622 TEST_ff_f (fmin, 0, nan_value, 0);
2623 TEST_ff_f (fmin, 9, nan_value, 9);
2624 TEST_ff_f (fmin, -9, nan_value, -9);
2625 TEST_ff_f (fmin, nan_value, 0, 0);
2626 TEST_ff_f (fmin, nan_value, 9, 9);
2627 TEST_ff_f (fmin, nan_value, -9, -9);
2628 TEST_ff_f (fmin, plus_infty, nan_value, plus_infty);
2629 TEST_ff_f (fmin, minus_infty, nan_value, minus_infty);
2630 TEST_ff_f (fmin, nan_value, plus_infty, plus_infty);
2631 TEST_ff_f (fmin, nan_value, minus_infty, minus_infty);
2632 TEST_ff_f (fmin, nan_value, nan_value, nan_value);
2642 FUNC(fmod) (6.5, 2.3L);
2643 if (errno == ENOSYS)
2644 /* Function not implemented. */
2649 /* fmod (+0, y) == +0 for y != 0. */
2650 TEST_ff_f (fmod, 0, 3, 0);
2652 /* fmod (-0, y) == -0 for y != 0. */
2653 TEST_ff_f (fmod, minus_zero, 3, minus_zero);
2655 /* fmod (+inf, y) == NaN plus invalid exception. */
2656 TEST_ff_f (fmod, plus_infty, 3, nan_value, INVALID_EXCEPTION);
2657 /* fmod (-inf, y) == NaN plus invalid exception. */
2658 TEST_ff_f (fmod, minus_infty, 3, nan_value, INVALID_EXCEPTION);
2659 /* fmod (x, +0) == NaN plus invalid exception. */
2660 TEST_ff_f (fmod, 3, 0, nan_value, INVALID_EXCEPTION);
2661 /* fmod (x, -0) == NaN plus invalid exception. */
2662 TEST_ff_f (fmod, 3, minus_zero, nan_value, INVALID_EXCEPTION);
2664 /* fmod (x, +inf) == x for x not infinite. */
2665 TEST_ff_f (fmod, 3.0, plus_infty, 3.0);
2666 /* fmod (x, -inf) == x for x not infinite. */
2667 TEST_ff_f (fmod, 3.0, minus_infty, 3.0);
2669 TEST_ff_f (fmod, nan_value, nan_value, nan_value);
2671 TEST_ff_f (fmod, 6.5, 2.3L, 1.9L);
2672 TEST_ff_f (fmod, -6.5, 2.3L, -1.9L);
2673 TEST_ff_f (fmod, 6.5, -2.3L, 1.9L);
2674 TEST_ff_f (fmod, -6.5, -2.3L, -1.9L);
2680 fpclassify_test (void)
2684 TEST_f_i (fpclassify, nan_value, FP_NAN);
2685 TEST_f_i (fpclassify, plus_infty, FP_INFINITE);
2686 TEST_f_i (fpclassify, minus_infty, FP_INFINITE);
2687 TEST_f_i (fpclassify, plus_zero, FP_ZERO);
2688 TEST_f_i (fpclassify, minus_zero, FP_ZERO);
2689 TEST_f_i (fpclassify, 1000, FP_NORMAL);
2702 TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE);
2703 TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE);
2704 TEST_fI_f1 (frexp, nan_value, nan_value, IGNORE);
2706 TEST_fI_f1 (frexp, 0.0, 0.0, 0.0);
2707 TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0);
2709 TEST_fI_f1 (frexp, 12.8L, 0.8L, 4);
2710 TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5);
2722 if (errno == ENOSYS)
2723 /* Function not implemented. */
2725 feclearexcept (FE_ALL_EXCEPT);
2729 TEST_f_f (gamma, plus_infty, plus_infty);
2730 TEST_f_f (gamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
2731 TEST_f_f (gamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
2732 TEST_f_f (gamma, minus_infty, plus_infty);
2733 TEST_f_f (gamma, nan_value, nan_value);
2735 TEST_f_f1 (gamma, 1, 0, 1);
2736 TEST_f_f1 (gamma, 3, M_LN2l, 1);
2738 TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1);
2739 TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1);
2748 FUNC(hypot) (0.7L, 12.4L);
2749 if (errno == ENOSYS)
2750 /* Function not implemented. */
2755 TEST_ff_f (hypot, plus_infty, 1, plus_infty, IGNORE_ZERO_INF_SIGN);
2756 TEST_ff_f (hypot, minus_infty, 1, plus_infty, IGNORE_ZERO_INF_SIGN);
2759 TEST_ff_f (hypot, plus_infty, nan_value, plus_infty);
2760 TEST_ff_f (hypot, minus_infty, nan_value, plus_infty);
2761 TEST_ff_f (hypot, nan_value, plus_infty, plus_infty);
2762 TEST_ff_f (hypot, nan_value, minus_infty, plus_infty);
2765 TEST_ff_f (hypot, nan_value, nan_value, nan_value);
2767 /* hypot (x,y) == hypot (+-x, +-y) */
2768 TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L);
2769 TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L);
2770 TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L);
2771 TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L);
2772 TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L);
2773 TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L);
2774 TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L);
2775 TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L);
2777 /* hypot (x,0) == fabs (x) */
2778 TEST_ff_f (hypot, 0.7L, 0, 0.7L);
2779 TEST_ff_f (hypot, -0.7L, 0, 0.7L);
2780 TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L);
2782 TEST_ff_f (hypot, 0.7L, 1.2L, 1.3892443989449804508432547041028554L);
2793 TEST_f_i (ilogb, 1, 0);
2794 TEST_f_i (ilogb, M_El, 1);
2795 TEST_f_i (ilogb, 1024, 10);
2796 TEST_f_i (ilogb, -2000, 10);
2798 /* XXX We have a problem here: the standard does not tell us whether
2799 exceptions are allowed/required. ignore them for now. */
2801 TEST_f_i (ilogb, 0.0, FP_ILOGB0, EXCEPTIONS_OK);
2802 TEST_f_i (ilogb, nan_value, FP_ILOGBNAN, EXCEPTIONS_OK);
2808 isfinite_test (void)
2812 TEST_f_b (isfinite, 0, 1);
2813 TEST_f_b (isfinite, minus_zero, 1);
2814 TEST_f_b (isfinite, 10, 1);
2815 TEST_f_b (isfinite, plus_infty, 0);
2816 TEST_f_b (isfinite, minus_infty, 0);
2817 TEST_f_b (isfinite, nan_value, 0);
2823 isnormal_test (void)
2827 TEST_f_b (isnormal, 0, 0);
2828 TEST_f_b (isnormal, minus_zero, 0);
2829 TEST_f_b (isnormal, 10, 1);
2830 TEST_f_b (isnormal, plus_infty, 0);
2831 TEST_f_b (isnormal, minus_infty, 0);
2832 TEST_f_b (isnormal, nan_value, 0);
2842 FUNC (sincos) (0, &s, &c);
2843 if (errno == ENOSYS)
2844 /* Required function not implemented. */
2847 if (errno == ENOSYS)
2848 /* Function not implemented. */
2853 /* j0 is the Bessel function of the first kind of order 0 */
2854 TEST_f_f (j0, nan_value, nan_value);
2855 TEST_f_f (j0, plus_infty, 0);
2856 TEST_f_f (j0, -1.0, 0.76519768655796655145L);
2857 TEST_f_f (j0, 0.0, 1.0);
2858 TEST_f_f (j0, 0.1L, 0.99750156206604003228L);
2859 TEST_f_f (j0, 0.7L, 0.88120088860740528084L);
2860 TEST_f_f (j0, 1.0, 0.76519768655796655145L);
2861 TEST_f_f (j0, 1.5, 0.51182767173591812875L);
2862 TEST_f_f (j0, 2.0, 0.22389077914123566805L);
2863 TEST_f_f (j0, 8.0, 0.17165080713755390609L);
2864 TEST_f_f (j0, 10.0, -0.24593576445134833520L);
2875 FUNC (sincos) (0, &s, &c);
2876 if (errno == ENOSYS)
2877 /* Required function not implemented. */
2880 if (errno == ENOSYS)
2881 /* Function not implemented. */
2884 /* j1 is the Bessel function of the first kind of order 1 */
2888 TEST_f_f (j1, nan_value, nan_value);
2889 TEST_f_f (j1, plus_infty, 0);
2891 TEST_f_f (j1, -1.0, -0.44005058574493351596L);
2892 TEST_f_f (j1, 0.0, 0.0);
2893 TEST_f_f (j1, 0.1L, 0.049937526036241997556L);
2894 TEST_f_f (j1, 0.7L, 0.32899574154005894785L);
2895 TEST_f_f (j1, 1.0, 0.44005058574493351596L);
2896 TEST_f_f (j1, 1.5, 0.55793650791009964199L);
2897 TEST_f_f (j1, 2.0, 0.57672480775687338720L);
2898 TEST_f_f (j1, 8.0, 0.23463634685391462438L);
2899 TEST_f_f (j1, 10.0, 0.043472746168861436670L);
2909 FUNC (sincos) (0, &s, &c);
2910 if (errno == ENOSYS)
2911 /* Required function not implemented. */
2914 if (errno == ENOSYS)
2915 /* Function not implemented. */
2918 /* jn is the Bessel function of the first kind of order n. */
2921 /* jn (0, x) == j0 (x) */
2922 TEST_ff_f (jn, 0, nan_value, nan_value);
2923 TEST_ff_f (jn, 0, plus_infty, 0);
2924 TEST_ff_f (jn, 0, -1.0, 0.76519768655796655145L);
2925 TEST_ff_f (jn, 0, 0.0, 1.0);
2926 TEST_ff_f (jn, 0, 0.1L, 0.99750156206604003228L);
2927 TEST_ff_f (jn, 0, 0.7L, 0.88120088860740528084L);
2928 TEST_ff_f (jn, 0, 1.0, 0.76519768655796655145L);
2929 TEST_ff_f (jn, 0, 1.5, 0.51182767173591812875L);
2930 TEST_ff_f (jn, 0, 2.0, 0.22389077914123566805L);
2931 TEST_ff_f (jn, 0, 8.0, 0.17165080713755390609L);
2932 TEST_ff_f (jn, 0, 10.0, -0.24593576445134833520L);
2934 /* jn (1, x) == j1 (x) */
2935 TEST_ff_f (jn, 1, nan_value, nan_value);
2936 TEST_ff_f (jn, 1, plus_infty, 0);
2938 TEST_ff_f (jn, 1, -1.0, -0.44005058574493351596L);
2939 TEST_ff_f (jn, 1, 0.0, 0.0);
2940 TEST_ff_f (jn, 1, 0.1L, 0.049937526036241997556L);
2941 TEST_ff_f (jn, 1, 0.7L, 0.32899574154005894785L);
2942 TEST_ff_f (jn, 1, 1.0, 0.44005058574493351596L);
2943 TEST_ff_f (jn, 1, 1.5, 0.55793650791009964199L);
2944 TEST_ff_f (jn, 1, 2.0, 0.57672480775687338720L);
2945 TEST_ff_f (jn, 1, 8.0, 0.23463634685391462438L);
2946 TEST_ff_f (jn, 1, 10.0, 0.043472746168861436670L);
2949 TEST_ff_f (jn, 3, nan_value, nan_value);
2950 TEST_ff_f (jn, 3, plus_infty, 0);
2952 TEST_ff_f (jn, 3, -1.0, -0.019563353982668405919L);
2953 TEST_ff_f (jn, 3, 0.0, 0.0);
2954 TEST_ff_f (jn, 3, 0.1L, 0.000020820315754756261429L);
2955 TEST_ff_f (jn, 3, 0.7L, 0.0069296548267508408077L);
2956 TEST_ff_f (jn, 3, 1.0, 0.019563353982668405919L);
2957 TEST_ff_f (jn, 3, 2.0, 0.12894324947440205110L);
2958 TEST_ff_f (jn, 3, 10.0, 0.058379379305186812343L);
2961 TEST_ff_f (jn, 10, nan_value, nan_value);
2962 TEST_ff_f (jn, 10, plus_infty, 0);
2964 TEST_ff_f (jn, 10, -1.0, 0.26306151236874532070e-9L);
2965 TEST_ff_f (jn, 10, 0.0, 0.0);
2966 TEST_ff_f (jn, 10, 0.1L, 0.26905328954342155795e-19L);
2967 TEST_ff_f (jn, 10, 0.7L, 0.75175911502153953928e-11L);
2968 TEST_ff_f (jn, 10, 1.0, 0.26306151236874532070e-9L);
2969 TEST_ff_f (jn, 10, 2.0, 0.25153862827167367096e-6L);
2970 TEST_ff_f (jn, 10, 10.0, 0.20748610663335885770L);
2979 TEST_ff_f (ldexp, 0, 0, 0);
2980 TEST_ff_f (ldexp, minus_zero, 0, minus_zero);
2982 TEST_ff_f (ldexp, plus_infty, 1, plus_infty);
2983 TEST_ff_f (ldexp, minus_infty, 1, minus_infty);
2984 TEST_ff_f (ldexp, nan_value, 1, nan_value);
2986 TEST_ff_f (ldexp, 0.8L, 4, 12.8L);
2987 TEST_ff_f (ldexp, -0.854375L, 5, -27.34L);
2989 /* ldexp (x, 0) == x. */
2990 TEST_ff_f (ldexp, 1.0L, 0L, 1.0L);
2998 if (errno == ENOSYS)
2999 /* Function not implemented. */
3001 feclearexcept (FE_ALL_EXCEPT);
3005 TEST_f_f (lgamma, plus_infty, plus_infty);
3006 TEST_f_f (lgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3007 TEST_f_f (lgamma, nan_value, nan_value);
3009 /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0. */
3010 TEST_f_f (lgamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3011 TEST_f_f (lgamma, minus_infty, plus_infty);
3013 TEST_f_f1 (lgamma, 1, 0, 1);
3015 TEST_f_f1 (lgamma, 3, M_LN2l, 1);
3017 TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
3018 TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
3019 TEST_f_f1 (lgamma, 0.7L, 0.26086724653166651439L, 1);
3020 TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197e-1L, 1);
3028 /* XXX this test is incomplete. We need to have a way to specifiy
3029 the rounding method and test the critical cases. So far, only
3030 unproblematic numbers are tested. */
3034 TEST_f_l (lrint, 0.0, 0);
3035 TEST_f_l (lrint, minus_zero, 0);
3036 TEST_f_l (lrint, 0.2L, 0);
3037 TEST_f_l (lrint, -0.2L, 0);
3039 TEST_f_l (lrint, 1.4L, 1);
3040 TEST_f_l (lrint, -1.4L, -1);
3042 TEST_f_l (lrint, 8388600.3L, 8388600);
3043 TEST_f_l (lrint, -8388600.3L, -8388600);
3051 /* XXX this test is incomplete. We need to have a way to specifiy
3052 the rounding method and test the critical cases. So far, only
3053 unproblematic numbers are tested. */
3057 TEST_f_L (llrint, 0.0, 0);
3058 TEST_f_L (llrint, minus_zero, 0);
3059 TEST_f_L (llrint, 0.2L, 0);
3060 TEST_f_L (llrint, -0.2L, 0);
3062 TEST_f_L (llrint, 1.4L, 1);
3063 TEST_f_L (llrint, -1.4L, -1);
3065 TEST_f_L (llrint, 8388600.3L, 8388600);
3066 TEST_f_L (llrint, -8388600.3L, -8388600);
3068 /* Test boundary conditions. */
3070 TEST_f_L (llrint, 2097151.0,2097151LL);
3072 TEST_f_L (llrint, 8388608.0, 8388608LL);
3074 TEST_f_L (llrint, 16777216.0, 16777216LL);
3076 TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
3078 TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
3079 /* 0x10000000000000 */
3080 TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
3081 /* 0x10000080000000 */
3082 TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
3083 /* 0x20000000000000 */
3084 TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
3085 /* 0x80000000000000 */
3086 TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
3087 /* 0x100000000000000 */
3088 TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
3098 if (errno == ENOSYS)
3099 /* Function not implemented. */
3103 TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3104 TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3106 TEST_f_f (log, 1, 0);
3108 TEST_f_f (log, -1, nan_value, INVALID_EXCEPTION);
3109 TEST_f_f (log, plus_infty, plus_infty);
3111 TEST_f_f (log, M_El, 1);
3112 TEST_f_f (log, 1.0 / M_El, -1);
3113 TEST_f_f (log, 2, M_LN2l);
3114 TEST_f_f (log, 10, M_LN10l);
3115 TEST_f_f (log, 0.7L, -0.35667494393873237891263871124118447L);
3126 if (errno == ENOSYS)
3127 /* Function not implemented. */
3132 TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3133 TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3135 TEST_f_f (log10, 1, 0);
3137 /* log10 (x) == NaN plus invalid exception if x < 0. */
3138 TEST_f_f (log10, -1, nan_value, INVALID_EXCEPTION);
3140 TEST_f_f (log10, plus_infty, plus_infty);
3141 TEST_f_f (log10, nan_value, nan_value);
3143 TEST_f_f (log10, 0.1L, -1);
3144 TEST_f_f (log10, 10.0, 1);
3145 TEST_f_f (log10, 100.0, 2);
3146 TEST_f_f (log10, 10000.0, 4);
3147 TEST_f_f (log10, M_El, M_LOG10El);
3148 TEST_f_f (log10, 0.7L, -0.15490195998574316929L);
3159 if (errno == ENOSYS)
3160 /* Function not implemented. */
3165 TEST_f_f (log1p, 0, 0);
3166 TEST_f_f (log1p, minus_zero, minus_zero);
3168 TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3169 TEST_f_f (log1p, -2, nan_value, INVALID_EXCEPTION);
3171 TEST_f_f (log1p, plus_infty, plus_infty);
3172 TEST_f_f (log1p, nan_value, nan_value);
3174 TEST_f_f (log1p, M_El - 1.0, 1);
3176 TEST_f_f (log1p, -0.3L, -0.35667494393873237891263871124118447L);
3187 if (errno == ENOSYS)
3188 /* Function not implemented. */
3193 TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3194 TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3196 TEST_f_f (log2, 1, 0);
3198 TEST_f_f (log2, -1, nan_value, INVALID_EXCEPTION);
3200 TEST_f_f (log2, plus_infty, plus_infty);
3201 TEST_f_f (log2, nan_value, nan_value);
3203 TEST_f_f (log2, M_El, M_LOG2El);
3204 TEST_f_f (log2, 2.0, 1);
3205 TEST_f_f (log2, 16.0, 4);
3206 TEST_f_f (log2, 256.0, 8);
3207 TEST_f_f (log2, 0.7L, -0.51457317282975824043L);
3218 TEST_f_f (logb, plus_infty, plus_infty);
3219 TEST_f_f (logb, minus_infty, plus_infty);
3221 TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3223 TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3224 TEST_f_f (logb, nan_value, nan_value);
3226 TEST_f_f (logb, 1, 0);
3227 TEST_f_f (logb, M_El, 1);
3228 TEST_f_f (logb, 1024, 10);
3229 TEST_f_f (logb, -2000, 10);
3239 TEST_f_l (lround, 0, 0);
3240 TEST_f_l (lround, minus_zero, 0);
3241 TEST_f_l (lround, 0.2L, 0.0);
3242 TEST_f_l (lround, -0.2L, 0);
3243 TEST_f_l (lround, 0.5, 1);
3244 TEST_f_l (lround, -0.5, -1);
3245 TEST_f_l (lround, 0.8L, 1);
3246 TEST_f_l (lround, -0.8L, -1);
3247 TEST_f_l (lround, 1.5, 2);
3248 TEST_f_l (lround, -1.5, -2);
3249 TEST_f_l (lround, 22514.5, 22515);
3250 TEST_f_l (lround, -22514.5, -22515);
3252 TEST_f_l (lround, 2097152.5, 2097153);
3253 TEST_f_l (lround, -2097152.5, -2097153);
3264 TEST_f_L (llround, 0, 0);
3265 TEST_f_L (llround, minus_zero, 0);
3266 TEST_f_L (llround, 0.2L, 0.0);
3267 TEST_f_L (llround, -0.2L, 0);
3268 TEST_f_L (llround, 0.5, 1);
3269 TEST_f_L (llround, -0.5, -1);
3270 TEST_f_L (llround, 0.8L, 1);
3271 TEST_f_L (llround, -0.8L, -1);
3272 TEST_f_L (llround, 1.5, 2);
3273 TEST_f_L (llround, -1.5, -2);
3274 TEST_f_L (llround, 22514.5, 22515);
3275 TEST_f_L (llround, -22514.5, -22515);
3277 TEST_f_L (llround, 2097152.5, 2097153);
3278 TEST_f_L (llround, -2097152.5, -2097153);
3279 TEST_f_L (llround, 34359738368.5, 34359738369ll);
3280 TEST_f_L (llround, -34359738368.5, -34359738369ll);
3283 /* Test boundary conditions. */
3285 TEST_f_L (llround, 2097151.0, 2097151LL);
3287 TEST_f_L (llround, 8388608.0, 8388608LL);
3289 TEST_f_L (llround, 16777216.0, 16777216LL);
3291 TEST_f_L (llround, 2199023255552.0, 2199023255552LL);
3293 TEST_f_L (llround, 4398046511104.0, 4398046511104LL);
3294 /* 0x10000000000000 */
3295 TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL);
3296 /* 0x10000080000000 */
3297 TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
3298 /* 0x20000000000000 */
3299 TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL);
3300 /* 0x80000000000000 */
3301 TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL);
3302 /* 0x100000000000000 */
3303 TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL);
3315 TEST_fF_f1 (modf, plus_infty, 0, plus_infty);
3316 TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty);
3317 TEST_fF_f1 (modf, nan_value, nan_value, nan_value);
3318 TEST_fF_f1 (modf, 0, 0, 0);
3319 TEST_fF_f1 (modf, 1.5, 0.5, 1);
3320 TEST_fF_f1 (modf, 2.5, 0.5, 2);
3321 TEST_fF_f1 (modf, -2.5, -0.5, -2);
3322 TEST_fF_f1 (modf, 20, 0, 20);
3323 TEST_fF_f1 (modf, 21, 0, 21);
3324 TEST_fF_f1 (modf, 89.5, 0.5, 89);
3331 nearbyint_test (void)
3335 TEST_f_f (nearbyint, 0.0, 0.0);
3336 TEST_f_f (nearbyint, minus_zero, minus_zero);
3337 TEST_f_f (nearbyint, plus_infty, plus_infty);
3338 TEST_f_f (nearbyint, minus_infty, minus_infty);
3339 TEST_f_f (nearbyint, nan_value, nan_value);
3341 /* Default rounding mode is round to nearest. */
3342 TEST_f_f (nearbyint, 0.5, 0.0);
3343 TEST_f_f (nearbyint, 1.5, 2.0);
3344 TEST_f_f (nearbyint, -0.5, minus_zero);
3345 TEST_f_f (nearbyint, -1.5, -2.0);
3351 nextafter_test (void)
3356 TEST_ff_f (nextafter, 0, 0, 0);
3357 TEST_ff_f (nextafter, minus_zero, 0, 0);
3358 TEST_ff_f (nextafter, 0, minus_zero, minus_zero);
3359 TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero);
3361 TEST_ff_f (nextafter, 9, 9, 9);
3362 TEST_ff_f (nextafter, -9, -9, -9);
3363 TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty);
3364 TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty);
3366 TEST_ff_f (nextafter, nan_value, 1.1L, nan_value);
3367 TEST_ff_f (nextafter, 1.1L, nan_value, nan_value);
3368 TEST_ff_f (nextafter, nan_value, nan_value, nan_value);
3370 /* XXX We need the hexadecimal FP number representation here for further
3378 nexttoward_test (void)
3381 TEST_ff_f (nexttoward, 0, 0, 0);
3382 TEST_ff_f (nexttoward, minus_zero, 0, 0);
3383 TEST_ff_f (nexttoward, 0, minus_zero, minus_zero);
3384 TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero);
3386 TEST_ff_f (nexttoward, 9, 9, 9);
3387 TEST_ff_f (nexttoward, -9, -9, -9);
3388 TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty);
3389 TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty);
3391 TEST_ff_f (nexttoward, nan_value, 1.1L, nan_value);
3392 TEST_ff_f (nexttoward, 1.1L, nan_value, nan_value);
3393 TEST_ff_f (nexttoward, nan_value, nan_value, nan_value);
3395 /* XXX We need the hexadecimal FP number representation here for further
3408 if (errno == ENOSYS)
3409 /* Function not implemented. */
3414 TEST_ff_f (pow, 0, 0, 1);
3415 TEST_ff_f (pow, 0, minus_zero, 1);
3416 TEST_ff_f (pow, minus_zero, 0, 1);
3417 TEST_ff_f (pow, minus_zero, minus_zero, 1);
3419 TEST_ff_f (pow, 10, 0, 1);
3420 TEST_ff_f (pow, 10, minus_zero, 1);
3421 TEST_ff_f (pow, -10, 0, 1);
3422 TEST_ff_f (pow, -10, minus_zero, 1);
3424 TEST_ff_f (pow, nan_value, 0, 1);
3425 TEST_ff_f (pow, nan_value, minus_zero, 1);
3429 TEST_ff_f (pow, 1.1L, plus_infty, plus_infty);
3430 TEST_ff_f (pow, plus_infty, plus_infty, plus_infty);
3431 TEST_ff_f (pow, -1.1L, plus_infty, plus_infty);
3432 TEST_ff_f (pow, minus_infty, plus_infty, plus_infty);
3434 TEST_ff_f (pow, 0.9L, plus_infty, 0);
3435 TEST_ff_f (pow, 1e-7L, plus_infty, 0);
3436 TEST_ff_f (pow, -0.9L, plus_infty, 0);
3437 TEST_ff_f (pow, -1e-7L, plus_infty, 0);
3439 TEST_ff_f (pow, 1.1L, minus_infty, 0);
3440 TEST_ff_f (pow, plus_infty, minus_infty, 0);
3441 TEST_ff_f (pow, -1.1L, minus_infty, 0);
3442 TEST_ff_f (pow, minus_infty, minus_infty, 0);
3444 TEST_ff_f (pow, 0.9L, minus_infty, plus_infty);
3445 TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty);
3446 TEST_ff_f (pow, -0.9L, minus_infty, plus_infty);
3447 TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty);
3449 TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty);
3450 TEST_ff_f (pow, plus_infty, 1, plus_infty);
3451 TEST_ff_f (pow, plus_infty, 1e7L, plus_infty);
3453 TEST_ff_f (pow, plus_infty, -1e-7L, 0);
3454 TEST_ff_f (pow, plus_infty, -1, 0);
3455 TEST_ff_f (pow, plus_infty, -1e7L, 0);
3457 TEST_ff_f (pow, minus_infty, 1, minus_infty);
3458 TEST_ff_f (pow, minus_infty, 11, minus_infty);
3459 TEST_ff_f (pow, minus_infty, 1001, minus_infty);
3461 TEST_ff_f (pow, minus_infty, 2, plus_infty);
3462 TEST_ff_f (pow, minus_infty, 12, plus_infty);
3463 TEST_ff_f (pow, minus_infty, 1002, plus_infty);
3464 TEST_ff_f (pow, minus_infty, 0.1L, plus_infty);
3465 TEST_ff_f (pow, minus_infty, 1.1L, plus_infty);
3466 TEST_ff_f (pow, minus_infty, 11.1L, plus_infty);
3467 TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty);
3469 TEST_ff_f (pow, minus_infty, -1, minus_zero);
3470 TEST_ff_f (pow, minus_infty, -11, minus_zero);
3471 TEST_ff_f (pow, minus_infty, -1001, minus_zero);
3473 TEST_ff_f (pow, minus_infty, -2, 0);
3474 TEST_ff_f (pow, minus_infty, -12, 0);
3475 TEST_ff_f (pow, minus_infty, -1002, 0);
3476 TEST_ff_f (pow, minus_infty, -0.1L, 0);
3477 TEST_ff_f (pow, minus_infty, -1.1L, 0);
3478 TEST_ff_f (pow, minus_infty, -11.1L, 0);
3479 TEST_ff_f (pow, minus_infty, -1001.1L, 0);
3482 TEST_ff_f (pow, nan_value, nan_value, nan_value);
3483 TEST_ff_f (pow, 0, nan_value, nan_value);
3484 TEST_ff_f (pow, 1, nan_value, 1);
3485 TEST_ff_f (pow, -1, nan_value, nan_value);
3486 TEST_ff_f (pow, nan_value, 1, nan_value);
3487 TEST_ff_f (pow, nan_value, -1, nan_value);
3489 /* pow (x, NaN) == NaN. */
3490 TEST_ff_f (pow, 3.0, nan_value, nan_value);
3492 TEST_ff_f (pow, 1, plus_infty, 1);
3493 TEST_ff_f (pow, -1, plus_infty, 1);
3494 TEST_ff_f (pow, 1, minus_infty, 1);
3495 TEST_ff_f (pow, -1, minus_infty, 1);
3497 TEST_ff_f (pow, -0.1L, 1.1L, nan_value, INVALID_EXCEPTION);
3498 TEST_ff_f (pow, -0.1L, -1.1L, nan_value, INVALID_EXCEPTION);
3499 TEST_ff_f (pow, -10.1L, 1.1L, nan_value, INVALID_EXCEPTION);
3500 TEST_ff_f (pow, -10.1L, -1.1L, nan_value, INVALID_EXCEPTION);
3502 TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3503 TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3504 TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3505 TEST_ff_f (pow, minus_zero, -11, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3507 TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3508 TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3509 TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3510 TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
3513 TEST_ff_f (pow, 0, 1, 0);
3514 TEST_ff_f (pow, 0, 11, 0);
3516 TEST_ff_f (pow, minus_zero, 1, minus_zero);
3517 TEST_ff_f (pow, minus_zero, 11, minus_zero);
3520 TEST_ff_f (pow, 0, 2, 0);
3521 TEST_ff_f (pow, 0, 11.1L, 0);
3524 TEST_ff_f (pow, minus_zero, 2, 0);
3525 TEST_ff_f (pow, minus_zero, 11.1L, 0);
3528 /* pow (x, +inf) == +inf for |x| > 1. */
3529 TEST_ff_f (pow, 1.5, plus_infty, plus_infty);
3531 /* pow (x, +inf) == +0 for |x| < 1. */
3532 TEST_ff_f (pow, 0.5, plus_infty, 0.0);
3534 /* pow (x, -inf) == +0 for |x| > 1. */
3535 TEST_ff_f (pow, 1.5, minus_infty, 0.0);
3537 /* pow (x, -inf) == +inf for |x| < 1. */
3538 TEST_ff_f (pow, 0.5, minus_infty, plus_infty);
3541 /* pow (+inf, y) == +inf for y > 0. */
3542 TEST_ff_f (pow, plus_infty, 2, plus_infty);
3544 /* pow (+inf, y) == +0 for y < 0. */
3545 TEST_ff_f (pow, plus_infty, -1, 0.0);
3547 /* pow (-inf, y) == -inf for y an odd integer > 0. */
3548 TEST_ff_f (pow, minus_infty, 27, minus_infty);
3550 /* pow (-inf, y) == +inf for y > 0 and not an odd integer. */
3551 TEST_ff_f (pow, minus_infty, 28, plus_infty);
3553 /* pow (-inf, y) == -0 for y an odd integer < 0. */
3554 TEST_ff_f (pow, minus_infty, -3, minus_zero);
3555 /* pow (-inf, y) == +0 for y < 0 and not an odd integer. */
3556 TEST_ff_f (pow, minus_infty, -2.0, 0.0);
3558 /* pow (+0, y) == +0 for y an odd integer > 0. */
3559 TEST_ff_f (pow, 0.0, 27, 0.0);
3561 /* pow (-0, y) == -0 for y an odd integer > 0. */
3562 TEST_ff_f (pow, minus_zero, 27, minus_zero);
3564 /* pow (+0, y) == +0 for y > 0 and not an odd integer. */
3565 TEST_ff_f (pow, 0.0, 4, 0.0);
3567 /* pow (-0, y) == +0 for y > 0 and not an odd integer. */
3568 TEST_ff_f (pow, minus_zero, 4, 0.0);
3570 TEST_ff_f (pow, 0.7L, 1.2L, 0.65180494056638638188L);
3572 #if defined TEST_DOUBLE || defined TEST_LDOUBLE
3573 TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0);
3580 remainder_test (void)
3583 FUNC(remainder) (1.625, 1.0);
3584 if (errno == ENOSYS)
3585 /* Function not implemented. */
3590 TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION);
3591 TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION);
3592 TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION);
3593 TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION);
3594 TEST_ff_f (remainder, nan_value, nan_value, nan_value);
3596 TEST_ff_f (remainder, 1.625, 1.0, -0.375);
3597 TEST_ff_f (remainder, -1.625, 1.0, 0.375);
3598 TEST_ff_f (remainder, 1.625, -1.0, -0.375);
3599 TEST_ff_f (remainder, -1.625, -1.0, 0.375);
3600 TEST_ff_f (remainder, 5.0, 2.0, 1.0);
3601 TEST_ff_f (remainder, 3.0, 2.0, -1.0);
3613 FUNC(remquo) (1.625, 1.0, &x);
3614 if (errno == ENOSYS)
3615 /* Function not implemented. */
3620 TEST_ffI_f1 (remquo, 1, 0, nan_value, IGNORE, INVALID_EXCEPTION);
3621 TEST_ffI_f1 (remquo, 1, minus_zero, nan_value, IGNORE, INVALID_EXCEPTION);
3622 TEST_ffI_f1 (remquo, plus_infty, 1, nan_value, IGNORE, INVALID_EXCEPTION);
3623 TEST_ffI_f1 (remquo, minus_infty, 1, nan_value, IGNORE, INVALID_EXCEPTION);
3624 TEST_ffI_f1 (remquo, nan_value, nan_value, nan_value, IGNORE);
3626 TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2);
3627 TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2);
3628 TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2);
3629 TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2);
3631 TEST_ffI_f1 (remquo, 5, 2, 1, 2);
3632 TEST_ffI_f1 (remquo, 3, 2, -1, 2);
3642 TEST_f_f (rint, 0.0, 0.0);
3643 TEST_f_f (rint, minus_zero, minus_zero);
3644 TEST_f_f (rint, plus_infty, plus_infty);
3645 TEST_f_f (rint, minus_infty, minus_infty);
3647 /* Default rounding mode is round to even. */
3648 TEST_f_f (rint, 0.5, 0.0);
3649 TEST_f_f (rint, 1.5, 2.0);
3650 TEST_f_f (rint, 2.5, 2.0);
3651 TEST_f_f (rint, 3.5, 4.0);
3652 TEST_f_f (rint, 4.5, 4.0);
3653 TEST_f_f (rint, -0.5, -0.0);
3654 TEST_f_f (rint, -1.5, -2.0);
3655 TEST_f_f (rint, -2.5, -2.0);
3656 TEST_f_f (rint, -3.5, -4.0);
3657 TEST_f_f (rint, -4.5, -4.0);
3667 TEST_f_f (round, 0, 0);
3668 TEST_f_f (round, minus_zero, minus_zero);
3669 TEST_f_f (round, 0.2L, 0.0);
3670 TEST_f_f (round, -0.2L, minus_zero);
3671 TEST_f_f (round, 0.5, 1.0);
3672 TEST_f_f (round, -0.5, -1.0);
3673 TEST_f_f (round, 0.8L, 1.0);
3674 TEST_f_f (round, -0.8L, -1.0);
3675 TEST_f_f (round, 1.5, 2.0);
3676 TEST_f_f (round, -1.5, -2.0);
3677 TEST_f_f (round, 2097152.5, 2097153);
3678 TEST_f_f (round, -2097152.5, -2097153);
3690 TEST_ff_f (scalb, 2.0, 0.5, nan_value, INVALID_EXCEPTION);
3691 TEST_ff_f (scalb, 3.0, -2.5, nan_value, INVALID_EXCEPTION);
3693 TEST_ff_f (scalb, 0, nan_value, nan_value);
3694 TEST_ff_f (scalb, 1, nan_value, nan_value);
3696 TEST_ff_f (scalb, 1, 0, 1);
3697 TEST_ff_f (scalb, -1, 0, -1);
3699 TEST_ff_f (scalb, 0, plus_infty, nan_value, INVALID_EXCEPTION);
3700 TEST_ff_f (scalb, minus_zero, plus_infty, nan_value, INVALID_EXCEPTION);
3702 TEST_ff_f (scalb, 0, 2, 0);
3703 TEST_ff_f (scalb, minus_zero, -4, minus_zero);
3704 TEST_ff_f (scalb, 0, 0, 0);
3705 TEST_ff_f (scalb, minus_zero, 0, minus_zero);
3706 TEST_ff_f (scalb, 0, -1, 0);
3707 TEST_ff_f (scalb, minus_zero, -10, minus_zero);
3708 TEST_ff_f (scalb, 0, minus_infty, 0);
3709 TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero);
3711 TEST_ff_f (scalb, plus_infty, -1, plus_infty);
3712 TEST_ff_f (scalb, minus_infty, -10, minus_infty);
3713 TEST_ff_f (scalb, plus_infty, 0, plus_infty);
3714 TEST_ff_f (scalb, minus_infty, 0, minus_infty);
3715 TEST_ff_f (scalb, plus_infty, 2, plus_infty);
3716 TEST_ff_f (scalb, minus_infty, 100, minus_infty);
3718 TEST_ff_f (scalb, 0.1L, minus_infty, 0.0);
3719 TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero);
3721 TEST_ff_f (scalb, 1, plus_infty, plus_infty);
3722 TEST_ff_f (scalb, -1, plus_infty, minus_infty);
3723 TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty);
3724 TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty);
3726 TEST_ff_f (scalb, plus_infty, minus_infty, nan_value, INVALID_EXCEPTION);
3727 TEST_ff_f (scalb, minus_infty, minus_infty, nan_value, INVALID_EXCEPTION);
3729 TEST_ff_f (scalb, nan_value, 1, nan_value);
3730 TEST_ff_f (scalb, 1, nan_value, nan_value);
3731 TEST_ff_f (scalb, nan_value, 0, nan_value);
3732 TEST_ff_f (scalb, 0, nan_value, nan_value);
3733 TEST_ff_f (scalb, nan_value, plus_infty, nan_value);
3734 TEST_ff_f (scalb, plus_infty, nan_value, nan_value);
3735 TEST_ff_f (scalb, nan_value, nan_value, nan_value);
3737 TEST_ff_f (scalb, 0.8L, 4, 12.8L);
3738 TEST_ff_f (scalb, -0.854375L, 5, -27.34L);
3750 TEST_fi_f (scalbn, 0, 0, 0);
3751 TEST_fi_f (scalbn, minus_zero, 0, minus_zero);
3753 TEST_fi_f (scalbn, plus_infty, 1, plus_infty);
3754 TEST_fi_f (scalbn, minus_infty, 1, minus_infty);
3755 TEST_fi_f (scalbn, nan_value, 1, nan_value);
3757 TEST_fi_f (scalbn, 0.8L, 4, 12.8L);
3758 TEST_fi_f (scalbn, -0.854375L, 5, -27.34L);
3760 TEST_fi_f (scalbn, 1, 0L, 1);
3771 TEST_fl_f (scalbln, 0, 0, 0);
3772 TEST_fl_f (scalbln, minus_zero, 0, minus_zero);
3774 TEST_fl_f (scalbln, plus_infty, 1, plus_infty);
3775 TEST_fl_f (scalbln, minus_infty, 1, minus_infty);
3776 TEST_fl_f (scalbln, nan_value, 1, nan_value);
3778 TEST_fl_f (scalbln, 0.8L, 4, 12.8L);
3779 TEST_fl_f (scalbln, -0.854375L, 5, -27.34L);
3781 TEST_fl_f (scalbln, 1, 0L, 1);
3792 TEST_f_b (signbit, 0, 0);
3793 TEST_f_b (signbit, minus_zero, 1);
3794 TEST_f_b (signbit, plus_infty, 0);
3795 TEST_f_b (signbit, minus_infty, 1);
3797 /* signbit (x) != 0 for x < 0. */
3798 TEST_f_b (signbit, -1, 1);
3799 /* signbit (x) == 0 for x >= 0. */
3800 TEST_f_b (signbit, 1, 0);
3810 if (errno == ENOSYS)
3811 /* Function not implemented. */
3816 TEST_f_f (sin, 0, 0);
3817 TEST_f_f (sin, minus_zero, minus_zero);
3818 TEST_f_f (sin, plus_infty, nan_value, INVALID_EXCEPTION);
3819 TEST_f_f (sin, minus_infty, nan_value, INVALID_EXCEPTION);
3820 TEST_f_f (sin, nan_value, nan_value);
3822 TEST_f_f (sin, M_PI_6l, 0.5);
3823 TEST_f_f (sin, -M_PI_6l, -0.5);
3824 TEST_f_f (sin, M_PI_2l, 1);
3825 TEST_f_f (sin, -M_PI_2l, -1);
3826 TEST_f_f (sin, 0.7L, 0.64421768723769105367261435139872014L);
3835 FLOAT sin_res, cos_res;
3838 FUNC(sincos) (0, &sin_res, &cos_res);
3839 if (errno == ENOSYS)
3840 /* Function not implemented. */
3845 /* sincos is treated differently because it returns void. */
3846 TEST_extra (sincos, 0, 0, 1);
3848 TEST_extra (sincos, minus_zero, minus_zero, 1);
3849 TEST_extra (sincos, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
3850 TEST_extra (sincos, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
3851 TEST_extra (sincos, nan_value, nan_value, nan_value);
3853 TEST_extra (sincos, M_PI_2l, 1, 0);
3854 TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);
3855 TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5);
3856 TEST_extra (sincos, 0.7L, 0.64421768723769105367261435139872014L, 0.76484218728448842625585999019186495L);
3866 if (errno == ENOSYS)
3867 /* Function not implemented. */
3871 TEST_f_f (sinh, 0, 0);
3872 TEST_f_f (sinh, minus_zero, minus_zero);
3875 TEST_f_f (sinh, plus_infty, plus_infty);
3876 TEST_f_f (sinh, minus_infty, minus_infty);
3878 TEST_f_f (sinh, nan_value, nan_value);
3880 TEST_f_f (sinh, 0.7L, 0.75858370183953350346L);
3890 if (errno == ENOSYS)
3891 /* Function not implemented. */
3896 TEST_f_f (sqrt, 0, 0);
3897 TEST_f_f (sqrt, nan_value, nan_value);
3898 TEST_f_f (sqrt, plus_infty, plus_infty);
3900 TEST_f_f (sqrt, minus_zero, minus_zero);
3902 /* sqrt (x) == NaN plus invalid exception for x < 0. */
3903 TEST_f_f (sqrt, -1, nan_value, INVALID_EXCEPTION);
3904 TEST_f_f (sqrt, minus_infty, nan_value, INVALID_EXCEPTION);
3905 TEST_f_f (sqrt, nan_value, nan_value);
3907 TEST_f_f (sqrt, 2209, 47);
3908 TEST_f_f (sqrt, 4, 2);
3909 TEST_f_f (sqrt, 2, M_SQRT2l);
3910 TEST_f_f (sqrt, 0.25, 0.5);
3911 TEST_f_f (sqrt, 6642.25, 81.5);
3912 TEST_f_f (sqrt, 15239.9025L, 123.45L);
3913 TEST_f_f (sqrt, 0.7L, 0.83666002653407554797817202578518747L);
3923 if (errno == ENOSYS)
3924 /* Function not implemented. */
3929 TEST_f_f (tan, 0, 0);
3930 TEST_f_f (tan, minus_zero, minus_zero);
3931 TEST_f_f (tan, plus_infty, nan_value, INVALID_EXCEPTION);
3932 TEST_f_f (tan, minus_infty, nan_value, INVALID_EXCEPTION);
3933 TEST_f_f (tan, nan_value, nan_value);
3935 TEST_f_f (tan, M_PI_4l, 1);
3936 TEST_f_f (tan, 0.7L, 0.84228838046307944812813500221293775L);
3946 if (errno == ENOSYS)
3947 /* Function not implemented. */
3952 TEST_f_f (tanh, 0, 0);
3953 TEST_f_f (tanh, minus_zero, minus_zero);
3956 TEST_f_f (tanh, plus_infty, 1);
3957 TEST_f_f (tanh, minus_infty, -1);
3959 TEST_f_f (tanh, nan_value, nan_value);
3961 TEST_f_f (tanh, 0.7L, 0.60436777711716349631L);
3962 TEST_f_f (tanh, -0.7L, -0.60436777711716349631L);
3964 TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L);
3965 TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L);
3975 if (errno == ENOSYS)
3976 /* Function not implemented. */
3978 feclearexcept (FE_ALL_EXCEPT);
3982 TEST_f_f (tgamma, plus_infty, plus_infty);
3983 TEST_f_f (tgamma, 0, nan_value, INVALID_EXCEPTION);
3984 TEST_f_f (tgamma, minus_zero, nan_value, INVALID_EXCEPTION);
3985 /* tgamma (x) == NaN plus invalid exception for integer x <= 0. */
3986 TEST_f_f (tgamma, -2, nan_value, INVALID_EXCEPTION);
3987 TEST_f_f (tgamma, minus_infty, nan_value, INVALID_EXCEPTION);
3988 TEST_f_f (tgamma, nan_value, nan_value);
3990 TEST_f_f (tgamma, 0.5, M_SQRT_PIl);
3991 TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl);
3993 TEST_f_f (tgamma, 1, 1);
3994 TEST_f_f (tgamma, 4, 6);
3996 TEST_f_f (tgamma, 0.7L, 1.29805533264755778568L);
3997 TEST_f_f (tgamma, 1.2L, 0.91816874239976061064L);
4007 TEST_f_f (trunc, plus_infty, plus_infty);
4008 TEST_f_f (trunc, minus_infty, minus_infty);
4009 TEST_f_f (trunc, nan_value, nan_value);
4011 TEST_f_f (trunc, 0, 0);
4012 TEST_f_f (trunc, minus_zero, minus_zero);
4013 TEST_f_f (trunc, 0.625, 0);
4014 TEST_f_f (trunc, -0.625, minus_zero);
4015 TEST_f_f (trunc, 1, 1);
4016 TEST_f_f (trunc, -1, -1);
4017 TEST_f_f (trunc, 1.625, 1);
4018 TEST_f_f (trunc, -1.625, -1);
4020 TEST_f_f (trunc, 1048580.625L, 1048580L);
4021 TEST_f_f (trunc, -1048580.625L, -1048580L);
4023 TEST_f_f (trunc, 8388610.125L, 8388610.0L);
4024 TEST_f_f (trunc, -8388610.125L, -8388610.0L);
4026 TEST_f_f (trunc, 4294967296.625L, 4294967296.0L);
4027 TEST_f_f (trunc, -4294967296.625L, -4294967296.0L);
4038 FUNC (sincos) (0, &s, &c);
4039 if (errno == ENOSYS)
4040 /* Required function not implemented. */
4043 if (errno == ENOSYS)
4044 /* Function not implemented. */
4047 /* y0 is the Bessel function of the second kind of order 0 */
4050 TEST_f_f (y0, -1.0, minus_infty);
4051 TEST_f_f (y0, 0.0, minus_infty);
4052 TEST_f_f (y0, nan_value, nan_value);
4053 TEST_f_f (y0, plus_infty, 0);
4055 TEST_f_f (y0, 0.1L, -1.5342386513503668441L);
4056 TEST_f_f (y0, 0.7L, -0.19066492933739506743L);
4057 TEST_f_f (y0, 1.0, 0.088256964215676957983L);
4058 TEST_f_f (y0, 1.5, 0.38244892379775884396L);
4059 TEST_f_f (y0, 2.0, 0.51037567264974511960L);
4060 TEST_f_f (y0, 8.0, 0.22352148938756622053L);
4061 TEST_f_f (y0, 10.0, 0.055671167283599391424L);
4072 FUNC (sincos) (0, &s, &c);
4073 if (errno == ENOSYS)
4074 /* Required function not implemented. */
4077 if (errno == ENOSYS)
4078 /* Function not implemented. */
4081 /* y1 is the Bessel function of the second kind of order 1 */
4084 TEST_f_f (y1, -1.0, minus_infty);
4085 TEST_f_f (y1, 0.0, minus_infty);
4086 TEST_f_f (y1, plus_infty, 0);
4087 TEST_f_f (y1, nan_value, nan_value);
4089 TEST_f_f (y1, 0.1L, -6.4589510947020269877L);
4090 TEST_f_f (y1, 0.7L, -1.1032498719076333697L);
4091 TEST_f_f (y1, 1.0, -0.78121282130028871655L);
4092 TEST_f_f (y1, 1.5, -0.41230862697391129595L);
4093 TEST_f_f (y1, 2.0, -0.10703243154093754689L);
4094 TEST_f_f (y1, 8.0, -0.15806046173124749426L);
4095 TEST_f_f (y1, 10.0, 0.24901542420695388392L);
4105 FUNC (sincos) (0, &s, &c);
4106 if (errno == ENOSYS)
4107 /* Required function not implemented. */
4110 if (errno == ENOSYS)
4111 /* Function not implemented. */
4114 /* yn is the Bessel function of the second kind of order n */
4117 /* yn (0, x) == y0 (x) */
4118 TEST_ff_f (yn, 0, -1.0, minus_infty);
4119 TEST_ff_f (yn, 0, 0.0, minus_infty);
4120 TEST_ff_f (yn, 0, nan_value, nan_value);
4121 TEST_ff_f (yn, 0, plus_infty, 0);
4123 TEST_ff_f (yn, 0, 0.1L, -1.5342386513503668441L);
4124 TEST_ff_f (yn, 0, 0.7L, -0.19066492933739506743L);
4125 TEST_ff_f (yn, 0, 1.0, 0.088256964215676957983L);
4126 TEST_ff_f (yn, 0, 1.5, 0.38244892379775884396L);
4127 TEST_ff_f (yn, 0, 2.0, 0.51037567264974511960L);
4128 TEST_ff_f (yn, 0, 8.0, 0.22352148938756622053L);
4129 TEST_ff_f (yn, 0, 10.0, 0.055671167283599391424L);
4131 /* yn (1, x) == y1 (x) */
4132 TEST_ff_f (yn, 1, -1.0, minus_infty);
4133 TEST_ff_f (yn, 1, 0.0, minus_infty);
4134 TEST_ff_f (yn, 1, plus_infty, 0);
4135 TEST_ff_f (yn, 1, nan_value, nan_value);
4137 TEST_ff_f (yn, 1, 0.1L, -6.4589510947020269877L);
4138 TEST_ff_f (yn, 1, 0.7L, -1.1032498719076333697L);
4139 TEST_ff_f (yn, 1, 1.0, -0.78121282130028871655L);
4140 TEST_ff_f (yn, 1, 1.5, -0.41230862697391129595L);
4141 TEST_ff_f (yn, 1, 2.0, -0.10703243154093754689L);
4142 TEST_ff_f (yn, 1, 8.0, -0.15806046173124749426L);
4143 TEST_ff_f (yn, 1, 10.0, 0.24901542420695388392L);
4146 TEST_ff_f (yn, 3, plus_infty, 0);
4147 TEST_ff_f (yn, 3, nan_value, nan_value);
4149 TEST_ff_f (yn, 3, 0.1L, -5099.3323786129048894L);
4150 TEST_ff_f (yn, 3, 0.7L, -15.819479052819633505L);
4151 TEST_ff_f (yn, 3, 1.0, -5.8215176059647288478L);
4152 TEST_ff_f (yn, 3, 2.0, -1.1277837768404277861L);
4153 TEST_ff_f (yn, 3, 10.0, -0.25136265718383732978L);
4156 TEST_ff_f (yn, 10, plus_infty, 0);
4157 TEST_ff_f (yn, 10, nan_value, nan_value);
4159 TEST_ff_f (yn, 10, 0.1L, -0.11831335132045197885e19L);
4160 TEST_ff_f (yn, 10, 0.7L, -0.42447194260703866924e10L);
4161 TEST_ff_f (yn, 10, 1.0, -0.12161801427868918929e9L);
4162 TEST_ff_f (yn, 10, 2.0, -129184.54220803928264L);
4163 TEST_ff_f (yn, 10, 10.0, -0.35981415218340272205L);
4174 fpstack_test ("start *init*");
4176 nan_value = plus_zero / plus_zero; /* Suppress GCC warning */
4178 minus_zero = FUNC(copysign) (0.0, -1.0);
4179 plus_infty = CHOOSE (HUGE_VALL, HUGE_VAL, HUGE_VALF,
4180 HUGE_VALL, HUGE_VAL, HUGE_VALF);
4181 minus_infty = CHOOSE (-HUGE_VALL, -HUGE_VAL, -HUGE_VALF,
4182 -HUGE_VALL, -HUGE_VAL, -HUGE_VALF);
4188 (void) &minus_infty;
4190 /* Clear all exceptions. From now on we must not get random exceptions. */
4191 feclearexcept (FE_ALL_EXCEPT);
4193 /* Test to make sure we start correctly. */
4194 fpstack_test ("end *init*");
4197 /* Definitions of arguments for argp functions. */
4198 static const struct argp_option options[] =
4200 { "verbose", 'v', "NUMBER", 0, "Level of verbosity (0..3)"},
4201 { "ulps-file", 'u', NULL, 0, "Output ulps to file ULPs"},
4202 { "no-max-error", 'f', NULL, 0,
4203 "Don't output maximal errors of functions"},
4204 { "no-points", 'p', NULL, 0,
4205 "Don't output results of functions invocations"},
4206 { "ignore-max-ulp", 'i', "yes/no", 0,
4207 "Ignore given maximal errors"},
4208 { NULL, 0, NULL, 0, NULL }
4211 /* Short description of program. */
4212 static const char doc[] = "Math test suite: " TEST_MSG ;
4214 /* Prototype for option handler. */
4215 static error_t parse_opt (int key, char *arg, struct argp_state *state);
4217 /* Data structure to communicate with argp functions. */
4218 static struct argp argp =
4220 options, parse_opt, NULL, doc,
4224 /* Handle program arguments. */
4226 parse_opt (int key, char *arg, struct argp_state *state)
4231 output_max_error = 0;
4234 if (strcmp (arg, "yes") == 0)
4236 else if (strcmp (arg, "no") == 0)
4247 verbose = (unsigned int) strtoul (optarg, NULL, 0);
4252 return ARGP_ERR_UNKNOWN;
4258 /* function to check our ulp calculation. */
4265 /* This gives one ulp. */
4266 u = FUNC(nextafter) (10, 20);
4267 check_equal (10.0, u, 1, &diff, &ulp);
4268 printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp);
4270 /* This gives one more ulp. */
4271 u = FUNC(nextafter) (u, 20);
4272 check_equal (10.0, u, 2, &diff, &ulp);
4273 printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp);
4275 /* And now calculate 100 ulp. */
4276 for (i = 2; i < 100; i++)
4277 u = FUNC(nextafter) (u, 20);
4278 check_equal (10.0, u, 100, &diff, &ulp);
4279 printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp);
4284 main (int argc, char **argv)
4291 output_max_error = 1;
4293 /* XXX set to 0 for releases. */
4296 /* Parse and process arguments. */
4297 argp_parse (&argp, argc, argv, 0, &remaining, NULL);
4299 if (remaining != argc)
4301 fprintf (stderr, "wrong number of arguments");
4302 argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
4303 exit (EXIT_FAILURE);
4308 ulps_file = fopen ("ULPs", "a");
4309 if (ulps_file == NULL)
4311 perror ("can't open file `ULPs' for writing: ");
4324 /* Keep the tests a wee bit ordered (according to ISO C99). */
4325 /* Classification macros: */
4331 /* Trigonometric functions: */
4341 /* Hyperbolic functions: */
4349 /* Exponential and logarithmic functions: */
4367 /* Power and absolute value functions: */
4374 /* Error and gamma functions: */
4381 /* Nearest integer functions: */
4393 /* Remainder functions: */
4398 /* Manipulation functions: */
4403 /* maximum, minimum and positive difference functions */
4408 /* Multiply and add: */
4411 /* Complex functions: */
4436 /* Bessel functions: */
4447 printf ("\nTest suite completed:\n");
4448 printf (" %d test cases plus %d tests for exception flags executed.\n",
4449 noTests, noExcTests);
4451 printf (" %d expected failures occurred.\n", noXFails);
4453 printf (" %d unexpected passes occurred.\n", noXPasses);
4456 printf (" %d errors occurred.\n", noErrors);
4459 printf (" All tests passed successfully.\n");