multiply.decTest 37.4 KB
Newer Older
1 2
------------------------------------------------------------------------
-- multiply.decTest -- decimal multiplication                         --
3
-- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
20
version: 2.59
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

extended:    1
precision:   9
rounding:    half_up
maxExponent: 384
minexponent: -383

-- sanity checks (as base, above)
mulx000 multiply 2      2 -> 4
mulx001 multiply 2      3 -> 6
mulx002 multiply 5      1 -> 5
mulx003 multiply 5      2 -> 10
mulx004 multiply 1.20   2 -> 2.40
mulx005 multiply 1.20   0 -> 0.00
mulx006 multiply 1.20  -2 -> -2.40
mulx007 multiply -1.20  2 -> -2.40
mulx008 multiply -1.20  0 -> -0.00
mulx009 multiply -1.20 -2 -> 2.40
mulx010 multiply 5.09 7.1 -> 36.139
mulx011 multiply 2.5    4 -> 10.0
mulx012 multiply 2.50   4 -> 10.00
mulx013 multiply 1.23456789 1.00000000 -> 1.23456789 Rounded
mulx014 multiply 9.999999999 9.999999999 -> 100.000000 Inexact Rounded
mulx015 multiply 2.50   4 -> 10.00
precision: 6
mulx016 multiply 2.50   4 -> 10.00
47 48 49 50
mulx017 multiply  9.999999999  9.999999999 ->  100.000 Inexact Rounded
mulx018 multiply  9.999999999 -9.999999999 -> -100.000 Inexact Rounded
mulx019 multiply -9.999999999  9.999999999 -> -100.000 Inexact Rounded
mulx020 multiply -9.999999999 -9.999999999 ->  100.000 Inexact Rounded
51 52 53

-- 1999.12.21: next one is a edge case if intermediate longs are used
precision: 15
54
mulx059 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded
55 56 57 58 59 60
precision: 30
mulx160 multiply 999999999999 9765625 -> 9765624999990234375
precision: 9
-----

-- zeros, etc.
61 62 63 64 65 66 67 68
mulx021 multiply  0      0     ->  0
mulx022 multiply  0     -0     -> -0
mulx023 multiply -0      0     -> -0
mulx024 multiply -0     -0     ->  0
mulx025 multiply -0.0   -0.0   ->  0.00
mulx026 multiply -0.0   -0.0   ->  0.00
mulx027 multiply -0.0   -0.0   ->  0.00
mulx028 multiply -0.0   -0.0   ->  0.00
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
mulx030 multiply  5.00   1E-3  ->  0.00500
mulx031 multiply  00.00  0.000 ->  0.00000
mulx032 multiply  00.00  0E-3  ->  0.00000     -- rhs is 0
mulx033 multiply  0E-3   00.00 ->  0.00000     -- lhs is 0
mulx034 multiply -5.00   1E-3  -> -0.00500
mulx035 multiply -00.00  0.000 -> -0.00000
mulx036 multiply -00.00  0E-3  -> -0.00000     -- rhs is 0
mulx037 multiply -0E-3   00.00 -> -0.00000     -- lhs is 0
mulx038 multiply  5.00  -1E-3  -> -0.00500
mulx039 multiply  00.00 -0.000 -> -0.00000
mulx040 multiply  00.00 -0E-3  -> -0.00000     -- rhs is 0
mulx041 multiply  0E-3  -00.00 -> -0.00000     -- lhs is 0
mulx042 multiply -5.00  -1E-3  ->  0.00500
mulx043 multiply -00.00 -0.000 ->  0.00000
mulx044 multiply -00.00 -0E-3  ->  0.00000     -- rhs is 0
mulx045 multiply -0E-3  -00.00 ->  0.00000     -- lhs is 0

-- examples from decarith
mulx050 multiply 1.20 3        -> 3.60
mulx051 multiply 7    3        -> 21
mulx052 multiply 0.9  0.8      -> 0.72
mulx053 multiply 0.9  -0       -> -0.0
mulx054 multiply 654321 654321 -> 4.28135971E+11  Inexact Rounded

mulx060 multiply 123.45 1e7  ->  1.2345E+9
mulx061 multiply 123.45 1e8  ->  1.2345E+10
mulx062 multiply 123.45 1e+9 ->  1.2345E+11
mulx063 multiply 123.45 1e10 ->  1.2345E+12
mulx064 multiply 123.45 1e11 ->  1.2345E+13
mulx065 multiply 123.45 1e12 ->  1.2345E+14
mulx066 multiply 123.45 1e13 ->  1.2345E+15


-- test some intermediate lengths
precision: 9
104 105 106 107 108
mulx080 multiply 0.1 123456789          -> 12345678.9
mulx081 multiply 0.1 1234567891         -> 123456789 Inexact Rounded
mulx082 multiply 0.1 12345678912        -> 1.23456789E+9 Inexact Rounded
mulx083 multiply 0.1 12345678912345     -> 1.23456789E+12 Inexact Rounded
mulx084 multiply 0.1 123456789          -> 12345678.9
109
precision: 8
110 111
mulx085 multiply 0.1 12345678912        -> 1.2345679E+9 Inexact Rounded
mulx086 multiply 0.1 12345678912345     -> 1.2345679E+12 Inexact Rounded
112
precision: 7
113 114
mulx087 multiply 0.1 12345678912        -> 1.234568E+9 Inexact Rounded
mulx088 multiply 0.1 12345678912345     -> 1.234568E+12 Inexact Rounded
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289

