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.
........
diff --git a/Lib/test/decimaltestdata/ddMultiply.decTest b/Lib/test/decimaltestdata/ddMultiply.decTest
new file mode 100644
index 0000000..01e0ffe
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddMultiply.decTest
@@ -0,0 +1,463 @@
+------------------------------------------------------------------------

+-- ddMultiply.decTest -- decDouble 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 decDoubles only; all arguments are

+-- representable in a decDouble

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddmul000 multiply 2      2 -> 4

+ddmul001 multiply 2      3 -> 6

+ddmul002 multiply 5      1 -> 5

+ddmul003 multiply 5      2 -> 10

+ddmul004 multiply 1.20   2 -> 2.40

+ddmul005 multiply 1.20   0 -> 0.00

+ddmul006 multiply 1.20  -2 -> -2.40

+ddmul007 multiply -1.20  2 -> -2.40

+ddmul008 multiply -1.20  0 -> -0.00

+ddmul009 multiply -1.20 -2 -> 2.40

+ddmul010 multiply 5.09 7.1 -> 36.139

+ddmul011 multiply 2.5    4 -> 10.0

+ddmul012 multiply 2.50   4 -> 10.00

+ddmul013 multiply 1.23456789 1.00000000 -> 1.234567890000000 Rounded

+ddmul015 multiply 2.50   4 -> 10.00

+ddmul016 multiply  9.999999999  9.999999999 ->  99.99999998000000 Inexact Rounded

+ddmul017 multiply  9.999999999 -9.999999999 -> -99.99999998000000 Inexact Rounded

+ddmul018 multiply -9.999999999  9.999999999 -> -99.99999998000000 Inexact Rounded

+ddmul019 multiply -9.999999999 -9.999999999 ->  99.99999998000000 Inexact Rounded

+

+-- zeros, etc.

+ddmul021 multiply  0      0     ->  0

+ddmul022 multiply  0     -0     -> -0

+ddmul023 multiply -0      0     -> -0

+ddmul024 multiply -0     -0     ->  0

+ddmul025 multiply -0.0   -0.0   ->  0.00

+ddmul026 multiply -0.0   -0.0   ->  0.00

+ddmul027 multiply -0.0   -0.0   ->  0.00

+ddmul028 multiply -0.0   -0.0   ->  0.00

+ddmul030 multiply  5.00   1E-3  ->  0.00500

+ddmul031 multiply  00.00  0.000 ->  0.00000

+ddmul032 multiply  00.00  0E-3  ->  0.00000     -- rhs is 0

+ddmul033 multiply  0E-3   00.00 ->  0.00000     -- lhs is 0

+ddmul034 multiply -5.00   1E-3  -> -0.00500

+ddmul035 multiply -00.00  0.000 -> -0.00000

+ddmul036 multiply -00.00  0E-3  -> -0.00000     -- rhs is 0

+ddmul037 multiply -0E-3   00.00 -> -0.00000     -- lhs is 0

+ddmul038 multiply  5.00  -1E-3  -> -0.00500

+ddmul039 multiply  00.00 -0.000 -> -0.00000

+ddmul040 multiply  00.00 -0E-3  -> -0.00000     -- rhs is 0

+ddmul041 multiply  0E-3  -00.00 -> -0.00000     -- lhs is 0

+ddmul042 multiply -5.00  -1E-3  ->  0.00500

+ddmul043 multiply -00.00 -0.000 ->  0.00000

+ddmul044 multiply -00.00 -0E-3  ->  0.00000     -- rhs is 0

+ddmul045 multiply -0E-3  -00.00 ->  0.00000     -- lhs is 0

+

+-- examples from decarith

+ddmul050 multiply 1.20 3        -> 3.60

+ddmul051 multiply 7    3        -> 21

+ddmul052 multiply 0.9  0.8      -> 0.72

+ddmul053 multiply 0.9  -0       -> -0.0

+ddmul054 multiply 654321 654321 -> 428135971041

+

+ddmul060 multiply 123.45 1e7  ->  1.2345E+9

+ddmul061 multiply 123.45 1e8  ->  1.2345E+10

+ddmul062 multiply 123.45 1e+9 ->  1.2345E+11

+ddmul063 multiply 123.45 1e10 ->  1.2345E+12

