github.com/cockroachdb/apd/v3@v3.2.0/testdata/add.decTest (about) 1 ------/cancell---------------------------------------------------------- 2 -- add.decTest -- decimal addition -- 3 -- Copyright (c) Mike Cowlishaw, 1981, 2010. All rights reserved. -- 4 -- Parts copyright (c) IBM Corporation, 1981, 2008. -- 5 ------------------------------------------------------------------------ 6 -- Please see the document "General Decimal Arithmetic Testcases" -- 7 -- at http://speleotrove.com/decimal for the description of -- 8 -- these testcases. -- 9 -- -- 10 -- These testcases are experimental ('beta' versions), and they -- 11 -- may contain errors. They are offered on an as-is basis. In -- 12 -- particular, achieving the same results as the tests here is not -- 13 -- a guarantee that an implementation complies with any Standard -- 14 -- or specification. The tests are not exhaustive. -- 15 -- -- 16 -- Please send comments, suggestions, and corrections to the author: -- 17 -- Mike Cowlishaw, mfc@speleotrove.com -- 18 ------------------------------------------------------------------------ 19 version: 2.62 20 21 precision: 9 22 rounding: half_up 23 maxExponent: 384 24 minexponent: -383 25 extended: 1 26 27 -- [first group are 'quick confidence check'] 28 addx001 add 1 1 -> 2 29 addx002 add 2 3 -> 5 30 addx003 add '5.75' '3.3' -> 9.05 31 addx004 add '5' '-3' -> 2 32 addx005 add '-5' '-3' -> -8 33 addx006 add '-7' '2.5' -> -4.5 34 addx007 add '0.7' '0.3' -> 1.0 35 addx008 add '1.25' '1.25' -> 2.50 36 addx009 add '1.23456789' '1.00000000' -> '2.23456789' 37 addx010 add '1.23456789' '1.00000011' -> '2.23456800' 38 39 addx011 add '0.4444444444' '0.5555555555' -> '1.00000000' Inexact Rounded 40 addx012 add '0.4444444440' '0.5555555555' -> '1.00000000' Inexact Rounded 41 addx013 add '0.4444444444' '0.5555555550' -> '0.999999999' Inexact Rounded 42 addx014 add '0.44444444449' '0' -> '0.444444444' Inexact Rounded 43 addx015 add '0.444444444499' '0' -> '0.444444444' Inexact Rounded 44 addx016 add '0.4444444444999' '0' -> '0.444444444' Inexact Rounded 45 addx017 add '0.4444444445000' '0' -> '0.444444445' Inexact Rounded 46 addx018 add '0.4444444445001' '0' -> '0.444444445' Inexact Rounded 47 addx019 add '0.444444444501' '0' -> '0.444444445' Inexact Rounded 48 addx020 add '0.44444444451' '0' -> '0.444444445' Inexact Rounded 49 50 addx021 add 0 1 -> 1 51 addx022 add 1 1 -> 2 52 addx023 add 2 1 -> 3 53 addx024 add 3 1 -> 4 54 addx025 add 4 1 -> 5 55 addx026 add 5 1 -> 6 56 addx027 add 6 1 -> 7 57 addx028 add 7 1 -> 8 58 addx029 add 8 1 -> 9 59 addx030 add 9 1 -> 10 60 61 -- some carrying effects 62 addx031 add '0.9998' '0.0000' -> '0.9998' 63 addx032 add '0.9998' '0.0001' -> '0.9999' 64 addx033 add '0.9998' '0.0002' -> '1.0000' 65 addx034 add '0.9998' '0.0003' -> '1.0001' 66 67 addx035 add '70' '10000e+9' -> '1.00000000E+13' Inexact Rounded 68 addx036 add '700' '10000e+9' -> '1.00000000E+13' Inexact Rounded 69 addx037 add '7000' '10000e+9' -> '1.00000000E+13' Inexact Rounded 70 addx038 add '70000' '10000e+9' -> '1.00000001E+13' Inexact Rounded 71 addx039 add '700000' '10000e+9' -> '1.00000007E+13' Rounded 72 73 -- symmetry: 74 addx040 add '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded 75 addx041 add '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded 76 addx042 add '10000e+9' '7000' -> '1.00000000E+13' Inexact Rounded 77 addx044 add '10000e+9' '70000' -> '1.00000001E+13' Inexact Rounded 78 addx045 add '10000e+9' '700000' -> '1.00000007E+13' Rounded 79 80 -- same, higher precision 81 precision: 15 82 addx046 add '10000e+9' '7' -> '10000000000007' 83 addx047 add '10000e+9' '70' -> '10000000000070' 84 addx048 add '10000e+9' '700' -> '10000000000700' 85 addx049 add '10000e+9' '7000' -> '10000000007000' 86 addx050 add '10000e+9' '70000' -> '10000000070000' 87 addx051 add '10000e+9' '700000' -> '10000000700000' 88 addx052 add '10000e+9' '7000000' -> '10000007000000' 89 90 -- examples from decarith 91 addx053 add '12' '7.00' -> '19.00' 92 addx054 add '1.3' '-1.07' -> '0.23' 93 addx055 add '1.3' '-1.30' -> '0.00' 94 addx056 add '1.3' '-2.07' -> '-0.77' 95 addx057 add '1E+2' '1E+4' -> '1.01E+4' 96 97 -- zero preservation 98 precision: 6 99 addx060 add '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded 100 addx061 add 1 '0.0001' -> '1.0001' 101 addx062 add 1 '0.00001' -> '1.00001' 102 addx063 add 1 '0.000001' -> '1.00000' Inexact Rounded 103 addx064 add 1 '0.0000001' -> '1.00000' Inexact Rounded 104 addx065 add 1 '0.00000001' -> '1.00000' Inexact Rounded 105 106 -- some funny zeros [in case of bad signum] 107 addx070 add 1 0 -> 1 108 addx071 add 1 0. -> 1 109 addx072 add 1 .0 -> 1.0 110 addx073 add 1 0.0 -> 1.0 111 addx074 add 1 0.00 -> 1.00 112 addx075 add 0 1 -> 1 113 addx076 add 0. 1 -> 1 114 addx077 add .0 1 -> 1.0 115 addx078 add 0.0 1 -> 1.0 116 addx079 add 0.00 1 -> 1.00 117 118 precision: 9 119 120 -- some carries 121 addx080 add 999999998 1 -> 999999999 122 addx081 add 999999999 1 -> 1.00000000E+9 Rounded 123 addx082 add 99999999 1 -> 100000000 124 addx083 add 9999999 1 -> 10000000 125 addx084 add 999999 1 -> 1000000 126 addx085 add 99999 1 -> 100000 127 addx086 add 9999 1 -> 10000 128 addx087 add 999 1 -> 1000 129 addx088 add 99 1 -> 100 130 addx089 add 9 1 -> 10 131 132 133 -- more LHS swaps 134 addx090 add '-56267E-10' 0 -> '-0.0000056267' 135 addx091 add '-56267E-6' 0 -> '-0.056267' 136 addx092 add '-56267E-5' 0 -> '-0.56267' 137 addx093 add '-56267E-4' 0 -> '-5.6267' 138 addx094 add '-56267E-3' 0 -> '-56.267' 139 addx095 add '-56267E-2' 0 -> '-562.67' 140 addx096 add '-56267E-1' 0 -> '-5626.7' 141 addx097 add '-56267E-0' 0 -> '-56267' 142 addx098 add '-5E-10' 0 -> '-5E-10' 143 addx099 add '-5E-7' 0 -> '-5E-7' 144 addx100 add '-5E-6' 0 -> '-0.000005' 145 addx101 add '-5E-5' 0 -> '-0.00005' 146 addx102 add '-5E-4' 0 -> '-0.0005' 147 addx103 add '-5E-1' 0 -> '-0.5' 148 addx104 add '-5E0' 0 -> '-5' 149 addx105 add '-5E1' 0 -> '-50' 150 addx106 add '-5E5' 0 -> '-500000' 151 addx107 add '-5E8' 0 -> '-500000000' 152 addx108 add '-5E9' 0 -> '-5.00000000E+9' Rounded 153 addx109 add '-5E10' 0 -> '-5.00000000E+10' Rounded 154 addx110 add '-5E11' 0 -> '-5.00000000E+11' Rounded 155 addx111 add '-5E100' 0 -> '-5.00000000E+100' Rounded 156 157 -- more RHS swaps 158 addx113 add 0 '-56267E-10' -> '-0.0000056267' 159 addx114 add 0 '-56267E-6' -> '-0.056267' 160 addx116 add 0 '-56267E-5' -> '-0.56267' 161 addx117 add 0 '-56267E-4' -> '-5.6267' 162 addx119 add 0 '-56267E-3' -> '-56.267' 163 addx120 add 0 '-56267E-2' -> '-562.67' 164 addx121 add 0 '-56267E-1' -> '-5626.7' 165 addx122 add 0 '-56267E-0' -> '-56267' 166 addx123 add 0 '-5E-10' -> '-5E-10' 167 addx124 add 0 '-5E-7' -> '-5E-7' 168 addx125 add 0 '-5E-6' -> '-0.000005' 169 addx126 add 0 '-5E-5' -> '-0.00005' 170 addx127 add 0 '-5E-4' -> '-0.0005' 171 addx128 add 0 '-5E-1' -> '-0.5' 172 addx129 add 0 '-5E0' -> '-5' 173 addx130 add 0 '-5E1' -> '-50' 174 addx131 add 0 '-5E5' -> '-500000' 175 addx132 add 0 '-5E8' -> '-500000000' 176 addx133 add 0 '-5E9' -> '-5.00000000E+9' Rounded 177 addx134 add 0 '-5E10' -> '-5.00000000E+10' Rounded 178 addx135 add 0 '-5E11' -> '-5.00000000E+11' Rounded 179 addx136 add 0 '-5E100' -> '-5.00000000E+100' Rounded 180 181 -- related 182 addx137 add 1 '0E-12' -> '1.00000000' Rounded 183 addx138 add -1 '0E-12' -> '-1.00000000' Rounded 184 addx139 add '0E-12' 1 -> '1.00000000' Rounded 185 addx140 add '0E-12' -1 -> '-1.00000000' Rounded 186 addx141 add 1E+4 0.0000 -> '10000.0000' 187 addx142 add 1E+4 0.00000 -> '10000.0000' Rounded 188 addx143 add 0.000 1E+5 -> '100000.000' 189 addx144 add 0.0000 1E+5 -> '100000.000' Rounded 190 191 -- [some of the next group are really constructor tests] 192 addx146 add '00.0' 0 -> '0.0' 193 addx147 add '0.00' 0 -> '0.00' 194 addx148 add 0 '0.00' -> '0.00' 195 addx149 add 0 '00.0' -> '0.0' 196 addx150 add '00.0' '0.00' -> '0.00' 197 addx151 add '0.00' '00.0' -> '0.00' 198 addx152 add '3' '.3' -> '3.3' 199 addx153 add '3.' '.3' -> '3.3' 200 addx154 add '3.0' '.3' -> '3.3' 201 addx155 add '3.00' '.3' -> '3.30' 202 addx156 add '3' '3' -> '6' 203 addx157 add '3' '+3' -> '6' 204 addx158 add '3' '-3' -> '0' 205 addx159 add '0.3' '-0.3' -> '0.0' 206 addx160 add '0.03' '-0.03' -> '0.00' 207 208 -- try borderline precision, with carries, etc. 209 precision: 15 210 addx161 add '1E+12' '-1' -> '999999999999' 211 addx162 add '1E+12' '1.11' -> '1000000000001.11' 212 addx163 add '1.11' '1E+12' -> '1000000000001.11' 213 addx164 add '-1' '1E+12' -> '999999999999' 214 addx165 add '7E+12' '-1' -> '6999999999999' 215 addx166 add '7E+12' '1.11' -> '7000000000001.11' 216 addx167 add '1.11' '7E+12' -> '7000000000001.11' 217 addx168 add '-1' '7E+12' -> '6999999999999' 218 219 -- 123456789012345 123456789012345 1 23456789012345 220 addx170 add '0.444444444444444' '0.555555555555563' -> '1.00000000000001' Inexact Rounded 221 addx171 add '0.444444444444444' '0.555555555555562' -> '1.00000000000001' Inexact Rounded 222 addx172 add '0.444444444444444' '0.555555555555561' -> '1.00000000000001' Inexact Rounded 223 addx173 add '0.444444444444444' '0.555555555555560' -> '1.00000000000000' Inexact Rounded 224 addx174 add '0.444444444444444' '0.555555555555559' -> '1.00000000000000' Inexact Rounded 225 addx175 add '0.444444444444444' '0.555555555555558' -> '1.00000000000000' Inexact Rounded 226 addx176 add '0.444444444444444' '0.555555555555557' -> '1.00000000000000' Inexact Rounded 227 addx177 add '0.444444444444444' '0.555555555555556' -> '1.00000000000000' Rounded 228 addx178 add '0.444444444444444' '0.555555555555555' -> '0.999999999999999' 229 addx179 add '0.444444444444444' '0.555555555555554' -> '0.999999999999998' 230 addx180 add '0.444444444444444' '0.555555555555553' -> '0.999999999999997' 231 addx181 add '0.444444444444444' '0.555555555555552' -> '0.999999999999996' 232 addx182 add '0.444444444444444' '0.555555555555551' -> '0.999999999999995' 233 addx183 add '0.444444444444444' '0.555555555555550' -> '0.999999999999994' 234 235 -- and some more, including residue effects and different roundings 236 precision: 9 237 rounding: half_up 238 addx200 add '123456789' 0 -> '123456789' 239 addx201 add '123456789' 0.000000001 -> '123456789' Inexact Rounded 240 addx202 add '123456789' 0.000001 -> '123456789' Inexact Rounded 241 addx203 add '123456789' 0.1 -> '123456789' Inexact Rounded 242 addx204 add '123456789' 0.4 -> '123456789' Inexact Rounded 243 addx205 add '123456789' 0.49 -> '123456789' Inexact Rounded 244 addx206 add '123456789' 0.499999 -> '123456789' Inexact Rounded 245 addx207 add '123456789' 0.499999999 -> '123456789' Inexact Rounded 246 addx208 add '123456789' 0.5 -> '123456790' Inexact Rounded 247 addx209 add '123456789' 0.500000001 -> '123456790' Inexact Rounded 248 addx210 add '123456789' 0.500001 -> '123456790' Inexact Rounded 249 addx211 add '123456789' 0.51 -> '123456790' Inexact Rounded 250 addx212 add '123456789' 0.6 -> '123456790' Inexact Rounded 251 addx213 add '123456789' 0.9 -> '123456790' Inexact Rounded 252 addx214 add '123456789' 0.99999 -> '123456790' Inexact Rounded 253 addx215 add '123456789' 0.999999999 -> '123456790' Inexact Rounded 254 addx216 add '123456789' 1 -> '123456790' 255 addx217 add '123456789' 1.000000001 -> '123456790' Inexact Rounded 256 addx218 add '123456789' 1.00001 -> '123456790' Inexact Rounded 257 addx219 add '123456789' 1.1 -> '123456790' Inexact Rounded 258 259 rounding: half_even 260 addx220 add '123456789' 0 -> '123456789' 261 addx221 add '123456789' 0.000000001 -> '123456789' Inexact Rounded 262 addx222 add '123456789' 0.000001 -> '123456789' Inexact Rounded 263 addx223 add '123456789' 0.1 -> '123456789' Inexact Rounded 264 addx224 add '123456789' 0.4 -> '123456789' Inexact Rounded 265 addx225 add '123456789' 0.49 -> '123456789' Inexact Rounded 266 addx226 add '123456789' 0.499999 -> '123456789' Inexact Rounded 267 addx227 add '123456789' 0.499999999 -> '123456789' Inexact Rounded 268 addx228 add '123456789' 0.5 -> '123456790' Inexact Rounded 269 addx229 add '123456789' 0.500000001 -> '123456790' Inexact Rounded 270 addx230 add '123456789' 0.500001 -> '123456790' Inexact Rounded 271 addx231 add '123456789' 0.51 -> '123456790' Inexact Rounded 272 addx232 add '123456789' 0.6 -> '123456790' Inexact Rounded 273 addx233 add '123456789' 0.9 -> '123456790' Inexact Rounded 274 addx234 add '123456789' 0.99999 -> '123456790' Inexact Rounded 275 addx235 add '123456789' 0.999999999 -> '123456790' Inexact Rounded 276 addx236 add '123456789' 1 -> '123456790' 277 addx237 add '123456789' 1.00000001 -> '123456790' Inexact Rounded 278 addx238 add '123456789' 1.00001 -> '123456790' Inexact Rounded 279 addx239 add '123456789' 1.1 -> '123456790' Inexact Rounded 280 -- critical few with even bottom digit... 281 addx240 add '123456788' 0.499999999 -> '123456788' Inexact Rounded 282 addx241 add '123456788' 0.5 -> '123456788' Inexact Rounded 283 addx242 add '123456788' 0.500000001 -> '123456789' Inexact Rounded 284 285 rounding: down 286 addx250 add '123456789' 0 -> '123456789' 287 addx251 add '123456789' 0.000000001 -> '123456789' Inexact Rounded 288 addx252 add '123456789' 0.000001 -> '123456789' Inexact Rounded 289 addx253 add '123456789' 0.1 -> '123456789' Inexact Rounded 290 addx254 add '123456789' 0.4 -> '123456789' Inexact Rounded 291 addx255 add '123456789' 0.49 -> '123456789' Inexact Rounded 292 addx256 add '123456789' 0.499999 -> '123456789' Inexact Rounded 293 addx257 add '123456789' 0.499999999 -> '123456789' Inexact Rounded 294 addx258 add '123456789' 0.5 -> '123456789' Inexact Rounded 295 addx259 add '123456789' 0.500000001 -> '123456789' Inexact Rounded 296 addx260 add '123456789' 0.500001 -> '123456789' Inexact Rounded 297 addx261 add '123456789' 0.51 -> '123456789' Inexact Rounded 298 addx262 add '123456789' 0.6 -> '123456789' Inexact Rounded 299 addx263 add '123456789' 0.9 -> '123456789' Inexact Rounded 300 addx264 add '123456789' 0.99999 -> '123456789' Inexact Rounded 301 addx265 add '123456789' 0.999999999 -> '123456789' Inexact Rounded 302 addx266 add '123456789' 1 -> '123456790' 303 addx267 add '123456789' 1.00000001 -> '123456790' Inexact Rounded 304 addx268 add '123456789' 1.00001 -> '123456790' Inexact Rounded 305 addx269 add '123456789' 1.1 -> '123456790' Inexact Rounded 306 307 -- input preparation tests (operands should not be rounded) 308 precision: 3 309 rounding: half_up 310 311 addx270 add '12345678900000' 9999999999999 -> '2.23E+13' Inexact Rounded 312 addx271 add '9999999999999' 12345678900000 -> '2.23E+13' Inexact Rounded 313 314 addx272 add '12E+3' '3444' -> '1.54E+4' Inexact Rounded 315 addx273 add '12E+3' '3446' -> '1.54E+4' Inexact Rounded 316 addx274 add '12E+3' '3449.9' -> '1.54E+4' Inexact Rounded 317 addx275 add '12E+3' '3450.0' -> '1.55E+4' Inexact Rounded 318 addx276 add '12E+3' '3450.1' -> '1.55E+4' Inexact Rounded 319 addx277 add '12E+3' '3454' -> '1.55E+4' Inexact Rounded 320 addx278 add '12E+3' '3456' -> '1.55E+4' Inexact Rounded 321 322 addx281 add '3444' '12E+3' -> '1.54E+4' Inexact Rounded 323 addx282 add '3446' '12E+3' -> '1.54E+4' Inexact Rounded 324 addx283 add '3449.9' '12E+3' -> '1.54E+4' Inexact Rounded 325 addx284 add '3450.0' '12E+3' -> '1.55E+4' Inexact Rounded 326 addx285 add '3450.1' '12E+3' -> '1.55E+4' Inexact Rounded 327 addx286 add '3454' '12E+3' -> '1.55E+4' Inexact Rounded 328 addx287 add '3456' '12E+3' -> '1.55E+4' Inexact Rounded 329 330 rounding: half_down 331 addx291 add '3444' '12E+3' -> '1.54E+4' Inexact Rounded 332 addx292 add '3446' '12E+3' -> '1.54E+4' Inexact Rounded 333 addx293 add '3449.9' '12E+3' -> '1.54E+4' Inexact Rounded 334 addx294 add '3450.0' '12E+3' -> '1.54E+4' Inexact Rounded 335 addx295 add '3450.1' '12E+3' -> '1.55E+4' Inexact Rounded 336 addx296 add '3454' '12E+3' -> '1.55E+4' Inexact Rounded 337 addx297 add '3456' '12E+3' -> '1.55E+4' Inexact Rounded 338 339 -- 1 in last place tests 340 rounding: half_up 341 addx301 add -1 1 -> 0 342 addx302 add 0 1 -> 1 343 addx303 add 1 1 -> 2 344 addx304 add 12 1 -> 13 345 addx305 add 98 1 -> 99 346 addx306 add 99 1 -> 100 347 addx307 add 100 1 -> 101 348 addx308 add 101 1 -> 102 349 addx309 add -1 -1 -> -2 350 addx310 add 0 -1 -> -1 351 addx311 add 1 -1 -> 0 352 addx312 add 12 -1 -> 11 353 addx313 add 98 -1 -> 97 354 addx314 add 99 -1 -> 98 355 addx315 add 100 -1 -> 99 356 addx316 add 101 -1 -> 100 357 358 addx321 add -0.01 0.01 -> 0.00 359 addx322 add 0.00 0.01 -> 0.01 360 addx323 add 0.01 0.01 -> 0.02 361 addx324 add 0.12 0.01 -> 0.13 362 addx325 add 0.98 0.01 -> 0.99 363 addx326 add 0.99 0.01 -> 1.00 364 addx327 add 1.00 0.01 -> 1.01 365 addx328 add 1.01 0.01 -> 1.02 366 addx329 add -0.01 -0.01 -> -0.02 367 addx330 add 0.00 -0.01 -> -0.01 368 addx331 add 0.01 -0.01 -> 0.00 369 addx332 add 0.12 -0.01 -> 0.11 370 addx333 add 0.98 -0.01 -> 0.97 371 addx334 add 0.99 -0.01 -> 0.98 372 addx335 add 1.00 -0.01 -> 0.99 373 addx336 add 1.01 -0.01 -> 1.00 374 375 -- some more cases where adding 0 affects the coefficient 376 precision: 9 377 addx340 add 1E+3 0 -> 1000 378 addx341 add 1E+8 0 -> 100000000 379 addx342 add 1E+9 0 -> 1.00000000E+9 Rounded 380 addx343 add 1E+10 0 -> 1.00000000E+10 Rounded 381 -- which simply follow from these cases ... 382 addx344 add 1E+3 1 -> 1001 383 addx345 add 1E+8 1 -> 100000001 384 addx346 add 1E+9 1 -> 1.00000000E+9 Inexact Rounded 385 addx347 add 1E+10 1 -> 1.00000000E+10 Inexact Rounded 386 addx348 add 1E+3 7 -> 1007 387 addx349 add 1E+8 7 -> 100000007 388 addx350 add 1E+9 7 -> 1.00000001E+9 Inexact Rounded 389 addx351 add 1E+10 7 -> 1.00000000E+10 Inexact Rounded 390 391 -- tryzeros cases 392 precision: 7 393 rounding: half_up 394 maxExponent: 92 395 minexponent: -92 396 addx361 add 0E+50 10000E+1 -> 1.0000E+5 397 addx362 add 10000E+1 0E-50 -> 100000.0 Rounded 398 addx363 add 10000E+1 10000E-50 -> 100000.0 Rounded Inexact 399 addx364 add 9.999999E+92 -9.999999E+92 -> 0E+86 400 401 -- a curiosity from JSR 13 testing 402 rounding: half_down 403 precision: 10 404 addx370 add 99999999 81512 -> 100081511 405 precision: 6 406 addx371 add 99999999 81512 -> 1.00082E+8 Rounded Inexact 407 rounding: half_up 408 precision: 10 409 addx372 add 99999999 81512 -> 100081511 410 precision: 6 411 addx373 add 99999999 81512 -> 1.00082E+8 Rounded Inexact 412 rounding: half_even 413 precision: 10 414 addx374 add 99999999 81512 -> 100081511 415 precision: 6 416 addx375 add 99999999 81512 -> 1.00082E+8 Rounded Inexact 417 418 -- ulp replacement tests 419 precision: 9 420 maxexponent: 999999999 421 minexponent: -999999999 422 addx400 add 1 77e-7 -> 1.0000077 423 addx401 add 1 77e-8 -> 1.00000077 424 addx402 add 1 77e-9 -> 1.00000008 Inexact Rounded 425 addx403 add 1 77e-10 -> 1.00000001 Inexact Rounded 426 addx404 add 1 77e-11 -> 1.00000000 Inexact Rounded 427 addx405 add 1 77e-12 -> 1.00000000 Inexact Rounded 428 addx406 add 1 77e-999 -> 1.00000000 Inexact Rounded 429 addx407 add 1 77e-9999999 -> 1.00000000 Inexact Rounded 430 431 addx410 add 10 77e-7 -> 10.0000077 432 addx411 add 10 77e-8 -> 10.0000008 Inexact Rounded 433 addx412 add 10 77e-9 -> 10.0000001 Inexact Rounded 434 addx413 add 10 77e-10 -> 10.0000000 Inexact Rounded 435 addx414 add 10 77e-11 -> 10.0000000 Inexact Rounded 436 addx415 add 10 77e-12 -> 10.0000000 Inexact Rounded 437 addx416 add 10 77e-999 -> 10.0000000 Inexact Rounded 438 addx417 add 10 77e-9999999 -> 10.0000000 Inexact Rounded 439 440 addx420 add 77e-7 1 -> 1.0000077 441 addx421 add 77e-8 1 -> 1.00000077 442 addx422 add 77e-9 1 -> 1.00000008 Inexact Rounded 443 addx423 add 77e-10 1 -> 1.00000001 Inexact Rounded 444 addx424 add 77e-11 1 -> 1.00000000 Inexact Rounded 445 addx425 add 77e-12 1 -> 1.00000000 Inexact Rounded 446 addx426 add 77e-999 1 -> 1.00000000 Inexact Rounded 447 addx427 add 77e-9999999 1 -> 1.00000000 Inexact Rounded 448 449 addx430 add 77e-7 10 -> 10.0000077 450 addx431 add 77e-8 10 -> 10.0000008 Inexact Rounded 451 addx432 add 77e-9 10 -> 10.0000001 Inexact Rounded 452 addx433 add 77e-10 10 -> 10.0000000 Inexact Rounded 453 addx434 add 77e-11 10 -> 10.0000000 Inexact Rounded 454 addx435 add 77e-12 10 -> 10.0000000 Inexact Rounded 455 addx436 add 77e-999 10 -> 10.0000000 Inexact Rounded 456 addx437 add 77e-9999999 10 -> 10.0000000 Inexact Rounded 457 458 -- negative ulps 459 addx440 add 1 -77e-7 -> 0.9999923 460 addx441 add 1 -77e-8 -> 0.99999923 461 addx442 add 1 -77e-9 -> 0.999999923 462 addx443 add 1 -77e-10 -> 0.999999992 Inexact Rounded 463 addx444 add 1 -77e-11 -> 0.999999999 Inexact Rounded 464 addx445 add 1 -77e-12 -> 1.00000000 Inexact Rounded 465 addx446 add 1 -77e-999 -> 1.00000000 Inexact Rounded 466 addx447 add 1 -77e-9999999 -> 1.00000000 Inexact Rounded 467 468 addx450 add 10 -77e-7 -> 9.9999923 469 addx451 add 10 -77e-8 -> 9.99999923 470 addx452 add 10 -77e-9 -> 9.99999992 Inexact Rounded 471 addx453 add 10 -77e-10 -> 9.99999999 Inexact Rounded 472 addx454 add 10 -77e-11 -> 10.0000000 Inexact Rounded 473 addx455 add 10 -77e-12 -> 10.0000000 Inexact Rounded 474 addx456 add 10 -77e-999 -> 10.0000000 Inexact Rounded 475 addx457 add 10 -77e-9999999 -> 10.0000000 Inexact Rounded 476 477 addx460 add -77e-7 1 -> 0.9999923 478 addx461 add -77e-8 1 -> 0.99999923 479 addx462 add -77e-9 1 -> 0.999999923 480 addx463 add -77e-10 1 -> 0.999999992 Inexact Rounded 481 addx464 add -77e-11 1 -> 0.999999999 Inexact Rounded 482 addx465 add -77e-12 1 -> 1.00000000 Inexact Rounded 483 addx466 add -77e-999 1 -> 1.00000000 Inexact Rounded 484 addx467 add -77e-9999999 1 -> 1.00000000 Inexact Rounded 485 486 addx470 add -77e-7 10 -> 9.9999923 487 addx471 add -77e-8 10 -> 9.99999923 488 addx472 add -77e-9 10 -> 9.99999992 Inexact Rounded 489 addx473 add -77e-10 10 -> 9.99999999 Inexact Rounded 490 addx474 add -77e-11 10 -> 10.0000000 Inexact Rounded 491 addx475 add -77e-12 10 -> 10.0000000 Inexact Rounded 492 addx476 add -77e-999 10 -> 10.0000000 Inexact Rounded 493 addx477 add -77e-9999999 10 -> 10.0000000 Inexact Rounded 494 495 -- negative ulps 496 addx480 add -1 77e-7 -> -0.9999923 497 addx481 add -1 77e-8 -> -0.99999923 498 addx482 add -1 77e-9 -> -0.999999923 499 addx483 add -1 77e-10 -> -0.999999992 Inexact Rounded 500 addx484 add -1 77e-11 -> -0.999999999 Inexact Rounded 501 addx485 add -1 77e-12 -> -1.00000000 Inexact Rounded 502 addx486 add -1 77e-999 -> -1.00000000 Inexact Rounded 503 addx487 add -1 77e-9999999 -> -1.00000000 Inexact Rounded 504 505 addx490 add -10 77e-7 -> -9.9999923 506 addx491 add -10 77e-8 -> -9.99999923 507 addx492 add -10 77e-9 -> -9.99999992 Inexact Rounded 508 addx493 add -10 77e-10 -> -9.99999999 Inexact Rounded 509 addx494 add -10 77e-11 -> -10.0000000 Inexact Rounded 510 addx495 add -10 77e-12 -> -10.0000000 Inexact Rounded 511 addx496 add -10 77e-999 -> -10.0000000 Inexact Rounded 512 addx497 add -10 77e-9999999 -> -10.0000000 Inexact Rounded 513 514 addx500 add 77e-7 -1 -> -0.9999923 515 addx501 add 77e-8 -1 -> -0.99999923 516 addx502 add 77e-9 -1 -> -0.999999923 517 addx503 add 77e-10 -1 -> -0.999999992 Inexact Rounded 518 addx504 add 77e-11 -1 -> -0.999999999 Inexact Rounded 519 addx505 add 77e-12 -1 -> -1.00000000 Inexact Rounded 520 addx506 add 77e-999 -1 -> -1.00000000 Inexact Rounded 521 addx507 add 77e-9999999 -1 -> -1.00000000 Inexact Rounded 522 523 addx510 add 77e-7 -10 -> -9.9999923 524 addx511 add 77e-8 -10 -> -9.99999923 525 addx512 add 77e-9 -10 -> -9.99999992 Inexact Rounded 526 addx513 add 77e-10 -10 -> -9.99999999 Inexact Rounded 527 addx514 add 77e-11 -10 -> -10.0000000 Inexact Rounded 528 addx515 add 77e-12 -10 -> -10.0000000 Inexact Rounded 529 addx516 add 77e-999 -10 -> -10.0000000 Inexact Rounded 530 addx517 add 77e-9999999 -10 -> -10.0000000 Inexact Rounded 531 532 533 -- long operands 534 maxexponent: 999 535 minexponent: -999 536 precision: 9 537 addx521 add 12345678000 0 -> 1.23456780E+10 Rounded 538 addx522 add 0 12345678000 -> 1.23456780E+10 Rounded 539 addx523 add 1234567800 0 -> 1.23456780E+9 Rounded 540 addx524 add 0 1234567800 -> 1.23456780E+9 Rounded 541 addx525 add 1234567890 0 -> 1.23456789E+9 Rounded 542 addx526 add 0 1234567890 -> 1.23456789E+9 Rounded 543 addx527 add 1234567891 0 -> 1.23456789E+9 Inexact Rounded 544 addx528 add 0 1234567891 -> 1.23456789E+9 Inexact Rounded 545 addx529 add 12345678901 0 -> 1.23456789E+10 Inexact Rounded 546 addx530 add 0 12345678901 -> 1.23456789E+10 Inexact Rounded 547 addx531 add 1234567896 0 -> 1.23456790E+9 Inexact Rounded 548 addx532 add 0 1234567896 -> 1.23456790E+9 Inexact Rounded 549 550 precision: 15 551 -- still checking 552 addx541 add 12345678000 0 -> 12345678000 553 addx542 add 0 12345678000 -> 12345678000 554 addx543 add 1234567800 0 -> 1234567800 555 addx544 add 0 1234567800 -> 1234567800 556 addx545 add 1234567890 0 -> 1234567890 557 addx546 add 0 1234567890 -> 1234567890 558 addx547 add 1234567891 0 -> 1234567891 559 addx548 add 0 1234567891 -> 1234567891 560 addx549 add 12345678901 0 -> 12345678901 561 addx550 add 0 12345678901 -> 12345678901 562 addx551 add 1234567896 0 -> 1234567896 563 addx552 add 0 1234567896 -> 1234567896 564 565 -- verify a query 566 precision: 16 567 maxExponent: +394 568 minExponent: -393 569 rounding: down 570 addx561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded 571 addx562 add 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded 572 -- and using decimal64 bounds (see also ddadd.decTest) 573 precision: 16 574 maxExponent: +384 575 minExponent: -383 576 rounding: down 577 addx563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded 578 addx564 add 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded 579 580 581 -- some more residue effects with extreme rounding 582 precision: 9 583 rounding: half_up 584 addx601 add 123456789 0.000001 -> 123456789 Inexact Rounded 585 rounding: half_even 586 addx602 add 123456789 0.000001 -> 123456789 Inexact Rounded 587 rounding: half_down 588 addx603 add 123456789 0.000001 -> 123456789 Inexact Rounded 589 rounding: floor 590 addx604 add 123456789 0.000001 -> 123456789 Inexact Rounded 591 rounding: ceiling 592 addx605 add 123456789 0.000001 -> 123456790 Inexact Rounded 593 rounding: up 594 addx606 add 123456789 0.000001 -> 123456790 Inexact Rounded 595 rounding: down 596 addx607 add 123456789 0.000001 -> 123456789 Inexact Rounded 597 598 rounding: half_up 599 addx611 add 123456789 -0.000001 -> 123456789 Inexact Rounded 600 rounding: half_even 601 addx612 add 123456789 -0.000001 -> 123456789 Inexact Rounded 602 rounding: half_down 603 addx613 add 123456789 -0.000001 -> 123456789 Inexact Rounded 604 rounding: floor 605 addx614 add 123456789 -0.000001 -> 123456788 Inexact Rounded 606 rounding: ceiling 607 addx615 add 123456789 -0.000001 -> 123456789 Inexact Rounded 608 rounding: up 609 addx616 add 123456789 -0.000001 -> 123456789 Inexact Rounded 610 rounding: down 611 addx617 add 123456789 -0.000001 -> 123456788 Inexact Rounded 612 613 rounding: half_up 614 addx621 add 123456789 0.499999 -> 123456789 Inexact Rounded 615 rounding: half_even 616 addx622 add 123456789 0.499999 -> 123456789 Inexact Rounded 617 rounding: half_down 618 addx623 add 123456789 0.499999 -> 123456789 Inexact Rounded 619 rounding: floor 620 addx624 add 123456789 0.499999 -> 123456789 Inexact Rounded 621 rounding: ceiling 622 addx625 add 123456789 0.499999 -> 123456790 Inexact Rounded 623 rounding: up 624 addx626 add 123456789 0.499999 -> 123456790 Inexact Rounded 625 rounding: down 626 addx627 add 123456789 0.499999 -> 123456789 Inexact Rounded 627 628 rounding: half_up 629 addx631 add 123456789 -0.499999 -> 123456789 Inexact Rounded 630 rounding: half_even 631 addx632 add 123456789 -0.499999 -> 123456789 Inexact Rounded 632 rounding: half_down 633 addx633 add 123456789 -0.499999 -> 123456789 Inexact Rounded 634 rounding: floor 635 addx634 add 123456789 -0.499999 -> 123456788 Inexact Rounded 636 rounding: ceiling 637 addx635 add 123456789 -0.499999 -> 123456789 Inexact Rounded 638 rounding: up 639 addx636 add 123456789 -0.499999 -> 123456789 Inexact Rounded 640 rounding: down 641 addx637 add 123456789 -0.499999 -> 123456788 Inexact Rounded 642 643 rounding: half_up 644 addx641 add 123456789 0.500001 -> 123456790 Inexact Rounded 645 rounding: half_even 646 addx642 add 123456789 0.500001 -> 123456790 Inexact Rounded 647 rounding: half_down 648 addx643 add 123456789 0.500001 -> 123456790 Inexact Rounded 649 rounding: floor 650 addx644 add 123456789 0.500001 -> 123456789 Inexact Rounded 651 rounding: ceiling 652 addx645 add 123456789 0.500001 -> 123456790 Inexact Rounded 653 rounding: up 654 addx646 add 123456789 0.500001 -> 123456790 Inexact Rounded 655 rounding: down 656 addx647 add 123456789 0.500001 -> 123456789 Inexact Rounded 657 658 rounding: half_up 659 addx651 add 123456789 -0.500001 -> 123456788 Inexact Rounded 660 rounding: half_even 661 addx652 add 123456789 -0.500001 -> 123456788 Inexact Rounded 662 rounding: half_down 663 addx653 add 123456789 -0.500001 -> 123456788 Inexact Rounded 664 rounding: floor 665 addx654 add 123456789 -0.500001 -> 123456788 Inexact Rounded 666 rounding: ceiling 667 addx655 add 123456789 -0.500001 -> 123456789 Inexact Rounded 668 rounding: up 669 addx656 add 123456789 -0.500001 -> 123456789 Inexact Rounded 670 rounding: down 671 addx657 add 123456789 -0.500001 -> 123456788 Inexact Rounded 672 673 -- long operand triangle 674 rounding: half_up 675 precision: 37 676 addx660 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538 677 precision: 36 678 addx661 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454 Inexact Rounded 679 precision: 35 680 addx662 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345 Inexact Rounded 681 precision: 34 682 addx663 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835 Inexact Rounded 683 precision: 33 684 addx664 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483 Inexact Rounded 685 precision: 32 686 addx665 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148 Inexact Rounded 687 precision: 31 688 addx666 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115 Inexact Rounded 689 precision: 30 690 addx667 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711 Inexact Rounded 691 precision: 29 692 addx668 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371 Inexact Rounded 693 precision: 28 694 addx669 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337 Inexact Rounded 695 precision: 27 696 addx670 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234 Inexact Rounded 697 precision: 26 698 addx671 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223 Inexact Rounded 699 precision: 25 700 addx672 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922 Inexact Rounded 701 precision: 24 702 addx673 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892 Inexact Rounded 703 precision: 23 704 addx674 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389 Inexact Rounded 705 precision: 22 706 addx675 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639 Inexact Rounded 707 precision: 21 708 addx676 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364 Inexact Rounded 709 precision: 20 710 addx677 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236 Inexact Rounded 711 precision: 19 712 addx678 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024 Inexact Rounded 713 precision: 18 714 addx679 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102 Inexact Rounded 715 precision: 17 716 addx680 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110 Inexact Rounded 717 precision: 16 718 addx681 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211 Inexact Rounded 719 precision: 15 720 addx682 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221 Inexact Rounded 721 precision: 14 722 addx683 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422 Inexact Rounded 723 precision: 13 724 addx684 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42 Inexact Rounded 725 precision: 12 726 addx685 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4 Inexact Rounded 727 precision: 11 728 addx686 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166 Inexact Rounded 729 precision: 10 730 addx687 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10 Inexact Rounded 731 precision: 9 732 addx688 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10 Inexact Rounded 733 precision: 8 734 addx689 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10 Inexact Rounded 735 precision: 7 736 addx690 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10 Inexact Rounded 737 precision: 6 738 addx691 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10 Inexact Rounded 739 precision: 5 740 addx692 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10 Inexact Rounded 741 precision: 4 742 addx693 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10 Inexact Rounded 743 precision: 3 744 addx694 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10 Inexact Rounded 745 precision: 2 746 addx695 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10 Inexact Rounded 747 precision: 1 748 addx696 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11 Inexact Rounded 749 750 -- more zeros, etc. 751 rounding: half_up 752 precision: 9 753 754 addx701 add 5.00 1.00E-3 -> 5.00100 755 addx702 add 00.00 0.000 -> 0.000 756 addx703 add 00.00 0E-3 -> 0.000 757 addx704 add 0E-3 00.00 -> 0.000 758 759 addx710 add 0E+3 00.00 -> 0.00 760 addx711 add 0E+3 00.0 -> 0.0 761 addx712 add 0E+3 00. -> 0 762 addx713 add 0E+3 00.E+1 -> 0E+1 763 addx714 add 0E+3 00.E+2 -> 0E+2 764 addx715 add 0E+3 00.E+3 -> 0E+3 765 addx716 add 0E+3 00.E+4 -> 0E+3 766 addx717 add 0E+3 00.E+5 -> 0E+3 767 addx718 add 0E+3 -00.0 -> 0.0 768 addx719 add 0E+3 -00. -> 0 769 addx731 add 0E+3 -00.E+1 -> 0E+1 770 771 addx720 add 00.00 0E+3 -> 0.00 772 addx721 add 00.0 0E+3 -> 0.0 773 addx722 add 00. 0E+3 -> 0 774 addx723 add 00.E+1 0E+3 -> 0E+1 775 addx724 add 00.E+2 0E+3 -> 0E+2 776 addx725 add 00.E+3 0E+3 -> 0E+3 777 addx726 add 00.E+4 0E+3 -> 0E+3 778 addx727 add 00.E+5 0E+3 -> 0E+3 779 addx728 add -00.00 0E+3 -> 0.00 780 addx729 add -00.0 0E+3 -> 0.0 781 addx730 add -00. 0E+3 -> 0 782 783 addx732 add 0 0 -> 0 784 addx733 add 0 -0 -> 0 785 addx734 add -0 0 -> 0 786 addx735 add -0 -0 -> -0 -- IEEE 854 special case 787 788 addx736 add 1 -1 -> 0 789 addx737 add -1 -1 -> -2 790 addx738 add 1 1 -> 2 791 addx739 add -1 1 -> 0 792 793 addx741 add 0 -1 -> -1 794 addx742 add -0 -1 -> -1 795 addx743 add 0 1 -> 1 796 addx744 add -0 1 -> 1 797 addx745 add -1 0 -> -1 798 addx746 add -1 -0 -> -1 799 addx747 add 1 0 -> 1 800 addx748 add 1 -0 -> 1 801 802 addx751 add 0.0 -1 -> -1.0 803 addx752 add -0.0 -1 -> -1.0 804 addx753 add 0.0 1 -> 1.0 805 addx754 add -0.0 1 -> 1.0 806 addx755 add -1.0 0 -> -1.0 807 addx756 add -1.0 -0 -> -1.0 808 addx757 add 1.0 0 -> 1.0 809 addx758 add 1.0 -0 -> 1.0 810 811 addx761 add 0 -1.0 -> -1.0 812 addx762 add -0 -1.0 -> -1.0 813 addx763 add 0 1.0 -> 1.0 814 addx764 add -0 1.0 -> 1.0 815 addx765 add -1 0.0 -> -1.0 816 addx766 add -1 -0.0 -> -1.0 817 addx767 add 1 0.0 -> 1.0 818 addx768 add 1 -0.0 -> 1.0 819 820 addx771 add 0.0 -1.0 -> -1.0 821 addx772 add -0.0 -1.0 -> -1.0 822 addx773 add 0.0 1.0 -> 1.0 823 addx774 add -0.0 1.0 -> 1.0 824 addx775 add -1.0 0.0 -> -1.0 825 addx776 add -1.0 -0.0 -> -1.0 826 addx777 add 1.0 0.0 -> 1.0 827 addx778 add 1.0 -0.0 -> 1.0 828 829 -- Specials 830 addx780 add -Inf -Inf -> -Infinity 831 addx781 add -Inf -1000 -> -Infinity 832 addx782 add -Inf -1 -> -Infinity 833 addx783 add -Inf -0 -> -Infinity 834 addx784 add -Inf 0 -> -Infinity 835 addx785 add -Inf 1 -> -Infinity 836 addx786 add -Inf 1000 -> -Infinity 837 addx787 add -1000 -Inf -> -Infinity 838 addx788 add -Inf -Inf -> -Infinity 839 addx789 add -1 -Inf -> -Infinity 840 addx790 add -0 -Inf -> -Infinity 841 addx791 add 0 -Inf -> -Infinity 842 addx792 add 1 -Inf -> -Infinity 843 addx793 add 1000 -Inf -> -Infinity 844 addx794 add Inf -Inf -> NaN Invalid_operation 845 846 addx800 add Inf -Inf -> NaN Invalid_operation 847 addx801 add Inf -1000 -> Infinity 848 addx802 add Inf -1 -> Infinity 849 addx803 add Inf -0 -> Infinity 850 addx804 add Inf 0 -> Infinity 851 addx805 add Inf 1 -> Infinity 852 addx806 add Inf 1000 -> Infinity 853 addx807 add Inf Inf -> Infinity 854 addx808 add -1000 Inf -> Infinity 855 addx809 add -Inf Inf -> NaN Invalid_operation 856 addx810 add -1 Inf -> Infinity 857 addx811 add -0 Inf -> Infinity 858 addx812 add 0 Inf -> Infinity 859 addx813 add 1 Inf -> Infinity 860 addx814 add 1000 Inf -> Infinity 861 addx815 add Inf Inf -> Infinity 862 863 addx821 add NaN -Inf -> NaN 864 addx822 add NaN -1000 -> NaN 865 addx823 add NaN -1 -> NaN 866 addx824 add NaN -0 -> NaN 867 addx825 add NaN 0 -> NaN 868 addx826 add NaN 1 -> NaN 869 addx827 add NaN 1000 -> NaN 870 addx828 add NaN Inf -> NaN 871 addx829 add NaN NaN -> NaN 872 addx830 add -Inf NaN -> NaN 873 addx831 add -1000 NaN -> NaN 874 addx832 add -1 NaN -> NaN 875 addx833 add -0 NaN -> NaN 876 addx834 add 0 NaN -> NaN 877 addx835 add 1 NaN -> NaN 878 addx836 add 1000 NaN -> NaN 879 addx837 add Inf NaN -> NaN 880 881 addx841 add sNaN -Inf -> NaN Invalid_operation 882 addx842 add sNaN -1000 -> NaN Invalid_operation 883 addx843 add sNaN -1 -> NaN Invalid_operation 884 addx844 add sNaN -0 -> NaN Invalid_operation 885 addx845 add sNaN 0 -> NaN Invalid_operation 886 addx846 add sNaN 1 -> NaN Invalid_operation 887 addx847 add sNaN 1000 -> NaN Invalid_operation 888 addx848 add sNaN NaN -> NaN Invalid_operation 889 addx849 add sNaN sNaN -> NaN Invalid_operation 890 addx850 add NaN sNaN -> NaN Invalid_operation 891 addx851 add -Inf sNaN -> NaN Invalid_operation 892 addx852 add -1000 sNaN -> NaN Invalid_operation 893 addx853 add -1 sNaN -> NaN Invalid_operation 894 addx854 add -0 sNaN -> NaN Invalid_operation 895 addx855 add 0 sNaN -> NaN Invalid_operation 896 addx856 add 1 sNaN -> NaN Invalid_operation 897 addx857 add 1000 sNaN -> NaN Invalid_operation 898 addx858 add Inf sNaN -> NaN Invalid_operation 899 addx859 add NaN sNaN -> NaN Invalid_operation 900 901 -- propagating NaNs 902 addx861 add NaN1 -Inf -> NaN1 903 addx862 add +NaN2 -1000 -> NaN2 904 addx863 add NaN3 1000 -> NaN3 905 addx864 add NaN4 Inf -> NaN4 906 addx865 add NaN5 +NaN6 -> NaN5 907 addx866 add -Inf NaN7 -> NaN7 908 addx867 add -1000 NaN8 -> NaN8 909 addx868 add 1000 NaN9 -> NaN9 910 addx869 add Inf +NaN10 -> NaN10 911 addx871 add sNaN11 -Inf -> NaN11 Invalid_operation 912 addx872 add sNaN12 -1000 -> NaN12 Invalid_operation 913 addx873 add sNaN13 1000 -> NaN13 Invalid_operation 914 addx874 add sNaN14 NaN17 -> NaN14 Invalid_operation 915 addx875 add sNaN15 sNaN18 -> NaN15 Invalid_operation 916 addx876 add NaN16 sNaN19 -> NaN19 Invalid_operation 917 addx877 add -Inf +sNaN20 -> NaN20 Invalid_operation 918 addx878 add -1000 sNaN21 -> NaN21 Invalid_operation 919 addx879 add 1000 sNaN22 -> NaN22 Invalid_operation 920 addx880 add Inf sNaN23 -> NaN23 Invalid_operation 921 addx881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation 922 addx882 add -NaN26 NaN28 -> -NaN26 923 addx883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation 924 addx884 add 1000 -NaN30 -> -NaN30 925 addx885 add 1000 -sNaN31 -> -NaN31 Invalid_operation 926 927 -- overflow, underflow and subnormal tests 928 maxexponent: 999999999 929 minexponent: -999999999 930 precision: 9 931 addx890 add 1E+999999999 9E+999999999 -> Infinity Overflow Inexact Rounded 932 addx891 add 9E+999999999 1E+999999999 -> Infinity Overflow Inexact Rounded 933 addx892 add -1.1E-999999999 1E-999999999 -> -1E-1000000000 Subnormal 934 addx893 add 1E-999999999 -1.1e-999999999 -> -1E-1000000000 Subnormal 935 addx894 add -1.0001E-999999999 1E-999999999 -> -1E-1000000003 Subnormal 936 addx895 add 1E-999999999 -1.0001e-999999999 -> -1E-1000000003 Subnormal 937 addx896 add -1E+999999999 -9E+999999999 -> -Infinity Overflow Inexact Rounded 938 addx897 add -9E+999999999 -1E+999999999 -> -Infinity Overflow Inexact Rounded 939 addx898 add +1.1E-999999999 -1E-999999999 -> 1E-1000000000 Subnormal 940 addx899 add -1E-999999999 +1.1e-999999999 -> 1E-1000000000 Subnormal 941 addx900 add +1.0001E-999999999 -1E-999999999 -> 1E-1000000003 Subnormal 942 addx901 add -1E-999999999 +1.0001e-999999999 -> 1E-1000000003 Subnormal 943 addx902 add -1E+999999999 +9E+999999999 -> 8E+999999999 944 addx903 add -9E+999999999 +1E+999999999 -> -8E+999999999 945 946 precision: 3 947 addx904 add 0 -9.999E+999999999 -> -Infinity Inexact Overflow Rounded 948 addx905 add -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded 949 addx906 add 0 9.999E+999999999 -> Infinity Inexact Overflow Rounded 950 addx907 add 9.999E+999999999 0 -> Infinity Inexact Overflow Rounded 951 952 precision: 3 953 maxexponent: 999 954 minexponent: -999 955 addx910 add 1.00E-999 0 -> 1.00E-999 956 addx911 add 0.1E-999 0 -> 1E-1000 Subnormal 957 addx912 add 0.10E-999 0 -> 1.0E-1000 Subnormal 958 addx913 add 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded 959 addx914 add 0.01E-999 0 -> 1E-1001 Subnormal 960 -- next is rounded to Nmin 961 addx915 add 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow 962 addx916 add 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow 963 addx917 add 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow 964 addx918 add 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped 965 addx919 add 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped 966 addx920 add 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow Clamped 967 968 addx930 add -1.00E-999 0 -> -1.00E-999 969 addx931 add -0.1E-999 0 -> -1E-1000 Subnormal 970 addx932 add -0.10E-999 0 -> -1.0E-1000 Subnormal 971 addx933 add -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded 972 addx934 add -0.01E-999 0 -> -1E-1001 Subnormal 973 -- next is rounded to Nmin 974 addx935 add -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow 975 addx936 add -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow 976 addx937 add -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow 977 addx938 add -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped 978 addx939 add -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped 979 addx940 add -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped 980 981 -- some non-zero subnormal adds 982 addx950 add 1.00E-999 0.1E-999 -> 1.10E-999 983 addx951 add 0.1E-999 0.1E-999 -> 2E-1000 Subnormal 984 addx952 add 0.10E-999 0.1E-999 -> 2.0E-1000 Subnormal 985 addx953 add 0.100E-999 0.1E-999 -> 2.0E-1000 Subnormal Rounded 986 addx954 add 0.01E-999 0.1E-999 -> 1.1E-1000 Subnormal 987 addx955 add 0.999E-999 0.1E-999 -> 1.10E-999 Inexact Rounded 988 addx956 add 0.099E-999 0.1E-999 -> 2.0E-1000 Inexact Rounded Subnormal Underflow 989 addx957 add 0.009E-999 0.1E-999 -> 1.1E-1000 Inexact Rounded Subnormal Underflow 990 addx958 add 0.001E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow 991 addx959 add 0.0009E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow 992 addx960 add 0.0001E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow 993 -- negatives... 994 addx961 add 1.00E-999 -0.1E-999 -> 9.0E-1000 Subnormal 995 addx962 add 0.1E-999 -0.1E-999 -> 0E-1000 996 addx963 add 0.10E-999 -0.1E-999 -> 0E-1001 997 addx964 add 0.100E-999 -0.1E-999 -> 0E-1001 Clamped 998 addx965 add 0.01E-999 -0.1E-999 -> -9E-1001 Subnormal 999 addx966 add 0.999E-999 -0.1E-999 -> 9.0E-1000 Inexact Rounded Subnormal Underflow 1000 addx967 add 0.099E-999 -0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow Clamped 1001 addx968 add 0.009E-999 -0.1E-999 -> -9E-1001 Inexact Rounded Subnormal Underflow 1002 addx969 add 0.001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow 1003 addx970 add 0.0009E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow 1004 addx971 add 0.0001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow 1005 1006 -- some 'real' numbers 1007 maxExponent: 384 1008 minExponent: -383 1009 precision: 8 1010 addx566 add 99999061735E-394 0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal 1011 precision: 7 1012 addx567 add 99999061735E-394 0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal 1013 precision: 6 1014 addx568 add 99999061735E-394 0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal 1015 1016 -- now the case where we can get underflow but the result is normal 1017 -- [note this can't happen if the operands are also bounded, as we 1018 -- cannot represent 1E-399, for example] 1019 precision: 16 1020 rounding: half_up 1021 maxExponent: 384 1022 minExponent: -383 1023 1024 addx571 add 1E-383 0 -> 1E-383 1025 addx572 add 1E-384 0 -> 1E-384 Subnormal 1026 addx573 add 1E-383 1E-384 -> 1.1E-383 1027 addx574 subtract 1E-383 1E-384 -> 9E-384 Subnormal 1028 1029 -- Here we explore the boundary of rounding a subnormal to Nmin 1030 addx575 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal 1031 addx576 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal 1032 addx577 subtract 1E-383 1E-399 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded 1033 addx578 subtract 1E-383 1E-400 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded 1034 addx579 subtract 1E-383 1E-401 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded 1035 addx580 subtract 1E-383 1E-402 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded 1036 1037 -- check overflow edge case 1038 precision: 7 1039 rounding: half_up 1040 maxExponent: 96 1041 minExponent: -95 1042 addx972 apply 9.999999E+96 -> 9.999999E+96 1043 addx973 add 9.999999E+96 1 -> 9.999999E+96 Inexact Rounded 1044 addx974 add 9999999E+90 1 -> 9.999999E+96 Inexact Rounded 1045 addx975 add 9999999E+90 1E+90 -> Infinity Overflow Inexact Rounded 1046 addx976 add 9999999E+90 9E+89 -> Infinity Overflow Inexact Rounded 1047 addx977 add 9999999E+90 8E+89 -> Infinity Overflow Inexact Rounded 1048 addx978 add 9999999E+90 7E+89 -> Infinity Overflow Inexact Rounded 1049 addx979 add 9999999E+90 6E+89 -> Infinity Overflow Inexact Rounded 1050 addx980 add 9999999E+90 5E+89 -> Infinity Overflow Inexact Rounded 1051 addx981 add 9999999E+90 4E+89 -> 9.999999E+96 Inexact Rounded 1052 addx982 add 9999999E+90 3E+89 -> 9.999999E+96 Inexact Rounded 1053 addx983 add 9999999E+90 2E+89 -> 9.999999E+96 Inexact Rounded 1054 addx984 add 9999999E+90 1E+89 -> 9.999999E+96 Inexact Rounded 1055 1056 addx985 apply -9.999999E+96 -> -9.999999E+96 1057 addx986 add -9.999999E+96 -1 -> -9.999999E+96 Inexact Rounded 1058 addx987 add -9999999E+90 -1 -> -9.999999E+96 Inexact Rounded 1059 addx988 add -9999999E+90 -1E+90 -> -Infinity Overflow Inexact Rounded 1060 addx989 add -9999999E+90 -9E+89 -> -Infinity Overflow Inexact Rounded 1061 addx990 add -9999999E+90 -8E+89 -> -Infinity Overflow Inexact Rounded 1062 addx991 add -9999999E+90 -7E+89 -> -Infinity Overflow Inexact Rounded 1063 addx992 add -9999999E+90 -6E+89 -> -Infinity Overflow Inexact Rounded 1064 addx993 add -9999999E+90 -5E+89 -> -Infinity Overflow Inexact Rounded 1065 addx994 add -9999999E+90 -4E+89 -> -9.999999E+96 Inexact Rounded 1066 addx995 add -9999999E+90 -3E+89 -> -9.999999E+96 Inexact Rounded 1067 addx996 add -9999999E+90 -2E+89 -> -9.999999E+96 Inexact Rounded 1068 addx997 add -9999999E+90 -1E+89 -> -9.999999E+96 Inexact Rounded 1069 1070 -- check for double-rounded subnormals 1071 precision: 5 1072 maxexponent: 79 1073 minexponent: -79 1074 -- Add: lhs and rhs 0 1075 addx1001 add 1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1076 addx1002 add 1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1077 addx1003 add 1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1078 addx1004 add 0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1079 addx1005 add 0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1080 addx1006 add 0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1081 1082 -- Add: lhs >> rhs and vice versa 1083 addx1011 add 1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1084 addx1012 add 1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1085 addx1013 add 1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1086 addx1014 add 1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1087 addx1015 add 1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1088 addx1016 add 1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow 1089 1090 -- Add: lhs + rhs addition carried out 1091 addx1021 add 1.52443E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow 1092 addx1022 add 1.52444E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow 1093 addx1023 add 1.52445E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow 1094 addx1024 add 1.00001E-80 1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow 1095 addx1025 add 1.00001E-80 1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow 1096 addx1026 add 1.00001E-80 1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow 1097 1098 -- And for round down full and subnormal results 1099 precision: 16 1100 maxExponent: +384 1101 minExponent: -383 1102 rounding: down 1103 1104 addx1100 add 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact 1105 addx1101 add 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact 1106 addx1103 add +1 -1e-383 -> 0.9999999999999999 Rounded Inexact 1107 addx1104 add 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact 1108 addx1105 add 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact 1109 addx1106 add 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact 1110 addx1107 add 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact 1111 addx1108 add 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact 1112 addx1109 add 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact 1113 1114 rounding: ceiling 1115 addx1110 add -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact 1116 addx1111 add -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact 1117 addx1113 add -1 +1e-383 -> -0.9999999999999999 Rounded Inexact 1118 addx1114 add -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact 1119 addx1115 add -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact 1120 addx1116 add -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact 1121 addx1117 add -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact 1122 addx1118 add -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact 1123 addx1119 add -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact 1124 addx1120 add +1e-383 -1e+2 -> -99.99999999999999 Rounded Inexact 1125 addx1121 add +1e-383 -1e+1 -> -9.999999999999999 Rounded Inexact 1126 addx1123 add +1e-383 -1 -> -0.9999999999999999 Rounded Inexact 1127 addx1124 add +1e-383 -1e-1 -> -0.09999999999999999 Rounded Inexact 1128 addx1125 add +1e-383 -1e-2 -> -0.009999999999999999 Rounded Inexact 1129 addx1126 add +1e-383 -1e-3 -> -0.0009999999999999999 Rounded Inexact 1130 addx1127 add +1e-383 -1e-4 -> -0.00009999999999999999 Rounded Inexact 1131 addx1128 add +1e-383 -1e-5 -> -0.000009999999999999999 Rounded Inexact 1132 addx1129 add +1e-383 -1e-6 -> -9.999999999999999E-7 Rounded Inexact 1133 1134 rounding: down 1135 precision: 7 1136 maxExponent: +96 1137 minExponent: -95 1138 addx1130 add 1 -1e-200 -> 0.9999999 Rounded Inexact 1139 -- subnormal boundary 1140 addx1131 add 1.000000E-94 -1e-200 -> 9.999999E-95 Rounded Inexact 1141 addx1132 add 1.000001E-95 -1e-200 -> 1.000000E-95 Rounded Inexact 1142 addx1133 add 1.000000E-95 -1e-200 -> 9.99999E-96 Rounded Inexact Subnormal Underflow 1143 addx1134 add 0.999999E-95 -1e-200 -> 9.99998E-96 Rounded Inexact Subnormal Underflow 1144 addx1135 add 0.001000E-95 -1e-200 -> 9.99E-99 Rounded Inexact Subnormal Underflow 1145 addx1136 add 0.000999E-95 -1e-200 -> 9.98E-99 Rounded Inexact Subnormal Underflow 1146 addx1137 add 1.000000E-95 -1e-101 -> 9.99999E-96 Subnormal 1147 addx1138 add 10000E-101 -1e-200 -> 9.999E-98 Subnormal Inexact Rounded Underflow 1148 addx1139 add 1000E-101 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow 1149 addx1140 add 100E-101 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow 1150 addx1141 add 10E-101 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow 1151 addx1142 add 1E-101 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped 1152 addx1143 add 0E-101 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped 1153 addx1144 add 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped 1154 1155 addx1151 add 10000E-102 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow 1156 addx1152 add 1000E-102 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow 1157 addx1153 add 100E-102 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow 1158 addx1154 add 10E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped 1159 addx1155 add 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped 1160 addx1156 add 0E-102 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped 1161 addx1157 add 1E-103 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped 1162 1163 addx1160 add 100E-105 -1e-101 -> -0E-101 Subnormal Inexact Rounded Underflow Clamped 1164 addx1161 add 100E-105 -1e-201 -> 0E-101 Subnormal Inexact Rounded Underflow Clamped 1165 1166 -- tests based on Gunnar Degnbol's edge case 1167 precision: 15 1168 rounding: half_up 1169 maxExponent: 384 1170 minexponent: -383 1171 1172 addx1200 add 1E15 -0.5 -> 1.00000000000000E+15 Inexact Rounded 1173 addx1201 add 1E15 -0.50 -> 1.00000000000000E+15 Inexact Rounded 1174 addx1210 add 1E15 -0.51 -> 999999999999999 Inexact Rounded 1175 addx1211 add 1E15 -0.501 -> 999999999999999 Inexact Rounded 1176 addx1212 add 1E15 -0.5001 -> 999999999999999 Inexact Rounded 1177 addx1213 add 1E15 -0.50001 -> 999999999999999 Inexact Rounded 1178 addx1214 add 1E15 -0.500001 -> 999999999999999 Inexact Rounded 1179 addx1215 add 1E15 -0.5000001 -> 999999999999999 Inexact Rounded 1180 addx1216 add 1E15 -0.50000001 -> 999999999999999 Inexact Rounded 1181 addx1217 add 1E15 -0.500000001 -> 999999999999999 Inexact Rounded 1182 addx1218 add 1E15 -0.5000000001 -> 999999999999999 Inexact Rounded 1183 addx1219 add 1E15 -0.50000000001 -> 999999999999999 Inexact Rounded 1184 addx1220 add 1E15 -0.500000000001 -> 999999999999999 Inexact Rounded 1185 addx1221 add 1E15 -0.5000000000001 -> 999999999999999 Inexact Rounded 1186 addx1222 add 1E15 -0.50000000000001 -> 999999999999999 Inexact Rounded 1187 addx1223 add 1E15 -0.500000000000001 -> 999999999999999 Inexact Rounded 1188 addx1224 add 1E15 -0.5000000000000001 -> 999999999999999 Inexact Rounded 1189 addx1225 add 1E15 -0.5000000000000000 -> 1.00000000000000E+15 Inexact Rounded 1190 addx1230 add 1E15 -5000000.000000001 -> 999999995000000 Inexact Rounded 1191 1192 precision: 16 1193 1194 addx1300 add 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded 1195 addx1310 add 1E16 -0.51 -> 9999999999999999 Inexact Rounded 1196 addx1311 add 1E16 -0.501 -> 9999999999999999 Inexact Rounded 1197 addx1312 add 1E16 -0.5001 -> 9999999999999999 Inexact Rounded 1198 addx1313 add 1E16 -0.50001 -> 9999999999999999 Inexact Rounded 1199 addx1314 add 1E16 -0.500001 -> 9999999999999999 Inexact Rounded 1200 addx1315 add 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded 1201 addx1316 add 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded 1202 addx1317 add 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded 1203 addx1318 add 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded 1204 addx1319 add 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded 1205 addx1320 add 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded 1206 addx1321 add 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded 1207 addx1322 add 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded 1208 addx1323 add 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded 1209 addx1324 add 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded 1210 addx1325 add 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded 1211 addx1326 add 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded 1212 addx1327 add 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded 1213 addx1328 add 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded 1214 addx1329 add 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded 1215 addx1330 add 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded 1216 addx1331 add 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded 1217 addx1332 add 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded 1218 addx1333 add 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded 1219 addx1334 add 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded 1220 addx1335 add 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded 1221 addx1336 add 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded 1222 addx1337 add 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded 1223 addx1338 add 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded 1224 addx1339 add 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded 1225 1226 addx1340 add 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded 1227 addx1341 add 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded 1228 1229 addx1349 add 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded 1230 addx1350 add 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded 1231 addx1351 add 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded 1232 addx1352 add 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded 1233 addx1353 add 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded 1234 addx1354 add 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded 1235 addx1355 add 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded 1236 addx1356 add 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded 1237 addx1357 add 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded 1238 addx1358 add 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded 1239 addx1359 add 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded 1240 addx1360 add 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded 1241 addx1361 add 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded 1242 addx1362 add 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded 1243 addx1363 add 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded 1244 addx1364 add 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded 1245 addx1365 add 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded 1246 addx1367 add 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded 1247 addx1368 add 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded 1248 addx1369 add 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded 1249 addx1370 add 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded 1250 addx1371 add 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded 1251 addx1372 add 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded 1252 addx1373 add 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded 1253 addx1374 add 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded 1254 addx1375 add 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded 1255 addx1376 add 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded 1256 addx1377 add 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded 1257 addx1378 add 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded 1258 addx1379 add 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded 1259 addx1380 add 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded 1260 addx1381 add 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded 1261 addx1382 add 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded 1262 addx1383 add 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded 1263 addx1384 add 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded 1264 addx1385 add 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded 1265 addx1386 add 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded 1266 addx1387 add 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded 1267 addx1388 add 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded 1268 addx1389 add 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded 1269 addx1390 add 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded 1270 addx1391 add 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded 1271 addx1392 add 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded 1272 addx1393 add 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded 1273 addx1394 add 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded 1274 addx1395 add 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded 1275 addx1396 add 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded 1276 1277 -- More GD edge cases, where difference between the unadjusted 1278 -- exponents is larger than the maximum precision and one side is 0 1279 precision: 15 1280 rounding: half_up 1281 maxExponent: 384 1282 minexponent: -383 1283 1284 addx1400 add 0 1.23456789012345 -> 1.23456789012345 1285 addx1401 add 0 1.23456789012345E-1 -> 0.123456789012345 1286 addx1402 add 0 1.23456789012345E-2 -> 0.0123456789012345 1287 addx1403 add 0 1.23456789012345E-3 -> 0.00123456789012345 1288 addx1404 add 0 1.23456789012345E-4 -> 0.000123456789012345 1289 addx1405 add 0 1.23456789012345E-5 -> 0.0000123456789012345 1290 addx1406 add 0 1.23456789012345E-6 -> 0.00000123456789012345 1291 addx1407 add 0 1.23456789012345E-7 -> 1.23456789012345E-7 1292 addx1408 add 0 1.23456789012345E-8 -> 1.23456789012345E-8 1293 addx1409 add 0 1.23456789012345E-9 -> 1.23456789012345E-9 1294 addx1410 add 0 1.23456789012345E-10 -> 1.23456789012345E-10 1295 addx1411 add 0 1.23456789012345E-11 -> 1.23456789012345E-11 1296 addx1412 add 0 1.23456789012345E-12 -> 1.23456789012345E-12 1297 addx1413 add 0 1.23456789012345E-13 -> 1.23456789012345E-13 1298 addx1414 add 0 1.23456789012345E-14 -> 1.23456789012345E-14 1299 addx1415 add 0 1.23456789012345E-15 -> 1.23456789012345E-15 1300 addx1416 add 0 1.23456789012345E-16 -> 1.23456789012345E-16 1301 addx1417 add 0 1.23456789012345E-17 -> 1.23456789012345E-17 1302 addx1418 add 0 1.23456789012345E-18 -> 1.23456789012345E-18 1303 addx1419 add 0 1.23456789012345E-19 -> 1.23456789012345E-19 1304 1305 -- same, precision 16.. 1306 precision: 16 1307 addx1420 add 0 1.123456789012345 -> 1.123456789012345 1308 addx1421 add 0 1.123456789012345E-1 -> 0.1123456789012345 1309 addx1422 add 0 1.123456789012345E-2 -> 0.01123456789012345 1310 addx1423 add 0 1.123456789012345E-3 -> 0.001123456789012345 1311 addx1424 add 0 1.123456789012345E-4 -> 0.0001123456789012345 1312 addx1425 add 0 1.123456789012345E-5 -> 0.00001123456789012345 1313 addx1426 add 0 1.123456789012345E-6 -> 0.000001123456789012345 1314 addx1427 add 0 1.123456789012345E-7 -> 1.123456789012345E-7 1315 addx1428 add 0 1.123456789012345E-8 -> 1.123456789012345E-8 1316 addx1429 add 0 1.123456789012345E-9 -> 1.123456789012345E-9 1317 addx1430 add 0 1.123456789012345E-10 -> 1.123456789012345E-10 1318 addx1431 add 0 1.123456789012345E-11 -> 1.123456789012345E-11 1319 addx1432 add 0 1.123456789012345E-12 -> 1.123456789012345E-12 1320 addx1433 add 0 1.123456789012345E-13 -> 1.123456789012345E-13 1321 addx1434 add 0 1.123456789012345E-14 -> 1.123456789012345E-14 1322 addx1435 add 0 1.123456789012345E-15 -> 1.123456789012345E-15 1323 addx1436 add 0 1.123456789012345E-16 -> 1.123456789012345E-16 1324 addx1437 add 0 1.123456789012345E-17 -> 1.123456789012345E-17 1325 addx1438 add 0 1.123456789012345E-18 -> 1.123456789012345E-18 1326 addx1439 add 0 1.123456789012345E-19 -> 1.123456789012345E-19 1327 1328 -- same, reversed 0 1329 addx1440 add 1.123456789012345 0 -> 1.123456789012345 1330 addx1441 add 1.123456789012345E-1 0 -> 0.1123456789012345 1331 addx1442 add 1.123456789012345E-2 0 -> 0.01123456789012345 1332 addx1443 add 1.123456789012345E-3 0 -> 0.001123456789012345 1333 addx1444 add 1.123456789012345E-4 0 -> 0.0001123456789012345 1334 addx1445 add 1.123456789012345E-5 0 -> 0.00001123456789012345 1335 addx1446 add 1.123456789012345E-6 0 -> 0.000001123456789012345 1336 addx1447 add 1.123456789012345E-7 0 -> 1.123456789012345E-7 1337 addx1448 add 1.123456789012345E-8 0 -> 1.123456789012345E-8 1338 addx1449 add 1.123456789012345E-9 0 -> 1.123456789012345E-9 1339 addx1450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10 1340 addx1451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11 1341 addx1452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12 1342 addx1453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13 1343 addx1454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14 1344 addx1455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15 1345 addx1456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16 1346 addx1457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17 1347 addx1458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18 1348 addx1459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19 1349 1350 -- same, Es on the 0 1351 addx1460 add 1.123456789012345 0E-0 -> 1.123456789012345 1352 addx1461 add 1.123456789012345 0E-1 -> 1.123456789012345 1353 addx1462 add 1.123456789012345 0E-2 -> 1.123456789012345 1354 addx1463 add 1.123456789012345 0E-3 -> 1.123456789012345 1355 addx1464 add 1.123456789012345 0E-4 -> 1.123456789012345 1356 addx1465 add 1.123456789012345 0E-5 -> 1.123456789012345 1357 addx1466 add 1.123456789012345 0E-6 -> 1.123456789012345 1358 addx1467 add 1.123456789012345 0E-7 -> 1.123456789012345 1359 addx1468 add 1.123456789012345 0E-8 -> 1.123456789012345 1360 addx1469 add 1.123456789012345 0E-9 -> 1.123456789012345 1361 addx1470 add 1.123456789012345 0E-10 -> 1.123456789012345 1362 addx1471 add 1.123456789012345 0E-11 -> 1.123456789012345 1363 addx1472 add 1.123456789012345 0E-12 -> 1.123456789012345 1364 addx1473 add 1.123456789012345 0E-13 -> 1.123456789012345 1365 addx1474 add 1.123456789012345 0E-14 -> 1.123456789012345 1366 addx1475 add 1.123456789012345 0E-15 -> 1.123456789012345 1367 -- next four flag Rounded because the 0 extends the result 1368 addx1476 add 1.123456789012345 0E-16 -> 1.123456789012345 Rounded 1369 addx1477 add 1.123456789012345 0E-17 -> 1.123456789012345 Rounded 1370 addx1478 add 1.123456789012345 0E-18 -> 1.123456789012345 Rounded 1371 addx1479 add 1.123456789012345 0E-19 -> 1.123456789012345 Rounded 1372 1373 -- sum of two opposite-sign operands is exactly 0 and floor => -0 1374 precision: 16 1375 maxExponent: 384 1376 minexponent: -383 1377 1378 rounding: half_up 1379 -- exact zeros from zeros 1380 addx1500 add 0 0E-19 -> 0E-19 1381 addx1501 add -0 0E-19 -> 0E-19 1382 addx1502 add 0 -0E-19 -> 0E-19 1383 addx1503 add -0 -0E-19 -> -0E-19 1384 addx1504 add 0E-400 0E-19 -> 0E-398 Clamped 1385 addx1505 add -0E-400 0E-19 -> 0E-398 Clamped 1386 addx1506 add 0E-400 -0E-19 -> 0E-398 Clamped 1387 addx1507 add -0E-400 -0E-19 -> -0E-398 Clamped 1388 -- inexact zeros 1389 addx1511 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1390 addx1512 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1391 addx1513 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1392 addx1514 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1393 -- some exact zeros from non-zeros 1394 addx1515 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1395 addx1516 add -1E-401 1E-401 -> 0E-398 Clamped 1396 addx1517 add 1E-401 -1E-401 -> 0E-398 Clamped 1397 addx1518 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1398 1399 rounding: half_down 1400 -- exact zeros from zeros 1401 addx1520 add 0 0E-19 -> 0E-19 1402 addx1521 add -0 0E-19 -> 0E-19 1403 addx1522 add 0 -0E-19 -> 0E-19 1404 addx1523 add -0 -0E-19 -> -0E-19 1405 addx1524 add 0E-400 0E-19 -> 0E-398 Clamped 1406 addx1525 add -0E-400 0E-19 -> 0E-398 Clamped 1407 addx1526 add 0E-400 -0E-19 -> 0E-398 Clamped 1408 addx1527 add -0E-400 -0E-19 -> -0E-398 Clamped 1409 -- inexact zeros 1410 addx1531 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1411 addx1532 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1412 addx1533 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1413 addx1534 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1414 -- some exact zeros from non-zeros 1415 addx1535 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1416 addx1536 add -1E-401 1E-401 -> 0E-398 Clamped 1417 addx1537 add 1E-401 -1E-401 -> 0E-398 Clamped 1418 addx1538 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1419 1420 rounding: half_even 1421 -- exact zeros from zeros 1422 addx1540 add 0 0E-19 -> 0E-19 1423 addx1541 add -0 0E-19 -> 0E-19 1424 addx1542 add 0 -0E-19 -> 0E-19 1425 addx1543 add -0 -0E-19 -> -0E-19 1426 addx1544 add 0E-400 0E-19 -> 0E-398 Clamped 1427 addx1545 add -0E-400 0E-19 -> 0E-398 Clamped 1428 addx1546 add 0E-400 -0E-19 -> 0E-398 Clamped 1429 addx1547 add -0E-400 -0E-19 -> -0E-398 Clamped 1430 -- inexact zeros 1431 addx1551 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1432 addx1552 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1433 addx1553 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1434 addx1554 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1435 -- some exact zeros from non-zeros 1436 addx1555 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1437 addx1556 add -1E-401 1E-401 -> 0E-398 Clamped 1438 addx1557 add 1E-401 -1E-401 -> 0E-398 Clamped 1439 addx1558 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1440 1441 rounding: up 1442 -- exact zeros from zeros 1443 addx1560 add 0 0E-19 -> 0E-19 1444 addx1561 add -0 0E-19 -> 0E-19 1445 addx1562 add 0 -0E-19 -> 0E-19 1446 addx1563 add -0 -0E-19 -> -0E-19 1447 addx1564 add 0E-400 0E-19 -> 0E-398 Clamped 1448 addx1565 add -0E-400 0E-19 -> 0E-398 Clamped 1449 addx1566 add 0E-400 -0E-19 -> 0E-398 Clamped 1450 addx1567 add -0E-400 -0E-19 -> -0E-398 Clamped 1451 -- inexact zeros 1452 addx1571 add 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow 1453 addx1572 add -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow 1454 addx1573 add 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow 1455 addx1574 add -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow 1456 -- some exact zeros from non-zeros 1457 addx1575 add 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow 1458 addx1576 add -1E-401 1E-401 -> 0E-398 Clamped 1459 addx1577 add 1E-401 -1E-401 -> 0E-398 Clamped 1460 addx1578 add -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow 1461 1462 rounding: down 1463 -- exact zeros from zeros 1464 addx1580 add 0 0E-19 -> 0E-19 1465 addx1581 add -0 0E-19 -> 0E-19 1466 addx1582 add 0 -0E-19 -> 0E-19 1467 addx1583 add -0 -0E-19 -> -0E-19 1468 addx1584 add 0E-400 0E-19 -> 0E-398 Clamped 1469 addx1585 add -0E-400 0E-19 -> 0E-398 Clamped 1470 addx1586 add 0E-400 -0E-19 -> 0E-398 Clamped 1471 addx1587 add -0E-400 -0E-19 -> -0E-398 Clamped 1472 -- inexact zeros 1473 addx1591 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1474 addx1592 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1475 addx1593 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1476 addx1594 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1477 -- some exact zeros from non-zeros 1478 addx1595 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1479 addx1596 add -1E-401 1E-401 -> 0E-398 Clamped 1480 addx1597 add 1E-401 -1E-401 -> 0E-398 Clamped 1481 addx1598 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1482 1483 rounding: ceiling 1484 -- exact zeros from zeros 1485 addx1600 add 0 0E-19 -> 0E-19 1486 addx1601 add -0 0E-19 -> 0E-19 1487 addx1602 add 0 -0E-19 -> 0E-19 1488 addx1603 add -0 -0E-19 -> -0E-19 1489 addx1604 add 0E-400 0E-19 -> 0E-398 Clamped 1490 addx1605 add -0E-400 0E-19 -> 0E-398 Clamped 1491 addx1606 add 0E-400 -0E-19 -> 0E-398 Clamped 1492 addx1607 add -0E-400 -0E-19 -> -0E-398 Clamped 1493 -- inexact zeros 1494 addx1611 add 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow 1495 addx1612 add -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow 1496 addx1613 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1497 addx1614 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1498 -- some exact zeros from non-zeros 1499 addx1615 add 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow 1500 addx1616 add -1E-401 1E-401 -> 0E-398 Clamped 1501 addx1617 add 1E-401 -1E-401 -> 0E-398 Clamped 1502 addx1618 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 1503 1504 -- and the extra-special ugly case; unusual minuses marked by -- * 1505 rounding: floor 1506 -- exact zeros from zeros 1507 addx1620 add 0 0E-19 -> 0E-19 1508 addx1621 add -0 0E-19 -> -0E-19 -- * 1509 addx1622 add 0 -0E-19 -> -0E-19 -- * 1510 addx1623 add -0 -0E-19 -> -0E-19 1511 addx1624 add 0E-400 0E-19 -> 0E-398 Clamped 1512 addx1625 add -0E-400 0E-19 -> -0E-398 Clamped -- * 1513 addx1626 add 0E-400 -0E-19 -> -0E-398 Clamped -- * 1514 addx1627 add -0E-400 -0E-19 -> -0E-398 Clamped 1515 -- inexact zeros 1516 addx1631 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1517 addx1632 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1518 addx1633 add 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow 1519 addx1634 add -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow 1520 -- some exact zeros from non-zeros 1521 addx1635 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 1522 addx1636 add -1E-401 1E-401 -> -0E-398 Clamped -- * 1523 addx1637 add 1E-401 -1E-401 -> -0E-398 Clamped -- * 1524 addx1638 add -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow 1525 1526 -- BigDecimal problem testcases 2006.01.23 1527 precision: 16 1528 maxExponent: 384 1529 minexponent: -383 1530 1531 rounding: down 1532 precision: 7 1533 addx1651 add 10001E+2 -2E+1 -> 1.00008E+6 1534 precision: 6 1535 addx1652 add 10001E+2 -2E+1 -> 1.00008E+6 1536 precision: 5 1537 addx1653 add 10001E+2 -2E+1 -> 1.0000E+6 Inexact Rounded 1538 precision: 4 1539 addx1654 add 10001E+2 -2E+1 -> 1.000E+6 Inexact Rounded 1540 precision: 3 1541 addx1655 add 10001E+2 -2E+1 -> 1.00E+6 Inexact Rounded 1542 precision: 2 1543 addx1656 add 10001E+2 -2E+1 -> 1.0E+6 Inexact Rounded 1544 precision: 1 1545 addx1657 add 10001E+2 -2E+1 -> 1E+6 Inexact Rounded 1546 1547 rounding: half_even 1548 precision: 7 1549 addx1661 add 10001E+2 -2E+1 -> 1.00008E+6 1550 precision: 6 1551 addx1662 add 10001E+2 -2E+1 -> 1.00008E+6 1552 precision: 5 1553 addx1663 add 10001E+2 -2E+1 -> 1.0001E+6 Inexact Rounded 1554 precision: 4 1555 addx1664 add 10001E+2 -2E+1 -> 1.000E+6 Inexact Rounded 1556 precision: 3 1557 addx1665 add 10001E+2 -2E+1 -> 1.00E+6 Inexact Rounded 1558 precision: 2 1559 addx1666 add 10001E+2 -2E+1 -> 1.0E+6 Inexact Rounded 1560 precision: 1 1561 addx1667 add 10001E+2 -2E+1 -> 1E+6 Inexact Rounded 1562 1563 rounding: up 1564 precision: 7 1565 addx1671 add 10001E+2 -2E+1 -> 1.00008E+6 1566 precision: 6 1567 addx1672 add 10001E+2 -2E+1 -> 1.00008E+6 1568 precision: 5 1569 addx1673 add 10001E+2 -2E+1 -> 1.0001E+6 Inexact Rounded 1570 precision: 4 1571 addx1674 add 10001E+2 -2E+1 -> 1.001E+6 Inexact Rounded 1572 precision: 3 1573 addx1675 add 10001E+2 -2E+1 -> 1.01E+6 Inexact Rounded 1574 precision: 2 1575 addx1676 add 10001E+2 -2E+1 -> 1.1E+6 Inexact Rounded 1576 precision: 1 1577 addx1677 add 10001E+2 -2E+1 -> 2E+6 Inexact Rounded 1578 1579 precision: 34 1580 rounding: half_up 1581 maxExponent: 6144 1582 minExponent: -6143 1583 -- Examples from SQL proposal (Krishna Kulkarni) 1584 addx1701 add 130E-2 120E-2 -> 2.50 1585 addx1702 add 130E-2 12E-1 -> 2.50 1586 addx1703 add 130E-2 1E0 -> 2.30 1587 addx1704 add 1E2 1E4 -> 1.01E+4 1588 addx1705 subtract 130E-2 120E-2 -> 0.10 1589 addx1706 subtract 130E-2 12E-1 -> 0.10 1590 addx1707 subtract 130E-2 1E0 -> 0.30 1591 addx1708 subtract 1E2 1E4 -> -9.9E+3 1592 1593 ------------------------------------------------------------------------ 1594 -- Same as above, using decimal64 default parameters -- 1595 ------------------------------------------------------------------------ 1596 precision: 16 1597 rounding: half_even 1598 maxExponent: 384 1599 minexponent: -383 1600 1601 -- [first group are 'quick confidence check'] 1602 addx6001 add 1 1 -> 2 1603 addx6002 add 2 3 -> 5 1604 addx6003 add '5.75' '3.3' -> 9.05 1605 addx6004 add '5' '-3' -> 2 1606 addx6005 add '-5' '-3' -> -8 1607 addx6006 add '-7' '2.5' -> -4.5 1608 addx6007 add '0.7' '0.3' -> 1.0 1609 addx6008 add '1.25' '1.25' -> 2.50 1610 addx6009 add '1.23456789' '1.00000000' -> '2.23456789' 1611 addx6010 add '1.23456789' '1.00000011' -> '2.23456800' 1612 1613 addx6011 add '0.44444444444444444' '0.55555555555555555' -> '1.000000000000000' Inexact Rounded 1614 addx6012 add '0.44444444444444440' '0.55555555555555555' -> '1.000000000000000' Inexact Rounded 1615 addx6013 add '0.44444444444444444' '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded 1616 addx6014 add '0.444444444444444449' '0' -> '0.4444444444444444' Inexact Rounded 1617 addx6015 add '0.4444444444444444499' '0' -> '0.4444444444444444' Inexact Rounded 1618 addx6016 add '0.44444444444444444999' '0' -> '0.4444444444444444' Inexact Rounded 1619 addx6017 add '0.44444444444444445000' '0' -> '0.4444444444444444' Inexact Rounded 1620 addx6018 add '0.44444444444444445001' '0' -> '0.4444444444444445' Inexact Rounded 1621 addx6019 add '0.4444444444444444501' '0' -> '0.4444444444444445' Inexact Rounded 1622 addx6020 add '0.444444444444444451' '0' -> '0.4444444444444445' Inexact Rounded 1623 1624 addx6021 add 0 1 -> 1 1625 addx6022 add 1 1 -> 2 1626 addx6023 add 2 1 -> 3 1627 addx6024 add 3 1 -> 4 1628 addx6025 add 4 1 -> 5 1629 addx6026 add 5 1 -> 6 1630 addx6027 add 6 1 -> 7 1631 addx6028 add 7 1 -> 8 1632 addx6029 add 8 1 -> 9 1633 addx6030 add 9 1 -> 10 1634 1635 -- some carrying effects 1636 addx6031 add '0.9998' '0.0000' -> '0.9998' 1637 addx6032 add '0.9998' '0.0001' -> '0.9999' 1638 addx6033 add '0.9998' '0.0002' -> '1.0000' 1639 addx6034 add '0.9998' '0.0003' -> '1.0001' 1640 1641 addx6035 add '70' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded 1642 addx6036 add '700' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded 1643 addx6037 add '7000' '10000e+16' -> '1.000000000000000E+20' Inexact Rounded 1644 addx6038 add '70000' '10000e+16' -> '1.000000000000001E+20' Inexact Rounded 1645 addx6039 add '700000' '10000e+16' -> '1.000000000000007E+20' Rounded 1646 1647 -- symmetry: 1648 addx6040 add '10000e+16' '70' -> '1.000000000000000E+20' Inexact Rounded 1649 addx6041 add '10000e+16' '700' -> '1.000000000000000E+20' Inexact Rounded 1650 addx6042 add '10000e+16' '7000' -> '1.000000000000000E+20' Inexact Rounded 1651 addx6044 add '10000e+16' '70000' -> '1.000000000000001E+20' Inexact Rounded 1652 addx6045 add '10000e+16' '700000' -> '1.000000000000007E+20' Rounded 1653 1654 addx6046 add '10000e+9' '7' -> '10000000000007' 1655 addx6047 add '10000e+9' '70' -> '10000000000070' 1656 addx6048 add '10000e+9' '700' -> '10000000000700' 1657 addx6049 add '10000e+9' '7000' -> '10000000007000' 1658 addx6050 add '10000e+9' '70000' -> '10000000070000' 1659 addx6051 add '10000e+9' '700000' -> '10000000700000' 1660 1661 -- examples from decarith 1662 addx6053 add '12' '7.00' -> '19.00' 1663 addx6054 add '1.3' '-1.07' -> '0.23' 1664 addx6055 add '1.3' '-1.30' -> '0.00' 1665 addx6056 add '1.3' '-2.07' -> '-0.77' 1666 addx6057 add '1E+2' '1E+4' -> '1.01E+4' 1667 1668 -- from above 1669 addx6060 add 1 '0.1' -> '1.1' 1670 addx6061 add 1 '0.01' -> '1.01' 1671 addx6062 add 1 '0.001' -> '1.001' 1672 addx6063 add 1 '0.0001' -> '1.0001' 1673 addx6064 add 1 '0.00001' -> '1.00001' 1674 addx6065 add 1 '0.000001' -> '1.000001' 1675 addx6066 add 1 '0.0000001' -> '1.0000001' 1676 addx6067 add 1 '0.00000001' -> '1.00000001' 1677 1678 -- cancellation to integer 1679 addx6068 add 99999999999999123456789 -99999999999999E+9 -> 123456789 1680 -- similar from FMA fun 1681 addx6069 add "-1234567890123455.234567890123454" "1234567890123456" -> 0.765432109876546 1682 1683 -- some funny zeros [in case of bad signum] 1684 addx6070 add 1 0 -> 1 1685 addx6071 add 1 0. -> 1 1686 addx6072 add 1 .0 -> 1.0 1687 addx6073 add 1 0.0 -> 1.0 1688 addx6074 add 1 0.00 -> 1.00 1689 addx6075 add 0 1 -> 1 1690 addx6076 add 0. 1 -> 1 1691 addx6077 add .0 1 -> 1.0 1692 addx6078 add 0.0 1 -> 1.0 1693 addx6079 add 0.00 1 -> 1.00 1694 1695 -- some carries 1696 addx6080 add 9999999999999998 1 -> 9999999999999999 1697 addx6081 add 9999999999999999 1 -> 1.000000000000000E+16 Rounded 1698 addx6082 add 999999999999999 1 -> 1000000000000000 1699 addx6083 add 9999999999999 1 -> 10000000000000 1700 addx6084 add 99999999999 1 -> 100000000000 1701 addx6085 add 999999999 1 -> 1000000000 1702 addx6086 add 9999999 1 -> 10000000 1703 addx6087 add 99999 1 -> 100000 1704 addx6088 add 999 1 -> 1000 1705 addx6089 add 9 1 -> 10 1706 1707 1708 -- more LHS swaps 1709 addx6090 add '-56267E-10' 0 -> '-0.0000056267' 1710 addx6091 add '-56267E-6' 0 -> '-0.056267' 1711 addx6092 add '-56267E-5' 0 -> '-0.56267' 1712 addx6093 add '-56267E-4' 0 -> '-5.6267' 1713 addx6094 add '-56267E-3' 0 -> '-56.267' 1714 addx6095 add '-56267E-2' 0 -> '-562.67' 1715 addx6096 add '-56267E-1' 0 -> '-5626.7' 1716 addx6097 add '-56267E-0' 0 -> '-56267' 1717 addx6098 add '-5E-10' 0 -> '-5E-10' 1718 addx6099 add '-5E-7' 0 -> '-5E-7' 1719 addx6100 add '-5E-6' 0 -> '-0.000005' 1720 addx6101 add '-5E-5' 0 -> '-0.00005' 1721 addx6102 add '-5E-4' 0 -> '-0.0005' 1722 addx6103 add '-5E-1' 0 -> '-0.5' 1723 addx6104 add '-5E0' 0 -> '-5' 1724 addx6105 add '-5E1' 0 -> '-50' 1725 addx6106 add '-5E5' 0 -> '-500000' 1726 addx6107 add '-5E15' 0 -> '-5000000000000000' 1727 addx6108 add '-5E16' 0 -> '-5.000000000000000E+16' Rounded 1728 addx6109 add '-5E17' 0 -> '-5.000000000000000E+17' Rounded 1729 addx6110 add '-5E18' 0 -> '-5.000000000000000E+18' Rounded 1730 addx6111 add '-5E100' 0 -> '-5.000000000000000E+100' Rounded 1731 1732 -- more RHS swaps 1733 addx6113 add 0 '-56267E-10' -> '-0.0000056267' 1734 addx6114 add 0 '-56267E-6' -> '-0.056267' 1735 addx6116 add 0 '-56267E-5' -> '-0.56267' 1736 addx6117 add 0 '-56267E-4' -> '-5.6267' 1737 addx6119 add 0 '-56267E-3' -> '-56.267' 1738 addx6120 add 0 '-56267E-2' -> '-562.67' 1739 addx6121 add 0 '-56267E-1' -> '-5626.7' 1740 addx6122 add 0 '-56267E-0' -> '-56267' 1741 addx6123 add 0 '-5E-10' -> '-5E-10' 1742 addx6124 add 0 '-5E-7' -> '-5E-7' 1743 addx6125 add 0 '-5E-6' -> '-0.000005' 1744 addx6126 add 0 '-5E-5' -> '-0.00005' 1745 addx6127 add 0 '-5E-4' -> '-0.0005' 1746 addx6128 add 0 '-5E-1' -> '-0.5' 1747 addx6129 add 0 '-5E0' -> '-5' 1748 addx6130 add 0 '-5E1' -> '-50' 1749 addx6131 add 0 '-5E5' -> '-500000' 1750 addx6132 add 0 '-5E15' -> '-5000000000000000' 1751 addx6133 add 0 '-5E16' -> '-5.000000000000000E+16' Rounded 1752 addx6134 add 0 '-5E17' -> '-5.000000000000000E+17' Rounded 1753 addx6135 add 0 '-5E18' -> '-5.000000000000000E+18' Rounded 1754 addx6136 add 0 '-5E100' -> '-5.000000000000000E+100' Rounded 1755 1756 -- related 1757 addx6137 add 1 '0E-19' -> '1.000000000000000' Rounded 1758 addx6138 add -1 '0E-19' -> '-1.000000000000000' Rounded 1759 addx6139 add '0E-19' 1 -> '1.000000000000000' Rounded 1760 addx6140 add '0E-19' -1 -> '-1.000000000000000' Rounded 1761 addx6141 add 1E+11 0.0000 -> '100000000000.0000' 1762 addx6142 add 1E+11 0.00000 -> '100000000000.0000' Rounded 1763 addx6143 add 0.000 1E+12 -> '1000000000000.000' 1764 addx6144 add 0.0000 1E+12 -> '1000000000000.000' Rounded 1765 1766 -- [some of the next group are really constructor tests] 1767 addx6146 add '00.0' 0 -> '0.0' 1768 addx6147 add '0.00' 0 -> '0.00' 1769 addx6148 add 0 '0.00' -> '0.00' 1770 addx6149 add 0 '00.0' -> '0.0' 1771 addx6150 add '00.0' '0.00' -> '0.00' 1772 addx6151 add '0.00' '00.0' -> '0.00' 1773 addx6152 add '3' '.3' -> '3.3' 1774 addx6153 add '3.' '.3' -> '3.3' 1775 addx6154 add '3.0' '.3' -> '3.3' 1776 addx6155 add '3.00' '.3' -> '3.30' 1777 addx6156 add '3' '3' -> '6' 1778 addx6157 add '3' '+3' -> '6' 1779 addx6158 add '3' '-3' -> '0' 1780 addx6159 add '0.3' '-0.3' -> '0.0' 1781 addx6160 add '0.03' '-0.03' -> '0.00' 1782 1783 -- try borderline precision, with carries, etc. 1784 addx6161 add '1E+13' '-1' -> '9999999999999' 1785 addx6162 add '1E+13' '1.11' -> '10000000000001.11' 1786 addx6163 add '1.11' '1E+13' -> '10000000000001.11' 1787 addx6164 add '-1' '1E+13' -> '9999999999999' 1788 addx6165 add '7E+13' '-1' -> '69999999999999' 1789 addx6166 add '7E+13' '1.11' -> '70000000000001.11' 1790 addx6167 add '1.11' '7E+13' -> '70000000000001.11' 1791 addx6168 add '-1' '7E+13' -> '69999999999999' 1792 1793 -- 1234567890123456 1234567890123456 1 234567890123456 1794 addx6170 add '0.4444444444444444' '0.5555555555555563' -> '1.000000000000001' Inexact Rounded 1795 addx6171 add '0.4444444444444444' '0.5555555555555562' -> '1.000000000000001' Inexact Rounded 1796 addx6172 add '0.4444444444444444' '0.5555555555555561' -> '1.000000000000000' Inexact Rounded 1797 addx6173 add '0.4444444444444444' '0.5555555555555560' -> '1.000000000000000' Inexact Rounded 1798 addx6174 add '0.4444444444444444' '0.5555555555555559' -> '1.000000000000000' Inexact Rounded 1799 addx6175 add '0.4444444444444444' '0.5555555555555558' -> '1.000000000000000' Inexact Rounded 1800 addx6176 add '0.4444444444444444' '0.5555555555555557' -> '1.000000000000000' Inexact Rounded 1801 addx6177 add '0.4444444444444444' '0.5555555555555556' -> '1.000000000000000' Rounded 1802 addx6178 add '0.4444444444444444' '0.5555555555555555' -> '0.9999999999999999' 1803 addx6179 add '0.4444444444444444' '0.5555555555555554' -> '0.9999999999999998' 1804 addx6180 add '0.4444444444444444' '0.5555555555555553' -> '0.9999999999999997' 1805 addx6181 add '0.4444444444444444' '0.5555555555555552' -> '0.9999999999999996' 1806 addx6182 add '0.4444444444444444' '0.5555555555555551' -> '0.9999999999999995' 1807 addx6183 add '0.4444444444444444' '0.5555555555555550' -> '0.9999999999999994' 1808 1809 -- and some more, including residue effects and different roundings 1810 rounding: half_up 1811 addx6200 add '6543210123456789' 0 -> '6543210123456789' 1812 addx6201 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded 1813 addx6202 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded 1814 addx6203 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded 1815 addx6204 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded 1816 addx6205 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded 1817 addx6206 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded 1818 addx6207 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded 1819 addx6208 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded 1820 addx6209 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded 1821 addx6210 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded 1822 addx6211 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded 1823 addx6212 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded 1824 addx6213 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded 1825 addx6214 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded 1826 addx6215 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded 1827 addx6216 add '6543210123456789' 1 -> '6543210123456790' 1828 addx6217 add '6543210123456789' 1.000000001 -> '6543210123456790' Inexact Rounded 1829 addx6218 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded 1830 addx6219 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded 1831 1832 rounding: half_even 1833 addx6220 add '6543210123456789' 0 -> '6543210123456789' 1834 addx6221 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded 1835 addx6222 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded 1836 addx6223 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded 1837 addx6224 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded 1838 addx6225 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded 1839 addx6226 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded 1840 addx6227 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded 1841 addx6228 add '6543210123456789' 0.5 -> '6543210123456790' Inexact Rounded 1842 addx6229 add '6543210123456789' 0.500000001 -> '6543210123456790' Inexact Rounded 1843 addx6230 add '6543210123456789' 0.500001 -> '6543210123456790' Inexact Rounded 1844 addx6231 add '6543210123456789' 0.51 -> '6543210123456790' Inexact Rounded 1845 addx6232 add '6543210123456789' 0.6 -> '6543210123456790' Inexact Rounded 1846 addx6233 add '6543210123456789' 0.9 -> '6543210123456790' Inexact Rounded 1847 addx6234 add '6543210123456789' 0.99999 -> '6543210123456790' Inexact Rounded 1848 addx6235 add '6543210123456789' 0.999999999 -> '6543210123456790' Inexact Rounded 1849 addx6236 add '6543210123456789' 1 -> '6543210123456790' 1850 addx6237 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded 1851 addx6238 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded 1852 addx6239 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded 1853 -- critical few with even bottom digit... 1854 addx6240 add '6543210123456788' 0.499999999 -> '6543210123456788' Inexact Rounded 1855 addx6241 add '6543210123456788' 0.5 -> '6543210123456788' Inexact Rounded 1856 addx6242 add '6543210123456788' 0.500000001 -> '6543210123456789' Inexact Rounded 1857 1858 rounding: down 1859 addx6250 add '6543210123456789' 0 -> '6543210123456789' 1860 addx6251 add '6543210123456789' 0.000000001 -> '6543210123456789' Inexact Rounded 1861 addx6252 add '6543210123456789' 0.000001 -> '6543210123456789' Inexact Rounded 1862 addx6253 add '6543210123456789' 0.1 -> '6543210123456789' Inexact Rounded 1863 addx6254 add '6543210123456789' 0.4 -> '6543210123456789' Inexact Rounded 1864 addx6255 add '6543210123456789' 0.49 -> '6543210123456789' Inexact Rounded 1865 addx6256 add '6543210123456789' 0.499999 -> '6543210123456789' Inexact Rounded 1866 addx6257 add '6543210123456789' 0.499999999 -> '6543210123456789' Inexact Rounded 1867 addx6258 add '6543210123456789' 0.5 -> '6543210123456789' Inexact Rounded 1868 addx6259 add '6543210123456789' 0.500000001 -> '6543210123456789' Inexact Rounded 1869 addx6260 add '6543210123456789' 0.500001 -> '6543210123456789' Inexact Rounded 1870 addx6261 add '6543210123456789' 0.51 -> '6543210123456789' Inexact Rounded 1871 addx6262 add '6543210123456789' 0.6 -> '6543210123456789' Inexact Rounded 1872 addx6263 add '6543210123456789' 0.9 -> '6543210123456789' Inexact Rounded 1873 addx6264 add '6543210123456789' 0.99999 -> '6543210123456789' Inexact Rounded 1874 addx6265 add '6543210123456789' 0.999999999 -> '6543210123456789' Inexact Rounded 1875 addx6266 add '6543210123456789' 1 -> '6543210123456790' 1876 addx6267 add '6543210123456789' 1.00000001 -> '6543210123456790' Inexact Rounded 1877 addx6268 add '6543210123456789' 1.00001 -> '6543210123456790' Inexact Rounded 1878 addx6269 add '6543210123456789' 1.1 -> '6543210123456790' Inexact Rounded 1879 1880 -- 1 in last place tests 1881 rounding: half_even 1882 addx6301 add -1 1 -> 0 1883 addx6302 add 0 1 -> 1 1884 addx6303 add 1 1 -> 2 1885 addx6304 add 12 1 -> 13 1886 addx6305 add 98 1 -> 99 1887 addx6306 add 99 1 -> 100 1888 addx6307 add 100 1 -> 101 1889 addx6308 add 101 1 -> 102 1890 addx6309 add -1 -1 -> -2 1891 addx6310 add 0 -1 -> -1 1892 addx6311 add 1 -1 -> 0 1893 addx6312 add 12 -1 -> 11 1894 addx6313 add 98 -1 -> 97 1895 addx6314 add 99 -1 -> 98 1896 addx6315 add 100 -1 -> 99 1897 addx6316 add 101 -1 -> 100 1898 1899 addx6321 add -0.01 0.01 -> 0.00 1900 addx6322 add 0.00 0.01 -> 0.01 1901 addx6323 add 0.01 0.01 -> 0.02 1902 addx6324 add 0.12 0.01 -> 0.13 1903 addx6325 add 0.98 0.01 -> 0.99 1904 addx6326 add 0.99 0.01 -> 1.00 1905 addx6327 add 1.00 0.01 -> 1.01 1906 addx6328 add 1.01 0.01 -> 1.02 1907 addx6329 add -0.01 -0.01 -> -0.02 1908 addx6330 add 0.00 -0.01 -> -0.01 1909 addx6331 add 0.01 -0.01 -> 0.00 1910 addx6332 add 0.12 -0.01 -> 0.11 1911 addx6333 add 0.98 -0.01 -> 0.97 1912 addx6334 add 0.99 -0.01 -> 0.98 1913 addx6335 add 1.00 -0.01 -> 0.99 1914 addx6336 add 1.01 -0.01 -> 1.00 1915 1916 -- some more cases where adding 0 affects the coefficient 1917 addx6340 add 1E+3 0 -> 1000 1918 addx6341 add 1E+15 0 -> 1000000000000000 1919 addx6342 add 1E+16 0 -> 1.000000000000000E+16 Rounded 1920 addx6343 add 1E+17 0 -> 1.000000000000000E+17 Rounded 1921 -- which simply follow from these cases ... 1922 addx6344 add 1E+3 1 -> 1001 1923 addx6345 add 1E+15 1 -> 1000000000000001 1924 addx6346 add 1E+16 1 -> 1.000000000000000E+16 Inexact Rounded 1925 addx6347 add 1E+17 1 -> 1.000000000000000E+17 Inexact Rounded 1926 addx6348 add 1E+3 7 -> 1007 1927 addx6349 add 1E+15 7 -> 1000000000000007 1928 addx6350 add 1E+16 7 -> 1.000000000000001E+16 Inexact Rounded 1929 addx6351 add 1E+17 7 -> 1.000000000000000E+17 Inexact Rounded 1930 1931 -- tryzeros cases 1932 addx6361 add 0E+50 10000E+1 -> 1.0000E+5 1933 addx6362 add 10000E+1 0E-50 -> 100000.0000000000 Rounded 1934 addx6363 add 10000E+1 10000E-50 -> 100000.0000000000 Rounded Inexact 1935 addx6364 add 12.34 0e-398 -> 12.34000000000000 Rounded 1936 1937 -- ulp replacement tests 1938 addx6400 add 1 77e-14 -> 1.00000000000077 1939 addx6401 add 1 77e-15 -> 1.000000000000077 1940 addx6402 add 1 77e-16 -> 1.000000000000008 Inexact Rounded 1941 addx6403 add 1 77e-17 -> 1.000000000000001 Inexact Rounded 1942 addx6404 add 1 77e-18 -> 1.000000000000000 Inexact Rounded 1943 addx6405 add 1 77e-19 -> 1.000000000000000 Inexact Rounded 1944 addx6406 add 1 77e-99 -> 1.000000000000000 Inexact Rounded 1945 1946 addx6410 add 10 77e-14 -> 10.00000000000077 1947 addx6411 add 10 77e-15 -> 10.00000000000008 Inexact Rounded 1948 addx6412 add 10 77e-16 -> 10.00000000000001 Inexact Rounded 1949 addx6413 add 10 77e-17 -> 10.00000000000000 Inexact Rounded 1950 addx6414 add 10 77e-18 -> 10.00000000000000 Inexact Rounded 1951 addx6415 add 10 77e-19 -> 10.00000000000000 Inexact Rounded 1952 addx6416 add 10 77e-99 -> 10.00000000000000 Inexact Rounded 1953 1954 addx6420 add 77e-14 1 -> 1.00000000000077 1955 addx6421 add 77e-15 1 -> 1.000000000000077 1956 addx6422 add 77e-16 1 -> 1.000000000000008 Inexact Rounded 1957 addx6423 add 77e-17 1 -> 1.000000000000001 Inexact Rounded 1958 addx6424 add 77e-18 1 -> 1.000000000000000 Inexact Rounded 1959 addx6425 add 77e-19 1 -> 1.000000000000000 Inexact Rounded 1960 addx6426 add 77e-99 1 -> 1.000000000000000 Inexact Rounded 1961 1962 addx6430 add 77e-14 10 -> 10.00000000000077 1963 addx6431 add 77e-15 10 -> 10.00000000000008 Inexact Rounded 1964 addx6432 add 77e-16 10 -> 10.00000000000001 Inexact Rounded 1965 addx6433 add 77e-17 10 -> 10.00000000000000 Inexact Rounded 1966 addx6434 add 77e-18 10 -> 10.00000000000000 Inexact Rounded 1967 addx6435 add 77e-19 10 -> 10.00000000000000 Inexact Rounded 1968 addx6436 add 77e-99 10 -> 10.00000000000000 Inexact Rounded 1969 1970 -- negative ulps 1971 addx6440 add 1 -77e-14 -> 0.99999999999923 1972 addx6441 add 1 -77e-15 -> 0.999999999999923 1973 addx6442 add 1 -77e-16 -> 0.9999999999999923 1974 addx6443 add 1 -77e-17 -> 0.9999999999999992 Inexact Rounded 1975 addx6444 add 1 -77e-18 -> 0.9999999999999999 Inexact Rounded 1976 addx6445 add 1 -77e-19 -> 1.000000000000000 Inexact Rounded 1977 addx6446 add 1 -77e-99 -> 1.000000000000000 Inexact Rounded 1978 1979 addx6450 add 10 -77e-14 -> 9.99999999999923 1980 addx6451 add 10 -77e-15 -> 9.999999999999923 1981 addx6452 add 10 -77e-16 -> 9.999999999999992 Inexact Rounded 1982 addx6453 add 10 -77e-17 -> 9.999999999999999 Inexact Rounded 1983 addx6454 add 10 -77e-18 -> 10.00000000000000 Inexact Rounded 1984 addx6455 add 10 -77e-19 -> 10.00000000000000 Inexact Rounded 1985 addx6456 add 10 -77e-99 -> 10.00000000000000 Inexact Rounded 1986 1987 addx6460 add -77e-14 1 -> 0.99999999999923 1988 addx6461 add -77e-15 1 -> 0.999999999999923 1989 addx6462 add -77e-16 1 -> 0.9999999999999923 1990 addx6463 add -77e-17 1 -> 0.9999999999999992 Inexact Rounded 1991 addx6464 add -77e-18 1 -> 0.9999999999999999 Inexact Rounded 1992 addx6465 add -77e-19 1 -> 1.000000000000000 Inexact Rounded 1993 addx6466 add -77e-99 1 -> 1.000000000000000 Inexact Rounded 1994 1995 addx6470 add -77e-14 10 -> 9.99999999999923 1996 addx6471 add -77e-15 10 -> 9.999999999999923 1997 addx6472 add -77e-16 10 -> 9.999999999999992 Inexact Rounded 1998 addx6473 add -77e-17 10 -> 9.999999999999999 Inexact Rounded 1999 addx6474 add -77e-18 10 -> 10.00000000000000 Inexact Rounded 2000 addx6475 add -77e-19 10 -> 10.00000000000000 Inexact Rounded 2001 addx6476 add -77e-99 10 -> 10.00000000000000 Inexact Rounded 2002 2003 -- negative ulps 2004 addx6480 add -1 77e-14 -> -0.99999999999923 2005 addx6481 add -1 77e-15 -> -0.999999999999923 2006 addx6482 add -1 77e-16 -> -0.9999999999999923 2007 addx6483 add -1 77e-17 -> -0.9999999999999992 Inexact Rounded 2008 addx6484 add -1 77e-18 -> -0.9999999999999999 Inexact Rounded 2009 addx6485 add -1 77e-19 -> -1.000000000000000 Inexact Rounded 2010 addx6486 add -1 77e-99 -> -1.000000000000000 Inexact Rounded 2011 2012 addx6490 add -10 77e-14 -> -9.99999999999923 2013 addx6491 add -10 77e-15 -> -9.999999999999923 2014 addx6492 add -10 77e-16 -> -9.999999999999992 Inexact Rounded 2015 addx6493 add -10 77e-17 -> -9.999999999999999 Inexact Rounded 2016 addx6494 add -10 77e-18 -> -10.00000000000000 Inexact Rounded 2017 addx6495 add -10 77e-19 -> -10.00000000000000 Inexact Rounded 2018 addx6496 add -10 77e-99 -> -10.00000000000000 Inexact Rounded 2019 2020 addx6500 add 77e-14 -1 -> -0.99999999999923 2021 addx6501 add 77e-15 -1 -> -0.999999999999923 2022 addx6502 add 77e-16 -1 -> -0.9999999999999923 2023 addx6503 add 77e-17 -1 -> -0.9999999999999992 Inexact Rounded 2024 addx6504 add 77e-18 -1 -> -0.9999999999999999 Inexact Rounded 2025 addx6505 add 77e-19 -1 -> -1.000000000000000 Inexact Rounded 2026 addx6506 add 77e-99 -1 -> -1.000000000000000 Inexact Rounded 2027 2028 addx6510 add 77e-14 -10 -> -9.99999999999923 2029 addx6511 add 77e-15 -10 -> -9.999999999999923 2030 addx6512 add 77e-16 -10 -> -9.999999999999992 Inexact Rounded 2031 addx6513 add 77e-17 -10 -> -9.999999999999999 Inexact Rounded 2032 addx6514 add 77e-18 -10 -> -10.00000000000000 Inexact Rounded 2033 addx6515 add 77e-19 -10 -> -10.00000000000000 Inexact Rounded 2034 addx6516 add 77e-99 -10 -> -10.00000000000000 Inexact Rounded 2035 2036 2037 -- long operands 2038 addx6521 add 101234562345678000 0 -> 1.012345623456780E+17 Rounded 2039 addx6522 add 0 101234562345678000 -> 1.012345623456780E+17 Rounded 2040 addx6523 add 10123456234567800 0 -> 1.012345623456780E+16 Rounded 2041 addx6524 add 0 10123456234567800 -> 1.012345623456780E+16 Rounded 2042 addx6525 add 10123456234567890 0 -> 1.012345623456789E+16 Rounded 2043 addx6526 add 0 10123456234567890 -> 1.012345623456789E+16 Rounded 2044 addx6527 add 10123456234567891 0 -> 1.012345623456789E+16 Inexact Rounded 2045 addx6528 add 0 10123456234567891 -> 1.012345623456789E+16 Inexact Rounded 2046 addx6529 add 101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded 2047 addx6530 add 0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded 2048 addx6531 add 10123456234567896 0 -> 1.012345623456790E+16 Inexact Rounded 2049 addx6532 add 0 10123456234567896 -> 1.012345623456790E+16 Inexact Rounded 2050 2051 -- verify a query 2052 rounding: down 2053 addx6561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded 2054 addx6562 add 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded 2055 -- and using decimal64 bounds... 2056 rounding: down 2057 addx6563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded 2058 addx6564 add 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded 2059 2060 -- more zeros, etc. 2061 rounding: half_even 2062 2063 addx6701 add 5.00 1.00E-3 -> 5.00100 2064 addx6702 add 00.00 0.000 -> 0.000 2065 addx6703 add 00.00 0E-3 -> 0.000 2066 addx6704 add 0E-3 00.00 -> 0.000 2067 2068 addx6710 add 0E+3 00.00 -> 0.00 2069 addx6711 add 0E+3 00.0 -> 0.0 2070 addx6712 add 0E+3 00. -> 0 2071 addx6713 add 0E+3 00.E+1 -> 0E+1 2072 addx6714 add 0E+3 00.E+2 -> 0E+2 2073 addx6715 add 0E+3 00.E+3 -> 0E+3 2074 addx6716 add 0E+3 00.E+4 -> 0E+3 2075 addx6717 add 0E+3 00.E+5 -> 0E+3 2076 addx6718 add 0E+3 -00.0 -> 0.0 2077 addx6719 add 0E+3 -00. -> 0 2078 addx6731 add 0E+3 -00.E+1 -> 0E+1 2079 2080 addx6720 add 00.00 0E+3 -> 0.00 2081 addx6721 add 00.0 0E+3 -> 0.0 2082 addx6722 add 00. 0E+3 -> 0 2083 addx6723 add 00.E+1 0E+3 -> 0E+1 2084 addx6724 add 00.E+2 0E+3 -> 0E+2 2085 addx6725 add 00.E+3 0E+3 -> 0E+3 2086 addx6726 add 00.E+4 0E+3 -> 0E+3 2087 addx6727 add 00.E+5 0E+3 -> 0E+3 2088 addx6728 add -00.00 0E+3 -> 0.00 2089 addx6729 add -00.0 0E+3 -> 0.0 2090 addx6730 add -00. 0E+3 -> 0 2091 2092 addx6732 add 0 0 -> 0 2093 addx6733 add 0 -0 -> 0 2094 addx6734 add -0 0 -> 0 2095 addx6735 add -0 -0 -> -0 -- IEEE 854 special case 2096 2097 addx6736 add 1 -1 -> 0 2098 addx6737 add -1 -1 -> -2 2099 addx6738 add 1 1 -> 2 2100 addx6739 add -1 1 -> 0 2101 2102 addx6741 add 0 -1 -> -1 2103 addx6742 add -0 -1 -> -1 2104 addx6743 add 0 1 -> 1 2105 addx6744 add -0 1 -> 1 2106 addx6745 add -1 0 -> -1 2107 addx6746 add -1 -0 -> -1 2108 addx6747 add 1 0 -> 1 2109 addx6748 add 1 -0 -> 1 2110 2111 addx6751 add 0.0 -1 -> -1.0 2112 addx6752 add -0.0 -1 -> -1.0 2113 addx6753 add 0.0 1 -> 1.0 2114 addx6754 add -0.0 1 -> 1.0 2115 addx6755 add -1.0 0 -> -1.0 2116 addx6756 add -1.0 -0 -> -1.0 2117 addx6757 add 1.0 0 -> 1.0 2118 addx6758 add 1.0 -0 -> 1.0 2119 2120 addx6761 add 0 -1.0 -> -1.0 2121 addx6762 add -0 -1.0 -> -1.0 2122 addx6763 add 0 1.0 -> 1.0 2123 addx6764 add -0 1.0 -> 1.0 2124 addx6765 add -1 0.0 -> -1.0 2125 addx6766 add -1 -0.0 -> -1.0 2126 addx6767 add 1 0.0 -> 1.0 2127 addx6768 add 1 -0.0 -> 1.0 2128 2129 addx6771 add 0.0 -1.0 -> -1.0 2130 addx6772 add -0.0 -1.0 -> -1.0 2131 addx6773 add 0.0 1.0 -> 1.0 2132 addx6774 add -0.0 1.0 -> 1.0 2133 addx6775 add -1.0 0.0 -> -1.0 2134 addx6776 add -1.0 -0.0 -> -1.0 2135 addx6777 add 1.0 0.0 -> 1.0 2136 addx6778 add 1.0 -0.0 -> 1.0 2137 2138 -- Specials 2139 addx6780 add -Inf -Inf -> -Infinity 2140 addx6781 add -Inf -1000 -> -Infinity 2141 addx6782 add -Inf -1 -> -Infinity 2142 addx6783 add -Inf -0 -> -Infinity 2143 addx6784 add -Inf 0 -> -Infinity 2144 addx6785 add -Inf 1 -> -Infinity 2145 addx6786 add -Inf 1000 -> -Infinity 2146 addx6787 add -1000 -Inf -> -Infinity 2147 addx6788 add -Inf -Inf -> -Infinity 2148 addx6789 add -1 -Inf -> -Infinity 2149 addx6790 add -0 -Inf -> -Infinity 2150 addx6791 add 0 -Inf -> -Infinity 2151 addx6792 add 1 -Inf -> -Infinity 2152 addx6793 add 1000 -Inf -> -Infinity 2153 addx6794 add Inf -Inf -> NaN Invalid_operation 2154 2155 addx6800 add Inf -Inf -> NaN Invalid_operation 2156 addx6801 add Inf -1000 -> Infinity 2157 addx6802 add Inf -1 -> Infinity 2158 addx6803 add Inf -0 -> Infinity 2159 addx6804 add Inf 0 -> Infinity 2160 addx6805 add Inf 1 -> Infinity 2161 addx6806 add Inf 1000 -> Infinity 2162 addx6807 add Inf Inf -> Infinity 2163 addx6808 add -1000 Inf -> Infinity 2164 addx6809 add -Inf Inf -> NaN Invalid_operation 2165 addx6810 add -1 Inf -> Infinity 2166 addx6811 add -0 Inf -> Infinity 2167 addx6812 add 0 Inf -> Infinity 2168 addx6813 add 1 Inf -> Infinity 2169 addx6814 add 1000 Inf -> Infinity 2170 addx6815 add Inf Inf -> Infinity 2171 2172 addx6821 add NaN -Inf -> NaN 2173 addx6822 add NaN -1000 -> NaN 2174 addx6823 add NaN -1 -> NaN 2175 addx6824 add NaN -0 -> NaN 2176 addx6825 add NaN 0 -> NaN 2177 addx6826 add NaN 1 -> NaN 2178 addx6827 add NaN 1000 -> NaN 2179 addx6828 add NaN Inf -> NaN 2180 addx6829 add NaN NaN -> NaN 2181 addx6830 add -Inf NaN -> NaN 2182 addx6831 add -1000 NaN -> NaN 2183 addx6832 add -1 NaN -> NaN 2184 addx6833 add -0 NaN -> NaN 2185 addx6834 add 0 NaN -> NaN 2186 addx6835 add 1 NaN -> NaN 2187 addx6836 add 1000 NaN -> NaN 2188 addx6837 add Inf NaN -> NaN 2189 2190 addx6841 add sNaN -Inf -> NaN Invalid_operation 2191 addx6842 add sNaN -1000 -> NaN Invalid_operation 2192 addx6843 add sNaN -1 -> NaN Invalid_operation 2193 addx6844 add sNaN -0 -> NaN Invalid_operation 2194 addx6845 add sNaN 0 -> NaN Invalid_operation 2195 addx6846 add sNaN 1 -> NaN Invalid_operation 2196 addx6847 add sNaN 1000 -> NaN Invalid_operation 2197 addx6848 add sNaN NaN -> NaN Invalid_operation 2198 addx6849 add sNaN sNaN -> NaN Invalid_operation 2199 addx6850 add NaN sNaN -> NaN Invalid_operation 2200 addx6851 add -Inf sNaN -> NaN Invalid_operation 2201 addx6852 add -1000 sNaN -> NaN Invalid_operation 2202 addx6853 add -1 sNaN -> NaN Invalid_operation 2203 addx6854 add -0 sNaN -> NaN Invalid_operation 2204 addx6855 add 0 sNaN -> NaN Invalid_operation 2205 addx6856 add 1 sNaN -> NaN Invalid_operation 2206 addx6857 add 1000 sNaN -> NaN Invalid_operation 2207 addx6858 add Inf sNaN -> NaN Invalid_operation 2208 addx6859 add NaN sNaN -> NaN Invalid_operation 2209 2210 -- propagating NaNs 2211 addx6861 add NaN1 -Inf -> NaN1 2212 addx6862 add +NaN2 -1000 -> NaN2 2213 addx6863 add NaN3 1000 -> NaN3 2214 addx6864 add NaN4 Inf -> NaN4 2215 addx6865 add NaN5 +NaN6 -> NaN5 2216 addx6866 add -Inf NaN7 -> NaN7 2217 addx6867 add -1000 NaN8 -> NaN8 2218 addx6868 add 1000 NaN9 -> NaN9 2219 addx6869 add Inf +NaN10 -> NaN10 2220 addx6871 add sNaN11 -Inf -> NaN11 Invalid_operation 2221 addx6872 add sNaN12 -1000 -> NaN12 Invalid_operation 2222 addx6873 add sNaN13 1000 -> NaN13 Invalid_operation 2223 addx6874 add sNaN14 NaN17 -> NaN14 Invalid_operation 2224 addx6875 add sNaN15 sNaN18 -> NaN15 Invalid_operation 2225 addx6876 add NaN16 sNaN19 -> NaN19 Invalid_operation 2226 addx6877 add -Inf +sNaN20 -> NaN20 Invalid_operation 2227 addx6878 add -1000 sNaN21 -> NaN21 Invalid_operation 2228 addx6879 add 1000 sNaN22 -> NaN22 Invalid_operation 2229 addx6880 add Inf sNaN23 -> NaN23 Invalid_operation 2230 addx6881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation 2231 addx6882 add -NaN26 NaN28 -> -NaN26 2232 addx6883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation 2233 addx6884 add 1000 -NaN30 -> -NaN30 2234 addx6885 add 1000 -sNaN31 -> -NaN31 Invalid_operation 2235 2236 -- now the case where we can get underflow but the result is normal 2237 -- [note this can't happen if the operands are also bounded, as we 2238 -- cannot represent 1E-399, for example] 2239 2240 addx6571 add 1E-383 0 -> 1E-383 2241 addx6572 add 1E-384 0 -> 1E-384 Subnormal 2242 addx6573 add 1E-383 1E-384 -> 1.1E-383 2243 addx6574 subtract 1E-383 1E-384 -> 9E-384 Subnormal 2244 2245 -- Here we explore the boundary of rounding a subnormal to Nmin 2246 addx6575 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal 2247 addx6576 subtract 1E-383 1E-398 -> 9.99999999999999E-384 Subnormal 2248 addx6577 subtract 1E-383 1E-399 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded 2249 addx6578 subtract 1E-383 1E-400 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded 2250 addx6579 subtract 1E-383 1E-401 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded 2251 addx6580 subtract 1E-383 1E-402 -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded 2252 2253 -- check overflow edge case 2254 -- 1234567890123456 2255 addx6972 apply 9.999999999999999E+384 -> 9.999999999999999E+384 2256 addx6973 add 9.999999999999999E+384 1 -> 9.999999999999999E+384 Inexact Rounded 2257 addx6974 add 9999999999999999E+369 1 -> 9.999999999999999E+384 Inexact Rounded 2258 addx6975 add 9999999999999999E+369 1E+369 -> Infinity Overflow Inexact Rounded 2259 addx6976 add 9999999999999999E+369 9E+368 -> Infinity Overflow Inexact Rounded 2260 addx6977 add 9999999999999999E+369 8E+368 -> Infinity Overflow Inexact Rounded 2261 addx6978 add 9999999999999999E+369 7E+368 -> Infinity Overflow Inexact Rounded 2262 addx6979 add 9999999999999999E+369 6E+368 -> Infinity Overflow Inexact Rounded 2263 addx6980 add 9999999999999999E+369 5E+368 -> Infinity Overflow Inexact Rounded 2264 addx6981 add 9999999999999999E+369 4E+368 -> 9.999999999999999E+384 Inexact Rounded 2265 addx6982 add 9999999999999999E+369 3E+368 -> 9.999999999999999E+384 Inexact Rounded 2266 addx6983 add 9999999999999999E+369 2E+368 -> 9.999999999999999E+384 Inexact Rounded 2267 addx6984 add 9999999999999999E+369 1E+368 -> 9.999999999999999E+384 Inexact Rounded 2268 2269 addx6985 apply -9.999999999999999E+384 -> -9.999999999999999E+384 2270 addx6986 add -9.999999999999999E+384 -1 -> -9.999999999999999E+384 Inexact Rounded 2271 addx6987 add -9999999999999999E+369 -1 -> -9.999999999999999E+384 Inexact Rounded 2272 addx6988 add -9999999999999999E+369 -1E+369 -> -Infinity Overflow Inexact Rounded 2273 addx6989 add -9999999999999999E+369 -9E+368 -> -Infinity Overflow Inexact Rounded 2274 addx6990 add -9999999999999999E+369 -8E+368 -> -Infinity Overflow Inexact Rounded 2275 addx6991 add -9999999999999999E+369 -7E+368 -> -Infinity Overflow Inexact Rounded 2276 addx6992 add -9999999999999999E+369 -6E+368 -> -Infinity Overflow Inexact Rounded 2277 addx6993 add -9999999999999999E+369 -5E+368 -> -Infinity Overflow Inexact Rounded 2278 addx6994 add -9999999999999999E+369 -4E+368 -> -9.999999999999999E+384 Inexact Rounded 2279 addx6995 add -9999999999999999E+369 -3E+368 -> -9.999999999999999E+384 Inexact Rounded 2280 addx6996 add -9999999999999999E+369 -2E+368 -> -9.999999999999999E+384 Inexact Rounded 2281 addx6997 add -9999999999999999E+369 -1E+368 -> -9.999999999999999E+384 Inexact Rounded 2282 2283 -- And for round down full and subnormal results 2284 rounding: down 2285 addx61100 add 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact 2286 addx61101 add 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact 2287 addx61103 add +1 -1e-383 -> 0.9999999999999999 Rounded Inexact 2288 addx61104 add 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact 2289 addx61105 add 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact 2290 addx61106 add 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact 2291 addx61107 add 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact 2292 addx61108 add 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact 2293 addx61109 add 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact 2294 2295 rounding: ceiling 2296 addx61110 add -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact 2297 addx61111 add -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact 2298 addx61113 add -1 +1e-383 -> -0.9999999999999999 Rounded Inexact 2299 addx61114 add -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact 2300 addx61115 add -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact 2301 addx61116 add -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact 2302 addx61117 add -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact 2303 addx61118 add -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact 2304 addx61119 add -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact 2305 2306 -- tests based on Gunnar Degnbol's edge case 2307 rounding: half_even 2308 2309 addx61300 add 1E16 -0.5 -> 1.000000000000000E+16 Inexact Rounded 2310 addx61310 add 1E16 -0.51 -> 9999999999999999 Inexact Rounded 2311 addx61311 add 1E16 -0.501 -> 9999999999999999 Inexact Rounded 2312 addx61312 add 1E16 -0.5001 -> 9999999999999999 Inexact Rounded 2313 addx61313 add 1E16 -0.50001 -> 9999999999999999 Inexact Rounded 2314 addx61314 add 1E16 -0.500001 -> 9999999999999999 Inexact Rounded 2315 addx61315 add 1E16 -0.5000001 -> 9999999999999999 Inexact Rounded 2316 addx61316 add 1E16 -0.50000001 -> 9999999999999999 Inexact Rounded 2317 addx61317 add 1E16 -0.500000001 -> 9999999999999999 Inexact Rounded 2318 addx61318 add 1E16 -0.5000000001 -> 9999999999999999 Inexact Rounded 2319 addx61319 add 1E16 -0.50000000001 -> 9999999999999999 Inexact Rounded 2320 addx61320 add 1E16 -0.500000000001 -> 9999999999999999 Inexact Rounded 2321 addx61321 add 1E16 -0.5000000000001 -> 9999999999999999 Inexact Rounded 2322 addx61322 add 1E16 -0.50000000000001 -> 9999999999999999 Inexact Rounded 2323 addx61323 add 1E16 -0.500000000000001 -> 9999999999999999 Inexact Rounded 2324 addx61324 add 1E16 -0.5000000000000001 -> 9999999999999999 Inexact Rounded 2325 addx61325 add 1E16 -0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded 2326 addx61326 add 1E16 -0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded 2327 addx61327 add 1E16 -0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded 2328 addx61328 add 1E16 -0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded 2329 addx61329 add 1E16 -0.500000000000 -> 1.000000000000000E+16 Inexact Rounded 2330 addx61330 add 1E16 -0.50000000000 -> 1.000000000000000E+16 Inexact Rounded 2331 addx61331 add 1E16 -0.5000000000 -> 1.000000000000000E+16 Inexact Rounded 2332 addx61332 add 1E16 -0.500000000 -> 1.000000000000000E+16 Inexact Rounded 2333 addx61333 add 1E16 -0.50000000 -> 1.000000000000000E+16 Inexact Rounded 2334 addx61334 add 1E16 -0.5000000 -> 1.000000000000000E+16 Inexact Rounded 2335 addx61335 add 1E16 -0.500000 -> 1.000000000000000E+16 Inexact Rounded 2336 addx61336 add 1E16 -0.50000 -> 1.000000000000000E+16 Inexact Rounded 2337 addx61337 add 1E16 -0.5000 -> 1.000000000000000E+16 Inexact Rounded 2338 addx61338 add 1E16 -0.500 -> 1.000000000000000E+16 Inexact Rounded 2339 addx61339 add 1E16 -0.50 -> 1.000000000000000E+16 Inexact Rounded 2340 2341 addx61340 add 1E16 -5000000.000010001 -> 9999999995000000 Inexact Rounded 2342 addx61341 add 1E16 -5000000.000000001 -> 9999999995000000 Inexact Rounded 2343 2344 addx61349 add 9999999999999999 0.4 -> 9999999999999999 Inexact Rounded 2345 addx61350 add 9999999999999999 0.49 -> 9999999999999999 Inexact Rounded 2346 addx61351 add 9999999999999999 0.499 -> 9999999999999999 Inexact Rounded 2347 addx61352 add 9999999999999999 0.4999 -> 9999999999999999 Inexact Rounded 2348 addx61353 add 9999999999999999 0.49999 -> 9999999999999999 Inexact Rounded 2349 addx61354 add 9999999999999999 0.499999 -> 9999999999999999 Inexact Rounded 2350 addx61355 add 9999999999999999 0.4999999 -> 9999999999999999 Inexact Rounded 2351 addx61356 add 9999999999999999 0.49999999 -> 9999999999999999 Inexact Rounded 2352 addx61357 add 9999999999999999 0.499999999 -> 9999999999999999 Inexact Rounded 2353 addx61358 add 9999999999999999 0.4999999999 -> 9999999999999999 Inexact Rounded 2354 addx61359 add 9999999999999999 0.49999999999 -> 9999999999999999 Inexact Rounded 2355 addx61360 add 9999999999999999 0.499999999999 -> 9999999999999999 Inexact Rounded 2356 addx61361 add 9999999999999999 0.4999999999999 -> 9999999999999999 Inexact Rounded 2357 addx61362 add 9999999999999999 0.49999999999999 -> 9999999999999999 Inexact Rounded 2358 addx61363 add 9999999999999999 0.499999999999999 -> 9999999999999999 Inexact Rounded 2359 addx61364 add 9999999999999999 0.4999999999999999 -> 9999999999999999 Inexact Rounded 2360 addx61365 add 9999999999999999 0.5000000000000000 -> 1.000000000000000E+16 Inexact Rounded 2361 addx61367 add 9999999999999999 0.500000000000000 -> 1.000000000000000E+16 Inexact Rounded 2362 addx61368 add 9999999999999999 0.50000000000000 -> 1.000000000000000E+16 Inexact Rounded 2363 addx61369 add 9999999999999999 0.5000000000000 -> 1.000000000000000E+16 Inexact Rounded 2364 addx61370 add 9999999999999999 0.500000000000 -> 1.000000000000000E+16 Inexact Rounded 2365 addx61371 add 9999999999999999 0.50000000000 -> 1.000000000000000E+16 Inexact Rounded 2366 addx61372 add 9999999999999999 0.5000000000 -> 1.000000000000000E+16 Inexact Rounded 2367 addx61373 add 9999999999999999 0.500000000 -> 1.000000000000000E+16 Inexact Rounded 2368 addx61374 add 9999999999999999 0.50000000 -> 1.000000000000000E+16 Inexact Rounded 2369 addx61375 add 9999999999999999 0.5000000 -> 1.000000000000000E+16 Inexact Rounded 2370 addx61376 add 9999999999999999 0.500000 -> 1.000000000000000E+16 Inexact Rounded 2371 addx61377 add 9999999999999999 0.50000 -> 1.000000000000000E+16 Inexact Rounded 2372 addx61378 add 9999999999999999 0.5000 -> 1.000000000000000E+16 Inexact Rounded 2373 addx61379 add 9999999999999999 0.500 -> 1.000000000000000E+16 Inexact Rounded 2374 addx61380 add 9999999999999999 0.50 -> 1.000000000000000E+16 Inexact Rounded 2375 addx61381 add 9999999999999999 0.5 -> 1.000000000000000E+16 Inexact Rounded 2376 addx61382 add 9999999999999999 0.5000000000000001 -> 1.000000000000000E+16 Inexact Rounded 2377 addx61383 add 9999999999999999 0.500000000000001 -> 1.000000000000000E+16 Inexact Rounded 2378 addx61384 add 9999999999999999 0.50000000000001 -> 1.000000000000000E+16 Inexact Rounded 2379 addx61385 add 9999999999999999 0.5000000000001 -> 1.000000000000000E+16 Inexact Rounded 2380 addx61386 add 9999999999999999 0.500000000001 -> 1.000000000000000E+16 Inexact Rounded 2381 addx61387 add 9999999999999999 0.50000000001 -> 1.000000000000000E+16 Inexact Rounded 2382 addx61388 add 9999999999999999 0.5000000001 -> 1.000000000000000E+16 Inexact Rounded 2383 addx61389 add 9999999999999999 0.500000001 -> 1.000000000000000E+16 Inexact Rounded 2384 addx61390 add 9999999999999999 0.50000001 -> 1.000000000000000E+16 Inexact Rounded 2385 addx61391 add 9999999999999999 0.5000001 -> 1.000000000000000E+16 Inexact Rounded 2386 addx61392 add 9999999999999999 0.500001 -> 1.000000000000000E+16 Inexact Rounded 2387 addx61393 add 9999999999999999 0.50001 -> 1.000000000000000E+16 Inexact Rounded 2388 addx61394 add 9999999999999999 0.5001 -> 1.000000000000000E+16 Inexact Rounded 2389 addx61395 add 9999999999999999 0.501 -> 1.000000000000000E+16 Inexact Rounded 2390 addx61396 add 9999999999999999 0.51 -> 1.000000000000000E+16 Inexact Rounded 2391 2392 -- More GD edge cases, where difference between the unadjusted 2393 -- exponents is larger than the maximum precision and one side is 0 2394 addx61420 add 0 1.123456789012345 -> 1.123456789012345 2395 addx61421 add 0 1.123456789012345E-1 -> 0.1123456789012345 2396 addx61422 add 0 1.123456789012345E-2 -> 0.01123456789012345 2397 addx61423 add 0 1.123456789012345E-3 -> 0.001123456789012345 2398 addx61424 add 0 1.123456789012345E-4 -> 0.0001123456789012345 2399 addx61425 add 0 1.123456789012345E-5 -> 0.00001123456789012345 2400 addx61426 add 0 1.123456789012345E-6 -> 0.000001123456789012345 2401 addx61427 add 0 1.123456789012345E-7 -> 1.123456789012345E-7 2402 addx61428 add 0 1.123456789012345E-8 -> 1.123456789012345E-8 2403 addx61429 add 0 1.123456789012345E-9 -> 1.123456789012345E-9 2404 addx61430 add 0 1.123456789012345E-10 -> 1.123456789012345E-10 2405 addx61431 add 0 1.123456789012345E-11 -> 1.123456789012345E-11 2406 addx61432 add 0 1.123456789012345E-12 -> 1.123456789012345E-12 2407 addx61433 add 0 1.123456789012345E-13 -> 1.123456789012345E-13 2408 addx61434 add 0 1.123456789012345E-14 -> 1.123456789012345E-14 2409 addx61435 add 0 1.123456789012345E-15 -> 1.123456789012345E-15 2410 addx61436 add 0 1.123456789012345E-16 -> 1.123456789012345E-16 2411 addx61437 add 0 1.123456789012345E-17 -> 1.123456789012345E-17 2412 addx61438 add 0 1.123456789012345E-18 -> 1.123456789012345E-18 2413 addx61439 add 0 1.123456789012345E-19 -> 1.123456789012345E-19 2414 2415 -- same, reversed 0 2416 addx61440 add 1.123456789012345 0 -> 1.123456789012345 2417 addx61441 add 1.123456789012345E-1 0 -> 0.1123456789012345 2418 addx61442 add 1.123456789012345E-2 0 -> 0.01123456789012345 2419 addx61443 add 1.123456789012345E-3 0 -> 0.001123456789012345 2420 addx61444 add 1.123456789012345E-4 0 -> 0.0001123456789012345 2421 addx61445 add 1.123456789012345E-5 0 -> 0.00001123456789012345 2422 addx61446 add 1.123456789012345E-6 0 -> 0.000001123456789012345 2423 addx61447 add 1.123456789012345E-7 0 -> 1.123456789012345E-7 2424 addx61448 add 1.123456789012345E-8 0 -> 1.123456789012345E-8 2425 addx61449 add 1.123456789012345E-9 0 -> 1.123456789012345E-9 2426 addx61450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10 2427 addx61451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11 2428 addx61452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12 2429 addx61453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13 2430 addx61454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14 2431 addx61455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15 2432 addx61456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16 2433 addx61457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17 2434 addx61458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18 2435 addx61459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19 2436 2437 -- same, Es on the 0 2438 addx61460 add 1.123456789012345 0E-0 -> 1.123456789012345 2439 addx61461 add 1.123456789012345 0E-1 -> 1.123456789012345 2440 addx61462 add 1.123456789012345 0E-2 -> 1.123456789012345 2441 addx61463 add 1.123456789012345 0E-3 -> 1.123456789012345 2442 addx61464 add 1.123456789012345 0E-4 -> 1.123456789012345 2443 addx61465 add 1.123456789012345 0E-5 -> 1.123456789012345 2444 addx61466 add 1.123456789012345 0E-6 -> 1.123456789012345 2445 addx61467 add 1.123456789012345 0E-7 -> 1.123456789012345 2446 addx61468 add 1.123456789012345 0E-8 -> 1.123456789012345 2447 addx61469 add 1.123456789012345 0E-9 -> 1.123456789012345 2448 addx61470 add 1.123456789012345 0E-10 -> 1.123456789012345 2449 addx61471 add 1.123456789012345 0E-11 -> 1.123456789012345 2450 addx61472 add 1.123456789012345 0E-12 -> 1.123456789012345 2451 addx61473 add 1.123456789012345 0E-13 -> 1.123456789012345 2452 addx61474 add 1.123456789012345 0E-14 -> 1.123456789012345 2453 addx61475 add 1.123456789012345 0E-15 -> 1.123456789012345 2454 -- next four flag Rounded because the 0 extends the result 2455 addx61476 add 1.123456789012345 0E-16 -> 1.123456789012345 Rounded 2456 addx61477 add 1.123456789012345 0E-17 -> 1.123456789012345 Rounded 2457 addx61478 add 1.123456789012345 0E-18 -> 1.123456789012345 Rounded 2458 addx61479 add 1.123456789012345 0E-19 -> 1.123456789012345 Rounded 2459 2460 -- sum of two opposite-sign operands is exactly 0 and floor => -0 2461 rounding: half_up 2462 -- exact zeros from zeros 2463 addx61500 add 0 0E-19 -> 0E-19 2464 addx61501 add -0 0E-19 -> 0E-19 2465 addx61502 add 0 -0E-19 -> 0E-19 2466 addx61503 add -0 -0E-19 -> -0E-19 2467 addx61504 add 0E-400 0E-19 -> 0E-398 Clamped 2468 addx61505 add -0E-400 0E-19 -> 0E-398 Clamped 2469 addx61506 add 0E-400 -0E-19 -> 0E-398 Clamped 2470 addx61507 add -0E-400 -0E-19 -> -0E-398 Clamped 2471 -- inexact zeros 2472 addx61511 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2473 addx61512 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2474 addx61513 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2475 addx61514 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2476 -- some exact zeros from non-zeros 2477 addx61515 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2478 addx61516 add -1E-401 1E-401 -> 0E-398 Clamped 2479 addx61517 add 1E-401 -1E-401 -> 0E-398 Clamped 2480 addx61518 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2481 2482 rounding: half_down 2483 -- exact zeros from zeros 2484 addx61520 add 0 0E-19 -> 0E-19 2485 addx61521 add -0 0E-19 -> 0E-19 2486 addx61522 add 0 -0E-19 -> 0E-19 2487 addx61523 add -0 -0E-19 -> -0E-19 2488 addx61524 add 0E-400 0E-19 -> 0E-398 Clamped 2489 addx61525 add -0E-400 0E-19 -> 0E-398 Clamped 2490 addx61526 add 0E-400 -0E-19 -> 0E-398 Clamped 2491 addx61527 add -0E-400 -0E-19 -> -0E-398 Clamped 2492 -- inexact zeros 2493 addx61531 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2494 addx61532 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2495 addx61533 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2496 addx61534 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2497 -- some exact zeros from non-zeros 2498 addx61535 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2499 addx61536 add -1E-401 1E-401 -> 0E-398 Clamped 2500 addx61537 add 1E-401 -1E-401 -> 0E-398 Clamped 2501 addx61538 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2502 2503 rounding: half_even 2504 -- exact zeros from zeros 2505 addx61540 add 0 0E-19 -> 0E-19 2506 addx61541 add -0 0E-19 -> 0E-19 2507 addx61542 add 0 -0E-19 -> 0E-19 2508 addx61543 add -0 -0E-19 -> -0E-19 2509 addx61544 add 0E-400 0E-19 -> 0E-398 Clamped 2510 addx61545 add -0E-400 0E-19 -> 0E-398 Clamped 2511 addx61546 add 0E-400 -0E-19 -> 0E-398 Clamped 2512 addx61547 add -0E-400 -0E-19 -> -0E-398 Clamped 2513 -- inexact zeros 2514 addx61551 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2515 addx61552 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2516 addx61553 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2517 addx61554 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2518 -- some exact zeros from non-zeros 2519 addx61555 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2520 addx61556 add -1E-401 1E-401 -> 0E-398 Clamped 2521 addx61557 add 1E-401 -1E-401 -> 0E-398 Clamped 2522 addx61558 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2523 2524 rounding: up 2525 -- exact zeros from zeros 2526 addx61560 add 0 0E-19 -> 0E-19 2527 addx61561 add -0 0E-19 -> 0E-19 2528 addx61562 add 0 -0E-19 -> 0E-19 2529 addx61563 add -0 -0E-19 -> -0E-19 2530 addx61564 add 0E-400 0E-19 -> 0E-398 Clamped 2531 addx61565 add -0E-400 0E-19 -> 0E-398 Clamped 2532 addx61566 add 0E-400 -0E-19 -> 0E-398 Clamped 2533 addx61567 add -0E-400 -0E-19 -> -0E-398 Clamped 2534 -- inexact zeros 2535 addx61571 add 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow 2536 addx61572 add -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow 2537 addx61573 add 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow 2538 addx61574 add -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow 2539 -- some exact zeros from non-zeros 2540 addx61575 add 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow 2541 addx61576 add -1E-401 1E-401 -> 0E-398 Clamped 2542 addx61577 add 1E-401 -1E-401 -> 0E-398 Clamped 2543 addx61578 add -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow 2544 2545 rounding: down 2546 -- exact zeros from zeros 2547 addx61580 add 0 0E-19 -> 0E-19 2548 addx61581 add -0 0E-19 -> 0E-19 2549 addx61582 add 0 -0E-19 -> 0E-19 2550 addx61583 add -0 -0E-19 -> -0E-19 2551 addx61584 add 0E-400 0E-19 -> 0E-398 Clamped 2552 addx61585 add -0E-400 0E-19 -> 0E-398 Clamped 2553 addx61586 add 0E-400 -0E-19 -> 0E-398 Clamped 2554 addx61587 add -0E-400 -0E-19 -> -0E-398 Clamped 2555 -- inexact zeros 2556 addx61591 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2557 addx61592 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2558 addx61593 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2559 addx61594 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2560 -- some exact zeros from non-zeros 2561 addx61595 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2562 addx61596 add -1E-401 1E-401 -> 0E-398 Clamped 2563 addx61597 add 1E-401 -1E-401 -> 0E-398 Clamped 2564 addx61598 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2565 2566 rounding: ceiling 2567 -- exact zeros from zeros 2568 addx61600 add 0 0E-19 -> 0E-19 2569 addx61601 add -0 0E-19 -> 0E-19 2570 addx61602 add 0 -0E-19 -> 0E-19 2571 addx61603 add -0 -0E-19 -> -0E-19 2572 addx61604 add 0E-400 0E-19 -> 0E-398 Clamped 2573 addx61605 add -0E-400 0E-19 -> 0E-398 Clamped 2574 addx61606 add 0E-400 -0E-19 -> 0E-398 Clamped 2575 addx61607 add -0E-400 -0E-19 -> -0E-398 Clamped 2576 -- inexact zeros 2577 addx61611 add 1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow 2578 addx61612 add -1E-401 1E-400 -> 1E-398 Subnormal Inexact Rounded Underflow 2579 addx61613 add 1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2580 addx61614 add -1E-401 -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2581 -- some exact zeros from non-zeros 2582 addx61615 add 1E-401 1E-401 -> 1E-398 Subnormal Inexact Rounded Underflow 2583 addx61616 add -1E-401 1E-401 -> 0E-398 Clamped 2584 addx61617 add 1E-401 -1E-401 -> 0E-398 Clamped 2585 addx61618 add -1E-401 -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped 2586 2587 -- and the extra-special ugly case; unusual minuses marked by -- * 2588 rounding: floor 2589 -- exact zeros from zeros 2590 addx61620 add 0 0E-19 -> 0E-19 2591 addx61621 add -0 0E-19 -> -0E-19 -- * 2592 addx61622 add 0 -0E-19 -> -0E-19 -- * 2593 addx61623 add -0 -0E-19 -> -0E-19 2594 addx61624 add 0E-400 0E-19 -> 0E-398 Clamped 2595 addx61625 add -0E-400 0E-19 -> -0E-398 Clamped -- * 2596 addx61626 add 0E-400 -0E-19 -> -0E-398 Clamped -- * 2597 addx61627 add -0E-400 -0E-19 -> -0E-398 Clamped 2598 -- inexact zeros 2599 addx61631 add 1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2600 addx61632 add -1E-401 1E-400 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2601 addx61633 add 1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow 2602 addx61634 add -1E-401 -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow 2603 -- some exact zeros from non-zeros 2604 addx61635 add 1E-401 1E-401 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped 2605 addx61636 add -1E-401 1E-401 -> -0E-398 Clamped -- * 2606 addx61637 add 1E-401 -1E-401 -> -0E-398 Clamped -- * 2607 addx61638 add -1E-401 -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow 2608 2609 -- Examples from SQL proposal (Krishna Kulkarni) 2610 addx61701 add 130E-2 120E-2 -> 2.50 2611 addx61702 add 130E-2 12E-1 -> 2.50 2612 addx61703 add 130E-2 1E0 -> 2.30 2613 addx61704 add 1E2 1E4 -> 1.01E+4 2614 addx61705 subtract 130E-2 120E-2 -> 0.10 2615 addx61706 subtract 130E-2 12E-1 -> 0.10 2616 addx61707 subtract 130E-2 1E0 -> 0.30 2617 addx61708 subtract 1E2 1E4 -> -9.9E+3 2618 2619 -- Gappy coefficients; check residue handling even with full coefficient gap 2620 rounding: half_even 2621 2622 addx62001 add 1234567890123456 1 -> 1234567890123457 2623 addx62002 add 1234567890123456 0.6 -> 1234567890123457 Inexact Rounded 2624 addx62003 add 1234567890123456 0.06 -> 1234567890123456 Inexact Rounded 2625 addx62004 add 1234567890123456 6E-3 -> 1234567890123456 Inexact Rounded 2626 addx62005 add 1234567890123456 6E-4 -> 1234567890123456 Inexact Rounded 2627 addx62006 add 1234567890123456 6E-5 -> 1234567890123456 Inexact Rounded 2628 addx62007 add 1234567890123456 6E-6 -> 1234567890123456 Inexact Rounded 2629 addx62008 add 1234567890123456 6E-7 -> 1234567890123456 Inexact Rounded 2630 addx62009 add 1234567890123456 6E-8 -> 1234567890123456 Inexact Rounded 2631 addx62010 add 1234567890123456 6E-9 -> 1234567890123456 Inexact Rounded 2632 addx62011 add 1234567890123456 6E-10 -> 1234567890123456 Inexact Rounded 2633 addx62012 add 1234567890123456 6E-11 -> 1234567890123456 Inexact Rounded 2634 addx62013 add 1234567890123456 6E-12 -> 1234567890123456 Inexact Rounded 2635 addx62014 add 1234567890123456 6E-13 -> 1234567890123456 Inexact Rounded 2636 addx62015 add 1234567890123456 6E-14 -> 1234567890123456 Inexact Rounded 2637 addx62016 add 1234567890123456 6E-15 -> 1234567890123456 Inexact Rounded 2638 addx62017 add 1234567890123456 6E-16 -> 1234567890123456 Inexact Rounded 2639 addx62018 add 1234567890123456 6E-17 -> 1234567890123456 Inexact Rounded 2640 addx62019 add 1234567890123456 6E-18 -> 1234567890123456 Inexact Rounded 2641 addx62020 add 1234567890123456 6E-19 -> 1234567890123456 Inexact Rounded 2642 addx62021 add 1234567890123456 6E-20 -> 1234567890123456 Inexact Rounded 2643 2644 -- widening second argument at gap 2645 addx62030 add 12345678 1 -> 12345679 2646 addx62031 add 12345678 0.1 -> 12345678.1 2647 addx62032 add 12345678 0.12 -> 12345678.12 2648 addx62033 add 12345678 0.123 -> 12345678.123 2649 addx62034 add 12345678 0.1234 -> 12345678.1234 2650 addx62035 add 12345678 0.12345 -> 12345678.12345 2651 addx62036 add 12345678 0.123456 -> 12345678.123456 2652 addx62037 add 12345678 0.1234567 -> 12345678.1234567 2653 addx62038 add 12345678 0.12345678 -> 12345678.12345678 2654 addx62039 add 12345678 0.123456789 -> 12345678.12345679 Inexact Rounded 2655 addx62040 add 12345678 0.123456785 -> 12345678.12345678 Inexact Rounded 2656 addx62041 add 12345678 0.1234567850 -> 12345678.12345678 Inexact Rounded 2657 addx62042 add 12345678 0.1234567851 -> 12345678.12345679 Inexact Rounded 2658 addx62043 add 12345678 0.12345678501 -> 12345678.12345679 Inexact Rounded 2659 addx62044 add 12345678 0.123456785001 -> 12345678.12345679 Inexact Rounded 2660 addx62045 add 12345678 0.1234567850001 -> 12345678.12345679 Inexact Rounded 2661 addx62046 add 12345678 0.12345678500001 -> 12345678.12345679 Inexact Rounded 2662 addx62047 add 12345678 0.123456785000001 -> 12345678.12345679 Inexact Rounded 2663 addx62048 add 12345678 0.1234567850000001 -> 12345678.12345679 Inexact Rounded 2664 addx62049 add 12345678 0.1234567850000000 -> 12345678.12345678 Inexact Rounded 2665 -- 90123456 2666 rounding: half_even 2667 addx62050 add 12345678 0.0234567750000000 -> 12345678.02345678 Inexact Rounded 2668 addx62051 add 12345678 0.0034567750000000 -> 12345678.00345678 Inexact Rounded 2669 addx62052 add 12345678 0.0004567750000000 -> 12345678.00045678 Inexact Rounded 2670 addx62053 add 12345678 0.0000567750000000 -> 12345678.00005678 Inexact Rounded 2671 addx62054 add 12345678 0.0000067750000000 -> 12345678.00000678 Inexact Rounded 2672 addx62055 add 12345678 0.0000007750000000 -> 12345678.00000078 Inexact Rounded 2673 addx62056 add 12345678 0.0000000750000000 -> 12345678.00000008 Inexact Rounded 2674 addx62057 add 12345678 0.0000000050000000 -> 12345678.00000000 Inexact Rounded 2675 addx62060 add 12345678 0.0234567750000001 -> 12345678.02345678 Inexact Rounded 2676 addx62061 add 12345678 0.0034567750000001 -> 12345678.00345678 Inexact Rounded 2677 addx62062 add 12345678 0.0004567750000001 -> 12345678.00045678 Inexact Rounded 2678 addx62063 add 12345678 0.0000567750000001 -> 12345678.00005678 Inexact Rounded 2679 addx62064 add 12345678 0.0000067750000001 -> 12345678.00000678 Inexact Rounded 2680 addx62065 add 12345678 0.0000007750000001 -> 12345678.00000078 Inexact Rounded 2681 addx62066 add 12345678 0.0000000750000001 -> 12345678.00000008 Inexact Rounded 2682 addx62067 add 12345678 0.0000000050000001 -> 12345678.00000001 Inexact Rounded 2683 -- far-out residues (full coefficient gap is 16+15 digits) 2684 rounding: up 2685 addx62070 add 12345678 1E-8 -> 12345678.00000001 2686 addx62071 add 12345678 1E-9 -> 12345678.00000001 Inexact Rounded 2687 addx62072 add 12345678 1E-10 -> 12345678.00000001 Inexact Rounded 2688 addx62073 add 12345678 1E-11 -> 12345678.00000001 Inexact Rounded 2689 addx62074 add 12345678 1E-12 -> 12345678.00000001 Inexact Rounded 2690 addx62075 add 12345678 1E-13 -> 12345678.00000001 Inexact Rounded 2691 addx62076 add 12345678 1E-14 -> 12345678.00000001 Inexact Rounded 2692 addx62077 add 12345678 1E-15 -> 12345678.00000001 Inexact Rounded 2693 addx62078 add 12345678 1E-16 -> 12345678.00000001 Inexact Rounded 2694 addx62079 add 12345678 1E-17 -> 12345678.00000001 Inexact Rounded 2695 addx62080 add 12345678 1E-18 -> 12345678.00000001 Inexact Rounded 2696 addx62081 add 12345678 1E-19 -> 12345678.00000001 Inexact Rounded 2697 addx62082 add 12345678 1E-20 -> 12345678.00000001 Inexact Rounded 2698 addx62083 add 12345678 1E-25 -> 12345678.00000001 Inexact Rounded 2699 addx62084 add 12345678 1E-30 -> 12345678.00000001 Inexact Rounded 2700 addx62085 add 12345678 1E-31 -> 12345678.00000001 Inexact Rounded 2701 addx62086 add 12345678 1E-32 -> 12345678.00000001 Inexact Rounded 2702 addx62087 add 12345678 1E-33 -> 12345678.00000001 Inexact Rounded 2703 addx62088 add 12345678 1E-34 -> 12345678.00000001 Inexact Rounded 2704 addx62089 add 12345678 1E-35 -> 12345678.00000001 Inexact Rounded 2705 2706 -- payload decapitate 2707 precision: 5 2708 addx62100 add 11 sNaN123456789 -> NaN56789 Invalid_operation 2709 addx62101 add -11 -sNaN123456789 -> -NaN56789 Invalid_operation 2710 addx62102 add 11 NaN123456789 -> NaN56789 2711 addx62103 add -11 -NaN123456789 -> -NaN56789 2712 2713 -- Null tests 2714 addx9990 add 10 # -> NaN Invalid_operation 2715 addx9991 add # 10 -> NaN Invalid_operation