1999-10-19  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/fpu/s_nextafterl.c: Add __nextafterl and nextafterl
	aliases.

	* sysdeps/ieee754/flt-32/e_lgammaf_r.c: Don't handle -Inf special.

	* sysdeps/ieee754/flt-32/e_gammaf_r.c (__ieee754_gammaf_r): Check
	for -Inf and return NaN.

	* math/gen-libm-test.pl: Fix program name in help message.

	* math/libm-test.inc (check_complex): It's Imaginary, not Complex.

	* math/libm-test.inc (gamma_test): Result of gamma(-inf) is +inf.

	* sysdeps/i386/Implies: Correct order of libm directories.
This commit is contained in:
Ulrich Drepper 1999-10-20 03:20:31 +00:00
parent fe559c5e1c
commit f30e0cd35e
9 changed files with 30 additions and 929 deletions

View File

@ -1,3 +1,21 @@
1999-10-19 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/i386/fpu/s_nextafterl.c: Add __nextafterl and nextafterl
aliases.
* sysdeps/ieee754/flt-32/e_lgammaf_r.c: Don't handle -Inf special.
* sysdeps/ieee754/flt-32/e_gammaf_r.c (__ieee754_gammaf_r): Check
for -Inf and return NaN.
* math/gen-libm-test.pl: Fix program name in help message.
* math/libm-test.inc (check_complex): It's Imaginary, not Complex.
* math/libm-test.inc (gamma_test): Result of gamma(-inf) is +inf.
* sysdeps/i386/Implies: Correct order of libm directories.
1999-10-19 Andreas Jaeger <aj@suse.de>
* include/bits/ipc.h: Remove K&R compatibility.

View File

@ -164,7 +164,7 @@ main (int argc, char *argv[])
if (remaining == argc)
{
if (process_file (cd, stdin, output) != 0)
status = 1;
status = EXIT_FAILURE;
}
else
do

View File

