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