symbian-qemu-0.9.1-12/python-win32-2.6.1/lib/test/decimaltestdata/dqMultiply.decTest
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 ------------------------------------------------------------------------
       
     2 -- dqMultiply.decTest -- decQuad multiplication                       --
       
     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@uk.ibm.com                                                   --
       
    19 ------------------------------------------------------------------------
       
    20 version: 2.58
       
    21 
       
    22 -- This set of tests are for decQuads only; all arguments are
       
    23 -- representable in a decQuad
       
    24 extended:    1
       
    25 clamp:       1
       
    26 precision:   34
       
    27 maxExponent: 6144
       
    28 minExponent: -6143
       
    29 rounding:    half_even
       
    30 
       
    31 -- sanity checks
       
    32 dqmul000 multiply 2      2 -> 4
       
    33 dqmul001 multiply 2      3 -> 6
       
    34 dqmul002 multiply 5      1 -> 5
       
    35 dqmul003 multiply 5      2 -> 10
       
    36 dqmul004 multiply 1.20   2 -> 2.40
       
    37 dqmul005 multiply 1.20   0 -> 0.00
       
    38 dqmul006 multiply 1.20  -2 -> -2.40
       
    39 dqmul007 multiply -1.20  2 -> -2.40
       
    40 dqmul008 multiply -1.20  0 -> -0.00
       
    41 dqmul009 multiply -1.20 -2 -> 2.40
       
    42 dqmul010 multiply 5.09 7.1 -> 36.139
       
    43 dqmul011 multiply 2.5    4 -> 10.0
       
    44 dqmul012 multiply 2.50   4 -> 10.00
       
    45 dqmul013 multiply 1.23456789 1.0000000000000000000000000000 -> 1.234567890000000000000000000000000 Rounded
       
    46 dqmul015 multiply 2.50   4 -> 10.00
       
    47 dqmul016 multiply  9.99999999999999999  9.99999999999999999 ->  99.99999999999999980000000000000000 Inexact Rounded
       
    48 dqmul017 multiply  9.99999999999999999 -9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded
       
    49 dqmul018 multiply -9.99999999999999999  9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded
       
    50 dqmul019 multiply -9.99999999999999999 -9.99999999999999999 ->  99.99999999999999980000000000000000 Inexact Rounded
       
    51 
       
    52 -- zeros, etc.
       
    53 dqmul021 multiply  0      0     ->  0
       
    54 dqmul022 multiply  0     -0     -> -0
       
    55 dqmul023 multiply -0      0     -> -0
       
    56 dqmul024 multiply -0     -0     ->  0
       
    57 dqmul025 multiply -0.0   -0.0   ->  0.00
       
    58 dqmul026 multiply -0.0   -0.0   ->  0.00
       
    59 dqmul027 multiply -0.0   -0.0   ->  0.00
       
    60 dqmul028 multiply -0.0   -0.0   ->  0.00
       
    61 dqmul030 multiply  5.00   1E-3  ->  0.00500
       
    62 dqmul031 multiply  00.00  0.000 ->  0.00000
       
    63 dqmul032 multiply  00.00  0E-3  ->  0.00000     -- rhs is 0
       
    64 dqmul033 multiply  0E-3   00.00 ->  0.00000     -- lhs is 0
       
    65 dqmul034 multiply -5.00   1E-3  -> -0.00500
       
    66 dqmul035 multiply -00.00  0.000 -> -0.00000
       
    67 dqmul036 multiply -00.00  0E-3  -> -0.00000     -- rhs is 0
       
    68 dqmul037 multiply -0E-3   00.00 -> -0.00000     -- lhs is 0
       
    69 dqmul038 multiply  5.00  -1E-3  -> -0.00500
       
    70 dqmul039 multiply  00.00 -0.000 -> -0.00000
       
    71 dqmul040 multiply  00.00 -0E-3  -> -0.00000     -- rhs is 0
       
    72 dqmul041 multiply  0E-3  -00.00 -> -0.00000     -- lhs is 0
       
    73 dqmul042 multiply -5.00  -1E-3  ->  0.00500
       
    74 dqmul043 multiply -00.00 -0.000 ->  0.00000
       
    75 dqmul044 multiply -00.00 -0E-3  ->  0.00000     -- rhs is 0
       
    76 dqmul045 multiply -0E-3  -00.00 ->  0.00000     -- lhs is 0
       
    77 
       
    78 -- examples from decarith
       
    79 dqmul050 multiply 1.20 3        -> 3.60
       
    80 dqmul051 multiply 7    3        -> 21
       
    81 dqmul052 multiply 0.9  0.8      -> 0.72
       
    82 dqmul053 multiply 0.9  -0       -> -0.0
       
    83 dqmul054 multiply 654321 654321 -> 428135971041
       
    84 
       
    85 dqmul060 multiply 123.45 1e7  ->  1.2345E+9
       
    86 dqmul061 multiply 123.45 1e8  ->  1.2345E+10
       
    87 dqmul062 multiply 123.45 1e+9 ->  1.2345E+11
       
    88 dqmul063 multiply 123.45 1e10 ->  1.2345E+12
       
    89 dqmul064 multiply 123.45 1e11 ->  1.2345E+13
       
    90 dqmul065 multiply 123.45 1e12 ->  1.2345E+14
       
    91 dqmul066 multiply 123.45 1e13 ->  1.2345E+15
       
    92 
       
    93 
       
    94 -- test some intermediate lengths
       
    95 --                    1234567890123456
       
    96 dqmul080 multiply 0.1 1230123456456789     -> 123012345645678.9
       
    97 dqmul084 multiply 0.1 1230123456456789     -> 123012345645678.9
       
    98 dqmul090 multiply 1230123456456789     0.1 -> 123012345645678.9
       
    99 dqmul094 multiply 1230123456456789     0.1 -> 123012345645678.9
       
   100 
       
   101 -- test some more edge cases and carries
       
   102 dqmul101 multiply 9 9   -> 81
       
   103 dqmul102 multiply 9 90   -> 810
       
   104 dqmul103 multiply 9 900   -> 8100
       
   105 dqmul104 multiply 9 9000   -> 81000
       
   106 dqmul105 multiply 9 90000   -> 810000
       
   107 dqmul106 multiply 9 900000   -> 8100000
       
   108 dqmul107 multiply 9 9000000   -> 81000000
       
   109 dqmul108 multiply 9 90000000   -> 810000000
       
   110 dqmul109 multiply 9 900000000   -> 8100000000
       
   111 dqmul110 multiply 9 9000000000   -> 81000000000
       
   112 dqmul111 multiply 9 90000000000   -> 810000000000
       
   113 dqmul112 multiply 9 900000000000   -> 8100000000000
       
   114 dqmul113 multiply 9 9000000000000   -> 81000000000000
       
   115 dqmul114 multiply 9 90000000000000   -> 810000000000000
       
   116 dqmul115 multiply 9 900000000000000   -> 8100000000000000
       
   117 --dqmul116 multiply 9 9000000000000000   -> 81000000000000000
       
   118 --dqmul117 multiply 9 90000000000000000   -> 810000000000000000
       
   119 --dqmul118 multiply 9 900000000000000000   -> 8100000000000000000
       
   120 --dqmul119 multiply 9 9000000000000000000   -> 81000000000000000000
       
   121 --dqmul120 multiply 9 90000000000000000000   -> 810000000000000000000
       
   122 --dqmul121 multiply 9 900000000000000000000   -> 8100000000000000000000
       
   123 --dqmul122 multiply 9 9000000000000000000000   -> 81000000000000000000000
       
   124 --dqmul123 multiply 9 90000000000000000000000   -> 810000000000000000000000
       
   125 -- test some more edge cases without carries
       
   126 dqmul131 multiply 3 3   -> 9
       
   127 dqmul132 multiply 3 30   -> 90
       
   128 dqmul133 multiply 3 300   -> 900
       
   129 dqmul134 multiply 3 3000   -> 9000
       
   130 dqmul135 multiply 3 30000   -> 90000
       
   131 dqmul136 multiply 3 300000   -> 900000
       
   132 dqmul137 multiply 3 3000000   -> 9000000
       
   133 dqmul138 multiply 3 30000000   -> 90000000
       
   134 dqmul139 multiply 3 300000000   -> 900000000
       
   135 dqmul140 multiply 3 3000000000   -> 9000000000
       
   136 dqmul141 multiply 3 30000000000   -> 90000000000
       
   137 dqmul142 multiply 3 300000000000   -> 900000000000
       
   138 dqmul143 multiply 3 3000000000000   -> 9000000000000
       
   139 dqmul144 multiply 3 30000000000000   -> 90000000000000
       
   140 dqmul145 multiply 3 300000000000000   -> 900000000000000
       
   141 dqmul146 multiply 3 3000000000000000   -> 9000000000000000
       
   142 dqmul147 multiply 3 30000000000000000   -> 90000000000000000
       
   143 dqmul148 multiply 3 300000000000000000   -> 900000000000000000
       
   144 dqmul149 multiply 3 3000000000000000000   -> 9000000000000000000
       
   145 dqmul150 multiply 3 30000000000000000000   -> 90000000000000000000
       
   146 dqmul151 multiply 3 300000000000000000000   -> 900000000000000000000
       
   147 dqmul152 multiply 3 3000000000000000000000   -> 9000000000000000000000
       
   148 dqmul153 multiply 3 30000000000000000000000   -> 90000000000000000000000
       
   149 
       
   150 dqmul263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928296 Inexact Rounded
       
   151 
       
   152 -- test some edge cases with exact rounding
       
   153 dqmul301 multiply 900000000000000000 9   -> 8100000000000000000
       
   154 dqmul302 multiply 900000000000000000 90   -> 81000000000000000000
       
   155 dqmul303 multiply 900000000000000000 900   -> 810000000000000000000
       
   156 dqmul304 multiply 900000000000000000 9000   -> 8100000000000000000000
       
   157 dqmul305 multiply 900000000000000000 90000   -> 81000000000000000000000
       
   158 dqmul306 multiply 900000000000000000 900000   -> 810000000000000000000000
       
   159 dqmul307 multiply 900000000000000000 9000000   -> 8100000000000000000000000
       
   160 dqmul308 multiply 900000000000000000 90000000   -> 81000000000000000000000000
       
   161 dqmul309 multiply 900000000000000000 900000000   -> 810000000000000000000000000
       
   162 dqmul310 multiply 900000000000000000 9000000000   -> 8100000000000000000000000000
       
   163 dqmul311 multiply 900000000000000000 90000000000   -> 81000000000000000000000000000
       
   164 dqmul312 multiply 900000000000000000 900000000000   -> 810000000000000000000000000000
       
   165 dqmul313 multiply 900000000000000000 9000000000000   -> 8100000000000000000000000000000
       
   166 dqmul314 multiply 900000000000000000 90000000000000   -> 81000000000000000000000000000000
       
   167 dqmul315 multiply 900000000000000000 900000000000000   -> 810000000000000000000000000000000
       
   168 dqmul316 multiply 900000000000000000 9000000000000000   -> 8100000000000000000000000000000000
       
   169 dqmul317 multiply 9000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+34  Rounded
       
   170 dqmul318 multiply 90000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+35  Rounded
       
   171 dqmul319 multiply 900000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+36  Rounded
       
   172 dqmul320 multiply 9000000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+37  Rounded
       
   173 dqmul321 multiply 90000000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+38  Rounded
       
   174 dqmul322 multiply 900000000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+39  Rounded
       
   175 dqmul323 multiply 9000000000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+40  Rounded
       
   176 
       
   177 -- tryzeros cases
       
   178 dqmul504  multiply  0E-4260 1000E-4260  -> 0E-6176 Clamped
       
   179 dqmul505  multiply  100E+4260 0E+4260   -> 0E+6111 Clamped
       
   180 
       
   181 -- mixed with zeros
       
   182 dqmul541 multiply  0    -1     -> -0
       
   183 dqmul542 multiply -0    -1     ->  0
       
   184 dqmul543 multiply  0     1     ->  0
       
   185 dqmul544 multiply -0     1     -> -0
       
   186 dqmul545 multiply -1     0     -> -0
       
   187 dqmul546 multiply -1    -0     ->  0
       
   188 dqmul547 multiply  1     0     ->  0
       
   189 dqmul548 multiply  1    -0     -> -0
       
   190 
       
   191 dqmul551 multiply  0.0  -1     -> -0.0
       
   192 dqmul552 multiply -0.0  -1     ->  0.0
       
   193 dqmul553 multiply  0.0   1     ->  0.0
       
   194 dqmul554 multiply -0.0   1     -> -0.0
       
   195 dqmul555 multiply -1.0   0     -> -0.0
       
   196 dqmul556 multiply -1.0  -0     ->  0.0
       
   197 dqmul557 multiply  1.0   0     ->  0.0
       
   198 dqmul558 multiply  1.0  -0     -> -0.0
       
   199 
       
   200 dqmul561 multiply  0    -1.0   -> -0.0
       
   201 dqmul562 multiply -0    -1.0   ->  0.0
       
   202 dqmul563 multiply  0     1.0   ->  0.0
       
   203 dqmul564 multiply -0     1.0   -> -0.0
       
   204 dqmul565 multiply -1     0.0   -> -0.0
       
   205 dqmul566 multiply -1    -0.0   ->  0.0
       
   206 dqmul567 multiply  1     0.0   ->  0.0
       
   207 dqmul568 multiply  1    -0.0   -> -0.0
       
   208 
       
   209 dqmul571 multiply  0.0  -1.0   -> -0.00
       
   210 dqmul572 multiply -0.0  -1.0   ->  0.00
       
   211 dqmul573 multiply  0.0   1.0   ->  0.00
       
   212 dqmul574 multiply -0.0   1.0   -> -0.00
       
   213 dqmul575 multiply -1.0   0.0   -> -0.00
       
   214 dqmul576 multiply -1.0  -0.0   ->  0.00
       
   215 dqmul577 multiply  1.0   0.0   ->  0.00
       
   216 dqmul578 multiply  1.0  -0.0   -> -0.00
       
   217 
       
   218 
       
   219 -- Specials
       
   220 dqmul580 multiply  Inf  -Inf   -> -Infinity
       
   221 dqmul581 multiply  Inf  -1000  -> -Infinity
       
   222 dqmul582 multiply  Inf  -1     -> -Infinity
       
   223 dqmul583 multiply  Inf  -0     ->  NaN  Invalid_operation
       
   224 dqmul584 multiply  Inf   0     ->  NaN  Invalid_operation
       
   225 dqmul585 multiply  Inf   1     ->  Infinity
       
   226 dqmul586 multiply  Inf   1000  ->  Infinity
       
   227 dqmul587 multiply  Inf   Inf   ->  Infinity
       
   228 dqmul588 multiply -1000  Inf   -> -Infinity
       
   229 dqmul589 multiply -Inf   Inf   -> -Infinity
       
   230 dqmul590 multiply -1     Inf   -> -Infinity
       
   231 dqmul591 multiply -0     Inf   ->  NaN  Invalid_operation
       
   232 dqmul592 multiply  0     Inf   ->  NaN  Invalid_operation
       
   233 dqmul593 multiply  1     Inf   ->  Infinity
       
   234 dqmul594 multiply  1000  Inf   ->  Infinity
       
   235 dqmul595 multiply  Inf   Inf   ->  Infinity
       
   236 
       
   237 dqmul600 multiply -Inf  -Inf   ->  Infinity
       
   238 dqmul601 multiply -Inf  -1000  ->  Infinity
       
   239 dqmul602 multiply -Inf  -1     ->  Infinity
       
   240 dqmul603 multiply -Inf  -0     ->  NaN  Invalid_operation
       
   241 dqmul604 multiply -Inf   0     ->  NaN  Invalid_operation
       
   242 dqmul605 multiply -Inf   1     -> -Infinity
       
   243 dqmul606 multiply -Inf   1000  -> -Infinity
       
   244 dqmul607 multiply -Inf   Inf   -> -Infinity
       
   245 dqmul608 multiply -1000  Inf   -> -Infinity
       
   246 dqmul609 multiply -Inf  -Inf   ->  Infinity
       
   247 dqmul610 multiply -1    -Inf   ->  Infinity
       
   248 dqmul611 multiply -0    -Inf   ->  NaN  Invalid_operation
       
   249 dqmul612 multiply  0    -Inf   ->  NaN  Invalid_operation
       
   250 dqmul613 multiply  1    -Inf   -> -Infinity
       
   251 dqmul614 multiply  1000 -Inf   -> -Infinity
       
   252 dqmul615 multiply  Inf  -Inf   -> -Infinity
       
   253 
       
   254 dqmul621 multiply  NaN -Inf    ->  NaN
       
   255 dqmul622 multiply  NaN -1000   ->  NaN
       
   256 dqmul623 multiply  NaN -1      ->  NaN
       
   257 dqmul624 multiply  NaN -0      ->  NaN
       
   258 dqmul625 multiply  NaN  0      ->  NaN
       
   259 dqmul626 multiply  NaN  1      ->  NaN
       
   260 dqmul627 multiply  NaN  1000   ->  NaN
       
   261 dqmul628 multiply  NaN  Inf    ->  NaN
       
   262 dqmul629 multiply  NaN  NaN    ->  NaN
       
   263 dqmul630 multiply -Inf  NaN    ->  NaN
       
   264 dqmul631 multiply -1000 NaN    ->  NaN
       
   265 dqmul632 multiply -1    NaN    ->  NaN
       
   266 dqmul633 multiply -0    NaN    ->  NaN
       
   267 dqmul634 multiply  0    NaN    ->  NaN
       
   268 dqmul635 multiply  1    NaN    ->  NaN
       
   269 dqmul636 multiply  1000 NaN    ->  NaN
       
   270 dqmul637 multiply  Inf  NaN    ->  NaN
       
   271 
       
   272 dqmul641 multiply  sNaN -Inf   ->  NaN  Invalid_operation
       
   273 dqmul642 multiply  sNaN -1000  ->  NaN  Invalid_operation
       
   274 dqmul643 multiply  sNaN -1     ->  NaN  Invalid_operation
       
   275 dqmul644 multiply  sNaN -0     ->  NaN  Invalid_operation
       
   276 dqmul645 multiply  sNaN  0     ->  NaN  Invalid_operation
       
   277 dqmul646 multiply  sNaN  1     ->  NaN  Invalid_operation
       
   278 dqmul647 multiply  sNaN  1000  ->  NaN  Invalid_operation
       
   279 dqmul648 multiply  sNaN  NaN   ->  NaN  Invalid_operation
       
   280 dqmul649 multiply  sNaN sNaN   ->  NaN  Invalid_operation
       
   281 dqmul650 multiply  NaN  sNaN   ->  NaN  Invalid_operation
       
   282 dqmul651 multiply -Inf  sNaN   ->  NaN  Invalid_operation
       
   283 dqmul652 multiply -1000 sNaN   ->  NaN  Invalid_operation
       
   284 dqmul653 multiply -1    sNaN   ->  NaN  Invalid_operation
       
   285 dqmul654 multiply -0    sNaN   ->  NaN  Invalid_operation
       
   286 dqmul655 multiply  0    sNaN   ->  NaN  Invalid_operation
       
   287 dqmul656 multiply  1    sNaN   ->  NaN  Invalid_operation
       
   288 dqmul657 multiply  1000 sNaN   ->  NaN  Invalid_operation
       
   289 dqmul658 multiply  Inf  sNaN   ->  NaN  Invalid_operation
       
   290 dqmul659 multiply  NaN  sNaN   ->  NaN  Invalid_operation
       
   291 
       
   292 -- propagating NaNs
       
   293 dqmul661 multiply  NaN9 -Inf   ->  NaN9
       
   294 dqmul662 multiply  NaN8  999   ->  NaN8
       
   295 dqmul663 multiply  NaN71 Inf   ->  NaN71
       
   296 dqmul664 multiply  NaN6  NaN5  ->  NaN6
       
   297 dqmul665 multiply -Inf   NaN4  ->  NaN4
       
   298 dqmul666 multiply -999   NaN33 ->  NaN33
       
   299 dqmul667 multiply  Inf   NaN2  ->  NaN2
       
   300 
       
   301 dqmul671 multiply  sNaN99 -Inf    ->  NaN99 Invalid_operation
       
   302 dqmul672 multiply  sNaN98 -11     ->  NaN98 Invalid_operation
       
   303 dqmul673 multiply  sNaN97  NaN    ->  NaN97 Invalid_operation
       
   304 dqmul674 multiply  sNaN16 sNaN94  ->  NaN16 Invalid_operation
       
   305 dqmul675 multiply  NaN95  sNaN93  ->  NaN93 Invalid_operation
       
   306 dqmul676 multiply -Inf    sNaN92  ->  NaN92 Invalid_operation
       
   307 dqmul677 multiply  088    sNaN91  ->  NaN91 Invalid_operation
       
   308 dqmul678 multiply  Inf    sNaN90  ->  NaN90 Invalid_operation
       
   309 dqmul679 multiply  NaN    sNaN89  ->  NaN89 Invalid_operation
       
   310 
       
   311 dqmul681 multiply -NaN9 -Inf   -> -NaN9
       
   312 dqmul682 multiply -NaN8  999   -> -NaN8
       
   313 dqmul683 multiply -NaN71 Inf   -> -NaN71
       
   314 dqmul684 multiply -NaN6 -NaN5  -> -NaN6
       
   315 dqmul685 multiply -Inf  -NaN4  -> -NaN4
       
   316 dqmul686 multiply -999  -NaN33 -> -NaN33
       
   317 dqmul687 multiply  Inf  -NaN2  -> -NaN2
       
   318 
       
   319 dqmul691 multiply -sNaN99 -Inf    -> -NaN99 Invalid_operation
       
   320 dqmul692 multiply -sNaN98 -11     -> -NaN98 Invalid_operation
       
   321 dqmul693 multiply -sNaN97  NaN    -> -NaN97 Invalid_operation
       
   322 dqmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
       
   323 dqmul695 multiply -NaN95  -sNaN93 -> -NaN93 Invalid_operation
       
   324 dqmul696 multiply -Inf    -sNaN92 -> -NaN92 Invalid_operation
       
   325 dqmul697 multiply  088    -sNaN91 -> -NaN91 Invalid_operation
       
   326 dqmul698 multiply  Inf    -sNaN90 -> -NaN90 Invalid_operation
       
   327 dqmul699 multiply -NaN    -sNaN89 -> -NaN89 Invalid_operation
       
   328 
       
   329 dqmul701 multiply -NaN  -Inf   -> -NaN
       
   330 dqmul702 multiply -NaN   999   -> -NaN
       
   331 dqmul703 multiply -NaN   Inf   -> -NaN
       
   332 dqmul704 multiply -NaN  -NaN   -> -NaN
       
   333 dqmul705 multiply -Inf  -NaN0  -> -NaN
       
   334 dqmul706 multiply -999  -NaN   -> -NaN
       
   335 dqmul707 multiply  Inf  -NaN   -> -NaN
       
   336 
       
   337 dqmul711 multiply -sNaN   -Inf    -> -NaN Invalid_operation
       
   338 dqmul712 multiply -sNaN   -11     -> -NaN Invalid_operation
       
   339 dqmul713 multiply -sNaN00  NaN    -> -NaN Invalid_operation
       
   340 dqmul714 multiply -sNaN   -sNaN   -> -NaN Invalid_operation
       
   341 dqmul715 multiply -NaN    -sNaN   -> -NaN Invalid_operation
       
   342 dqmul716 multiply -Inf    -sNaN   -> -NaN Invalid_operation
       
   343 dqmul717 multiply  088    -sNaN   -> -NaN Invalid_operation
       
   344 dqmul718 multiply  Inf    -sNaN   -> -NaN Invalid_operation
       
   345 dqmul719 multiply -NaN    -sNaN   -> -NaN Invalid_operation
       
   346 
       
   347 -- overflow and underflow tests .. note subnormal results
       
   348 -- signs
       
   349 dqmul751 multiply  1e+4277  1e+3311 ->  Infinity Overflow Inexact Rounded
       
   350 dqmul752 multiply  1e+4277 -1e+3311 -> -Infinity Overflow Inexact Rounded
       
   351 dqmul753 multiply -1e+4277  1e+3311 -> -Infinity Overflow Inexact Rounded
       
   352 dqmul754 multiply -1e+4277 -1e+3311 ->  Infinity Overflow Inexact Rounded
       
   353 dqmul755 multiply  1e-4277  1e-3311 ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
       
   354 dqmul756 multiply  1e-4277 -1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
       
   355 dqmul757 multiply -1e-4277  1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
       
   356 dqmul758 multiply -1e-4277 -1e-3311 ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
       
   357 
       
   358 -- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
       
   359 dqmul760 multiply 1e-6069 1e-101 -> 1E-6170 Subnormal
       
   360 dqmul761 multiply 1e-6069 1e-102 -> 1E-6171 Subnormal
       
   361 dqmul762 multiply 1e-6069 1e-103 -> 1E-6172 Subnormal
       
   362 dqmul763 multiply 1e-6069 1e-104 -> 1E-6173 Subnormal
       
   363 dqmul764 multiply 1e-6069 1e-105 -> 1E-6174 Subnormal
       
   364 dqmul765 multiply 1e-6069 1e-106 -> 1E-6175 Subnormal
       
   365 dqmul766 multiply 1e-6069 1e-107 -> 1E-6176 Subnormal
       
   366 dqmul767 multiply 1e-6069 1e-108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
       
   367 dqmul768 multiply 1e-6069 1e-109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
       
   368 dqmul769 multiply 1e-6069 1e-110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
       
   369 -- [no equivalent of 'subnormal' for overflow]
       
   370 dqmul770 multiply 1e+40 1e+6101 -> 1.000000000000000000000000000000E+6141 Clamped
       
   371 dqmul771 multiply 1e+40 1e+6102 -> 1.0000000000000000000000000000000E+6142  Clamped
       
   372 dqmul772 multiply 1e+40 1e+6103 -> 1.00000000000000000000000000000000E+6143  Clamped
       
   373 dqmul773 multiply 1e+40 1e+6104 -> 1.000000000000000000000000000000000E+6144  Clamped
       
   374 dqmul774 multiply 1e+40 1e+6105 -> Infinity Overflow Inexact Rounded
       
   375 dqmul775 multiply 1e+40 1e+6106 -> Infinity Overflow Inexact Rounded
       
   376 dqmul776 multiply 1e+40 1e+6107 -> Infinity Overflow Inexact Rounded
       
   377 dqmul777 multiply 1e+40 1e+6108 -> Infinity Overflow Inexact Rounded
       
   378 dqmul778 multiply 1e+40 1e+6109 -> Infinity Overflow Inexact Rounded
       
   379 dqmul779 multiply 1e+40 1e+6110 -> Infinity Overflow Inexact Rounded
       
   380 
       
   381 dqmul801 multiply  1.0000E-6172  1     -> 1.0000E-6172 Subnormal
       
   382 dqmul802 multiply  1.000E-6172   1e-1  -> 1.000E-6173  Subnormal
       
   383 dqmul803 multiply  1.00E-6172    1e-2  -> 1.00E-6174   Subnormal
       
   384 dqmul804 multiply  1.0E-6172     1e-3  -> 1.0E-6175    Subnormal
       
   385 dqmul805 multiply  1.0E-6172     1e-4  -> 1E-6176     Subnormal Rounded
       
   386 dqmul806 multiply  1.3E-6172     1e-4  -> 1E-6176     Underflow Subnormal Inexact Rounded
       
   387 dqmul807 multiply  1.5E-6172     1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
       
   388 dqmul808 multiply  1.7E-6172     1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
       
   389 dqmul809 multiply  2.3E-6172     1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
       
   390 dqmul810 multiply  2.5E-6172     1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
       
   391 dqmul811 multiply  2.7E-6172     1e-4  -> 3E-6176     Underflow Subnormal Inexact Rounded
       
   392 dqmul812 multiply  1.49E-6172    1e-4  -> 1E-6176     Underflow Subnormal Inexact Rounded
       
   393 dqmul813 multiply  1.50E-6172    1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
       
   394 dqmul814 multiply  1.51E-6172    1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
       
   395 dqmul815 multiply  2.49E-6172    1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
       
   396 dqmul816 multiply  2.50E-6172    1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
       
   397 dqmul817 multiply  2.51E-6172    1e-4  -> 3E-6176     Underflow Subnormal Inexact Rounded
       
   398 
       
   399 dqmul818 multiply  1E-6172       1e-4  -> 1E-6176     Subnormal
       
   400 dqmul819 multiply  3E-6172       1e-5  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
       
   401 dqmul820 multiply  5E-6172       1e-5  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
       
   402 dqmul821 multiply  7E-6172       1e-5  -> 1E-6176     Underflow Subnormal Inexact Rounded
       
   403 dqmul822 multiply  9E-6172       1e-5  -> 1E-6176     Underflow Subnormal Inexact Rounded
       
   404 dqmul823 multiply  9.9E-6172     1e-5  -> 1E-6176     Underflow Subnormal Inexact Rounded
       
   405 
       
   406 dqmul824 multiply  1E-6172      -1e-4  -> -1E-6176    Subnormal
       
   407 dqmul825 multiply  3E-6172      -1e-5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
       
   408 dqmul826 multiply -5E-6172       1e-5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
       
   409 dqmul827 multiply  7E-6172      -1e-5  -> -1E-6176    Underflow Subnormal Inexact Rounded
       
   410 dqmul828 multiply -9E-6172       1e-5  -> -1E-6176    Underflow Subnormal Inexact Rounded
       
   411 dqmul829 multiply  9.9E-6172    -1e-5  -> -1E-6176    Underflow Subnormal Inexact Rounded
       
   412 dqmul830 multiply  3.0E-6172    -1e-5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
       
   413 
       
   414 dqmul831 multiply  1.0E-5977     1e-200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
       
   415 dqmul832 multiply  1.0E-5977     1e-199 -> 1E-6176    Subnormal Rounded
       
   416 dqmul833 multiply  1.0E-5977     1e-198 -> 1.0E-6175    Subnormal
       
   417 dqmul834 multiply  2.0E-5977     2e-198 -> 4.0E-6175    Subnormal
       
   418 dqmul835 multiply  4.0E-5977     4e-198 -> 1.60E-6174   Subnormal
       
   419 dqmul836 multiply 10.0E-5977    10e-198 -> 1.000E-6173  Subnormal
       
   420 dqmul837 multiply 30.0E-5977    30e-198 -> 9.000E-6173  Subnormal
       
   421 dqmul838 multiply 40.0E-5982    40e-166 -> 1.6000E-6145 Subnormal
       
   422 dqmul839 multiply 40.0E-5982    40e-165 -> 1.6000E-6144 Subnormal
       
   423 dqmul840 multiply 40.0E-5982    40e-164 -> 1.6000E-6143
       
   424 
       
   425 -- Long operand overflow may be a different path
       
   426 dqmul870 multiply 100  9.999E+6143     ->  Infinity Inexact Overflow Rounded
       
   427 dqmul871 multiply 100 -9.999E+6143     -> -Infinity Inexact Overflow Rounded
       
   428 dqmul872 multiply      9.999E+6143 100 ->  Infinity Inexact Overflow Rounded
       
   429 dqmul873 multiply     -9.999E+6143 100 -> -Infinity Inexact Overflow Rounded
       
   430 
       
   431 -- check for double-rounded subnormals
       
   432 dqmul881 multiply  1.2347E-6133 1.2347E-40  ->  1.524E-6173 Inexact Rounded Subnormal Underflow
       
   433 dqmul882 multiply  1.234E-6133 1.234E-40    ->  1.523E-6173 Inexact Rounded Subnormal Underflow
       
   434 dqmul883 multiply  1.23E-6133  1.23E-40     ->  1.513E-6173 Inexact Rounded Subnormal Underflow
       
   435 dqmul884 multiply  1.2E-6133   1.2E-40      ->  1.44E-6173  Subnormal
       
   436 dqmul885 multiply  1.2E-6133   1.2E-41      ->  1.44E-6174  Subnormal
       
   437 dqmul886 multiply  1.2E-6133   1.2E-42      ->  1.4E-6175   Subnormal Inexact Rounded Underflow
       
   438 dqmul887 multiply  1.2E-6133   1.3E-42      ->  1.6E-6175   Subnormal Inexact Rounded Underflow
       
   439 dqmul888 multiply  1.3E-6133   1.3E-42      ->  1.7E-6175   Subnormal Inexact Rounded Underflow
       
   440 dqmul889 multiply  1.3E-6133   1.3E-43      ->    2E-6176   Subnormal Inexact Rounded Underflow
       
   441 dqmul890 multiply  1.3E-6134   1.3E-43      ->    0E-6176   Clamped Subnormal Inexact Rounded Underflow
       
   442 
       
   443 dqmul891 multiply  1.2345E-39    1.234E-6133 ->  1.5234E-6172 Inexact Rounded Subnormal Underflow
       
   444 dqmul892 multiply  1.23456E-39   1.234E-6133 ->  1.5234E-6172 Inexact Rounded Subnormal Underflow
       
   445 dqmul893 multiply  1.2345E-40   1.234E-6133 ->  1.523E-6173  Inexact Rounded Subnormal Underflow
       
   446 dqmul894 multiply  1.23456E-40  1.234E-6133 ->  1.523E-6173  Inexact Rounded Subnormal Underflow
       
   447 dqmul895 multiply  1.2345E-41   1.234E-6133 ->  1.52E-6174   Inexact Rounded Subnormal Underflow
       
   448 dqmul896 multiply  1.23456E-41  1.234E-6133 ->  1.52E-6174   Inexact Rounded Subnormal Underflow
       
   449 
       
   450 -- Now explore the case where we get a normal result with Underflow
       
   451 -- prove operands are exact
       
   452 dqmul906 multiply  9.999999999999999999999999999999999E-6143  1                       -> 9.999999999999999999999999999999999E-6143
       
   453 dqmul907 multiply                       1  0.09999999999999999999999999999999999     -> 0.09999999999999999999999999999999999
       
   454 -- the next rounds to Nmin
       
   455 dqmul908 multiply  9.999999999999999999999999999999999E-6143  0.09999999999999999999999999999999999     -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded
       
   456 
       
   457 -- hugest
       
   458 dqmul909 multiply 9999999999999999999999999999999999 9999999999999999999999999999999999 -> 9.999999999999999999999999999999998E+67 Inexact Rounded
       
   459 -- VG case
       
   460 dqmul910 multiply 8.81125000000001349436E-1548 8.000000000000000000E-1550 -> 7.049000000000010795488000000000000E-3097 Rounded
       
   461 
       
   462 -- Examples from SQL proposal (Krishna Kulkarni)
       
   463 precision:   34
       
   464 rounding:    half_up
       
   465 maxExponent: 6144
       
   466 minExponent: -6143
       
   467 dqmul911  multiply 130E-2  120E-2 -> 1.5600
       
   468 dqmul912  multiply 130E-2  12E-1  -> 1.560
       
   469 dqmul913  multiply 130E-2  1E0    -> 1.30
       
   470 dqmul914  multiply 1E2     1E4    -> 1E+6
       
   471 
       
   472 -- power-of-ten edge cases
       
   473 dqmul1001 multiply  1      10               -> 10
       
   474 dqmul1002 multiply  1      100              -> 100
       
   475 dqmul1003 multiply  1      1000             -> 1000
       
   476 dqmul1004 multiply  1      10000            -> 10000
       
   477 dqmul1005 multiply  1      100000           -> 100000
       
   478 dqmul1006 multiply  1      1000000          -> 1000000
       
   479 dqmul1007 multiply  1      10000000         -> 10000000
       
   480 dqmul1008 multiply  1      100000000        -> 100000000
       
   481 dqmul1009 multiply  1      1000000000       -> 1000000000
       
   482 dqmul1010 multiply  1      10000000000      -> 10000000000
       
   483 dqmul1011 multiply  1      100000000000     -> 100000000000
       
   484 dqmul1012 multiply  1      1000000000000    -> 1000000000000
       
   485 dqmul1013 multiply  1      10000000000000   -> 10000000000000
       
   486 dqmul1014 multiply  1      100000000000000  -> 100000000000000
       
   487 dqmul1015 multiply  1      1000000000000000 -> 1000000000000000
       
   488 
       
   489 dqmul1016 multiply  1      1000000000000000000 -> 1000000000000000000
       
   490 dqmul1017 multiply  1      100000000000000000000000000 -> 100000000000000000000000000
       
   491 dqmul1018 multiply  1      1000000000000000000000000000 -> 1000000000000000000000000000
       
   492 dqmul1019 multiply  1      10000000000000000000000000000 -> 10000000000000000000000000000
       
   493 dqmul1020 multiply  1      1000000000000000000000000000000000 -> 1000000000000000000000000000000000
       
   494 
       
   495 dqmul1021 multiply  10     1                -> 10
       
   496 dqmul1022 multiply  10     10               -> 100
       
   497 dqmul1023 multiply  10     100              -> 1000
       
   498 dqmul1024 multiply  10     1000             -> 10000
       
   499 dqmul1025 multiply  10     10000            -> 100000
       
   500 dqmul1026 multiply  10     100000           -> 1000000
       
   501 dqmul1027 multiply  10     1000000          -> 10000000
       
   502 dqmul1028 multiply  10     10000000         -> 100000000
       
   503 dqmul1029 multiply  10     100000000        -> 1000000000
       
   504 dqmul1030 multiply  10     1000000000       -> 10000000000
       
   505 dqmul1031 multiply  10     10000000000      -> 100000000000
       
   506 dqmul1032 multiply  10     100000000000     -> 1000000000000
       
   507 dqmul1033 multiply  10     1000000000000    -> 10000000000000
       
   508 dqmul1034 multiply  10     10000000000000   -> 100000000000000
       
   509 dqmul1035 multiply  10     100000000000000  -> 1000000000000000
       
   510 
       
   511 dqmul1036 multiply  10     100000000000000000 -> 1000000000000000000
       
   512 dqmul1037 multiply  10     10000000000000000000000000 -> 100000000000000000000000000
       
   513 dqmul1038 multiply  10     100000000000000000000000000 -> 1000000000000000000000000000
       
   514 dqmul1039 multiply  10     1000000000000000000000000000 -> 10000000000000000000000000000
       
   515 dqmul1040 multiply  10     100000000000000000000000000000000 -> 1000000000000000000000000000000000
       
   516 
       
   517 dqmul1041 multiply  100    0.1              -> 10.0
       
   518 dqmul1042 multiply  100    1                -> 100
       
   519 dqmul1043 multiply  100    10               -> 1000
       
   520 dqmul1044 multiply  100    100              -> 10000
       
   521 dqmul1045 multiply  100    1000             -> 100000
       
   522 dqmul1046 multiply  100    10000            -> 1000000
       
   523 dqmul1047 multiply  100    100000           -> 10000000
       
   524 dqmul1048 multiply  100    1000000          -> 100000000
       
   525 dqmul1049 multiply  100    10000000         -> 1000000000
       
   526 dqmul1050 multiply  100    100000000        -> 10000000000
       
   527 dqmul1051 multiply  100    1000000000       -> 100000000000
       
   528 dqmul1052 multiply  100    10000000000      -> 1000000000000
       
   529 dqmul1053 multiply  100    100000000000     -> 10000000000000
       
   530 dqmul1054 multiply  100    1000000000000    -> 100000000000000
       
   531 dqmul1055 multiply  100    10000000000000   -> 1000000000000000
       
   532 
       
   533 dqmul1056 multiply  100    10000000000000000 -> 1000000000000000000
       
   534 dqmul1057 multiply  100    1000000000000000000000000 -> 100000000000000000000000000
       
   535 dqmul1058 multiply  100    10000000000000000000000000 -> 1000000000000000000000000000
       
   536 dqmul1059 multiply  100    100000000000000000000000000 -> 10000000000000000000000000000
       
   537 dqmul1060 multiply  100    10000000000000000000000000000000 -> 1000000000000000000000000000000000
       
   538 
       
   539 dqmul1061 multiply  1000   0.01             -> 10.00
       
   540 dqmul1062 multiply  1000   0.1              -> 100.0
       
   541 dqmul1063 multiply  1000   1                -> 1000
       
   542 dqmul1064 multiply  1000   10               -> 10000
       
   543 dqmul1065 multiply  1000   100              -> 100000
       
   544 dqmul1066 multiply  1000   1000             -> 1000000
       
   545 dqmul1067 multiply  1000   10000            -> 10000000
       
   546 dqmul1068 multiply  1000   100000           -> 100000000
       
   547 dqmul1069 multiply  1000   1000000          -> 1000000000
       
   548 dqmul1070 multiply  1000   10000000         -> 10000000000
       
   549 dqmul1071 multiply  1000   100000000        -> 100000000000
       
   550 dqmul1072 multiply  1000   1000000000       -> 1000000000000
       
   551 dqmul1073 multiply  1000   10000000000      -> 10000000000000
       
   552 dqmul1074 multiply  1000   100000000000     -> 100000000000000
       
   553 dqmul1075 multiply  1000   1000000000000    -> 1000000000000000
       
   554 
       
   555 dqmul1076 multiply  1000   1000000000000000 -> 1000000000000000000
       
   556 dqmul1077 multiply  1000   100000000000000000000000 -> 100000000000000000000000000
       
   557 dqmul1078 multiply  1000   1000000000000000000000000 -> 1000000000000000000000000000
       
   558 dqmul1079 multiply  1000   10000000000000000000000000 -> 10000000000000000000000000000
       
   559 dqmul1080 multiply  1000   1000000000000000000000000000000 -> 1000000000000000000000000000000000
       
   560 
       
   561 dqmul1081 multiply  10000  0.001            -> 10.000
       
   562 dqmul1082 multiply  10000  0.01             -> 100.00
       
   563 dqmul1083 multiply  10000  0.1              -> 1000.0
       
   564 dqmul1084 multiply  10000  1                -> 10000
       
   565 dqmul1085 multiply  10000  10               -> 100000
       
   566 dqmul1086 multiply  10000  100              -> 1000000
       
   567 dqmul1087 multiply  10000  1000             -> 10000000
       
   568 dqmul1088 multiply  10000  10000            -> 100000000
       
   569 dqmul1089 multiply  10000  100000           -> 1000000000
       
   570 dqmul1090 multiply  10000  1000000          -> 10000000000
       
   571 dqmul1091 multiply  10000  10000000         -> 100000000000
       
   572 dqmul1092 multiply  10000  100000000        -> 1000000000000
       
   573 dqmul1093 multiply  10000  1000000000       -> 10000000000000
       
   574 dqmul1094 multiply  10000  10000000000      -> 100000000000000
       
   575 dqmul1095 multiply  10000  100000000000     -> 1000000000000000
       
   576 
       
   577 dqmul1096 multiply  10000  100000000000000 -> 1000000000000000000
       
   578 dqmul1097 multiply  10000  10000000000000000000000 -> 100000000000000000000000000
       
   579 dqmul1098 multiply  10000  100000000000000000000000 -> 1000000000000000000000000000
       
   580 dqmul1099 multiply  10000  1000000000000000000000000 -> 10000000000000000000000000000
       
   581 dqmul1100 multiply  10000  100000000000000000000000000000 -> 1000000000000000000000000000000000
       
   582 
       
   583 dqmul1107 multiply  10000   99999999999     ->  999999999990000
       
   584 dqmul1108 multiply  10000   99999999999     ->  999999999990000
       
   585 
       
   586 -- Null tests
       
   587 dqmul9990 multiply 10  # -> NaN Invalid_operation
       
   588 dqmul9991 multiply  # 10 -> NaN Invalid_operation
       
   589