This source file includes following definitions.
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <config.h>
20
21 #include <math.h>
22
23 #include "signature.h"
24 SIGNATURE_CHECK (copysign, double, (double, double));
25
26 #include "macros.h"
27 #include "minus-zero.h"
28
29 #include <string.h>
30
31 volatile double x;
32 volatile double y;
33 double z;
34 double zero = 0.0;
35
36 int
37 main ()
38 {
39
40 x = 0.6;
41 y = 0.8;
42 z = copysign (x, y);
43 ASSERT (z == 0.6);
44
45
46 x = -0.6;
47 y = 0.8;
48 z = copysign (x, y);
49 ASSERT (z == 0.6);
50
51
52 x = -0.6;
53 y = -0.8;
54 z = copysign (x, y);
55 ASSERT (z == -0.6);
56
57
58 x = 0.6;
59 y = -0.8;
60 z = copysign (x, y);
61 ASSERT (z == -0.6);
62
63
64 x = 1.0;
65 y = 0.0;
66 z = copysign (x, y);
67 ASSERT (z == 1.0);
68
69 x = 1.0;
70 y = minus_zerod;
71 z = copysign (x, y);
72
73 ASSERT (z == -1.0);
74
75 x = -1.0;
76 y = 0.0;
77 z = copysign (x, y);
78 ASSERT (z == 1.0);
79
80 x = -1.0;
81 y = minus_zerod;
82 z = copysign (x, y);
83 ASSERT (z == -1.0);
84
85
86 x = 0.0;
87 y = 1.0;
88 z = copysign (x, y);
89 ASSERT (z == 0.0);
90 ASSERT (memcmp (&z, &zero, sizeof z) == 0);
91
92 x = 0.0;
93 y = -1.0;
94 z = copysign (x, y);
95 ASSERT (z == 0.0);
96 ASSERT (memcmp (&z, &zero, sizeof z) != 0);
97
98 x = minus_zerod;
99 y = 1.0;
100 z = copysign (x, y);
101 ASSERT (z == 0.0);
102 ASSERT (memcmp (&z, &zero, sizeof z) == 0);
103
104 x = minus_zerod;
105 y = -1.0;
106 z = copysign (x, y);
107 ASSERT (z == 0.0);
108 ASSERT (memcmp (&z, &zero, sizeof z) != 0);
109
110 return 0;
111 }