precision: 9
mulx090 multiply 123456789          0.1 -> 12345678.9
mulx091 multiply 1234567891         0.1 -> 123456789 Inexact Rounded
mulx092 multiply 12345678912        0.1 -> 1.23456789E+9 Inexact Rounded
mulx093 multiply 12345678912345     0.1 -> 1.23456789E+12 Inexact Rounded
mulx094 multiply 123456789          0.1 -> 12345678.9
precision: 8
mulx095 multiply 12345678912        0.1 -> 1.2345679E+9 Inexact Rounded
mulx096 multiply 12345678912345     0.1 -> 1.2345679E+12 Inexact Rounded
precision: 7
mulx097 multiply 12345678912        0.1 -> 1.234568E+9 Inexact Rounded
mulx098 multiply 12345678912345     0.1 -> 1.234568E+12 Inexact Rounded

-- test some more edge cases and carries
maxexponent: 9999
minexponent: -9999
precision: 33
mulx101 multiply 9 9   -> 81
mulx102 multiply 9 90   -> 810
mulx103 multiply 9 900   -> 8100
mulx104 multiply 9 9000   -> 81000
mulx105 multiply 9 90000   -> 810000
mulx106 multiply 9 900000   -> 8100000
mulx107 multiply 9 9000000   -> 81000000
mulx108 multiply 9 90000000   -> 810000000
mulx109 multiply 9 900000000   -> 8100000000
mulx110 multiply 9 9000000000   -> 81000000000
mulx111 multiply 9 90000000000   -> 810000000000
mulx112 multiply 9 900000000000   -> 8100000000000
mulx113 multiply 9 9000000000000   -> 81000000000000
mulx114 multiply 9 90000000000000   -> 810000000000000
mulx115 multiply 9 900000000000000   -> 8100000000000000
mulx116 multiply 9 9000000000000000   -> 81000000000000000
mulx117 multiply 9 90000000000000000   -> 810000000000000000
mulx118 multiply 9 900000000000000000   -> 8100000000000000000
mulx119 multiply 9 9000000000000000000   -> 81000000000000000000
mulx120 multiply 9 90000000000000000000   -> 810000000000000000000
mulx121 multiply 9 900000000000000000000   -> 8100000000000000000000
mulx122 multiply 9 9000000000000000000000   -> 81000000000000000000000
mulx123 multiply 9 90000000000000000000000   -> 810000000000000000000000
-- test some more edge cases without carries
mulx131 multiply 3 3   -> 9
mulx132 multiply 3 30   -> 90
mulx133 multiply 3 300   -> 900
mulx134 multiply 3 3000   -> 9000
mulx135 multiply 3 30000   -> 90000
mulx136 multiply 3 300000   -> 900000
mulx137 multiply 3 3000000   -> 9000000
mulx138 multiply 3 30000000   -> 90000000
mulx139 multiply 3 300000000   -> 900000000
mulx140 multiply 3 3000000000   -> 9000000000
mulx141 multiply 3 30000000000   -> 90000000000
mulx142 multiply 3 300000000000   -> 900000000000
mulx143 multiply 3 3000000000000   -> 9000000000000
mulx144 multiply 3 30000000000000   -> 90000000000000
mulx145 multiply 3 300000000000000   -> 900000000000000
mulx146 multiply 3 3000000000000000   -> 9000000000000000
mulx147 multiply 3 30000000000000000   -> 90000000000000000
mulx148 multiply 3 300000000000000000   -> 900000000000000000
mulx149 multiply 3 3000000000000000000   -> 9000000000000000000
mulx150 multiply 3 30000000000000000000   -> 90000000000000000000
mulx151 multiply 3 300000000000000000000   -> 900000000000000000000
mulx152 multiply 3 3000000000000000000000   -> 9000000000000000000000
mulx153 multiply 3 30000000000000000000000   -> 90000000000000000000000

maxexponent: 999999999
minexponent: -999999999
precision: 9
-- test some cases that are close to exponent overflow/underflow
mulx170 multiply 1 9e999999999    -> 9E+999999999
mulx171 multiply 1 9.9e999999999  -> 9.9E+999999999
mulx172 multiply 1 9.99e999999999 -> 9.99E+999999999
mulx173 multiply 9e999999999    1 -> 9E+999999999
mulx174 multiply 9.9e999999999  1 -> 9.9E+999999999
mulx176 multiply 9.99e999999999 1 -> 9.99E+999999999
mulx177 multiply 1 9.99999999e999999999 -> 9.99999999E+999999999
mulx178 multiply 9.99999999e999999999 1 -> 9.99999999E+999999999

