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 
test1(double x)9 double test1(double x)
10 {
11   return fabs(-x);
12 }
13 
test1f(float x)14 float test1f(float x)
15 {
16   return fabsf(-x);
17 }
18 
test2(double x)19 double test2(double x)
20 {
21   return fabs(fabs(x));
22 }
23 
test2f(float x)24 float test2f(float x)
25 {
26   return fabsf(fabsf(x));
27 }
28 
test3(double x,double y)29 double test3(double x, double y)
30 {
31   return fabs(x*-y);
32 }
33 
test3f(float x,float y)34 float test3f(float x, float y)
35 {
36   return fabsf(x*-y);
37 }
38 
test4(double x,double y)39 double test4(double x, double y)
40 {
41   return fabs(x/-y);
42 }
43 
test4f(float x,float y)44 float test4f(float x, float y)
45 {
46   return fabsf(x/-y);
47 }
48 
main()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 
182