cpython/Lib/test/decimaltestdata/dqMultiply.decTest

474 lines
25 KiB
Plaintext
Raw Normal View History

Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r58096 | brett.cannon | 2007-09-10 23:38:27 +0200 (Mon, 10 Sep 2007) | 4 lines Fix a possible segfault from recursing too deep to get the repr of a list. Closes issue #1096. ........ r58097 | bill.janssen | 2007-09-10 23:51:02 +0200 (Mon, 10 Sep 2007) | 33 lines More work on SSL support. * Much expanded test suite: All protocols tested against all other protocols. All protocols tested with all certificate options. Tests for bad key and bad cert. Test of STARTTLS functionality. Test of RAND_* functions. * Fixes for threading/malloc bug. * Issue 1065 fixed: sslsocket class renamed to SSLSocket. sslerror class renamed to SSLError. Function "wrap_socket" now used to wrap an existing socket. * Issue 1583946 finally fixed: Support for subjectAltName added. Subject name now returned as proper DN list of RDNs. * SSLError exported from socket as "sslerror". * RAND_* functions properly exported from ssl.py. * Documentation improved: Example of how to create a self-signed certificate. Better indexing. ........ r58098 | guido.van.rossum | 2007-09-11 00:02:25 +0200 (Tue, 11 Sep 2007) | 9 lines Patch # 1140 (my code, approved by Effbot). Make sure the type of the return value of re.sub(x, y, z) is the type of y+x (i.e. unicode if either is unicode, str if they are both str) even if there are no substitutions or if x==z (which triggered various special cases in join_list()). Could be backported to 2.5; no need to port to 3.0. ........ r58099 | guido.van.rossum | 2007-09-11 00:36:02 +0200 (Tue, 11 Sep 2007) | 8 lines Patch # 1026 by Benjamin Aranguren (with Alex Martelli): Backport abc.py and isinstance/issubclass overloading to 2.6. I had to backport test_typechecks.py myself, and make one small change to abc.py to avoid duplicate work when x.__class__ and type(x) are the same. ........ r58100 | bill.janssen | 2007-09-11 01:41:24 +0200 (Tue, 11 Sep 2007) | 3 lines A better way of finding an open port to test with. ........ r58101 | bill.janssen | 2007-09-11 03:09:19 +0200 (Tue, 11 Sep 2007) | 4 lines Make sure test_ssl doesn't reference the ssl module in a context where it can't be imported. ........ r58102 | bill.janssen | 2007-09-11 04:42:07 +0200 (Tue, 11 Sep 2007) | 3 lines Fix some documentation bugs. ........ r58103 | nick.coghlan | 2007-09-11 16:01:18 +0200 (Tue, 11 Sep 2007) | 1 line Always use the -E flag when spawning subprocesses in test_cmd_line (Issue 1056) ........ r58106 | thomas.heller | 2007-09-11 21:17:48 +0200 (Tue, 11 Sep 2007) | 3 lines Disable some tests that fail on the 'ppc Debian unstable' buildbot to find out if they cause the segfault on the 'alpha Debian' machine. ........ r58108 | brett.cannon | 2007-09-11 23:02:28 +0200 (Tue, 11 Sep 2007) | 6 lines Generators had their throw() method allowing string exceptions. That's a no-no. Fixes issue #1147. Need to fix 2.5 to raise a proper warning if a string exception is passed in. ........ r58112 | georg.brandl | 2007-09-12 20:03:51 +0200 (Wed, 12 Sep 2007) | 3 lines New documentation page for the bdb module. (This doesn't need to be merged to Py3k.) ........ r58114 | georg.brandl | 2007-09-12 20:05:57 +0200 (Wed, 12 Sep 2007) | 2 lines Bug #1152: use non-deprecated name in example. ........ r58115 | georg.brandl | 2007-09-12 20:08:33 +0200 (Wed, 12 Sep 2007) | 2 lines Fix #1122: wrong return type documented for various _Size() functions. ........ r58117 | georg.brandl | 2007-09-12 20:10:56 +0200 (Wed, 12 Sep 2007) | 2 lines Fix #1139: PyFile_Encoding really is PyFile_SetEncoding. ........ r58119 | georg.brandl | 2007-09-12 20:29:18 +0200 (Wed, 12 Sep 2007) | 2 lines bug #1154: release memory allocated by "es" PyArg_ParseTuple format specifier. ........ r58121 | bill.janssen | 2007-09-12 20:52:05 +0200 (Wed, 12 Sep 2007) | 1 line root certificate for https://svn.python.org/, used in test_ssl ........ r58122 | georg.brandl | 2007-09-12 21:00:07 +0200 (Wed, 12 Sep 2007) | 3 lines Bug #1153: repr.repr() now doesn't require set and dictionary items to be orderable to properly represent them. ........ r58125 | georg.brandl | 2007-09-12 21:29:28 +0200 (Wed, 12 Sep 2007) | 4 lines #1120: put explicit version in the shebang lines of pydoc, idle and smtpd.py scripts that are installed by setup.py. That way, they work when only "make altinstall" is used. ........ r58139 | mark.summerfield | 2007-09-13 16:54:30 +0200 (Thu, 13 Sep 2007) | 9 lines Replaced variable o with obj in operator.rst because o is easy to confuse. Added a note about Python 3's collections.Mapping etc., above section that describes isMappingType() etc. Added xrefs between os, os.path, fileinput, and open(). ........ r58143 | facundo.batista | 2007-09-13 20:13:15 +0200 (Thu, 13 Sep 2007) | 7 lines Merged the decimal-branch (revisions 54886 to 58140). Decimal is now fully updated to the latests Decimal Specification (v1.66) and the latests test cases (v2.56). Thanks to Mark Dickinson for all his help during this process. ........ r58145 | facundo.batista | 2007-09-13 20:42:09 +0200 (Thu, 13 Sep 2007) | 7 lines Put the parameter watchexp back in (changed watchexp from an int to a bool). Also second argument to watchexp is now converted to Decimal, just as with all the other two-argument operations. Thanks Mark Dickinson. ........ r58147 | andrew.kuchling | 2007-09-14 00:49:34 +0200 (Fri, 14 Sep 2007) | 1 line Add various items ........ r58148 | andrew.kuchling | 2007-09-14 00:50:10 +0200 (Fri, 14 Sep 2007) | 1 line Make target unique ........ r58154 | facundo.batista | 2007-09-14 20:58:34 +0200 (Fri, 14 Sep 2007) | 3 lines Included the new functions, and new descriptions. ........ r58155 | thomas.heller | 2007-09-14 21:40:35 +0200 (Fri, 14 Sep 2007) | 2 lines ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris. Fixes issue #1777530; will backport to release25-maint. ........ r58159 | facundo.batista | 2007-09-14 23:29:52 +0200 (Fri, 14 Sep 2007) | 3 lines Some additions (examples and a bit on the tutorial). ........ r58160 | georg.brandl | 2007-09-15 18:53:36 +0200 (Sat, 15 Sep 2007) | 2 lines Remove bdb from the "undocumented modules" list. ........ r58164 | bill.janssen | 2007-09-17 00:06:00 +0200 (Mon, 17 Sep 2007) | 15 lines Add support for asyncore server-side SSL support. This requires adding the 'makefile' method to ssl.SSLSocket, and importing the requisite fakefile class from socket.py, and making the appropriate changes to it to make it use the SSL connection. Added sample HTTPS server to test_ssl.py, and test that uses it. Change SSL tests to use https://svn.python.org/, instead of www.sf.net and pop.gmail.com. Added utility function to ssl module, get_server_certificate, to wrap up the several things to be done to pull a certificate from a remote server. ........ r58173 | bill.janssen | 2007-09-17 01:16:46 +0200 (Mon, 17 Sep 2007) | 1 line use binary mode when reading files for testAsyncore to make Windows happy ........ r58175 | raymond.hettinger | 2007-09-17 02:55:00 +0200 (Mon, 17 Sep 2007) | 7 lines Sync-up named tuples with the latest version of the ASPN recipe. Allows optional commas in the field-name spec (help when named tuples are used in conjuction with sql queries). Adds the __fields__ attribute for introspection and to support conversion to dictionary form. Adds a __replace__() method similar to str.replace() but using a named field as a target. Clean-up spelling and presentation in doc-strings. ........ r58176 | brett.cannon | 2007-09-17 05:28:34 +0200 (Mon, 17 Sep 2007) | 5 lines Add a bunch of GIL release/acquire points in tp_print implementations and for PyObject_Print(). Closes issue #1164. ........ r58177 | sean.reifschneider | 2007-09-17 07:45:04 +0200 (Mon, 17 Sep 2007) | 2 lines issue1597011: Fix for bz2 module corner-case error due to error checking bug. ........ r58180 | facundo.batista | 2007-09-17 18:26:50 +0200 (Mon, 17 Sep 2007) | 3 lines Decimal is updated, :) ........ r58181 | facundo.batista | 2007-09-17 19:30:13 +0200 (Mon, 17 Sep 2007) | 5 lines The methods always return Decimal classes, even if they're executed through a subclass (thanks Mark Dickinson). Added a bit of testing for this. ........ r58183 | sean.reifschneider | 2007-09-17 22:53:21 +0200 (Mon, 17 Sep 2007) | 2 lines issue1082: Fixing platform and system for Vista. ........ r58185 | andrew.kuchling | 2007-09-18 03:36:16 +0200 (Tue, 18 Sep 2007) | 1 line Add item; sort properly ........ r58186 | raymond.hettinger | 2007-09-18 05:33:19 +0200 (Tue, 18 Sep 2007) | 1 line Handle corner cased on 0-tuples and 1-tuples. Add verbose option so people can see how it works. ........ r58192 | georg.brandl | 2007-09-18 09:24:40 +0200 (Tue, 18 Sep 2007) | 2 lines A bit of reordering, also show more subheadings in the lang ref index. ........ r58193 | facundo.batista | 2007-09-18 18:53:18 +0200 (Tue, 18 Sep 2007) | 4 lines Speed up of the various division operations (remainder, divide, divideint and divmod). Thanks Mark Dickinson. ........ r58197 | raymond.hettinger | 2007-09-19 00:18:02 +0200 (Wed, 19 Sep 2007) | 1 line Cleanup docs for NamedTuple. ........
2007-09-19 00:06:30 -03:00
------------------------------------------------------------------------
-- dqMultiply.decTest -- decQuad multiplication --
-- Copyright (c) IBM Corporation, 1981, 2007. All rights reserved. --
------------------------------------------------------------------------
-- 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 --
------------------------------------------------------------------------
version: 2.56
-- This set of tests are for decQuads only; all arguments are
-- representable in a decQuad
extended: 1
clamp: 1
precision: 34
maxExponent: 6144
minExponent: -6143
rounding: half_even
-- sanity checks
dqmul000 multiply 2 2 -> 4
dqmul001 multiply 2 3 -> 6
dqmul002 multiply 5 1 -> 5
dqmul003 multiply 5 2 -> 10
dqmul004 multiply 1.20 2 -> 2.40
dqmul005 multiply 1.20 0 -> 0.00
dqmul006 multiply 1.20 -2 -> -2.40
dqmul007 multiply -1.20 2 -> -2.40
dqmul008 multiply -1.20 0 -> -0.00
dqmul009 multiply -1.20 -2 -> 2.40
dqmul010 multiply 5.09 7.1 -> 36.139
dqmul011 multiply 2.5 4 -> 10.0
dqmul012 multiply 2.50 4 -> 10.00
dqmul013 multiply 1.23456789 1.0000000000000000000000000000 -> 1.234567890000000000000000000000000 Rounded
dqmul015 multiply 2.50 4 -> 10.00
dqmul016 multiply 9.99999999999999999 9.99999999999999999 -> 99.99999999999999980000000000000000 Inexact Rounded
dqmul017 multiply 9.99999999999999999 -9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded
dqmul018 multiply -9.99999999999999999 9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded
dqmul019 multiply -9.99999999999999999 -9.99999999999999999 -> 99.99999999999999980000000000000000 Inexact Rounded
-- zeros, etc.
dqmul021 multiply 0 0 -> 0
dqmul022 multiply 0 -0 -> -0
dqmul023 multiply -0 0 -> -0
dqmul024 multiply -0 -0 -> 0
dqmul025 multiply -0.0 -0.0 -> 0.00
dqmul026 multiply -0.0 -0.0 -> 0.00
dqmul027 multiply -0.0 -0.0 -> 0.00
dqmul028 multiply -0.0 -0.0 -> 0.00
dqmul030 multiply 5.00 1E-3 -> 0.00500
dqmul031 multiply 00.00 0.000 -> 0.00000
dqmul032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0
dqmul033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0
dqmul034 multiply -5.00 1E-3 -> -0.00500
dqmul035 multiply -00.00 0.000 -> -0.00000
dqmul036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0
dqmul037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0
dqmul038 multiply 5.00 -1E-3 -> -0.00500
dqmul039 multiply 00.00 -0.000 -> -0.00000
dqmul040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0
dqmul041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0
dqmul042 multiply -5.00 -1E-3 -> 0.00500
dqmul043 multiply -00.00 -0.000 -> 0.00000
dqmul044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0
dqmul045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0
-- examples from decarith
dqmul050 multiply 1.20 3 -> 3.60
dqmul051 multiply 7 3 -> 21
dqmul052 multiply 0.9 0.8 -> 0.72
dqmul053 multiply 0.9 -0 -> -0.0
dqmul054 multiply 654321 654321 -> 428135971041
dqmul060 multiply 123.45 1e7 -> 1.2345E+9
dqmul061 multiply 123.45 1e8 -> 1.2345E+10
dqmul062 multiply 123.45 1e+9 -> 1.2345E+11
dqmul063 multiply 123.45 1e10 -> 1.2345E+12
dqmul064 multiply 123.45 1e11 -> 1.2345E+13
dqmul065 multiply 123.45 1e12 -> 1.2345E+14
dqmul066 multiply 123.45 1e13 -> 1.2345E+15
-- test some intermediate lengths
-- 1234567890123456
dqmul080 multiply 0.1 1230123456456789 -> 123012345645678.9
dqmul084 multiply 0.1 1230123456456789 -> 123012345645678.9
dqmul090 multiply 1230123456456789 0.1 -> 123012345645678.9
dqmul094 multiply 1230123456456789 0.1 -> 123012345645678.9
-- test some more edge cases and carries
dqmul101 multiply 9 9 -> 81
dqmul102 multiply 9 90 -> 810
dqmul103 multiply 9 900 -> 8100
dqmul104 multiply 9 9000 -> 81000
dqmul105 multiply 9 90000 -> 810000
dqmul106 multiply 9 900000 -> 8100000
dqmul107 multiply 9 9000000 -> 81000000
dqmul108 multiply 9 90000000 -> 810000000
dqmul109 multiply 9 900000000 -> 8100000000
dqmul110 multiply 9 9000000000 -> 81000000000
dqmul111 multiply 9 90000000000 -> 810000000000
dqmul112 multiply 9 900000000000 -> 8100000000000
dqmul113 multiply 9 9000000000000 -> 81000000000000
dqmul114 multiply 9 90000000000000 -> 810000000000000
dqmul115 multiply 9 900000000000000 -> 8100000000000000
--dqmul116 multiply 9 9000000000000000 -> 81000000000000000
--dqmul117 multiply 9 90000000000000000 -> 810000000000000000
--dqmul118 multiply 9 900000000000000000 -> 8100000000000000000
--dqmul119 multiply 9 9000000000000000000 -> 81000000000000000000
--dqmul120 multiply 9 90000000000000000000 -> 810000000000000000000
--dqmul121 multiply 9 900000000000000000000 -> 8100000000000000000000
--dqmul122 multiply 9 9000000000000000000000 -> 81000000000000000000000
--dqmul123 multiply 9 90000000000000000000000 -> 810000000000000000000000
-- test some more edge cases without carries
dqmul131 multiply 3 3 -> 9
dqmul132 multiply 3 30 -> 90
dqmul133 multiply 3 300 -> 900
dqmul134 multiply 3 3000 -> 9000
dqmul135 multiply 3 30000 -> 90000
dqmul136 multiply 3 300000 -> 900000
dqmul137 multiply 3 3000000 -> 9000000
dqmul138 multiply 3 30000000 -> 90000000
dqmul139 multiply 3 300000000 -> 900000000
dqmul140 multiply 3 3000000000 -> 9000000000
dqmul141 multiply 3 30000000000 -> 90000000000
dqmul142 multiply 3 300000000000 -> 900000000000
dqmul143 multiply 3 3000000000000 -> 9000000000000
dqmul144 multiply 3 30000000000000 -> 90000000000000
dqmul145 multiply 3 300000000000000 -> 900000000000000
dqmul146 multiply 3 3000000000000000 -> 9000000000000000
dqmul147 multiply 3 30000000000000000 -> 90000000000000000
dqmul148 multiply 3 300000000000000000 -> 900000000000000000
dqmul149 multiply 3 3000000000000000000 -> 9000000000000000000
dqmul150 multiply 3 30000000000000000000 -> 90000000000000000000
dqmul151 multiply 3 300000000000000000000 -> 900000000000000000000
dqmul152 multiply 3 3000000000000000000000 -> 9000000000000000000000
dqmul153 multiply 3 30000000000000000000000 -> 90000000000000000000000
dqmul263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928296 Inexact Rounded
-- test some edge cases with exact rounding
dqmul301 multiply 900000000000000000 9 -> 8100000000000000000
dqmul302 multiply 900000000000000000 90 -> 81000000000000000000
dqmul303 multiply 900000000000000000 900 -> 810000000000000000000
dqmul304 multiply 900000000000000000 9000 -> 8100000000000000000000
dqmul305 multiply 900000000000000000 90000 -> 81000000000000000000000
dqmul306 multiply 900000000000000000 900000 -> 810000000000000000000000
dqmul307 multiply 900000000000000000 9000000 -> 8100000000000000000000000
dqmul308 multiply 900000000000000000 90000000 -> 81000000000000000000000000
dqmul309 multiply 900000000000000000 900000000 -> 810000000000000000000000000
dqmul310 multiply 900000000000000000 9000000000 -> 8100000000000000000000000000
dqmul311 multiply 900000000000000000 90000000000 -> 81000000000000000000000000000
dqmul312 multiply 900000000000000000 900000000000 -> 810000000000000000000000000000
dqmul313 multiply 900000000000000000 9000000000000 -> 8100000000000000000000000000000
dqmul314 multiply 900000000000000000 90000000000000 -> 81000000000000000000000000000000
dqmul315 multiply 900000000000000000 900000000000000 -> 810000000000000000000000000000000
dqmul316 multiply 900000000000000000 9000000000000000 -> 8100000000000000000000000000000000
dqmul317 multiply 9000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+34 Rounded
dqmul318 multiply 90000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+35 Rounded
dqmul319 multiply 900000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+36 Rounded
dqmul320 multiply 9000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+37 Rounded
dqmul321 multiply 90000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+38 Rounded
dqmul322 multiply 900000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+39 Rounded
dqmul323 multiply 9000000000000000000000000 9000000000000000 -> 8.100000000000000000000000000000000E+40 Rounded
-- tryzeros cases
dqmul504 multiply 0E-4260 1000E-4260 -> 0E-6176 Clamped
dqmul505 multiply 100E+4260 0E+4260 -> 0E+6111 Clamped
-- mixed with zeros
dqmul541 multiply 0 -1 -> -0
dqmul542 multiply -0 -1 -> 0
dqmul543 multiply 0 1 -> 0
dqmul544 multiply -0 1 -> -0
dqmul545 multiply -1 0 -> -0
dqmul546 multiply -1 -0 -> 0
dqmul547 multiply 1 0 -> 0
dqmul548 multiply 1 -0 -> -0
dqmul551 multiply 0.0 -1 -> -0.0
dqmul552 multiply -0.0 -1 -> 0.0
dqmul553 multiply 0.0 1 -> 0.0
dqmul554 multiply -0.0 1 -> -0.0
dqmul555 multiply -1.0 0 -> -0.0
dqmul556 multiply -1.0 -0 -> 0.0
dqmul557 multiply 1.0 0 -> 0.0
dqmul558 multiply 1.0 -0 -> -0.0
dqmul561 multiply 0 -1.0 -> -0.0
dqmul562 multiply -0 -1.0 -> 0.0
dqmul563 multiply 0 1.0 -> 0.0
dqmul564 multiply -0 1.0 -> -0.0
dqmul565 multiply -1 0.0 -> -0.0
dqmul566 multiply -1 -0.0 -> 0.0
dqmul567 multiply 1 0.0 -> 0.0
dqmul568 multiply 1 -0.0 -> -0.0
dqmul571 multiply 0.0 -1.0 -> -0.00
dqmul572 multiply -0.0 -1.0 -> 0.00
dqmul573 multiply 0.0 1.0 -> 0.00
dqmul574 multiply -0.0 1.0 -> -0.00
dqmul575 multiply -1.0 0.0 -> -0.00
dqmul576 multiply -1.0 -0.0 -> 0.00
dqmul577 multiply 1.0 0.0 -> 0.00
dqmul578 multiply 1.0 -0.0 -> -0.00
-- Specials
dqmul580 multiply Inf -Inf -> -Infinity
dqmul581 multiply Inf -1000 -> -Infinity
dqmul582 multiply Inf -1 -> -Infinity
dqmul583 multiply Inf -0 -> NaN Invalid_operation
dqmul584 multiply Inf 0 -> NaN Invalid_operation
dqmul585 multiply Inf 1 -> Infinity
dqmul586 multiply Inf 1000 -> Infinity
dqmul587 multiply Inf Inf -> Infinity
dqmul588 multiply -1000 Inf -> -Infinity
dqmul589 multiply -Inf Inf -> -Infinity
dqmul590 multiply -1 Inf -> -Infinity
dqmul591 multiply -0 Inf -> NaN Invalid_operation
dqmul592 multiply 0 Inf -> NaN Invalid_operation
dqmul593 multiply 1 Inf -> Infinity
dqmul594 multiply 1000 Inf -> Infinity
dqmul595 multiply Inf Inf -> Infinity
dqmul600 multiply -Inf -Inf -> Infinity
dqmul601 multiply -Inf -1000 -> Infinity
dqmul602 multiply -Inf -1 -> Infinity
dqmul603 multiply -Inf -0 -> NaN Invalid_operation
dqmul604 multiply -Inf 0 -> NaN Invalid_operation
dqmul605 multiply -Inf 1 -> -Infinity
dqmul606 multiply -Inf 1000 -> -Infinity
dqmul607 multiply -Inf Inf -> -Infinity
dqmul608 multiply -1000 Inf -> -Infinity
dqmul609 multiply -Inf -Inf -> Infinity
dqmul610 multiply -1 -Inf -> Infinity
dqmul611 multiply -0 -Inf -> NaN Invalid_operation
dqmul612 multiply 0 -Inf -> NaN Invalid_operation
dqmul613 multiply 1 -Inf -> -Infinity
dqmul614 multiply 1000 -Inf -> -Infinity
dqmul615 multiply Inf -Inf -> -Infinity
dqmul621 multiply NaN -Inf -> NaN
dqmul622 multiply NaN -1000 -> NaN
dqmul623 multiply NaN -1 -> NaN
dqmul624 multiply NaN -0 -> NaN
dqmul625 multiply NaN 0 -> NaN
dqmul626 multiply NaN 1 -> NaN
dqmul627 multiply NaN 1000 -> NaN
dqmul628 multiply NaN Inf -> NaN
dqmul629 multiply NaN NaN -> NaN
dqmul630 multiply -Inf NaN -> NaN
dqmul631 multiply -1000 NaN -> NaN
dqmul632 multiply -1 NaN -> NaN
dqmul633 multiply -0 NaN -> NaN
dqmul634 multiply 0 NaN -> NaN
dqmul635 multiply 1 NaN -> NaN
dqmul636 multiply 1000 NaN -> NaN
dqmul637 multiply Inf NaN -> NaN
dqmul641 multiply sNaN -Inf -> NaN Invalid_operation
dqmul642 multiply sNaN -1000 -> NaN Invalid_operation
dqmul643 multiply sNaN -1 -> NaN Invalid_operation
dqmul644 multiply sNaN -0 -> NaN Invalid_operation
dqmul645 multiply sNaN 0 -> NaN Invalid_operation
dqmul646 multiply sNaN 1 -> NaN Invalid_operation
dqmul647 multiply sNaN 1000 -> NaN Invalid_operation
dqmul648 multiply sNaN NaN -> NaN Invalid_operation
dqmul649 multiply sNaN sNaN -> NaN Invalid_operation
dqmul650 multiply NaN sNaN -> NaN Invalid_operation
dqmul651 multiply -Inf sNaN -> NaN Invalid_operation
dqmul652 multiply -1000 sNaN -> NaN Invalid_operation
dqmul653 multiply -1 sNaN -> NaN Invalid_operation
dqmul654 multiply -0 sNaN -> NaN Invalid_operation
dqmul655 multiply 0 sNaN -> NaN Invalid_operation
dqmul656 multiply 1 sNaN -> NaN Invalid_operation
dqmul657 multiply 1000 sNaN -> NaN Invalid_operation
dqmul658 multiply Inf sNaN -> NaN Invalid_operation
dqmul659 multiply NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dqmul661 multiply NaN9 -Inf -> NaN9
dqmul662 multiply NaN8 999 -> NaN8
dqmul663 multiply NaN71 Inf -> NaN71
dqmul664 multiply NaN6 NaN5 -> NaN6
dqmul665 multiply -Inf NaN4 -> NaN4
dqmul666 multiply -999 NaN33 -> NaN33
dqmul667 multiply Inf NaN2 -> NaN2
dqmul671 multiply sNaN99 -Inf -> NaN99 Invalid_operation
dqmul672 multiply sNaN98 -11 -> NaN98 Invalid_operation
dqmul673 multiply sNaN97 NaN -> NaN97 Invalid_operation
dqmul674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation
dqmul675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation
dqmul676 multiply -Inf sNaN92 -> NaN92 Invalid_operation
dqmul677 multiply 088 sNaN91 -> NaN91 Invalid_operation
dqmul678 multiply Inf sNaN90 -> NaN90 Invalid_operation
dqmul679 multiply NaN sNaN89 -> NaN89 Invalid_operation
dqmul681 multiply -NaN9 -Inf -> -NaN9
dqmul682 multiply -NaN8 999 -> -NaN8
dqmul683 multiply -NaN71 Inf -> -NaN71
dqmul684 multiply -NaN6 -NaN5 -> -NaN6
dqmul685 multiply -Inf -NaN4 -> -NaN4
dqmul686 multiply -999 -NaN33 -> -NaN33
dqmul687 multiply Inf -NaN2 -> -NaN2
dqmul691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation
dqmul692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation
dqmul693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation
dqmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
dqmul695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation
dqmul696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation
dqmul697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation
dqmul698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation
dqmul699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation
dqmul701 multiply -NaN -Inf -> -NaN
dqmul702 multiply -NaN 999 -> -NaN
dqmul703 multiply -NaN Inf -> -NaN
dqmul704 multiply -NaN -NaN -> -NaN
dqmul705 multiply -Inf -NaN0 -> -NaN
dqmul706 multiply -999 -NaN -> -NaN
dqmul707 multiply Inf -NaN -> -NaN
dqmul711 multiply -sNaN -Inf -> -NaN Invalid_operation
dqmul712 multiply -sNaN -11 -> -NaN Invalid_operation
dqmul713 multiply -sNaN00 NaN -> -NaN Invalid_operation
dqmul714 multiply -sNaN -sNaN -> -NaN Invalid_operation
dqmul715 multiply -NaN -sNaN -> -NaN Invalid_operation
dqmul716 multiply -Inf -sNaN -> -NaN Invalid_operation
dqmul717 multiply 088 -sNaN -> -NaN Invalid_operation
dqmul718 multiply Inf -sNaN -> -NaN Invalid_operation
dqmul719 multiply -NaN -sNaN -> -NaN Invalid_operation
-- overflow and underflow tests .. note subnormal results
-- signs
dqmul751 multiply 1e+4277 1e+3311 -> Infinity Overflow Inexact Rounded
dqmul752 multiply 1e+4277 -1e+3311 -> -Infinity Overflow Inexact Rounded
dqmul753 multiply -1e+4277 1e+3311 -> -Infinity Overflow Inexact Rounded
dqmul754 multiply -1e+4277 -1e+3311 -> Infinity Overflow Inexact Rounded
dqmul755 multiply 1e-4277 1e-3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul756 multiply 1e-4277 -1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul757 multiply -1e-4277 1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul758 multiply -1e-4277 -1e-3311 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
dqmul760 multiply 1e-6069 1e-101 -> 1E-6170 Subnormal
dqmul761 multiply 1e-6069 1e-102 -> 1E-6171 Subnormal
dqmul762 multiply 1e-6069 1e-103 -> 1E-6172 Subnormal
dqmul763 multiply 1e-6069 1e-104 -> 1E-6173 Subnormal
dqmul764 multiply 1e-6069 1e-105 -> 1E-6174 Subnormal
dqmul765 multiply 1e-6069 1e-106 -> 1E-6175 Subnormal
dqmul766 multiply 1e-6069 1e-107 -> 1E-6176 Subnormal
dqmul767 multiply 1e-6069 1e-108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul768 multiply 1e-6069 1e-109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul769 multiply 1e-6069 1e-110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-- [no equivalent of 'subnormal' for overflow]
dqmul770 multiply 1e+40 1e+6101 -> 1.000000000000000000000000000000E+6141 Clamped
dqmul771 multiply 1e+40 1e+6102 -> 1.0000000000000000000000000000000E+6142 Clamped
dqmul772 multiply 1e+40 1e+6103 -> 1.00000000000000000000000000000000E+6143 Clamped
dqmul773 multiply 1e+40 1e+6104 -> 1.000000000000000000000000000000000E+6144 Clamped
dqmul774 multiply 1e+40 1e+6105 -> Infinity Overflow Inexact Rounded
dqmul775 multiply 1e+40 1e+6106 -> Infinity Overflow Inexact Rounded
dqmul776 multiply 1e+40 1e+6107 -> Infinity Overflow Inexact Rounded
dqmul777 multiply 1e+40 1e+6108 -> Infinity Overflow Inexact Rounded
dqmul778 multiply 1e+40 1e+6109 -> Infinity Overflow Inexact Rounded
dqmul779 multiply 1e+40 1e+6110 -> Infinity Overflow Inexact Rounded
dqmul801 multiply 1.0000E-6172 1 -> 1.0000E-6172 Subnormal
dqmul802 multiply 1.000E-6172 1e-1 -> 1.000E-6173 Subnormal
dqmul803 multiply 1.00E-6172 1e-2 -> 1.00E-6174 Subnormal
dqmul804 multiply 1.0E-6172 1e-3 -> 1.0E-6175 Subnormal
dqmul805 multiply 1.0E-6172 1e-4 -> 1E-6176 Subnormal Rounded
dqmul806 multiply 1.3E-6172 1e-4 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul807 multiply 1.5E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul808 multiply 1.7E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul809 multiply 2.3E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul810 multiply 2.5E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul811 multiply 2.7E-6172 1e-4 -> 3E-6176 Underflow Subnormal Inexact Rounded
dqmul812 multiply 1.49E-6172 1e-4 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul813 multiply 1.50E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul814 multiply 1.51E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul815 multiply 2.49E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul816 multiply 2.50E-6172 1e-4 -> 2E-6176 Underflow Subnormal Inexact Rounded
dqmul817 multiply 2.51E-6172 1e-4 -> 3E-6176 Underflow Subnormal Inexact Rounded
dqmul818 multiply 1E-6172 1e-4 -> 1E-6176 Subnormal
dqmul819 multiply 3E-6172 1e-5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul820 multiply 5E-6172 1e-5 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul821 multiply 7E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul822 multiply 9E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul823 multiply 9.9E-6172 1e-5 -> 1E-6176 Underflow Subnormal Inexact Rounded
dqmul824 multiply 1E-6172 -1e-4 -> -1E-6176 Subnormal
dqmul825 multiply 3E-6172 -1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul826 multiply -5E-6172 1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul827 multiply 7E-6172 -1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqmul828 multiply -9E-6172 1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqmul829 multiply 9.9E-6172 -1e-5 -> -1E-6176 Underflow Subnormal Inexact Rounded
dqmul830 multiply 3.0E-6172 -1e-5 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul831 multiply 1.0E-5977 1e-200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
dqmul832 multiply 1.0E-5977 1e-199 -> 1E-6176 Subnormal Rounded
dqmul833 multiply 1.0E-5977 1e-198 -> 1.0E-6175 Subnormal
dqmul834 multiply 2.0E-5977 2e-198 -> 4.0E-6175 Subnormal
dqmul835 multiply 4.0E-5977 4e-198 -> 1.60E-6174 Subnormal
dqmul836 multiply 10.0E-5977 10e-198 -> 1.000E-6173 Subnormal
dqmul837 multiply 30.0E-5977 30e-198 -> 9.000E-6173 Subnormal
dqmul838 multiply 40.0E-5982 40e-166 -> 1.6000E-6145 Subnormal
dqmul839 multiply 40.0E-5982 40e-165 -> 1.6000E-6144 Subnormal
dqmul840 multiply 40.0E-5982 40e-164 -> 1.6000E-6143
-- Long operand overflow may be a different path
dqmul870 multiply 100 9.999E+6143 -> Infinity Inexact Overflow Rounded
dqmul871 multiply 100 -9.999E+6143 -> -Infinity Inexact Overflow Rounded
dqmul872 multiply 9.999E+6143 100 -> Infinity Inexact Overflow Rounded
dqmul873 multiply -9.999E+6143 100 -> -Infinity Inexact Overflow Rounded
-- check for double-rounded subnormals
dqmul881 multiply 1.2347E-6133 1.2347E-40 -> 1.524E-6173 Inexact Rounded Subnormal Underflow
dqmul882 multiply 1.234E-6133 1.234E-40 -> 1.523E-6173 Inexact Rounded Subnormal Underflow
dqmul883 multiply 1.23E-6133 1.23E-40 -> 1.513E-6173 Inexact Rounded Subnormal Underflow
dqmul884 multiply 1.2E-6133 1.2E-40 -> 1.44E-6173 Subnormal
dqmul885 multiply 1.2E-6133 1.2E-41 -> 1.44E-6174 Subnormal
dqmul886 multiply 1.2E-6133 1.2E-42 -> 1.4E-6175 Subnormal Inexact Rounded Underflow
dqmul887 multiply 1.2E-6133 1.3E-42 -> 1.6E-6175 Subnormal Inexact Rounded Underflow
dqmul888 multiply 1.3E-6133 1.3E-42 -> 1.7E-6175 Subnormal Inexact Rounded Underflow
dqmul889 multiply 1.3E-6133 1.3E-43 -> 2E-6176 Subnormal Inexact Rounded Underflow
dqmul890 multiply 1.3E-6134 1.3E-43 -> 0E-6176 Clamped Subnormal Inexact Rounded Underflow
dqmul891 multiply 1.2345E-39 1.234E-6133 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow
dqmul892 multiply 1.23456E-39 1.234E-6133 -> 1.5234E-6172 Inexact Rounded Subnormal Underflow
dqmul893 multiply 1.2345E-40 1.234E-6133 -> 1.523E-6173 Inexact Rounded Subnormal Underflow
dqmul894 multiply 1.23456E-40 1.234E-6133 -> 1.523E-6173 Inexact Rounded Subnormal Underflow
dqmul895 multiply 1.2345E-41 1.234E-6133 -> 1.52E-6174 Inexact Rounded Subnormal Underflow
dqmul896 multiply 1.23456E-41 1.234E-6133 -> 1.52E-6174 Inexact Rounded Subnormal Underflow
-- Now explore the case where we get a normal result with Underflow
-- prove operands are exact
dqmul906 multiply 9.999999999999999999999999999999999E-6143 1 -> 9.999999999999999999999999999999999E-6143
dqmul907 multiply 1 0.09999999999999999999999999999999999 -> 0.09999999999999999999999999999999999
-- the next rounds to Nmin
dqmul908 multiply 9.999999999999999999999999999999999E-6143 0.09999999999999999999999999999999999 -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded
-- hugest
dqmul909 multiply 9999999999999999999999999999999999 9999999999999999999999999999999999 -> 9.999999999999999999999999999999998E+67 Inexact Rounded
-- Examples from SQL proposal (Krishna Kulkarni)
precision: 34
rounding: half_up
maxExponent: 6144
minExponent: -6143
dqmul1001 multiply 130E-2 120E-2 -> 1.5600
dqmul1002 multiply 130E-2 12E-1 -> 1.560
dqmul1003 multiply 130E-2 1E0 -> 1.30
dqmul1004 multiply 1E2 1E4 -> 1E+6
-- Null tests
dqmul990 multiply 10 # -> NaN Invalid_operation
dqmul991 multiply # 10 -> NaN Invalid_operation