1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
------------------------------------------------------------------------
-- clamp.decTest -- clamped exponent tests (format-independent) --
-- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.38
-- This set of tests uses the same limits as the 8-byte concrete
-- representation, but applies clamping without using format-specific
-- conversions.
extended: 1
precision: 16
rounding: half_even
maxExponent: 384
minExponent: -383
clamp: 1
-- General testcases
-- Normality
clam010 apply 1234567890123456 -> 1234567890123456
clam011 apply 1234567890123456.0 -> 1234567890123456 Rounded
clam012 apply 1234567890123456.1 -> 1234567890123456 Rounded Inexact
clam013 apply -1234567890123456 -> -1234567890123456
clam014 apply -1234567890123456.0 -> -1234567890123456 Rounded
clam015 apply -1234567890123456.1 -> -1234567890123456 Rounded Inexact
-- Nmax and similar
clam022 apply 9.999999999999999E+384 -> 9.999999999999999E+384
clam024 apply 1.234567890123456E+384 -> 1.234567890123456E+384
-- fold-downs (more below)
clam030 apply 1.23E+384 -> 1.230000000000000E+384 Clamped
clam032 apply 1E+384 -> 1.000000000000000E+384 Clamped
clam051 apply 12345 -> 12345
clam053 apply 1234 -> 1234
clam055 apply 123 -> 123
clam057 apply 12 -> 12
clam059 apply 1 -> 1
clam061 apply 1.23 -> 1.23
clam063 apply 123.45 -> 123.45
-- Nmin and below
clam071 apply 1E-383 -> 1E-383
clam073 apply 1.000000000000000E-383 -> 1.000000000000000E-383
clam075 apply 1.000000000000001E-383 -> 1.000000000000001E-383
clam077 apply 0.100000000000000E-383 -> 1.00000000000000E-384 Subnormal
clam079 apply 0.000000000000010E-383 -> 1.0E-397 Subnormal
clam081 apply 0.00000000000001E-383 -> 1E-397 Subnormal
clam083 apply 0.000000000000001E-383 -> 1E-398 Subnormal
-- underflows
clam090 apply 1e-398 -> #0000000000000001 Subnormal
clam091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded
clam092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
clam093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
clam094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
clam095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
clam096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
-- Same again, negatives
-- Nmax and similar
clam122 apply -9.999999999999999E+384 -> -9.999999999999999E+384
clam124 apply -1.234567890123456E+384 -> -1.234567890123456E+384
-- fold-downs (more below)
clam130 apply -1.23E+384 -> -1.230000000000000E+384 Clamped
clam132 apply -1E+384 -> -1.000000000000000E+384 Clamped
clam151 apply -12345 -> -12345
clam153 apply -1234 -> -1234
clam155 apply -123 -> -123
clam157 apply -12 -> -12
clam159 apply -1 -> -1
clam161 apply -1.23 -> -1.23
clam163 apply -123.45 -> -123.45
-- Nmin and below
clam171 apply -1E-383 -> -1E-383
clam173 apply -1.000000000000000E-383 -> -1.000000000000000E-383
clam175 apply -1.000000000000001E-383 -> -1.000000000000001E-383
clam177 apply -0.100000000000000E-383 -> -1.00000000000000E-384 Subnormal
clam179 apply -0.000000000000010E-383 -> -1.0E-397 Subnormal
clam181 apply -0.00000000000001E-383 -> -1E-397 Subnormal
clam183 apply -0.000000000000001E-383 -> -1E-398 Subnormal
-- underflows
clam189 apply -1e-398 -> #8000000000000001 Subnormal
clam190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded
clam191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded
clam192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
clam193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
clam194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
clam195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
clam196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
-- zeros
clam401 apply 0E-500 -> 0E-398 Clamped
clam402 apply 0E-400 -> 0E-398 Clamped
clam403 apply 0E-398 -> 0E-398
clam404 apply 0.000000000000000E-383 -> 0E-398
clam405 apply 0E-2 -> 0.00
clam406 apply 0 -> 0
clam407 apply 0E+3 -> 0E+3
clam408 apply 0E+369 -> 0E+369
-- clamped zeros...
clam410 apply 0E+370 -> 0E+369 Clamped
clam411 apply 0E+384 -> 0E+369 Clamped
clam412 apply 0E+400 -> 0E+369 Clamped
clam413 apply 0E+500 -> 0E+369 Clamped
-- negative zeros
clam420 apply -0E-500 -> -0E-398 Clamped
clam421 apply -0E-400 -> -0E-398 Clamped
clam422 apply -0E-398 -> -0E-398
clam423 apply -0.000000000000000E-383 -> -0E-398
clam424 apply -0E-2 -> -0.00
clam425 apply -0 -> -0
clam426 apply -0E+3 -> -0E+3
clam427 apply -0E+369 -> -0E+369
-- clamped zeros...
clam431 apply -0E+370 -> -0E+369 Clamped
clam432 apply -0E+384 -> -0E+369 Clamped
clam433 apply -0E+400 -> -0E+369 Clamped
clam434 apply -0E+500 -> -0E+369 Clamped
-- fold-down full sequence
clam601 apply 1E+384 -> 1.000000000000000E+384 Clamped
clam603 apply 1E+383 -> 1.00000000000000E+383 Clamped
clam605 apply 1E+382 -> 1.0000000000000E+382 Clamped
clam607 apply 1E+381 -> 1.000000000000E+381 Clamped
clam609 apply 1E+380 -> 1.00000000000E+380 Clamped
clam611 apply 1E+379 -> 1.0000000000E+379 Clamped
clam613 apply 1E+378 -> 1.000000000E+378 Clamped
clam615 apply 1E+377 -> 1.00000000E+377 Clamped
clam617 apply 1E+376 -> 1.0000000E+376 Clamped
clam619 apply 1E+375 -> 1.000000E+375 Clamped
clam621 apply 1E+374 -> 1.00000E+374 Clamped
clam623 apply 1E+373 -> 1.0000E+373 Clamped
clam625 apply 1E+372 -> 1.000E+372 Clamped
clam627 apply 1E+371 -> 1.00E+371 Clamped
clam629 apply 1E+370 -> 1.0E+370 Clamped
clam631 apply 1E+369 -> 1E+369
clam633 apply 1E+368 -> 1E+368
-- same with 9s
clam641 apply 9E+384 -> 9.000000000000000E+384 Clamped
clam643 apply 9E+383 -> 9.00000000000000E+383 Clamped
clam645 apply 9E+382 -> 9.0000000000000E+382 Clamped
clam647 apply 9E+381 -> 9.000000000000E+381 Clamped
clam649 apply 9E+380 -> 9.00000000000E+380 Clamped
clam651 apply 9E+379 -> 9.0000000000E+379 Clamped
clam653 apply 9E+378 -> 9.000000000E+378 Clamped
clam655 apply 9E+377 -> 9.00000000E+377 Clamped
clam657 apply 9E+376 -> 9.0000000E+376 Clamped
clam659 apply 9E+375 -> 9.000000E+375 Clamped
clam661 apply 9E+374 -> 9.00000E+374 Clamped
clam663 apply 9E+373 -> 9.0000E+373 Clamped
clam665 apply 9E+372 -> 9.000E+372 Clamped
clam667 apply 9E+371 -> 9.00E+371 Clamped
clam669 apply 9E+370 -> 9.0E+370 Clamped
clam671 apply 9E+369 -> 9E+369
clam673 apply 9E+368 -> 9E+368
-- example from documentation
precision: 7
rounding: half_even
maxExponent: +96
minExponent: -95
clamp: 0
clam700 apply 1.23E+96 -> 1.23E+96
clamp: 1
clam701 apply 1.23E+96 -> 1.230000E+96 Clamped
|