mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-25 12:11:10 +00:00
e6b6a85705
As recently discussed <https://sourceware.org/ml/libc-alpha/2014-02/msg00670.html>, it doesn't seem particularly useful for libm-test-ulps files to contain huge amounts of data on ulps for individual tests; just the global maximum observed ulps for each function, together with the verification of exceptions, errno and special results such as infinities and NaNs for each test, suffices to verify that a function's behavior on the given test inputs is within the expected accuracy. Removing this data reduces source tree churn caused by updates to these files when libm tests are added, and reduces the frequency with which testsuite additions actually need libm-test-ulps changes at all. Accordingly, this patch removes that data, so that individual tests get checked against the global bounds for the given function and only generate an error if those are exceeded. Tested x86_64 (including verifying that if an ulps value is artificially reduced, the tests do indeed fail as they should and "make regen-ulps" generates the expected changes). * math/libm-test.inc (struct ulp_data): Don't refer to ulps for individual tests in comment. (libm-test-ulps.h): Don't refer to test_ulps in #include comment. (prev_max_error): New variable. (prev_real_max_error): Likewise. (prev_imag_max_error): Likewise. (compare_ulp_data): Don't refer to test names in comment. (find_test_ulps): Remove function. (find_function_ulps): Likewise. (find_complex_function_ulps): Likewise. (init_max_error): Take function name as argument. Look up ulps for that function. (print_ulps): Remove function. (print_max_error): Use prev_max_error instead of calling find_function_ulps. (print_complex_max_error): Use prev_real_max_error and prev_imag_max_error instead of calling find_complex_function_ulps. (check_float_internal): Take max_ulp parameter instead of calling find_test_ulps. Don't call print_ulps. (check_float): Update call to check_float_internal. (check_complex): Update calls to check_float_internal. (START): Pass argument to init_max_error. * math/gen-libm-test.pl (%results): Don't include "kind" information. (parse_ulps): Don't handle ulps of individual tests. (print_ulps_file): Likewise. (output_ulps): Likewise. * math/README.libm-test: Update. * manual/libm-err-tab.pl (parse_ulps): Don't handle ulps of individual tests. * sysdeps/aarch64/libm-test-ulps: Remove individual test ulps. * sysdeps/alpha/fpu/libm-test-ulps: Likewise. * sysdeps/arm/libm-test-ulps: Likewise. * sysdeps/i386/fpu/libm-test-ulps: Likewise. * sysdeps/ia64/fpu/libm-test-ulps: Likewise. * sysdeps/m68k/coldfire/fpu/libm-test-ulps: Likewise. * sysdeps/m68k/m680x0/fpu/libm-test-ulps: Likewise. * sysdeps/microblaze/libm-test-ulps: Likewise. * sysdeps/mips/mips32/libm-test-ulps: Likewise. * sysdeps/mips/mips64/libm-test-ulps: Likewise. * sysdeps/powerpc/fpu/libm-test-ulps: Likewise. * sysdeps/powerpc/nofpu/libm-test-ulps: Likewise. * sysdeps/s390/fpu/libm-test-ulps: Likewise. * sysdeps/sh/libm-test-ulps: Likewise. * sysdeps/sparc/fpu/libm-test-ulps: Likewise. * sysdeps/tile/libm-test-ulps: Likewise. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise. * sysdeps/hppa/fpu/libm-test-ulps: Remove individual test ulps.
636 lines
7.4 KiB
Plaintext
636 lines
7.4 KiB
Plaintext
# Begin of automatic generation
|
|
|
|
# Maximal error of functions:
|
|
Function: "acos_downward":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "acos_towardzero":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "acos_upward":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "acosh":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "asin_downward":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "asin_towardzero":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "asin_upward":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "asinh":
|
|
double: 1
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "atan":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "atan2":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "atanh":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "cacos":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: Imaginary part of "cacos":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: Real part of "cacosh":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: Imaginary part of "cacosh":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: Real part of "casin":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "casin":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: Real part of "casinh":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: Imaginary part of "casinh":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "catan":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "catan":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "catanh":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "catanh":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "cbrt":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "ccos":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "ccos":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "ccosh":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "ccosh":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "cexp":
|
|
double: 2
|
|
float: 1
|
|
idouble: 2
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "cexp":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: Real part of "clog":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "clog":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "clog10":
|
|
double: 2
|
|
float: 2
|
|
idouble: 2
|
|
ifloat: 2
|
|
|
|
Function: Imaginary part of "clog10":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "cos":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "cos_downward":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: "cos_tonearest":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "cos_towardzero":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "cos_upward":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: "cosh":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "cosh_downward":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "cosh_tonearest":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "cosh_towardzero":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "cosh_upward":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: Real part of "cpow":
|
|
double: 2
|
|
float: 5
|
|
idouble: 2
|
|
ifloat: 5
|
|
|
|
Function: Imaginary part of "cpow":
|
|
float: 2
|
|
ifloat: 2
|
|
|
|
Function: Real part of "csin":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "csinh":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "csinh":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "csqrt":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "csqrt":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Real part of "ctan":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "ctan":
|
|
double: 2
|
|
float: 1
|
|
idouble: 2
|
|
ifloat: 1
|
|
|
|
Function: Real part of "ctan_downward":
|
|
double: 6
|
|
float: 5
|
|
idouble: 6
|
|
ifloat: 5
|
|
|
|
Function: Imaginary part of "ctan_downward":
|
|
double: 2
|
|
float: 1
|
|
idouble: 2
|
|
ifloat: 1
|
|
|
|
Function: Real part of "ctan_tonearest":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "ctan_tonearest":
|
|
double: 2
|
|
float: 1
|
|
idouble: 2
|
|
ifloat: 1
|
|
|
|
Function: Real part of "ctan_towardzero":
|
|
double: 5
|
|
float: 3
|
|
idouble: 5
|
|
ifloat: 3
|
|
|
|
Function: Imaginary part of "ctan_towardzero":
|
|
double: 2
|
|
float: 2
|
|
idouble: 2
|
|
ifloat: 2
|
|
|
|
Function: Real part of "ctan_upward":
|
|
double: 2
|
|
float: 3
|
|
idouble: 2
|
|
ifloat: 3
|
|
|
|
Function: Imaginary part of "ctan_upward":
|
|
double: 2
|
|
float: 3
|
|
idouble: 2
|
|
ifloat: 3
|
|
|
|
Function: Real part of "ctanh":
|
|
double: 2
|
|
float: 2
|
|
idouble: 2
|
|
ifloat: 2
|
|
|
|
Function: Imaginary part of "ctanh":
|
|
double: 2
|
|
float: 2
|
|
idouble: 2
|
|
ifloat: 2
|
|
|
|
Function: Real part of "ctanh_downward":
|
|
double: 4
|
|
float: 1
|
|
idouble: 4
|
|
ifloat: 1
|
|
|
|
Function: Imaginary part of "ctanh_downward":
|
|
double: 6
|
|
float: 5
|
|
idouble: 6
|
|
ifloat: 5
|
|
|
|
Function: Real part of "ctanh_tonearest":
|
|
double: 2
|
|
float: 2
|
|
idouble: 2
|
|
ifloat: 2
|
|
|
|
Function: Imaginary part of "ctanh_tonearest":
|
|
double: 2
|
|
float: 2
|
|
idouble: 2
|
|
ifloat: 2
|
|
|
|
Function: Real part of "ctanh_towardzero":
|
|
double: 2
|
|
float: 2
|
|
idouble: 2
|
|
ifloat: 2
|
|
|
|
Function: Imaginary part of "ctanh_towardzero":
|
|
double: 5
|
|
float: 3
|
|
idouble: 5
|
|
ifloat: 3
|
|
|
|
Function: Real part of "ctanh_upward":
|
|
double: 2
|
|
float: 3
|
|
idouble: 2
|
|
ifloat: 3
|
|
|
|
Function: Imaginary part of "ctanh_upward":
|
|
double: 2
|
|
float: 3
|
|
idouble: 2
|
|
ifloat: 3
|
|
|
|
Function: "erf":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "erfc":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "exp10":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "exp10_downward":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "exp10_tonearest":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "exp10_towardzero":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "exp10_upward":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "exp_downward":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "exp_towardzero":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "exp_upward":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "expm1":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "expm1_downward":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "expm1_tonearest":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "expm1_towardzero":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "expm1_upward":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "gamma":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "hypot":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "j0":
|
|
double: 2
|
|
float: 2
|
|
idouble: 2
|
|
ifloat: 2
|
|
|
|
Function: "j1":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: "jn":
|
|
double: 4
|
|
float: 4
|
|
idouble: 4
|
|
ifloat: 4
|
|
|
|
Function: "lgamma":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "log":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "log10":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: "log1p":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "pow":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "pow10":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "pow_downward":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "pow_tonearest":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "pow_towardzero":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "pow_upward":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "sin":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "sin_downward":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: "sin_tonearest":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "sin_towardzero":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "sin_upward":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: "sincos":
|
|
float: 1
|
|
ifloat: 1
|
|
|
|
Function: "sinh_downward":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "sinh_towardzero":
|
|
double: 1
|
|
idouble: 1
|
|
|
|
Function: "sinh_upward":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "tan_downward":
|
|
double: 1
|
|
float: 2
|
|
idouble: 1
|
|
ifloat: 2
|
|
|
|
Function: "tan_towardzero":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "tan_upward":
|
|
double: 1
|
|
float: 1
|
|
idouble: 1
|
|
ifloat: 1
|
|
|
|
Function: "tgamma":
|
|
double: 4
|
|
float: 3
|
|
idouble: 4
|
|
ifloat: 3
|
|
|
|
Function: "y0":
|
|
double: 2
|
|
float: 1
|
|
idouble: 2
|
|
ifloat: 1
|
|
|
|
Function: "y1":
|
|
double: 3
|
|
float: 2
|
|
idouble: 3
|
|
ifloat: 2
|
|
|
|
Function: "yn":
|
|
double: 3
|
|
float: 2
|
|
idouble: 3
|
|
ifloat: 2
|
|
|
|
# end of automatic generation
|