1 | ------------------------------------------------------------------------
|
---|
2 | -- clamp.decTest -- clamped exponent tests (format-independent) --
|
---|
3 | -- Copyright (c) IBM Corporation, 2000, 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.59
|
---|
21 |
|
---|
22 | -- This set of tests uses the same limits as the 8-byte concrete
|
---|
23 | -- representation, but applies clamping without using format-specific
|
---|
24 | -- conversions.
|
---|
25 |
|
---|
26 | extended: 1
|
---|
27 | precision: 16
|
---|
28 | rounding: half_even
|
---|
29 | maxExponent: 384
|
---|
30 | minExponent: -383
|
---|
31 | clamp: 1
|
---|
32 |
|
---|
33 | -- General testcases
|
---|
34 |
|
---|
35 | -- Normality
|
---|
36 | clam010 apply 1234567890123456 -> 1234567890123456
|
---|
37 | clam011 apply 1234567890123456.0 -> 1234567890123456 Rounded
|
---|
38 | clam012 apply 1234567890123456.1 -> 1234567890123456 Rounded Inexact
|
---|
39 | clam013 apply -1234567890123456 -> -1234567890123456
|
---|
40 | clam014 apply -1234567890123456.0 -> -1234567890123456 Rounded
|
---|
41 | clam015 apply -1234567890123456.1 -> -1234567890123456 Rounded Inexact
|
---|
42 |
|
---|
43 |
|
---|
44 | -- Nmax and similar
|
---|
45 | clam022 apply 9.999999999999999E+384 -> 9.999999999999999E+384
|
---|
46 | clam024 apply 1.234567890123456E+384 -> 1.234567890123456E+384
|
---|
47 | -- fold-downs (more below)
|
---|
48 | clam030 apply 1.23E+384 -> 1.230000000000000E+384 Clamped
|
---|
49 | clam032 apply 1E+384 -> 1.000000000000000E+384 Clamped
|
---|
50 |
|
---|
51 | clam051 apply 12345 -> 12345
|
---|
52 | clam053 apply 1234 -> 1234
|
---|
53 | clam055 apply 123 -> 123
|
---|
54 | clam057 apply 12 -> 12
|
---|
55 | clam059 apply 1 -> 1
|
---|
56 | clam061 apply 1.23 -> 1.23
|
---|
57 | clam063 apply 123.45 -> 123.45
|
---|
58 |
|
---|
59 | -- Nmin and below
|
---|
60 | clam071 apply 1E-383 -> 1E-383
|
---|
61 | clam073 apply 1.000000000000000E-383 -> 1.000000000000000E-383
|
---|
62 | clam075 apply 1.000000000000001E-383 -> 1.000000000000001E-383
|
---|
63 |
|
---|
64 | clam077 apply 0.100000000000000E-383 -> 1.00000000000000E-384 Subnormal
|
---|
65 | clam079 apply 0.000000000000010E-383 -> 1.0E-397 Subnormal
|
---|
66 | clam081 apply 0.00000000000001E-383 -> 1E-397 Subnormal
|
---|
67 | clam083 apply 0.000000000000001E-383 -> 1E-398 Subnormal
|
---|
68 |
|
---|
69 | -- underflows
|
---|
70 | clam090 apply 1e-398 -> #0000000000000001 Subnormal
|
---|
71 | clam091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded
|
---|
72 | clam092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
---|
73 | clam093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
---|
74 | clam094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
---|
75 | clam095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
|
---|
76 | clam096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped
|
---|
77 | clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped
|
---|
78 | clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped
|
---|
79 | clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded Clamped
|
---|
80 |
|
---|
81 | -- Same again, negatives
|
---|
82 | -- Nmax and similar
|
---|
83 | clam122 apply -9.999999999999999E+384 -> -9.999999999999999E+384
|
---|
84 | clam124 apply -1.234567890123456E+384 -> -1.234567890123456E+384
|
---|
85 | -- fold-downs (more below)
|
---|
86 | clam130 apply -1.23E+384 -> -1.230000000000000E+384 Clamped
|
---|
87 | clam132 apply -1E+384 -> -1.000000000000000E+384 Clamped
|
---|
88 |
|
---|
89 | clam151 apply -12345 -> -12345
|
---|
90 | clam153 apply -1234 -> -1234
|
---|
91 | clam155 apply -123 -> -123
|
---|
92 | clam157 apply -12 -> -12
|
---|
93 | clam159 apply -1 -> -1
|
---|
94 | clam161 apply -1.23 -> -1.23
|
---|
95 | clam163 apply -123.45 -> -123.45
|
---|
96 |
|
---|
97 | -- Nmin and below
|
---|
98 | clam171 apply -1E-383 -> -1E-383
|
---|
99 | clam173 apply -1.000000000000000E-383 -> -1.000000000000000E-383
|
---|
100 | clam175 apply -1.000000000000001E-383 -> -1.000000000000001E-383
|
---|
101 |
|
---|
102 | clam177 apply -0.100000000000000E-383 -> -1.00000000000000E-384 Subnormal
|
---|
103 | clam179 apply -0.000000000000010E-383 -> -1.0E-397 Subnormal
|
---|
104 | clam181 apply -0.00000000000001E-383 -> -1E-397 Subnormal
|
---|
105 | clam183 apply -0.000000000000001E-383 -> -1E-398 Subnormal
|
---|
106 |
|
---|
107 | -- underflows
|
---|
108 | clam189 apply -1e-398 -> #8000000000000001 Subnormal
|
---|
109 | clam190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded
|
---|
110 | clam191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded
|
---|
111 | clam192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
---|
112 | clam193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
---|
113 | clam194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
---|
114 | clam195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
|
---|
115 | clam196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped
|
---|
116 | clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped
|
---|
117 | clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped
|
---|
118 | clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded Clamped
|
---|
119 |
|
---|
120 | -- zeros
|
---|
121 | clam401 apply 0E-500 -> 0E-398 Clamped
|
---|
122 | clam402 apply 0E-400 -> 0E-398 Clamped
|
---|
123 | clam403 apply 0E-398 -> 0E-398
|
---|
124 | clam404 apply 0.000000000000000E-383 -> 0E-398
|
---|
125 | clam405 apply 0E-2 -> 0.00
|
---|
126 | clam406 apply 0 -> 0
|
---|
127 | clam407 apply 0E+3 -> 0E+3
|
---|
128 | clam408 apply 0E+369 -> 0E+369
|
---|
129 | -- clamped zeros...
|
---|
130 | clam410 apply 0E+370 -> 0E+369 Clamped
|
---|
131 | clam411 apply 0E+384 -> 0E+369 Clamped
|
---|
132 | clam412 apply 0E+400 -> 0E+369 Clamped
|
---|
133 | clam413 apply 0E+500 -> 0E+369 Clamped
|
---|
134 |
|
---|
135 | -- negative zeros
|
---|
136 | clam420 apply -0E-500 -> -0E-398 Clamped
|
---|
137 | clam421 apply -0E-400 -> -0E-398 Clamped
|
---|
138 | clam422 apply -0E-398 -> -0E-398
|
---|
139 | clam423 apply -0.000000000000000E-383 -> -0E-398
|
---|
140 | clam424 apply -0E-2 -> -0.00
|
---|
141 | clam425 apply -0 -> -0
|
---|
142 | clam426 apply -0E+3 -> -0E+3
|
---|
143 | clam427 apply -0E+369 -> -0E+369
|
---|
144 | -- clamped zeros...
|
---|
145 | clam431 apply -0E+370 -> -0E+369 Clamped
|
---|
146 | clam432 apply -0E+384 -> -0E+369 Clamped
|
---|
147 | clam433 apply -0E+400 -> -0E+369 Clamped
|
---|
148 | clam434 apply -0E+500 -> -0E+369 Clamped
|
---|
149 |
|
---|
150 | -- fold-down full sequence
|
---|
151 | clam601 apply 1E+384 -> 1.000000000000000E+384 Clamped
|
---|
152 | clam603 apply 1E+383 -> 1.00000000000000E+383 Clamped
|
---|
153 | clam605 apply 1E+382 -> 1.0000000000000E+382 Clamped
|
---|
154 | clam607 apply 1E+381 -> 1.000000000000E+381 Clamped
|
---|
155 | clam609 apply 1E+380 -> 1.00000000000E+380 Clamped
|
---|
156 | clam611 apply 1E+379 -> 1.0000000000E+379 Clamped
|
---|
157 | clam613 apply 1E+378 -> 1.000000000E+378 Clamped
|
---|
158 | clam615 apply 1E+377 -> 1.00000000E+377 Clamped
|
---|
159 | clam617 apply 1E+376 -> 1.0000000E+376 Clamped
|
---|
160 | clam619 apply 1E+375 -> 1.000000E+375 Clamped
|
---|
161 | clam621 apply 1E+374 -> 1.00000E+374 Clamped
|
---|
162 | clam623 apply 1E+373 -> 1.0000E+373 Clamped
|
---|
163 | clam625 apply 1E+372 -> 1.000E+372 Clamped
|
---|
164 | clam627 apply 1E+371 -> 1.00E+371 Clamped
|
---|
165 | clam629 apply 1E+370 -> 1.0E+370 Clamped
|
---|
166 | clam631 apply 1E+369 -> 1E+369
|
---|
167 | clam633 apply 1E+368 -> 1E+368
|
---|
168 | -- same with 9s
|
---|
169 | clam641 apply 9E+384 -> 9.000000000000000E+384 Clamped
|
---|
170 | clam643 apply 9E+383 -> 9.00000000000000E+383 Clamped
|
---|
171 | clam645 apply 9E+382 -> 9.0000000000000E+382 Clamped
|
---|
172 | clam647 apply 9E+381 -> 9.000000000000E+381 Clamped
|
---|
173 | clam649 apply 9E+380 -> 9.00000000000E+380 Clamped
|
---|
174 | clam651 apply 9E+379 -> 9.0000000000E+379 Clamped
|
---|
175 | clam653 apply 9E+378 -> 9.000000000E+378 Clamped
|
---|
176 | clam655 apply 9E+377 -> 9.00000000E+377 Clamped
|
---|
177 | clam657 apply 9E+376 -> 9.0000000E+376 Clamped
|
---|
178 | clam659 apply 9E+375 -> 9.000000E+375 Clamped
|
---|
179 | clam661 apply 9E+374 -> 9.00000E+374 Clamped
|
---|
180 | clam663 apply 9E+373 -> 9.0000E+373 Clamped
|
---|
181 | clam665 apply 9E+372 -> 9.000E+372 Clamped
|
---|
182 | clam667 apply 9E+371 -> 9.00E+371 Clamped
|
---|
183 | clam669 apply 9E+370 -> 9.0E+370 Clamped
|
---|
184 | clam671 apply 9E+369 -> 9E+369
|
---|
185 | clam673 apply 9E+368 -> 9E+368
|
---|
186 |
|
---|
187 | -- subnormals clamped to 0-Etiny
|
---|
188 | precision: 16
|
---|
189 | maxExponent: 384
|
---|
190 | minExponent: -383
|
---|
191 | clam681 apply 7E-398 -> 7E-398 Subnormal
|
---|
192 | clam682 apply 0E-398 -> 0E-398
|
---|
193 | clam683 apply 7E-399 -> 1E-398 Subnormal Underflow Inexact Rounded
|
---|
194 | clam684 apply 4E-399 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
|
---|
195 | clam685 apply 7E-400 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
|
---|
196 | clam686 apply 7E-401 -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
|
---|
197 | clam687 apply 0E-399 -> 0E-398 Clamped
|
---|
198 | clam688 apply 0E-400 -> 0E-398 Clamped
|
---|
199 | clam689 apply 0E-401 -> 0E-398 Clamped
|
---|
200 |
|
---|
201 | -- example from documentation
|
---|
202 | precision: 7
|
---|
203 | rounding: half_even
|
---|
204 | maxExponent: +96
|
---|
205 | minExponent: -95
|
---|
206 |
|
---|
207 | clamp: 0
|
---|
208 | clam700 apply 1.23E+96 -> 1.23E+96
|
---|
209 |
|
---|
210 | clamp: 1
|
---|
211 | clam701 apply 1.23E+96 -> 1.230000E+96 Clamped
|
---|