blob: 7f3fb9995170f60425886453624a57c5c2e88d97 [file] [log] [blame]
Raymond Hettinger7c85fa42004-07-01 11:01:35 +00001------------------------------------------------------------------------
2-- tointegral.decTest -- round decimal to integral value --
Benjamin Petersonf17ff4e2008-07-31 16:32:12 +00003-- Copyright (c) IBM Corporation, 2001, 2008. All rights reserved. --
Raymond Hettinger7c85fa42004-07-01 11:01:35 +00004------------------------------------------------------------------------
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------------------------------------------------------------------------
Mark Dickinson8a546532009-10-08 16:30:38 +000020version: 2.59
Raymond Hettinger7c85fa42004-07-01 11:01:35 +000021
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
29extended: 1
30precision: 9
31rounding: half_up
32maxExponent: 999
33minExponent: -999
34
35intx001 tointegral 0 -> 0
36intx002 tointegral 0.0 -> 0
37intx003 tointegral 0.1 -> 0
38intx004 tointegral 0.2 -> 0
39intx005 tointegral 0.3 -> 0
40intx006 tointegral 0.4 -> 0
41intx007 tointegral 0.5 -> 1
42intx008 tointegral 0.6 -> 1
43intx009 tointegral 0.7 -> 1
44intx010 tointegral 0.8 -> 1
45intx011 tointegral 0.9 -> 1
46intx012 tointegral 1 -> 1
47intx013 tointegral 1.0 -> 1
48intx014 tointegral 1.1 -> 1
49intx015 tointegral 1.2 -> 1
50intx016 tointegral 1.3 -> 1
51intx017 tointegral 1.4 -> 1
52intx018 tointegral 1.5 -> 2
53intx019 tointegral 1.6 -> 2
54intx020 tointegral 1.7 -> 2
55intx021 tointegral 1.8 -> 2
56intx022 tointegral 1.9 -> 2
57-- negatives
58intx031 tointegral -0 -> -0
59intx032 tointegral -0.0 -> -0
60intx033 tointegral -0.1 -> -0
61intx034 tointegral -0.2 -> -0
62intx035 tointegral -0.3 -> -0
63intx036 tointegral -0.4 -> -0
64intx037 tointegral -0.5 -> -1
65intx038 tointegral -0.6 -> -1
66intx039 tointegral -0.7 -> -1
67intx040 tointegral -0.8 -> -1
68intx041 tointegral -0.9 -> -1
69intx042 tointegral -1 -> -1
70intx043 tointegral -1.0 -> -1
71intx044 tointegral -1.1 -> -1
72intx045 tointegral -1.2 -> -1
73intx046 tointegral -1.3 -> -1
74intx047 tointegral -1.4 -> -1
75intx048 tointegral -1.5 -> -2
76intx049 tointegral -1.6 -> -2
77intx050 tointegral -1.7 -> -2
78intx051 tointegral -1.8 -> -2
79intx052 tointegral -1.9 -> -2
80-- next two would be NaN using quantize(x, 0)
81intx053 tointegral 10E+30 -> 1.0E+31
82intx054 tointegral -10E+30 -> -1.0E+31
83
84-- numbers around precision
85precision: 9
86intx060 tointegral '56267E-10' -> '0'
87intx061 tointegral '56267E-5' -> '1'
88intx062 tointegral '56267E-2' -> '563'
89intx063 tointegral '56267E-1' -> '5627'
90intx065 tointegral '56267E-0' -> '56267'
91intx066 tointegral '56267E+0' -> '56267'
92intx067 tointegral '56267E+1' -> '5.6267E+5'
93intx068 tointegral '56267E+2' -> '5.6267E+6'
94intx069 tointegral '56267E+3' -> '5.6267E+7'
95intx070 tointegral '56267E+4' -> '5.6267E+8'
96intx071 tointegral '56267E+5' -> '5.6267E+9'
97intx072 tointegral '56267E+6' -> '5.6267E+10'
98intx073 tointegral '1.23E+96' -> '1.23E+96'
99intx074 tointegral '1.23E+384' -> '1.23E+384'
100intx075 tointegral '1.23E+999' -> '1.23E+999'
101
102intx080 tointegral '-56267E-10' -> '-0'
103intx081 tointegral '-56267E-5' -> '-1'
104intx082 tointegral '-56267E-2' -> '-563'
105intx083 tointegral '-56267E-1' -> '-5627'
106intx085 tointegral '-56267E-0' -> '-56267'
107intx086 tointegral '-56267E+0' -> '-56267'
108intx087 tointegral '-56267E+1' -> '-5.6267E+5'
109intx088 tointegral '-56267E+2' -> '-5.6267E+6'
110intx089 tointegral '-56267E+3' -> '-5.6267E+7'
111intx090 tointegral '-56267E+4' -> '-5.6267E+8'
112intx091 tointegral '-56267E+5' -> '-5.6267E+9'
113intx092 tointegral '-56267E+6' -> '-5.6267E+10'
114intx093 tointegral '-1.23E+96' -> '-1.23E+96'
115intx094 tointegral '-1.23E+384' -> '-1.23E+384'
116intx095 tointegral '-1.23E+999' -> '-1.23E+999'
117
118-- subnormal inputs
119intx100 tointegral 1E-999 -> 0
120intx101 tointegral 0.1E-999 -> 0
121intx102 tointegral 0.01E-999 -> 0
122intx103 tointegral 0E-999 -> 0
123
124-- specials and zeros
125intx120 tointegral 'Inf' -> Infinity
126intx121 tointegral '-Inf' -> -Infinity
127intx122 tointegral NaN -> NaN
128intx123 tointegral sNaN -> NaN Invalid_operation
129intx124 tointegral 0 -> 0
130intx125 tointegral -0 -> -0
131intx126 tointegral 0.000 -> 0
132intx127 tointegral 0.00 -> 0
133intx128 tointegral 0.0 -> 0
134intx129 tointegral 0 -> 0
135intx130 tointegral 0E-3 -> 0
136intx131 tointegral 0E-2 -> 0
137intx132 tointegral 0E-1 -> 0
138intx133 tointegral 0E-0 -> 0
139intx134 tointegral 0E+1 -> 0E+1
140intx135 tointegral 0E+2 -> 0E+2
141intx136 tointegral 0E+3 -> 0E+3
142intx137 tointegral 0E+4 -> 0E+4
143intx138 tointegral 0E+5 -> 0E+5
144intx139 tointegral -0.000 -> -0
145intx140 tointegral -0.00 -> -0
146intx141 tointegral -0.0 -> -0
147intx142 tointegral -0 -> -0
148intx143 tointegral -0E-3 -> -0
149intx144 tointegral -0E-2 -> -0
150intx145 tointegral -0E-1 -> -0
151intx146 tointegral -0E-0 -> -0
152intx147 tointegral -0E+1 -> -0E+1
153intx148 tointegral -0E+2 -> -0E+2
154intx149 tointegral -0E+3 -> -0E+3
155intx150 tointegral -0E+4 -> -0E+4
156intx151 tointegral -0E+5 -> -0E+5
157-- propagating NaNs
158intx152 tointegral NaN808 -> NaN808
159intx153 tointegral sNaN080 -> NaN80 Invalid_operation
160intx154 tointegral -NaN808 -> -NaN808
161intx155 tointegral -sNaN080 -> -NaN80 Invalid_operation
162intx156 tointegral -NaN -> -NaN
163intx157 tointegral -sNaN -> -NaN Invalid_operation
164
165-- examples
166rounding: half_up
167precision: 9
168intx200 tointegral 2.1 -> 2
169intx201 tointegral 100 -> 100
170intx202 tointegral 100.0 -> 100
171intx203 tointegral 101.5 -> 102
172intx204 tointegral -101.5 -> -102
173intx205 tointegral 10E+5 -> 1.0E+6
174intx206 tointegral 7.89E+77 -> 7.89E+77
175intx207 tointegral -Inf -> -Infinity
176
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000177
178-- all rounding modes
179rounding: half_even
180
181intx210 tointegral 55.5 -> 56
182intx211 tointegral 56.5 -> 56
183intx212 tointegral 57.5 -> 58
184intx213 tointegral -55.5 -> -56
185intx214 tointegral -56.5 -> -56
186intx215 tointegral -57.5 -> -58
187
188rounding: half_up
189
190intx220 tointegral 55.5 -> 56
191intx221 tointegral 56.5 -> 57
192intx222 tointegral 57.5 -> 58
193intx223 tointegral -55.5 -> -56
194intx224 tointegral -56.5 -> -57
195intx225 tointegral -57.5 -> -58
196
197rounding: half_down
198
199intx230 tointegral 55.5 -> 55
200intx231 tointegral 56.5 -> 56
201intx232 tointegral 57.5 -> 57
202intx233 tointegral -55.5 -> -55
203intx234 tointegral -56.5 -> -56
204intx235 tointegral -57.5 -> -57
205
206rounding: up
207
208intx240 tointegral 55.3 -> 56
209intx241 tointegral 56.3 -> 57
210intx242 tointegral 57.3 -> 58
211intx243 tointegral -55.3 -> -56
212intx244 tointegral -56.3 -> -57
213intx245 tointegral -57.3 -> -58
214
215rounding: down
216
217intx250 tointegral 55.7 -> 55
218intx251 tointegral 56.7 -> 56
219intx252 tointegral 57.7 -> 57
220intx253 tointegral -55.7 -> -55
221intx254 tointegral -56.7 -> -56
222intx255 tointegral -57.7 -> -57
223
224rounding: ceiling
225
226intx260 tointegral 55.3 -> 56
227intx261 tointegral 56.3 -> 57
228intx262 tointegral 57.3 -> 58
229intx263 tointegral -55.3 -> -55
230intx264 tointegral -56.3 -> -56
231intx265 tointegral -57.3 -> -57
232
233rounding: floor
234
235intx270 tointegral 55.7 -> 55
236intx271 tointegral 56.7 -> 56
237intx272 tointegral 57.7 -> 57
238intx273 tointegral -55.7 -> -56
239intx274 tointegral -56.7 -> -57
240intx275 tointegral -57.7 -> -58
241