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