mulx180 multiply 0.1 9e-999999998   -> 9E-999999999
mulx181 multiply 0.1 99e-999999998  -> 9.9E-999999998
mulx182 multiply 0.1 999e-999999998 -> 9.99E-999999997

mulx183 multiply 0.1 9e-999999998     -> 9E-999999999
mulx184 multiply 0.1 99e-999999998    -> 9.9E-999999998
mulx185 multiply 0.1 999e-999999998   -> 9.99E-999999997
mulx186 multiply 0.1 999e-999999997   -> 9.99E-999999996
mulx187 multiply 0.1 9999e-999999997  -> 9.999E-999999995
mulx188 multiply 0.1 99999e-999999997 -> 9.9999E-999999994

mulx190 multiply 1 9e-999999998   -> 9E-999999998
mulx191 multiply 1 99e-999999998  -> 9.9E-999999997
mulx192 multiply 1 999e-999999998 -> 9.99E-999999996
mulx193 multiply 9e-999999998   1 -> 9E-999999998
mulx194 multiply 99e-999999998  1 -> 9.9E-999999997
mulx195 multiply 999e-999999998 1 -> 9.99E-999999996

mulx196 multiply 1e-599999999 1e-400000000 -> 1E-999999999
mulx197 multiply 1e-600000000 1e-399999999 -> 1E-999999999
mulx198 multiply 1.2e-599999999 1.2e-400000000 -> 1.44E-999999999
mulx199 multiply 1.2e-600000000 1.2e-399999999 -> 1.44E-999999999

mulx201 multiply 1e599999999 1e400000000 -> 1E+999999999
mulx202 multiply 1e600000000 1e399999999 -> 1E+999999999
mulx203 multiply 1.2e599999999 1.2e400000000 -> 1.44E+999999999
mulx204 multiply 1.2e600000000 1.2e399999999 -> 1.44E+999999999

-- long operand triangle
precision: 33
mulx246 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511992830 Inexact Rounded
precision: 32
mulx247 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199283  Inexact Rounded
precision: 31
mulx248 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928   Inexact Rounded
precision: 30
mulx249 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511993    Inexact Rounded
precision: 29
mulx250 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199     Inexact Rounded
precision: 28
mulx251 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165120      Inexact Rounded
precision: 27
mulx252 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916512       Inexact Rounded
precision: 26
mulx253 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651        Inexact Rounded
precision: 25
mulx254 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165         Inexact Rounded
precision: 24
mulx255 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671917          Inexact Rounded
precision: 23
mulx256 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967192           Inexact Rounded
precision: 22
mulx257 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719            Inexact Rounded
precision: 21
mulx258 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369672             Inexact Rounded
precision: 20
mulx259 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967              Inexact Rounded
precision: 19
mulx260 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933697               Inexact Rounded
precision: 18
mulx261 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193370                Inexact Rounded
precision: 17
mulx262 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119337                 Inexact Rounded
precision: 16
mulx263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011934                  Inexact Rounded
precision: 15
mulx264 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193                   Inexact Rounded
precision: 14
mulx265 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119                    Inexact Rounded
precision: 13
mulx266 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908012                     Inexact Rounded
precision: 12
mulx267 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801                      Inexact Rounded
precision: 11
mulx268 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080                       Inexact Rounded
precision: 10
mulx269 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908                        Inexact Rounded
precision:  9
mulx270 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.291                         Inexact Rounded
precision:  8
mulx271 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29                          Inexact Rounded
precision:  7
mulx272 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.3                           Inexact Rounded
precision:  6
mulx273 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433                            Inexact Rounded
precision:  5
mulx274 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.4543E+5                         Inexact Rounded
precision:  4
mulx275 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.454E+5                         Inexact Rounded
precision:  3
mulx276 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.45E+5                         Inexact Rounded
precision:  2
mulx277 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.5E+5                         Inexact Rounded
precision:  1
mulx278 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1E+5                          Inexact Rounded

290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324
-- test some edge cases with exact rounding
maxexponent: 9999
minexponent: -9999
precision: 9
mulx301 multiply 9 9   -> 81
mulx302 multiply 9 90   -> 810
mulx303 multiply 9 900   -> 8100
mulx304 multiply 9 9000   -> 81000
mulx305 multiply 9 90000   -> 810000
mulx306 multiply 9 900000   -> 8100000
mulx307 multiply 9 9000000   -> 81000000
mulx308 multiply 9 90000000   -> 810000000
mulx309 multiply 9 900000000   -> 8.10000000E+9   Rounded
mulx310 multiply 9 9000000000   -> 8.10000000E+10  Rounded
mulx311 multiply 9 90000000000   -> 8.10000000E+11  Rounded
mulx312 multiply 9 900000000000   -> 8.10000000E+12  Rounded
mulx313 multiply 9 9000000000000   -> 8.10000000E+13  Rounded
mulx314 multiply 9 90000000000000   -> 8.10000000E+14  Rounded
mulx315 multiply 9 900000000000000   -> 8.10000000E+15  Rounded
mulx316 multiply 9 9000000000000000   -> 8.10000000E+16  Rounded
mulx317 multiply 9 90000000000000000   -> 8.10000000E+17  Rounded
mulx318 multiply 9 900000000000000000   -> 8.10000000E+18  Rounded
mulx319 multiply 9 9000000000000000000   -> 8.10000000E+19  Rounded
mulx320 multiply 9 90000000000000000000   -> 8.10000000E+20  Rounded
mulx321 multiply 9 900000000000000000000   -> 8.10000000E+21  Rounded
mulx322 multiply 9 9000000000000000000000   -> 8.10000000E+22  Rounded
mulx323 multiply 9 90000000000000000000000   -> 8.10000000E+23  Rounded