+ddmul064 multiply 123.45 1e11 ->  1.2345E+13

+ddmul065 multiply 123.45 1e12 ->  1.2345E+14

+ddmul066 multiply 123.45 1e13 ->  1.2345E+15

+

+

+-- test some intermediate lengths

+--                    1234567890123456

+ddmul080 multiply 0.1 1230123456456789     -> 123012345645678.9

+ddmul084 multiply 0.1 1230123456456789     -> 123012345645678.9

+ddmul090 multiply 1230123456456789     0.1 -> 123012345645678.9

+ddmul094 multiply 1230123456456789     0.1 -> 123012345645678.9

+

+-- test some more edge cases and carries

+ddmul101 multiply 9 9   -> 81

+ddmul102 multiply 9 90   -> 810

+ddmul103 multiply 9 900   -> 8100

+ddmul104 multiply 9 9000   -> 81000

+ddmul105 multiply 9 90000   -> 810000

+ddmul106 multiply 9 900000   -> 8100000

+ddmul107 multiply 9 9000000   -> 81000000

+ddmul108 multiply 9 90000000   -> 810000000

+ddmul109 multiply 9 900000000   -> 8100000000

+ddmul110 multiply 9 9000000000   -> 81000000000

+ddmul111 multiply 9 90000000000   -> 810000000000

+ddmul112 multiply 9 900000000000   -> 8100000000000

+ddmul113 multiply 9 9000000000000   -> 81000000000000

+ddmul114 multiply 9 90000000000000   -> 810000000000000

+ddmul115 multiply 9 900000000000000   -> 8100000000000000

+--ddmul116 multiply 9 9000000000000000   -> 81000000000000000

+--ddmul117 multiply 9 90000000000000000   -> 810000000000000000

+--ddmul118 multiply 9 900000000000000000   -> 8100000000000000000

+--ddmul119 multiply 9 9000000000000000000   -> 81000000000000000000

+--ddmul120 multiply 9 90000000000000000000   -> 810000000000000000000

+--ddmul121 multiply 9 900000000000000000000   -> 8100000000000000000000

+--ddmul122 multiply 9 9000000000000000000000   -> 81000000000000000000000

+--ddmul123 multiply 9 90000000000000000000000   -> 810000000000000000000000

+-- test some more edge cases without carries

+ddmul131 multiply 3 3   -> 9

+ddmul132 multiply 3 30   -> 90

+ddmul133 multiply 3 300   -> 900

+ddmul134 multiply 3 3000   -> 9000

+ddmul135 multiply 3 30000   -> 90000

+ddmul136 multiply 3 300000   -> 900000

+ddmul137 multiply 3 3000000   -> 9000000

+ddmul138 multiply 3 30000000   -> 90000000

+ddmul139 multiply 3 300000000   -> 900000000

+ddmul140 multiply 3 3000000000   -> 9000000000

+ddmul141 multiply 3 30000000000   -> 90000000000

+ddmul142 multiply 3 300000000000   -> 900000000000

+ddmul143 multiply 3 3000000000000   -> 9000000000000

+ddmul144 multiply 3 30000000000000   -> 90000000000000

+ddmul145 multiply 3 300000000000000   -> 900000000000000

+

+-- test some edge cases with exact rounding

+ddmul301 multiply 9 9   -> 81

+ddmul302 multiply 9 90   -> 810

+ddmul303 multiply 9 900   -> 8100

+ddmul304 multiply 9 9000   -> 81000

+ddmul305 multiply 9 90000   -> 810000

+ddmul306 multiply 9 900000   -> 8100000

+ddmul307 multiply 9 9000000   -> 81000000

+ddmul308 multiply 9 90000000   -> 810000000

+ddmul309 multiply 9 900000000   -> 8100000000

+ddmul310 multiply 9 9000000000   -> 81000000000

+ddmul311 multiply 9 90000000000   -> 810000000000

+ddmul312 multiply 9 900000000000   -> 8100000000000

+ddmul313 multiply 9 9000000000000   -> 81000000000000

+ddmul314 multiply 9 90000000000000   -> 810000000000000

+ddmul315 multiply 9 900000000000000   -> 8100000000000000

+ddmul316 multiply 9 9000000000000000   -> 8.100000000000000E+16  Rounded

+ddmul317 multiply 90 9000000000000000   -> 8.100000000000000E+17  Rounded

