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/ddRemainder.decTest b/Lib/test/decimaltestdata/ddRemainder.decTest
new file mode 100644
index 0000000..c7ea762
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddRemainder.decTest
@@ -0,0 +1,587 @@
+------------------------------------------------------------------------

+-- ddRemainder.decTest -- decDouble remainder                         --

+-- 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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks (as base, above)

+ddrem001 remainder  1     1    ->  0

+ddrem002 remainder  2     1    ->  0

+ddrem003 remainder  1     2    ->  1

+ddrem004 remainder  2     2    ->  0

+ddrem005 remainder  0     1    ->  0

+ddrem006 remainder  0     2    ->  0

+ddrem007 remainder  1     3    ->  1

+ddrem008 remainder  2     3    ->  2

+ddrem009 remainder  3     3    ->  0

+

+ddrem010 remainder  2.4   1    ->  0.4

+ddrem011 remainder  2.4   -1   ->  0.4

+ddrem012 remainder  -2.4  1    ->  -0.4

+ddrem013 remainder  -2.4  -1   ->  -0.4

+ddrem014 remainder  2.40  1    ->  0.40

+ddrem015 remainder  2.400 1    ->  0.400

+ddrem016 remainder  2.4   2    ->  0.4

+ddrem017 remainder  2.400 2    ->  0.400

+ddrem018 remainder  2.    2    ->  0

+ddrem019 remainder  20    20   ->  0

+

+ddrem020 remainder  187   187    ->  0

+ddrem021 remainder  5     2      ->  1

+ddrem022 remainder  5     2.0    ->  1.0

+ddrem023 remainder  5     2.000  ->  1.000

+ddrem024 remainder  5     0.200  ->  0.000

+ddrem025 remainder  5     0.200  ->  0.000

+

+ddrem030 remainder  1     2      ->  1

+ddrem031 remainder  1     4      ->  1

+ddrem032 remainder  1     8      ->  1

+

+ddrem033 remainder  1     16     ->  1

+ddrem034 remainder  1     32     ->  1

+ddrem035 remainder  1     64     ->  1

+ddrem040 remainder  1    -2      ->  1

+ddrem041 remainder  1    -4      ->  1

+ddrem042 remainder  1    -8      ->  1

+ddrem043 remainder  1    -16     ->  1

+ddrem044 remainder  1    -32     ->  1

+ddrem045 remainder  1    -64     ->  1

+ddrem050 remainder -1     2      ->  -1

+ddrem051 remainder -1     4      ->  -1

+ddrem052 remainder -1     8      ->  -1

+ddrem053 remainder -1     16     ->  -1

+ddrem054 remainder -1     32     ->  -1

+ddrem055 remainder -1     64     ->  -1

+ddrem060 remainder -1    -2      ->  -1

+ddrem061 remainder -1    -4      ->  -1

+ddrem062 remainder -1    -8      ->  -1

+ddrem063 remainder -1    -16     ->  -1

+ddrem064 remainder -1    -32     ->  -1

+ddrem065 remainder -1    -64     ->  -1

+

+ddrem066 remainder  999999999     1  -> 0

+ddrem067 remainder  999999999.4   1  -> 0.4

+ddrem068 remainder  999999999.5   1  -> 0.5

+ddrem069 remainder  999999999.9   1  -> 0.9

+ddrem070 remainder  999999999.999 1  -> 0.999

+ddrem071 remainder  999999.999999 1  -> 0.999999

+ddrem072 remainder  9             1  -> 0

+ddrem073 remainder  9999999999999999 1  -> 0

+ddrem074 remainder  9999999999999999 2  -> 1

+ddrem075 remainder  9999999999999999 3  -> 0

+ddrem076 remainder  9999999999999999 4  -> 3

+

+ddrem080 remainder  0.            1  -> 0

+ddrem081 remainder  .0            1  -> 0.0

+ddrem082 remainder  0.00          1  -> 0.00

+ddrem083 remainder  0.00E+9       1  -> 0

+ddrem084 remainder  0.00E+3       1  -> 0

+ddrem085 remainder  0.00E+2       1  -> 0

+ddrem086 remainder  0.00E+1       1  -> 0.0

+ddrem087 remainder  0.00E+0       1  -> 0.00

