OSDN Git Service

2005-02-15 Eric Christopher <echristo@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / builtins-49.c
1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
3
4 extern double fabs(double);
5 extern float fabsf(float);
6 extern void abort(void);
7
8
9 double test1(double x)
10 {
11   return fabs(-x);
12 }
13
14 float test1f(float x)
15 {
16   return fabsf(-x);
17 }
18
19 double test2(double x)
20 {
21   return fabs(fabs(x));
22 }
23
24 float test2f(float x)
25 {
26   return fabsf(fabsf(x));
27 }
28
29 double test3(double x, double y)
30 {
31   return fabs(x*-y);
32 }
33
34 float test3f(float x, float y)
35 {
36   return fabsf(x*-y);
37 }
38
39 double test4(double x, double y)
40 {
41   return fabs(x/-y);
42 }
43
44 float test4f(float x, float y)
45 {
46   return fabsf(x/-y);
47 }
48
49 int main()
50 {
51   if (test1(1.0) != 1.0)
52     abort();
53   if (test1(2.0) != 2.0)
54     abort();
55   if (test1(0.0) != 0.0)
56     abort();
57   if (test1(-1.0) != 1.0)
58     abort();
59   if (test1(-2.0) != 2.0)
60     abort();
61
62   if (test1f(1.0f) != 1.0f)
63     abort();
64   if (test1f(2.0f) != 2.0f)
65     abort();
66   if (test1f(0.0f) != 0.0f)
67     abort();
68   if (test1f(-1.0f) != 1.0f)
69     abort();
70   if (test1f(-2.0f) != 2.0f)
71     abort();
72
73   if (test2(1.0) != 1.0)
74     abort();
75   if (test2(2.0) != 2.0)
76     abort();
77   if (test2(0.0) != 0.0)
78     abort();
79   if (test2(-1.0) != 1.0)
80     abort();
81   if (test2(-2.0) != 2.0)
82     abort();
83
84   if (test2f(1.0f) != 1.0f)
85     abort();
86   if (test2f(2.0f) != 2.0f)
87     abort();
88   if (test2f(0.0f) != 0.0f)
89     abort();
90   if (test2f(-1.0f) != 1.0f)
91     abort();
92   if (test2f(-2.0f) != 2.0f)
93     abort();
94
95   if (test3(1.0,1.0) != 1.0)
96     abort();
97   if (test3(1.0,-1.0) != 1.0)
98     abort();
99   if (test3(1.0,2.0) != 2.0)
100     abort();
101   if (test3(1.0,-2.0) != 2.0)
102     abort();
103   if (test3(2.0,1.0) != 2.0)
104     abort();
105   if (test3(2.0,-1.0) != 2.0)
106     abort();
107   if (test3(2.0,2.0) != 4.0)
108     abort();
109   if (test3(2.0,-2.0) != 4.0)
110     abort();
111   if (test3(-2.0,1.0) != 2.0)
112     abort();
113   if (test3(-2.0,-1.0) != 2.0)
114     abort();
115   if (test3(-2.0,2.0) != 4.0)
116     abort();
117   if (test3(-2.0,-2.0) != 4.0)
118     abort();
119
120   if (test3f(1.0f,1.0f) != 1.0f)
121     abort();
122   if (test3f(1.0f,-1.0f) != 1.0f)
123     abort();
124   if (test3f(1.0f,2.0f) != 2.0f)
125     abort();
126   if (test3f(1.0f,-2.0f) != 2.0f)
127     abort();
128   if (test3f(2.0f,1.0f) != 2.0f)
129     abort();
130   if (test3f(2.0f,-1.0f) != 2.0f)
131     abort();
132   if (test3f(2.0f,2.0f) != 4.0f)
133     abort();
134   if (test3f(2.0f,-2.0f) != 4.0f)
135     abort();
136   if (test3f(-2.0f,1.0f) != 2.0f)
137     abort();
138   if (test3f(-2.0f,-1.0f) != 2.0f)
139     abort();
140   if (test3f(-2.0f,2.0f) != 4.0f)
141     abort();
142   if (test3f(-2.0f,-2.0f) != 4.0f)
143     abort();
144
145   if (test4(1.0,1.0) != 1.0)
146     abort();
147   if (test4(1.0,-1.0) != 1.0)
148     abort();
149   if (test4(-1.0,1.0) != 1.0)
150     abort();
151   if (test4(-1.0,-1.0) != 1.0)
152     abort();
153   if (test4(6.0,3.0) != 2.0)
154     abort();
155   if (test4(6.0,-3.0) != 2.0)
156     abort();
157   if (test4(-6.0,3.0) != 2.0)
158     abort();
159   if (test4(-6.0,-3.0) != 2.0)
160     abort();
161
162   if (test4f(1.0f,1.0f) != 1.0f)
163     abort();
164   if (test4f(1.0f,-1.0f) != 1.0f)
165     abort();
166   if (test4f(-1.0f,1.0f) != 1.0f)
167     abort();
168   if (test4f(-1.0f,-1.0f) != 1.0f)
169     abort();
170   if (test4f(6.0f,3.0f) != 2.0f)
171     abort();
172   if (test4f(6.0f,-3.0f) != 2.0f)
173     abort();
174   if (test4f(-6.0f,3.0f) != 2.0f)
175     abort();
176   if (test4f(-6.0f,-3.0f) != 2.0f)
177     abort();
178
179   return 0;
180 }
181