transl: do not assume a catch's mode based on the last body form
[maxima.git] / tests / ulp_tests.mac
blobfa50fd8632141bccc7b0588211ce271762876cbc
1 /*
2  * The following tests assume the default value for fpprec; make sure
3  * it's the default
4 */
5 (reset(fpprec), 0);
6 0;
8 unit_in_last_place(0) ;
9 1 ;
11 unit_in_last_place(-534234) ;
12 1 ;
14 unit_in_last_place(2/3) ;
15 0 ;
17 unit_in_last_place(0.0b0) ;
18 0.0b0 ;
20 unit_in_last_place(0.0) - least_positive_float ;
21 0.0;
23 unit_in_last_place(2*unit_in_last_place(0.0)) - least_positive_float ;
24 0.0;
26 unit_in_last_place(unit_in_last_place(0.0)*(2^53+1)) - least_positive_float ;
27 0.0;
29 unit_in_last_place(unit_in_last_place(0.0)*(2^53+2)) - 2*least_positive_float ;
30 0.0;
32 2*unit_in_last_place(float((0+2^52)/2^1073)) - unit_in_last_place(float((1+2^52)/2^1073)) ;
33 0.0 ;
35 unit_in_last_place(1.0)-unit_in_last_place(.9999) ;
36 0.0 ;
38 unit_in_last_place(1.0001)-2*unit_in_last_place(1.0000) ;
39 0.0 ;
41 unit_in_last_place(1.0b0)-unit_in_last_place(.9999b0) ;
42 0.0b0 ;
44 unit_in_last_place(1.0001b0)-2*unit_in_last_place(1.0000b0) ;
45 0.0b0 ;
47 2.0^1023*(2.0-unit_in_last_place(2.0)) - most_positive_float ;
48 0.0 ;
50 unit_in_last_place(-1.0)-unit_in_last_place(1.0) ;
51 0.0 ;
53 is_power_of_two(0) ;
54 false ;
56 is_power_of_two(1) ;
57 true ;
59 is_power_of_two(1048576) ;
60 true ;
62 is_power_of_two(1048575) ;
63 false ;
65 is_power_of_two(1048577) ;
66 false ;
68 is_power_of_two(1/256) ;
69 true ;
71 is_power_of_two(1/384) ;
72 false ;
74 is_power_of_two(0.0e0) ;
75 false ;
77 is_power_of_two(1.0e0) ;
78 true ;
80 is_power_of_two(1048576.0e0) ;
81 true ;
83 is_power_of_two(1048575.0e0) ;
84 false ;
86 is_power_of_two(1048577.0e0) ;
87 false ;
89 is_power_of_two(1/256.0e0) ;
90 true ;
92 is_power_of_two(0.0b0) ;
93 false ;
95 is_power_of_two(1.0b0) ;
96 true ;
98 is_power_of_two(1048576.0b0) ;
99 true ;
101 is_power_of_two(1048575.0b0) ;
102 false ;
104 is_power_of_two(1048577.0b0) ;
105 false ;
107 is_power_of_two(1/256.0b0) ;
108 true ;
110 decode_float(3.0);
111 [1.5, 1, 1.0];
113 decode_float(-0.25);
114 [1.0, - 2, - 1.0];
116 decode_float(3b0);
117 [1.5b0, 1, 1.0b0];
119 decode_float(-0.25b0);
120 [1.0b0, - 2, - 1.0b0];
122 decode_float(least_positive_normalized_float);
123 [1.0, - 1022, 1.0];
125 decode_float(most_positive_float);
126 [1.9999999999999998, 1023, 1.0];
128 /* This assumes denormals are supported .*/
129 decode_float(least_positive_float);
130 [1.0, - 1074, 1.0];
132 integer_decode_float(3.0);
133 [6755399441055744, - 51, 1];
135 integer_decode_float(-0.25);
136 [4503599627370496, - 54, - 1];
138 integer_decode_float(3b0);
139 [54043195528445952, - 54, 1];
141 integer_decode_float(-0.25b0);
142 [36028797018963968, - 57, - 1];
144 integer_decode_float(least_positive_normalized_float);
145 [4503599627370496, - 1074, 1];
147 integer_decode_float(most_positive_float);
148 [9007199254740991, 971, 1];
150 /* This assumes denormals are supported .*/
151 integer_decode_float(least_positive_float);
152 [1, - 1074, 1];
154 scale_float(1.0, 2);
155 4.0;
157 scale_float(-1.0, 2);
158 -4.0;
160 scale_float(1.0, -5000);
161 0.0;
164  * The second scale_float was determined from integer_decode_float to
165  * get the bits, and scaled by -53 to get the final result.
166  */
167 scale_float(most_positive_float, -1024) - scale_float(float(9007199254740991),-53);
168 0.0;
170 scale_float(1b0, 2);
171 4b0;
173 scale_float(-1b0, 2);
174 -4b0;
176 scale_float(0.125b0, 3);
177 1.0b0;
179 float_sign(-5.0);
180 -1.0;
182 float_sign(5.0);
183 1.0;
185 float_sign(0.0);
186 1.0;
188 float_sign(-5b0);
189 -1b0;
191 float_sign(5b0);
192 1b0;
194 float_sign(0b0);
195 1b0;
197 float_sign(-0b0);
198 1b0;