+ddrem088 remainder  0.00E-0       1  -> 0.00

+ddrem089 remainder  0.00E-1       1  -> 0.000

+ddrem090 remainder  0.00E-2       1  -> 0.0000

+ddrem091 remainder  0.00E-3       1  -> 0.00000

+ddrem092 remainder  0.00E-4       1  -> 0.000000

+ddrem093 remainder  0.00E-5       1  -> 0E-7

+ddrem094 remainder  0.00E-6       1  -> 0E-8

+ddrem095 remainder  0.0000E-50    1  -> 0E-54

+

+-- Various flavours of remainder by 0

+ddrem101 remainder  0       0   -> NaN Division_undefined

+ddrem102 remainder  0      -0   -> NaN Division_undefined

+ddrem103 remainder -0       0   -> NaN Division_undefined

+ddrem104 remainder -0      -0   -> NaN Division_undefined

+ddrem105 remainder  0.0E5   0   -> NaN Division_undefined

+ddrem106 remainder  0.000   0   -> NaN Division_undefined

+-- [Some think this next group should be Division_by_zero exception, but

+-- IEEE 854 is explicit that it is Invalid operation .. for

+-- remainder-near, anyway]

+ddrem107 remainder  0.0001  0   -> NaN Invalid_operation

+ddrem108 remainder  0.01    0   -> NaN Invalid_operation

+ddrem109 remainder  0.1     0   -> NaN Invalid_operation

+ddrem110 remainder  1       0   -> NaN Invalid_operation

+ddrem111 remainder  1       0.0 -> NaN Invalid_operation

+ddrem112 remainder 10       0.0 -> NaN Invalid_operation

+ddrem113 remainder 1E+100   0.0 -> NaN Invalid_operation

+ddrem114 remainder 1E+380   0   -> NaN Invalid_operation

+ddrem115 remainder  0.0001 -0   -> NaN Invalid_operation

+ddrem116 remainder  0.01   -0   -> NaN Invalid_operation

+ddrem119 remainder  0.1    -0   -> NaN Invalid_operation

+ddrem120 remainder  1      -0   -> NaN Invalid_operation

+ddrem121 remainder  1      -0.0 -> NaN Invalid_operation

+ddrem122 remainder 10      -0.0 -> NaN Invalid_operation

+ddrem123 remainder 1E+100  -0.0 -> NaN Invalid_operation

+ddrem124 remainder 1E+384  -0   -> NaN Invalid_operation

+-- and zeros on left

+ddrem130 remainder  0      1   ->  0

+ddrem131 remainder  0     -1   ->  0

+ddrem132 remainder  0.0    1   ->  0.0

+ddrem133 remainder  0.0   -1   ->  0.0

+ddrem134 remainder -0      1   -> -0

+ddrem135 remainder -0     -1   -> -0

+ddrem136 remainder -0.0    1   -> -0.0

+ddrem137 remainder -0.0   -1   -> -0.0

+

+-- 0.5ers

+ddrem143 remainder   0.5  2     ->  0.5

+ddrem144 remainder   0.5  2.1   ->  0.5

+ddrem145 remainder   0.5  2.01  ->  0.50

+ddrem146 remainder   0.5  2.001 ->  0.500

+ddrem147 remainder   0.50 2     ->  0.50

+ddrem148 remainder   0.50 2.01  ->  0.50

+ddrem149 remainder   0.50 2.001 ->  0.500

+

+-- steadies

+ddrem150 remainder  1  1   -> 0

+ddrem151 remainder  1  2   -> 1

+ddrem152 remainder  1  3   -> 1

+ddrem153 remainder  1  4   -> 1

+ddrem154 remainder  1  5   -> 1

+ddrem155 remainder  1  6   -> 1

+ddrem156 remainder  1  7   -> 1

+ddrem157 remainder  1  8   -> 1

+ddrem158 remainder  1  9   -> 1

+ddrem159 remainder  1  10  -> 1

+ddrem160 remainder  1  1   -> 0

+ddrem161 remainder  2  1   -> 0

+ddrem162 remainder  3  1   -> 0

+ddrem163 remainder  4  1   -> 0

+ddrem164 remainder  5  1   -> 0

+ddrem165 remainder  6  1   -> 0