-- fastpath breakers
precision:   29
mulx330 multiply 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603 -> 1.6487212707001281468486507878 Inexact Rounded
precision:   55
mulx331 multiply 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428 -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded


325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530
-- tryzeros cases
precision:   7
rounding:    half_up
maxExponent: 92
minexponent: -92
mulx504  multiply  0E-60 1000E-60  -> 0E-98 Clamped
mulx505  multiply  100E+60 0E+60   -> 0E+92 Clamped

-- mixed with zeros
maxexponent: 999999999
minexponent: -999999999
precision: 9
mulx541 multiply  0    -1     -> -0
mulx542 multiply -0    -1     ->  0
mulx543 multiply  0     1     ->  0
mulx544 multiply -0     1     -> -0
mulx545 multiply -1     0     -> -0
mulx546 multiply -1    -0     ->  0
mulx547 multiply  1     0     ->  0
mulx548 multiply  1    -0     -> -0

mulx551 multiply  0.0  -1     -> -0.0
mulx552 multiply -0.0  -1     ->  0.0
mulx553 multiply  0.0   1     ->  0.0
mulx554 multiply -0.0   1     -> -0.0
mulx555 multiply -1.0   0     -> -0.0
mulx556 multiply -1.0  -0     ->  0.0
mulx557 multiply  1.0   0     ->  0.0
mulx558 multiply  1.0  -0     -> -0.0

mulx561 multiply  0    -1.0   -> -0.0
mulx562 multiply -0    -1.0   ->  0.0
mulx563 multiply  0     1.0   ->  0.0
mulx564 multiply -0     1.0   -> -0.0
mulx565 multiply -1     0.0   -> -0.0
mulx566 multiply -1    -0.0   ->  0.0
mulx567 multiply  1     0.0   ->  0.0
mulx568 multiply  1    -0.0   -> -0.0

mulx571 multiply  0.0  -1.0   -> -0.00
mulx572 multiply -0.0  -1.0   ->  0.00
mulx573 multiply  0.0   1.0   ->  0.00
mulx574 multiply -0.0   1.0   -> -0.00
mulx575 multiply -1.0   0.0   -> -0.00
mulx576 multiply -1.0  -0.0   ->  0.00
mulx577 multiply  1.0   0.0   ->  0.00
mulx578 multiply  1.0  -0.0   -> -0.00


-- Specials
mulx580 multiply  Inf  -Inf   -> -Infinity
mulx581 multiply  Inf  -1000  -> -Infinity
mulx582 multiply  Inf  -1     -> -Infinity
mulx583 multiply  Inf  -0     ->  NaN  Invalid_operation
mulx584 multiply  Inf   0     ->  NaN  Invalid_operation
mulx585 multiply  Inf   1     ->  Infinity
mulx586 multiply  Inf   1000  ->  Infinity
mulx587 multiply  Inf   Inf   ->  Infinity
mulx588 multiply -1000  Inf   -> -Infinity
mulx589 multiply -Inf   Inf   -> -Infinity
mulx590 multiply -1     Inf   -> -Infinity
mulx591 multiply -0     Inf   ->  NaN  Invalid_operation
mulx592 multiply  0     Inf   ->  NaN  Invalid_operation
mulx593 multiply  1     Inf   ->  Infinity
mulx594 multiply  1000  Inf   ->  Infinity
mulx595 multiply  Inf   Inf   ->  Infinity

mulx600 multiply -Inf  -Inf   ->  Infinity
mulx601 multiply -Inf  -1000  ->  Infinity
mulx602 multiply -Inf  -1     ->  Infinity
mulx603 multiply -Inf  -0     ->  NaN  Invalid_operation
mulx604 multiply -Inf   0     ->  NaN  Invalid_operation
mulx605 multiply -Inf   1     -> -Infinity
mulx606 multiply -Inf   1000  -> -Infinity
mulx607 multiply -Inf   Inf   -> -Infinity
mulx608 multiply -1000  Inf   -> -Infinity
mulx609 multiply -Inf  -Inf   ->  Infinity
mulx610 multiply -1    -Inf   ->  Infinity
mulx611 multiply -0    -Inf   ->  NaN  Invalid_operation
mulx612 multiply  0    -Inf   ->  NaN  Invalid_operation
mulx613 multiply  1    -Inf   -> -Infinity
mulx614 multiply  1000 -Inf   -> -Infinity
mulx615 multiply  Inf  -Inf   -> -Infinity