@ -79,7 +79,7 @@ $ulps_file = 'libm-test-ulps';
$output_dir = '';
if ($opt_h) {
print "Usage: generate.pl [OPTIONS]\n";
print "Usage: gen-libm-test.pl [OPTIONS]\n";
print " -h print this help, then exit\n";
print " -o DIR directory where generated files will be placed\n";
print " -n generate sorted file NewUlps from libm-test-ulps\n";

View File

@ -466,7 +466,7 @@ check_complex (const char *test_name, FLOAT __complex__ computed,
part_exp = __real__ expected;
check_float (str, part_comp, part_exp, max_ulp, xfail, exception);
sprintf (str, "Complex part of: %s", test_name);
sprintf (str, "Imaginary part of: %s", test_name);
part_comp = __imag__ computed;
part_exp = __imag__ expected;
/* Don't check again for exceptions, just pass through the
@ -2384,13 +2384,13 @@ gamma_test (void)
TEST_f_f (gamma, plus_infty, plus_infty);
TEST_f_f (gamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
TEST_f_f (gamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
TEST_f_f (gamma, minus_infty, nan_value, INVALID_EXCEPTION);
TEST_f_f (gamma, minus_infty, plus_infty);
TEST_f_f1 (gamma, 1, 0, 1);
TEST_f_f1 (gamma, 3, M_LN2l, 1);
TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1);
TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl,-1);
TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1);
END (gamma);
}

View File

@ -1,4 +1,4 @@
wordsize-32
ieee754/flt-32
ieee754/dbl-64
ieee754/ldbl-96
ieee754/dbl-64
ieee754/flt-32

View File

@ -100,3 +100,5 @@ static char rcsid[] = "$NetBSD: $";
return x;
}
weak_alias (__nextafterl, nextafterl)
strong_alias (__nextafterl, __nexttowardl)
weak_alias (__nextafterl, nexttowardl)

View File

@ -1,920 +0,0 @@
# Begin of automatic generation
# acos
Test "acos (0.7) == 0.7953988301841435554":
ildouble: 1149
ldouble: 1149
# asin
Test "asin (0.7) == 0.7753974966107530637":
double: 1
ildouble: 1147
ldouble: 1147
# asinh
Test "asinh (-0) == -0":
idouble: 0
ifloat: 0
ildouble: 0
Test "asinh (0.7) == 0.652666566082355786":
ildouble: 656
ldouble: 656
# atan
Test "atan (0.7) == 0.6107259643892086165":
ildouble: 549
ldouble: 549
# atan2
Test "atan2 (0.4, 0.0003) == 1.5700463269355215718":
ildouble: 1
ldouble: 1
Test "atan2 (0.7, 1) == 0.6107259643892086165":
ildouble: 549
ldouble: 549
# atanh
Test "atanh (-0) == -0":
idouble: 0
ifloat: 0
ildouble: 0
Test "atanh (0.7) == 0.8673005276940531944":
double: 1
idouble: 1
ildouble: 1605
ldouble: 1605
# cabs
Test "cabs (-0.7 + 12.4 i) == 12.41974234837422060118":
float: 1
ifloat: 1
Test "cabs (-0.7 - 12.4 i) == 12.41974234837422060118":
float: 1
ifloat: 1
Test "cabs (-12.4 + 0.7 i) == 12.41974234837422060118":
float: 1
ifloat: 1
Test "cabs (-12.4 - 0.7 i) == 12.41974234837422060118":
float: 1
ifloat: 1
Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508":
double: 1
idouble: 1
ildouble: 560
ldouble: 560
Test "cabs (0.7 + 12.4 i) == 12.41974234837422060118":
float: 1
ifloat: 1
# cbrt
Test "cbrt (-0.001) == -0.1":
ildouble: 716
ldouble: 716
Test "cbrt (-27.0) == -3.0":
ildouble: 1
ldouble: 1
Test "cbrt (0.7) == 0.8879040017426007084":
double: 1
idouble: 1
ildouble: 346
ldouble: 346
Test "cbrt (0.970299) == 0.99":
ildouble: 306
ldouble: 306
# cos
Test "cos (0.7) == 0.7648421872844884262":
double: 1
idouble: 1
ildouble: 529
ldouble: 529
Test "cos (M_PI_6l * 2.0) == 0.5":
double: 1
float: 0.5
idouble: 1
ifloat: 0.5
Test "cos (M_PI_6l * 4.0) == -0.5":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 0.5
ldouble: 0.5
Test "cos (pi/2) == 0":
double: 0.2758
float: 0.3667
idouble: 0.2758
ifloat: 0.3667
ildouble: 0.25
ldouble: 0.25
# cosh
Test "cosh (0.7) == 1.255169005630943018":
ildouble: 309
ldouble: 309
# erfc
Test "erfc (0.7) == 0.32219880616258152702":
double: 1
idouble: 1
Test "erfc (1.2) == 0.089686021770364619762":
float: 1
ifloat: 1
Test "erfc (2.0) == 0.0046777349810472658379":
double: 1
idouble: 1
Test "erfc (4.1) == 0.67000276540848983727e-8":
double: 24
float: 12
idouble: 24
ifloat: 12
# exp
Test "exp (0.7) == 2.0137527074704765216":
ildouble: 412
ldouble: 412
# exp10
Test "exp10 (-1) == 0.1":
ildouble: 818
ldouble: 818
Test "exp10 (0.7) == 5.0118723362727228500":
double: 1
idouble: 1
ildouble: 1182
ldouble: 1182
Test "exp10 (3) == 1000":
ildouble: 8
ldouble: 8
# exp2
Test "exp2 (0.7) == 1.6245047927124710452":
ildouble: 462
ldouble: 462
# expm1
Test "expm1 (-0) == -0":
idouble: 0
ifloat: 0
ildouble: 0
Test "expm1 (0.7) == 1.0137527074704765216":
ildouble: 825
ldouble: 825
# fmod
Test "fmod (-6.5, -2.3) == -1.9":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 4096
ldouble: 4096
Test "fmod (-6.5, 2.3) == -1.9":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 4096
ldouble: 4096
Test "fmod (6.5, -2.3) == 1.9":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 4096
ldouble: 4096
Test "fmod (6.5, 2.3) == 1.9":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 4096
ldouble: 4096
# hypot
Test "hypot (-0.7, -12.4) == 12.41974234837422060118":
float: 1
ildouble: 406
ldouble: 406
Test "hypot (-0.7, 12.4) == 12.41974234837422060118":
float: 1
ildouble: 406
ldouble: 406
Test "hypot (-12.4, -0.7) == 12.41974234837422060118":
float: 1
ildouble: 406
ldouble: 406
Test "hypot (-12.4, 0.7) == 12.41974234837422060118":
float: 1
ildouble: 406
ldouble: 406
Test "hypot (0.7, -12.4) == 12.41974234837422060118":
float: 1
ildouble: 406
ldouble: 406
Test "hypot (0.7, 1.2) == 1.3892443989449804508":
double: 1
ildouble: 560
ldouble: 560
Test "hypot (0.7, 12.4) == 12.41974234837422060118":
float: 1
ildouble: 406
ldouble: 406
Test "hypot (12.4, -0.7) == 12.41974234837422060118":
float: 1
ildouble: 406
ldouble: 406
Test "hypot (12.4, 0.7) == 12.41974234837422060118":
float: 1
ildouble: 406
ldouble: 406
# j0
Test "j0 (10.0) == -0.24593576445134833520":
float: 1
ifloat: 1
Test "j0 (2.0) == 0.22389077914123566805":
float: 1
ifloat: 1
Test "j0 (8.0) == 0.17165080713755390609":
float: 1
ifloat: 1
# j1
Test "j1 (10.0) == 0.043472746168861436670":
float: 1
ifloat: 1
Test "j1 (2.0) == 0.57672480775687338720":
double: 1
idouble: 1
Test "j1 (8.0) == 0.23463634685391462438":
float: 1
ifloat: 1
# jn
Test "jn (0, 10.0) == -0.24593576445134833520":
float: 1
ifloat: 1
Test "jn (0, 2.0) == 0.22389077914123566805":
float: 1
ifloat: 1
Test "jn (0, 8.0) == 0.17165080713755390609":
float: 1
ifloat: 1
Test "jn (1, 10.0) == 0.043472746168861436670":
float: 1
ifloat: 1
Test "jn (1, 2.0) == 0.57672480775687338720":
double: 1
idouble: 1
Test "jn (1, 8.0) == 0.23463634685391462438":
float: 1
ifloat: 1
Test "jn (10, 0.1) == 0.26905328954342155795e-19":
double: 4
float: 2
idouble: 4
ifloat: 2
Test "jn (10, 0.7) == 0.75175911502153953928e-11":
double: 3
float: 1
idouble: 3
ifloat: 1
Test "jn (10, 10.0) == 0.20748610663335885770":
float: 1
ifloat: 1
Test "jn (3, 0.1) == 0.000020820315754756261429":
double: 1
idouble: 1
Test "jn (3, 0.7) == 0.0069296548267508408077":
double: 2
idouble: 2
Test "jn (3, 10.0) == 0.058379379305186812343":
float: 1
ifloat: 1
# lgamma
Test "lgamma (0.7) == 0.26086724653166651439":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "lgamma (1.2) == -0.853740900033158497197e-1":
double: 1
float: 2
idouble: 1
ifloat: 2
# log
Test "log (0.7) == -0.35667494393873237891":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2341
ldouble: 2341
Test "log (e) == 1":
float: 0.5
ifloat: 0.5
# log10
Test "log10 (0.7) == -0.15490195998574316929":
double: 1
idouble: 1
ildouble: 2033
ldouble: 2033
Test "log10 (e) == log10(e)":
float: 1
ifloat: 1
ildouble: 1
ldouble: 1
# log1p
Test "log1p (-0.3) == -0.35667494393873237891":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 585
ldouble: 585
# log2
Test "log2 (0.7) == -0.51457317282975824043":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1688
ldouble: 1688
# pow
Test "pow (-0, 1) == -0":
idouble: 0
ifloat: 0
ildouble: 0
Test "pow (-0, 11) == -0":
idouble: 0
ifloat: 0
ildouble: 0
Test "pow (-0, 27) == -0":
idouble: 0
ifloat: 0
ildouble: 0
Test "pow (0.7, 1.2) == 0.65180494056638638188":
ildouble: 725
ldouble: 725
# sin
Test "sin (0.7) == 0.64421768723769105367":
ildouble: 627
ldouble: 627
# sincos
Test "sincos (0.7, &sin_res, &cos_res) puts 0.64421768723769105367 in sin_res":
ildouble: 627
ldouble: 627
Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res":
double: 1
idouble: 1
ildouble: 528
ldouble: 528
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
double: 1
float: 0.5
idouble: 1
ifloat: 0.5
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
double: 0.2758
float: 0.3667
idouble: 0.2758
ifloat: 0.3667
ildouble: 0.25
ldouble: 0.25
# sinh
Test "sinh (-0) == -0":
idouble: 0
ifloat: 0
ildouble: 0
Test "sinh (0.7) == 0.75858370183953350346":
float: 1
ifloat: 1
ildouble: 1028
ldouble: 1029
# sqrt
Test "sqrt (0.7) == 0.83666002653407554798":
ildouble: 489
ldouble: 489
Test "sqrt (15239.9025) == 123.45":
ildouble: 325
ldouble: 325
# tan
Test "tan (0.7) == 0.84228838046307944813":
ildouble: 1401
ldouble: 1401
Test "tan (pi/4) == 1":
double: 0.5
idouble: 0.5
# tanh
Test "tanh (-0) == -0":
idouble: 0
ifloat: 0
ildouble: 0
Test "tanh (0.7) == 0.60436777711716349631":
ildouble: 521
ldouble: 521
# tgamma
Test "tgamma (-0.5) == -2 sqrt (pi)":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "tgamma (0.5) == sqrt (pi)":
float: 1
ifloat: 1
Test "tgamma (0.7) == 1.29805533264755778568":
double: 1
float: 1
idouble: 1
ifloat: 1
# y0
Test "y0 (0.1) == -1.5342386513503668441":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "y0 (0.7) == -0.19066492933739506743":
double: 2
idouble: 2
Test "y0 (1.0) == 0.088256964215676957983":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "y0 (1.5) == 0.38244892379775884396":
float: 1
ifloat: 1
Test "y0 (10.0) == 0.055671167283599391424":
float: 1
ifloat: 1
Test "y0 (8.0) == 0.22352148938756622053":
float: 1
ifloat: 1
# y1
Test "y1 (0.1) == -6.4589510947020269877":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "y1 (0.7) == -1.1032498719076333697":
double: 1
idouble: 1
Test "y1 (1.0) == -0.78121282130028871655":
double: 1
idouble: 1
Test "y1 (1.5) == -0.41230862697391129595":
float: 1
ifloat: 1
Test "y1 (10.0) == 0.24901542420695388392":
double: 2
float: 2
idouble: 2
ifloat: 2
Test "y1 (2.0) == -0.10703243154093754689":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "y1 (8.0) == -0.15806046173124749426":
float: 2
ifloat: 2
# yn
Test "yn (0, 0.1) == -1.5342386513503668441":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "yn (0, 0.7) == -0.19066492933739506743":
double: 2
idouble: 2
Test "yn (0, 1.0) == 0.088256964215676957983":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "yn (0, 1.5) == 0.38244892379775884396":
float: 1
ifloat: 1
Test "yn (0, 10.0) == 0.055671167283599391424":
float: 1
ifloat: 1
Test "yn (0, 8.0) == 0.22352148938756622053":
float: 1
ifloat: 1
Test "yn (1, 0.1) == -6.4589510947020269877":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "yn (1, 0.7) == -1.1032498719076333697":
double: 1
idouble: 1
Test "yn (1, 1.0) == -0.78121282130028871655":
double: 1
idouble: 1
Test "yn (1, 1.5) == -0.41230862697391129595":
float: 1
ifloat: 1
Test "yn (1, 10.0) == 0.24901542420695388392":
double: 2
float: 2
idouble: 2
ifloat: 2
Test "yn (1, 2.0) == -0.10703243154093754689":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "yn (1, 8.0) == -0.15806046173124749426":
float: 2
ifloat: 2
Test "yn (10, 0.1) == -0.11831335132045197885e19":
double: 2
float: 1
idouble: 2
ifloat: 1
Test "yn (10, 0.7) == -0.42447194260703866924e10":
double: 6
float: 3
idouble: 6
ifloat: 3
Test "yn (10, 1.0) == -0.12161801427868918929e9":
float: 1
ifloat: 1
Test "yn (10, 10.0) == -0.35981415218340272205":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "yn (10, 2.0) == -129184.54220803928264":
float: 1
ifloat: 1
Test "yn (3, 0.1) == -5099.3323786129048894":
double: 1
float: 1
idouble: 1
ifloat: 1
Test "yn (3, 0.7) == -15.819479052819633505":
double: 2
idouble: 2
Test "yn (3, 10.0) == -0.25136265718383732978":
double: 1
float: 1
idouble: 1
ifloat: 1
# Maximal error of functions:
Function "acos":
ildouble: 1149
ldouble: 1149
Function "asin":
double: 1
ildouble: 1147
ldouble: 1147
Function "asinh":
ildouble: 656
ldouble: 656
Function "atan":
ildouble: 549
ldouble: 549
Function "atan2":
ildouble: 549
ldouble: 549
Function "atanh":
double: 1
idouble: 1
ildouble: 1605
ldouble: 1605
Function "cabs":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 560
ldouble: 560
Function "cacos":
double: 1
float: 2
idouble: 1
ifloat: 2
ildouble: 329
ldouble: 329
Function "cacosh":
double: 1
float: 4
idouble: 1
ifloat: 4
ildouble: 328
ldouble: 328
Function "casin":
double: 3
float: 2
idouble: 3
ifloat: 2
ildouble: 603
ldouble: 603
Function "casinh":
double: 5
float: 6
idouble: 5
ifloat: 6
ildouble: 892
ldouble: 892
Function "catan":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 474
ldouble: 474
Function "catanh":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 447
ldouble: 447
Function "cbrt":
double: 1
idouble: 1
ildouble: 716
ldouble: 716
Function "ccos":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1901
ldouble: 1901
Function "ccosh":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1467
ldouble: 1467
Function "cexp":
float: 1
ifloat: 1
ildouble: 1067
ldouble: 1067
Function "clog":
ildouble: 1
ldouble: 1
Function "clog10":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 1402
ldouble: 1402
Function "cos":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 529
ldouble: 529
Function "cosh":
ildouble: 309
ldouble: 309
Function "cpow":
double: 1.103
float: 4
idouble: 1.103
ifloat: 4
ildouble: 2
ldouble: 2
Function "csin":
ildouble: 966
ldouble: 966
Function "csinh":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 477
ldouble: 477
Function "csqrt":
double: 1
idouble: 1
ildouble: 237
ldouble: 237
Function "ctan":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 690
ldouble: 690
Function "ctanh":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 3074
ldouble: 3074
Function "erfc":
double: 24
float: 12
idouble: 24
ifloat: 12
Function "exp":
ildouble: 412
ldouble: 412
Function "exp10":
double: 1
idouble: 1
ildouble: 1182
ldouble: 1182
Function "exp2":
ildouble: 462
ldouble: 462
Function "expm1":
ildouble: 825
ldouble: 825
Function "fmod":
double: 2
float: 1
idouble: 2
ifloat: 1
ildouble: 4096
ldouble: 4096
Function "hypot":
double: 1
float: 1
ildouble: 560
ldouble: 560
Function "j0":
float: 1
ifloat: 1
Function "j1":
double: 1
float: 1
idouble: 1
ifloat: 1
Function "jn":
double: 4
float: 2
idouble: 4
ifloat: 2
Function "lgamma":
double: 1
float: 2
idouble: 1
ifloat: 2
Function "log":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2341
ldouble: 2341
Function "log10":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 2033
ldouble: 2033
Function "log1p":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 585
ldouble: 585
Function "log2":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 1688
ldouble: 1688
Function "pow":
ildouble: 725
ldouble: 725
Function "sin":
ildouble: 627
ldouble: 627
Function "sincos":
double: 1
float: 1
idouble: 1
ifloat: 1
ildouble: 627
ldouble: 627
Function "sinh":
float: 1
ifloat: 1
ildouble: 1028
ldouble: 1029
Function "sqrt":
ildouble: 489
ldouble: 489
Function "tan":
double: 0.5
idouble: 0.5
ildouble: 1401
ldouble: 1401
Function "tanh":
ildouble: 521
ldouble: 521
Function "tgamma":
double: 1
float: 1
idouble: 1
ifloat: 1
Function "y0":
double: 2
float: 1
idouble: 2
ifloat: 1
Function "y1":
double: 2
float: 2
idouble: 2
ifloat: 2
Function "yn":
double: 6
float: 3
idouble: 6
ifloat: 3
# end of automatic generation

View File

@ -44,6 +44,9 @@ __ieee754_gammaf_r (float x, int *signgamp)
*signgamp = 0;
return (x - x) / (x - x);
}
if (hx == 0xff800000)
/* x == -Inf. According to ISO this is NaN. */
return x - x;
/* XXX FIXME. */
return __ieee754_expf (__ieee754_lgammaf_r (x, signgamp));

View File

@ -162,8 +162,6 @@ static float zero= 0.0000000000e+00;
/* purge off +-inf, NaN, +-0, and negative arguments */
*signgamp = 1;
if ((unsigned int)hx==0xff800000)
return x-x;
ix = hx&0x7fffffff;
if(ix>=0x7f800000) return x*x;
if(ix==0) return one/fabsf(x);