+ddrem166 remainder  7  1   -> 0

+ddrem167 remainder  8  1   -> 0

+ddrem168 remainder  9  1   -> 0

+ddrem169 remainder  10 1   -> 0

+

+-- some differences from remainderNear

+ddrem171 remainder   0.4  1.020 ->  0.400

+ddrem172 remainder   0.50 1.020 ->  0.500

+ddrem173 remainder   0.51 1.020 ->  0.510

+ddrem174 remainder   0.52 1.020 ->  0.520

+ddrem175 remainder   0.6  1.020 ->  0.600

+

+-- More flavours of remainder by 0

+ddrem201 remainder  0      0   -> NaN Division_undefined

+ddrem202 remainder  0.0E5  0   -> NaN Division_undefined

+ddrem203 remainder  0.000  0   -> NaN Division_undefined

+ddrem204 remainder  0.0001 0   -> NaN Invalid_operation

+ddrem205 remainder  0.01   0   -> NaN Invalid_operation

+ddrem206 remainder  0.1    0   -> NaN Invalid_operation

+ddrem207 remainder  1      0   -> NaN Invalid_operation

+ddrem208 remainder  1      0.0 -> NaN Invalid_operation

+ddrem209 remainder 10      0.0 -> NaN Invalid_operation

+ddrem210 remainder 1E+100  0.0 -> NaN Invalid_operation

+ddrem211 remainder 1E+380  0   -> NaN Invalid_operation

+

+-- some differences from remainderNear

+ddrem231 remainder  -0.4  1.020 -> -0.400

+ddrem232 remainder  -0.50 1.020 -> -0.500

+ddrem233 remainder  -0.51 1.020 -> -0.510

+ddrem234 remainder  -0.52 1.020 -> -0.520

+ddrem235 remainder  -0.6  1.020 -> -0.600

+

+-- high Xs

+ddrem240 remainder  1E+2  1.00  ->  0.00

+

+-- ddrem3xx are from DiagBigDecimal

+ddrem301 remainder   1    3     ->  1

+ddrem302 remainder   5    5     ->  0

+ddrem303 remainder   13   10    ->  3

+ddrem304 remainder   13   50    ->  13

+ddrem305 remainder   13   100   ->  13

+ddrem306 remainder   13   1000  ->  13

+ddrem307 remainder   .13    1   ->  0.13

+ddrem308 remainder   0.133  1   ->  0.133

+ddrem309 remainder   0.1033 1   ->  0.1033

+ddrem310 remainder   1.033  1   ->  0.033

+ddrem311 remainder   10.33  1   ->  0.33

+ddrem312 remainder   10.33 10   ->  0.33

+ddrem313 remainder   103.3  1   ->  0.3

+ddrem314 remainder   133   10   ->  3

+ddrem315 remainder   1033  10   ->  3

+ddrem316 remainder   1033  50   ->  33

+ddrem317 remainder   101.0  3   ->  2.0

+ddrem318 remainder   102.0  3   ->  0.0

+ddrem319 remainder   103.0  3   ->  1.0

+ddrem320 remainder   2.40   1   ->  0.40

+ddrem321 remainder   2.400  1   ->  0.400

+ddrem322 remainder   2.4    1   ->  0.4

+ddrem323 remainder   2.4    2   ->  0.4

+ddrem324 remainder   2.400  2   ->  0.400

+ddrem325 remainder   1   0.3    ->  0.1

+ddrem326 remainder   1   0.30   ->  0.10

+ddrem327 remainder   1   0.300  ->  0.100

+ddrem328 remainder   1   0.3000 ->  0.1000

+ddrem329 remainder   1.0    0.3 ->  0.1

+ddrem330 remainder   1.00   0.3 ->  0.10

+ddrem331 remainder   1.000  0.3 ->  0.100

+ddrem332 remainder   1.0000 0.3 ->  0.1000

+ddrem333 remainder   0.5  2     ->  0.5

+ddrem334 remainder   0.5  2.1   ->  0.5

+ddrem335 remainder   0.5  2.01  ->  0.50

+ddrem336 remainder   0.5  2.001 ->  0.500

+ddrem337 remainder   0.50 2     ->  0.50

+ddrem338 remainder   0.50 2.01  ->  0.50