mulx621 multiply  NaN -Inf    ->  NaN
mulx622 multiply  NaN -1000   ->  NaN
mulx623 multiply  NaN -1      ->  NaN
mulx624 multiply  NaN -0      ->  NaN
mulx625 multiply  NaN  0      ->  NaN
mulx626 multiply  NaN  1      ->  NaN
mulx627 multiply  NaN  1000   ->  NaN
mulx628 multiply  NaN  Inf    ->  NaN
mulx629 multiply  NaN  NaN    ->  NaN
mulx630 multiply -Inf  NaN    ->  NaN
mulx631 multiply -1000 NaN    ->  NaN
mulx632 multiply -1    NaN    ->  NaN
mulx633 multiply -0    NaN    ->  NaN
mulx634 multiply  0    NaN    ->  NaN
mulx635 multiply  1    NaN    ->  NaN
mulx636 multiply  1000 NaN    ->  NaN
mulx637 multiply  Inf  NaN    ->  NaN

mulx641 multiply  sNaN -Inf   ->  NaN  Invalid_operation
mulx642 multiply  sNaN -1000  ->  NaN  Invalid_operation
mulx643 multiply  sNaN -1     ->  NaN  Invalid_operation
mulx644 multiply  sNaN -0     ->  NaN  Invalid_operation
mulx645 multiply  sNaN  0     ->  NaN  Invalid_operation
mulx646 multiply  sNaN  1     ->  NaN  Invalid_operation
mulx647 multiply  sNaN  1000  ->  NaN  Invalid_operation
mulx648 multiply  sNaN  NaN   ->  NaN  Invalid_operation
mulx649 multiply  sNaN sNaN   ->  NaN  Invalid_operation
mulx650 multiply  NaN  sNaN   ->  NaN  Invalid_operation
mulx651 multiply -Inf  sNaN   ->  NaN  Invalid_operation
mulx652 multiply -1000 sNaN   ->  NaN  Invalid_operation
mulx653 multiply -1    sNaN   ->  NaN  Invalid_operation
mulx654 multiply -0    sNaN   ->  NaN  Invalid_operation
mulx655 multiply  0    sNaN   ->  NaN  Invalid_operation
mulx656 multiply  1    sNaN   ->  NaN  Invalid_operation
mulx657 multiply  1000 sNaN   ->  NaN  Invalid_operation
mulx658 multiply  Inf  sNaN   ->  NaN  Invalid_operation
mulx659 multiply  NaN  sNaN   ->  NaN  Invalid_operation

-- propagating NaNs
mulx661 multiply  NaN9 -Inf   ->  NaN9
mulx662 multiply  NaN8  999   ->  NaN8
mulx663 multiply  NaN71 Inf   ->  NaN71
mulx664 multiply  NaN6  NaN5  ->  NaN6
mulx665 multiply -Inf   NaN4  ->  NaN4
mulx666 multiply -999   NaN33 ->  NaN33
mulx667 multiply  Inf   NaN2  ->  NaN2

mulx671 multiply  sNaN99 -Inf    ->  NaN99 Invalid_operation
mulx672 multiply  sNaN98 -11     ->  NaN98 Invalid_operation
mulx673 multiply  sNaN97  NaN    ->  NaN97 Invalid_operation
mulx674 multiply  sNaN16 sNaN94  ->  NaN16 Invalid_operation
mulx675 multiply  NaN95  sNaN93  ->  NaN93 Invalid_operation
mulx676 multiply -Inf    sNaN92  ->  NaN92 Invalid_operation
mulx677 multiply  088    sNaN91  ->  NaN91 Invalid_operation
mulx678 multiply  Inf    sNaN90  ->  NaN90 Invalid_operation
mulx679 multiply  NaN    sNaN89  ->  NaN89 Invalid_operation

mulx681 multiply -NaN9 -Inf   -> -NaN9
mulx682 multiply -NaN8  999   -> -NaN8
mulx683 multiply -NaN71 Inf   -> -NaN71
mulx684 multiply -NaN6 -NaN5  -> -NaN6
mulx685 multiply -Inf  -NaN4  -> -NaN4
mulx686 multiply -999  -NaN33 -> -NaN33
mulx687 multiply  Inf  -NaN2  -> -NaN2

mulx691 multiply -sNaN99 -Inf    -> -NaN99 Invalid_operation
mulx692 multiply -sNaN98 -11     -> -NaN98 Invalid_operation
mulx693 multiply -sNaN97  NaN    -> -NaN97 Invalid_operation
mulx694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
mulx695 multiply -NaN95  -sNaN93 -> -NaN93 Invalid_operation
mulx696 multiply -Inf    -sNaN92 -> -NaN92 Invalid_operation
mulx697 multiply  088    -sNaN91 -> -NaN91 Invalid_operation
mulx698 multiply  Inf    -sNaN90 -> -NaN90 Invalid_operation
mulx699 multiply -NaN    -sNaN89 -> -NaN89 Invalid_operation

mulx701 multiply -NaN  -Inf   -> -NaN
mulx702 multiply -NaN   999   -> -NaN
mulx703 multiply -NaN   Inf   -> -NaN
mulx704 multiply -NaN  -NaN   -> -NaN
mulx705 multiply -Inf  -NaN0  -> -NaN
mulx706 multiply -999  -NaN   -> -NaN
mulx707 multiply  Inf  -NaN   -> -NaN

