56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
/* Copyright (C) 2003 Free Software Foundation.
|
|
|
|
Verify that built-in math function constant folding of constant
|
|
arguments is correctly performed by the by the compiler.
|
|
|
|
Written by Roger Sayle, 30th March 2003. */
|
|
|
|
/* { dg-do link } */
|
|
/* { dg-options "-O2 -ffast-math" } */
|
|
|
|
extern double pow (double, double);
|
|
extern float powf (float, float);
|
|
extern long double powl (long double, long double);
|
|
extern double tan (double);
|
|
extern float tanf (float);
|
|
extern long double tanl (long double);
|
|
extern double atan (double);
|
|
extern float atanf (float);
|
|
extern long double atanl (long double);
|
|
|
|
extern void link_error(void);
|
|
|
|
void test(double x)
|
|
{
|
|
if (pow (x, 1.0) != x)
|
|
link_error ();
|
|
if (tan (atan (x)) != x)
|
|
link_error ();
|
|
}
|
|
|
|
void testf(float x)
|
|
{
|
|
if (powf (x, 1.0f) != x)
|
|
link_error ();
|
|
if (tanf (atanf (x)) != x)
|
|
link_error ();
|
|
}
|
|
|
|
void testl(long double x)
|
|
{
|
|
if (powl (x, 1.0l) != x)
|
|
link_error ();
|
|
if (tanl (atanl (x)) != x)
|
|
link_error ();
|
|
}
|
|
|
|
int main()
|
|
{
|
|
test (2.0);
|
|
testf (2.0f);
|
|
testl (2.0l);
|
|
|
|
return 0;
|
|
}
|
|
|