+ddrem339 remainder   0.50 2.001 ->  0.500

+

+ddrem340 remainder   0.5   0.5000001    ->  0.5000000

+ddrem341 remainder   0.5   0.50000001    ->  0.50000000

+ddrem342 remainder   0.5   0.500000001    ->  0.500000000

+ddrem343 remainder   0.5   0.5000000001    ->  0.5000000000

+ddrem344 remainder   0.5   0.50000000001    ->  0.50000000000

+ddrem345 remainder   0.5   0.4999999    ->  1E-7

+ddrem346 remainder   0.5   0.49999999    ->  1E-8

+ddrem347 remainder   0.5   0.499999999    ->  1E-9

+ddrem348 remainder   0.5   0.4999999999    ->  1E-10

+ddrem349 remainder   0.5   0.49999999999    ->  1E-11

+ddrem350 remainder   0.5   0.499999999999    ->  1E-12

+

+ddrem351 remainder   0.03  7  ->  0.03

+ddrem352 remainder   5   2    ->  1

+ddrem353 remainder   4.1   2    ->  0.1

+ddrem354 remainder   4.01   2    ->  0.01

+ddrem355 remainder   4.001   2    ->  0.001

+ddrem356 remainder   4.0001   2    ->  0.0001

+ddrem357 remainder   4.00001   2    ->  0.00001

+ddrem358 remainder   4.000001   2    ->  0.000001

+ddrem359 remainder   4.0000001   2    ->  1E-7

+

+ddrem360 remainder   1.2   0.7345 ->  0.4655

+ddrem361 remainder   0.8   12     ->  0.8

+ddrem362 remainder   0.8   0.2    ->  0.0

+ddrem363 remainder   0.8   0.3    ->  0.2

+ddrem364 remainder   0.800   12   ->  0.800

+ddrem365 remainder   0.800   1.7  ->  0.800

+ddrem366 remainder   2.400   2    ->  0.400

+

+ddrem371 remainder   2.400  2        ->  0.400

+

+ddrem381 remainder 12345  1         ->  0

+ddrem382 remainder 12345  1.0001    ->  0.7657

+ddrem383 remainder 12345  1.001     ->  0.668

+ddrem384 remainder 12345  1.01      ->  0.78

+ddrem385 remainder 12345  1.1       ->  0.8

+ddrem386 remainder 12355  4         ->  3

+ddrem387 remainder 12345  4         ->  1

+ddrem388 remainder 12355  4.0001    ->  2.6912

+ddrem389 remainder 12345  4.0001    ->  0.6914

+ddrem390 remainder 12345  4.9       ->  1.9

+ddrem391 remainder 12345  4.99      ->  4.73

+ddrem392 remainder 12345  4.999     ->  2.469

+ddrem393 remainder 12345  4.9999    ->  0.2469

+ddrem394 remainder 12345  5         ->  0

+ddrem395 remainder 12345  5.0001    ->  4.7532

+ddrem396 remainder 12345  5.001     ->  2.532

+ddrem397 remainder 12345  5.01      ->  0.36

+ddrem398 remainder 12345  5.1       ->  3.0

+

+-- the nasty division-by-1 cases

+ddrem401 remainder   0.5         1   ->  0.5

+ddrem402 remainder   0.55        1   ->  0.55

+ddrem403 remainder   0.555       1   ->  0.555

+ddrem404 remainder   0.5555      1   ->  0.5555

+ddrem405 remainder   0.55555     1   ->  0.55555

+ddrem406 remainder   0.555555    1   ->  0.555555

+ddrem407 remainder   0.5555555   1   ->  0.5555555

+ddrem408 remainder   0.55555555  1   ->  0.55555555

+ddrem409 remainder   0.555555555 1   ->  0.555555555

+

+-- folddowns

+ddrem421 remainder   1E+384       1  ->   NaN Division_impossible

+ddrem422 remainder   1E+384  1E+383  ->   0E+369 Clamped

+ddrem423 remainder   1E+384  2E+383  ->   0E+369 Clamped

+ddrem424 remainder   1E+384  3E+383  ->   1.00000000000000E+383 Clamped

+ddrem425 remainder   1E+384  4E+383  ->   2.00000000000000E+383 Clamped

