|
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.58 |
|
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 |