mulx711 multiply -sNaN   -Inf    -> -NaN Invalid_operation
mulx712 multiply -sNaN   -11     -> -NaN Invalid_operation
mulx713 multiply -sNaN00  NaN    -> -NaN Invalid_operation
mulx714 multiply -sNaN   -sNaN   -> -NaN Invalid_operation
mulx715 multiply -NaN    -sNaN   -> -NaN Invalid_operation
mulx716 multiply -Inf    -sNaN   -> -NaN Invalid_operation
mulx717 multiply  088    -sNaN   -> -NaN Invalid_operation
mulx718 multiply  Inf    -sNaN   -> -NaN Invalid_operation
mulx719 multiply -NaN    -sNaN   -> -NaN Invalid_operation

-- overflow and underflow tests .. note subnormal results
maxexponent: 999999999
minexponent: -999999999
mulx730 multiply +1.23456789012345E-0 9E+999999999 -> Infinity Inexact Overflow Rounded
mulx731 multiply 9E+999999999 +1.23456789012345E-0 -> Infinity Inexact Overflow Rounded
mulx732 multiply +0.100 9E-999999999 -> 9.00E-1000000000 Subnormal
mulx733 multiply 9E-999999999 +0.100 -> 9.00E-1000000000 Subnormal
mulx735 multiply -1.23456789012345E-0 9E+999999999 -> -Infinity Inexact Overflow Rounded
mulx736 multiply 9E+999999999 -1.23456789012345E-0 -> -Infinity Inexact Overflow Rounded
mulx737 multiply -0.100 9E-999999999 -> -9.00E-1000000000 Subnormal
mulx738 multiply 9E-999999999 -0.100 -> -9.00E-1000000000 Subnormal

mulx739 multiply 1e-599999999 1e-400000001 -> 1E-1000000000 Subnormal
mulx740 multiply 1e-599999999 1e-400000000 -> 1E-999999999
mulx741 multiply 1e-600000000 1e-400000000 -> 1E-1000000000 Subnormal
mulx742 multiply 9e-999999998 0.01 -> 9E-1000000000 Subnormal
mulx743 multiply 9e-999999998 0.1  -> 9E-999999999
mulx744 multiply 0.01 9e-999999998 -> 9E-1000000000 Subnormal
mulx745 multiply 1e599999999 1e400000001 -> Infinity Overflow Inexact Rounded
mulx746 multiply 1e599999999 1e400000000 -> 1E+999999999
mulx747 multiply 1e600000000 1e400000000 -> Infinity Overflow Inexact Rounded
mulx748 multiply 9e999999998 100  -> Infinity Overflow Inexact Rounded
mulx749 multiply 9e999999998 10   -> 9.0E+999999999
mulx750 multiply 100  9e999999998 -> Infinity Overflow Inexact Rounded
-- signs
mulx751 multiply  1e+777777777  1e+411111111 ->  Infinity Overflow Inexact Rounded
mulx752 multiply  1e+777777777 -1e+411111111 -> -Infinity Overflow Inexact Rounded
mulx753 multiply -1e+777777777  1e+411111111 -> -Infinity Overflow Inexact Rounded
mulx754 multiply -1e+777777777 -1e+411111111 ->  Infinity Overflow Inexact Rounded
531 532 533 534
mulx755 multiply  1e-777777777  1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
mulx756 multiply  1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
mulx757 multiply -1e-777777777  1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
mulx758 multiply -1e-777777777 -1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
535 536 537 538 539 540 541 542 543 544

-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
precision: 9
mulx760 multiply 1e-600000000 1e-400000001 -> 1E-1000000001 Subnormal
mulx761 multiply 1e-600000000 1e-400000002 -> 1E-1000000002 Subnormal
mulx762 multiply 1e-600000000 1e-400000003 -> 1E-1000000003 Subnormal
mulx763 multiply 1e-600000000 1e-400000004 -> 1E-1000000004 Subnormal
mulx764 multiply 1e-600000000 1e-400000005 -> 1E-1000000005 Subnormal
mulx765 multiply 1e-600000000 1e-400000006 -> 1E-1000000006 Subnormal
mulx766 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
545 546 547
mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564
-- [no equivalent of 'subnormal' for overflow]
mulx770 multiply 1e+600000000 1e+400000001 -> Infinity Overflow Inexact Rounded
mulx771 multiply 1e+600000000 1e+400000002 -> Infinity Overflow Inexact Rounded
mulx772 multiply 1e+600000000 1e+400000003 -> Infinity Overflow Inexact Rounded
mulx773 multiply 1e+600000000 1e+400000004 -> Infinity Overflow Inexact Rounded
mulx774 multiply 1e+600000000 1e+400000005 -> Infinity Overflow Inexact Rounded
mulx775 multiply 1e+600000000 1e+400000006 -> Infinity Overflow Inexact Rounded
mulx776 multiply 1e+600000000 1e+400000007 -> Infinity Overflow Inexact Rounded
mulx777 multiply 1e+600000000 1e+400000008 -> Infinity Overflow Inexact Rounded
mulx778 multiply 1e+600000000 1e+400000009 -> Infinity Overflow Inexact Rounded
mulx779 multiply 1e+600000000 1e+400000010 -> Infinity Overflow Inexact Rounded

