|
1 ------------------------------------------------------------------------ |
|
2 -- tointegral.decTest -- round decimal to integral value -- |
|
3 -- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. -- |
|
4 ------------------------------------------------------------------------ |
|
5 -- Please see the document "General Decimal Arithmetic Testcases" -- |
|
6 -- at http://www2.hursley.ibm.com/decimal for the description of -- |
|
7 -- these testcases. -- |
|
8 -- -- |
|
9 -- These testcases are experimental ('beta' versions), and they -- |
|
10 -- may contain errors. They are offered on an as-is basis. In -- |
|
11 -- particular, achieving the same results as the tests here is not -- |
|
12 -- a guarantee that an implementation complies with any Standard -- |
|
13 -- or specification. The tests are not exhaustive. -- |
|
14 -- -- |
|
15 -- Please send comments, suggestions, and corrections to the author: -- |
|
16 -- Mike Cowlishaw, IBM Fellow -- |
|
17 -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- |
|
18 -- mfc@uk.ibm.com -- |
|
19 ------------------------------------------------------------------------ |
|
20 version: 2.58 |
|
21 |
|
22 -- This set of tests tests the extended specification 'round-to-integral |
|
23 -- value' operation (from IEEE 854, later modified in 754r). |
|
24 -- All non-zero results are defined as being those from either copy or |
|
25 -- quantize, so those are assumed to have been tested. |
|
26 -- Note that 754r requires that Inexact not be set, and we similarly |
|
27 -- assume Rounded is not set. |
|
28 |
|
29 extended: 1 |
|
30 precision: 9 |
|
31 rounding: half_up |
|
32 maxExponent: 999 |
|
33 minExponent: -999 |
|
34 |
|
35 intx001 tointegral 0 -> 0 |
|
36 intx002 tointegral 0.0 -> 0 |
|
37 intx003 tointegral 0.1 -> 0 |
|
38 intx004 tointegral 0.2 -> 0 |
|
39 intx005 tointegral 0.3 -> 0 |
|
40 intx006 tointegral 0.4 -> 0 |
|
41 intx007 tointegral 0.5 -> 1 |
|
42 intx008 tointegral 0.6 -> 1 |
|
43 intx009 tointegral 0.7 -> 1 |
|
44 intx010 tointegral 0.8 -> 1 |
|
45 intx011 tointegral 0.9 -> 1 |
|
46 intx012 tointegral 1 -> 1 |
|
47 intx013 tointegral 1.0 -> 1 |
|
48 intx014 tointegral 1.1 -> 1 |
|
49 intx015 tointegral 1.2 -> 1 |
|
50 intx016 tointegral 1.3 -> 1 |
|
51 intx017 tointegral 1.4 -> 1 |
|
52 intx018 tointegral 1.5 -> 2 |
|
53 intx019 tointegral 1.6 -> 2 |
|
54 intx020 tointegral 1.7 -> 2 |
|
55 intx021 tointegral 1.8 -> 2 |
|
56 intx022 tointegral 1.9 -> 2 |
|
57 -- negatives |
|
58 intx031 tointegral -0 -> -0 |
|
59 intx032 tointegral -0.0 -> -0 |
|
60 intx033 tointegral -0.1 -> -0 |
|
61 intx034 tointegral -0.2 -> -0 |
|
62 intx035 tointegral -0.3 -> -0 |
|
63 intx036 tointegral -0.4 -> -0 |
|
64 intx037 tointegral -0.5 -> -1 |
|
65 intx038 tointegral -0.6 -> -1 |
|
66 intx039 tointegral -0.7 -> -1 |
|
67 intx040 tointegral -0.8 -> -1 |
|
68 intx041 tointegral -0.9 -> -1 |
|
69 intx042 tointegral -1 -> -1 |
|
70 intx043 tointegral -1.0 -> -1 |
|
71 intx044 tointegral -1.1 -> -1 |
|
72 intx045 tointegral -1.2 -> -1 |
|
73 intx046 tointegral -1.3 -> -1 |
|
74 intx047 tointegral -1.4 -> -1 |
|
75 intx048 tointegral -1.5 -> -2 |
|
76 intx049 tointegral -1.6 -> -2 |
|
77 intx050 tointegral -1.7 -> -2 |
|
78 intx051 tointegral -1.8 -> -2 |
|
79 intx052 tointegral -1.9 -> -2 |
|
80 -- next two would be NaN using quantize(x, 0) |
|
81 intx053 tointegral 10E+30 -> 1.0E+31 |
|
82 intx054 tointegral -10E+30 -> -1.0E+31 |
|
83 |
|
84 -- numbers around precision |
|
85 precision: 9 |
|
86 intx060 tointegral '56267E-10' -> '0' |
|
87 intx061 tointegral '56267E-5' -> '1' |
|
88 intx062 tointegral '56267E-2' -> '563' |
|
89 intx063 tointegral '56267E-1' -> '5627' |
|
90 intx065 tointegral '56267E-0' -> '56267' |
|
91 intx066 tointegral '56267E+0' -> '56267' |
|
92 intx067 tointegral '56267E+1' -> '5.6267E+5' |
|
93 intx068 tointegral '56267E+2' -> '5.6267E+6' |
|
94 intx069 tointegral '56267E+3' -> '5.6267E+7' |
|
95 intx070 tointegral '56267E+4' -> '5.6267E+8' |
|
96 intx071 tointegral '56267E+5' -> '5.6267E+9' |
|
97 intx072 tointegral '56267E+6' -> '5.6267E+10' |
|
98 intx073 tointegral '1.23E+96' -> '1.23E+96' |
|
99 intx074 tointegral '1.23E+384' -> '1.23E+384' |
|
100 intx075 tointegral '1.23E+999' -> '1.23E+999' |
|
101 |
|
102 intx080 tointegral '-56267E-10' -> '-0' |
|
103 intx081 tointegral '-56267E-5' -> '-1' |
|
104 intx082 tointegral '-56267E-2' -> '-563' |
|
105 intx083 tointegral '-56267E-1' -> '-5627' |
|
106 intx085 tointegral '-56267E-0' -> '-56267' |
|
107 intx086 tointegral '-56267E+0' -> '-56267' |
|
108 intx087 tointegral '-56267E+1' -> '-5.6267E+5' |
|
109 intx088 tointegral '-56267E+2' -> '-5.6267E+6' |
|
110 intx089 tointegral '-56267E+3' -> '-5.6267E+7' |
|
111 intx090 tointegral '-56267E+4' -> '-5.6267E+8' |
|
112 intx091 tointegral '-56267E+5' -> '-5.6267E+9' |
|
113 intx092 tointegral '-56267E+6' -> '-5.6267E+10' |
|
114 intx093 tointegral '-1.23E+96' -> '-1.23E+96' |
|
115 intx094 tointegral '-1.23E+384' -> '-1.23E+384' |
|
116 intx095 tointegral '-1.23E+999' -> '-1.23E+999' |
|
117 |
|
118 -- subnormal inputs |
|
119 intx100 tointegral 1E-999 -> 0 |
|
120 intx101 tointegral 0.1E-999 -> 0 |
|
121 intx102 tointegral 0.01E-999 -> 0 |
|
122 intx103 tointegral 0E-999 -> 0 |
|
123 |
|
124 -- specials and zeros |
|
125 intx120 tointegral 'Inf' -> Infinity |
|
126 intx121 tointegral '-Inf' -> -Infinity |
|
127 intx122 tointegral NaN -> NaN |
|
128 intx123 tointegral sNaN -> NaN Invalid_operation |
|
129 intx124 tointegral 0 -> 0 |
|
130 intx125 tointegral -0 -> -0 |
|
131 intx126 tointegral 0.000 -> 0 |
|
132 intx127 tointegral 0.00 -> 0 |
|
133 intx128 tointegral 0.0 -> 0 |
|
134 intx129 tointegral 0 -> 0 |
|
135 intx130 tointegral 0E-3 -> 0 |
|
136 intx131 tointegral 0E-2 -> 0 |
|
137 intx132 tointegral 0E-1 -> 0 |
|
138 intx133 tointegral 0E-0 -> 0 |
|
139 intx134 tointegral 0E+1 -> 0E+1 |
|
140 intx135 tointegral 0E+2 -> 0E+2 |
|
141 intx136 tointegral 0E+3 -> 0E+3 |
|
142 intx137 tointegral 0E+4 -> 0E+4 |
|
143 intx138 tointegral 0E+5 -> 0E+5 |
|
144 intx139 tointegral -0.000 -> -0 |
|
145 intx140 tointegral -0.00 -> -0 |
|
146 intx141 tointegral -0.0 -> -0 |
|
147 intx142 tointegral -0 -> -0 |
|
148 intx143 tointegral -0E-3 -> -0 |
|
149 intx144 tointegral -0E-2 -> -0 |
|
150 intx145 tointegral -0E-1 -> -0 |
|
151 intx146 tointegral -0E-0 -> -0 |
|
152 intx147 tointegral -0E+1 -> -0E+1 |
|
153 intx148 tointegral -0E+2 -> -0E+2 |
|
154 intx149 tointegral -0E+3 -> -0E+3 |
|
155 intx150 tointegral -0E+4 -> -0E+4 |
|
156 intx151 tointegral -0E+5 -> -0E+5 |
|
157 -- propagating NaNs |
|
158 intx152 tointegral NaN808 -> NaN808 |
|
159 intx153 tointegral sNaN080 -> NaN80 Invalid_operation |
|
160 intx154 tointegral -NaN808 -> -NaN808 |
|
161 intx155 tointegral -sNaN080 -> -NaN80 Invalid_operation |
|
162 intx156 tointegral -NaN -> -NaN |
|
163 intx157 tointegral -sNaN -> -NaN Invalid_operation |
|
164 |
|
165 -- examples |
|
166 rounding: half_up |
|
167 precision: 9 |
|
168 intx200 tointegral 2.1 -> 2 |
|
169 intx201 tointegral 100 -> 100 |
|
170 intx202 tointegral 100.0 -> 100 |
|
171 intx203 tointegral 101.5 -> 102 |
|
172 intx204 tointegral -101.5 -> -102 |
|
173 intx205 tointegral 10E+5 -> 1.0E+6 |
|
174 intx206 tointegral 7.89E+77 -> 7.89E+77 |
|
175 intx207 tointegral -Inf -> -Infinity |
|
176 |
|
177 |
|
178 -- all rounding modes |
|
179 rounding: half_even |
|
180 |
|
181 intx210 tointegral 55.5 -> 56 |
|
182 intx211 tointegral 56.5 -> 56 |
|
183 intx212 tointegral 57.5 -> 58 |
|
184 intx213 tointegral -55.5 -> -56 |
|
185 intx214 tointegral -56.5 -> -56 |
|
186 intx215 tointegral -57.5 -> -58 |
|
187 |
|
188 rounding: half_up |
|
189 |
|
190 intx220 tointegral 55.5 -> 56 |
|
191 intx221 tointegral 56.5 -> 57 |
|
192 intx222 tointegral 57.5 -> 58 |
|
193 intx223 tointegral -55.5 -> -56 |
|
194 intx224 tointegral -56.5 -> -57 |
|
195 intx225 tointegral -57.5 -> -58 |
|
196 |
|
197 rounding: half_down |
|
198 |
|
199 intx230 tointegral 55.5 -> 55 |
|
200 intx231 tointegral 56.5 -> 56 |
|
201 intx232 tointegral 57.5 -> 57 |
|
202 intx233 tointegral -55.5 -> -55 |
|
203 intx234 tointegral -56.5 -> -56 |
|
204 intx235 tointegral -57.5 -> -57 |
|
205 |
|
206 rounding: up |
|
207 |
|
208 intx240 tointegral 55.3 -> 56 |
|
209 intx241 tointegral 56.3 -> 57 |
|
210 intx242 tointegral 57.3 -> 58 |
|
211 intx243 tointegral -55.3 -> -56 |
|
212 intx244 tointegral -56.3 -> -57 |
|
213 intx245 tointegral -57.3 -> -58 |
|
214 |
|
215 rounding: down |
|
216 |
|
217 intx250 tointegral 55.7 -> 55 |
|
218 intx251 tointegral 56.7 -> 56 |
|
219 intx252 tointegral 57.7 -> 57 |
|
220 intx253 tointegral -55.7 -> -55 |
|
221 intx254 tointegral -56.7 -> -56 |
|
222 intx255 tointegral -57.7 -> -57 |
|
223 |
|
224 rounding: ceiling |
|
225 |
|
226 intx260 tointegral 55.3 -> 56 |
|
227 intx261 tointegral 56.3 -> 57 |
|
228 intx262 tointegral 57.3 -> 58 |
|
229 intx263 tointegral -55.3 -> -55 |
|
230 intx264 tointegral -56.3 -> -56 |
|
231 intx265 tointegral -57.3 -> -57 |
|
232 |
|
233 rounding: floor |
|
234 |
|
235 intx270 tointegral 55.7 -> 55 |
|
236 intx271 tointegral 56.7 -> 56 |
|
237 intx272 tointegral 57.7 -> 57 |
|
238 intx273 tointegral -55.7 -> -56 |
|
239 intx274 tointegral -56.7 -> -57 |
|
240 intx275 tointegral -57.7 -> -58 |
|
241 |