+ddmul318 multiply 900 9000000000000000   -> 8.100000000000000E+18  Rounded

+ddmul319 multiply 9000 9000000000000000   -> 8.100000000000000E+19  Rounded

+ddmul320 multiply 90000 9000000000000000   -> 8.100000000000000E+20  Rounded

+ddmul321 multiply 900000 9000000000000000   -> 8.100000000000000E+21  Rounded

+ddmul322 multiply 9000000 9000000000000000   -> 8.100000000000000E+22  Rounded

+ddmul323 multiply 90000000 9000000000000000   -> 8.100000000000000E+23  Rounded

+

+-- tryzeros cases

+ddmul504  multiply  0E-260 1000E-260  -> 0E-398 Clamped

+ddmul505  multiply  100E+260 0E+260   -> 0E+369 Clamped

+

+-- mixed with zeros

+ddmul541 multiply  0    -1     -> -0

+ddmul542 multiply -0    -1     ->  0

+ddmul543 multiply  0     1     ->  0

+ddmul544 multiply -0     1     -> -0

+ddmul545 multiply -1     0     -> -0

+ddmul546 multiply -1    -0     ->  0

+ddmul547 multiply  1     0     ->  0

+ddmul548 multiply  1    -0     -> -0

+

+ddmul551 multiply  0.0  -1     -> -0.0

+ddmul552 multiply -0.0  -1     ->  0.0

+ddmul553 multiply  0.0   1     ->  0.0

+ddmul554 multiply -0.0   1     -> -0.0

+ddmul555 multiply -1.0   0     -> -0.0

+ddmul556 multiply -1.0  -0     ->  0.0

+ddmul557 multiply  1.0   0     ->  0.0

+ddmul558 multiply  1.0  -0     -> -0.0

+

+ddmul561 multiply  0    -1.0   -> -0.0

+ddmul562 multiply -0    -1.0   ->  0.0

+ddmul563 multiply  0     1.0   ->  0.0

+ddmul564 multiply -0     1.0   -> -0.0

+ddmul565 multiply -1     0.0   -> -0.0

+ddmul566 multiply -1    -0.0   ->  0.0

+ddmul567 multiply  1     0.0   ->  0.0

+ddmul568 multiply  1    -0.0   -> -0.0

+

+ddmul571 multiply  0.0  -1.0   -> -0.00

+ddmul572 multiply -0.0  -1.0   ->  0.00

+ddmul573 multiply  0.0   1.0   ->  0.00

+ddmul574 multiply -0.0   1.0   -> -0.00

+ddmul575 multiply -1.0   0.0   -> -0.00

+ddmul576 multiply -1.0  -0.0   ->  0.00

+ddmul577 multiply  1.0   0.0   ->  0.00

+ddmul578 multiply  1.0  -0.0   -> -0.00

+

+

+-- Specials

+ddmul580 multiply  Inf  -Inf   -> -Infinity

+ddmul581 multiply  Inf  -1000  -> -Infinity

+ddmul582 multiply  Inf  -1     -> -Infinity

+ddmul583 multiply  Inf  -0     ->  NaN  Invalid_operation

+ddmul584 multiply  Inf   0     ->  NaN  Invalid_operation

+ddmul585 multiply  Inf   1     ->  Infinity

+ddmul586 multiply  Inf   1000  ->  Infinity

+ddmul587 multiply  Inf   Inf   ->  Infinity

+ddmul588 multiply -1000  Inf   -> -Infinity

+ddmul589 multiply -Inf   Inf   -> -Infinity

+ddmul590 multiply -1     Inf   -> -Infinity

+ddmul591 multiply -0     Inf   ->  NaN  Invalid_operation

+ddmul592 multiply  0     Inf   ->  NaN  Invalid_operation

+ddmul593 multiply  1     Inf   ->  Infinity

+ddmul594 multiply  1000  Inf   ->  Infinity

+ddmul595 multiply  Inf   Inf   ->  Infinity

+

+ddmul600 multiply -Inf  -Inf   ->  Infinity

+ddmul601 multiply -Inf  -1000  ->  Infinity

+ddmul602 multiply -Inf  -1     ->  Infinity

+ddmul603 multiply -Inf  -0     ->  NaN  Invalid_operation

