builtin-math-2.c: Add checks for asin, acos, acosh and atanh.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Tue, 24 Oct 2006 21:52:51 +0000 (21:52 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Tue, 24 Oct 2006 21:52:51 +0000 (21:52 +0000)
* 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.

From-SVN: r118012

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

index 97e3f75c6ac3234512f2a022330f412b715870b7..b69034778325712f9c510948e793e35979653f47 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 deeedf7142c0ad2760dba65b271d272fa238ba8d..fff0e7a850695737c0c20e78f6aca957e7adf8e6 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 60f030b6e04abb955d681934ae5c6b55c3ea225a..d50b227f07cb927812f052abeee99f07716bde2f 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;
 }