From owner-svn-src-all@FreeBSD.ORG Sat Oct 15 05:28:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BFC6F106564A; Sat, 15 Oct 2011 05:28:13 +0000 (UTC) (envelope-from das@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AEC238FC08; Sat, 15 Oct 2011 05:28:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p9F5SDSh096945; Sat, 15 Oct 2011 05:28:13 GMT (envelope-from das@svn.freebsd.org) Received: (from das@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p9F5SD0T096943; Sat, 15 Oct 2011 05:28:13 GMT (envelope-from das@svn.freebsd.org) Message-Id: <201110150528.p9F5SD0T096943@svn.freebsd.org> From: David Schultz Date: Sat, 15 Oct 2011 05:28:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r226378 - head/tools/regression/lib/msun X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Oct 2011 05:28:13 -0000 Author: das Date: Sat Oct 15 05:28:13 2011 New Revision: 226378 URL: http://svn.freebsd.org/changeset/base/226378 Log: Add some tests for corner cases of log() in unusual rounding modes. I wrote these ages ago, but they've been failing until now. Modified: head/tools/regression/lib/msun/test-logarithm.c Modified: head/tools/regression/lib/msun/test-logarithm.c ============================================================================== --- head/tools/regression/lib/msun/test-logarithm.c Sat Oct 15 05:26:16 2011 (r226377) +++ head/tools/regression/lib/msun/test-logarithm.c Sat Oct 15 05:28:13 2011 (r226378) @@ -97,7 +97,7 @@ void run_generic_tests(void) { - /* exp(1) == 0, no exceptions raised */ + /* log(1) == 0, no exceptions raised */ testall0(1.0, 0.0, ALL_STD_EXCEPT, 0); testall1(0.0, 0.0, ALL_STD_EXCEPT, 0); testall1(-0.0, -0.0, ALL_STD_EXCEPT, 0); @@ -142,11 +142,35 @@ run_log2_tests(void) } } +void +run_roundingmode_tests(void) +{ + + /* + * Corner cases in other rounding modes. + */ + fesetround(FE_DOWNWARD); + /* These are still positive per IEEE 754R */ + testall0(1.0, 0.0, ALL_STD_EXCEPT, 0); + testall1(0.0, 0.0, ALL_STD_EXCEPT, 0); + fesetround(FE_TOWARDZERO); + testall0(1.0, 0.0, ALL_STD_EXCEPT, 0); + testall1(0.0, 0.0, ALL_STD_EXCEPT, 0); + + fesetround(FE_UPWARD); + testall0(1.0, 0.0, ALL_STD_EXCEPT, 0); + testall1(0.0, 0.0, ALL_STD_EXCEPT, 0); + /* log1p(-0.0) == -0.0 even when rounding upwards */ + testall1(-0.0, -0.0, ALL_STD_EXCEPT, 0); + + fesetround(FE_TONEAREST); +} + int main(int argc, char *argv[]) { - printf("1..2\n"); + printf("1..3\n"); run_generic_tests(); printf("ok 1 - logarithm\n"); @@ -154,5 +178,8 @@ main(int argc, char *argv[]) run_log2_tests(); printf("ok 2 - logarithm\n"); + run_roundingmode_tests(); + printf("ok 3 - logarithm\n"); + return (0); }