+ddmul604 multiply -Inf   0     ->  NaN  Invalid_operation

+ddmul605 multiply -Inf   1     -> -Infinity

+ddmul606 multiply -Inf   1000  -> -Infinity

+ddmul607 multiply -Inf   Inf   -> -Infinity

+ddmul608 multiply -1000  Inf   -> -Infinity

+ddmul609 multiply -Inf  -Inf   ->  Infinity

+ddmul610 multiply -1    -Inf   ->  Infinity

+ddmul611 multiply -0    -Inf   ->  NaN  Invalid_operation

+ddmul612 multiply  0    -Inf   ->  NaN  Invalid_operation

+ddmul613 multiply  1    -Inf   -> -Infinity

+ddmul614 multiply  1000 -Inf   -> -Infinity

+ddmul615 multiply  Inf  -Inf   -> -Infinity

+

+ddmul621 multiply  NaN -Inf    ->  NaN

+ddmul622 multiply  NaN -1000   ->  NaN

+ddmul623 multiply  NaN -1      ->  NaN

+ddmul624 multiply  NaN -0      ->  NaN

+ddmul625 multiply  NaN  0      ->  NaN

+ddmul626 multiply  NaN  1      ->  NaN

+ddmul627 multiply  NaN  1000   ->  NaN

+ddmul628 multiply  NaN  Inf    ->  NaN

+ddmul629 multiply  NaN  NaN    ->  NaN

+ddmul630 multiply -Inf  NaN    ->  NaN

+ddmul631 multiply -1000 NaN    ->  NaN

+ddmul632 multiply -1    NaN    ->  NaN

+ddmul633 multiply -0    NaN    ->  NaN

+ddmul634 multiply  0    NaN    ->  NaN

+ddmul635 multiply  1    NaN    ->  NaN

+ddmul636 multiply  1000 NaN    ->  NaN

+ddmul637 multiply  Inf  NaN    ->  NaN

+

+ddmul641 multiply  sNaN -Inf   ->  NaN  Invalid_operation

+ddmul642 multiply  sNaN -1000  ->  NaN  Invalid_operation

+ddmul643 multiply  sNaN -1     ->  NaN  Invalid_operation

+ddmul644 multiply  sNaN -0     ->  NaN  Invalid_operation

+ddmul645 multiply  sNaN  0     ->  NaN  Invalid_operation

+ddmul646 multiply  sNaN  1     ->  NaN  Invalid_operation

+ddmul647 multiply  sNaN  1000  ->  NaN  Invalid_operation

+ddmul648 multiply  sNaN  NaN   ->  NaN  Invalid_operation

+ddmul649 multiply  sNaN sNaN   ->  NaN  Invalid_operation

+ddmul650 multiply  NaN  sNaN   ->  NaN  Invalid_operation

+ddmul651 multiply -Inf  sNaN   ->  NaN  Invalid_operation

+ddmul652 multiply -1000 sNaN   ->  NaN  Invalid_operation

+ddmul653 multiply -1    sNaN   ->  NaN  Invalid_operation

+ddmul654 multiply -0    sNaN   ->  NaN  Invalid_operation

+ddmul655 multiply  0    sNaN   ->  NaN  Invalid_operation

+ddmul656 multiply  1    sNaN   ->  NaN  Invalid_operation

+ddmul657 multiply  1000 sNaN   ->  NaN  Invalid_operation

+ddmul658 multiply  Inf  sNaN   ->  NaN  Invalid_operation

+ddmul659 multiply  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddmul661 multiply  NaN9 -Inf   ->  NaN9

+ddmul662 multiply  NaN8  999   ->  NaN8

+ddmul663 multiply  NaN71 Inf   ->  NaN71

+ddmul664 multiply  NaN6  NaN5  ->  NaN6

+ddmul665 multiply -Inf   NaN4  ->  NaN4

+ddmul666 multiply -999   NaN33 ->  NaN33

+ddmul667 multiply  Inf   NaN2  ->  NaN2

+

+ddmul671 multiply  sNaN99 -Inf    ->  NaN99 Invalid_operation

+ddmul672 multiply  sNaN98 -11     ->  NaN98 Invalid_operation

+ddmul673 multiply  sNaN97  NaN    ->  NaN97 Invalid_operation

+ddmul674 multiply  sNaN16 sNaN94  ->  NaN16 Invalid_operation

