OSDN Git Service

* gcc.dg/torture/builtin-math-2.c: Add checks for asin, acos,
authorghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Oct 2006 21:52:51 +0000 (21:52 +0000)
committerghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Oct 2006 21:52:51 +0000 (21:52 +0000)
acosh and atanh.

* gcc.dg/torture/builtin-math-3.c (TESTIT): Append 'F' and 'L'
floating point modifiers to arguments passed to float and long
double functions respectively.  Update all callers to use floating
point numbers, not integers.  Add tests for exp, exp2 and
exp10/pow10.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118012 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/builtin-math-2.c
gcc/testsuite/gcc.dg/torture/builtin-math-3.c

index 97e3f75..b690347 100644 (file)
@@ -1,5 +1,14 @@
 2006-10-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
+       * gcc.dg/torture/builtin-math-2.c: Add checks for asin, acos,
+       acosh and atanh.
+       
+       * gcc.dg/torture/builtin-math-3.c (TESTIT): Append 'F' and 'L'
+       floating point modifiers to arguments passed to float and long
+       double functions respectively.  Update all callers to use floating
+       point numbers, not integers.  Add tests for exp, exp2 and
+       exp10/pow10.
+
        * gcc.dg/torture/builtin-math-3.c: New test.
 
 2006-10-24  Erik Edelmann  <eedelman@gcc.gnu.org>
index deeedf7..fff0e7a 100644 (file)
@@ -1,7 +1,9 @@
-/* Test things that should block GCC from optimizing compile-time
+/* Copyright (C) 2006  Free Software Foundation.
+
+   Test things that should block GCC from optimizing compile-time
    constants passed to a builtin transcendental function.
 
-   Origin: Kaveh R. Ghazi 10/22/2006.  */
+   Origin: Kaveh R. Ghazi,  October 22, 2006.  */
 
 /* { dg-do compile } */
 /* { dg-options "-fdump-tree-original" } */
@@ -59,9 +61,50 @@ void bar()
   foof (__builtin_exp2f (-1.5F));
   foo (__builtin_exp2 (-1.5));
   fool (__builtin_exp2l (-1.5L));
+
+  /* The asin arg must be [-1 ... 1] inclusive.  */
+  foof (__builtin_asinf (-1.5F));
+  foof (__builtin_asinf (1.5F));
+  foo (__builtin_asin (-1.5));
+  foo (__builtin_asin (1.5));
+  fool (__builtin_asinl (-1.5L));
+  fool (__builtin_asinl (1.5L));
+
+  /* The acos arg must be [-1 ... 1] inclusive.  */
+  foof (__builtin_acosf (-1.5F));
+  foof (__builtin_acosf (1.5F));
+  foo (__builtin_acos (-1.5));
+  foo (__builtin_acos (1.5));
+  fool (__builtin_acosl (-1.5L));
+  fool (__builtin_acosl (1.5L));
+
+  /* The acosh arg must be [1 ... Inf] inclusive.  */
+  foof (__builtin_acoshf (0.5F));
+  foo (__builtin_acosh (0.5));
+  fool (__builtin_acoshl (0.5L));
+
+  /* The atanh arg must be [-1 ... 1] exclusive.  */
+  foof (__builtin_atanhf (-1.0F));
+  foof (__builtin_atanhf (1.0F));
+  foo (__builtin_atanh (-1.0));
+  foo (__builtin_atanh (1.0));
+  fool (__builtin_atanhl (-1.0L));
+  fool (__builtin_atanhl (1.0L));
 }
 
 /* { dg-final { scan-tree-dump-times "exp2 " 9 "original" } } */
 /* { dg-final { scan-tree-dump-times "exp2f" 9 "original" } } */
 /* { dg-final { scan-tree-dump-times "exp2l" 9 "original" } } */
+/* { dg-final { scan-tree-dump-times "asin " 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "asinf" 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "asinl" 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "acos " 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "acosf" 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "acosl" 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "acosh " 1 "original" } } */
+/* { dg-final { scan-tree-dump-times "acoshf" 1 "original" } } */
+/* { dg-final { scan-tree-dump-times "acoshl" 1 "original" } } */
+/* { dg-final { scan-tree-dump-times "atanh " 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "atanhf" 2 "original" } } */
+/* { dg-final { scan-tree-dump-times "atanhl" 2 "original" } } */
 /* { dg-final { cleanup-tree-dump "original" } } */
