1 |
1325 |
phoenix |
/* 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 , 1997.
|
4 |
|
|
|
5 |
|
|
The GNU C Library is free software; you can redistribute it and/or
|
6 |
|
|
modify it under the terms of the GNU Lesser General Public
|
7 |
|
|
License as published by the Free Software Foundation; either
|
8 |
|
|
version 2.1 of the License, or (at your option) any later version.
|
9 |
|
|
|
10 |
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
11 |
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13 |
|
|
Lesser General Public License for more details.
|
14 |
|
|
|
15 |
|
|
You should have received a copy of the GNU Lesser General Public
|
16 |
|
|
License along with the GNU C Library; if not, write to the Free
|
17 |
|
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
18 |
|
|
02111-1307 USA. */
|
19 |
|
|
|
20 |
|
|
/* Part of testsuite for libm.
|
21 |
|
|
|
22 |
|
|
This file is processed by a perl script. The resulting file has to
|
23 |
|
|
be included by a master file that defines:
|
24 |
|
|
|
25 |
|
|
Makros:
|
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
|
33 |
|
|
equality
|
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,
|
37 |
|
|
e.g. "f".
|
38 |
|
|
PRINTF_XEXPR Like PRINTF_EXPR, but print in hexadecimal format.
|
39 |
|
|
PRINTF_NEXPR Like PRINTF_EXPR, but print nice. */
|
40 |
|
|
|
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,
|
45 |
|
|
frexp, gamma, hypot,
|
46 |
|
|
ilogb, isfinite, isinf, isnan, isnormal,
|
47 |
|
|
isless, islessequal, isgreater, isgreaterequal, islessgreater, isunordered,
|
48 |
|
|
j0, j1, jn,
|
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,
|
54 |
|
|
y0, y1, yn
|
55 |
|
|
|
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.
|
59 |
|
|
|
60 |
|
|
At the moment the following functions aren't tested:
|
61 |
|
|
drem, significand, nan
|
62 |
|
|
|
63 |
|
|
Parameter handling is primitive in the moment:
|
64 |
|
|
--verbose=[0..3] for different levels of output:
|
65 |
|
|
0: only error count
|
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
|
70 |
|
|
*/
|
71 |
|
|
|
72 |
|
|
/* "Philosophy":
|
73 |
|
|
|
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
|
80 |
|
|
specified in ISO C99.
|
81 |
|
|
|
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.
|
85 |
|
|
|
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.
|
89 |
|
|
|
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"
|
98 |
|
|
values are checked.
|
99 |
|
|
|
100 |
|
|
Beware: The tests might fail for any of the following reasons:
|
101 |
|
|
- Tests are wrong
|
102 |
|
|
- Functions are wrong
|
103 |
|
|
- Floating Point Unit not working properly
|
104 |
|
|
- Compiler has errors
|
105 |
|
|
|
106 |
|
|
With e.g. gcc 2.7.2.2 the test for cexp fails because of a compiler error.
|
107 |
|
|
|
108 |
|
|
|
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.
|
112 |
|
|
*/
|
113 |
|
|
|
114 |
|
|
#ifndef _GNU_SOURCE
|
115 |
|
|
# define _GNU_SOURCE
|
116 |
|
|
#endif
|
117 |
|
|
|
118 |
|
|
#include "libm-test-ulps.h"
|
119 |
|
|
#include
|
120 |
|
|
#include
|
121 |
|
|
#include
|
122 |
|
|
#include
|
123 |
|
|
|
124 |
|
|
#include
|
125 |
|
|
#include
|
126 |
|
|
#include
|
127 |
|
|
#include
|
128 |
|
|
#include
|
129 |
|
|
|
130 |
|
|
//#include
|
131 |
|
|
#define feclearexcept(X)
|
132 |
|
|
#define fetestexcept(X) 0
|
133 |
|
|
|
134 |
|
|
/* Possible exceptions */
|
135 |
|
|
#define NO_EXCEPTION 0x0
|
136 |
|
|
#define INVALID_EXCEPTION 0x1
|
137 |
|
|
#define DIVIDE_BY_ZERO_EXCEPTION 0x2
|
138 |
|
|
/* The next flags signals that those exceptions are allowed but not required. */
|
139 |
|
|
#define INVALID_EXCEPTION_OK 0x4
|
140 |
|
|
#define DIVIDE_BY_ZERO_EXCEPTION_OK 0x8
|
141 |
|
|
#define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK
|
142 |
|
|
/* Some special test flags, passed togther with exceptions. */
|
143 |
|
|
#define IGNORE_ZERO_INF_SIGN 0x10
|
144 |
|
|
|
145 |
|
|
/* Various constants (we must supply them precalculated for accuracy). */
|
146 |
|
|
#define M_PI_6l .52359877559829887307710723054658383L
|
147 |
|
|
#define M_E2l 7.389056098930650227230427460575008L
|
148 |
|
|
#define M_E3l 20.085536923187667740928529654581719L
|
149 |
|
|
#define M_2_SQRT_PIl 3.5449077018110320545963349666822903L /* 2 sqrt (M_PIl) */
|
150 |
|
|
#define M_SQRT_PIl 1.7724538509055160272981674833411451L /* sqrt (M_PIl) */
|
151 |
|
|
#define M_LOG_SQRT_PIl 0.57236494292470008707171367567652933L /* log(sqrt(M_PIl)) */
|
152 |
|
|
#define M_LOG_2_SQRT_PIl 1.265512123484645396488945797134706L /* log(2*sqrt(M_PIl)) */
|
153 |
|
|
#define M_PI_34l (M_PIl - M_PI_4l) /* 3*pi/4 */
|
154 |
|
|
#define M_PI_34_LOG10El (M_PIl - M_PI_4l) * M_LOG10El
|
155 |
|
|
#define M_PI2_LOG10El M_PI_2l * M_LOG10El
|
156 |
|
|
#define M_PI4_LOG10El M_PI_4l * M_LOG10El
|
157 |
|
|
#define M_PI_LOG10El M_PIl * M_LOG10El
|
158 |
|
|
|
159 |
|
|
static FILE *ulps_file; /* File to document difference. */
|
160 |
|
|
static int output_ulps; /* Should ulps printed? */
|
161 |
|
|
|
162 |
|
|
static int noErrors; /* number of errors */
|
163 |
|
|
static int noTests; /* number of tests (without testing exceptions) */
|
164 |
|
|
static int noExcTests; /* number of tests for exception flags */
|
165 |
|
|
static int noXFails; /* number of expected failures. */
|
166 |
|
|
static int noXPasses; /* number of unexpected passes. */
|
167 |
|
|
|
168 |
|
|
static int verbose;
|
169 |
|
|
static int output_max_error; /* Should the maximal errors printed? */
|
170 |
|
|
static int output_points; /* Should the single function results printed? */
|
171 |
|
|
static int ignore_max_ulp; /* Should we ignore max_ulp? */
|
172 |
|
|
|
173 |
|
|
static FLOAT minus_zero, plus_zero;
|
174 |
|
|
static FLOAT plus_infty, minus_infty, nan_value;
|
175 |
|
|
|
176 |
|
|
static FLOAT max_error, real_max_error, imag_max_error;
|
177 |
|
|
|
178 |
|
|
|
179 |
|
|
#define BUILD_COMPLEX(real, imag) \
|
180 |
|
|
({ __complex__ FLOAT __retval; \
|
181 |
|
|
__real__ __retval = (real); \
|
182 |
|
|
__imag__ __retval = (imag); \
|
183 |
|
|
__retval; })
|
184 |
|
|
|
185 |
|
|
#define BUILD_COMPLEX_INT(real, imag) \
|
186 |
|
|
({ __complex__ int __retval; \
|
187 |
|
|
__real__ __retval = (real); \
|
188 |
|
|
__imag__ __retval = (imag); \
|
189 |
|
|
__retval; })
|
190 |
|
|
|
191 |
|
|
|
192 |
|
|
#define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1), \
|
193 |
|
|
(LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
|
194 |
|
|
|
195 |
|
|
static void
|
196 |
|
|
init_max_error (void)
|
197 |
|
|
{
|
198 |
|
|
max_error = 0;
|
199 |
|
|
real_max_error = 0;
|
200 |
|
|
imag_max_error = 0;
|
201 |
|
|
feclearexcept (FE_ALL_EXCEPT);
|
202 |
|
|
}
|
203 |
|
|
|
204 |
|
|
static void
|
205 |
|
|
set_max_error (FLOAT current, FLOAT *curr_max_error)
|
206 |
|
|
{
|
207 |
|
|
if (current > *curr_max_error)
|
208 |
|
|
*curr_max_error = current;
|
209 |
|
|
}
|
210 |
|
|
|
211 |
|
|
|
212 |
|
|
/* Should the message print to screen? This depends on the verbose flag,
|
213 |
|
|
and the test status. */
|
214 |
|
|
static int
|
215 |
|
|
print_screen (int ok, int xfail)
|
216 |
|
|
{
|
217 |
|
|
if (output_points
|
218 |
|
|
&& (verbose > 1
|
219 |
|
|
|| (verbose == 1 && ok == xfail)))
|
220 |
|
|
return 1;
|
221 |
|
|
return 0;
|
222 |
|
|
}
|
223 |
|
|
|
224 |
|
|
|
225 |
|
|
/* Should the message print to screen? This depends on the verbose flag,
|
226 |
|
|
and the test status. */
|
227 |
|
|
static int
|
228 |
|
|
print_screen_max_error (int ok, int xfail)
|
229 |
|
|
{
|
230 |
|
|
if (output_max_error
|
231 |
|
|
&& (verbose > 1
|
232 |
|
|
|| ((verbose == 1) && (ok == xfail))))
|
233 |
|
|
return 1;
|
234 |
|
|
return 0;
|
235 |
|
|
}
|
236 |
|
|
|
237 |
|
|
/* Update statistic counters. */
|
238 |
|
|
static void
|
239 |
|
|
update_stats (int ok, int xfail)
|
240 |
|
|
{
|
241 |
|
|
++noTests;
|
242 |
|
|
if (ok && xfail)
|
243 |
|
|
++noXPasses;
|
244 |
|
|
else if (!ok && xfail)
|
245 |
|
|
++noXFails;
|
246 |
|
|
else if (!ok && !xfail)
|
247 |
|
|
++noErrors;
|
248 |
|
|
}
|
249 |
|
|
|
250 |
|
|
static void
|
251 |
|
|
print_ulps (const char *test_name, FLOAT ulp)
|
252 |
|
|
{
|
253 |
|
|
if (output_ulps)
|
254 |
|
|
{
|
255 |
|
|
fprintf (ulps_file, "Test \"%s\":\n", test_name);
|
256 |
|
|
fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
|
257 |
|
|
CHOOSE("ldouble", "double", "float",
|
258 |
|
|
"ildouble", "idouble", "ifloat"),
|
259 |
|
|
FUNC(ceil) (ulp));
|
260 |
|
|
}
|
261 |
|
|
}
|
262 |
|
|
|
263 |
|
|
static void
|
264 |
|
|
print_function_ulps (const char *function_name, FLOAT ulp)
|
265 |
|
|
{
|
266 |
|
|
if (output_ulps)
|
267 |
|
|
{
|
268 |
|
|
fprintf (ulps_file, "Function: \"%s\":\n", function_name);
|
269 |
|
|
fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
|
270 |
|
|
CHOOSE("ldouble", "double", "float",
|
271 |
|
|
"ildouble", "idouble", "ifloat"),
|
272 |
|
|
FUNC(ceil) (ulp));
|
273 |
|
|
}
|
274 |
|
|
}
|
275 |
|
|
|
276 |
|
|
|
277 |
|
|
static void
|
278 |
|
|
print_complex_function_ulps (const char *function_name, FLOAT real_ulp,
|
279 |
|
|
FLOAT imag_ulp)
|
280 |
|
|
{
|
281 |
|
|
if (output_ulps)
|
282 |
|
|
{
|
283 |
|
|
if (real_ulp != 0.0)
|
284 |
|
|
{
|
285 |
|
|
fprintf (ulps_file, "Function: Real part of \"%s\":\n", function_name);
|
286 |
|
|
fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
|
287 |
|
|
CHOOSE("ldouble", "double", "float",
|
288 |
|
|
"ildouble", "idouble", "ifloat"),
|
289 |
|
|
FUNC(ceil) (real_ulp));
|
290 |
|
|
}
|
291 |
|
|
if (imag_ulp != 0.0)
|
292 |
|
|
{
|
293 |
|
|
fprintf (ulps_file, "Function: Imaginary part of \"%s\":\n", function_name);
|
294 |
|
|
fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
|
295 |
|
|
CHOOSE("ldouble", "double", "float",
|
296 |
|
|
"ildouble", "idouble", "ifloat"),
|
297 |
|
|
FUNC(ceil) (imag_ulp));
|
298 |
|
|
}
|
299 |
|
|
|
300 |
|
|
|
301 |
|
|
}
|
302 |
|
|
}
|
303 |
|
|
|
304 |
|
|
|
305 |
|
|
|
306 |
|
|
/* Test if Floating-Point stack hasn't changed */
|
307 |
|
|
static void
|
308 |
|
|
fpstack_test (const char *test_name)
|
309 |
|
|
{
|
310 |
|
|
#ifdef i386
|
311 |
|
|
static int old_stack;
|
312 |
|
|
int sw;
|
313 |
|
|
|
314 |
|
|
asm ("fnstsw" : "=a" (sw));
|
315 |
|
|
sw >>= 11;
|
316 |
|
|
sw &= 7;
|
317 |
|
|
|
318 |
|
|
if (sw != old_stack)
|
319 |
|
|
{
|
320 |
|
|
printf ("FP-Stack wrong after test %s (%d, should be %d)\n",
|
321 |
|
|
test_name, sw, old_stack);
|
322 |
|
|
++noErrors;
|
323 |
|
|
old_stack = sw;
|
324 |
|
|
}
|
325 |
|
|
#endif
|
326 |
|
|
}
|
327 |
|
|
|
328 |
|
|
|
329 |
|
|
static void
|
330 |
|
|
print_max_error (const char *func_name, FLOAT allowed, int xfail)
|
331 |
|
|
{
|
332 |
|
|
int ok = 0;
|
333 |
|
|
|
334 |
|
|
if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
|
335 |
|
|
{
|
336 |
|
|
ok = 1;
|
337 |
|
|
}
|
338 |
|
|
|
339 |
|
|
if (!ok)
|
340 |
|
|
print_function_ulps (func_name, max_error);
|
341 |
|
|
|
342 |
|
|
|
343 |
|
|
if (print_screen_max_error (ok, xfail))
|
344 |
|
|
{
|
345 |
|
|
printf ("Maximal error of `%s'\n", func_name);
|
346 |
|
|
printf (" is : %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (max_error));
|
347 |
|
|
printf (" accepted: %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (allowed));
|
348 |
|
|
}
|
349 |
|
|
|
350 |
|
|
update_stats (ok, xfail);
|
351 |
|
|
}
|
352 |
|
|
|
353 |
|
|
|
354 |
|
|
static void
|
355 |
|
|
print_complex_max_error (const char *func_name, __complex__ FLOAT allowed,
|
356 |
|
|
__complex__ int xfail)
|
357 |
|
|
{
|
358 |
|
|
int ok = 0;
|
359 |
|
|
|
360 |
|
|
if ((real_max_error == 0 && imag_max_error == 0)
|
361 |
|
|
|| (real_max_error <= __real__ allowed
|
362 |
|
|
&& imag_max_error <= __imag__ allowed
|
363 |
|
|
&& !ignore_max_ulp))
|
364 |
|
|
{
|
365 |
|
|
ok = 1;
|
366 |
|
|
}
|
367 |
|
|
|
368 |
|
|
if (!ok)
|
369 |
|
|
print_complex_function_ulps (func_name, real_max_error, imag_max_error);
|
370 |
|
|
|
371 |
|
|
|
372 |
|
|
if (print_screen_max_error (ok, xfail))
|
373 |
|
|
{
|
374 |
|
|
printf ("Maximal error of real part of: %s\n", func_name);
|
375 |
|
|
printf (" is : %.0" PRINTF_NEXPR " ulp\n",
|
376 |
|
|
FUNC(ceil) (real_max_error));
|
377 |
|
|
printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
|
378 |
|
|
FUNC(ceil) (__real__ allowed));
|
379 |
|
|
printf ("Maximal error of imaginary part of: %s\n", func_name);
|
380 |
|
|
printf (" is : %.0" PRINTF_NEXPR " ulp\n",
|
381 |
|
|
FUNC(ceil) (imag_max_error));
|
382 |
|
|
printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
|
383 |
|
|
FUNC(ceil) (__imag__ allowed));
|
384 |
|
|
}
|
385 |
|
|
|
386 |
|
|
update_stats (ok, xfail);
|
387 |
|
|
}
|
388 |
|
|
|
389 |
|
|
|
390 |
|
|
/* Test whether a given exception was raised. */
|
391 |
|
|
static void
|
392 |
|
|
test_single_exception (const char *test_name,
|
393 |
|
|
int exception,
|
394 |
|
|
int exc_flag,
|
395 |
|
|
int fe_flag,
|
396 |
|
|
const char *flag_name)
|
397 |
|
|
{
|
398 |
|
|
#ifndef TEST_INLINE
|
399 |
|
|
int ok = 1;
|
400 |
|
|
if (exception & exc_flag)
|
401 |
|
|
{
|
402 |
|
|
if (fetestexcept (fe_flag))
|
403 |
|
|
{
|
404 |
|
|
if (print_screen (1, 0))
|
405 |
|
|
printf ("Pass: %s: Exception \"%s\" set\n", test_name, flag_name);
|
406 |
|
|
}
|
407 |
|
|
else
|
408 |
|
|
{
|
409 |
|
|
ok = 0;
|
410 |
|
|
if (print_screen (0, 0))
|
411 |
|
|
printf ("Failure: %s: Exception \"%s\" not set\n",
|
412 |
|
|
test_name, flag_name);
|
413 |
|
|
}
|
414 |
|
|
}
|
415 |
|
|
else
|
416 |
|
|
{
|
417 |
|
|
if (fetestexcept (fe_flag))
|
418 |
|
|
{
|
419 |
|
|
ok = 0;
|
420 |
|
|
if (print_screen (0, 0))
|
421 |
|
|
printf ("Failure: %s: Exception \"%s\" set\n",
|
422 |
|
|
test_name, flag_name);
|
423 |
|
|
}
|
424 |
|
|
else
|
425 |
|
|
{
|
426 |
|
|
if (print_screen (1, 0))
|
427 |
|
|
printf ("%s: Exception \"%s\" not set\n", test_name,
|
428 |
|
|
flag_name);
|
429 |
|
|
}
|
430 |
|
|
}
|
431 |
|
|
if (!ok)
|
432 |
|
|
++noErrors;
|
433 |
|
|
|
434 |
|
|
#endif
|
435 |
|
|
}
|
436 |
|
|
|
437 |
|
|
|
438 |
|
|
/* Test whether exceptions given by EXCEPTION are raised. Ignore thereby
|
439 |
|
|
allowed but not required exceptions.
|
440 |
|
|
*/
|
441 |
|
|
static void
|
442 |
|
|
test_exceptions (const char *test_name, int exception)
|
443 |
|
|
{
|
444 |
|
|
++noExcTests;
|
445 |
|
|
#ifdef FE_DIVBYZERO
|
446 |
|
|
if ((exception & DIVIDE_BY_ZERO_EXCEPTION_OK) == 0)
|
447 |
|
|
test_single_exception (test_name, exception,
|
448 |
|
|
DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO,
|
449 |
|
|
"Divide by zero");
|
450 |
|
|
#endif
|
451 |
|
|
#ifdef FE_INVALID
|
452 |
|
|
if ((exception & INVALID_EXCEPTION_OK) == 0)
|
453 |
|
|
test_single_exception (test_name, exception, INVALID_EXCEPTION, FE_INVALID,
|
454 |
|
|
"Invalid operation");
|
455 |
|
|
#endif
|
456 |
|
|
feclearexcept (FE_ALL_EXCEPT);
|
457 |
|
|
}
|
458 |
|
|
|
459 |
|
|
|
460 |
|
|
static void
|
461 |
|
|
check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
|
462 |
|
|
FLOAT max_ulp, int xfail, int exceptions,
|
463 |
|
|
FLOAT *curr_max_error)
|
464 |
|
|
{
|
465 |
|
|
int ok = 0;
|
466 |
|
|
int print_diff = 0;
|
467 |
|
|
FLOAT diff = 0;
|
468 |
|
|
FLOAT ulp = 0;
|
469 |
|
|
|
470 |
|
|
test_exceptions (test_name, exceptions);
|
471 |
|
|
if (isnan (computed) && isnan (expected))
|
472 |
|
|
ok = 1;
|
473 |
|
|
else if (isinf (computed) && isinf (expected))
|
474 |
|
|
{
|
475 |
|
|
/* Test for sign of infinities. */
|
476 |
|
|
if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
|
477 |
|
|
&& signbit (computed) != signbit (expected))
|
478 |
|
|
{
|
479 |
|
|
ok = 0;
|
480 |
|
|
printf ("infinity has wrong sign.\n");
|
481 |
|
|
}
|
482 |
|
|
else
|
483 |
|
|
ok = 1;
|
484 |
|
|
}
|
485 |
|
|
/* Don't calc ulp for NaNs or infinities. */
|
486 |
|
|
else if (isinf (computed) || isnan (computed) || isinf (expected) || isnan (expected))
|
487 |
|
|
ok = 0;
|
488 |
|
|
else
|
489 |
|
|
{
|
490 |
|
|
diff = FUNC(fabs) (computed - expected);
|
491 |
|
|
/* ilogb (0) isn't allowed. */
|
492 |
|
|
if (expected == 0.0)
|
493 |
|
|
ulp = diff / FUNC(ldexp) (1.0, - MANT_DIG);
|
494 |
|
|
else
|
495 |
|
|
ulp = diff / FUNC(ldexp) (1.0, FUNC(ilogb) (expected) - MANT_DIG);
|
496 |
|
|
set_max_error (ulp, curr_max_error);
|
497 |
|
|
print_diff = 1;
|
498 |
|
|
if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
|
499 |
|
|
&& computed == 0.0 && expected == 0.0
|
500 |
|
|
&& signbit(computed) != signbit (expected))
|
501 |
|
|
ok = 0;
|
502 |
|
|
else if (ulp == 0.0 || (ulp <= max_ulp && !ignore_max_ulp))
|
503 |
|
|
ok = 1;
|
504 |
|
|
else
|
505 |
|
|
{
|
506 |
|
|
ok = 0;
|
507 |
|
|
print_ulps (test_name, ulp);
|
508 |
|
|
}
|
509 |
|
|
|
510 |
|
|
}
|
511 |
|
|
if (print_screen (ok, xfail))
|
512 |
|
|
{
|
513 |
|
|
if (!ok)
|
514 |
|
|
printf ("Failure: ");
|
515 |
|
|
printf ("Test: %s\n", test_name);
|
516 |
|
|
printf ("Result:\n");
|
517 |
|
|
printf (" is: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR "\n",
|
518 |
|
|
computed, computed);
|
519 |
|
|
printf (" should be: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR "\n",
|
520 |
|
|
expected, expected);
|
521 |
|
|
if (print_diff)
|
522 |
|
|
{
|
523 |
|
|
printf (" difference: % .20" PRINTF_EXPR " % .20" PRINTF_XEXPR
|
524 |
|
|
"\n", diff, diff);
|
525 |
|
|
printf (" ulp : % .4" PRINTF_NEXPR "\n", ulp);
|
526 |
|
|
printf (" max.ulp : % .4" PRINTF_NEXPR "\n", max_ulp);
|
527 |
|
|
}
|
528 |
|
|
}
|
529 |
|
|
update_stats (ok, xfail);
|
530 |
|
|
|
531 |
|
|
fpstack_test (test_name);
|
532 |
|
|
}
|
533 |
|
|
|
534 |
|
|
|
535 |
|
|
static void
|
536 |
|
|
check_float (const char *test_name, FLOAT computed, FLOAT expected,
|
537 |
|
|
FLOAT max_ulp, int xfail, int exceptions)
|
538 |
|
|
{
|
539 |
|
|
check_float_internal (test_name, computed, expected, max_ulp, xfail,
|
540 |
|
|
exceptions, &max_error);
|
541 |
|
|
}
|
542 |
|
|
|
543 |
|
|
|
544 |
|
|
static void
|
545 |
|
|
check_complex (const char *test_name, __complex__ FLOAT computed,
|
546 |
|
|
__complex__ FLOAT expected,
|
547 |
|
|
__complex__ FLOAT max_ulp, __complex__ int xfail,
|
548 |
|
|
int exception)
|
549 |
|
|
{
|
550 |
|
|
FLOAT part_comp, part_exp, part_max_ulp;
|
551 |
|
|
int part_xfail;
|
552 |
|
|
char str[200];
|
553 |
|
|
|
554 |
|
|
sprintf (str, "Real part of: %s", test_name);
|
555 |
|
|
part_comp = __real__ computed;
|
556 |
|
|
part_exp = __real__ expected;
|
557 |
|
|
part_max_ulp = __real__ max_ulp;
|
558 |
|
|
part_xfail = __real__ xfail;
|
559 |
|
|
|
560 |
|
|
check_float_internal (str, part_comp, part_exp, part_max_ulp, part_xfail,
|
561 |
|
|
exception, &real_max_error);
|
562 |
|
|
|
563 |
|
|
sprintf (str, "Imaginary part of: %s", test_name);
|
564 |
|
|
part_comp = __imag__ computed;
|
565 |
|
|
part_exp = __imag__ expected;
|
566 |
|
|
part_max_ulp = __imag__ max_ulp;
|
567 |
|
|
part_xfail = __imag__ xfail;
|
568 |
|
|
|
569 |
|
|
/* Don't check again for exceptions, just pass through the
|
570 |
|
|
zero/inf sign test. */
|
571 |
|
|
check_float_internal (str, part_comp, part_exp, part_max_ulp, part_xfail,
|
572 |
|
|
exception & IGNORE_ZERO_INF_SIGN,
|
573 |
|
|
&imag_max_error);
|
574 |
|
|
}
|
575 |
|
|
|
576 |
|
|
|
577 |
|
|
/* Check that computed and expected values are equal (int values). */
|
578 |
|
|
static void
|
579 |
|
|
check_int (const char *test_name, int computed, int expected, int max_ulp,
|
580 |
|
|
int xfail, int exceptions)
|
581 |
|
|
{
|
582 |
|
|
int diff = computed - expected;
|
583 |
|
|
int ok = 0;
|
584 |
|
|
|
585 |
|
|
test_exceptions (test_name, exceptions);
|
586 |
|
|
noTests++;
|
587 |
|
|
if (abs (diff) <= max_ulp)
|
588 |
|
|
ok = 1;
|
589 |
|
|
|
590 |
|
|
if (!ok)
|
591 |
|
|
print_ulps (test_name, diff);
|
592 |
|
|
|
593 |
|
|
if (print_screen (ok, xfail))
|
594 |
|
|
{
|
595 |
|
|
if (!ok)
|
596 |
|
|
printf ("Failure: ");
|
597 |
|
|
printf ("Test: %s\n", test_name);
|
598 |
|
|
printf ("Result:\n");
|
599 |
|
|
printf (" is: %d\n", computed);
|
600 |
|
|
printf (" should be: %d\n", expected);
|
601 |
|
|
}
|
602 |
|
|
|
603 |
|
|
update_stats (ok, xfail);
|
604 |
|
|
fpstack_test (test_name);
|
605 |
|
|
}
|
606 |
|
|
|
607 |
|
|
|
608 |
|
|
/* Check that computed and expected values are equal (long int values). */
|
609 |
|
|
static void
|
610 |
|
|
check_long (const char *test_name, long int computed, long int expected,
|
611 |
|
|
long int max_ulp, int xfail, int exceptions)
|
612 |
|
|
{
|
613 |
|
|
long int diff = computed - expected;
|
614 |
|
|
int ok = 0;
|
615 |
|
|
|
616 |
|
|
test_exceptions (test_name, exceptions);
|
617 |
|
|
noTests++;
|
618 |
|
|
if (labs (diff) <= max_ulp)
|
619 |
|
|
ok = 1;
|
620 |
|
|
|
621 |
|
|
if (!ok)
|
622 |
|
|
print_ulps (test_name, diff);
|
623 |
|
|
|
624 |
|
|
if (print_screen (ok, xfail))
|
625 |
|
|
{
|
626 |
|
|
if (!ok)
|
627 |
|
|
printf ("Failure: ");
|
628 |
|
|
printf ("Test: %s\n", test_name);
|
629 |
|
|
printf ("Result:\n");
|
630 |
|
|
printf (" is: %ld\n", computed);
|
631 |
|
|
printf (" should be: %ld\n", expected);
|
632 |
|
|
}
|
633 |
|
|
|
634 |
|
|
update_stats (ok, xfail);
|
635 |
|
|
fpstack_test (test_name);
|
636 |
|
|
}
|
637 |
|
|
|
638 |
|
|
|
639 |
|
|
/* Check that computed value is true/false. */
|
640 |
|
|
static void
|
641 |
|
|
check_bool (const char *test_name, int computed, int expected,
|
642 |
|
|
long int max_ulp, int xfail, int exceptions)
|
643 |
|
|
{
|
644 |
|
|
int ok = 0;
|
645 |
|
|
|
646 |
|
|
test_exceptions (test_name, exceptions);
|
647 |
|
|
noTests++;
|
648 |
|
|
if ((computed == 0) == (expected == 0))
|
649 |
|
|
ok = 1;
|
650 |
|
|
|
651 |
|
|
if (print_screen (ok, xfail))
|
652 |
|
|
{
|
653 |
|
|
if (!ok)
|
654 |
|
|
printf ("Failure: ");
|
655 |
|
|
printf ("Test: %s\n", test_name);
|
656 |
|
|
printf ("Result:\n");
|
657 |
|
|
printf (" is: %d\n", computed);
|
658 |
|
|
printf (" should be: %d\n", expected);
|
659 |
|
|
}
|
660 |
|
|
|
661 |
|
|
update_stats (ok, xfail);
|
662 |
|
|
fpstack_test (test_name);
|
663 |
|
|
}
|
664 |
|
|
|
665 |
|
|
|
666 |
|
|
/* check that computed and expected values are equal (long int values) */
|
667 |
|
|
static void
|
668 |
|
|
check_longlong (const char *test_name, long long int computed,
|
669 |
|
|
long long int expected,
|
670 |
|
|
long long int max_ulp, int xfail,
|
671 |
|
|
int exceptions)
|
672 |
|
|
{
|
673 |
|
|
long long int diff = computed - expected;
|
674 |
|
|
int ok = 0;
|
675 |
|
|
|
676 |
|
|
test_exceptions (test_name, exceptions);
|
677 |
|
|
noTests++;
|
678 |
|
|
if (llabs (diff) <= max_ulp)
|
679 |
|
|
ok = 1;
|
680 |
|
|
|
681 |
|
|
if (!ok)
|
682 |
|
|
print_ulps (test_name, diff);
|
683 |
|
|
|
684 |
|
|
if (print_screen (ok, xfail))
|
685 |
|
|
{
|
686 |
|
|
if (!ok)
|
687 |
|
|
printf ("Failure:");
|
688 |
|
|
printf ("Test: %s\n", test_name);
|
689 |
|
|
printf ("Result:\n");
|
690 |
|
|
printf (" is: %lld\n", computed);
|
691 |
|
|
printf (" should be: %lld\n", expected);
|
692 |
|
|
}
|
693 |
|
|
|
694 |
|
|
update_stats (ok, xfail);
|
695 |
|
|
fpstack_test (test_name);
|
696 |
|
|
}
|
697 |
|
|
|
698 |
|
|
|
699 |
|
|
|
700 |
|
|
/* This is to prevent messages from the SVID libm emulation. */
|
701 |
|
|
int
|
702 |
|
|
matherr (struct exception *x __attribute__ ((unused)))
|
703 |
|
|
{
|
704 |
|
|
return 1;
|
705 |
|
|
}
|
706 |
|
|
|
707 |
|
|
|
708 |
|
|
/****************************************************************************
|
709 |
|
|
Tests for single functions of libm.
|
710 |
|
|
Please keep them alphabetically sorted!
|
711 |
|
|
****************************************************************************/
|
712 |
|
|
|
713 |
|
|
static void
|
714 |
|
|
acos_test (void)
|
715 |
|
|
{
|
716 |
|
|
errno = 0;
|
717 |
|
|
FUNC(acos) (0);
|
718 |
|
|
if (errno == ENOSYS)
|
719 |
|
|
/* Function not implemented. */
|
720 |
|
|
return;
|
721 |
|
|
|
722 |
|
|
START (acos);
|
723 |
|
|
|
724 |
|
|
TEST_f_f (acos, plus_infty, nan_value, INVALID_EXCEPTION);
|
725 |
|
|
TEST_f_f (acos, minus_infty, nan_value, INVALID_EXCEPTION);
|
726 |
|
|
TEST_f_f (acos, nan_value, nan_value);
|
727 |
|
|
|
728 |
|
|
/* |x| > 1: */
|
729 |
|
|
TEST_f_f (acos, 1.1L, nan_value, INVALID_EXCEPTION);
|
730 |
|
|
TEST_f_f (acos, -1.1L, nan_value, INVALID_EXCEPTION);
|
731 |
|
|
|
732 |
|
|
TEST_f_f (acos, 0, M_PI_2l);
|
733 |
|
|
TEST_f_f (acos, minus_zero, M_PI_2l);
|
734 |
|
|
TEST_f_f (acos, 1, 0);
|
735 |
|
|
TEST_f_f (acos, -1, M_PIl);
|
736 |
|
|
TEST_f_f (acos, 0.5, M_PI_6l*2.0);
|
737 |
|
|
TEST_f_f (acos, -0.5, M_PI_6l*4.0);
|
738 |
|
|
TEST_f_f (acos, 0.7L, 0.79539883018414355549096833892476432L);
|
739 |
|
|
|
740 |
|
|
END (acos);
|
741 |
|
|
}
|
742 |
|
|
|
743 |
|
|
static void
|
744 |
|
|
acosh_test (void)
|
745 |
|
|
{
|
746 |
|
|
errno = 0;
|
747 |
|
|
FUNC(acosh) (7);
|
748 |
|
|
if (errno == ENOSYS)
|
749 |
|
|
/* Function not implemented. */
|
750 |
|
|
return;
|
751 |
|
|
|
752 |
|
|
START (acosh);
|
753 |
|
|
|
754 |
|
|
TEST_f_f (acosh, plus_infty, plus_infty);
|
755 |
|
|
TEST_f_f (acosh, minus_infty, nan_value, INVALID_EXCEPTION);
|
756 |
|
|
|
757 |
|
|
/* x < 1: */
|
758 |
|
|
TEST_f_f (acosh, -1.1L, nan_value, INVALID_EXCEPTION);
|
759 |
|
|
|
760 |
|
|
TEST_f_f (acosh, 1, 0);
|
761 |
|
|
TEST_f_f (acosh, 7, 2.633915793849633417250092694615937L);
|
762 |
|
|
|
763 |
|
|
END (acosh);
|
764 |
|
|
}
|
765 |
|
|
|
766 |
|
|
static void
|
767 |
|
|
asin_test (void)
|
768 |
|
|
{
|
769 |
|
|
errno = 0;
|
770 |
|
|
FUNC(asin) (0);
|
771 |
|
|
if (errno == ENOSYS)
|
772 |
|
|
/* Function not implemented. */
|
773 |
|
|
return;
|
774 |
|
|
|
775 |
|
|
START (asin);
|
776 |
|
|
|
777 |
|
|
TEST_f_f (asin, plus_infty, nan_value, INVALID_EXCEPTION);
|
778 |
|
|
TEST_f_f (asin, minus_infty, nan_value, INVALID_EXCEPTION);
|
779 |
|
|
TEST_f_f (asin, nan_value, nan_value);
|
780 |
|
|
|
781 |
|
|
/* asin x == NaN plus invalid exception for |x| > 1. */
|
782 |
|
|
TEST_f_f (asin, 1.1L, nan_value, INVALID_EXCEPTION);
|
783 |
|
|
TEST_f_f (asin, -1.1L, nan_value, INVALID_EXCEPTION);
|
784 |
|
|
|
785 |
|
|
TEST_f_f (asin, 0, 0);
|
786 |
|
|
TEST_f_f (asin, minus_zero, minus_zero);
|
787 |
|
|
TEST_f_f (asin, 0.5, M_PI_6l);
|
788 |
|
|
TEST_f_f (asin, -0.5, -M_PI_6l);
|
789 |
|
|
TEST_f_f (asin, 1.0, M_PI_2l);
|
790 |
|
|
TEST_f_f (asin, -1.0, -M_PI_2l);
|
791 |
|
|
TEST_f_f (asin, 0.7L, 0.77539749661075306374035335271498708L);
|
792 |
|
|
|
793 |
|
|
END (asin);
|
794 |
|
|
}
|
795 |
|
|
|
796 |
|
|
static void
|
797 |
|
|
asinh_test (void)
|
798 |
|
|
{
|
799 |
|
|
errno = 0;
|
800 |
|
|
FUNC(asinh) (0.7L);
|
801 |
|
|
if (errno == ENOSYS)
|
802 |
|
|
/* Function not implemented. */
|
803 |
|
|
return;
|
804 |
|
|
|
805 |
|
|
START (asinh);
|
806 |
|
|
|
807 |
|
|
TEST_f_f (asinh, 0, 0);
|
808 |
|
|
TEST_f_f (asinh, minus_zero, minus_zero);
|
809 |
|
|
#ifndef TEST_INLINE
|
810 |
|
|
TEST_f_f (asinh, plus_infty, plus_infty);
|
811 |
|
|
TEST_f_f (asinh, minus_infty, minus_infty);
|
812 |
|
|
#endif
|
813 |
|
|
TEST_f_f (asinh, nan_value, nan_value);
|
814 |
|
|
TEST_f_f (asinh, 0.7L, 0.652666566082355786L);
|
815 |
|
|
|
816 |
|
|
END (asinh);
|
817 |
|
|
}
|
818 |
|
|
|
819 |
|
|
static void
|
820 |
|
|
atan_test (void)
|
821 |
|
|
{
|
822 |
|
|
errno = 0;
|
823 |
|
|
FUNC(atan) (0);
|
824 |
|
|
if (errno == ENOSYS)
|
825 |
|
|
/* Function not implemented. */
|
826 |
|
|
return;
|
827 |
|
|
|
828 |
|
|
START (atan);
|
829 |
|
|
|
830 |
|
|
TEST_f_f (atan, 0, 0);
|
831 |
|
|
TEST_f_f (atan, minus_zero, minus_zero);
|
832 |
|
|
|
833 |
|
|
TEST_f_f (atan, plus_infty, M_PI_2l);
|
834 |
|
|
TEST_f_f (atan, minus_infty, -M_PI_2l);
|
835 |
|
|
TEST_f_f (atan, nan_value, nan_value);
|
836 |
|
|
|
837 |
|
|
TEST_f_f (atan, 1, M_PI_4l);
|
838 |
|
|
TEST_f_f (atan, -1, -M_PI_4l);
|
839 |
|
|
|
840 |
|
|
TEST_f_f (atan, 0.7L, 0.61072596438920861654375887649023613L);
|
841 |
|
|
|
842 |
|
|
END (atan);
|
843 |
|
|
}
|
844 |
|
|
|
845 |
|
|
|
846 |
|
|
|
847 |
|
|
static void
|
848 |
|
|
atanh_test (void)
|
849 |
|
|
{
|
850 |
|
|
errno = 0;
|
851 |
|
|
FUNC(atanh) (0.7L);
|
852 |
|
|
if (errno == ENOSYS)
|
853 |
|
|
/* Function not implemented. */
|
854 |
|
|
return;
|
855 |
|
|
|
856 |
|
|
START (atanh);
|
857 |
|
|
|
858 |
|
|
|
859 |
|
|
TEST_f_f (atanh, 0, 0);
|
860 |
|
|
TEST_f_f (atanh, minus_zero, minus_zero);
|
861 |
|
|
|
862 |
|
|
TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
863 |
|
|
TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
864 |
|
|
TEST_f_f (atanh, nan_value, nan_value);
|
865 |
|
|
|
866 |
|
|
/* atanh (x) == NaN plus invalid exception if |x| > 1. */
|
867 |
|
|
TEST_f_f (atanh, 1.1L, nan_value, INVALID_EXCEPTION);
|
868 |
|
|
TEST_f_f (atanh, -1.1L, nan_value, INVALID_EXCEPTION);
|
869 |
|
|
|
870 |
|
|
TEST_f_f (atanh, 0.7L, 0.8673005276940531944L);
|
871 |
|
|
|
872 |
|
|
END (atanh);
|
873 |
|
|
}
|
874 |
|
|
|
875 |
|
|
static void
|
876 |
|
|
atan2_test (void)
|
877 |
|
|
{
|
878 |
|
|
errno = 0;
|
879 |
|
|
FUNC(atan2) (-0, 1);
|
880 |
|
|
if (errno == ENOSYS)
|
881 |
|
|
/* Function not implemented. */
|
882 |
|
|
return;
|
883 |
|
|
|
884 |
|
|
START (atan2);
|
885 |
|
|
|
886 |
|
|
/* atan2 (0,x) == 0 for x > 0. */
|
887 |
|
|
TEST_ff_f (atan2, 0, 1, 0);
|
888 |
|
|
|
889 |
|
|
/* atan2 (-0,x) == -0 for x > 0. */
|
890 |
|
|
TEST_ff_f (atan2, minus_zero, 1, minus_zero);
|
891 |
|
|
|
892 |
|
|
TEST_ff_f (atan2, 0, 0, 0);
|
893 |
|
|
TEST_ff_f (atan2, minus_zero, 0, minus_zero);
|
894 |
|
|
|
895 |
|
|
/* atan2 (+0,x) == +pi for x < 0. */
|
896 |
|
|
TEST_ff_f (atan2, 0, -1, M_PIl);
|
897 |
|
|
|
898 |
|
|
/* atan2 (-0,x) == -pi for x < 0. */
|
899 |
|
|
TEST_ff_f (atan2, minus_zero, -1, -M_PIl);
|
900 |
|
|
|
901 |
|
|
TEST_ff_f (atan2, 0, minus_zero, M_PIl);
|
902 |
|
|
TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl);
|
903 |
|
|
|
904 |
|
|
/* atan2 (y,+0) == pi/2 for y > 0. */
|
905 |
|
|
TEST_ff_f (atan2, 1, 0, M_PI_2l);
|
906 |
|
|
|
907 |
|
|
/* atan2 (y,-0) == pi/2 for y > 0. */
|
908 |
|
|
TEST_ff_f (atan2, 1, minus_zero, M_PI_2l);
|
909 |
|
|
|
910 |
|
|
/* atan2 (y,+0) == -pi/2 for y < 0. */
|
911 |
|
|
TEST_ff_f (atan2, -1, 0, -M_PI_2l);
|
912 |
|
|
|
913 |
|
|
/* atan2 (y,-0) == -pi/2 for y < 0. */
|
914 |
|
|
TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l);
|
915 |
|
|
|
916 |
|
|
/* atan2 (y,inf) == +0 for finite y > 0. */
|
917 |
|
|
TEST_ff_f (atan2, 1, plus_infty, 0);
|
918 |
|
|
|
919 |
|
|
/* atan2 (y,inf) == -0 for finite y < 0. */
|
920 |
|
|
TEST_ff_f (atan2, -1, plus_infty, minus_zero);
|
921 |
|
|
|
922 |
|
|
/* atan2(+inf, x) == pi/2 for finite x. */
|
923 |
|
|
TEST_ff_f (atan2, plus_infty, -1, M_PI_2l);
|
924 |
|
|
|
925 |
|
|
/* atan2(-inf, x) == -pi/2 for finite x. */
|
926 |
|
|
TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l);
|
927 |
|
|
|
928 |
|
|
/* atan2 (y,-inf) == +pi for finite y > 0. */
|
929 |
|
|
TEST_ff_f (atan2, 1, minus_infty, M_PIl);
|
930 |
|
|
|
931 |
|
|
/* atan2 (y,-inf) == -pi for finite y < 0. */
|
932 |
|
|
TEST_ff_f (atan2, -1, minus_infty, -M_PIl);
|
933 |
|
|
|
934 |
|
|
TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l);
|
935 |
|
|
TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l);
|
936 |
|
|
TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l);
|
937 |
|
|
TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l);
|
938 |
|
|
TEST_ff_f (atan2, nan_value, nan_value, nan_value);
|
939 |
|
|
|
940 |
|
|
TEST_ff_f (atan2, 0.7L, 1, 0.61072596438920861654375887649023613L);
|
941 |
|
|
TEST_ff_f (atan2, -0.7L, 1.0L, -0.61072596438920861654375887649023613L);
|
942 |
|
|
TEST_ff_f (atan2, 0.7L, -1.0L, 2.530866689200584621918884506789267L);
|
943 |
|
|
TEST_ff_f (atan2, -0.7L, -1.0L, -2.530866689200584621918884506789267L);
|
944 |
|
|
TEST_ff_f (atan2, 0.4L, 0.0003L, 1.5700463269355215717704032607580829L);
|
945 |
|
|
TEST_ff_f (atan2, 1.4L, -0.93L, 2.1571487668237843754887415992772736L);
|
946 |
|
|
|
947 |
|
|
END (atan2);
|
948 |
|
|
}
|
949 |
|
|
|
950 |
|
|
|
951 |
|
|
static void
|
952 |
|
|
cabs_test (void)
|
953 |
|
|
{
|
954 |
|
|
errno = 0;
|
955 |
|
|
FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L));
|
956 |
|
|
if (errno == ENOSYS)
|
957 |
|
|
/* Function not implemented. */
|
958 |
|
|
return;
|
959 |
|
|
|
960 |
|
|
START (cabs);
|
961 |
|
|
|
962 |
|
|
/* cabs (x + iy) is specified as hypot (x,y) */
|
963 |
|
|
|
964 |
|
|
/* cabs (+inf + i x) == +inf. */
|
965 |
|
|
TEST_c_f (cabs, plus_infty, 1.0, plus_infty);
|
966 |
|
|
/* cabs (-inf + i x) == +inf. */
|
967 |
|
|
TEST_c_f (cabs, minus_infty, 1.0, plus_infty);
|
968 |
|
|
|
969 |
|
|
TEST_c_f (cabs, minus_infty, nan_value, plus_infty);
|
970 |
|
|
TEST_c_f (cabs, minus_infty, nan_value, plus_infty);
|
971 |
|
|
|
972 |
|
|
TEST_c_f (cabs, nan_value, nan_value, nan_value);
|
973 |
|
|
|
974 |
|
|
/* cabs (x,y) == cabs (y,x). */
|
975 |
|
|
TEST_c_f (cabs, 0.7L, 12.4L, 12.419742348374220601176836866763271L);
|
976 |
|
|
/* cabs (x,y) == cabs (-x,y). */
|
977 |
|
|
TEST_c_f (cabs, -12.4L, 0.7L, 12.419742348374220601176836866763271L);
|
978 |
|
|
/* cabs (x,y) == cabs (-y,x). */
|
979 |
|
|
TEST_c_f (cabs, -0.7L, 12.4L, 12.419742348374220601176836866763271L);
|
980 |
|
|
/* cabs (x,y) == cabs (-x,-y). */
|
981 |
|
|
TEST_c_f (cabs, -12.4L, -0.7L, 12.419742348374220601176836866763271L);
|
982 |
|
|
/* cabs (x,y) == cabs (-y,-x). */
|
983 |
|
|
TEST_c_f (cabs, -0.7L, -12.4L, 12.419742348374220601176836866763271L);
|
984 |
|
|
/* cabs (x,0) == fabs (x). */
|
985 |
|
|
TEST_c_f (cabs, -0.7L, 0, 0.7L);
|
986 |
|
|
TEST_c_f (cabs, 0.7L, 0, 0.7L);
|
987 |
|
|
TEST_c_f (cabs, -1.0L, 0, 1.0L);
|
988 |
|
|
TEST_c_f (cabs, 1.0L, 0, 1.0L);
|
989 |
|
|
TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L);
|
990 |
|
|
TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L);
|
991 |
|
|
|
992 |
|
|
TEST_c_f (cabs, 0.7L, 1.2L, 1.3892443989449804508432547041028554L);
|
993 |
|
|
|
994 |
|
|
END (cabs);
|
995 |
|
|
}
|
996 |
|
|
|
997 |
|
|
#if 0
|
998 |
|
|
static void
|
999 |
|
|
cacos_test (void)
|
1000 |
|
|
{
|
1001 |
|
|
errno = 0;
|
1002 |
|
|
FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L));
|
1003 |
|
|
if (errno == ENOSYS)
|
1004 |
|
|
/* Function not implemented. */
|
1005 |
|
|
return;
|
1006 |
|
|
|
1007 |
|
|
START (cacos);
|
1008 |
|
|
|
1009 |
|
|
|
1010 |
|
|
TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero);
|
1011 |
|
|
TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero);
|
1012 |
|
|
TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0);
|
1013 |
|
|
TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0);
|
1014 |
|
|
|
1015 |
|
|
TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty);
|
1016 |
|
|
TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty);
|
1017 |
|
|
|
1018 |
|
|
TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty);
|
1019 |
|
|
TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty);
|
1020 |
|
|
|
1021 |
|
|
TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty);
|
1022 |
|
|
TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty);
|
1023 |
|
|
TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty);
|
1024 |
|
|
TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty);
|
1025 |
|
|
TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty);
|
1026 |
|
|
TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty);
|
1027 |
|
|
|
1028 |
|
|
TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty);
|
1029 |
|
|
TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty);
|
1030 |
|
|
TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty);
|
1031 |
|
|
TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty);
|
1032 |
|
|
|
1033 |
|
|
TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty);
|
1034 |
|
|
TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty);
|
1035 |
|
|
TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty);
|
1036 |
|
|
TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty);
|
1037 |
|
|
|
1038 |
|
|
TEST_c_c (cacos, plus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
|
1039 |
|
|
TEST_c_c (cacos, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
|
1040 |
|
|
|
1041 |
|
|
TEST_c_c (cacos, 0, nan_value, M_PI_2l, nan_value);
|
1042 |
|
|
TEST_c_c (cacos, minus_zero, nan_value, M_PI_2l, nan_value);
|
1043 |
|
|
|
1044 |
|
|
TEST_c_c (cacos, nan_value, plus_infty, nan_value, minus_infty);
|
1045 |
|
|
TEST_c_c (cacos, nan_value, minus_infty, nan_value, plus_infty);
|
1046 |
|
|
|
1047 |
|
|
TEST_c_c (cacos, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1048 |
|
|
TEST_c_c (cacos, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1049 |
|
|
|
1050 |
|
|
TEST_c_c (cacos, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1051 |
|
|
TEST_c_c (cacos, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1052 |
|
|
|
1053 |
|
|
TEST_c_c (cacos, nan_value, nan_value, nan_value, nan_value);
|
1054 |
|
|
|
1055 |
|
|
TEST_c_c (cacos, 0.7L, 1.2L, 1.1351827477151551088992008271819053L, -1.0927647857577371459105272080819308L);
|
1056 |
|
|
TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L);
|
1057 |
|
|
|
1058 |
|
|
END (cacos, complex);
|
1059 |
|
|
}
|
1060 |
|
|
|
1061 |
|
|
|
1062 |
|
|
static void
|
1063 |
|
|
cacosh_test (void)
|
1064 |
|
|
{
|
1065 |
|
|
errno = 0;
|
1066 |
|
|
FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L));
|
1067 |
|
|
if (errno == ENOSYS)
|
1068 |
|
|
/* Function not implemented. */
|
1069 |
|
|
return;
|
1070 |
|
|
|
1071 |
|
|
START (cacosh);
|
1072 |
|
|
|
1073 |
|
|
|
1074 |
|
|
TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l);
|
1075 |
|
|
TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l);
|
1076 |
|
|
TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l);
|
1077 |
|
|
TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l);
|
1078 |
|
|
TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l);
|
1079 |
|
|
TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l);
|
1080 |
|
|
|
1081 |
|
|
TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l);
|
1082 |
|
|
TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l);
|
1083 |
|
|
|
1084 |
|
|
TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l);
|
1085 |
|
|
TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l);
|
1086 |
|
|
TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l);
|
1087 |
|
|
TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l);
|
1088 |
|
|
TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l);
|
1089 |
|
|
TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l);
|
1090 |
|
|
|
1091 |
|
|
TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl);
|
1092 |
|
|
TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl);
|
1093 |
|
|
TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl);
|
1094 |
|
|
TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl);
|
1095 |
|
|
|
1096 |
|
|
TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0);
|
1097 |
|
|
TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero);
|
1098 |
|
|
TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0);
|
1099 |
|
|
TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero);
|
1100 |
|
|
|
1101 |
|
|
TEST_c_c (cacosh, plus_infty, nan_value, plus_infty, nan_value);
|
1102 |
|
|
TEST_c_c (cacosh, minus_infty, nan_value, plus_infty, nan_value);
|
1103 |
|
|
|
1104 |
|
|
TEST_c_c (cacosh, 0, nan_value, nan_value, nan_value);
|
1105 |
|
|
TEST_c_c (cacosh, minus_zero, nan_value, nan_value, nan_value);
|
1106 |
|
|
|
1107 |
|
|
TEST_c_c (cacosh, nan_value, plus_infty, plus_infty, nan_value);
|
1108 |
|
|
TEST_c_c (cacosh, nan_value, minus_infty, plus_infty, nan_value);
|
1109 |
|
|
|
1110 |
|
|
TEST_c_c (cacosh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1111 |
|
|
TEST_c_c (cacosh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1112 |
|
|
|
1113 |
|
|
TEST_c_c (cacosh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1114 |
|
|
TEST_c_c (cacosh, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1115 |
|
|
|
1116 |
|
|
TEST_c_c (cacosh, nan_value, nan_value, nan_value, nan_value);
|
1117 |
|
|
|
1118 |
|
|
TEST_c_c (cacosh, 0.7L, 1.2L, 1.0927647857577371459105272080819308L, 1.1351827477151551088992008271819053L);
|
1119 |
|
|
TEST_c_c (cacosh, -2, -3, -1.9833870299165354323470769028940395L, 2.1414491111159960199416055713254211L);
|
1120 |
|
|
|
1121 |
|
|
END (cacosh, complex);
|
1122 |
|
|
}
|
1123 |
|
|
|
1124 |
|
|
static void
|
1125 |
|
|
carg_test (void)
|
1126 |
|
|
{
|
1127 |
|
|
START (carg);
|
1128 |
|
|
|
1129 |
|
|
/* carg (x + iy) is specified as atan2 (y, x) */
|
1130 |
|
|
|
1131 |
|
|
/* carg (x + i 0) == 0 for x > 0. */
|
1132 |
|
|
TEST_c_f (carg, 2.0, 0, 0);
|
1133 |
|
|
/* carg (x - i 0) == -0 for x > 0. */
|
1134 |
|
|
TEST_c_f (carg, 2.0, minus_zero, minus_zero);
|
1135 |
|
|
|
1136 |
|
|
TEST_c_f (carg, 0, 0, 0);
|
1137 |
|
|
TEST_c_f (carg, 0, minus_zero, minus_zero);
|
1138 |
|
|
|
1139 |
|
|
/* carg (x + i 0) == +pi for x < 0. */
|
1140 |
|
|
TEST_c_f (carg, -2.0, 0, M_PIl);
|
1141 |
|
|
|
1142 |
|
|
/* carg (x - i 0) == -pi for x < 0. */
|
1143 |
|
|
TEST_c_f (carg, -2.0, minus_zero, -M_PIl);
|
1144 |
|
|
|
1145 |
|
|
TEST_c_f (carg, minus_zero, 0, M_PIl);
|
1146 |
|
|
TEST_c_f (carg, minus_zero, minus_zero, -M_PIl);
|
1147 |
|
|
|
1148 |
|
|
/* carg (+0 + i y) == pi/2 for y > 0. */
|
1149 |
|
|
TEST_c_f (carg, 0, 2.0, M_PI_2l);
|
1150 |
|
|
|
1151 |
|
|
/* carg (-0 + i y) == pi/2 for y > 0. */
|
1152 |
|
|
TEST_c_f (carg, minus_zero, 2.0, M_PI_2l);
|
1153 |
|
|
|
1154 |
|
|
/* carg (+0 + i y) == -pi/2 for y < 0. */
|
1155 |
|
|
TEST_c_f (carg, 0, -2.0, -M_PI_2l);
|
1156 |
|
|
|
1157 |
|
|
/* carg (-0 + i y) == -pi/2 for y < 0. */
|
1158 |
|
|
TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l);
|
1159 |
|
|
|
1160 |
|
|
/* carg (inf + i y) == +0 for finite y > 0. */
|
1161 |
|
|
TEST_c_f (carg, plus_infty, 2.0, 0);
|
1162 |
|
|
|
1163 |
|
|
/* carg (inf + i y) == -0 for finite y < 0. */
|
1164 |
|
|
TEST_c_f (carg, plus_infty, -2.0, minus_zero);
|
1165 |
|
|
|
1166 |
|
|
/* carg(x + i inf) == pi/2 for finite x. */
|
1167 |
|
|
TEST_c_f (carg, 10.0, plus_infty, M_PI_2l);
|
1168 |
|
|
|
1169 |
|
|
/* carg(x - i inf) == -pi/2 for finite x. */
|
1170 |
|
|
TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l);
|
1171 |
|
|
|
1172 |
|
|
/* carg (-inf + i y) == +pi for finite y > 0. */
|
1173 |
|
|
TEST_c_f (carg, minus_infty, 10.0, M_PIl);
|
1174 |
|
|
|
1175 |
|
|
/* carg (-inf + i y) == -pi for finite y < 0. */
|
1176 |
|
|
TEST_c_f (carg, minus_infty, -10.0, -M_PIl);
|
1177 |
|
|
|
1178 |
|
|
TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l);
|
1179 |
|
|
|
1180 |
|
|
TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l);
|
1181 |
|
|
|
1182 |
|
|
TEST_c_f (carg, minus_infty, plus_infty, 3 * M_PI_4l);
|
1183 |
|
|
|
1184 |
|
|
TEST_c_f (carg, minus_infty, minus_infty, -3 * M_PI_4l);
|
1185 |
|
|
|
1186 |
|
|
TEST_c_f (carg, nan_value, nan_value, nan_value);
|
1187 |
|
|
|
1188 |
|
|
END (carg);
|
1189 |
|
|
}
|
1190 |
|
|
|
1191 |
|
|
static void
|
1192 |
|
|
casin_test (void)
|
1193 |
|
|
{
|
1194 |
|
|
errno = 0;
|
1195 |
|
|
FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L));
|
1196 |
|
|
if (errno == ENOSYS)
|
1197 |
|
|
/* Function not implemented. */
|
1198 |
|
|
return;
|
1199 |
|
|
|
1200 |
|
|
START (casin);
|
1201 |
|
|
|
1202 |
|
|
TEST_c_c (casin, 0, 0, 0.0, 0.0);
|
1203 |
|
|
TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0);
|
1204 |
|
|
TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero);
|
1205 |
|
|
TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero);
|
1206 |
|
|
|
1207 |
|
|
TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty);
|
1208 |
|
|
TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty);
|
1209 |
|
|
TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty);
|
1210 |
|
|
TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty);
|
1211 |
|
|
|
1212 |
|
|
TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty);
|
1213 |
|
|
TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty);
|
1214 |
|
|
TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty);
|
1215 |
|
|
TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty);
|
1216 |
|
|
TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty);
|
1217 |
|
|
TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty);
|
1218 |
|
|
TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty);
|
1219 |
|
|
TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty);
|
1220 |
|
|
|
1221 |
|
|
TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty);
|
1222 |
|
|
TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty);
|
1223 |
|
|
TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty);
|
1224 |
|
|
TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty);
|
1225 |
|
|
|
1226 |
|
|
TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty);
|
1227 |
|
|
TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty);
|
1228 |
|
|
TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty);
|
1229 |
|
|
TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty);
|
1230 |
|
|
|
1231 |
|
|
TEST_c_c (casin, nan_value, plus_infty, nan_value, plus_infty);
|
1232 |
|
|
TEST_c_c (casin, nan_value, minus_infty, nan_value, minus_infty);
|
1233 |
|
|
|
1234 |
|
|
TEST_c_c (casin, 0.0, nan_value, 0.0, nan_value);
|
1235 |
|
|
TEST_c_c (casin, minus_zero, nan_value, minus_zero, nan_value);
|
1236 |
|
|
|
1237 |
|
|
TEST_c_c (casin, plus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
|
1238 |
|
|
TEST_c_c (casin, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
|
1239 |
|
|
|
1240 |
|
|
TEST_c_c (casin, nan_value, 10.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1241 |
|
|
TEST_c_c (casin, nan_value, -10.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1242 |
|
|
|
1243 |
|
|
TEST_c_c (casin, 0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1244 |
|
|
TEST_c_c (casin, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1245 |
|
|
|
1246 |
|
|
TEST_c_c (casin, nan_value, nan_value, nan_value, nan_value);
|
1247 |
|
|
|
1248 |
|
|
TEST_c_c (casin, 0.7L, 1.2L, 0.4356135790797415103321208644578462L, 1.0927647857577371459105272080819308L);
|
1249 |
|
|
TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L);
|
1250 |
|
|
|
1251 |
|
|
END (casin, complex);
|
1252 |
|
|
}
|
1253 |
|
|
|
1254 |
|
|
|
1255 |
|
|
static void
|
1256 |
|
|
casinh_test (void)
|
1257 |
|
|
{
|
1258 |
|
|
errno = 0;
|
1259 |
|
|
FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L));
|
1260 |
|
|
if (errno == ENOSYS)
|
1261 |
|
|
/* Function not implemented. */
|
1262 |
|
|
return;
|
1263 |
|
|
|
1264 |
|
|
START (casinh);
|
1265 |
|
|
|
1266 |
|
|
TEST_c_c (casinh, 0, 0, 0.0, 0.0);
|
1267 |
|
|
TEST_c_c (casinh, minus_zero, 0, minus_zero, 0);
|
1268 |
|
|
TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero);
|
1269 |
|
|
TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero);
|
1270 |
|
|
|
1271 |
|
|
TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l);
|
1272 |
|
|
TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l);
|
1273 |
|
|
TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l);
|
1274 |
|
|
TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l);
|
1275 |
|
|
|
1276 |
|
|
TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l);
|
1277 |
|
|
TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l);
|
1278 |
|
|
TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l);
|
1279 |
|
|
TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l);
|
1280 |
|
|
TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l);
|
1281 |
|
|
TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l);
|
1282 |
|
|
TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l);
|
1283 |
|
|
TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l);
|
1284 |
|
|
|
1285 |
|
|
TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0);
|
1286 |
|
|
TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero);
|
1287 |
|
|
TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0);
|
1288 |
|
|
TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero);
|
1289 |
|
|
|
1290 |
|
|
TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0);
|
1291 |
|
|
TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero);
|
1292 |
|
|
TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0);
|
1293 |
|
|
TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero);
|
1294 |
|
|
|
1295 |
|
|
TEST_c_c (casinh, plus_infty, nan_value, plus_infty, nan_value);
|
1296 |
|
|
TEST_c_c (casinh, minus_infty, nan_value, minus_infty, nan_value);
|
1297 |
|
|
|
1298 |
|
|
TEST_c_c (casinh, nan_value, 0, nan_value, 0.0);
|
1299 |
|
|
TEST_c_c (casinh, nan_value, minus_zero, nan_value, minus_zero);
|
1300 |
|
|
|
1301 |
|
|
TEST_c_c (casinh, nan_value, plus_infty, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN);
|
1302 |
|
|
TEST_c_c (casinh, nan_value, minus_infty, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN);
|
1303 |
|
|
|
1304 |
|
|
TEST_c_c (casinh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1305 |
|
|
TEST_c_c (casinh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1306 |
|
|
|
1307 |
|
|
TEST_c_c (casinh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1308 |
|
|
TEST_c_c (casinh, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1309 |
|
|
|
1310 |
|
|
TEST_c_c (casinh, nan_value, nan_value, nan_value, nan_value);
|
1311 |
|
|
|
1312 |
|
|
TEST_c_c (casinh, 0.7L, 1.2L, 0.97865459559367387689317593222160964L, 0.91135418953156011567903546856170941L);
|
1313 |
|
|
TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L);
|
1314 |
|
|
|
1315 |
|
|
END (casinh, complex);
|
1316 |
|
|
}
|
1317 |
|
|
|
1318 |
|
|
|
1319 |
|
|
static void
|
1320 |
|
|
catan_test (void)
|
1321 |
|
|
{
|
1322 |
|
|
errno = 0;
|
1323 |
|
|
FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L));
|
1324 |
|
|
if (errno == ENOSYS)
|
1325 |
|
|
/* Function not implemented. */
|
1326 |
|
|
return;
|
1327 |
|
|
|
1328 |
|
|
START (catan);
|
1329 |
|
|
|
1330 |
|
|
TEST_c_c (catan, 0, 0, 0, 0);
|
1331 |
|
|
TEST_c_c (catan, minus_zero, 0, minus_zero, 0);
|
1332 |
|
|
TEST_c_c (catan, 0, minus_zero, 0, minus_zero);
|
1333 |
|
|
TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero);
|
1334 |
|
|
|
1335 |
|
|
TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0);
|
1336 |
|
|
TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero);
|
1337 |
|
|
TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0);
|
1338 |
|
|
TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero);
|
1339 |
|
|
|
1340 |
|
|
|
1341 |
|
|
TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero);
|
1342 |
|
|
TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero);
|
1343 |
|
|
TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero);
|
1344 |
|
|
TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero);
|
1345 |
|
|
TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0);
|
1346 |
|
|
TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0);
|
1347 |
|
|
TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0);
|
1348 |
|
|
TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0);
|
1349 |
|
|
|
1350 |
|
|
TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero);
|
1351 |
|
|
TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero);
|
1352 |
|
|
TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero);
|
1353 |
|
|
TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero);
|
1354 |
|
|
|
1355 |
|
|
TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0);
|
1356 |
|
|
TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0);
|
1357 |
|
|
TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0);
|
1358 |
|
|
TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0);
|
1359 |
|
|
|
1360 |
|
|
TEST_c_c (catan, nan_value, 0.0, nan_value, 0);
|
1361 |
|
|
TEST_c_c (catan, nan_value, minus_zero, nan_value, minus_zero);
|
1362 |
|
|
|
1363 |
|
|
TEST_c_c (catan, nan_value, plus_infty, nan_value, 0);
|
1364 |
|
|
TEST_c_c (catan, nan_value, minus_infty, nan_value, minus_zero);
|
1365 |
|
|
|
1366 |
|
|
TEST_c_c (catan, 0.0, nan_value, nan_value, nan_value);
|
1367 |
|
|
TEST_c_c (catan, minus_zero, nan_value, nan_value, nan_value);
|
1368 |
|
|
|
1369 |
|
|
TEST_c_c (catan, plus_infty, nan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN);
|
1370 |
|
|
TEST_c_c (catan, minus_infty, nan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN);
|
1371 |
|
|
|
1372 |
|
|
TEST_c_c (catan, nan_value, 10.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1373 |
|
|
TEST_c_c (catan, nan_value, -10.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1374 |
|
|
|
1375 |
|
|
TEST_c_c (catan, 0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1376 |
|
|
TEST_c_c (catan, -0.75, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1377 |
|
|
|
1378 |
|
|
TEST_c_c (catan, nan_value, nan_value, nan_value, nan_value);
|
1379 |
|
|
|
1380 |
|
|
TEST_c_c (catan, 0.7L, 1.2L, 1.0785743834118921877443707996386368L, 0.57705737765343067644394541889341712L);
|
1381 |
|
|
|
1382 |
|
|
TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L);
|
1383 |
|
|
|
1384 |
|
|
END (catan, complex);
|
1385 |
|
|
}
|
1386 |
|
|
|
1387 |
|
|
static void
|
1388 |
|
|
catanh_test (void)
|
1389 |
|
|
{
|
1390 |
|
|
errno = 0;
|
1391 |
|
|
FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L));
|
1392 |
|
|
if (errno == ENOSYS)
|
1393 |
|
|
/* Function not implemented. */
|
1394 |
|
|
return;
|
1395 |
|
|
|
1396 |
|
|
START (catanh);
|
1397 |
|
|
|
1398 |
|
|
TEST_c_c (catanh, 0, 0, 0.0, 0.0);
|
1399 |
|
|
TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0);
|
1400 |
|
|
TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero);
|
1401 |
|
|
TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero);
|
1402 |
|
|
|
1403 |
|
|
TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l);
|
1404 |
|
|
TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l);
|
1405 |
|
|
TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l);
|
1406 |
|
|
TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l);
|
1407 |
|
|
|
1408 |
|
|
TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l);
|
1409 |
|
|
TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l);
|
1410 |
|
|
TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l);
|
1411 |
|
|
TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l);
|
1412 |
|
|
TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l);
|
1413 |
|
|
TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l);
|
1414 |
|
|
TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l);
|
1415 |
|
|
TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l);
|
1416 |
|
|
|
1417 |
|
|
TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l);
|
1418 |
|
|
TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l);
|
1419 |
|
|
TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l);
|
1420 |
|
|
TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l);
|
1421 |
|
|
|
1422 |
|
|
TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l);
|
1423 |
|
|
TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l);
|
1424 |
|
|
TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l);
|
1425 |
|
|
TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l);
|
1426 |
|
|
|
1427 |
|
|
TEST_c_c (catanh, 0, nan_value, 0.0, nan_value);
|
1428 |
|
|
TEST_c_c (catanh, minus_zero, nan_value, minus_zero, nan_value);
|
1429 |
|
|
|
1430 |
|
|
TEST_c_c (catanh, plus_infty, nan_value, 0.0, nan_value);
|
1431 |
|
|
TEST_c_c (catanh, minus_infty, nan_value, minus_zero, nan_value);
|
1432 |
|
|
|
1433 |
|
|
TEST_c_c (catanh, nan_value, 0, nan_value, nan_value);
|
1434 |
|
|
TEST_c_c (catanh, nan_value, minus_zero, nan_value, nan_value);
|
1435 |
|
|
|
1436 |
|
|
TEST_c_c (catanh, nan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN);
|
1437 |
|
|
TEST_c_c (catanh, nan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN);
|
1438 |
|
|
|
1439 |
|
|
TEST_c_c (catanh, 10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1440 |
|
|
TEST_c_c (catanh, -10.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1441 |
|
|
|
1442 |
|
|
TEST_c_c (catanh, nan_value, 0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1443 |
|
|
TEST_c_c (catanh, nan_value, -0.75, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1444 |
|
|
|
1445 |
|
|
TEST_c_c (catanh, nan_value, nan_value, nan_value, nan_value);
|
1446 |
|
|
|
1447 |
|
|
TEST_c_c (catanh, 0.7L, 1.2L, 0.2600749516525135959200648705635915L, 0.97024030779509898497385130162655963L);
|
1448 |
|
|
TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L);
|
1449 |
|
|
|
1450 |
|
|
END (catanh, complex);
|
1451 |
|
|
}
|
1452 |
|
|
#endif
|
1453 |
|
|
|
1454 |
|
|
static void
|
1455 |
|
|
cbrt_test (void)
|
1456 |
|
|
{
|
1457 |
|
|
errno = 0;
|
1458 |
|
|
FUNC(cbrt) (8);
|
1459 |
|
|
if (errno == ENOSYS)
|
1460 |
|
|
/* Function not implemented. */
|
1461 |
|
|
return;
|
1462 |
|
|
|
1463 |
|
|
START (cbrt);
|
1464 |
|
|
|
1465 |
|
|
TEST_f_f (cbrt, 0.0, 0.0);
|
1466 |
|
|
TEST_f_f (cbrt, minus_zero, minus_zero);
|
1467 |
|
|
|
1468 |
|
|
TEST_f_f (cbrt, plus_infty, plus_infty);
|
1469 |
|
|
TEST_f_f (cbrt, minus_infty, minus_infty);
|
1470 |
|
|
TEST_f_f (cbrt, nan_value, nan_value);
|
1471 |
|
|
|
1472 |
|
|
TEST_f_f (cbrt, -0.001L, -0.1L);
|
1473 |
|
|
TEST_f_f (cbrt, 8, 2);
|
1474 |
|
|
TEST_f_f (cbrt, -27.0, -3.0);
|
1475 |
|
|
TEST_f_f (cbrt, 0.970299L, 0.99L);
|
1476 |
|
|
TEST_f_f (cbrt, 0.7L, 0.8879040017426007084L);
|
1477 |
|
|
|
1478 |
|
|
END (cbrt);
|
1479 |
|
|
}
|
1480 |
|
|
|
1481 |
|
|
#if 0
|
1482 |
|
|
static void
|
1483 |
|
|
ccos_test (void)
|
1484 |
|
|
{
|
1485 |
|
|
errno = 0;
|
1486 |
|
|
FUNC(ccos) (BUILD_COMPLEX (0, 0));
|
1487 |
|
|
if (errno == ENOSYS)
|
1488 |
|
|
/* Function not implemented. */
|
1489 |
|
|
return;
|
1490 |
|
|
|
1491 |
|
|
START (ccos);
|
1492 |
|
|
|
1493 |
|
|
TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero);
|
1494 |
|
|
TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0);
|
1495 |
|
|
TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0);
|
1496 |
|
|
TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero);
|
1497 |
|
|
|
1498 |
|
|
TEST_c_c (ccos, plus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1499 |
|
|
TEST_c_c (ccos, plus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1500 |
|
|
TEST_c_c (ccos, minus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1501 |
|
|
TEST_c_c (ccos, minus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1502 |
|
|
|
1503 |
|
|
TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero);
|
1504 |
|
|
TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0);
|
1505 |
|
|
TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0);
|
1506 |
|
|
TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero);
|
1507 |
|
|
|
1508 |
|
|
TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
1509 |
|
|
TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
1510 |
|
|
TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
1511 |
|
|
TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
1512 |
|
|
|
1513 |
|
|
TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty);
|
1514 |
|
|
TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty);
|
1515 |
|
|
TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty);
|
1516 |
|
|
TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty);
|
1517 |
|
|
|
1518 |
|
|
TEST_c_c (ccos, plus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION);
|
1519 |
|
|
TEST_c_c (ccos, plus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION);
|
1520 |
|
|
TEST_c_c (ccos, minus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION);
|
1521 |
|
|
TEST_c_c (ccos, minus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION);
|
1522 |
|
|
|
1523 |
|
|
TEST_c_c (ccos, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
1524 |
|
|
TEST_c_c (ccos, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
1525 |
|
|
|
1526 |
|
|
TEST_c_c (ccos, nan_value, plus_infty, plus_infty, nan_value);
|
1527 |
|
|
TEST_c_c (ccos, nan_value, minus_infty, plus_infty, nan_value);
|
1528 |
|
|
|
1529 |
|
|
TEST_c_c (ccos, nan_value, 9.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1530 |
|
|
TEST_c_c (ccos, nan_value, -9.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1531 |
|
|
|
1532 |
|
|
TEST_c_c (ccos, 0.0, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
1533 |
|
|
TEST_c_c (ccos, minus_zero, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
1534 |
|
|
|
1535 |
|
|
TEST_c_c (ccos, 10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1536 |
|
|
TEST_c_c (ccos, -10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1537 |
|
|
|
1538 |
|
|
TEST_c_c (ccos, plus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1539 |
|
|
TEST_c_c (ccos, minus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1540 |
|
|
|
1541 |
|
|
TEST_c_c (ccos, nan_value, nan_value, nan_value, nan_value);
|
1542 |
|
|
|
1543 |
|
|
TEST_c_c (ccos, 0.7L, 1.2L, 1.3848657645312111080L, -0.97242170335830028619L);
|
1544 |
|
|
|
1545 |
|
|
TEST_c_c (ccos, -2, -3, -4.1896256909688072301L, -9.1092278937553365979L);
|
1546 |
|
|
|
1547 |
|
|
END (ccos, complex);
|
1548 |
|
|
}
|
1549 |
|
|
|
1550 |
|
|
|
1551 |
|
|
static void
|
1552 |
|
|
ccosh_test (void)
|
1553 |
|
|
{
|
1554 |
|
|
errno = 0;
|
1555 |
|
|
FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L));
|
1556 |
|
|
if (errno == ENOSYS)
|
1557 |
|
|
/* Function not implemented. */
|
1558 |
|
|
return;
|
1559 |
|
|
|
1560 |
|
|
START (ccosh);
|
1561 |
|
|
|
1562 |
|
|
TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0);
|
1563 |
|
|
TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero);
|
1564 |
|
|
TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero);
|
1565 |
|
|
TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0);
|
1566 |
|
|
|
1567 |
|
|
TEST_c_c (ccosh, 0.0, plus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1568 |
|
|
TEST_c_c (ccosh, minus_zero, plus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1569 |
|
|
TEST_c_c (ccosh, 0.0, minus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1570 |
|
|
TEST_c_c (ccosh, minus_zero, minus_infty, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1571 |
|
|
|
1572 |
|
|
TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0);
|
1573 |
|
|
TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero);
|
1574 |
|
|
TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero);
|
1575 |
|
|
TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0);
|
1576 |
|
|
|
1577 |
|
|
TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
1578 |
|
|
TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
1579 |
|
|
TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
1580 |
|
|
TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
1581 |
|
|
|
1582 |
|
|
TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty);
|
1583 |
|
|
TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty);
|
1584 |
|
|
TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty);
|
1585 |
|
|
TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty);
|
1586 |
|
|
|
1587 |
|
|
TEST_c_c (ccosh, 6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1588 |
|
|
TEST_c_c (ccosh, -6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1589 |
|
|
TEST_c_c (ccosh, 6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1590 |
|
|
TEST_c_c (ccosh, -6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1591 |
|
|
|
1592 |
|
|
TEST_c_c (ccosh, 0.0, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
1593 |
|
|
TEST_c_c (ccosh, minus_zero, nan_value, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
1594 |
|
|
|
1595 |
|
|
TEST_c_c (ccosh, plus_infty, nan_value, plus_infty, nan_value);
|
1596 |
|
|
TEST_c_c (ccosh, minus_infty, nan_value, plus_infty, nan_value);
|
1597 |
|
|
|
1598 |
|
|
TEST_c_c (ccosh, 9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1599 |
|
|
TEST_c_c (ccosh, -9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1600 |
|
|
|
1601 |
|
|
TEST_c_c (ccosh, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
1602 |
|
|
TEST_c_c (ccosh, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
1603 |
|
|
|
1604 |
|
|
TEST_c_c (ccosh, nan_value, 10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1605 |
|
|
TEST_c_c (ccosh, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1606 |
|
|
|
1607 |
|
|
TEST_c_c (ccosh, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1608 |
|
|
TEST_c_c (ccosh, nan_value, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1609 |
|
|
|
1610 |
|
|
TEST_c_c (ccosh, nan_value, nan_value, nan_value, nan_value);
|
1611 |
|
|
|
1612 |
|
|
TEST_c_c (ccosh, 0.7L, 1.2L, 0.4548202223691477654L, 0.7070296600921537682L);
|
1613 |
|
|
|
1614 |
|
|
TEST_c_c (ccosh, -2, -3, -3.7245455049153225654L, 0.5118225699873846088L);
|
1615 |
|
|
|
1616 |
|
|
END (ccosh, complex);
|
1617 |
|
|
}
|
1618 |
|
|
#endif
|
1619 |
|
|
|
1620 |
|
|
static void
|
1621 |
|
|
ceil_test (void)
|
1622 |
|
|
{
|
1623 |
|
|
START (ceil);
|
1624 |
|
|
|
1625 |
|
|
TEST_f_f (ceil, 0.0, 0.0);
|
1626 |
|
|
TEST_f_f (ceil, minus_zero, minus_zero);
|
1627 |
|
|
TEST_f_f (ceil, plus_infty, plus_infty);
|
1628 |
|
|
TEST_f_f (ceil, minus_infty, minus_infty);
|
1629 |
|
|
TEST_f_f (ceil, nan_value, nan_value);
|
1630 |
|
|
|
1631 |
|
|
TEST_f_f (ceil, M_PIl, 4.0);
|
1632 |
|
|
TEST_f_f (ceil, -M_PIl, -3.0);
|
1633 |
|
|
|
1634 |
|
|
END (ceil);
|
1635 |
|
|
}
|
1636 |
|
|
|
1637 |
|
|
#if 0
|
1638 |
|
|
static void
|
1639 |
|
|
cexp_test (void)
|
1640 |
|
|
{
|
1641 |
|
|
errno = 0;
|
1642 |
|
|
FUNC(cexp) (BUILD_COMPLEX (0, 0));
|
1643 |
|
|
if (errno == ENOSYS)
|
1644 |
|
|
/* Function not implemented. */
|
1645 |
|
|
return;
|
1646 |
|
|
|
1647 |
|
|
START (cexp);
|
1648 |
|
|
|
1649 |
|
|
TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0);
|
1650 |
|
|
TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0);
|
1651 |
|
|
TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero);
|
1652 |
|
|
TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero);
|
1653 |
|
|
|
1654 |
|
|
TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0);
|
1655 |
|
|
TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero);
|
1656 |
|
|
|
1657 |
|
|
TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0);
|
1658 |
|
|
TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero);
|
1659 |
|
|
|
1660 |
|
|
TEST_c_c (cexp, 0.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1661 |
|
|
TEST_c_c (cexp, minus_zero, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1662 |
|
|
|
1663 |
|
|
TEST_c_c (cexp, 0.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1664 |
|
|
TEST_c_c (cexp, minus_zero, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1665 |
|
|
|
1666 |
|
|
TEST_c_c (cexp, 100.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1667 |
|
|
TEST_c_c (cexp, -100.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1668 |
|
|
|
1669 |
|
|
TEST_c_c (cexp, 100.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1670 |
|
|
TEST_c_c (cexp, -100.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
1671 |
|
|
|
1672 |
|
|
TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0);
|
1673 |
|
|
TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero);
|
1674 |
|
|
TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty);
|
1675 |
|
|
TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty);
|
1676 |
|
|
|
1677 |
|
|
TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1678 |
|
|
TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
1679 |
|
|
|
1680 |
|
|
TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN);
|
1681 |
|
|
TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN);
|
1682 |
|
|
|
1683 |
|
|
TEST_c_c (cexp, minus_infty, nan_value, 0, 0, IGNORE_ZERO_INF_SIGN);
|
1684 |
|
|
|
1685 |
|
|
TEST_c_c (cexp, plus_infty, nan_value, plus_infty, nan_value);
|
1686 |
|
|
|
1687 |
|
|
TEST_c_c (cexp, nan_value, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1688 |
|
|
TEST_c_c (cexp, nan_value, 1.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1689 |
|
|
|
1690 |
|
|
TEST_c_c (cexp, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1691 |
|
|
TEST_c_c (cexp, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1692 |
|
|
TEST_c_c (cexp, 1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1693 |
|
|
TEST_c_c (cexp, nan_value, nan_value, nan_value, nan_value);
|
1694 |
|
|
|
1695 |
|
|
TEST_c_c (cexp, 0.7L, 1.2L, 0.72969890915032360123451688642930727L, 1.8768962328348102821139467908203072L);
|
1696 |
|
|
TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L);
|
1697 |
|
|
|
1698 |
|
|
END (cexp, complex);
|
1699 |
|
|
}
|
1700 |
|
|
|
1701 |
|
|
static void
|
1702 |
|
|
cimag_test (void)
|
1703 |
|
|
{
|
1704 |
|
|
START (cimag);
|
1705 |
|
|
TEST_c_f (cimag, 1.0, 0.0, 0.0);
|
1706 |
|
|
TEST_c_f (cimag, 1.0, minus_zero, minus_zero);
|
1707 |
|
|
TEST_c_f (cimag, 1.0, nan_value, nan_value);
|
1708 |
|
|
TEST_c_f (cimag, nan_value, nan_value, nan_value);
|
1709 |
|
|
TEST_c_f (cimag, 1.0, plus_infty, plus_infty);
|
1710 |
|
|
TEST_c_f (cimag, 1.0, minus_infty, minus_infty);
|
1711 |
|
|
TEST_c_f (cimag, 2.0, 3.0, 3.0);
|
1712 |
|
|
|
1713 |
|
|
END (cimag);
|
1714 |
|
|
}
|
1715 |
|
|
|
1716 |
|
|
static void
|
1717 |
|
|
clog_test (void)
|
1718 |
|
|
{
|
1719 |
|
|
errno = 0;
|
1720 |
|
|
FUNC(clog) (BUILD_COMPLEX (-2, -3));
|
1721 |
|
|
if (errno == ENOSYS)
|
1722 |
|
|
/* Function not implemented. */
|
1723 |
|
|
return;
|
1724 |
|
|
|
1725 |
|
|
START (clog);
|
1726 |
|
|
|
1727 |
|
|
TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
|
1728 |
|
|
TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
|
1729 |
|
|
|
1730 |
|
|
TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION);
|
1731 |
|
|
TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION);
|
1732 |
|
|
|
1733 |
|
|
TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l);
|
1734 |
|
|
TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l);
|
1735 |
|
|
|
1736 |
|
|
TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l);
|
1737 |
|
|
TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l);
|
1738 |
|
|
|
1739 |
|
|
TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l);
|
1740 |
|
|
TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l);
|
1741 |
|
|
TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l);
|
1742 |
|
|
TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l);
|
1743 |
|
|
TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l);
|
1744 |
|
|
TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l);
|
1745 |
|
|
TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l);
|
1746 |
|
|
TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l);
|
1747 |
|
|
|
1748 |
|
|
TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl);
|
1749 |
|
|
TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl);
|
1750 |
|
|
TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl);
|
1751 |
|
|
TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl);
|
1752 |
|
|
|
1753 |
|
|
TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0);
|
1754 |
|
|
TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0);
|
1755 |
|
|
TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero);
|
1756 |
|
|
TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero);
|
1757 |
|
|
|
1758 |
|
|
TEST_c_c (clog, plus_infty, nan_value, plus_infty, nan_value);
|
1759 |
|
|
TEST_c_c (clog, minus_infty, nan_value, plus_infty, nan_value);
|
1760 |
|
|
|
1761 |
|
|
TEST_c_c (clog, nan_value, plus_infty, plus_infty, nan_value);
|
1762 |
|
|
TEST_c_c (clog, nan_value, minus_infty, plus_infty, nan_value);
|
1763 |
|
|
|
1764 |
|
|
TEST_c_c (clog, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1765 |
|
|
TEST_c_c (clog, 3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1766 |
|
|
TEST_c_c (clog, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1767 |
|
|
TEST_c_c (clog, -3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1768 |
|
|
|
1769 |
|
|
TEST_c_c (clog, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1770 |
|
|
TEST_c_c (clog, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1771 |
|
|
TEST_c_c (clog, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1772 |
|
|
TEST_c_c (clog, nan_value, -5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1773 |
|
|
|
1774 |
|
|
TEST_c_c (clog, nan_value, nan_value, nan_value, nan_value);
|
1775 |
|
|
TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L);
|
1776 |
|
|
|
1777 |
|
|
END (clog, complex);
|
1778 |
|
|
}
|
1779 |
|
|
|
1780 |
|
|
|
1781 |
|
|
static void
|
1782 |
|
|
clog10_test (void)
|
1783 |
|
|
{
|
1784 |
|
|
errno = 0;
|
1785 |
|
|
FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L));
|
1786 |
|
|
if (errno == ENOSYS)
|
1787 |
|
|
/* Function not implemented. */
|
1788 |
|
|
return;
|
1789 |
|
|
|
1790 |
|
|
START (clog10);
|
1791 |
|
|
|
1792 |
|
|
TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
|
1793 |
|
|
TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION);
|
1794 |
|
|
|
1795 |
|
|
TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION);
|
1796 |
|
|
TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION);
|
1797 |
|
|
|
1798 |
|
|
TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El);
|
1799 |
|
|
|
1800 |
|
|
TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El);
|
1801 |
|
|
TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El);
|
1802 |
|
|
|
1803 |
|
|
TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El);
|
1804 |
|
|
TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El);
|
1805 |
|
|
TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El);
|
1806 |
|
|
TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El);
|
1807 |
|
|
TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El);
|
1808 |
|
|
TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El);
|
1809 |
|
|
TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El);
|
1810 |
|
|
TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El);
|
1811 |
|
|
|
1812 |
|
|
TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El);
|
1813 |
|
|
TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El);
|
1814 |
|
|
TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El);
|
1815 |
|
|
TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El);
|
1816 |
|
|
|
1817 |
|
|
TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0);
|
1818 |
|
|
TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0);
|
1819 |
|
|
TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero);
|
1820 |
|
|
TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero);
|
1821 |
|
|
|
1822 |
|
|
TEST_c_c (clog10, plus_infty, nan_value, plus_infty, nan_value);
|
1823 |
|
|
TEST_c_c (clog10, minus_infty, nan_value, plus_infty, nan_value);
|
1824 |
|
|
|
1825 |
|
|
TEST_c_c (clog10, nan_value, plus_infty, plus_infty, nan_value);
|
1826 |
|
|
TEST_c_c (clog10, nan_value, minus_infty, plus_infty, nan_value);
|
1827 |
|
|
|
1828 |
|
|
TEST_c_c (clog10, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1829 |
|
|
TEST_c_c (clog10, 3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1830 |
|
|
TEST_c_c (clog10, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1831 |
|
|
TEST_c_c (clog10, -3, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1832 |
|
|
|
1833 |
|
|
TEST_c_c (clog10, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1834 |
|
|
TEST_c_c (clog10, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1835 |
|
|
TEST_c_c (clog10, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1836 |
|
|
TEST_c_c (clog10, nan_value, -5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
1837 |
|
|
|
1838 |
|
|
TEST_c_c (clog10, nan_value, nan_value, nan_value, nan_value);
|
1839 |
|
|
|
1840 |
|
|
TEST_c_c (clog10, 0.7L, 1.2L, 0.1427786545038868803L, 0.4528483579352493248L);
|
1841 |
|
|
TEST_c_c (clog10, -2, -3, 0.5569716761534183846L, -0.9375544629863747085L);
|
1842 |
|
|
|
1843 |
|
|
END (clog10, complex);
|
1844 |
|
|
}
|
1845 |
|
|
#endif
|
1846 |
|
|
|
1847 |
|
|
static void
|
1848 |
|
|
conj_test (void)
|
1849 |
|
|
{
|
1850 |
|
|
START (conj);
|
1851 |
|
|
TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero);
|
1852 |
|
|
TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0);
|
1853 |
|
|
TEST_c_c (conj, nan_value, nan_value, nan_value, nan_value);
|
1854 |
|
|
TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty);
|
1855 |
|
|
TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty);
|
1856 |
|
|
TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0);
|
1857 |
|
|
TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0);
|
1858 |
|
|
|
1859 |
|
|
END (conj, complex);
|
1860 |
|
|
}
|
1861 |
|
|
|
1862 |
|
|
|
1863 |
|
|
static void
|
1864 |
|
|
copysign_test (void)
|
1865 |
|
|
{
|
1866 |
|
|
START (copysign);
|
1867 |
|
|
|
1868 |
|
|
TEST_ff_f (copysign, 0, 4, 0);
|
1869 |
|
|
TEST_ff_f (copysign, 0, -4, minus_zero);
|
1870 |
|
|
TEST_ff_f (copysign, minus_zero, 4, 0);
|
1871 |
|
|
TEST_ff_f (copysign, minus_zero, -4, minus_zero);
|
1872 |
|
|
|
1873 |
|
|
TEST_ff_f (copysign, plus_infty, 0, plus_infty);
|
1874 |
|
|
TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty);
|
1875 |
|
|
TEST_ff_f (copysign, minus_infty, 0, plus_infty);
|
1876 |
|
|
TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty);
|
1877 |
|
|
|
1878 |
|
|
TEST_ff_f (copysign, 0, plus_infty, 0);
|
1879 |
|
|
TEST_ff_f (copysign, 0, minus_zero, minus_zero);
|
1880 |
|
|
TEST_ff_f (copysign, minus_zero, plus_infty, 0);
|
1881 |
|
|
TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero);
|
1882 |
|
|
|
1883 |
|
|
/* XXX More correctly we would have to check the sign of the NaN. */
|
1884 |
|
|
TEST_ff_f (copysign, nan_value, 0, nan_value);
|
1885 |
|
|
TEST_ff_f (copysign, nan_value, minus_zero, nan_value);
|
1886 |
|
|
TEST_ff_f (copysign, -nan_value, 0, nan_value);
|
1887 |
|
|
TEST_ff_f (copysign, -nan_value, minus_zero, nan_value);
|
1888 |
|
|
|
1889 |
|
|
END (copysign);
|
1890 |
|
|
}
|
1891 |
|
|
|
1892 |
|
|
static void
|
1893 |
|
|
cos_test (void)
|
1894 |
|
|
{
|
1895 |
|
|
errno = 0;
|
1896 |
|
|
FUNC(cos) (0);
|
1897 |
|
|
if (errno == ENOSYS)
|
1898 |
|
|
/* Function not implemented. */
|
1899 |
|
|
return;
|
1900 |
|
|
|
1901 |
|
|
START (cos);
|
1902 |
|
|
|
1903 |
|
|
TEST_f_f (cos, 0, 1);
|
1904 |
|
|
TEST_f_f (cos, minus_zero, 1);
|
1905 |
|
|
TEST_f_f (cos, plus_infty, nan_value, INVALID_EXCEPTION);
|
1906 |
|
|
TEST_f_f (cos, minus_infty, nan_value, INVALID_EXCEPTION);
|
1907 |
|
|
TEST_f_f (cos, nan_value, nan_value);
|
1908 |
|
|
|
1909 |
|
|
TEST_f_f (cos, M_PI_6l * 2.0, 0.5);
|
1910 |
|
|
TEST_f_f (cos, M_PI_6l * 4.0, -0.5);
|
1911 |
|
|
TEST_f_f (cos, M_PI_2l, 0);
|
1912 |
|
|
|
1913 |
|
|
TEST_f_f (cos, 0.7L, 0.76484218728448842625585999019186495L);
|
1914 |
|
|
|
1915 |
|
|
END (cos);
|
1916 |
|
|
}
|
1917 |
|
|
|
1918 |
|
|
static void
|
1919 |
|
|
cosh_test (void)
|
1920 |
|
|
{
|
1921 |
|
|
errno = 0;
|
1922 |
|
|
FUNC(cosh) (0.7L);
|
1923 |
|
|
if (errno == ENOSYS)
|
1924 |
|
|
/* Function not implemented. */
|
1925 |
|
|
return;
|
1926 |
|
|
|
1927 |
|
|
START (cosh);
|
1928 |
|
|
TEST_f_f (cosh, 0, 1);
|
1929 |
|
|
TEST_f_f (cosh, minus_zero, 1);
|
1930 |
|
|
|
1931 |
|
|
#ifndef TEST_INLINE
|
1932 |
|
|
TEST_f_f (cosh, plus_infty, plus_infty);
|
1933 |
|
|
TEST_f_f (cosh, minus_infty, plus_infty);
|
1934 |
|
|
#endif
|
1935 |
|
|
TEST_f_f (cosh, nan_value, nan_value);
|
1936 |
|
|
|
1937 |
|
|
TEST_f_f (cosh, 0.7L, 1.255169005630943018L);
|
1938 |
|
|
END (cosh);
|
1939 |
|
|
}
|
1940 |
|
|
|
1941 |
|
|
#if 0
|
1942 |
|
|
static void
|
1943 |
|
|
cpow_test (void)
|
1944 |
|
|
{
|
1945 |
|
|
errno = 0;
|
1946 |
|
|
FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0));
|
1947 |
|
|
if (errno == ENOSYS)
|
1948 |
|
|
/* Function not implemented. */
|
1949 |
|
|
return;
|
1950 |
|
|
|
1951 |
|
|
START (cpow);
|
1952 |
|
|
|
1953 |
|
|
TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0);
|
1954 |
|
|
TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0);
|
1955 |
|
|
|
1956 |
|
|
TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0);
|
1957 |
|
|
TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0);
|
1958 |
|
|
|
1959 |
|
|
TEST_cc_c (cpow, nan_value, nan_value, nan_value, nan_value, nan_value, nan_value);
|
1960 |
|
|
|
1961 |
|
|
END (cpow, complex);
|
1962 |
|
|
}
|
1963 |
|
|
|
1964 |
|
|
static void
|
1965 |
|
|
cproj_test (void)
|
1966 |
|
|
{
|
1967 |
|
|
START (cproj);
|
1968 |
|
|
TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0);
|
1969 |
|
|
TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero);
|
1970 |
|
|
TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero);
|
1971 |
|
|
TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0);
|
1972 |
|
|
|
1973 |
|
|
TEST_c_c (cproj, nan_value, nan_value, nan_value, nan_value);
|
1974 |
|
|
|
1975 |
|
|
TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0);
|
1976 |
|
|
TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero);
|
1977 |
|
|
TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0);
|
1978 |
|
|
TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero);
|
1979 |
|
|
|
1980 |
|
|
TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0);
|
1981 |
|
|
TEST_c_c (cproj, 2.0, 3.0, 0.2857142857142857142857142857142857L, 0.42857142857142857142857142857142855L);
|
1982 |
|
|
|
1983 |
|
|
END (cproj, complex);
|
1984 |
|
|
}
|
1985 |
|
|
|
1986 |
|
|
static void
|
1987 |
|
|
creal_test (void)
|
1988 |
|
|
{
|
1989 |
|
|
START (creal);
|
1990 |
|
|
TEST_c_f (creal, 0.0, 1.0, 0.0);
|
1991 |
|
|
TEST_c_f (creal, minus_zero, 1.0, minus_zero);
|
1992 |
|
|
TEST_c_f (creal, nan_value, 1.0, nan_value);
|
1993 |
|
|
TEST_c_f (creal, nan_value, nan_value, nan_value);
|
1994 |
|
|
TEST_c_f (creal, plus_infty, 1.0, plus_infty);
|
1995 |
|
|
TEST_c_f (creal, minus_infty, 1.0, minus_infty);
|
1996 |
|
|
TEST_c_f (creal, 2.0, 3.0, 2.0);
|
1997 |
|
|
|
1998 |
|
|
END (creal);
|
1999 |
|
|
}
|
2000 |
|
|
|
2001 |
|
|
static void
|
2002 |
|
|
csin_test (void)
|
2003 |
|
|
{
|
2004 |
|
|
errno = 0;
|
2005 |
|
|
FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L));
|
2006 |
|
|
if (errno == ENOSYS)
|
2007 |
|
|
/* Function not implemented. */
|
2008 |
|
|
return;
|
2009 |
|
|
|
2010 |
|
|
START (csin);
|
2011 |
|
|
|
2012 |
|
|
TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0);
|
2013 |
|
|
TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0);
|
2014 |
|
|
TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero);
|
2015 |
|
|
TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero);
|
2016 |
|
|
|
2017 |
|
|
TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty);
|
2018 |
|
|
TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty);
|
2019 |
|
|
TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty);
|
2020 |
|
|
TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty);
|
2021 |
|
|
|
2022 |
|
|
TEST_c_c (csin, plus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2023 |
|
|
TEST_c_c (csin, minus_infty, 0.0, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2024 |
|
|
TEST_c_c (csin, plus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2025 |
|
|
TEST_c_c (csin, minus_infty, minus_zero, nan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2026 |
|
|
|
2027 |
|
|
TEST_c_c (csin, plus_infty, plus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2028 |
|
|
TEST_c_c (csin, minus_infty, plus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2029 |
|
|
TEST_c_c (csin, plus_infty, minus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2030 |
|
|
TEST_c_c (csin, minus_infty, minus_infty, nan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2031 |
|
|
|
2032 |
|
|
TEST_c_c (csin, plus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION);
|
2033 |
|
|
TEST_c_c (csin, plus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION);
|
2034 |
|
|
TEST_c_c (csin, minus_infty, 6.75, nan_value, nan_value, INVALID_EXCEPTION);
|
2035 |
|
|
TEST_c_c (csin, minus_infty, -6.75, nan_value, nan_value, INVALID_EXCEPTION);
|
2036 |
|
|
|
2037 |
|
|
TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty);
|
2038 |
|
|
TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty);
|
2039 |
|
|
TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty);
|
2040 |
|
|
TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty);
|
2041 |
|
|
|
2042 |
|
|
TEST_c_c (csin, nan_value, 0.0, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
2043 |
|
|
TEST_c_c (csin, nan_value, minus_zero, nan_value, 0.0, IGNORE_ZERO_INF_SIGN);
|
2044 |
|
|
|
2045 |
|
|
TEST_c_c (csin, nan_value, plus_infty, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
|
2046 |
|
|
TEST_c_c (csin, nan_value, minus_infty, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
|
2047 |
|
|
|
2048 |
|
|
TEST_c_c (csin, nan_value, 9.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2049 |
|
|
TEST_c_c (csin, nan_value, -9.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2050 |
|
|
|
2051 |
|
|
TEST_c_c (csin, 0.0, nan_value, 0.0, nan_value);
|
2052 |
|
|
TEST_c_c (csin, minus_zero, nan_value, minus_zero, nan_value);
|
2053 |
|
|
|
2054 |
|
|
TEST_c_c (csin, 10.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2055 |
|
|
TEST_c_c (csin, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2056 |
|
|
|
2057 |
|
|
TEST_c_c (csin, plus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2058 |
|
|
TEST_c_c (csin, minus_infty, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2059 |
|
|
|
2060 |
|
|
TEST_c_c (csin, nan_value, nan_value, nan_value, nan_value);
|
2061 |
|
|
|
2062 |
|
|
TEST_c_c (csin, 0.7L, 1.2L, 1.1664563419657581376L, 1.1544997246948547371L);
|
2063 |
|
|
|
2064 |
|
|
TEST_c_c (csin, -2, -3, -9.1544991469114295734L, 4.1689069599665643507L);
|
2065 |
|
|
|
2066 |
|
|
END (csin, complex);
|
2067 |
|
|
}
|
2068 |
|
|
|
2069 |
|
|
|
2070 |
|
|
static void
|
2071 |
|
|
csinh_test (void)
|
2072 |
|
|
{
|
2073 |
|
|
errno = 0;
|
2074 |
|
|
FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L));
|
2075 |
|
|
if (errno == ENOSYS)
|
2076 |
|
|
/* Function not implemented. */
|
2077 |
|
|
return;
|
2078 |
|
|
|
2079 |
|
|
START (csinh);
|
2080 |
|
|
|
2081 |
|
|
TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0);
|
2082 |
|
|
TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0);
|
2083 |
|
|
TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero);
|
2084 |
|
|
TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero);
|
2085 |
|
|
|
2086 |
|
|
TEST_c_c (csinh, 0.0, plus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2087 |
|
|
TEST_c_c (csinh, minus_zero, plus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2088 |
|
|
TEST_c_c (csinh, 0.0, minus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2089 |
|
|
TEST_c_c (csinh, minus_zero, minus_infty, 0.0, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2090 |
|
|
|
2091 |
|
|
TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0);
|
2092 |
|
|
TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0);
|
2093 |
|
|
TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero);
|
2094 |
|
|
TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero);
|
2095 |
|
|
|
2096 |
|
|
TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2097 |
|
|
TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2098 |
|
|
TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2099 |
|
|
TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN);
|
2100 |
|
|
|
2101 |
|
|
TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty);
|
2102 |
|
|
TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty);
|
2103 |
|
|
TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty);
|
2104 |
|
|
TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty);
|
2105 |
|
|
|
2106 |
|
|
TEST_c_c (csinh, 6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2107 |
|
|
TEST_c_c (csinh, -6.75, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2108 |
|
|
TEST_c_c (csinh, 6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2109 |
|
|
TEST_c_c (csinh, -6.75, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2110 |
|
|
|
2111 |
|
|
TEST_c_c (csinh, 0.0, nan_value, 0.0, nan_value, IGNORE_ZERO_INF_SIGN);
|
2112 |
|
|
TEST_c_c (csinh, minus_zero, nan_value, 0.0, nan_value, IGNORE_ZERO_INF_SIGN);
|
2113 |
|
|
|
2114 |
|
|
TEST_c_c (csinh, plus_infty, nan_value, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN);
|
2115 |
|
|
TEST_c_c (csinh, minus_infty, nan_value, plus_infty, nan_value, IGNORE_ZERO_INF_SIGN);
|
2116 |
|
|
|
2117 |
|
|
TEST_c_c (csinh, 9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2118 |
|
|
TEST_c_c (csinh, -9.0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2119 |
|
|
|
2120 |
|
|
TEST_c_c (csinh, nan_value, 0.0, nan_value, 0.0);
|
2121 |
|
|
TEST_c_c (csinh, nan_value, minus_zero, nan_value, minus_zero);
|
2122 |
|
|
|
2123 |
|
|
TEST_c_c (csinh, nan_value, 10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2124 |
|
|
TEST_c_c (csinh, nan_value, -10.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2125 |
|
|
|
2126 |
|
|
TEST_c_c (csinh, nan_value, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2127 |
|
|
TEST_c_c (csinh, nan_value, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2128 |
|
|
|
2129 |
|
|
TEST_c_c (csinh, nan_value, nan_value, nan_value, nan_value);
|
2130 |
|
|
|
2131 |
|
|
TEST_c_c (csinh, 0.7L, 1.2L, 0.27487868678117583582L, 1.1698665727426565139L);
|
2132 |
|
|
TEST_c_c (csinh, -2, -3, 3.5905645899857799520L, -0.5309210862485198052L);
|
2133 |
|
|
|
2134 |
|
|
END (csinh, complex);
|
2135 |
|
|
}
|
2136 |
|
|
|
2137 |
|
|
static void
|
2138 |
|
|
csqrt_test (void)
|
2139 |
|
|
{
|
2140 |
|
|
errno = 0;
|
2141 |
|
|
FUNC(csqrt) (BUILD_COMPLEX (-1, 0));
|
2142 |
|
|
if (errno == ENOSYS)
|
2143 |
|
|
/* Function not implemented. */
|
2144 |
|
|
return;
|
2145 |
|
|
|
2146 |
|
|
START (csqrt);
|
2147 |
|
|
|
2148 |
|
|
TEST_c_c (csqrt, 0, 0, 0.0, 0.0);
|
2149 |
|
|
TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero);
|
2150 |
|
|
TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0);
|
2151 |
|
|
TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero);
|
2152 |
|
|
|
2153 |
|
|
TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty);
|
2154 |
|
|
TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty);
|
2155 |
|
|
TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty);
|
2156 |
|
|
TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty);
|
2157 |
|
|
|
2158 |
|
|
TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0);
|
2159 |
|
|
TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0);
|
2160 |
|
|
TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero);
|
2161 |
|
|
TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero);
|
2162 |
|
|
|
2163 |
|
|
TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty);
|
2164 |
|
|
TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty);
|
2165 |
|
|
TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty);
|
2166 |
|
|
TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty);
|
2167 |
|
|
TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty);
|
2168 |
|
|
TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty);
|
2169 |
|
|
TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty);
|
2170 |
|
|
TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty);
|
2171 |
|
|
TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty);
|
2172 |
|
|
TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty);
|
2173 |
|
|
TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty);
|
2174 |
|
|
TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty);
|
2175 |
|
|
|
2176 |
|
|
TEST_c_c (csqrt, minus_infty, nan_value, nan_value, plus_infty, IGNORE_ZERO_INF_SIGN);
|
2177 |
|
|
|
2178 |
|
|
TEST_c_c (csqrt, plus_infty, nan_value, plus_infty, nan_value);
|
2179 |
|
|
|
2180 |
|
|
TEST_c_c (csqrt, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2181 |
|
|
TEST_c_c (csqrt, 1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2182 |
|
|
TEST_c_c (csqrt, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2183 |
|
|
TEST_c_c (csqrt, -1, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2184 |
|
|
|
2185 |
|
|
TEST_c_c (csqrt, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2186 |
|
|
TEST_c_c (csqrt, nan_value, 8, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2187 |
|
|
TEST_c_c (csqrt, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2188 |
|
|
TEST_c_c (csqrt, nan_value, -8, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2189 |
|
|
|
2190 |
|
|
TEST_c_c (csqrt, nan_value, nan_value, nan_value, nan_value);
|
2191 |
|
|
|
2192 |
|
|
TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0);
|
2193 |
|
|
TEST_c_c (csqrt, -1, 0, 0.0, 1.0);
|
2194 |
|
|
TEST_c_c (csqrt, 0, 2, 1.0, 1.0);
|
2195 |
|
|
TEST_c_c (csqrt, 119, 120, 12.0, 5.0);
|
2196 |
|
|
TEST_c_c (csqrt, 0.7L, 1.2L, 1.022067610030026450706487883081139L, 0.58704531296356521154977678719838035L);
|
2197 |
|
|
TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L);
|
2198 |
|
|
TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L);
|
2199 |
|
|
|
2200 |
|
|
END (csqrt, complex);
|
2201 |
|
|
}
|
2202 |
|
|
|
2203 |
|
|
static void
|
2204 |
|
|
ctan_test (void)
|
2205 |
|
|
{
|
2206 |
|
|
errno = 0;
|
2207 |
|
|
FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
|
2208 |
|
|
if (errno == ENOSYS)
|
2209 |
|
|
/* Function not implemented. */
|
2210 |
|
|
return;
|
2211 |
|
|
|
2212 |
|
|
START (ctan);
|
2213 |
|
|
|
2214 |
|
|
TEST_c_c (ctan, 0, 0, 0.0, 0.0);
|
2215 |
|
|
TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero);
|
2216 |
|
|
TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0);
|
2217 |
|
|
TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero);
|
2218 |
|
|
|
2219 |
|
|
TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0);
|
2220 |
|
|
TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0);
|
2221 |
|
|
TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0);
|
2222 |
|
|
TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0);
|
2223 |
|
|
|
2224 |
|
|
TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0);
|
2225 |
|
|
TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0);
|
2226 |
|
|
TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0);
|
2227 |
|
|
TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0);
|
2228 |
|
|
|
2229 |
|
|
TEST_c_c (ctan, plus_infty, 0, nan_value, nan_value, INVALID_EXCEPTION);
|
2230 |
|
|
TEST_c_c (ctan, plus_infty, 2, nan_value, nan_value, INVALID_EXCEPTION);
|
2231 |
|
|
TEST_c_c (ctan, minus_infty, 0, nan_value, nan_value, INVALID_EXCEPTION);
|
2232 |
|
|
TEST_c_c (ctan, minus_infty, 2, nan_value, nan_value, INVALID_EXCEPTION);
|
2233 |
|
|
TEST_c_c (ctan, plus_infty, minus_zero, nan_value, nan_value, INVALID_EXCEPTION);
|
2234 |
|
|
TEST_c_c (ctan, plus_infty, -2, nan_value, nan_value, INVALID_EXCEPTION);
|
2235 |
|
|
TEST_c_c (ctan, minus_infty, minus_zero, nan_value, nan_value, INVALID_EXCEPTION);
|
2236 |
|
|
TEST_c_c (ctan, minus_infty, -2, nan_value, nan_value, INVALID_EXCEPTION);
|
2237 |
|
|
|
2238 |
|
|
TEST_c_c (ctan, nan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN);
|
2239 |
|
|
TEST_c_c (ctan, nan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN);
|
2240 |
|
|
|
2241 |
|
|
TEST_c_c (ctan, 0, nan_value, 0.0, nan_value);
|
2242 |
|
|
TEST_c_c (ctan, minus_zero, nan_value, minus_zero, nan_value);
|
2243 |
|
|
|
2244 |
|
|
TEST_c_c (ctan, 0.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2245 |
|
|
TEST_c_c (ctan, -4.5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2246 |
|
|
|
2247 |
|
|
TEST_c_c (ctan, nan_value, 0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2248 |
|
|
TEST_c_c (ctan, nan_value, 5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2249 |
|
|
TEST_c_c (ctan, nan_value, minus_zero, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2250 |
|
|
TEST_c_c (ctan, nan_value, -0.25, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2251 |
|
|
|
2252 |
|
|
TEST_c_c (ctan, nan_value, nan_value, nan_value, nan_value);
|
2253 |
|
|
|
2254 |
|
|
TEST_c_c (ctan, 0.7L, 1.2L, 0.1720734197630349001L, 0.9544807059989405538L);
|
2255 |
|
|
TEST_c_c (ctan, -2, -3, 0.0037640256415042482L, -1.0032386273536098014L);
|
2256 |
|
|
|
2257 |
|
|
END (ctan, complex);
|
2258 |
|
|
}
|
2259 |
|
|
|
2260 |
|
|
|
2261 |
|
|
static void
|
2262 |
|
|
ctanh_test (void)
|
2263 |
|
|
{
|
2264 |
|
|
errno = 0;
|
2265 |
|
|
FUNC(ctanh) (BUILD_COMPLEX (0, 0));
|
2266 |
|
|
if (errno == ENOSYS)
|
2267 |
|
|
/* Function not implemented. */
|
2268 |
|
|
return;
|
2269 |
|
|
|
2270 |
|
|
START (ctanh);
|
2271 |
|
|
|
2272 |
|
|
TEST_c_c (ctanh, 0, 0, 0.0, 0.0);
|
2273 |
|
|
TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero);
|
2274 |
|
|
TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0);
|
2275 |
|
|
TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero);
|
2276 |
|
|
|
2277 |
|
|
TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0);
|
2278 |
|
|
TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0);
|
2279 |
|
|
TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero);
|
2280 |
|
|
TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero);
|
2281 |
|
|
TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0);
|
2282 |
|
|
TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0);
|
2283 |
|
|
TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero);
|
2284 |
|
|
TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero);
|
2285 |
|
|
|
2286 |
|
|
TEST_c_c (ctanh, 0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2287 |
|
|
TEST_c_c (ctanh, 2, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2288 |
|
|
TEST_c_c (ctanh, 0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2289 |
|
|
TEST_c_c (ctanh, 2, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2290 |
|
|
TEST_c_c (ctanh, minus_zero, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2291 |
|
|
TEST_c_c (ctanh, -2, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2292 |
|
|
TEST_c_c (ctanh, minus_zero, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2293 |
|
|
TEST_c_c (ctanh, -2, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
2294 |
|
|
|
2295 |
|
|
TEST_c_c (ctanh, plus_infty, nan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN);
|
2296 |
|
|
TEST_c_c (ctanh, minus_infty, nan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN);
|
2297 |
|
|
|
2298 |
|
|
TEST_c_c (ctanh, nan_value, 0, nan_value, 0.0);
|
2299 |
|
|
TEST_c_c (ctanh, nan_value, minus_zero, nan_value, minus_zero);
|
2300 |
|
|
|
2301 |
|
|
TEST_c_c (ctanh, nan_value, 0.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2302 |
|
|
TEST_c_c (ctanh, nan_value, -4.5, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2303 |
|
|
|
2304 |
|
|
TEST_c_c (ctanh, 0, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2305 |
|
|
TEST_c_c (ctanh, 5, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2306 |
|
|
TEST_c_c (ctanh, minus_zero, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2307 |
|
|
TEST_c_c (ctanh, -0.25, nan_value, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2308 |
|
|
|
2309 |
|
|
TEST_c_c (ctanh, nan_value, nan_value, nan_value, nan_value);
|
2310 |
|
|
|
2311 |
|
|
TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0);
|
2312 |
|
|
|
2313 |
|
|
TEST_c_c (ctanh, 0.7L, 1.2L, 1.3472197399061191630L, 0.4778641038326365540L);
|
2314 |
|
|
TEST_c_c (ctanh, -2, -3, -0.9653858790221331242L, 0.0098843750383224937L);
|
2315 |
|
|
|
2316 |
|
|
END (ctanh, complex);
|
2317 |
|
|
}
|
2318 |
|
|
#endif
|
2319 |
|
|
|
2320 |
|
|
static void
|
2321 |
|
|
erf_test (void)
|
2322 |
|
|
{
|
2323 |
|
|
errno = 0;
|
2324 |
|
|
FUNC(erf) (0);
|
2325 |
|
|
if (errno == ENOSYS)
|
2326 |
|
|
/* Function not implemented. */
|
2327 |
|
|
return;
|
2328 |
|
|
|
2329 |
|
|
START (erf);
|
2330 |
|
|
|
2331 |
|
|
TEST_f_f (erf, 0, 0);
|
2332 |
|
|
TEST_f_f (erf, minus_zero, minus_zero);
|
2333 |
|
|
TEST_f_f (erf, plus_infty, 1);
|
2334 |
|
|
TEST_f_f (erf, minus_infty, -1);
|
2335 |
|
|
TEST_f_f (erf, nan_value, nan_value);
|
2336 |
|
|
|
2337 |
|
|
TEST_f_f (erf, 0.7L, 0.67780119383741847297L);
|
2338 |
|
|
|
2339 |
|
|
TEST_f_f (erf, 1.2L, 0.91031397822963538024L);
|
2340 |
|
|
TEST_f_f (erf, 2.0, 0.99532226501895273416L);
|
2341 |
|
|
TEST_f_f (erf, 4.1L, 0.99999999329997234592L);
|
2342 |
|
|
TEST_f_f (erf, 27, 1.0L);
|
2343 |
|
|
|
2344 |
|
|
END (erf);
|
2345 |
|
|
}
|
2346 |
|
|
|
2347 |
|
|
|
2348 |
|
|
static void
|
2349 |
|
|
erfc_test (void)
|
2350 |
|
|
{
|
2351 |
|
|
errno = 0;
|
2352 |
|
|
FUNC(erfc) (0);
|
2353 |
|
|
if (errno == ENOSYS)
|
2354 |
|
|
/* Function not implemented. */
|
2355 |
|
|
return;
|
2356 |
|
|
|
2357 |
|
|
START (erfc);
|
2358 |
|
|
|
2359 |
|
|
TEST_f_f (erfc, plus_infty, 0.0);
|
2360 |
|
|
TEST_f_f (erfc, minus_infty, 2.0);
|
2361 |
|
|
TEST_f_f (erfc, 0.0, 1.0);
|
2362 |
|
|
TEST_f_f (erfc, minus_zero, 1.0);
|
2363 |
|
|
TEST_f_f (erfc, nan_value, nan_value);
|
2364 |
|
|
|
2365 |
|
|
TEST_f_f (erfc, 0.7L, 0.32219880616258152702L);
|
2366 |
|
|
|
2367 |
|
|
TEST_f_f (erfc, 1.2L, 0.089686021770364619762L);
|
2368 |
|
|
TEST_f_f (erfc, 2.0, 0.0046777349810472658379L);
|
2369 |
|
|
TEST_f_f (erfc, 4.1L, 0.67000276540848983727e-8L);
|
2370 |
|
|
TEST_f_f (erfc, 9, 0.41370317465138102381e-36L);
|
2371 |
|
|
|
2372 |
|
|
END (erfc);
|
2373 |
|
|
}
|
2374 |
|
|
|
2375 |
|
|
static void
|
2376 |
|
|
exp_test (void)
|
2377 |
|
|
{
|
2378 |
|
|
errno = 0;
|
2379 |
|
|
FUNC(exp) (0);
|
2380 |
|
|
if (errno == ENOSYS)
|
2381 |
|
|
/* Function not implemented. */
|
2382 |
|
|
return;
|
2383 |
|
|
|
2384 |
|
|
START (exp);
|
2385 |
|
|
|
2386 |
|
|
TEST_f_f (exp, 0, 1);
|
2387 |
|
|
TEST_f_f (exp, minus_zero, 1);
|
2388 |
|
|
|
2389 |
|
|
#ifndef TEST_INLINE
|
2390 |
|
|
TEST_f_f (exp, plus_infty, plus_infty);
|
2391 |
|
|
TEST_f_f (exp, minus_infty, 0);
|
2392 |
|
|
#endif
|
2393 |
|
|
TEST_f_f (exp, nan_value, nan_value);
|
2394 |
|
|
TEST_f_f (exp, 1, M_El);
|
2395 |
|
|
|
2396 |
|
|
TEST_f_f (exp, 2, M_E2l);
|
2397 |
|
|
TEST_f_f (exp, 3, M_E3l);
|
2398 |
|
|
TEST_f_f (exp, 0.7L, 2.0137527074704765216L);
|
2399 |
|
|
TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L);
|
2400 |
|
|
#ifdef TEST_LDOUBLE
|
2401 |
|
|
/* The result can only be represented in long double. */
|
2402 |
|
|
TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L);
|
2403 |
|
|
#endif
|
2404 |
|
|
END (exp);
|
2405 |
|
|
}
|
2406 |
|
|
|
2407 |
|
|
|
2408 |
|
|
#if 0
|
2409 |
|
|
static void
|
2410 |
|
|
exp10_test (void)
|
2411 |
|
|
{
|
2412 |
|
|
errno = 0;
|
2413 |
|
|
FUNC(exp10) (0);
|
2414 |
|
|
if (errno == ENOSYS)
|
2415 |
|
|
/* Function not implemented. */
|
2416 |
|
|
return;
|
2417 |
|
|
|
2418 |
|
|
START (exp10);
|
2419 |
|
|
|
2420 |
|
|
TEST_f_f (exp10, 0, 1);
|
2421 |
|
|
TEST_f_f (exp10, minus_zero, 1);
|
2422 |
|
|
|
2423 |
|
|
TEST_f_f (exp10, plus_infty, plus_infty);
|
2424 |
|
|
TEST_f_f (exp10, minus_infty, 0);
|
2425 |
|
|
TEST_f_f (exp10, nan_value, nan_value);
|
2426 |
|
|
TEST_f_f (exp10, 3, 1000);
|
2427 |
|
|
TEST_f_f (exp10, -1, 0.1L);
|
2428 |
|
|
TEST_f_f (exp10, 1e6, plus_infty);
|
2429 |
|
|
TEST_f_f (exp10, -1e6, 0);
|
2430 |
|
|
TEST_f_f (exp10, 0.7L, 5.0118723362727228500155418688494574L);
|
2431 |
|
|
|
2432 |
|
|
END (exp10);
|
2433 |
|
|
}
|
2434 |
|
|
|
2435 |
|
|
static void
|
2436 |
|
|
exp2_test (void)
|
2437 |
|
|
{
|
2438 |
|
|
errno = 0;
|
2439 |
|
|
FUNC(exp2) (0);
|
2440 |
|
|
if (errno == ENOSYS)
|
2441 |
|
|
/* Function not implemented. */
|
2442 |
|
|
return;
|
2443 |
|
|
|
2444 |
|
|
START (exp2);
|
2445 |
|
|
|
2446 |
|
|
TEST_f_f (exp2, 0, 1);
|
2447 |
|
|
TEST_f_f (exp2, minus_zero, 1);
|
2448 |
|
|
TEST_f_f (exp2, plus_infty, plus_infty);
|
2449 |
|
|
TEST_f_f (exp2, minus_infty, 0);
|
2450 |
|
|
TEST_f_f (exp2, nan_value, nan_value);
|
2451 |
|
|
|
2452 |
|
|
TEST_f_f (exp2, 10, 1024);
|
2453 |
|
|
TEST_f_f (exp2, -1, 0.5);
|
2454 |
|
|
TEST_f_f (exp2, 1e6, plus_infty);
|
2455 |
|
|
TEST_f_f (exp2, -1e6, 0);
|
2456 |
|
|
TEST_f_f (exp2, 0.7L, 1.6245047927124710452L);
|
2457 |
|
|
|
2458 |
|
|
END (exp2);
|
2459 |
|
|
}
|
2460 |
|
|
#endif
|
2461 |
|
|
|
2462 |
|
|
static void
|
2463 |
|
|
expm1_test (void)
|
2464 |
|
|
{
|
2465 |
|
|
errno = 0;
|
2466 |
|
|
FUNC(expm1) (0);
|
2467 |
|
|
if (errno == ENOSYS)
|
2468 |
|
|
/* Function not implemented. */
|
2469 |
|
|
return;
|
2470 |
|
|
|
2471 |
|
|
START (expm1);
|
2472 |
|
|
|
2473 |
|
|
TEST_f_f (expm1, 0, 0);
|
2474 |
|
|
TEST_f_f (expm1, minus_zero, minus_zero);
|
2475 |
|
|
|
2476 |
|
|
#ifndef TEST_INLINE
|
2477 |
|
|
TEST_f_f (expm1, plus_infty, plus_infty);
|
2478 |
|
|
TEST_f_f (expm1, minus_infty, -1);
|
2479 |
|
|
#endif
|
2480 |
|
|
TEST_f_f (expm1, nan_value, nan_value);
|
2481 |
|
|
|
2482 |
|
|
TEST_f_f (expm1, 1, M_El - 1.0);
|
2483 |
|
|
TEST_f_f (expm1, 0.7L, 1.0137527074704765216L);
|
2484 |
|
|
|
2485 |
|
|
END (expm1);
|
2486 |
|
|
}
|
2487 |
|
|
|
2488 |
|
|
static void
|
2489 |
|
|
fabs_test (void)
|
2490 |
|
|
{
|
2491 |
|
|
START (fabs);
|
2492 |
|
|
|
2493 |
|
|
TEST_f_f (fabs, 0, 0);
|
2494 |
|
|
TEST_f_f (fabs, minus_zero, 0);
|
2495 |
|
|
|
2496 |
|
|
TEST_f_f (fabs, plus_infty, plus_infty);
|
2497 |
|
|
TEST_f_f (fabs, minus_infty, plus_infty);
|
2498 |
|
|
TEST_f_f (fabs, nan_value, nan_value);
|
2499 |
|
|
|
2500 |
|
|
TEST_f_f (fabs, 38.0, 38.0);
|
2501 |
|
|
TEST_f_f (fabs, -M_El, M_El);
|
2502 |
|
|
|
2503 |
|
|
END (fabs);
|
2504 |
|
|
}
|
2505 |
|
|
|
2506 |
|
|
#if 0
|
2507 |
|
|
static void
|
2508 |
|
|
fdim_test (void)
|
2509 |
|
|
{
|
2510 |
|
|
START (fdim);
|
2511 |
|
|
|
2512 |
|
|
TEST_ff_f (fdim, 0, 0, 0);
|
2513 |
|
|
TEST_ff_f (fdim, 9, 0, 9);
|
2514 |
|
|
TEST_ff_f (fdim, 0, 9, 0);
|
2515 |
|
|
TEST_ff_f (fdim, -9, 0, 0);
|
2516 |
|
|
TEST_ff_f (fdim, 0, -9, 9);
|
2517 |
|
|
|
2518 |
|
|
TEST_ff_f (fdim, plus_infty, 9, plus_infty);
|
2519 |
|
|
TEST_ff_f (fdim, plus_infty, -9, plus_infty);
|
2520 |
|
|
TEST_ff_f (fdim, minus_infty, 9, 0);
|
2521 |
|
|
TEST_ff_f (fdim, minus_infty, -9, 0);
|
2522 |
|
|
TEST_ff_f (fdim, 9, minus_infty, plus_infty);
|
2523 |
|
|
TEST_ff_f (fdim, -9, minus_infty, plus_infty);
|
2524 |
|
|
TEST_ff_f (fdim, 9, plus_infty, 0);
|
2525 |
|
|
TEST_ff_f (fdim, -9, plus_infty, 0);
|
2526 |
|
|
|
2527 |
|
|
TEST_ff_f (fdim, 0, nan_value, nan_value);
|
2528 |
|
|
TEST_ff_f (fdim, 9, nan_value, nan_value);
|
2529 |
|
|
TEST_ff_f (fdim, -9, nan_value, nan_value);
|
2530 |
|
|
TEST_ff_f (fdim, nan_value, 9, nan_value);
|
2531 |
|
|
TEST_ff_f (fdim, nan_value, -9, nan_value);
|
2532 |
|
|
TEST_ff_f (fdim, plus_infty, nan_value, nan_value);
|
2533 |
|
|
TEST_ff_f (fdim, minus_infty, nan_value, nan_value);
|
2534 |
|
|
TEST_ff_f (fdim, nan_value, plus_infty, nan_value);
|
2535 |
|
|
TEST_ff_f (fdim, nan_value, minus_infty, nan_value);
|
2536 |
|
|
TEST_ff_f (fdim, nan_value, nan_value, nan_value);
|
2537 |
|
|
|
2538 |
|
|
END (fdim);
|
2539 |
|
|
}
|
2540 |
|
|
#endif
|
2541 |
|
|
|
2542 |
|
|
static void
|
2543 |
|
|
floor_test (void)
|
2544 |
|
|
{
|
2545 |
|
|
START (floor);
|
2546 |
|
|
|
2547 |
|
|
TEST_f_f (floor, 0.0, 0.0);
|
2548 |
|
|
TEST_f_f (floor, minus_zero, minus_zero);
|
2549 |
|
|
TEST_f_f (floor, plus_infty, plus_infty);
|
2550 |
|
|
TEST_f_f (floor, minus_infty, minus_infty);
|
2551 |
|
|
TEST_f_f (floor, nan_value, nan_value);
|
2552 |
|
|
|
2553 |
|
|
TEST_f_f (floor, M_PIl, 3.0);
|
2554 |
|
|
TEST_f_f (floor, -M_PIl, -4.0);
|
2555 |
|
|
|
2556 |
|
|
END (floor);
|
2557 |
|
|
}
|
2558 |
|
|
|
2559 |
|
|
#if 0
|
2560 |
|
|
static void
|
2561 |
|
|
fma_test (void)
|
2562 |
|
|
{
|
2563 |
|
|
START (fma);
|
2564 |
|
|
|
2565 |
|
|
TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0);
|
2566 |
|
|
TEST_fff_f (fma, nan_value, 2.0, 3.0, nan_value);
|
2567 |
|
|
TEST_fff_f (fma, 1.0, nan_value, 3.0, nan_value);
|
2568 |
|
|
TEST_fff_f (fma, 1.0, 2.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2569 |
|
|
TEST_fff_f (fma, plus_infty, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2570 |
|
|
TEST_fff_f (fma, minus_infty, 0.0, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2571 |
|
|
TEST_fff_f (fma, 0.0, plus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2572 |
|
|
TEST_fff_f (fma, 0.0, minus_infty, nan_value, nan_value, INVALID_EXCEPTION_OK);
|
2573 |
|
|
TEST_fff_f (fma, plus_infty, 0.0, 1.0, nan_value, INVALID_EXCEPTION);
|
2574 |
|
|
TEST_fff_f (fma, minus_infty, 0.0, 1.0, nan_value, INVALID_EXCEPTION);
|
2575 |
|
|
TEST_fff_f (fma, 0.0, plus_infty, 1.0, nan_value, INVALID_EXCEPTION);
|
2576 |
|
|
TEST_fff_f (fma, 0.0, minus_infty, 1.0, nan_value, INVALID_EXCEPTION);
|
2577 |
|
|
|
2578 |
|
|
TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, nan_value, INVALID_EXCEPTION);
|
2579 |
|
|
TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
2580 |
|
|
TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, nan_value, INVALID_EXCEPTION);
|
2581 |
|
|
TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, nan_value, INVALID_EXCEPTION);
|
2582 |
|
|
|
2583 |
|
|
END (fma);
|
2584 |
|
|
}
|
2585 |
|
|
|
2586 |
|
|
|
2587 |
|
|
static void
|
2588 |
|
|
fmax_test (void)
|
2589 |
|
|
{
|
2590 |
|
|
START (fmax);
|
2591 |
|
|
|
2592 |
|
|
TEST_ff_f (fmax, 0, 0, 0);
|
2593 |
|
|
TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero);
|
2594 |
|
|
TEST_ff_f (fmax, 9, 0, 9);
|
2595 |
|
|
TEST_ff_f (fmax, 0, 9, 9);
|
2596 |
|
|
TEST_ff_f (fmax, -9, 0, 0);
|
2597 |
|
|
TEST_ff_f (fmax, 0, -9, 0);
|
2598 |
|
|
|
2599 |
|
|
TEST_ff_f (fmax, plus_infty, 9, plus_infty);
|
2600 |
|
|
TEST_ff_f (fmax, 0, plus_infty, plus_infty);
|
2601 |
|
|
TEST_ff_f (fmax, -9, plus_infty, plus_infty);
|
2602 |
|
|
TEST_ff_f (fmax, plus_infty, -9, plus_infty);
|
2603 |
|
|
|
2604 |
|
|
TEST_ff_f (fmax, minus_infty, 9, 9);
|
2605 |
|
|
TEST_ff_f (fmax, minus_infty, -9, -9);
|
2606 |
|
|
TEST_ff_f (fmax, 9, minus_infty, 9);
|
2607 |
|
|
TEST_ff_f (fmax, -9, minus_infty, -9);
|
2608 |
|
|
|
2609 |
|
|
TEST_ff_f (fmax, 0, nan_value, 0);
|
2610 |
|
|
TEST_ff_f (fmax, 9, nan_value, 9);
|
2611 |
|
|
TEST_ff_f (fmax, -9, nan_value, -9);
|
2612 |
|
|
TEST_ff_f (fmax, nan_value, 0, 0);
|
2613 |
|
|
TEST_ff_f (fmax, nan_value, 9, 9);
|
2614 |
|
|
TEST_ff_f (fmax, nan_value, -9, -9);
|
2615 |
|
|
TEST_ff_f (fmax, plus_infty, nan_value, plus_infty);
|
2616 |
|
|
TEST_ff_f (fmax, minus_infty, nan_value, minus_infty);
|
2617 |
|
|
TEST_ff_f (fmax, nan_value, plus_infty, plus_infty);
|
2618 |
|
|
TEST_ff_f (fmax, nan_value, minus_infty, minus_infty);
|
2619 |
|
|
TEST_ff_f (fmax, nan_value, nan_value, nan_value);
|
2620 |
|
|
|
2621 |
|
|
END (fmax);
|
2622 |
|
|
}
|
2623 |
|
|
|
2624 |
|
|
|
2625 |
|
|
static void
|
2626 |
|
|
fmin_test (void)
|
2627 |
|
|
{
|
2628 |
|
|
START (fmin);
|
2629 |
|
|
|
2630 |
|
|
TEST_ff_f (fmin, 0, 0, 0);
|
2631 |
|
|
TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero);
|
2632 |
|
|
TEST_ff_f (fmin, 9, 0, 0);
|
2633 |
|
|
TEST_ff_f (fmin, 0, 9, 0);
|
2634 |
|
|
TEST_ff_f (fmin, -9, 0, -9);
|
2635 |
|
|
TEST_ff_f (fmin, 0, -9, -9);
|
2636 |
|
|
|
2637 |
|
|
TEST_ff_f (fmin, plus_infty, 9, 9);
|
2638 |
|
|
TEST_ff_f (fmin, 9, plus_infty, 9);
|
2639 |
|
|
TEST_ff_f (fmin, plus_infty, -9, -9);
|
2640 |
|
|
TEST_ff_f (fmin, -9, plus_infty, -9);
|
2641 |
|
|
TEST_ff_f (fmin, minus_infty, 9, minus_infty);
|
2642 |
|
|
TEST_ff_f (fmin, minus_infty, -9, minus_infty);
|
2643 |
|
|
TEST_ff_f (fmin, 9, minus_infty, minus_infty);
|
2644 |
|
|
TEST_ff_f (fmin, -9, minus_infty, minus_infty);
|
2645 |
|
|
|
2646 |
|
|
TEST_ff_f (fmin, 0, nan_value, 0);
|
2647 |
|
|
TEST_ff_f (fmin, 9, nan_value, 9);
|
2648 |
|
|
TEST_ff_f (fmin, -9, nan_value, -9);
|
2649 |
|
|
TEST_ff_f (fmin, nan_value, 0, 0);
|
2650 |
|
|
TEST_ff_f (fmin, nan_value, 9, 9);
|
2651 |
|
|
TEST_ff_f (fmin, nan_value, -9, -9);
|
2652 |
|
|
TEST_ff_f (fmin, plus_infty, nan_value, plus_infty);
|
2653 |
|
|
TEST_ff_f (fmin, minus_infty, nan_value, minus_infty);
|
2654 |
|
|
TEST_ff_f (fmin, nan_value, plus_infty, plus_infty);
|
2655 |
|
|
TEST_ff_f (fmin, nan_value, minus_infty, minus_infty);
|
2656 |
|
|
TEST_ff_f (fmin, nan_value, nan_value, nan_value);
|
2657 |
|
|
|
2658 |
|
|
END (fmin);
|
2659 |
|
|
}
|
2660 |
|
|
#endif
|
2661 |
|
|
|
2662 |
|
|
static void
|
2663 |
|
|
fmod_test (void)
|
2664 |
|
|
{
|
2665 |
|
|
errno = 0;
|
2666 |
|
|
FUNC(fmod) (6.5, 2.3L);
|
2667 |
|
|
if (errno == ENOSYS)
|
2668 |
|
|
/* Function not implemented. */
|
2669 |
|
|
return;
|
2670 |
|
|
|
2671 |
|
|
START (fmod);
|
2672 |
|
|
|
2673 |
|
|
/* fmod (+0, y) == +0 for y != 0. */
|
2674 |
|
|
TEST_ff_f (fmod, 0, 3, 0);
|
2675 |
|
|
|
2676 |
|
|
/* fmod (-0, y) == -0 for y != 0. */
|
2677 |
|
|
TEST_ff_f (fmod, minus_zero, 3, minus_zero);
|
2678 |
|
|
|
2679 |
|
|
/* fmod (+inf, y) == NaN plus invalid exception. */
|
2680 |
|
|
TEST_ff_f (fmod, plus_infty, 3, nan_value, INVALID_EXCEPTION);
|
2681 |
|
|
/* fmod (-inf, y) == NaN plus invalid exception. */
|
2682 |
|
|
TEST_ff_f (fmod, minus_infty, 3, nan_value, INVALID_EXCEPTION);
|
2683 |
|
|
/* fmod (x, +0) == NaN plus invalid exception. */
|
2684 |
|
|
TEST_ff_f (fmod, 3, 0, nan_value, INVALID_EXCEPTION);
|
2685 |
|
|
/* fmod (x, -0) == NaN plus invalid exception. */
|
2686 |
|
|
TEST_ff_f (fmod, 3, minus_zero, nan_value, INVALID_EXCEPTION);
|
2687 |
|
|
|
2688 |
|
|
/* fmod (x, +inf) == x for x not infinite. */
|
2689 |
|
|
TEST_ff_f (fmod, 3.0, plus_infty, 3.0);
|
2690 |
|
|
/* fmod (x, -inf) == x for x not infinite. */
|
2691 |
|
|
TEST_ff_f (fmod, 3.0, minus_infty, 3.0);
|
2692 |
|
|
|
2693 |
|
|
TEST_ff_f (fmod, nan_value, nan_value, nan_value);
|
2694 |
|
|
|
2695 |
|
|
TEST_ff_f (fmod, 6.5, 2.3L, 1.9L);
|
2696 |
|
|
TEST_ff_f (fmod, -6.5, 2.3L, -1.9L);
|
2697 |
|
|
TEST_ff_f (fmod, 6.5, -2.3L, 1.9L);
|
2698 |
|
|
TEST_ff_f (fmod, -6.5, -2.3L, -1.9L);
|
2699 |
|
|
|
2700 |
|
|
END (fmod);
|
2701 |
|
|
}
|
2702 |
|
|
|
2703 |
|
|
static void
|
2704 |
|
|
fpclassify_test (void)
|
2705 |
|
|
{
|
2706 |
|
|
START (fpclassify);
|
2707 |
|
|
|
2708 |
|
|
TEST_f_i (fpclassify, nan_value, FP_NAN);
|
2709 |
|
|
TEST_f_i (fpclassify, plus_infty, FP_INFINITE);
|
2710 |
|
|
TEST_f_i (fpclassify, minus_infty, FP_INFINITE);
|
2711 |
|
|
TEST_f_i (fpclassify, plus_zero, FP_ZERO);
|
2712 |
|
|
TEST_f_i (fpclassify, minus_zero, FP_ZERO);
|
2713 |
|
|
TEST_f_i (fpclassify, 1000, FP_NORMAL);
|
2714 |
|
|
|
2715 |
|
|
END (fpclassify);
|
2716 |
|
|
}
|
2717 |
|
|
|
2718 |
|
|
|
2719 |
|
|
static void
|
2720 |
|
|
frexp_test (void)
|
2721 |
|
|
{
|
2722 |
|
|
int x;
|
2723 |
|
|
|
2724 |
|
|
START (frexp);
|
2725 |
|
|
|
2726 |
|
|
TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE);
|
2727 |
|
|
TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE);
|
2728 |
|
|
TEST_fI_f1 (frexp, nan_value, nan_value, IGNORE);
|
2729 |
|
|
|
2730 |
|
|
TEST_fI_f1 (frexp, 0.0, 0.0, 0.0);
|
2731 |
|
|
TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0);
|
2732 |
|
|
|
2733 |
|
|
TEST_fI_f1 (frexp, 12.8L, 0.8L, 4);
|
2734 |
|
|
TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5);
|
2735 |
|
|
|
2736 |
|
|
END (frexp);
|
2737 |
|
|
}
|
2738 |
|
|
|
2739 |
|
|
|
2740 |
|
|
static void
|
2741 |
|
|
gamma_test (void)
|
2742 |
|
|
{
|
2743 |
|
|
errno = 0;
|
2744 |
|
|
FUNC(gamma) (1);
|
2745 |
|
|
|
2746 |
|
|
if (errno == ENOSYS)
|
2747 |
|
|
/* Function not implemented. */
|
2748 |
|
|
return;
|
2749 |
|
|
feclearexcept (FE_ALL_EXCEPT);
|
2750 |
|
|
|
2751 |
|
|
START (gamma);
|
2752 |
|
|
|
2753 |
|
|
TEST_f_f (gamma, plus_infty, plus_infty);
|
2754 |
|
|
TEST_f_f (gamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
2755 |
|
|
TEST_f_f (gamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
2756 |
|
|
TEST_f_f (gamma, minus_infty, plus_infty);
|
2757 |
|
|
TEST_f_f (gamma, nan_value, nan_value);
|
2758 |
|
|
|
2759 |
|
|
TEST_f_f1 (gamma, 1, 0, 1);
|
2760 |
|
|
TEST_f_f1 (gamma, 3, M_LN2l, 1);
|
2761 |
|
|
|
2762 |
|
|
TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1);
|
2763 |
|
|
TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1);
|
2764 |
|
|
|
2765 |
|
|
END (gamma);
|
2766 |
|
|
}
|
2767 |
|
|
|
2768 |
|
|
static void
|
2769 |
|
|
hypot_test (void)
|
2770 |
|
|
{
|
2771 |
|
|
errno = 0;
|
2772 |
|
|
FUNC(hypot) (0.7L, 12.4L);
|
2773 |
|
|
if (errno == ENOSYS)
|
2774 |
|
|
/* Function not implemented. */
|
2775 |
|
|
return;
|
2776 |
|
|
|
2777 |
|
|
START (hypot);
|
2778 |
|
|
|
2779 |
|
|
TEST_ff_f (hypot, plus_infty, 1, plus_infty, IGNORE_ZERO_INF_SIGN);
|
2780 |
|
|
TEST_ff_f (hypot, minus_infty, 1, plus_infty, IGNORE_ZERO_INF_SIGN);
|
2781 |
|
|
|
2782 |
|
|
#ifndef TEST_INLINE
|
2783 |
|
|
TEST_ff_f (hypot, plus_infty, nan_value, plus_infty);
|
2784 |
|
|
TEST_ff_f (hypot, minus_infty, nan_value, plus_infty);
|
2785 |
|
|
TEST_ff_f (hypot, nan_value, plus_infty, plus_infty);
|
2786 |
|
|
TEST_ff_f (hypot, nan_value, minus_infty, plus_infty);
|
2787 |
|
|
#endif
|
2788 |
|
|
|
2789 |
|
|
TEST_ff_f (hypot, nan_value, nan_value, nan_value);
|
2790 |
|
|
|
2791 |
|
|
/* hypot (x,y) == hypot (+-x, +-y) */
|
2792 |
|
|
TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L);
|
2793 |
|
|
TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L);
|
2794 |
|
|
TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L);
|
2795 |
|
|
TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L);
|
2796 |
|
|
TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L);
|
2797 |
|
|
TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L);
|
2798 |
|
|
TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L);
|
2799 |
|
|
TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L);
|
2800 |
|
|
|
2801 |
|
|
/* hypot (x,0) == fabs (x) */
|
2802 |
|
|
TEST_ff_f (hypot, 0.7L, 0, 0.7L);
|
2803 |
|
|
TEST_ff_f (hypot, -0.7L, 0, 0.7L);
|
2804 |
|
|
TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L);
|
2805 |
|
|
|
2806 |
|
|
TEST_ff_f (hypot, 0.7L, 1.2L, 1.3892443989449804508432547041028554L);
|
2807 |
|
|
|
2808 |
|
|
END (hypot);
|
2809 |
|
|
}
|
2810 |
|
|
|
2811 |
|
|
|
2812 |
|
|
static void
|
2813 |
|
|
ilogb_test (void)
|
2814 |
|
|
{
|
2815 |
|
|
START (ilogb);
|
2816 |
|
|
|
2817 |
|
|
TEST_f_i (ilogb, 1, 0);
|
2818 |
|
|
TEST_f_i (ilogb, M_El, 1);
|
2819 |
|
|
TEST_f_i (ilogb, 1024, 10);
|
2820 |
|
|
TEST_f_i (ilogb, -2000, 10);
|
2821 |
|
|
|
2822 |
|
|
/* XXX We have a problem here: the standard does not tell us whether
|
2823 |
|
|
exceptions are allowed/required. ignore them for now. */
|
2824 |
|
|
|
2825 |
|
|
TEST_f_i (ilogb, 0.0, FP_ILOGB0, EXCEPTIONS_OK);
|
2826 |
|
|
TEST_f_i (ilogb, nan_value, FP_ILOGBNAN, EXCEPTIONS_OK);
|
2827 |
|
|
TEST_f_i (ilogb, plus_infty, INT_MAX, EXCEPTIONS_OK);
|
2828 |
|
|
TEST_f_i (ilogb, minus_infty, INT_MAX, EXCEPTIONS_OK);
|
2829 |
|
|
|
2830 |
|
|
END (ilogb);
|
2831 |
|
|
}
|
2832 |
|
|
|
2833 |
|
|
static void
|
2834 |
|
|
isfinite_test (void)
|
2835 |
|
|
{
|
2836 |
|
|
START (isfinite);
|
2837 |
|
|
|
2838 |
|
|
TEST_f_b (isfinite, 0, 1);
|
2839 |
|
|
TEST_f_b (isfinite, minus_zero, 1);
|
2840 |
|
|
TEST_f_b (isfinite, 10, 1);
|
2841 |
|
|
TEST_f_b (isfinite, plus_infty, 0);
|
2842 |
|
|
TEST_f_b (isfinite, minus_infty, 0);
|
2843 |
|
|
TEST_f_b (isfinite, nan_value, 0);
|
2844 |
|
|
|
2845 |
|
|
END (isfinite);
|
2846 |
|
|
}
|
2847 |
|
|
|
2848 |
|
|
static void
|
2849 |
|
|
isnormal_test (void)
|
2850 |
|
|
{
|
2851 |
|
|
START (isnormal);
|
2852 |
|
|
|
2853 |
|
|
TEST_f_b (isnormal, 0, 0);
|
2854 |
|
|
TEST_f_b (isnormal, minus_zero, 0);
|
2855 |
|
|
TEST_f_b (isnormal, 10, 1);
|
2856 |
|
|
TEST_f_b (isnormal, plus_infty, 0);
|
2857 |
|
|
TEST_f_b (isnormal, minus_infty, 0);
|
2858 |
|
|
TEST_f_b (isnormal, nan_value, 0);
|
2859 |
|
|
|
2860 |
|
|
END (isnormal);
|
2861 |
|
|
}
|
2862 |
|
|
|
2863 |
|
|
static void
|
2864 |
|
|
j0_test (void)
|
2865 |
|
|
{
|
2866 |
|
|
errno = 0;
|
2867 |
|
|
#if 0
|
2868 |
|
|
FLOAT s, c;
|
2869 |
|
|
FUNC (sincos) (0, &s, &c);
|
2870 |
|
|
if (errno == ENOSYS)
|
2871 |
|
|
/* Required function not implemented. */
|
2872 |
|
|
return;
|
2873 |
|
|
#endif
|
2874 |
|
|
FUNC(j0) (0);
|
2875 |
|
|
if (errno == ENOSYS)
|
2876 |
|
|
/* Function not implemented. */
|
2877 |
|
|
return;
|
2878 |
|
|
|
2879 |
|
|
START (j0);
|
2880 |
|
|
|
2881 |
|
|
/* j0 is the Bessel function of the first kind of order 0 */
|
2882 |
|
|
TEST_f_f (j0, nan_value, nan_value);
|
2883 |
|
|
TEST_f_f (j0, plus_infty, 0);
|
2884 |
|
|
TEST_f_f (j0, -1.0, 0.76519768655796655145L);
|
2885 |
|
|
TEST_f_f (j0, 0.0, 1.0);
|
2886 |
|
|
TEST_f_f (j0, 0.1L, 0.99750156206604003228L);
|
2887 |
|
|
TEST_f_f (j0, 0.7L, 0.88120088860740528084L);
|
2888 |
|
|
TEST_f_f (j0, 1.0, 0.76519768655796655145L);
|
2889 |
|
|
TEST_f_f (j0, 1.5, 0.51182767173591812875L);
|
2890 |
|
|
TEST_f_f (j0, 2.0, 0.22389077914123566805L);
|
2891 |
|
|
TEST_f_f (j0, 8.0, 0.17165080713755390609L);
|
2892 |
|
|
TEST_f_f (j0, 10.0, -0.24593576445134833520L);
|
2893 |
|
|
TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L);
|
2894 |
|
|
TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L);
|
2895 |
|
|
|
2896 |
|
|
END (j0);
|
2897 |
|
|
}
|
2898 |
|
|
|
2899 |
|
|
|
2900 |
|
|
static void
|
2901 |
|
|
j1_test (void)
|
2902 |
|
|
{
|
2903 |
|
|
errno = 0;
|
2904 |
|
|
#if 0
|
2905 |
|
|
FLOAT s, c;
|
2906 |
|
|
FUNC (sincos) (0, &s, &c);
|
2907 |
|
|
if (errno == ENOSYS)
|
2908 |
|
|
/* Required function not implemented. */
|
2909 |
|
|
return;
|
2910 |
|
|
#endif
|
2911 |
|
|
FUNC(j1) (0);
|
2912 |
|
|
if (errno == ENOSYS)
|
2913 |
|
|
/* Function not implemented. */
|
2914 |
|
|
return;
|
2915 |
|
|
|
2916 |
|
|
/* j1 is the Bessel function of the first kind of order 1 */
|
2917 |
|
|
|
2918 |
|
|
START (j1);
|
2919 |
|
|
|
2920 |
|
|
TEST_f_f (j1, nan_value, nan_value);
|
2921 |
|
|
TEST_f_f (j1, plus_infty, 0);
|
2922 |
|
|
|
2923 |
|
|
TEST_f_f (j1, -1.0, -0.44005058574493351596L);
|
2924 |
|
|
TEST_f_f (j1, 0.0, 0.0);
|
2925 |
|
|
TEST_f_f (j1, 0.1L, 0.049937526036241997556L);
|
2926 |
|
|
TEST_f_f (j1, 0.7L, 0.32899574154005894785L);
|
2927 |
|
|
TEST_f_f (j1, 1.0, 0.44005058574493351596L);
|
2928 |
|
|
TEST_f_f (j1, 1.5, 0.55793650791009964199L);
|
2929 |
|
|
TEST_f_f (j1, 2.0, 0.57672480775687338720L);
|
2930 |
|
|
TEST_f_f (j1, 8.0, 0.23463634685391462438L);
|
2931 |
|
|
TEST_f_f (j1, 10.0, 0.043472746168861436670L);
|
2932 |
|
|
|
2933 |
|
|
END (j1);
|
2934 |
|
|
}
|
2935 |
|
|
|
2936 |
|
|
static void
|
2937 |
|
|
jn_test (void)
|
2938 |
|
|
{
|
2939 |
|
|
errno = 0;
|
2940 |
|
|
#if 0
|
2941 |
|
|
FLOAT s, c;
|
2942 |
|
|
FUNC (sincos) (0, &s, &c);
|
2943 |
|
|
if (errno == ENOSYS)
|
2944 |
|
|
/* Required function not implemented. */
|
2945 |
|
|
return;
|
2946 |
|
|
#endif
|
2947 |
|
|
FUNC(jn) (1, 1);
|
2948 |
|
|
if (errno == ENOSYS)
|
2949 |
|
|
/* Function not implemented. */
|
2950 |
|
|
return;
|
2951 |
|
|
|
2952 |
|
|
/* jn is the Bessel function of the first kind of order n. */
|
2953 |
|
|
START (jn);
|
2954 |
|
|
|
2955 |
|
|
/* jn (0, x) == j0 (x) */
|
2956 |
|
|
TEST_ff_f (jn, 0, nan_value, nan_value);
|
2957 |
|
|
TEST_ff_f (jn, 0, plus_infty, 0);
|
2958 |
|
|
TEST_ff_f (jn, 0, -1.0, 0.76519768655796655145L);
|
2959 |
|
|
TEST_ff_f (jn, 0, 0.0, 1.0);
|
2960 |
|
|
TEST_ff_f (jn, 0, 0.1L, 0.99750156206604003228L);
|
2961 |
|
|
TEST_ff_f (jn, 0, 0.7L, 0.88120088860740528084L);
|
2962 |
|
|
TEST_ff_f (jn, 0, 1.0, 0.76519768655796655145L);
|
2963 |
|
|
TEST_ff_f (jn, 0, 1.5, 0.51182767173591812875L);
|
2964 |
|
|
TEST_ff_f (jn, 0, 2.0, 0.22389077914123566805L);
|
2965 |
|
|
TEST_ff_f (jn, 0, 8.0, 0.17165080713755390609L);
|
2966 |
|
|
TEST_ff_f (jn, 0, 10.0, -0.24593576445134833520L);
|
2967 |
|
|
|
2968 |
|
|
/* jn (1, x) == j1 (x) */
|
2969 |
|
|
TEST_ff_f (jn, 1, nan_value, nan_value);
|
2970 |
|
|
TEST_ff_f (jn, 1, plus_infty, 0);
|
2971 |
|
|
|
2972 |
|
|
TEST_ff_f (jn, 1, -1.0, -0.44005058574493351596L);
|
2973 |
|
|
TEST_ff_f (jn, 1, 0.0, 0.0);
|
2974 |
|
|
TEST_ff_f (jn, 1, 0.1L, 0.049937526036241997556L);
|
2975 |
|
|
TEST_ff_f (jn, 1, 0.7L, 0.32899574154005894785L);
|
2976 |
|
|
TEST_ff_f (jn, 1, 1.0, 0.44005058574493351596L);
|
2977 |
|
|
TEST_ff_f (jn, 1, 1.5, 0.55793650791009964199L);
|
2978 |
|
|
TEST_ff_f (jn, 1, 2.0, 0.57672480775687338720L);
|
2979 |
|
|
TEST_ff_f (jn, 1, 8.0, 0.23463634685391462438L);
|
2980 |
|
|
TEST_ff_f (jn, 1, 10.0, 0.043472746168861436670L);
|
2981 |
|
|
|
2982 |
|
|
/* jn (3, x) */
|
2983 |
|
|
TEST_ff_f (jn, 3, nan_value, nan_value);
|
2984 |
|
|
TEST_ff_f (jn, 3, plus_infty, 0);
|
2985 |
|
|
|
2986 |
|
|
TEST_ff_f (jn, 3, -1.0, -0.019563353982668405919L);
|
2987 |
|
|
TEST_ff_f (jn, 3, 0.0, 0.0);
|
2988 |
|
|
TEST_ff_f (jn, 3, 0.1L, 0.000020820315754756261429L);
|
2989 |
|
|
TEST_ff_f (jn, 3, 0.7L, 0.0069296548267508408077L);
|
2990 |
|
|
TEST_ff_f (jn, 3, 1.0, 0.019563353982668405919L);
|
2991 |
|
|
TEST_ff_f (jn, 3, 2.0, 0.12894324947440205110L);
|
2992 |
|
|
TEST_ff_f (jn, 3, 10.0, 0.058379379305186812343L);
|
2993 |
|
|
|
2994 |
|
|
/* jn (10, x) */
|
2995 |
|
|
TEST_ff_f (jn, 10, nan_value, nan_value);
|
2996 |
|
|
TEST_ff_f (jn, 10, plus_infty, 0);
|
2997 |
|
|
|
2998 |
|
|
TEST_ff_f (jn, 10, -1.0, 0.26306151236874532070e-9L);
|
2999 |
|
|
TEST_ff_f (jn, 10, 0.0, 0.0);
|
3000 |
|
|
TEST_ff_f (jn, 10, 0.1L, 0.26905328954342155795e-19L);
|
3001 |
|
|
TEST_ff_f (jn, 10, 0.7L, 0.75175911502153953928e-11L);
|
3002 |
|
|
TEST_ff_f (jn, 10, 1.0, 0.26306151236874532070e-9L);
|
3003 |
|
|
TEST_ff_f (jn, 10, 2.0, 0.25153862827167367096e-6L);
|
3004 |
|
|
TEST_ff_f (jn, 10, 10.0, 0.20748610663335885770L);
|
3005 |
|
|
|
3006 |
|
|
END (jn);
|
3007 |
|
|
}
|
3008 |
|
|
|
3009 |
|
|
|
3010 |
|
|
static void
|
3011 |
|
|
ldexp_test (void)
|
3012 |
|
|
{
|
3013 |
|
|
TEST_ff_f (ldexp, 0, 0, 0);
|
3014 |
|
|
TEST_ff_f (ldexp, minus_zero, 0, minus_zero);
|
3015 |
|
|
|
3016 |
|
|
TEST_ff_f (ldexp, plus_infty, 1, plus_infty);
|
3017 |
|
|
TEST_ff_f (ldexp, minus_infty, 1, minus_infty);
|
3018 |
|
|
TEST_ff_f (ldexp, nan_value, 1, nan_value);
|
3019 |
|
|
|
3020 |
|
|
TEST_ff_f (ldexp, 0.8L, 4, 12.8L);
|
3021 |
|
|
TEST_ff_f (ldexp, -0.854375L, 5, -27.34L);
|
3022 |
|
|
|
3023 |
|
|
/* ldexp (x, 0) == x. */
|
3024 |
|
|
TEST_ff_f (ldexp, 1.0L, 0L, 1.0L);
|
3025 |
|
|
}
|
3026 |
|
|
|
3027 |
|
|
static void
|
3028 |
|
|
lgamma_test (void)
|
3029 |
|
|
{
|
3030 |
|
|
errno = 0;
|
3031 |
|
|
FUNC(lgamma) (0);
|
3032 |
|
|
if (errno == ENOSYS)
|
3033 |
|
|
/* Function not implemented. */
|
3034 |
|
|
return;
|
3035 |
|
|
feclearexcept (FE_ALL_EXCEPT);
|
3036 |
|
|
|
3037 |
|
|
START (lgamma);
|
3038 |
|
|
|
3039 |
|
|
TEST_f_f (lgamma, plus_infty, plus_infty);
|
3040 |
|
|
TEST_f_f (lgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3041 |
|
|
TEST_f_f (lgamma, nan_value, nan_value);
|
3042 |
|
|
|
3043 |
|
|
/* lgamma (x) == +inf plus divide by zero exception for integer x <= 0. */
|
3044 |
|
|
TEST_f_f (lgamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3045 |
|
|
TEST_f_f (lgamma, minus_infty, plus_infty);
|
3046 |
|
|
|
3047 |
|
|
TEST_f_f1 (lgamma, 1, 0, 1);
|
3048 |
|
|
|
3049 |
|
|
TEST_f_f1 (lgamma, 3, M_LN2l, 1);
|
3050 |
|
|
|
3051 |
|
|
TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
|
3052 |
|
|
TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
|
3053 |
|
|
TEST_f_f1 (lgamma, 0.7L, 0.26086724653166651439L, 1);
|
3054 |
|
|
TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197e-1L, 1);
|
3055 |
|
|
|
3056 |
|
|
END (lgamma);
|
3057 |
|
|
}
|
3058 |
|
|
|
3059 |
|
|
#if 0
|
3060 |
|
|
static void
|
3061 |
|
|
lrint_test (void)
|
3062 |
|
|
{
|
3063 |
|
|
/* XXX this test is incomplete. We need to have a way to specifiy
|
3064 |
|
|
the rounding method and test the critical cases. So far, only
|
3065 |
|
|
unproblematic numbers are tested. */
|
3066 |
|
|
|
3067 |
|
|
START (lrint);
|
3068 |
|
|
|
3069 |
|
|
TEST_f_l (lrint, 0.0, 0);
|
3070 |
|
|
TEST_f_l (lrint, minus_zero, 0);
|
3071 |
|
|
TEST_f_l (lrint, 0.2L, 0);
|
3072 |
|
|
TEST_f_l (lrint, -0.2L, 0);
|
3073 |
|
|
|
3074 |
|
|
TEST_f_l (lrint, 1.4L, 1);
|
3075 |
|
|
TEST_f_l (lrint, -1.4L, -1);
|
3076 |
|
|
|
3077 |
|
|
TEST_f_l (lrint, 8388600.3L, 8388600);
|
3078 |
|
|
TEST_f_l (lrint, -8388600.3L, -8388600);
|
3079 |
|
|
|
3080 |
|
|
END (lrint);
|
3081 |
|
|
}
|
3082 |
|
|
|
3083 |
|
|
static void
|
3084 |
|
|
llrint_test (void)
|
3085 |
|
|
{
|
3086 |
|
|
/* XXX this test is incomplete. We need to have a way to specifiy
|
3087 |
|
|
the rounding method and test the critical cases. So far, only
|
3088 |
|
|
unproblematic numbers are tested. */
|
3089 |
|
|
|
3090 |
|
|
START (llrint);
|
3091 |
|
|
|
3092 |
|
|
TEST_f_L (llrint, 0.0, 0);
|
3093 |
|
|
TEST_f_L (llrint, minus_zero, 0);
|
3094 |
|
|
TEST_f_L (llrint, 0.2L, 0);
|
3095 |
|
|
TEST_f_L (llrint, -0.2L, 0);
|
3096 |
|
|
|
3097 |
|
|
TEST_f_L (llrint, 1.4L, 1);
|
3098 |
|
|
TEST_f_L (llrint, -1.4L, -1);
|
3099 |
|
|
|
3100 |
|
|
TEST_f_L (llrint, 8388600.3L, 8388600);
|
3101 |
|
|
TEST_f_L (llrint, -8388600.3L, -8388600);
|
3102 |
|
|
|
3103 |
|
|
/* Test boundary conditions. */
|
3104 |
|
|
/* 0x1FFFFF */
|
3105 |
|
|
TEST_f_L (llrint, 2097151.0,2097151LL);
|
3106 |
|
|
/* 0x800000 */
|
3107 |
|
|
TEST_f_L (llrint, 8388608.0, 8388608LL);
|
3108 |
|
|
/* 0x1000000 */
|
3109 |
|
|
TEST_f_L (llrint, 16777216.0, 16777216LL);
|
3110 |
|
|
/* 0x20000000000 */
|
3111 |
|
|
TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
|
3112 |
|
|
/* 0x40000000000 */
|
3113 |
|
|
TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
|
3114 |
|
|
/* 0x10000000000000 */
|
3115 |
|
|
TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
|
3116 |
|
|
/* 0x10000080000000 */
|
3117 |
|
|
TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
|
3118 |
|
|
/* 0x20000000000000 */
|
3119 |
|
|
TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
|
3120 |
|
|
/* 0x80000000000000 */
|
3121 |
|
|
TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
|
3122 |
|
|
/* 0x100000000000000 */
|
3123 |
|
|
TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
|
3124 |
|
|
|
3125 |
|
|
END (llrint);
|
3126 |
|
|
}
|
3127 |
|
|
#endif
|
3128 |
|
|
|
3129 |
|
|
static void
|
3130 |
|
|
log_test (void)
|
3131 |
|
|
{
|
3132 |
|
|
errno = 0;
|
3133 |
|
|
FUNC(log) (1);
|
3134 |
|
|
if (errno == ENOSYS)
|
3135 |
|
|
/* Function not implemented. */
|
3136 |
|
|
return;
|
3137 |
|
|
START (log);
|
3138 |
|
|
|
3139 |
|
|
TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3140 |
|
|
TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3141 |
|
|
|
3142 |
|
|
TEST_f_f (log, 1, 0);
|
3143 |
|
|
|
3144 |
|
|
TEST_f_f (log, -1, nan_value, INVALID_EXCEPTION);
|
3145 |
|
|
TEST_f_f (log, plus_infty, plus_infty);
|
3146 |
|
|
|
3147 |
|
|
TEST_f_f (log, M_El, 1);
|
3148 |
|
|
TEST_f_f (log, 1.0 / M_El, -1);
|
3149 |
|
|
TEST_f_f (log, 2, M_LN2l);
|
3150 |
|
|
TEST_f_f (log, 10, M_LN10l);
|
3151 |
|
|
TEST_f_f (log, 0.7L, -0.35667494393873237891263871124118447L);
|
3152 |
|
|
|
3153 |
|
|
END (log);
|
3154 |
|
|
}
|
3155 |
|
|
|
3156 |
|
|
|
3157 |
|
|
static void
|
3158 |
|
|
log10_test (void)
|
3159 |
|
|
{
|
3160 |
|
|
errno = 0;
|
3161 |
|
|
FUNC(log10) (1);
|
3162 |
|
|
if (errno == ENOSYS)
|
3163 |
|
|
/* Function not implemented. */
|
3164 |
|
|
return;
|
3165 |
|
|
|
3166 |
|
|
START (log10);
|
3167 |
|
|
|
3168 |
|
|
TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3169 |
|
|
TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3170 |
|
|
|
3171 |
|
|
TEST_f_f (log10, 1, 0);
|
3172 |
|
|
|
3173 |
|
|
/* log10 (x) == NaN plus invalid exception if x < 0. */
|
3174 |
|
|
TEST_f_f (log10, -1, nan_value, INVALID_EXCEPTION);
|
3175 |
|
|
|
3176 |
|
|
TEST_f_f (log10, plus_infty, plus_infty);
|
3177 |
|
|
TEST_f_f (log10, nan_value, nan_value);
|
3178 |
|
|
|
3179 |
|
|
TEST_f_f (log10, 0.1L, -1);
|
3180 |
|
|
TEST_f_f (log10, 10.0, 1);
|
3181 |
|
|
TEST_f_f (log10, 100.0, 2);
|
3182 |
|
|
TEST_f_f (log10, 10000.0, 4);
|
3183 |
|
|
TEST_f_f (log10, M_El, M_LOG10El);
|
3184 |
|
|
TEST_f_f (log10, 0.7L, -0.15490195998574316929L);
|
3185 |
|
|
|
3186 |
|
|
END (log10);
|
3187 |
|
|
}
|
3188 |
|
|
|
3189 |
|
|
|
3190 |
|
|
static void
|
3191 |
|
|
log1p_test (void)
|
3192 |
|
|
{
|
3193 |
|
|
errno = 0;
|
3194 |
|
|
FUNC(log1p) (0);
|
3195 |
|
|
if (errno == ENOSYS)
|
3196 |
|
|
/* Function not implemented. */
|
3197 |
|
|
return;
|
3198 |
|
|
|
3199 |
|
|
START (log1p);
|
3200 |
|
|
|
3201 |
|
|
TEST_f_f (log1p, 0, 0);
|
3202 |
|
|
TEST_f_f (log1p, minus_zero, minus_zero);
|
3203 |
|
|
|
3204 |
|
|
TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3205 |
|
|
TEST_f_f (log1p, -2, nan_value, INVALID_EXCEPTION);
|
3206 |
|
|
|
3207 |
|
|
TEST_f_f (log1p, plus_infty, plus_infty);
|
3208 |
|
|
TEST_f_f (log1p, nan_value, nan_value);
|
3209 |
|
|
|
3210 |
|
|
TEST_f_f (log1p, M_El - 1.0, 1);
|
3211 |
|
|
|
3212 |
|
|
TEST_f_f (log1p, -0.3L, -0.35667494393873237891263871124118447L);
|
3213 |
|
|
|
3214 |
|
|
END (log1p);
|
3215 |
|
|
}
|
3216 |
|
|
|
3217 |
|
|
#if 0
|
3218 |
|
|
static void
|
3219 |
|
|
log2_test (void)
|
3220 |
|
|
{
|
3221 |
|
|
errno = 0;
|
3222 |
|
|
FUNC(log2) (1);
|
3223 |
|
|
if (errno == ENOSYS)
|
3224 |
|
|
/* Function not implemented. */
|
3225 |
|
|
return;
|
3226 |
|
|
|
3227 |
|
|
START (log2);
|
3228 |
|
|
|
3229 |
|
|
TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3230 |
|
|
TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3231 |
|
|
|
3232 |
|
|
TEST_f_f (log2, 1, 0);
|
3233 |
|
|
|
3234 |
|
|
TEST_f_f (log2, -1, nan_value, INVALID_EXCEPTION);
|
3235 |
|
|
|
3236 |
|
|
TEST_f_f (log2, plus_infty, plus_infty);
|
3237 |
|
|
TEST_f_f (log2, nan_value, nan_value);
|
3238 |
|
|
|
3239 |
|
|
TEST_f_f (log2, M_El, M_LOG2El);
|
3240 |
|
|
TEST_f_f (log2, 2.0, 1);
|
3241 |
|
|
TEST_f_f (log2, 16.0, 4);
|
3242 |
|
|
TEST_f_f (log2, 256.0, 8);
|
3243 |
|
|
TEST_f_f (log2, 0.7L, -0.51457317282975824043L);
|
3244 |
|
|
|
3245 |
|
|
END (log2);
|
3246 |
|
|
}
|
3247 |
|
|
#endif
|
3248 |
|
|
|
3249 |
|
|
|
3250 |
|
|
static void
|
3251 |
|
|
logb_test (void)
|
3252 |
|
|
{
|
3253 |
|
|
START (logb);
|
3254 |
|
|
|
3255 |
|
|
TEST_f_f (logb, plus_infty, plus_infty);
|
3256 |
|
|
TEST_f_f (logb, minus_infty, plus_infty);
|
3257 |
|
|
|
3258 |
|
|
TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3259 |
|
|
|
3260 |
|
|
TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3261 |
|
|
TEST_f_f (logb, nan_value, nan_value);
|
3262 |
|
|
|
3263 |
|
|
TEST_f_f (logb, 1, 0);
|
3264 |
|
|
TEST_f_f (logb, M_El, 1);
|
3265 |
|
|
TEST_f_f (logb, 1024, 10);
|
3266 |
|
|
TEST_f_f (logb, -2000, 10);
|
3267 |
|
|
|
3268 |
|
|
END (logb);
|
3269 |
|
|
}
|
3270 |
|
|
|
3271 |
|
|
#if 0
|
3272 |
|
|
static void
|
3273 |
|
|
lround_test (void)
|
3274 |
|
|
{
|
3275 |
|
|
START (lround);
|
3276 |
|
|
|
3277 |
|
|
TEST_f_l (lround, 0, 0);
|
3278 |
|
|
TEST_f_l (lround, minus_zero, 0);
|
3279 |
|
|
TEST_f_l (lround, 0.2L, 0.0);
|
3280 |
|
|
TEST_f_l (lround, -0.2L, 0);
|
3281 |
|
|
TEST_f_l (lround, 0.5, 1);
|
3282 |
|
|
TEST_f_l (lround, -0.5, -1);
|
3283 |
|
|
TEST_f_l (lround, 0.8L, 1);
|
3284 |
|
|
TEST_f_l (lround, -0.8L, -1);
|
3285 |
|
|
TEST_f_l (lround, 1.5, 2);
|
3286 |
|
|
TEST_f_l (lround, -1.5, -2);
|
3287 |
|
|
TEST_f_l (lround, 22514.5, 22515);
|
3288 |
|
|
TEST_f_l (lround, -22514.5, -22515);
|
3289 |
|
|
#ifndef TEST_FLOAT
|
3290 |
|
|
TEST_f_l (lround, 2097152.5, 2097153);
|
3291 |
|
|
TEST_f_l (lround, -2097152.5, -2097153);
|
3292 |
|
|
#endif
|
3293 |
|
|
END (lround);
|
3294 |
|
|
}
|
3295 |
|
|
|
3296 |
|
|
|
3297 |
|
|
static void
|
3298 |
|
|
llround_test (void)
|
3299 |
|
|
{
|
3300 |
|
|
START (llround);
|
3301 |
|
|
|
3302 |
|
|
TEST_f_L (llround, 0, 0);
|
3303 |
|
|
TEST_f_L (llround, minus_zero, 0);
|
3304 |
|
|
TEST_f_L (llround, 0.2L, 0.0);
|
3305 |
|
|
TEST_f_L (llround, -0.2L, 0);
|
3306 |
|
|
TEST_f_L (llround, 0.5, 1);
|
3307 |
|
|
TEST_f_L (llround, -0.5, -1);
|
3308 |
|
|
TEST_f_L (llround, 0.8L, 1);
|
3309 |
|
|
TEST_f_L (llround, -0.8L, -1);
|
3310 |
|
|
TEST_f_L (llround, 1.5, 2);
|
3311 |
|
|
TEST_f_L (llround, -1.5, -2);
|
3312 |
|
|
TEST_f_L (llround, 22514.5, 22515);
|
3313 |
|
|
TEST_f_L (llround, -22514.5, -22515);
|
3314 |
|
|
#ifndef TEST_FLOAT
|
3315 |
|
|
TEST_f_L (llround, 2097152.5, 2097153);
|
3316 |
|
|
TEST_f_L (llround, -2097152.5, -2097153);
|
3317 |
|
|
TEST_f_L (llround, 34359738368.5, 34359738369ll);
|
3318 |
|
|
TEST_f_L (llround, -34359738368.5, -34359738369ll);
|
3319 |
|
|
#endif
|
3320 |
|
|
|
3321 |
|
|
/* Test boundary conditions. */
|
3322 |
|
|
/* 0x1FFFFF */
|
3323 |
|
|
TEST_f_L (llround, 2097151.0, 2097151LL);
|
3324 |
|
|
/* 0x800000 */
|
3325 |
|
|
TEST_f_L (llround, 8388608.0, 8388608LL);
|
3326 |
|
|
/* 0x1000000 */
|
3327 |
|
|
TEST_f_L (llround, 16777216.0, 16777216LL);
|
3328 |
|
|
/* 0x20000000000 */
|
3329 |
|
|
TEST_f_L (llround, 2199023255552.0, 2199023255552LL);
|
3330 |
|
|
/* 0x40000000000 */
|
3331 |
|
|
TEST_f_L (llround, 4398046511104.0, 4398046511104LL);
|
3332 |
|
|
/* 0x10000000000000 */
|
3333 |
|
|
TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL);
|
3334 |
|
|
/* 0x10000080000000 */
|
3335 |
|
|
TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
|
3336 |
|
|
/* 0x20000000000000 */
|
3337 |
|
|
TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL);
|
3338 |
|
|
/* 0x80000000000000 */
|
3339 |
|
|
TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL);
|
3340 |
|
|
/* 0x100000000000000 */
|
3341 |
|
|
TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL);
|
3342 |
|
|
|
3343 |
|
|
#ifndef TEST_FLOAT
|
3344 |
|
|
/* 0x100000000 */
|
3345 |
|
|
TEST_f_L (llround, 4294967295.5, 4294967296LL);
|
3346 |
|
|
/* 0x200000000 */
|
3347 |
|
|
TEST_f_L (llround, 8589934591.5, 8589934592LL);
|
3348 |
|
|
#endif
|
3349 |
|
|
|
3350 |
|
|
END (llround);
|
3351 |
|
|
}
|
3352 |
|
|
#endif
|
3353 |
|
|
|
3354 |
|
|
static void
|
3355 |
|
|
modf_test (void)
|
3356 |
|
|
{
|
3357 |
|
|
FLOAT x;
|
3358 |
|
|
|
3359 |
|
|
START (modf);
|
3360 |
|
|
|
3361 |
|
|
TEST_fF_f1 (modf, plus_infty, 0, plus_infty);
|
3362 |
|
|
TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty);
|
3363 |
|
|
TEST_fF_f1 (modf, nan_value, nan_value, nan_value);
|
3364 |
|
|
TEST_fF_f1 (modf, 0, 0, 0);
|
3365 |
|
|
TEST_fF_f1 (modf, 1.5, 0.5, 1);
|
3366 |
|
|
TEST_fF_f1 (modf, 2.5, 0.5, 2);
|
3367 |
|
|
TEST_fF_f1 (modf, -2.5, -0.5, -2);
|
3368 |
|
|
TEST_fF_f1 (modf, 20, 0, 20);
|
3369 |
|
|
TEST_fF_f1 (modf, 21, 0, 21);
|
3370 |
|
|
TEST_fF_f1 (modf, 89.5, 0.5, 89);
|
3371 |
|
|
|
3372 |
|
|
END (modf);
|
3373 |
|
|
}
|
3374 |
|
|
|
3375 |
|
|
|
3376 |
|
|
#if 0
|
3377 |
|
|
static void
|
3378 |
|
|
nearbyint_test (void)
|
3379 |
|
|
{
|
3380 |
|
|
START (nearbyint);
|
3381 |
|
|
|
3382 |
|
|
TEST_f_f (nearbyint, 0.0, 0.0);
|
3383 |
|
|
TEST_f_f (nearbyint, minus_zero, minus_zero);
|
3384 |
|
|
TEST_f_f (nearbyint, plus_infty, plus_infty);
|
3385 |
|
|
TEST_f_f (nearbyint, minus_infty, minus_infty);
|
3386 |
|
|
TEST_f_f (nearbyint, nan_value, nan_value);
|
3387 |
|
|
|
3388 |
|
|
/* Default rounding mode is round to nearest. */
|
3389 |
|
|
TEST_f_f (nearbyint, 0.5, 0.0);
|
3390 |
|
|
TEST_f_f (nearbyint, 1.5, 2.0);
|
3391 |
|
|
TEST_f_f (nearbyint, -0.5, minus_zero);
|
3392 |
|
|
TEST_f_f (nearbyint, -1.5, -2.0);
|
3393 |
|
|
|
3394 |
|
|
END (nearbyint);
|
3395 |
|
|
}
|
3396 |
|
|
|
3397 |
|
|
static void
|
3398 |
|
|
nextafter_test (void)
|
3399 |
|
|
{
|
3400 |
|
|
|
3401 |
|
|
START (nextafter);
|
3402 |
|
|
|
3403 |
|
|
TEST_ff_f (nextafter, 0, 0, 0);
|
3404 |
|
|
TEST_ff_f (nextafter, minus_zero, 0, 0);
|
3405 |
|
|
TEST_ff_f (nextafter, 0, minus_zero, minus_zero);
|
3406 |
|
|
TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero);
|
3407 |
|
|
|
3408 |
|
|
TEST_ff_f (nextafter, 9, 9, 9);
|
3409 |
|
|
TEST_ff_f (nextafter, -9, -9, -9);
|
3410 |
|
|
TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty);
|
3411 |
|
|
TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty);
|
3412 |
|
|
|
3413 |
|
|
TEST_ff_f (nextafter, nan_value, 1.1L, nan_value);
|
3414 |
|
|
TEST_ff_f (nextafter, 1.1L, nan_value, nan_value);
|
3415 |
|
|
TEST_ff_f (nextafter, nan_value, nan_value, nan_value);
|
3416 |
|
|
|
3417 |
|
|
/* XXX We need the hexadecimal FP number representation here for further
|
3418 |
|
|
tests. */
|
3419 |
|
|
|
3420 |
|
|
END (nextafter);
|
3421 |
|
|
}
|
3422 |
|
|
|
3423 |
|
|
|
3424 |
|
|
static void
|
3425 |
|
|
nexttoward_test (void)
|
3426 |
|
|
{
|
3427 |
|
|
START (nexttoward);
|
3428 |
|
|
TEST_ff_f (nexttoward, 0, 0, 0);
|
3429 |
|
|
TEST_ff_f (nexttoward, minus_zero, 0, 0);
|
3430 |
|
|
TEST_ff_f (nexttoward, 0, minus_zero, minus_zero);
|
3431 |
|
|
TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero);
|
3432 |
|
|
|
3433 |
|
|
TEST_ff_f (nexttoward, 9, 9, 9);
|
3434 |
|
|
TEST_ff_f (nexttoward, -9, -9, -9);
|
3435 |
|
|
TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty);
|
3436 |
|
|
TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty);
|
3437 |
|
|
|
3438 |
|
|
TEST_ff_f (nexttoward, nan_value, 1.1L, nan_value);
|
3439 |
|
|
TEST_ff_f (nexttoward, 1.1L, nan_value, nan_value);
|
3440 |
|
|
TEST_ff_f (nexttoward, nan_value, nan_value, nan_value);
|
3441 |
|
|
|
3442 |
|
|
/* XXX We need the hexadecimal FP number representation here for further
|
3443 |
|
|
tests. */
|
3444 |
|
|
|
3445 |
|
|
END (nexttoward);
|
3446 |
|
|
}
|
3447 |
|
|
#endif
|
3448 |
|
|
|
3449 |
|
|
static void
|
3450 |
|
|
pow_test (void)
|
3451 |
|
|
{
|
3452 |
|
|
|
3453 |
|
|
errno = 0;
|
3454 |
|
|
FUNC(pow) (0, 0);
|
3455 |
|
|
if (errno == ENOSYS)
|
3456 |
|
|
/* Function not implemented. */
|
3457 |
|
|
return;
|
3458 |
|
|
|
3459 |
|
|
START (pow);
|
3460 |
|
|
|
3461 |
|
|
TEST_ff_f (pow, 0, 0, 1);
|
3462 |
|
|
TEST_ff_f (pow, 0, minus_zero, 1);
|
3463 |
|
|
TEST_ff_f (pow, minus_zero, 0, 1);
|
3464 |
|
|
TEST_ff_f (pow, minus_zero, minus_zero, 1);
|
3465 |
|
|
|
3466 |
|
|
TEST_ff_f (pow, 10, 0, 1);
|
3467 |
|
|
TEST_ff_f (pow, 10, minus_zero, 1);
|
3468 |
|
|
TEST_ff_f (pow, -10, 0, 1);
|
3469 |
|
|
TEST_ff_f (pow, -10, minus_zero, 1);
|
3470 |
|
|
|
3471 |
|
|
TEST_ff_f (pow, nan_value, 0, 1);
|
3472 |
|
|
TEST_ff_f (pow, nan_value, minus_zero, 1);
|
3473 |
|
|
|
3474 |
|
|
|
3475 |
|
|
#ifndef TEST_INLINE
|
3476 |
|
|
TEST_ff_f (pow, 1.1L, plus_infty, plus_infty);
|
3477 |
|
|
TEST_ff_f (pow, plus_infty, plus_infty, plus_infty);
|
3478 |
|
|
TEST_ff_f (pow, -1.1L, plus_infty, plus_infty);
|
3479 |
|
|
TEST_ff_f (pow, minus_infty, plus_infty, plus_infty);
|
3480 |
|
|
|
3481 |
|
|
TEST_ff_f (pow, 0.9L, plus_infty, 0);
|
3482 |
|
|
TEST_ff_f (pow, 1e-7L, plus_infty, 0);
|
3483 |
|
|
TEST_ff_f (pow, -0.9L, plus_infty, 0);
|
3484 |
|
|
TEST_ff_f (pow, -1e-7L, plus_infty, 0);
|
3485 |
|
|
|
3486 |
|
|
TEST_ff_f (pow, 1.1L, minus_infty, 0);
|
3487 |
|
|
TEST_ff_f (pow, plus_infty, minus_infty, 0);
|
3488 |
|
|
TEST_ff_f (pow, -1.1L, minus_infty, 0);
|
3489 |
|
|
TEST_ff_f (pow, minus_infty, minus_infty, 0);
|
3490 |
|
|
|
3491 |
|
|
TEST_ff_f (pow, 0.9L, minus_infty, plus_infty);
|
3492 |
|
|
TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty);
|
3493 |
|
|
TEST_ff_f (pow, -0.9L, minus_infty, plus_infty);
|
3494 |
|
|
TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty);
|
3495 |
|
|
|
3496 |
|
|
TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty);
|
3497 |
|
|
TEST_ff_f (pow, plus_infty, 1, plus_infty);
|
3498 |
|
|
TEST_ff_f (pow, plus_infty, 1e7L, plus_infty);
|
3499 |
|
|
|
3500 |
|
|
TEST_ff_f (pow, plus_infty, -1e-7L, 0);
|
3501 |
|
|
TEST_ff_f (pow, plus_infty, -1, 0);
|
3502 |
|
|
TEST_ff_f (pow, plus_infty, -1e7L, 0);
|
3503 |
|
|
|
3504 |
|
|
TEST_ff_f (pow, minus_infty, 1, minus_infty);
|
3505 |
|
|
TEST_ff_f (pow, minus_infty, 11, minus_infty);
|
3506 |
|
|
TEST_ff_f (pow, minus_infty, 1001, minus_infty);
|
3507 |
|
|
|
3508 |
|
|
TEST_ff_f (pow, minus_infty, 2, plus_infty);
|
3509 |
|
|
TEST_ff_f (pow, minus_infty, 12, plus_infty);
|
3510 |
|
|
TEST_ff_f (pow, minus_infty, 1002, plus_infty);
|
3511 |
|
|
TEST_ff_f (pow, minus_infty, 0.1L, plus_infty);
|
3512 |
|
|
TEST_ff_f (pow, minus_infty, 1.1L, plus_infty);
|
3513 |
|
|
TEST_ff_f (pow, minus_infty, 11.1L, plus_infty);
|
3514 |
|
|
TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty);
|
3515 |
|
|
|
3516 |
|
|
TEST_ff_f (pow, minus_infty, -1, minus_zero);
|
3517 |
|
|
TEST_ff_f (pow, minus_infty, -11, minus_zero);
|
3518 |
|
|
TEST_ff_f (pow, minus_infty, -1001, minus_zero);
|
3519 |
|
|
|
3520 |
|
|
TEST_ff_f (pow, minus_infty, -2, 0);
|
3521 |
|
|
TEST_ff_f (pow, minus_infty, -12, 0);
|
3522 |
|
|
TEST_ff_f (pow, minus_infty, -1002, 0);
|
3523 |
|
|
TEST_ff_f (pow, minus_infty, -0.1L, 0);
|
3524 |
|
|
TEST_ff_f (pow, minus_infty, -1.1L, 0);
|
3525 |
|
|
TEST_ff_f (pow, minus_infty, -11.1L, 0);
|
3526 |
|
|
TEST_ff_f (pow, minus_infty, -1001.1L, 0);
|
3527 |
|
|
#endif
|
3528 |
|
|
|
3529 |
|
|
TEST_ff_f (pow, nan_value, nan_value, nan_value);
|
3530 |
|
|
TEST_ff_f (pow, 0, nan_value, nan_value);
|
3531 |
|
|
TEST_ff_f (pow, 1, nan_value, 1);
|
3532 |
|
|
TEST_ff_f (pow, -1, nan_value, nan_value);
|
3533 |
|
|
TEST_ff_f (pow, nan_value, 1, nan_value);
|
3534 |
|
|
TEST_ff_f (pow, nan_value, -1, nan_value);
|
3535 |
|
|
|
3536 |
|
|
/* pow (x, NaN) == NaN. */
|
3537 |
|
|
TEST_ff_f (pow, 3.0, nan_value, nan_value);
|
3538 |
|
|
|
3539 |
|
|
TEST_ff_f (pow, 1, plus_infty, 1);
|
3540 |
|
|
TEST_ff_f (pow, -1, plus_infty, 1);
|
3541 |
|
|
TEST_ff_f (pow, 1, minus_infty, 1);
|
3542 |
|
|
TEST_ff_f (pow, -1, minus_infty, 1);
|
3543 |
|
|
|
3544 |
|
|
TEST_ff_f (pow, -0.1L, 1.1L, nan_value, INVALID_EXCEPTION);
|
3545 |
|
|
TEST_ff_f (pow, -0.1L, -1.1L, nan_value, INVALID_EXCEPTION);
|
3546 |
|
|
TEST_ff_f (pow, -10.1L, 1.1L, nan_value, INVALID_EXCEPTION);
|
3547 |
|
|
TEST_ff_f (pow, -10.1L, -1.1L, nan_value, INVALID_EXCEPTION);
|
3548 |
|
|
|
3549 |
|
|
TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3550 |
|
|
TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3551 |
|
|
TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3552 |
|
|
TEST_ff_f (pow, minus_zero, -11, minus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3553 |
|
|
|
3554 |
|
|
TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3555 |
|
|
TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3556 |
|
|
TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3557 |
|
|
TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
|
3558 |
|
|
|
3559 |
|
|
|
3560 |
|
|
TEST_ff_f (pow, 0, 1, 0);
|
3561 |
|
|
TEST_ff_f (pow, 0, 11, 0);
|
3562 |
|
|
|
3563 |
|
|
TEST_ff_f (pow, minus_zero, 1, minus_zero);
|
3564 |
|
|
TEST_ff_f (pow, minus_zero, 11, minus_zero);
|
3565 |
|
|
|
3566 |
|
|
|
3567 |
|
|
TEST_ff_f (pow, 0, 2, 0);
|
3568 |
|
|
TEST_ff_f (pow, 0, 11.1L, 0);
|
3569 |
|
|
|
3570 |
|
|
|
3571 |
|
|
TEST_ff_f (pow, minus_zero, 2, 0);
|
3572 |
|
|
TEST_ff_f (pow, minus_zero, 11.1L, 0);
|
3573 |
|
|
|
3574 |
|
|
#ifndef TEST_INLINE
|
3575 |
|
|
/* pow (x, +inf) == +inf for |x| > 1. */
|
3576 |
|
|
TEST_ff_f (pow, 1.5, plus_infty, plus_infty);
|
3577 |
|
|
|
3578 |
|
|
/* pow (x, +inf) == +0 for |x| < 1. */
|
3579 |
|
|
TEST_ff_f (pow, 0.5, plus_infty, 0.0);
|
3580 |
|
|
|
3581 |
|
|
/* pow (x, -inf) == +0 for |x| > 1. */
|
3582 |
|
|
TEST_ff_f (pow, 1.5, minus_infty, 0.0);
|
3583 |
|
|
|
3584 |
|
|
/* pow (x, -inf) == +inf for |x| < 1. */
|
3585 |
|
|
TEST_ff_f (pow, 0.5, minus_infty, plus_infty);
|
3586 |
|
|
#endif
|
3587 |
|
|
|
3588 |
|
|
/* pow (+inf, y) == +inf for y > 0. */
|
3589 |
|
|
TEST_ff_f (pow, plus_infty, 2, plus_infty);
|
3590 |
|
|
|
3591 |
|
|
/* pow (+inf, y) == +0 for y < 0. */
|
3592 |
|
|
TEST_ff_f (pow, plus_infty, -1, 0.0);
|
3593 |
|
|
|
3594 |
|
|
/* pow (-inf, y) == -inf for y an odd integer > 0. */
|
3595 |
|
|
TEST_ff_f (pow, minus_infty, 27, minus_infty);
|
3596 |
|
|
|
3597 |
|
|
/* pow (-inf, y) == +inf for y > 0 and not an odd integer. */
|
3598 |
|
|
TEST_ff_f (pow, minus_infty, 28, plus_infty);
|
3599 |
|
|
|
3600 |
|
|
/* pow (-inf, y) == -0 for y an odd integer < 0. */
|
3601 |
|
|
TEST_ff_f (pow, minus_infty, -3, minus_zero);
|
3602 |
|
|
/* pow (-inf, y) == +0 for y < 0 and not an odd integer. */
|
3603 |
|
|
TEST_ff_f (pow, minus_infty, -2.0, 0.0);
|
3604 |
|
|
|
3605 |
|
|
/* pow (+0, y) == +0 for y an odd integer > 0. */
|
3606 |
|
|
TEST_ff_f (pow, 0.0, 27, 0.0);
|
3607 |
|
|
|
3608 |
|
|
/* pow (-0, y) == -0 for y an odd integer > 0. */
|
3609 |
|
|
TEST_ff_f (pow, minus_zero, 27, minus_zero);
|
3610 |
|
|
|
3611 |
|
|
/* pow (+0, y) == +0 for y > 0 and not an odd integer. */
|
3612 |
|
|
TEST_ff_f (pow, 0.0, 4, 0.0);
|
3613 |
|
|
|
3614 |
|
|
/* pow (-0, y) == +0 for y > 0 and not an odd integer. */
|
3615 |
|
|
TEST_ff_f (pow, minus_zero, 4, 0.0);
|
3616 |
|
|
|
3617 |
|
|
TEST_ff_f (pow, 0.7L, 1.2L, 0.65180494056638638188L);
|
3618 |
|
|
|
3619 |
|
|
#if defined TEST_DOUBLE || defined TEST_LDOUBLE
|
3620 |
|
|
TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0);
|
3621 |
|
|
#endif
|
3622 |
|
|
|
3623 |
|
|
END (pow);
|
3624 |
|
|
}
|
3625 |
|
|
|
3626 |
|
|
static void
|
3627 |
|
|
remainder_test (void)
|
3628 |
|
|
{
|
3629 |
|
|
errno = 0;
|
3630 |
|
|
FUNC(remainder) (1.625, 1.0);
|
3631 |
|
|
if (errno == ENOSYS)
|
3632 |
|
|
/* Function not implemented. */
|
3633 |
|
|
return;
|
3634 |
|
|
|
3635 |
|
|
START (remainder);
|
3636 |
|
|
|
3637 |
|
|
TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION);
|
3638 |
|
|
TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION);
|
3639 |
|
|
TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION);
|
3640 |
|
|
TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION);
|
3641 |
|
|
TEST_ff_f (remainder, nan_value, nan_value, nan_value);
|
3642 |
|
|
|
3643 |
|
|
TEST_ff_f (remainder, 1.625, 1.0, -0.375);
|
3644 |
|
|
TEST_ff_f (remainder, -1.625, 1.0, 0.375);
|
3645 |
|
|
TEST_ff_f (remainder, 1.625, -1.0, -0.375);
|
3646 |
|
|
TEST_ff_f (remainder, -1.625, -1.0, 0.375);
|
3647 |
|
|
TEST_ff_f (remainder, 5.0, 2.0, 1.0);
|
3648 |
|
|
TEST_ff_f (remainder, 3.0, 2.0, -1.0);
|
3649 |
|
|
|
3650 |
|
|
END (remainder);
|
3651 |
|
|
}
|
3652 |
|
|
|
3653 |
|
|
#if 0
|
3654 |
|
|
static void
|
3655 |
|
|
remquo_test (void)
|
3656 |
|
|
{
|
3657 |
|
|
/* x is needed. */
|
3658 |
|
|
int x;
|
3659 |
|
|
|
3660 |
|
|
errno = 0;
|
3661 |
|
|
FUNC(remquo) (1.625, 1.0, &x);
|
3662 |
|
|
if (errno == ENOSYS)
|
3663 |
|
|
/* Function not implemented. */
|
3664 |
|
|
return;
|
3665 |
|
|
|
3666 |
|
|
START (remquo);
|
3667 |
|
|
|
3668 |
|
|
TEST_ffI_f1 (remquo, 1, 0, nan_value, IGNORE, INVALID_EXCEPTION);
|
3669 |
|
|
TEST_ffI_f1 (remquo, 1, minus_zero, nan_value, IGNORE, INVALID_EXCEPTION);
|
3670 |
|
|
TEST_ffI_f1 (remquo, plus_infty, 1, nan_value, IGNORE, INVALID_EXCEPTION);
|
3671 |
|
|
TEST_ffI_f1 (remquo, minus_infty, 1, nan_value, IGNORE, INVALID_EXCEPTION);
|
3672 |
|
|
TEST_ffI_f1 (remquo, nan_value, nan_value, nan_value, IGNORE);
|
3673 |
|
|
|
3674 |
|
|
TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2);
|
3675 |
|
|
TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2);
|
3676 |
|
|
TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2);
|
3677 |
|
|
TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2);
|
3678 |
|
|
|
3679 |
|
|
TEST_ffI_f1 (remquo, 5, 2, 1, 2);
|
3680 |
|
|
TEST_ffI_f1 (remquo, 3, 2, -1, 2);
|
3681 |
|
|
|
3682 |
|
|
END (remquo);
|
3683 |
|
|
}
|
3684 |
|
|
#endif
|
3685 |
|
|
|
3686 |
|
|
static void
|
3687 |
|
|
rint_test (void)
|
3688 |
|
|
{
|
3689 |
|
|
START (rint);
|
3690 |
|
|
|
3691 |
|
|
TEST_f_f (rint, 0.0, 0.0);
|
3692 |
|
|
TEST_f_f (rint, minus_zero, minus_zero);
|
3693 |
|
|
TEST_f_f (rint, plus_infty, plus_infty);
|
3694 |
|
|
TEST_f_f (rint, minus_infty, minus_infty);
|
3695 |
|
|
|
3696 |
|
|
/* Default rounding mode is round to even. */
|
3697 |
|
|
TEST_f_f (rint, 0.5, 0.0);
|
3698 |
|
|
TEST_f_f (rint, 1.5, 2.0);
|
3699 |
|
|
TEST_f_f (rint, 2.5, 2.0);
|
3700 |
|
|
TEST_f_f (rint, 3.5, 4.0);
|
3701 |
|
|
TEST_f_f (rint, 4.5, 4.0);
|
3702 |
|
|
TEST_f_f (rint, -0.5, -0.0);
|
3703 |
|
|
TEST_f_f (rint, -1.5, -2.0);
|
3704 |
|
|
TEST_f_f (rint, -2.5, -2.0);
|
3705 |
|
|
TEST_f_f (rint, -3.5, -4.0);
|
3706 |
|
|
TEST_f_f (rint, -4.5, -4.0);
|
3707 |
|
|
|
3708 |
|
|
END (rint);
|
3709 |
|
|
}
|
3710 |
|
|
|
3711 |
|
|
#if 0
|
3712 |
|
|
static void
|
3713 |
|
|
round_test (void)
|
3714 |
|
|
{
|
3715 |
|
|
START (round);
|
3716 |
|
|
|
3717 |
|
|
TEST_f_f (round, 0, 0);
|
3718 |
|
|
TEST_f_f (round, minus_zero, minus_zero);
|
3719 |
|
|
TEST_f_f (round, 0.2L, 0.0);
|
3720 |
|
|
TEST_f_f (round, -0.2L, minus_zero);
|
3721 |
|
|
TEST_f_f (round, 0.5, 1.0);
|
3722 |
|
|
TEST_f_f (round, -0.5, -1.0);
|
3723 |
|
|
TEST_f_f (round, 0.8L, 1.0);
|
3724 |
|
|
TEST_f_f (round, -0.8L, -1.0);
|
3725 |
|
|
TEST_f_f (round, 1.5, 2.0);
|
3726 |
|
|
TEST_f_f (round, -1.5, -2.0);
|
3727 |
|
|
TEST_f_f (round, 2097152.5, 2097153);
|
3728 |
|
|
TEST_f_f (round, -2097152.5, -2097153);
|
3729 |
|
|
|
3730 |
|
|
END (round);
|
3731 |
|
|
}
|
3732 |
|
|
#endif
|
3733 |
|
|
|
3734 |
|
|
|
3735 |
|
|
static void
|
3736 |
|
|
scalb_test (void)
|
3737 |
|
|
{
|
3738 |
|
|
|
3739 |
|
|
START (scalb);
|
3740 |
|
|
|
3741 |
|
|
TEST_ff_f (scalb, 2.0, 0.5, nan_value, INVALID_EXCEPTION);
|
3742 |
|
|
TEST_ff_f (scalb, 3.0, -2.5, nan_value, INVALID_EXCEPTION);
|
3743 |
|
|
|
3744 |
|
|
TEST_ff_f (scalb, 0, nan_value, nan_value);
|
3745 |
|
|
TEST_ff_f (scalb, 1, nan_value, nan_value);
|
3746 |
|
|
|
3747 |
|
|
TEST_ff_f (scalb, 1, 0, 1);
|
3748 |
|
|
TEST_ff_f (scalb, -1, 0, -1);
|
3749 |
|
|
|
3750 |
|
|
TEST_ff_f (scalb, 0, plus_infty, nan_value, INVALID_EXCEPTION);
|
3751 |
|
|
TEST_ff_f (scalb, minus_zero, plus_infty, nan_value, INVALID_EXCEPTION);
|
3752 |
|
|
|
3753 |
|
|
TEST_ff_f (scalb, 0, 2, 0);
|
3754 |
|
|
TEST_ff_f (scalb, minus_zero, -4, minus_zero);
|
3755 |
|
|
TEST_ff_f (scalb, 0, 0, 0);
|
3756 |
|
|
TEST_ff_f (scalb, minus_zero, 0, minus_zero);
|
3757 |
|
|
TEST_ff_f (scalb, 0, -1, 0);
|
3758 |
|
|
TEST_ff_f (scalb, minus_zero, -10, minus_zero);
|
3759 |
|
|
TEST_ff_f (scalb, 0, minus_infty, 0);
|
3760 |
|
|
TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero);
|
3761 |
|
|
|
3762 |
|
|
TEST_ff_f (scalb, plus_infty, -1, plus_infty);
|
3763 |
|
|
TEST_ff_f (scalb, minus_infty, -10, minus_infty);
|
3764 |
|
|
TEST_ff_f (scalb, plus_infty, 0, plus_infty);
|
3765 |
|
|
TEST_ff_f (scalb, minus_infty, 0, minus_infty);
|
3766 |
|
|
TEST_ff_f (scalb, plus_infty, 2, plus_infty);
|
3767 |
|
|
TEST_ff_f (scalb, minus_infty, 100, minus_infty);
|
3768 |
|
|
|
3769 |
|
|
TEST_ff_f (scalb, 0.1L, minus_infty, 0.0);
|
3770 |
|
|
TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero);
|
3771 |
|
|
|
3772 |
|
|
TEST_ff_f (scalb, 1, plus_infty, plus_infty);
|
3773 |
|
|
TEST_ff_f (scalb, -1, plus_infty, minus_infty);
|
3774 |
|
|
TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty);
|
3775 |
|
|
TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty);
|
3776 |
|
|
|
3777 |
|
|
TEST_ff_f (scalb, plus_infty, minus_infty, nan_value, INVALID_EXCEPTION);
|
3778 |
|
|
TEST_ff_f (scalb, minus_infty, minus_infty, nan_value, INVALID_EXCEPTION);
|
3779 |
|
|
|
3780 |
|
|
TEST_ff_f (scalb, nan_value, 1, nan_value);
|
3781 |
|
|
TEST_ff_f (scalb, 1, nan_value, nan_value);
|
3782 |
|
|
TEST_ff_f (scalb, nan_value, 0, nan_value);
|
3783 |
|
|
TEST_ff_f (scalb, 0, nan_value, nan_value);
|
3784 |
|
|
TEST_ff_f (scalb, nan_value, plus_infty, nan_value);
|
3785 |
|
|
TEST_ff_f (scalb, plus_infty, nan_value, nan_value);
|
3786 |
|
|
TEST_ff_f (scalb, nan_value, nan_value, nan_value);
|
3787 |
|
|
|
3788 |
|
|
TEST_ff_f (scalb, 0.8L, 4, 12.8L);
|
3789 |
|
|
TEST_ff_f (scalb, -0.854375L, 5, -27.34L);
|
3790 |
|
|
|
3791 |
|
|
END (scalb);
|
3792 |
|
|
}
|
3793 |
|
|
|
3794 |
|
|
|
3795 |
|
|
static void
|
3796 |
|
|
scalbn_test (void)
|
3797 |
|
|
{
|
3798 |
|
|
|
3799 |
|
|
START (scalbn);
|
3800 |
|
|
|
3801 |
|
|
TEST_fi_f (scalbn, 0, 0, 0);
|
3802 |
|
|
TEST_fi_f (scalbn, minus_zero, 0, minus_zero);
|
3803 |
|
|
|
3804 |
|
|
TEST_fi_f (scalbn, plus_infty, 1, plus_infty);
|
3805 |
|
|
TEST_fi_f (scalbn, minus_infty, 1, minus_infty);
|
3806 |
|
|
TEST_fi_f (scalbn, nan_value, 1, nan_value);
|
3807 |
|
|
|
3808 |
|
|
TEST_fi_f (scalbn, 0.8L, 4, 12.8L);
|
3809 |
|
|
TEST_fi_f (scalbn, -0.854375L, 5, -27.34L);
|
3810 |
|
|
|
3811 |
|
|
TEST_fi_f (scalbn, 1, 0L, 1);
|
3812 |
|
|
|
3813 |
|
|
END (scalbn);
|
3814 |
|
|
}
|
3815 |
|
|
|
3816 |
|
|
#if 0
|
3817 |
|
|
static void
|
3818 |
|
|
scalbln_test (void)
|
3819 |
|
|
{
|
3820 |
|
|
|
3821 |
|
|
START (scalbln);
|
3822 |
|
|
|
3823 |
|
|
TEST_fl_f (scalbln, 0, 0, 0);
|
3824 |
|
|
TEST_fl_f (scalbln, minus_zero, 0, minus_zero);
|
3825 |
|
|
|
3826 |
|
|
TEST_fl_f (scalbln, plus_infty, 1, plus_infty);
|
3827 |
|
|
TEST_fl_f (scalbln, minus_infty, 1, minus_infty);
|
3828 |
|
|
TEST_fl_f (scalbln, nan_value, 1, nan_value);
|
3829 |
|
|
|
3830 |
|
|
TEST_fl_f (scalbln, 0.8L, 4, 12.8L);
|
3831 |
|
|
TEST_fl_f (scalbln, -0.854375L, 5, -27.34L);
|
3832 |
|
|
|
3833 |
|
|
TEST_fl_f (scalbln, 1, 0L, 1);
|
3834 |
|
|
|
3835 |
|
|
END (scalbn);
|
3836 |
|
|
}
|
3837 |
|
|
#endif
|
3838 |
|
|
|
3839 |
|
|
static void
|
3840 |
|
|
signbit_test (void)
|
3841 |
|
|
{
|
3842 |
|
|
|
3843 |
|
|
START (signbit);
|
3844 |
|
|
|
3845 |
|
|
TEST_f_b (signbit, 0, 0);
|
3846 |
|
|
TEST_f_b (signbit, minus_zero, 1);
|
3847 |
|
|
TEST_f_b (signbit, plus_infty, 0);
|
3848 |
|
|
TEST_f_b (signbit, minus_infty, 1);
|
3849 |
|
|
|
3850 |
|
|
/* signbit (x) != 0 for x < 0. */
|
3851 |
|
|
TEST_f_b (signbit, -1, 1);
|
3852 |
|
|
/* signbit (x) == 0 for x >= 0. */
|
3853 |
|
|
TEST_f_b (signbit, 1, 0);
|
3854 |
|
|
|
3855 |
|
|
END (signbit);
|
3856 |
|
|
}
|
3857 |
|
|
|
3858 |
|
|
static void
|
3859 |
|
|
sin_test (void)
|
3860 |
|
|
{
|
3861 |
|
|
errno = 0;
|
3862 |
|
|
FUNC(sin) (0);
|
3863 |
|
|
if (errno == ENOSYS)
|
3864 |
|
|
/* Function not implemented. */
|
3865 |
|
|
return;
|
3866 |
|
|
|
3867 |
|
|
START (sin);
|
3868 |
|
|
|
3869 |
|
|
TEST_f_f (sin, 0, 0);
|
3870 |
|
|
TEST_f_f (sin, minus_zero, minus_zero);
|
3871 |
|
|
TEST_f_f (sin, plus_infty, nan_value, INVALID_EXCEPTION);
|
3872 |
|
|
TEST_f_f (sin, minus_infty, nan_value, INVALID_EXCEPTION);
|
3873 |
|
|
TEST_f_f (sin, nan_value, nan_value);
|
3874 |
|
|
|
3875 |
|
|
TEST_f_f (sin, M_PI_6l, 0.5);
|
3876 |
|
|
TEST_f_f (sin, -M_PI_6l, -0.5);
|
3877 |
|
|
TEST_f_f (sin, M_PI_2l, 1);
|
3878 |
|
|
TEST_f_f (sin, -M_PI_2l, -1);
|
3879 |
|
|
TEST_f_f (sin, 0.7L, 0.64421768723769105367261435139872014L);
|
3880 |
|
|
|
3881 |
|
|
END (sin);
|
3882 |
|
|
|
3883 |
|
|
}
|
3884 |
|
|
|
3885 |
|
|
#if 0
|
3886 |
|
|
static void
|
3887 |
|
|
sincos_test (void)
|
3888 |
|
|
{
|
3889 |
|
|
FLOAT sin_res, cos_res;
|
3890 |
|
|
|
3891 |
|
|
errno = 0;
|
3892 |
|
|
FUNC(sincos) (0, &sin_res, &cos_res);
|
3893 |
|
|
if (errno == ENOSYS)
|
3894 |
|
|
/* Function not implemented. */
|
3895 |
|
|
return;
|
3896 |
|
|
|
3897 |
|
|
START (sincos);
|
3898 |
|
|
|
3899 |
|
|
/* sincos is treated differently because it returns void. */
|
3900 |
|
|
TEST_extra (sincos, 0, 0, 1);
|
3901 |
|
|
|
3902 |
|
|
TEST_extra (sincos, minus_zero, minus_zero, 1);
|
3903 |
|
|
TEST_extra (sincos, plus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
3904 |
|
|
TEST_extra (sincos, minus_infty, nan_value, nan_value, INVALID_EXCEPTION);
|
3905 |
|
|
TEST_extra (sincos, nan_value, nan_value, nan_value);
|
3906 |
|
|
|
3907 |
|
|
TEST_extra (sincos, M_PI_2l, 1, 0);
|
3908 |
|
|
TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);
|
3909 |
|
|
TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5);
|
3910 |
|
|
TEST_extra (sincos, 0.7L, 0.64421768723769105367261435139872014L, 0.76484218728448842625585999019186495L);
|
3911 |
|
|
|
3912 |
|
|
END (sincos);
|
3913 |
|
|
}
|
3914 |
|
|
#endif
|
3915 |
|
|
|
3916 |
|
|
static void
|
3917 |
|
|
sinh_test (void)
|
3918 |
|
|
{
|
3919 |
|
|
errno = 0;
|
3920 |
|
|
FUNC(sinh) (0.7L);
|
3921 |
|
|
if (errno == ENOSYS)
|
3922 |
|
|
/* Function not implemented. */
|
3923 |
|
|
return;
|
3924 |
|
|
|
3925 |
|
|
START (sinh);
|
3926 |
|
|
TEST_f_f (sinh, 0, 0);
|
3927 |
|
|
TEST_f_f (sinh, minus_zero, minus_zero);
|
3928 |
|
|
|
3929 |
|
|
#ifndef TEST_INLINE
|
3930 |
|
|
TEST_f_f (sinh, plus_infty, plus_infty);
|
3931 |
|
|
TEST_f_f (sinh, minus_infty, minus_infty);
|
3932 |
|
|
#endif
|
3933 |
|
|
TEST_f_f (sinh, nan_value, nan_value);
|
3934 |
|
|
|
3935 |
|
|
TEST_f_f (sinh, 0.7L, 0.75858370183953350346L);
|
3936 |
|
|
TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L);
|
3937 |
|
|
|
3938 |
|
|
END (sinh);
|
3939 |
|
|
}
|
3940 |
|
|
|
3941 |
|
|
static void
|
3942 |
|
|
sqrt_test (void)
|
3943 |
|
|
{
|
3944 |
|
|
errno = 0;
|
3945 |
|
|
FUNC(sqrt) (1);
|
3946 |
|
|
if (errno == ENOSYS)
|
3947 |
|
|
/* Function not implemented. */
|
3948 |
|
|
return;
|
3949 |
|
|
|
3950 |
|
|
START (sqrt);
|
3951 |
|
|
|
3952 |
|
|
TEST_f_f (sqrt, 0, 0);
|
3953 |
|
|
TEST_f_f (sqrt, nan_value, nan_value);
|
3954 |
|
|
TEST_f_f (sqrt, plus_infty, plus_infty);
|
3955 |
|
|
|
3956 |
|
|
TEST_f_f (sqrt, minus_zero, minus_zero);
|
3957 |
|
|
|
3958 |
|
|
/* sqrt (x) == NaN plus invalid exception for x < 0. */
|
3959 |
|
|
TEST_f_f (sqrt, -1, nan_value, INVALID_EXCEPTION);
|
3960 |
|
|
TEST_f_f (sqrt, minus_infty, nan_value, INVALID_EXCEPTION);
|
3961 |
|
|
TEST_f_f (sqrt, nan_value, nan_value);
|
3962 |
|
|
|
3963 |
|
|
TEST_f_f (sqrt, 2209, 47);
|
3964 |
|
|
TEST_f_f (sqrt, 4, 2);
|
3965 |
|
|
TEST_f_f (sqrt, 2, M_SQRT2l);
|
3966 |
|
|
TEST_f_f (sqrt, 0.25, 0.5);
|
3967 |
|
|
TEST_f_f (sqrt, 6642.25, 81.5);
|
3968 |
|
|
TEST_f_f (sqrt, 15239.9025L, 123.45L);
|
3969 |
|
|
TEST_f_f (sqrt, 0.7L, 0.83666002653407554797817202578518747L);
|
3970 |
|
|
|
3971 |
|
|
END (sqrt);
|
3972 |
|
|
}
|
3973 |
|
|
|
3974 |
|
|
static void
|
3975 |
|
|
tan_test (void)
|
3976 |
|
|
{
|
3977 |
|
|
errno = 0;
|
3978 |
|
|
FUNC(tan) (0);
|
3979 |
|
|
if (errno == ENOSYS)
|
3980 |
|
|
/* Function not implemented. */
|
3981 |
|
|
return;
|
3982 |
|
|
|
3983 |
|
|
START (tan);
|
3984 |
|
|
|
3985 |
|
|
TEST_f_f (tan, 0, 0);
|
3986 |
|
|
TEST_f_f (tan, minus_zero, minus_zero);
|
3987 |
|
|
TEST_f_f (tan, plus_infty, nan_value, INVALID_EXCEPTION);
|
3988 |
|
|
TEST_f_f (tan, minus_infty, nan_value, INVALID_EXCEPTION);
|
3989 |
|
|
TEST_f_f (tan, nan_value, nan_value);
|
3990 |
|
|
|
3991 |
|
|
TEST_f_f (tan, M_PI_4l, 1);
|
3992 |
|
|
TEST_f_f (tan, 0.7L, 0.84228838046307944812813500221293775L);
|
3993 |
|
|
|
3994 |
|
|
END (tan);
|
3995 |
|
|
}
|
3996 |
|
|
|
3997 |
|
|
static void
|
3998 |
|
|
tanh_test (void)
|
3999 |
|
|
{
|
4000 |
|
|
errno = 0;
|
4001 |
|
|
FUNC(tanh) (0.7L);
|
4002 |
|
|
if (errno == ENOSYS)
|
4003 |
|
|
/* Function not implemented. */
|
4004 |
|
|
return;
|
4005 |
|
|
|
4006 |
|
|
START (tanh);
|
4007 |
|
|
|
4008 |
|
|
TEST_f_f (tanh, 0, 0);
|
4009 |
|
|
TEST_f_f (tanh, minus_zero, minus_zero);
|
4010 |
|
|
|
4011 |
|
|
#ifndef TEST_INLINE
|
4012 |
|
|
TEST_f_f (tanh, plus_infty, 1);
|
4013 |
|
|
TEST_f_f (tanh, minus_infty, -1);
|
4014 |
|
|
#endif
|
4015 |
|
|
TEST_f_f (tanh, nan_value, nan_value);
|
4016 |
|
|
|
4017 |
|
|
TEST_f_f (tanh, 0.7L, 0.60436777711716349631L);
|
4018 |
|
|
TEST_f_f (tanh, -0.7L, -0.60436777711716349631L);
|
4019 |
|
|
|
4020 |
|
|
TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L);
|
4021 |
|
|
TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L);
|
4022 |
|
|
|
4023 |
|
|
/* 2^-57 */
|
4024 |
|
|
TEST_f_f (tanh, 6.938893903907228377647697925567626953125e-18L,6.938893903907228377647697925567626953125e-18L);
|
4025 |
|
|
|
4026 |
|
|
END (tanh);
|
4027 |
|
|
}
|
4028 |
|
|
|
4029 |
|
|
#if 0
|
4030 |
|
|
static void
|
4031 |
|
|
tgamma_test (void)
|
4032 |
|
|
{
|
4033 |
|
|
errno = 0;
|
4034 |
|
|
FUNC(tgamma) (1);
|
4035 |
|
|
if (errno == ENOSYS)
|
4036 |
|
|
/* Function not implemented. */
|
4037 |
|
|
return;
|
4038 |
|
|
feclearexcept (FE_ALL_EXCEPT);
|
4039 |
|
|
|
4040 |
|
|
START (tgamma);
|
4041 |
|
|
|
4042 |
|
|
TEST_f_f (tgamma, plus_infty, plus_infty);
|
4043 |
|
|
TEST_f_f (tgamma, 0, nan_value, INVALID_EXCEPTION);
|
4044 |
|
|
TEST_f_f (tgamma, minus_zero, nan_value, INVALID_EXCEPTION);
|
4045 |
|
|
/* tgamma (x) == NaN plus invalid exception for integer x <= 0. */
|
4046 |
|
|
TEST_f_f (tgamma, -2, nan_value, INVALID_EXCEPTION);
|
4047 |
|
|
TEST_f_f (tgamma, minus_infty, nan_value, INVALID_EXCEPTION);
|
4048 |
|
|
TEST_f_f (tgamma, nan_value, nan_value);
|
4049 |
|
|
|
4050 |
|
|
TEST_f_f (tgamma, 0.5, M_SQRT_PIl);
|
4051 |
|
|
TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl);
|
4052 |
|
|
|
4053 |
|
|
TEST_f_f (tgamma, 1, 1);
|
4054 |
|
|
TEST_f_f (tgamma, 4, 6);
|
4055 |
|
|
|
4056 |
|
|
TEST_f_f (tgamma, 0.7L, 1.29805533264755778568L);
|
4057 |
|
|
TEST_f_f (tgamma, 1.2L, 0.91816874239976061064L);
|
4058 |
|
|
|
4059 |
|
|
END (tgamma);
|
4060 |
|
|
}
|
4061 |
|
|
#endif
|
4062 |
|
|
|
4063 |
|
|
#if 0
|
4064 |
|
|
static void
|
4065 |
|
|
trunc_test (void)
|
4066 |
|
|
{
|
4067 |
|
|
START (trunc);
|
4068 |
|
|
|
4069 |
|
|
TEST_f_f (trunc, plus_infty, plus_infty);
|
4070 |
|
|
TEST_f_f (trunc, minus_infty, minus_infty);
|
4071 |
|
|
TEST_f_f (trunc, nan_value, nan_value);
|
4072 |
|
|
|
4073 |
|
|
TEST_f_f (trunc, 0, 0);
|
4074 |
|
|
TEST_f_f (trunc, minus_zero, minus_zero);
|
4075 |
|
|
TEST_f_f (trunc, 0.625, 0);
|
4076 |
|
|
TEST_f_f (trunc, -0.625, minus_zero);
|
4077 |
|
|
TEST_f_f (trunc, 1, 1);
|
4078 |
|
|
TEST_f_f (trunc, -1, -1);
|
4079 |
|
|
TEST_f_f (trunc, 1.625, 1);
|
4080 |
|
|
TEST_f_f (trunc, -1.625, -1);
|
4081 |
|
|
|
4082 |
|
|
TEST_f_f (trunc, 1048580.625L, 1048580L);
|
4083 |
|
|
TEST_f_f (trunc, -1048580.625L, -1048580L);
|
4084 |
|
|
|
4085 |
|
|
TEST_f_f (trunc, 8388610.125L, 8388610.0L);
|
4086 |
|
|
TEST_f_f (trunc, -8388610.125L, -8388610.0L);
|
4087 |
|
|
|
4088 |
|
|
TEST_f_f (trunc, 4294967296.625L, 4294967296.0L);
|
4089 |
|
|
TEST_f_f (trunc, -4294967296.625L, -4294967296.0L);
|
4090 |
|
|
|
4091 |
|
|
|
4092 |
|
|
END (trunc);
|
4093 |
|
|
}
|
4094 |
|
|
#endif
|
4095 |
|
|
|
4096 |
|
|
static void
|
4097 |
|
|
y0_test (void)
|
4098 |
|
|
{
|
4099 |
|
|
errno = 0;
|
4100 |
|
|
#if 0
|
4101 |
|
|
FLOAT s, c;
|
4102 |
|
|
FUNC (sincos) (0, &s, &c);
|
4103 |
|
|
if (errno == ENOSYS)
|
4104 |
|
|
/* Required function not implemented. */
|
4105 |
|
|
return;
|
4106 |
|
|
#endif
|
4107 |
|
|
FUNC(y0) (1);
|
4108 |
|
|
if (errno == ENOSYS)
|
4109 |
|
|
/* Function not implemented. */
|
4110 |
|
|
return;
|
4111 |
|
|
|
4112 |
|
|
/* y0 is the Bessel function of the second kind of order 0 */
|
4113 |
|
|
START (y0);
|
4114 |
|
|
|
4115 |
|
|
TEST_f_f (y0, -1.0, minus_infty);
|
4116 |
|
|
TEST_f_f (y0, 0.0, minus_infty);
|
4117 |
|
|
TEST_f_f (y0, nan_value, nan_value);
|
4118 |
|
|
TEST_f_f (y0, plus_infty, 0);
|
4119 |
|
|
|
4120 |
|
|
TEST_f_f (y0, 0.1L, -1.5342386513503668441L);
|
4121 |
|
|
TEST_f_f (y0, 0.7L, -0.19066492933739506743L);
|
4122 |
|
|
TEST_f_f (y0, 1.0, 0.088256964215676957983L);
|
4123 |
|
|
TEST_f_f (y0, 1.5, 0.38244892379775884396L);
|
4124 |
|
|
TEST_f_f (y0, 2.0, 0.51037567264974511960L);
|
4125 |
|
|
TEST_f_f (y0, 8.0, 0.22352148938756622053L);
|
4126 |
|
|
TEST_f_f (y0, 10.0, 0.055671167283599391424L);
|
4127 |
|
|
|
4128 |
|
|
END (y0);
|
4129 |
|
|
}
|
4130 |
|
|
|
4131 |
|
|
|
4132 |
|
|
static void
|
4133 |
|
|
y1_test (void)
|
4134 |
|
|
{
|
4135 |
|
|
errno = 0;
|
4136 |
|
|
#if 0
|
4137 |
|
|
FLOAT s, c;
|
4138 |
|
|
FUNC (sincos) (0, &s, &c);
|
4139 |
|
|
if (errno == ENOSYS)
|
4140 |
|
|
/* Required function not implemented. */
|
4141 |
|
|
return;
|
4142 |
|
|
#endif
|
4143 |
|
|
FUNC(y1) (1);
|
4144 |
|
|
if (errno == ENOSYS)
|
4145 |
|
|
/* Function not implemented. */
|
4146 |
|
|
return;
|
4147 |
|
|
|
4148 |
|
|
/* y1 is the Bessel function of the second kind of order 1 */
|
4149 |
|
|
START (y1);
|
4150 |
|
|
|
4151 |
|
|
TEST_f_f (y1, -1.0, minus_infty);
|
4152 |
|
|
TEST_f_f (y1, 0.0, minus_infty);
|
4153 |
|
|
TEST_f_f (y1, plus_infty, 0);
|
4154 |
|
|
TEST_f_f (y1, nan_value, nan_value);
|
4155 |
|
|
|
4156 |
|
|
TEST_f_f (y1, 0.1L, -6.4589510947020269877L);
|
4157 |
|
|
TEST_f_f (y1, 0.7L, -1.1032498719076333697L);
|
4158 |
|
|
TEST_f_f (y1, 1.0, -0.78121282130028871655L);
|
4159 |
|
|
TEST_f_f (y1, 1.5, -0.41230862697391129595L);
|
4160 |
|
|
TEST_f_f (y1, 2.0, -0.10703243154093754689L);
|
4161 |
|
|
TEST_f_f (y1, 8.0, -0.15806046173124749426L);
|
4162 |
|
|
TEST_f_f (y1, 10.0, 0.24901542420695388392L);
|
4163 |
|
|
|
4164 |
|
|
END (y1);
|
4165 |
|
|
}
|
4166 |
|
|
|
4167 |
|
|
static void
|
4168 |
|
|
yn_test (void)
|
4169 |
|
|
{
|
4170 |
|
|
errno = 0;
|
4171 |
|
|
#if 0
|
4172 |
|
|
FLOAT s, c;
|
4173 |
|
|
FUNC (sincos) (0, &s, &c);
|
4174 |
|
|
if (errno == ENOSYS)
|
4175 |
|
|
/* Required function not implemented. */
|
4176 |
|
|
return;
|
4177 |
|
|
#endif
|
4178 |
|
|
FUNC(yn) (1, 1);
|
4179 |
|
|
if (errno == ENOSYS)
|
4180 |
|
|
/* Function not implemented. */
|
4181 |
|
|
return;
|
4182 |
|
|
|
4183 |
|
|
/* yn is the Bessel function of the second kind of order n */
|
4184 |
|
|
START (yn);
|
4185 |
|
|
|
4186 |
|
|
/* yn (0, x) == y0 (x) */
|
4187 |
|
|
TEST_ff_f (yn, 0, -1.0, minus_infty);
|
4188 |
|
|
TEST_ff_f (yn, 0, 0.0, minus_infty);
|
4189 |
|
|
TEST_ff_f (yn, 0, nan_value, nan_value);
|
4190 |
|
|
TEST_ff_f (yn, 0, plus_infty, 0);
|
4191 |
|
|
|
4192 |
|
|
TEST_ff_f (yn, 0, 0.1L, -1.5342386513503668441L);
|
4193 |
|
|
TEST_ff_f (yn, 0, 0.7L, -0.19066492933739506743L);
|
4194 |
|
|
TEST_ff_f (yn, 0, 1.0, 0.088256964215676957983L);
|
4195 |
|
|
TEST_ff_f (yn, 0, 1.5, 0.38244892379775884396L);
|
4196 |
|
|
TEST_ff_f (yn, 0, 2.0, 0.51037567264974511960L);
|
4197 |
|
|
TEST_ff_f (yn, 0, 8.0, 0.22352148938756622053L);
|
4198 |
|
|
TEST_ff_f (yn, 0, 10.0, 0.055671167283599391424L);
|
4199 |
|
|
|
4200 |
|
|
/* yn (1, x) == y1 (x) */
|
4201 |
|
|
TEST_ff_f (yn, 1, -1.0, minus_infty);
|
4202 |
|
|
TEST_ff_f (yn, 1, 0.0, minus_infty);
|
4203 |
|
|
TEST_ff_f (yn, 1, plus_infty, 0);
|
4204 |
|
|
TEST_ff_f (yn, 1, nan_value, nan_value);
|
4205 |
|
|
|
4206 |
|
|
TEST_ff_f (yn, 1, 0.1L, -6.4589510947020269877L);
|
4207 |
|
|
TEST_ff_f (yn, 1, 0.7L, -1.1032498719076333697L);
|
4208 |
|
|
TEST_ff_f (yn, 1, 1.0, -0.78121282130028871655L);
|
4209 |
|
|
TEST_ff_f (yn, 1, 1.5, -0.41230862697391129595L);
|
4210 |
|
|
TEST_ff_f (yn, 1, 2.0, -0.10703243154093754689L);
|
4211 |
|
|
TEST_ff_f (yn, 1, 8.0, -0.15806046173124749426L);
|
4212 |
|
|
TEST_ff_f (yn, 1, 10.0, 0.24901542420695388392L);
|
4213 |
|
|
|
4214 |
|
|
/* yn (3, x) */
|
4215 |
|
|
TEST_ff_f (yn, 3, plus_infty, 0);
|
4216 |
|
|
TEST_ff_f (yn, 3, nan_value, nan_value);
|
4217 |
|
|
|
4218 |
|
|
TEST_ff_f (yn, 3, 0.1L, -5099.3323786129048894L);
|
4219 |
|
|
TEST_ff_f (yn, 3, 0.7L, -15.819479052819633505L);
|
4220 |
|
|
TEST_ff_f (yn, 3, 1.0, -5.8215176059647288478L);
|
4221 |
|
|
TEST_ff_f (yn, 3, 2.0, -1.1277837768404277861L);
|
4222 |
|
|
TEST_ff_f (yn, 3, 10.0, -0.25136265718383732978L);
|
4223 |
|
|
|
4224 |
|
|
/* yn (10, x) */
|
4225 |
|
|
TEST_ff_f (yn, 10, plus_infty, 0);
|
4226 |
|
|
TEST_ff_f (yn, 10, nan_value, nan_value);
|
4227 |
|
|
|
4228 |
|
|
TEST_ff_f (yn, 10, 0.1L, -0.11831335132045197885e19L);
|
4229 |
|
|
TEST_ff_f (yn, 10, 0.7L, -0.42447194260703866924e10L);
|
4230 |
|
|
TEST_ff_f (yn, 10, 1.0, -0.12161801427868918929e9L);
|
4231 |
|
|
TEST_ff_f (yn, 10, 2.0, -129184.54220803928264L);
|
4232 |
|
|
TEST_ff_f (yn, 10, 10.0, -0.35981415218340272205L);
|
4233 |
|
|
|
4234 |
|
|
END (yn);
|
4235 |
|
|
|
4236 |
|
|
}
|
4237 |
|
|
|
4238 |
|
|
|
4239 |
|
|
|
4240 |
|
|
static void
|
4241 |
|
|
initialize (void)
|
4242 |
|
|
{
|
4243 |
|
|
fpstack_test ("start *init*");
|
4244 |
|
|
plus_zero = 0.0;
|
4245 |
|
|
nan_value = plus_zero / plus_zero; /* Suppress GCC warning */
|
4246 |
|
|
|
4247 |
|
|
minus_zero = FUNC(copysign) (0.0, -1.0);
|
4248 |
|
|
plus_infty = CHOOSE (HUGE_VALL, HUGE_VAL, HUGE_VALF,
|
4249 |
|
|
HUGE_VALL, HUGE_VAL, HUGE_VALF);
|
4250 |
|
|
minus_infty = CHOOSE (-HUGE_VALL, -HUGE_VAL, -HUGE_VALF,
|
4251 |
|
|
-HUGE_VALL, -HUGE_VAL, -HUGE_VALF);
|
4252 |
|
|
|
4253 |
|
|
(void) &plus_zero;
|
4254 |
|
|
(void) &nan_value;
|
4255 |
|
|
(void) &minus_zero;
|
4256 |
|
|
(void) &plus_infty;
|
4257 |
|
|
(void) &minus_infty;
|
4258 |
|
|
|
4259 |
|
|
/* Clear all exceptions. From now on we must not get random exceptions. */
|
4260 |
|
|
feclearexcept (FE_ALL_EXCEPT);
|
4261 |
|
|
|
4262 |
|
|
/* Test to make sure we start correctly. */
|
4263 |
|
|
fpstack_test ("end *init*");
|
4264 |
|
|
}
|
4265 |
|
|
|
4266 |
|
|
#if 0
|
4267 |
|
|
/* function to check our ulp calculation. */
|
4268 |
|
|
void
|
4269 |
|
|
check_ulp (void)
|
4270 |
|
|
{
|
4271 |
|
|
int i;
|
4272 |
|
|
|
4273 |
|
|
FLOAT u, diff, ulp;
|
4274 |
|
|
/* This gives one ulp. */
|
4275 |
|
|
u = FUNC(nextafter) (10, 20);
|
4276 |
|
|
check_equal (10.0, u, 1, &diff, &ulp);
|
4277 |
|
|
printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp);
|
4278 |
|
|
|
4279 |
|
|
/* This gives one more ulp. */
|
4280 |
|
|
u = FUNC(nextafter) (u, 20);
|
4281 |
|
|
check_equal (10.0, u, 2, &diff, &ulp);
|
4282 |
|
|
printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp);
|
4283 |
|
|
|
4284 |
|
|
/* And now calculate 100 ulp. */
|
4285 |
|
|
for (i = 2; i < 100; i++)
|
4286 |
|
|
u = FUNC(nextafter) (u, 20);
|
4287 |
|
|
check_equal (10.0, u, 100, &diff, &ulp);
|
4288 |
|
|
printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp);
|
4289 |
|
|
}
|
4290 |
|
|
#endif
|
4291 |
|
|
|
4292 |
|
|
int
|
4293 |
|
|
main (int argc, char **argv)
|
4294 |
|
|
{
|
4295 |
|
|
|
4296 |
|
|
int key, remaining;
|
4297 |
|
|
|
4298 |
|
|
verbose = 1;
|
4299 |
|
|
output_ulps = 0;
|
4300 |
|
|
output_max_error = 1;
|
4301 |
|
|
output_points = 1;
|
4302 |
|
|
/* XXX set to 0 for releases. */
|
4303 |
|
|
ignore_max_ulp = 0;
|
4304 |
|
|
|
4305 |
|
|
/* Parse and process arguments. */
|
4306 |
|
|
while ((key = getopt(argc, argv, "fi:puv")) > 0) {
|
4307 |
|
|
switch (key)
|
4308 |
|
|
{
|
4309 |
|
|
case 'f':
|
4310 |
|
|
output_max_error = 0;
|
4311 |
|
|
break;
|
4312 |
|
|
case 'i':
|
4313 |
|
|
if (strcmp (optarg, "yes") == 0)
|
4314 |
|
|
ignore_max_ulp = 1;
|
4315 |
|
|
else if (strcmp (optarg, "no") == 0)
|
4316 |
|
|
ignore_max_ulp = 0;
|
4317 |
|
|
break;
|
4318 |
|
|
case 'p':
|
4319 |
|
|
output_points = 0;
|
4320 |
|
|
break;
|
4321 |
|
|
case 'u':
|
4322 |
|
|
output_ulps = 1;
|
4323 |
|
|
break;
|
4324 |
|
|
case 'v':
|
4325 |
|
|
verbose = 3;
|
4326 |
|
|
break;
|
4327 |
|
|
default:
|
4328 |
|
|
fprintf (stderr, "Unknown argument: %c", key);
|
4329 |
|
|
exit (EXIT_FAILURE);
|
4330 |
|
|
}
|
4331 |
|
|
}
|
4332 |
|
|
|
4333 |
|
|
if (optind != argc)
|
4334 |
|
|
{
|
4335 |
|
|
fprintf (stderr, "wrong number of arguments");
|
4336 |
|
|
exit (EXIT_FAILURE);
|
4337 |
|
|
}
|
4338 |
|
|
|
4339 |
|
|
if (output_ulps)
|
4340 |
|
|
{
|
4341 |
|
|
ulps_file = fopen ("ULPs", "a");
|
4342 |
|
|
if (ulps_file == NULL)
|
4343 |
|
|
{
|
4344 |
|
|
perror ("can't open file `ULPs' for writing: ");
|
4345 |
|
|
exit (1);
|
4346 |
|
|
}
|
4347 |
|
|
}
|
4348 |
|
|
|
4349 |
|
|
|
4350 |
|
|
initialize ();
|
4351 |
|
|
printf (TEST_MSG);
|
4352 |
|
|
|
4353 |
|
|
#if 0
|
4354 |
|
|
check_ulp ();
|
4355 |
|
|
#endif
|
4356 |
|
|
|
4357 |
|
|
/* Keep the tests a wee bit ordered (according to ISO C99). */
|
4358 |
|
|
/* Classification macros: */
|
4359 |
|
|
fpclassify_test ();
|
4360 |
|
|
isfinite_test ();
|
4361 |
|
|
isnormal_test ();
|
4362 |
|
|
signbit_test ();
|
4363 |
|
|
|
4364 |
|
|
/* Trigonometric functions: */
|
4365 |
|
|
acos_test ();
|
4366 |
|
|
asin_test ();
|
4367 |
|
|
atan_test ();
|
4368 |
|
|
atan2_test ();
|
4369 |
|
|
cos_test ();
|
4370 |
|
|
sin_test ();
|
4371 |
|
|
#if 0
|
4372 |
|
|
sincos_test ();
|
4373 |
|
|
#endif
|
4374 |
|
|
tan_test ();
|
4375 |
|
|
|
4376 |
|
|
/* Hyperbolic functions: */
|
4377 |
|
|
acosh_test ();
|
4378 |
|
|
asinh_test ();
|
4379 |
|
|
atanh_test ();
|
4380 |
|
|
cosh_test ();
|
4381 |
|
|
sinh_test ();
|
4382 |
|
|
tanh_test ();
|
4383 |
|
|
|
4384 |
|
|
/* Exponential and logarithmic functions: */
|
4385 |
|
|
exp_test ();
|
4386 |
|
|
#if 0
|
4387 |
|
|
exp10_test ();
|
4388 |
|
|
exp2_test ();
|
4389 |
|
|
#endif
|
4390 |
|
|
expm1_test ();
|
4391 |
|
|
frexp_test ();
|
4392 |
|
|
ldexp_test ();
|
4393 |
|
|
log_test ();
|
4394 |
|
|
log10_test ();
|
4395 |
|
|
log1p_test ();
|
4396 |
|
|
#if 0
|
4397 |
|
|
log2_test ();
|
4398 |
|
|
#endif
|
4399 |
|
|
logb_test ();
|
4400 |
|
|
modf_test ();
|
4401 |
|
|
ilogb_test ();
|
4402 |
|
|
scalb_test ();
|
4403 |
|
|
scalbn_test ();
|
4404 |
|
|
#if 0
|
4405 |
|
|
scalbln_test ();
|
4406 |
|
|
#endif
|
4407 |
|
|
|
4408 |
|
|
/* Power and absolute value functions: */
|
4409 |
|
|
cbrt_test ();
|
4410 |
|
|
fabs_test ();
|
4411 |
|
|
hypot_test ();
|
4412 |
|
|
pow_test ();
|
4413 |
|
|
sqrt_test ();
|
4414 |
|
|
|
4415 |
|
|
/* Error and gamma functions: */
|
4416 |
|
|
erf_test ();
|
4417 |
|
|
erfc_test ();
|
4418 |
|
|
gamma_test ();
|
4419 |
|
|
lgamma_test ();
|
4420 |
|
|
#if 0
|
4421 |
|
|
tgamma_test ();
|
4422 |
|
|
#endif
|
4423 |
|
|
|
4424 |
|
|
/* Nearest integer functions: */
|
4425 |
|
|
ceil_test ();
|
4426 |
|
|
floor_test ();
|
4427 |
|
|
#if 0
|
4428 |
|
|
nearbyint_test ();
|
4429 |
|
|
#endif
|
4430 |
|
|
rint_test ();
|
4431 |
|
|
#if 0
|
4432 |
|
|
lrint_test ();
|
4433 |
|
|
llrint_test ();
|
4434 |
|
|
round_test ();
|
4435 |
|
|
lround_test ();
|
4436 |
|
|
llround_test ();
|
4437 |
|
|
trunc_test ();
|
4438 |
|
|
#endif
|
4439 |
|
|
|
4440 |
|
|
/* Remainder functions: */
|
4441 |
|
|
fmod_test ();
|
4442 |
|
|
remainder_test ();
|
4443 |
|
|
#if 0
|
4444 |
|
|
remquo_test ();
|
4445 |
|
|
#endif
|
4446 |
|
|
|
4447 |
|
|
/* Manipulation functions: */
|
4448 |
|
|
copysign_test ();
|
4449 |
|
|
#if 0
|
4450 |
|
|
nextafter_test ();
|
4451 |
|
|
nexttoward_test ();
|
4452 |
|
|
|
4453 |
|
|
/* maximum, minimum and positive difference functions */
|
4454 |
|
|
fdim_test ();
|
4455 |
|
|
fmax_test ();
|
4456 |
|
|
fmin_test ();
|
4457 |
|
|
|
4458 |
|
|
/* Multiply and add: */
|
4459 |
|
|
fma_test ();
|
4460 |
|
|
|
4461 |
|
|
/* Complex functions: */
|
4462 |
|
|
cabs_test ();
|
4463 |
|
|
cacos_test ();
|
4464 |
|
|
cacosh_test ();
|
4465 |
|
|
carg_test ();
|
4466 |
|
|
casin_test ();
|
4467 |
|
|
casinh_test ();
|
4468 |
|
|
catan_test ();
|
4469 |
|
|
catanh_test ();
|
4470 |
|
|
ccos_test ();
|
4471 |
|
|
ccosh_test ();
|
4472 |
|
|
cexp_test ();
|
4473 |
|
|
cimag_test ();
|
4474 |
|
|
clog10_test ();
|
4475 |
|
|
clog_test ();
|
4476 |
|
|
conj_test ();
|
4477 |
|
|
cpow_test ();
|
4478 |
|
|
cproj_test ();
|
4479 |
|
|
creal_test ();
|
4480 |
|
|
csin_test ();
|
4481 |
|
|
csinh_test ();
|
4482 |
|
|
csqrt_test ();
|
4483 |
|
|
ctan_test ();
|
4484 |
|
|
ctanh_test ();
|
4485 |
|
|
#endif
|
4486 |
|
|
|
4487 |
|
|
/* Bessel functions: */
|
4488 |
|
|
#if 0
|
4489 |
|
|
j0_test ();
|
4490 |
|
|
j1_test ();
|
4491 |
|
|
jn_test ();
|
4492 |
|
|
y0_test ();
|
4493 |
|
|
y1_test ();
|
4494 |
|
|
yn_test ();
|
4495 |
|
|
#endif
|
4496 |
|
|
|
4497 |
|
|
if (output_ulps)
|
4498 |
|
|
fclose (ulps_file);
|
4499 |
|
|
|
4500 |
|
|
printf ("\nTest suite completed:\n");
|
4501 |
|
|
printf (" %d test cases plus %d tests for exception flags executed.\n",
|
4502 |
|
|
noTests, noExcTests);
|
4503 |
|
|
if (noXFails)
|
4504 |
|
|
printf (" %d expected failures occurred.\n", noXFails);
|
4505 |
|
|
if (noXPasses)
|
4506 |
|
|
printf (" %d unexpected passes occurred.\n", noXPasses);
|
4507 |
|
|
if (noErrors)
|
4508 |
|
|
{
|
4509 |
|
|
printf (" %d errors occurred.\n", noErrors);
|
4510 |
|
|
return 1;
|
4511 |
|
|
}
|
4512 |
|
|
printf (" All tests passed successfully.\n");
|
4513 |
|
|
|
4514 |
|
|
return 0;
|
4515 |
|
|
}
|
4516 |
|
|
|
4517 |
|
|
/*
|
4518 |
|
|
* Local Variables:
|
4519 |
|
|
* mode:c
|
4520 |
|
|
* End:
|
4521 |
|
|
*/
|