+ddmul675 multiply  NaN95  sNaN93  ->  NaN93 Invalid_operation

+ddmul676 multiply -Inf    sNaN92  ->  NaN92 Invalid_operation

+ddmul677 multiply  088    sNaN91  ->  NaN91 Invalid_operation

+ddmul678 multiply  Inf    sNaN90  ->  NaN90 Invalid_operation

+ddmul679 multiply  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+ddmul681 multiply -NaN9 -Inf   -> -NaN9

+ddmul682 multiply -NaN8  999   -> -NaN8

+ddmul683 multiply -NaN71 Inf   -> -NaN71

+ddmul684 multiply -NaN6 -NaN5  -> -NaN6

+ddmul685 multiply -Inf  -NaN4  -> -NaN4

+ddmul686 multiply -999  -NaN33 -> -NaN33

+ddmul687 multiply  Inf  -NaN2  -> -NaN2

+

+ddmul691 multiply -sNaN99 -Inf    -> -NaN99 Invalid_operation

+ddmul692 multiply -sNaN98 -11     -> -NaN98 Invalid_operation

+ddmul693 multiply -sNaN97  NaN    -> -NaN97 Invalid_operation

+ddmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation

+ddmul695 multiply -NaN95  -sNaN93 -> -NaN93 Invalid_operation

+ddmul696 multiply -Inf    -sNaN92 -> -NaN92 Invalid_operation

+ddmul697 multiply  088    -sNaN91 -> -NaN91 Invalid_operation

+ddmul698 multiply  Inf    -sNaN90 -> -NaN90 Invalid_operation

+ddmul699 multiply -NaN    -sNaN89 -> -NaN89 Invalid_operation

+

+ddmul701 multiply -NaN  -Inf   -> -NaN

+ddmul702 multiply -NaN   999   -> -NaN

+ddmul703 multiply -NaN   Inf   -> -NaN

+ddmul704 multiply -NaN  -NaN   -> -NaN

+ddmul705 multiply -Inf  -NaN0  -> -NaN

+ddmul706 multiply -999  -NaN   -> -NaN

+ddmul707 multiply  Inf  -NaN   -> -NaN

+

+ddmul711 multiply -sNaN   -Inf    -> -NaN Invalid_operation

+ddmul712 multiply -sNaN   -11     -> -NaN Invalid_operation

+ddmul713 multiply -sNaN00  NaN    -> -NaN Invalid_operation

+ddmul714 multiply -sNaN   -sNaN   -> -NaN Invalid_operation

+ddmul715 multiply -NaN    -sNaN   -> -NaN Invalid_operation

+ddmul716 multiply -Inf    -sNaN   -> -NaN Invalid_operation

+ddmul717 multiply  088    -sNaN   -> -NaN Invalid_operation

+ddmul718 multiply  Inf    -sNaN   -> -NaN Invalid_operation

+ddmul719 multiply -NaN    -sNaN   -> -NaN Invalid_operation

+

+-- overflow and underflow tests .. note subnormal results

+-- signs

+ddmul751 multiply  1e+277  1e+311 ->  Infinity Overflow Inexact Rounded

+ddmul752 multiply  1e+277 -1e+311 -> -Infinity Overflow Inexact Rounded

+ddmul753 multiply -1e+277  1e+311 -> -Infinity Overflow Inexact Rounded

+ddmul754 multiply -1e+277 -1e+311 ->  Infinity Overflow Inexact Rounded

+ddmul755 multiply  1e-277  1e-311 ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddmul756 multiply  1e-277 -1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddmul757 multiply -1e-277  1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddmul758 multiply -1e-277 -1e-311 ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+

+-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)

+ddmul760 multiply 1e-291 1e-101 -> 1E-392 Subnormal

+ddmul761 multiply 1e-291 1e-102 -> 1E-393 Subnormal

+ddmul762 multiply 1e-291 1e-103 -> 1E-394 Subnormal

+ddmul763 multiply 1e-291 1e-104 -> 1E-395 Subnormal

+ddmul764 multiply 1e-291 1e-105 -> 1E-396 Subnormal

+ddmul765 multiply 1e-291 1e-106 -> 1E-397 Subnormal

+ddmul766 multiply 1e-291 1e-107 -> 1E-398 Subnormal