+ddrem426 remainder   1E+384  5E+383  ->   0E+369 Clamped

+ddrem427 remainder   1E+384  6E+383  ->   4.00000000000000E+383 Clamped

+ddrem428 remainder   1E+384  7E+383  ->   3.00000000000000E+383 Clamped

+ddrem429 remainder   1E+384  8E+383  ->   2.00000000000000E+383 Clamped

+ddrem430 remainder   1E+384  9E+383  ->   1.00000000000000E+383 Clamped

+-- tinies

+ddrem431 remainder   1E-397  1E-398  ->   0E-398

+ddrem432 remainder   1E-397  2E-398  ->   0E-398

+ddrem433 remainder   1E-397  3E-398  ->   1E-398 Subnormal

+ddrem434 remainder   1E-397  4E-398  ->   2E-398 Subnormal

+ddrem435 remainder   1E-397  5E-398  ->   0E-398

+ddrem436 remainder   1E-397  6E-398  ->   4E-398 Subnormal

+ddrem437 remainder   1E-397  7E-398  ->   3E-398 Subnormal

+ddrem438 remainder   1E-397  8E-398  ->   2E-398 Subnormal

+ddrem439 remainder   1E-397  9E-398  ->   1E-398 Subnormal

+ddrem440 remainder   1E-397 10E-398  ->   0E-398

+ddrem441 remainder   1E-397 11E-398  -> 1.0E-397 Subnormal

+ddrem442 remainder 100E-397 11E-398  -> 1.0E-397 Subnormal

+ddrem443 remainder 100E-397 20E-398  ->   0E-398

+ddrem444 remainder 100E-397 21E-398  -> 1.3E-397 Subnormal

+ddrem445 remainder 100E-397 30E-398  -> 1.0E-397 Subnormal

+

+-- zero signs

+ddrem650 remainder  1  1 ->  0

+ddrem651 remainder -1  1 -> -0

+ddrem652 remainder  1 -1 ->  0

+ddrem653 remainder -1 -1 -> -0

+ddrem654 remainder  0  1 ->  0

+ddrem655 remainder -0  1 -> -0

+ddrem656 remainder  0 -1 ->  0

+ddrem657 remainder -0 -1 -> -0

+ddrem658 remainder  0.00  1  ->  0.00

+ddrem659 remainder -0.00  1  -> -0.00

+

+-- Specials

+ddrem680 remainder  Inf  -Inf   ->  NaN Invalid_operation

+ddrem681 remainder  Inf  -1000  ->  NaN Invalid_operation

+ddrem682 remainder  Inf  -1     ->  NaN Invalid_operation

+ddrem683 remainder  Inf   0     ->  NaN Invalid_operation

+ddrem684 remainder  Inf  -0     ->  NaN Invalid_operation

+ddrem685 remainder  Inf   1     ->  NaN Invalid_operation

+ddrem686 remainder  Inf   1000  ->  NaN Invalid_operation

+ddrem687 remainder  Inf   Inf   ->  NaN Invalid_operation

+ddrem688 remainder -1000  Inf   -> -1000

+ddrem689 remainder -Inf   Inf   ->  NaN Invalid_operation

+ddrem691 remainder -1     Inf   -> -1

+ddrem692 remainder  0     Inf   ->  0

+ddrem693 remainder -0     Inf   -> -0

+ddrem694 remainder  1     Inf   ->  1

+ddrem695 remainder  1000  Inf   ->  1000

+ddrem696 remainder  Inf   Inf   ->  NaN Invalid_operation

+

+ddrem700 remainder -Inf  -Inf   ->  NaN Invalid_operation

+ddrem701 remainder -Inf  -1000  ->  NaN Invalid_operation

+ddrem702 remainder -Inf  -1     ->  NaN Invalid_operation

+ddrem703 remainder -Inf  -0     ->  NaN Invalid_operation

+ddrem704 remainder -Inf   0     ->  NaN Invalid_operation

+ddrem705 remainder -Inf   1     ->  NaN Invalid_operation

+ddrem706 remainder -Inf   1000  ->  NaN Invalid_operation

+ddrem707 remainder -Inf   Inf   ->  NaN Invalid_operation

+ddrem708 remainder -Inf  -Inf   ->  NaN Invalid_operation

