PATCH: More libm tests
H. J. Lu
hjl@lucon.org
Fri Apr 14 21:39:00 GMT 2006
Here are more libm tests.
H.J.
----
2006-04-14 H.J. Lu <hongjiu.lu@intel.com>
* math/libm-test.inc (acos_test) [!TEST_DOUBLE]: Add new
test.
(acos_test) [TEST_FLOAT]: Likewise.
(asin_test) [!TEST_LDOUBLE]: Likewise.
(asin_test) [TEST_FLOAT]: Likewise.
(atan_test) [!TEST_LDOUBLE]: Likewise.
(atan_test) [TEST_FLOAT]: Likewise.
(atan2_test) [!TEST_LDOUBLE]: Likewise.
(atan2_test) [TEST_FLOAT]: Likewise.
(cos_test) [TEST_FLOAT]: Likewise.
(cosh_test) [!TEST_LDOUBLE]: Likewise.
(cosh_test) [TEST_FLOAT]: Likewise.
(exp_test) [TEST_DOUBLE]: Likewise.
(exp_test) [TEST_FLOAT]: Likewise.
(exp10_test) [TEST_DOUBLE]: Likewise.
(exp10_test) [TEST_FLOAT]: Likewise.
(exp2_test) [TEST_DOUBLE]: Likewise.
(exp2_test) [TEST_FLOAT]: Likewise.
(fma_test) [TEST_FLOAT]: Likewise.
(hypot_test) [!TEST_LDOUBLE]: Likewise.
(hypot_test) [TEST_FLOAT]: Likewise.
(ldexp_test) [TEST_FLOAT]: Likewise.
(log_test) [!TEST_LDOUBLE]: Likewise.
(log_test) [TEST_FLOAT]: Likewise.
(log10_test) [TEST_DOUBLE]: Likewise.
(log10_test) [TEST_FLOAT]: Likewise.
(log2_test) [TEST_DOUBLE]: Likewise.
(log2_test) [TEST_FLOAT]: Likewise.
(pow_test) [TEST_DOUBLE]: Likewise.
(scalbn_test) [TEST_FLOAT]: Likewise.
(scalbln_test) [TEST_FLOAT]: Likewise.
(sin_test) [TEST_FLOAT]: Likewise.
(sincos_test) [TEST_FLOAT]: Likewise.
(sinh_test) [!TEST_LDOUBLE]: Likewise.
(sinh_test) [TEST_FLOAT]: Likewise.
(tan_test) [TEST_DOUBLE]: Likewise.
(tan_test) [TEST_FLOAT]: Likewise.
* sysdeps/i386/fpu/libm-test-ulps: Regenerated with gcc 4.1.
* sysdeps/ia64/fpu/libm-test-ulps: Likewise.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
--- libc/math/libm-test.inc.236p 2006-04-14 10:39:16.000000000 -0700
+++ libc/math/libm-test.inc 2006-04-14 14:19:01.000000000 -0700
@@ -749,6 +749,15 @@ acos_test (void)
TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L);
TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L);
TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L);
+
+#ifndef TEST_LDOUBLE
+ TEST_f_f (acos, -0X1.0000400038P-1, 0X1.0C1535FC8F6B7P+1);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (acos, 0X1.23C758P-1, 0X1.EDCA96P-1);
+#endif
+
END (acos);
}
@@ -810,6 +819,14 @@ asin_test (void)
TEST_f_f (asin, -1.0, -M_PI_2l);
TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L);
+#ifndef TEST_LDOUBLE
+ TEST_f_f (asin, 0X1.0000400480946P-1, 0X1.0C156D6EAA43BP-1);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (asin, 0X1.00381EP-1, 0X1.0C55F2P-1);
+#endif
+
END (asin);
}
@@ -867,6 +884,14 @@ atan_test (void)
TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L);
+#ifndef TEST_LDOUBLE
+ TEST_f_f (atan, 0X1.600000000018DP-1, 0X1.345F01CCE38C9P-1);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (atan, 0X1.5AB6FCP-2, 0X1.4E4EE8P-2);
+#endif
+
END (atan);
}
@@ -982,6 +1007,14 @@ atan2_test (void)
TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L);
+#ifndef TEST_LDOUBLE
+ TEST_ff_f (atan2, 0X1.FFFFFFFFFFFFFP-1022, 0X1P+1, 0X0.FFFFFFFFFFFFFP-1022);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_ff_f (atan2, 0X1.FFFFF6P-4, 0X1.FFFF88P+0, 0X1.FF562AP-5);
+#endif
+
END (atan2);
}
@@ -2038,6 +2071,10 @@ cos_test (void)
TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473);
#endif
+#ifdef TEST_FLOAT
+ TEST_f_f (cos, -0X1.0E8F16P+18, -0X1.3D07EEP-16);
+#endif
+
END (cos);
}
@@ -2063,6 +2100,14 @@ cosh_test (void)
TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L);
+#ifndef TEST_LDOUBLE
+ TEST_f_f (cosh, 0X1.FE3FFFFFFFFFCP+0, 0X1.DE6615F64417EP+1);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (cosh, 0X1.C12A5P-5, 0X1.00628AP+0);
+#endif
+
END (cosh);
}
@@ -2558,6 +2603,14 @@ exp_test (void)
TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L);
#endif
+#ifdef TEST_DOUBLE
+ TEST_f_f (exp, -0X1.624A618459B9P+9, 0X0.D4D48C958276DP-1022);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (exp, -0X1.9D1DA2P+6, 0X1P-149);
+#endif
+
END (exp);
}
@@ -2585,6 +2638,14 @@ exp10_test (void)
TEST_f_f (exp10, -1e6, 0);
TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L);
+#ifdef TEST_DOUBLE
+ TEST_f_f (exp10, -0X1.434E6420F4375P+8, 0X0.0000000000001P-1022);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (exp10, -0X1.66D3EAP+5, 0X1P-149);
+#endif
+
END (exp10);
}
@@ -2612,6 +2673,14 @@ exp2_test (void)
TEST_f_f (exp2, -1e6, 0);
TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L);
+#ifdef TEST_DOUBLE
+ TEST_f_f (exp2, -0X1.0C80000000001P+10, 0X0.0000000000001P-1022);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (exp2, -0X1.2A0002P+7, 0X1P-149);
+#endif
+
END (exp2);
}
@@ -2830,6 +2899,10 @@ fma_test (void)
TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L);
+#ifdef TEST_FLOAT
+ TEST_fff_f (fma, -0X1.DDDDEP-22, -0X1.B9999EP-23, -0X1P-20, -0X1.FFFFFCP-21);
+#endif
+
END (fma);
}
@@ -3056,6 +3129,14 @@ hypot_test (void)
TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L);
+#ifndef TEST_LDOUBLE
+ TEST_ff_f (hypot, -0X1.DBCBFB65DEFC8P-1, 0X1.129F8200AB11AP+0, 0X1.6B562B6216D6BP+0);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_ff_f (hypot, 0X1.627626P-11, 0X1.D89D88P-11, 0X1.276274P-10);
+#endif
+
END (hypot);
}
@@ -3268,6 +3349,10 @@ ldexp_test (void)
/* ldexp (x, 0) == x. */
TEST_ff_f (ldexp, 1.0L, 0L, 1.0L);
+
+#ifdef TEST_FLOAT
+ TEST_ff_f (ldexp, -0X1.555554P-2, -126, -0X1.55555P-128);
+#endif
}
@@ -4039,6 +4124,14 @@ log_test (void)
TEST_f_f (log, 10, M_LN10l);
TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L);
+#ifndef TEST_LDOUBLE
+ TEST_f_f (log, 0X1.19999973CF875P+0, 0X1.8663F56E1AA81P-4);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (log, 0X1.FFFF9P-1, -0X1.C00032P-19);
+#endif
+
END (log);
}
@@ -4072,6 +4165,14 @@ log10_test (void)
TEST_f_f (log10, M_El, M_LOG10El);
TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L);
+#ifdef TEST_DOUBLE
+ TEST_f_f (log10, 0X1.118C6318C6319P+0, 0X1.D7C3996E6179DP-6);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (log10, 0X1.7028E2P-3, -0X1.7D9722P-1);
+#endif
+
END (log10);
}
@@ -4140,6 +4241,14 @@ log2_test (void)
TEST_f_f (log2, 256.0, 8);
TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L);
+#ifdef TEST_DOUBLE
+ TEST_f_f (log2, 0X1.15AD6B5AD4B5AP+0, 0X1.E0525E2FD5D97P-4);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (log2, 0X1.40F572P-2, -0X1.AC7B44P+0);
+#endif
+
END (log2);
}
@@ -4644,6 +4753,10 @@ pow_test (void)
TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0);
#endif
+#ifdef TEST_DOUBLE
+ TEST_ff_f (pow, 0X1.FF460EB5F2376P-1, 0X1.BA7CBEB2690A8P+18, 0X1.FCB1E470B18DBP-929);
+#endif
+
END (pow);
}
@@ -5263,6 +5376,10 @@ scalbn_test (void)
TEST_fi_f (scalbn, 1, 0L, 1);
+#ifdef TEST_FLOAT
+ TEST_fi_f (scalbn, -0X1.555554P-2, -126, -0X1.55555P-128);
+#endif
+
END (scalbn);
}
@@ -5285,6 +5402,10 @@ scalbln_test (void)
TEST_fl_f (scalbln, 1, 0L, 1);
+#ifdef TEST_FLOAT
+ TEST_fl_f (scalbln, -0X1.555554P-2, -126, -0X1.55555P-128);
+#endif
+
END (scalbn);
}
@@ -5336,6 +5457,10 @@ sin_test (void)
TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868);
#endif
+#ifdef TEST_FLOAT
+ TEST_f_f (sin, 0X1.2A9F84P+18, -0X1.F43B3CP-16);
+#endif
+
END (sin);
}
@@ -5371,6 +5496,10 @@ sincos_test (void)
TEST_extra (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473);
#endif
+#ifdef TEST_FLOAT
+ TEST_extra (sincos, 0X1.FFFC08P+17, 0X1.FFFFF8P-1, -0X1.68C8B2P-11);
+#endif
+
END (sincos);
}
@@ -5396,6 +5525,14 @@ sinh_test (void)
TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L);
TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L);
+#ifndef TEST_LDOUBLE
+ TEST_f_f (sinh, -0X1.FFFFFFF0FFFFFP+1, -0X1.B4A38003CF6F3P+4);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (sinh, 0X1.FBE4BP-1, 0X1.29B154P+0);
+#endif
+
END (sinh);
}
@@ -5461,6 +5598,14 @@ tan_test (void)
TEST_f_f (tan, M_PI_4l, 1);
TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L);
+#ifdef TEST_DOUBLE
+ TEST_f_f (tan, 0X1.124252853ECF1P+7, -0X1.F7A6F84FD21CDP+0);
+#endif
+
+#ifdef TEST_FLOAT
+ TEST_f_f (tan, 0X1.924244P+18, 0X1.14A85EP-13);
+#endif
+
END (tan);
}
--- libc/sysdeps/i386/fpu/libm-test-ulps.236p 2006-04-14 06:52:58.000000000 -0700
+++ libc/sysdeps/i386/fpu/libm-test-ulps 2006-04-14 14:25:43.000000000 -0700
@@ -21,6 +21,11 @@ Test "asinh (-0X1.0A1A86A1A87P-1) == -0X
float: 1
ifloat: 1
+# atan2
+Test "atan2 (0X1.FFFFFFFFFFFFFP-1022, 0X1P+1) == 0X0.FFFFFFFFFFFFFP-1022":
+double: 2
+idouble: 2
+
# atanh
Test "atanh (0.75) == 0.972955074527656652552676371721589865":
ildouble: 2
@@ -424,6 +429,8 @@ Test "hypot (-0.7, -12.4) == 12.41974234
float: 1
Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
float: 1
+Test "hypot (-0X1.DBCBFB65DEFC8P-1, 0X1.129F8200AB11AP+0) == 0X1.6B562B6216D6BP+0":
+idouble: 1
Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
float: 1
Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
@@ -432,6 +439,8 @@ Test "hypot (0.7, -12.4) == 12.419742348
float: 1
Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
float: 1
+Test "hypot (0X1.627626P-11, 0X1.D89D88P-11) == 0X1.276274P-10":
+ifloat: 1
Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
float: 1
Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
@@ -577,6 +586,11 @@ ifloat: 2
ildouble: 1
ldouble: 1
+# log
+Test "log (0X1.19999973CF875P+0) == 0X1.8663F56E1AA81P-4":
+float: 4
+ifloat: 4
+
# log10
Test "log10 (0.75) == -0.124938736608299953132449886193870744":
ildouble: 1
@@ -587,6 +601,11 @@ ifloat: 1
ildouble: 1
ldouble: 1
+# pow
+Test "pow (0X1.FF460EB5F2376P-1, 0X1.BA7CBEB2690A8P+18) == 0X1.FCB1E470B18DBP-929":
+double: 1
+idouble: 1
+
# sincos
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
double: 1
@@ -603,6 +622,8 @@ ldouble: 1
Test "sinh (0.75) == 0.822316731935829980703661634446913849":
double: 1
ildouble: 1
+Test "sinh (0X1.FBE4BP-1) == 0X1.29B154P+0":
+float: 1
# tgamma
Test "tgamma (-0.5) == -2 sqrt (pi)":
@@ -754,6 +775,10 @@ Function: "asinh":
float: 1
ifloat: 1
+Function: "atan2":
+double: 2
+idouble: 2
+
Function: "atanh":
ildouble: 2
ldouble: 1
@@ -972,6 +997,8 @@ ldouble: 1
Function: "hypot":
float: 1
+idouble: 1
+ifloat: 1
Function: "j0":
double: 2
@@ -1004,8 +1031,8 @@ ildouble: 1
ldouble: 1
Function: "log":
-float: 1
-ifloat: 1
+float: 4
+ifloat: 4
Function: "log10":
float: 1
@@ -1013,6 +1040,10 @@ ifloat: 1
ildouble: 1
ldouble: 1
+Function: "pow":
+double: 1
+idouble: 1
+
Function: "sincos":
double: 1
float: 1
@@ -1023,6 +1054,7 @@ ldouble: 1
Function: "sinh":
double: 1
+float: 1
ildouble: 1
Function: "tan":
--- libc/sysdeps/ia64/fpu/libm-test-ulps.236p 2006-04-14 06:46:15.000000000 -0700
+++ libc/sysdeps/ia64/fpu/libm-test-ulps 2006-04-14 14:03:30.000000000 -0700
@@ -215,6 +215,11 @@ float: 1
idouble: 2
ifloat: 1
+# cosh
+Test "cosh (0X1.C12A5P-5) == 0X1.00628AP+0":
+float: 1
+ifloat: 1
+
# cpow
Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
float: 1
@@ -521,6 +526,11 @@ ifloat: 2
ildouble: 1
ldouble: 1
+# log
+Test "log (0X1.19999973CF875P+0) == 0X1.8663F56E1AA81P-4":
+float: 4
+ifloat: 4
+
# log10
Test "log10 (e) == log10(e)":
float: 1
@@ -543,6 +553,11 @@ ifloat: 1
ildouble: 1
ldouble: 1
+# sinh
+Test "sinh (0X1.FBE4BP-1) == 0X1.29B154P+0":
+float: 1
+ifloat: 1
+
# tgamma
Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
double: 1
@@ -813,6 +828,10 @@ ifloat: 1
ildouble: 1
ldouble: 1
+Function: "cosh":
+float: 1
+ifloat: 1
+
Function: Real part of "cpow":
double: 2
float: 5
@@ -924,8 +943,8 @@ ildouble: 1
ldouble: 1
Function: "log":
-float: 1
-ifloat: 1
+float: 4
+ifloat: 4
Function: "log10":
float: 1
@@ -941,6 +960,10 @@ ifloat: 1
ildouble: 1
ldouble: 1
+Function: "sinh":
+float: 1
+ifloat: 1
+
Function: "tan":
double: 1
idouble: 1
--- libc/sysdeps/x86_64/fpu/libm-test-ulps.236p 2006-04-14 06:26:49.000000000 -0700
+++ libc/sysdeps/x86_64/fpu/libm-test-ulps 2006-04-14 14:26:08.000000000 -0700
@@ -21,6 +21,9 @@ ldouble: 1
Test "asin (0.75) == 0.848062078981481008052944338998418080":
ildouble: 1
ldouble: 1
+Test "asin (0X1.00381EP-1) == 0X1.0C55F2P-1":
+float: 1
+ifloat: 1
Test "asin (1.0) == pi/2":
ildouble: 1
ldouble: 1
@@ -42,6 +45,12 @@ ifloat: 1
Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
float: 1
ifloat: 1
+Test "atan2 (0X1.FFFFF6P-4, 0X1.FFFF88P+0) == 0X1.FF562AP-5":
+float: 1
+ifloat: 1
+Test "atan2 (0X1.FFFFFFFFFFFFFP-1022, 0X1P+1) == 0X0.FFFFFFFFFFFFFP-1022":
+double: 2
+idouble: 2
Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
float: 1
ifloat: 1
@@ -498,6 +507,9 @@ ifloat: 1
Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
float: 1
ifloat: 1
+Test "hypot (0X1.627626P-11, 0X1.D89D88P-11) == 0X1.276274P-10":
+float: 1
+ifloat: 1
Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
float: 1
ifloat: 1
@@ -670,6 +682,11 @@ ifloat: 2
ildouble: 1
ldouble: 1
+# log
+Test "log (0X1.19999973CF875P+0) == 0X1.8663F56E1AA81P-4":
+float: 4
+ifloat: 4
+
# log10
Test "log10 (0.75) == -0.124938736608299953132449886193870744":
double: 1
@@ -678,6 +695,12 @@ idouble: 1
ifloat: 2
ildouble: 1
ldouble: 1
+Test "log10 (0X1.118C6318C6319P+0) == 0X1.D7C3996E6179DP-6":
+double: 1
+idouble: 1
+Test "log10 (0X1.7028E2P-3) == -0X1.7D9722P-1":
+float: 1
+ifloat: 1
Test "log10 (e) == log10(e)":
float: 1
ifloat: 1
@@ -710,6 +733,11 @@ Test "sincos (pi/6, &sin_res, &cos_res)
float: 1
ifloat: 1
+# sinh
+Test "sinh (-0X1.FFFFFFF0FFFFFP+1) == -0X1.B4A38003CF6F3P+4":
+float: 1
+ifloat: 1
+
# tanh
Test "tanh (-0X1.D95F582C6D0B6P-3) == -0X1.D11E67E06147DP-3":
double: 2
@@ -905,6 +933,8 @@ idouble: 2
ifloat: 2
Function: "asin":
+float: 1
+ifloat: 1
ildouble: 1
ldouble: 1
@@ -915,7 +945,9 @@ idouble: 2
ifloat: 2
Function: "atan2":
+double: 2
float: 1
+idouble: 2
ifloat: 1
Function: "atanh":
@@ -1176,6 +1208,10 @@ ifloat: 2
ildouble: 1
ldouble: 1
+Function: "log":
+float: 4
+ifloat: 4
+
Function: "log10":
double: 1
float: 2
@@ -1198,6 +1234,10 @@ ifloat: 1
ildouble: 1
ldouble: 1
+Function: "sinh":
+float: 1
+ifloat: 1
+
Function: "tan":
double: 1
idouble: 1
More information about the Libc-alpha
mailing list