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
|
------------------------------------------------------------------------
-- logb.decTest -- return integral adjusted exponent as per 754r --
-- Copyright (c) IBM Corporation, 2005, 2009. 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.59
-- This emphasises the testing of notable cases, as they will often
-- have unusual paths (especially the 10**n results).
extended: 1
rounding: half_even
maxExponent: 999
minexponent: -999
-- basics & examples
precision: 9
logbx001 logb 0 -> -Infinity Division_by_zero
logbx002 logb 1E-999 -> -999
logbx003 logb 9E-999 -> -999
logbx004 logb 0.001 -> -3
logbx005 logb 0.03 -> -2
logbx006 logb 1 -> 0
logbx007 logb 2 -> 0
logbx008 logb 2.5 -> 0
logbx009 logb 2.50 -> 0
logbx010 logb 10 -> 1
logbx011 logb 70 -> 1
logbx012 logb 100 -> 2
logbx013 logb 250 -> 2
logbx014 logb +Infinity -> Infinity
-- negatives are treated as positives
logbx021 logb -0 -> -Infinity Division_by_zero
logbx022 logb -1E-999 -> -999
logbx023 logb -9E-999 -> -999
logbx024 logb -0.001 -> -3
logbx025 logb -1 -> 0
logbx026 logb -2 -> 0
logbx027 logb -10 -> 1
logbx028 logb -70 -> 1
logbx029 logb -100 -> 2
logbx030 logb -100000000 -> 8
logbx031 logb -Infinity -> Infinity
-- zeros
logbx111 logb 0 -> -Infinity Division_by_zero
logbx112 logb -0 -> -Infinity Division_by_zero
logbx113 logb 0E+4 -> -Infinity Division_by_zero
logbx114 logb -0E+4 -> -Infinity Division_by_zero
logbx115 logb 0.0000 -> -Infinity Division_by_zero
logbx116 logb -0.0000 -> -Infinity Division_by_zero
logbx117 logb 0E-141 -> -Infinity Division_by_zero
logbx118 logb -0E-141 -> -Infinity Division_by_zero
-- full coefficients, alternating bits
logbx121 logb 268268268 -> 8
logbx122 logb -268268268 -> 8
logbx123 logb 134134134 -> 8
logbx124 logb -134134134 -> 8
-- Nmax, Nmin, Ntiny
logbx131 logb 9.99999999E+999 -> 999
logbx132 logb 1E-999 -> -999
logbx133 logb 1.00000000E-999 -> -999
logbx134 logb 1E-1007 -> -1007
logbx135 logb -1E-1007 -> -1007
logbx136 logb -1.00000000E-999 -> -999
logbx137 logb -1E-999 -> -999
logbx138 logb -9.99999999E+999 -> 999
-- ones
logbx0061 logb 1 -> 0
logbx0062 logb 1.0 -> 0
logbx0063 logb 1.000000000000000 -> 0
logbx0064 logb 1.000000000000000000 -> 0
-- notable cases -- exact powers of 10
logbx1100 logb 1 -> 0
logbx1101 logb 10 -> 1
logbx1102 logb 100 -> 2
logbx1103 logb 1000 -> 3
logbx1104 logb 10000 -> 4
logbx1105 logb 100000 -> 5
logbx1106 logb 1000000 -> 6
logbx1107 logb 10000000 -> 7
logbx1108 logb 100000000 -> 8
logbx1109 logb 1000000000 -> 9
logbx1110 logb 10000000000 -> 10
logbx1111 logb 100000000000 -> 11
logbx1112 logb 1000000000000 -> 12
logbx1113 logb 0.00000000001 -> -11
logbx1114 logb 0.0000000001 -> -10
logbx1115 logb 0.000000001 -> -9
logbx1116 logb 0.00000001 -> -8
logbx1117 logb 0.0000001 -> -7
logbx1118 logb 0.000001 -> -6
logbx1119 logb 0.00001 -> -5
logbx1120 logb 0.0001 -> -4
logbx1121 logb 0.001 -> -3
logbx1122 logb 0.01 -> -2
logbx1123 logb 0.1 -> -1
logbx1124 logb 1E-99 -> -99
logbx1125 logb 1E-100 -> -100
logbx1126 logb 1E-383 -> -383
logbx1127 logb 1E-999 -> -999
-- suggestions from Ilan Nehama
logbx1400 logb 10E-3 -> -2
logbx1401 logb 10E-2 -> -1
logbx1402 logb 100E-2 -> 0
logbx1403 logb 1000E-2 -> 1
logbx1404 logb 10000E-2 -> 2
logbx1405 logb 10E-1 -> 0
logbx1406 logb 100E-1 -> 1
logbx1407 logb 1000E-1 -> 2
logbx1408 logb 10000E-1 -> 3
logbx1409 logb 10E0 -> 1
logbx1410 logb 100E0 -> 2
logbx1411 logb 1000E0 -> 3
logbx1412 logb 10000E0 -> 4
logbx1413 logb 10E1 -> 2
logbx1414 logb 100E1 -> 3
logbx1415 logb 1000E1 -> 4
logbx1416 logb 10000E1 -> 5
logbx1417 logb 10E2 -> 3
logbx1418 logb 100E2 -> 4
logbx1419 logb 1000E2 -> 5
logbx1420 logb 10000E2 -> 6
-- inexacts
precision: 2
logbx1500 logb 10000E2 -> 6
logbx1501 logb 1E+99 -> 99
logbx1502 logb 1E-99 -> -99
logbx1503 logb 1E+100 -> 1.0E+2 Rounded
logbx1504 logb 1E+999 -> 1.0E+3 Inexact Rounded
logbx1505 logb 1E-100 -> -1.0E+2 Rounded
logbx1506 logb 1E-999 -> -1.0E+3 Inexact Rounded
logbx1507 logb 1E-1111 -> -1.1E+3 Inexact Rounded
logbx1508 logb 1E-3333 -> -3.3E+3 Inexact Rounded
logbx1509 logb 1E-6666 -> -6.7E+3 Inexact Rounded
logbx1510 logb 1E+999999999 -> 1.0E+9 Inexact Rounded
logbx1511 logb 1E-999999999 -> -1.0E+9 Inexact Rounded
precision: 1
logbx1517 logb 1E-1111 -> -1E+3 Inexact Rounded
logbx1518 logb 1E-3333 -> -3E+3 Inexact Rounded
logbx1519 logb 1E-6666 -> -7E+3 Inexact Rounded
precision: 8
logbx1520 logb 1E+999999999 -> 1.0000000E+9 Inexact Rounded
logbx1521 logb 1E-999999999 -> -1.0000000E+9 Inexact Rounded
precision: 9
logbx1523 logb 1E+999999999 -> 999999999
logbx1524 logb 1E-999999999 -> -999999999
-- special values
precision: 9
logbx820 logb Infinity -> Infinity
logbx821 logb -Infinity -> Infinity
logbx822 logb 0 -> -Infinity Division_by_zero
logbx823 logb NaN -> NaN
logbx824 logb sNaN -> NaN Invalid_operation
-- propagating NaNs
logbx825 logb sNaN123 -> NaN123 Invalid_operation
logbx826 logb -sNaN321 -> -NaN321 Invalid_operation
logbx827 logb NaN456 -> NaN456
logbx828 logb -NaN654 -> -NaN654
logbx829 logb NaN1 -> NaN1
-- Null test
logbx900 logb # -> NaN Invalid_operation
|