+ddrem709 remainder -1000  Inf   -> -1000

+ddrem710 remainder -1    -Inf   -> -1

+ddrem711 remainder -0    -Inf   -> -0

+ddrem712 remainder  0    -Inf   ->  0

+ddrem713 remainder  1    -Inf   ->  1

+ddrem714 remainder  1000 -Inf   ->  1000

+ddrem715 remainder  Inf  -Inf   ->  NaN Invalid_operation

+

+ddrem721 remainder  NaN -Inf    ->  NaN

+ddrem722 remainder  NaN -1000   ->  NaN

+ddrem723 remainder  NaN -1      ->  NaN

+ddrem724 remainder  NaN -0      ->  NaN

+ddrem725 remainder -NaN  0      -> -NaN

+ddrem726 remainder  NaN  1      ->  NaN

+ddrem727 remainder  NaN  1000   ->  NaN

+ddrem728 remainder  NaN  Inf    ->  NaN

+ddrem729 remainder  NaN -NaN    ->  NaN

+ddrem730 remainder -Inf  NaN    ->  NaN

+ddrem731 remainder -1000 NaN    ->  NaN

+ddrem732 remainder -1    NaN    ->  NaN

+ddrem733 remainder -0   -NaN    -> -NaN

+ddrem734 remainder  0    NaN    ->  NaN

+ddrem735 remainder  1   -NaN    -> -NaN

+ddrem736 remainder  1000 NaN    ->  NaN

+ddrem737 remainder  Inf  NaN    ->  NaN

+

+ddrem741 remainder  sNaN -Inf   ->  NaN  Invalid_operation

+ddrem742 remainder  sNaN -1000  ->  NaN  Invalid_operation

+ddrem743 remainder -sNaN -1     -> -NaN  Invalid_operation

+ddrem744 remainder  sNaN -0     ->  NaN  Invalid_operation

+ddrem745 remainder  sNaN  0     ->  NaN  Invalid_operation

+ddrem746 remainder  sNaN  1     ->  NaN  Invalid_operation

+ddrem747 remainder  sNaN  1000  ->  NaN  Invalid_operation

+ddrem749 remainder  sNaN  NaN   ->  NaN  Invalid_operation

+ddrem750 remainder  sNaN sNaN   ->  NaN  Invalid_operation

+ddrem751 remainder  NaN  sNaN   ->  NaN  Invalid_operation

+ddrem752 remainder -Inf  sNaN   ->  NaN  Invalid_operation

+ddrem753 remainder -1000 sNaN   ->  NaN  Invalid_operation

+ddrem754 remainder -1    sNaN   ->  NaN  Invalid_operation

+ddrem755 remainder -0    sNaN   ->  NaN  Invalid_operation

+ddrem756 remainder  0    sNaN   ->  NaN  Invalid_operation

+ddrem757 remainder  1    sNaN   ->  NaN  Invalid_operation

+ddrem758 remainder  1000 sNaN   ->  NaN  Invalid_operation

+ddrem759 remainder  Inf -sNaN   -> -NaN  Invalid_operation

+

+-- propaging NaNs

+ddrem760 remainder  NaN1   NaN7   ->  NaN1

+ddrem761 remainder sNaN2   NaN8   ->  NaN2 Invalid_operation

+ddrem762 remainder  NaN3  sNaN9   ->  NaN9 Invalid_operation

+ddrem763 remainder sNaN4  sNaN10  ->  NaN4 Invalid_operation

+ddrem764 remainder    15   NaN11  ->  NaN11

+ddrem765 remainder  NaN6   NaN12  ->  NaN6

+ddrem766 remainder  Inf    NaN13  ->  NaN13

+ddrem767 remainder  NaN14  -Inf   ->  NaN14

+ddrem768 remainder    0    NaN15  ->  NaN15

+ddrem769 remainder  NaN16   -0    ->  NaN16

+

+-- edge cases of impossible

+ddrem770  remainder  1234567890123456  10    ->  6

+ddrem771  remainder  1234567890123456   1    ->  0

+ddrem772  remainder  1234567890123456   0.1  ->  NaN Division_impossible

+ddrem773  remainder  1234567890123456   0.01 ->  NaN Division_impossible

+

+-- long operand checks