+ddmul767 multiply 1e-291 1e-108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddmul768 multiply 1e-291 1e-109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddmul769 multiply 1e-291 1e-110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+-- [no equivalent of 'subnormal' for overflow]

+ddmul770 multiply 1e+60 1e+321 -> 1.000000000000E+381  Clamped

+ddmul771 multiply 1e+60 1e+322 -> 1.0000000000000E+382  Clamped

+ddmul772 multiply 1e+60 1e+323 -> 1.00000000000000E+383  Clamped

+ddmul773 multiply 1e+60 1e+324 -> 1.000000000000000E+384  Clamped

+ddmul774 multiply 1e+60 1e+325 -> Infinity Overflow Inexact Rounded

+ddmul775 multiply 1e+60 1e+326 -> Infinity Overflow Inexact Rounded

+ddmul776 multiply 1e+60 1e+327 -> Infinity Overflow Inexact Rounded

+ddmul777 multiply 1e+60 1e+328 -> Infinity Overflow Inexact Rounded

+ddmul778 multiply 1e+60 1e+329 -> Infinity Overflow Inexact Rounded

+ddmul779 multiply 1e+60 1e+330 -> Infinity Overflow Inexact Rounded

+

+ddmul801 multiply  1.0000E-394  1     -> 1.0000E-394 Subnormal

+ddmul802 multiply  1.000E-394   1e-1  -> 1.000E-395  Subnormal

+ddmul803 multiply  1.00E-394    1e-2  -> 1.00E-396   Subnormal

+ddmul804 multiply  1.0E-394     1e-3  -> 1.0E-397    Subnormal

+ddmul805 multiply  1.0E-394     1e-4  -> 1E-398     Subnormal Rounded

+ddmul806 multiply  1.3E-394     1e-4  -> 1E-398     Underflow Subnormal Inexact Rounded

+ddmul807 multiply  1.5E-394     1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded

+ddmul808 multiply  1.7E-394     1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded

+ddmul809 multiply  2.3E-394     1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded

+ddmul810 multiply  2.5E-394     1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded

+ddmul811 multiply  2.7E-394     1e-4  -> 3E-398     Underflow Subnormal Inexact Rounded

+ddmul812 multiply  1.49E-394    1e-4  -> 1E-398     Underflow Subnormal Inexact Rounded

+ddmul813 multiply  1.50E-394    1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded

+ddmul814 multiply  1.51E-394    1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded

+ddmul815 multiply  2.49E-394    1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded

+ddmul816 multiply  2.50E-394    1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded

+ddmul817 multiply  2.51E-394    1e-4  -> 3E-398     Underflow Subnormal Inexact Rounded

+

+ddmul818 multiply  1E-394       1e-4  -> 1E-398     Subnormal

+ddmul819 multiply  3E-394       1e-5  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddmul820 multiply  5E-394       1e-5  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddmul821 multiply  7E-394       1e-5  -> 1E-398     Underflow Subnormal Inexact Rounded

+ddmul822 multiply  9E-394       1e-5  -> 1E-398     Underflow Subnormal Inexact Rounded

+ddmul823 multiply  9.9E-394     1e-5  -> 1E-398     Underflow Subnormal Inexact Rounded

+

+ddmul824 multiply  1E-394      -1e-4  -> -1E-398    Subnormal

+ddmul825 multiply  3E-394      -1e-5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped

+ddmul826 multiply -5E-394       1e-5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped

+ddmul827 multiply  7E-394      -1e-5  -> -1E-398    Underflow Subnormal Inexact Rounded

+ddmul828 multiply -9E-394       1e-5  -> -1E-398    Underflow Subnormal Inexact Rounded

+ddmul829 multiply  9.9E-394    -1e-5  -> -1E-398    Underflow Subnormal Inexact Rounded

+ddmul830 multiply  3.0E-394    -1e-5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped

+

+ddmul831 multiply  1.0E-199     1e-200 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddmul832 multiply  1.0E-199     1e-199 -> 1E-398    Subnormal Rounded

+ddmul833 multiply  1.0E-199     1e-198 -> 1.0E-397    Subnormal

+ddmul834 multiply  2.0E-199     2e-198 -> 4.0E-397    Subnormal

+ddmul835 multiply  4.0E-199     4e-198 -> 1.60E-396   Subnormal

