From patchwork Thu Mar 20 17:15:06 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 194 Return-Path: X-Original-To: siddhesh@wilcox.dreamhost.com Delivered-To: siddhesh@wilcox.dreamhost.com Received: from homiemail-mx20.g.dreamhost.com (caibbdcaaahc.dreamhost.com [208.113.200.72]) by wilcox.dreamhost.com (Postfix) with ESMTP id 52E423600CD for ; Thu, 20 Mar 2014 10:15:22 -0700 (PDT) Received: by homiemail-mx20.g.dreamhost.com (Postfix, from userid 14307373) id 1312C40DE4FA7; Thu, 20 Mar 2014 10:15:22 -0700 (PDT) X-Original-To: glibc@patchwork.siddhesh.in Delivered-To: x14307373@homiemail-mx20.g.dreamhost.com Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by homiemail-mx20.g.dreamhost.com (Postfix) with ESMTPS id D9BC041608D08 for ; Thu, 20 Mar 2014 10:15:21 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:mime-version :content-type; q=dns; s=default; b=wAcMApkGPGn58yRdzCGNQZWbWfH0i aXfotzz6AbUSyfUB20ZK81TfAkLXsQV7IJPCeCu6qK4qAriSZZACBD8cnPsd7tcD 7PW2tMdGsNIYXbIYgBDzauTvBkyhITW4zXqkn5E5OVWzLF276oVLbJBOjcJhCtVV lz6DkuRouh+0LY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:mime-version :content-type; s=default; bh=HcwnJnoPwgViNvH5HDXMpfL7NV0=; b=kzP dP9GbVCradiLCbC3xKXcQPVl3RTW4Rjm/puXCeSLA6tRXH95QqODm2UiSTI6L+mf EGKBKHNL66KaaqfEaVqrsgJ+rc2TGxukSDYrtCdYYXy15U0YTs3JnD6jh1N/dXOV mw566nM6zfx1wzmHEZEfPFZ41EUsLhqg7z5eh1SA= Received: (qmail 11749 invoked by alias); 20 Mar 2014 17:15:19 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 11739 invoked by uid 89); 20 Mar 2014 17:15:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Date: Thu, 20 Mar 2014 17:15:06 +0000 From: "Joseph S. Myers" To: Subject: Test most libm functions in all rounding modes Message-ID: MIME-Version: 1.0 X-DH-Original-To: glibc@patchwork.siddhesh.in This patch makes libm-test.inc tests of most functions use ALL_RM_TEST unless there was some reason to defer that change for a particular function. I started out planning to defer the change for pow (bug 16315), cexp / ccos / ccosh / csin / csinh (likely fallout from exp, bug 16284) and cpow (exact expectations for signs of exact zero results not wanted). Testing on x86_64 and x86 showed additional failures for acosh, cacos, catan, catanh, clog, clog10, jn, log, log10, log1p, log2, tgamma, yn, so making the change for those functions was deferred as well, pending investigation to show which of these represent distinct bugs (some such bugs may already be filed) and appropriate fixing / XFAILing. Failures include wrong signs of zero results, errors slightly above the 9ulp bound (in such cases it may make sense for functions to set round-to-nearest internally to reduce error accumulation), large errors and incorrect overflow/underflow for the rounding mode (with consequent missing errno settings in some cases). It's possible some could be issues with test expectations, though I didn't notice any that were obviously like that (I added NO_TEST_INLINE for cases that were failing for ildoubl on x86 and where it seemed reasonable for them to fail for the fast-math inlines). There may of course be failures on other architectures for functions that didn't fail on x86_64 or x86, in which case the usual rule applies: file a bug (preferably identifying the underlying problem function, in cases where function A calls function B and a problem with function B may present in the test results for function A) if not already in Bugzilla then fix or XFAIL. Tested x86_64 and x86 and ulps updated accordingly. 2014-03-20 Joseph Myers * math/libm-test.inc (asinh_test): Use ALL_RM_TEST. (atan_test): Likewise. (atanh_test_data): Use NO_TEST_INLINE for two tests. (atanh_test): Use ALL_RM_TEST. (atan2_test_data): Likewise. (cabs_test): Likewise. (cacosh_test): Likewise. (carg_test): Likewise. (casin_test): Likewise. (casinh_test): Likewise. (cbrt_test): Likewise. (csqrt_test): Likewise. (erf_test): Likewise. (erfc_test): Likewise. (pow10_test): Likewise. (exp2_test): Likewise. (hypot_test): Likewise. (j0_test): Likewise. (j1_test): Likewise. (lgamma_test): Likewise. (gamma_test): Likewise. (sincos_test): Likewise. (tanh_test): Likewise. (y0_test): Likewise. (y1_test): Likewise. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise. diff --git a/math/libm-test.inc b/math/libm-test.inc index b329b00..7abc7c1 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -1830,9 +1830,7 @@ static const struct test_f_f_data asinh_test_data[] = static void asinh_test (void) { - START (asinh, 0); - RUN_TEST_LOOP_f_f (asinh, asinh_test_data, ); - END; + ALL_RM_TEST (asinh, 0, asinh_test_data, RUN_TEST_LOOP_f_f, END); } static const struct test_f_f_data atan_test_data[] = @@ -1847,9 +1845,7 @@ static const struct test_f_f_data atan_test_data[] = static void atan_test (void) { - START (atan, 0); - RUN_TEST_LOOP_f_f (atan, atan_test_data, ); - END; + ALL_RM_TEST (atan, 0, atan_test_data, RUN_TEST_LOOP_f_f, END); } @@ -1863,8 +1859,8 @@ static const struct test_f_f_data atanh_test_data[] = /* atanh (x) == qNaN plus invalid exception if |x| > 1. */ TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM), TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM), - TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM), - TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM), + TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM|NO_TEST_INLINE), + TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM|NO_TEST_INLINE), TEST_f_f (atanh, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM), TEST_f_f (atanh, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM), @@ -1874,9 +1870,7 @@ static const struct test_f_f_data atanh_test_data[] = static void atanh_test (void) { - START (atanh, 0); - RUN_TEST_LOOP_f_f (atanh, atanh_test_data, ); - END; + ALL_RM_TEST (atanh, 0, atanh_test_data, RUN_TEST_LOOP_f_f, END); } static const struct test_ff_f_data atan2_test_data[] = @@ -1911,9 +1905,7 @@ static const struct test_ff_f_data atan2_test_data[] = static void atan2_test (void) { - START (atan2, 0); - RUN_TEST_LOOP_ff_f (atan2, atan2_test_data, ); - END; + ALL_RM_TEST (atan2, 0, atan2_test_data, RUN_TEST_LOOP_ff_f, END); } static const struct test_c_f_data cabs_test_data[] = @@ -1936,9 +1928,7 @@ static const struct test_c_f_data cabs_test_data[] = static void cabs_test (void) { - START (cabs, 0); - RUN_TEST_LOOP_c_f (cabs, cabs_test_data, ); - END; + ALL_RM_TEST (cabs, 0, cabs_test_data, RUN_TEST_LOOP_c_f, END); } @@ -3311,9 +3301,7 @@ static const struct test_c_c_data cacosh_test_data[] = static void cacosh_test (void) { - START (cacosh, 0); - RUN_TEST_LOOP_c_c (cacosh, cacosh_test_data, ); - END_COMPLEX; + ALL_RM_TEST (cacosh, 0, cacosh_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX); } @@ -3355,9 +3343,7 @@ static const struct test_c_f_data carg_test_data[] = static void carg_test (void) { - START (carg, 0); - RUN_TEST_LOOP_c_f (carg, carg_test_data, ); - END; + ALL_RM_TEST (carg, 0, carg_test_data, RUN_TEST_LOOP_c_f, END); } static const struct test_c_c_data casin_test_data[] = @@ -4051,9 +4037,7 @@ static const struct test_c_c_data casin_test_data[] = static void casin_test (void) { - START (casin, 0); - RUN_TEST_LOOP_c_c (casin, casin_test_data, ); - END_COMPLEX; + ALL_RM_TEST (casin, 0, casin_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX); } @@ -4748,9 +4732,7 @@ static const struct test_c_c_data casinh_test_data[] = static void casinh_test (void) { - START (casinh, 0); - RUN_TEST_LOOP_c_c (casinh, casinh_test_data, ); - END_COMPLEX; + ALL_RM_TEST (casinh, 0, casinh_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX); } @@ -5781,9 +5763,7 @@ static const struct test_f_f_data cbrt_test_data[] = static void cbrt_test (void) { - START (cbrt, 0); - RUN_TEST_LOOP_f_f (cbrt, cbrt_test_data, ); - END; + ALL_RM_TEST (cbrt, 0, cbrt_test_data, RUN_TEST_LOOP_f_f, END); } @@ -6657,9 +6637,7 @@ static const struct test_c_c_data csqrt_test_data[] = static void csqrt_test (void) { - START (csqrt, 0); - RUN_TEST_LOOP_c_c (csqrt, csqrt_test_data, ); - END_COMPLEX; + ALL_RM_TEST (csqrt, 0, csqrt_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX); } static const struct test_c_c_data ctan_test_data[] = @@ -6767,9 +6745,7 @@ static const struct test_f_f_data erf_test_data[] = static void erf_test (void) { - START (erf, 0); - RUN_TEST_LOOP_f_f (erf, erf_test_data, ); - END; + ALL_RM_TEST (erf, 0, erf_test_data, RUN_TEST_LOOP_f_f, END); } @@ -6785,9 +6761,7 @@ static const struct test_f_f_data erfc_test_data[] = static void erfc_test (void) { - START (erfc, 0); - RUN_TEST_LOOP_f_f (erfc, erfc_test_data, ); - END; + ALL_RM_TEST (erfc, 0, erfc_test_data, RUN_TEST_LOOP_f_f, END); } @@ -6825,10 +6799,8 @@ exp10_test (void) static void pow10_test (void) { - START (pow10, 0); /* pow10 uses the same test data as exp10. */ - RUN_TEST_LOOP_f_f (pow10, exp10_test_data, ); - END; + ALL_RM_TEST (pow10, 0, exp10_test_data, RUN_TEST_LOOP_f_f, END); } @@ -6844,9 +6816,7 @@ static const struct test_f_f_data exp2_test_data[] = static void exp2_test (void) { - START (exp2, 0); - RUN_TEST_LOOP_f_f (exp2, exp2_test_data, ); - END; + ALL_RM_TEST (exp2, 0, exp2_test_data, RUN_TEST_LOOP_f_f, END); } @@ -7260,9 +7230,7 @@ static const struct test_ff_f_data hypot_test_data[] = static void hypot_test (void) { - START (hypot, 0); - RUN_TEST_LOOP_ff_f (hypot, hypot_test_data, ); - END; + ALL_RM_TEST (hypot, 0, hypot_test_data, RUN_TEST_LOOP_ff_f, END); } @@ -7549,9 +7517,7 @@ static const struct test_f_f_data j0_test_data[] = static void j0_test (void) { - START (j0, 0); - RUN_TEST_LOOP_f_f (j0, j0_test_data, ); - END; + ALL_RM_TEST (j0, 0, j0_test_data, RUN_TEST_LOOP_f_f, END); } @@ -7567,9 +7533,7 @@ static const struct test_f_f_data j1_test_data[] = static void j1_test (void) { - START (j1, 0); - RUN_TEST_LOOP_f_f (j1, j1_test_data, ); - END; + ALL_RM_TEST (j1, 0, j1_test_data, RUN_TEST_LOOP_f_f, END); } static const struct test_if_f_data jn_test_data[] = @@ -7621,18 +7585,14 @@ static const struct test_f_f1_data lgamma_test_data[] = static void lgamma_test (void) { - START (lgamma, 0); - RUN_TEST_LOOP_f_f1 (lgamma, lgamma_test_data, , signgam); - END; + ALL_RM_TEST (lgamma, 0, lgamma_test_data, RUN_TEST_LOOP_f_f1, END, signgam); } static void gamma_test (void) { - START (gamma, 0); /* gamma uses the same test data as lgamma. */ - RUN_TEST_LOOP_f_f1 (gamma, lgamma_test_data, , signgam); - END; + ALL_RM_TEST (gamma, 0, lgamma_test_data, RUN_TEST_LOOP_f_f1, END, signgam); } @@ -9374,9 +9334,7 @@ sincos_test (void) { FLOAT sin_res, cos_res; - START (sincos, 0); - RUN_TEST_LOOP_fFF_11 (sincos, sincos_test_data, , sin_res, cos_res); - END; + ALL_RM_TEST (sincos, 0, sincos_test_data, RUN_TEST_LOOP_fFF_11, END, sin_res, cos_res); } static const struct test_f_f_data sinh_test_data[] = @@ -9443,9 +9401,7 @@ static const struct test_f_f_data tanh_test_data[] = static void tanh_test (void) { - START (tanh, 0); - RUN_TEST_LOOP_f_f (tanh, tanh_test_data, ); - END; + ALL_RM_TEST (tanh, 0, tanh_test_data, RUN_TEST_LOOP_f_f, END); } static const struct test_f_f_data tgamma_test_data[] = @@ -9609,9 +9565,7 @@ static const struct test_f_f_data y0_test_data[] = static void y0_test (void) { - START (y0, 0); - RUN_TEST_LOOP_f_f (y0, y0_test_data, ); - END; + ALL_RM_TEST (y0, 0, y0_test_data, RUN_TEST_LOOP_f_f, END); } @@ -9632,9 +9586,7 @@ static const struct test_f_f_data y1_test_data[] = static void y1_test (void) { - START (y1, 0); - RUN_TEST_LOOP_f_f (y1, y1_test_data, ); - END; + ALL_RM_TEST (y1, 0, y1_test_data, RUN_TEST_LOOP_f_f, END); } diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps index 48b964b..3be1806 100644 --- a/sysdeps/i386/fpu/libm-test-ulps +++ b/sysdeps/i386/fpu/libm-test-ulps @@ -49,14 +49,102 @@ Function: "asinh": ildouble: 1 ldouble: 1 +Function: "asinh_downward": +double: 1 +float: 1 +ildouble: 1 +ldouble: 3 + +Function: "asinh_towardzero": +double: 1 +float: 1 +ildouble: 1 +ldouble: 2 + +Function: "asinh_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 5 +ldouble: 2 + Function: "atan2": ildouble: 1 ldouble: 1 +Function: "atan2_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan2_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan2_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: "atanh": ildouble: 2 ldouble: 1 +Function: "atanh_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 1 + +Function: "atanh_towardzero": +idouble: 1 +ifloat: 1 +ildouble: 4 +ldouble: 1 + +Function: "atanh_upward": +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 2 + Function: Real part of "cacos": double: 1 float: 1 @@ -89,6 +177,76 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: Real part of "cacosh_downward": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "cacosh_downward": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "cacosh_towardzero": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "cacosh_towardzero": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "cacosh_upward": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "cacosh_upward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "carg_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "carg_towardzero": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "carg_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: Real part of "casin": double: 1 float: 1 @@ -105,6 +263,54 @@ ifloat: 1 ildouble: 2 ldouble: 2 +Function: Real part of "casin_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casin_downward": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Real part of "casin_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casin_towardzero": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Real part of "casin_upward": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casin_upward": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 +ildouble: 5 +ldouble: 5 + Function: Real part of "casinh": double: 1 float: 1 @@ -121,6 +327,54 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: Real part of "casinh_downward": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "casinh_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "casinh_towardzero": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "casinh_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "casinh_upward": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "casinh_upward": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 2 +ldouble: 2 + Function: Imaginary part of "catan": double: 1 float: 1 @@ -143,6 +397,30 @@ idouble: 1 ildouble: 1 ldouble: 1 +Function: "cbrt_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: "cbrt_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "cbrt_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 + Function: Real part of "ccos": double: 1 float: 1 @@ -328,6 +606,50 @@ Function: Imaginary part of "csqrt": ildouble: 1 ldouble: 1 +Function: Real part of "csqrt_downward": +double: 1 +idouble: 1 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "csqrt_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "csqrt_towardzero": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "csqrt_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "csqrt_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "csqrt_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + Function: Real part of "ctan": double: 1 float: 1 @@ -494,12 +816,40 @@ idouble: 1 ildouble: 1 ldouble: 1 +Function: "erf_upward": +ildouble: 1 +ldouble: 1 + Function: "erfc": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Function: "erfc_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 3 +ldouble: 3 + +Function: "erfc_towardzero": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "erfc_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 3 + Function: "exp10": ildouble: 1 ldouble: 1 @@ -584,10 +934,52 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "gamma_downward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 3 +ldouble: 3 + +Function: "gamma_towardzero": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "gamma_upward": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 2 +ldouble: 2 + Function: "hypot": ildouble: 1 ldouble: 1 +Function: "hypot_downward": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "hypot_towardzero": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "hypot_upward": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + Function: "j0": double: 1 float: 1 @@ -596,6 +988,30 @@ ifloat: 1 ildouble: 2 ldouble: 2 +Function: "j0_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 4 +ldouble: 4 + +Function: "j0_towardzero": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 5 +ldouble: 5 + +Function: "j0_upward": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 4 +ldouble: 4 + Function: "j1": double: 2 float: 1 @@ -604,6 +1020,30 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "j1_downward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 4 +ldouble: 4 + +Function: "j1_towardzero": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 4 +ldouble: 4 + +Function: "j1_upward": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 3 +ldouble: 3 + Function: "jn": double: 2 float: 3 @@ -620,6 +1060,30 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "lgamma_downward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 3 +ldouble: 3 + +Function: "lgamma_towardzero": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "lgamma_upward": +double: 2 +float: 3 +idouble: 2 +ifloat: 3 +ildouble: 2 +ldouble: 2 + Function: "log": ildouble: 1 ldouble: 1 @@ -640,6 +1104,30 @@ Function: "pow10": ildouble: 1 ldouble: 1 +Function: "pow10_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "pow10_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "pow10_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: "pow_downward": double: 1 float: 1 @@ -694,6 +1182,24 @@ Function: "sincos": ildouble: 1 ldouble: 1 +Function: "sincos_downward": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + +Function: "sincos_towardzero": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "sincos_upward": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + Function: "sinh": ildouble: 1 @@ -752,6 +1258,26 @@ ifloat: 1 ildouble: 2 ldouble: 2 +Function: "tanh_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 3 +ldouble: 1 + +Function: "tanh_towardzero": +double: 1 +float: 1 +ildouble: 2 +ldouble: 1 + +Function: "tanh_upward": +double: 1 +float: 1 +ildouble: 2 +ldouble: 1 + Function: "tgamma": double: 4 float: 2 @@ -768,6 +1294,30 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "y0_downward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 5 +ldouble: 5 + +Function: "y0_towardzero": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 5 +ldouble: 5 + +Function: "y0_upward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 3 +ldouble: 3 + Function: "y1": double: 2 float: 2 @@ -776,6 +1326,30 @@ ifloat: 2 ildouble: 2 ldouble: 2 +Function: "y1_downward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 7 +ldouble: 7 + +Function: "y1_towardzero": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 5 +ldouble: 5 + +Function: "y1_upward": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 7 +ldouble: 7 + Function: "yn": double: 2 float: 3 diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps index d88584b..5f4ab06 100644 --- a/sysdeps/x86_64/fpu/libm-test-ulps +++ b/sysdeps/x86_64/fpu/libm-test-ulps @@ -62,18 +62,112 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "asinh_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 3 + +Function: "asinh_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 2 + +Function: "asinh_upward": +double: 2 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + Function: "atan2": float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Function: "atan2_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: "atan2_towardzero": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: "atan2_upward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: "atan_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "atan_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: "atanh": float: 1 ifloat: 1 ildouble: 1 ldouble: 1 +Function: "atanh_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "atanh_towardzero": +float: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "atanh_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: Real part of "cacos": double: 1 float: 2 @@ -106,6 +200,76 @@ ifloat: 2 ildouble: 1 ldouble: 1 +Function: Real part of "cacosh_downward": +double: 5 +float: 3 +idouble: 5 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "cacosh_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "cacosh_towardzero": +double: 5 +float: 3 +idouble: 5 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "cacosh_towardzero": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "cacosh_upward": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "cacosh_upward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: "carg_downward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + +Function: "carg_towardzero": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "carg_upward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 1 +ldouble: 1 + Function: Real part of "casin": double: 1 float: 1 @@ -122,6 +286,54 @@ ifloat: 2 ildouble: 2 ldouble: 2 +Function: Real part of "casin_downward": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casin_downward": +double: 5 +float: 3 +idouble: 5 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Real part of "casin_towardzero": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casin_towardzero": +double: 5 +float: 3 +idouble: 5 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Real part of "casin_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "casin_upward": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 +ildouble: 5 +ldouble: 5 + Function: Real part of "casinh": double: 1 float: 2 @@ -138,6 +350,54 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: Real part of "casinh_downward": +double: 5 +float: 3 +idouble: 5 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "casinh_downward": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "casinh_towardzero": +double: 5 +float: 3 +idouble: 5 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "casinh_towardzero": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: Real part of "casinh_upward": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 +ildouble: 5 +ldouble: 5 + +Function: Imaginary part of "casinh_upward": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 +ildouble: 2 +ldouble: 2 + Function: Real part of "catan": float: 1 ifloat: 1 @@ -170,6 +430,28 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "cbrt_downward": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "cbrt_towardzero": +double: 2 +idouble: 2 +ildouble: 1 +ldouble: 1 + +Function: "cbrt_upward": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: Real part of "ccos": double: 1 float: 1 @@ -362,6 +644,54 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: Real part of "csqrt_downward": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "csqrt_downward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "csqrt_towardzero": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Imaginary part of "csqrt_towardzero": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + +Function: Real part of "csqrt_upward": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 3 +ldouble: 3 + +Function: Imaginary part of "csqrt_upward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 2 +ldouble: 2 + Function: Real part of "ctan": double: 1 float: 1 @@ -528,6 +858,20 @@ idouble: 1 ildouble: 1 ldouble: 1 +Function: "erf_downward": +float: 1 +ifloat: 1 + +Function: "erf_towardzero": +float: 1 +ifloat: 1 + +Function: "erf_upward": +float: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: "erfc": double: 1 float: 1 @@ -536,6 +880,30 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "erfc_downward": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 3 +ldouble: 3 + +Function: "erfc_towardzero": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 2 +ldouble: 2 + +Function: "erfc_upward": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 +ildouble: 3 +ldouble: 3 + Function: "exp10": double: 1 idouble: 1 @@ -630,12 +998,54 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "gamma_downward": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: "gamma_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "gamma_upward": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 2 +ldouble: 2 + Function: "hypot": double: 1 idouble: 1 ildouble: 1 ldouble: 1 +Function: "hypot_downward": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "hypot_towardzero": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "hypot_upward": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + Function: "j0": double: 2 float: 2 @@ -644,6 +1054,30 @@ ifloat: 2 ildouble: 2 ldouble: 2 +Function: "j0_downward": +double: 2 +float: 4 +idouble: 2 +ifloat: 4 +ildouble: 4 +ldouble: 4 + +Function: "j0_towardzero": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 5 +ldouble: 5 + +Function: "j0_upward": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 4 +ldouble: 4 + Function: "j1": double: 1 float: 2 @@ -652,6 +1086,30 @@ ifloat: 2 ildouble: 1 ldouble: 1 +Function: "j1_downward": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 4 +ldouble: 4 + +Function: "j1_towardzero": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +ildouble: 4 +ldouble: 4 + +Function: "j1_upward": +double: 3 +float: 5 +idouble: 3 +ifloat: 5 +ildouble: 3 +ldouble: 3 + Function: "jn": double: 4 float: 4 @@ -668,6 +1126,30 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "lgamma_downward": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 +ildouble: 3 +ldouble: 3 + +Function: "lgamma_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 2 +ldouble: 2 + +Function: "lgamma_upward": +double: 1 +float: 3 +idouble: 1 +ifloat: 3 +ildouble: 2 +ldouble: 2 + Function: "log": float: 1 ifloat: 1 @@ -700,6 +1182,26 @@ idouble: 1 ildouble: 1 ldouble: 1 +Function: "pow10_downward": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + +Function: "pow10_towardzero": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "pow10_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: "pow_downward": float: 1 ifloat: 1 @@ -750,6 +1252,24 @@ Function: "sincos": ildouble: 1 ldouble: 1 +Function: "sincos_downward": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + +Function: "sincos_towardzero": +double: 1 +idouble: 1 +ildouble: 1 +ldouble: 1 + +Function: "sincos_upward": +double: 1 +idouble: 1 +ildouble: 2 +ldouble: 2 + Function: "sinh": ildouble: 1 ldouble: 1 @@ -810,6 +1330,30 @@ ifloat: 1 ildouble: 2 ldouble: 2 +Function: "tanh_downward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "tanh_towardzero": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + +Function: "tanh_upward": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 +ildouble: 1 +ldouble: 1 + Function: "tgamma": double: 4 float: 3 @@ -826,6 +1370,30 @@ ifloat: 1 ildouble: 1 ldouble: 1 +Function: "y0_downward": +double: 3 +float: 4 +idouble: 3 +ifloat: 4 +ildouble: 5 +ldouble: 5 + +Function: "y0_towardzero": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: "y0_upward": +double: 3 +float: 5 +idouble: 3 +ifloat: 5 +ildouble: 3 +ldouble: 3 + Function: "y1": double: 3 float: 2 @@ -834,6 +1402,30 @@ ifloat: 2 ildouble: 2 ldouble: 2 +Function: "y1_downward": +double: 3 +float: 7 +idouble: 3 +ifloat: 7 +ildouble: 7 +ldouble: 7 + +Function: "y1_towardzero": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 +ildouble: 5 +ldouble: 5 + +Function: "y1_upward": +double: 7 +float: 5 +idouble: 7 +ifloat: 5 +ildouble: 7 +ldouble: 7 + Function: "yn": double: 3 float: 3