+ddrem801 remainder 12345678000 100 -> 0

+ddrem802 remainder 1 12345678000   -> 1

+ddrem803 remainder 1234567800  10  -> 0

+ddrem804 remainder 1 1234567800    -> 1

+ddrem805 remainder 1234567890  10  -> 0

+ddrem806 remainder 1 1234567890    -> 1

+ddrem807 remainder 1234567891  10  -> 1

+ddrem808 remainder 1 1234567891    -> 1

+ddrem809 remainder 12345678901 100 -> 1

+ddrem810 remainder 1 12345678901   -> 1

+ddrem811 remainder 1234567896  10  -> 6

+ddrem812 remainder 1 1234567896    -> 1

+

+ddrem821 remainder 12345678000 100 -> 0

+ddrem822 remainder 1 12345678000   -> 1

+ddrem823 remainder 1234567800  10  -> 0

+ddrem824 remainder 1 1234567800    -> 1

+ddrem825 remainder 1234567890  10  -> 0

+ddrem826 remainder 1 1234567890    -> 1

+ddrem827 remainder 1234567891  10  -> 1

+ddrem828 remainder 1 1234567891    -> 1

+ddrem829 remainder 12345678901 100 -> 1

+ddrem830 remainder 1 12345678901   -> 1

+ddrem831 remainder 1234567896  10  -> 6

+ddrem832 remainder 1 1234567896    -> 1

+

+-- from divideint

+ddrem840 remainder  100000000.0   1  ->  0.0

+ddrem841 remainder  100000000.4   1  ->  0.4

+ddrem842 remainder  100000000.5   1  ->  0.5

+ddrem843 remainder  100000000.9   1  ->  0.9

+ddrem844 remainder  100000000.999 1  ->  0.999

+ddrem850 remainder  100000003     5  ->  3

+ddrem851 remainder  10000003      5  ->  3

+ddrem852 remainder  1000003       5  ->  3

+ddrem853 remainder  100003        5  ->  3

+ddrem854 remainder  10003         5  ->  3

+ddrem855 remainder  1003          5  ->  3

+ddrem856 remainder  103           5  ->  3

+ddrem857 remainder  13            5  ->  3

+ddrem858 remainder  1             5  ->  1

+

+-- Vladimir's cases         1234567890123456

+ddrem860 remainder 123.0e1 1000000000000000  -> 1230

+ddrem861 remainder 1230    1000000000000000  -> 1230

+ddrem862 remainder 12.3e2  1000000000000000  -> 1230

+ddrem863 remainder 1.23e3  1000000000000000  -> 1230

+ddrem864 remainder 123e1   1000000000000000  -> 1230

+ddrem870 remainder 123e1    1000000000000000 -> 1230

+ddrem871 remainder 123e1     100000000000000 -> 1230

+ddrem872 remainder 123e1      10000000000000 -> 1230

+ddrem873 remainder 123e1       1000000000000 -> 1230

+ddrem874 remainder 123e1        100000000000 -> 1230

+ddrem875 remainder 123e1         10000000000 -> 1230

+ddrem876 remainder 123e1          1000000000 -> 1230

+ddrem877 remainder 123e1           100000000 -> 1230

+ddrem878 remainder 1230            100000000 -> 1230

+ddrem879 remainder 123e1            10000000 -> 1230

+ddrem880 remainder 123e1             1000000 -> 1230

+ddrem881 remainder 123e1              100000 -> 1230

+ddrem882 remainder 123e1               10000 -> 1230

+ddrem883 remainder 123e1                1000 ->  230

+ddrem884 remainder 123e1                 100 ->   30

+ddrem885 remainder 123e1                  10 ->    0

+ddrem886 remainder 123e1                   1 ->    0

+

+ddrem890 remainder 123e1    2000000000000000 -> 1230

+ddrem891 remainder 123e1     200000000000000 -> 1230

+ddrem892 remainder 123e1      20000000000000 -> 1230

+ddrem893 remainder 123e1       2000000000000 -> 1230

+ddrem894 remainder 123e1        200000000000 -> 1230

+ddrem895 remainder 123e1         20000000000 -> 1230

+ddrem896 remainder 123e1          2000000000 -> 1230

+ddrem897 remainder 123e1           200000000 -> 1230

