Home | History | Annotate | Download | only in decimaltestdata
      1 ------------------------------------------------------------------------
      2 -- tointegral.decTest -- round decimal to integral value              --
      3 -- Copyright (c) IBM Corporation, 2001, 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 (a] uk.ibm.com                                                   --
     19 ------------------------------------------------------------------------
     20 version: 2.59
     21 
     22 -- This set of tests tests the extended specification 'round-to-integral
     23 -- value' operation (from IEEE 854, later modified in 754r).
     24 -- All non-zero results are defined as being those from either copy or
     25 -- quantize, so those are assumed to have been tested.
     26 -- Note that 754r requires that Inexact not be set, and we similarly
     27 -- assume Rounded is not set.
     28 
     29 extended:    1
     30 precision:   9
     31 rounding:    half_up
     32 maxExponent: 999
     33 minExponent: -999
     34 
     35 intx001 tointegral      0     ->  0
     36 intx002 tointegral      0.0   ->  0
     37 intx003 tointegral      0.1   ->  0
     38 intx004 tointegral      0.2   ->  0
     39 intx005 tointegral      0.3   ->  0
     40 intx006 tointegral      0.4   ->  0
     41 intx007 tointegral      0.5   ->  1
     42 intx008 tointegral      0.6   ->  1
     43 intx009 tointegral      0.7   ->  1
     44 intx010 tointegral      0.8   ->  1
     45 intx011 tointegral      0.9   ->  1
     46 intx012 tointegral      1     ->  1
     47 intx013 tointegral      1.0   ->  1
     48 intx014 tointegral      1.1   ->  1
     49 intx015 tointegral      1.2   ->  1
     50 intx016 tointegral      1.3   ->  1
     51 intx017 tointegral      1.4   ->  1
     52 intx018 tointegral      1.5   ->  2
     53 intx019 tointegral      1.6   ->  2
     54 intx020 tointegral      1.7   ->  2
     55 intx021 tointegral      1.8   ->  2
     56 intx022 tointegral      1.9   ->  2
     57 -- negatives
     58 intx031 tointegral     -0     -> -0
     59 intx032 tointegral     -0.0   -> -0
     60 intx033 tointegral     -0.1   -> -0
     61 intx034 tointegral     -0.2   -> -0
     62 intx035 tointegral     -0.3   -> -0
     63 intx036 tointegral     -0.4   -> -0
     64 intx037 tointegral     -0.5   -> -1
     65 intx038 tointegral     -0.6   -> -1
     66 intx039 tointegral     -0.7   -> -1
     67 intx040 tointegral     -0.8   -> -1
     68 intx041 tointegral     -0.9   -> -1
     69 intx042 tointegral     -1     -> -1
     70 intx043 tointegral     -1.0   -> -1
     71 intx044 tointegral     -1.1   -> -1
     72 intx045 tointegral     -1.2   -> -1
     73 intx046 tointegral     -1.3   -> -1
     74 intx047 tointegral     -1.4   -> -1
     75 intx048 tointegral     -1.5   -> -2
     76 intx049 tointegral     -1.6   -> -2
     77 intx050 tointegral     -1.7   -> -2
     78 intx051 tointegral     -1.8   -> -2
     79 intx052 tointegral     -1.9   -> -2
     80 -- next two would be NaN using quantize(x, 0)
     81 intx053 tointegral    10E+30  -> 1.0E+31
     82 intx054 tointegral   -10E+30  -> -1.0E+31
     83 
     84 -- numbers around precision
     85 precision: 9
     86 intx060 tointegral '56267E-10'   -> '0'
     87 intx061 tointegral '56267E-5'    -> '1'
     88 intx062 tointegral '56267E-2'    -> '563'
     89 intx063 tointegral '56267E-1'    -> '5627'
     90 intx065 tointegral '56267E-0'    -> '56267'
     91 intx066 tointegral '56267E+0'    -> '56267'
     92 intx067 tointegral '56267E+1'    -> '5.6267E+5'
     93 intx068 tointegral '56267E+2'    -> '5.6267E+6'
     94 intx069 tointegral '56267E+3'    -> '5.6267E+7'
     95 intx070 tointegral '56267E+4'    -> '5.6267E+8'
     96 intx071 tointegral '56267E+5'    -> '5.6267E+9'
     97 intx072 tointegral '56267E+6'    -> '5.6267E+10'
     98 intx073 tointegral '1.23E+96'    -> '1.23E+96'
     99 intx074 tointegral '1.23E+384'   -> '1.23E+384'
    100 intx075 tointegral '1.23E+999'   -> '1.23E+999'
    101 
    102 intx080 tointegral '-56267E-10'  -> '-0'
    103 intx081 tointegral '-56267E-5'   -> '-1'
    104 intx082 tointegral '-56267E-2'   -> '-563'
    105 intx083 tointegral '-56267E-1'   -> '-5627'
    106 intx085 tointegral '-56267E-0'   -> '-56267'
    107 intx086 tointegral '-56267E+0'   -> '-56267'
    108 intx087 tointegral '-56267E+1'   -> '-5.6267E+5'
    109 intx088 tointegral '-56267E+2'   -> '-5.6267E+6'
    110 intx089 tointegral '-56267E+3'   -> '-5.6267E+7'
    111 intx090 tointegral '-56267E+4'   -> '-5.6267E+8'
    112 intx091 tointegral '-56267E+5'   -> '-5.6267E+9'
    113 intx092 tointegral '-56267E+6'   -> '-5.6267E+10'
    114 intx093 tointegral '-1.23E+96'   -> '-1.23E+96'
    115 intx094 tointegral '-1.23E+384'  -> '-1.23E+384'
    116 intx095 tointegral '-1.23E+999'  -> '-1.23E+999'
    117 
    118 -- subnormal inputs
    119 intx100 tointegral        1E-999 -> 0
    120 intx101 tointegral      0.1E-999 -> 0
    121 intx102 tointegral     0.01E-999 -> 0
    122 intx103 tointegral        0E-999 -> 0
    123 
    124 -- specials and zeros
    125 intx120 tointegral 'Inf'       ->  Infinity
    126 intx121 tointegral '-Inf'      -> -Infinity
    127 intx122 tointegral   NaN       ->  NaN
    128 intx123 tointegral  sNaN       ->  NaN  Invalid_operation
    129 intx124 tointegral     0       ->  0
    130 intx125 tointegral    -0       -> -0
    131 intx126 tointegral     0.000   ->  0
    132 intx127 tointegral     0.00    ->  0
    133 intx128 tointegral     0.0     ->  0
    134 intx129 tointegral     0       ->  0
    135 intx130 tointegral     0E-3    ->  0
    136 intx131 tointegral     0E-2    ->  0
    137 intx132 tointegral     0E-1    ->  0
    138 intx133 tointegral     0E-0    ->  0
    139 intx134 tointegral     0E+1    ->  0E+1
    140 intx135 tointegral     0E+2    ->  0E+2
    141 intx136 tointegral     0E+3    ->  0E+3
    142 intx137 tointegral     0E+4    ->  0E+4
    143 intx138 tointegral     0E+5    ->  0E+5
    144 intx139 tointegral    -0.000   -> -0
    145 intx140 tointegral    -0.00    -> -0
    146 intx141 tointegral    -0.0     -> -0
    147 intx142 tointegral    -0       -> -0
    148 intx143 tointegral    -0E-3    -> -0
    149 intx144 tointegral    -0E-2    -> -0
    150 intx145 tointegral    -0E-1    -> -0
    151 intx146 tointegral    -0E-0    -> -0
    152 intx147 tointegral    -0E+1    -> -0E+1
    153 intx148 tointegral    -0E+2    -> -0E+2
    154 intx149 tointegral    -0E+3    -> -0E+3
    155 intx150 tointegral    -0E+4    -> -0E+4
    156 intx151 tointegral    -0E+5    -> -0E+5
    157 -- propagating NaNs
    158 intx152 tointegral   NaN808    ->  NaN808
    159 intx153 tointegral  sNaN080    ->  NaN80  Invalid_operation
    160 intx154 tointegral  -NaN808    -> -NaN808
    161 intx155 tointegral -sNaN080    -> -NaN80  Invalid_operation
    162 intx156 tointegral  -NaN       -> -NaN
    163 intx157 tointegral -sNaN       -> -NaN    Invalid_operation
    164 
    165 -- examples
    166 rounding:    half_up
    167 precision:   9
    168 intx200 tointegral     2.1    -> 2
    169 intx201 tointegral   100      -> 100
    170 intx202 tointegral   100.0    -> 100
    171 intx203 tointegral   101.5    -> 102
    172 intx204 tointegral  -101.5    -> -102
    173 intx205 tointegral   10E+5    -> 1.0E+6
    174 intx206 tointegral  7.89E+77  -> 7.89E+77
    175 intx207 tointegral   -Inf     -> -Infinity
    176 
    177 
    178 -- all rounding modes
    179 rounding:    half_even
    180 
    181 intx210 tointegral     55.5   ->  56
    182 intx211 tointegral     56.5   ->  56
    183 intx212 tointegral     57.5   ->  58
    184 intx213 tointegral    -55.5   -> -56
    185 intx214 tointegral    -56.5   -> -56
    186 intx215 tointegral    -57.5   -> -58
    187 
    188 rounding:    half_up
    189 
    190 intx220 tointegral     55.5   ->  56
    191 intx221 tointegral     56.5   ->  57
    192 intx222 tointegral     57.5   ->  58
    193 intx223 tointegral    -55.5   -> -56
    194 intx224 tointegral    -56.5   -> -57
    195 intx225 tointegral    -57.5   -> -58
    196 
    197 rounding:    half_down
    198 
    199 intx230 tointegral     55.5   ->  55
    200 intx231 tointegral     56.5   ->  56
    201 intx232 tointegral     57.5   ->  57
    202 intx233 tointegral    -55.5   -> -55
    203 intx234 tointegral    -56.5   -> -56
    204 intx235 tointegral    -57.5   -> -57
    205 
    206 rounding:    up
    207 
    208 intx240 tointegral     55.3   ->  56
    209 intx241 tointegral     56.3   ->  57
    210 intx242 tointegral     57.3   ->  58
    211 intx243 tointegral    -55.3   -> -56
    212 intx244 tointegral    -56.3   -> -57
    213 intx245 tointegral    -57.3   -> -58
    214 
    215 rounding:    down
    216 
    217 intx250 tointegral     55.7   ->  55
    218 intx251 tointegral     56.7   ->  56
    219 intx252 tointegral     57.7   ->  57
    220 intx253 tointegral    -55.7   -> -55
    221 intx254 tointegral    -56.7   -> -56
    222 intx255 tointegral    -57.7   -> -57
    223 
    224 rounding:    ceiling
    225 
    226 intx260 tointegral     55.3   ->  56
    227 intx261 tointegral     56.3   ->  57
    228 intx262 tointegral     57.3   ->  58
    229 intx263 tointegral    -55.3   -> -55
    230 intx264 tointegral    -56.3   -> -56
    231 intx265 tointegral    -57.3   -> -57
    232 
    233 rounding:    floor
    234 
    235 intx270 tointegral     55.7   ->  55
    236 intx271 tointegral     56.7   ->  56
    237 intx272 tointegral     57.7   ->  57
    238 intx273 tointegral    -55.7   -> -56
    239 intx274 tointegral    -56.7   -> -57
    240 intx275 tointegral    -57.7   -> -58
    241 
    242