summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/980414-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/980414-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/980414-1.c76
1 files changed, 0 insertions, 76 deletions
diff --git a/gcc/testsuite/gcc.dg/980414-1.c b/gcc/testsuite/gcc.dg/980414-1.c
deleted file mode 100644
index 8fd0e127296..00000000000
--- a/gcc/testsuite/gcc.dg/980414-1.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Test double on x86. */
-
-/* { dg-do run { target i?86-*-* } } */
-/* { dg-options -O2 } */
-
-static __inline double
-mypow (double __x, double __y)
-{
- register double __value, __exponent;
- long __p = (long) __y;
- if (__y == (double) __p)
- {
- double __r = 1.0;
- if (__p == 0)
- return 1.0;
- if (__p < 0)
- {
- __p = -__p;
- __x = 1.0 / __x;
- }
- while (1)
- {
- if (__p & 1)
- __r *= __x;
- __p >>= 1;
- if (__p == 0)
- return __r;
- __x *= __x;
- }
- }
- __asm __volatile__
- ("fmul %%st(1),%%st\n\t" /* y * log2(x) */
- "fst %%st(1)\n\t"
- "frndint\n\t" /* int(y * log2(x)) */
- "fxch\n\t"
- "fsub %%st(1),%%st\n\t" /* fract(y * log2(x)) */
- "f2xm1\n\t" /* 2^(fract(y * log2(x))) - 1 */
- : "=t" (__value), "=u" (__exponent) : "0" (__x), "1" (__y));
- __value += 1.0;
- __asm __volatile__
- ("fscale"
- : "=t" (__value) : "0" (__value), "u" (__exponent));
- return __value;
-}
-
-const double E1 = 2.71828182845904523536028747135;
-
-double fact (double x)
-{
- double corr;
- corr = 1.0;
- return corr * mypow(x/E1, x);
-}
-
-int main ()
-{
- double y, z;
-
- y = fact (46.2);
- z = mypow (46.2/E1, 46.2);
-
-#if 0
- printf ("%26.19e, %26.19e\n", y, z);
-#endif
-
- if (y > z)
- y -= z;
- else
- y = z - y;
-
- y /= z;
- if (y > 0.1)
- abort ();
-
- return 0;
-}