+ddrem899 remainder 123e1            20000000 -> 1230

+ddrem900 remainder 123e1             2000000 -> 1230

+ddrem901 remainder 123e1              200000 -> 1230

+ddrem902 remainder 123e1               20000 -> 1230

+ddrem903 remainder 123e1                2000 -> 1230

+ddrem904 remainder 123e1                 200 ->   30

+ddrem905 remainder 123e1                  20 ->   10

+ddrem906 remainder 123e1                   2 ->    0

+

+ddrem910 remainder 123e1    5000000000000000 -> 1230

+ddrem911 remainder 123e1     500000000000000 -> 1230

+ddrem912 remainder 123e1      50000000000000 -> 1230

+ddrem913 remainder 123e1       5000000000000 -> 1230

+ddrem914 remainder 123e1        500000000000 -> 1230

+ddrem915 remainder 123e1         50000000000 -> 1230

+ddrem916 remainder 123e1          5000000000 -> 1230

+ddrem917 remainder 123e1           500000000 -> 1230

+ddrem919 remainder 123e1            50000000 -> 1230

+ddrem920 remainder 123e1             5000000 -> 1230

+ddrem921 remainder 123e1              500000 -> 1230

+ddrem922 remainder 123e1               50000 -> 1230

+ddrem923 remainder 123e1                5000 -> 1230

+ddrem924 remainder 123e1                 500 ->  230

+ddrem925 remainder 123e1                  50 ->   30

+ddrem926 remainder 123e1                   5 ->    0

+

+ddrem930 remainder 123e1    9000000000000000 -> 1230

+ddrem931 remainder 123e1     900000000000000 -> 1230

+ddrem932 remainder 123e1      90000000000000 -> 1230

+ddrem933 remainder 123e1       9000000000000 -> 1230

+ddrem934 remainder 123e1        900000000000 -> 1230

+ddrem935 remainder 123e1         90000000000 -> 1230

+ddrem936 remainder 123e1          9000000000 -> 1230

+ddrem937 remainder 123e1           900000000 -> 1230

+ddrem939 remainder 123e1            90000000 -> 1230

+ddrem940 remainder 123e1             9000000 -> 1230

+ddrem941 remainder 123e1              900000 -> 1230

+ddrem942 remainder 123e1               90000 -> 1230

+ddrem943 remainder 123e1                9000 -> 1230

+ddrem944 remainder 123e1                 900 ->  330

+ddrem945 remainder 123e1                  90 ->   60

+ddrem946 remainder 123e1                   9 ->    6

+

+ddrem950 remainder 123e1   1000000000000000 -> 1230

+ddrem961 remainder 123e1   2999999999999999 -> 1230

+ddrem962 remainder 123e1   3999999999999999 -> 1230

+ddrem963 remainder 123e1   4999999999999999 -> 1230

+ddrem964 remainder 123e1   5999999999999999 -> 1230

+ddrem965 remainder 123e1   6999999999999999 -> 1230

+ddrem966 remainder 123e1   7999999999999999 -> 1230

+ddrem967 remainder 123e1   8999999999999999 -> 1230

+ddrem968 remainder 123e1   9999999999999999 -> 1230

+ddrem969 remainder 123e1   9876543210987654 -> 1230

+

+ddrem980 remainder 123e1 1000E299 -> 1.23E+3  -- 123E+1 internally

+

+-- overflow and underflow tests [from divide]

+ddrem1051 remainder  1e+277  1e-311 ->  NaN Division_impossible

+ddrem1052 remainder  1e+277 -1e-311 ->  NaN Division_impossible

+ddrem1053 remainder -1e+277  1e-311 ->  NaN Division_impossible

+ddrem1054 remainder -1e+277 -1e-311 ->  NaN Division_impossible

+ddrem1055 remainder  1e-277  1e+311 ->  1E-277

+ddrem1056 remainder  1e-277 -1e+311 ->  1E-277

+ddrem1057 remainder -1e-277  1e+311 -> -1E-277

+ddrem1058 remainder -1e-277 -1e+311 -> -1E-277

+

+-- Null tests

+ddrem1000 remainder 10  # -> NaN Invalid_operation

+ddrem1001 remainder  # 10 -> NaN Invalid_operation

+