-- 'subnormal' test edge condition at higher precisions
precision: 99
mulx780 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
mulx781 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
mulx782 multiply 1e-600000000 1e-400000097 -> 1E-1000000097 Subnormal
565
mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded Clamped
566 567
precision: 999
mulx784 multiply 1e-600000000 1e-400000997 -> 1E-1000000997 Subnormal
568
mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded Clamped
569 570 571 572

-- following testcases [through mulx800] not yet run against code
precision: 9999
mulx786 multiply 1e-600000000 1e-400009997 -> 1E-1000009997 Subnormal
573
mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded Clamped
574 575
precision: 99999
mulx788 multiply 1e-600000000 1e-400099997 -> 1E-1000099997 Subnormal
576
mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded Clamped
577 578
precision: 999999
mulx790 multiply 1e-600000000 1e-400999997 -> 1E-1000999997 Subnormal
579
mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded Clamped
580 581
precision: 9999999
mulx792 multiply 1e-600000000 1e-409999997 -> 1E-1009999997 Subnormal
582
mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded Clamped
583 584
precision: 99999999
mulx794 multiply 1e-600000000 1e-499999997 -> 1E-1099999997 Subnormal
585
mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded Clamped
586 587 588
precision: 999999999
mulx796 multiply 1e-999999999 1e-999999997 -> 1E-1999999996 Subnormal
mulx797 multiply 1e-999999999 1e-999999998 -> 1E-1999999997 Subnormal
589
mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded Clamped
590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617
mulx799 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
mulx800 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal

-- test subnormals rounding
precision:   5
maxExponent: 999
minexponent: -999
rounding:    half_even

mulx801 multiply  1.0000E-999  1     -> 1.0000E-999
mulx802 multiply  1.000E-999   1e-1  -> 1.000E-1000 Subnormal
mulx803 multiply  1.00E-999    1e-2  -> 1.00E-1001  Subnormal
mulx804 multiply  1.0E-999     1e-3  -> 1.0E-1002   Subnormal
mulx805 multiply  1.0E-999     1e-4  -> 1E-1003     Subnormal Rounded
mulx806 multiply  1.3E-999     1e-4  -> 1E-1003     Underflow Subnormal Inexact Rounded
mulx807 multiply  1.5E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx808 multiply  1.7E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx809 multiply  2.3E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx810 multiply  2.5E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx811 multiply  2.7E-999     1e-4  -> 3E-1003     Underflow Subnormal Inexact Rounded
mulx812 multiply  1.49E-999    1e-4  -> 1E-1003     Underflow Subnormal Inexact Rounded
mulx813 multiply  1.50E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx814 multiply  1.51E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx815 multiply  2.49E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx816 multiply  2.50E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx817 multiply  2.51E-999    1e-4  -> 3E-1003     Underflow Subnormal Inexact Rounded

mulx818 multiply  1E-999       1e-4  -> 1E-1003     Subnormal
618 619
mulx819 multiply  3E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
mulx820 multiply  5E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
620 621 622 623 624
mulx821 multiply  7E-999       1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
mulx822 multiply  9E-999       1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
mulx823 multiply  9.9E-999     1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded

mulx824 multiply  1E-999      -1e-4  -> -1E-1003    Subnormal
625 626
mulx825 multiply  3E-999      -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
mulx826 multiply -5E-999       1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
627 628 629
mulx827 multiply  7E-999      -1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
mulx828 multiply -9E-999       1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
mulx829 multiply  9.9E-999    -1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
630
mulx830 multiply  3.0E-999    -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
631 632 633 634 635 636 637 638 639

mulx831 multiply  1.0E-501     1e-501 -> 1.0E-1002   Subnormal
mulx832 multiply  2.0E-501     2e-501 -> 4.0E-1002   Subnormal
mulx833 multiply  4.0E-501     4e-501 -> 1.60E-1001  Subnormal
mulx834 multiply 10.0E-501    10e-501 -> 1.000E-1000 Subnormal
mulx835 multiply 30.0E-501    30e-501 -> 9.000E-1000 Subnormal
mulx836 multiply 40.0E-501    40e-501 -> 1.6000E-999

-- squares
640
mulx840 multiply  1E-502       1e-502 -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
641 642 643 644 645 646 647 648
mulx841 multiply  1E-501       1e-501 -> 1E-1002     Subnormal
mulx842 multiply  2E-501       2e-501 -> 4E-1002     Subnormal
mulx843 multiply  4E-501       4e-501 -> 1.6E-1001   Subnormal
mulx844 multiply 10E-501      10e-501 -> 1.00E-1000  Subnormal
mulx845 multiply 30E-501      30e-501 -> 9.00E-1000  Subnormal
mulx846 multiply 40E-501      40e-501 -> 1.600E-999

