summaryrefslogtreecommitdiffstats
path: root/Lib/test/decimaltestdata/logb.decTest
blob: 577f7a43d50cbfd1a0a5cb1de77afbcb30b2c37d (plain)
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
------------------------------------------------------------------------
-- logb.decTest -- return integral adjusted exponent as per 754r      --
-- Copyright (c) IBM Corporation, 2005, 2007.  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.56

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

-- special values
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