index 60f030b..d50b227 100644 (file)
@@ -3,7 +3,7 @@
    Verify that built-in math function constant folding of constant
    arguments is correctly performed by the compiler.
 
-   Origin: Kaveh R. Ghazi, October 23, 2006.  */
+   Origin: Kaveh R. Ghazi,  October 23, 2006.  */
 
 /* { dg-do link } */
 
@@ -12,11 +12,11 @@ extern void link_error(int);
 
 /* Test that FUNC(ARG) == (RES).  */
 #define TESTIT(FUNC,ARG,RES) do { \
-  if (__builtin_##FUNC##f(ARG) != RES) \
+  if (__builtin_##FUNC##f(ARG##F) != RES##F) \
     link_error(__LINE__); \
   if (__builtin_##FUNC(ARG) != RES) \
     link_error(__LINE__); \
-  if (__builtin_##FUNC##l(ARG) != RES) \
+  if (__builtin_##FUNC##l(ARG##L) != RES##L) \
     link_error(__LINE__); \
   } while (0);
 
@@ -32,40 +32,68 @@ extern void link_error(int);
 
 int main (void)
 {
-  TESTIT2 (asin, -1, -3.15/2, -3.14/2); /* asin(-1) == -pi/2 */
-  TESTIT (asin, 00); /* asin(0) == 0 */
-  TESTIT2 (asin, 1, 3.14/2, 3.15/2); /* asin(1) == pi/2 */
+  TESTIT2 (asin, -1.0, -3.15/2.0, -3.14/2.0); /* asin(-1) == -pi/2 */
+  TESTIT (asin, 0.0, 0.0); /* asin(0) == 0 */
+  TESTIT2 (asin, 1.0, 3.14/2.0, 3.15/2.0); /* asin(1) == pi/2 */
 
-  TESTIT2 (acos, -1, 3.14, 3.15); /* acos(-1) == pi */
-  TESTIT2 (acos, 0, 3.14/2, 3.15/2); /* acos(0) == pi/2 */
-  TESTIT (acos, 10); /* acos(1) == 0 */
+  TESTIT2 (acos, -1.0, 3.14, 3.15); /* acos(-1) == pi */
+  TESTIT2 (acos, 0.0, 3.14/2.0, 3.15/2.0); /* acos(0) == pi/2 */
+  TESTIT (acos, 1.0, 0.0); /* acos(1) == 0 */
 
-  TESTIT2 (atan, -1, -3.15/4, -3.14/4); /* atan(-1) == -pi/4 */
-  TESTIT (atan, 00); /* atan(0) == 0 */
-  TESTIT2 (atan, 1, 3.14/4, 3.15/4); /* atan(1) == pi/4 */
+  TESTIT2 (atan, -1.0, -3.15/4.0, -3.14/4.0); /* atan(-1) == -pi/4 */
+  TESTIT (atan, 0.0, 0.0); /* atan(0) == 0 */
+  TESTIT2 (atan, 1.0, 3.14/4.0, 3.15/4.0); /* atan(1) == pi/4 */
 
-  TESTIT2 (asinh, -1, -0.89, -0.88); /* asinh(-1) == -0.881... */
-  TESTIT (asinh, 00); /* asinh(0) == 0 */
-  TESTIT2 (asinh, 1, 0.88, 0.89); /* asinh(1) == 0.881... */
+  TESTIT2 (asinh, -1.0, -0.89, -0.88); /* asinh(-1) == -0.881... */
+  TESTIT (asinh, 0.0, 0.0); /* asinh(0) == 0 */
+  TESTIT2 (asinh, 1.0, 0.88, 0.89); /* asinh(1) == 0.881... */
 
-  TESTIT (acosh, 10); /* acosh(1) == 0. */
-  TESTIT2 (acosh, 2, 1.31, 1.32); /* acosh(2) == 1.316... */
+  TESTIT (acosh, 1.0, 0.0); /* acosh(1) == 0. */
+  TESTIT2 (acosh, 2.0, 1.31, 1.32); /* acosh(2) == 1.316... */
 
   TESTIT2 (atanh, -0.5, -0.55, -0.54); /* atanh(-0.5) == -0.549... */
-  TESTIT (atanh, 00); /* atanh(0) == 0 */
+  TESTIT (atanh, 0.0, 0.0); /* atanh(0) == 0 */
   TESTIT2 (atanh, 0.5, 0.54, 0.55); /* atanh(0.5) == 0.549... */
 
-  TESTIT2 (sinh, -1, -1.18, -1.17); /* sinh(-1) == -1.175... */
-  TESTIT (sinh, 0, 0); /* sinh(0) == 0 */
-  TESTIT2 (sinh, 1, 1.17, 1.18); /* sinh(1) == 1.175... */
+  TESTIT2 (sin, -1.0, -0.85, -0.84); /* sin(-1) == -0.841... */
+  TESTIT (sin, 0.0, 0.0); /* sin(0) == 0 */
+  TESTIT2 (sin, 1.0, 0.84, 0.85); /* sin(1) == 0.841... */
 
-  TESTIT2 (cosh, -1, 1.54, 1.55); /* cosh(-1) == 1.543... */
-  TESTIT (cosh, 0, 1); /* cosh(0) == 1 */
-  TESTIT2 (cosh, 1, 1.54, 1.55); /* cosh(1) == 1.543... */
+  TESTIT2 (cos, -1.0, 0.54, 0.55); /* cos(-1) == 0.5403... */
+  TESTIT (cos, 0.0, 1.0); /* cos(0) == 1 */
+  TESTIT2 (cos, 1.0, 0.54, 0.55); /* cos(1) == 0.5403... */
 
-  TESTIT2 (tanh, -1, -0.77, -0.76); /* tanh(-1) == -0.761... */
-  TESTIT (tanh, 0, 0); /* tanh(0) == 0 */
-  TESTIT2 (tanh, 1, 0.76, 0.77); /* tanh(1) == 0.761... */
+  TESTIT2 (tan, -1.0, -1.56, 1.55); /* tan(-1) == -1.557... */
+  TESTIT (tan, 0.0, 0.0); /* tan(0) == 0 */
+  TESTIT2 (tan, 1.0, 1.55, 1.56); /* tan(1) == 1.557... */
+
+  TESTIT2 (sinh, -1.0, -1.18, -1.17); /* sinh(-1) == -1.175... */
+  TESTIT (sinh, 0.0, 0.0); /* sinh(0) == 0 */
+  TESTIT2 (sinh, 1.0, 1.17, 1.18); /* sinh(1) == 1.175... */
+
+  TESTIT2 (cosh, -1.0, 1.54, 1.55); /* cosh(-1) == 1.543... */
+  TESTIT (cosh, 0.0, 1.0); /* cosh(0) == 1 */
+  TESTIT2 (cosh, 1.0, 1.54, 1.55); /* cosh(1) == 1.543... */
+
+  TESTIT2 (tanh, -1.0, -0.77, -0.76); /* tanh(-1) == -0.761... */
+  TESTIT (tanh, 0.0, 0.0); /* tanh(0) == 0 */
+  TESTIT2 (tanh, 1.0, 0.76, 0.77); /* tanh(1) == 0.761... */
+
+  TESTIT2 (exp, -1.0, 0.36, 0.37); /* exp(-1) == 1/e */
+  TESTIT (exp, 0.0, 1.0); /* exp(0) == 1 */
+  TESTIT2 (exp, 1.0, 2.71, 2.72); /* exp(1) == e */
+
+  TESTIT (exp2, -1.0, 0.5); /* exp2(-1) == 1/2 */
+  TESTIT (exp2, 0.0, 1.0); /* exp2(0) == 1 */
+  TESTIT (exp2, 1.0, 2.0); /* exp2(1) == 2 */
+
+  TESTIT (exp10, -1.0, 0.1); /* exp10(-1) == 1/10 */
+  TESTIT (exp10, 0.0, 1.0); /* exp10(0) == 1 */
+  TESTIT (exp10, 1.0, 10.0); /* exp10(1) == 10 */
+
+  TESTIT (pow10, -1.0, 0.1); /* pow10(-1) == 1/10 */
+  TESTIT (pow10, 0.0, 1.0); /* pow10(0) == 1 */
+  TESTIT (pow10, 1.0, 10.0); /* pow10(1) == 10 */
 
   return 0;
 }