-- cubes
649
mulx850 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
650 651 652 653 654 655 656
mulx851 multiply  1E-668     1e-334 -> 1E-1002    Subnormal
mulx852 multiply  4E-668     2e-334 -> 8E-1002    Subnormal
mulx853 multiply  9E-668     3e-334 -> 2.7E-1001  Subnormal
mulx854 multiply 16E-668     4e-334 -> 6.4E-1001  Subnormal
mulx855 multiply 25E-668     5e-334 -> 1.25E-1000 Subnormal
mulx856 multiply 10E-668   100e-334 -> 1.000E-999

657
-- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent
658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673
precision: 19
mulx860 multiply  6636851557994578716E-520 6636851557994578716E-520 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded

-- Long operand overflow may be a different path
precision: 3
maxExponent: 999999999
minexponent: -999999999
mulx870 multiply 1  9.999E+999999999   ->  Infinity Inexact Overflow Rounded
mulx871 multiply 1 -9.999E+999999999   -> -Infinity Inexact Overflow Rounded
mulx872 multiply    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
mulx873 multiply   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded

-- check for double-rounded subnormals
precision:   5
maxexponent: 79
minexponent: -79
674 675 676 677 678 679 680 681 682 683
mulx881 multiply  1.2347E-40  1.2347E-40  ->  1.524E-80  Inexact Rounded Subnormal Underflow
mulx882 multiply  1.234E-40  1.234E-40    ->  1.523E-80  Inexact Rounded Subnormal Underflow
mulx883 multiply  1.23E-40   1.23E-40     ->  1.513E-80  Inexact Rounded Subnormal Underflow
mulx884 multiply  1.2E-40    1.2E-40      ->  1.44E-80   Subnormal
mulx885 multiply  1.2E-40    1.2E-41      ->  1.44E-81   Subnormal
mulx886 multiply  1.2E-40    1.2E-42      ->  1.4E-82    Subnormal Inexact Rounded Underflow
mulx887 multiply  1.2E-40    1.3E-42      ->  1.6E-82    Subnormal Inexact Rounded Underflow
mulx888 multiply  1.3E-40    1.3E-42      ->  1.7E-82    Subnormal Inexact Rounded Underflow
mulx889 multiply  1.3E-40    1.3E-43      ->    2E-83    Subnormal Inexact Rounded Underflow
mulx890 multiply  1.3E-41    1.3E-43      ->    0E-83    Clamped Subnormal Inexact Rounded Underflow
684 685 686 687 688 689 690 691

mulx891 multiply  1.2345E-39   1.234E-40  ->  1.5234E-79 Inexact Rounded
mulx892 multiply  1.23456E-39  1.234E-40  ->  1.5234E-79 Inexact Rounded
mulx893 multiply  1.2345E-40   1.234E-40  ->  1.523E-80  Inexact Rounded Subnormal Underflow
mulx894 multiply  1.23456E-40  1.234E-40  ->  1.523E-80  Inexact Rounded Subnormal Underflow
mulx895 multiply  1.2345E-41   1.234E-40  ->  1.52E-81   Inexact Rounded Subnormal Underflow
mulx896 multiply  1.23456E-41  1.234E-40  ->  1.52E-81   Inexact Rounded Subnormal Underflow

692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727
-- Now explore the case where we get a normal result with Underflow
precision:   16
rounding:    half_up
maxExponent: 384
minExponent: -383

mulx900 multiply  0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded
mulx901 multiply  0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
mulx902 multiply  9.999999999999999E-383  0.0999999999999         -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
mulx903 multiply  9.999999999999999E-383  0.09999999999999        -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
mulx904 multiply  9.999999999999999E-383  0.099999999999999       -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
mulx905 multiply  9.999999999999999E-383  0.0999999999999999      -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
-- prove operands are exact
mulx906 multiply  9.999999999999999E-383  1                       -> 9.999999999999999E-383
mulx907 multiply                       1  0.09999999999999999     -> 0.09999999999999999
-- the next rounds to Nmin
mulx908 multiply  9.999999999999999E-383  0.09999999999999999     -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
mulx909 multiply  9.999999999999999E-383  0.099999999999999999    -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
mulx910 multiply  9.999999999999999E-383  0.0999999999999999999   -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
mulx911 multiply  9.999999999999999E-383  0.09999999999999999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded


-- Examples from SQL proposal (Krishna Kulkarni)
precision:   34
rounding:    half_up
maxExponent: 6144
minExponent: -6143
mulx1001  multiply 130E-2  120E-2 -> 1.5600
mulx1002  multiply 130E-2  12E-1  -> 1.560
mulx1003  multiply 130E-2  1E0    -> 1.30
mulx1004  multiply 1E2     1E4    -> 1E+6

-- payload decapitate
precision: 5
mulx1010  multiply 11 -sNaN1234567890 -> -NaN67890  Invalid_operation

728
-- Null tests
729 730
mulx990 multiply 10  # -> NaN Invalid_operation
mulx991 multiply  # 10 -> NaN Invalid_operation
731