+ddmul836 multiply 10.0E-199    10e-198 -> 1.000E-395  Subnormal

+ddmul837 multiply 30.0E-199    30e-198 -> 9.000E-395  Subnormal

+ddmul838 multiply 40.0E-199    40e-188 -> 1.6000E-384 Subnormal

+ddmul839 multiply 40.0E-199    40e-187 -> 1.6000E-383

+ddmul840 multiply 40.0E-199    40e-186 -> 1.6000E-382

+

+-- Long operand overflow may be a different path

+ddmul870 multiply 100  9.999E+383         ->  Infinity Inexact Overflow Rounded

+ddmul871 multiply 100 -9.999E+383     -> -Infinity Inexact Overflow Rounded

+ddmul872 multiply      9.999E+383 100 ->  Infinity Inexact Overflow Rounded

+ddmul873 multiply     -9.999E+383 100 -> -Infinity Inexact Overflow Rounded

+

+-- check for double-rounded subnormals

+ddmul881 multiply  1.2347E-355 1.2347E-40  ->  1.524E-395 Inexact Rounded Subnormal Underflow

+ddmul882 multiply  1.234E-355 1.234E-40    ->  1.523E-395 Inexact Rounded Subnormal Underflow

+ddmul883 multiply  1.23E-355  1.23E-40     ->  1.513E-395 Inexact Rounded Subnormal Underflow

+ddmul884 multiply  1.2E-355   1.2E-40      ->  1.44E-395  Subnormal

+ddmul885 multiply  1.2E-355   1.2E-41      ->  1.44E-396  Subnormal

+ddmul886 multiply  1.2E-355   1.2E-42      ->  1.4E-397   Subnormal Inexact Rounded Underflow

+ddmul887 multiply  1.2E-355   1.3E-42      ->  1.6E-397   Subnormal Inexact Rounded Underflow

+ddmul888 multiply  1.3E-355   1.3E-42      ->  1.7E-397   Subnormal Inexact Rounded Underflow

+ddmul889 multiply  1.3E-355   1.3E-43      ->    2E-398   Subnormal Inexact Rounded Underflow

+ddmul890 multiply  1.3E-356   1.3E-43      ->    0E-398   Clamped Subnormal Inexact Rounded Underflow

+

+ddmul891 multiply  1.2345E-39   1.234E-355 ->  1.5234E-394 Inexact Rounded Subnormal Underflow

+ddmul892 multiply  1.23456E-39  1.234E-355 ->  1.5234E-394 Inexact Rounded Subnormal Underflow

+ddmul893 multiply  1.2345E-40   1.234E-355 ->  1.523E-395  Inexact Rounded Subnormal Underflow

+ddmul894 multiply  1.23456E-40  1.234E-355 ->  1.523E-395  Inexact Rounded Subnormal Underflow

+ddmul895 multiply  1.2345E-41   1.234E-355 ->  1.52E-396   Inexact Rounded Subnormal Underflow

+ddmul896 multiply  1.23456E-41  1.234E-355 ->  1.52E-396   Inexact Rounded Subnormal Underflow

+

+-- Now explore the case where we get a normal result with Underflow

+--                                                        1 234567890123456

+ddmul900 multiply  0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded

+ddmul901 multiply  0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded

+ddmul902 multiply  9.999999999999999E-383  0.0999999999999         -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded

+ddmul903 multiply  9.999999999999999E-383  0.09999999999999        -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded

+ddmul904 multiply  9.999999999999999E-383  0.099999999999999       -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded

+ddmul905 multiply  9.999999999999999E-383  0.0999999999999999      -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded

+-- prove operands are exact

+ddmul906 multiply  9.999999999999999E-383  1                       -> 9.999999999999999E-383

+ddmul907 multiply                       1  0.09999999999999999     -> 0.09999999999999999

+-- the next rounds to Nmin

+ddmul908 multiply  9.999999999999999E-383  0.09999999999999999     -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+

+-- hugest

+ddmul909 multiply  9999999999999999 9999999999999999 -> 9.999999999999998E+31 Inexact Rounded

+

+-- Null tests

+ddmul990 multiply 10  # -> NaN Invalid_operation

+ddmul991 multiply  # 10 -> NaN Invalid_operation

+

+

+

+