Decimal module and test cases were updated to their state of
the art.  It now complies latest specification and tests.

The only difference of this version with the one in the trunk
is that a small subset that hash tests were removed, because
they rely on modifications to core hash() function (see
issue 1182 for further details).
diff --git a/Lib/decimal.py b/Lib/decimal.py
index 2b9bc75..3ee078f 100644
--- a/Lib/decimal.py
+++ b/Lib/decimal.py
@@ -29,8 +29,8 @@
 
 Decimal floating point has finite precision with arbitrarily large bounds.
 
-The purpose of the module is to support arithmetic using familiar
-"schoolhouse" rules and to avoid the some of tricky representation
+The purpose of this module is to support arithmetic using familiar
+"schoolhouse" rules and to avoid some of the tricky representation
 issues associated with binary floating point.  The package is especially
 useful for financial applications or for contexts where users have
 expectations that are at odds with binary floating point (for instance,
@@ -128,7 +128,7 @@
 
     # Constants for use in setting up contexts
     'ROUND_DOWN', 'ROUND_HALF_UP', 'ROUND_HALF_EVEN', 'ROUND_CEILING',
-    'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN',
+    'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN', 'ROUND_05UP',
 
     # Functions for manipulating contexts
     'setcontext', 'getcontext', 'localcontext'
@@ -136,7 +136,7 @@
 
 import copy as _copy
 
-#Rounding
+# Rounding
 ROUND_DOWN = 'ROUND_DOWN'
 ROUND_HALF_UP = 'ROUND_HALF_UP'
 ROUND_HALF_EVEN = 'ROUND_HALF_EVEN'
@@ -144,12 +144,9 @@
 ROUND_FLOOR = 'ROUND_FLOOR'
 ROUND_UP = 'ROUND_UP'
 ROUND_HALF_DOWN = 'ROUND_HALF_DOWN'
+ROUND_05UP = 'ROUND_05UP'
 
-#Rounding decision (not part of the public API)
-NEVER_ROUND = 'NEVER_ROUND'    # Round in division (non-divmod), sqrt ONLY
-ALWAYS_ROUND = 'ALWAYS_ROUND'  # Every operation rounds at end.
-
-#Errors
+# Errors
 
 class DecimalException(ArithmeticError):
     """Base exception class.
@@ -179,14 +176,13 @@
 
     This occurs and signals clamped if the exponent of a result has been
     altered in order to fit the constraints of a specific concrete
-    representation. This may occur when the exponent of a zero result would
-    be outside the bounds of a representation, or  when a large normal
-    number would have an encoded exponent that cannot be represented. In
+    representation.  This may occur when the exponent of a zero result would
+    be outside the bounds of a representation, or when a large normal
+    number would have an encoded exponent that cannot be represented.  In
     this latter case, the exponent is reduced to fit and the corresponding
     number of zero digits are appended to the coefficient ("fold-down").
     """
 
-
 class InvalidOperation(DecimalException):
     """An invalid operation was performed.
 
@@ -194,8 +190,8 @@
 
     Something creates a signaling NaN
     -INF + INF
-     0 * (+-)INF
-     (+-)INF / (+-)INF
+    0 * (+-)INF
+    (+-)INF / (+-)INF
     x % 0
     (+-)INF % x
     x._rescale( non-integer )
@@ -204,11 +200,16 @@
     x ** (non-integer)
     x ** (+-)INF
     An operand is invalid
+
+    The result of the operation after these is a quiet positive NaN,
+    except when the cause is a signaling NaN, in which case the result is
+    also a quiet NaN, but with the original sign, and an optional
+    diagnostic information.
     """
     def handle(self, context, *args):
         if args:
-            if args[0] == 1: #sNaN, must drop 's' but keep diagnostics
-                return Decimal( (args[1]._sign, args[1]._int, 'n') )
+            ans = _dec_from_triple(args[0]._sign, args[0]._int, 'n', True)
+            return ans._fix_nan(context)
         return NaN
 
 class ConversionSyntax(InvalidOperation):
@@ -216,11 +217,10 @@
 
     This occurs and signals invalid-operation if an string is being
     converted to a number and it does not conform to the numeric string
-    syntax. The result is [0,qNaN].
+    syntax.  The result is [0,qNaN].
     """
-
     def handle(self, context, *args):
-        return (0, (0,), 'n') #Passed to something which uses a tuple.
+        return NaN
 
 class DivisionByZero(DecimalException, ZeroDivisionError):
     """Division by 0.
@@ -235,9 +235,7 @@
     -0, for power.
     """
 
-    def handle(self, context, sign, double = None, *args):
-        if double is not None:
-            return (Infsign[sign],)*2
+    def handle(self, context, sign, *args):
         return Infsign[sign]
 
 class DivisionImpossible(InvalidOperation):
@@ -245,23 +243,21 @@
 
     This occurs and signals invalid-operation if the integer result of a
     divide-integer or remainder operation had too many digits (would be
-    longer than precision). The result is [0,qNaN].
+    longer than precision).  The result is [0,qNaN].
     """
 
     def handle(self, context, *args):
-        return (NaN, NaN)
+        return NaN
 
 class DivisionUndefined(InvalidOperation, ZeroDivisionError):
     """Undefined result of division.
 
     This occurs and signals invalid-operation if division by zero was
     attempted (during a divide-integer, divide, or remainder operation), and
-    the dividend is also zero. The result is [0,qNaN].
+    the dividend is also zero.  The result is [0,qNaN].
     """
 
-    def handle(self, context, tup=None, *args):
-        if tup is not None:
-            return (NaN, NaN) #for 0 %0, 0 // 0
+    def handle(self, context, *args):
         return NaN
 
 class Inexact(DecimalException):
@@ -269,23 +265,22 @@
 
     This occurs and signals inexact whenever the result of an operation is
     not exact (that is, it needed to be rounded and any discarded digits
-    were non-zero), or if an overflow or underflow condition occurs. The
+    were non-zero), or if an overflow or underflow condition occurs.  The
     result in all cases is unchanged.
 
     The inexact signal may be tested (or trapped) to determine if a given
     operation (or sequence of operations) was inexact.
     """
-    pass
 
 class InvalidContext(InvalidOperation):
     """Invalid context.  Unknown rounding, for example.
 
     This occurs and signals invalid-operation if an invalid context was
-    detected during an operation. This can occur if contexts are not checked
+    detected during an operation.  This can occur if contexts are not checked
     on creation and either the precision exceeds the capability of the
     underlying concrete representation or an unknown or unsupported rounding
-    was specified. These aspects of the context need only be checked when
-    the values are required to be used. The result is [0,qNaN].
+    was specified.  These aspects of the context need only be checked when
+    the values are required to be used.  The result is [0,qNaN].
     """
 
     def handle(self, context, *args):
@@ -296,25 +291,23 @@
 
     This occurs and signals rounded whenever the result of an operation is
     rounded (that is, some zero or non-zero digits were discarded from the
-    coefficient), or if an overflow or underflow condition occurs. The
+    coefficient), or if an overflow or underflow condition occurs.  The
     result in all cases is unchanged.
 
     The rounded signal may be tested (or trapped) to determine if a given
     operation (or sequence of operations) caused a loss of precision.
     """
-    pass
 
 class Subnormal(DecimalException):
     """Exponent < Emin before rounding.
 
     This occurs and signals subnormal whenever the result of a conversion or
     operation is subnormal (that is, its adjusted exponent is less than
-    Emin, before any rounding). The result in all cases is unchanged.
+    Emin, before any rounding).  The result in all cases is unchanged.
 
     The subnormal signal may be tested (or trapped) to determine if a given
     or operation (or sequence of operations) yielded a subnormal result.
     """
-    pass
 
 class Overflow(Inexact, Rounded):
     """Numerical overflow.
@@ -328,30 +321,30 @@
 
     For round-half-up and round-half-even (and for round-half-down and
     round-up, if implemented), the result of the operation is [sign,inf],
-    where sign is the sign of the intermediate result. For round-down, the
+    where sign is the sign of the intermediate result.  For round-down, the
     result is the largest finite number that can be represented in the
-    current precision, with the sign of the intermediate result. For
+    current precision, with the sign of the intermediate result.  For
     round-ceiling, the result is the same as for round-down if the sign of
-    the intermediate result is 1, or is [0,inf] otherwise. For round-floor,
+    the intermediate result is 1, or is [0,inf] otherwise.  For round-floor,
     the result is the same as for round-down if the sign of the intermediate
-    result is 0, or is [1,inf] otherwise. In all cases, Inexact and Rounded
+    result is 0, or is [1,inf] otherwise.  In all cases, Inexact and Rounded
     will also be raised.
-   """
+    """
 
     def handle(self, context, sign, *args):
         if context.rounding in (ROUND_HALF_UP, ROUND_HALF_EVEN,
-                                     ROUND_HALF_DOWN, ROUND_UP):
+                                ROUND_HALF_DOWN, ROUND_UP):
             return Infsign[sign]
         if sign == 0:
             if context.rounding == ROUND_CEILING:
                 return Infsign[sign]
-            return Decimal((sign, (9,)*context.prec,
-                            context.Emax-context.prec+1))
+            return _dec_from_triple(sign, '9'*context.prec,
+                            context.Emax-context.prec+1)
         if sign == 1:
             if context.rounding == ROUND_FLOOR:
                 return Infsign[sign]
-            return Decimal( (sign, (9,)*context.prec,
-                             context.Emax-context.prec+1))
+            return _dec_from_triple(sign, '9'*context.prec,
+                             context.Emax-context.prec+1)
 
 
 class Underflow(Inexact, Rounded, Subnormal):
@@ -360,10 +353,10 @@
     This occurs and signals underflow if a result is inexact and the
     adjusted exponent of the result would be smaller (more negative) than
     the smallest value that can be handled by the implementation (the value
-    Emin). That is, the result is both inexact and subnormal.
+    Emin).  That is, the result is both inexact and subnormal.
 
     The result after an underflow will be a subnormal number rounded, if
-    necessary, so that its exponent is not less than Etiny. This may result
+    necessary, so that its exponent is not less than Etiny.  This may result
     in 0 with the sign of the intermediate result and an exponent of Etiny.
 
     In all cases, Inexact, Rounded, and Subnormal will also be raised.
@@ -379,7 +372,7 @@
                   DivisionUndefined:InvalidOperation,
                   InvalidContext:InvalidOperation}
 
-##### Context Functions #######################################
+##### Context Functions ##################################################
 
 # The getcontext() and setcontext() function manage access to a thread-local
 # current context.  Py2.4 offers direct support for thread locals.  If that
@@ -392,7 +385,7 @@
 except ImportError:
     # Python was compiled without threads; create a mock object instead
     import sys
-    class MockThreading:
+    class MockThreading(object):
         def local(self, sys=sys):
             return sys.modules[__name__]
     threading = MockThreading()
@@ -403,8 +396,8 @@
 
 except AttributeError:
 
-    #To fix reloading, force it to create a new context
-    #Old contexts have different exceptions in their dicts, making problems.
+    # To fix reloading, force it to create a new context
+    # Old contexts have different exceptions in their dicts, making problems.
     if hasattr(threading.currentThread(), '__decimal_context__'):
         del threading.currentThread().__decimal_context__
 
@@ -469,14 +462,14 @@
                  ctx.prec += 2
                  # Rest of sin calculation algorithm
                  # uses a precision 2 greater than normal
-             return +s # Convert result to normal precision
+             return +s  # Convert result to normal precision
 
          def sin(x):
              with localcontext(ExtendedContext):
                  # Rest of sin calculation algorithm
                  # uses the Extended Context from the
                  # General Decimal Arithmetic Specification
-             return +s # Convert result to normal context
+             return +s  # Convert result to normal context
 
     """
     # The string below can't be included in the docstring until Python 2.6
@@ -502,7 +495,7 @@
     return _ContextManager(ctx)
 
 
-##### Decimal class ###########################################
+##### Decimal class #######################################################
 
 class Decimal(object):
     """Floating point class for decimal arithmetic."""
@@ -518,7 +511,7 @@
 
         >>> Decimal('3.14')              # string input
         Decimal("3.14")
-        >>> Decimal((0, (3, 1, 4), -2))  # tuple input (sign, digit_tuple, exponent)
+        >>> Decimal((0, (3, 1, 4), -2))  # tuple (sign, digit_tuple, exponent)
         Decimal("3.14")
         >>> Decimal(314)                 # int or long
         Decimal("314")
@@ -526,14 +519,67 @@
         Decimal("314")
         """
 
-        self = object.__new__(cls)
-        self._is_special = False
+        # Note that the coefficient, self._int, is actually stored as
+        # a string rather than as a tuple of digits.  This speeds up
+        # the "digits to integer" and "integer to digits" conversions
+        # that are used in almost every arithmetic operation on
+        # Decimals.  This is an internal detail: the as_tuple function
+        # and the Decimal constructor still deal with tuples of
+        # digits.
 
-        # From an internal working value
-        if isinstance(value, _WorkRep):
-            self._sign = value.sign
-            self._int = tuple(map(int, str(value.int)))
-            self._exp = int(value.exp)
+        self = object.__new__(cls)
+
+        # From a string
+        # REs insist on real strings, so we can too.
+        if isinstance(value, basestring):
+            m = _parser(value)
+            if m is None:
+                if context is None:
+                    context = getcontext()
+                return context._raise_error(ConversionSyntax,
+                                "Invalid literal for Decimal: %r" % value)
+
+            if m.group('sign') == "-":
+                self._sign = 1
+            else:
+                self._sign = 0
+            intpart = m.group('int')
+            if intpart is not None:
+                # finite number
+                fracpart = m.group('frac')
+                exp = int(m.group('exp') or '0')
+                if fracpart is not None:
+                    self._int = (intpart+fracpart).lstrip('0') or '0'
+                    self._exp = exp - len(fracpart)
+                else:
+                    self._int = intpart.lstrip('0') or '0'
+                    self._exp = exp
+                self._is_special = False
+            else:
+                diag = m.group('diag')
+                if diag is not None:
+                    # NaN
+                    self._int = diag.lstrip('0')
+                    if m.group('signal'):
+                        self._exp = 'N'
+                    else:
+                        self._exp = 'n'
+                else:
+                    # infinity
+                    self._int = '0'
+                    self._exp = 'F'
+                self._is_special = True
+            return self
+
+        # From an integer
+        if isinstance(value, (int,long)):
+            if value >= 0:
+                self._sign = 0
+            else:
+                self._sign = 1
+            self._exp = 0
+            self._int = str(abs(value))
+            self._is_special = False
             return self
 
         # From another decimal
@@ -544,76 +590,63 @@
             self._is_special  = value._is_special
             return self
 
-        # From an integer
-        if isinstance(value, (int,long)):
-            if value >= 0:
-                self._sign = 0
-            else:
-                self._sign = 1
-            self._exp = 0
-            self._int = tuple(map(int, str(abs(value))))
+        # From an internal working value
+        if isinstance(value, _WorkRep):
+            self._sign = value.sign
+            self._int = str(value.int)
+            self._exp = int(value.exp)
+            self._is_special = False
             return self
 
         # tuple/list conversion (possibly from as_tuple())
         if isinstance(value, (list,tuple)):
             if len(value) != 3:
-                raise ValueError, 'Invalid arguments'
-            if value[0] not in (0,1):
-                raise ValueError, 'Invalid sign'
-            for digit in value[1]:
-                if not isinstance(digit, (int,long)) or digit < 0:
-                    raise ValueError, "The second value in the tuple must be composed of non negative integer elements."
-
+                raise ValueError('Invalid tuple size in creation of Decimal '
+                                 'from list or tuple.  The list or tuple '
+                                 'should have exactly three elements.')
+            # process sign.  The isinstance test rejects floats
+            if not (isinstance(value[0], (int, long)) and value[0] in (0,1)):
+                raise ValueError("Invalid sign.  The first value in the tuple "
+                                 "should be an integer; either 0 for a "
+                                 "positive number or 1 for a negative number.")
             self._sign = value[0]
-            self._int  = tuple(value[1])
-            if value[2] in ('F','n','N'):
+            if value[2] == 'F':
+                # infinity: value[1] is ignored
+                self._int = '0'
                 self._exp = value[2]
                 self._is_special = True
             else:
-                self._exp  = int(value[2])
+                # process and validate the digits in value[1]
+                digits = []
+                for digit in value[1]:
+                    if isinstance(digit, (int, long)) and 0 <= digit <= 9:
+                        # skip leading zeros
+                        if digits or digit != 0:
+                            digits.append(digit)
+                    else:
+                        raise ValueError("The second value in the tuple must "
+                                         "be composed of integers in the range "
+                                         "0 through 9.")
+                if value[2] in ('n', 'N'):
+                    # NaN: digits form the diagnostic
+                    self._int = ''.join(map(str, digits))
+                    self._exp = value[2]
+                    self._is_special = True
+                elif isinstance(value[2], (int, long)):
+                    # finite number: digits give the coefficient
+                    self._int = ''.join(map(str, digits or [0]))
+                    self._exp = value[2]
+                    self._is_special = False
+                else:
+                    raise ValueError("The third value in the tuple must "
+                                     "be an integer, or one of the "
+                                     "strings 'F', 'n', 'N'.")
             return self
 
         if isinstance(value, float):
             raise TypeError("Cannot convert float to Decimal.  " +
                             "First convert the float to a string")
 
-        # Other argument types may require the context during interpretation
-        if context is None:
-            context = getcontext()
-
-        # From a string
-        # REs insist on real strings, so we can too.
-        if isinstance(value, basestring):
-            if _isinfinity(value):
-                self._exp = 'F'
-                self._int = (0,)
-                self._is_special = True
-                if _isinfinity(value) == 1:
-                    self._sign = 0
-                else:
-                    self._sign = 1
-                return self
-            if _isnan(value):
-                sig, sign, diag = _isnan(value)
-                self._is_special = True
-                if len(diag) > context.prec: #Diagnostic info too long
-                    self._sign, self._int, self._exp = \
-                                context._raise_error(ConversionSyntax)
-                    return self
-                if sig == 1:
-                    self._exp = 'n' #qNaN
-                else: #sig == 2
-                    self._exp = 'N' #sNaN
-                self._sign = sign
-                self._int = tuple(map(int, diag)) #Diagnostic info
-                return self
-            try:
-                self._sign, self._int, self._exp = _string2exact(value)
-            except ValueError:
-                self._is_special = True
-                self._sign, self._int, self._exp = context._raise_error(ConversionSyntax)
-            return self
-
         raise TypeError("Cannot convert %r to Decimal" % value)
 
     def _isnan(self):
@@ -644,7 +677,7 @@
             return 1
         return 0
 
-    def _check_nans(self, other = None, context=None):
+    def _check_nans(self, other=None, context=None):
         """Returns whether the number is not actually one.
 
         if self, other are sNaN, signal
@@ -666,43 +699,47 @@
 
             if self_is_nan == 2:
                 return context._raise_error(InvalidOperation, 'sNaN',
-                                        1, self)
+                                        self)
             if other_is_nan == 2:
                 return context._raise_error(InvalidOperation, 'sNaN',
-                                        1, other)
+                                        other)
             if self_is_nan:
-                return self
+                return self._fix_nan(context)
 
-            return other
+            return other._fix_nan(context)
         return 0
 
     def __nonzero__(self):
-        """Is the number non-zero?
+        """Return True if self is nonzero; otherwise return False.
 
-        0 if self == 0
-        1 if self != 0
+        NaNs and infinities are considered nonzero.
         """
-        if self._is_special:
-            return 1
-        return sum(self._int) != 0
+        return self._is_special or self._int != '0'
 
-    def __cmp__(self, other, context=None):
+    def __cmp__(self, other):
         other = _convert_other(other)
         if other is NotImplemented:
-            return other
+            # Never return NotImplemented
+            return 1
 
         if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return 1 # Comparison involving NaN's always reports self > other
+            # check for nans, without raising on a signaling nan
+            if self._isnan() or other._isnan():
+                return 1  # Comparison involving NaN's always reports self > other
 
             # INF = INF
             return cmp(self._isinfinity(), other._isinfinity())
 
-        if not self and not other:
-            return 0 #If both 0, sign comparison isn't certain.
+        # check for zeros;  note that cmp(0, -0) should return 0
+        if not self:
+            if not other:
+                return 0
+            else:
+                return -((-1)**other._sign)
+        if not other:
+            return (-1)**self._sign
 
-        #If different signs, neg one is less
+        # If different signs, neg one is less
         if other._sign < self._sign:
             return -1
         if self._sign < other._sign:
@@ -710,35 +747,15 @@
 
         self_adjusted = self.adjusted()
         other_adjusted = other.adjusted()
-        if self_adjusted == other_adjusted and \
-           self._int + (0,)*(self._exp - other._exp) == \
-           other._int + (0,)*(other._exp - self._exp):
-            return 0 #equal, except in precision. ([0]*(-x) = [])
-        elif self_adjusted > other_adjusted and self._int[0] != 0:
+        if self_adjusted == other_adjusted:
+            self_padded = self._int + '0'*(self._exp - other._exp)
+            other_padded = other._int + '0'*(other._exp - self._exp)
+            return cmp(self_padded, other_padded) * (-1)**self._sign
+        elif self_adjusted > other_adjusted:
             return (-1)**self._sign
-        elif self_adjusted < other_adjusted and other._int[0] != 0:
+        else: # self_adjusted < other_adjusted
             return -((-1)**self._sign)
 
-        # Need to round, so make sure we have a valid context
-        if context is None:
-            context = getcontext()
-
-        context = context._shallow_copy()
-        rounding = context._set_rounding(ROUND_UP) #round away from 0
-
-        flags = context._ignore_all_flags()
-        res = self.__sub__(other, context=context)
-
-        context._regard_flags(*flags)
-
-        context.rounding = rounding
-
-        if not res:
-            return 0
-        elif res._sign:
-            return -1
-        return 1
-
     def __eq__(self, other):
         if not isinstance(other, (Decimal, int, long)):
             return NotImplemented
@@ -758,126 +775,109 @@
         NaN => one is NaN
         Like __cmp__, but returns Decimal instances.
         """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
+        other = _convert_other(other, raiseit=True)
 
-        #compare(NaN, NaN) = NaN
+        # Compare(NaN, NaN) = NaN
         if (self._is_special or other and other._is_special):
             ans = self._check_nans(other, context)
             if ans:
                 return ans
 
-        return Decimal(self.__cmp__(other, context))
+        return Decimal(self.__cmp__(other))
 
     def __hash__(self):
         """x.__hash__() <==> hash(x)"""
         # Decimal integers must hash the same as the ints
-        # Non-integer decimals are normalized and hashed as strings
-        # Normalization assures that hash(100E-1) == hash(10)
+        #
+        # The hash of a nonspecial noninteger Decimal must depend only
+        # on the value of that Decimal, and not on its representation.
+        # For example: hash(Decimal("100E-1")) == hash(Decimal("10")).
         if self._is_special:
             if self._isnan():
                 raise TypeError('Cannot hash a NaN value.')
             return hash(str(self))
-        i = int(self)
-        if self == Decimal(i):
-            return hash(i)
-        assert self.__nonzero__()   # '-0' handled by integer case
-        return hash(str(self.normalize()))
+        if not self:
+            return 0
+        if self._isinteger():
+            op = _WorkRep(self.to_integral_value())
+            # to make computation feasible for Decimals with large
+            # exponent, we use the fact that hash(n) == hash(m) for
+            # any two nonzero integers n and m such that (i) n and m
+            # have the same sign, and (ii) n is congruent to m modulo
+            # 2**64-1.  So we can replace hash((-1)**s*c*10**e) with
+            # hash((-1)**s*c*pow(10, e, 2**64-1).
+            return hash((-1)**op.sign*op.int*pow(10, op.exp, 2**64-1))
+        # The value of a nonzero nonspecial Decimal instance is
+        # faithfully represented by the triple consisting of its sign,
+        # its adjusted exponent, and its coefficient with trailing
+        # zeros removed.
+        return hash((self._sign,
+                     self._exp+len(self._int),
+                     self._int.rstrip('0')))
 
     def as_tuple(self):
         """Represents the number as a triple tuple.
 
         To show the internals exactly as they are.
         """
-        return (self._sign, self._int, self._exp)
+        return (self._sign, tuple(map(int, self._int)), self._exp)
 
     def __repr__(self):
         """Represents the number as an instance of Decimal."""
         # Invariant:  eval(repr(d)) == d
         return 'Decimal("%s")' % str(self)
 
-    def __str__(self, eng = 0, context=None):
+    def __str__(self, eng=False, context=None):
         """Return string representation of the number in scientific notation.
 
         Captures all of the information in the underlying representation.
         """
 
+        sign = ['', '-'][self._sign]
         if self._is_special:
-            if self._isnan():
-                minus = '-'*self._sign
-                if self._int == (0,):
-                    info = ''
-                else:
-                    info = ''.join(map(str, self._int))
-                if self._isnan() == 2:
-                    return minus + 'sNaN' + info
-                return minus + 'NaN' + info
-            if self._isinfinity():
-                minus = '-'*self._sign
-                return minus + 'Infinity'
+            if self._exp == 'F':
+                return sign + 'Infinity'
+            elif self._exp == 'n':
+                return sign + 'NaN' + self._int
+            else: # self._exp == 'N'
+                return sign + 'sNaN' + self._int
 
-        if context is None:
-            context = getcontext()
+        # number of digits of self._int to left of decimal point
+        leftdigits = self._exp + len(self._int)
 
-        tmp = map(str, self._int)
-        numdigits = len(self._int)
-        leftdigits = self._exp + numdigits
-        if eng and not self: #self = 0eX wants 0[.0[0]]eY, not [[0]0]0eY
-            if self._exp < 0 and self._exp >= -6: #short, no need for e/E
-                s = '-'*self._sign + '0.' + '0'*(abs(self._exp))
-                return s
-            #exp is closest mult. of 3 >= self._exp
-            exp = ((self._exp - 1)// 3 + 1) * 3
-            if exp != self._exp:
-                s = '0.'+'0'*(exp - self._exp)
-            else:
-                s = '0'
-            if exp != 0:
-                if context.capitals:
-                    s += 'E'
-                else:
-                    s += 'e'
-                if exp > 0:
-                    s += '+' #0.0e+3, not 0.0e3
-                s += str(exp)
-            s = '-'*self._sign + s
-            return s
-        if eng:
-            dotplace = (leftdigits-1)%3+1
-            adjexp = leftdigits -1 - (leftdigits-1)%3
-        else:
-            adjexp = leftdigits-1
+        # dotplace is number of digits of self._int to the left of the
+        # decimal point in the mantissa of the output string (that is,
+        # after adjusting the exponent)
+        if self._exp <= 0 and leftdigits > -6:
+            # no exponent required
+            dotplace = leftdigits
+        elif not eng:
+            # usual scientific notation: 1 digit on left of the point
             dotplace = 1
-        if self._exp == 0:
-            pass
-        elif self._exp < 0 and adjexp >= 0:
-            tmp.insert(leftdigits, '.')
-        elif self._exp < 0 and adjexp >= -6:
-            tmp[0:0] = ['0'] * int(-leftdigits)
-            tmp.insert(0, '0.')
+        elif self._int == '0':
+            # engineering notation, zero
+            dotplace = (leftdigits + 1) % 3 - 1
         else:
-            if numdigits > dotplace:
-                tmp.insert(dotplace, '.')
-            elif numdigits < dotplace:
-                tmp.extend(['0']*(dotplace-numdigits))
-            if adjexp:
-                if not context.capitals:
-                    tmp.append('e')
-                else:
-                    tmp.append('E')
-                    if adjexp > 0:
-                        tmp.append('+')
-                tmp.append(str(adjexp))
-        if eng:
-            while tmp[0:1] == ['0']:
-                tmp[0:1] = []
-            if len(tmp) == 0 or tmp[0] == '.' or tmp[0].lower() == 'e':
-                tmp[0:0] = ['0']
-        if self._sign:
-            tmp.insert(0, '-')
+            # engineering notation, nonzero
+            dotplace = (leftdigits - 1) % 3 + 1
 
-        return ''.join(tmp)
+        if dotplace <= 0:
+            intpart = '0'
+            fracpart = '.' + '0'*(-dotplace) + self._int
+        elif dotplace >= len(self._int):
+            intpart = self._int+'0'*(dotplace-len(self._int))
+            fracpart = ''
+        else:
+            intpart = self._int[:dotplace]
+            fracpart = '.' + self._int[dotplace:]
+        if leftdigits == dotplace:
+            exp = ''
+        else:
+            if context is None:
+                context = getcontext()
+            exp = ['e', 'E'][context.capitals] + "%+d" % (leftdigits-dotplace)
+
+        return sign + intpart + fracpart + exp
 
     def to_eng_string(self, context=None):
         """Convert to engineering-type string.
@@ -887,7 +887,7 @@
 
         Same rules for when in exponential and when as a value as in __str__.
         """
-        return self.__str__(eng=1, context=context)
+        return self.__str__(eng=True, context=context)
 
     def __neg__(self, context=None):
         """Returns a copy with the sign switched.
@@ -901,17 +901,13 @@
 
         if not self:
             # -Decimal('0') is Decimal('0'), not Decimal('-0')
-            sign = 0
-        elif self._sign:
-            sign = 0
+            ans = self.copy_abs()
         else:
-            sign = 1
+            ans = self.copy_negate()
 
         if context is None:
             context = getcontext()
-        if context._rounding_decision == ALWAYS_ROUND:
-            return Decimal((sign, self._int, self._exp))._fix(context)
-        return Decimal( (sign, self._int, self._exp))
+        return ans._fix(context)
 
     def __pos__(self, context=None):
         """Returns a copy, unless it is a sNaN.
@@ -923,37 +919,31 @@
             if ans:
                 return ans
 
-        sign = self._sign
         if not self:
             # + (-0) = 0
-            sign = 0
+            ans = self.copy_abs()
+        else:
+            ans = Decimal(self)
 
         if context is None:
             context = getcontext()
+        return ans._fix(context)
 
-        if context._rounding_decision == ALWAYS_ROUND:
-            ans = self._fix(context)
-        else:
-            ans = Decimal(self)
-        ans._sign = sign
-        return ans
-
-    def __abs__(self, round=1, context=None):
+    def __abs__(self, round=True, context=None):
         """Returns the absolute value of self.
 
-        If the second argument is 0, do not round.
+        If the keyword argument 'round' is false, do not round.  The
+        expression self.__abs__(round=False) is equivalent to
+        self.copy_abs().
         """
+        if not round:
+            return self.copy_abs()
+
         if self._is_special:
             ans = self._check_nans(context=context)
             if ans:
                 return ans
 
-        if not round:
-            if context is None:
-                context = getcontext()
-            context = context._shallow_copy()
-            context._set_rounding_decision(NEVER_ROUND)
-
         if self._sign:
             ans = self.__neg__(context=context)
         else:
@@ -979,66 +969,63 @@
                 return ans
 
             if self._isinfinity():
-                #If both INF, same sign => same as both, opposite => error.
+                # If both INF, same sign => same as both, opposite => error.
                 if self._sign != other._sign and other._isinfinity():
                     return context._raise_error(InvalidOperation, '-INF + INF')
                 return Decimal(self)
             if other._isinfinity():
-                return Decimal(other)  #Can't both be infinity here
-
-        shouldround = context._rounding_decision == ALWAYS_ROUND
+                return Decimal(other)  # Can't both be infinity here
 
         exp = min(self._exp, other._exp)
         negativezero = 0
         if context.rounding == ROUND_FLOOR and self._sign != other._sign:
-            #If the answer is 0, the sign should be negative, in this case.
+            # If the answer is 0, the sign should be negative, in this case.
             negativezero = 1
 
         if not self and not other:
             sign = min(self._sign, other._sign)
             if negativezero:
                 sign = 1
-            return Decimal( (sign, (0,), exp))
+            ans = _dec_from_triple(sign, '0', exp)
+            ans = ans._fix(context)
+            return ans
         if not self:
             exp = max(exp, other._exp - context.prec-1)
-            ans = other._rescale(exp, watchexp=0, context=context)
-            if shouldround:
-                ans = ans._fix(context)
+            ans = other._rescale(exp, context.rounding)
+            ans = ans._fix(context)
             return ans
         if not other:
             exp = max(exp, self._exp - context.prec-1)
-            ans = self._rescale(exp, watchexp=0, context=context)
-            if shouldround:
-                ans = ans._fix(context)
+            ans = self._rescale(exp, context.rounding)
+            ans = ans._fix(context)
             return ans
 
         op1 = _WorkRep(self)
         op2 = _WorkRep(other)
-        op1, op2 = _normalize(op1, op2, shouldround, context.prec)
+        op1, op2 = _normalize(op1, op2, context.prec)
 
         result = _WorkRep()
         if op1.sign != op2.sign:
             # Equal and opposite
             if op1.int == op2.int:
-                if exp < context.Etiny():
-                    exp = context.Etiny()
-                    context._raise_error(Clamped)
-                return Decimal((negativezero, (0,), exp))
+                ans = _dec_from_triple(negativezero, '0', exp)
+                ans = ans._fix(context)
+                return ans
             if op1.int < op2.int:
                 op1, op2 = op2, op1
-                #OK, now abs(op1) > abs(op2)
+                # OK, now abs(op1) > abs(op2)
             if op1.sign == 1:
                 result.sign = 1
                 op1.sign, op2.sign = op2.sign, op1.sign
             else:
                 result.sign = 0
-                #So we know the sign, and op1 > 0.
+                # So we know the sign, and op1 > 0.
         elif op1.sign == 1:
             result.sign = 1
             op1.sign, op2.sign = (0, 0)
         else:
             result.sign = 0
-        #Now, op1 > abs(op2) > 0
+        # Now, op1 > abs(op2) > 0
 
         if op2.sign == 0:
             result.int = op1.int + op2.int
@@ -1047,14 +1034,13 @@
 
         result.exp = op1.exp
         ans = Decimal(result)
-        if shouldround:
-            ans = ans._fix(context)
+        ans = ans._fix(context)
         return ans
 
     __radd__ = __add__
 
     def __sub__(self, other, context=None):
-        """Return self + (-other)"""
+        """Return self - other"""
         other = _convert_other(other)
         if other is NotImplemented:
             return other
@@ -1064,57 +1050,16 @@
             if ans:
                 return ans
 
-        # -Decimal(0) = Decimal(0), which we don't want since
-        # (-0 - 0 = -0 + (-0) = -0, but -0 + 0 = 0.)
-        # so we change the sign directly to a copy
-        tmp = Decimal(other)
-        tmp._sign = 1-tmp._sign
-
-        return self.__add__(tmp, context=context)
+        # self - other is computed as self + other.copy_negate()
+        return self.__add__(other.copy_negate(), context=context)
 
     def __rsub__(self, other, context=None):
-        """Return other + (-self)"""
+        """Return other - self"""
         other = _convert_other(other)
         if other is NotImplemented:
             return other
 
-        tmp = Decimal(self)
-        tmp._sign = 1 - tmp._sign
-        return other.__add__(tmp, context=context)
-
-    def _increment(self, round=1, context=None):
-        """Special case of add, adding 1eExponent
-
-        Since it is common, (rounding, for example) this adds
-        (sign)*one E self._exp to the number more efficiently than add.
-
-        For example:
-        Decimal('5.624e10')._increment() == Decimal('5.625e10')
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-            return Decimal(self) # Must be infinite, and incrementing makes no difference
-
-        L = list(self._int)
-        L[-1] += 1
-        spot = len(L)-1
-        while L[spot] == 10:
-            L[spot] = 0
-            if spot == 0:
-                L[0:0] = [1]
-                break
-            L[spot-1] += 1
-            spot -= 1
-        ans = Decimal((self._sign, L, self._exp))
-
-        if context is None:
-            context = getcontext()
-        if round and context._rounding_decision == ALWAYS_ROUND:
-            ans = ans._fix(context)
-        return ans
+        return other.__sub__(self, context=context)
 
     def __mul__(self, other, context=None):
         """Return self * other.
@@ -1146,60 +1091,38 @@
                 return Infsign[resultsign]
 
         resultexp = self._exp + other._exp
-        shouldround = context._rounding_decision == ALWAYS_ROUND
 
         # Special case for multiplying by zero
         if not self or not other:
-            ans = Decimal((resultsign, (0,), resultexp))
-            if shouldround:
-                #Fixing in case the exponent is out of bounds
-                ans = ans._fix(context)
+            ans = _dec_from_triple(resultsign, '0', resultexp)
+            # Fixing in case the exponent is out of bounds
+            ans = ans._fix(context)
             return ans
 
         # Special case for multiplying by power of 10
-        if self._int == (1,):
-            ans = Decimal((resultsign, other._int, resultexp))
-            if shouldround:
-                ans = ans._fix(context)
+        if self._int == '1':
+            ans = _dec_from_triple(resultsign, other._int, resultexp)
+            ans = ans._fix(context)
             return ans
-        if other._int == (1,):
-            ans = Decimal((resultsign, self._int, resultexp))
-            if shouldround:
-                ans = ans._fix(context)
+        if other._int == '1':
+            ans = _dec_from_triple(resultsign, self._int, resultexp)
+            ans = ans._fix(context)
             return ans
 
         op1 = _WorkRep(self)
         op2 = _WorkRep(other)
 
-        ans = Decimal( (resultsign, map(int, str(op1.int * op2.int)), resultexp))
-        if shouldround:
-            ans = ans._fix(context)
+        ans = _dec_from_triple(resultsign, str(op1.int * op2.int), resultexp)
+        ans = ans._fix(context)
 
         return ans
     __rmul__ = __mul__
 
     def __div__(self, other, context=None):
         """Return self / other."""
-        return self._divide(other, context=context)
-    __truediv__ = __div__
-
-    def _divide(self, other, divmod = 0, context=None):
-        """Return a / b, to context.prec precision.
-
-        divmod:
-        0 => true division
-        1 => (a //b, a%b)
-        2 => a //b
-        3 => a%b
-
-        Actually, if divmod is 2 or 3 a tuple is returned, but errors for
-        computing the other value are not raised.
-        """
         other = _convert_other(other)
         if other is NotImplemented:
-            if divmod in (0, 1):
-                return NotImplemented
-            return (NotImplemented, NotImplemented)
+            return NotImplemented
 
         if context is None:
             context = getcontext()
@@ -1209,145 +1132,85 @@
         if self._is_special or other._is_special:
             ans = self._check_nans(other, context)
             if ans:
-                if divmod:
-                    return (ans, ans)
                 return ans
 
             if self._isinfinity() and other._isinfinity():
-                if divmod:
-                    return (context._raise_error(InvalidOperation,
-                                            '(+-)INF // (+-)INF'),
-                            context._raise_error(InvalidOperation,
-                                            '(+-)INF % (+-)INF'))
                 return context._raise_error(InvalidOperation, '(+-)INF/(+-)INF')
 
             if self._isinfinity():
-                if divmod == 1:
-                    return (Infsign[sign],
-                            context._raise_error(InvalidOperation, 'INF % x'))
-                elif divmod == 2:
-                    return (Infsign[sign], NaN)
-                elif divmod == 3:
-                    return (Infsign[sign],
-                            context._raise_error(InvalidOperation, 'INF % x'))
                 return Infsign[sign]
 
             if other._isinfinity():
-                if divmod:
-                    return (Decimal((sign, (0,), 0)), Decimal(self))
                 context._raise_error(Clamped, 'Division by infinity')
-                return Decimal((sign, (0,), context.Etiny()))
+                return _dec_from_triple(sign, '0', context.Etiny())
 
         # Special cases for zeroes
-        if not self and not other:
-            if divmod:
-                return context._raise_error(DivisionUndefined, '0 / 0', 1)
-            return context._raise_error(DivisionUndefined, '0 / 0')
-
-        if not self:
-            if divmod:
-                otherside = Decimal(self)
-                otherside._exp = min(self._exp, other._exp)
-                return (Decimal((sign, (0,), 0)),  otherside)
-            exp = self._exp - other._exp
-            if exp < context.Etiny():
-                exp = context.Etiny()
-                context._raise_error(Clamped, '0e-x / y')
-            if exp > context.Emax:
-                exp = context.Emax
-                context._raise_error(Clamped, '0e+x / y')
-            return Decimal( (sign, (0,), exp) )
-
         if not other:
-            if divmod:
-                return context._raise_error(DivisionByZero, 'divmod(x,0)',
-                                           sign, 1)
+            if not self:
+                return context._raise_error(DivisionUndefined, '0 / 0')
             return context._raise_error(DivisionByZero, 'x / 0', sign)
 
-        #OK, so neither = 0, INF or NaN
+        if not self:
+            exp = self._exp - other._exp
+            coeff = 0
+        else:
+            # OK, so neither = 0, INF or NaN
+            shift = len(other._int) - len(self._int) + context.prec + 1
+            exp = self._exp - other._exp - shift
+            op1 = _WorkRep(self)
+            op2 = _WorkRep(other)
+            if shift >= 0:
+                coeff, remainder = divmod(op1.int * 10**shift, op2.int)
+            else:
+                coeff, remainder = divmod(op1.int, op2.int * 10**-shift)
+            if remainder:
+                # result is not exact; adjust to ensure correct rounding
+                if coeff % 5 == 0:
+                    coeff += 1
+            else:
+                # result is exact; get as close to ideal exponent as possible
+                ideal_exp = self._exp - other._exp
+                while exp < ideal_exp and coeff % 10 == 0:
+                    coeff //= 10
+                    exp += 1
 
-        shouldround = context._rounding_decision == ALWAYS_ROUND
+        ans = _dec_from_triple(sign, str(coeff), exp)
+        return ans._fix(context)
 
-        #If we're dividing into ints, and self < other, stop.
-        #self.__abs__(0) does not round.
-        if divmod and (self.__abs__(0, context) < other.__abs__(0, context)):
+    __truediv__ = __div__
 
-            if divmod == 1 or divmod == 3:
-                exp = min(self._exp, other._exp)
-                ans2 = self._rescale(exp, context=context, watchexp=0)
-                if shouldround:
-                    ans2 = ans2._fix(context)
-                return (Decimal( (sign, (0,), 0) ),
-                        ans2)
+    def _divide(self, other, context):
+        """Return (self // other, self % other), to context.prec precision.
 
-            elif divmod == 2:
-                #Don't round the mod part, if we don't need it.
-                return (Decimal( (sign, (0,), 0) ), Decimal(self))
+        Assumes that neither self nor other is a NaN, that self is not
+        infinite and that other is nonzero.
+        """
+        sign = self._sign ^ other._sign
+        if other._isinfinity():
+            ideal_exp = self._exp
+        else:
+            ideal_exp = min(self._exp, other._exp)
 
-        op1 = _WorkRep(self)
-        op2 = _WorkRep(other)
-        op1, op2, adjust = _adjust_coefficients(op1, op2)
-        res = _WorkRep( (sign, 0, (op1.exp - op2.exp)) )
-        if divmod and res.exp > context.prec + 1:
-            return context._raise_error(DivisionImpossible)
+        expdiff = self.adjusted() - other.adjusted()
+        if not self or other._isinfinity() or expdiff <= -2:
+            return (_dec_from_triple(sign, '0', 0),
+                    self._rescale(ideal_exp, context.rounding))
+        if expdiff <= context.prec:
+            op1 = _WorkRep(self)
+            op2 = _WorkRep(other)
+            if op1.exp >= op2.exp:
+                op1.int *= 10**(op1.exp - op2.exp)
+            else:
+                op2.int *= 10**(op2.exp - op1.exp)
+            q, r = divmod(op1.int, op2.int)
+            if q < 10**context.prec:
+                return (_dec_from_triple(sign, str(q), 0),
+                        _dec_from_triple(self._sign, str(r), ideal_exp))
 
-        prec_limit = 10 ** context.prec
-        while 1:
-            while op2.int <= op1.int:
-                res.int += 1
-                op1.int -= op2.int
-            if res.exp == 0 and divmod:
-                if res.int >= prec_limit and shouldround:
-                    return context._raise_error(DivisionImpossible)
-                otherside = Decimal(op1)
-                frozen = context._ignore_all_flags()
-
-                exp = min(self._exp, other._exp)
-                otherside = otherside._rescale(exp, context=context, watchexp=0)
-                context._regard_flags(*frozen)
-                if shouldround:
-                    otherside = otherside._fix(context)
-                return (Decimal(res), otherside)
-
-            if op1.int == 0 and adjust >= 0 and not divmod:
-                break
-            if res.int >= prec_limit and shouldround:
-                if divmod:
-                    return context._raise_error(DivisionImpossible)
-                shouldround=1
-                # Really, the answer is a bit higher, so adding a one to
-                # the end will make sure the rounding is right.
-                if op1.int != 0:
-                    res.int *= 10
-                    res.int += 1
-                    res.exp -= 1
-
-                break
-            res.int *= 10
-            res.exp -= 1
-            adjust += 1
-            op1.int *= 10
-            op1.exp -= 1
-
-            if res.exp == 0 and divmod and op2.int > op1.int:
-                #Solves an error in precision.  Same as a previous block.
-
-                if res.int >= prec_limit and shouldround:
-                    return context._raise_error(DivisionImpossible)
-                otherside = Decimal(op1)
-                frozen = context._ignore_all_flags()
-
-                exp = min(self._exp, other._exp)
-                otherside = otherside._rescale(exp, context=context)
-
-                context._regard_flags(*frozen)
-
-                return (Decimal(res), otherside)
-
-        ans = Decimal(res)
-        if shouldround:
-            ans = ans._fix(context)
-        return ans
+        # Here the quotient is too large to be representable
+        ans = context._raise_error(DivisionImpossible,
+                                   'quotient too large in //, % or divmod')
+        return ans, ans
 
     def __rdiv__(self, other, context=None):
         """Swaps self/other and returns __div__."""
@@ -1359,9 +1222,39 @@
 
     def __divmod__(self, other, context=None):
         """
-        (self // other, self % other)
+        Return (self // other, self % other)
         """
-        return self._divide(other, 1, context)
+        other = _convert_other(other)
+        if other is NotImplemented:
+            return other
+
+        if context is None:
+            context = getcontext()
+
+        ans = self._check_nans(other, context)
+        if ans:
+            return (ans, ans)
+
+        sign = self._sign ^ other._sign
+        if self._isinfinity():
+            if other._isinfinity():
+                ans = context._raise_error(InvalidOperation, 'divmod(INF, INF)')
+                return ans, ans
+            else:
+                return (Infsign[sign],
+                        context._raise_error(InvalidOperation, 'INF % x'))
+
+        if not other:
+            if not self:
+                ans = context._raise_error(DivisionUndefined, 'divmod(0, 0)')
+                return ans, ans
+            else:
+                return (context._raise_error(DivisionByZero, 'x // 0', sign),
+                        context._raise_error(InvalidOperation, 'x % 0'))
+
+        quotient, remainder = self._divide(other, context)
+        remainder = remainder._fix(context)
+        return quotient, remainder
 
     def __rdivmod__(self, other, context=None):
         """Swaps self/other and returns __divmod__."""
@@ -1378,15 +1271,24 @@
         if other is NotImplemented:
             return other
 
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
+        if context is None:
+            context = getcontext()
 
-        if self and not other:
-            return context._raise_error(InvalidOperation, 'x % 0')
+        ans = self._check_nans(other, context)
+        if ans:
+            return ans
 
-        return self._divide(other, 3, context)[1]
+        if self._isinfinity():
+            return context._raise_error(InvalidOperation, 'INF % x')
+        elif not other:
+            if self:
+                return context._raise_error(InvalidOperation, 'x % 0')
+            else:
+                return context._raise_error(DivisionUndefined, '0 % 0')
+
+        remainder = self._divide(other, context)[1]
+        remainder = remainder._fix(context)
+        return remainder
 
     def __rmod__(self, other, context=None):
         """Swaps self/other and returns __mod__."""
@@ -1399,84 +1301,104 @@
         """
         Remainder nearest to 0-  abs(remainder-near) <= other/2
         """
+        if context is None:
+            context = getcontext()
+
+        other = _convert_other(other, raiseit=True)
+
+        ans = self._check_nans(other, context)
+        if ans:
+            return ans
+
+        # self == +/-infinity -> InvalidOperation
+        if self._isinfinity():
+            return context._raise_error(InvalidOperation,
+                                        'remainder_near(infinity, x)')
+
+        # other == 0 -> either InvalidOperation or DivisionUndefined
+        if not other:
+            if self:
+                return context._raise_error(InvalidOperation,
+                                            'remainder_near(x, 0)')
+            else:
+                return context._raise_error(DivisionUndefined,
+                                            'remainder_near(0, 0)')
+
+        # other = +/-infinity -> remainder = self
+        if other._isinfinity():
+            ans = Decimal(self)
+            return ans._fix(context)
+
+        # self = 0 -> remainder = self, with ideal exponent
+        ideal_exponent = min(self._exp, other._exp)
+        if not self:
+            ans = _dec_from_triple(self._sign, '0', ideal_exponent)
+            return ans._fix(context)
+
+        # catch most cases of large or small quotient
+        expdiff = self.adjusted() - other.adjusted()
+        if expdiff >= context.prec + 1:
+            # expdiff >= prec+1 => abs(self/other) > 10**prec
+            return context._raise_error(DivisionImpossible)
+        if expdiff <= -2:
+            # expdiff <= -2 => abs(self/other) < 0.1
+            ans = self._rescale(ideal_exponent, context.rounding)
+            return ans._fix(context)
+
+        # adjust both arguments to have the same exponent, then divide
+        op1 = _WorkRep(self)
+        op2 = _WorkRep(other)
+        if op1.exp >= op2.exp:
+            op1.int *= 10**(op1.exp - op2.exp)
+        else:
+            op2.int *= 10**(op2.exp - op1.exp)
+        q, r = divmod(op1.int, op2.int)
+        # remainder is r*10**ideal_exponent; other is +/-op2.int *
+        # 10**ideal_exponent.   Apply correction to ensure that
+        # abs(remainder) <= abs(other)/2
+        if 2*r + (q&1) > op2.int:
+            r -= op2.int
+            q += 1
+
+        if q >= 10**context.prec:
+            return context._raise_error(DivisionImpossible)
+
+        # result has same sign as self unless r is negative
+        sign = self._sign
+        if r < 0:
+            sign = 1-sign
+            r = -r
+
+        ans = _dec_from_triple(sign, str(r), ideal_exponent)
+        return ans._fix(context)
+
+    def __floordiv__(self, other, context=None):
+        """self // other"""
         other = _convert_other(other)
         if other is NotImplemented:
             return other
 
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-        if self and not other:
-            return context._raise_error(InvalidOperation, 'x % 0')
-
         if context is None:
             context = getcontext()
-        # If DivisionImpossible causes an error, do not leave Rounded/Inexact
-        # ignored in the calling function.
-        context = context._shallow_copy()
-        flags = context._ignore_flags(Rounded, Inexact)
-        #keep DivisionImpossible flags
-        (side, r) = self.__divmod__(other, context=context)
 
-        if r._isnan():
-            context._regard_flags(*flags)
-            return r
+        ans = self._check_nans(other, context)
+        if ans:
+            return ans
 
-        context = context._shallow_copy()
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-
-        if other._sign:
-            comparison = other.__div__(Decimal(-2), context=context)
-        else:
-            comparison = other.__div__(Decimal(2), context=context)
-
-        context._set_rounding_decision(rounding)
-        context._regard_flags(*flags)
-
-        s1, s2 = r._sign, comparison._sign
-        r._sign, comparison._sign = 0, 0
-
-        if r < comparison:
-            r._sign, comparison._sign = s1, s2
-            #Get flags now
-            self.__divmod__(other, context=context)
-            return r._fix(context)
-        r._sign, comparison._sign = s1, s2
-
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-
-        (side, r) = self.__divmod__(other, context=context)
-        context._set_rounding_decision(rounding)
-        if r._isnan():
-            return r
-
-        decrease = not side._iseven()
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-        side = side.__abs__(context=context)
-        context._set_rounding_decision(rounding)
-
-        s1, s2 = r._sign, comparison._sign
-        r._sign, comparison._sign = 0, 0
-        if r > comparison or decrease and r == comparison:
-            r._sign, comparison._sign = s1, s2
-            context.prec += 1
-            if len(side.__add__(Decimal(1), context=context)._int) >= context.prec:
-                context.prec -= 1
-                return context._raise_error(DivisionImpossible)[1]
-            context.prec -= 1
-            if self._sign == other._sign:
-                r = r.__sub__(other, context=context)
+        if self._isinfinity():
+            if other._isinfinity():
+                return context._raise_error(InvalidOperation, 'INF // INF')
             else:
-                r = r.__add__(other, context=context)
-        else:
-            r._sign, comparison._sign = s1, s2
+                return Infsign[self._sign ^ other._sign]
 
-        return r._fix(context)
+        if not other:
+            if self:
+                return context._raise_error(DivisionByZero, 'x // 0',
+                                            self._sign ^ other._sign)
+            else:
+                return context._raise_error(DivisionUndefined, '0 // 0')
 
-    def __floordiv__(self, other, context=None):
-        """self // other"""
-        return self._divide(other, 2, context)[0]
+        return self._divide(other, context)[0]
 
     def __rfloordiv__(self, other, context=None):
         """Swaps self/other and returns __floordiv__."""
@@ -1496,15 +1418,12 @@
                 context = getcontext()
                 return context._raise_error(InvalidContext)
             elif self._isinfinity():
-                raise OverflowError, "Cannot convert infinity to long"
+                raise OverflowError("Cannot convert infinity to long")
+        s = (-1)**self._sign
         if self._exp >= 0:
-            s = ''.join(map(str, self._int)) + '0'*self._exp
+            return s*int(self._int)*10**self._exp
         else:
-            s = ''.join(map(str, self._int))[:self._exp]
-        if s == '':
-            s = '0'
-        sign = '-'*self._sign
-        return int(sign + s)
+            return s*int(self._int[:self._exp] or '0')
 
     def __long__(self):
         """Converts to a long.
@@ -1513,6 +1432,18 @@
         """
         return long(self.__int__())
 
+    def _fix_nan(self, context):
+        """Decapitate the payload of a NaN to fit the context"""
+        payload = self._int
+
+        # maximum length of payload is precision if _clamp=0,
+        # precision-1 if _clamp=1.
+        max_payload_len = context.prec - context._clamp
+        if len(payload) > max_payload_len:
+            payload = payload[len(payload)-max_payload_len:].lstrip('0')
+            return _dec_from_triple(self._sign, payload, self._exp, True)
+        return Decimal(self)
+
     def _fix(self, context):
         """Round if it is necessary to keep self within prec precision.
 
@@ -1522,301 +1453,673 @@
         self - Decimal instance
         context - context used.
         """
-        if self._is_special:
-            return self
-        if context is None:
-            context = getcontext()
-        prec = context.prec
-        ans = self._fixexponents(context)
-        if len(ans._int) > prec:
-            ans = ans._round(prec, context=context)
-            ans = ans._fixexponents(context)
-        return ans
-
-    def _fixexponents(self, context):
-        """Fix the exponents and return a copy with the exponent in bounds.
-        Only call if known to not be a special value.
-        """
-        folddown = context._clamp
-        Emin = context.Emin
-        ans = self
-        ans_adjusted = ans.adjusted()
-        if ans_adjusted < Emin:
-            Etiny = context.Etiny()
-            if ans._exp < Etiny:
-                if not ans:
-                    ans = Decimal(self)
-                    ans._exp = Etiny
-                    context._raise_error(Clamped)
-                    return ans
-                ans = ans._rescale(Etiny, context=context)
-                #It isn't zero, and exp < Emin => subnormal
-                context._raise_error(Subnormal)
-                if context.flags[Inexact]:
-                    context._raise_error(Underflow)
-            else:
-                if ans:
-                    #Only raise subnormal if non-zero.
-                    context._raise_error(Subnormal)
-        else:
-            Etop = context.Etop()
-            if folddown and ans._exp > Etop:
-                context._raise_error(Clamped)
-                ans = ans._rescale(Etop, context=context)
-            else:
-                Emax = context.Emax
-                if ans_adjusted > Emax:
-                    if not ans:
-                        ans = Decimal(self)
-                        ans._exp = Emax
-                        context._raise_error(Clamped)
-                        return ans
-                    context._raise_error(Inexact)
-                    context._raise_error(Rounded)
-                    return context._raise_error(Overflow, 'above Emax', ans._sign)
-        return ans
-
-    def _round(self, prec=None, rounding=None, context=None):
-        """Returns a rounded version of self.
-
-        You can specify the precision or rounding method.  Otherwise, the
-        context determines it.
-        """
 
         if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-            if self._isinfinity():
+            if self._isnan():
+                # decapitate payload if necessary
+                return self._fix_nan(context)
+            else:
+                # self is +/-Infinity; return unaltered
                 return Decimal(self)
 
-        if context is None:
-            context = getcontext()
-
-        if rounding is None:
-            rounding = context.rounding
-        if prec is None:
-            prec = context.prec
-
+        # if self is zero then exponent should be between Etiny and
+        # Emax if _clamp==0, and between Etiny and Etop if _clamp==1.
+        Etiny = context.Etiny()
+        Etop = context.Etop()
         if not self:
-            if prec <= 0:
-                dig = (0,)
-                exp = len(self._int) - prec + self._exp
+            exp_max = [context.Emax, Etop][context._clamp]
+            new_exp = min(max(self._exp, Etiny), exp_max)
+            if new_exp != self._exp:
+                context._raise_error(Clamped)
+                return _dec_from_triple(self._sign, '0', new_exp)
             else:
-                dig = (0,) * prec
-                exp = len(self._int) + self._exp - prec
-            ans = Decimal((self._sign, dig, exp))
+                return Decimal(self)
+
+        # exp_min is the smallest allowable exponent of the result,
+        # equal to max(self.adjusted()-context.prec+1, Etiny)
+        exp_min = len(self._int) + self._exp - context.prec
+        if exp_min > Etop:
+            # overflow: exp_min > Etop iff self.adjusted() > Emax
+            context._raise_error(Inexact)
             context._raise_error(Rounded)
-            return ans
+            return context._raise_error(Overflow, 'above Emax', self._sign)
+        self_is_subnormal = exp_min < Etiny
+        if self_is_subnormal:
+            context._raise_error(Subnormal)
+            exp_min = Etiny
 
-        if prec == 0:
-            temp = Decimal(self)
-            temp._int = (0,)+temp._int
-            prec = 1
-        elif prec < 0:
-            exp = self._exp + len(self._int) - prec - 1
-            temp = Decimal( (self._sign, (0, 1), exp))
-            prec = 1
-        else:
-            temp = Decimal(self)
-
-        numdigits = len(temp._int)
-        if prec == numdigits:
-            return temp
-
-        # See if we need to extend precision
-        expdiff = prec - numdigits
-        if expdiff > 0:
-            tmp = list(temp._int)
-            tmp.extend([0] * expdiff)
-            ans =  Decimal( (temp._sign, tmp, temp._exp - expdiff))
-            return ans
-
-        #OK, but maybe all the lost digits are 0.
-        lostdigits = self._int[expdiff:]
-        if lostdigits == (0,) * len(lostdigits):
-            ans = Decimal( (temp._sign, temp._int[:prec], temp._exp - expdiff))
-            #Rounded, but not Inexact
+        # round if self has too many digits
+        if self._exp < exp_min:
             context._raise_error(Rounded)
+            digits = len(self._int) + self._exp - exp_min
+            if digits < 0:
+                self = _dec_from_triple(self._sign, '1', exp_min-1)
+                digits = 0
+            this_function = getattr(self, self._pick_rounding_function[context.rounding])
+            changed = this_function(digits)
+            coeff = self._int[:digits] or '0'
+            if changed == 1:
+                coeff = str(int(coeff)+1)
+            ans = _dec_from_triple(self._sign, coeff, exp_min)
+
+            if changed:
+                context._raise_error(Inexact)
+                if self_is_subnormal:
+                    context._raise_error(Underflow)
+                    if not ans:
+                        # raise Clamped on underflow to 0
+                        context._raise_error(Clamped)
+                elif len(ans._int) == context.prec+1:
+                    # we get here only if rescaling rounds the
+                    # cofficient up to exactly 10**context.prec
+                    if ans._exp < Etop:
+                        ans = _dec_from_triple(ans._sign,
+                                                   ans._int[:-1], ans._exp+1)
+                    else:
+                        # Inexact and Rounded have already been raised
+                        ans = context._raise_error(Overflow, 'above Emax',
+                                                   self._sign)
             return ans
 
-        # Okay, let's round and lose data
+        # fold down if _clamp == 1 and self has too few digits
+        if context._clamp == 1 and self._exp > Etop:
+            context._raise_error(Clamped)
+            self_padded = self._int + '0'*(self._exp - Etop)
+            return _dec_from_triple(self._sign, self_padded, Etop)
 
-        this_function = getattr(temp, self._pick_rounding_function[rounding])
-        #Now we've got the rounding function
-
-        if prec != context.prec:
-            context = context._shallow_copy()
-            context.prec = prec
-        ans = this_function(prec, expdiff, context)
-        context._raise_error(Rounded)
-        context._raise_error(Inexact, 'Changed in rounding')
-
-        return ans
+        # here self was representable to begin with; return unchanged
+        return Decimal(self)
 
     _pick_rounding_function = {}
 
-    def _round_down(self, prec, expdiff, context):
+    # for each of the rounding functions below:
+    #   self is a finite, nonzero Decimal
+    #   prec is an integer satisfying 0 <= prec < len(self._int)
+    #
+    # each function returns either -1, 0, or 1, as follows:
+    #   1 indicates that self should be rounded up (away from zero)
+    #   0 indicates that self should be truncated, and that all the
+    #     digits to be truncated are zeros (so the value is unchanged)
+    #  -1 indicates that there are nonzero digits to be truncated
+
+    def _round_down(self, prec):
         """Also known as round-towards-0, truncate."""
-        return Decimal( (self._sign, self._int[:prec], self._exp - expdiff) )
+        if _all_zeros(self._int, prec):
+            return 0
+        else:
+            return -1
 
-    def _round_half_up(self, prec, expdiff, context, tmp = None):
-        """Rounds 5 up (away from 0)"""
-
-        if tmp is None:
-            tmp = Decimal( (self._sign,self._int[:prec], self._exp - expdiff))
-        if self._int[prec] >= 5:
-            tmp = tmp._increment(round=0, context=context)
-            if len(tmp._int) > prec:
-                return Decimal( (tmp._sign, tmp._int[:-1], tmp._exp + 1))
-        return tmp
-
-    def _round_half_even(self, prec, expdiff, context):
-        """Round 5 to even, rest to nearest."""
-
-        tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff))
-        half = (self._int[prec] == 5)
-        if half:
-            for digit in self._int[prec+1:]:
-                if digit != 0:
-                    half = 0
-                    break
-        if half:
-            if self._int[prec-1] & 1 == 0:
-                return tmp
-        return self._round_half_up(prec, expdiff, context, tmp)
-
-    def _round_half_down(self, prec, expdiff, context):
-        """Round 5 down"""
-
-        tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff))
-        half = (self._int[prec] == 5)
-        if half:
-            for digit in self._int[prec+1:]:
-                if digit != 0:
-                    half = 0
-                    break
-        if half:
-            return tmp
-        return self._round_half_up(prec, expdiff, context, tmp)
-
-    def _round_up(self, prec, expdiff, context):
+    def _round_up(self, prec):
         """Rounds away from 0."""
-        tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff) )
-        for digit in self._int[prec:]:
-            if digit != 0:
-                tmp = tmp._increment(round=1, context=context)
-                if len(tmp._int) > prec:
-                    return Decimal( (tmp._sign, tmp._int[:-1], tmp._exp + 1))
-                else:
-                    return tmp
-        return tmp
+        return -self._round_down(prec)
 
-    def _round_ceiling(self, prec, expdiff, context):
+    def _round_half_up(self, prec):
+        """Rounds 5 up (away from 0)"""
+        if self._int[prec] in '56789':
+            return 1
+        elif _all_zeros(self._int, prec):
+            return 0
+        else:
+            return -1
+
+    def _round_half_down(self, prec):
+        """Round 5 down"""
+        if _exact_half(self._int, prec):
+            return -1
+        else:
+            return self._round_half_up(prec)
+
+    def _round_half_even(self, prec):
+        """Round 5 to even, rest to nearest."""
+        if _exact_half(self._int, prec) and \
+                (prec == 0 or self._int[prec-1] in '02468'):
+            return -1
+        else:
+            return self._round_half_up(prec)
+
+    def _round_ceiling(self, prec):
         """Rounds up (not away from 0 if negative.)"""
         if self._sign:
-            return self._round_down(prec, expdiff, context)
+            return self._round_down(prec)
         else:
-            return self._round_up(prec, expdiff, context)
+            return -self._round_down(prec)
 
-    def _round_floor(self, prec, expdiff, context):
+    def _round_floor(self, prec):
         """Rounds down (not towards 0 if negative)"""
         if not self._sign:
-            return self._round_down(prec, expdiff, context)
+            return self._round_down(prec)
         else:
-            return self._round_up(prec, expdiff, context)
+            return -self._round_down(prec)
 
-    def __pow__(self, n, modulo = None, context=None):
-        """Return self ** n (mod modulo)
+    def _round_05up(self, prec):
+        """Round down unless digit prec-1 is 0 or 5."""
+        if prec and self._int[prec-1] not in '05':
+            return self._round_down(prec)
+        else:
+            return -self._round_down(prec)
 
-        If modulo is None (default), don't take it mod modulo.
+    def fma(self, other, third, context=None):
+        """Fused multiply-add.
+
+        Returns self*other+third with no rounding of the intermediate
+        product self*other.
+
+        self and other are multiplied together, with no rounding of
+        the result.  The third operand is then added to the result,
+        and a single final rounding is performed.
         """
-        n = _convert_other(n)
-        if n is NotImplemented:
-            return n
+
+        other = _convert_other(other, raiseit=True)
+
+        # compute product; raise InvalidOperation if either operand is
+        # a signaling NaN or if the product is zero times infinity.
+        if self._is_special or other._is_special:
+            if context is None:
+                context = getcontext()
+            if self._exp == 'N':
+                return context._raise_error(InvalidOperation, 'sNaN', self)
+            if other._exp == 'N':
+                return context._raise_error(InvalidOperation, 'sNaN', other)
+            if self._exp == 'n':
+                product = self
+            elif other._exp == 'n':
+                product = other
+            elif self._exp == 'F':
+                if not other:
+                    return context._raise_error(InvalidOperation,
+                                                'INF * 0 in fma')
+                product = Infsign[self._sign ^ other._sign]
+            elif other._exp == 'F':
+                if not self:
+                    return context._raise_error(InvalidOperation,
+                                                '0 * INF in fma')
+                product = Infsign[self._sign ^ other._sign]
+        else:
+            product = _dec_from_triple(self._sign ^ other._sign,
+                                       str(int(self._int) * int(other._int)),
+                                       self._exp + other._exp)
+
+        third = _convert_other(third, raiseit=True)
+        return product.__add__(third, context)
+
+    def _power_modulo(self, other, modulo, context=None):
+        """Three argument version of __pow__"""
+
+        # if can't convert other and modulo to Decimal, raise
+        # TypeError; there's no point returning NotImplemented (no
+        # equivalent of __rpow__ for three argument pow)
+        other = _convert_other(other, raiseit=True)
+        modulo = _convert_other(modulo, raiseit=True)
 
         if context is None:
             context = getcontext()
 
-        if self._is_special or n._is_special or n.adjusted() > 8:
-            #Because the spot << doesn't work with really big exponents
-            if n._isinfinity() or n.adjusted() > 8:
-                return context._raise_error(InvalidOperation, 'x ** INF')
+        # deal with NaNs: if there are any sNaNs then first one wins,
+        # (i.e. behaviour for NaNs is identical to that of fma)
+        self_is_nan = self._isnan()
+        other_is_nan = other._isnan()
+        modulo_is_nan = modulo._isnan()
+        if self_is_nan or other_is_nan or modulo_is_nan:
+            if self_is_nan == 2:
+                return context._raise_error(InvalidOperation, 'sNaN',
+                                        self)
+            if other_is_nan == 2:
+                return context._raise_error(InvalidOperation, 'sNaN',
+                                        other)
+            if modulo_is_nan == 2:
+                return context._raise_error(InvalidOperation, 'sNaN',
+                                        modulo)
+            if self_is_nan:
+                return self._fix_nan(context)
+            if other_is_nan:
+                return other._fix_nan(context)
+            return modulo._fix_nan(context)
 
-            ans = self._check_nans(n, context)
-            if ans:
-                return ans
+        # check inputs: we apply same restrictions as Python's pow()
+        if not (self._isinteger() and
+                other._isinteger() and
+                modulo._isinteger()):
+            return context._raise_error(InvalidOperation,
+                                        'pow() 3rd argument not allowed '
+                                        'unless all arguments are integers')
+        if other < 0:
+            return context._raise_error(InvalidOperation,
+                                        'pow() 2nd argument cannot be '
+                                        'negative when 3rd argument specified')
+        if not modulo:
+            return context._raise_error(InvalidOperation,
+                                        'pow() 3rd argument cannot be 0')
 
-        if not n._isinteger():
-            return context._raise_error(InvalidOperation, 'x ** (non-integer)')
+        # additional restriction for decimal: the modulus must be less
+        # than 10**prec in absolute value
+        if modulo.adjusted() >= context.prec:
+            return context._raise_error(InvalidOperation,
+                                        'insufficient precision: pow() 3rd '
+                                        'argument must not have more than '
+                                        'precision digits')
 
-        if not self and not n:
-            return context._raise_error(InvalidOperation, '0 ** 0')
+        # define 0**0 == NaN, for consistency with two-argument pow
+        # (even though it hurts!)
+        if not other and not self:
+            return context._raise_error(InvalidOperation,
+                                        'at least one of pow() 1st argument '
+                                        'and 2nd argument must be nonzero ;'
+                                        '0**0 is not defined')
 
-        if not n:
-            return Decimal(1)
+        # compute sign of result
+        if other._iseven():
+            sign = 0
+        else:
+            sign = self._sign
 
-        if self == Decimal(1):
-            return Decimal(1)
+        # convert modulo to a Python integer, and self and other to
+        # Decimal integers (i.e. force their exponents to be >= 0)
+        modulo = abs(int(modulo))
+        base = _WorkRep(self.to_integral_value())
+        exponent = _WorkRep(other.to_integral_value())
 
-        sign = self._sign and not n._iseven()
-        n = int(n)
+        # compute result using integer pow()
+        base = (base.int % modulo * pow(10, base.exp, modulo)) % modulo
+        for i in xrange(exponent.exp):
+            base = pow(base, 10, modulo)
+        base = pow(base, exponent.int, modulo)
 
+        return _dec_from_triple(sign, str(base), 0)
+
+    def _power_exact(self, other, p):
+        """Attempt to compute self**other exactly.
+
+        Given Decimals self and other and an integer p, attempt to
+        compute an exact result for the power self**other, with p
+        digits of precision.  Return None if self**other is not
+        exactly representable in p digits.
+
+        Assumes that elimination of special cases has already been
+        performed: self and other must both be nonspecial; self must
+        be positive and not numerically equal to 1; other must be
+        nonzero.  For efficiency, other._exp should not be too large,
+        so that 10**abs(other._exp) is a feasible calculation."""
+
+        # In the comments below, we write x for the value of self and
+        # y for the value of other.  Write x = xc*10**xe and y =
+        # yc*10**ye.
+
+        # The main purpose of this method is to identify the *failure*
+        # of x**y to be exactly representable with as little effort as
+        # possible.  So we look for cheap and easy tests that
+        # eliminate the possibility of x**y being exact.  Only if all
+        # these tests are passed do we go on to actually compute x**y.
+
+        # Here's the main idea.  First normalize both x and y.  We
+        # express y as a rational m/n, with m and n relatively prime
+        # and n>0.  Then for x**y to be exactly representable (at
+        # *any* precision), xc must be the nth power of a positive
+        # integer and xe must be divisible by n.  If m is negative
+        # then additionally xc must be a power of either 2 or 5, hence
+        # a power of 2**n or 5**n.
+        #
+        # There's a limit to how small |y| can be: if y=m/n as above
+        # then:
+        #
+        #  (1) if xc != 1 then for the result to be representable we
+        #      need xc**(1/n) >= 2, and hence also xc**|y| >= 2.  So
+        #      if |y| <= 1/nbits(xc) then xc < 2**nbits(xc) <=
+        #      2**(1/|y|), hence xc**|y| < 2 and the result is not
+        #      representable.
+        #
+        #  (2) if xe != 0, |xe|*(1/n) >= 1, so |xe|*|y| >= 1.  Hence if
+        #      |y| < 1/|xe| then the result is not representable.
+        #
+        # Note that since x is not equal to 1, at least one of (1) and
+        # (2) must apply.  Now |y| < 1/nbits(xc) iff |yc|*nbits(xc) <
+        # 10**-ye iff len(str(|yc|*nbits(xc)) <= -ye.
+        #
+        # There's also a limit to how large y can be, at least if it's
+        # positive: the normalized result will have coefficient xc**y,
+        # so if it's representable then xc**y < 10**p, and y <
+        # p/log10(xc).  Hence if y*log10(xc) >= p then the result is
+        # not exactly representable.
+
+        # if len(str(abs(yc*xe)) <= -ye then abs(yc*xe) < 10**-ye,
+        # so |y| < 1/xe and the result is not representable.
+        # Similarly, len(str(abs(yc)*xc_bits)) <= -ye implies |y|
+        # < 1/nbits(xc).
+
+        x = _WorkRep(self)
+        xc, xe = x.int, x.exp
+        while xc % 10 == 0:
+            xc //= 10
+            xe += 1
+
+        y = _WorkRep(other)
+        yc, ye = y.int, y.exp
+        while yc % 10 == 0:
+            yc //= 10
+            ye += 1
+
+        # case where xc == 1: result is 10**(xe*y), with xe*y
+        # required to be an integer
+        if xc == 1:
+            if ye >= 0:
+                exponent = xe*yc*10**ye
+            else:
+                exponent, remainder = divmod(xe*yc, 10**-ye)
+                if remainder:
+                    return None
+            if y.sign == 1:
+                exponent = -exponent
+            # if other is a nonnegative integer, use ideal exponent
+            if other._isinteger() and other._sign == 0:
+                ideal_exponent = self._exp*int(other)
+                zeros = min(exponent-ideal_exponent, p-1)
+            else:
+                zeros = 0
+            return _dec_from_triple(0, '1' + '0'*zeros, exponent-zeros)
+
+        # case where y is negative: xc must be either a power
+        # of 2 or a power of 5.
+        if y.sign == 1:
+            last_digit = xc % 10
+            if last_digit in (2,4,6,8):
+                # quick test for power of 2
+                if xc & -xc != xc:
+                    return None
+                # now xc is a power of 2; e is its exponent
+                e = _nbits(xc)-1
+                # find e*y and xe*y; both must be integers
+                if ye >= 0:
+                    y_as_int = yc*10**ye
+                    e = e*y_as_int
+                    xe = xe*y_as_int
+                else:
+                    ten_pow = 10**-ye
+                    e, remainder = divmod(e*yc, ten_pow)
+                    if remainder:
+                        return None
+                    xe, remainder = divmod(xe*yc, ten_pow)
+                    if remainder:
+                        return None
+
+                if e*65 >= p*93: # 93/65 > log(10)/log(5)
+                    return None
+                xc = 5**e
+
+            elif last_digit == 5:
+                # e >= log_5(xc) if xc is a power of 5; we have
+                # equality all the way up to xc=5**2658
+                e = _nbits(xc)*28//65
+                xc, remainder = divmod(5**e, xc)
+                if remainder:
+                    return None
+                while xc % 5 == 0:
+                    xc //= 5
+                    e -= 1
+                if ye >= 0:
+                    y_as_integer = yc*10**ye
+                    e = e*y_as_integer
+                    xe = xe*y_as_integer
+                else:
+                    ten_pow = 10**-ye
+                    e, remainder = divmod(e*yc, ten_pow)
+                    if remainder:
+                        return None
+                    xe, remainder = divmod(xe*yc, ten_pow)
+                    if remainder:
+                        return None
+                if e*3 >= p*10: # 10/3 > log(10)/log(2)
+                    return None
+                xc = 2**e
+            else:
+                return None
+
+            if xc >= 10**p:
+                return None
+            xe = -e-xe
+            return _dec_from_triple(0, str(xc), xe)
+
+        # now y is positive; find m and n such that y = m/n
+        if ye >= 0:
+            m, n = yc*10**ye, 1
+        else:
+            if xe != 0 and len(str(abs(yc*xe))) <= -ye:
+                return None
+            xc_bits = _nbits(xc)
+            if xc != 1 and len(str(abs(yc)*xc_bits)) <= -ye:
+                return None
+            m, n = yc, 10**(-ye)
+            while m % 2 == n % 2 == 0:
+                m //= 2
+                n //= 2
+            while m % 5 == n % 5 == 0:
+                m //= 5
+                n //= 5
+
+        # compute nth root of xc*10**xe
+        if n > 1:
+            # if 1 < xc < 2**n then xc isn't an nth power
+            if xc != 1 and xc_bits <= n:
+                return None
+
+            xe, rem = divmod(xe, n)
+            if rem != 0:
+                return None
+
+            # compute nth root of xc using Newton's method
+            a = 1L << -(-_nbits(xc)//n) # initial estimate
+            while True:
+                q, r = divmod(xc, a**(n-1))
+                if a <= q:
+                    break
+                else:
+                    a = (a*(n-1) + q)//n
+            if not (a == q and r == 0):
+                return None
+            xc = a
+
+        # now xc*10**xe is the nth root of the original xc*10**xe
+        # compute mth power of xc*10**xe
+
+        # if m > p*100//_log10_lb(xc) then m > p/log10(xc), hence xc**m >
+        # 10**p and the result is not representable.
+        if xc > 1 and m > p*100//_log10_lb(xc):
+            return None
+        xc = xc**m
+        xe *= m
+        if xc > 10**p:
+            return None
+
+        # by this point the result *is* exactly representable
+        # adjust the exponent to get as close as possible to the ideal
+        # exponent, if necessary
+        str_xc = str(xc)
+        if other._isinteger() and other._sign == 0:
+            ideal_exponent = self._exp*int(other)
+            zeros = min(xe-ideal_exponent, p-len(str_xc))
+        else:
+            zeros = 0
+        return _dec_from_triple(0, str_xc+'0'*zeros, xe-zeros)
+
+    def __pow__(self, other, modulo=None, context=None):
+        """Return self ** other [ % modulo].
+
+        With two arguments, compute self**other.
+
+        With three arguments, compute (self**other) % modulo.  For the
+        three argument form, the following restrictions on the
+        arguments hold:
+
+         - all three arguments must be integral
+         - other must be nonnegative
+         - either self or other (or both) must be nonzero
+         - modulo must be nonzero and must have at most p digits,
+           where p is the context precision.
+
+        If any of these restrictions is violated the InvalidOperation
+        flag is raised.
+
+        The result of pow(self, other, modulo) is identical to the
+        result that would be obtained by computing (self**other) %
+        modulo with unbounded precision, but is computed more
+        efficiently.  It is always exact.
+        """
+
+        if modulo is not None:
+            return self._power_modulo(other, modulo, context)
+
+        other = _convert_other(other)
+        if other is NotImplemented:
+            return other
+
+        if context is None:
+            context = getcontext()
+
+        # either argument is a NaN => result is NaN
+        ans = self._check_nans(other, context)
+        if ans:
+            return ans
+
+        # 0**0 = NaN (!), x**0 = 1 for nonzero x (including +/-Infinity)
+        if not other:
+            if not self:
+                return context._raise_error(InvalidOperation, '0 ** 0')
+            else:
+                return Dec_p1
+
+        # result has sign 1 iff self._sign is 1 and other is an odd integer
+        result_sign = 0
+        if self._sign == 1:
+            if other._isinteger():
+                if not other._iseven():
+                    result_sign = 1
+            else:
+                # -ve**noninteger = NaN
+                # (-0)**noninteger = 0**noninteger
+                if self:
+                    return context._raise_error(InvalidOperation,
+                        'x ** y with x negative and y not an integer')
+            # negate self, without doing any unwanted rounding
+            self = self.copy_negate()
+
+        # 0**(+ve or Inf)= 0; 0**(-ve or -Inf) = Infinity
+        if not self:
+            if other._sign == 0:
+                return _dec_from_triple(result_sign, '0', 0)
+            else:
+                return Infsign[result_sign]
+
+        # Inf**(+ve or Inf) = Inf; Inf**(-ve or -Inf) = 0
         if self._isinfinity():
-            if modulo:
-                return context._raise_error(InvalidOperation, 'INF % x')
-            if n > 0:
-                return Infsign[sign]
-            return Decimal( (sign, (0,), 0) )
+            if other._sign == 0:
+                return Infsign[result_sign]
+            else:
+                return _dec_from_triple(result_sign, '0', 0)
 
-        #with ludicrously large exponent, just raise an overflow and return inf.
-        if not modulo and n > 0 and (self._exp + len(self._int) - 1) * n > context.Emax \
-           and self:
+        # 1**other = 1, but the choice of exponent and the flags
+        # depend on the exponent of self, and on whether other is a
+        # positive integer, a negative integer, or neither
+        if self == Dec_p1:
+            if other._isinteger():
+                # exp = max(self._exp*max(int(other), 0),
+                # 1-context.prec) but evaluating int(other) directly
+                # is dangerous until we know other is small (other
+                # could be 1e999999999)
+                if other._sign == 1:
+                    multiplier = 0
+                elif other > context.prec:
+                    multiplier = context.prec
+                else:
+                    multiplier = int(other)
 
-            tmp = Decimal('inf')
-            tmp._sign = sign
-            context._raise_error(Rounded)
+                exp = self._exp * multiplier
+                if exp < 1-context.prec:
+                    exp = 1-context.prec
+                    context._raise_error(Rounded)
+            else:
+                context._raise_error(Inexact)
+                context._raise_error(Rounded)
+                exp = 1-context.prec
+
+            return _dec_from_triple(result_sign, '1'+'0'*-exp, exp)
+
+        # compute adjusted exponent of self
+        self_adj = self.adjusted()
+
+        # self ** infinity is infinity if self > 1, 0 if self < 1
+        # self ** -infinity is infinity if self < 1, 0 if self > 1
+        if other._isinfinity():
+            if (other._sign == 0) == (self_adj < 0):
+                return _dec_from_triple(result_sign, '0', 0)
+            else:
+                return Infsign[result_sign]
+
+        # from here on, the result always goes through the call
+        # to _fix at the end of this function.
+        ans = None
+
+        # crude test to catch cases of extreme overflow/underflow.  If
+        # log10(self)*other >= 10**bound and bound >= len(str(Emax))
+        # then 10**bound >= 10**len(str(Emax)) >= Emax+1 and hence
+        # self**other >= 10**(Emax+1), so overflow occurs.  The test
+        # for underflow is similar.
+        bound = self._log10_exp_bound() + other.adjusted()
+        if (self_adj >= 0) == (other._sign == 0):
+            # self > 1 and other +ve, or self < 1 and other -ve
+            # possibility of overflow
+            if bound >= len(str(context.Emax)):
+                ans = _dec_from_triple(result_sign, '1', context.Emax+1)
+        else:
+            # self > 1 and other -ve, or self < 1 and other +ve
+            # possibility of underflow to 0
+            Etiny = context.Etiny()
+            if bound >= len(str(-Etiny)):
+                ans = _dec_from_triple(result_sign, '1', Etiny-1)
+
+        # try for an exact result with precision +1
+        if ans is None:
+            ans = self._power_exact(other, context.prec + 1)
+            if ans is not None and result_sign == 1:
+                ans = _dec_from_triple(1, ans._int, ans._exp)
+
+        # usual case: inexact result, x**y computed directly as exp(y*log(x))
+        if ans is None:
+            p = context.prec
+            x = _WorkRep(self)
+            xc, xe = x.int, x.exp
+            y = _WorkRep(other)
+            yc, ye = y.int, y.exp
+            if y.sign == 1:
+                yc = -yc
+
+            # compute correctly rounded result:  start with precision +3,
+            # then increase precision until result is unambiguously roundable
+            extra = 3
+            while True:
+                coeff, exp = _dpower(xc, xe, yc, ye, p+extra)
+                if coeff % (5*10**(len(str(coeff))-p-1)):
+                    break
+                extra += 3
+
+            ans = _dec_from_triple(result_sign, str(coeff), exp)
+
+        # the specification says that for non-integer other we need to
+        # raise Inexact, even when the result is actually exact.  In
+        # the same way, we need to raise Underflow here if the result
+        # is subnormal.  (The call to _fix will take care of raising
+        # Rounded and Subnormal, as usual.)
+        if not other._isinteger():
             context._raise_error(Inexact)
-            context._raise_error(Overflow, 'Big power', sign)
-            return tmp
+            # pad with zeros up to length context.prec+1 if necessary
+            if len(ans._int) <= context.prec:
+                expdiff = context.prec+1 - len(ans._int)
+                ans = _dec_from_triple(ans._sign, ans._int+'0'*expdiff,
+                                       ans._exp-expdiff)
+            if ans.adjusted() < context.Emin:
+                context._raise_error(Underflow)
 
-        elength = len(str(abs(n)))
-        firstprec = context.prec
-
-        if not modulo and firstprec + elength + 1 > DefaultContext.Emax:
-            return context._raise_error(Overflow, 'Too much precision.', sign)
-
-        mul = Decimal(self)
-        val = Decimal(1)
-        context = context._shallow_copy()
-        context.prec = firstprec + elength + 1
-        if n < 0:
-            #n is a long now, not Decimal instance
-            n = -n
-            mul = Decimal(1).__div__(mul, context=context)
-
-        spot = 1
-        while spot <= n:
-            spot <<= 1
-
-        spot >>= 1
-        #Spot is the highest power of 2 less than n
-        while spot:
-            val = val.__mul__(val, context=context)
-            if val._isinfinity():
-                val = Infsign[sign]
-                break
-            if spot & n:
-                val = val.__mul__(mul, context=context)
-            if modulo is not None:
-                val = val.__mod__(modulo, context=context)
-            spot >>= 1
-        context.prec = firstprec
-
-        if context._rounding_decision == ALWAYS_ROUND:
-            return val._fix(context)
-        return val
+        # unlike exp, ln and log10, the power function respects the
+        # rounding mode; no need to use ROUND_HALF_EVEN here
+        ans = ans._fix(context)
+        return ans
 
     def __rpow__(self, other, context=None):
         """Swaps self/other and returns __pow__."""
@@ -1828,6 +2131,9 @@
     def normalize(self, context=None):
         """Normalize- strip trailing 0s, change anything equal to 0 to 0e0"""
 
+        if context is None:
+            context = getcontext()
+
         if self._is_special:
             ans = self._check_nans(context=context)
             if ans:
@@ -1838,20 +2144,27 @@
             return dup
 
         if not dup:
-            return Decimal( (dup._sign, (0,), 0) )
+            return _dec_from_triple(dup._sign, '0', 0)
+        exp_max = [context.Emax, context.Etop()][context._clamp]
         end = len(dup._int)
         exp = dup._exp
-        while dup._int[end-1] == 0:
+        while dup._int[end-1] == '0' and exp < exp_max:
             exp += 1
             end -= 1
-        return Decimal( (dup._sign, dup._int[:end], exp) )
+        return _dec_from_triple(dup._sign, dup._int[:end], exp)
 
-
-    def quantize(self, exp, rounding=None, context=None, watchexp=1):
+    def quantize(self, exp, rounding=None, context=None, watchexp=True):
         """Quantize self so its exponent is the same as that of exp.
 
         Similar to self._rescale(exp._exp) but with error checking.
         """
+        exp = _convert_other(exp, raiseit=True)
+
+        if context is None:
+            context = getcontext()
+        if rounding is None:
+            rounding = context.rounding
+
         if self._is_special or exp._is_special:
             ans = self._check_nans(exp, context)
             if ans:
@@ -1859,101 +2172,156 @@
 
             if exp._isinfinity() or self._isinfinity():
                 if exp._isinfinity() and self._isinfinity():
-                    return self  #if both are inf, it is OK
-                if context is None:
-                    context = getcontext()
+                    return Decimal(self)  # if both are inf, it is OK
                 return context._raise_error(InvalidOperation,
                                         'quantize with one INF')
-        return self._rescale(exp._exp, rounding, context, watchexp)
 
-    def same_quantum(self, other):
-        """Test whether self and other have the same exponent.
-
-        same as self._exp == other._exp, except NaN == sNaN
-        """
-        if self._is_special or other._is_special:
-            if self._isnan() or other._isnan():
-                return self._isnan() and other._isnan() and True
-            if self._isinfinity() or other._isinfinity():
-                return self._isinfinity() and other._isinfinity() and True
-        return self._exp == other._exp
-
-    def _rescale(self, exp, rounding=None, context=None, watchexp=1):
-        """Rescales so that the exponent is exp.
-
-        exp = exp to scale to (an integer)
-        rounding = rounding version
-        watchexp: if set (default) an error is returned if exp is greater
-        than Emax or less than Etiny.
-        """
-        if context is None:
-            context = getcontext()
-
-        if self._is_special:
-            if self._isinfinity():
-                return context._raise_error(InvalidOperation, 'rescale with an INF')
-
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        if watchexp and (context.Emax  < exp or context.Etiny() > exp):
-            return context._raise_error(InvalidOperation, 'rescale(a, INF)')
-
-        if not self:
-            ans = Decimal(self)
-            ans._int = (0,)
-            ans._exp = exp
+        # if we're not watching exponents, do a simple rescale
+        if not watchexp:
+            ans = self._rescale(exp._exp, rounding)
+            # raise Inexact and Rounded where appropriate
+            if ans._exp > self._exp:
+                context._raise_error(Rounded)
+                if ans != self:
+                    context._raise_error(Inexact)
             return ans
 
-        diff = self._exp - exp
-        digits = len(self._int) + diff
+        # exp._exp should be between Etiny and Emax
+        if not (context.Etiny() <= exp._exp <= context.Emax):
+            return context._raise_error(InvalidOperation,
+                   'target exponent out of bounds in quantize')
 
-        if watchexp and digits > context.prec:
-            return context._raise_error(InvalidOperation, 'Rescale > prec')
+        if not self:
+            ans = _dec_from_triple(self._sign, '0', exp._exp)
+            return ans._fix(context)
 
-        tmp = Decimal(self)
-        tmp._int = (0,) + tmp._int
-        digits += 1
+        self_adjusted = self.adjusted()
+        if self_adjusted > context.Emax:
+            return context._raise_error(InvalidOperation,
+                                        'exponent of quantize result too large for current context')
+        if self_adjusted - exp._exp + 1 > context.prec:
+            return context._raise_error(InvalidOperation,
+                                        'quantize result has too many digits for current context')
 
-        if digits < 0:
-            tmp._exp = -digits + tmp._exp
-            tmp._int = (0,1)
-            digits = 1
-        tmp = tmp._round(digits, rounding, context=context)
+        ans = self._rescale(exp._exp, rounding)
+        if ans.adjusted() > context.Emax:
+            return context._raise_error(InvalidOperation,
+                                        'exponent of quantize result too large for current context')
+        if len(ans._int) > context.prec:
+            return context._raise_error(InvalidOperation,
+                                        'quantize result has too many digits for current context')
 
-        if tmp._int[0] == 0 and len(tmp._int) > 1:
-            tmp._int = tmp._int[1:]
-        tmp._exp = exp
-
-        tmp_adjusted = tmp.adjusted()
-        if tmp and tmp_adjusted < context.Emin:
+        # raise appropriate flags
+        if ans._exp > self._exp:
+            context._raise_error(Rounded)
+            if ans != self:
+                context._raise_error(Inexact)
+        if ans and ans.adjusted() < context.Emin:
             context._raise_error(Subnormal)
-        elif tmp and tmp_adjusted > context.Emax:
-            return context._raise_error(InvalidOperation, 'rescale(a, INF)')
-        return tmp
 
-    def to_integral(self, rounding=None, context=None):
-        """Rounds to the nearest integer, without raising inexact, rounded."""
+        # call to fix takes care of any necessary folddown
+        ans = ans._fix(context)
+        return ans
+
+    def same_quantum(self, other):
+        """Return True if self and other have the same exponent; otherwise
+        return False.
+
+        If either operand is a special value, the following rules are used:
+           * return True if both operands are infinities
+           * return True if both operands are NaNs
+           * otherwise, return False.
+        """
+        other = _convert_other(other, raiseit=True)
+        if self._is_special or other._is_special:
+            return (self.is_nan() and other.is_nan() or
+                    self.is_infinite() and other.is_infinite())
+        return self._exp == other._exp
+
+    def _rescale(self, exp, rounding):
+        """Rescale self so that the exponent is exp, either by padding with zeros
+        or by truncating digits, using the given rounding mode.
+
+        Specials are returned without change.  This operation is
+        quiet: it raises no flags, and uses no information from the
+        context.
+
+        exp = exp to scale to (an integer)
+        rounding = rounding mode
+        """
+        if self._is_special:
+            return Decimal(self)
+        if not self:
+            return _dec_from_triple(self._sign, '0', exp)
+
+        if self._exp >= exp:
+            # pad answer with zeros if necessary
+            return _dec_from_triple(self._sign,
+                                        self._int + '0'*(self._exp - exp), exp)
+
+        # too many digits; round and lose data.  If self.adjusted() <
+        # exp-1, replace self by 10**(exp-1) before rounding
+        digits = len(self._int) + self._exp - exp
+        if digits < 0:
+            self = _dec_from_triple(self._sign, '1', exp-1)
+            digits = 0
+        this_function = getattr(self, self._pick_rounding_function[rounding])
+        changed = this_function(digits)
+        coeff = self._int[:digits] or '0'
+        if changed == 1:
+            coeff = str(int(coeff)+1)
+        return _dec_from_triple(self._sign, coeff, exp)
+
+    def to_integral_exact(self, rounding=None, context=None):
+        """Rounds to a nearby integer.
+
+        If no rounding mode is specified, take the rounding mode from
+        the context.  This method raises the Rounded and Inexact flags
+        when appropriate.
+
+        See also: to_integral_value, which does exactly the same as
+        this method except that it doesn't raise Inexact or Rounded.
+        """
         if self._is_special:
             ans = self._check_nans(context=context)
             if ans:
                 return ans
+            return Decimal(self)
         if self._exp >= 0:
-            return self
+            return Decimal(self)
+        if not self:
+            return _dec_from_triple(self._sign, '0', 0)
         if context is None:
             context = getcontext()
-        flags = context._ignore_flags(Rounded, Inexact)
-        ans = self._rescale(0, rounding, context=context)
-        context._regard_flags(flags)
+        if rounding is None:
+            rounding = context.rounding
+        context._raise_error(Rounded)
+        ans = self._rescale(0, rounding)
+        if ans != self:
+            context._raise_error(Inexact)
         return ans
 
-    def sqrt(self, context=None):
-        """Return the square root of self.
+    def to_integral_value(self, rounding=None, context=None):
+        """Rounds to the nearest integer, without raising inexact, rounded."""
+        if context is None:
+            context = getcontext()
+        if rounding is None:
+            rounding = context.rounding
+        if self._is_special:
+            ans = self._check_nans(context=context)
+            if ans:
+                return ans
+            return Decimal(self)
+        if self._exp >= 0:
+            return Decimal(self)
+        else:
+            return self._rescale(0, rounding)
 
-        Uses a converging algorithm (Xn+1 = 0.5*(Xn + self / Xn))
-        Should quadratically approach the right answer.
-        """
+    # the method name changed, but we provide also the old one, for compatibility
+    to_integral = to_integral_value
+
+    def sqrt(self, context=None):
+        """Return the square root of self."""
         if self._is_special:
             ans = self._check_nans(context=context)
             if ans:
@@ -1963,16 +2331,9 @@
                 return Decimal(self)
 
         if not self:
-            #exponent = self._exp / 2, using round_down.
-            #if self._exp < 0:
-            #    exp = (self._exp+1) // 2
-            #else:
-            exp = (self._exp) // 2
-            if self._sign == 1:
-                #sqrt(-0) = -0
-                return Decimal( (1, (0,), exp))
-            else:
-                return Decimal( (0, (0,), exp))
+            # exponent = self._exp // 2.  sqrt(-0) = -0
+            ans = _dec_from_triple(self._sign, '0', self._exp // 2)
+            return ans._fix(context)
 
         if context is None:
             context = getcontext()
@@ -1980,216 +2341,988 @@
         if self._sign == 1:
             return context._raise_error(InvalidOperation, 'sqrt(-x), x > 0')
 
-        tmp = Decimal(self)
+        # At this point self represents a positive number.  Let p be
+        # the desired precision and express self in the form c*100**e
+        # with c a positive real number and e an integer, c and e
+        # being chosen so that 100**(p-1) <= c < 100**p.  Then the
+        # (exact) square root of self is sqrt(c)*10**e, and 10**(p-1)
+        # <= sqrt(c) < 10**p, so the closest representable Decimal at
+        # precision p is n*10**e where n = round_half_even(sqrt(c)),
+        # the closest integer to sqrt(c) with the even integer chosen
+        # in the case of a tie.
+        #
+        # To ensure correct rounding in all cases, we use the
+        # following trick: we compute the square root to an extra
+        # place (precision p+1 instead of precision p), rounding down.
+        # Then, if the result is inexact and its last digit is 0 or 5,
+        # we increase the last digit to 1 or 6 respectively; if it's
+        # exact we leave the last digit alone.  Now the final round to
+        # p places (or fewer in the case of underflow) will round
+        # correctly and raise the appropriate flags.
 
-        expadd = tmp._exp // 2
-        if tmp._exp & 1:
-            tmp._int += (0,)
-            tmp._exp = 0
+        # use an extra digit of precision
+        prec = context.prec+1
+
+        # write argument in the form c*100**e where e = self._exp//2
+        # is the 'ideal' exponent, to be used if the square root is
+        # exactly representable.  l is the number of 'digits' of c in
+        # base 100, so that 100**(l-1) <= c < 100**l.
+        op = _WorkRep(self)
+        e = op.exp >> 1
+        if op.exp & 1:
+            c = op.int * 10
+            l = (len(self._int) >> 1) + 1
         else:
-            tmp._exp = 0
+            c = op.int
+            l = len(self._int)+1 >> 1
 
-        context = context._shallow_copy()
-        flags = context._ignore_all_flags()
-        firstprec = context.prec
-        context.prec = 3
-        if tmp.adjusted() & 1 == 0:
-            ans = Decimal( (0, (8,1,9), tmp.adjusted()  - 2) )
-            ans = ans.__add__(tmp.__mul__(Decimal((0, (2,5,9), -2)),
-                                          context=context), context=context)
-            ans._exp -= 1 + tmp.adjusted() // 2
+        # rescale so that c has exactly prec base 100 'digits'
+        shift = prec-l
+        if shift >= 0:
+            c *= 100**shift
+            exact = True
         else:
-            ans = Decimal( (0, (2,5,9), tmp._exp + len(tmp._int)- 3) )
-            ans = ans.__add__(tmp.__mul__(Decimal((0, (8,1,9), -3)),
-                                          context=context), context=context)
-            ans._exp -= 1 + tmp.adjusted()  // 2
+            c, remainder = divmod(c, 100**-shift)
+            exact = not remainder
+        e -= shift
 
-        #ans is now a linear approximation.
-
-        Emax, Emin = context.Emax, context.Emin
-        context.Emax, context.Emin = DefaultContext.Emax, DefaultContext.Emin
-
-        half = Decimal('0.5')
-
-        maxp = firstprec + 2
-        rounding = context._set_rounding(ROUND_HALF_EVEN)
-        while 1:
-            context.prec = min(2*context.prec - 2, maxp)
-            ans = half.__mul__(ans.__add__(tmp.__div__(ans, context=context),
-                                           context=context), context=context)
-            if context.prec == maxp:
+        # find n = floor(sqrt(c)) using Newton's method
+        n = 10**prec
+        while True:
+            q = c//n
+            if n <= q:
                 break
+            else:
+                n = n + q >> 1
+        exact = exact and n*n == c
 
-        #round to the answer's precision-- the only error can be 1 ulp.
-        context.prec = firstprec
-        prevexp = ans.adjusted()
-        ans = ans._round(context=context)
-
-        #Now, check if the other last digits are better.
-        context.prec = firstprec + 1
-        # In case we rounded up another digit and we should actually go lower.
-        if prevexp != ans.adjusted():
-            ans._int += (0,)
-            ans._exp -= 1
-
-
-        lower = ans.__sub__(Decimal((0, (5,), ans._exp-1)), context=context)
-        context._set_rounding(ROUND_UP)
-        if lower.__mul__(lower, context=context) > (tmp):
-            ans = ans.__sub__(Decimal((0, (1,), ans._exp)), context=context)
-
+        if exact:
+            # result is exact; rescale to use ideal exponent e
+            if shift >= 0:
+                # assert n % 10**shift == 0
+                n //= 10**shift
+            else:
+                n *= 10**-shift
+            e += shift
         else:
-            upper = ans.__add__(Decimal((0, (5,), ans._exp-1)),context=context)
-            context._set_rounding(ROUND_DOWN)
-            if upper.__mul__(upper, context=context) < tmp:
-                ans = ans.__add__(Decimal((0, (1,), ans._exp)),context=context)
+            # result is not exact; fix last digit as described above
+            if n % 5 == 0:
+                n += 1
 
-        ans._exp += expadd
+        ans = _dec_from_triple(0, str(n), e)
 
-        context.prec = firstprec
-        context.rounding = rounding
+        # round, and fit to current context
+        context = context._shallow_copy()
+        rounding = context._set_rounding(ROUND_HALF_EVEN)
         ans = ans._fix(context)
+        context.rounding = rounding
 
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-        if not ans.__mul__(ans, context=context) == self:
-            # Only rounded/inexact if here.
-            context._regard_flags(flags)
-            context._raise_error(Rounded)
-            context._raise_error(Inexact)
-        else:
-            #Exact answer, so let's set the exponent right.
-            #if self._exp < 0:
-            #    exp = (self._exp +1)// 2
-            #else:
-            exp = self._exp // 2
-            context.prec += ans._exp - exp
-            ans = ans._rescale(exp, context=context)
-            context.prec = firstprec
-            context._regard_flags(flags)
-        context.Emax, context.Emin = Emax, Emin
-
-        return ans._fix(context)
+        return ans
 
     def max(self, other, context=None):
         """Returns the larger value.
 
-        like max(self, other) except if one is not a number, returns
+        Like max(self, other) except if one is not a number, returns
         NaN (and signals if one is sNaN).  Also rounds.
         """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
+        other = _convert_other(other, raiseit=True)
+
+        if context is None:
+            context = getcontext()
 
         if self._is_special or other._is_special:
-            # if one operand is a quiet NaN and the other is number, then the
+            # If one operand is a quiet NaN and the other is number, then the
             # number is always returned
             sn = self._isnan()
             on = other._isnan()
             if sn or on:
                 if on == 1 and sn != 2:
-                    return self
+                    return self._fix_nan(context)
                 if sn == 1 and on != 2:
-                    return other
+                    return other._fix_nan(context)
                 return self._check_nans(other, context)
 
-        ans = self
         c = self.__cmp__(other)
         if c == 0:
-            # if both operands are finite and equal in numerical value
+            # If both operands are finite and equal in numerical value
             # then an ordering is applied:
             #
-            # if the signs differ then max returns the operand with the
+            # If the signs differ then max returns the operand with the
             # positive sign and min returns the operand with the negative sign
             #
-            # if the signs are the same then the exponent is used to select
-            # the result.
-            if self._sign != other._sign:
-                if self._sign:
-                    ans = other
-            elif self._exp < other._exp and not self._sign:
-                ans = other
-            elif self._exp > other._exp and self._sign:
-                ans = other
-        elif c == -1:
-            ans = other
+            # If the signs are the same then the exponent is used to select
+            # the result.  This is exactly the ordering used in compare_total.
+            c = self.compare_total(other)
 
-        if context is None:
-            context = getcontext()
-        if context._rounding_decision == ALWAYS_ROUND:
-            return ans._fix(context)
-        return ans
+        if c == -1:
+            ans = other
+        else:
+            ans = self
+
+        return ans._fix(context)
 
     def min(self, other, context=None):
         """Returns the smaller value.
 
-        like min(self, other) except if one is not a number, returns
+        Like min(self, other) except if one is not a number, returns
         NaN (and signals if one is sNaN).  Also rounds.
         """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
+        other = _convert_other(other, raiseit=True)
+
+        if context is None:
+            context = getcontext()
 
         if self._is_special or other._is_special:
-            # if one operand is a quiet NaN and the other is number, then the
+            # If one operand is a quiet NaN and the other is number, then the
             # number is always returned
             sn = self._isnan()
             on = other._isnan()
             if sn or on:
                 if on == 1 and sn != 2:
-                    return self
+                    return self._fix_nan(context)
                 if sn == 1 and on != 2:
-                    return other
+                    return other._fix_nan(context)
                 return self._check_nans(other, context)
 
-        ans = self
         c = self.__cmp__(other)
         if c == 0:
-            # if both operands are finite and equal in numerical value
-            # then an ordering is applied:
-            #
-            # if the signs differ then max returns the operand with the
-            # positive sign and min returns the operand with the negative sign
-            #
-            # if the signs are the same then the exponent is used to select
-            # the result.
-            if self._sign != other._sign:
-                if other._sign:
-                    ans = other
-            elif self._exp > other._exp and not self._sign:
-                ans = other
-            elif self._exp < other._exp and self._sign:
-                ans = other
-        elif c == 1:
+            c = self.compare_total(other)
+
+        if c == -1:
+            ans = self
+        else:
             ans = other
 
-        if context is None:
-            context = getcontext()
-        if context._rounding_decision == ALWAYS_ROUND:
-            return ans._fix(context)
-        return ans
+        return ans._fix(context)
 
     def _isinteger(self):
         """Returns whether self is an integer"""
+        if self._is_special:
+            return False
         if self._exp >= 0:
             return True
         rest = self._int[self._exp:]
-        return rest == (0,)*len(rest)
+        return rest == '0'*len(rest)
 
     def _iseven(self):
-        """Returns 1 if self is even.  Assumes self is an integer."""
-        if self._exp > 0:
-            return 1
-        return self._int[-1+self._exp] & 1 == 0
+        """Returns True if self is even.  Assumes self is an integer."""
+        if not self or self._exp > 0:
+            return True
+        return self._int[-1+self._exp] in '02468'
 
     def adjusted(self):
         """Return the adjusted exponent of self"""
         try:
             return self._exp + len(self._int) - 1
-        #If NaN or Infinity, self._exp is string
+        # If NaN or Infinity, self._exp is string
         except TypeError:
             return 0
 
-    # support for pickling, copy, and deepcopy
+    def canonical(self, context=None):
+        """Returns the same Decimal object.
+
+        As we do not have different encodings for the same number, the
+        received object already is in its canonical form.
+        """
+        return self
+
+    def compare_signal(self, other, context=None):
+        """Compares self to the other operand numerically.
+
+        It's pretty much like compare(), but all NaNs signal, with signaling
+        NaNs taking precedence over quiet NaNs.
+        """
+        if context is None:
+            context = getcontext()
+
+        self_is_nan = self._isnan()
+        other_is_nan = other._isnan()
+        if self_is_nan == 2:
+            return context._raise_error(InvalidOperation, 'sNaN',
+                                        self)
+        if other_is_nan == 2:
+            return context._raise_error(InvalidOperation, 'sNaN',
+                                        other)
+        if self_is_nan:
+            return context._raise_error(InvalidOperation, 'NaN in compare_signal',
+                                        self)
+        if other_is_nan:
+            return context._raise_error(InvalidOperation, 'NaN in compare_signal',
+                                        other)
+        return self.compare(other, context=context)
+
+    def compare_total(self, other):
+        """Compares self to other using the abstract representations.
+
+        This is not like the standard compare, which use their numerical
+        value. Note that a total ordering is defined for all possible abstract
+        representations.
+        """
+        # if one is negative and the other is positive, it's easy
+        if self._sign and not other._sign:
+            return Dec_n1
+        if not self._sign and other._sign:
+            return Dec_p1
+        sign = self._sign
+
+        # let's handle both NaN types
+        self_nan = self._isnan()
+        other_nan = other._isnan()
+        if self_nan or other_nan:
+            if self_nan == other_nan:
+                if self._int < other._int:
+                    if sign:
+                        return Dec_p1
+                    else:
+                        return Dec_n1
+                if self._int > other._int:
+                    if sign:
+                        return Dec_n1
+                    else:
+                        return Dec_p1
+                return Dec_0
+
+            if sign:
+                if self_nan == 1:
+                    return Dec_n1
+                if other_nan == 1:
+                    return Dec_p1
+                if self_nan == 2:
+                    return Dec_n1
+                if other_nan == 2:
+                    return Dec_p1
+            else:
+                if self_nan == 1:
+                    return Dec_p1
+                if other_nan == 1:
+                    return Dec_n1
+                if self_nan == 2:
+                    return Dec_p1
+                if other_nan == 2:
+                    return Dec_n1
+
+        if self < other:
+            return Dec_n1
+        if self > other:
+            return Dec_p1
+
+        if self._exp < other._exp:
+            if sign:
+                return Dec_p1
+            else:
+                return Dec_n1
+        if self._exp > other._exp:
+            if sign:
+                return Dec_n1
+            else:
+                return Dec_p1
+        return Dec_0
+
+
+    def compare_total_mag(self, other):
+        """Compares self to other using abstract repr., ignoring sign.
+
+        Like compare_total, but with operand's sign ignored and assumed to be 0.
+        """
+        s = self.copy_abs()
+        o = other.copy_abs()
+        return s.compare_total(o)
+
+    def copy_abs(self):
+        """Returns a copy with the sign set to 0. """
+        return _dec_from_triple(0, self._int, self._exp, self._is_special)
+
+    def copy_negate(self):
+        """Returns a copy with the sign inverted."""
+        if self._sign:
+            return _dec_from_triple(0, self._int, self._exp, self._is_special)
+        else:
+            return _dec_from_triple(1, self._int, self._exp, self._is_special)
+
+    def copy_sign(self, other):
+        """Returns self with the sign of other."""
+        return _dec_from_triple(other._sign, self._int,
+                                self._exp, self._is_special)
+
+    def exp(self, context=None):
+        """Returns e ** self."""
+
+        if context is None:
+            context = getcontext()
+
+        # exp(NaN) = NaN
+        ans = self._check_nans(context=context)
+        if ans:
+            return ans
+
+        # exp(-Infinity) = 0
+        if self._isinfinity() == -1:
+            return Dec_0
+
+        # exp(0) = 1
+        if not self:
+            return Dec_p1
+
+        # exp(Infinity) = Infinity
+        if self._isinfinity() == 1:
+            return Decimal(self)
+
+        # the result is now guaranteed to be inexact (the true
+        # mathematical result is transcendental). There's no need to
+        # raise Rounded and Inexact here---they'll always be raised as
+        # a result of the call to _fix.
+        p = context.prec
+        adj = self.adjusted()
+
+        # we only need to do any computation for quite a small range
+        # of adjusted exponents---for example, -29 <= adj <= 10 for
+        # the default context.  For smaller exponent the result is
+        # indistinguishable from 1 at the given precision, while for
+        # larger exponent the result either overflows or underflows.
+        if self._sign == 0 and adj > len(str((context.Emax+1)*3)):
+            # overflow
+            ans = _dec_from_triple(0, '1', context.Emax+1)
+        elif self._sign == 1 and adj > len(str((-context.Etiny()+1)*3)):
+            # underflow to 0
+            ans = _dec_from_triple(0, '1', context.Etiny()-1)
+        elif self._sign == 0 and adj < -p:
+            # p+1 digits; final round will raise correct flags
+            ans = _dec_from_triple(0, '1' + '0'*(p-1) + '1', -p)
+        elif self._sign == 1 and adj < -p-1:
+            # p+1 digits; final round will raise correct flags
+            ans = _dec_from_triple(0, '9'*(p+1), -p-1)
+        # general case
+        else:
+            op = _WorkRep(self)
+            c, e = op.int, op.exp
+            if op.sign == 1:
+                c = -c
+
+            # compute correctly rounded result: increase precision by
+            # 3 digits at a time until we get an unambiguously
+            # roundable result
+            extra = 3
+            while True:
+                coeff, exp = _dexp(c, e, p+extra)
+                if coeff % (5*10**(len(str(coeff))-p-1)):
+                    break
+                extra += 3
+
+            ans = _dec_from_triple(0, str(coeff), exp)
+
+        # at this stage, ans should round correctly with *any*
+        # rounding mode, not just with ROUND_HALF_EVEN
+        context = context._shallow_copy()
+        rounding = context._set_rounding(ROUND_HALF_EVEN)
+        ans = ans._fix(context)
+        context.rounding = rounding
+
+        return ans
+
+    def is_canonical(self):
+        """Return True if self is canonical; otherwise return False.
+
+        Currently, the encoding of a Decimal instance is always
+        canonical, so this method returns True for any Decimal.
+        """
+        return True
+
+    def is_finite(self):
+        """Return True if self is finite; otherwise return False.
+
+        A Decimal instance is considered finite if it is neither
+        infinite nor a NaN.
+        """
+        return not self._is_special
+
+    def is_infinite(self):
+        """Return True if self is infinite; otherwise return False."""
+        return self._exp == 'F'
+
+    def is_nan(self):
+        """Return True if self is a qNaN or sNaN; otherwise return False."""
+        return self._exp in ('n', 'N')
+
+    def is_normal(self, context=None):
+        """Return True if self is a normal number; otherwise return False."""
+        if self._is_special or not self:
+            return False
+        if context is None:
+            context = getcontext()
+        return context.Emin <= self.adjusted() <= context.Emax
+
+    def is_qnan(self):
+        """Return True if self is a quiet NaN; otherwise return False."""
+        return self._exp == 'n'
+
+    def is_signed(self):
+        """Return True if self is negative; otherwise return False."""
+        return self._sign == 1
+
+    def is_snan(self):
+        """Return True if self is a signaling NaN; otherwise return False."""
+        return self._exp == 'N'
+
+    def is_subnormal(self, context=None):
+        """Return True if self is subnormal; otherwise return False."""
+        if self._is_special or not self:
+            return False
+        if context is None:
+            context = getcontext()
+        return self.adjusted() < context.Emin
+
+    def is_zero(self):
+        """Return True if self is a zero; otherwise return False."""
+        return not self._is_special and self._int == '0'
+
+    def _ln_exp_bound(self):
+        """Compute a lower bound for the adjusted exponent of self.ln().
+        In other words, compute r such that self.ln() >= 10**r.  Assumes
+        that self is finite and positive and that self != 1.
+        """
+
+        # for 0.1 <= x <= 10 we use the inequalities 1-1/x <= ln(x) <= x-1
+        adj = self._exp + len(self._int) - 1
+        if adj >= 1:
+            # argument >= 10; we use 23/10 = 2.3 as a lower bound for ln(10)
+            return len(str(adj*23//10)) - 1
+        if adj <= -2:
+            # argument <= 0.1
+            return len(str((-1-adj)*23//10)) - 1
+        op = _WorkRep(self)
+        c, e = op.int, op.exp
+        if adj == 0:
+            # 1 < self < 10
+            num = str(c-10**-e)
+            den = str(c)
+            return len(num) - len(den) - (num < den)
+        # adj == -1, 0.1 <= self < 1
+        return e + len(str(10**-e - c)) - 1
+
+
+    def ln(self, context=None):
+        """Returns the natural (base e) logarithm of self."""
+
+        if context is None:
+            context = getcontext()
+
+        # ln(NaN) = NaN
+        ans = self._check_nans(context=context)
+        if ans:
+            return ans
+
+        # ln(0.0) == -Infinity
+        if not self:
+            return negInf
+
+        # ln(Infinity) = Infinity
+        if self._isinfinity() == 1:
+            return Inf
+
+        # ln(1.0) == 0.0
+        if self == Dec_p1:
+            return Dec_0
+
+        # ln(negative) raises InvalidOperation
+        if self._sign == 1:
+            return context._raise_error(InvalidOperation,
+                                        'ln of a negative value')
+
+        # result is irrational, so necessarily inexact
+        op = _WorkRep(self)
+        c, e = op.int, op.exp
+        p = context.prec
+
+        # correctly rounded result: repeatedly increase precision by 3
+        # until we get an unambiguously roundable result
+        places = p - self._ln_exp_bound() + 2 # at least p+3 places
+        while True:
+            coeff = _dlog(c, e, places)
+            # assert len(str(abs(coeff)))-p >= 1
+            if coeff % (5*10**(len(str(abs(coeff)))-p-1)):
+                break
+            places += 3
+        ans = _dec_from_triple(int(coeff<0), str(abs(coeff)), -places)
+
+        context = context._shallow_copy()
+        rounding = context._set_rounding(ROUND_HALF_EVEN)
+        ans = ans._fix(context)
+        context.rounding = rounding
+        return ans
+
+    def _log10_exp_bound(self):
+        """Compute a lower bound for the adjusted exponent of self.log10().
+        In other words, find r such that self.log10() >= 10**r.
+        Assumes that self is finite and positive and that self != 1.
+        """
+
+        # For x >= 10 or x < 0.1 we only need a bound on the integer
+        # part of log10(self), and this comes directly from the
+        # exponent of x.  For 0.1 <= x <= 10 we use the inequalities
+        # 1-1/x <= log(x) <= x-1. If x > 1 we have |log10(x)| >
+        # (1-1/x)/2.31 > 0.  If x < 1 then |log10(x)| > (1-x)/2.31 > 0
+
+        adj = self._exp + len(self._int) - 1
+        if adj >= 1:
+            # self >= 10
+            return len(str(adj))-1
+        if adj <= -2:
+            # self < 0.1
+            return len(str(-1-adj))-1
+        op = _WorkRep(self)
+        c, e = op.int, op.exp
+        if adj == 0:
+            # 1 < self < 10
+            num = str(c-10**-e)
+            den = str(231*c)
+            return len(num) - len(den) - (num < den) + 2
+        # adj == -1, 0.1 <= self < 1
+        num = str(10**-e-c)
+        return len(num) + e - (num < "231") - 1
+
+    def log10(self, context=None):
+        """Returns the base 10 logarithm of self."""
+
+        if context is None:
+            context = getcontext()
+
+        # log10(NaN) = NaN
+        ans = self._check_nans(context=context)
+        if ans:
+            return ans
+
+        # log10(0.0) == -Infinity
+        if not self:
+            return negInf
+
+        # log10(Infinity) = Infinity
+        if self._isinfinity() == 1:
+            return Inf
+
+        # log10(negative or -Infinity) raises InvalidOperation
+        if self._sign == 1:
+            return context._raise_error(InvalidOperation,
+                                        'log10 of a negative value')
+
+        # log10(10**n) = n
+        if self._int[0] == '1' and self._int[1:] == '0'*(len(self._int) - 1):
+            # answer may need rounding
+            ans = Decimal(self._exp + len(self._int) - 1)
+        else:
+            # result is irrational, so necessarily inexact
+            op = _WorkRep(self)
+            c, e = op.int, op.exp
+            p = context.prec
+
+            # correctly rounded result: repeatedly increase precision
+            # until result is unambiguously roundable
+            places = p-self._log10_exp_bound()+2
+            while True:
+                coeff = _dlog10(c, e, places)
+                # assert len(str(abs(coeff)))-p >= 1
+                if coeff % (5*10**(len(str(abs(coeff)))-p-1)):
+                    break
+                places += 3
+            ans = _dec_from_triple(int(coeff<0), str(abs(coeff)), -places)
+
+        context = context._shallow_copy()
+        rounding = context._set_rounding(ROUND_HALF_EVEN)
+        ans = ans._fix(context)
+        context.rounding = rounding
+        return ans
+
+    def logb(self, context=None):
+        """ Returns the exponent of the magnitude of self's MSD.
+
+        The result is the integer which is the exponent of the magnitude
+        of the most significant digit of self (as though it were truncated
+        to a single digit while maintaining the value of that digit and
+        without limiting the resulting exponent).
+        """
+        # logb(NaN) = NaN
+        ans = self._check_nans(context=context)
+        if ans:
+            return ans
+
+        if context is None:
+            context = getcontext()
+
+        # logb(+/-Inf) = +Inf
+        if self._isinfinity():
+            return Inf
+
+        # logb(0) = -Inf, DivisionByZero
+        if not self:
+            return context._raise_error(DivisionByZero, 'logb(0)', 1)
+
+        # otherwise, simply return the adjusted exponent of self, as a
+        # Decimal.  Note that no attempt is made to fit the result
+        # into the current context.
+        return Decimal(self.adjusted())
+
+    def _islogical(self):
+        """Return True if self is a logical operand.
+
+        For being logical, it must be a finite numbers with a sign of 0,
+        an exponent of 0, and a coefficient whose digits must all be
+        either 0 or 1.
+        """
+        if self._sign != 0 or self._exp != 0:
+            return False
+        for dig in self._int:
+            if dig not in '01':
+                return False
+        return True
+
+    def _fill_logical(self, context, opa, opb):
+        dif = context.prec - len(opa)
+        if dif > 0:
+            opa = '0'*dif + opa
+        elif dif < 0:
+            opa = opa[-context.prec:]
+        dif = context.prec - len(opb)
+        if dif > 0:
+            opb = '0'*dif + opb
+        elif dif < 0:
+            opb = opb[-context.prec:]
+        return opa, opb
+
+    def logical_and(self, other, context=None):
+        """Applies an 'and' operation between self and other's digits."""
+        if context is None:
+            context = getcontext()
+        if not self._islogical() or not other._islogical():
+            return context._raise_error(InvalidOperation)
+
+        # fill to context.prec
+        (opa, opb) = self._fill_logical(context, self._int, other._int)
+
+        # make the operation, and clean starting zeroes
+        result = "".join([str(int(a)&int(b)) for a,b in zip(opa,opb)])
+        return _dec_from_triple(0, result.lstrip('0') or '0', 0)
+
+    def logical_invert(self, context=None):
+        """Invert all its digits."""
+        if context is None:
+            context = getcontext()
+        return self.logical_xor(_dec_from_triple(0,'1'*context.prec,0),
+                                context)
+
+    def logical_or(self, other, context=None):
+        """Applies an 'or' operation between self and other's digits."""
+        if context is None:
+            context = getcontext()
+        if not self._islogical() or not other._islogical():
+            return context._raise_error(InvalidOperation)
+
+        # fill to context.prec
+        (opa, opb) = self._fill_logical(context, self._int, other._int)
+
+        # make the operation, and clean starting zeroes
+        result = "".join(str(int(a)|int(b)) for a,b in zip(opa,opb))
+        return _dec_from_triple(0, result.lstrip('0') or '0', 0)
+
+    def logical_xor(self, other, context=None):
+        """Applies an 'xor' operation between self and other's digits."""
+        if context is None:
+            context = getcontext()
+        if not self._islogical() or not other._islogical():
+            return context._raise_error(InvalidOperation)
+
+        # fill to context.prec
+        (opa, opb) = self._fill_logical(context, self._int, other._int)
+
+        # make the operation, and clean starting zeroes
+        result = "".join(str(int(a)^int(b)) for a,b in zip(opa,opb))
+        return _dec_from_triple(0, result.lstrip('0') or '0', 0)
+
+    def max_mag(self, other, context=None):
+        """Compares the values numerically with their sign ignored."""
+        other = _convert_other(other, raiseit=True)
+
+        if context is None:
+            context = getcontext()
+
+        if self._is_special or other._is_special:
+            # If one operand is a quiet NaN and the other is number, then the
+            # number is always returned
+            sn = self._isnan()
+            on = other._isnan()
+            if sn or on:
+                if on == 1 and sn != 2:
+                    return self._fix_nan(context)
+                if sn == 1 and on != 2:
+                    return other._fix_nan(context)
+                return self._check_nans(other, context)
+
+        c = self.copy_abs().__cmp__(other.copy_abs())
+        if c == 0:
+            c = self.compare_total(other)
+
+        if c == -1:
+            ans = other
+        else:
+            ans = self
+
+        return ans._fix(context)
+
+    def min_mag(self, other, context=None):
+        """Compares the values numerically with their sign ignored."""
+        other = _convert_other(other, raiseit=True)
+
+        if context is None:
+            context = getcontext()
+
+        if self._is_special or other._is_special:
+            # If one operand is a quiet NaN and the other is number, then the
+            # number is always returned
+            sn = self._isnan()
+            on = other._isnan()
+            if sn or on:
+                if on == 1 and sn != 2:
+                    return self._fix_nan(context)
+                if sn == 1 and on != 2:
+                    return other._fix_nan(context)
+                return self._check_nans(other, context)
+
+        c = self.copy_abs().__cmp__(other.copy_abs())
+        if c == 0:
+            c = self.compare_total(other)
+
+        if c == -1:
+            ans = self
+        else:
+            ans = other
+
+        return ans._fix(context)
+
+    def next_minus(self, context=None):
+        """Returns the largest representable number smaller than itself."""
+        if context is None:
+            context = getcontext()
+
+        ans = self._check_nans(context=context)
+        if ans:
+            return ans
+
+        if self._isinfinity() == -1:
+            return negInf
+        if self._isinfinity() == 1:
+            return _dec_from_triple(0, '9'*context.prec, context.Etop())
+
+        context = context.copy()
+        context._set_rounding(ROUND_FLOOR)
+        context._ignore_all_flags()
+        new_self = self._fix(context)
+        if new_self != self:
+            return new_self
+        return self.__sub__(_dec_from_triple(0, '1', context.Etiny()-1),
+                            context)
+
+    def next_plus(self, context=None):
+        """Returns the smallest representable number larger than itself."""
+        if context is None:
+            context = getcontext()
+
+        ans = self._check_nans(context=context)
+        if ans:
+            return ans
+
+        if self._isinfinity() == 1:
+            return Inf
+        if self._isinfinity() == -1:
+            return _dec_from_triple(1, '9'*context.prec, context.Etop())
+
+        context = context.copy()
+        context._set_rounding(ROUND_CEILING)
+        context._ignore_all_flags()
+        new_self = self._fix(context)
+        if new_self != self:
+            return new_self
+        return self.__add__(_dec_from_triple(0, '1', context.Etiny()-1),
+                            context)
+
+    def next_toward(self, other, context=None):
+        """Returns the number closest to self, in the direction towards other.
+
+        The result is the closest representable number to self
+        (excluding self) that is in the direction towards other,
+        unless both have the same value.  If the two operands are
+        numerically equal, then the result is a copy of self with the
+        sign set to be the same as the sign of other.
+        """
+        other = _convert_other(other, raiseit=True)
+
+        if context is None:
+            context = getcontext()
+
+        ans = self._check_nans(other, context)
+        if ans:
+            return ans
+
+        comparison = self.__cmp__(other)
+        if comparison == 0:
+            return self.copy_sign(other)
+
+        if comparison == -1:
+            ans = self.next_plus(context)
+        else: # comparison == 1
+            ans = self.next_minus(context)
+
+        # decide which flags to raise using value of ans
+        if ans._isinfinity():
+            context._raise_error(Overflow,
+                                 'Infinite result from next_toward',
+                                 ans._sign)
+            context._raise_error(Rounded)
+            context._raise_error(Inexact)
+        elif ans.adjusted() < context.Emin:
+            context._raise_error(Underflow)
+            context._raise_error(Subnormal)
+            context._raise_error(Rounded)
+            context._raise_error(Inexact)
+            # if precision == 1 then we don't raise Clamped for a
+            # result 0E-Etiny.
+            if not ans:
+                context._raise_error(Clamped)
+
+        return ans
+
+    def number_class(self, context=None):
+        """Returns an indication of the class of self.
+
+        The class is one of the following strings:
+          sNaN
+          NaN
+          -Infinity
+          -Normal
+          -Subnormal
+          -Zero
+          +Zero
+          +Subnormal
+          +Normal
+          +Infinity
+        """
+        if self.is_snan():
+            return "sNaN"
+        if self.is_qnan():
+            return "NaN"
+        inf = self._isinfinity()
+        if inf == 1:
+            return "+Infinity"
+        if inf == -1:
+            return "-Infinity"
+        if self.is_zero():
+            if self._sign:
+                return "-Zero"
+            else:
+                return "+Zero"
+        if context is None:
+            context = getcontext()
+        if self.is_subnormal(context=context):
+            if self._sign:
+                return "-Subnormal"
+            else:
+                return "+Subnormal"
+        # just a normal, regular, boring number, :)
+        if self._sign:
+            return "-Normal"
+        else:
+            return "+Normal"
+
+    def radix(self):
+        """Just returns 10, as this is Decimal, :)"""
+        return Decimal(10)
+
+    def rotate(self, other, context=None):
+        """Returns a rotated copy of self, value-of-other times."""
+        if context is None:
+            context = getcontext()
+
+        ans = self._check_nans(other, context)
+        if ans:
+            return ans
+
+        if other._exp != 0:
+            return context._raise_error(InvalidOperation)
+        if not (-context.prec <= int(other) <= context.prec):
+            return context._raise_error(InvalidOperation)
+
+        if self._isinfinity():
+            return Decimal(self)
+
+        # get values, pad if necessary
+        torot = int(other)
+        rotdig = self._int
+        topad = context.prec - len(rotdig)
+        if topad:
+            rotdig = '0'*topad + rotdig
+
+        # let's rotate!
+        rotated = rotdig[torot:] + rotdig[:torot]
+        return _dec_from_triple(self._sign,
+                                rotated.lstrip('0') or '0', self._exp)
+
+    def scaleb (self, other, context=None):
+        """Returns self operand after adding the second value to its exp."""
+        if context is None:
+            context = getcontext()
+
+        ans = self._check_nans(other, context)
+        if ans:
+            return ans
+
+        if other._exp != 0:
+            return context._raise_error(InvalidOperation)
+        liminf = -2 * (context.Emax + context.prec)
+        limsup =  2 * (context.Emax + context.prec)
+        if not (liminf <= int(other) <= limsup):
+            return context._raise_error(InvalidOperation)
+
+        if self._isinfinity():
+            return Decimal(self)
+
+        d = _dec_from_triple(self._sign, self._int, self._exp + int(other))
+        d = d._fix(context)
+        return d
+
+    def shift(self, other, context=None):
+        """Returns a shifted copy of self, value-of-other times."""
+        if context is None:
+            context = getcontext()
+
+        ans = self._check_nans(other, context)
+        if ans:
+            return ans
+
+        if other._exp != 0:
+            return context._raise_error(InvalidOperation)
+        if not (-context.prec <= int(other) <= context.prec):
+            return context._raise_error(InvalidOperation)
+
+        if self._isinfinity():
+            return Decimal(self)
+
+        # get values, pad if necessary
+        torot = int(other)
+        if not torot:
+            return Decimal(self)
+        rotdig = self._int
+        topad = context.prec - len(rotdig)
+        if topad:
+            rotdig = '0'*topad + rotdig
+
+        # let's shift!
+        if torot < 0:
+            rotated = rotdig[:torot]
+        else:
+            rotated = rotdig + '0'*torot
+            rotated = rotated[-context.prec:]
+
+        return _dec_from_triple(self._sign,
+                                    rotated.lstrip('0') or '0', self._exp)
+
+    # Support for pickling, copy, and deepcopy
     def __reduce__(self):
         return (self.__class__, (str(self),))
 
@@ -2203,13 +3336,30 @@
             return self     # My components are also immutable
         return self.__class__(str(self))
 
-##### Context class ###########################################
+def _dec_from_triple(sign, coefficient, exponent, special=False):
+    """Create a decimal instance directly, without any validation,
+    normalization (e.g. removal of leading zeros) or argument
+    conversion.
+
+    This function is for *internal use only*.
+    """
+
+    self = object.__new__(Decimal)
+    self._sign = sign
+    self._int = coefficient
+    self._exp = exponent
+    self._is_special = special
+
+    return self
+
+##### Context class #######################################################
 
 
 # get rounding method function:
-rounding_functions = [name for name in Decimal.__dict__.keys() if name.startswith('_round_')]
+rounding_functions = [name for name in Decimal.__dict__.keys()
+                                    if name.startswith('_round_')]
 for name in rounding_functions:
-    #name is like _round_half_even, goes to the global ROUND_HALF_EVEN value.
+    # name is like _round_half_even, goes to the global ROUND_HALF_EVEN value.
     globalname = name[1:].upper()
     val = globals()[globalname]
     Decimal._pick_rounding_function[val] = name
@@ -2236,8 +3386,7 @@
 
     Contains:
     prec - precision (for use in rounding, division, square roots..)
-    rounding - rounding type. (how you round)
-    _rounding_decision - ALWAYS_ROUND, NEVER_ROUND -- do you round?
+    rounding - rounding type (how you round)
     traps - If traps[exception] = 1, then the exception is
                     raised when it is caused.  Otherwise, a value is
                     substituted in.
@@ -2253,7 +3402,6 @@
 
     def __init__(self, prec=None, rounding=None,
                  traps=None, flags=None,
-                 _rounding_decision=None,
                  Emin=None, Emax=None,
                  capitals=None, _clamp=0,
                  _ignored_flags=None):
@@ -2277,9 +3425,13 @@
     def __repr__(self):
         """Show the current context."""
         s = []
-        s.append('Context(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d' % vars(self))
-        s.append('flags=[' + ', '.join([f.__name__ for f, v in self.flags.items() if v]) + ']')
-        s.append('traps=[' + ', '.join([t.__name__ for t, v in self.traps.items() if v]) + ']')
+        s.append('Context(prec=%(prec)d, rounding=%(rounding)s, '
+                 'Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d'
+                 % vars(self))
+        names = [f.__name__ for f, v in self.flags.items() if v]
+        s.append('flags=[' + ', '.join(names) + ']')
+        names = [t.__name__ for t, v in self.traps.items() if v]
+        s.append('traps=[' + ', '.join(names) + ']')
         return ', '.join(s) + ')'
 
     def clear_flags(self):
@@ -2289,16 +3441,16 @@
 
     def _shallow_copy(self):
         """Returns a shallow copy from self."""
-        nc = Context(self.prec, self.rounding, self.traps, self.flags,
-                         self._rounding_decision, self.Emin, self.Emax,
-                         self.capitals, self._clamp, self._ignored_flags)
+        nc = Context(self.prec, self.rounding, self.traps,
+                     self.flags, self.Emin, self.Emax,
+                     self.capitals, self._clamp, self._ignored_flags)
         return nc
 
     def copy(self):
         """Returns a deep copy from self."""
-        nc = Context(self.prec, self.rounding, self.traps.copy(), self.flags.copy(),
-                         self._rounding_decision, self.Emin, self.Emax,
-                         self.capitals, self._clamp, self._ignored_flags)
+        nc = Context(self.prec, self.rounding, self.traps.copy(),
+                     self.flags.copy(), self.Emin, self.Emax,
+                     self.capitals, self._clamp, self._ignored_flags)
         return nc
     __copy__ = copy
 
@@ -2312,16 +3464,16 @@
         """
         error = _condition_map.get(condition, condition)
         if error in self._ignored_flags:
-            #Don't touch the flag
+            # Don't touch the flag
             return error().handle(self, *args)
 
         self.flags[error] += 1
         if not self.traps[error]:
-            #The errors define how to handle themselves.
+            # The errors define how to handle themselves.
             return condition().handle(self, *args)
 
         # Errors should only be risked on copies of the context
-        #self._ignored_flags = []
+        # self._ignored_flags = []
         raise error, explanation
 
     def _ignore_all_flags(self):
@@ -2345,7 +3497,7 @@
     def __hash__(self):
         """A Context cannot be hashed."""
         # We inherit object.__hash__, so we must deny this explicitly
-        raise TypeError, "Cannot hash a Context."
+        raise TypeError("Cannot hash a Context.")
 
     def Etiny(self):
         """Returns Etiny (= Emin - prec + 1)"""
@@ -2355,27 +3507,6 @@
         """Returns maximum exponent (= Emax - prec + 1)"""
         return int(self.Emax - self.prec + 1)
 
-    def _set_rounding_decision(self, type):
-        """Sets the rounding decision.
-
-        Sets the rounding decision, and returns the current (previous)
-        rounding decision.  Often used like:
-
-        context = context._shallow_copy()
-        # That so you don't change the calling context
-        # if an error occurs in the middle (say DivisionImpossible is raised).
-
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-        instance = instance / Decimal(2)
-        context._set_rounding_decision(rounding)
-
-        This will make it not round for that operation.
-        """
-
-        rounding = self._rounding_decision
-        self._rounding_decision = type
-        return rounding
-
     def _set_rounding(self, type):
         """Sets the rounding type.
 
@@ -2398,14 +3529,17 @@
     def create_decimal(self, num='0'):
         """Creates a new Decimal instance but using self as context."""
         d = Decimal(num, context=self)
+        if d._isnan() and len(d._int) > self.prec - self._clamp:
+            return self._raise_error(ConversionSyntax,
+                                     "diagnostic info too long in NaN")
         return d._fix(self)
 
-    #Methods
+    # Methods
     def abs(self, a):
         """Returns the absolute value of the operand.
 
         If the operand is negative, the result is the same as using the minus
-        operation on the operand. Otherwise, the result is the same as using
+        operation on the operand.  Otherwise, the result is the same as using
         the plus operation on the operand.
 
         >>> ExtendedContext.abs(Decimal('2.1'))
@@ -2432,6 +3566,17 @@
     def _apply(self, a):
         return str(a._fix(self))
 
+    def canonical(self, a):
+        """Returns the same Decimal object.
+
+        As we do not have different encodings for the same number, the
+        received object already is in its canonical form.
+
+        >>> ExtendedContext.canonical(Decimal('2.50'))
+        Decimal("2.50")
+        """
+        return a.canonical(context=self)
+
     def compare(self, a, b):
         """Compares values numerically.
 
@@ -2461,6 +3606,110 @@
         """
         return a.compare(b, context=self)
 
+    def compare_signal(self, a, b):
+        """Compares the values of the two operands numerically.
+
+        It's pretty much like compare(), but all NaNs signal, with signaling
+        NaNs taking precedence over quiet NaNs.
+
+        >>> c = ExtendedContext
+        >>> c.compare_signal(Decimal('2.1'), Decimal('3'))
+        Decimal("-1")
+        >>> c.compare_signal(Decimal('2.1'), Decimal('2.1'))
+        Decimal("0")
+        >>> c.flags[InvalidOperation] = 0
+        >>> print c.flags[InvalidOperation]
+        0
+        >>> c.compare_signal(Decimal('NaN'), Decimal('2.1'))
+        Decimal("NaN")
+        >>> print c.flags[InvalidOperation]
+        1
+        >>> c.flags[InvalidOperation] = 0
+        >>> print c.flags[InvalidOperation]
+        0
+        >>> c.compare_signal(Decimal('sNaN'), Decimal('2.1'))
+        Decimal("NaN")
+        >>> print c.flags[InvalidOperation]
+        1
+        """
+        return a.compare_signal(b, context=self)
+
+    def compare_total(self, a, b):
+        """Compares two operands using their abstract representation.
+
+        This is not like the standard compare, which use their numerical
+        value. Note that a total ordering is defined for all possible abstract
+        representations.
+
+        >>> ExtendedContext.compare_total(Decimal('12.73'), Decimal('127.9'))
+        Decimal("-1")
+        >>> ExtendedContext.compare_total(Decimal('-127'),  Decimal('12'))
+        Decimal("-1")
+        >>> ExtendedContext.compare_total(Decimal('12.30'), Decimal('12.3'))
+        Decimal("-1")
+        >>> ExtendedContext.compare_total(Decimal('12.30'), Decimal('12.30'))
+        Decimal("0")
+        >>> ExtendedContext.compare_total(Decimal('12.3'),  Decimal('12.300'))
+        Decimal("1")
+        >>> ExtendedContext.compare_total(Decimal('12.3'),  Decimal('NaN'))
+        Decimal("-1")
+        """
+        return a.compare_total(b)
+
+    def compare_total_mag(self, a, b):
+        """Compares two operands using their abstract representation ignoring sign.
+
+        Like compare_total, but with operand's sign ignored and assumed to be 0.
+        """
+        return a.compare_total_mag(b)
+
+    def copy_abs(self, a):
+        """Returns a copy of the operand with the sign set to 0.
+
+        >>> ExtendedContext.copy_abs(Decimal('2.1'))
+        Decimal("2.1")
+        >>> ExtendedContext.copy_abs(Decimal('-100'))
+        Decimal("100")
+        """
+        return a.copy_abs()
+
+    def copy_decimal(self, a):
+        """Returns a copy of the decimal objet.
+
+        >>> ExtendedContext.copy_decimal(Decimal('2.1'))
+        Decimal("2.1")
+        >>> ExtendedContext.copy_decimal(Decimal('-1.00'))
+        Decimal("-1.00")
+        """
+        return Decimal(a)
+
+    def copy_negate(self, a):
+        """Returns a copy of the operand with the sign inverted.
+
+        >>> ExtendedContext.copy_negate(Decimal('101.5'))
+        Decimal("-101.5")
+        >>> ExtendedContext.copy_negate(Decimal('-101.5'))
+        Decimal("101.5")
+        """
+        return a.copy_negate()
+
+    def copy_sign(self, a, b):
+        """Copies the second operand's sign to the first one.
+
+        In detail, it returns a copy of the first operand with the sign
+        equal to the sign of the second operand.
+
+        >>> ExtendedContext.copy_sign(Decimal( '1.50'), Decimal('7.33'))
+        Decimal("1.50")
+        >>> ExtendedContext.copy_sign(Decimal('-1.50'), Decimal('7.33'))
+        Decimal("1.50")
+        >>> ExtendedContext.copy_sign(Decimal( '1.50'), Decimal('-7.33'))
+        Decimal("-1.50")
+        >>> ExtendedContext.copy_sign(Decimal('-1.50'), Decimal('-7.33'))
+        Decimal("-1.50")
+        """
+        return a.copy_sign(b)
+
     def divide(self, a, b):
         """Decimal division in a specified context.
 
@@ -2502,13 +3751,330 @@
     def divmod(self, a, b):
         return a.__divmod__(b, context=self)
 
+    def exp(self, a):
+        """Returns e ** a.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> c.exp(Decimal('-Infinity'))
+        Decimal("0")
+        >>> c.exp(Decimal('-1'))
+        Decimal("0.367879441")
+        >>> c.exp(Decimal('0'))
+        Decimal("1")
+        >>> c.exp(Decimal('1'))
+        Decimal("2.71828183")
+        >>> c.exp(Decimal('0.693147181'))
+        Decimal("2.00000000")
+        >>> c.exp(Decimal('+Infinity'))
+        Decimal("Infinity")
+        """
+        return a.exp(context=self)
+
+    def fma(self, a, b, c):
+        """Returns a multiplied by b, plus c.
+
+        The first two operands are multiplied together, using multiply,
+        the third operand is then added to the result of that
+        multiplication, using add, all with only one final rounding.
+
+        >>> ExtendedContext.fma(Decimal('3'), Decimal('5'), Decimal('7'))
+        Decimal("22")
+        >>> ExtendedContext.fma(Decimal('3'), Decimal('-5'), Decimal('7'))
+        Decimal("-8")
+        >>> ExtendedContext.fma(Decimal('888565290'), Decimal('1557.96930'), Decimal('-86087.7578'))
+        Decimal("1.38435736E+12")
+        """
+        return a.fma(b, c, context=self)
+
+    def is_canonical(self, a):
+        """Return True if the operand is canonical; otherwise return False.
+
+        Currently, the encoding of a Decimal instance is always
+        canonical, so this method returns True for any Decimal.
+
+        >>> ExtendedContext.is_canonical(Decimal('2.50'))
+        True
+        """
+        return a.is_canonical()
+
+    def is_finite(self, a):
+        """Return True if the operand is finite; otherwise return False.
+
+        A Decimal instance is considered finite if it is neither
+        infinite nor a NaN.
+
+        >>> ExtendedContext.is_finite(Decimal('2.50'))
+        True
+        >>> ExtendedContext.is_finite(Decimal('-0.3'))
+        True
+        >>> ExtendedContext.is_finite(Decimal('0'))
+        True
+        >>> ExtendedContext.is_finite(Decimal('Inf'))
+        False
+        >>> ExtendedContext.is_finite(Decimal('NaN'))
+        False
+        """
+        return a.is_finite()
+
+    def is_infinite(self, a):
+        """Return True if the operand is infinite; otherwise return False.
+
+        >>> ExtendedContext.is_infinite(Decimal('2.50'))
+        False
+        >>> ExtendedContext.is_infinite(Decimal('-Inf'))
+        True
+        >>> ExtendedContext.is_infinite(Decimal('NaN'))
+        False
+        """
+        return a.is_infinite()
+
+    def is_nan(self, a):
+        """Return True if the operand is a qNaN or sNaN;
+        otherwise return False.
+
+        >>> ExtendedContext.is_nan(Decimal('2.50'))
+        False
+        >>> ExtendedContext.is_nan(Decimal('NaN'))
+        True
+        >>> ExtendedContext.is_nan(Decimal('-sNaN'))
+        True
+        """
+        return a.is_nan()
+
+    def is_normal(self, a):
+        """Return True if the operand is a normal number;
+        otherwise return False.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> c.is_normal(Decimal('2.50'))
+        True
+        >>> c.is_normal(Decimal('0.1E-999'))
+        False
+        >>> c.is_normal(Decimal('0.00'))
+        False
+        >>> c.is_normal(Decimal('-Inf'))
+        False
+        >>> c.is_normal(Decimal('NaN'))
+        False
+        """
+        return a.is_normal(context=self)
+
+    def is_qnan(self, a):
+        """Return True if the operand is a quiet NaN; otherwise return False.
+
+        >>> ExtendedContext.is_qnan(Decimal('2.50'))
+        False
+        >>> ExtendedContext.is_qnan(Decimal('NaN'))
+        True
+        >>> ExtendedContext.is_qnan(Decimal('sNaN'))
+        False
+        """
+        return a.is_qnan()
+
+    def is_signed(self, a):
+        """Return True if the operand is negative; otherwise return False.
+
+        >>> ExtendedContext.is_signed(Decimal('2.50'))
+        False
+        >>> ExtendedContext.is_signed(Decimal('-12'))
+        True
+        >>> ExtendedContext.is_signed(Decimal('-0'))
+        True
+        """
+        return a.is_signed()
+
+    def is_snan(self, a):
+        """Return True if the operand is a signaling NaN;
+        otherwise return False.
+
+        >>> ExtendedContext.is_snan(Decimal('2.50'))
+        False
+        >>> ExtendedContext.is_snan(Decimal('NaN'))
+        False
+        >>> ExtendedContext.is_snan(Decimal('sNaN'))
+        True
+        """
+        return a.is_snan()
+
+    def is_subnormal(self, a):
+        """Return True if the operand is subnormal; otherwise return False.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> c.is_subnormal(Decimal('2.50'))
+        False
+        >>> c.is_subnormal(Decimal('0.1E-999'))
+        True
+        >>> c.is_subnormal(Decimal('0.00'))
+        False
+        >>> c.is_subnormal(Decimal('-Inf'))
+        False
+        >>> c.is_subnormal(Decimal('NaN'))
+        False
+        """
+        return a.is_subnormal(context=self)
+
+    def is_zero(self, a):
+        """Return True if the operand is a zero; otherwise return False.
+
+        >>> ExtendedContext.is_zero(Decimal('0'))
+        True
+        >>> ExtendedContext.is_zero(Decimal('2.50'))
+        False
+        >>> ExtendedContext.is_zero(Decimal('-0E+2'))
+        True
+        """
+        return a.is_zero()
+
+    def ln(self, a):
+        """Returns the natural (base e) logarithm of the operand.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> c.ln(Decimal('0'))
+        Decimal("-Infinity")
+        >>> c.ln(Decimal('1.000'))
+        Decimal("0")
+        >>> c.ln(Decimal('2.71828183'))
+        Decimal("1.00000000")
+        >>> c.ln(Decimal('10'))
+        Decimal("2.30258509")
+        >>> c.ln(Decimal('+Infinity'))
+        Decimal("Infinity")
+        """
+        return a.ln(context=self)
+
+    def log10(self, a):
+        """Returns the base 10 logarithm of the operand.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> c.log10(Decimal('0'))
+        Decimal("-Infinity")
+        >>> c.log10(Decimal('0.001'))
+        Decimal("-3")
+        >>> c.log10(Decimal('1.000'))
+        Decimal("0")
+        >>> c.log10(Decimal('2'))
+        Decimal("0.301029996")
+        >>> c.log10(Decimal('10'))
+        Decimal("1")
+        >>> c.log10(Decimal('70'))
+        Decimal("1.84509804")
+        >>> c.log10(Decimal('+Infinity'))
+        Decimal("Infinity")
+        """
+        return a.log10(context=self)
+
+    def logb(self, a):
+        """ Returns the exponent of the magnitude of the operand's MSD.
+
+        The result is the integer which is the exponent of the magnitude
+        of the most significant digit of the operand (as though the
+        operand were truncated to a single digit while maintaining the
+        value of that digit and without limiting the resulting exponent).
+
+        >>> ExtendedContext.logb(Decimal('250'))
+        Decimal("2")
+        >>> ExtendedContext.logb(Decimal('2.50'))
+        Decimal("0")
+        >>> ExtendedContext.logb(Decimal('0.03'))
+        Decimal("-2")
+        >>> ExtendedContext.logb(Decimal('0'))
+        Decimal("-Infinity")
+        """
+        return a.logb(context=self)
+
+    def logical_and(self, a, b):
+        """Applies the logical operation 'and' between each operand's digits.
+
+        The operands must be both logical numbers.
+
+        >>> ExtendedContext.logical_and(Decimal('0'), Decimal('0'))
+        Decimal("0")
+        >>> ExtendedContext.logical_and(Decimal('0'), Decimal('1'))
+        Decimal("0")
+        >>> ExtendedContext.logical_and(Decimal('1'), Decimal('0'))
+        Decimal("0")
+        >>> ExtendedContext.logical_and(Decimal('1'), Decimal('1'))
+        Decimal("1")
+        >>> ExtendedContext.logical_and(Decimal('1100'), Decimal('1010'))
+        Decimal("1000")
+        >>> ExtendedContext.logical_and(Decimal('1111'), Decimal('10'))
+        Decimal("10")
+        """
+        return a.logical_and(b, context=self)
+
+    def logical_invert(self, a):
+        """Invert all the digits in the operand.
+
+        The operand must be a logical number.
+
+        >>> ExtendedContext.logical_invert(Decimal('0'))
+        Decimal("111111111")
+        >>> ExtendedContext.logical_invert(Decimal('1'))
+        Decimal("111111110")
+        >>> ExtendedContext.logical_invert(Decimal('111111111'))
+        Decimal("0")
+        >>> ExtendedContext.logical_invert(Decimal('101010101'))
+        Decimal("10101010")
+        """
+        return a.logical_invert(context=self)
+
+    def logical_or(self, a, b):
+        """Applies the logical operation 'or' between each operand's digits.
+
+        The operands must be both logical numbers.
+
+        >>> ExtendedContext.logical_or(Decimal('0'), Decimal('0'))
+        Decimal("0")
+        >>> ExtendedContext.logical_or(Decimal('0'), Decimal('1'))
+        Decimal("1")
+        >>> ExtendedContext.logical_or(Decimal('1'), Decimal('0'))
+        Decimal("1")
+        >>> ExtendedContext.logical_or(Decimal('1'), Decimal('1'))
+        Decimal("1")
+        >>> ExtendedContext.logical_or(Decimal('1100'), Decimal('1010'))
+        Decimal("1110")
+        >>> ExtendedContext.logical_or(Decimal('1110'), Decimal('10'))
+        Decimal("1110")
+        """
+        return a.logical_or(b, context=self)
+
+    def logical_xor(self, a, b):
+        """Applies the logical operation 'xor' between each operand's digits.
+
+        The operands must be both logical numbers.
+
+        >>> ExtendedContext.logical_xor(Decimal('0'), Decimal('0'))
+        Decimal("0")
+        >>> ExtendedContext.logical_xor(Decimal('0'), Decimal('1'))
+        Decimal("1")
+        >>> ExtendedContext.logical_xor(Decimal('1'), Decimal('0'))
+        Decimal("1")
+        >>> ExtendedContext.logical_xor(Decimal('1'), Decimal('1'))
+        Decimal("0")
+        >>> ExtendedContext.logical_xor(Decimal('1100'), Decimal('1010'))
+        Decimal("110")
+        >>> ExtendedContext.logical_xor(Decimal('1111'), Decimal('10'))
+        Decimal("1101")
+        """
+        return a.logical_xor(b, context=self)
+
     def max(self, a,b):
         """max compares two values numerically and returns the maximum.
 
         If either operand is a NaN then the general rules apply.
         Otherwise, the operands are compared as as though by the compare
-        operation. If they are numerically equal then the left-hand operand
-        is chosen as the result. Otherwise the maximum (closer to positive
+        operation.  If they are numerically equal then the left-hand operand
+        is chosen as the result.  Otherwise the maximum (closer to positive
         infinity) of the two operands is chosen as the result.
 
         >>> ExtendedContext.max(Decimal('3'), Decimal('2'))
@@ -2522,13 +4088,17 @@
         """
         return a.max(b, context=self)
 
+    def max_mag(self, a, b):
+        """Compares the values numerically with their sign ignored."""
+        return a.max_mag(b, context=self)
+
     def min(self, a,b):
         """min compares two values numerically and returns the minimum.
 
         If either operand is a NaN then the general rules apply.
         Otherwise, the operands are compared as as though by the compare
-        operation. If they are numerically equal then the left-hand operand
-        is chosen as the result. Otherwise the minimum (closer to negative
+        operation.  If they are numerically equal then the left-hand operand
+        is chosen as the result.  Otherwise the minimum (closer to negative
         infinity) of the two operands is chosen as the result.
 
         >>> ExtendedContext.min(Decimal('3'), Decimal('2'))
@@ -2542,6 +4112,10 @@
         """
         return a.min(b, context=self)
 
+    def min_mag(self, a, b):
+        """Compares the values numerically with their sign ignored."""
+        return a.min_mag(b, context=self)
+
     def minus(self, a):
         """Minus corresponds to unary prefix minus in Python.
 
@@ -2577,6 +4151,68 @@
         """
         return a.__mul__(b, context=self)
 
+    def next_minus(self, a):
+        """Returns the largest representable number smaller than a.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> ExtendedContext.next_minus(Decimal('1'))
+        Decimal("0.999999999")
+        >>> c.next_minus(Decimal('1E-1007'))
+        Decimal("0E-1007")
+        >>> ExtendedContext.next_minus(Decimal('-1.00000003'))
+        Decimal("-1.00000004")
+        >>> c.next_minus(Decimal('Infinity'))
+        Decimal("9.99999999E+999")
+        """
+        return a.next_minus(context=self)
+
+    def next_plus(self, a):
+        """Returns the smallest representable number larger than a.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> ExtendedContext.next_plus(Decimal('1'))
+        Decimal("1.00000001")
+        >>> c.next_plus(Decimal('-1E-1007'))
+        Decimal("-0E-1007")
+        >>> ExtendedContext.next_plus(Decimal('-1.00000003'))
+        Decimal("-1.00000002")
+        >>> c.next_plus(Decimal('-Infinity'))
+        Decimal("-9.99999999E+999")
+        """
+        return a.next_plus(context=self)
+
+    def next_toward(self, a, b):
+        """Returns the number closest to a, in direction towards b.
+
+        The result is the closest representable number from the first
+        operand (but not the first operand) that is in the direction
+        towards the second operand, unless the operands have the same
+        value.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> c.next_toward(Decimal('1'), Decimal('2'))
+        Decimal("1.00000001")
+        >>> c.next_toward(Decimal('-1E-1007'), Decimal('1'))
+        Decimal("-0E-1007")
+        >>> c.next_toward(Decimal('-1.00000003'), Decimal('0'))
+        Decimal("-1.00000002")
+        >>> c.next_toward(Decimal('1'), Decimal('0'))
+        Decimal("0.999999999")
+        >>> c.next_toward(Decimal('1E-1007'), Decimal('-100'))
+        Decimal("0E-1007")
+        >>> c.next_toward(Decimal('-1.00000003'), Decimal('-10'))
+        Decimal("-1.00000004")
+        >>> c.next_toward(Decimal('0.00'), Decimal('-0.0000'))
+        Decimal("-0.00")
+        """
+        return a.next_toward(b, context=self)
+
     def normalize(self, a):
         """normalize reduces an operand to its simplest form.
 
@@ -2598,6 +4234,53 @@
         """
         return a.normalize(context=self)
 
+    def number_class(self, a):
+        """Returns an indication of the class of the operand.
+
+        The class is one of the following strings:
+          -sNaN
+          -NaN
+          -Infinity
+          -Normal
+          -Subnormal
+          -Zero
+          +Zero
+          +Subnormal
+          +Normal
+          +Infinity
+
+        >>> c = Context(ExtendedContext)
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> c.number_class(Decimal('Infinity'))
+        '+Infinity'
+        >>> c.number_class(Decimal('1E-10'))
+        '+Normal'
+        >>> c.number_class(Decimal('2.50'))
+        '+Normal'
+        >>> c.number_class(Decimal('0.1E-999'))
+        '+Subnormal'
+        >>> c.number_class(Decimal('0'))
+        '+Zero'
+        >>> c.number_class(Decimal('-0'))
+        '-Zero'
+        >>> c.number_class(Decimal('-0.1E-999'))
+        '-Subnormal'
+        >>> c.number_class(Decimal('-1E-10'))
+        '-Normal'
+        >>> c.number_class(Decimal('-2.50'))
+        '-Normal'
+        >>> c.number_class(Decimal('-Infinity'))
+        '-Infinity'
+        >>> c.number_class(Decimal('NaN'))
+        'NaN'
+        >>> c.number_class(Decimal('-NaN'))
+        'NaN'
+        >>> c.number_class(Decimal('sNaN'))
+        'sNaN'
+        """
+        return a.number_class(context=self)
+
     def plus(self, a):
         """Plus corresponds to unary prefix plus in Python.
 
@@ -2615,65 +4298,85 @@
     def power(self, a, b, modulo=None):
         """Raises a to the power of b, to modulo if given.
 
-        The right-hand operand must be a whole number whose integer part (after
-        any exponent has been applied) has no more than 9 digits and whose
-        fractional part (if any) is all zeros before any rounding. The operand
-        may be positive, negative, or zero; if negative, the absolute value of
-        the power is used, and the left-hand operand is inverted (divided into
-        1) before use.
+        With two arguments, compute a**b.  If a is negative then b
+        must be integral.  The result will be inexact unless b is
+        integral and the result is finite and can be expressed exactly
+        in 'precision' digits.
 
-        If the increased precision needed for the intermediate calculations
-        exceeds the capabilities of the implementation then an Invalid operation
-        condition is raised.
+        With three arguments, compute (a**b) % modulo.  For the
+        three argument form, the following restrictions on the
+        arguments hold:
 
-        If, when raising to a negative power, an underflow occurs during the
-        division into 1, the operation is not halted at that point but
-        continues.
+         - all three arguments must be integral
+         - b must be nonnegative
+         - at least one of a or b must be nonzero
+         - modulo must be nonzero and have at most 'precision' digits
 
-        >>> ExtendedContext.power(Decimal('2'), Decimal('3'))
+        The result of pow(a, b, modulo) is identical to the result
+        that would be obtained by computing (a**b) % modulo with
+        unbounded precision, but is computed more efficiently.  It is
+        always exact.
+
+        >>> c = ExtendedContext.copy()
+        >>> c.Emin = -999
+        >>> c.Emax = 999
+        >>> c.power(Decimal('2'), Decimal('3'))
         Decimal("8")
-        >>> ExtendedContext.power(Decimal('2'), Decimal('-3'))
+        >>> c.power(Decimal('-2'), Decimal('3'))
+        Decimal("-8")
+        >>> c.power(Decimal('2'), Decimal('-3'))
         Decimal("0.125")
-        >>> ExtendedContext.power(Decimal('1.7'), Decimal('8'))
+        >>> c.power(Decimal('1.7'), Decimal('8'))
         Decimal("69.7575744")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('-2'))
+        >>> c.power(Decimal('10'), Decimal('0.301029996'))
+        Decimal("2.00000000")
+        >>> c.power(Decimal('Infinity'), Decimal('-1'))
         Decimal("0")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('-1'))
-        Decimal("0")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('0'))
+        >>> c.power(Decimal('Infinity'), Decimal('0'))
         Decimal("1")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('1'))
+        >>> c.power(Decimal('Infinity'), Decimal('1'))
         Decimal("Infinity")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('2'))
-        Decimal("Infinity")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('-2'))
-        Decimal("0")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('-1'))
+        >>> c.power(Decimal('-Infinity'), Decimal('-1'))
         Decimal("-0")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('0'))
+        >>> c.power(Decimal('-Infinity'), Decimal('0'))
         Decimal("1")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('1'))
+        >>> c.power(Decimal('-Infinity'), Decimal('1'))
         Decimal("-Infinity")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('2'))
+        >>> c.power(Decimal('-Infinity'), Decimal('2'))
         Decimal("Infinity")
-        >>> ExtendedContext.power(Decimal('0'), Decimal('0'))
+        >>> c.power(Decimal('0'), Decimal('0'))
         Decimal("NaN")
+
+        >>> c.power(Decimal('3'), Decimal('7'), Decimal('16'))
+        Decimal("11")
+        >>> c.power(Decimal('-3'), Decimal('7'), Decimal('16'))
+        Decimal("-11")
+        >>> c.power(Decimal('-3'), Decimal('8'), Decimal('16'))
+        Decimal("1")
+        >>> c.power(Decimal('3'), Decimal('7'), Decimal('-16'))
+        Decimal("11")
+        >>> c.power(Decimal('23E12345'), Decimal('67E189'), Decimal('123456789'))
+        Decimal("11729830")
+        >>> c.power(Decimal('-0'), Decimal('17'), Decimal('1729'))
+        Decimal("-0")
+        >>> c.power(Decimal('-23'), Decimal('0'), Decimal('65537'))
+        Decimal("1")
         """
         return a.__pow__(b, modulo, context=self)
 
     def quantize(self, a, b):
-        """Returns a value equal to 'a' (rounded) and having the exponent of 'b'.
+        """Returns a value equal to 'a' (rounded), having the exponent of 'b'.
 
         The coefficient of the result is derived from that of the left-hand
-        operand. It may be rounded using the current rounding setting (if the
+        operand.  It may be rounded using the current rounding setting (if the
         exponent is being increased), multiplied by a positive power of ten (if
         the exponent is being decreased), or is unchanged (if the exponent is
         already equal to that of the right-hand operand).
 
         Unlike other operations, if the length of the coefficient after the
         quantize operation would be greater than precision then an Invalid
-        operation condition is raised. This guarantees that, unless there is an
-        error condition, the exponent of the result of a quantize is always
+        operation condition is raised.  This guarantees that, unless there is
+        an error condition, the exponent of the result of a quantize is always
         equal to that of the right-hand operand.
 
         Also unlike other operations, quantize will never raise Underflow, even
@@ -2712,13 +4415,21 @@
         """
         return a.quantize(b, context=self)
 
+    def radix(self):
+        """Just returns 10, as this is Decimal, :)
+
+        >>> ExtendedContext.radix()
+        Decimal("10")
+        """
+        return Decimal(10)
+
     def remainder(self, a, b):
         """Returns the remainder from integer division.
 
         The result is the residue of the dividend after the operation of
-        calculating integer division as described for divide-integer, rounded to
-        precision digits if necessary. The sign of the result, if non-zero, is
-        the same as that of the original dividend.
+        calculating integer division as described for divide-integer, rounded
+        to precision digits if necessary.  The sign of the result, if
+        non-zero, is the same as that of the original dividend.
 
         This operation will fail under the same conditions as integer division
         (that is, if integer division on the same two operands would fail, the
@@ -2742,7 +4453,7 @@
     def remainder_near(self, a, b):
         """Returns to be "a - b * n", where n is the integer nearest the exact
         value of "x / b" (if two integers are equally near then the even one
-        is chosen). If the result is equal to 0 then its sign will be the
+        is chosen).  If the result is equal to 0 then its sign will be the
         sign of a.
 
         This operation will fail under the same conditions as integer division
@@ -2766,6 +4477,28 @@
         """
         return a.remainder_near(b, context=self)
 
+    def rotate(self, a, b):
+        """Returns a rotated copy of a, b times.
+
+        The coefficient of the result is a rotated copy of the digits in
+        the coefficient of the first operand.  The number of places of
+        rotation is taken from the absolute value of the second operand,
+        with the rotation being to the left if the second operand is
+        positive or to the right otherwise.
+
+        >>> ExtendedContext.rotate(Decimal('34'), Decimal('8'))
+        Decimal("400000003")
+        >>> ExtendedContext.rotate(Decimal('12'), Decimal('9'))
+        Decimal("12")
+        >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('-2'))
+        Decimal("891234567")
+        >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('0'))
+        Decimal("123456789")
+        >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('+2'))
+        Decimal("345678912")
+        """
+        return a.rotate(b, context=self)
+
     def same_quantum(self, a, b):
         """Returns True if the two operands have the same exponent.
 
@@ -2783,8 +4516,43 @@
         """
         return a.same_quantum(b)
 
+    def scaleb (self, a, b):
+        """Returns the first operand after adding the second value its exp.
+
+        >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('-2'))
+        Decimal("0.0750")
+        >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('0'))
+        Decimal("7.50")
+        >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('3'))
+        Decimal("7.50E+3")
+        """
+        return a.scaleb (b, context=self)
+
+    def shift(self, a, b):
+        """Returns a shifted copy of a, b times.
+
+        The coefficient of the result is a shifted copy of the digits
+        in the coefficient of the first operand.  The number of places
+        to shift is taken from the absolute value of the second operand,
+        with the shift being to the left if the second operand is
+        positive or to the right otherwise.  Digits shifted into the
+        coefficient are zeros.
+
+        >>> ExtendedContext.shift(Decimal('34'), Decimal('8'))
+        Decimal("400000000")
+        >>> ExtendedContext.shift(Decimal('12'), Decimal('9'))
+        Decimal("0")
+        >>> ExtendedContext.shift(Decimal('123456789'), Decimal('-2'))
+        Decimal("1234567")
+        >>> ExtendedContext.shift(Decimal('123456789'), Decimal('0'))
+        Decimal("123456789")
+        >>> ExtendedContext.shift(Decimal('123456789'), Decimal('+2'))
+        Decimal("345678900")
+        """
+        return a.shift(b, context=self)
+
     def sqrt(self, a):
-        """Returns the square root of a non-negative number to context precision.
+        """Square root of a non-negative number to context precision.
 
         If the result must be inexact, it is rounded using the round-half-even
         algorithm.
@@ -2838,33 +4606,65 @@
         """
         return a.__str__(context=self)
 
-    def to_integral(self, a):
+    def to_integral_exact(self, a):
+        """Rounds to an integer.
+
+        When the operand has a negative exponent, the result is the same
+        as using the quantize() operation using the given operand as the
+        left-hand-operand, 1E+0 as the right-hand-operand, and the precision
+        of the operand as the precision setting; Inexact and Rounded flags
+        are allowed in this operation.  The rounding mode is taken from the
+        context.
+
+        >>> ExtendedContext.to_integral_exact(Decimal('2.1'))
+        Decimal("2")
+        >>> ExtendedContext.to_integral_exact(Decimal('100'))
+        Decimal("100")
+        >>> ExtendedContext.to_integral_exact(Decimal('100.0'))
+        Decimal("100")
+        >>> ExtendedContext.to_integral_exact(Decimal('101.5'))
+        Decimal("102")
+        >>> ExtendedContext.to_integral_exact(Decimal('-101.5'))
+        Decimal("-102")
+        >>> ExtendedContext.to_integral_exact(Decimal('10E+5'))
+        Decimal("1.0E+6")
+        >>> ExtendedContext.to_integral_exact(Decimal('7.89E+77'))
+        Decimal("7.89E+77")
+        >>> ExtendedContext.to_integral_exact(Decimal('-Inf'))
+        Decimal("-Infinity")
+        """
+        return a.to_integral_exact(context=self)
+
+    def to_integral_value(self, a):
         """Rounds to an integer.
 
         When the operand has a negative exponent, the result is the same
         as using the quantize() operation using the given operand as the
         left-hand-operand, 1E+0 as the right-hand-operand, and the precision
         of the operand as the precision setting, except that no flags will
-        be set. The rounding mode is taken from the context.
+        be set.  The rounding mode is taken from the context.
 
-        >>> ExtendedContext.to_integral(Decimal('2.1'))
+        >>> ExtendedContext.to_integral_value(Decimal('2.1'))
         Decimal("2")
-        >>> ExtendedContext.to_integral(Decimal('100'))
+        >>> ExtendedContext.to_integral_value(Decimal('100'))
         Decimal("100")
-        >>> ExtendedContext.to_integral(Decimal('100.0'))
+        >>> ExtendedContext.to_integral_value(Decimal('100.0'))
         Decimal("100")
-        >>> ExtendedContext.to_integral(Decimal('101.5'))
+        >>> ExtendedContext.to_integral_value(Decimal('101.5'))
         Decimal("102")
-        >>> ExtendedContext.to_integral(Decimal('-101.5'))
+        >>> ExtendedContext.to_integral_value(Decimal('-101.5'))
         Decimal("-102")
-        >>> ExtendedContext.to_integral(Decimal('10E+5'))
+        >>> ExtendedContext.to_integral_value(Decimal('10E+5'))
         Decimal("1.0E+6")
-        >>> ExtendedContext.to_integral(Decimal('7.89E+77'))
+        >>> ExtendedContext.to_integral_value(Decimal('7.89E+77'))
         Decimal("7.89E+77")
-        >>> ExtendedContext.to_integral(Decimal('-Inf'))
+        >>> ExtendedContext.to_integral_value(Decimal('-Inf'))
         Decimal("-Infinity")
         """
-        return a.to_integral(context=self)
+        return a.to_integral_value(context=self)
+
+    # the method name changed, but we provide also the old one, for compatibility
+    to_integral = to_integral_value
 
 class _WorkRep(object):
     __slots__ = ('sign','int','exp')
@@ -2879,10 +4679,7 @@
             self.exp = None
         elif isinstance(value, Decimal):
             self.sign = value._sign
-            cum = 0
-            for digit  in value._int:
-                cum = cum * 10 + digit
-            self.int = cum
+            self.int = int(value._int)
             self.exp = value._exp
         else:
             # assert isinstance(value, tuple)
@@ -2897,70 +4694,375 @@
 
 
 
-def _normalize(op1, op2, shouldround = 0, prec = 0):
+def _normalize(op1, op2, prec = 0):
     """Normalizes op1, op2 to have the same exp and length of coefficient.
 
     Done during addition.
     """
-    # Yes, the exponent is a long, but the difference between exponents
-    # must be an int-- otherwise you'd get a big memory problem.
-    numdigits = int(op1.exp - op2.exp)
-    if numdigits < 0:
-        numdigits = -numdigits
+    if op1.exp < op2.exp:
         tmp = op2
         other = op1
     else:
         tmp = op1
         other = op2
 
+    # Let exp = min(tmp.exp - 1, tmp.adjusted() - precision - 1).
+    # Then adding 10**exp to tmp has the same effect (after rounding)
+    # as adding any positive quantity smaller than 10**exp; similarly
+    # for subtraction.  So if other is smaller than 10**exp we replace
+    # it with 10**exp.  This avoids tmp.exp - other.exp getting too large.
+    tmp_len = len(str(tmp.int))
+    other_len = len(str(other.int))
+    exp = tmp.exp + min(-1, tmp_len - prec - 2)
+    if other_len + other.exp - 1 < exp:
+        other.int = 1
+        other.exp = exp
 
-    if shouldround and numdigits > prec + 1:
-        # Big difference in exponents - check the adjusted exponents
-        tmp_len = len(str(tmp.int))
-        other_len = len(str(other.int))
-        if numdigits > (other_len + prec + 1 - tmp_len):
-            # If the difference in adjusted exps is > prec+1, we know
-            # other is insignificant, so might as well put a 1 after the precision.
-            # (since this is only for addition.)  Also stops use of massive longs.
-
-            extend = prec + 2 - tmp_len
-            if extend <= 0:
-                extend = 1
-            tmp.int *= 10 ** extend
-            tmp.exp -= extend
-            other.int = 1
-            other.exp = tmp.exp
-            return op1, op2
-
-    tmp.int *= 10 ** numdigits
-    tmp.exp -= numdigits
+    tmp.int *= 10 ** (tmp.exp - other.exp)
+    tmp.exp = other.exp
     return op1, op2
 
-def _adjust_coefficients(op1, op2):
-    """Adjust op1, op2 so that op2.int * 10 > op1.int >= op2.int.
+##### Integer arithmetic functions used by ln, log10, exp and __pow__ #####
 
-    Returns the adjusted op1, op2 as well as the change in op1.exp-op2.exp.
-
-    Used on _WorkRep instances during division.
+# This function from Tim Peters was taken from here:
+# http://mail.python.org/pipermail/python-list/1999-July/007758.html
+# The correction being in the function definition is for speed, and
+# the whole function is not resolved with math.log because of avoiding
+# the use of floats.
+def _nbits(n, correction = {
+        '0': 4, '1': 3, '2': 2, '3': 2,
+        '4': 1, '5': 1, '6': 1, '7': 1,
+        '8': 0, '9': 0, 'a': 0, 'b': 0,
+        'c': 0, 'd': 0, 'e': 0, 'f': 0}):
+    """Number of bits in binary representation of the positive integer n,
+    or 0 if n == 0.
     """
-    adjust = 0
-    #If op1 is smaller, make it larger
-    while op2.int > op1.int:
-        op1.int *= 10
-        op1.exp -= 1
-        adjust += 1
+    if n < 0:
+        raise ValueError("The argument to _nbits should be nonnegative.")
+    hex_n = "%x" % n
+    return 4*len(hex_n) - correction[hex_n[0]]
 
-    #If op2 is too small, make it larger
-    while op1.int >= (10 * op2.int):
-        op2.int *= 10
-        op2.exp -= 1
-        adjust -= 1
+def _sqrt_nearest(n, a):
+    """Closest integer to the square root of the positive integer n.  a is
+    an initial approximation to the square root.  Any positive integer
+    will do for a, but the closer a is to the square root of n the
+    faster convergence will be.
 
-    return op1, op2, adjust
+    """
+    if n <= 0 or a <= 0:
+        raise ValueError("Both arguments to _sqrt_nearest should be positive.")
 
-##### Helper Functions ########################################
+    b=0
+    while a != b:
+        b, a = a, a--n//a>>1
+    return a
 
-def _convert_other(other):
+def _rshift_nearest(x, shift):
+    """Given an integer x and a nonnegative integer shift, return closest
+    integer to x / 2**shift; use round-to-even in case of a tie.
+
+    """
+    b, q = 1L << shift, x >> shift
+    return q + (2*(x & (b-1)) + (q&1) > b)
+
+def _div_nearest(a, b):
+    """Closest integer to a/b, a and b positive integers; rounds to even
+    in the case of a tie.
+
+    """
+    q, r = divmod(a, b)
+    return q + (2*r + (q&1) > b)
+
+def _ilog(x, M, L = 8):
+    """Integer approximation to M*log(x/M), with absolute error boundable
+    in terms only of x/M.
+
+    Given positive integers x and M, return an integer approximation to
+    M * log(x/M).  For L = 8 and 0.1 <= x/M <= 10 the difference
+    between the approximation and the exact result is at most 22.  For
+    L = 8 and 1.0 <= x/M <= 10.0 the difference is at most 15.  In
+    both cases these are upper bounds on the error; it will usually be
+    much smaller."""
+
+    # The basic algorithm is the following: let log1p be the function
+    # log1p(x) = log(1+x).  Then log(x/M) = log1p((x-M)/M).  We use
+    # the reduction
+    #
+    #    log1p(y) = 2*log1p(y/(1+sqrt(1+y)))
+    #
+    # repeatedly until the argument to log1p is small (< 2**-L in
+    # absolute value).  For small y we can use the Taylor series
+    # expansion
+    #
+    #    log1p(y) ~ y - y**2/2 + y**3/3 - ... - (-y)**T/T
+    #
+    # truncating at T such that y**T is small enough.  The whole
+    # computation is carried out in a form of fixed-point arithmetic,
+    # with a real number z being represented by an integer
+    # approximation to z*M.  To avoid loss of precision, the y below
+    # is actually an integer approximation to 2**R*y*M, where R is the
+    # number of reductions performed so far.
+
+    y = x-M
+    # argument reduction; R = number of reductions performed
+    R = 0
+    while (R <= L and long(abs(y)) << L-R >= M or
+           R > L and abs(y) >> R-L >= M):
+        y = _div_nearest(long(M*y) << 1,
+                         M + _sqrt_nearest(M*(M+_rshift_nearest(y, R)), M))
+        R += 1
+
+    # Taylor series with T terms
+    T = -int(-10*len(str(M))//(3*L))
+    yshift = _rshift_nearest(y, R)
+    w = _div_nearest(M, T)
+    for k in xrange(T-1, 0, -1):
+        w = _div_nearest(M, k) - _div_nearest(yshift*w, M)
+
+    return _div_nearest(w*y, M)
+
+def _dlog10(c, e, p):
+    """Given integers c, e and p with c > 0, p >= 0, compute an integer
+    approximation to 10**p * log10(c*10**e), with an absolute error of
+    at most 1.  Assumes that c*10**e is not exactly 1."""
+
+    # increase precision by 2; compensate for this by dividing
+    # final result by 100
+    p += 2
+
+    # write c*10**e as d*10**f with either:
+    #   f >= 0 and 1 <= d <= 10, or
+    #   f <= 0 and 0.1 <= d <= 1.
+    # Thus for c*10**e close to 1, f = 0
+    l = len(str(c))
+    f = e+l - (e+l >= 1)
+
+    if p > 0:
+        M = 10**p
+        k = e+p-f
+        if k >= 0:
+            c *= 10**k
+        else:
+            c = _div_nearest(c, 10**-k)
+
+        log_d = _ilog(c, M) # error < 5 + 22 = 27
+        log_10 = _log10_digits(p) # error < 1
+        log_d = _div_nearest(log_d*M, log_10)
+        log_tenpower = f*M # exact
+    else:
+        log_d = 0  # error < 2.31
+        log_tenpower = div_nearest(f, 10**-p) # error < 0.5
+
+    return _div_nearest(log_tenpower+log_d, 100)
+
+def _dlog(c, e, p):
+    """Given integers c, e and p with c > 0, compute an integer
+    approximation to 10**p * log(c*10**e), with an absolute error of
+    at most 1.  Assumes that c*10**e is not exactly 1."""
+
+    # Increase precision by 2. The precision increase is compensated
+    # for at the end with a division by 100.
+    p += 2
+
+    # rewrite c*10**e as d*10**f with either f >= 0 and 1 <= d <= 10,
+    # or f <= 0 and 0.1 <= d <= 1.  Then we can compute 10**p * log(c*10**e)
+    # as 10**p * log(d) + 10**p*f * log(10).
+    l = len(str(c))
+    f = e+l - (e+l >= 1)
+
+    # compute approximation to 10**p*log(d), with error < 27
+    if p > 0:
+        k = e+p-f
+        if k >= 0:
+            c *= 10**k
+        else:
+            c = _div_nearest(c, 10**-k)  # error of <= 0.5 in c
+
+        # _ilog magnifies existing error in c by a factor of at most 10
+        log_d = _ilog(c, 10**p) # error < 5 + 22 = 27
+    else:
+        # p <= 0: just approximate the whole thing by 0; error < 2.31
+        log_d = 0
+
+    # compute approximation to f*10**p*log(10), with error < 11.
+    if f:
+        extra = len(str(abs(f)))-1
+        if p + extra >= 0:
+            # error in f * _log10_digits(p+extra) < |f| * 1 = |f|
+            # after division, error < |f|/10**extra + 0.5 < 10 + 0.5 < 11
+            f_log_ten = _div_nearest(f*_log10_digits(p+extra), 10**extra)
+        else:
+            f_log_ten = 0
+    else:
+        f_log_ten = 0
+
+    # error in sum < 11+27 = 38; error after division < 0.38 + 0.5 < 1
+    return _div_nearest(f_log_ten + log_d, 100)
+
+class _Log10Memoize(object):
+    """Class to compute, store, and allow retrieval of, digits of the
+    constant log(10) = 2.302585....  This constant is needed by
+    Decimal.ln, Decimal.log10, Decimal.exp and Decimal.__pow__."""
+    def __init__(self):
+        self.digits = "23025850929940456840179914546843642076011014886"
+
+    def getdigits(self, p):
+        """Given an integer p >= 0, return floor(10**p)*log(10).
+
+        For example, self.getdigits(3) returns 2302.
+        """
+        # digits are stored as a string, for quick conversion to
+        # integer in the case that we've already computed enough
+        # digits; the stored digits should always be correct
+        # (truncated, not rounded to nearest).
+        if p < 0:
+            raise ValueError("p should be nonnegative")
+
+        if p >= len(self.digits):
+            # compute p+3, p+6, p+9, ... digits; continue until at
+            # least one of the extra digits is nonzero
+            extra = 3
+            while True:
+                # compute p+extra digits, correct to within 1ulp
+                M = 10**(p+extra+2)
+                digits = str(_div_nearest(_ilog(10*M, M), 100))
+                if digits[-extra:] != '0'*extra:
+                    break
+                extra += 3
+            # keep all reliable digits so far; remove trailing zeros
+            # and next nonzero digit
+            self.digits = digits.rstrip('0')[:-1]
+        return int(self.digits[:p+1])
+
+_log10_digits = _Log10Memoize().getdigits
+
+def _iexp(x, M, L=8):
+    """Given integers x and M, M > 0, such that x/M is small in absolute
+    value, compute an integer approximation to M*exp(x/M).  For 0 <=
+    x/M <= 2.4, the absolute error in the result is bounded by 60 (and
+    is usually much smaller)."""
+
+    # Algorithm: to compute exp(z) for a real number z, first divide z
+    # by a suitable power R of 2 so that |z/2**R| < 2**-L.  Then
+    # compute expm1(z/2**R) = exp(z/2**R) - 1 using the usual Taylor
+    # series
+    #
+    #     expm1(x) = x + x**2/2! + x**3/3! + ...
+    #
+    # Now use the identity
+    #
+    #     expm1(2x) = expm1(x)*(expm1(x)+2)
+    #
+    # R times to compute the sequence expm1(z/2**R),
+    # expm1(z/2**(R-1)), ... , exp(z/2), exp(z).
+
+    # Find R such that x/2**R/M <= 2**-L
+    R = _nbits((long(x)<<L)//M)
+
+    # Taylor series.  (2**L)**T > M
+    T = -int(-10*len(str(M))//(3*L))
+    y = _div_nearest(x, T)
+    Mshift = long(M)<<R
+    for i in xrange(T-1, 0, -1):
+        y = _div_nearest(x*(Mshift + y), Mshift * i)
+
+    # Expansion
+    for k in xrange(R-1, -1, -1):
+        Mshift = long(M)<<(k+2)
+        y = _div_nearest(y*(y+Mshift), Mshift)
+
+    return M+y
+
+def _dexp(c, e, p):
+    """Compute an approximation to exp(c*10**e), with p decimal places of
+    precision.
+
+    Returns integers d, f such that:
+
+      10**(p-1) <= d <= 10**p, and
+      (d-1)*10**f < exp(c*10**e) < (d+1)*10**f
+
+    In other words, d*10**f is an approximation to exp(c*10**e) with p
+    digits of precision, and with an error in d of at most 1.  This is
+    almost, but not quite, the same as the error being < 1ulp: when d
+    = 10**(p-1) the error could be up to 10 ulp."""
+
+    # we'll call iexp with M = 10**(p+2), giving p+3 digits of precision
+    p += 2
+
+    # compute log(10) with extra precision = adjusted exponent of c*10**e
+    extra = max(0, e + len(str(c)) - 1)
+    q = p + extra
+
+    # compute quotient c*10**e/(log(10)) = c*10**(e+q)/(log(10)*10**q),
+    # rounding down
+    shift = e+q
+    if shift >= 0:
+        cshift = c*10**shift
+    else:
+        cshift = c//10**-shift
+    quot, rem = divmod(cshift, _log10_digits(q))
+
+    # reduce remainder back to original precision
+    rem = _div_nearest(rem, 10**extra)
+
+    # error in result of _iexp < 120;  error after division < 0.62
+    return _div_nearest(_iexp(rem, 10**p), 1000), quot - p + 3
+
+def _dpower(xc, xe, yc, ye, p):
+    """Given integers xc, xe, yc and ye representing Decimals x = xc*10**xe and
+    y = yc*10**ye, compute x**y.  Returns a pair of integers (c, e) such that:
+
+      10**(p-1) <= c <= 10**p, and
+      (c-1)*10**e < x**y < (c+1)*10**e
+
+    in other words, c*10**e is an approximation to x**y with p digits
+    of precision, and with an error in c of at most 1.  (This is
+    almost, but not quite, the same as the error being < 1ulp: when c
+    == 10**(p-1) we can only guarantee error < 10ulp.)
+
+    We assume that: x is positive and not equal to 1, and y is nonzero.
+    """
+
+    # Find b such that 10**(b-1) <= |y| <= 10**b
+    b = len(str(abs(yc))) + ye
+
+    # log(x) = lxc*10**(-p-b-1), to p+b+1 places after the decimal point
+    lxc = _dlog(xc, xe, p+b+1)
+
+    # compute product y*log(x) = yc*lxc*10**(-p-b-1+ye) = pc*10**(-p-1)
+    shift = ye-b
+    if shift >= 0:
+        pc = lxc*yc*10**shift
+    else:
+        pc = _div_nearest(lxc*yc, 10**-shift)
+
+    if pc == 0:
+        # we prefer a result that isn't exactly 1; this makes it
+        # easier to compute a correctly rounded result in __pow__
+        if ((len(str(xc)) + xe >= 1) == (yc > 0)): # if x**y > 1:
+            coeff, exp = 10**(p-1)+1, 1-p
+        else:
+            coeff, exp = 10**p-1, -p
+    else:
+        coeff, exp = _dexp(pc, -(p+1), p+1)
+        coeff = _div_nearest(coeff, 10)
+        exp += 1
+
+    return coeff, exp
+
+def _log10_lb(c, correction = {
+        '1': 100, '2': 70, '3': 53, '4': 40, '5': 31,
+        '6': 23, '7': 16, '8': 10, '9': 5}):
+    """Compute a lower bound for 100*log10(c) for a positive integer c."""
+    if c <= 0:
+        raise ValueError("The argument to _log10_lb should be nonnegative.")
+    str_c = str(c)
+    return 100*len(str_c) - correction[str_c[0]]
+
+##### Helper Functions ####################################################
+
+def _convert_other(other, raiseit=False):
     """Convert other to Decimal.
 
     Verifies that it's ok to use in an implicit construction.
@@ -2969,56 +5071,11 @@
         return other
     if isinstance(other, (int, long)):
         return Decimal(other)
+    if raiseit:
+        raise TypeError("Unable to convert %s to Decimal" % other)
     return NotImplemented
 
-_infinity_map = {
-    'inf' : 1,
-    'infinity' : 1,
-    '+inf' : 1,
-    '+infinity' : 1,
-    '-inf' : -1,
-    '-infinity' : -1
-}
-
-def _isinfinity(num):
-    """Determines whether a string or float is infinity.
-
-    +1 for negative infinity; 0 for finite ; +1 for positive infinity
-    """
-    num = str(num).lower()
-    return _infinity_map.get(num, 0)
-
-def _isnan(num):
-    """Determines whether a string or float is NaN
-
-    (1, sign, diagnostic info as string) => NaN
-    (2, sign, diagnostic info as string) => sNaN
-    0 => not a NaN
-    """
-    num = str(num).lower()
-    if not num:
-        return 0
-
-    #get the sign, get rid of trailing [+-]
-    sign = 0
-    if num[0] == '+':
-        num = num[1:]
-    elif num[0] == '-':  #elif avoids '+-nan'
-        num = num[1:]
-        sign = 1
-
-    if num.startswith('nan'):
-        if len(num) > 3 and not num[3:].isdigit(): #diagnostic info
-            return 0
-        return (1, sign, num[3:].lstrip('0'))
-    if num.startswith('snan'):
-        if len(num) > 4 and not num[4:].isdigit():
-            return 0
-        return (2, sign, num[4:].lstrip('0'))
-    return 0
-
-
-##### Setup Specific Contexts ################################
+##### Setup Specific Contexts ############################################
 
 # The default context prototype used by Context()
 # Is mutable, so that new contexts can have different default values
@@ -3027,7 +5084,6 @@
         prec=28, rounding=ROUND_HALF_EVEN,
         traps=[DivisionByZero, Overflow, InvalidOperation],
         flags=[],
-        _rounding_decision=ALWAYS_ROUND,
         Emax=999999999,
         Emin=-999999999,
         capitals=1
@@ -3051,85 +5107,62 @@
 )
 
 
-##### Useful Constants (internal use only) ####################
-
-#Reusable defaults
-Inf = Decimal('Inf')
-negInf = Decimal('-Inf')
-
-#Infsign[sign] is infinity w/ that sign
-Infsign = (Inf, negInf)
-
-NaN = Decimal('NaN')
-
-
-##### crud for parsing strings #################################
+##### crud for parsing strings #############################################
 import re
 
-# There's an optional sign at the start, and an optional exponent
-# at the end.  The exponent has an optional sign and at least one
-# digit.  In between, must have either at least one digit followed
-# by an optional fraction, or a decimal point followed by at least
-# one digit.  Yuck.
+# Regular expression used for parsing numeric strings.  Additional
+# comments:
+#
+# 1. Uncomment the two '\s*' lines to allow leading and/or trailing
+# whitespace.  But note that the specification disallows whitespace in
+# a numeric string.
+#
+# 2. For finite numbers (not infinities and NaNs) the body of the
+# number between the optional sign and the optional exponent must have
+# at least one decimal digit, possibly after the decimal point.  The
+# lookahead expression '(?=\d|\.\d)' checks this.
+#
+# As the flag UNICODE is not enabled here, we're explicitly avoiding any
+# other meaning for \d than the numbers [0-9].
 
-_parser = re.compile(r"""
+import re
+_parser = re.compile(r"""     # A numeric string consists of:
 #    \s*
-    (?P<sign>[-+])?
+    (?P<sign>[-+])?           # an optional sign, followed by either...
     (
-        (?P<int>\d+) (\. (?P<frac>\d*))?
+        (?=\d|\.\d)           # ...a number (with at least one digit)
+        (?P<int>\d*)          # consisting of a (possibly empty) integer part
+        (\.(?P<frac>\d*))?    # followed by an optional fractional part
+        (E(?P<exp>[-+]?\d+))? # followed by an optional exponent, or...
     |
-        \. (?P<onlyfrac>\d+)
+        Inf(inity)?           # ...an infinity, or...
+    |
+        (?P<signal>s)?        # ...an (optionally signaling)
+        NaN                   # NaN
+        (?P<diag>\d*)         # with (possibly empty) diagnostic information.
     )
-    ([eE](?P<exp>[-+]? \d+))?
 #    \s*
     $
-""", re.VERBOSE).match #Uncomment the \s* to allow leading or trailing spaces.
+""", re.VERBOSE | re.IGNORECASE).match
 
+_all_zeros = re.compile('0*$').match
+_exact_half = re.compile('50*$').match
 del re
 
-# return sign, n, p s.t. float string value == -1**sign * n * 10**p exactly
 
-def _string2exact(s):
-    m = _parser(s)
-    if m is None:
-        raise ValueError("invalid literal for Decimal: %r" % s)
+##### Useful Constants (internal use only) ################################
 
-    if m.group('sign') == "-":
-        sign = 1
-    else:
-        sign = 0
+# Reusable defaults
+Inf = Decimal('Inf')
+negInf = Decimal('-Inf')
+NaN = Decimal('NaN')
+Dec_0 = Decimal(0)
+Dec_p1 = Decimal(1)
+Dec_n1 = Decimal(-1)
 
-    exp = m.group('exp')
-    if exp is None:
-        exp = 0
-    else:
-        exp = int(exp)
+# Infsign[sign] is infinity w/ that sign
+Infsign = (Inf, negInf)
 
-    intpart = m.group('int')
-    if intpart is None:
-        intpart = ""
-        fracpart = m.group('onlyfrac')
-    else:
-        fracpart = m.group('frac')
-        if fracpart is None:
-            fracpart = ""
-
-    exp -= len(fracpart)
-
-    mantissa = intpart + fracpart
-    tmp = map(int, mantissa)
-    backup = tmp
-    while tmp and tmp[0] == 0:
-        del tmp[0]
-
-    # It's a zero
-    if not tmp:
-        if backup:
-            return (sign, tuple(backup), exp)
-        return (sign, (0,), exp)
-    mantissa = tuple(tmp)
-
-    return (sign, mantissa, exp)
 
 
 if __name__ == '__main__':
diff --git a/Lib/test/decimaltestdata/abs.decTest b/Lib/test/decimaltestdata/abs.decTest
index 3f0849a..39f2dca 100644
--- a/Lib/test/decimaltestdata/abs.decTest
+++ b/Lib/test/decimaltestdata/abs.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- abs.decTest -- decimal absolute value                              --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- This set of tests primarily tests the existence of the operator.
 -- Additon, subtraction, rounding, and more overflows are tested
@@ -106,9 +106,9 @@
 absx215 abs  0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
 absx216 abs  0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
 absx217 abs  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-absx218 abs  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow
-absx219 abs  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
-absx220 abs  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
+absx218 abs  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+absx219 abs  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+absx220 abs  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 absx230 abs -1.00E-999        ->   1.00E-999
 absx231 abs -0.1E-999         ->   1E-1000   Subnormal
@@ -119,9 +119,9 @@
 absx235 abs -0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
 absx236 abs -0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
 absx237 abs -0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-absx238 abs -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow
-absx239 abs -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
-absx240 abs -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
+absx238 abs -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+absx239 abs -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+absx240 abs -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 -- long operand tests
 maxexponent: 999
diff --git a/Lib/test/decimaltestdata/add.decTest b/Lib/test/decimaltestdata/add.decTest
index 2d3efab..8db222a 100644
--- a/Lib/test/decimaltestdata/add.decTest
+++ b/Lib/test/decimaltestdata/add.decTest
@@ -1,6 +1,6 @@
-------------------------------------------------------------------------
+------/cancell----------------------------------------------------------
 -- add.decTest -- decimal addition                                    --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 precision:   9
 rounding:    half_up
@@ -86,6 +86,7 @@
 addx049 add '10000e+9'  '7000' -> '10000000007000'
 addx050 add '10000e+9'  '70000' -> '10000000070000'
 addx051 add '10000e+9'  '700000' -> '10000000700000'
+addx052 add '10000e+9'  '7000000' -> '10000007000000'
 
 -- examples from decarith
 addx053 add '12' '7.00' -> '19.00'
@@ -216,7 +217,7 @@
 addx167 add '1.11'  '7E+12' -> '7000000000001.11'
 addx168 add '-1'    '7E+12' -> '6999999999999'
 
---            123456789012345      123456789012345      1 23456789012345
+--             123456789012345      123456789012345      1 23456789012345
 addx170 add '0.444444444444444'  '0.555555555555563' -> '1.00000000000001' Inexact Rounded
 addx171 add '0.444444444444444'  '0.555555555555562' -> '1.00000000000001' Inexact Rounded
 addx172 add '0.444444444444444'  '0.555555555555561' -> '1.00000000000001' Inexact Rounded
@@ -396,6 +397,7 @@
 addx361  add 0E+50 10000E+1  -> 1.0000E+5
 addx362  add 10000E+1 0E-50  -> 100000.0  Rounded
 addx363  add 10000E+1 10000E-50  -> 100000.0  Rounded Inexact
+addx364  add 9.999999E+92 -9.999999E+92 -> 0E+86
 
 -- a curiosity from JSR 13 testing
 rounding:    half_down
@@ -568,7 +570,7 @@
 rounding:     down
 addx561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
 addx562 add      0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
--- and using decimal64 bounds...
+-- and using decimal64 bounds (see also ddadd.decTest)
 precision:    16
 maxExponent: +384
 minExponent: -383
@@ -576,6 +578,7 @@
 addx563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
 addx564 add      0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
 
+
 -- some more residue effects with extreme rounding
 precision:   9
 rounding: half_up
@@ -955,26 +958,26 @@
 addx912 add  0.10E-999   0    ->   1.0E-1000 Subnormal
 addx913 add  0.100E-999  0    ->   1.0E-1000 Subnormal Rounded
 addx914 add  0.01E-999   0    ->   1E-1001   Subnormal
--- next is rounded to Emin
+-- next is rounded to Nmin
 addx915 add  0.999E-999  0    ->   1.00E-999 Inexact Rounded Subnormal Underflow
 addx916 add  0.099E-999  0    ->   1.0E-1000 Inexact Rounded Subnormal Underflow
 addx917 add  0.009E-999  0    ->   1E-1001   Inexact Rounded Subnormal Underflow
-addx918 add  0.001E-999  0    ->   0E-1001   Inexact Rounded Subnormal Underflow
-addx919 add  0.0009E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow
-addx920 add  0.0001E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow
+addx918 add  0.001E-999  0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+addx919 add  0.0009E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+addx920 add  0.0001E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 addx930 add -1.00E-999   0    ->  -1.00E-999
 addx931 add -0.1E-999    0    ->  -1E-1000   Subnormal
 addx932 add -0.10E-999   0    ->  -1.0E-1000 Subnormal
 addx933 add -0.100E-999  0    ->  -1.0E-1000 Subnormal Rounded
 addx934 add -0.01E-999   0    ->  -1E-1001   Subnormal
--- next is rounded to Emin
+-- next is rounded to Nmin
 addx935 add -0.999E-999  0    ->  -1.00E-999 Inexact Rounded Subnormal Underflow
 addx936 add -0.099E-999  0    ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
 addx937 add -0.009E-999  0    ->  -1E-1001   Inexact Rounded Subnormal Underflow
-addx938 add -0.001E-999  0    ->  -0E-1001   Inexact Rounded Subnormal Underflow
-addx939 add -0.0009E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow
-addx940 add -0.0001E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow
+addx938 add -0.001E-999  0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+addx939 add -0.0009E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+addx940 add -0.0001E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 -- some non-zero subnormal adds
 addx950 add  1.00E-999    0.1E-999  ->   1.10E-999
@@ -995,12 +998,43 @@
 addx964 add  0.100E-999  -0.1E-999  ->   0E-1001    Clamped
 addx965 add  0.01E-999   -0.1E-999  ->   -9E-1001   Subnormal
 addx966 add  0.999E-999  -0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
-addx967 add  0.099E-999  -0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow
+addx967 add  0.099E-999  -0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow Clamped
 addx968 add  0.009E-999  -0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
 addx969 add  0.001E-999  -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
 addx970 add  0.0009E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
 addx971 add  0.0001E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
 
+-- some 'real' numbers
+maxExponent: 384
+minExponent: -383
+precision: 8
+addx566 add 99999061735E-394  0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal
+precision: 7
+addx567 add 99999061735E-394  0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal
+precision: 6
+addx568 add 99999061735E-394  0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal
+
+-- now the case where we can get underflow but the result is normal
+-- [note this can't happen if the operands are also bounded, as we
+-- cannot represent 1E-399, for example]
+precision:   16
+rounding:    half_up
+maxExponent: 384
+minExponent: -383
+
+addx571 add       1E-383       0  -> 1E-383
+addx572 add       1E-384       0  -> 1E-384   Subnormal
+addx573 add       1E-383  1E-384  -> 1.1E-383
+addx574 subtract  1E-383  1E-384  ->   9E-384 Subnormal
+
+-- Here we explore the boundary of rounding a subnormal to Nmin
+addx575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
+addx576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
+addx577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+addx578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+addx579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+addx580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+
 -- check overflow edge case
 precision:   7
 rounding:    half_up
@@ -1088,6 +1122,15 @@
 addx1117 add -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
 addx1118 add -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
 addx1119 add -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
+addx1120 add +1e-383 -1e+2   -> -99.99999999999999 Rounded Inexact
+addx1121 add +1e-383 -1e+1   -> -9.999999999999999  Rounded Inexact
+addx1123 add +1e-383    -1   -> -0.9999999999999999  Rounded Inexact
+addx1124 add +1e-383 -1e-1   -> -0.09999999999999999  Rounded Inexact
+addx1125 add +1e-383 -1e-2   -> -0.009999999999999999  Rounded Inexact
+addx1126 add +1e-383 -1e-3   -> -0.0009999999999999999  Rounded Inexact
+addx1127 add +1e-383 -1e-4   -> -0.00009999999999999999  Rounded Inexact
+addx1128 add +1e-383 -1e-5   -> -0.000009999999999999999  Rounded Inexact
+addx1129 add +1e-383 -1e-6   -> -9.999999999999999E-7  Rounded Inexact
 
 rounding:     down
 precision:    7
@@ -1106,21 +1149,1567 @@
 addx1139 add       1000E-101 -1e-200  ->  9.99E-99   Subnormal Inexact Rounded Underflow
 addx1140 add        100E-101 -1e-200  ->  9.9E-100   Subnormal Inexact Rounded Underflow
 addx1141 add         10E-101 -1e-200  ->  9E-101     Subnormal Inexact Rounded Underflow
-addx1142 add          1E-101 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow
-addx1143 add          0E-101 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow
-addx1144 add          1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow
+addx1142 add          1E-101 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
+addx1143 add          0E-101 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped
+addx1144 add          1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
 
 addx1151 add      10000E-102 -1e-200  ->  9.99E-99  Subnormal Inexact Rounded Underflow
 addx1152 add       1000E-102 -1e-200  ->  9.9E-100  Subnormal Inexact Rounded Underflow
 addx1153 add        100E-102 -1e-200  ->  9E-101   Subnormal Inexact Rounded Underflow
-addx1154 add         10E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow
-addx1155 add          1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow
-addx1156 add          0E-102 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow
-addx1157 add          1E-103 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow
+addx1154 add         10E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
+addx1155 add          1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
+addx1156 add          0E-102 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped
+addx1157 add          1E-103 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
 
-addx1160 add        100E-105 -1e-101  -> -0E-101 Subnormal Inexact Rounded Underflow
-addx1161 add        100E-105 -1e-201  ->  0E-101 Subnormal Inexact Rounded Underflow
+addx1160 add        100E-105 -1e-101  -> -0E-101 Subnormal Inexact Rounded Underflow Clamped
+addx1161 add        100E-105 -1e-201  ->  0E-101 Subnormal Inexact Rounded Underflow Clamped
 
+-- tests based on Gunnar Degnbol's edge case
+precision:   15
+rounding:    half_up
+maxExponent: 384
+minexponent: -383
+
+addx1200 add 1E15  -0.5                 ->  1.00000000000000E+15 Inexact Rounded
+addx1201 add 1E15  -0.50                ->  1.00000000000000E+15 Inexact Rounded
+addx1210 add 1E15  -0.51                ->  999999999999999      Inexact Rounded
+addx1211 add 1E15  -0.501               ->  999999999999999      Inexact Rounded
+addx1212 add 1E15  -0.5001              ->  999999999999999      Inexact Rounded
+addx1213 add 1E15  -0.50001             ->  999999999999999      Inexact Rounded
+addx1214 add 1E15  -0.500001            ->  999999999999999      Inexact Rounded
+addx1215 add 1E15  -0.5000001           ->  999999999999999      Inexact Rounded
+addx1216 add 1E15  -0.50000001          ->  999999999999999      Inexact Rounded
+addx1217 add 1E15  -0.500000001         ->  999999999999999      Inexact Rounded
+addx1218 add 1E15  -0.5000000001        ->  999999999999999      Inexact Rounded
+addx1219 add 1E15  -0.50000000001       ->  999999999999999      Inexact Rounded
+addx1220 add 1E15  -0.500000000001      ->  999999999999999      Inexact Rounded
+addx1221 add 1E15  -0.5000000000001     ->  999999999999999      Inexact Rounded
+addx1222 add 1E15  -0.50000000000001    ->  999999999999999      Inexact Rounded
+addx1223 add 1E15  -0.500000000000001   ->  999999999999999      Inexact Rounded
+addx1224 add 1E15  -0.5000000000000001  ->  999999999999999      Inexact Rounded
+addx1225 add 1E15  -0.5000000000000000  ->  1.00000000000000E+15 Inexact Rounded
+addx1230 add 1E15  -5000000.000000001   ->  999999995000000      Inexact Rounded
+
+precision:   16
+
+addx1300 add 1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
+addx1310 add 1E16  -0.51                ->  9999999999999999      Inexact Rounded
+addx1311 add 1E16  -0.501               ->  9999999999999999      Inexact Rounded
+addx1312 add 1E16  -0.5001              ->  9999999999999999      Inexact Rounded
+addx1313 add 1E16  -0.50001             ->  9999999999999999      Inexact Rounded
+addx1314 add 1E16  -0.500001            ->  9999999999999999      Inexact Rounded
+addx1315 add 1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
+addx1316 add 1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
+addx1317 add 1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
+addx1318 add 1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
+addx1319 add 1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
+addx1320 add 1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
+addx1321 add 1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
+addx1322 add 1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
+addx1323 add 1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
+addx1324 add 1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
+addx1325 add 1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
+addx1326 add 1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
+addx1327 add 1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
+addx1328 add 1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
+addx1329 add 1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
+addx1330 add 1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
+addx1331 add 1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
+addx1332 add 1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
+addx1333 add 1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
+addx1334 add 1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
+addx1335 add 1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
+addx1336 add 1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
+addx1337 add 1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
+addx1338 add 1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
+addx1339 add 1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
+
+addx1340 add 1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
+addx1341 add 1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
+
+addx1349 add 9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
+addx1350 add 9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
+addx1351 add 9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
+addx1352 add 9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
+addx1353 add 9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
+addx1354 add 9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
+addx1355 add 9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
+addx1356 add 9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
+addx1357 add 9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
+addx1358 add 9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
+addx1359 add 9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
+addx1360 add 9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
+addx1361 add 9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
+addx1362 add 9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
+addx1363 add 9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
+addx1364 add 9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
+addx1365 add 9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
+addx1367 add 9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
+addx1368 add 9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
+addx1369 add 9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
+addx1370 add 9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
+addx1371 add 9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
+addx1372 add 9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
+addx1373 add 9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
+addx1374 add 9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
+addx1375 add 9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
+addx1376 add 9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
+addx1377 add 9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
+addx1378 add 9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
+addx1379 add 9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
+addx1380 add 9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
+addx1381 add 9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
+addx1382 add 9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
+addx1383 add 9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
+addx1384 add 9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
+addx1385 add 9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
+addx1386 add 9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
+addx1387 add 9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
+addx1388 add 9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
+addx1389 add 9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
+addx1390 add 9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
+addx1391 add 9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
+addx1392 add 9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
+addx1393 add 9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
+addx1394 add 9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
+addx1395 add 9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
+addx1396 add 9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
+
+-- More GD edge cases, where difference between the unadjusted
+-- exponents is larger than the maximum precision and one side is 0
+precision:   15
+rounding:    half_up
+maxExponent: 384
+minexponent: -383
+
+addx1400 add  0 1.23456789012345     -> 1.23456789012345
+addx1401 add  0 1.23456789012345E-1  -> 0.123456789012345
+addx1402 add  0 1.23456789012345E-2  -> 0.0123456789012345
+addx1403 add  0 1.23456789012345E-3  -> 0.00123456789012345
+addx1404 add  0 1.23456789012345E-4  -> 0.000123456789012345
+addx1405 add  0 1.23456789012345E-5  -> 0.0000123456789012345
+addx1406 add  0 1.23456789012345E-6  -> 0.00000123456789012345
+addx1407 add  0 1.23456789012345E-7  -> 1.23456789012345E-7
+addx1408 add  0 1.23456789012345E-8  -> 1.23456789012345E-8
+addx1409 add  0 1.23456789012345E-9  -> 1.23456789012345E-9
+addx1410 add  0 1.23456789012345E-10 -> 1.23456789012345E-10
+addx1411 add  0 1.23456789012345E-11 -> 1.23456789012345E-11
+addx1412 add  0 1.23456789012345E-12 -> 1.23456789012345E-12
+addx1413 add  0 1.23456789012345E-13 -> 1.23456789012345E-13
+addx1414 add  0 1.23456789012345E-14 -> 1.23456789012345E-14
+addx1415 add  0 1.23456789012345E-15 -> 1.23456789012345E-15
+addx1416 add  0 1.23456789012345E-16 -> 1.23456789012345E-16
+addx1417 add  0 1.23456789012345E-17 -> 1.23456789012345E-17
+addx1418 add  0 1.23456789012345E-18 -> 1.23456789012345E-18
+addx1419 add  0 1.23456789012345E-19 -> 1.23456789012345E-19
+
+-- same, precision 16..
+precision:   16
+addx1420 add  0 1.123456789012345     -> 1.123456789012345
+addx1421 add  0 1.123456789012345E-1  -> 0.1123456789012345
+addx1422 add  0 1.123456789012345E-2  -> 0.01123456789012345
+addx1423 add  0 1.123456789012345E-3  -> 0.001123456789012345
+addx1424 add  0 1.123456789012345E-4  -> 0.0001123456789012345
+addx1425 add  0 1.123456789012345E-5  -> 0.00001123456789012345
+addx1426 add  0 1.123456789012345E-6  -> 0.000001123456789012345
+addx1427 add  0 1.123456789012345E-7  -> 1.123456789012345E-7
+addx1428 add  0 1.123456789012345E-8  -> 1.123456789012345E-8
+addx1429 add  0 1.123456789012345E-9  -> 1.123456789012345E-9
+addx1430 add  0 1.123456789012345E-10 -> 1.123456789012345E-10
+addx1431 add  0 1.123456789012345E-11 -> 1.123456789012345E-11
+addx1432 add  0 1.123456789012345E-12 -> 1.123456789012345E-12
+addx1433 add  0 1.123456789012345E-13 -> 1.123456789012345E-13
+addx1434 add  0 1.123456789012345E-14 -> 1.123456789012345E-14
+addx1435 add  0 1.123456789012345E-15 -> 1.123456789012345E-15
+addx1436 add  0 1.123456789012345E-16 -> 1.123456789012345E-16
+addx1437 add  0 1.123456789012345E-17 -> 1.123456789012345E-17
+addx1438 add  0 1.123456789012345E-18 -> 1.123456789012345E-18
+addx1439 add  0 1.123456789012345E-19 -> 1.123456789012345E-19
+
+-- same, reversed 0
+addx1440 add 1.123456789012345     0 -> 1.123456789012345
+addx1441 add 1.123456789012345E-1  0 -> 0.1123456789012345
+addx1442 add 1.123456789012345E-2  0 -> 0.01123456789012345
+addx1443 add 1.123456789012345E-3  0 -> 0.001123456789012345
+addx1444 add 1.123456789012345E-4  0 -> 0.0001123456789012345
+addx1445 add 1.123456789012345E-5  0 -> 0.00001123456789012345
+addx1446 add 1.123456789012345E-6  0 -> 0.000001123456789012345
+addx1447 add 1.123456789012345E-7  0 -> 1.123456789012345E-7
+addx1448 add 1.123456789012345E-8  0 -> 1.123456789012345E-8
+addx1449 add 1.123456789012345E-9  0 -> 1.123456789012345E-9
+addx1450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10
+addx1451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11
+addx1452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12
+addx1453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13
+addx1454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14
+addx1455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15
+addx1456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16
+addx1457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17
+addx1458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18
+addx1459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19
+
+-- same, Es on the 0
+addx1460 add 1.123456789012345  0E-0   -> 1.123456789012345
+addx1461 add 1.123456789012345  0E-1   -> 1.123456789012345
+addx1462 add 1.123456789012345  0E-2   -> 1.123456789012345
+addx1463 add 1.123456789012345  0E-3   -> 1.123456789012345
+addx1464 add 1.123456789012345  0E-4   -> 1.123456789012345
+addx1465 add 1.123456789012345  0E-5   -> 1.123456789012345
+addx1466 add 1.123456789012345  0E-6   -> 1.123456789012345
+addx1467 add 1.123456789012345  0E-7   -> 1.123456789012345
+addx1468 add 1.123456789012345  0E-8   -> 1.123456789012345
+addx1469 add 1.123456789012345  0E-9   -> 1.123456789012345
+addx1470 add 1.123456789012345  0E-10  -> 1.123456789012345
+addx1471 add 1.123456789012345  0E-11  -> 1.123456789012345
+addx1472 add 1.123456789012345  0E-12  -> 1.123456789012345
+addx1473 add 1.123456789012345  0E-13  -> 1.123456789012345
+addx1474 add 1.123456789012345  0E-14  -> 1.123456789012345
+addx1475 add 1.123456789012345  0E-15  -> 1.123456789012345
+-- next four flag Rounded because the 0 extends the result
+addx1476 add 1.123456789012345  0E-16  -> 1.123456789012345 Rounded
+addx1477 add 1.123456789012345  0E-17  -> 1.123456789012345 Rounded
+addx1478 add 1.123456789012345  0E-18  -> 1.123456789012345 Rounded
+addx1479 add 1.123456789012345  0E-19  -> 1.123456789012345 Rounded
+
+-- sum of two opposite-sign operands is exactly 0 and floor => -0
+precision:   16
+maxExponent: 384
+minexponent: -383
+
+rounding:    half_up
+-- exact zeros from zeros
+addx1500 add  0        0E-19  ->  0E-19
+addx1501 add -0        0E-19  ->  0E-19
+addx1502 add  0       -0E-19  ->  0E-19
+addx1503 add -0       -0E-19  -> -0E-19
+addx1504 add  0E-400   0E-19  ->  0E-398 Clamped
+addx1505 add -0E-400   0E-19  ->  0E-398 Clamped
+addx1506 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx1507 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx1511 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1512 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1513 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1514 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx1515 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1516 add -1E-401   1E-401 ->  0E-398 Clamped
+addx1517 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx1518 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+rounding:    half_down
+-- exact zeros from zeros
+addx1520 add  0        0E-19  ->  0E-19
+addx1521 add -0        0E-19  ->  0E-19
+addx1522 add  0       -0E-19  ->  0E-19
+addx1523 add -0       -0E-19  -> -0E-19
+addx1524 add  0E-400   0E-19  ->  0E-398 Clamped
+addx1525 add -0E-400   0E-19  ->  0E-398 Clamped
+addx1526 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx1527 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx1531 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1532 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1533 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1534 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx1535 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1536 add -1E-401   1E-401 ->  0E-398 Clamped
+addx1537 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx1538 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+rounding:    half_even
+-- exact zeros from zeros
+addx1540 add  0        0E-19  ->  0E-19
+addx1541 add -0        0E-19  ->  0E-19
+addx1542 add  0       -0E-19  ->  0E-19
+addx1543 add -0       -0E-19  -> -0E-19
+addx1544 add  0E-400   0E-19  ->  0E-398 Clamped
+addx1545 add -0E-400   0E-19  ->  0E-398 Clamped
+addx1546 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx1547 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx1551 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1552 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1553 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1554 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx1555 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1556 add -1E-401   1E-401 ->  0E-398 Clamped
+addx1557 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx1558 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+rounding:    up
+-- exact zeros from zeros
+addx1560 add  0        0E-19  ->  0E-19
+addx1561 add -0        0E-19  ->  0E-19
+addx1562 add  0       -0E-19  ->  0E-19
+addx1563 add -0       -0E-19  -> -0E-19
+addx1564 add  0E-400   0E-19  ->  0E-398 Clamped
+addx1565 add -0E-400   0E-19  ->  0E-398 Clamped
+addx1566 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx1567 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx1571 add  1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx1572 add -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx1573 add  1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
+addx1574 add -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
+-- some exact zeros from non-zeros
+addx1575 add  1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx1576 add -1E-401   1E-401 ->  0E-398 Clamped
+addx1577 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx1578 add -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
+
+rounding:    down
+-- exact zeros from zeros
+addx1580 add  0        0E-19  ->  0E-19
+addx1581 add -0        0E-19  ->  0E-19
+addx1582 add  0       -0E-19  ->  0E-19
+addx1583 add -0       -0E-19  -> -0E-19
+addx1584 add  0E-400   0E-19  ->  0E-398 Clamped
+addx1585 add -0E-400   0E-19  ->  0E-398 Clamped
+addx1586 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx1587 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx1591 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1592 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1593 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1594 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx1595 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1596 add -1E-401   1E-401 ->  0E-398 Clamped
+addx1597 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx1598 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+rounding:    ceiling
+-- exact zeros from zeros
+addx1600 add  0        0E-19  ->  0E-19
+addx1601 add -0        0E-19  ->  0E-19
+addx1602 add  0       -0E-19  ->  0E-19
+addx1603 add -0       -0E-19  -> -0E-19
+addx1604 add  0E-400   0E-19  ->  0E-398 Clamped
+addx1605 add -0E-400   0E-19  ->  0E-398 Clamped
+addx1606 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx1607 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx1611 add  1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx1612 add -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx1613 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1614 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx1615 add  1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx1616 add -1E-401   1E-401 ->  0E-398 Clamped
+addx1617 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx1618 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+-- and the extra-special ugly case; unusual minuses marked by -- *
+rounding:    floor
+-- exact zeros from zeros
+addx1620 add  0        0E-19  ->  0E-19
+addx1621 add -0        0E-19  -> -0E-19           -- *
+addx1622 add  0       -0E-19  -> -0E-19           -- *
+addx1623 add -0       -0E-19  -> -0E-19
+addx1624 add  0E-400   0E-19  ->  0E-398 Clamped
+addx1625 add -0E-400   0E-19  -> -0E-398 Clamped  -- *
+addx1626 add  0E-400  -0E-19  -> -0E-398 Clamped  -- *
+addx1627 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx1631 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1632 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1633 add  1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
+addx1634 add -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
+-- some exact zeros from non-zeros
+addx1635 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx1636 add -1E-401   1E-401 -> -0E-398 Clamped  -- *
+addx1637 add  1E-401  -1E-401 -> -0E-398 Clamped  -- *
+addx1638 add -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
+
+-- BigDecimal problem testcases 2006.01.23
+precision:   16
+maxExponent: 384
+minexponent: -383
+
+rounding:  down
+precision: 7
+addx1651 add  10001E+2  -2E+1 -> 1.00008E+6
+precision: 6
+addx1652 add  10001E+2  -2E+1 -> 1.00008E+6
+precision: 5
+addx1653 add  10001E+2  -2E+1 -> 1.0000E+6   Inexact Rounded
+precision: 4
+addx1654 add  10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded
+precision: 3
+addx1655 add  10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded
+precision: 2
+addx1656 add  10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded
+precision: 1
+addx1657 add  10001E+2  -2E+1 -> 1E+6        Inexact Rounded
+
+rounding:  half_even
+precision: 7
+addx1661 add  10001E+2  -2E+1 -> 1.00008E+6
+precision: 6
+addx1662 add  10001E+2  -2E+1 -> 1.00008E+6
+precision: 5
+addx1663 add  10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded
+precision: 4
+addx1664 add  10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded
+precision: 3
+addx1665 add  10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded
+precision: 2
+addx1666 add  10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded
+precision: 1
+addx1667 add  10001E+2  -2E+1 -> 1E+6        Inexact Rounded
+
+rounding:  up
+precision: 7
+addx1671 add  10001E+2  -2E+1 -> 1.00008E+6
+precision: 6
+addx1672 add  10001E+2  -2E+1 -> 1.00008E+6
+precision: 5
+addx1673 add  10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded
+precision: 4
+addx1674 add  10001E+2  -2E+1 -> 1.001E+6    Inexact Rounded
+precision: 3
+addx1675 add  10001E+2  -2E+1 -> 1.01E+6     Inexact Rounded
+precision: 2
+addx1676 add  10001E+2  -2E+1 -> 1.1E+6      Inexact Rounded
+precision: 1
+addx1677 add  10001E+2  -2E+1 -> 2E+6        Inexact Rounded
+
+precision:   34
+rounding:    half_up
+maxExponent: 6144
+minExponent: -6143
+-- Examples from SQL proposal (Krishna Kulkarni)
+addx1701  add 130E-2    120E-2    -> 2.50
+addx1702  add 130E-2    12E-1     -> 2.50
+addx1703  add 130E-2    1E0       -> 2.30
+addx1704  add 1E2       1E4       -> 1.01E+4
+addx1705  subtract 130E-2  120E-2 -> 0.10
+addx1706  subtract 130E-2  12E-1  -> 0.10
+addx1707  subtract 130E-2  1E0    -> 0.30
+addx1708  subtract 1E2     1E4    -> -9.9E+3
+
+------------------------------------------------------------------------
+-- Same as above, using decimal64 default parameters                  --
+------------------------------------------------------------------------
+precision:   16
+rounding:    half_even
+maxExponent: 384
+minexponent: -383
+
+-- [first group are 'quick confidence check']
+addx6001 add 1       1       ->  2
+addx6002 add 2       3       ->  5
+addx6003 add '5.75'  '3.3'   ->  9.05
+addx6004 add '5'     '-3'    ->  2
+addx6005 add '-5'    '-3'    ->  -8
+addx6006 add '-7'    '2.5'   ->  -4.5
+addx6007 add '0.7'   '0.3'   ->  1.0
+addx6008 add '1.25'  '1.25'  ->  2.50
+addx6009 add '1.23456789'  '1.00000000' -> '2.23456789'
+addx6010 add '1.23456789'  '1.00000011' -> '2.23456800'
+
+addx6011 add '0.44444444444444444'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded
+addx6012 add '0.44444444444444440'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded
+addx6013 add '0.44444444444444444'  '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded
+addx6014 add '0.444444444444444449'    '0' -> '0.4444444444444444' Inexact Rounded
+addx6015 add '0.4444444444444444499'   '0' -> '0.4444444444444444' Inexact Rounded
+addx6016 add '0.44444444444444444999'  '0' -> '0.4444444444444444' Inexact Rounded
+addx6017 add '0.44444444444444445000'  '0' -> '0.4444444444444444' Inexact Rounded
+addx6018 add '0.44444444444444445001'  '0' -> '0.4444444444444445' Inexact Rounded
+addx6019 add '0.4444444444444444501'   '0' -> '0.4444444444444445' Inexact Rounded
+addx6020 add '0.444444444444444451'    '0' -> '0.4444444444444445' Inexact Rounded
+
+addx6021 add 0 1 -> 1
+addx6022 add 1 1 -> 2
+addx6023 add 2 1 -> 3
+addx6024 add 3 1 -> 4
+addx6025 add 4 1 -> 5
+addx6026 add 5 1 -> 6
+addx6027 add 6 1 -> 7
+addx6028 add 7 1 -> 8
+addx6029 add 8 1 -> 9
+addx6030 add 9 1 -> 10
+
+-- some carrying effects
+addx6031 add '0.9998'  '0.0000' -> '0.9998'
+addx6032 add '0.9998'  '0.0001' -> '0.9999'
+addx6033 add '0.9998'  '0.0002' -> '1.0000'
+addx6034 add '0.9998'  '0.0003' -> '1.0001'
+
+addx6035 add '70'      '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
+addx6036 add '700'     '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
+addx6037 add '7000'    '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
+addx6038 add '70000'   '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
+addx6039 add '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded
+
+-- symmetry:
+addx6040 add '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded
+addx6041 add '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded
+addx6042 add '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded
+addx6044 add '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded
+addx6045 add '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded
+
+addx6046 add '10000e+9'  '7' -> '10000000000007'
+addx6047 add '10000e+9'  '70' -> '10000000000070'
+addx6048 add '10000e+9'  '700' -> '10000000000700'
+addx6049 add '10000e+9'  '7000' -> '10000000007000'
+addx6050 add '10000e+9'  '70000' -> '10000000070000'
+addx6051 add '10000e+9'  '700000' -> '10000000700000'
+
+-- examples from decarith
+addx6053 add '12' '7.00' -> '19.00'
+addx6054 add '1.3' '-1.07' -> '0.23'
+addx6055 add '1.3' '-1.30' -> '0.00'
+addx6056 add '1.3' '-2.07' -> '-0.77'
+addx6057 add '1E+2' '1E+4' -> '1.01E+4'
+
+-- from above
+addx6060 add 1 '0.1' -> '1.1'
+addx6061 add 1 '0.01' -> '1.01'
+addx6062 add 1 '0.001' -> '1.001'
+addx6063 add 1 '0.0001' -> '1.0001'
+addx6064 add 1 '0.00001' -> '1.00001'
+addx6065 add 1 '0.000001' -> '1.000001'
+addx6066 add 1 '0.0000001' -> '1.0000001'
+addx6067 add 1 '0.00000001' -> '1.00000001'
+
+-- cancellation to integer
+addx6068 add 99999999999999123456789 -99999999999999E+9 -> 123456789
+-- similar from FMA fun
+addx6069 add "-1234567890123455.234567890123454" "1234567890123456" -> 0.765432109876546
+
+-- some funny zeros [in case of bad signum]
+addx6070 add 1  0    -> 1
+addx6071 add 1 0.    -> 1
+addx6072 add 1  .0   -> 1.0
+addx6073 add 1 0.0   -> 1.0
+addx6074 add 1 0.00  -> 1.00
+addx6075 add  0  1   -> 1
+addx6076 add 0.  1   -> 1
+addx6077 add  .0 1   -> 1.0
+addx6078 add 0.0 1   -> 1.0
+addx6079 add 0.00 1  -> 1.00
+
+-- some carries
+addx6080 add 9999999999999998 1  -> 9999999999999999
+addx6081 add 9999999999999999 1  -> 1.000000000000000E+16 Rounded
+addx6082 add  999999999999999 1  -> 1000000000000000
+addx6083 add    9999999999999 1  -> 10000000000000
+addx6084 add      99999999999 1  -> 100000000000
+addx6085 add        999999999 1  -> 1000000000
+addx6086 add          9999999 1  -> 10000000
+addx6087 add            99999 1  -> 100000
+addx6088 add              999 1  -> 1000
+addx6089 add                9 1  -> 10
+
+
+-- more LHS swaps
+addx6090 add '-56267E-10'   0 ->  '-0.0000056267'
+addx6091 add '-56267E-6'    0 ->  '-0.056267'
+addx6092 add '-56267E-5'    0 ->  '-0.56267'
+addx6093 add '-56267E-4'    0 ->  '-5.6267'
+addx6094 add '-56267E-3'    0 ->  '-56.267'
+addx6095 add '-56267E-2'    0 ->  '-562.67'
+addx6096 add '-56267E-1'    0 ->  '-5626.7'
+addx6097 add '-56267E-0'    0 ->  '-56267'
+addx6098 add '-5E-10'       0 ->  '-5E-10'
+addx6099 add '-5E-7'        0 ->  '-5E-7'
+addx6100 add '-5E-6'        0 ->  '-0.000005'
+addx6101 add '-5E-5'        0 ->  '-0.00005'
+addx6102 add '-5E-4'        0 ->  '-0.0005'
+addx6103 add '-5E-1'        0 ->  '-0.5'
+addx6104 add '-5E0'         0 ->  '-5'
+addx6105 add '-5E1'         0 ->  '-50'
+addx6106 add '-5E5'         0 ->  '-500000'
+addx6107 add '-5E15'        0 ->  '-5000000000000000'
+addx6108 add '-5E16'        0 ->  '-5.000000000000000E+16'   Rounded
+addx6109 add '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded
+addx6110 add '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded
+addx6111 add '-5E100'       0 ->  '-5.000000000000000E+100' Rounded
+
+-- more RHS swaps
+addx6113 add 0  '-56267E-10' ->  '-0.0000056267'
+addx6114 add 0  '-56267E-6'  ->  '-0.056267'
+addx6116 add 0  '-56267E-5'  ->  '-0.56267'
+addx6117 add 0  '-56267E-4'  ->  '-5.6267'
+addx6119 add 0  '-56267E-3'  ->  '-56.267'
+addx6120 add 0  '-56267E-2'  ->  '-562.67'
+addx6121 add 0  '-56267E-1'  ->  '-5626.7'
+addx6122 add 0  '-56267E-0'  ->  '-56267'
+addx6123 add 0  '-5E-10'     ->  '-5E-10'
+addx6124 add 0  '-5E-7'      ->  '-5E-7'
+addx6125 add 0  '-5E-6'      ->  '-0.000005'
+addx6126 add 0  '-5E-5'      ->  '-0.00005'
+addx6127 add 0  '-5E-4'      ->  '-0.0005'
+addx6128 add 0  '-5E-1'      ->  '-0.5'
+addx6129 add 0  '-5E0'       ->  '-5'
+addx6130 add 0  '-5E1'       ->  '-50'
+addx6131 add 0  '-5E5'       ->  '-500000'
+addx6132 add 0  '-5E15'      ->  '-5000000000000000'
+addx6133 add 0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded
+addx6134 add 0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded
+addx6135 add 0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded
+addx6136 add 0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded
+
+-- related
+addx6137 add  1  '0E-19'      ->  '1.000000000000000'  Rounded
+addx6138 add -1  '0E-19'      ->  '-1.000000000000000' Rounded
+addx6139 add '0E-19' 1        ->  '1.000000000000000'  Rounded
+addx6140 add '0E-19' -1       ->  '-1.000000000000000' Rounded
+addx6141 add 1E+11   0.0000   ->  '100000000000.0000'
+addx6142 add 1E+11   0.00000  ->  '100000000000.0000'  Rounded
+addx6143 add 0.000   1E+12    ->  '1000000000000.000'
+addx6144 add 0.0000  1E+12    ->  '1000000000000.000'  Rounded
+
+-- [some of the next group are really constructor tests]
+addx6146 add '00.0'  0       ->  '0.0'
+addx6147 add '0.00'  0       ->  '0.00'
+addx6148 add  0      '0.00'  ->  '0.00'
+addx6149 add  0      '00.0'  ->  '0.0'
+addx6150 add '00.0'  '0.00'  ->  '0.00'
+addx6151 add '0.00'  '00.0'  ->  '0.00'
+addx6152 add '3'     '.3'    ->  '3.3'
+addx6153 add '3.'    '.3'    ->  '3.3'
+addx6154 add '3.0'   '.3'    ->  '3.3'
+addx6155 add '3.00'  '.3'    ->  '3.30'
+addx6156 add '3'     '3'     ->  '6'
+addx6157 add '3'     '+3'    ->  '6'
+addx6158 add '3'     '-3'    ->  '0'
+addx6159 add '0.3'   '-0.3'  ->  '0.0'
+addx6160 add '0.03'  '-0.03' ->  '0.00'
+
+-- try borderline precision, with carries, etc.
+addx6161 add '1E+13' '-1'    -> '9999999999999'
+addx6162 add '1E+13'  '1.11' -> '10000000000001.11'
+addx6163 add '1.11'  '1E+13' -> '10000000000001.11'
+addx6164 add '-1'    '1E+13' -> '9999999999999'
+addx6165 add '7E+13' '-1'    -> '69999999999999'
+addx6166 add '7E+13'  '1.11' -> '70000000000001.11'
+addx6167 add '1.11'  '7E+13' -> '70000000000001.11'
+addx6168 add '-1'    '7E+13' -> '69999999999999'
+
+--             1234567890123456      1234567890123456      1 234567890123456
+addx6170 add '0.4444444444444444'  '0.5555555555555563' -> '1.000000000000001' Inexact Rounded
+addx6171 add '0.4444444444444444'  '0.5555555555555562' -> '1.000000000000001' Inexact Rounded
+addx6172 add '0.4444444444444444'  '0.5555555555555561' -> '1.000000000000000' Inexact Rounded
+addx6173 add '0.4444444444444444'  '0.5555555555555560' -> '1.000000000000000' Inexact Rounded
+addx6174 add '0.4444444444444444'  '0.5555555555555559' -> '1.000000000000000' Inexact Rounded
+addx6175 add '0.4444444444444444'  '0.5555555555555558' -> '1.000000000000000' Inexact Rounded
+addx6176 add '0.4444444444444444'  '0.5555555555555557' -> '1.000000000000000' Inexact Rounded
+addx6177 add '0.4444444444444444'  '0.5555555555555556' -> '1.000000000000000' Rounded
+addx6178 add '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'
+addx6179 add '0.4444444444444444'  '0.5555555555555554' -> '0.9999999999999998'
+addx6180 add '0.4444444444444444'  '0.5555555555555553' -> '0.9999999999999997'
+addx6181 add '0.4444444444444444'  '0.5555555555555552' -> '0.9999999999999996'
+addx6182 add '0.4444444444444444'  '0.5555555555555551' -> '0.9999999999999995'
+addx6183 add '0.4444444444444444'  '0.5555555555555550' -> '0.9999999999999994'
+
+-- and some more, including residue effects and different roundings
+rounding: half_up
+addx6200 add '6543210123456789' 0             -> '6543210123456789'
+addx6201 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
+addx6202 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
+addx6203 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
+addx6204 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
+addx6205 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
+addx6206 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
+addx6207 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
+addx6208 add '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
+addx6209 add '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
+addx6210 add '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
+addx6211 add '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
+addx6212 add '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
+addx6213 add '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
+addx6214 add '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
+addx6215 add '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded
+addx6216 add '6543210123456789' 1             -> '6543210123456790'
+addx6217 add '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded
+addx6218 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
+addx6219 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
+
+rounding: half_even
+addx6220 add '6543210123456789' 0             -> '6543210123456789'
+addx6221 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
+addx6222 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
+addx6223 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
+addx6224 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
+addx6225 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
+addx6226 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
+addx6227 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
+addx6228 add '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
+addx6229 add '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
+addx6230 add '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
+addx6231 add '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
+addx6232 add '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
+addx6233 add '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
+addx6234 add '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
+addx6235 add '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded
+addx6236 add '6543210123456789' 1             -> '6543210123456790'
+addx6237 add '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
+addx6238 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
+addx6239 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
+-- critical few with even bottom digit...
+addx6240 add '6543210123456788' 0.499999999   -> '6543210123456788' Inexact Rounded
+addx6241 add '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded
+addx6242 add '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded
+
+rounding: down
+addx6250 add '6543210123456789' 0             -> '6543210123456789'
+addx6251 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
+addx6252 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
+addx6253 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
+addx6254 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
+addx6255 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
+addx6256 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
+addx6257 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
+addx6258 add '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded
+addx6259 add '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded
+addx6260 add '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded
+addx6261 add '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded
+addx6262 add '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded
+addx6263 add '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded
+addx6264 add '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded
+addx6265 add '6543210123456789' 0.999999999   -> '6543210123456789' Inexact Rounded
+addx6266 add '6543210123456789' 1             -> '6543210123456790'
+addx6267 add '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
+addx6268 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
+addx6269 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
+
+-- 1 in last place tests
+rounding: half_even
+addx6301 add  -1   1      ->   0
+addx6302 add   0   1      ->   1
+addx6303 add   1   1      ->   2
+addx6304 add  12   1      ->  13
+addx6305 add  98   1      ->  99
+addx6306 add  99   1      -> 100
+addx6307 add 100   1      -> 101
+addx6308 add 101   1      -> 102
+addx6309 add  -1  -1      ->  -2
+addx6310 add   0  -1      ->  -1
+addx6311 add   1  -1      ->   0
+addx6312 add  12  -1      ->  11
+addx6313 add  98  -1      ->  97
+addx6314 add  99  -1      ->  98
+addx6315 add 100  -1      ->  99
+addx6316 add 101  -1      -> 100
+
+addx6321 add -0.01  0.01    ->  0.00
+addx6322 add  0.00  0.01    ->  0.01
+addx6323 add  0.01  0.01    ->  0.02
+addx6324 add  0.12  0.01    ->  0.13
+addx6325 add  0.98  0.01    ->  0.99
+addx6326 add  0.99  0.01    ->  1.00
+addx6327 add  1.00  0.01    ->  1.01
+addx6328 add  1.01  0.01    ->  1.02
+addx6329 add -0.01 -0.01    -> -0.02
+addx6330 add  0.00 -0.01    -> -0.01
+addx6331 add  0.01 -0.01    ->  0.00
+addx6332 add  0.12 -0.01    ->  0.11
+addx6333 add  0.98 -0.01    ->  0.97
+addx6334 add  0.99 -0.01    ->  0.98
+addx6335 add  1.00 -0.01    ->  0.99
+addx6336 add  1.01 -0.01    ->  1.00
+
+-- some more cases where adding 0 affects the coefficient
+addx6340 add 1E+3    0    ->         1000
+addx6341 add 1E+15   0    ->    1000000000000000
+addx6342 add 1E+16   0    ->   1.000000000000000E+16  Rounded
+addx6343 add 1E+17   0    ->   1.000000000000000E+17  Rounded
+-- which simply follow from these cases ...
+addx6344 add 1E+3    1    ->         1001
+addx6345 add 1E+15   1    ->    1000000000000001
+addx6346 add 1E+16   1    ->   1.000000000000000E+16  Inexact Rounded
+addx6347 add 1E+17   1    ->   1.000000000000000E+17  Inexact Rounded
+addx6348 add 1E+3    7    ->         1007
+addx6349 add 1E+15   7    ->    1000000000000007
+addx6350 add 1E+16   7    ->   1.000000000000001E+16  Inexact Rounded
+addx6351 add 1E+17   7    ->   1.000000000000000E+17  Inexact Rounded
+
+-- tryzeros cases
+addx6361  add 0E+50 10000E+1  -> 1.0000E+5
+addx6362  add 10000E+1 0E-50  -> 100000.0000000000  Rounded
+addx6363  add 10000E+1 10000E-50  -> 100000.0000000000  Rounded Inexact
+addx6364  add 12.34    0e-398  -> 12.34000000000000  Rounded
+
+-- ulp replacement tests
+addx6400 add   1   77e-14      ->  1.00000000000077
+addx6401 add   1   77e-15      ->  1.000000000000077
+addx6402 add   1   77e-16      ->  1.000000000000008 Inexact Rounded
+addx6403 add   1   77e-17      ->  1.000000000000001 Inexact Rounded
+addx6404 add   1   77e-18      ->  1.000000000000000 Inexact Rounded
+addx6405 add   1   77e-19      ->  1.000000000000000 Inexact Rounded
+addx6406 add   1   77e-99      ->  1.000000000000000 Inexact Rounded
+
+addx6410 add  10   77e-14      ->  10.00000000000077
+addx6411 add  10   77e-15      ->  10.00000000000008 Inexact Rounded
+addx6412 add  10   77e-16      ->  10.00000000000001 Inexact Rounded
+addx6413 add  10   77e-17      ->  10.00000000000000 Inexact Rounded
+addx6414 add  10   77e-18      ->  10.00000000000000 Inexact Rounded
+addx6415 add  10   77e-19      ->  10.00000000000000 Inexact Rounded
+addx6416 add  10   77e-99      ->  10.00000000000000 Inexact Rounded
+
+addx6420 add  77e-14       1   ->  1.00000000000077
+addx6421 add  77e-15       1   ->  1.000000000000077
+addx6422 add  77e-16       1   ->  1.000000000000008 Inexact Rounded
+addx6423 add  77e-17       1   ->  1.000000000000001 Inexact Rounded
+addx6424 add  77e-18       1   ->  1.000000000000000 Inexact Rounded
+addx6425 add  77e-19       1   ->  1.000000000000000 Inexact Rounded
+addx6426 add  77e-99       1   ->  1.000000000000000 Inexact Rounded
+
+addx6430 add  77e-14      10   ->  10.00000000000077
+addx6431 add  77e-15      10   ->  10.00000000000008 Inexact Rounded
+addx6432 add  77e-16      10   ->  10.00000000000001 Inexact Rounded
+addx6433 add  77e-17      10   ->  10.00000000000000 Inexact Rounded
+addx6434 add  77e-18      10   ->  10.00000000000000 Inexact Rounded
+addx6435 add  77e-19      10   ->  10.00000000000000 Inexact Rounded
+addx6436 add  77e-99      10   ->  10.00000000000000 Inexact Rounded
+
+-- negative ulps
+addx6440 add   1   -77e-14      ->  0.99999999999923
+addx6441 add   1   -77e-15      ->  0.999999999999923
+addx6442 add   1   -77e-16      ->  0.9999999999999923
+addx6443 add   1   -77e-17      ->  0.9999999999999992 Inexact Rounded
+addx6444 add   1   -77e-18      ->  0.9999999999999999 Inexact Rounded
+addx6445 add   1   -77e-19      ->  1.000000000000000 Inexact Rounded
+addx6446 add   1   -77e-99      ->  1.000000000000000 Inexact Rounded
+
+addx6450 add  10   -77e-14      ->   9.99999999999923
+addx6451 add  10   -77e-15      ->   9.999999999999923
+addx6452 add  10   -77e-16      ->   9.999999999999992 Inexact Rounded
+addx6453 add  10   -77e-17      ->   9.999999999999999 Inexact Rounded
+addx6454 add  10   -77e-18      ->  10.00000000000000 Inexact Rounded
+addx6455 add  10   -77e-19      ->  10.00000000000000 Inexact Rounded
+addx6456 add  10   -77e-99      ->  10.00000000000000 Inexact Rounded
+
+addx6460 add  -77e-14       1   ->  0.99999999999923
+addx6461 add  -77e-15       1   ->  0.999999999999923
+addx6462 add  -77e-16       1   ->  0.9999999999999923
+addx6463 add  -77e-17       1   ->  0.9999999999999992 Inexact Rounded
+addx6464 add  -77e-18       1   ->  0.9999999999999999 Inexact Rounded
+addx6465 add  -77e-19       1   ->  1.000000000000000 Inexact Rounded
+addx6466 add  -77e-99       1   ->  1.000000000000000 Inexact Rounded
+
+addx6470 add  -77e-14      10   ->   9.99999999999923
+addx6471 add  -77e-15      10   ->   9.999999999999923
+addx6472 add  -77e-16      10   ->   9.999999999999992 Inexact Rounded
+addx6473 add  -77e-17      10   ->   9.999999999999999 Inexact Rounded
+addx6474 add  -77e-18      10   ->  10.00000000000000 Inexact Rounded
+addx6475 add  -77e-19      10   ->  10.00000000000000 Inexact Rounded
+addx6476 add  -77e-99      10   ->  10.00000000000000 Inexact Rounded
+
+-- negative ulps
+addx6480 add  -1    77e-14      ->  -0.99999999999923
+addx6481 add  -1    77e-15      ->  -0.999999999999923
+addx6482 add  -1    77e-16      ->  -0.9999999999999923
+addx6483 add  -1    77e-17      ->  -0.9999999999999992 Inexact Rounded
+addx6484 add  -1    77e-18      ->  -0.9999999999999999 Inexact Rounded
+addx6485 add  -1    77e-19      ->  -1.000000000000000 Inexact Rounded
+addx6486 add  -1    77e-99      ->  -1.000000000000000 Inexact Rounded
+
+addx6490 add -10    77e-14      ->   -9.99999999999923
+addx6491 add -10    77e-15      ->   -9.999999999999923
+addx6492 add -10    77e-16      ->   -9.999999999999992 Inexact Rounded
+addx6493 add -10    77e-17      ->   -9.999999999999999 Inexact Rounded
+addx6494 add -10    77e-18      ->  -10.00000000000000 Inexact Rounded
+addx6495 add -10    77e-19      ->  -10.00000000000000 Inexact Rounded
+addx6496 add -10    77e-99      ->  -10.00000000000000 Inexact Rounded
+
+addx6500 add   77e-14      -1   ->  -0.99999999999923
+addx6501 add   77e-15      -1   ->  -0.999999999999923
+addx6502 add   77e-16      -1   ->  -0.9999999999999923
+addx6503 add   77e-17      -1   ->  -0.9999999999999992 Inexact Rounded
+addx6504 add   77e-18      -1   ->  -0.9999999999999999 Inexact Rounded
+addx6505 add   77e-19      -1   ->  -1.000000000000000 Inexact Rounded
+addx6506 add   77e-99      -1   ->  -1.000000000000000 Inexact Rounded
+
+addx6510 add   77e-14      -10  ->   -9.99999999999923
+addx6511 add   77e-15      -10  ->   -9.999999999999923
+addx6512 add   77e-16      -10  ->   -9.999999999999992 Inexact Rounded
+addx6513 add   77e-17      -10  ->   -9.999999999999999 Inexact Rounded
+addx6514 add   77e-18      -10  ->  -10.00000000000000 Inexact Rounded
+addx6515 add   77e-19      -10  ->  -10.00000000000000 Inexact Rounded
+addx6516 add   77e-99      -10  ->  -10.00000000000000 Inexact Rounded
+
+
+-- long operands
+addx6521 add 101234562345678000 0 -> 1.012345623456780E+17 Rounded
+addx6522 add 0 101234562345678000 -> 1.012345623456780E+17 Rounded
+addx6523 add 10123456234567800  0 -> 1.012345623456780E+16 Rounded
+addx6524 add 0 10123456234567800  -> 1.012345623456780E+16 Rounded
+addx6525 add 10123456234567890  0 -> 1.012345623456789E+16 Rounded
+addx6526 add 0 10123456234567890  -> 1.012345623456789E+16 Rounded
+addx6527 add 10123456234567891  0 -> 1.012345623456789E+16 Inexact Rounded
+addx6528 add 0 10123456234567891  -> 1.012345623456789E+16 Inexact Rounded
+addx6529 add 101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded
+addx6530 add 0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded
+addx6531 add 10123456234567896  0 -> 1.012345623456790E+16 Inexact Rounded
+addx6532 add 0 10123456234567896  -> 1.012345623456790E+16 Inexact Rounded
+
+-- verify a query
+rounding:     down
+addx6561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
+addx6562 add      0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
+-- and using decimal64 bounds...
+rounding:     down
+addx6563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
+addx6564 add      0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
+
+-- more zeros, etc.
+rounding: half_even
+
+addx6701 add 5.00 1.00E-3 -> 5.00100
+addx6702 add 00.00 0.000  -> 0.000
+addx6703 add 00.00 0E-3   -> 0.000
+addx6704 add 0E-3  00.00  -> 0.000
+
+addx6710 add 0E+3  00.00  -> 0.00
+addx6711 add 0E+3  00.0   -> 0.0
+addx6712 add 0E+3  00.    -> 0
+addx6713 add 0E+3  00.E+1 -> 0E+1
+addx6714 add 0E+3  00.E+2 -> 0E+2
+addx6715 add 0E+3  00.E+3 -> 0E+3
+addx6716 add 0E+3  00.E+4 -> 0E+3
+addx6717 add 0E+3  00.E+5 -> 0E+3
+addx6718 add 0E+3  -00.0   -> 0.0
+addx6719 add 0E+3  -00.    -> 0
+addx6731 add 0E+3  -00.E+1 -> 0E+1
+
+addx6720 add 00.00  0E+3  -> 0.00
+addx6721 add 00.0   0E+3  -> 0.0
+addx6722 add 00.    0E+3  -> 0
+addx6723 add 00.E+1 0E+3  -> 0E+1
+addx6724 add 00.E+2 0E+3  -> 0E+2
+addx6725 add 00.E+3 0E+3  -> 0E+3
+addx6726 add 00.E+4 0E+3  -> 0E+3
+addx6727 add 00.E+5 0E+3  -> 0E+3
+addx6728 add -00.00 0E+3  -> 0.00
+addx6729 add -00.0  0E+3  -> 0.0
+addx6730 add -00.   0E+3  -> 0
+
+addx6732 add  0     0     ->  0
+addx6733 add  0    -0     ->  0
+addx6734 add -0     0     ->  0
+addx6735 add -0    -0     -> -0     -- IEEE 854 special case
+
+addx6736 add  1    -1     ->  0
+addx6737 add -1    -1     -> -2
+addx6738 add  1     1     ->  2
+addx6739 add -1     1     ->  0
+
+addx6741 add  0    -1     -> -1
+addx6742 add -0    -1     -> -1
+addx6743 add  0     1     ->  1
+addx6744 add -0     1     ->  1
+addx6745 add -1     0     -> -1
+addx6746 add -1    -0     -> -1
+addx6747 add  1     0     ->  1
+addx6748 add  1    -0     ->  1
+
+addx6751 add  0.0  -1     -> -1.0
+addx6752 add -0.0  -1     -> -1.0
+addx6753 add  0.0   1     ->  1.0
+addx6754 add -0.0   1     ->  1.0
+addx6755 add -1.0   0     -> -1.0
+addx6756 add -1.0  -0     -> -1.0
+addx6757 add  1.0   0     ->  1.0
+addx6758 add  1.0  -0     ->  1.0
+
+addx6761 add  0    -1.0   -> -1.0
+addx6762 add -0    -1.0   -> -1.0
+addx6763 add  0     1.0   ->  1.0
+addx6764 add -0     1.0   ->  1.0
+addx6765 add -1     0.0   -> -1.0
+addx6766 add -1    -0.0   -> -1.0
+addx6767 add  1     0.0   ->  1.0
+addx6768 add  1    -0.0   ->  1.0
+
+addx6771 add  0.0  -1.0   -> -1.0
+addx6772 add -0.0  -1.0   -> -1.0
+addx6773 add  0.0   1.0   ->  1.0
+addx6774 add -0.0   1.0   ->  1.0
+addx6775 add -1.0   0.0   -> -1.0
+addx6776 add -1.0  -0.0   -> -1.0
+addx6777 add  1.0   0.0   ->  1.0
+addx6778 add  1.0  -0.0   ->  1.0
+
+-- Specials
+addx6780 add -Inf  -Inf   -> -Infinity
+addx6781 add -Inf  -1000  -> -Infinity
+addx6782 add -Inf  -1     -> -Infinity
+addx6783 add -Inf  -0     -> -Infinity
+addx6784 add -Inf   0     -> -Infinity
+addx6785 add -Inf   1     -> -Infinity
+addx6786 add -Inf   1000  -> -Infinity
+addx6787 add -1000 -Inf   -> -Infinity
+addx6788 add -Inf  -Inf   -> -Infinity
+addx6789 add -1    -Inf   -> -Infinity
+addx6790 add -0    -Inf   -> -Infinity
+addx6791 add  0    -Inf   -> -Infinity
+addx6792 add  1    -Inf   -> -Infinity
+addx6793 add  1000 -Inf   -> -Infinity
+addx6794 add  Inf  -Inf   ->  NaN  Invalid_operation
+
+addx6800 add  Inf  -Inf   ->  NaN  Invalid_operation
+addx6801 add  Inf  -1000  ->  Infinity
+addx6802 add  Inf  -1     ->  Infinity
+addx6803 add  Inf  -0     ->  Infinity
+addx6804 add  Inf   0     ->  Infinity
+addx6805 add  Inf   1     ->  Infinity
+addx6806 add  Inf   1000  ->  Infinity
+addx6807 add  Inf   Inf   ->  Infinity
+addx6808 add -1000  Inf   ->  Infinity
+addx6809 add -Inf   Inf   ->  NaN  Invalid_operation
+addx6810 add -1     Inf   ->  Infinity
+addx6811 add -0     Inf   ->  Infinity
+addx6812 add  0     Inf   ->  Infinity
+addx6813 add  1     Inf   ->  Infinity
+addx6814 add  1000  Inf   ->  Infinity
+addx6815 add  Inf   Inf   ->  Infinity
+
+addx6821 add  NaN -Inf    ->  NaN
+addx6822 add  NaN -1000   ->  NaN
+addx6823 add  NaN -1      ->  NaN
+addx6824 add  NaN -0      ->  NaN
+addx6825 add  NaN  0      ->  NaN
+addx6826 add  NaN  1      ->  NaN
+addx6827 add  NaN  1000   ->  NaN
+addx6828 add  NaN  Inf    ->  NaN
+addx6829 add  NaN  NaN    ->  NaN
+addx6830 add -Inf  NaN    ->  NaN
+addx6831 add -1000 NaN    ->  NaN
+addx6832 add -1    NaN    ->  NaN
+addx6833 add -0    NaN    ->  NaN
+addx6834 add  0    NaN    ->  NaN
+addx6835 add  1    NaN    ->  NaN
+addx6836 add  1000 NaN    ->  NaN
+addx6837 add  Inf  NaN    ->  NaN
+
+addx6841 add  sNaN -Inf   ->  NaN  Invalid_operation
+addx6842 add  sNaN -1000  ->  NaN  Invalid_operation
+addx6843 add  sNaN -1     ->  NaN  Invalid_operation
+addx6844 add  sNaN -0     ->  NaN  Invalid_operation
+addx6845 add  sNaN  0     ->  NaN  Invalid_operation
+addx6846 add  sNaN  1     ->  NaN  Invalid_operation
+addx6847 add  sNaN  1000  ->  NaN  Invalid_operation
+addx6848 add  sNaN  NaN   ->  NaN  Invalid_operation
+addx6849 add  sNaN sNaN   ->  NaN  Invalid_operation
+addx6850 add  NaN  sNaN   ->  NaN  Invalid_operation
+addx6851 add -Inf  sNaN   ->  NaN  Invalid_operation
+addx6852 add -1000 sNaN   ->  NaN  Invalid_operation
+addx6853 add -1    sNaN   ->  NaN  Invalid_operation
+addx6854 add -0    sNaN   ->  NaN  Invalid_operation
+addx6855 add  0    sNaN   ->  NaN  Invalid_operation
+addx6856 add  1    sNaN   ->  NaN  Invalid_operation
+addx6857 add  1000 sNaN   ->  NaN  Invalid_operation
+addx6858 add  Inf  sNaN   ->  NaN  Invalid_operation
+addx6859 add  NaN  sNaN   ->  NaN  Invalid_operation
+
+-- propagating NaNs
+addx6861 add  NaN1   -Inf    ->  NaN1
+addx6862 add +NaN2   -1000   ->  NaN2
+addx6863 add  NaN3    1000   ->  NaN3
+addx6864 add  NaN4    Inf    ->  NaN4
+addx6865 add  NaN5   +NaN6   ->  NaN5
+addx6866 add -Inf     NaN7   ->  NaN7
+addx6867 add -1000    NaN8   ->  NaN8
+addx6868 add  1000    NaN9   ->  NaN9
+addx6869 add  Inf    +NaN10  ->  NaN10
+addx6871 add  sNaN11  -Inf   ->  NaN11  Invalid_operation
+addx6872 add  sNaN12  -1000  ->  NaN12  Invalid_operation
+addx6873 add  sNaN13   1000  ->  NaN13  Invalid_operation
+addx6874 add  sNaN14   NaN17 ->  NaN14  Invalid_operation
+addx6875 add  sNaN15  sNaN18 ->  NaN15  Invalid_operation
+addx6876 add  NaN16   sNaN19 ->  NaN19  Invalid_operation
+addx6877 add -Inf    +sNaN20 ->  NaN20  Invalid_operation
+addx6878 add -1000    sNaN21 ->  NaN21  Invalid_operation
+addx6879 add  1000    sNaN22 ->  NaN22  Invalid_operation
+addx6880 add  Inf     sNaN23 ->  NaN23  Invalid_operation
+addx6881 add +NaN25  +sNaN24 ->  NaN24  Invalid_operation
+addx6882 add -NaN26    NaN28 -> -NaN26
+addx6883 add -sNaN27  sNaN29 -> -NaN27  Invalid_operation
+addx6884 add  1000    -NaN30 -> -NaN30
+addx6885 add  1000   -sNaN31 -> -NaN31  Invalid_operation
+
+-- now the case where we can get underflow but the result is normal
+-- [note this can't happen if the operands are also bounded, as we
+-- cannot represent 1E-399, for example]
+
+addx6571 add       1E-383       0  -> 1E-383
+addx6572 add       1E-384       0  -> 1E-384   Subnormal
+addx6573 add       1E-383  1E-384  -> 1.1E-383
+addx6574 subtract  1E-383  1E-384  ->   9E-384 Subnormal
+
+-- Here we explore the boundary of rounding a subnormal to Nmin
+addx6575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
+addx6576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
+addx6577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+addx6578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+addx6579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+addx6580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+
+-- check overflow edge case
+--               1234567890123456
+addx6972 apply   9.999999999999999E+384         -> 9.999999999999999E+384
+addx6973 add     9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded
+addx6974 add      9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded
+addx6975 add      9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded
+addx6976 add      9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded
+addx6977 add      9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded
+addx6978 add      9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded
+addx6979 add      9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded
+addx6980 add      9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded
+addx6981 add      9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded
+addx6982 add      9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded
+addx6983 add      9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded
+addx6984 add      9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded
+
+addx6985 apply  -9.999999999999999E+384         -> -9.999999999999999E+384
+addx6986 add    -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded
+addx6987 add     -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded
+addx6988 add     -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded
+addx6989 add     -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded
+addx6990 add     -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded
+addx6991 add     -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded
+addx6992 add     -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded
+addx6993 add     -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded
+addx6994 add     -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded
+addx6995 add     -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded
+addx6996 add     -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded
+addx6997 add     -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded
+
+-- And for round down full and subnormal results
+rounding:     down
+addx61100 add 1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
+addx61101 add 1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
+addx61103 add   +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
+addx61104 add 1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
+addx61105 add 1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
+addx61106 add 1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
+addx61107 add 1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
+addx61108 add 1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
+addx61109 add 1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
+
+rounding:     ceiling
+addx61110 add -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
+addx61111 add -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
+addx61113 add    -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
+addx61114 add -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
+addx61115 add -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
+addx61116 add -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
+addx61117 add -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
+addx61118 add -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
+addx61119 add -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
+
+-- tests based on Gunnar Degnbol's edge case
+rounding:     half_even
+
+addx61300 add 1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
+addx61310 add 1E16  -0.51                ->  9999999999999999      Inexact Rounded
+addx61311 add 1E16  -0.501               ->  9999999999999999      Inexact Rounded
+addx61312 add 1E16  -0.5001              ->  9999999999999999      Inexact Rounded
+addx61313 add 1E16  -0.50001             ->  9999999999999999      Inexact Rounded
+addx61314 add 1E16  -0.500001            ->  9999999999999999      Inexact Rounded
+addx61315 add 1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
+addx61316 add 1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
+addx61317 add 1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
+addx61318 add 1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
+addx61319 add 1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
+addx61320 add 1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
+addx61321 add 1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
+addx61322 add 1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
+addx61323 add 1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
+addx61324 add 1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
+addx61325 add 1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
+addx61326 add 1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
+addx61327 add 1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
+addx61328 add 1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
+addx61329 add 1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
+addx61330 add 1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
+addx61331 add 1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
+addx61332 add 1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
+addx61333 add 1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
+addx61334 add 1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
+addx61335 add 1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
+addx61336 add 1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
+addx61337 add 1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
+addx61338 add 1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
+addx61339 add 1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
+
+addx61340 add 1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
+addx61341 add 1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
+
+addx61349 add 9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
+addx61350 add 9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
+addx61351 add 9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
+addx61352 add 9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
+addx61353 add 9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
+addx61354 add 9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
+addx61355 add 9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
+addx61356 add 9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
+addx61357 add 9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
+addx61358 add 9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
+addx61359 add 9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
+addx61360 add 9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
+addx61361 add 9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
+addx61362 add 9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
+addx61363 add 9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
+addx61364 add 9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
+addx61365 add 9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
+addx61367 add 9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
+addx61368 add 9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
+addx61369 add 9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
+addx61370 add 9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
+addx61371 add 9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
+addx61372 add 9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
+addx61373 add 9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
+addx61374 add 9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
+addx61375 add 9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
+addx61376 add 9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
+addx61377 add 9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
+addx61378 add 9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
+addx61379 add 9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
+addx61380 add 9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
+addx61381 add 9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
+addx61382 add 9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
+addx61383 add 9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
+addx61384 add 9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
+addx61385 add 9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
+addx61386 add 9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
+addx61387 add 9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
+addx61388 add 9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
+addx61389 add 9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
+addx61390 add 9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
+addx61391 add 9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
+addx61392 add 9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
+addx61393 add 9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
+addx61394 add 9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
+addx61395 add 9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
+addx61396 add 9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
+
+-- More GD edge cases, where difference between the unadjusted
+-- exponents is larger than the maximum precision and one side is 0
+addx61420 add  0 1.123456789012345     -> 1.123456789012345
+addx61421 add  0 1.123456789012345E-1  -> 0.1123456789012345
+addx61422 add  0 1.123456789012345E-2  -> 0.01123456789012345
+addx61423 add  0 1.123456789012345E-3  -> 0.001123456789012345
+addx61424 add  0 1.123456789012345E-4  -> 0.0001123456789012345
+addx61425 add  0 1.123456789012345E-5  -> 0.00001123456789012345
+addx61426 add  0 1.123456789012345E-6  -> 0.000001123456789012345
+addx61427 add  0 1.123456789012345E-7  -> 1.123456789012345E-7
+addx61428 add  0 1.123456789012345E-8  -> 1.123456789012345E-8
+addx61429 add  0 1.123456789012345E-9  -> 1.123456789012345E-9
+addx61430 add  0 1.123456789012345E-10 -> 1.123456789012345E-10
+addx61431 add  0 1.123456789012345E-11 -> 1.123456789012345E-11
+addx61432 add  0 1.123456789012345E-12 -> 1.123456789012345E-12
+addx61433 add  0 1.123456789012345E-13 -> 1.123456789012345E-13
+addx61434 add  0 1.123456789012345E-14 -> 1.123456789012345E-14
+addx61435 add  0 1.123456789012345E-15 -> 1.123456789012345E-15
+addx61436 add  0 1.123456789012345E-16 -> 1.123456789012345E-16
+addx61437 add  0 1.123456789012345E-17 -> 1.123456789012345E-17
+addx61438 add  0 1.123456789012345E-18 -> 1.123456789012345E-18
+addx61439 add  0 1.123456789012345E-19 -> 1.123456789012345E-19
+
+-- same, reversed 0
+addx61440 add 1.123456789012345     0 -> 1.123456789012345
+addx61441 add 1.123456789012345E-1  0 -> 0.1123456789012345
+addx61442 add 1.123456789012345E-2  0 -> 0.01123456789012345
+addx61443 add 1.123456789012345E-3  0 -> 0.001123456789012345
+addx61444 add 1.123456789012345E-4  0 -> 0.0001123456789012345
+addx61445 add 1.123456789012345E-5  0 -> 0.00001123456789012345
+addx61446 add 1.123456789012345E-6  0 -> 0.000001123456789012345
+addx61447 add 1.123456789012345E-7  0 -> 1.123456789012345E-7
+addx61448 add 1.123456789012345E-8  0 -> 1.123456789012345E-8
+addx61449 add 1.123456789012345E-9  0 -> 1.123456789012345E-9
+addx61450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10
+addx61451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11
+addx61452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12
+addx61453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13
+addx61454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14
+addx61455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15
+addx61456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16
+addx61457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17
+addx61458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18
+addx61459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19
+
+-- same, Es on the 0
+addx61460 add 1.123456789012345  0E-0   -> 1.123456789012345
+addx61461 add 1.123456789012345  0E-1   -> 1.123456789012345
+addx61462 add 1.123456789012345  0E-2   -> 1.123456789012345
+addx61463 add 1.123456789012345  0E-3   -> 1.123456789012345
+addx61464 add 1.123456789012345  0E-4   -> 1.123456789012345
+addx61465 add 1.123456789012345  0E-5   -> 1.123456789012345
+addx61466 add 1.123456789012345  0E-6   -> 1.123456789012345
+addx61467 add 1.123456789012345  0E-7   -> 1.123456789012345
+addx61468 add 1.123456789012345  0E-8   -> 1.123456789012345
+addx61469 add 1.123456789012345  0E-9   -> 1.123456789012345
+addx61470 add 1.123456789012345  0E-10  -> 1.123456789012345
+addx61471 add 1.123456789012345  0E-11  -> 1.123456789012345
+addx61472 add 1.123456789012345  0E-12  -> 1.123456789012345
+addx61473 add 1.123456789012345  0E-13  -> 1.123456789012345
+addx61474 add 1.123456789012345  0E-14  -> 1.123456789012345
+addx61475 add 1.123456789012345  0E-15  -> 1.123456789012345
+-- next four flag Rounded because the 0 extends the result
+addx61476 add 1.123456789012345  0E-16  -> 1.123456789012345 Rounded
+addx61477 add 1.123456789012345  0E-17  -> 1.123456789012345 Rounded
+addx61478 add 1.123456789012345  0E-18  -> 1.123456789012345 Rounded
+addx61479 add 1.123456789012345  0E-19  -> 1.123456789012345 Rounded
+
+-- sum of two opposite-sign operands is exactly 0 and floor => -0
+rounding:    half_up
+-- exact zeros from zeros
+addx61500 add  0        0E-19  ->  0E-19
+addx61501 add -0        0E-19  ->  0E-19
+addx61502 add  0       -0E-19  ->  0E-19
+addx61503 add -0       -0E-19  -> -0E-19
+addx61504 add  0E-400   0E-19  ->  0E-398 Clamped
+addx61505 add -0E-400   0E-19  ->  0E-398 Clamped
+addx61506 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx61507 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx61511 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61512 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61513 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61514 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx61515 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61516 add -1E-401   1E-401 ->  0E-398 Clamped
+addx61517 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx61518 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+rounding:    half_down
+-- exact zeros from zeros
+addx61520 add  0        0E-19  ->  0E-19
+addx61521 add -0        0E-19  ->  0E-19
+addx61522 add  0       -0E-19  ->  0E-19
+addx61523 add -0       -0E-19  -> -0E-19
+addx61524 add  0E-400   0E-19  ->  0E-398 Clamped
+addx61525 add -0E-400   0E-19  ->  0E-398 Clamped
+addx61526 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx61527 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx61531 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61532 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61533 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61534 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx61535 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61536 add -1E-401   1E-401 ->  0E-398 Clamped
+addx61537 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx61538 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+rounding:    half_even
+-- exact zeros from zeros
+addx61540 add  0        0E-19  ->  0E-19
+addx61541 add -0        0E-19  ->  0E-19
+addx61542 add  0       -0E-19  ->  0E-19
+addx61543 add -0       -0E-19  -> -0E-19
+addx61544 add  0E-400   0E-19  ->  0E-398 Clamped
+addx61545 add -0E-400   0E-19  ->  0E-398 Clamped
+addx61546 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx61547 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx61551 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61552 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61553 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61554 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx61555 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61556 add -1E-401   1E-401 ->  0E-398 Clamped
+addx61557 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx61558 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+rounding:    up
+-- exact zeros from zeros
+addx61560 add  0        0E-19  ->  0E-19
+addx61561 add -0        0E-19  ->  0E-19
+addx61562 add  0       -0E-19  ->  0E-19
+addx61563 add -0       -0E-19  -> -0E-19
+addx61564 add  0E-400   0E-19  ->  0E-398 Clamped
+addx61565 add -0E-400   0E-19  ->  0E-398 Clamped
+addx61566 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx61567 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx61571 add  1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx61572 add -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx61573 add  1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
+addx61574 add -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
+-- some exact zeros from non-zeros
+addx61575 add  1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx61576 add -1E-401   1E-401 ->  0E-398 Clamped
+addx61577 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx61578 add -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
+
+rounding:    down
+-- exact zeros from zeros
+addx61580 add  0        0E-19  ->  0E-19
+addx61581 add -0        0E-19  ->  0E-19
+addx61582 add  0       -0E-19  ->  0E-19
+addx61583 add -0       -0E-19  -> -0E-19
+addx61584 add  0E-400   0E-19  ->  0E-398 Clamped
+addx61585 add -0E-400   0E-19  ->  0E-398 Clamped
+addx61586 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx61587 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx61591 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61592 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61593 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61594 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx61595 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61596 add -1E-401   1E-401 ->  0E-398 Clamped
+addx61597 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx61598 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+rounding:    ceiling
+-- exact zeros from zeros
+addx61600 add  0        0E-19  ->  0E-19
+addx61601 add -0        0E-19  ->  0E-19
+addx61602 add  0       -0E-19  ->  0E-19
+addx61603 add -0       -0E-19  -> -0E-19
+addx61604 add  0E-400   0E-19  ->  0E-398 Clamped
+addx61605 add -0E-400   0E-19  ->  0E-398 Clamped
+addx61606 add  0E-400  -0E-19  ->  0E-398 Clamped
+addx61607 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx61611 add  1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx61612 add -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx61613 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61614 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+-- some exact zeros from non-zeros
+addx61615 add  1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
+addx61616 add -1E-401   1E-401 ->  0E-398 Clamped
+addx61617 add  1E-401  -1E-401 ->  0E-398 Clamped
+addx61618 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
+
+-- and the extra-special ugly case; unusual minuses marked by -- *
+rounding:    floor
+-- exact zeros from zeros
+addx61620 add  0        0E-19  ->  0E-19
+addx61621 add -0        0E-19  -> -0E-19           -- *
+addx61622 add  0       -0E-19  -> -0E-19           -- *
+addx61623 add -0       -0E-19  -> -0E-19
+addx61624 add  0E-400   0E-19  ->  0E-398 Clamped
+addx61625 add -0E-400   0E-19  -> -0E-398 Clamped  -- *
+addx61626 add  0E-400  -0E-19  -> -0E-398 Clamped  -- *
+addx61627 add -0E-400  -0E-19  -> -0E-398 Clamped
+-- inexact zeros
+addx61631 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61632 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61633 add  1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
+addx61634 add -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
+-- some exact zeros from non-zeros
+addx61635 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
+addx61636 add -1E-401   1E-401 -> -0E-398 Clamped  -- *
+addx61637 add  1E-401  -1E-401 -> -0E-398 Clamped  -- *
+addx61638 add -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
+
+-- Examples from SQL proposal (Krishna Kulkarni)
+addx61701 add 130E-2    120E-2    -> 2.50
+addx61702 add 130E-2    12E-1     -> 2.50
+addx61703 add 130E-2    1E0       -> 2.30
+addx61704 add 1E2       1E4       -> 1.01E+4
+addx61705 subtract 130E-2  120E-2 -> 0.10
+addx61706 subtract 130E-2  12E-1  -> 0.10
+addx61707 subtract 130E-2  1E0    -> 0.30
+addx61708 subtract 1E2     1E4    -> -9.9E+3
+
+-- Gappy coefficients; check residue handling even with full coefficient gap
+rounding: half_even
+
+addx62001 add 1234567890123456 1      -> 1234567890123457
+addx62002 add 1234567890123456 0.6    -> 1234567890123457  Inexact Rounded
+addx62003 add 1234567890123456 0.06   -> 1234567890123456  Inexact Rounded
+addx62004 add 1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded
+addx62005 add 1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded
+addx62006 add 1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded
+addx62007 add 1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded
+addx62008 add 1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded
+addx62009 add 1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded
+addx62010 add 1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded
+addx62011 add 1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded
+addx62012 add 1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded
+addx62013 add 1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded
+addx62014 add 1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded
+addx62015 add 1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded
+addx62016 add 1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded
+addx62017 add 1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded
+addx62018 add 1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded
+addx62019 add 1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded
+addx62020 add 1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded
+addx62021 add 1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded
+
+-- widening second argument at gap
+addx62030 add 12345678 1                       -> 12345679
+addx62031 add 12345678 0.1                     -> 12345678.1
+addx62032 add 12345678 0.12                    -> 12345678.12
+addx62033 add 12345678 0.123                   -> 12345678.123
+addx62034 add 12345678 0.1234                  -> 12345678.1234
+addx62035 add 12345678 0.12345                 -> 12345678.12345
+addx62036 add 12345678 0.123456                -> 12345678.123456
+addx62037 add 12345678 0.1234567               -> 12345678.1234567
+addx62038 add 12345678 0.12345678              -> 12345678.12345678
+addx62039 add 12345678 0.123456789             -> 12345678.12345679 Inexact Rounded
+addx62040 add 12345678 0.123456785             -> 12345678.12345678 Inexact Rounded
+addx62041 add 12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded
+addx62042 add 12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded
+addx62043 add 12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded
+addx62044 add 12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded
+addx62045 add 12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded
+addx62046 add 12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded
+addx62047 add 12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded
+addx62048 add 12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded
+addx62049 add 12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded
+--                               90123456
+rounding: half_even
+addx62050 add 12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded
+addx62051 add 12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded
+addx62052 add 12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded
+addx62053 add 12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded
+addx62054 add 12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded
+addx62055 add 12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded
+addx62056 add 12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded
+addx62057 add 12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded
+addx62060 add 12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded
+addx62061 add 12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded
+addx62062 add 12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded
+addx62063 add 12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded
+addx62064 add 12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded
+addx62065 add 12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded
+addx62066 add 12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded
+addx62067 add 12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded
+-- far-out residues (full coefficient gap is 16+15 digits)
+rounding: up
+addx62070 add 12345678 1E-8                    -> 12345678.00000001
+addx62071 add 12345678 1E-9                    -> 12345678.00000001 Inexact Rounded
+addx62072 add 12345678 1E-10                   -> 12345678.00000001 Inexact Rounded
+addx62073 add 12345678 1E-11                   -> 12345678.00000001 Inexact Rounded
+addx62074 add 12345678 1E-12                   -> 12345678.00000001 Inexact Rounded
+addx62075 add 12345678 1E-13                   -> 12345678.00000001 Inexact Rounded
+addx62076 add 12345678 1E-14                   -> 12345678.00000001 Inexact Rounded
+addx62077 add 12345678 1E-15                   -> 12345678.00000001 Inexact Rounded
+addx62078 add 12345678 1E-16                   -> 12345678.00000001 Inexact Rounded
+addx62079 add 12345678 1E-17                   -> 12345678.00000001 Inexact Rounded
+addx62080 add 12345678 1E-18                   -> 12345678.00000001 Inexact Rounded
+addx62081 add 12345678 1E-19                   -> 12345678.00000001 Inexact Rounded
+addx62082 add 12345678 1E-20                   -> 12345678.00000001 Inexact Rounded
+addx62083 add 12345678 1E-25                   -> 12345678.00000001 Inexact Rounded
+addx62084 add 12345678 1E-30                   -> 12345678.00000001 Inexact Rounded
+addx62085 add 12345678 1E-31                   -> 12345678.00000001 Inexact Rounded
+addx62086 add 12345678 1E-32                   -> 12345678.00000001 Inexact Rounded
+addx62087 add 12345678 1E-33                   -> 12345678.00000001 Inexact Rounded
+addx62088 add 12345678 1E-34                   -> 12345678.00000001 Inexact Rounded
+addx62089 add 12345678 1E-35                   -> 12345678.00000001 Inexact Rounded
+
+-- payload decapitate
+precision: 5
+addx62100 add      11  sNaN123456789 ->  NaN56789  Invalid_operation
+addx62101 add     -11 -sNaN123456789 -> -NaN56789  Invalid_operation
+addx62102 add      11   NaN123456789 ->  NaN56789
+addx62103 add     -11  -NaN123456789 -> -NaN56789
 
 -- Null tests
 addx9990 add 10  # -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/and.decTest b/Lib/test/decimaltestdata/and.decTest
new file mode 100644
index 0000000..90490a5
--- /dev/null
+++ b/Lib/test/decimaltestdata/and.decTest
@@ -0,0 +1,338 @@
+------------------------------------------------------------------------

+-- and.decTest -- digitwise logical AND                               --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check (truth table)

+andx001 and             0    0 ->    0

+andx002 and             0    1 ->    0

+andx003 and             1    0 ->    0

+andx004 and             1    1 ->    1

+andx005 and          1100 1010 -> 1000

+andx006 and          1111   10 ->   10

+andx007 and          1111 1010 -> 1010

+

+-- and at msd and msd-1

+andx010 and 000000000 000000000 ->           0

+andx011 and 000000000 100000000 ->           0

+andx012 and 100000000 000000000 ->           0

+andx013 and 100000000 100000000 ->   100000000

+andx014 and 000000000 000000000 ->           0

+andx015 and 000000000 010000000 ->           0

+andx016 and 010000000 000000000 ->           0

+andx017 and 010000000 010000000 ->    10000000

+

+-- Various lengths

+--          123456789     123456789      123456789

+andx021 and 111111111     111111111  ->  111111111

+andx022 and 111111111111  111111111  ->  111111111

+andx023 and 111111111111   11111111  ->   11111111

+andx024 and 111111111      11111111  ->   11111111

+andx025 and 111111111       1111111  ->    1111111

+andx026 and 111111111111     111111  ->     111111

+andx027 and 111111111111      11111  ->      11111

+andx028 and 111111111111       1111  ->       1111

+andx029 and 111111111111        111  ->        111

+andx031 and 111111111111         11  ->         11

+andx032 and 111111111111          1  ->          1

+andx033 and 111111111111 1111111111  ->  111111111

+andx034 and 11111111111 11111111111  ->  111111111

+andx035 and 1111111111 111111111111  ->  111111111

+andx036 and 111111111 1111111111111  ->  111111111

+

+andx040 and 111111111  111111111111  ->  111111111

+andx041 and  11111111  111111111111  ->   11111111

+andx042 and  11111111     111111111  ->   11111111

+andx043 and   1111111     111111111  ->    1111111

+andx044 and    111111     111111111  ->     111111

+andx045 and     11111     111111111  ->      11111

+andx046 and      1111     111111111  ->       1111

+andx047 and       111     111111111  ->        111

+andx048 and        11     111111111  ->         11

+andx049 and         1     111111111  ->          1

+

+andx050 and 1111111111  1  ->  1

+andx051 and  111111111  1  ->  1

+andx052 and   11111111  1  ->  1

+andx053 and    1111111  1  ->  1

+andx054 and     111111  1  ->  1

+andx055 and      11111  1  ->  1

+andx056 and       1111  1  ->  1

+andx057 and        111  1  ->  1

+andx058 and         11  1  ->  1

+andx059 and          1  1  ->  1

+

+andx060 and 1111111111  0  ->  0

+andx061 and  111111111  0  ->  0

+andx062 and   11111111  0  ->  0

+andx063 and    1111111  0  ->  0

+andx064 and     111111  0  ->  0

+andx065 and      11111  0  ->  0

+andx066 and       1111  0  ->  0

+andx067 and        111  0  ->  0

+andx068 and         11  0  ->  0

+andx069 and          1  0  ->  0

+

+andx070 and 1  1111111111  ->  1

+andx071 and 1   111111111  ->  1

+andx072 and 1    11111111  ->  1

+andx073 and 1     1111111  ->  1

+andx074 and 1      111111  ->  1

+andx075 and 1       11111  ->  1

+andx076 and 1        1111  ->  1

+andx077 and 1         111  ->  1

+andx078 and 1          11  ->  1

+andx079 and 1           1  ->  1

+

+andx080 and 0  1111111111  ->  0

+andx081 and 0   111111111  ->  0

+andx082 and 0    11111111  ->  0

+andx083 and 0     1111111  ->  0

+andx084 and 0      111111  ->  0

+andx085 and 0       11111  ->  0

+andx086 and 0        1111  ->  0

+andx087 and 0         111  ->  0

+andx088 and 0          11  ->  0

+andx089 and 0           1  ->  0

+

+andx090 and 011111111  111111111  ->   11111111

+andx091 and 101111111  111111111  ->  101111111

+andx092 and 110111111  111111111  ->  110111111

+andx093 and 111011111  111111111  ->  111011111

+andx094 and 111101111  111111111  ->  111101111

+andx095 and 111110111  111111111  ->  111110111

+andx096 and 111111011  111111111  ->  111111011

+andx097 and 111111101  111111111  ->  111111101

+andx098 and 111111110  111111111  ->  111111110

+

+andx100 and 111111111  011111111  ->   11111111

+andx101 and 111111111  101111111  ->  101111111

+andx102 and 111111111  110111111  ->  110111111

+andx103 and 111111111  111011111  ->  111011111

+andx104 and 111111111  111101111  ->  111101111

+andx105 and 111111111  111110111  ->  111110111

+andx106 and 111111111  111111011  ->  111111011

+andx107 and 111111111  111111101  ->  111111101

+andx108 and 111111111  111111110  ->  111111110

+

+-- non-0/1 should not be accepted, nor should signs

+andx220 and 111111112  111111111  ->  NaN Invalid_operation

+andx221 and 333333333  333333333  ->  NaN Invalid_operation

+andx222 and 555555555  555555555  ->  NaN Invalid_operation

+andx223 and 777777777  777777777  ->  NaN Invalid_operation

+andx224 and 999999999  999999999  ->  NaN Invalid_operation

+andx225 and 222222222  999999999  ->  NaN Invalid_operation

+andx226 and 444444444  999999999  ->  NaN Invalid_operation

+andx227 and 666666666  999999999  ->  NaN Invalid_operation

+andx228 and 888888888  999999999  ->  NaN Invalid_operation

+andx229 and 999999999  222222222  ->  NaN Invalid_operation

+andx230 and 999999999  444444444  ->  NaN Invalid_operation

+andx231 and 999999999  666666666  ->  NaN Invalid_operation

+andx232 and 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+andx240 and  567468689 -934981942 ->  NaN Invalid_operation

+andx241 and  567367689  934981942 ->  NaN Invalid_operation

+andx242 and -631917772 -706014634 ->  NaN Invalid_operation

+andx243 and -756253257  138579234 ->  NaN Invalid_operation

+andx244 and  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+andx250 and  200000000 100000000 ->  NaN Invalid_operation

+andx251 and  700000000 100000000 ->  NaN Invalid_operation

+andx252 and  800000000 100000000 ->  NaN Invalid_operation

+andx253 and  900000000 100000000 ->  NaN Invalid_operation

+andx254 and  200000000 000000000 ->  NaN Invalid_operation

+andx255 and  700000000 000000000 ->  NaN Invalid_operation

+andx256 and  800000000 000000000 ->  NaN Invalid_operation

+andx257 and  900000000 000000000 ->  NaN Invalid_operation

+andx258 and  100000000 200000000 ->  NaN Invalid_operation

+andx259 and  100000000 700000000 ->  NaN Invalid_operation

+andx260 and  100000000 800000000 ->  NaN Invalid_operation

+andx261 and  100000000 900000000 ->  NaN Invalid_operation

+andx262 and  000000000 200000000 ->  NaN Invalid_operation

+andx263 and  000000000 700000000 ->  NaN Invalid_operation

+andx264 and  000000000 800000000 ->  NaN Invalid_operation

+andx265 and  000000000 900000000 ->  NaN Invalid_operation

+-- test MSD-1

+andx270 and  020000000 100000000 ->  NaN Invalid_operation

+andx271 and  070100000 100000000 ->  NaN Invalid_operation

+andx272 and  080010000 100000001 ->  NaN Invalid_operation

+andx273 and  090001000 100000010 ->  NaN Invalid_operation

+andx274 and  100000100 020010100 ->  NaN Invalid_operation

+andx275 and  100000000 070001000 ->  NaN Invalid_operation

+andx276 and  100000010 080010100 ->  NaN Invalid_operation

+andx277 and  100000000 090000010 ->  NaN Invalid_operation

+-- test LSD

+andx280 and  001000002 100000000 ->  NaN Invalid_operation

+andx281 and  000000007 100000000 ->  NaN Invalid_operation

+andx282 and  000000008 100000000 ->  NaN Invalid_operation

+andx283 and  000000009 100000000 ->  NaN Invalid_operation

+andx284 and  100000000 000100002 ->  NaN Invalid_operation

+andx285 and  100100000 001000007 ->  NaN Invalid_operation

+andx286 and  100010000 010000008 ->  NaN Invalid_operation

+andx287 and  100001000 100000009 ->  NaN Invalid_operation

+-- test Middie

+andx288 and  001020000 100000000 ->  NaN Invalid_operation

+andx289 and  000070001 100000000 ->  NaN Invalid_operation

+andx290 and  000080000 100010000 ->  NaN Invalid_operation

+andx291 and  000090000 100001000 ->  NaN Invalid_operation

+andx292 and  100000010 000020100 ->  NaN Invalid_operation

+andx293 and  100100000 000070010 ->  NaN Invalid_operation

+andx294 and  100010100 000080001 ->  NaN Invalid_operation

+andx295 and  100001000 000090000 ->  NaN Invalid_operation

+-- signs

+andx296 and -100001000 -000000000 ->  NaN Invalid_operation

+andx297 and -100001000  000010000 ->  NaN Invalid_operation

+andx298 and  100001000 -000000000 ->  NaN Invalid_operation

+andx299 and  100001000  000011000 ->  1000

+

+-- Nmax, Nmin, Ntiny

+andx331 and  2   9.99999999E+999     -> NaN Invalid_operation

+andx332 and  3   1E-999              -> NaN Invalid_operation

+andx333 and  4   1.00000000E-999     -> NaN Invalid_operation

+andx334 and  5   1E-1007             -> NaN Invalid_operation

+andx335 and  6   -1E-1007            -> NaN Invalid_operation

+andx336 and  7   -1.00000000E-999    -> NaN Invalid_operation

+andx337 and  8   -1E-999             -> NaN Invalid_operation

+andx338 and  9   -9.99999999E+999    -> NaN Invalid_operation

+andx341 and  9.99999999E+999     -18 -> NaN Invalid_operation

+andx342 and  1E-999               01 -> NaN Invalid_operation

+andx343 and  1.00000000E-999     -18 -> NaN Invalid_operation

+andx344 and  1E-1007              18 -> NaN Invalid_operation

+andx345 and  -1E-1007            -10 -> NaN Invalid_operation

+andx346 and  -1.00000000E-999     18 -> NaN Invalid_operation

+andx347 and  -1E-999              10 -> NaN Invalid_operation

+andx348 and  -9.99999999E+999    -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+andx361 and  1.0                  1  -> NaN Invalid_operation

+andx362 and  1E+1                 1  -> NaN Invalid_operation

+andx363 and  0.0                  1  -> NaN Invalid_operation

+andx364 and  0E+1                 1  -> NaN Invalid_operation

+andx365 and  9.9                  1  -> NaN Invalid_operation

+andx366 and  9E+1                 1  -> NaN Invalid_operation

+andx371 and  0 1.0                   -> NaN Invalid_operation

+andx372 and  0 1E+1                  -> NaN Invalid_operation

+andx373 and  0 0.0                   -> NaN Invalid_operation

+andx374 and  0 0E+1                  -> NaN Invalid_operation

+andx375 and  0 9.9                   -> NaN Invalid_operation

+andx376 and  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+andx780 and -Inf  -Inf   -> NaN Invalid_operation

+andx781 and -Inf  -1000  -> NaN Invalid_operation

+andx782 and -Inf  -1     -> NaN Invalid_operation

+andx783 and -Inf  -0     -> NaN Invalid_operation

+andx784 and -Inf   0     -> NaN Invalid_operation

+andx785 and -Inf   1     -> NaN Invalid_operation

+andx786 and -Inf   1000  -> NaN Invalid_operation

+andx787 and -1000 -Inf   -> NaN Invalid_operation

+andx788 and -Inf  -Inf   -> NaN Invalid_operation

+andx789 and -1    -Inf   -> NaN Invalid_operation

+andx790 and -0    -Inf   -> NaN Invalid_operation

+andx791 and  0    -Inf   -> NaN Invalid_operation

+andx792 and  1    -Inf   -> NaN Invalid_operation

+andx793 and  1000 -Inf   -> NaN Invalid_operation

+andx794 and  Inf  -Inf   -> NaN Invalid_operation

+

+andx800 and  Inf  -Inf   -> NaN Invalid_operation

+andx801 and  Inf  -1000  -> NaN Invalid_operation

+andx802 and  Inf  -1     -> NaN Invalid_operation

+andx803 and  Inf  -0     -> NaN Invalid_operation

+andx804 and  Inf   0     -> NaN Invalid_operation

+andx805 and  Inf   1     -> NaN Invalid_operation

+andx806 and  Inf   1000  -> NaN Invalid_operation

+andx807 and  Inf   Inf   -> NaN Invalid_operation

+andx808 and -1000  Inf   -> NaN Invalid_operation

+andx809 and -Inf   Inf   -> NaN Invalid_operation

+andx810 and -1     Inf   -> NaN Invalid_operation

+andx811 and -0     Inf   -> NaN Invalid_operation

+andx812 and  0     Inf   -> NaN Invalid_operation

+andx813 and  1     Inf   -> NaN Invalid_operation

+andx814 and  1000  Inf   -> NaN Invalid_operation

+andx815 and  Inf   Inf   -> NaN Invalid_operation

+

+andx821 and  NaN -Inf    -> NaN Invalid_operation

+andx822 and  NaN -1000   -> NaN Invalid_operation

+andx823 and  NaN -1      -> NaN Invalid_operation

+andx824 and  NaN -0      -> NaN Invalid_operation

+andx825 and  NaN  0      -> NaN Invalid_operation

+andx826 and  NaN  1      -> NaN Invalid_operation

+andx827 and  NaN  1000   -> NaN Invalid_operation

+andx828 and  NaN  Inf    -> NaN Invalid_operation

+andx829 and  NaN  NaN    -> NaN Invalid_operation

+andx830 and -Inf  NaN    -> NaN Invalid_operation

+andx831 and -1000 NaN    -> NaN Invalid_operation

+andx832 and -1    NaN    -> NaN Invalid_operation

+andx833 and -0    NaN    -> NaN Invalid_operation

+andx834 and  0    NaN    -> NaN Invalid_operation

+andx835 and  1    NaN    -> NaN Invalid_operation

+andx836 and  1000 NaN    -> NaN Invalid_operation

+andx837 and  Inf  NaN    -> NaN Invalid_operation

+

+andx841 and  sNaN -Inf   ->  NaN  Invalid_operation

+andx842 and  sNaN -1000  ->  NaN  Invalid_operation

+andx843 and  sNaN -1     ->  NaN  Invalid_operation

+andx844 and  sNaN -0     ->  NaN  Invalid_operation

+andx845 and  sNaN  0     ->  NaN  Invalid_operation

+andx846 and  sNaN  1     ->  NaN  Invalid_operation

+andx847 and  sNaN  1000  ->  NaN  Invalid_operation

+andx848 and  sNaN  NaN   ->  NaN  Invalid_operation

+andx849 and  sNaN sNaN   ->  NaN  Invalid_operation

+andx850 and  NaN  sNaN   ->  NaN  Invalid_operation

+andx851 and -Inf  sNaN   ->  NaN  Invalid_operation

+andx852 and -1000 sNaN   ->  NaN  Invalid_operation

+andx853 and -1    sNaN   ->  NaN  Invalid_operation

+andx854 and -0    sNaN   ->  NaN  Invalid_operation

+andx855 and  0    sNaN   ->  NaN  Invalid_operation

+andx856 and  1    sNaN   ->  NaN  Invalid_operation

+andx857 and  1000 sNaN   ->  NaN  Invalid_operation

+andx858 and  Inf  sNaN   ->  NaN  Invalid_operation

+andx859 and  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+andx861 and  NaN1   -Inf    -> NaN Invalid_operation

+andx862 and +NaN2   -1000   -> NaN Invalid_operation

+andx863 and  NaN3    1000   -> NaN Invalid_operation

+andx864 and  NaN4    Inf    -> NaN Invalid_operation

+andx865 and  NaN5   +NaN6   -> NaN Invalid_operation

+andx866 and -Inf     NaN7   -> NaN Invalid_operation

+andx867 and -1000    NaN8   -> NaN Invalid_operation

+andx868 and  1000    NaN9   -> NaN Invalid_operation

+andx869 and  Inf    +NaN10  -> NaN Invalid_operation

+andx871 and  sNaN11  -Inf   -> NaN Invalid_operation

+andx872 and  sNaN12  -1000  -> NaN Invalid_operation

+andx873 and  sNaN13   1000  -> NaN Invalid_operation

+andx874 and  sNaN14   NaN17 -> NaN Invalid_operation

+andx875 and  sNaN15  sNaN18 -> NaN Invalid_operation

+andx876 and  NaN16   sNaN19 -> NaN Invalid_operation

+andx877 and -Inf    +sNaN20 -> NaN Invalid_operation

+andx878 and -1000    sNaN21 -> NaN Invalid_operation

+andx879 and  1000    sNaN22 -> NaN Invalid_operation

+andx880 and  Inf     sNaN23 -> NaN Invalid_operation

+andx881 and +NaN25  +sNaN24 -> NaN Invalid_operation

+andx882 and -NaN26    NaN28 -> NaN Invalid_operation

+andx883 and -sNaN27  sNaN29 -> NaN Invalid_operation

+andx884 and  1000    -NaN30 -> NaN Invalid_operation

+andx885 and  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/base.decTest b/Lib/test/decimaltestdata/base.decTest
index 96a4b9d..58ce91c 100644
--- a/Lib/test/decimaltestdata/base.decTest
+++ b/Lib/test/decimaltestdata/base.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- base.decTest -- base decimal <--> string conversions               --
--- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,8 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
+extended:    1
 
 -- This file tests base conversions from string to a decimal number
 -- and back to a string (in either Scientific or Engineering form)
@@ -26,11 +27,10 @@
 -- to conform to emax and precision settings (that is, numbers will
 -- conform to rules and exponent will be in permitted range).
 
-precision:   15
+precision:   16
 rounding:    half_up
-maxExponent: 999999999
-minExponent: -999999999
-extended:    1
+maxExponent: 384
+minExponent: -383
 
 basx001 toSci       0 -> 0
 basx002 toSci       1 -> 1
@@ -73,41 +73,62 @@
 
 -- String [many more examples are implicitly tested elsewhere]
 -- strings without E cannot generate E in result
-basx100 toSci "12"        -> '12'
-basx101 toSci "-76"       -> '-76'
-basx102 toSci "12.76"     -> '12.76'
-basx103 toSci "+12.76"    -> '12.76'
-basx104 toSci "012.76"    -> '12.76'
-basx105 toSci "+0.003"    -> '0.003'
-basx106 toSci "17."       -> '17'
-basx107 toSci ".5"        -> '0.5'
-basx108 toSci "044"       -> '44'
-basx109 toSci "0044"      -> '44'
-basx110 toSci "0.0005"      -> '0.0005'
-basx111 toSci "00.00005"    -> '0.00005'
-basx112 toSci "0.000005"    -> '0.000005'
-basx113 toSci "0.0000050"   -> '0.0000050'
-basx114 toSci "0.0000005"   -> '5E-7'
-basx115 toSci "0.00000005"  -> '5E-8'
-basx116 toSci "12345678.543210" -> '12345678.543210'
-basx117 toSci "2345678.543210" -> '2345678.543210'
-basx118 toSci "345678.543210" -> '345678.543210'
-basx119 toSci "0345678.54321" -> '345678.54321'
-basx120 toSci "345678.5432" -> '345678.5432'
-basx121 toSci "+345678.5432" -> '345678.5432'
-basx122 toSci "+0345678.5432" -> '345678.5432'
-basx123 toSci "+00345678.5432" -> '345678.5432'
-basx124 toSci "-345678.5432"  -> '-345678.5432'
-basx125 toSci "-0345678.5432"  -> '-345678.5432'
-basx126 toSci "-00345678.5432"  -> '-345678.5432'
+basx040 toSci "12"        -> '12'
+basx041 toSci "-76"       -> '-76'
+basx042 toSci "12.76"     -> '12.76'
+basx043 toSci "+12.76"    -> '12.76'
+basx044 toSci "012.76"    -> '12.76'
+basx045 toSci "+0.003"    -> '0.003'
+basx046 toSci "17."       -> '17'
+basx047 toSci ".5"        -> '0.5'
+basx048 toSci "044"       -> '44'
+basx049 toSci "0044"      -> '44'
+basx050 toSci "0.0005"      -> '0.0005'
+basx051 toSci "00.00005"    -> '0.00005'
+basx052 toSci "0.000005"    -> '0.000005'
+basx053 toSci "0.0000050"   -> '0.0000050'
+basx054 toSci "0.0000005"   -> '5E-7'
+basx055 toSci "0.00000005"  -> '5E-8'
+basx056 toSci "12345678.543210" -> '12345678.543210'
+basx057 toSci "2345678.543210" -> '2345678.543210'
+basx058 toSci "345678.543210" -> '345678.543210'
+basx059 toSci "0345678.54321" -> '345678.54321'
+basx060 toSci "345678.5432" -> '345678.5432'
+basx061 toSci "+345678.5432" -> '345678.5432'
+basx062 toSci "+0345678.5432" -> '345678.5432'
+basx063 toSci "+00345678.5432" -> '345678.5432'
+basx064 toSci "-345678.5432"  -> '-345678.5432'
+basx065 toSci "-0345678.5432"  -> '-345678.5432'
+basx066 toSci "-00345678.5432"  -> '-345678.5432'
 -- examples
-basx127 toSci "5E-6"        -> '0.000005'
-basx128 toSci "50E-7"       -> '0.0000050'
-basx129 toSci "5E-7"        -> '5E-7'
-
+basx067 toSci "5E-6"        -> '0.000005'
+basx068 toSci "50E-7"       -> '0.0000050'
+basx069 toSci "5E-7"        -> '5E-7'
 
 -- [No exotics as no Unicode]
 
+-- rounded with dots in all (including edge) places
+basx071 toSci  .1234567890123456123  -> 0.1234567890123456 Inexact Rounded
+basx072 toSci  1.234567890123456123  -> 1.234567890123456 Inexact Rounded
+basx073 toSci  12.34567890123456123  -> 12.34567890123456 Inexact Rounded
+basx074 toSci  123.4567890123456123  -> 123.4567890123456 Inexact Rounded
+basx075 toSci  1234.567890123456123  -> 1234.567890123456 Inexact Rounded
+basx076 toSci  12345.67890123456123  -> 12345.67890123456 Inexact Rounded
+basx077 toSci  123456.7890123456123  -> 123456.7890123456 Inexact Rounded
+basx078 toSci  1234567.890123456123  -> 1234567.890123456 Inexact Rounded
+basx079 toSci  12345678.90123456123  -> 12345678.90123456 Inexact Rounded
+basx080 toSci  123456789.0123456123  -> 123456789.0123456 Inexact Rounded
+basx081 toSci  1234567890.123456123  -> 1234567890.123456 Inexact Rounded
+basx082 toSci  12345678901.23456123  -> 12345678901.23456 Inexact Rounded
+basx083 toSci  123456789012.3456123  -> 123456789012.3456 Inexact Rounded
+basx084 toSci  1234567890123.456123  -> 1234567890123.456 Inexact Rounded
+basx085 toSci  12345678901234.56123  -> 12345678901234.56 Inexact Rounded
+basx086 toSci  123456789012345.6123  -> 123456789012345.6 Inexact Rounded
+basx087 toSci  1234567890123456.123  -> 1234567890123456  Inexact Rounded
+basx088 toSci  12345678901234561.23  -> 1.234567890123456E+16 Inexact Rounded
+basx089 toSci  123456789012345612.3  -> 1.234567890123456E+17 Inexact Rounded
+basx090 toSci  1234567890123456123.  -> 1.234567890123456E+18 Inexact Rounded
+
 -- Numbers with E
 basx130 toSci "0.000E-1"  -> '0.0000'
 basx131 toSci "0.000E-2"  -> '0.00000'
@@ -225,21 +246,6 @@
 basx262 toSci "0.1265E+8"  -> '1.265E+7'
 basx263 toSci "0.1265E+20" -> '1.265E+19'
 
-basx270 toSci "0.09e999"  -> '9E+997'
-basx271 toSci "0.9e999"   -> '9E+998'
-basx272 toSci "9e999"     -> '9E+999'
-basx273 toSci "9.9e999"   -> '9.9E+999'
-basx274 toSci "9.99e999"  -> '9.99E+999'
-basx275 toSci "9.99e-999" -> '9.99E-999'
-basx276 toSci "9.9e-999"  -> '9.9E-999'
-basx277 toSci "9e-999"    -> '9E-999'
-basx279 toSci "99e-999"   -> '9.9E-998'
-basx280 toSci "999e-999"  -> '9.99E-997'
-basx281 toSci '0.9e-998'  -> '9E-999'
-basx282 toSci '0.09e-997' -> '9E-999'
-basx283 toSci '0.1e1000'  -> '1E+999'
-basx284 toSci '10e-1000'  -> '1.0E-999'
-
 -- some more negative zeros [systematic tests below]
 basx290 toSci "-0.000E-1"  -> '-0.0000'
 basx291 toSci "-0.000E-2"  -> '-0.00000'
@@ -418,6 +424,22 @@
 basx474  toSci 1000000009000 -> 1.00000001E+12   Rounded Inexact
 basx475  toEng 1000000009000 -> 1.00000001E+12   Rounded Inexact
 
+-- all-nines rounding
+precision: 9
+rounding:  half_up
+basx270  toSci 999999999          ->   999999999
+basx271  toSci 9999999990         ->   9.99999999E+9      Rounded
+basx272  toSci 9999999991         ->   9.99999999E+9      Rounded Inexact
+basx273  toSci 9999999992         ->   9.99999999E+9      Rounded Inexact
+basx274  toSci 9999999993         ->   9.99999999E+9      Rounded Inexact
+basx275  toSci 9999999994         ->   9.99999999E+9      Rounded Inexact
+basx276  toSci 9999999995         ->   1.00000000E+10     Rounded Inexact
+basx277  toSci 9999999996         ->   1.00000000E+10     Rounded Inexact
+basx278  toSci 9999999997         ->   1.00000000E+10     Rounded Inexact
+basx279  toSci 9999999998         ->   1.00000000E+10     Rounded Inexact
+basx280  toSci 9999999999         ->   1.00000000E+10     Rounded Inexact
+basx281  toSci 9999999999999999   ->   1.00000000E+16     Rounded Inexact
+
 -- check rounding modes heeded
 precision: 5
 rounding:  ceiling
@@ -425,11 +447,11 @@
 bsrx402  toSci  1.234549   ->  1.2346  Rounded Inexact
 bsrx403  toSci  1.234550   ->  1.2346  Rounded Inexact
 bsrx404  toSci  1.234551   ->  1.2346  Rounded Inexact
-rounding:  down
+rounding:  up
 bsrx405  toSci  1.23450    ->  1.2345  Rounded
-bsrx406  toSci  1.234549   ->  1.2345  Rounded Inexact
-bsrx407  toSci  1.234550   ->  1.2345  Rounded Inexact
-bsrx408  toSci  1.234551   ->  1.2345  Rounded Inexact
+bsrx406  toSci  1.234549   ->  1.2346  Rounded Inexact
+bsrx407  toSci  1.234550   ->  1.2346  Rounded Inexact
+bsrx408  toSci  1.234551   ->  1.2346  Rounded Inexact
 rounding:  floor
 bsrx410  toSci  1.23450    ->  1.2345  Rounded
 bsrx411  toSci  1.234549   ->  1.2345  Rounded Inexact
@@ -464,11 +486,11 @@
 bsrx502  toSci -1.234549   -> -1.2345  Rounded Inexact
 bsrx503  toSci -1.234550   -> -1.2345  Rounded Inexact
 bsrx504  toSci -1.234551   -> -1.2345  Rounded Inexact
-rounding:  down
+rounding:  up
 bsrx505  toSci -1.23450    -> -1.2345  Rounded
-bsrx506  toSci -1.234549   -> -1.2345  Rounded Inexact
-bsrx507  toSci -1.234550   -> -1.2345  Rounded Inexact
-bsrx508  toSci -1.234551   -> -1.2345  Rounded Inexact
+bsrx506  toSci -1.234549   -> -1.2346  Rounded Inexact
+bsrx507  toSci -1.234550   -> -1.2346  Rounded Inexact
+bsrx508  toSci -1.234551   -> -1.2346  Rounded Inexact
 rounding:  floor
 bsrx510  toSci -1.23450    -> -1.2345  Rounded
 bsrx511  toSci -1.234549   -> -1.2346  Rounded Inexact
@@ -498,6 +520,24 @@
 bsrx534  toSci -1.234650   -> -1.2347  Rounded Inexact
 bsrx535  toSci -1.234551   -> -1.2346  Rounded Inexact
 
+-- a few larger exponents
+maxExponent: 999999999
+minExponent: -999999999
+basx480 toSci "0.09e999"  -> '9E+997'
+basx481 toSci "0.9e999"   -> '9E+998'
+basx482 toSci "9e999"     -> '9E+999'
+basx483 toSci "9.9e999"   -> '9.9E+999'
+basx484 toSci "9.99e999"  -> '9.99E+999'
+basx485 toSci "9.99e-999" -> '9.99E-999'
+basx486 toSci "9.9e-999"  -> '9.9E-999'
+basx487 toSci "9e-999"    -> '9E-999'
+basx489 toSci "99e-999"   -> '9.9E-998'
+basx490 toSci "999e-999"  -> '9.99E-997'
+basx491 toSci '0.9e-998'  -> '9E-999'
+basx492 toSci '0.09e-997' -> '9E-999'
+basx493 toSci '0.1e1000'  -> '1E+999'
+basx494 toSci '10e-1000'  -> '1.0E-999'
+
 rounding:  half_up
 precision: 9
 
@@ -580,32 +620,23 @@
 basx574 toSci "xNaN"            -> NaN Conversion_syntax
 basx575 toSci "0sNaN"           -> NaN Conversion_syntax
 
--- subnormals and overflows
-basx576 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded
-basx577 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded
-basx578 toSci '0.9e-999999999'     -> 9E-1000000000 Subnormal
-basx579 toSci '0.09e-999999999'    -> 9E-1000000001 Subnormal
-basx580 toSci '0.1e1000000000'     -> 1E+999999999
-basx581 toSci '10e-1000000000'     -> 1.0E-999999999
-basx582 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded
-basx583 toSci '99e-9999999999'     -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-basx584 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded
-basx585 toSci '1111e-9999999999'   -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-basx586 toSci '1111e-99999999999'  -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-basx587 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded
--- negatives the same
-basx588 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded
-basx589 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded
-basx590 toSci '-0.9e-999999999'    -> -9E-1000000000 Subnormal
-basx591 toSci '-0.09e-999999999'   -> -9E-1000000001 Subnormal
-basx592 toSci '-0.1e1000000000'    -> -1E+999999999
-basx593 toSci '-10e-1000000000'    -> -1.0E-999999999
-basx594 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded
-basx595 toSci '-99e-9999999999'    -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-basx596 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded
-basx597 toSci '-1111e-9999999999'  -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-basx598 toSci '-1111e-99999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-basx599 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
+-- some baddies with dots and Es and dots and specials
+basx576 toSci  'e+1'            ->  NaN Conversion_syntax
+basx577 toSci  '.e+1'           ->  NaN Conversion_syntax
+basx578 toSci  '+.e+1'          ->  NaN Conversion_syntax
+basx579 toSci  '-.e+'           ->  NaN Conversion_syntax
+basx580 toSci  '-.e'            ->  NaN Conversion_syntax
+basx581 toSci  'E+1'            ->  NaN Conversion_syntax
+basx582 toSci  '.E+1'           ->  NaN Conversion_syntax
+basx583 toSci  '+.E+1'          ->  NaN Conversion_syntax
+basx584 toSci  '-.E+'           ->  NaN Conversion_syntax
+basx585 toSci  '-.E'            ->  NaN Conversion_syntax
+
+basx586 toSci  '.NaN'           ->  NaN Conversion_syntax
+basx587 toSci  '-.NaN'          ->  NaN Conversion_syntax
+basx588 toSci  '+.sNaN'         ->  NaN Conversion_syntax
+basx589 toSci  '+.Inf'          ->  NaN Conversion_syntax
+basx590 toSci  '.Infinity'      ->  NaN Conversion_syntax
 
 -- Zeros
 basx601 toSci 0.000000000       -> 0E-9
@@ -686,6 +717,17 @@
 basx678 toSci  0.00E-8          -> 0E-10
 basx679 toSci  0.00E-9          -> 0E-11
 
+basx680 toSci  000000.          ->  0
+basx681 toSci   00000.          ->  0
+basx682 toSci    0000.          ->  0
+basx683 toSci     000.          ->  0
+basx684 toSci      00.          ->  0
+basx685 toSci       0.          ->  0
+basx686 toSci  +00000.          ->  0
+basx687 toSci  -00000.          -> -0
+basx688 toSci  +0.              ->  0
+basx689 toSci  -0.              -> -0
+
 -- Specials
 precision: 4
 basx700 toSci "NaN"             -> NaN
@@ -868,6 +910,62 @@
 basx878 toEng  0.00E-8          -> 0.0E-9
 basx879 toEng  0.00E-9          -> 0.00E-9
 
+
+rounding:  half_up
+precision: 9
+-- subnormals and overflows
+basx906 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded
+basx907 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded
+basx908 toSci '0.9e-999999999'     -> 9E-1000000000 Subnormal
+basx909 toSci '0.09e-999999999'    -> 9E-1000000001 Subnormal
+basx910 toSci '0.1e1000000000'     -> 1E+999999999
+basx911 toSci '10e-1000000000'     -> 1.0E-999999999
+basx912 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded
+basx913 toSci '99e-9999999999'     -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+basx914 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded
+basx915 toSci '1111e-9999999999'   -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+basx916 toSci '1111e-99999999999'  -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+basx917 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded
+-- negatives the same
+basx918 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded
+basx919 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded
+basx920 toSci '-0.9e-999999999'    -> -9E-1000000000 Subnormal
+basx921 toSci '-0.09e-999999999'   -> -9E-1000000001 Subnormal
+basx922 toSci '-0.1e1000000000'    -> -1E+999999999
+basx923 toSci '-10e-1000000000'    -> -1.0E-999999999
+basx924 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded
+basx925 toSci '-99e-9999999999'    -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+basx926 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded
+basx927 toSci '-1111e-9999999999'  -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+basx928 toSci '-1111e-99999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+basx929 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
+
+rounding:  ceiling
+basx930 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
+basx931 toSci '-7e1000000000'      -> -9.99999999E+999999999 Overflow  Inexact Rounded
+rounding:  up
+basx932 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
+basx933 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
+rounding:  down
+basx934 toSci  '7e1000000000'      ->  9.99999999E+999999999 Overflow  Inexact Rounded
+basx935 toSci '-7e1000000000'      -> -9.99999999E+999999999 Overflow  Inexact Rounded
+rounding:  floor
+basx936 toSci  '7e1000000000'      ->  9.99999999E+999999999 Overflow  Inexact Rounded
+basx937 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
+
+rounding:  half_up
+basx938 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
+basx939 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
+rounding:  half_even
+basx940 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
+basx941 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
+rounding:  half_down
+basx942 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
+basx943 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
+
+rounding:  half_even
+
+
 -- Giga exponent initial tests
 maxExponent: 999999999
 minExponent: -999999999
@@ -987,8 +1085,8 @@
 emax226 toSci  1E-8  ->  1E-8  Subnormal
 emax227 toSci  1E-9  ->  1E-9  Subnormal
 emax228 toSci  1E-10 ->  1E-10 Subnormal
-emax229 toSci  1E-11 ->  0E-10 Underflow Subnormal Inexact Rounded
-emax230 toSci  1E-12 ->  0E-10 Underflow Subnormal Inexact Rounded
+emax229 toSci  1E-11 ->  0E-10 Underflow Subnormal Inexact Rounded Clamped
+emax230 toSci  1E-12 ->  0E-10 Underflow Subnormal Inexact Rounded Clamped
 
 maxexponent: 7
 minexponent: -7
@@ -1003,7 +1101,7 @@
 
 maxexponent: 9
 minexponent: -9
-emax240 toSci  1E-21 ->  0E-17 Subnormal Underflow Inexact Rounded
+emax240 toSci  1E-21 ->  0E-17 Subnormal Underflow Inexact Rounded Clamped
 emax241 toSci  1E-10 ->  1E-10 Subnormal
 emax242 toSci  1E-9  ->  1E-9
 emax243 toSci  1E-8  ->  1E-8
@@ -1015,7 +1113,7 @@
 
 maxexponent: 10  -- boundary
 minexponent: -10
-emax250 toSci  1E-21 ->  0E-18 Underflow Subnormal Inexact Rounded
+emax250 toSci  1E-21 ->  0E-18 Underflow Subnormal Inexact Rounded Clamped
 emax251 toSci  1E-11 ->  1E-11 Subnormal
 emax252 toSci  1E-10 ->  1E-10
 emax253 toSci  1E-9  ->  1E-9
@@ -1025,7 +1123,7 @@
 emax257 toSci  1E+10 ->  1E+10
 emax258 toSci  1E+11 ->  Infinity Overflow Inexact Rounded
 
-emax260 toSci  1.00E-21 ->  0E-18 Underflow Subnormal Inexact Rounded
+emax260 toSci  1.00E-21 ->  0E-18 Underflow Subnormal Inexact Rounded Clamped
 emax261 toSci  1.00E-11 ->  1.00E-11 Subnormal
 emax262 toSci  1.00E-10 ->  1.00E-10
 emax263 toSci  1.00E-9  ->  1.00E-9
@@ -1034,7 +1132,7 @@
 emax266 toSci  1.00E+9  ->  1.00E+9
 emax267 toSci  1.00E+10 ->  1.00E+10
 emax268 toSci  1.00E+11 ->  Infinity Overflow Inexact Rounded
-emax270 toSci  9.99E-21 ->  0E-18 Underflow Subnormal Inexact Rounded
+emax270 toSci  9.99E-21 ->  0E-18 Underflow Subnormal Inexact Rounded Clamped
 emax271 toSci  9.99E-11 ->  9.99E-11 Subnormal
 emax272 toSci  9.99E-10 ->  9.99E-10
 emax273 toSci  9.99E-9  ->  9.99E-9
@@ -1046,7 +1144,7 @@
 
 maxexponent: 99
 minexponent: -99
-emax280 toSci  1E-120 ->  0E-107 Underflow Subnormal Inexact Rounded
+emax280 toSci  1E-120 ->  0E-107 Underflow Subnormal Inexact Rounded Clamped
 emax281 toSci  1E-100 ->  1E-100 Subnormal
 emax282 toSci  1E-99  ->  1E-99
 emax283 toSci  1E-98  ->  1E-98
@@ -1093,7 +1191,7 @@
 
 maxexponent: 999999999
 minexponent: -999999999
-emax347 toSci  1E-1000000008     ->  0E-1000000007 Underflow Subnormal Inexact Rounded
+emax347 toSci  1E-1000000008     ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 emax348 toSci  1E-1000000007     ->  1E-1000000007 Subnormal
 emax349 toSci  1E-1000000000     ->  1E-1000000000 Subnormal
 emax350 toSci  1E-999999999      ->  1E-999999999
@@ -1103,7 +1201,7 @@
 emax354 toSci  1.000E-999999999  ->  1.000E-999999999
 emax355 toSci  1.000E+999999999  ->  1.000E+999999999
 emax356 toSci  1.000E+1000000000 ->  Infinity Overflow Inexact Rounded
-emax357 toSci  1.001E-1000000008 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
+emax357 toSci  1.001E-1000000008 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 emax358 toSci  1.001E-1000000007 ->  1E-1000000007 Subnormal Inexact Rounded Underflow
 emax359 toSci  1.001E-1000000000 ->  1.001E-1000000000 Subnormal
 emax360 toSci  1.001E-999999999  ->  1.001E-999999999
@@ -1113,7 +1211,7 @@
 emax364 toSci  9.000E-999999999  ->  9.000E-999999999
 emax365 toSci  9.000E+999999999  ->  9.000E+999999999
 emax366 toSci  9.000E+1000000000 ->  Infinity Overflow Inexact Rounded
-emax367 toSci  9.999E-1000000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
+emax367 toSci  9.999E-1000000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 emax368 toSci  9.999E-1000000008 ->  1E-1000000007 Underflow Subnormal Inexact Rounded
 emax369 toSci  9.999E-1000000007 ->  1.0E-1000000006 Underflow Subnormal Inexact Rounded
 emax370 toSci  9.999E-1000000000 ->  9.999E-1000000000 Subnormal
@@ -1129,11 +1227,11 @@
 emax379 toSci -1.000E-999999999  -> -1.000E-999999999
 emax380 toSci -1.000E+999999999  -> -1.000E+999999999
 emax381 toSci -1.000E+1000000000 -> -Infinity Overflow Inexact Rounded
-emax382 toSci -1.001E-1000000008 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+emax382 toSci -1.001E-1000000008 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 emax383 toSci -1.001E-999999999  -> -1.001E-999999999
 emax384 toSci -1.001E+999999999  -> -1.001E+999999999
 emax385 toSci -1.001E+1000000000 -> -Infinity Overflow Inexact Rounded
-emax386 toSci -9.000E-1000000123 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+emax386 toSci -9.000E-1000000123 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 emax387 toSci -9.000E-999999999  -> -9.000E-999999999
 emax388 toSci -9.000E+999999999  -> -9.000E+999999999
 emax389 toSci -9.000E+1000000000 -> -Infinity Overflow Inexact Rounded
@@ -1168,11 +1266,11 @@
 emax417 toSci  0.000250E-999   -> 2E-1003     Underflow Subnormal Inexact Rounded
 emax418 toSci  0.000251E-999   -> 3E-1003     Underflow Subnormal Inexact Rounded
 emax419 toSci  0.00009E-999    -> 1E-1003     Underflow Subnormal Inexact Rounded
-emax420 toSci  0.00005E-999    -> 0E-1003     Underflow Subnormal Inexact Rounded
-emax421 toSci  0.00003E-999    -> 0E-1003     Underflow Subnormal Inexact Rounded
-emax422 toSci  0.000009E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded
-emax423 toSci  0.000005E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded
-emax424 toSci  0.000003E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded
+emax420 toSci  0.00005E-999    -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
+emax421 toSci  0.00003E-999    -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
+emax422 toSci  0.000009E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
+emax423 toSci  0.000005E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
+emax424 toSci  0.000003E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
 
 emax425 toSci  0.001049E-999   -> 1.0E-1002   Underflow Subnormal Inexact Rounded
 emax426 toSci  0.001050E-999   -> 1.0E-1002   Underflow Subnormal Inexact Rounded
@@ -1223,9 +1321,9 @@
 emax473 toSci  0.0099999E-999      -> 1.00E-1001  Underflow Subnormal Inexact Rounded
 emax474 toSci  0.00099999E-999     -> 1.0E-1002   Underflow Subnormal Inexact Rounded
 emax475 toSci  0.000099999E-999    -> 1E-1003     Underflow Subnormal Inexact Rounded
-emax476 toSci  0.0000099999E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded
-emax477 toSci  0.00000099999E-999  -> 0E-1003     Underflow Subnormal Inexact Rounded
-emax478 toSci  0.000000099999E-999 -> 0E-1003     Underflow Subnormal Inexact Rounded
+emax476 toSci  0.0000099999E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
+emax477 toSci  0.00000099999E-999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
+emax478 toSci  0.000000099999E-999 -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
 
 -- Exponents with insignificant leading zeros
 precision:   16
@@ -1248,9 +1346,9 @@
 basx1021 tosci 1e+2147483649 -> Infinity Overflow Inexact Rounded
 basx1022 tosci 1e+2147483648 -> Infinity Overflow Inexact Rounded
 basx1023 tosci 1e+2147483647 -> Infinity Overflow Inexact Rounded
-basx1024 tosci 1e-2147483647 -> 0E-1000000014 Underflow Subnormal Inexact Rounded
-basx1025 tosci 1e-2147483648 -> 0E-1000000014 Underflow Subnormal Inexact Rounded
-basx1026 tosci 1e-2147483649 -> 0E-1000000014 Underflow Subnormal Inexact Rounded
+basx1024 tosci 1e-2147483647 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped
+basx1025 tosci 1e-2147483648 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped
+basx1026 tosci 1e-2147483649 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped
 -- same unbalanced
 precision:   7
 maxExponent: 96
@@ -1258,9 +1356,9 @@
 basx1031 tosci 1e+2147483649 -> Infinity Overflow Inexact Rounded
 basx1032 tosci 1e+2147483648 -> Infinity Overflow Inexact Rounded
 basx1033 tosci 1e+2147483647 -> Infinity Overflow Inexact Rounded
-basx1034 tosci 1e-2147483647 -> 0E-101 Underflow Subnormal Inexact Rounded
-basx1035 tosci 1e-2147483648 -> 0E-101 Underflow Subnormal Inexact Rounded
-basx1036 tosci 1e-2147483649 -> 0E-101 Underflow Subnormal Inexact Rounded
+basx1034 tosci 1e-2147483647 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
+basx1035 tosci 1e-2147483648 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
+basx1036 tosci 1e-2147483649 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
 
 -- check for double-rounded subnormals
 precision:   5
@@ -1270,3 +1368,44 @@
 basx1042 toSci     1.52445E-80  ->  1.524E-80 Inexact Rounded Subnormal Underflow
 basx1043 toSci     1.52446E-80  ->  1.524E-80 Inexact Rounded Subnormal Underflow
 
+-- clamped zeros [see also clamp.decTest]
+precision:   34
+maxExponent: 6144
+minExponent: -6143
+
+basx1061 apply   0e+10000  ->  0E+6144 Clamped
+basx1062 apply   0e-10000  ->  0E-6176 Clamped
+basx1063 apply  -0e+10000  -> -0E+6144 Clamped
+basx1064 apply  -0e-10000  -> -0E-6176 Clamped
+
+precision:   16
+maxExponent: 384
+minExponent: -383
+
+basx1065 apply   0e+10000  ->  0E+384  Clamped
+basx1066 apply   0e-10000  ->  0E-398  Clamped
+basx1067 apply  -0e+10000  -> -0E+384  Clamped
+basx1068 apply  -0e-10000  -> -0E-398  Clamped
+
+-- same with IEEE clamping
+clamp:       1
+
+precision:   34
+maxExponent: 6144
+minExponent: -6143
+
+basx1071 apply   0e+10000  ->  0E+6111 Clamped
+basx1072 apply   0e-10000  ->  0E-6176 Clamped
+basx1073 apply  -0e+10000  -> -0E+6111 Clamped
+basx1074 apply  -0e-10000  -> -0E-6176 Clamped
+
+precision:   16
+maxExponent: 384
+minExponent: -383
+
+basx1075 apply   0e+10000  ->  0E+369  Clamped
+basx1076 apply   0e-10000  ->  0E-398  Clamped
+basx1077 apply  -0e+10000  -> -0E+369  Clamped
+basx1078 apply  -0e-10000  -> -0E-398  Clamped
+
+
diff --git a/Lib/test/decimaltestdata/clamp.decTest b/Lib/test/decimaltestdata/clamp.decTest
index 722971a..48e27c0 100644
--- a/Lib/test/decimaltestdata/clamp.decTest
+++ b/Lib/test/decimaltestdata/clamp.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- clamp.decTest -- clamped exponent tests (format-independent)       --
--- Copyright (c) IBM Corporation, 2000, 2003.  All rights reserved.   --
+-- Copyright (c) IBM Corporation, 2000, 2007.  All rights reserved.   --
 ------------------------------------------------------------------------
 -- Please see the document "General Decimal Arithmetic Testcases"     --
 -- at http://www2.hursley.ibm.com/decimal for the description of      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- This set of tests uses the same limits as the 8-byte concrete
 -- representation, but applies clamping without using format-specific
@@ -73,10 +73,10 @@
 clam093 apply   1.00000000001e-398      -> #0000000000000001  Subnormal Underflow Inexact Rounded
 clam094 apply   1.00000000000001e-398   -> #0000000000000001  Subnormal Underflow Inexact Rounded
 clam095 apply   1.000000000000001e-398  -> #0000000000000001  Subnormal Underflow Inexact Rounded
-clam096 apply   0.1e-398                -> #0000000000000000  Subnormal Underflow Inexact Rounded
-clam097 apply   0.00000000001e-398      -> #0000000000000000  Subnormal Underflow Inexact Rounded
-clam098 apply   0.00000000000001e-398   -> #0000000000000000  Subnormal Underflow Inexact Rounded
-clam099 apply   0.000000000000001e-398  -> #0000000000000000  Subnormal Underflow Inexact Rounded
+clam096 apply   0.1e-398                -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
+clam097 apply   0.00000000001e-398      -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
+clam098 apply   0.00000000000001e-398   -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
+clam099 apply   0.000000000000001e-398  -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
 
 -- Same again, negatives
 -- Nmax and similar
@@ -112,10 +112,10 @@
 clam193 apply   -1.00000000001e-398     -> #8000000000000001  Subnormal Underflow Inexact Rounded
 clam194 apply   -1.00000000000001e-398  -> #8000000000000001  Subnormal Underflow Inexact Rounded
 clam195 apply   -1.000000000000001e-398 -> #8000000000000001  Subnormal Underflow Inexact Rounded
-clam196 apply   -0.1e-398               -> #8000000000000000  Subnormal Underflow Inexact Rounded
-clam197 apply   -0.00000000001e-398     -> #8000000000000000  Subnormal Underflow Inexact Rounded
-clam198 apply   -0.00000000000001e-398  -> #8000000000000000  Subnormal Underflow Inexact Rounded
-clam199 apply   -0.000000000000001e-398 -> #8000000000000000  Subnormal Underflow Inexact Rounded
+clam196 apply   -0.1e-398               -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
+clam197 apply   -0.00000000001e-398     -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
+clam198 apply   -0.00000000000001e-398  -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
+clam199 apply   -0.000000000000001e-398 -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
 
 -- zeros
 clam401 apply   0E-500                  -> 0E-398  Clamped
@@ -184,6 +184,20 @@
 clam671 apply   9E+369                  -> 9E+369
 clam673 apply   9E+368                  -> 9E+368
 
+-- subnormals clamped to 0-Etiny
+precision:   16
+maxExponent: 384
+minExponent: -383
+clam681 apply 7E-398     -> 7E-398 Subnormal
+clam682 apply 0E-398     -> 0E-398
+clam683 apply 7E-399     -> 1E-398 Subnormal Underflow Inexact Rounded
+clam684 apply 4E-399     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
+clam685 apply 7E-400     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
+clam686 apply 7E-401     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
+clam687 apply 0E-399     -> 0E-398 Clamped
+clam688 apply 0E-400     -> 0E-398 Clamped
+clam689 apply 0E-401     -> 0E-398 Clamped
+
 -- example from documentation
 precision:   7
 rounding:    half_even
diff --git a/Lib/test/decimaltestdata/class.decTest b/Lib/test/decimaltestdata/class.decTest
new file mode 100644
index 0000000..61ad548
--- /dev/null
+++ b/Lib/test/decimaltestdata/class.decTest
@@ -0,0 +1,131 @@
+------------------------------------------------------------------------

+-- class.decTest -- Class operations                                  --

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

+

+-- [New 2006.11.27]

+

+precision:   9

+maxExponent: 999

+minExponent: -999

+extended:    1

+clamp:       1

+rounding:    half_even

+

+clasx001  class    0                        -> +Zero

+clasx002  class    0.00                     -> +Zero

+clasx003  class    0E+5                     -> +Zero

+clasx004  class    1E-1007                  -> +Subnormal

+clasx005  class  0.1E-999                   -> +Subnormal

+clasx006  class  0.99999999E-999            -> +Subnormal

+clasx007  class  1.00000000E-999            -> +Normal

+clasx008  class   1E-999                    -> +Normal

+clasx009  class   1E-100                    -> +Normal

+clasx010  class   1E-10                     -> +Normal

+clasx012  class   1E-1                      -> +Normal

+clasx013  class   1                         -> +Normal

+clasx014  class   2.50                      -> +Normal

+clasx015  class   100.100                   -> +Normal

+clasx016  class   1E+30                     -> +Normal

+clasx017  class   1E+999                    -> +Normal

+clasx018  class   9.99999999E+999           -> +Normal

+clasx019  class   Inf                       -> +Infinity

+

+clasx021  class   -0                        -> -Zero

+clasx022  class   -0.00                     -> -Zero

+clasx023  class   -0E+5                     -> -Zero

+clasx024  class   -1E-1007                  -> -Subnormal

+clasx025  class  -0.1E-999                  -> -Subnormal

+clasx026  class  -0.99999999E-999           -> -Subnormal

+clasx027  class  -1.00000000E-999           -> -Normal

+clasx028  class  -1E-999                    -> -Normal

+clasx029  class  -1E-100                    -> -Normal

+clasx030  class  -1E-10                     -> -Normal

+clasx032  class  -1E-1                      -> -Normal

+clasx033  class  -1                         -> -Normal

+clasx034  class  -2.50                      -> -Normal

+clasx035  class  -100.100                   -> -Normal

+clasx036  class  -1E+30                     -> -Normal

+clasx037  class  -1E+999                    -> -Normal

+clasx038  class  -9.99999999E+999           -> -Normal

+clasx039  class  -Inf                       -> -Infinity

+

+clasx041  class   NaN                       -> NaN

+clasx042  class  -NaN                       -> NaN

+clasx043  class  +NaN12345                  -> NaN

+clasx044  class   sNaN                      -> sNaN

+clasx045  class  -sNaN                      -> sNaN

+clasx046  class  +sNaN12345                 -> sNaN

+

+

+-- decimal64 bounds

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+clamp:       1

+rounding:    half_even

+

+clasx201  class    0                        -> +Zero

+clasx202  class    0.00                     -> +Zero

+clasx203  class    0E+5                     -> +Zero

+clasx204  class    1E-396                   -> +Subnormal

+clasx205  class  0.1E-383                   -> +Subnormal

+clasx206  class  0.999999999999999E-383     -> +Subnormal

+clasx207  class  1.000000000000000E-383     -> +Normal

+clasx208  class   1E-383                    -> +Normal

+clasx209  class   1E-100                    -> +Normal

+clasx210  class   1E-10                     -> +Normal

+clasx212  class   1E-1                      -> +Normal

+clasx213  class   1                         -> +Normal

+clasx214  class   2.50                      -> +Normal

+clasx215  class   100.100                   -> +Normal

+clasx216  class   1E+30                     -> +Normal

+clasx217  class   1E+384                    -> +Normal

+clasx218  class   9.999999999999999E+384    -> +Normal

+clasx219  class   Inf                       -> +Infinity

+

+clasx221  class   -0                        -> -Zero

+clasx222  class   -0.00                     -> -Zero

+clasx223  class   -0E+5                     -> -Zero

+clasx224  class   -1E-396                   -> -Subnormal

+clasx225  class  -0.1E-383                  -> -Subnormal

+clasx226  class  -0.999999999999999E-383    -> -Subnormal

+clasx227  class  -1.000000000000000E-383    -> -Normal

+clasx228  class  -1E-383                    -> -Normal

+clasx229  class  -1E-100                    -> -Normal

+clasx230  class  -1E-10                     -> -Normal

+clasx232  class  -1E-1                      -> -Normal

+clasx233  class  -1                         -> -Normal

+clasx234  class  -2.50                      -> -Normal

+clasx235  class  -100.100                   -> -Normal

+clasx236  class  -1E+30                     -> -Normal

+clasx237  class  -1E+384                    -> -Normal

+clasx238  class  -9.999999999999999E+384    -> -Normal

+clasx239  class  -Inf                       -> -Infinity

+

+clasx241  class   NaN                       -> NaN

+clasx242  class  -NaN                       -> NaN

+clasx243  class  +NaN12345                  -> NaN

+clasx244  class   sNaN                      -> sNaN

+clasx245  class  -sNaN                      -> sNaN

+clasx246  class  +sNaN12345                 -> sNaN

+

+

+

diff --git a/Lib/test/decimaltestdata/compare.decTest b/Lib/test/decimaltestdata/compare.decTest
index 21651ad..979cc52 100644
--- a/Lib/test/decimaltestdata/compare.decTest
+++ b/Lib/test/decimaltestdata/compare.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
--- compare.decTest -- decimal comparison                              --
--- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
+-- compare.decTest -- decimal comparison that allows quiet NaNs       --
+-- 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      --
@@ -17,11 +17,11 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- Note that we cannot assume add/subtract tests cover paths adequately,
 -- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necesary).
+-- overflow or underflow, so actual subtractions are not necessary).
 
 extended: 1
 
@@ -112,10 +112,10 @@
 -- now some cases which might overflow if subtract were used
 maxexponent: 999999999
 minexponent: -999999999
-comx090 compare  9.99999999E+999999999 9.99999999E+999999999  -> 0
-comx091 compare -9.99999999E+999999999 9.99999999E+999999999  -> -1
-comx092 compare  9.99999999E+999999999 -9.99999999E+999999999 -> 1
-comx093 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0
+comx095 compare  9.99999999E+999999999 9.99999999E+999999999  -> 0
+comx096 compare -9.99999999E+999999999 9.99999999E+999999999  -> -1
+comx097 compare  9.99999999E+999999999 -9.99999999E+999999999 -> 1
+comx098 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0
 
 -- some differing length/exponent cases
 comx100 compare   7.0    7.0    -> 0
@@ -265,6 +265,21 @@
 comx449 compare   -8      -.9E+1  -> 1
 comx450 compare   -8      -90E-1  -> 1
 
+-- misalignment traps for little-endian
+comx451 compare      1.0       0.1  -> 1
+comx452 compare      0.1       1.0  -> -1
+comx453 compare     10.0       0.1  -> 1
+comx454 compare      0.1      10.0  -> -1
+comx455 compare      100       1.0  -> 1
+comx456 compare      1.0       100  -> -1
+comx457 compare     1000      10.0  -> 1
+comx458 compare     10.0      1000  -> -1
+comx459 compare    10000     100.0  -> 1
+comx460 compare    100.0     10000  -> -1
+comx461 compare   100000    1000.0  -> 1
+comx462 compare   1000.0    100000  -> -1
+comx463 compare  1000000   10000.0  -> 1
+comx464 compare  10000.0   1000000  -> -1
 
 -- testcases that subtract to lots of zeros at boundaries [pgr]
 precision: 40
@@ -362,7 +377,7 @@
 comx569 compare    1E+13  1       ->  1
 comx570 compare    1E+14  1       ->  1
 comx571 compare    1E+15  1       ->  1
--- similar with an useful coefficient, one side only
+-- similar with a useful coefficient, one side only
 comx580 compare  0.000000987654321     1E-15    -> 1
 comx581 compare  0.000000987654321     1E-14    -> 1
 comx582 compare  0.000000987654321     1E-13    -> 1
@@ -712,6 +727,32 @@
 comx907 compare -1e-777777777  1e-411111111 -> -1
 comx908 compare -1e-777777777 -1e-411111111 ->  1
 
+-- spread zeros
+comx910 compare   0E-383  0       ->  0
+comx911 compare   0E-383 -0       ->  0
+comx912 compare  -0E-383  0       ->  0
+comx913 compare  -0E-383 -0       ->  0
+comx914 compare   0E-383  0E+384  ->  0
+comx915 compare   0E-383 -0E+384  ->  0
+comx916 compare  -0E-383  0E+384  ->  0
+comx917 compare  -0E-383 -0E+384  ->  0
+comx918 compare   0       0E+384  ->  0
+comx919 compare   0      -0E+384  ->  0
+comx920 compare  -0       0E+384  ->  0
+comx921 compare  -0      -0E+384  ->  0
+comx930 compare   0E+384  0       ->  0
+comx931 compare   0E+384 -0       ->  0
+comx932 compare  -0E+384  0       ->  0
+comx933 compare  -0E+384 -0       ->  0
+comx934 compare   0E+384  0E-383  ->  0
+comx935 compare   0E+384 -0E-383  ->  0
+comx936 compare  -0E+384  0E-383  ->  0
+comx937 compare  -0E+384 -0E-383  ->  0
+comx938 compare   0       0E-383  ->  0
+comx939 compare   0      -0E-383  ->  0
+comx940 compare  -0       0E-383  ->  0
+comx941 compare  -0      -0E-383  ->  0
+
 -- Null tests
 comx990 compare 10  # -> NaN Invalid_operation
 comx991 compare  # 10 -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/comparetotal.decTest b/Lib/test/decimaltestdata/comparetotal.decTest
new file mode 100644
index 0000000..ef2914f
--- /dev/null
+++ b/Lib/test/decimaltestdata/comparetotal.decTest
@@ -0,0 +1,798 @@
+------------------------------------------------------------------------

+-- comparetotal.decTest -- decimal comparison using total ordering    --

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+-- Similarly, comparetotal will have some radically different paths

+-- than compare.

+

+extended:    1

+precision:   16

+rounding:    half_up

+maxExponent: 384

+minExponent: -383

+

+-- sanity checks

+cotx001 comparetotal  -2  -2  -> 0

+cotx002 comparetotal  -2  -1  -> -1

+cotx003 comparetotal  -2   0  -> -1

+cotx004 comparetotal  -2   1  -> -1

+cotx005 comparetotal  -2   2  -> -1

+cotx006 comparetotal  -1  -2  -> 1

+cotx007 comparetotal  -1  -1  -> 0

+cotx008 comparetotal  -1   0  -> -1

+cotx009 comparetotal  -1   1  -> -1

+cotx010 comparetotal  -1   2  -> -1

+cotx011 comparetotal   0  -2  -> 1

+cotx012 comparetotal   0  -1  -> 1

+cotx013 comparetotal   0   0  -> 0

+cotx014 comparetotal   0   1  -> -1

+cotx015 comparetotal   0   2  -> -1

+cotx016 comparetotal   1  -2  -> 1

+cotx017 comparetotal   1  -1  -> 1

+cotx018 comparetotal   1   0  -> 1

+cotx019 comparetotal   1   1  -> 0

+cotx020 comparetotal   1   2  -> -1

+cotx021 comparetotal   2  -2  -> 1

+cotx022 comparetotal   2  -1  -> 1

+cotx023 comparetotal   2   0  -> 1

+cotx025 comparetotal   2   1  -> 1

+cotx026 comparetotal   2   2  -> 0

+

+cotx031 comparetotal  -20  -20  -> 0

+cotx032 comparetotal  -20  -10  -> -1

+cotx033 comparetotal  -20   00  -> -1

+cotx034 comparetotal  -20   10  -> -1

+cotx035 comparetotal  -20   20  -> -1

+cotx036 comparetotal  -10  -20  -> 1

+cotx037 comparetotal  -10  -10  -> 0

+cotx038 comparetotal  -10   00  -> -1

+cotx039 comparetotal  -10   10  -> -1

+cotx040 comparetotal  -10   20  -> -1

+cotx041 comparetotal   00  -20  -> 1

+cotx042 comparetotal   00  -10  -> 1

+cotx043 comparetotal   00   00  -> 0

+cotx044 comparetotal   00   10  -> -1

+cotx045 comparetotal   00   20  -> -1

+cotx046 comparetotal   10  -20  -> 1

+cotx047 comparetotal   10  -10  -> 1

+cotx048 comparetotal   10   00  -> 1

+cotx049 comparetotal   10   10  -> 0

+cotx050 comparetotal   10   20  -> -1

+cotx051 comparetotal   20  -20  -> 1

+cotx052 comparetotal   20  -10  -> 1

+cotx053 comparetotal   20   00  -> 1

+cotx055 comparetotal   20   10  -> 1

+cotx056 comparetotal   20   20  -> 0

+

+cotx061 comparetotal  -2.0  -2.0  -> 0

+cotx062 comparetotal  -2.0  -1.0  -> -1

+cotx063 comparetotal  -2.0   0.0  -> -1

+cotx064 comparetotal  -2.0   1.0  -> -1

+cotx065 comparetotal  -2.0   2.0  -> -1

+cotx066 comparetotal  -1.0  -2.0  -> 1

+cotx067 comparetotal  -1.0  -1.0  -> 0

+cotx068 comparetotal  -1.0   0.0  -> -1

+cotx069 comparetotal  -1.0   1.0  -> -1

+cotx070 comparetotal  -1.0   2.0  -> -1

+cotx071 comparetotal   0.0  -2.0  -> 1

+cotx072 comparetotal   0.0  -1.0  -> 1

+cotx073 comparetotal   0.0   0.0  -> 0

+cotx074 comparetotal   0.0   1.0  -> -1

+cotx075 comparetotal   0.0   2.0  -> -1

+cotx076 comparetotal   1.0  -2.0  -> 1

+cotx077 comparetotal   1.0  -1.0  -> 1

+cotx078 comparetotal   1.0   0.0  -> 1

+cotx079 comparetotal   1.0   1.0  -> 0

+cotx080 comparetotal   1.0   2.0  -> -1

+cotx081 comparetotal   2.0  -2.0  -> 1

+cotx082 comparetotal   2.0  -1.0  -> 1

+cotx083 comparetotal   2.0   0.0  -> 1

+cotx085 comparetotal   2.0   1.0  -> 1

+cotx086 comparetotal   2.0   2.0  -> 0

+

+-- now some cases which might overflow if subtract were used

+maxexponent: 999999999

+minexponent: -999999999

+cotx090 comparetotal  9.99999999E+999999999 9.99999999E+999999999  -> 0

+cotx091 comparetotal -9.99999999E+999999999 9.99999999E+999999999  -> -1

+cotx092 comparetotal  9.99999999E+999999999 -9.99999999E+999999999 -> 1

+cotx093 comparetotal -9.99999999E+999999999 -9.99999999E+999999999 -> 0

+

+-- Examples

+cotx094 comparetotal  12.73  127.9  -> -1

+cotx095 comparetotal  -127   12     -> -1

+cotx096 comparetotal  12.30  12.3   -> -1

+cotx097 comparetotal  12.30  12.30  ->  0

+cotx098 comparetotal  12.3   12.300 ->  1

+cotx099 comparetotal  12.3   NaN    -> -1

+

+-- some differing length/exponent cases

+-- in this first group, compare would compare all equal

+cotx100 comparetotal   7.0    7.0    -> 0

+cotx101 comparetotal   7.0    7      -> -1

+cotx102 comparetotal   7      7.0    -> 1

+cotx103 comparetotal   7E+0   7.0    -> 1

+cotx104 comparetotal   70E-1  7.0    -> 0

+cotx105 comparetotal   0.7E+1 7      -> 0

+cotx106 comparetotal   70E-1  7      -> -1

+cotx107 comparetotal   7.0    7E+0   -> -1

+cotx108 comparetotal   7.0    70E-1  -> 0

+cotx109 comparetotal   7      0.7E+1 -> 0

+cotx110 comparetotal   7      70E-1  -> 1

+

+cotx120 comparetotal   8.0    7.0    -> 1

+cotx121 comparetotal   8.0    7      -> 1

+cotx122 comparetotal   8      7.0    -> 1

+cotx123 comparetotal   8E+0   7.0    -> 1

+cotx124 comparetotal   80E-1  7.0    -> 1

+cotx125 comparetotal   0.8E+1 7      -> 1

+cotx126 comparetotal   80E-1  7      -> 1

+cotx127 comparetotal   8.0    7E+0   -> 1

+cotx128 comparetotal   8.0    70E-1  -> 1

+cotx129 comparetotal   8      0.7E+1  -> 1

+cotx130 comparetotal   8      70E-1  -> 1

+

+cotx140 comparetotal   8.0    9.0    -> -1

+cotx141 comparetotal   8.0    9      -> -1

+cotx142 comparetotal   8      9.0    -> -1

+cotx143 comparetotal   8E+0   9.0    -> -1

+cotx144 comparetotal   80E-1  9.0    -> -1

+cotx145 comparetotal   0.8E+1 9      -> -1

+cotx146 comparetotal   80E-1  9      -> -1

+cotx147 comparetotal   8.0    9E+0   -> -1

+cotx148 comparetotal   8.0    90E-1  -> -1

+cotx149 comparetotal   8      0.9E+1 -> -1

+cotx150 comparetotal   8      90E-1  -> -1

+

+-- and again, with sign changes -+ ..

+cotx200 comparetotal  -7.0    7.0    -> -1

+cotx201 comparetotal  -7.0    7      -> -1

+cotx202 comparetotal  -7      7.0    -> -1

+cotx203 comparetotal  -7E+0   7.0    -> -1

+cotx204 comparetotal  -70E-1  7.0    -> -1

+cotx205 comparetotal  -0.7E+1 7      -> -1

+cotx206 comparetotal  -70E-1  7      -> -1

+cotx207 comparetotal  -7.0    7E+0   -> -1

+cotx208 comparetotal  -7.0    70E-1  -> -1

+cotx209 comparetotal  -7      0.7E+1 -> -1

+cotx210 comparetotal  -7      70E-1  -> -1

+

+cotx220 comparetotal  -8.0    7.0    -> -1

+cotx221 comparetotal  -8.0    7      -> -1

+cotx222 comparetotal  -8      7.0    -> -1

+cotx223 comparetotal  -8E+0   7.0    -> -1

+cotx224 comparetotal  -80E-1  7.0    -> -1

+cotx225 comparetotal  -0.8E+1 7      -> -1

+cotx226 comparetotal  -80E-1  7      -> -1

+cotx227 comparetotal  -8.0    7E+0   -> -1

+cotx228 comparetotal  -8.0    70E-1  -> -1

+cotx229 comparetotal  -8      0.7E+1 -> -1

+cotx230 comparetotal  -8      70E-1  -> -1

+

+cotx240 comparetotal  -8.0    9.0    -> -1

+cotx241 comparetotal  -8.0    9      -> -1

+cotx242 comparetotal  -8      9.0    -> -1

+cotx243 comparetotal  -8E+0   9.0    -> -1

+cotx244 comparetotal  -80E-1  9.0    -> -1

+cotx245 comparetotal  -0.8E+1 9      -> -1

+cotx246 comparetotal  -80E-1  9      -> -1

+cotx247 comparetotal  -8.0    9E+0   -> -1

+cotx248 comparetotal  -8.0    90E-1  -> -1

+cotx249 comparetotal  -8      0.9E+1 -> -1

+cotx250 comparetotal  -8      90E-1  -> -1

+

+-- and again, with sign changes +- ..

+cotx300 comparetotal   7.0    -7.0    -> 1

+cotx301 comparetotal   7.0    -7      -> 1

+cotx302 comparetotal   7      -7.0    -> 1

+cotx303 comparetotal   7E+0   -7.0    -> 1

+cotx304 comparetotal   70E-1  -7.0    -> 1

+cotx305 comparetotal   .7E+1  -7      -> 1

+cotx306 comparetotal   70E-1  -7      -> 1

+cotx307 comparetotal   7.0    -7E+0   -> 1

+cotx308 comparetotal   7.0    -70E-1  -> 1

+cotx309 comparetotal   7      -.7E+1  -> 1

+cotx310 comparetotal   7      -70E-1  -> 1

+

+cotx320 comparetotal   8.0    -7.0    -> 1

+cotx321 comparetotal   8.0    -7      -> 1

+cotx322 comparetotal   8      -7.0    -> 1

+cotx323 comparetotal   8E+0   -7.0    -> 1

+cotx324 comparetotal   80E-1  -7.0    -> 1

+cotx325 comparetotal   .8E+1  -7      -> 1

+cotx326 comparetotal   80E-1  -7      -> 1

+cotx327 comparetotal   8.0    -7E+0   -> 1

+cotx328 comparetotal   8.0    -70E-1  -> 1

+cotx329 comparetotal   8      -.7E+1  -> 1

+cotx330 comparetotal   8      -70E-1  -> 1

+

+cotx340 comparetotal   8.0    -9.0    -> 1

+cotx341 comparetotal   8.0    -9      -> 1

+cotx342 comparetotal   8      -9.0    -> 1

+cotx343 comparetotal   8E+0   -9.0    -> 1

+cotx344 comparetotal   80E-1  -9.0    -> 1

+cotx345 comparetotal   .8E+1  -9      -> 1

+cotx346 comparetotal   80E-1  -9      -> 1

+cotx347 comparetotal   8.0    -9E+0   -> 1

+cotx348 comparetotal   8.0    -90E-1  -> 1

+cotx349 comparetotal   8      -.9E+1  -> 1

+cotx350 comparetotal   8      -90E-1  -> 1

+

+-- and again, with sign changes -- ..

+cotx400 comparetotal   -7.0    -7.0    -> 0

+cotx401 comparetotal   -7.0    -7      -> 1

+cotx402 comparetotal   -7      -7.0    -> -1

+cotx403 comparetotal   -7E+0   -7.0    -> -1

+cotx404 comparetotal   -70E-1  -7.0    -> 0

+cotx405 comparetotal   -.7E+1  -7      -> 0

+cotx406 comparetotal   -70E-1  -7      -> 1

+cotx407 comparetotal   -7.0    -7E+0   -> 1

+cotx408 comparetotal   -7.0    -70E-1  -> 0

+cotx409 comparetotal   -7      -.7E+1  -> 0

+cotx410 comparetotal   -7      -70E-1  -> -1

+

+cotx420 comparetotal   -8.0    -7.0    -> -1

+cotx421 comparetotal   -8.0    -7      -> -1

+cotx422 comparetotal   -8      -7.0    -> -1

+cotx423 comparetotal   -8E+0   -7.0    -> -1

+cotx424 comparetotal   -80E-1  -7.0    -> -1

+cotx425 comparetotal   -.8E+1  -7      -> -1

+cotx426 comparetotal   -80E-1  -7      -> -1

+cotx427 comparetotal   -8.0    -7E+0   -> -1

+cotx428 comparetotal   -8.0    -70E-1  -> -1

+cotx429 comparetotal   -8      -.7E+1  -> -1

+cotx430 comparetotal   -8      -70E-1  -> -1

+

+cotx440 comparetotal   -8.0    -9.0    -> 1

+cotx441 comparetotal   -8.0    -9      -> 1

+cotx442 comparetotal   -8      -9.0    -> 1

+cotx443 comparetotal   -8E+0   -9.0    -> 1

+cotx444 comparetotal   -80E-1  -9.0    -> 1

+cotx445 comparetotal   -.8E+1  -9      -> 1

+cotx446 comparetotal   -80E-1  -9      -> 1

+cotx447 comparetotal   -8.0    -9E+0   -> 1

+cotx448 comparetotal   -8.0    -90E-1  -> 1

+cotx449 comparetotal   -8      -.9E+1  -> 1

+cotx450 comparetotal   -8      -90E-1  -> 1

+

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+precision: 40

+cotx470 comparetotal 123.4560000000000000E789 123.456E789 -> -1

+cotx471 comparetotal 123.456000000000000E-89 123.456E-89 -> -1

+cotx472 comparetotal 123.45600000000000E789 123.456E789 -> -1

+cotx473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1

+cotx474 comparetotal 123.456000000000E789 123.456E789 -> -1

+cotx475 comparetotal 123.45600000000E-89 123.456E-89 -> -1

+cotx476 comparetotal 123.4560000000E789 123.456E789 -> -1

+cotx477 comparetotal 123.456000000E-89 123.456E-89 -> -1

+cotx478 comparetotal 123.45600000E789 123.456E789 -> -1

+cotx479 comparetotal 123.4560000E-89 123.456E-89 -> -1

+cotx480 comparetotal 123.456000E789 123.456E789 -> -1

+cotx481 comparetotal 123.45600E-89 123.456E-89 -> -1

+cotx482 comparetotal 123.4560E789 123.456E789 -> -1

+cotx483 comparetotal 123.456E-89 123.456E-89 -> 0

+cotx484 comparetotal 123.456E-89 123.4560000000000000E-89 -> 1

+cotx485 comparetotal 123.456E789 123.456000000000000E789 -> 1

+cotx486 comparetotal 123.456E-89 123.45600000000000E-89 -> 1

+cotx487 comparetotal 123.456E789 123.4560000000000E789 -> 1

+cotx488 comparetotal 123.456E-89 123.456000000000E-89 -> 1

+cotx489 comparetotal 123.456E789 123.45600000000E789 -> 1

+cotx490 comparetotal 123.456E-89 123.4560000000E-89 -> 1

+cotx491 comparetotal 123.456E789 123.456000000E789 -> 1

+cotx492 comparetotal 123.456E-89 123.45600000E-89 -> 1

+cotx493 comparetotal 123.456E789 123.4560000E789 -> 1

+cotx494 comparetotal 123.456E-89 123.456000E-89 -> 1

+cotx495 comparetotal 123.456E789 123.45600E789 -> 1

+cotx496 comparetotal 123.456E-89 123.4560E-89 -> 1

+cotx497 comparetotal 123.456E789 123.456E789 -> 0

+

+-- wide-ranging, around precision; signs equal

+precision: 9

+cotx500 comparetotal    1     1E-15    -> 1

+cotx501 comparetotal    1     1E-14    -> 1

+cotx502 comparetotal    1     1E-13    -> 1

+cotx503 comparetotal    1     1E-12    -> 1

+cotx504 comparetotal    1     1E-11    -> 1

+cotx505 comparetotal    1     1E-10    -> 1

+cotx506 comparetotal    1     1E-9     -> 1

+cotx507 comparetotal    1     1E-8     -> 1

+cotx508 comparetotal    1     1E-7     -> 1

+cotx509 comparetotal    1     1E-6     -> 1

+cotx510 comparetotal    1     1E-5     -> 1

+cotx511 comparetotal    1     1E-4     -> 1

+cotx512 comparetotal    1     1E-3     -> 1

+cotx513 comparetotal    1     1E-2     -> 1

+cotx514 comparetotal    1     1E-1     -> 1

+cotx515 comparetotal    1     1E-0     -> 0

+cotx516 comparetotal    1     1E+1     -> -1

+cotx517 comparetotal    1     1E+2     -> -1

+cotx518 comparetotal    1     1E+3     -> -1

+cotx519 comparetotal    1     1E+4     -> -1

+cotx521 comparetotal    1     1E+5     -> -1

+cotx522 comparetotal    1     1E+6     -> -1

+cotx523 comparetotal    1     1E+7     -> -1

+cotx524 comparetotal    1     1E+8     -> -1

+cotx525 comparetotal    1     1E+9     -> -1

+cotx526 comparetotal    1     1E+10    -> -1

+cotx527 comparetotal    1     1E+11    -> -1

+cotx528 comparetotal    1     1E+12    -> -1

+cotx529 comparetotal    1     1E+13    -> -1

+cotx530 comparetotal    1     1E+14    -> -1

+cotx531 comparetotal    1     1E+15    -> -1

+-- LR swap

+cotx540 comparetotal    1E-15  1       -> -1

+cotx541 comparetotal    1E-14  1       -> -1

+cotx542 comparetotal    1E-13  1       -> -1

+cotx543 comparetotal    1E-12  1       -> -1

+cotx544 comparetotal    1E-11  1       -> -1

+cotx545 comparetotal    1E-10  1       -> -1

+cotx546 comparetotal    1E-9   1       -> -1

+cotx547 comparetotal    1E-8   1       -> -1

+cotx548 comparetotal    1E-7   1       -> -1

+cotx549 comparetotal    1E-6   1       -> -1

+cotx550 comparetotal    1E-5   1       -> -1

+cotx551 comparetotal    1E-4   1       -> -1

+cotx552 comparetotal    1E-3   1       -> -1

+cotx553 comparetotal    1E-2   1       -> -1

+cotx554 comparetotal    1E-1   1       -> -1

+cotx555 comparetotal    1E-0   1       ->  0

+cotx556 comparetotal    1E+1   1       ->  1

+cotx557 comparetotal    1E+2   1       ->  1

+cotx558 comparetotal    1E+3   1       ->  1

+cotx559 comparetotal    1E+4   1       ->  1

+cotx561 comparetotal    1E+5   1       ->  1

+cotx562 comparetotal    1E+6   1       ->  1

+cotx563 comparetotal    1E+7   1       ->  1

+cotx564 comparetotal    1E+8   1       ->  1

+cotx565 comparetotal    1E+9   1       ->  1

+cotx566 comparetotal    1E+10  1       ->  1

+cotx567 comparetotal    1E+11  1       ->  1

+cotx568 comparetotal    1E+12  1       ->  1

+cotx569 comparetotal    1E+13  1       ->  1

+cotx570 comparetotal    1E+14  1       ->  1

+cotx571 comparetotal    1E+15  1       ->  1

+-- similar with an useful coefficient, one side only

+cotx580 comparetotal  0.000000987654321     1E-15    -> 1

+cotx581 comparetotal  0.000000987654321     1E-14    -> 1

+cotx582 comparetotal  0.000000987654321     1E-13    -> 1

+cotx583 comparetotal  0.000000987654321     1E-12    -> 1

+cotx584 comparetotal  0.000000987654321     1E-11    -> 1

+cotx585 comparetotal  0.000000987654321     1E-10    -> 1

+cotx586 comparetotal  0.000000987654321     1E-9     -> 1

+cotx587 comparetotal  0.000000987654321     1E-8     -> 1

+cotx588 comparetotal  0.000000987654321     1E-7     -> 1

+cotx589 comparetotal  0.000000987654321     1E-6     -> -1

+cotx590 comparetotal  0.000000987654321     1E-5     -> -1

+cotx591 comparetotal  0.000000987654321     1E-4     -> -1

+cotx592 comparetotal  0.000000987654321     1E-3     -> -1

+cotx593 comparetotal  0.000000987654321     1E-2     -> -1

+cotx594 comparetotal  0.000000987654321     1E-1     -> -1

+cotx595 comparetotal  0.000000987654321     1E-0     -> -1

+cotx596 comparetotal  0.000000987654321     1E+1     -> -1

+cotx597 comparetotal  0.000000987654321     1E+2     -> -1

+cotx598 comparetotal  0.000000987654321     1E+3     -> -1

+cotx599 comparetotal  0.000000987654321     1E+4     -> -1

+

+-- check some unit-y traps

+precision: 20

+cotx600 comparetotal   12            12.2345 -> -1

+cotx601 comparetotal   12.0          12.2345 -> -1

+cotx602 comparetotal   12.00         12.2345 -> -1

+cotx603 comparetotal   12.000        12.2345 -> -1

+cotx604 comparetotal   12.0000       12.2345 -> -1

+cotx605 comparetotal   12.00000      12.2345 -> -1

+cotx606 comparetotal   12.000000     12.2345 -> -1

+cotx607 comparetotal   12.0000000    12.2345 -> -1

+cotx608 comparetotal   12.00000000   12.2345 -> -1

+cotx609 comparetotal   12.000000000  12.2345 -> -1

+cotx610 comparetotal   12.1234 12            ->  1

+cotx611 comparetotal   12.1234 12.0          ->  1

+cotx612 comparetotal   12.1234 12.00         ->  1

+cotx613 comparetotal   12.1234 12.000        ->  1

+cotx614 comparetotal   12.1234 12.0000       ->  1

+cotx615 comparetotal   12.1234 12.00000      ->  1

+cotx616 comparetotal   12.1234 12.000000     ->  1

+cotx617 comparetotal   12.1234 12.0000000    ->  1

+cotx618 comparetotal   12.1234 12.00000000   ->  1

+cotx619 comparetotal   12.1234 12.000000000  ->  1

+cotx620 comparetotal  -12           -12.2345 ->  1

+cotx621 comparetotal  -12.0         -12.2345 ->  1

+cotx622 comparetotal  -12.00        -12.2345 ->  1

+cotx623 comparetotal  -12.000       -12.2345 ->  1

+cotx624 comparetotal  -12.0000      -12.2345 ->  1

+cotx625 comparetotal  -12.00000     -12.2345 ->  1

+cotx626 comparetotal  -12.000000    -12.2345 ->  1

+cotx627 comparetotal  -12.0000000   -12.2345 ->  1

+cotx628 comparetotal  -12.00000000  -12.2345 ->  1

+cotx629 comparetotal  -12.000000000 -12.2345 ->  1

+cotx630 comparetotal  -12.1234 -12           -> -1

+cotx631 comparetotal  -12.1234 -12.0         -> -1

+cotx632 comparetotal  -12.1234 -12.00        -> -1

+cotx633 comparetotal  -12.1234 -12.000       -> -1

+cotx634 comparetotal  -12.1234 -12.0000      -> -1

+cotx635 comparetotal  -12.1234 -12.00000     -> -1

+cotx636 comparetotal  -12.1234 -12.000000    -> -1

+cotx637 comparetotal  -12.1234 -12.0000000   -> -1

+cotx638 comparetotal  -12.1234 -12.00000000  -> -1

+cotx639 comparetotal  -12.1234 -12.000000000 -> -1

+precision: 9

+

+-- extended zeros

+cotx640 comparetotal   0     0   -> 0

+cotx641 comparetotal   0    -0   -> 1

+cotx642 comparetotal   0    -0.0 -> 1

+cotx643 comparetotal   0     0.0 -> 1

+cotx644 comparetotal  -0     0   -> -1

+cotx645 comparetotal  -0    -0   -> 0

+cotx646 comparetotal  -0    -0.0 -> -1

+cotx647 comparetotal  -0     0.0 -> -1

+cotx648 comparetotal   0.0   0   -> -1

+cotx649 comparetotal   0.0  -0   -> 1

+cotx650 comparetotal   0.0  -0.0 -> 1

+cotx651 comparetotal   0.0   0.0 -> 0

+cotx652 comparetotal  -0.0   0   -> -1

+cotx653 comparetotal  -0.0  -0   -> 1

+cotx654 comparetotal  -0.0  -0.0 -> 0

+cotx655 comparetotal  -0.0   0.0 -> -1

+

+cotx656 comparetotal  -0E1   0.0 -> -1

+cotx657 comparetotal  -0E2   0.0 -> -1

+cotx658 comparetotal   0E1   0.0 -> 1

+cotx659 comparetotal   0E2   0.0 -> 1

+cotx660 comparetotal  -0E1   0   -> -1

+cotx661 comparetotal  -0E2   0   -> -1

+cotx662 comparetotal   0E1   0   -> 1

+cotx663 comparetotal   0E2   0   -> 1

+cotx664 comparetotal  -0E1  -0E1 -> 0

+cotx665 comparetotal  -0E2  -0E1 -> -1

+cotx666 comparetotal   0E1  -0E1 -> 1

+cotx667 comparetotal   0E2  -0E1 -> 1

+cotx668 comparetotal  -0E1  -0E2 -> 1

+cotx669 comparetotal  -0E2  -0E2 -> 0

+cotx670 comparetotal   0E1  -0E2 -> 1

+cotx671 comparetotal   0E2  -0E2 -> 1

+cotx672 comparetotal  -0E1   0E1 -> -1

+cotx673 comparetotal  -0E2   0E1 -> -1

+cotx674 comparetotal   0E1   0E1 -> 0

+cotx675 comparetotal   0E2   0E1 -> 1

+cotx676 comparetotal  -0E1   0E2 -> -1

+cotx677 comparetotal  -0E2   0E2 -> -1

+cotx678 comparetotal   0E1   0E2 -> -1

+cotx679 comparetotal   0E2   0E2 -> 0

+

+-- trailing zeros; unit-y

+precision: 20

+cotx680 comparetotal   12    12           -> 0

+cotx681 comparetotal   12    12.0         -> 1

+cotx682 comparetotal   12    12.00        -> 1

+cotx683 comparetotal   12    12.000       -> 1

+cotx684 comparetotal   12    12.0000      -> 1

+cotx685 comparetotal   12    12.00000     -> 1

+cotx686 comparetotal   12    12.000000    -> 1

+cotx687 comparetotal   12    12.0000000   -> 1

+cotx688 comparetotal   12    12.00000000  -> 1

+cotx689 comparetotal   12    12.000000000 -> 1

+cotx690 comparetotal   12              12 -> 0

+cotx691 comparetotal   12.0            12 -> -1

+cotx692 comparetotal   12.00           12 -> -1

+cotx693 comparetotal   12.000          12 -> -1

+cotx694 comparetotal   12.0000         12 -> -1

+cotx695 comparetotal   12.00000        12 -> -1

+cotx696 comparetotal   12.000000       12 -> -1

+cotx697 comparetotal   12.0000000      12 -> -1

+cotx698 comparetotal   12.00000000     12 -> -1

+cotx699 comparetotal   12.000000000    12 -> -1

+

+-- long operand checks

+maxexponent: 999

+minexponent: -999

+precision: 9

+cotx701 comparetotal 12345678000  1 ->  1

+cotx702 comparetotal 1 12345678000  -> -1

+cotx703 comparetotal 1234567800   1 ->  1

+cotx704 comparetotal 1 1234567800   -> -1

+cotx705 comparetotal 1234567890   1 ->  1

+cotx706 comparetotal 1 1234567890   -> -1

+cotx707 comparetotal 1234567891   1 ->  1

+cotx708 comparetotal 1 1234567891   -> -1

+cotx709 comparetotal 12345678901  1 ->  1

+cotx710 comparetotal 1 12345678901  -> -1

+cotx711 comparetotal 1234567896   1 ->  1

+cotx712 comparetotal 1 1234567896   -> -1

+cotx713 comparetotal -1234567891  1 -> -1

+cotx714 comparetotal 1 -1234567891  ->  1

+cotx715 comparetotal -12345678901 1 -> -1

+cotx716 comparetotal 1 -12345678901 ->  1

+cotx717 comparetotal -1234567896  1 -> -1

+cotx718 comparetotal 1 -1234567896  ->  1

+

+precision: 15

+-- same with plenty of precision

+cotx721 comparetotal 12345678000 1 -> 1

+cotx722 comparetotal 1 12345678000 -> -1

+cotx723 comparetotal 1234567800  1 -> 1

+cotx724 comparetotal 1 1234567800  -> -1

+cotx725 comparetotal 1234567890  1 -> 1

+cotx726 comparetotal 1 1234567890  -> -1

+cotx727 comparetotal 1234567891  1 -> 1

+cotx728 comparetotal 1 1234567891  -> -1

+cotx729 comparetotal 12345678901 1 -> 1

+cotx730 comparetotal 1 12345678901 -> -1

+cotx731 comparetotal 1234567896  1 -> 1

+cotx732 comparetotal 1 1234567896  -> -1

+

+-- residue cases

+precision: 5

+cotx740 comparetotal  1  0.9999999  -> 1

+cotx741 comparetotal  1  0.999999   -> 1

+cotx742 comparetotal  1  0.99999    -> 1

+cotx743 comparetotal  1  1.0000     -> 1

+cotx744 comparetotal  1  1.00001    -> -1

+cotx745 comparetotal  1  1.000001   -> -1

+cotx746 comparetotal  1  1.0000001  -> -1

+cotx750 comparetotal  0.9999999  1  -> -1

+cotx751 comparetotal  0.999999   1  -> -1

+cotx752 comparetotal  0.99999    1  -> -1

+cotx753 comparetotal  1.0000     1  -> -1

+cotx754 comparetotal  1.00001    1  -> 1

+cotx755 comparetotal  1.000001   1  -> 1

+cotx756 comparetotal  1.0000001  1  -> 1

+

+-- a selection of longies

+cotx760 comparetotal -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1

+cotx761 comparetotal -36852134.84194296250843579428931 -36852134.84194296250843579428931  -> 0

+cotx762 comparetotal -36852134.94194296250843579428931 -36852134.84194296250843579428931  -> -1

+cotx763 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+-- precisions above or below the difference should have no effect

+precision:   11

+cotx764 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:   10

+cotx765 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    9

+cotx766 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    8

+cotx767 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    7

+cotx768 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    6

+cotx769 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    5

+cotx770 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    4

+cotx771 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    3

+cotx772 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    2

+cotx773 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+precision:    1

+cotx774 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

+

+-- Specials

+precision:   9

+cotx780 comparetotal  Inf  -Inf   ->  1

+cotx781 comparetotal  Inf  -1000  ->  1

+cotx782 comparetotal  Inf  -1     ->  1

+cotx783 comparetotal  Inf  -0     ->  1

+cotx784 comparetotal  Inf   0     ->  1

+cotx785 comparetotal  Inf   1     ->  1

+cotx786 comparetotal  Inf   1000  ->  1

+cotx787 comparetotal  Inf   Inf   ->  0

+cotx788 comparetotal -1000  Inf   -> -1

+cotx789 comparetotal -Inf   Inf   -> -1

+cotx790 comparetotal -1     Inf   -> -1

+cotx791 comparetotal -0     Inf   -> -1

+cotx792 comparetotal  0     Inf   -> -1

+cotx793 comparetotal  1     Inf   -> -1

+cotx794 comparetotal  1000  Inf   -> -1

+cotx795 comparetotal  Inf   Inf   ->  0

+

+cotx800 comparetotal -Inf  -Inf   ->  0

+cotx801 comparetotal -Inf  -1000  -> -1

+cotx802 comparetotal -Inf  -1     -> -1

+cotx803 comparetotal -Inf  -0     -> -1

+cotx804 comparetotal -Inf   0     -> -1

+cotx805 comparetotal -Inf   1     -> -1

+cotx806 comparetotal -Inf   1000  -> -1

+cotx807 comparetotal -Inf   Inf   -> -1

+cotx808 comparetotal -Inf  -Inf   ->  0

+cotx809 comparetotal -1000 -Inf   ->  1

+cotx810 comparetotal -1    -Inf   ->  1

+cotx811 comparetotal -0    -Inf   ->  1

+cotx812 comparetotal  0    -Inf   ->  1

+cotx813 comparetotal  1    -Inf   ->  1

+cotx814 comparetotal  1000 -Inf   ->  1

+cotx815 comparetotal  Inf  -Inf   ->  1

+

+cotx821 comparetotal  NaN -Inf    ->  1

+cotx822 comparetotal  NaN -1000   ->  1

+cotx823 comparetotal  NaN -1      ->  1

+cotx824 comparetotal  NaN -0      ->  1

+cotx825 comparetotal  NaN  0      ->  1

+cotx826 comparetotal  NaN  1      ->  1

+cotx827 comparetotal  NaN  1000   ->  1

+cotx828 comparetotal  NaN  Inf    ->  1

+cotx829 comparetotal  NaN  NaN    ->  0

+cotx830 comparetotal -Inf  NaN    ->  -1

+cotx831 comparetotal -1000 NaN    ->  -1

+cotx832 comparetotal -1    NaN    ->  -1

+cotx833 comparetotal -0    NaN    ->  -1

+cotx834 comparetotal  0    NaN    ->  -1

+cotx835 comparetotal  1    NaN    ->  -1

+cotx836 comparetotal  1000 NaN    ->  -1

+cotx837 comparetotal  Inf  NaN    ->  -1

+cotx838 comparetotal -NaN -NaN    ->  0

+cotx839 comparetotal +NaN -NaN    ->  1

+cotx840 comparetotal -NaN +NaN    ->  -1

+

+cotx841 comparetotal  sNaN -sNaN  ->  1

+cotx842 comparetotal  sNaN -NaN   ->  1

+cotx843 comparetotal  sNaN -Inf   ->  1

+cotx844 comparetotal  sNaN -1000  ->  1

+cotx845 comparetotal  sNaN -1     ->  1

+cotx846 comparetotal  sNaN -0     ->  1

+cotx847 comparetotal  sNaN  0     ->  1

+cotx848 comparetotal  sNaN  1     ->  1

+cotx849 comparetotal  sNaN  1000  ->  1

+cotx850 comparetotal  sNaN  NaN   ->  -1

+cotx851 comparetotal  sNaN sNaN   ->  0

+

+cotx852 comparetotal -sNaN sNaN   ->  -1

+cotx853 comparetotal -NaN  sNaN   ->  -1

+cotx854 comparetotal -Inf  sNaN   ->  -1

+cotx855 comparetotal -1000 sNaN   ->  -1

+cotx856 comparetotal -1    sNaN   ->  -1

+cotx857 comparetotal -0    sNaN   ->  -1

+cotx858 comparetotal  0    sNaN   ->  -1

+cotx859 comparetotal  1    sNaN   ->  -1

+cotx860 comparetotal  1000 sNaN   ->  -1

+cotx861 comparetotal  Inf  sNaN   ->  -1

+cotx862 comparetotal  NaN  sNaN   ->  1

+cotx863 comparetotal  sNaN sNaN   ->  0

+

+cotx871 comparetotal  -sNaN -sNaN  ->  0

+cotx872 comparetotal  -sNaN -NaN   ->  1

+cotx873 comparetotal  -sNaN -Inf   ->  -1

+cotx874 comparetotal  -sNaN -1000  ->  -1

+cotx875 comparetotal  -sNaN -1     ->  -1

+cotx876 comparetotal  -sNaN -0     ->  -1

+cotx877 comparetotal  -sNaN  0     ->  -1

+cotx878 comparetotal  -sNaN  1     ->  -1

+cotx879 comparetotal  -sNaN  1000  ->  -1

+cotx880 comparetotal  -sNaN  NaN   ->  -1

+cotx881 comparetotal  -sNaN sNaN   ->  -1

+

+cotx882 comparetotal -sNaN -sNaN   ->  0

+cotx883 comparetotal -NaN  -sNaN   ->  -1

+cotx884 comparetotal -Inf  -sNaN   ->  1

+cotx885 comparetotal -1000 -sNaN   ->  1

+cotx886 comparetotal -1    -sNaN   ->  1

+cotx887 comparetotal -0    -sNaN   ->  1

+cotx888 comparetotal  0    -sNaN   ->  1

+cotx889 comparetotal  1    -sNaN   ->  1

+cotx890 comparetotal  1000 -sNaN   ->  1

+cotx891 comparetotal  Inf  -sNaN   ->  1

+cotx892 comparetotal  NaN  -sNaN   ->  1

+cotx893 comparetotal  sNaN -sNaN   ->  1

+

+-- NaNs with payload

+cotx960 comparetotal  NaN9 -Inf   ->  1

+cotx961 comparetotal  NaN8  999   ->  1

+cotx962 comparetotal  NaN77 Inf   ->  1

+cotx963 comparetotal -NaN67 NaN5  ->  -1

+cotx964 comparetotal -Inf  -NaN4  ->  1

+cotx965 comparetotal -999  -NaN33 ->  1

+cotx966 comparetotal  Inf   NaN2  ->  -1

+

+cotx970 comparetotal -NaN41 -NaN42 -> 1

+cotx971 comparetotal +NaN41 -NaN42 -> 1

+cotx972 comparetotal -NaN41 +NaN42 -> -1

+cotx973 comparetotal +NaN41 +NaN42 -> -1

+cotx974 comparetotal -NaN42 -NaN01 -> -1

+cotx975 comparetotal +NaN42 -NaN01 ->  1

+cotx976 comparetotal -NaN42 +NaN01 -> -1

+cotx977 comparetotal +NaN42 +NaN01 ->  1

+

+cotx980 comparetotal -sNaN771 -sNaN772 -> 1

+cotx981 comparetotal +sNaN771 -sNaN772 -> 1

+cotx982 comparetotal -sNaN771 +sNaN772 -> -1

+cotx983 comparetotal +sNaN771 +sNaN772 -> -1

+cotx984 comparetotal -sNaN772 -sNaN771 -> -1

+cotx985 comparetotal +sNaN772 -sNaN771 ->  1

+cotx986 comparetotal -sNaN772 +sNaN771 -> -1

+cotx987 comparetotal +sNaN772 +sNaN771 ->  1

+

+cotx991 comparetotal -sNaN99 -Inf    -> -1

+cotx992 comparetotal  sNaN98 -11     ->  1

+cotx993 comparetotal  sNaN97  NaN    -> -1

+cotx994 comparetotal  sNaN16 sNaN94  -> -1

+cotx995 comparetotal  NaN85  sNaN83  ->  1

+cotx996 comparetotal -Inf    sNaN92  -> -1

+cotx997 comparetotal  088    sNaN81  -> -1

+cotx998 comparetotal  Inf    sNaN90  -> -1

+cotx999 comparetotal  NaN   -sNaN89  ->  1

+

+-- overflow and underflow tests .. subnormal results now allowed

+maxExponent: 999999999

+minexponent: -999999999

+cotx1080 comparetotal +1.23456789012345E-0 9E+999999999 -> -1

+cotx1081 comparetotal 9E+999999999 +1.23456789012345E-0 ->  1

+cotx1082 comparetotal +0.100 9E-999999999               ->  1

+cotx1083 comparetotal 9E-999999999 +0.100               -> -1

+cotx1085 comparetotal -1.23456789012345E-0 9E+999999999 -> -1

+cotx1086 comparetotal 9E+999999999 -1.23456789012345E-0 ->  1

+cotx1087 comparetotal -0.100 9E-999999999               -> -1

+cotx1088 comparetotal 9E-999999999 -0.100               ->  1

+

+cotx1089 comparetotal 1e-599999999 1e-400000001   -> -1

+cotx1090 comparetotal 1e-599999999 1e-400000000   -> -1

+cotx1091 comparetotal 1e-600000000 1e-400000000   -> -1

+cotx1092 comparetotal 9e-999999998 0.01           -> -1

+cotx1093 comparetotal 9e-999999998 0.1            -> -1

+cotx1094 comparetotal 0.01 9e-999999998           ->  1

+cotx1095 comparetotal 1e599999999 1e400000001     ->  1

+cotx1096 comparetotal 1e599999999 1e400000000     ->  1

+cotx1097 comparetotal 1e600000000 1e400000000     ->  1

+cotx1098 comparetotal 9e999999998 100             ->  1

+cotx1099 comparetotal 9e999999998 10              ->  1

+cotx1100 comparetotal 100  9e999999998            -> -1

+-- signs

+cotx1101 comparetotal  1e+777777777  1e+411111111 ->  1

+cotx1102 comparetotal  1e+777777777 -1e+411111111 ->  1

+cotx1103 comparetotal -1e+777777777  1e+411111111 -> -1

+cotx1104 comparetotal -1e+777777777 -1e+411111111 -> -1

+cotx1105 comparetotal  1e-777777777  1e-411111111 -> -1

+cotx1106 comparetotal  1e-777777777 -1e-411111111 ->  1

+cotx1107 comparetotal -1e-777777777  1e-411111111 -> -1

+cotx1108 comparetotal -1e-777777777 -1e-411111111 ->  1

+

+-- spread zeros

+cotx1110 comparetotal   0E-383  0       -> -1

+cotx1111 comparetotal   0E-383 -0       ->  1

+cotx1112 comparetotal  -0E-383  0       -> -1

+cotx1113 comparetotal  -0E-383 -0       ->  1

+cotx1114 comparetotal   0E-383  0E+384  -> -1

+cotx1115 comparetotal   0E-383 -0E+384  ->  1

+cotx1116 comparetotal  -0E-383  0E+384  -> -1

+cotx1117 comparetotal  -0E-383 -0E+384  ->  1

+cotx1118 comparetotal   0       0E+384  -> -1

+cotx1119 comparetotal   0      -0E+384  ->  1

+cotx1120 comparetotal  -0       0E+384  -> -1

+cotx1121 comparetotal  -0      -0E+384  ->  1

+

+cotx1130 comparetotal   0E+384  0       ->  1

+cotx1131 comparetotal   0E+384 -0       ->  1

+cotx1132 comparetotal  -0E+384  0       -> -1

+cotx1133 comparetotal  -0E+384 -0       -> -1

+cotx1134 comparetotal   0E+384  0E-383  ->  1

+cotx1135 comparetotal   0E+384 -0E-383  ->  1

+cotx1136 comparetotal  -0E+384  0E-383  -> -1

+cotx1137 comparetotal  -0E+384 -0E-383  -> -1

+cotx1138 comparetotal   0       0E-383  ->  1

+cotx1139 comparetotal   0      -0E-383  ->  1

+cotx1140 comparetotal  -0       0E-383  -> -1

+cotx1141 comparetotal  -0      -0E-383  -> -1

+

+-- Null tests

+cotx9990 comparetotal 10  # -> NaN Invalid_operation

+cotx9991 comparetotal  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/comparetotmag.decTest b/Lib/test/decimaltestdata/comparetotmag.decTest
new file mode 100644
index 0000000..4a51d7f
--- /dev/null
+++ b/Lib/test/decimaltestdata/comparetotmag.decTest
@@ -0,0 +1,790 @@
+------------------------------------------------------------------------

+-- comparetotmag.decTest -- decimal comparison, abs. total ordering   --

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

+

+-- Note that it cannot be assumed that add/subtract tests cover paths

+-- for this operation adequately, here, because the code might be

+-- quite different (comparison cannot overflow or underflow, so

+-- actual subtractions are not necessary). Similarly, comparetotal

+-- will have some radically different paths than compare.

+

+extended:    1

+precision:   16

+rounding:    half_up

+maxExponent: 384

+minExponent: -383

+

+-- sanity checks

+ctmx001 comparetotmag  -2  -2   ->   0

+ctmx002 comparetotmag  -2  -1   ->   1

+ctmx003 comparetotmag  -2   0   ->   1

+ctmx004 comparetotmag  -2   1   ->   1

+ctmx005 comparetotmag  -2   2   ->   0

+ctmx006 comparetotmag  -1  -2   ->  -1

+ctmx007 comparetotmag  -1  -1   ->   0

+ctmx008 comparetotmag  -1   0   ->   1

+ctmx009 comparetotmag  -1   1   ->   0

+ctmx010 comparetotmag  -1   2   ->  -1

+ctmx011 comparetotmag   0  -2   ->  -1

+ctmx012 comparetotmag   0  -1   ->  -1

+ctmx013 comparetotmag   0   0   ->   0

+ctmx014 comparetotmag   0   1   ->  -1

+ctmx015 comparetotmag   0   2   ->  -1

+ctmx016 comparetotmag   1  -2   ->  -1

+ctmx017 comparetotmag   1  -1   ->   0

+ctmx018 comparetotmag   1   0   ->   1

+ctmx019 comparetotmag   1   1   ->   0

+ctmx020 comparetotmag   1   2   ->  -1

+ctmx021 comparetotmag   2  -2   ->   0

+ctmx022 comparetotmag   2  -1   ->   1

+ctmx023 comparetotmag   2   0   ->   1

+ctmx025 comparetotmag   2   1   ->   1

+ctmx026 comparetotmag   2   2   ->   0

+

+ctmx031 comparetotmag  -20  -20   ->   0

+ctmx032 comparetotmag  -20  -10   ->   1

+ctmx033 comparetotmag  -20   00   ->   1

+ctmx034 comparetotmag  -20   10   ->   1

+ctmx035 comparetotmag  -20   20   ->   0

+ctmx036 comparetotmag  -10  -20   ->  -1

+ctmx037 comparetotmag  -10  -10   ->   0

+ctmx038 comparetotmag  -10   00   ->   1

+ctmx039 comparetotmag  -10   10   ->   0

+ctmx040 comparetotmag  -10   20   ->  -1

+ctmx041 comparetotmag   00  -20   ->  -1

+ctmx042 comparetotmag   00  -10   ->  -1

+ctmx043 comparetotmag   00   00   ->   0

+ctmx044 comparetotmag   00   10   ->  -1

+ctmx045 comparetotmag   00   20   ->  -1

+ctmx046 comparetotmag   10  -20   ->  -1

+ctmx047 comparetotmag   10  -10   ->   0

+ctmx048 comparetotmag   10   00   ->   1

+ctmx049 comparetotmag   10   10   ->   0

+ctmx050 comparetotmag   10   20   ->  -1

+ctmx051 comparetotmag   20  -20   ->   0

+ctmx052 comparetotmag   20  -10   ->   1

+ctmx053 comparetotmag   20   00   ->   1

+ctmx055 comparetotmag   20   10   ->   1

+ctmx056 comparetotmag   20   20   ->   0

+

+ctmx061 comparetotmag  -2.0  -2.0   ->   0

+ctmx062 comparetotmag  -2.0  -1.0   ->   1

+ctmx063 comparetotmag  -2.0   0.0   ->   1

+ctmx064 comparetotmag  -2.0   1.0   ->   1

+ctmx065 comparetotmag  -2.0   2.0   ->   0

+ctmx066 comparetotmag  -1.0  -2.0   ->  -1

+ctmx067 comparetotmag  -1.0  -1.0   ->   0

+ctmx068 comparetotmag  -1.0   0.0   ->   1

+ctmx069 comparetotmag  -1.0   1.0   ->   0

+ctmx070 comparetotmag  -1.0   2.0   ->  -1

+ctmx071 comparetotmag   0.0  -2.0   ->  -1

+ctmx072 comparetotmag   0.0  -1.0   ->  -1

+ctmx073 comparetotmag   0.0   0.0   ->   0

+ctmx074 comparetotmag   0.0   1.0   ->  -1

+ctmx075 comparetotmag   0.0   2.0   ->  -1

+ctmx076 comparetotmag   1.0  -2.0   ->  -1

+ctmx077 comparetotmag   1.0  -1.0   ->   0

+ctmx078 comparetotmag   1.0   0.0   ->   1

+ctmx079 comparetotmag   1.0   1.0   ->   0

+ctmx080 comparetotmag   1.0   2.0   ->  -1

+ctmx081 comparetotmag   2.0  -2.0   ->   0

+ctmx082 comparetotmag   2.0  -1.0   ->   1

+ctmx083 comparetotmag   2.0   0.0   ->   1

+ctmx085 comparetotmag   2.0   1.0   ->   1

+ctmx086 comparetotmag   2.0   2.0   ->   0

+

+-- now some cases which might overflow if subtract were used

+maxexponent: 999999999

+minexponent: -999999999

+ctmx090 comparetotmag  9.99999999E+999999999 9.99999999E+999999999   ->   0

+ctmx091 comparetotmag -9.99999999E+999999999 9.99999999E+999999999   ->   0

+ctmx092 comparetotmag  9.99999999E+999999999 -9.99999999E+999999999  ->   0

+ctmx093 comparetotmag -9.99999999E+999999999 -9.99999999E+999999999  ->   0

+

+-- some differing length/exponent cases

+-- in this first group, compare would compare all equal

+ctmx100 comparetotmag   7.0    7.0     ->   0

+ctmx101 comparetotmag   7.0    7       ->  -1

+ctmx102 comparetotmag   7      7.0     ->   1

+ctmx103 comparetotmag   7E+0   7.0     ->   1

+ctmx104 comparetotmag   70E-1  7.0     ->   0

+ctmx105 comparetotmag   0.7E+1 7       ->   0

+ctmx106 comparetotmag   70E-1  7       ->  -1

+ctmx107 comparetotmag   7.0    7E+0    ->  -1

+ctmx108 comparetotmag   7.0    70E-1   ->   0

+ctmx109 comparetotmag   7      0.7E+1  ->   0

+ctmx110 comparetotmag   7      70E-1   ->   1

+

+ctmx120 comparetotmag   8.0    7.0     ->   1

+ctmx121 comparetotmag   8.0    7       ->   1

+ctmx122 comparetotmag   8      7.0     ->   1

+ctmx123 comparetotmag   8E+0   7.0     ->   1

+ctmx124 comparetotmag   80E-1  7.0     ->   1

+ctmx125 comparetotmag   0.8E+1 7       ->   1

+ctmx126 comparetotmag   80E-1  7       ->   1

+ctmx127 comparetotmag   8.0    7E+0    ->   1

+ctmx128 comparetotmag   8.0    70E-1   ->   1

+ctmx129 comparetotmag   8      0.7E+1   ->   1

+ctmx130 comparetotmag   8      70E-1   ->   1

+

+ctmx140 comparetotmag   8.0    9.0     ->  -1

+ctmx141 comparetotmag   8.0    9       ->  -1

+ctmx142 comparetotmag   8      9.0     ->  -1

+ctmx143 comparetotmag   8E+0   9.0     ->  -1

+ctmx144 comparetotmag   80E-1  9.0     ->  -1

+ctmx145 comparetotmag   0.8E+1 9       ->  -1

+ctmx146 comparetotmag   80E-1  9       ->  -1

+ctmx147 comparetotmag   8.0    9E+0    ->  -1

+ctmx148 comparetotmag   8.0    90E-1   ->  -1

+ctmx149 comparetotmag   8      0.9E+1  ->  -1

+ctmx150 comparetotmag   8      90E-1   ->  -1

+

+-- and again, with sign changes -+ ..

+ctmx200 comparetotmag  -7.0    7.0     ->   0

+ctmx201 comparetotmag  -7.0    7       ->  -1

+ctmx202 comparetotmag  -7      7.0     ->   1

+ctmx203 comparetotmag  -7E+0   7.0     ->   1

+ctmx204 comparetotmag  -70E-1  7.0     ->   0

+ctmx205 comparetotmag  -0.7E+1 7       ->   0

+ctmx206 comparetotmag  -70E-1  7       ->  -1

+ctmx207 comparetotmag  -7.0    7E+0    ->  -1

+ctmx208 comparetotmag  -7.0    70E-1   ->   0

+ctmx209 comparetotmag  -7      0.7E+1  ->   0

+ctmx210 comparetotmag  -7      70E-1   ->   1

+

+ctmx220 comparetotmag  -8.0    7.0     ->   1

+ctmx221 comparetotmag  -8.0    7       ->   1

+ctmx222 comparetotmag  -8      7.0     ->   1

+ctmx223 comparetotmag  -8E+0   7.0     ->   1

+ctmx224 comparetotmag  -80E-1  7.0     ->   1

+ctmx225 comparetotmag  -0.8E+1 7       ->   1

+ctmx226 comparetotmag  -80E-1  7       ->   1

+ctmx227 comparetotmag  -8.0    7E+0    ->   1

+ctmx228 comparetotmag  -8.0    70E-1   ->   1

+ctmx229 comparetotmag  -8      0.7E+1  ->   1

+ctmx230 comparetotmag  -8      70E-1   ->   1

+

+ctmx240 comparetotmag  -8.0    9.0     ->  -1

+ctmx241 comparetotmag  -8.0    9       ->  -1

+ctmx242 comparetotmag  -8      9.0     ->  -1

+ctmx243 comparetotmag  -8E+0   9.0     ->  -1

+ctmx244 comparetotmag  -80E-1  9.0     ->  -1

+ctmx245 comparetotmag  -0.8E+1 9       ->  -1

+ctmx246 comparetotmag  -80E-1  9       ->  -1

+ctmx247 comparetotmag  -8.0    9E+0    ->  -1

+ctmx248 comparetotmag  -8.0    90E-1   ->  -1

+ctmx249 comparetotmag  -8      0.9E+1  ->  -1

+ctmx250 comparetotmag  -8      90E-1   ->  -1

+

+-- and again, with sign changes +- ..

+ctmx300 comparetotmag   7.0    -7.0     ->   0

+ctmx301 comparetotmag   7.0    -7       ->  -1

+ctmx302 comparetotmag   7      -7.0     ->   1

+ctmx303 comparetotmag   7E+0   -7.0     ->   1

+ctmx304 comparetotmag   70E-1  -7.0     ->   0

+ctmx305 comparetotmag   .7E+1  -7       ->   0

+ctmx306 comparetotmag   70E-1  -7       ->  -1

+ctmx307 comparetotmag   7.0    -7E+0    ->  -1

+ctmx308 comparetotmag   7.0    -70E-1   ->   0

+ctmx309 comparetotmag   7      -.7E+1   ->   0

+ctmx310 comparetotmag   7      -70E-1   ->   1

+

+ctmx320 comparetotmag   8.0    -7.0     ->   1

+ctmx321 comparetotmag   8.0    -7       ->   1

+ctmx322 comparetotmag   8      -7.0     ->   1

+ctmx323 comparetotmag   8E+0   -7.0     ->   1

+ctmx324 comparetotmag   80E-1  -7.0     ->   1

+ctmx325 comparetotmag   .8E+1  -7       ->   1

+ctmx326 comparetotmag   80E-1  -7       ->   1

+ctmx327 comparetotmag   8.0    -7E+0    ->   1

+ctmx328 comparetotmag   8.0    -70E-1   ->   1

+ctmx329 comparetotmag   8      -.7E+1   ->   1

+ctmx330 comparetotmag   8      -70E-1   ->   1

+

+ctmx340 comparetotmag   8.0    -9.0     ->  -1

+ctmx341 comparetotmag   8.0    -9       ->  -1

+ctmx342 comparetotmag   8      -9.0     ->  -1

+ctmx343 comparetotmag   8E+0   -9.0     ->  -1

+ctmx344 comparetotmag   80E-1  -9.0     ->  -1

+ctmx345 comparetotmag   .8E+1  -9       ->  -1

+ctmx346 comparetotmag   80E-1  -9       ->  -1

+ctmx347 comparetotmag   8.0    -9E+0    ->  -1

+ctmx348 comparetotmag   8.0    -90E-1   ->  -1

+ctmx349 comparetotmag   8      -.9E+1   ->  -1

+ctmx350 comparetotmag   8      -90E-1   ->  -1

+

+-- and again, with sign changes -- ..

+ctmx400 comparetotmag   -7.0    -7.0     ->   0

+ctmx401 comparetotmag   -7.0    -7       ->  -1

+ctmx402 comparetotmag   -7      -7.0     ->   1

+ctmx403 comparetotmag   -7E+0   -7.0     ->   1

+ctmx404 comparetotmag   -70E-1  -7.0     ->   0

+ctmx405 comparetotmag   -.7E+1  -7       ->   0

+ctmx406 comparetotmag   -70E-1  -7       ->  -1

+ctmx407 comparetotmag   -7.0    -7E+0    ->  -1

+ctmx408 comparetotmag   -7.0    -70E-1   ->   0

+ctmx409 comparetotmag   -7      -.7E+1   ->   0

+ctmx410 comparetotmag   -7      -70E-1   ->   1

+

+ctmx420 comparetotmag   -8.0    -7.0     ->   1

+ctmx421 comparetotmag   -8.0    -7       ->   1

+ctmx422 comparetotmag   -8      -7.0     ->   1

+ctmx423 comparetotmag   -8E+0   -7.0     ->   1

+ctmx424 comparetotmag   -80E-1  -7.0     ->   1

+ctmx425 comparetotmag   -.8E+1  -7       ->   1

+ctmx426 comparetotmag   -80E-1  -7       ->   1

+ctmx427 comparetotmag   -8.0    -7E+0    ->   1

+ctmx428 comparetotmag   -8.0    -70E-1   ->   1

+ctmx429 comparetotmag   -8      -.7E+1   ->   1

+ctmx430 comparetotmag   -8      -70E-1   ->   1

+

+ctmx440 comparetotmag   -8.0    -9.0     ->  -1

+ctmx441 comparetotmag   -8.0    -9       ->  -1

+ctmx442 comparetotmag   -8      -9.0     ->  -1

+ctmx443 comparetotmag   -8E+0   -9.0     ->  -1

+ctmx444 comparetotmag   -80E-1  -9.0     ->  -1

+ctmx445 comparetotmag   -.8E+1  -9       ->  -1

+ctmx446 comparetotmag   -80E-1  -9       ->  -1

+ctmx447 comparetotmag   -8.0    -9E+0    ->  -1

+ctmx448 comparetotmag   -8.0    -90E-1   ->  -1

+ctmx449 comparetotmag   -8      -.9E+1   ->  -1

+ctmx450 comparetotmag   -8      -90E-1   ->  -1

+

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+precision: 40

+ctmx470 comparetotmag 123.4560000000000000E789 123.456E789  ->  -1

+ctmx471 comparetotmag 123.456000000000000E-89 123.456E-89  ->  -1

+ctmx472 comparetotmag 123.45600000000000E789 123.456E789  ->  -1

+ctmx473 comparetotmag 123.4560000000000E-89 123.456E-89  ->  -1

+ctmx474 comparetotmag 123.456000000000E789 123.456E789  ->  -1

+ctmx475 comparetotmag 123.45600000000E-89 123.456E-89  ->  -1

+ctmx476 comparetotmag 123.4560000000E789 123.456E789  ->  -1

+ctmx477 comparetotmag 123.456000000E-89 123.456E-89  ->  -1

+ctmx478 comparetotmag 123.45600000E789 123.456E789  ->  -1

+ctmx479 comparetotmag 123.4560000E-89 123.456E-89  ->  -1

+ctmx480 comparetotmag 123.456000E789 123.456E789  ->  -1

+ctmx481 comparetotmag 123.45600E-89 123.456E-89  ->  -1

+ctmx482 comparetotmag 123.4560E789 123.456E789  ->  -1

+ctmx483 comparetotmag 123.456E-89 123.456E-89  ->   0

+ctmx484 comparetotmag 123.456E-89 123.4560000000000000E-89  ->   1

+ctmx485 comparetotmag 123.456E789 123.456000000000000E789  ->   1

+ctmx486 comparetotmag 123.456E-89 123.45600000000000E-89  ->   1

+ctmx487 comparetotmag 123.456E789 123.4560000000000E789  ->   1

+ctmx488 comparetotmag 123.456E-89 123.456000000000E-89  ->   1

+ctmx489 comparetotmag 123.456E789 123.45600000000E789  ->   1

+ctmx490 comparetotmag 123.456E-89 123.4560000000E-89  ->   1

+ctmx491 comparetotmag 123.456E789 123.456000000E789  ->   1

+ctmx492 comparetotmag 123.456E-89 123.45600000E-89  ->   1

+ctmx493 comparetotmag 123.456E789 123.4560000E789  ->   1

+ctmx494 comparetotmag 123.456E-89 123.456000E-89  ->   1

+ctmx495 comparetotmag 123.456E789 123.45600E789  ->   1

+ctmx496 comparetotmag 123.456E-89 123.4560E-89  ->   1

+ctmx497 comparetotmag 123.456E789 123.456E789  ->   0

+

+-- wide-ranging, around precision; signs equal

+precision: 9

+ctmx500 comparetotmag    1     1E-15     ->   1

+ctmx501 comparetotmag    1     1E-14     ->   1

+ctmx502 comparetotmag    1     1E-13     ->   1

+ctmx503 comparetotmag    1     1E-12     ->   1

+ctmx504 comparetotmag    1     1E-11     ->   1

+ctmx505 comparetotmag    1     1E-10     ->   1

+ctmx506 comparetotmag    1     1E-9      ->   1

+ctmx507 comparetotmag    1     1E-8      ->   1

+ctmx508 comparetotmag    1     1E-7      ->   1

+ctmx509 comparetotmag    1     1E-6      ->   1

+ctmx510 comparetotmag    1     1E-5      ->   1

+ctmx511 comparetotmag    1     1E-4      ->   1

+ctmx512 comparetotmag    1     1E-3      ->   1

+ctmx513 comparetotmag    1     1E-2      ->   1

+ctmx514 comparetotmag    1     1E-1      ->   1

+ctmx515 comparetotmag    1     1E-0      ->   0

+ctmx516 comparetotmag    1     1E+1      ->  -1

+ctmx517 comparetotmag    1     1E+2      ->  -1

+ctmx518 comparetotmag    1     1E+3      ->  -1

+ctmx519 comparetotmag    1     1E+4      ->  -1

+ctmx521 comparetotmag    1     1E+5      ->  -1

+ctmx522 comparetotmag    1     1E+6      ->  -1

+ctmx523 comparetotmag    1     1E+7      ->  -1

+ctmx524 comparetotmag    1     1E+8      ->  -1

+ctmx525 comparetotmag    1     1E+9      ->  -1

+ctmx526 comparetotmag    1     1E+10     ->  -1

+ctmx527 comparetotmag    1     1E+11     ->  -1

+ctmx528 comparetotmag    1     1E+12     ->  -1

+ctmx529 comparetotmag    1     1E+13     ->  -1

+ctmx530 comparetotmag    1     1E+14     ->  -1

+ctmx531 comparetotmag    1     1E+15     ->  -1

+-- LR swap

+ctmx540 comparetotmag    1E-15  1        ->  -1

+ctmx541 comparetotmag    1E-14  1        ->  -1

+ctmx542 comparetotmag    1E-13  1        ->  -1

+ctmx543 comparetotmag    1E-12  1        ->  -1

+ctmx544 comparetotmag    1E-11  1        ->  -1

+ctmx545 comparetotmag    1E-10  1        ->  -1

+ctmx546 comparetotmag    1E-9   1        ->  -1

+ctmx547 comparetotmag    1E-8   1        ->  -1

+ctmx548 comparetotmag    1E-7   1        ->  -1

+ctmx549 comparetotmag    1E-6   1        ->  -1

+ctmx550 comparetotmag    1E-5   1        ->  -1

+ctmx551 comparetotmag    1E-4   1        ->  -1

+ctmx552 comparetotmag    1E-3   1        ->  -1

+ctmx553 comparetotmag    1E-2   1        ->  -1

+ctmx554 comparetotmag    1E-1   1        ->  -1

+ctmx555 comparetotmag    1E-0   1        ->   0

+ctmx556 comparetotmag    1E+1   1        ->   1

+ctmx557 comparetotmag    1E+2   1        ->   1

+ctmx558 comparetotmag    1E+3   1        ->   1

+ctmx559 comparetotmag    1E+4   1        ->   1

+ctmx561 comparetotmag    1E+5   1        ->   1

+ctmx562 comparetotmag    1E+6   1        ->   1

+ctmx563 comparetotmag    1E+7   1        ->   1

+ctmx564 comparetotmag    1E+8   1        ->   1

+ctmx565 comparetotmag    1E+9   1        ->   1

+ctmx566 comparetotmag    1E+10  1        ->   1

+ctmx567 comparetotmag    1E+11  1        ->   1

+ctmx568 comparetotmag    1E+12  1        ->   1

+ctmx569 comparetotmag    1E+13  1        ->   1

+ctmx570 comparetotmag    1E+14  1        ->   1

+ctmx571 comparetotmag    1E+15  1        ->   1

+-- similar with an useful coefficient, one side only

+ctmx580 comparetotmag  0.000000987654321     1E-15     ->   1

+ctmx581 comparetotmag  0.000000987654321     1E-14     ->   1

+ctmx582 comparetotmag  0.000000987654321     1E-13     ->   1

+ctmx583 comparetotmag  0.000000987654321     1E-12     ->   1

+ctmx584 comparetotmag  0.000000987654321     1E-11     ->   1

+ctmx585 comparetotmag  0.000000987654321     1E-10     ->   1

+ctmx586 comparetotmag  0.000000987654321     1E-9      ->   1

+ctmx587 comparetotmag  0.000000987654321     1E-8      ->   1

+ctmx588 comparetotmag  0.000000987654321     1E-7      ->   1

+ctmx589 comparetotmag  0.000000987654321     1E-6      ->  -1

+ctmx590 comparetotmag  0.000000987654321     1E-5      ->  -1

+ctmx591 comparetotmag  0.000000987654321     1E-4      ->  -1

+ctmx592 comparetotmag  0.000000987654321     1E-3      ->  -1

+ctmx593 comparetotmag  0.000000987654321     1E-2      ->  -1

+ctmx594 comparetotmag  0.000000987654321     1E-1      ->  -1

+ctmx595 comparetotmag  0.000000987654321     1E-0      ->  -1

+ctmx596 comparetotmag  0.000000987654321     1E+1      ->  -1

+ctmx597 comparetotmag  0.000000987654321     1E+2      ->  -1

+ctmx598 comparetotmag  0.000000987654321     1E+3      ->  -1

+ctmx599 comparetotmag  0.000000987654321     1E+4      ->  -1

+

+-- check some unit-y traps

+precision: 20

+ctmx600 comparetotmag   12            12.2345  ->  -1

+ctmx601 comparetotmag   12.0          12.2345  ->  -1

+ctmx602 comparetotmag   12.00         12.2345  ->  -1

+ctmx603 comparetotmag   12.000        12.2345  ->  -1

+ctmx604 comparetotmag   12.0000       12.2345  ->  -1

+ctmx605 comparetotmag   12.00000      12.2345  ->  -1

+ctmx606 comparetotmag   12.000000     12.2345  ->  -1

+ctmx607 comparetotmag   12.0000000    12.2345  ->  -1

+ctmx608 comparetotmag   12.00000000   12.2345  ->  -1

+ctmx609 comparetotmag   12.000000000  12.2345  ->  -1

+ctmx610 comparetotmag   12.1234 12             ->   1

+ctmx611 comparetotmag   12.1234 12.0           ->   1

+ctmx612 comparetotmag   12.1234 12.00          ->   1

+ctmx613 comparetotmag   12.1234 12.000         ->   1

+ctmx614 comparetotmag   12.1234 12.0000        ->   1

+ctmx615 comparetotmag   12.1234 12.00000       ->   1

+ctmx616 comparetotmag   12.1234 12.000000      ->   1

+ctmx617 comparetotmag   12.1234 12.0000000     ->   1

+ctmx618 comparetotmag   12.1234 12.00000000    ->   1

+ctmx619 comparetotmag   12.1234 12.000000000   ->   1

+ctmx620 comparetotmag  -12           -12.2345  ->  -1

+ctmx621 comparetotmag  -12.0         -12.2345  ->  -1

+ctmx622 comparetotmag  -12.00        -12.2345  ->  -1

+ctmx623 comparetotmag  -12.000       -12.2345  ->  -1

+ctmx624 comparetotmag  -12.0000      -12.2345  ->  -1

+ctmx625 comparetotmag  -12.00000     -12.2345  ->  -1

+ctmx626 comparetotmag  -12.000000    -12.2345  ->  -1

+ctmx627 comparetotmag  -12.0000000   -12.2345  ->  -1

+ctmx628 comparetotmag  -12.00000000  -12.2345  ->  -1

+ctmx629 comparetotmag  -12.000000000 -12.2345  ->  -1

+ctmx630 comparetotmag  -12.1234 -12            ->   1

+ctmx631 comparetotmag  -12.1234 -12.0          ->   1

+ctmx632 comparetotmag  -12.1234 -12.00         ->   1

+ctmx633 comparetotmag  -12.1234 -12.000        ->   1

+ctmx634 comparetotmag  -12.1234 -12.0000       ->   1

+ctmx635 comparetotmag  -12.1234 -12.00000      ->   1

+ctmx636 comparetotmag  -12.1234 -12.000000     ->   1

+ctmx637 comparetotmag  -12.1234 -12.0000000    ->   1

+ctmx638 comparetotmag  -12.1234 -12.00000000   ->   1

+ctmx639 comparetotmag  -12.1234 -12.000000000  ->   1

+precision: 9

+

+-- extended zeros

+ctmx640 comparetotmag   0     0    ->   0

+ctmx641 comparetotmag   0    -0    ->   0

+ctmx642 comparetotmag   0    -0.0  ->   1

+ctmx643 comparetotmag   0     0.0  ->   1

+ctmx644 comparetotmag  -0     0    ->   0

+ctmx645 comparetotmag  -0    -0    ->   0

+ctmx646 comparetotmag  -0    -0.0  ->   1

+ctmx647 comparetotmag  -0     0.0  ->   1

+ctmx648 comparetotmag   0.0   0    ->  -1

+ctmx649 comparetotmag   0.0  -0    ->  -1

+ctmx650 comparetotmag   0.0  -0.0  ->   0

+ctmx651 comparetotmag   0.0   0.0  ->   0

+ctmx652 comparetotmag  -0.0   0    ->  -1

+ctmx653 comparetotmag  -0.0  -0    ->  -1

+ctmx654 comparetotmag  -0.0  -0.0  ->   0

+ctmx655 comparetotmag  -0.0   0.0  ->   0

+

+ctmx656 comparetotmag  -0E1   0.0  ->   1

+ctmx657 comparetotmag  -0E2   0.0  ->   1

+ctmx658 comparetotmag   0E1   0.0  ->   1

+ctmx659 comparetotmag   0E2   0.0  ->   1

+ctmx660 comparetotmag  -0E1   0    ->   1

+ctmx661 comparetotmag  -0E2   0    ->   1

+ctmx662 comparetotmag   0E1   0    ->   1

+ctmx663 comparetotmag   0E2   0    ->   1

+ctmx664 comparetotmag  -0E1  -0E1  ->   0

+ctmx665 comparetotmag  -0E2  -0E1  ->   1

+ctmx666 comparetotmag   0E1  -0E1  ->   0

+ctmx667 comparetotmag   0E2  -0E1  ->   1

+ctmx668 comparetotmag  -0E1  -0E2  ->  -1

+ctmx669 comparetotmag  -0E2  -0E2  ->   0

+ctmx670 comparetotmag   0E1  -0E2  ->  -1

+ctmx671 comparetotmag   0E2  -0E2  ->   0

+ctmx672 comparetotmag  -0E1   0E1  ->   0

+ctmx673 comparetotmag  -0E2   0E1  ->   1

+ctmx674 comparetotmag   0E1   0E1  ->   0

+ctmx675 comparetotmag   0E2   0E1  ->   1

+ctmx676 comparetotmag  -0E1   0E2  ->  -1

+ctmx677 comparetotmag  -0E2   0E2  ->   0

+ctmx678 comparetotmag   0E1   0E2  ->  -1

+ctmx679 comparetotmag   0E2   0E2  ->   0

+

+-- trailing zeros; unit-y

+precision: 20

+ctmx680 comparetotmag   12    12            ->   0

+ctmx681 comparetotmag   12    12.0          ->   1

+ctmx682 comparetotmag   12    12.00         ->   1

+ctmx683 comparetotmag   12    12.000        ->   1

+ctmx684 comparetotmag   12    12.0000       ->   1

+ctmx685 comparetotmag   12    12.00000      ->   1

+ctmx686 comparetotmag   12    12.000000     ->   1

+ctmx687 comparetotmag   12    12.0000000    ->   1

+ctmx688 comparetotmag   12    12.00000000   ->   1

+ctmx689 comparetotmag   12    12.000000000  ->   1

+ctmx690 comparetotmag   12              12  ->   0

+ctmx691 comparetotmag   12.0            12  ->  -1

+ctmx692 comparetotmag   12.00           12  ->  -1

+ctmx693 comparetotmag   12.000          12  ->  -1

+ctmx694 comparetotmag   12.0000         12  ->  -1

+ctmx695 comparetotmag   12.00000        12  ->  -1

+ctmx696 comparetotmag   12.000000       12  ->  -1

+ctmx697 comparetotmag   12.0000000      12  ->  -1

+ctmx698 comparetotmag   12.00000000     12  ->  -1

+ctmx699 comparetotmag   12.000000000    12  ->  -1

+

+-- long operand checks

+maxexponent: 999

+minexponent: -999

+precision: 9

+ctmx701 comparetotmag 12345678000  1  ->   1

+ctmx702 comparetotmag 1 12345678000   ->  -1

+ctmx703 comparetotmag 1234567800   1  ->   1

+ctmx704 comparetotmag 1 1234567800    ->  -1

+ctmx705 comparetotmag 1234567890   1  ->   1

+ctmx706 comparetotmag 1 1234567890    ->  -1

+ctmx707 comparetotmag 1234567891   1  ->   1

+ctmx708 comparetotmag 1 1234567891    ->  -1

+ctmx709 comparetotmag 12345678901  1  ->   1

+ctmx710 comparetotmag 1 12345678901   ->  -1

+ctmx711 comparetotmag 1234567896   1  ->   1

+ctmx712 comparetotmag 1 1234567896    ->  -1

+ctmx713 comparetotmag -1234567891  1  ->   1

+ctmx714 comparetotmag 1 -1234567891   ->  -1

+ctmx715 comparetotmag -12345678901 1  ->   1

+ctmx716 comparetotmag 1 -12345678901  ->  -1

+ctmx717 comparetotmag -1234567896  1  ->   1

+ctmx718 comparetotmag 1 -1234567896   ->  -1

+

+precision: 15

+-- same with plenty of precision

+ctmx721 comparetotmag 12345678000 1  ->   1

+ctmx722 comparetotmag 1 12345678000  ->  -1

+ctmx723 comparetotmag 1234567800  1  ->   1

+ctmx724 comparetotmag 1 1234567800   ->  -1

+ctmx725 comparetotmag 1234567890  1  ->   1

+ctmx726 comparetotmag 1 1234567890   ->  -1

+ctmx727 comparetotmag 1234567891  1  ->   1

+ctmx728 comparetotmag 1 1234567891   ->  -1

+ctmx729 comparetotmag 12345678901 1  ->   1

+ctmx730 comparetotmag 1 12345678901  ->  -1

+ctmx731 comparetotmag 1234567896  1  ->   1

+ctmx732 comparetotmag 1 1234567896   ->  -1

+

+-- residue cases

+precision: 5

+ctmx740 comparetotmag  1  0.9999999   ->   1

+ctmx741 comparetotmag  1  0.999999    ->   1

+ctmx742 comparetotmag  1  0.99999     ->   1

+ctmx743 comparetotmag  1  1.0000      ->   1

+ctmx744 comparetotmag  1  1.00001     ->  -1

+ctmx745 comparetotmag  1  1.000001    ->  -1

+ctmx746 comparetotmag  1  1.0000001   ->  -1

+ctmx750 comparetotmag  0.9999999  1   ->  -1

+ctmx751 comparetotmag  0.999999   1   ->  -1

+ctmx752 comparetotmag  0.99999    1   ->  -1

+ctmx753 comparetotmag  1.0000     1   ->  -1

+ctmx754 comparetotmag  1.00001    1   ->   1

+ctmx755 comparetotmag  1.000001   1   ->   1

+ctmx756 comparetotmag  1.0000001  1   ->   1

+

+-- a selection of longies

+ctmx760 comparetotmag -36852134.84194296250843579428931 -5830629.8347085025808756560357940  ->   1

+ctmx761 comparetotmag -36852134.84194296250843579428931 -36852134.84194296250843579428931   ->   0

+ctmx762 comparetotmag -36852134.94194296250843579428931 -36852134.84194296250843579428931   ->   1

+ctmx763 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+-- precisions above or below the difference should have no effect

+precision:   11

+ctmx764 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:   10

+ctmx765 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    9

+ctmx766 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    8

+ctmx767 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    7

+ctmx768 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    6

+ctmx769 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    5

+ctmx770 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    4

+ctmx771 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    3

+ctmx772 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    2

+ctmx773 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+precision:    1

+ctmx774 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1

+

+-- Specials

+precision:   9

+ctmx780 comparetotmag  Inf  -Inf   ->  0

+ctmx781 comparetotmag  Inf  -1000  ->  1

+ctmx782 comparetotmag  Inf  -1     ->  1

+ctmx783 comparetotmag  Inf  -0     ->  1

+ctmx784 comparetotmag  Inf   0     ->  1

+ctmx785 comparetotmag  Inf   1     ->  1

+ctmx786 comparetotmag  Inf   1000  ->  1

+ctmx787 comparetotmag  Inf   Inf   ->  0

+ctmx788 comparetotmag -1000  Inf   -> -1

+ctmx789 comparetotmag -Inf   Inf   ->  0

+ctmx790 comparetotmag -1     Inf   -> -1

+ctmx791 comparetotmag -0     Inf   -> -1

+ctmx792 comparetotmag  0     Inf   -> -1

+ctmx793 comparetotmag  1     Inf   -> -1

+ctmx794 comparetotmag  1000  Inf   -> -1

+ctmx795 comparetotmag  Inf   Inf   ->  0

+

+ctmx800 comparetotmag -Inf  -Inf   ->  0

+ctmx801 comparetotmag -Inf  -1000  ->  1

+ctmx802 comparetotmag -Inf  -1     ->  1

+ctmx803 comparetotmag -Inf  -0     ->  1

+ctmx804 comparetotmag -Inf   0     ->  1

+ctmx805 comparetotmag -Inf   1     ->  1

+ctmx806 comparetotmag -Inf   1000  ->  1

+ctmx807 comparetotmag -Inf   Inf   ->  0

+ctmx808 comparetotmag -Inf  -Inf   ->  0

+ctmx809 comparetotmag -1000 -Inf   -> -1

+ctmx810 comparetotmag -1    -Inf   -> -1

+ctmx811 comparetotmag -0    -Inf   -> -1

+ctmx812 comparetotmag  0    -Inf   -> -1

+ctmx813 comparetotmag  1    -Inf   -> -1

+ctmx814 comparetotmag  1000 -Inf   -> -1

+ctmx815 comparetotmag  Inf  -Inf   ->  0

+

+ctmx821 comparetotmag  NaN -Inf    ->  1

+ctmx822 comparetotmag  NaN -1000   ->  1

+ctmx823 comparetotmag  NaN -1      ->  1

+ctmx824 comparetotmag  NaN -0      ->  1

+ctmx825 comparetotmag  NaN  0      ->  1

+ctmx826 comparetotmag  NaN  1      ->  1

+ctmx827 comparetotmag  NaN  1000   ->  1

+ctmx828 comparetotmag  NaN  Inf    ->  1

+ctmx829 comparetotmag  NaN  NaN    ->  0

+ctmx830 comparetotmag -Inf  NaN    ->  -1

+ctmx831 comparetotmag -1000 NaN    ->  -1

+ctmx832 comparetotmag -1    NaN    ->  -1

+ctmx833 comparetotmag -0    NaN    ->  -1

+ctmx834 comparetotmag  0    NaN    ->  -1

+ctmx835 comparetotmag  1    NaN    ->  -1

+ctmx836 comparetotmag  1000 NaN    ->  -1

+ctmx837 comparetotmag  Inf  NaN    ->  -1

+ctmx838 comparetotmag -NaN -NaN    ->  0

+ctmx839 comparetotmag +NaN -NaN    ->  0

+ctmx840 comparetotmag -NaN +NaN    ->  0

+

+ctmx841 comparetotmag  sNaN -sNaN  ->  0

+ctmx842 comparetotmag  sNaN -NaN   ->  -1

+ctmx843 comparetotmag  sNaN -Inf   ->  1

+ctmx844 comparetotmag  sNaN -1000  ->  1

+ctmx845 comparetotmag  sNaN -1     ->  1

+ctmx846 comparetotmag  sNaN -0     ->  1

+ctmx847 comparetotmag  sNaN  0     ->  1

+ctmx848 comparetotmag  sNaN  1     ->  1

+ctmx849 comparetotmag  sNaN  1000  ->  1

+ctmx850 comparetotmag  sNaN  NaN   ->  -1

+ctmx851 comparetotmag  sNaN sNaN   ->  0

+

+ctmx852 comparetotmag -sNaN sNaN   ->  0

+ctmx853 comparetotmag -NaN  sNaN   ->  1

+ctmx854 comparetotmag -Inf  sNaN   ->  -1

+ctmx855 comparetotmag -1000 sNaN   ->  -1

+ctmx856 comparetotmag -1    sNaN   ->  -1

+ctmx857 comparetotmag -0    sNaN   ->  -1

+ctmx858 comparetotmag  0    sNaN   ->  -1

+ctmx859 comparetotmag  1    sNaN   ->  -1

+ctmx860 comparetotmag  1000 sNaN   ->  -1

+ctmx861 comparetotmag  Inf  sNaN   ->  -1

+ctmx862 comparetotmag  NaN  sNaN   ->  1

+ctmx863 comparetotmag  sNaN sNaN   ->  0

+

+ctmx871 comparetotmag  -sNaN -sNaN  ->  0

+ctmx872 comparetotmag  -sNaN -NaN   ->  -1

+ctmx873 comparetotmag  -sNaN -Inf   ->  1

+ctmx874 comparetotmag  -sNaN -1000  ->  1

+ctmx875 comparetotmag  -sNaN -1     ->  1

+ctmx876 comparetotmag  -sNaN -0     ->  1

+ctmx877 comparetotmag  -sNaN  0     ->  1

+ctmx878 comparetotmag  -sNaN  1     ->  1

+ctmx879 comparetotmag  -sNaN  1000  ->  1

+ctmx880 comparetotmag  -sNaN  NaN   ->  -1

+ctmx881 comparetotmag  -sNaN sNaN   ->  0

+

+ctmx882 comparetotmag -sNaN -sNaN   ->  0

+ctmx883 comparetotmag -NaN  -sNaN   ->  1

+ctmx884 comparetotmag -Inf  -sNaN   ->  -1

+ctmx885 comparetotmag -1000 -sNaN   ->  -1

+ctmx886 comparetotmag -1    -sNaN   ->  -1

+ctmx887 comparetotmag -0    -sNaN   ->  -1

+ctmx888 comparetotmag  0    -sNaN   ->  -1

+ctmx889 comparetotmag  1    -sNaN   ->  -1

+ctmx890 comparetotmag  1000 -sNaN   ->  -1

+ctmx891 comparetotmag  Inf  -sNaN   ->  -1

+ctmx892 comparetotmag  NaN  -sNaN   ->  1

+ctmx893 comparetotmag  sNaN -sNaN   ->  0

+

+-- NaNs with payload

+ctmx960 comparetotmag  NaN9 -Inf   ->  1

+ctmx961 comparetotmag  NaN8  999   ->  1

+ctmx962 comparetotmag  NaN77 Inf   ->  1

+ctmx963 comparetotmag -NaN67 NaN5  ->  1

+ctmx964 comparetotmag -Inf  -NaN4  ->  -1

+ctmx965 comparetotmag -999  -NaN33 ->  -1

+ctmx966 comparetotmag  Inf   NaN2  ->  -1

+

+ctmx970 comparetotmag -NaN41 -NaN42 -> -1

+ctmx971 comparetotmag +NaN41 -NaN42 -> -1

+ctmx972 comparetotmag -NaN41 +NaN42 -> -1

+ctmx973 comparetotmag +NaN41 +NaN42 -> -1

+ctmx974 comparetotmag -NaN42 -NaN01 ->  1

+ctmx975 comparetotmag +NaN42 -NaN01 ->  1

+ctmx976 comparetotmag -NaN42 +NaN01 ->  1

+ctmx977 comparetotmag +NaN42 +NaN01 ->  1

+

+ctmx980 comparetotmag -sNaN771 -sNaN772 -> -1

+ctmx981 comparetotmag +sNaN771 -sNaN772 -> -1

+ctmx982 comparetotmag -sNaN771 +sNaN772 -> -1

+ctmx983 comparetotmag +sNaN771 +sNaN772 -> -1

+ctmx984 comparetotmag -sNaN772 -sNaN771 ->  1

+ctmx985 comparetotmag +sNaN772 -sNaN771 ->  1

+ctmx986 comparetotmag -sNaN772 +sNaN771 ->  1

+ctmx987 comparetotmag +sNaN772 +sNaN771 ->  1

+

+ctmx991 comparetotmag -sNaN99 -Inf    ->  1

+ctmx992 comparetotmag  sNaN98 -11     ->  1

+ctmx993 comparetotmag  sNaN97  NaN    -> -1

+ctmx994 comparetotmag  sNaN16 sNaN94  -> -1

+ctmx995 comparetotmag  NaN85  sNaN83  ->  1

+ctmx996 comparetotmag -Inf    sNaN92  -> -1

+ctmx997 comparetotmag  088    sNaN81  -> -1

+ctmx998 comparetotmag  Inf    sNaN90  -> -1

+ctmx999 comparetotmag  NaN   -sNaN89  ->  1

+

+-- overflow and underflow tests .. subnormal results now allowed

+maxExponent: 999999999

+minexponent: -999999999

+ctmx1080 comparetotmag +1.23456789012345E-0 9E+999999999  ->  -1

+ctmx1081 comparetotmag 9E+999999999 +1.23456789012345E-0  ->   1

+ctmx1082 comparetotmag +0.100 9E-999999999                ->   1

+ctmx1083 comparetotmag 9E-999999999 +0.100                ->  -1

+ctmx1085 comparetotmag -1.23456789012345E-0 9E+999999999  ->  -1

+ctmx1086 comparetotmag 9E+999999999 -1.23456789012345E-0  ->   1

+ctmx1087 comparetotmag -0.100 9E-999999999                ->   1

+ctmx1088 comparetotmag 9E-999999999 -0.100                ->  -1

+

+ctmx1089 comparetotmag 1e-599999999 1e-400000001    ->  -1

+ctmx1090 comparetotmag 1e-599999999 1e-400000000    ->  -1

+ctmx1091 comparetotmag 1e-600000000 1e-400000000    ->  -1

+ctmx1092 comparetotmag 9e-999999998 0.01            ->  -1

+ctmx1093 comparetotmag 9e-999999998 0.1             ->  -1

+ctmx1094 comparetotmag 0.01 9e-999999998            ->   1

+ctmx1095 comparetotmag 1e599999999 1e400000001      ->   1

+ctmx1096 comparetotmag 1e599999999 1e400000000      ->   1

+ctmx1097 comparetotmag 1e600000000 1e400000000      ->   1

+ctmx1098 comparetotmag 9e999999998 100              ->   1

+ctmx1099 comparetotmag 9e999999998 10               ->   1

+ctmx1100 comparetotmag 100  9e999999998             ->  -1

+-- signs

+ctmx1101 comparetotmag  1e+777777777  1e+411111111  ->   1

+ctmx1102 comparetotmag  1e+777777777 -1e+411111111  ->   1

+ctmx1103 comparetotmag -1e+777777777  1e+411111111  ->   1

+ctmx1104 comparetotmag -1e+777777777 -1e+411111111  ->   1

+ctmx1105 comparetotmag  1e-777777777  1e-411111111  ->  -1

+ctmx1106 comparetotmag  1e-777777777 -1e-411111111  ->  -1

+ctmx1107 comparetotmag -1e-777777777  1e-411111111  ->  -1

+ctmx1108 comparetotmag -1e-777777777 -1e-411111111  ->  -1

+

+-- spread zeros

+ctmx1110 comparetotmag   0E-383  0        ->  -1

+ctmx1111 comparetotmag   0E-383 -0        ->  -1

+ctmx1112 comparetotmag  -0E-383  0        ->  -1

+ctmx1113 comparetotmag  -0E-383 -0        ->  -1

+ctmx1114 comparetotmag   0E-383  0E+384   ->  -1

+ctmx1115 comparetotmag   0E-383 -0E+384   ->  -1

+ctmx1116 comparetotmag  -0E-383  0E+384   ->  -1

+ctmx1117 comparetotmag  -0E-383 -0E+384   ->  -1

+ctmx1118 comparetotmag   0       0E+384   ->  -1

+ctmx1119 comparetotmag   0      -0E+384   ->  -1

+ctmx1120 comparetotmag  -0       0E+384   ->  -1

+ctmx1121 comparetotmag  -0      -0E+384   ->  -1

+

+ctmx1130 comparetotmag   0E+384  0        ->   1

+ctmx1131 comparetotmag   0E+384 -0        ->   1

+ctmx1132 comparetotmag  -0E+384  0        ->   1

+ctmx1133 comparetotmag  -0E+384 -0        ->   1

+ctmx1134 comparetotmag   0E+384  0E-383   ->   1

+ctmx1135 comparetotmag   0E+384 -0E-383   ->   1

+ctmx1136 comparetotmag  -0E+384  0E-383   ->   1

+ctmx1137 comparetotmag  -0E+384 -0E-383   ->   1

+ctmx1138 comparetotmag   0       0E-383   ->   1

+ctmx1139 comparetotmag   0      -0E-383   ->   1

+ctmx1140 comparetotmag  -0       0E-383   ->   1

+ctmx1141 comparetotmag  -0      -0E-383   ->   1

+

+-- Null tests

+ctmx9990 comparetotmag 10  # -> NaN Invalid_operation

+ctmx9991 comparetotmag  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/copy.decTest b/Lib/test/decimaltestdata/copy.decTest
new file mode 100644
index 0000000..e6edac5
--- /dev/null
+++ b/Lib/test/decimaltestdata/copy.decTest
@@ -0,0 +1,86 @@
+------------------------------------------------------------------------

+-- copy.decTest -- quiet copy                                         --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check

+cpyx001 copy       +7.50  -> 7.50

+

+-- Infinities

+cpyx011 copy  Infinity    -> Infinity

+cpyx012 copy  -Infinity   -> -Infinity

+

+-- NaNs, 0 payload

+cpyx021 copy         NaN  -> NaN

+cpyx022 copy        -NaN  -> -NaN

+cpyx023 copy        sNaN  -> sNaN

+cpyx024 copy       -sNaN  -> -sNaN

+

+-- NaNs, non-0 payload

+cpyx031 copy       NaN10  -> NaN10

+cpyx032 copy      -NaN10  -> -NaN10

+cpyx033 copy      sNaN10  -> sNaN10

+cpyx034 copy     -sNaN10  -> -sNaN10

+cpyx035 copy       NaN7   -> NaN7

+cpyx036 copy      -NaN7   -> -NaN7

+cpyx037 copy      sNaN101 -> sNaN101

+cpyx038 copy     -sNaN101 -> -sNaN101

+

+-- finites

+cpyx101 copy          7   -> 7

+cpyx102 copy         -7   -> -7

+cpyx103 copy         75   -> 75

+cpyx104 copy        -75   -> -75

+cpyx105 copy       7.50   -> 7.50

+cpyx106 copy      -7.50   -> -7.50

+cpyx107 copy       7.500  -> 7.500

+cpyx108 copy      -7.500  -> -7.500

+

+-- zeros

+cpyx111 copy          0   -> 0

+cpyx112 copy         -0   -> -0

+cpyx113 copy       0E+4   -> 0E+4

+cpyx114 copy      -0E+4   -> -0E+4

+cpyx115 copy     0.0000   -> 0.0000

+cpyx116 copy    -0.0000   -> -0.0000

+cpyx117 copy      0E-141  -> 0E-141

+cpyx118 copy     -0E-141  -> -0E-141

+

+-- full coefficients, alternating bits

+cpyx121 copy   268268268        -> 268268268

+cpyx122 copy  -268268268        -> -268268268

+cpyx123 copy   134134134        -> 134134134

+cpyx124 copy  -134134134        -> -134134134

+

+-- Nmax, Nmin, Ntiny

+cpyx131 copy  9.99999999E+999   -> 9.99999999E+999

+cpyx132 copy  1E-999            -> 1E-999

+cpyx133 copy  1.00000000E-999   -> 1.00000000E-999

+cpyx134 copy  1E-1007           -> 1E-1007

+

+cpyx135 copy  -1E-1007          -> -1E-1007

+cpyx136 copy  -1.00000000E-999  -> -1.00000000E-999

+cpyx137 copy  -1E-999           -> -1E-999

+cpyx138 copy  -9.99999999E+999  -> -9.99999999E+999

diff --git a/Lib/test/decimaltestdata/copyabs.decTest b/Lib/test/decimaltestdata/copyabs.decTest
new file mode 100644
index 0000000..4479888
--- /dev/null
+++ b/Lib/test/decimaltestdata/copyabs.decTest
@@ -0,0 +1,86 @@
+------------------------------------------------------------------------

+-- copyAbs.decTest -- quiet copy and set sign to zero                 --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check

+cpax001 copyabs       +7.50  -> 7.50

+

+-- Infinities

+cpax011 copyabs  Infinity    -> Infinity

+cpax012 copyabs  -Infinity   -> Infinity

+

+-- NaNs, 0 payload

+cpax021 copyabs         NaN  -> NaN

+cpax022 copyabs        -NaN  -> NaN

+cpax023 copyabs        sNaN  -> sNaN

+cpax024 copyabs       -sNaN  -> sNaN

+

+-- NaNs, non-0 payload

+cpax031 copyabs       NaN10  -> NaN10

+cpax032 copyabs      -NaN15  -> NaN15

+cpax033 copyabs      sNaN15  -> sNaN15

+cpax034 copyabs     -sNaN10  -> sNaN10

+cpax035 copyabs       NaN7   -> NaN7

+cpax036 copyabs      -NaN7   -> NaN7

+cpax037 copyabs      sNaN101 -> sNaN101

+cpax038 copyabs     -sNaN101 -> sNaN101

+

+-- finites

+cpax101 copyabs          7   -> 7

+cpax102 copyabs         -7   -> 7

+cpax103 copyabs         75   -> 75

+cpax104 copyabs        -75   -> 75

+cpax105 copyabs       7.10   -> 7.10

+cpax106 copyabs      -7.10   -> 7.10

+cpax107 copyabs       7.500  -> 7.500

+cpax108 copyabs      -7.500  -> 7.500

+

+-- zeros

+cpax111 copyabs          0   -> 0

+cpax112 copyabs         -0   -> 0

+cpax113 copyabs       0E+6   -> 0E+6

+cpax114 copyabs      -0E+6   -> 0E+6

+cpax115 copyabs     0.0000   -> 0.0000

+cpax116 copyabs    -0.0000   -> 0.0000

+cpax117 copyabs      0E-141  -> 0E-141

+cpax118 copyabs     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+cpax121 copyabs   268268268        -> 268268268

+cpax122 copyabs  -268268268        -> 268268268

+cpax123 copyabs   134134134        -> 134134134

+cpax124 copyabs  -134134134        -> 134134134

+

+-- Nmax, Nmin, Ntiny

+cpax131 copyabs  9.99999999E+999   -> 9.99999999E+999

+cpax132 copyabs  1E-999            -> 1E-999

+cpax133 copyabs  1.00000000E-999   -> 1.00000000E-999

+cpax134 copyabs  1E-1007           -> 1E-1007

+

+cpax135 copyabs  -1E-1007          -> 1E-1007

+cpax136 copyabs  -1.00000000E-999  -> 1.00000000E-999

+cpax137 copyabs  -1E-999           -> 1E-999

+cpax199 copyabs  -9.99999999E+999  -> 9.99999999E+999

diff --git a/Lib/test/decimaltestdata/copynegate.decTest b/Lib/test/decimaltestdata/copynegate.decTest
new file mode 100644
index 0000000..7cf124c
--- /dev/null
+++ b/Lib/test/decimaltestdata/copynegate.decTest
@@ -0,0 +1,86 @@
+------------------------------------------------------------------------

+-- copyNegate.decTest -- quiet copy and negate                        --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check

+cpnx001 copynegate       +7.50  -> -7.50

+

+-- Infinities

+cpnx011 copynegate  Infinity    -> -Infinity

+cpnx012 copynegate  -Infinity   -> Infinity

+

+-- NaNs, 0 payload

+cpnx021 copynegate         NaN  -> -NaN

+cpnx022 copynegate        -NaN  -> NaN

+cpnx023 copynegate        sNaN  -> -sNaN

+cpnx024 copynegate       -sNaN  -> sNaN

+

+-- NaNs, non-0 payload

+cpnx031 copynegate       NaN13  -> -NaN13

+cpnx032 copynegate      -NaN13  -> NaN13

+cpnx033 copynegate      sNaN13  -> -sNaN13

+cpnx034 copynegate     -sNaN13  -> sNaN13

+cpnx035 copynegate       NaN70  -> -NaN70

+cpnx036 copynegate      -NaN70  -> NaN70

+cpnx037 copynegate      sNaN101 -> -sNaN101

+cpnx038 copynegate     -sNaN101 -> sNaN101

+

+-- finites

+cpnx101 copynegate          7   -> -7

+cpnx102 copynegate         -7   -> 7

+cpnx103 copynegate         75   -> -75

+cpnx104 copynegate        -75   -> 75

+cpnx105 copynegate       7.50   -> -7.50

+cpnx106 copynegate      -7.50   -> 7.50

+cpnx107 copynegate       7.500  -> -7.500

+cpnx108 copynegate      -7.500  -> 7.500

+

+-- zeros

+cpnx111 copynegate          0   -> -0

+cpnx112 copynegate         -0   -> 0

+cpnx113 copynegate       0E+4   -> -0E+4

+cpnx114 copynegate      -0E+4   -> 0E+4

+cpnx115 copynegate     0.0000   -> -0.0000

+cpnx116 copynegate    -0.0000   -> 0.0000

+cpnx117 copynegate      0E-141  -> -0E-141

+cpnx118 copynegate     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+cpnx121 copynegate  268268268         -> -268268268

+cpnx122 copynegate  -268268268        -> 268268268

+cpnx123 copynegate  134134134         -> -134134134

+cpnx124 copynegate  -134134134        -> 134134134

+

+-- Nmax, Nmin, Ntiny

+cpnx131 copynegate  9.99999999E+999   -> -9.99999999E+999

+cpnx132 copynegate  1E-999                     -> -1E-999

+cpnx133 copynegate  1.00000000E-999   -> -1.00000000E-999

+cpnx134 copynegate  1E-1007                    -> -1E-1007

+

+cpnx135 copynegate  -1E-1007                   -> 1E-1007

+cpnx136 copynegate  -1.00000000E-999  -> 1.00000000E-999

+cpnx137 copynegate  -1E-999                    -> 1E-999

+cpnx138 copynegate  -9.99999999E+999  -> 9.99999999E+999

diff --git a/Lib/test/decimaltestdata/copysign.decTest b/Lib/test/decimaltestdata/copysign.decTest
new file mode 100644
index 0000000..ed60893
--- /dev/null
+++ b/Lib/test/decimaltestdata/copysign.decTest
@@ -0,0 +1,177 @@
+------------------------------------------------------------------------

+-- copysign.decTest -- quiet copy with sign from rhs                  --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check, and examples from decArith

+cpsx001 copysign   +7.50       11  -> 7.50

+cpsx002 copysign   '1.50'   '7.33' -> 1.50

+cpsx003 copysign  '-1.50'   '7.33' -> 1.50

+cpsx004 copysign   '1.50'  '-7.33' -> -1.50

+cpsx005 copysign  '-1.50'  '-7.33' -> -1.50

+

+-- Infinities

+cpsx011 copysign  Infinity       11 -> Infinity

+cpsx012 copysign  -Infinity      11 -> Infinity

+

+-- NaNs, 0 payload

+cpsx021 copysign         NaN     11 -> NaN

+cpsx022 copysign        -NaN     11 -> NaN

+cpsx023 copysign        sNaN     11 -> sNaN

+cpsx024 copysign       -sNaN     11 -> sNaN

+

+-- NaNs, non-0 payload

+cpsx031 copysign       NaN10     11 -> NaN10

+cpsx032 copysign      -NaN10     11 -> NaN10

+cpsx033 copysign      sNaN10     11 -> sNaN10

+cpsx034 copysign     -sNaN10     11 -> sNaN10

+cpsx035 copysign       NaN7      11 -> NaN7

+cpsx036 copysign      -NaN7      11 -> NaN7

+cpsx037 copysign      sNaN101    11 -> sNaN101

+cpsx038 copysign     -sNaN101    11 -> sNaN101

+

+-- finites

+cpsx101 copysign          7      11 -> 7

+cpsx102 copysign         -7      11 -> 7

+cpsx103 copysign         75      11 -> 75

+cpsx104 copysign        -75      11 -> 75

+cpsx105 copysign       7.50      11 -> 7.50

+cpsx106 copysign      -7.50      11 -> 7.50

+cpsx107 copysign       7.500     11 -> 7.500

+cpsx108 copysign      -7.500     11 -> 7.500

+

+-- zeros

+cpsx111 copysign          0      11 -> 0

+cpsx112 copysign         -0      11 -> 0

+cpsx113 copysign       0E+4      11 -> 0E+4

+cpsx114 copysign      -0E+4      11 -> 0E+4

+cpsx115 copysign     0.0000      11 -> 0.0000

+cpsx116 copysign    -0.0000      11 -> 0.0000

+cpsx117 copysign      0E-141     11 -> 0E-141

+cpsx118 copysign     -0E-141     11 -> 0E-141

+

+-- full coefficients, alternating bits

+cpsx121 copysign   268268268           11 -> 268268268

+cpsx122 copysign  -268268268           11 -> 268268268

+cpsx123 copysign   134134134           11 -> 134134134

+cpsx124 copysign  -134134134           11 -> 134134134

+

+-- Nmax, Nmin, Ntiny

+cpsx131 copysign  9.99999999E+999      11 -> 9.99999999E+999

+cpsx132 copysign  1E-999               11 -> 1E-999

+cpsx133 copysign  1.00000000E-999      11 -> 1.00000000E-999

+cpsx134 copysign  1E-1007              11 -> 1E-1007

+

+cpsx135 copysign  -1E-1007             11 -> 1E-1007

+cpsx136 copysign  -1.00000000E-999     11 -> 1.00000000E-999

+cpsx137 copysign  -1E-999              11 -> 1E-999

+cpsx138 copysign  -9.99999999E+999     11 -> 9.99999999E+999

+

+-- repeat with negative RHS

+

+-- Infinities

+cpsx211 copysign  Infinity       -34 -> -Infinity

+cpsx212 copysign  -Infinity      -34 -> -Infinity

+

+-- NaNs, 0 payload

+cpsx221 copysign         NaN     -34 -> -NaN

+cpsx222 copysign        -NaN     -34 -> -NaN

+cpsx223 copysign        sNaN     -34 -> -sNaN

+cpsx224 copysign       -sNaN     -34 -> -sNaN

+

+-- NaNs, non-0 payload

+cpsx231 copysign       NaN10     -34 -> -NaN10

+cpsx232 copysign      -NaN10     -34 -> -NaN10

+cpsx233 copysign      sNaN10     -34 -> -sNaN10

+cpsx234 copysign     -sNaN10     -34 -> -sNaN10

+cpsx235 copysign       NaN7      -34 -> -NaN7

+cpsx236 copysign      -NaN7      -34 -> -NaN7

+cpsx237 copysign      sNaN101    -34 -> -sNaN101

+cpsx238 copysign     -sNaN101    -34 -> -sNaN101

+

+-- finites

+cpsx301 copysign          7      -34 -> -7

+cpsx302 copysign         -7      -34 -> -7

+cpsx303 copysign         75      -34 -> -75

+cpsx304 copysign        -75      -34 -> -75

+cpsx305 copysign       7.50      -34 -> -7.50

+cpsx306 copysign      -7.50      -34 -> -7.50

+cpsx307 copysign       7.500     -34 -> -7.500

+cpsx308 copysign      -7.500     -34 -> -7.500

+

+-- zeros

+cpsx311 copysign          0      -34 -> -0

+cpsx312 copysign         -0      -34 -> -0

+cpsx313 copysign       0E+4      -34 -> -0E+4

+cpsx314 copysign      -0E+4      -34 -> -0E+4

+cpsx315 copysign     0.0000      -34 -> -0.0000

+cpsx316 copysign    -0.0000      -34 -> -0.0000

+cpsx317 copysign      0E-141     -34 -> -0E-141

+cpsx318 copysign     -0E-141     -34 -> -0E-141

+

+-- full coefficients, alternating bits

+cpsx321 copysign   268268268          -18 -> -268268268

+cpsx322 copysign  -268268268          -18 -> -268268268

+cpsx323 copysign   134134134          -18 -> -134134134

+cpsx324 copysign  -134134134          -18 -> -134134134

+

+-- Nmax, Nmin, Ntiny

+cpsx331 copysign  9.99999999E+999     -18 -> -9.99999999E+999

+cpsx332 copysign  1E-999              -18 -> -1E-999

+cpsx333 copysign  1.00000000E-999     -18 -> -1.00000000E-999

+cpsx334 copysign  1E-1007             -18 -> -1E-1007

+

+cpsx335 copysign  -1E-1007            -18 -> -1E-1007

+cpsx336 copysign  -1.00000000E-999    -18 -> -1.00000000E-999

+cpsx337 copysign  -1E-999             -18 -> -1E-999

+cpsx338 copysign  -9.99999999E+999    -18 -> -9.99999999E+999

+

+-- Other kinds of RHS

+cpsx401 copysign          701    -34 -> -701

+cpsx402 copysign         -720    -34 -> -720

+cpsx403 copysign          701    -0  -> -701

+cpsx404 copysign         -720    -0  -> -720

+cpsx405 copysign          701    +0  ->  701

+cpsx406 copysign         -720    +0  ->  720

+cpsx407 copysign          701    +34 ->  701

+cpsx408 copysign         -720    +34 ->  720

+

+cpsx413 copysign          701    -Inf  -> -701

+cpsx414 copysign         -720    -Inf  -> -720

+cpsx415 copysign          701    +Inf  ->  701

+cpsx416 copysign         -720    +Inf  ->  720

+

+cpsx420 copysign          701    -NaN  -> -701

+cpsx421 copysign         -720    -NaN  -> -720

+cpsx422 copysign          701    +NaN  ->  701

+cpsx423 copysign         -720    +NaN  ->  720

+cpsx425 copysign         -720    +NaN8 ->  720

+

+cpsx426 copysign          701    -sNaN  -> -701

+cpsx427 copysign         -720    -sNaN  -> -720

+cpsx428 copysign          701    +sNaN  ->  701

+cpsx429 copysign         -720    +sNaN  ->  720

+cpsx430 copysign         -720    +sNaN3 ->  720

+

diff --git a/Lib/test/decimaltestdata/ddAbs.decTest b/Lib/test/decimaltestdata/ddAbs.decTest
new file mode 100644
index 0000000..58b7902
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddAbs.decTest
@@ -0,0 +1,126 @@
+------------------------------------------------------------------------

+-- ddAbs.decTest -- decDouble absolute value, heeding sNaN            --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+ddabs001 abs '1'      -> '1'

+ddabs002 abs '-1'     -> '1'

+ddabs003 abs '1.00'   -> '1.00'

+ddabs004 abs '-1.00'  -> '1.00'

+ddabs005 abs '0'      -> '0'

+ddabs006 abs '0.00'   -> '0.00'

+ddabs007 abs '00.0'   -> '0.0'

+ddabs008 abs '00.00'  -> '0.00'

+ddabs009 abs '00'     -> '0'

+

+ddabs010 abs '-2'     -> '2'

+ddabs011 abs '2'      -> '2'

+ddabs012 abs '-2.00'  -> '2.00'

+ddabs013 abs '2.00'   -> '2.00'

+ddabs014 abs '-0'     -> '0'

+ddabs015 abs '-0.00'  -> '0.00'

+ddabs016 abs '-00.0'  -> '0.0'

+ddabs017 abs '-00.00' -> '0.00'

+ddabs018 abs '-00'    -> '0'

+

+ddabs020 abs '-2000000' -> '2000000'

+ddabs021 abs '2000000'  -> '2000000'

+

+ddabs030 abs '+0.1'            -> '0.1'

+ddabs031 abs '-0.1'            -> '0.1'

+ddabs032 abs '+0.01'           -> '0.01'

+ddabs033 abs '-0.01'           -> '0.01'

+ddabs034 abs '+0.001'          -> '0.001'

+ddabs035 abs '-0.001'          -> '0.001'

+ddabs036 abs '+0.000001'       -> '0.000001'

+ddabs037 abs '-0.000001'       -> '0.000001'

+ddabs038 abs '+0.000000000001' -> '1E-12'

+ddabs039 abs '-0.000000000001' -> '1E-12'

+

+-- examples from decArith

+ddabs040 abs '2.1'     ->  '2.1'

+ddabs041 abs '-100'    ->  '100'

+ddabs042 abs '101.5'   ->  '101.5'

+ddabs043 abs '-101.5'  ->  '101.5'

+

+-- more fixed, potential LHS swaps/overlays if done by subtract 0

+ddabs060 abs '-56267E-10'  -> '0.0000056267'

+ddabs061 abs '-56267E-5'   -> '0.56267'

+ddabs062 abs '-56267E-2'   -> '562.67'

+ddabs063 abs '-56267E-1'   -> '5626.7'

+ddabs065 abs '-56267E-0'   -> '56267'

+

+-- subnormals and underflow

+

+-- long operand tests

+ddabs321 abs 1234567890123456  -> 1234567890123456

+ddabs322 abs 12345678000  -> 12345678000

+ddabs323 abs 1234567800   -> 1234567800

+ddabs324 abs 1234567890   -> 1234567890

+ddabs325 abs 1234567891   -> 1234567891

+ddabs326 abs 12345678901  -> 12345678901

+ddabs327 abs 1234567896   -> 1234567896

+

+-- zeros

+ddabs111 abs          0   -> 0

+ddabs112 abs         -0   -> 0

+ddabs113 abs       0E+6   -> 0E+6

+ddabs114 abs      -0E+6   -> 0E+6

+ddabs115 abs     0.0000   -> 0.0000

+ddabs116 abs    -0.0000   -> 0.0000

+ddabs117 abs      0E-141  -> 0E-141

+ddabs118 abs     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+ddabs121 abs  2682682682682682         -> 2682682682682682

+ddabs122 abs  -2682682682682682        -> 2682682682682682

+ddabs123 abs  1341341341341341         -> 1341341341341341

+ddabs124 abs  -1341341341341341        -> 1341341341341341

+

+-- Nmax, Nmin, Ntiny

+ddabs131 abs  9.999999999999999E+384   -> 9.999999999999999E+384

+ddabs132 abs  1E-383                   -> 1E-383

+ddabs133 abs  1.000000000000000E-383   -> 1.000000000000000E-383

+ddabs134 abs  1E-398                   -> 1E-398 Subnormal

+

+ddabs135 abs  -1E-398                  -> 1E-398 Subnormal

+ddabs136 abs  -1.000000000000000E-383  -> 1.000000000000000E-383

+ddabs137 abs  -1E-383                  -> 1E-383

+ddabs138 abs  -9.999999999999999E+384  -> 9.999999999999999E+384

+

+-- specials

+ddabs520 abs 'Inf'    -> 'Infinity'

+ddabs521 abs '-Inf'   -> 'Infinity'

+ddabs522 abs   NaN    ->  NaN

+ddabs523 abs  sNaN    ->  NaN   Invalid_operation

+ddabs524 abs   NaN22  ->  NaN22

+ddabs525 abs  sNaN33  ->  NaN33 Invalid_operation

+ddabs526 abs  -NaN22  -> -NaN22

+ddabs527 abs -sNaN33  -> -NaN33 Invalid_operation

+

+-- Null tests

+ddabs900 abs  # -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/ddAdd.decTest b/Lib/test/decimaltestdata/ddAdd.decTest
new file mode 100644
index 0000000..38d511b
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddAdd.decTest
@@ -0,0 +1,1300 @@
+------------------------------------------------------------------------

+-- ddAdd.decTest -- decDouble addition                                --

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

+

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

+

+-- [first group are 'quick confidence check']

+ddadd001 add 1       1       ->  2

+ddadd002 add 2       3       ->  5

+ddadd003 add '5.75'  '3.3'   ->  9.05

+ddadd004 add '5'     '-3'    ->  2

+ddadd005 add '-5'    '-3'    ->  -8

+ddadd006 add '-7'    '2.5'   ->  -4.5

+ddadd007 add '0.7'   '0.3'   ->  1.0

+ddadd008 add '1.25'  '1.25'  ->  2.50

+ddadd009 add '1.23456789'  '1.00000000' -> '2.23456789'

+ddadd010 add '1.23456789'  '1.00000011' -> '2.23456800'

+

+--             1234567890123456      1234567890123456

+ddadd011 add '0.4444444444444446'  '0.5555555555555555' -> '1.000000000000000' Inexact Rounded

+ddadd012 add '0.4444444444444445'  '0.5555555555555555' -> '1.000000000000000' Rounded

+ddadd013 add '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'

+ddadd014 add   '4444444444444444' '0.49'   -> '4444444444444444' Inexact Rounded

+ddadd015 add   '4444444444444444' '0.499'  -> '4444444444444444' Inexact Rounded

+ddadd016 add   '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded

+ddadd017 add   '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded

+ddadd018 add   '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded

+ddadd019 add   '4444444444444444' '0.501'  -> '4444444444444445' Inexact Rounded

+ddadd020 add   '4444444444444444' '0.51'   -> '4444444444444445' Inexact Rounded

+

+ddadd021 add 0 1 -> 1

+ddadd022 add 1 1 -> 2

+ddadd023 add 2 1 -> 3

+ddadd024 add 3 1 -> 4

+ddadd025 add 4 1 -> 5

+ddadd026 add 5 1 -> 6

+ddadd027 add 6 1 -> 7

+ddadd028 add 7 1 -> 8

+ddadd029 add 8 1 -> 9

+ddadd030 add 9 1 -> 10

+

+-- some carrying effects

+ddadd031 add '0.9998'  '0.0000' -> '0.9998'

+ddadd032 add '0.9998'  '0.0001' -> '0.9999'

+ddadd033 add '0.9998'  '0.0002' -> '1.0000'

+ddadd034 add '0.9998'  '0.0003' -> '1.0001'

+

+ddadd035 add '70'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+ddadd036 add '700'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+ddadd037 add '7000'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+ddadd038 add '70000'  '10000e+16' -> '1.000000000000001E+20' Inexact Rounded

+ddadd039 add '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded

+

+-- symmetry:

+ddadd040 add '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded

+ddadd041 add '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded

+ddadd042 add '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded

+ddadd044 add '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded

+ddadd045 add '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded

+

+-- same, without rounding

+ddadd046 add '10000e+9'  '7' -> '10000000000007'

+ddadd047 add '10000e+9'  '70' -> '10000000000070'

+ddadd048 add '10000e+9'  '700' -> '10000000000700'

+ddadd049 add '10000e+9'  '7000' -> '10000000007000'

+ddadd050 add '10000e+9'  '70000' -> '10000000070000'

+ddadd051 add '10000e+9'  '700000' -> '10000000700000'

+ddadd052 add '10000e+9'  '7000000' -> '10000007000000'

+

+-- examples from decarith

+ddadd053 add '12' '7.00' -> '19.00'

+ddadd054 add '1.3' '-1.07' -> '0.23'

+ddadd055 add '1.3' '-1.30' -> '0.00'

+ddadd056 add '1.3' '-2.07' -> '-0.77'

+ddadd057 add '1E+2' '1E+4' -> '1.01E+4'

+

+-- leading zero preservation

+ddadd061 add 1 '0.0001' -> '1.0001'

+ddadd062 add 1 '0.00001' -> '1.00001'

+ddadd063 add 1 '0.000001' -> '1.000001'

+ddadd064 add 1 '0.0000001' -> '1.0000001'

+ddadd065 add 1 '0.00000001' -> '1.00000001'

+

+-- some funny zeros [in case of bad signum]

+ddadd070 add 1  0    -> 1

+ddadd071 add 1 0.    -> 1

+ddadd072 add 1  .0   -> 1.0

+ddadd073 add 1 0.0   -> 1.0

+ddadd074 add 1 0.00  -> 1.00

+ddadd075 add  0  1   -> 1

+ddadd076 add 0.  1   -> 1

+ddadd077 add  .0 1   -> 1.0

+ddadd078 add 0.0 1   -> 1.0

+ddadd079 add 0.00 1  -> 1.00

+

+-- some carries

+ddadd080 add 999999998 1  -> 999999999

+ddadd081 add 999999999 1  -> 1000000000

+ddadd082 add  99999999 1  -> 100000000

+ddadd083 add   9999999 1  -> 10000000

+ddadd084 add    999999 1  -> 1000000

+ddadd085 add     99999 1  -> 100000

+ddadd086 add      9999 1  -> 10000

+ddadd087 add       999 1  -> 1000

+ddadd088 add        99 1  -> 100

+ddadd089 add         9 1  -> 10

+

+

+-- more LHS swaps

+ddadd090 add '-56267E-10'   0 ->  '-0.0000056267'

+ddadd091 add '-56267E-6'    0 ->  '-0.056267'

+ddadd092 add '-56267E-5'    0 ->  '-0.56267'

+ddadd093 add '-56267E-4'    0 ->  '-5.6267'

+ddadd094 add '-56267E-3'    0 ->  '-56.267'

+ddadd095 add '-56267E-2'    0 ->  '-562.67'

+ddadd096 add '-56267E-1'    0 ->  '-5626.7'

+ddadd097 add '-56267E-0'    0 ->  '-56267'

+ddadd098 add '-5E-10'       0 ->  '-5E-10'

+ddadd099 add '-5E-7'        0 ->  '-5E-7'

+ddadd100 add '-5E-6'        0 ->  '-0.000005'

+ddadd101 add '-5E-5'        0 ->  '-0.00005'

+ddadd102 add '-5E-4'        0 ->  '-0.0005'

+ddadd103 add '-5E-1'        0 ->  '-0.5'

+ddadd104 add '-5E0'         0 ->  '-5'

+ddadd105 add '-5E1'         0 ->  '-50'

+ddadd106 add '-5E5'         0 ->  '-500000'

+ddadd107 add '-5E15'        0 ->  '-5000000000000000'

+ddadd108 add '-5E16'        0 ->  '-5.000000000000000E+16'  Rounded

+ddadd109 add '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded

+ddadd110 add '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded

+ddadd111 add '-5E100'       0 ->  '-5.000000000000000E+100' Rounded

+

+-- more RHS swaps

+ddadd113 add 0  '-56267E-10' ->  '-0.0000056267'

+ddadd114 add 0  '-56267E-6'  ->  '-0.056267'

+ddadd116 add 0  '-56267E-5'  ->  '-0.56267'

+ddadd117 add 0  '-56267E-4'  ->  '-5.6267'

+ddadd119 add 0  '-56267E-3'  ->  '-56.267'

+ddadd120 add 0  '-56267E-2'  ->  '-562.67'

+ddadd121 add 0  '-56267E-1'  ->  '-5626.7'

+ddadd122 add 0  '-56267E-0'  ->  '-56267'

+ddadd123 add 0  '-5E-10'     ->  '-5E-10'

+ddadd124 add 0  '-5E-7'      ->  '-5E-7'

+ddadd125 add 0  '-5E-6'      ->  '-0.000005'

+ddadd126 add 0  '-5E-5'      ->  '-0.00005'

+ddadd127 add 0  '-5E-4'      ->  '-0.0005'

+ddadd128 add 0  '-5E-1'      ->  '-0.5'

+ddadd129 add 0  '-5E0'       ->  '-5'

+ddadd130 add 0  '-5E1'       ->  '-50'

+ddadd131 add 0  '-5E5'       ->  '-500000'

+ddadd132 add 0  '-5E15'      ->  '-5000000000000000'

+ddadd133 add 0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded

+ddadd134 add 0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded

+ddadd135 add 0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded

+ddadd136 add 0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded

+

+-- related

+ddadd137 add  1  '0E-19'      ->  '1.000000000000000'  Rounded

+ddadd138 add -1  '0E-19'      ->  '-1.000000000000000' Rounded

+ddadd139 add '0E-19' 1        ->  '1.000000000000000'  Rounded

+ddadd140 add '0E-19' -1       ->  '-1.000000000000000' Rounded

+ddadd141 add 1E+11   0.0000   ->  '100000000000.0000'

+ddadd142 add 1E+11   0.00000  ->  '100000000000.0000'  Rounded

+ddadd143 add 0.000   1E+12    ->  '1000000000000.000'

+ddadd144 add 0.0000  1E+12    ->  '1000000000000.000'  Rounded

+

+-- [some of the next group are really constructor tests]

+ddadd146 add '00.0'  0       ->  '0.0'

+ddadd147 add '0.00'  0       ->  '0.00'

+ddadd148 add  0      '0.00'  ->  '0.00'

+ddadd149 add  0      '00.0'  ->  '0.0'

+ddadd150 add '00.0'  '0.00'  ->  '0.00'

+ddadd151 add '0.00'  '00.0'  ->  '0.00'

+ddadd152 add '3'     '.3'    ->  '3.3'

+ddadd153 add '3.'    '.3'    ->  '3.3'

+ddadd154 add '3.0'   '.3'    ->  '3.3'

+ddadd155 add '3.00'  '.3'    ->  '3.30'

+ddadd156 add '3'     '3'     ->  '6'

+ddadd157 add '3'     '+3'    ->  '6'

+ddadd158 add '3'     '-3'    ->  '0'

+ddadd159 add '0.3'   '-0.3'  ->  '0.0'

+ddadd160 add '0.03'  '-0.03' ->  '0.00'

+

+-- try borderline precision, with carries, etc.

+ddadd161 add '1E+12' '-1'    -> '999999999999'

+ddadd162 add '1E+12'  '1.11' -> '1000000000001.11'

+ddadd163 add '1.11'  '1E+12' -> '1000000000001.11'

+ddadd164 add '-1'    '1E+12' -> '999999999999'

+ddadd165 add '7E+12' '-1'    -> '6999999999999'

+ddadd166 add '7E+12'  '1.11' -> '7000000000001.11'

+ddadd167 add '1.11'  '7E+12' -> '7000000000001.11'

+ddadd168 add '-1'    '7E+12' -> '6999999999999'

+

+rounding: half_up

+--           1.234567890123456      1234567890123456      1 234567890123456

+ddadd170 add '4.444444444444444'  '0.5555555555555567' -> '5.000000000000001' Inexact Rounded

+ddadd171 add '4.444444444444444'  '0.5555555555555566' -> '5.000000000000001' Inexact Rounded

+ddadd172 add '4.444444444444444'  '0.5555555555555565' -> '5.000000000000001' Inexact Rounded

+ddadd173 add '4.444444444444444'  '0.5555555555555564' -> '5.000000000000000' Inexact Rounded

+ddadd174 add '4.444444444444444'  '0.5555555555555553' -> '4.999999999999999' Inexact Rounded

+ddadd175 add '4.444444444444444'  '0.5555555555555552' -> '4.999999999999999' Inexact Rounded

+ddadd176 add '4.444444444444444'  '0.5555555555555551' -> '4.999999999999999' Inexact Rounded

+ddadd177 add '4.444444444444444'  '0.5555555555555550' -> '4.999999999999999' Rounded

+ddadd178 add '4.444444444444444'  '0.5555555555555545' -> '4.999999999999999' Inexact Rounded

+ddadd179 add '4.444444444444444'  '0.5555555555555544' -> '4.999999999999998' Inexact Rounded

+ddadd180 add '4.444444444444444'  '0.5555555555555543' -> '4.999999999999998' Inexact Rounded

+ddadd181 add '4.444444444444444'  '0.5555555555555542' -> '4.999999999999998' Inexact Rounded

+ddadd182 add '4.444444444444444'  '0.5555555555555541' -> '4.999999999999998' Inexact Rounded

+ddadd183 add '4.444444444444444'  '0.5555555555555540' -> '4.999999999999998' Rounded

+

+-- and some more, including residue effects and different roundings

+rounding: half_up

+ddadd200 add '1234560123456789' 0             -> '1234560123456789'

+ddadd201 add '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded

+ddadd202 add '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded

+ddadd203 add '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded

+ddadd204 add '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded

+ddadd205 add '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded

+ddadd206 add '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded

+ddadd207 add '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded

+ddadd208 add '1234560123456789' 0.5           -> '1234560123456790' Inexact Rounded

+ddadd209 add '1234560123456789' 0.500000001   -> '1234560123456790' Inexact Rounded

+ddadd210 add '1234560123456789' 0.500001      -> '1234560123456790' Inexact Rounded

+ddadd211 add '1234560123456789' 0.51          -> '1234560123456790' Inexact Rounded

+ddadd212 add '1234560123456789' 0.6           -> '1234560123456790' Inexact Rounded

+ddadd213 add '1234560123456789' 0.9           -> '1234560123456790' Inexact Rounded

+ddadd214 add '1234560123456789' 0.99999       -> '1234560123456790' Inexact Rounded

+ddadd215 add '1234560123456789' 0.999999999   -> '1234560123456790' Inexact Rounded

+ddadd216 add '1234560123456789' 1             -> '1234560123456790'

+ddadd217 add '1234560123456789' 1.000000001   -> '1234560123456790' Inexact Rounded

+ddadd218 add '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded

+ddadd219 add '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded

+

+rounding: half_even

+ddadd220 add '1234560123456789' 0             -> '1234560123456789'

+ddadd221 add '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded

+ddadd222 add '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded

+ddadd223 add '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded

+ddadd224 add '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded

+ddadd225 add '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded

+ddadd226 add '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded

+ddadd227 add '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded

+ddadd228 add '1234560123456789' 0.5           -> '1234560123456790' Inexact Rounded

+ddadd229 add '1234560123456789' 0.500000001   -> '1234560123456790' Inexact Rounded

+ddadd230 add '1234560123456789' 0.500001      -> '1234560123456790' Inexact Rounded

+ddadd231 add '1234560123456789' 0.51          -> '1234560123456790' Inexact Rounded

+ddadd232 add '1234560123456789' 0.6           -> '1234560123456790' Inexact Rounded

+ddadd233 add '1234560123456789' 0.9           -> '1234560123456790' Inexact Rounded

+ddadd234 add '1234560123456789' 0.99999       -> '1234560123456790' Inexact Rounded

+ddadd235 add '1234560123456789' 0.999999999   -> '1234560123456790' Inexact Rounded

+ddadd236 add '1234560123456789' 1             -> '1234560123456790'

+ddadd237 add '1234560123456789' 1.00000001    -> '1234560123456790' Inexact Rounded

+ddadd238 add '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded

+ddadd239 add '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded

+-- critical few with even bottom digit...

+ddadd240 add '1234560123456788' 0.499999999   -> '1234560123456788' Inexact Rounded

+ddadd241 add '1234560123456788' 0.5           -> '1234560123456788' Inexact Rounded

+ddadd242 add '1234560123456788' 0.500000001   -> '1234560123456789' Inexact Rounded

+

+rounding: down

+ddadd250 add '1234560123456789' 0             -> '1234560123456789'

+ddadd251 add '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded

+ddadd252 add '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded

+ddadd253 add '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded

+ddadd254 add '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded

+ddadd255 add '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded

+ddadd256 add '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded

+ddadd257 add '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded

+ddadd258 add '1234560123456789' 0.5           -> '1234560123456789' Inexact Rounded

+ddadd259 add '1234560123456789' 0.500000001   -> '1234560123456789' Inexact Rounded

+ddadd260 add '1234560123456789' 0.500001      -> '1234560123456789' Inexact Rounded

+ddadd261 add '1234560123456789' 0.51          -> '1234560123456789' Inexact Rounded

+ddadd262 add '1234560123456789' 0.6           -> '1234560123456789' Inexact Rounded

+ddadd263 add '1234560123456789' 0.9           -> '1234560123456789' Inexact Rounded

+ddadd264 add '1234560123456789' 0.99999       -> '1234560123456789' Inexact Rounded

+ddadd265 add '1234560123456789' 0.999999999   -> '1234560123456789' Inexact Rounded

+ddadd266 add '1234560123456789' 1             -> '1234560123456790'

+ddadd267 add '1234560123456789' 1.00000001    -> '1234560123456790' Inexact Rounded

+ddadd268 add '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded

+ddadd269 add '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded

+

+-- 1 in last place tests

+rounding: half_up

+ddadd301 add  -1   1      ->   0

+ddadd302 add   0   1      ->   1

+ddadd303 add   1   1      ->   2

+ddadd304 add  12   1      ->  13

+ddadd305 add  98   1      ->  99

+ddadd306 add  99   1      -> 100

+ddadd307 add 100   1      -> 101

+ddadd308 add 101   1      -> 102

+ddadd309 add  -1  -1      ->  -2

+ddadd310 add   0  -1      ->  -1

+ddadd311 add   1  -1      ->   0

+ddadd312 add  12  -1      ->  11

+ddadd313 add  98  -1      ->  97

+ddadd314 add  99  -1      ->  98

+ddadd315 add 100  -1      ->  99

+ddadd316 add 101  -1      -> 100

+

+ddadd321 add -0.01  0.01    ->  0.00

+ddadd322 add  0.00  0.01    ->  0.01

+ddadd323 add  0.01  0.01    ->  0.02

+ddadd324 add  0.12  0.01    ->  0.13

+ddadd325 add  0.98  0.01    ->  0.99

+ddadd326 add  0.99  0.01    ->  1.00

+ddadd327 add  1.00  0.01    ->  1.01

+ddadd328 add  1.01  0.01    ->  1.02

+ddadd329 add -0.01 -0.01    -> -0.02

+ddadd330 add  0.00 -0.01    -> -0.01

+ddadd331 add  0.01 -0.01    ->  0.00

+ddadd332 add  0.12 -0.01    ->  0.11

+ddadd333 add  0.98 -0.01    ->  0.97

+ddadd334 add  0.99 -0.01    ->  0.98

+ddadd335 add  1.00 -0.01    ->  0.99

+ddadd336 add  1.01 -0.01    ->  1.00

+

+-- some more cases where adding 0 affects the coefficient

+ddadd340 add 1E+3    0    ->         1000

+ddadd341 add 1E+15   0    ->    1000000000000000

+ddadd342 add 1E+16   0    ->   1.000000000000000E+16  Rounded

+ddadd343 add 1E+20   0    ->   1.000000000000000E+20  Rounded

+-- which simply follow from these cases ...

+ddadd344 add 1E+3    1    ->         1001

+ddadd345 add 1E+15   1    ->    1000000000000001

+ddadd346 add 1E+16   1    ->   1.000000000000000E+16  Inexact Rounded

+ddadd347 add 1E+20   1    ->   1.000000000000000E+20  Inexact Rounded

+ddadd348 add 1E+3    7    ->         1007

+ddadd349 add 1E+15   7    ->    1000000000000007

+ddadd350 add 1E+16   7    ->   1.000000000000001E+16  Inexact Rounded

+ddadd351 add 1E+20   7    ->   1.000000000000000E+20  Inexact Rounded

+

+-- tryzeros cases

+rounding:    half_up

+ddadd360  add 0E+50 10000E+1  -> 1.0000E+5

+ddadd361  add 0E-50 10000E+1  -> 100000.0000000000 Rounded

+ddadd362  add 10000E+1 0E-50  -> 100000.0000000000 Rounded

+ddadd363  add 10000E+1 10000E-50  -> 100000.0000000000 Rounded Inexact

+ddadd364  add 9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369

+

+-- a curiosity from JSR 13 testing

+rounding:    half_down

+ddadd370 add  999999999999999 815 -> 1000000000000814

+ddadd371 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact

+rounding:    half_up

+ddadd372 add  999999999999999 815 -> 1000000000000814

+ddadd373 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact

+rounding:    half_even

+ddadd374 add  999999999999999 815 -> 1000000000000814

+ddadd375 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact

+

+-- operands folded

+ddadd380 add   1E+384  1E+384  ->  2.000000000000000E+384  Clamped

+ddadd381 add   1E+380  1E+380  ->  2.00000000000E+380      Clamped

+ddadd382 add   1E+376  1E+376  ->  2.0000000E+376          Clamped

+ddadd383 add   1E+372  1E+372  ->  2.000E+372              Clamped

+ddadd384 add   1E+370  1E+370  ->  2.0E+370                Clamped

+ddadd385 add   1E+369  1E+369  ->  2E+369

+ddadd386 add   1E+368  1E+368  ->  2E+368

+

+-- ulp replacement tests

+ddadd400 add   1   77e-14      ->  1.00000000000077

+ddadd401 add   1   77e-15      ->  1.000000000000077

+ddadd402 add   1   77e-16      ->  1.000000000000008 Inexact Rounded

+ddadd403 add   1   77e-17      ->  1.000000000000001 Inexact Rounded

+ddadd404 add   1   77e-18      ->  1.000000000000000 Inexact Rounded

+ddadd405 add   1   77e-19      ->  1.000000000000000 Inexact Rounded

+ddadd406 add   1   77e-299     ->  1.000000000000000 Inexact Rounded

+

+ddadd410 add  10   77e-14      ->  10.00000000000077

+ddadd411 add  10   77e-15      ->  10.00000000000008 Inexact Rounded

+ddadd412 add  10   77e-16      ->  10.00000000000001 Inexact Rounded

+ddadd413 add  10   77e-17      ->  10.00000000000000 Inexact Rounded

+ddadd414 add  10   77e-18      ->  10.00000000000000 Inexact Rounded

+ddadd415 add  10   77e-19      ->  10.00000000000000 Inexact Rounded

+ddadd416 add  10   77e-299     ->  10.00000000000000 Inexact Rounded

+

+ddadd420 add  77e-14       1   ->  1.00000000000077

+ddadd421 add  77e-15       1   ->  1.000000000000077

+ddadd422 add  77e-16       1   ->  1.000000000000008 Inexact Rounded

+ddadd423 add  77e-17       1   ->  1.000000000000001 Inexact Rounded

+ddadd424 add  77e-18       1   ->  1.000000000000000 Inexact Rounded

+ddadd425 add  77e-19       1   ->  1.000000000000000 Inexact Rounded

+ddadd426 add  77e-299      1   ->  1.000000000000000 Inexact Rounded

+

+ddadd430 add  77e-14      10   ->  10.00000000000077

+ddadd431 add  77e-15      10   ->  10.00000000000008 Inexact Rounded

+ddadd432 add  77e-16      10   ->  10.00000000000001 Inexact Rounded

+ddadd433 add  77e-17      10   ->  10.00000000000000 Inexact Rounded

+ddadd434 add  77e-18      10   ->  10.00000000000000 Inexact Rounded

+ddadd435 add  77e-19      10   ->  10.00000000000000 Inexact Rounded

+ddadd436 add  77e-299     10   ->  10.00000000000000 Inexact Rounded

+

+-- negative ulps

+ddadd6440 add   1   -77e-14      ->  0.99999999999923

+ddadd6441 add   1   -77e-15      ->  0.999999999999923

+ddadd6442 add   1   -77e-16      ->  0.9999999999999923

+ddadd6443 add   1   -77e-17      ->  0.9999999999999992 Inexact Rounded

+ddadd6444 add   1   -77e-18      ->  0.9999999999999999 Inexact Rounded

+ddadd6445 add   1   -77e-19      ->  1.000000000000000 Inexact Rounded

+ddadd6446 add   1   -77e-99      ->  1.000000000000000 Inexact Rounded

+

+ddadd6450 add  10   -77e-14      ->   9.99999999999923

+ddadd6451 add  10   -77e-15      ->   9.999999999999923

+ddadd6452 add  10   -77e-16      ->   9.999999999999992 Inexact Rounded

+ddadd6453 add  10   -77e-17      ->   9.999999999999999 Inexact Rounded

+ddadd6454 add  10   -77e-18      ->  10.00000000000000 Inexact Rounded

+ddadd6455 add  10   -77e-19      ->  10.00000000000000 Inexact Rounded

+ddadd6456 add  10   -77e-99      ->  10.00000000000000 Inexact Rounded

+

+ddadd6460 add  -77e-14       1   ->  0.99999999999923

+ddadd6461 add  -77e-15       1   ->  0.999999999999923

+ddadd6462 add  -77e-16       1   ->  0.9999999999999923

+ddadd6463 add  -77e-17       1   ->  0.9999999999999992 Inexact Rounded

+ddadd6464 add  -77e-18       1   ->  0.9999999999999999 Inexact Rounded

+ddadd6465 add  -77e-19       1   ->  1.000000000000000 Inexact Rounded

+ddadd6466 add  -77e-99       1   ->  1.000000000000000 Inexact Rounded

+

+ddadd6470 add  -77e-14      10   ->   9.99999999999923

+ddadd6471 add  -77e-15      10   ->   9.999999999999923

+ddadd6472 add  -77e-16      10   ->   9.999999999999992 Inexact Rounded

+ddadd6473 add  -77e-17      10   ->   9.999999999999999 Inexact Rounded

+ddadd6474 add  -77e-18      10   ->  10.00000000000000 Inexact Rounded

+ddadd6475 add  -77e-19      10   ->  10.00000000000000 Inexact Rounded

+ddadd6476 add  -77e-99      10   ->  10.00000000000000 Inexact Rounded

+

+-- negative ulps

+ddadd6480 add  -1    77e-14      ->  -0.99999999999923

+ddadd6481 add  -1    77e-15      ->  -0.999999999999923

+ddadd6482 add  -1    77e-16      ->  -0.9999999999999923

+ddadd6483 add  -1    77e-17      ->  -0.9999999999999992 Inexact Rounded

+ddadd6484 add  -1    77e-18      ->  -0.9999999999999999 Inexact Rounded

+ddadd6485 add  -1    77e-19      ->  -1.000000000000000 Inexact Rounded

+ddadd6486 add  -1    77e-99      ->  -1.000000000000000 Inexact Rounded

+

+ddadd6490 add -10    77e-14      ->   -9.99999999999923

+ddadd6491 add -10    77e-15      ->   -9.999999999999923

+ddadd6492 add -10    77e-16      ->   -9.999999999999992 Inexact Rounded

+ddadd6493 add -10    77e-17      ->   -9.999999999999999 Inexact Rounded

+ddadd6494 add -10    77e-18      ->  -10.00000000000000 Inexact Rounded

+ddadd6495 add -10    77e-19      ->  -10.00000000000000 Inexact Rounded

+ddadd6496 add -10    77e-99      ->  -10.00000000000000 Inexact Rounded

+

+ddadd6500 add   77e-14      -1   ->  -0.99999999999923

+ddadd6501 add   77e-15      -1   ->  -0.999999999999923

+ddadd6502 add   77e-16      -1   ->  -0.9999999999999923

+ddadd6503 add   77e-17      -1   ->  -0.9999999999999992 Inexact Rounded

+ddadd6504 add   77e-18      -1   ->  -0.9999999999999999 Inexact Rounded

+ddadd6505 add   77e-19      -1   ->  -1.000000000000000 Inexact Rounded

+ddadd6506 add   77e-99      -1   ->  -1.000000000000000 Inexact Rounded

+

+ddadd6510 add   77e-14      -10  ->   -9.99999999999923

+ddadd6511 add   77e-15      -10  ->   -9.999999999999923

+ddadd6512 add   77e-16      -10  ->   -9.999999999999992 Inexact Rounded

+ddadd6513 add   77e-17      -10  ->   -9.999999999999999 Inexact Rounded

+ddadd6514 add   77e-18      -10  ->  -10.00000000000000 Inexact Rounded

+ddadd6515 add   77e-19      -10  ->  -10.00000000000000 Inexact Rounded

+ddadd6516 add   77e-99      -10  ->  -10.00000000000000 Inexact Rounded

+

+-- and some more residue effects and different roundings

+rounding: half_up

+ddadd6540 add '6543210123456789' 0             -> '6543210123456789'

+ddadd6541 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+ddadd6542 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+ddadd6543 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+ddadd6544 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+ddadd6545 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+ddadd6546 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+ddadd6547 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded

+ddadd6548 add '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded

+ddadd6549 add '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded

+ddadd6550 add '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded

+ddadd6551 add '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded

+ddadd6552 add '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded

+ddadd6553 add '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded

+ddadd6554 add '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded

+ddadd6555 add '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded

+ddadd6556 add '6543210123456789' 1             -> '6543210123456790'

+ddadd6557 add '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded

+ddadd6558 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+ddadd6559 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+

+rounding: half_even

+ddadd6560 add '6543210123456789' 0             -> '6543210123456789'

+ddadd6561 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+ddadd6562 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+ddadd6563 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+ddadd6564 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+ddadd6565 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+ddadd6566 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+ddadd6567 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded

+ddadd6568 add '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded

+ddadd6569 add '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded

+ddadd6570 add '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded

+ddadd6571 add '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded

+ddadd6572 add '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded

+ddadd6573 add '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded

+ddadd6574 add '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded

+ddadd6575 add '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded

+ddadd6576 add '6543210123456789' 1             -> '6543210123456790'

+ddadd6577 add '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded

+ddadd6578 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+ddadd6579 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+

+-- critical few with even bottom digit...

+ddadd7540 add '6543210123456788' 0.499999999   -> '6543210123456788' Inexact Rounded

+ddadd7541 add '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded

+ddadd7542 add '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded

+

+rounding: down

+ddadd7550 add '6543210123456789' 0             -> '6543210123456789'

+ddadd7551 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+ddadd7552 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+ddadd7553 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+ddadd7554 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+ddadd7555 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+ddadd7556 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+ddadd7557 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded

+ddadd7558 add '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded

+ddadd7559 add '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded

+ddadd7560 add '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded

+ddadd7561 add '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded

+ddadd7562 add '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded

+ddadd7563 add '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded

+ddadd7564 add '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded

+ddadd7565 add '6543210123456789' 0.999999999   -> '6543210123456789' Inexact Rounded

+ddadd7566 add '6543210123456789' 1             -> '6543210123456790'

+ddadd7567 add '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded

+ddadd7568 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+ddadd7569 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+

+-- verify a query

+rounding:     down

+ddadd7661 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded

+ddadd7662 add      0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded

+ddadd7663 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded

+ddadd7664 add      0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded

+

+-- more zeros, etc.

+rounding: half_even

+

+ddadd7701 add 5.00 1.00E-3 -> 5.00100

+ddadd7702 add 00.00 0.000  -> 0.000

+ddadd7703 add 00.00 0E-3   -> 0.000

+ddadd7704 add 0E-3  00.00  -> 0.000

+

+ddadd7710 add 0E+3  00.00  -> 0.00

+ddadd7711 add 0E+3  00.0   -> 0.0

+ddadd7712 add 0E+3  00.    -> 0

+ddadd7713 add 0E+3  00.E+1 -> 0E+1

+ddadd7714 add 0E+3  00.E+2 -> 0E+2

+ddadd7715 add 0E+3  00.E+3 -> 0E+3

+ddadd7716 add 0E+3  00.E+4 -> 0E+3

+ddadd7717 add 0E+3  00.E+5 -> 0E+3

+ddadd7718 add 0E+3  -00.0   -> 0.0

+ddadd7719 add 0E+3  -00.    -> 0

+ddadd7731 add 0E+3  -00.E+1 -> 0E+1

+

+ddadd7720 add 00.00  0E+3  -> 0.00

+ddadd7721 add 00.0   0E+3  -> 0.0

+ddadd7722 add 00.    0E+3  -> 0

+ddadd7723 add 00.E+1 0E+3  -> 0E+1

+ddadd7724 add 00.E+2 0E+3  -> 0E+2

+ddadd7725 add 00.E+3 0E+3  -> 0E+3

+ddadd7726 add 00.E+4 0E+3  -> 0E+3

+ddadd7727 add 00.E+5 0E+3  -> 0E+3

+ddadd7728 add -00.00 0E+3  -> 0.00

+ddadd7729 add -00.0  0E+3  -> 0.0

+ddadd7730 add -00.   0E+3  -> 0

+

+ddadd7732 add  0     0     ->  0

+ddadd7733 add  0    -0     ->  0

+ddadd7734 add -0     0     ->  0

+ddadd7735 add -0    -0     -> -0     -- IEEE 854 special case

+

+ddadd7736 add  1    -1     ->  0

+ddadd7737 add -1    -1     -> -2

+ddadd7738 add  1     1     ->  2

+ddadd7739 add -1     1     ->  0

+

+ddadd7741 add  0    -1     -> -1

+ddadd7742 add -0    -1     -> -1

+ddadd7743 add  0     1     ->  1

+ddadd7744 add -0     1     ->  1

+ddadd7745 add -1     0     -> -1

+ddadd7746 add -1    -0     -> -1

+ddadd7747 add  1     0     ->  1

+ddadd7748 add  1    -0     ->  1

+

+ddadd7751 add  0.0  -1     -> -1.0

+ddadd7752 add -0.0  -1     -> -1.0

+ddadd7753 add  0.0   1     ->  1.0

+ddadd7754 add -0.0   1     ->  1.0

+ddadd7755 add -1.0   0     -> -1.0

+ddadd7756 add -1.0  -0     -> -1.0

+ddadd7757 add  1.0   0     ->  1.0

+ddadd7758 add  1.0  -0     ->  1.0

+

+ddadd7761 add  0    -1.0   -> -1.0

+ddadd7762 add -0    -1.0   -> -1.0

+ddadd7763 add  0     1.0   ->  1.0

+ddadd7764 add -0     1.0   ->  1.0

+ddadd7765 add -1     0.0   -> -1.0

+ddadd7766 add -1    -0.0   -> -1.0

+ddadd7767 add  1     0.0   ->  1.0

+ddadd7768 add  1    -0.0   ->  1.0

+

+ddadd7771 add  0.0  -1.0   -> -1.0

+ddadd7772 add -0.0  -1.0   -> -1.0

+ddadd7773 add  0.0   1.0   ->  1.0

+ddadd7774 add -0.0   1.0   ->  1.0

+ddadd7775 add -1.0   0.0   -> -1.0

+ddadd7776 add -1.0  -0.0   -> -1.0

+ddadd7777 add  1.0   0.0   ->  1.0

+ddadd7778 add  1.0  -0.0   ->  1.0

+

+-- Specials

+ddadd7780 add -Inf  -Inf   -> -Infinity

+ddadd7781 add -Inf  -1000  -> -Infinity

+ddadd7782 add -Inf  -1     -> -Infinity

+ddadd7783 add -Inf  -0     -> -Infinity

+ddadd7784 add -Inf   0     -> -Infinity

+ddadd7785 add -Inf   1     -> -Infinity

+ddadd7786 add -Inf   1000  -> -Infinity

+ddadd7787 add -1000 -Inf   -> -Infinity

+ddadd7788 add -Inf  -Inf   -> -Infinity

+ddadd7789 add -1    -Inf   -> -Infinity

+ddadd7790 add -0    -Inf   -> -Infinity

+ddadd7791 add  0    -Inf   -> -Infinity

+ddadd7792 add  1    -Inf   -> -Infinity

+ddadd7793 add  1000 -Inf   -> -Infinity

+ddadd7794 add  Inf  -Inf   ->  NaN  Invalid_operation

+

+ddadd7800 add  Inf  -Inf   ->  NaN  Invalid_operation

+ddadd7801 add  Inf  -1000  ->  Infinity

+ddadd7802 add  Inf  -1     ->  Infinity

+ddadd7803 add  Inf  -0     ->  Infinity

+ddadd7804 add  Inf   0     ->  Infinity

+ddadd7805 add  Inf   1     ->  Infinity

+ddadd7806 add  Inf   1000  ->  Infinity

+ddadd7807 add  Inf   Inf   ->  Infinity

+ddadd7808 add -1000  Inf   ->  Infinity

+ddadd7809 add -Inf   Inf   ->  NaN  Invalid_operation

+ddadd7810 add -1     Inf   ->  Infinity

+ddadd7811 add -0     Inf   ->  Infinity

+ddadd7812 add  0     Inf   ->  Infinity

+ddadd7813 add  1     Inf   ->  Infinity

+ddadd7814 add  1000  Inf   ->  Infinity

+ddadd7815 add  Inf   Inf   ->  Infinity

+

+ddadd7821 add  NaN -Inf    ->  NaN

+ddadd7822 add  NaN -1000   ->  NaN

+ddadd7823 add  NaN -1      ->  NaN

+ddadd7824 add  NaN -0      ->  NaN

+ddadd7825 add  NaN  0      ->  NaN

+ddadd7826 add  NaN  1      ->  NaN

+ddadd7827 add  NaN  1000   ->  NaN

+ddadd7828 add  NaN  Inf    ->  NaN

+ddadd7829 add  NaN  NaN    ->  NaN

+ddadd7830 add -Inf  NaN    ->  NaN

+ddadd7831 add -1000 NaN    ->  NaN

+ddadd7832 add -1    NaN    ->  NaN

+ddadd7833 add -0    NaN    ->  NaN

+ddadd7834 add  0    NaN    ->  NaN

+ddadd7835 add  1    NaN    ->  NaN

+ddadd7836 add  1000 NaN    ->  NaN

+ddadd7837 add  Inf  NaN    ->  NaN

+

+ddadd7841 add  sNaN -Inf   ->  NaN  Invalid_operation

+ddadd7842 add  sNaN -1000  ->  NaN  Invalid_operation

+ddadd7843 add  sNaN -1     ->  NaN  Invalid_operation

+ddadd7844 add  sNaN -0     ->  NaN  Invalid_operation

+ddadd7845 add  sNaN  0     ->  NaN  Invalid_operation

+ddadd7846 add  sNaN  1     ->  NaN  Invalid_operation

+ddadd7847 add  sNaN  1000  ->  NaN  Invalid_operation

+ddadd7848 add  sNaN  NaN   ->  NaN  Invalid_operation

+ddadd7849 add  sNaN sNaN   ->  NaN  Invalid_operation

+ddadd7850 add  NaN  sNaN   ->  NaN  Invalid_operation

+ddadd7851 add -Inf  sNaN   ->  NaN  Invalid_operation

+ddadd7852 add -1000 sNaN   ->  NaN  Invalid_operation

+ddadd7853 add -1    sNaN   ->  NaN  Invalid_operation

+ddadd7854 add -0    sNaN   ->  NaN  Invalid_operation

+ddadd7855 add  0    sNaN   ->  NaN  Invalid_operation

+ddadd7856 add  1    sNaN   ->  NaN  Invalid_operation

+ddadd7857 add  1000 sNaN   ->  NaN  Invalid_operation

+ddadd7858 add  Inf  sNaN   ->  NaN  Invalid_operation

+ddadd7859 add  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddadd7861 add  NaN1   -Inf    ->  NaN1

+ddadd7862 add +NaN2   -1000   ->  NaN2

+ddadd7863 add  NaN3    1000   ->  NaN3

+ddadd7864 add  NaN4    Inf    ->  NaN4

+ddadd7865 add  NaN5   +NaN6   ->  NaN5

+ddadd7866 add -Inf     NaN7   ->  NaN7

+ddadd7867 add -1000    NaN8   ->  NaN8

+ddadd7868 add  1000    NaN9   ->  NaN9

+ddadd7869 add  Inf    +NaN10  ->  NaN10

+ddadd7871 add  sNaN11  -Inf   ->  NaN11  Invalid_operation

+ddadd7872 add  sNaN12  -1000  ->  NaN12  Invalid_operation

+ddadd7873 add  sNaN13   1000  ->  NaN13  Invalid_operation

+ddadd7874 add  sNaN14   NaN17 ->  NaN14  Invalid_operation

+ddadd7875 add  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+ddadd7876 add  NaN16   sNaN19 ->  NaN19  Invalid_operation

+ddadd7877 add -Inf    +sNaN20 ->  NaN20  Invalid_operation

+ddadd7878 add -1000    sNaN21 ->  NaN21  Invalid_operation

+ddadd7879 add  1000    sNaN22 ->  NaN22  Invalid_operation

+ddadd7880 add  Inf     sNaN23 ->  NaN23  Invalid_operation

+ddadd7881 add +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+ddadd7882 add -NaN26    NaN28 -> -NaN26

+ddadd7883 add -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+ddadd7884 add  1000    -NaN30 -> -NaN30

+ddadd7885 add  1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- Here we explore near the boundary of rounding a subnormal to Nmin

+ddadd7575 add  1E-383 -1E-398 ->  9.99999999999999E-384  Subnormal

+ddadd7576 add -1E-383 +1E-398 -> -9.99999999999999E-384  Subnormal

+

+-- check overflow edge case

+--               1234567890123456

+ddadd7972 apply   9.999999999999999E+384         -> 9.999999999999999E+384

+ddadd7973 add     9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded

+ddadd7974 add      9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded

+ddadd7975 add      9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded

+ddadd7976 add      9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded

+ddadd7977 add      9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded

+ddadd7978 add      9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded

+ddadd7979 add      9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded

+ddadd7980 add      9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded

+ddadd7981 add      9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded

+ddadd7982 add      9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded

+ddadd7983 add      9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded

+ddadd7984 add      9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded

+

+ddadd7985 apply  -9.999999999999999E+384         -> -9.999999999999999E+384

+ddadd7986 add    -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded

+ddadd7987 add     -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded

+ddadd7988 add     -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded

+ddadd7989 add     -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded

+ddadd7990 add     -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded

+ddadd7991 add     -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded

+ddadd7992 add     -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded

+ddadd7993 add     -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded

+ddadd7994 add     -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded

+ddadd7995 add     -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded

+ddadd7996 add     -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded

+ddadd7997 add     -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded

+

+-- And for round down full and subnormal results

+rounding:     down

+ddadd71100 add 1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact

+ddadd71101 add 1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact

+ddadd71103 add   +1 -1e-383    -> 0.9999999999999999  Rounded Inexact

+ddadd71104 add 1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact

+ddadd71105 add 1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact

+ddadd71106 add 1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact

+ddadd71107 add 1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact

+ddadd71108 add 1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact

+ddadd71109 add 1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact

+

+rounding:     ceiling

+ddadd71110 add -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact

+ddadd71111 add -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact

+ddadd71113 add    -1 +1e-383   -> -0.9999999999999999  Rounded Inexact

+ddadd71114 add -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact

+ddadd71115 add -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact

+ddadd71116 add -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact

+ddadd71117 add -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact

+ddadd71118 add -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact

+ddadd71119 add -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact

+

+-- tests based on Gunnar Degnbol's edge case

+rounding:     half_even

+

+ddadd71300 add 1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded

+ddadd71310 add 1E16  -0.51                ->  9999999999999999      Inexact Rounded

+ddadd71311 add 1E16  -0.501               ->  9999999999999999      Inexact Rounded

+ddadd71312 add 1E16  -0.5001              ->  9999999999999999      Inexact Rounded

+ddadd71313 add 1E16  -0.50001             ->  9999999999999999      Inexact Rounded

+ddadd71314 add 1E16  -0.500001            ->  9999999999999999      Inexact Rounded

+ddadd71315 add 1E16  -0.5000001           ->  9999999999999999      Inexact Rounded

+ddadd71316 add 1E16  -0.50000001          ->  9999999999999999      Inexact Rounded

+ddadd71317 add 1E16  -0.500000001         ->  9999999999999999      Inexact Rounded

+ddadd71318 add 1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded

+ddadd71319 add 1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded

+ddadd71320 add 1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded

+ddadd71321 add 1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded

+ddadd71322 add 1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded

+ddadd71323 add 1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded

+ddadd71324 add 1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded

+ddadd71325 add 1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded

+ddadd71326 add 1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded

+ddadd71327 add 1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded

+ddadd71328 add 1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded

+ddadd71329 add 1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded

+ddadd71330 add 1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded

+ddadd71331 add 1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded

+ddadd71332 add 1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded

+ddadd71333 add 1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded

+ddadd71334 add 1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded

+ddadd71335 add 1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded

+ddadd71336 add 1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded

+ddadd71337 add 1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded

+ddadd71338 add 1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded

+ddadd71339 add 1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded

+

+ddadd71340 add 1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded

+ddadd71341 add 1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded

+

+ddadd71349 add 9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded

+ddadd71350 add 9999999999999999 0.49                ->  9999999999999999      Inexact Rounded

+ddadd71351 add 9999999999999999 0.499               ->  9999999999999999      Inexact Rounded

+ddadd71352 add 9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded

+ddadd71353 add 9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded

+ddadd71354 add 9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded

+ddadd71355 add 9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded

+ddadd71356 add 9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded

+ddadd71357 add 9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded

+ddadd71358 add 9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded

+ddadd71359 add 9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded

+ddadd71360 add 9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded

+ddadd71361 add 9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded

+ddadd71362 add 9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded

+ddadd71363 add 9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded

+ddadd71364 add 9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded

+ddadd71365 add 9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded

+ddadd71367 add 9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded

+ddadd71368 add 9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded

+ddadd71369 add 9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded

+ddadd71370 add 9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded

+ddadd71371 add 9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded

+ddadd71372 add 9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded

+ddadd71373 add 9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded

+ddadd71374 add 9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded

+ddadd71375 add 9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded

+ddadd71376 add 9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded

+ddadd71377 add 9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded

+ddadd71378 add 9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded

+ddadd71379 add 9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded

+ddadd71380 add 9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded

+ddadd71381 add 9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded

+ddadd71382 add 9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded

+ddadd71383 add 9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded

+ddadd71384 add 9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded

+ddadd71385 add 9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded

+ddadd71386 add 9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded

+ddadd71387 add 9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded

+ddadd71388 add 9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded

+ddadd71389 add 9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded

+ddadd71390 add 9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded

+ddadd71391 add 9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded

+ddadd71392 add 9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded

+ddadd71393 add 9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded

+ddadd71394 add 9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded

+ddadd71395 add 9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded

+ddadd71396 add 9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded

+

+-- More GD edge cases, where difference between the unadjusted

+-- exponents is larger than the maximum precision and one side is 0

+ddadd71420 add  0 1.123456789012345     -> 1.123456789012345

+ddadd71421 add  0 1.123456789012345E-1  -> 0.1123456789012345

+ddadd71422 add  0 1.123456789012345E-2  -> 0.01123456789012345

+ddadd71423 add  0 1.123456789012345E-3  -> 0.001123456789012345

+ddadd71424 add  0 1.123456789012345E-4  -> 0.0001123456789012345

+ddadd71425 add  0 1.123456789012345E-5  -> 0.00001123456789012345

+ddadd71426 add  0 1.123456789012345E-6  -> 0.000001123456789012345

+ddadd71427 add  0 1.123456789012345E-7  -> 1.123456789012345E-7

+ddadd71428 add  0 1.123456789012345E-8  -> 1.123456789012345E-8

+ddadd71429 add  0 1.123456789012345E-9  -> 1.123456789012345E-9

+ddadd71430 add  0 1.123456789012345E-10 -> 1.123456789012345E-10

+ddadd71431 add  0 1.123456789012345E-11 -> 1.123456789012345E-11

+ddadd71432 add  0 1.123456789012345E-12 -> 1.123456789012345E-12

+ddadd71433 add  0 1.123456789012345E-13 -> 1.123456789012345E-13

+ddadd71434 add  0 1.123456789012345E-14 -> 1.123456789012345E-14

+ddadd71435 add  0 1.123456789012345E-15 -> 1.123456789012345E-15

+ddadd71436 add  0 1.123456789012345E-16 -> 1.123456789012345E-16

+ddadd71437 add  0 1.123456789012345E-17 -> 1.123456789012345E-17

+ddadd71438 add  0 1.123456789012345E-18 -> 1.123456789012345E-18

+ddadd71439 add  0 1.123456789012345E-19 -> 1.123456789012345E-19

+

+-- same, reversed 0

+ddadd71440 add 1.123456789012345     0 -> 1.123456789012345

+ddadd71441 add 1.123456789012345E-1  0 -> 0.1123456789012345

+ddadd71442 add 1.123456789012345E-2  0 -> 0.01123456789012345

+ddadd71443 add 1.123456789012345E-3  0 -> 0.001123456789012345

+ddadd71444 add 1.123456789012345E-4  0 -> 0.0001123456789012345

+ddadd71445 add 1.123456789012345E-5  0 -> 0.00001123456789012345

+ddadd71446 add 1.123456789012345E-6  0 -> 0.000001123456789012345

+ddadd71447 add 1.123456789012345E-7  0 -> 1.123456789012345E-7

+ddadd71448 add 1.123456789012345E-8  0 -> 1.123456789012345E-8

+ddadd71449 add 1.123456789012345E-9  0 -> 1.123456789012345E-9

+ddadd71450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10

+ddadd71451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11

+ddadd71452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12

+ddadd71453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13

+ddadd71454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14

+ddadd71455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15

+ddadd71456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16

+ddadd71457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17

+ddadd71458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18

+ddadd71459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19

+

+-- same, Es on the 0

+ddadd71460 add 1.123456789012345  0E-0   -> 1.123456789012345

+ddadd71461 add 1.123456789012345  0E-1   -> 1.123456789012345

+ddadd71462 add 1.123456789012345  0E-2   -> 1.123456789012345

+ddadd71463 add 1.123456789012345  0E-3   -> 1.123456789012345

+ddadd71464 add 1.123456789012345  0E-4   -> 1.123456789012345

+ddadd71465 add 1.123456789012345  0E-5   -> 1.123456789012345

+ddadd71466 add 1.123456789012345  0E-6   -> 1.123456789012345

+ddadd71467 add 1.123456789012345  0E-7   -> 1.123456789012345

+ddadd71468 add 1.123456789012345  0E-8   -> 1.123456789012345

+ddadd71469 add 1.123456789012345  0E-9   -> 1.123456789012345

+ddadd71470 add 1.123456789012345  0E-10  -> 1.123456789012345

+ddadd71471 add 1.123456789012345  0E-11  -> 1.123456789012345

+ddadd71472 add 1.123456789012345  0E-12  -> 1.123456789012345

+ddadd71473 add 1.123456789012345  0E-13  -> 1.123456789012345

+ddadd71474 add 1.123456789012345  0E-14  -> 1.123456789012345

+ddadd71475 add 1.123456789012345  0E-15  -> 1.123456789012345

+-- next four flag Rounded because the 0 extends the result

+ddadd71476 add 1.123456789012345  0E-16  -> 1.123456789012345 Rounded

+ddadd71477 add 1.123456789012345  0E-17  -> 1.123456789012345 Rounded

+ddadd71478 add 1.123456789012345  0E-18  -> 1.123456789012345 Rounded

+ddadd71479 add 1.123456789012345  0E-19  -> 1.123456789012345 Rounded

+

+-- sum of two opposite-sign operands is exactly 0 and floor => -0

+rounding:    half_up

+-- exact zeros from zeros

+ddadd71500 add  0        0E-19  ->  0E-19

+ddadd71501 add -0        0E-19  ->  0E-19

+ddadd71502 add  0       -0E-19  ->  0E-19

+ddadd71503 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddadd71511 add -11      11    ->  0

+ddadd71512 add  11     -11    ->  0

+

+rounding:    half_down

+-- exact zeros from zeros

+ddadd71520 add  0        0E-19  ->  0E-19

+ddadd71521 add -0        0E-19  ->  0E-19

+ddadd71522 add  0       -0E-19  ->  0E-19

+ddadd71523 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddadd71531 add -11      11    ->  0

+ddadd71532 add  11     -11    ->  0

+

+rounding:    half_even

+-- exact zeros from zeros

+ddadd71540 add  0        0E-19  ->  0E-19

+ddadd71541 add -0        0E-19  ->  0E-19

+ddadd71542 add  0       -0E-19  ->  0E-19

+ddadd71543 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddadd71551 add -11      11    ->  0

+ddadd71552 add  11     -11    ->  0

+

+rounding:    up

+-- exact zeros from zeros

+ddadd71560 add  0        0E-19  ->  0E-19

+ddadd71561 add -0        0E-19  ->  0E-19

+ddadd71562 add  0       -0E-19  ->  0E-19

+ddadd71563 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddadd71571 add -11      11    ->  0

+ddadd71572 add  11     -11    ->  0

+

+rounding:    down

+-- exact zeros from zeros

+ddadd71580 add  0        0E-19  ->  0E-19

+ddadd71581 add -0        0E-19  ->  0E-19

+ddadd71582 add  0       -0E-19  ->  0E-19

+ddadd71583 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddadd71591 add -11      11    ->  0

+ddadd71592 add  11     -11    ->  0

+

+rounding:    ceiling

+-- exact zeros from zeros

+ddadd71600 add  0        0E-19  ->  0E-19

+ddadd71601 add -0        0E-19  ->  0E-19

+ddadd71602 add  0       -0E-19  ->  0E-19

+ddadd71603 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddadd71611 add -11      11    ->  0

+ddadd71612 add  11     -11    ->  0

+

+-- and the extra-special ugly case; unusual minuses marked by -- *

+rounding:    floor

+-- exact zeros from zeros

+ddadd71620 add  0        0E-19  ->  0E-19

+ddadd71621 add -0        0E-19  -> -0E-19           -- *

+ddadd71622 add  0       -0E-19  -> -0E-19           -- *

+ddadd71623 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddadd71631 add -11      11    ->  -0                -- *

+ddadd71632 add  11     -11    ->  -0                -- *

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+ddadd71701 add 130E-2    120E-2    -> 2.50

+ddadd71702 add 130E-2    12E-1     -> 2.50

+ddadd71703 add 130E-2    1E0       -> 2.30

+ddadd71704 add 1E2       1E4       -> 1.01E+4

+ddadd71705 add 130E-2   -120E-2 -> 0.10

+ddadd71706 add 130E-2   -12E-1  -> 0.10

+ddadd71707 add 130E-2   -1E0    -> 0.30

+ddadd71708 add 1E2      -1E4    -> -9.9E+3

+

+-- query from Vincent Kulandaisamy

+rounding: ceiling

+ddadd71801  add  7.8822773805862E+277    -5.1757503820663E-21 -> 7.882277380586200E+277 Inexact Rounded

+ddadd71802  add  7.882277380586200E+277  12.341               -> 7.882277380586201E+277 Inexact Rounded

+ddadd71803  add  7.882277380586201E+277  2.7270545046613E-31  -> 7.882277380586202E+277 Inexact Rounded

+

+ddadd71811  add                   12.341 -5.1757503820663E-21 -> 12.34100000000000      Inexact Rounded

+ddadd71812  add        12.34100000000000 2.7270545046613E-31  -> 12.34100000000001      Inexact Rounded

+ddadd71813  add        12.34100000000001 7.8822773805862E+277 -> 7.882277380586201E+277 Inexact Rounded

+

+-- Gappy coefficients; check residue handling even with full coefficient gap

+rounding: half_even

+

+ddadd75001 add 1234567890123456 1      -> 1234567890123457

+ddadd75002 add 1234567890123456 0.6    -> 1234567890123457  Inexact Rounded

+ddadd75003 add 1234567890123456 0.06   -> 1234567890123456  Inexact Rounded

+ddadd75004 add 1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded

+ddadd75005 add 1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded

+ddadd75006 add 1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded

+ddadd75007 add 1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded

+ddadd75008 add 1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded

+ddadd75009 add 1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded

+ddadd75010 add 1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded

+ddadd75011 add 1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded

+ddadd75012 add 1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded

+ddadd75013 add 1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded

+ddadd75014 add 1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded

+ddadd75015 add 1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded

+ddadd75016 add 1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded

+ddadd75017 add 1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded

+ddadd75018 add 1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded

+ddadd75019 add 1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded

+ddadd75020 add 1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded

+ddadd75021 add 1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded

+

+-- widening second argument at gap

+ddadd75030 add 12345678 1                       -> 12345679

+ddadd75031 add 12345678 0.1                     -> 12345678.1

+ddadd75032 add 12345678 0.12                    -> 12345678.12

+ddadd75033 add 12345678 0.123                   -> 12345678.123

+ddadd75034 add 12345678 0.1234                  -> 12345678.1234

+ddadd75035 add 12345678 0.12345                 -> 12345678.12345

+ddadd75036 add 12345678 0.123456                -> 12345678.123456

+ddadd75037 add 12345678 0.1234567               -> 12345678.1234567

+ddadd75038 add 12345678 0.12345678              -> 12345678.12345678

+ddadd75039 add 12345678 0.123456789             -> 12345678.12345679 Inexact Rounded

+ddadd75040 add 12345678 0.123456785             -> 12345678.12345678 Inexact Rounded

+ddadd75041 add 12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded

+ddadd75042 add 12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded

+ddadd75043 add 12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded

+ddadd75044 add 12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded

+ddadd75045 add 12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded

+ddadd75046 add 12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded

+ddadd75047 add 12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded

+ddadd75048 add 12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded

+ddadd75049 add 12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded

+--                               90123456

+rounding: half_even

+ddadd75050 add 12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded

+ddadd75051 add 12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded

+ddadd75052 add 12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded

+ddadd75053 add 12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded

+ddadd75054 add 12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded

+ddadd75055 add 12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded

+ddadd75056 add 12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded

+ddadd75057 add 12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded

+ddadd75060 add 12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded

+ddadd75061 add 12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded

+ddadd75062 add 12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded

+ddadd75063 add 12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded

+ddadd75064 add 12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded

+ddadd75065 add 12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded

+ddadd75066 add 12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded

+ddadd75067 add 12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded

+-- far-out residues (full coefficient gap is 16+15 digits)

+rounding: up

+ddadd75070 add 12345678 1E-8                    -> 12345678.00000001

+ddadd75071 add 12345678 1E-9                    -> 12345678.00000001 Inexact Rounded

+ddadd75072 add 12345678 1E-10                   -> 12345678.00000001 Inexact Rounded

+ddadd75073 add 12345678 1E-11                   -> 12345678.00000001 Inexact Rounded

+ddadd75074 add 12345678 1E-12                   -> 12345678.00000001 Inexact Rounded

+ddadd75075 add 12345678 1E-13                   -> 12345678.00000001 Inexact Rounded

+ddadd75076 add 12345678 1E-14                   -> 12345678.00000001 Inexact Rounded

+ddadd75077 add 12345678 1E-15                   -> 12345678.00000001 Inexact Rounded

+ddadd75078 add 12345678 1E-16                   -> 12345678.00000001 Inexact Rounded

+ddadd75079 add 12345678 1E-17                   -> 12345678.00000001 Inexact Rounded

+ddadd75080 add 12345678 1E-18                   -> 12345678.00000001 Inexact Rounded

+ddadd75081 add 12345678 1E-19                   -> 12345678.00000001 Inexact Rounded

+ddadd75082 add 12345678 1E-20                   -> 12345678.00000001 Inexact Rounded

+ddadd75083 add 12345678 1E-25                   -> 12345678.00000001 Inexact Rounded

+ddadd75084 add 12345678 1E-30                   -> 12345678.00000001 Inexact Rounded

+ddadd75085 add 12345678 1E-31                   -> 12345678.00000001 Inexact Rounded

+ddadd75086 add 12345678 1E-32                   -> 12345678.00000001 Inexact Rounded

+ddadd75087 add 12345678 1E-33                   -> 12345678.00000001 Inexact Rounded

+ddadd75088 add 12345678 1E-34                   -> 12345678.00000001 Inexact Rounded

+ddadd75089 add 12345678 1E-35                   -> 12345678.00000001 Inexact Rounded

+

+-- Punit's

+ddadd75100 add 1.000 -200.000                   -> -199.000

+

+-- Rounding swathe

+rounding: half_even

+ddadd81100 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded

+ddadd81101 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81102 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81103 add  .2350    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81104 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81105 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81106 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded

+ddadd81107 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81108 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81109 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81120 add  9999999999999999E+369  9E+369  ->  Infinity Overflow  Inexact Rounded

+ddadd81121 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded

+

+rounding: half_up

+ddadd81200 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded

+ddadd81201 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81202 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81203 add  .2350    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81204 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81205 add  .2450    12345678901234.00    ->  12345678901234.25  Inexact Rounded

+ddadd81206 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded

+ddadd81207 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81208 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81209 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81220 add  9999999999999999E+369  9E+369 ->  Infinity Overflow  Inexact Rounded

+ddadd81221 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded

+

+rounding: half_down

+ddadd81300 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded

+ddadd81301 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81302 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81303 add  .2350    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81304 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81305 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81306 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded

+ddadd81307 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81308 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81309 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81320 add  9999999999999999E+369  9E+369 ->  Infinity Overflow  Inexact Rounded

+ddadd81321 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded

+

+rounding: up

+ddadd81400 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded

+ddadd81401 add  .2301    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81402 add  .2310    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81403 add  .2350    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81404 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81405 add  .2450    12345678901234.00    ->  12345678901234.25  Inexact Rounded

+ddadd81406 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded

+ddadd81407 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81408 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81409 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81411 add -.2399   -12345678901234.00    -> -12345678901234.24  Inexact Rounded

+ddadd81420 add  9999999999999999E+369  9E+369 ->  Infinity Overflow  Inexact Rounded

+ddadd81421 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded

+

+rounding: down

+ddadd81500 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded

+ddadd81501 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81502 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81503 add  .2350    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81504 add  .2351    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81505 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81506 add  .2451    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81507 add  .2360    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81508 add  .2370    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81509 add  .2399    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81511 add -.2399   -12345678901234.00    -> -12345678901234.23  Inexact Rounded

+ddadd81520 add  9999999999999999E+369  9E+369 ->  9.999999999999999E+384 Overflow  Inexact Rounded

+ddadd81521 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow  Inexact Rounded

+

+rounding: ceiling

+ddadd81600 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded

+ddadd81601 add  .2301    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81602 add  .2310    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81603 add  .2350    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81604 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81605 add  .2450    12345678901234.00    ->  12345678901234.25  Inexact Rounded

+ddadd81606 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded

+ddadd81607 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81608 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81609 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81611 add -.2399   -12345678901234.00    -> -12345678901234.23  Inexact Rounded

+ddadd81620 add  9999999999999999E+369  9E+369 ->  Infinity Overflow  Inexact Rounded

+ddadd81621 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow  Inexact Rounded

+

+rounding: floor

+ddadd81700 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded

+ddadd81701 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81702 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81703 add  .2350    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81704 add  .2351    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81705 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81706 add  .2451    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd81707 add  .2360    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81708 add  .2370    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81709 add  .2399    12345678901234.00    ->  12345678901234.23  Inexact Rounded

+ddadd81711 add -.2399   -12345678901234.00    -> -12345678901234.24  Inexact Rounded

+ddadd81720 add  9999999999999999E+369  9E+369 ->  9.999999999999999E+384 Overflow  Inexact Rounded

+ddadd81721 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded

+

+rounding: 05up

+ddadd81800 add  .2000    12345678901234.00    ->  12345678901234.20  Rounded

+ddadd81801 add  .2001    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81802 add  .2010    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81803 add  .2050    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81804 add  .2051    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81807 add  .2060    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81808 add  .2070    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81809 add  .2099    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81811 add -.2099   -12345678901234.00    -> -12345678901234.21  Inexact Rounded

+ddadd81820 add  9999999999999999E+369  9E+369 ->  9.999999999999999E+384 Overflow  Inexact Rounded

+ddadd81821 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow  Inexact Rounded

+

+ddadd81900 add  .2100    12345678901234.00    ->  12345678901234.21  Rounded

+ddadd81901 add  .2101    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81902 add  .2110    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81903 add  .2150    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81904 add  .2151    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81907 add  .2160    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81908 add  .2170    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81909 add  .2199    12345678901234.00    ->  12345678901234.21  Inexact Rounded

+ddadd81911 add -.2199   -12345678901234.00    -> -12345678901234.21  Inexact Rounded

+

+ddadd82000 add  .2400    12345678901234.00    ->  12345678901234.24  Rounded

+ddadd82001 add  .2401    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd82002 add  .2410    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd82003 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd82004 add  .2451    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd82007 add  .2460    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd82008 add  .2470    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd82009 add  .2499    12345678901234.00    ->  12345678901234.24  Inexact Rounded

+ddadd82011 add -.2499   -12345678901234.00    -> -12345678901234.24  Inexact Rounded

+

+ddadd82100 add  .2500    12345678901234.00    ->  12345678901234.25  Rounded

+ddadd82101 add  .2501    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82102 add  .2510    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82103 add  .2550    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82104 add  .2551    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82107 add  .2560    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82108 add  .2570    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82109 add  .2599    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82111 add -.2599   -12345678901234.00    -> -12345678901234.26  Inexact Rounded

+

+ddadd82200 add  .2600    12345678901234.00    ->  12345678901234.26  Rounded

+ddadd82201 add  .2601    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82202 add  .2610    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82203 add  .2650    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82204 add  .2651    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82207 add  .2660    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82208 add  .2670    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82209 add  .2699    12345678901234.00    ->  12345678901234.26  Inexact Rounded

+ddadd82211 add -.2699   -12345678901234.00    -> -12345678901234.26  Inexact Rounded

+

+ddadd82300 add  .2900    12345678901234.00    ->  12345678901234.29  Rounded

+ddadd82301 add  .2901    12345678901234.00    ->  12345678901234.29  Inexact Rounded

+ddadd82302 add  .2910    12345678901234.00    ->  12345678901234.29  Inexact Rounded

+ddadd82303 add  .2950    12345678901234.00    ->  12345678901234.29  Inexact Rounded

+ddadd82304 add  .2951    12345678901234.00    ->  12345678901234.29  Inexact Rounded

+ddadd82307 add  .2960    12345678901234.00    ->  12345678901234.29  Inexact Rounded

+ddadd82308 add  .2970    12345678901234.00    ->  12345678901234.29  Inexact Rounded

+ddadd82309 add  .2999    12345678901234.00    ->  12345678901234.29  Inexact Rounded

+ddadd82311 add -.2999   -12345678901234.00    -> -12345678901234.29  Inexact Rounded

+

+-- Null tests

+ddadd9990 add 10  # -> NaN Invalid_operation

+ddadd9991 add  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddAnd.decTest b/Lib/test/decimaltestdata/ddAnd.decTest
new file mode 100644
index 0000000..850da17
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddAnd.decTest
@@ -0,0 +1,347 @@
+------------------------------------------------------------------------

+-- ddAnd.decTest -- digitwise logical AND for decDoubles              --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check (truth table)

+ddand001 and             0    0 ->    0

+ddand002 and             0    1 ->    0

+ddand003 and             1    0 ->    0

+ddand004 and             1    1 ->    1

+ddand005 and          1100 1010 -> 1000

+-- and at msd and msd-1

+--           1234567890123456 1234567890123456      1234567890123456

+ddand006 and 0000000000000000 0000000000000000 ->                  0

+ddand007 and 0000000000000000 1000000000000000 ->                  0

+ddand008 and 1000000000000000 0000000000000000 ->                  0

+ddand009 and 1000000000000000 1000000000000000 ->   1000000000000000

+ddand010 and 0000000000000000 0000000000000000 ->                  0

+ddand011 and 0000000000000000 0100000000000000 ->                  0

+ddand012 and 0100000000000000 0000000000000000 ->                  0

+ddand013 and 0100000000000000 0100000000000000 ->    100000000000000

+

+-- Various lengths

+--           1234567890123456 1234567890123456      1234567890123456

+ddand021 and 1111111111111111 1111111111111111  ->  1111111111111111

+ddand024 and 1111111111111111  111111111111111  ->   111111111111111

+ddand025 and 1111111111111111   11111111111111  ->    11111111111111

+ddand026 and 1111111111111111    1111111111111  ->     1111111111111

+ddand027 and 1111111111111111     111111111111  ->      111111111111

+ddand028 and 1111111111111111      11111111111  ->       11111111111

+ddand029 and 1111111111111111       1111111111  ->        1111111111

+ddand030 and 1111111111111111        111111111  ->         111111111

+ddand031 and 1111111111111111         11111111  ->          11111111

+ddand032 and 1111111111111111          1111111  ->           1111111

+ddand033 and 1111111111111111           111111  ->            111111

+ddand034 and 1111111111111111            11111  ->             11111

+ddand035 and 1111111111111111             1111  ->              1111

+ddand036 and 1111111111111111              111  ->               111

+ddand037 and 1111111111111111               11  ->                11

+ddand038 and 1111111111111111                1  ->                 1

+ddand039 and 1111111111111111                0  ->                 0

+

+ddand040 and 1111111111111111    1111111111111111 ->  1111111111111111

+ddand041 and  111111111111111    1111111111111111 ->   111111111111111

+ddand042 and  111111111111111    1111111111111111 ->   111111111111111

+ddand043 and   11111111111111    1111111111111111 ->    11111111111111

+ddand044 and    1111111111111    1111111111111111 ->     1111111111111

+ddand045 and     111111111111    1111111111111111 ->      111111111111

+ddand046 and      11111111111    1111111111111111 ->       11111111111

+ddand047 and       1111111111    1111111111111111 ->        1111111111

+ddand048 and        111111111    1111111111111111 ->         111111111

+ddand049 and         11111111    1111111111111111 ->          11111111

+ddand050 and          1111111    1111111111111111 ->           1111111

+ddand051 and           111111    1111111111111111 ->            111111

+ddand052 and            11111    1111111111111111 ->             11111

+ddand053 and             1111    1111111111111111 ->              1111

+ddand054 and              111    1111111111111111 ->               111

+ddand055 and               11    1111111111111111 ->                11

+ddand056 and                1    1111111111111111 ->                 1

+ddand057 and                0    1111111111111111 ->                 0

+

+ddand150 and 1111111111  1  ->  1

+ddand151 and  111111111  1  ->  1

+ddand152 and   11111111  1  ->  1

+ddand153 and    1111111  1  ->  1

+ddand154 and     111111  1  ->  1

+ddand155 and      11111  1  ->  1

+ddand156 and       1111  1  ->  1

+ddand157 and        111  1  ->  1

+ddand158 and         11  1  ->  1

+ddand159 and          1  1  ->  1

+

+ddand160 and 1111111111  0  ->  0

+ddand161 and  111111111  0  ->  0

+ddand162 and   11111111  0  ->  0

+ddand163 and    1111111  0  ->  0

+ddand164 and     111111  0  ->  0

+ddand165 and      11111  0  ->  0

+ddand166 and       1111  0  ->  0

+ddand167 and        111  0  ->  0

+ddand168 and         11  0  ->  0

+ddand169 and          1  0  ->  0

+

+ddand170 and 1  1111111111  ->  1

+ddand171 and 1   111111111  ->  1

+ddand172 and 1    11111111  ->  1

+ddand173 and 1     1111111  ->  1

+ddand174 and 1      111111  ->  1

+ddand175 and 1       11111  ->  1

+ddand176 and 1        1111  ->  1

+ddand177 and 1         111  ->  1

+ddand178 and 1          11  ->  1

+ddand179 and 1           1  ->  1

+

+ddand180 and 0  1111111111  ->  0

+ddand181 and 0   111111111  ->  0

+ddand182 and 0    11111111  ->  0

+ddand183 and 0     1111111  ->  0

+ddand184 and 0      111111  ->  0

+ddand185 and 0       11111  ->  0

+ddand186 and 0        1111  ->  0

+ddand187 and 0         111  ->  0

+ddand188 and 0          11  ->  0

+ddand189 and 0           1  ->  0

+

+ddand090 and 011111111  111111111  ->   11111111

+ddand091 and 101111111  111111111  ->  101111111

+ddand092 and 110111111  111111111  ->  110111111

+ddand093 and 111011111  111111111  ->  111011111

+ddand094 and 111101111  111111111  ->  111101111

+ddand095 and 111110111  111111111  ->  111110111

+ddand096 and 111111011  111111111  ->  111111011

+ddand097 and 111111101  111111111  ->  111111101

+ddand098 and 111111110  111111111  ->  111111110

+

+ddand100 and 111111111  011111111  ->   11111111

+ddand101 and 111111111  101111111  ->  101111111

+ddand102 and 111111111  110111111  ->  110111111

+ddand103 and 111111111  111011111  ->  111011111

+ddand104 and 111111111  111101111  ->  111101111

+ddand105 and 111111111  111110111  ->  111110111

+ddand106 and 111111111  111111011  ->  111111011

+ddand107 and 111111111  111111101  ->  111111101

+ddand108 and 111111111  111111110  ->  111111110

+

+-- non-0/1 should not be accepted, nor should signs

+ddand220 and 111111112  111111111  ->  NaN Invalid_operation

+ddand221 and 333333333  333333333  ->  NaN Invalid_operation

+ddand222 and 555555555  555555555  ->  NaN Invalid_operation

+ddand223 and 777777777  777777777  ->  NaN Invalid_operation

+ddand224 and 999999999  999999999  ->  NaN Invalid_operation

+ddand225 and 222222222  999999999  ->  NaN Invalid_operation

+ddand226 and 444444444  999999999  ->  NaN Invalid_operation

+ddand227 and 666666666  999999999  ->  NaN Invalid_operation

+ddand228 and 888888888  999999999  ->  NaN Invalid_operation

+ddand229 and 999999999  222222222  ->  NaN Invalid_operation

+ddand230 and 999999999  444444444  ->  NaN Invalid_operation

+ddand231 and 999999999  666666666  ->  NaN Invalid_operation

+ddand232 and 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+ddand240 and  567468689 -934981942 ->  NaN Invalid_operation

+ddand241 and  567367689  934981942 ->  NaN Invalid_operation

+ddand242 and -631917772 -706014634 ->  NaN Invalid_operation

+ddand243 and -756253257  138579234 ->  NaN Invalid_operation

+ddand244 and  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+ddand250 and  2000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddand251 and  7000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddand252 and  8000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddand253 and  9000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddand254 and  2000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddand255 and  7000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddand256 and  8000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddand257 and  9000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddand258 and  1000000000000000 2000000000000000 ->  NaN Invalid_operation

+ddand259 and  1000000000000000 7000000000000000 ->  NaN Invalid_operation

+ddand260 and  1000000000000000 8000000000000000 ->  NaN Invalid_operation

+ddand261 and  1000000000000000 9000000000000000 ->  NaN Invalid_operation

+ddand262 and  0000000000000000 2000000000000000 ->  NaN Invalid_operation

+ddand263 and  0000000000000000 7000000000000000 ->  NaN Invalid_operation

+ddand264 and  0000000000000000 8000000000000000 ->  NaN Invalid_operation

+ddand265 and  0000000000000000 9000000000000000 ->  NaN Invalid_operation

+-- test MSD-1

+ddand270 and  0200001000000000 1000100000000010 ->  NaN Invalid_operation

+ddand271 and  0700000100000000 1000010000000100 ->  NaN Invalid_operation

+ddand272 and  0800000010000000 1000001000001000 ->  NaN Invalid_operation

+ddand273 and  0900000001000000 1000000100010000 ->  NaN Invalid_operation

+ddand274 and  1000000000100000 0200000010100000 ->  NaN Invalid_operation

+ddand275 and  1000000000010000 0700000001000000 ->  NaN Invalid_operation

+ddand276 and  1000000000001000 0800000010100000 ->  NaN Invalid_operation

+ddand277 and  1000000000000100 0900000000010000 ->  NaN Invalid_operation

+-- test LSD

+ddand280 and  0010000000000002 1000000100000001 ->  NaN Invalid_operation

+ddand281 and  0001000000000007 1000001000000011 ->  NaN Invalid_operation

+ddand282 and  0000100000000008 1000010000000001 ->  NaN Invalid_operation

+ddand283 and  0000010000000009 1000100000000001 ->  NaN Invalid_operation

+ddand284 and  1000001000000000 0001000000000002 ->  NaN Invalid_operation

+ddand285 and  1000000100000000 0010000000000007 ->  NaN Invalid_operation

+ddand286 and  1000000010000000 0100000000000008 ->  NaN Invalid_operation

+ddand287 and  1000000001000000 1000000000000009 ->  NaN Invalid_operation

+-- test Middie

+ddand288 and  0010000020000000 1000001000000000 ->  NaN Invalid_operation

+ddand289 and  0001000070000001 1000000100000000 ->  NaN Invalid_operation

+ddand290 and  0000100080000010 1000000010000000 ->  NaN Invalid_operation

+ddand291 and  0000010090000100 1000000001000000 ->  NaN Invalid_operation

+ddand292 and  1000001000001000 0000000020100000 ->  NaN Invalid_operation

+ddand293 and  1000000100010000 0000000070010000 ->  NaN Invalid_operation

+ddand294 and  1000000010100000 0000000080001000 ->  NaN Invalid_operation

+ddand295 and  1000000001000000 0000000090000100 ->  NaN Invalid_operation

+-- signs

+ddand296 and -1000000001000000 -0000010000000100 ->  NaN Invalid_operation

+ddand297 and -1000000001000000  0000000010000100 ->  NaN Invalid_operation

+ddand298 and  1000000001000000 -0000001000000100 ->  NaN Invalid_operation

+ddand299 and  1000000001000000  0000000011000100 ->  1000000

+

+-- Nmax, Nmin, Ntiny-like

+ddand331 and  2   9.99999999E+199     -> NaN Invalid_operation

+ddand332 and  3   1E-199              -> NaN Invalid_operation

+ddand333 and  4   1.00000000E-199     -> NaN Invalid_operation

+ddand334 and  5   1E-100              -> NaN Invalid_operation

+ddand335 and  6   -1E-100             -> NaN Invalid_operation

+ddand336 and  7   -1.00000000E-199    -> NaN Invalid_operation

+ddand337 and  8   -1E-199             -> NaN Invalid_operation

+ddand338 and  9   -9.99999999E+199    -> NaN Invalid_operation

+ddand341 and  9.99999999E+199     -18 -> NaN Invalid_operation

+ddand342 and  1E-199               01 -> NaN Invalid_operation

+ddand343 and  1.00000000E-199     -18 -> NaN Invalid_operation

+ddand344 and  1E-100               18 -> NaN Invalid_operation

+ddand345 and  -1E-100             -10 -> NaN Invalid_operation

+ddand346 and  -1.00000000E-199     18 -> NaN Invalid_operation

+ddand347 and  -1E-199              10 -> NaN Invalid_operation

+ddand348 and  -9.99999999E+199    -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+ddand361 and  1.0                  1  -> NaN Invalid_operation

+ddand362 and  1E+1                 1  -> NaN Invalid_operation

+ddand363 and  0.0                  1  -> NaN Invalid_operation

+ddand364 and  0E+1                 1  -> NaN Invalid_operation

+ddand365 and  9.9                  1  -> NaN Invalid_operation

+ddand366 and  9E+1                 1  -> NaN Invalid_operation

+ddand371 and  0 1.0                   -> NaN Invalid_operation

+ddand372 and  0 1E+1                  -> NaN Invalid_operation

+ddand373 and  0 0.0                   -> NaN Invalid_operation

+ddand374 and  0 0E+1                  -> NaN Invalid_operation

+ddand375 and  0 9.9                   -> NaN Invalid_operation

+ddand376 and  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+ddand780 and -Inf  -Inf   -> NaN Invalid_operation

+ddand781 and -Inf  -1000  -> NaN Invalid_operation

+ddand782 and -Inf  -1     -> NaN Invalid_operation

+ddand783 and -Inf  -0     -> NaN Invalid_operation

+ddand784 and -Inf   0     -> NaN Invalid_operation

+ddand785 and -Inf   1     -> NaN Invalid_operation

+ddand786 and -Inf   1000  -> NaN Invalid_operation

+ddand787 and -1000 -Inf   -> NaN Invalid_operation

+ddand788 and -Inf  -Inf   -> NaN Invalid_operation

+ddand789 and -1    -Inf   -> NaN Invalid_operation

+ddand790 and -0    -Inf   -> NaN Invalid_operation

+ddand791 and  0    -Inf   -> NaN Invalid_operation

+ddand792 and  1    -Inf   -> NaN Invalid_operation

+ddand793 and  1000 -Inf   -> NaN Invalid_operation

+ddand794 and  Inf  -Inf   -> NaN Invalid_operation

+

+ddand800 and  Inf  -Inf   -> NaN Invalid_operation

+ddand801 and  Inf  -1000  -> NaN Invalid_operation

+ddand802 and  Inf  -1     -> NaN Invalid_operation

+ddand803 and  Inf  -0     -> NaN Invalid_operation

+ddand804 and  Inf   0     -> NaN Invalid_operation

+ddand805 and  Inf   1     -> NaN Invalid_operation

+ddand806 and  Inf   1000  -> NaN Invalid_operation

+ddand807 and  Inf   Inf   -> NaN Invalid_operation

+ddand808 and -1000  Inf   -> NaN Invalid_operation

+ddand809 and -Inf   Inf   -> NaN Invalid_operation

+ddand810 and -1     Inf   -> NaN Invalid_operation

+ddand811 and -0     Inf   -> NaN Invalid_operation

+ddand812 and  0     Inf   -> NaN Invalid_operation

+ddand813 and  1     Inf   -> NaN Invalid_operation

+ddand814 and  1000  Inf   -> NaN Invalid_operation

+ddand815 and  Inf   Inf   -> NaN Invalid_operation

+

+ddand821 and  NaN -Inf    -> NaN Invalid_operation

+ddand822 and  NaN -1000   -> NaN Invalid_operation

+ddand823 and  NaN -1      -> NaN Invalid_operation

+ddand824 and  NaN -0      -> NaN Invalid_operation

+ddand825 and  NaN  0      -> NaN Invalid_operation

+ddand826 and  NaN  1      -> NaN Invalid_operation

+ddand827 and  NaN  1000   -> NaN Invalid_operation

+ddand828 and  NaN  Inf    -> NaN Invalid_operation

+ddand829 and  NaN  NaN    -> NaN Invalid_operation

+ddand830 and -Inf  NaN    -> NaN Invalid_operation

+ddand831 and -1000 NaN    -> NaN Invalid_operation

+ddand832 and -1    NaN    -> NaN Invalid_operation

+ddand833 and -0    NaN    -> NaN Invalid_operation

+ddand834 and  0    NaN    -> NaN Invalid_operation

+ddand835 and  1    NaN    -> NaN Invalid_operation

+ddand836 and  1000 NaN    -> NaN Invalid_operation

+ddand837 and  Inf  NaN    -> NaN Invalid_operation

+

+ddand841 and  sNaN -Inf   ->  NaN  Invalid_operation

+ddand842 and  sNaN -1000  ->  NaN  Invalid_operation

+ddand843 and  sNaN -1     ->  NaN  Invalid_operation

+ddand844 and  sNaN -0     ->  NaN  Invalid_operation

+ddand845 and  sNaN  0     ->  NaN  Invalid_operation

+ddand846 and  sNaN  1     ->  NaN  Invalid_operation

+ddand847 and  sNaN  1000  ->  NaN  Invalid_operation

+ddand848 and  sNaN  NaN   ->  NaN  Invalid_operation

+ddand849 and  sNaN sNaN   ->  NaN  Invalid_operation

+ddand850 and  NaN  sNaN   ->  NaN  Invalid_operation

+ddand851 and -Inf  sNaN   ->  NaN  Invalid_operation

+ddand852 and -1000 sNaN   ->  NaN  Invalid_operation

+ddand853 and -1    sNaN   ->  NaN  Invalid_operation

+ddand854 and -0    sNaN   ->  NaN  Invalid_operation

+ddand855 and  0    sNaN   ->  NaN  Invalid_operation

+ddand856 and  1    sNaN   ->  NaN  Invalid_operation

+ddand857 and  1000 sNaN   ->  NaN  Invalid_operation

+ddand858 and  Inf  sNaN   ->  NaN  Invalid_operation

+ddand859 and  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddand861 and  NaN1   -Inf    -> NaN Invalid_operation

+ddand862 and +NaN2   -1000   -> NaN Invalid_operation

+ddand863 and  NaN3    1000   -> NaN Invalid_operation

+ddand864 and  NaN4    Inf    -> NaN Invalid_operation

+ddand865 and  NaN5   +NaN6   -> NaN Invalid_operation

+ddand866 and -Inf     NaN7   -> NaN Invalid_operation

+ddand867 and -1000    NaN8   -> NaN Invalid_operation

+ddand868 and  1000    NaN9   -> NaN Invalid_operation

+ddand869 and  Inf    +NaN10  -> NaN Invalid_operation

+ddand871 and  sNaN11  -Inf   -> NaN Invalid_operation

+ddand872 and  sNaN12  -1000  -> NaN Invalid_operation

+ddand873 and  sNaN13   1000  -> NaN Invalid_operation

+ddand874 and  sNaN14   NaN17 -> NaN Invalid_operation

+ddand875 and  sNaN15  sNaN18 -> NaN Invalid_operation

+ddand876 and  NaN16   sNaN19 -> NaN Invalid_operation

+ddand877 and -Inf    +sNaN20 -> NaN Invalid_operation

+ddand878 and -1000    sNaN21 -> NaN Invalid_operation

+ddand879 and  1000    sNaN22 -> NaN Invalid_operation

+ddand880 and  Inf     sNaN23 -> NaN Invalid_operation

+ddand881 and +NaN25  +sNaN24 -> NaN Invalid_operation

+ddand882 and -NaN26    NaN28 -> NaN Invalid_operation

+ddand883 and -sNaN27  sNaN29 -> NaN Invalid_operation

+ddand884 and  1000    -NaN30 -> NaN Invalid_operation

+ddand885 and  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddBase.decTest b/Lib/test/decimaltestdata/ddBase.decTest
new file mode 100644
index 0000000..ddc8185
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddBase.decTest
@@ -0,0 +1,1096 @@
+------------------------------------------------------------------------

+-- ddBase.decTest -- base decDouble <--> string conversions           --

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

+

+-- This file tests base conversions from string to a decimal number

+-- and back to a string (in Scientific form)

+

+-- Note that unlike other operations the operand is subject to rounding

+-- to conform to emax and precision settings (that is, numbers will

+-- conform to rules and exponent will be in permitted range).  The

+-- 'left hand side', therefore, may have numbers that cannot be

+-- represented in a decDouble.  Some testcases go to the limit of the

+-- next-wider format, and hence these testcases may also be used to

+-- test narrowing and widening operations.

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+ddbas001 toSci       0 -> 0

+ddbas002 toSci       1 -> 1

+ddbas003 toSci     1.0 -> 1.0

+ddbas004 toSci    1.00 -> 1.00

+ddbas005 toSci      10 -> 10

+ddbas006 toSci    1000 -> 1000

+ddbas007 toSci    10.0 -> 10.0

+ddbas008 toSci    10.1 -> 10.1

+ddbas009 toSci    10.4 -> 10.4

+ddbas010 toSci    10.5 -> 10.5

+ddbas011 toSci    10.6 -> 10.6

+ddbas012 toSci    10.9 -> 10.9

+ddbas013 toSci    11.0 -> 11.0

+ddbas014 toSci  1.234 -> 1.234

+ddbas015 toSci  0.123 -> 0.123

+ddbas016 toSci  0.012 -> 0.012

+ddbas017 toSci  -0    -> -0

+ddbas018 toSci  -0.0  -> -0.0

+ddbas019 toSci -00.00 -> -0.00

+

+ddbas021 toSci     -1 -> -1

+ddbas022 toSci   -1.0 -> -1.0

+ddbas023 toSci   -0.1 -> -0.1

+ddbas024 toSci   -9.1 -> -9.1

+ddbas025 toSci   -9.11 -> -9.11

+ddbas026 toSci   -9.119 -> -9.119

+ddbas027 toSci   -9.999 -> -9.999

+

+ddbas030 toSci  '123456789.123456'   -> '123456789.123456'

+ddbas031 toSci  '123456789.000000'   -> '123456789.000000'

+ddbas032 toSci   '123456789123456'   -> '123456789123456'

+ddbas033 toSci   '0.0000123456789'   -> '0.0000123456789'

+ddbas034 toSci  '0.00000123456789'   -> '0.00000123456789'

+ddbas035 toSci '0.000000123456789'   -> '1.23456789E-7'

+ddbas036 toSci '0.0000000123456789'  -> '1.23456789E-8'

+

+ddbas037 toSci '0.123456789012344'   -> '0.123456789012344'

+ddbas038 toSci '0.123456789012345'   -> '0.123456789012345'

+

+-- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax)

+ddbsn001 toSci -9.999999999999999E+384 -> -9.999999999999999E+384

+ddbsn002 toSci -1E-383 -> -1E-383

+ddbsn003 toSci -1E-398 -> -1E-398 Subnormal

+ddbsn004 toSci -0 -> -0

+ddbsn005 toSci +0 ->  0

+ddbsn006 toSci +1E-398 ->  1E-398 Subnormal

+ddbsn007 toSci +1E-383 ->  1E-383

+ddbsn008 toSci +9.999999999999999E+384 ->  9.999999999999999E+384

+

+-- String [many more examples are implicitly tested elsewhere]

+-- strings without E cannot generate E in result

+ddbas040 toSci "12"        -> '12'

+ddbas041 toSci "-76"       -> '-76'

+ddbas042 toSci "12.76"     -> '12.76'

+ddbas043 toSci "+12.76"    -> '12.76'

+ddbas044 toSci "012.76"    -> '12.76'

+ddbas045 toSci "+0.003"    -> '0.003'

+ddbas046 toSci "17."       -> '17'

+ddbas047 toSci ".5"        -> '0.5'

+ddbas048 toSci "044"       -> '44'

+ddbas049 toSci "0044"      -> '44'

+ddbas050 toSci "0.0005"      -> '0.0005'

+ddbas051 toSci "00.00005"    -> '0.00005'

+ddbas052 toSci "0.000005"    -> '0.000005'

+ddbas053 toSci "0.0000050"   -> '0.0000050'

+ddbas054 toSci "0.0000005"   -> '5E-7'

+ddbas055 toSci "0.00000005"  -> '5E-8'

+ddbas056 toSci "12345678.543210" -> '12345678.543210'

+ddbas057 toSci "2345678.543210" -> '2345678.543210'

+ddbas058 toSci "345678.543210" -> '345678.543210'

+ddbas059 toSci "0345678.54321" -> '345678.54321'

+ddbas060 toSci "345678.5432" -> '345678.5432'

+ddbas061 toSci "+345678.5432" -> '345678.5432'

+ddbas062 toSci "+0345678.5432" -> '345678.5432'

+ddbas063 toSci "+00345678.5432" -> '345678.5432'

+ddbas064 toSci "-345678.5432"  -> '-345678.5432'

+ddbas065 toSci "-0345678.5432"  -> '-345678.5432'

+ddbas066 toSci "-00345678.5432"  -> '-345678.5432'

+-- examples

+ddbas067 toSci "5E-6"        -> '0.000005'

+ddbas068 toSci "50E-7"       -> '0.0000050'

+ddbas069 toSci "5E-7"        -> '5E-7'

+

+-- [No exotics as no Unicode]

+

+-- rounded with dots in all (including edge) places

+ddbas071 toSci  .1234567890123456123  -> 0.1234567890123456 Inexact Rounded

+ddbas072 toSci  1.234567890123456123  -> 1.234567890123456 Inexact Rounded

+ddbas073 toSci  12.34567890123456123  -> 12.34567890123456 Inexact Rounded

+ddbas074 toSci  123.4567890123456123  -> 123.4567890123456 Inexact Rounded

+ddbas075 toSci  1234.567890123456123  -> 1234.567890123456 Inexact Rounded

+ddbas076 toSci  12345.67890123456123  -> 12345.67890123456 Inexact Rounded

+ddbas077 toSci  123456.7890123456123  -> 123456.7890123456 Inexact Rounded

+ddbas078 toSci  1234567.890123456123  -> 1234567.890123456 Inexact Rounded

+ddbas079 toSci  12345678.90123456123  -> 12345678.90123456 Inexact Rounded

+ddbas080 toSci  123456789.0123456123  -> 123456789.0123456 Inexact Rounded

+ddbas081 toSci  1234567890.123456123  -> 1234567890.123456 Inexact Rounded

+ddbas082 toSci  12345678901.23456123  -> 12345678901.23456 Inexact Rounded

+ddbas083 toSci  123456789012.3456123  -> 123456789012.3456 Inexact Rounded

+ddbas084 toSci  1234567890123.456123  -> 1234567890123.456 Inexact Rounded

+ddbas085 toSci  12345678901234.56123  -> 12345678901234.56 Inexact Rounded

+ddbas086 toSci  123456789012345.6123  -> 123456789012345.6 Inexact Rounded

+ddbas087 toSci  1234567890123456.123  -> 1234567890123456  Inexact Rounded

+ddbas088 toSci  12345678901234561.23  -> 1.234567890123456E+16 Inexact Rounded

+ddbas089 toSci  123456789012345612.3  -> 1.234567890123456E+17 Inexact Rounded

+ddbas090 toSci  1234567890123456123.  -> 1.234567890123456E+18 Inexact Rounded

+

+

+-- Numbers with E

+ddbas130 toSci "0.000E-1"  -> '0.0000'

+ddbas131 toSci "0.000E-2"  -> '0.00000'

+ddbas132 toSci "0.000E-3"  -> '0.000000'

+ddbas133 toSci "0.000E-4"  -> '0E-7'

+ddbas134 toSci "0.00E-2"   -> '0.0000'

+ddbas135 toSci "0.00E-3"   -> '0.00000'

+ddbas136 toSci "0.00E-4"   -> '0.000000'

+ddbas137 toSci "0.00E-5"   -> '0E-7'

+ddbas138 toSci "+0E+9"     -> '0E+9'

+ddbas139 toSci "-0E+9"     -> '-0E+9'

+ddbas140 toSci "1E+9"      -> '1E+9'

+ddbas141 toSci "1e+09"     -> '1E+9'

+ddbas142 toSci "1E+90"     -> '1E+90'

+ddbas143 toSci "+1E+009"   -> '1E+9'

+ddbas144 toSci "0E+9"      -> '0E+9'

+ddbas145 toSci "1E+9"      -> '1E+9'

+ddbas146 toSci "1E+09"     -> '1E+9'

+ddbas147 toSci "1e+90"     -> '1E+90'

+ddbas148 toSci "1E+009"    -> '1E+9'

+ddbas149 toSci "000E+9"    -> '0E+9'

+ddbas150 toSci "1E9"       -> '1E+9'

+ddbas151 toSci "1e09"      -> '1E+9'

+ddbas152 toSci "1E90"      -> '1E+90'

+ddbas153 toSci "1E009"     -> '1E+9'

+ddbas154 toSci "0E9"       -> '0E+9'

+ddbas155 toSci "0.000e+0"  -> '0.000'

+ddbas156 toSci "0.000E-1"  -> '0.0000'

+ddbas157 toSci "4E+9"      -> '4E+9'

+ddbas158 toSci "44E+9"     -> '4.4E+10'

+ddbas159 toSci "0.73e-7"   -> '7.3E-8'

+ddbas160 toSci "00E+9"     -> '0E+9'

+ddbas161 toSci "00E-9"     -> '0E-9'

+ddbas162 toSci "10E+9"     -> '1.0E+10'

+ddbas163 toSci "10E+09"    -> '1.0E+10'

+ddbas164 toSci "10e+90"    -> '1.0E+91'

+ddbas165 toSci "10E+009"   -> '1.0E+10'

+ddbas166 toSci "100e+9"    -> '1.00E+11'

+ddbas167 toSci "100e+09"   -> '1.00E+11'

+ddbas168 toSci "100E+90"   -> '1.00E+92'

+ddbas169 toSci "100e+009"  -> '1.00E+11'

+

+ddbas170 toSci "1.265"     -> '1.265'

+ddbas171 toSci "1.265E-20" -> '1.265E-20'

+ddbas172 toSci "1.265E-8"  -> '1.265E-8'

+ddbas173 toSci "1.265E-4"  -> '0.0001265'

+ddbas174 toSci "1.265E-3"  -> '0.001265'

+ddbas175 toSci "1.265E-2"  -> '0.01265'

+ddbas176 toSci "1.265E-1"  -> '0.1265'

+ddbas177 toSci "1.265E-0"  -> '1.265'

+ddbas178 toSci "1.265E+1"  -> '12.65'

+ddbas179 toSci "1.265E+2"  -> '126.5'

+ddbas180 toSci "1.265E+3"  -> '1265'

+ddbas181 toSci "1.265E+4"  -> '1.265E+4'

+ddbas182 toSci "1.265E+8"  -> '1.265E+8'

+ddbas183 toSci "1.265E+20" -> '1.265E+20'

+

+ddbas190 toSci "12.65"     -> '12.65'

+ddbas191 toSci "12.65E-20" -> '1.265E-19'

+ddbas192 toSci "12.65E-8"  -> '1.265E-7'

+ddbas193 toSci "12.65E-4"  -> '0.001265'

+ddbas194 toSci "12.65E-3"  -> '0.01265'

+ddbas195 toSci "12.65E-2"  -> '0.1265'

+ddbas196 toSci "12.65E-1"  -> '1.265'

+ddbas197 toSci "12.65E-0"  -> '12.65'

+ddbas198 toSci "12.65E+1"  -> '126.5'

+ddbas199 toSci "12.65E+2"  -> '1265'

+ddbas200 toSci "12.65E+3"  -> '1.265E+4'

+ddbas201 toSci "12.65E+4"  -> '1.265E+5'

+ddbas202 toSci "12.65E+8"  -> '1.265E+9'

+ddbas203 toSci "12.65E+20" -> '1.265E+21'

+

+ddbas210 toSci "126.5"     -> '126.5'

+ddbas211 toSci "126.5E-20" -> '1.265E-18'

+ddbas212 toSci "126.5E-8"  -> '0.000001265'

+ddbas213 toSci "126.5E-4"  -> '0.01265'

+ddbas214 toSci "126.5E-3"  -> '0.1265'

+ddbas215 toSci "126.5E-2"  -> '1.265'

+ddbas216 toSci "126.5E-1"  -> '12.65'

+ddbas217 toSci "126.5E-0"  -> '126.5'

+ddbas218 toSci "126.5E+1"  -> '1265'

+ddbas219 toSci "126.5E+2"  -> '1.265E+4'

+ddbas220 toSci "126.5E+3"  -> '1.265E+5'

+ddbas221 toSci "126.5E+4"  -> '1.265E+6'

+ddbas222 toSci "126.5E+8"  -> '1.265E+10'

+ddbas223 toSci "126.5E+20" -> '1.265E+22'

+

+ddbas230 toSci "1265"     -> '1265'

+ddbas231 toSci "1265E-20" -> '1.265E-17'

+ddbas232 toSci "1265E-8"  -> '0.00001265'

+ddbas233 toSci "1265E-4"  -> '0.1265'

+ddbas234 toSci "1265E-3"  -> '1.265'

+ddbas235 toSci "1265E-2"  -> '12.65'

+ddbas236 toSci "1265E-1"  -> '126.5'

+ddbas237 toSci "1265E-0"  -> '1265'

+ddbas238 toSci "1265E+1"  -> '1.265E+4'

+ddbas239 toSci "1265E+2"  -> '1.265E+5'

+ddbas240 toSci "1265E+3"  -> '1.265E+6'

+ddbas241 toSci "1265E+4"  -> '1.265E+7'

+ddbas242 toSci "1265E+8"  -> '1.265E+11'

+ddbas243 toSci "1265E+20" -> '1.265E+23'

+ddbas244 toSci "1265E-9"  -> '0.000001265'

+ddbas245 toSci "1265E-10" -> '1.265E-7'

+ddbas246 toSci "1265E-11" -> '1.265E-8'

+ddbas247 toSci "1265E-12" -> '1.265E-9'

+

+ddbas250 toSci "0.1265"     -> '0.1265'

+ddbas251 toSci "0.1265E-20" -> '1.265E-21'

+ddbas252 toSci "0.1265E-8"  -> '1.265E-9'

+ddbas253 toSci "0.1265E-4"  -> '0.00001265'

+ddbas254 toSci "0.1265E-3"  -> '0.0001265'

+ddbas255 toSci "0.1265E-2"  -> '0.001265'

+ddbas256 toSci "0.1265E-1"  -> '0.01265'

+ddbas257 toSci "0.1265E-0"  -> '0.1265'

+ddbas258 toSci "0.1265E+1"  -> '1.265'

+ddbas259 toSci "0.1265E+2"  -> '12.65'

+ddbas260 toSci "0.1265E+3"  -> '126.5'

+ddbas261 toSci "0.1265E+4"  -> '1265'

+ddbas262 toSci "0.1265E+8"  -> '1.265E+7'

+ddbas263 toSci "0.1265E+20" -> '1.265E+19'

+

+-- some more negative zeros [systematic tests below]

+ddbas290 toSci "-0.000E-1"  -> '-0.0000'

+ddbas291 toSci "-0.000E-2"  -> '-0.00000'

+ddbas292 toSci "-0.000E-3"  -> '-0.000000'

+ddbas293 toSci "-0.000E-4"  -> '-0E-7'

+ddbas294 toSci "-0.00E-2"   -> '-0.0000'

+ddbas295 toSci "-0.00E-3"   -> '-0.00000'

+ddbas296 toSci "-0.0E-2"    -> '-0.000'

+ddbas297 toSci "-0.0E-3"    -> '-0.0000'

+ddbas298 toSci "-0E-2"      -> '-0.00'

+ddbas299 toSci "-0E-3"      -> '-0.000'

+

+-- Engineering notation tests

+ddbas301  toSci 10e12  -> 1.0E+13

+ddbas302  toEng 10e12  -> 10E+12

+ddbas303  toSci 10e11  -> 1.0E+12

+ddbas304  toEng 10e11  -> 1.0E+12

+ddbas305  toSci 10e10  -> 1.0E+11

+ddbas306  toEng 10e10  -> 100E+9

+ddbas307  toSci 10e9   -> 1.0E+10

+ddbas308  toEng 10e9   -> 10E+9

+ddbas309  toSci 10e8   -> 1.0E+9

+ddbas310  toEng 10e8   -> 1.0E+9

+ddbas311  toSci 10e7   -> 1.0E+8

+ddbas312  toEng 10e7   -> 100E+6

+ddbas313  toSci 10e6   -> 1.0E+7

+ddbas314  toEng 10e6   -> 10E+6

+ddbas315  toSci 10e5   -> 1.0E+6

+ddbas316  toEng 10e5   -> 1.0E+6

+ddbas317  toSci 10e4   -> 1.0E+5

+ddbas318  toEng 10e4   -> 100E+3

+ddbas319  toSci 10e3   -> 1.0E+4

+ddbas320  toEng 10e3   -> 10E+3

+ddbas321  toSci 10e2   -> 1.0E+3

+ddbas322  toEng 10e2   -> 1.0E+3

+ddbas323  toSci 10e1   -> 1.0E+2

+ddbas324  toEng 10e1   -> 100

+ddbas325  toSci 10e0   -> 10

+ddbas326  toEng 10e0   -> 10

+ddbas327  toSci 10e-1  -> 1.0

+ddbas328  toEng 10e-1  -> 1.0

+ddbas329  toSci 10e-2  -> 0.10

+ddbas330  toEng 10e-2  -> 0.10

+ddbas331  toSci 10e-3  -> 0.010

+ddbas332  toEng 10e-3  -> 0.010

+ddbas333  toSci 10e-4  -> 0.0010

+ddbas334  toEng 10e-4  -> 0.0010

+ddbas335  toSci 10e-5  -> 0.00010

+ddbas336  toEng 10e-5  -> 0.00010

+ddbas337  toSci 10e-6  -> 0.000010

+ddbas338  toEng 10e-6  -> 0.000010

+ddbas339  toSci 10e-7  -> 0.0000010

+ddbas340  toEng 10e-7  -> 0.0000010

+ddbas341  toSci 10e-8  -> 1.0E-7

+ddbas342  toEng 10e-8  -> 100E-9

+ddbas343  toSci 10e-9  -> 1.0E-8

+ddbas344  toEng 10e-9  -> 10E-9

+ddbas345  toSci 10e-10 -> 1.0E-9

+ddbas346  toEng 10e-10 -> 1.0E-9

+ddbas347  toSci 10e-11 -> 1.0E-10

+ddbas348  toEng 10e-11 -> 100E-12

+ddbas349  toSci 10e-12 -> 1.0E-11

+ddbas350  toEng 10e-12 -> 10E-12

+ddbas351  toSci 10e-13 -> 1.0E-12

+ddbas352  toEng 10e-13 -> 1.0E-12

+

+ddbas361  toSci 7E12  -> 7E+12

+ddbas362  toEng 7E12  -> 7E+12

+ddbas363  toSci 7E11  -> 7E+11

+ddbas364  toEng 7E11  -> 700E+9

+ddbas365  toSci 7E10  -> 7E+10

+ddbas366  toEng 7E10  -> 70E+9

+ddbas367  toSci 7E9   -> 7E+9

+ddbas368  toEng 7E9   -> 7E+9

+ddbas369  toSci 7E8   -> 7E+8

+ddbas370  toEng 7E8   -> 700E+6

+ddbas371  toSci 7E7   -> 7E+7

+ddbas372  toEng 7E7   -> 70E+6

+ddbas373  toSci 7E6   -> 7E+6

+ddbas374  toEng 7E6   -> 7E+6

+ddbas375  toSci 7E5   -> 7E+5

+ddbas376  toEng 7E5   -> 700E+3

+ddbas377  toSci 7E4   -> 7E+4

+ddbas378  toEng 7E4   -> 70E+3

+ddbas379  toSci 7E3   -> 7E+3

+ddbas380  toEng 7E3   -> 7E+3

+ddbas381  toSci 7E2   -> 7E+2

+ddbas382  toEng 7E2   -> 700

+ddbas383  toSci 7E1   -> 7E+1

+ddbas384  toEng 7E1   -> 70

+ddbas385  toSci 7E0   -> 7

+ddbas386  toEng 7E0   -> 7

+ddbas387  toSci 7E-1  -> 0.7

+ddbas388  toEng 7E-1  -> 0.7

+ddbas389  toSci 7E-2  -> 0.07

+ddbas390  toEng 7E-2  -> 0.07

+ddbas391  toSci 7E-3  -> 0.007

+ddbas392  toEng 7E-3  -> 0.007

+ddbas393  toSci 7E-4  -> 0.0007

+ddbas394  toEng 7E-4  -> 0.0007

+ddbas395  toSci 7E-5  -> 0.00007

+ddbas396  toEng 7E-5  -> 0.00007

+ddbas397  toSci 7E-6  -> 0.000007

+ddbas398  toEng 7E-6  -> 0.000007

+ddbas399  toSci 7E-7  -> 7E-7

+ddbas400  toEng 7E-7  -> 700E-9

+ddbas401  toSci 7E-8  -> 7E-8

+ddbas402  toEng 7E-8  -> 70E-9

+ddbas403  toSci 7E-9  -> 7E-9

+ddbas404  toEng 7E-9  -> 7E-9

+ddbas405  toSci 7E-10 -> 7E-10

+ddbas406  toEng 7E-10 -> 700E-12

+ddbas407  toSci 7E-11 -> 7E-11

+ddbas408  toEng 7E-11 -> 70E-12

+ddbas409  toSci 7E-12 -> 7E-12

+ddbas410  toEng 7E-12 -> 7E-12

+ddbas411  toSci 7E-13 -> 7E-13

+ddbas412  toEng 7E-13 -> 700E-15

+

+-- Exacts remain exact up to precision ..

+rounding:  half_up

+ddbas420  toSci    100 -> 100

+ddbas421  toEng    100 -> 100

+ddbas422  toSci   1000 -> 1000

+ddbas423  toEng   1000 -> 1000

+ddbas424  toSci  999.9 ->  999.9

+ddbas425  toEng  999.9 ->  999.9

+ddbas426  toSci 1000.0 -> 1000.0

+ddbas427  toEng 1000.0 -> 1000.0

+ddbas428  toSci 1000.1 -> 1000.1

+ddbas429  toEng 1000.1 -> 1000.1

+ddbas430  toSci 10000 -> 10000

+ddbas431  toEng 10000 -> 10000

+ddbas432  toSci 100000 -> 100000

+ddbas433  toEng 100000 -> 100000

+ddbas434  toSci 1000000 -> 1000000

+ddbas435  toEng 1000000 -> 1000000

+ddbas436  toSci 10000000 -> 10000000

+ddbas437  toEng 10000000 -> 10000000

+ddbas438  toSci 100000000 -> 100000000

+ddbas439  toEng 1000000000000000 -> 1000000000000000

+ddbas440  toSci 10000000000000000    -> 1.000000000000000E+16   Rounded

+ddbas441  toEng 10000000000000000    -> 10.00000000000000E+15   Rounded

+ddbas442  toSci 10000000000000001    -> 1.000000000000000E+16   Rounded Inexact

+ddbas443  toEng 10000000000000001    -> 10.00000000000000E+15   Rounded Inexact

+ddbas444  toSci 10000000000000003    -> 1.000000000000000E+16   Rounded Inexact

+ddbas445  toEng 10000000000000003    -> 10.00000000000000E+15   Rounded Inexact

+ddbas446  toSci 10000000000000005    -> 1.000000000000001E+16   Rounded Inexact

+ddbas447  toEng 10000000000000005    -> 10.00000000000001E+15   Rounded Inexact

+ddbas448  toSci 100000000000000050   -> 1.000000000000001E+17   Rounded Inexact

+ddbas449  toEng 100000000000000050   -> 100.0000000000001E+15   Rounded Inexact

+ddbas450  toSci 10000000000000009    -> 1.000000000000001E+16   Rounded Inexact

+ddbas451  toEng 10000000000000009    -> 10.00000000000001E+15   Rounded Inexact

+ddbas452  toSci 100000000000000000   -> 1.000000000000000E+17   Rounded

+ddbas453  toEng 100000000000000000   -> 100.0000000000000E+15   Rounded

+ddbas454  toSci 100000000000000003   -> 1.000000000000000E+17   Rounded Inexact

+ddbas455  toEng 100000000000000003   -> 100.0000000000000E+15   Rounded Inexact

+ddbas456  toSci 100000000000000005   -> 1.000000000000000E+17   Rounded Inexact

+ddbas457  toEng 100000000000000005   -> 100.0000000000000E+15   Rounded Inexact

+ddbas458  toSci 100000000000000009   -> 1.000000000000000E+17   Rounded Inexact

+ddbas459  toEng 100000000000000009   -> 100.0000000000000E+15   Rounded Inexact

+ddbas460  toSci 1000000000000000000  -> 1.000000000000000E+18   Rounded

+ddbas461  toEng 1000000000000000000  -> 1.000000000000000E+18   Rounded

+ddbas462  toSci 1000000000000000300  -> 1.000000000000000E+18   Rounded Inexact

+ddbas463  toEng 1000000000000000300  -> 1.000000000000000E+18   Rounded Inexact

+ddbas464  toSci 1000000000000000500  -> 1.000000000000001E+18   Rounded Inexact

+ddbas465  toEng 1000000000000000500  -> 1.000000000000001E+18   Rounded Inexact

+ddbas466  toSci 1000000000000000900  -> 1.000000000000001E+18   Rounded Inexact

+ddbas467  toEng 1000000000000000900  -> 1.000000000000001E+18   Rounded Inexact

+ddbas468  toSci 10000000000000000000 -> 1.000000000000000E+19   Rounded

+ddbas469  toEng 10000000000000000000 -> 10.00000000000000E+18   Rounded

+ddbas470  toSci 10000000000000003000 -> 1.000000000000000E+19   Rounded Inexact

+ddbas471  toEng 10000000000000003000 -> 10.00000000000000E+18   Rounded Inexact

+ddbas472  toSci 10000000000000005000 -> 1.000000000000001E+19   Rounded Inexact

+ddbas473  toEng 10000000000000005000 -> 10.00000000000001E+18   Rounded Inexact

+ddbas474  toSci 10000000000000009000 -> 1.000000000000001E+19   Rounded Inexact

+ddbas475  toEng 10000000000000009000 -> 10.00000000000001E+18   Rounded Inexact

+

+-- check rounding modes heeded

+rounding:  ceiling

+ddbsr401  toSci  1.1111111111123450    ->  1.111111111112345  Rounded

+ddbsr402  toSci  1.11111111111234549   ->  1.111111111112346  Rounded Inexact

+ddbsr403  toSci  1.11111111111234550   ->  1.111111111112346  Rounded Inexact

+ddbsr404  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact

+rounding:  up

+ddbsr405  toSci  1.1111111111123450    ->  1.111111111112345  Rounded

+ddbsr406  toSci  1.11111111111234549   ->  1.111111111112346  Rounded Inexact

+ddbsr407  toSci  1.11111111111234550   ->  1.111111111112346  Rounded Inexact

+ddbsr408  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact

+rounding:  floor

+ddbsr410  toSci  1.1111111111123450    ->  1.111111111112345  Rounded

+ddbsr411  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact

+ddbsr412  toSci  1.11111111111234550   ->  1.111111111112345  Rounded Inexact

+ddbsr413  toSci  1.11111111111234551   ->  1.111111111112345  Rounded Inexact

+rounding:  half_down

+ddbsr415  toSci  1.1111111111123450    ->  1.111111111112345  Rounded

+ddbsr416  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact

+ddbsr417  toSci  1.11111111111234550   ->  1.111111111112345  Rounded Inexact

+ddbsr418  toSci  1.11111111111234650   ->  1.111111111112346  Rounded Inexact

+ddbsr419  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact

+rounding:  half_even

+ddbsr421  toSci  1.1111111111123450    ->  1.111111111112345  Rounded

+ddbsr422  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact

+ddbsr423  toSci  1.11111111111234550   ->  1.111111111112346  Rounded Inexact

+ddbsr424  toSci  1.11111111111234650   ->  1.111111111112346  Rounded Inexact

+ddbsr425  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact

+rounding:  down

+ddbsr426  toSci  1.1111111111123450    ->  1.111111111112345  Rounded

+ddbsr427  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact

+ddbsr428  toSci  1.11111111111234550   ->  1.111111111112345  Rounded Inexact

+ddbsr429  toSci  1.11111111111234551   ->  1.111111111112345  Rounded Inexact

+rounding:  half_up

+ddbsr431  toSci  1.1111111111123450    ->  1.111111111112345  Rounded

+ddbsr432  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact

+ddbsr433  toSci  1.11111111111234550   ->  1.111111111112346  Rounded Inexact

+ddbsr434  toSci  1.11111111111234650   ->  1.111111111112347  Rounded Inexact

+ddbsr435  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact

+-- negatives

+rounding:  ceiling

+ddbsr501  toSci -1.1111111111123450    -> -1.111111111112345  Rounded

+ddbsr502  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact

+ddbsr503  toSci -1.11111111111234550   -> -1.111111111112345  Rounded Inexact

+ddbsr504  toSci -1.11111111111234551   -> -1.111111111112345  Rounded Inexact

+rounding:  up

+ddbsr505  toSci -1.1111111111123450    -> -1.111111111112345  Rounded

+ddbsr506  toSci -1.11111111111234549   -> -1.111111111112346  Rounded Inexact

+ddbsr507  toSci -1.11111111111234550   -> -1.111111111112346  Rounded Inexact

+ddbsr508  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact

+rounding:  floor

+ddbsr510  toSci -1.1111111111123450    -> -1.111111111112345  Rounded

+ddbsr511  toSci -1.11111111111234549   -> -1.111111111112346  Rounded Inexact

+ddbsr512  toSci -1.11111111111234550   -> -1.111111111112346  Rounded Inexact

+ddbsr513  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact

+rounding:  half_down

+ddbsr515  toSci -1.1111111111123450    -> -1.111111111112345  Rounded

+ddbsr516  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact

+ddbsr517  toSci -1.11111111111234550   -> -1.111111111112345  Rounded Inexact

+ddbsr518  toSci -1.11111111111234650   -> -1.111111111112346  Rounded Inexact

+ddbsr519  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact

+rounding:  half_even

+ddbsr521  toSci -1.1111111111123450    -> -1.111111111112345  Rounded

+ddbsr522  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact

+ddbsr523  toSci -1.11111111111234550   -> -1.111111111112346  Rounded Inexact

+ddbsr524  toSci -1.11111111111234650   -> -1.111111111112346  Rounded Inexact

+ddbsr525  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact

+rounding:  down

+ddbsr526  toSci -1.1111111111123450    -> -1.111111111112345  Rounded

+ddbsr527  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact

+ddbsr528  toSci -1.11111111111234550   -> -1.111111111112345  Rounded Inexact

+ddbsr529  toSci -1.11111111111234551   -> -1.111111111112345  Rounded Inexact

+rounding:  half_up

+ddbsr531  toSci -1.1111111111123450    -> -1.111111111112345  Rounded

+ddbsr532  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact

+ddbsr533  toSci -1.11111111111234550   -> -1.111111111112346  Rounded Inexact

+ddbsr534  toSci -1.11111111111234650   -> -1.111111111112347  Rounded Inexact

+ddbsr535  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact

+

+rounding:    half_even

+

+-- The 'baddies' tests from DiagBigDecimal, plus some new ones

+ddbas500 toSci '1..2'            -> NaN Conversion_syntax

+ddbas501 toSci '.'               -> NaN Conversion_syntax

+ddbas502 toSci '..'              -> NaN Conversion_syntax

+ddbas503 toSci '++1'             -> NaN Conversion_syntax

+ddbas504 toSci '--1'             -> NaN Conversion_syntax

+ddbas505 toSci '-+1'             -> NaN Conversion_syntax

+ddbas506 toSci '+-1'             -> NaN Conversion_syntax

+ddbas507 toSci '12e'             -> NaN Conversion_syntax

+ddbas508 toSci '12e++'           -> NaN Conversion_syntax

+ddbas509 toSci '12f4'            -> NaN Conversion_syntax

+ddbas510 toSci ' +1'             -> NaN Conversion_syntax

+ddbas511 toSci '+ 1'             -> NaN Conversion_syntax

+ddbas512 toSci '12 '             -> NaN Conversion_syntax

+ddbas513 toSci ' + 1'            -> NaN Conversion_syntax

+ddbas514 toSci ' - 1 '           -> NaN Conversion_syntax

+ddbas515 toSci 'x'               -> NaN Conversion_syntax

+ddbas516 toSci '-1-'             -> NaN Conversion_syntax

+ddbas517 toSci '12-'             -> NaN Conversion_syntax

+ddbas518 toSci '3+'              -> NaN Conversion_syntax

+ddbas519 toSci ''                -> NaN Conversion_syntax

+ddbas520 toSci '1e-'             -> NaN Conversion_syntax

+ddbas521 toSci '7e99999a'        -> NaN Conversion_syntax

+ddbas522 toSci '7e123567890x'    -> NaN Conversion_syntax

+ddbas523 toSci '7e12356789012x'  -> NaN Conversion_syntax

+ddbas524 toSci ''                -> NaN Conversion_syntax

+ddbas525 toSci 'e100'            -> NaN Conversion_syntax

+ddbas526 toSci '\u0e5a'          -> NaN Conversion_syntax

+ddbas527 toSci '\u0b65'          -> NaN Conversion_syntax

+ddbas528 toSci '123,65'          -> NaN Conversion_syntax

+ddbas529 toSci '1.34.5'          -> NaN Conversion_syntax

+ddbas530 toSci '.123.5'          -> NaN Conversion_syntax

+ddbas531 toSci '01.35.'          -> NaN Conversion_syntax

+ddbas532 toSci '01.35-'          -> NaN Conversion_syntax

+ddbas533 toSci '0000..'          -> NaN Conversion_syntax

+ddbas534 toSci '.0000.'          -> NaN Conversion_syntax

+ddbas535 toSci '00..00'          -> NaN Conversion_syntax

+ddbas536 toSci '111e*123'        -> NaN Conversion_syntax

+ddbas537 toSci '111e123-'        -> NaN Conversion_syntax

+ddbas538 toSci '111e+12+'        -> NaN Conversion_syntax

+ddbas539 toSci '111e1-3-'        -> NaN Conversion_syntax

+ddbas540 toSci '111e1*23'        -> NaN Conversion_syntax

+ddbas541 toSci '111e1e+3'        -> NaN Conversion_syntax

+ddbas542 toSci '1e1.0'           -> NaN Conversion_syntax

+ddbas543 toSci '1e123e'          -> NaN Conversion_syntax

+ddbas544 toSci 'ten'             -> NaN Conversion_syntax

+ddbas545 toSci 'ONE'             -> NaN Conversion_syntax

+ddbas546 toSci '1e.1'            -> NaN Conversion_syntax

+ddbas547 toSci '1e1.'            -> NaN Conversion_syntax

+ddbas548 toSci '1ee'             -> NaN Conversion_syntax

+ddbas549 toSci 'e+1'             -> NaN Conversion_syntax

+ddbas550 toSci '1.23.4'          -> NaN Conversion_syntax

+ddbas551 toSci '1.2.1'           -> NaN Conversion_syntax

+ddbas552 toSci '1E+1.2'          -> NaN Conversion_syntax

+ddbas553 toSci '1E+1.2.3'        -> NaN Conversion_syntax

+ddbas554 toSci '1E++1'           -> NaN Conversion_syntax

+ddbas555 toSci '1E--1'           -> NaN Conversion_syntax

+ddbas556 toSci '1E+-1'           -> NaN Conversion_syntax

+ddbas557 toSci '1E-+1'           -> NaN Conversion_syntax

+ddbas558 toSci '1E''1'           -> NaN Conversion_syntax

+ddbas559 toSci "1E""1"           -> NaN Conversion_syntax

+ddbas560 toSci "1E"""""          -> NaN Conversion_syntax

+-- Near-specials

+ddbas561 toSci "qNaN"            -> NaN Conversion_syntax

+ddbas562 toSci "NaNq"            -> NaN Conversion_syntax

+ddbas563 toSci "NaNs"            -> NaN Conversion_syntax

+ddbas564 toSci "Infi"            -> NaN Conversion_syntax

+ddbas565 toSci "Infin"           -> NaN Conversion_syntax

+ddbas566 toSci "Infini"          -> NaN Conversion_syntax

+ddbas567 toSci "Infinit"         -> NaN Conversion_syntax

+ddbas568 toSci "-Infinit"        -> NaN Conversion_syntax

+ddbas569 toSci "0Inf"            -> NaN Conversion_syntax

+ddbas570 toSci "9Inf"            -> NaN Conversion_syntax

+ddbas571 toSci "-0Inf"           -> NaN Conversion_syntax

+ddbas572 toSci "-9Inf"           -> NaN Conversion_syntax

+ddbas573 toSci "-sNa"            -> NaN Conversion_syntax

+ddbas574 toSci "xNaN"            -> NaN Conversion_syntax

+ddbas575 toSci "0sNaN"           -> NaN Conversion_syntax

+

+-- some baddies with dots and Es and dots and specials

+ddbas576 toSci  'e+1'            ->  NaN Conversion_syntax

+ddbas577 toSci  '.e+1'           ->  NaN Conversion_syntax

+ddbas578 toSci  '+.e+1'          ->  NaN Conversion_syntax

+ddbas579 toSci  '-.e+'           ->  NaN Conversion_syntax

+ddbas580 toSci  '-.e'            ->  NaN Conversion_syntax

+ddbas581 toSci  'E+1'            ->  NaN Conversion_syntax

+ddbas582 toSci  '.E+1'           ->  NaN Conversion_syntax

+ddbas583 toSci  '+.E+1'          ->  NaN Conversion_syntax

+ddbas584 toSci  '-.E+'           ->  NaN Conversion_syntax

+ddbas585 toSci  '-.E'            ->  NaN Conversion_syntax

+

+ddbas586 toSci  '.NaN'           ->  NaN Conversion_syntax

+ddbas587 toSci  '-.NaN'          ->  NaN Conversion_syntax

+ddbas588 toSci  '+.sNaN'         ->  NaN Conversion_syntax

+ddbas589 toSci  '+.Inf'          ->  NaN Conversion_syntax

+ddbas590 toSci  '.Infinity'      ->  NaN Conversion_syntax

+

+-- Zeros

+ddbas601 toSci 0.000000000       -> 0E-9

+ddbas602 toSci 0.00000000        -> 0E-8

+ddbas603 toSci 0.0000000         -> 0E-7

+ddbas604 toSci 0.000000          -> 0.000000

+ddbas605 toSci 0.00000           -> 0.00000

+ddbas606 toSci 0.0000            -> 0.0000

+ddbas607 toSci 0.000             -> 0.000

+ddbas608 toSci 0.00              -> 0.00

+ddbas609 toSci 0.0               -> 0.0

+ddbas610 toSci  .0               -> 0.0

+ddbas611 toSci 0.                -> 0

+ddbas612 toSci -.0               -> -0.0

+ddbas613 toSci -0.               -> -0

+ddbas614 toSci -0.0              -> -0.0

+ddbas615 toSci -0.00             -> -0.00

+ddbas616 toSci -0.000            -> -0.000

+ddbas617 toSci -0.0000           -> -0.0000

+ddbas618 toSci -0.00000          -> -0.00000

+ddbas619 toSci -0.000000         -> -0.000000

+ddbas620 toSci -0.0000000        -> -0E-7

+ddbas621 toSci -0.00000000       -> -0E-8

+ddbas622 toSci -0.000000000      -> -0E-9

+

+ddbas630 toSci  0.00E+0          -> 0.00

+ddbas631 toSci  0.00E+1          -> 0.0

+ddbas632 toSci  0.00E+2          -> 0

+ddbas633 toSci  0.00E+3          -> 0E+1

+ddbas634 toSci  0.00E+4          -> 0E+2

+ddbas635 toSci  0.00E+5          -> 0E+3

+ddbas636 toSci  0.00E+6          -> 0E+4

+ddbas637 toSci  0.00E+7          -> 0E+5

+ddbas638 toSci  0.00E+8          -> 0E+6

+ddbas639 toSci  0.00E+9          -> 0E+7

+

+ddbas640 toSci  0.0E+0           -> 0.0

+ddbas641 toSci  0.0E+1           -> 0

+ddbas642 toSci  0.0E+2           -> 0E+1

+ddbas643 toSci  0.0E+3           -> 0E+2

+ddbas644 toSci  0.0E+4           -> 0E+3

+ddbas645 toSci  0.0E+5           -> 0E+4

+ddbas646 toSci  0.0E+6           -> 0E+5

+ddbas647 toSci  0.0E+7           -> 0E+6

+ddbas648 toSci  0.0E+8           -> 0E+7

+ddbas649 toSci  0.0E+9           -> 0E+8

+

+ddbas650 toSci  0E+0             -> 0

+ddbas651 toSci  0E+1             -> 0E+1

+ddbas652 toSci  0E+2             -> 0E+2

+ddbas653 toSci  0E+3             -> 0E+3

+ddbas654 toSci  0E+4             -> 0E+4

+ddbas655 toSci  0E+5             -> 0E+5

+ddbas656 toSci  0E+6             -> 0E+6

+ddbas657 toSci  0E+7             -> 0E+7

+ddbas658 toSci  0E+8             -> 0E+8

+ddbas659 toSci  0E+9             -> 0E+9

+

+ddbas660 toSci  0.0E-0           -> 0.0

+ddbas661 toSci  0.0E-1           -> 0.00

+ddbas662 toSci  0.0E-2           -> 0.000

+ddbas663 toSci  0.0E-3           -> 0.0000

+ddbas664 toSci  0.0E-4           -> 0.00000

+ddbas665 toSci  0.0E-5           -> 0.000000

+ddbas666 toSci  0.0E-6           -> 0E-7

+ddbas667 toSci  0.0E-7           -> 0E-8

+ddbas668 toSci  0.0E-8           -> 0E-9

+ddbas669 toSci  0.0E-9           -> 0E-10

+

+ddbas670 toSci  0.00E-0          -> 0.00

+ddbas671 toSci  0.00E-1          -> 0.000

+ddbas672 toSci  0.00E-2          -> 0.0000

+ddbas673 toSci  0.00E-3          -> 0.00000

+ddbas674 toSci  0.00E-4          -> 0.000000

+ddbas675 toSci  0.00E-5          -> 0E-7

+ddbas676 toSci  0.00E-6          -> 0E-8

+ddbas677 toSci  0.00E-7          -> 0E-9

+ddbas678 toSci  0.00E-8          -> 0E-10

+ddbas679 toSci  0.00E-9          -> 0E-11

+

+ddbas680 toSci  000000.          ->  0

+ddbas681 toSci   00000.          ->  0

+ddbas682 toSci    0000.          ->  0

+ddbas683 toSci     000.          ->  0

+ddbas684 toSci      00.          ->  0

+ddbas685 toSci       0.          ->  0

+ddbas686 toSci  +00000.          ->  0

+ddbas687 toSci  -00000.          -> -0

+ddbas688 toSci  +0.              ->  0

+ddbas689 toSci  -0.              -> -0

+

+-- Specials

+ddbas700 toSci "NaN"             -> NaN

+ddbas701 toSci "nan"             -> NaN

+ddbas702 toSci "nAn"             -> NaN

+ddbas703 toSci "NAN"             -> NaN

+ddbas704 toSci "+NaN"            -> NaN

+ddbas705 toSci "+nan"            -> NaN

+ddbas706 toSci "+nAn"            -> NaN

+ddbas707 toSci "+NAN"            -> NaN

+ddbas708 toSci "-NaN"            -> -NaN

+ddbas709 toSci "-nan"            -> -NaN

+ddbas710 toSci "-nAn"            -> -NaN

+ddbas711 toSci "-NAN"            -> -NaN

+ddbas712 toSci 'NaN0'            -> NaN

+ddbas713 toSci 'NaN1'            -> NaN1

+ddbas714 toSci 'NaN12'           -> NaN12

+ddbas715 toSci 'NaN123'          -> NaN123

+ddbas716 toSci 'NaN1234'         -> NaN1234

+ddbas717 toSci 'NaN01'           -> NaN1

+ddbas718 toSci 'NaN012'          -> NaN12

+ddbas719 toSci 'NaN0123'         -> NaN123

+ddbas720 toSci 'NaN01234'        -> NaN1234

+ddbas721 toSci 'NaN001'          -> NaN1

+ddbas722 toSci 'NaN0012'         -> NaN12

+ddbas723 toSci 'NaN00123'        -> NaN123

+ddbas724 toSci 'NaN001234'       -> NaN1234

+ddbas725 toSci 'NaN1234567890123456' -> NaN Conversion_syntax

+ddbas726 toSci 'NaN123e+1'       -> NaN Conversion_syntax

+ddbas727 toSci 'NaN12.45'        -> NaN Conversion_syntax

+ddbas728 toSci 'NaN-12'          -> NaN Conversion_syntax

+ddbas729 toSci 'NaN+12'          -> NaN Conversion_syntax

+

+ddbas730 toSci "sNaN"            -> sNaN

+ddbas731 toSci "snan"            -> sNaN

+ddbas732 toSci "SnAn"            -> sNaN

+ddbas733 toSci "SNAN"            -> sNaN

+ddbas734 toSci "+sNaN"           -> sNaN

+ddbas735 toSci "+snan"           -> sNaN

+ddbas736 toSci "+SnAn"           -> sNaN

+ddbas737 toSci "+SNAN"           -> sNaN

+ddbas738 toSci "-sNaN"           -> -sNaN

+ddbas739 toSci "-snan"           -> -sNaN

+ddbas740 toSci "-SnAn"           -> -sNaN

+ddbas741 toSci "-SNAN"           -> -sNaN

+ddbas742 toSci 'sNaN0000'        -> sNaN

+ddbas743 toSci 'sNaN7'           -> sNaN7

+ddbas744 toSci 'sNaN007234'      -> sNaN7234

+ddbas745 toSci 'sNaN7234561234567890' -> NaN Conversion_syntax

+ddbas746 toSci 'sNaN72.45'       -> NaN Conversion_syntax

+ddbas747 toSci 'sNaN-72'         -> NaN Conversion_syntax

+

+ddbas748 toSci "Inf"             -> Infinity

+ddbas749 toSci "inf"             -> Infinity

+ddbas750 toSci "iNf"             -> Infinity

+ddbas751 toSci "INF"             -> Infinity

+ddbas752 toSci "+Inf"            -> Infinity

+ddbas753 toSci "+inf"            -> Infinity

+ddbas754 toSci "+iNf"            -> Infinity

+ddbas755 toSci "+INF"            -> Infinity

+ddbas756 toSci "-Inf"            -> -Infinity

+ddbas757 toSci "-inf"            -> -Infinity

+ddbas758 toSci "-iNf"            -> -Infinity

+ddbas759 toSci "-INF"            -> -Infinity

+

+ddbas760 toSci "Infinity"        -> Infinity

+ddbas761 toSci "infinity"        -> Infinity

+ddbas762 toSci "iNfInItY"        -> Infinity

+ddbas763 toSci "INFINITY"        -> Infinity

+ddbas764 toSci "+Infinity"       -> Infinity

+ddbas765 toSci "+infinity"       -> Infinity

+ddbas766 toSci "+iNfInItY"       -> Infinity

+ddbas767 toSci "+INFINITY"       -> Infinity

+ddbas768 toSci "-Infinity"       -> -Infinity

+ddbas769 toSci "-infinity"       -> -Infinity

+ddbas770 toSci "-iNfInItY"       -> -Infinity

+ddbas771 toSci "-INFINITY"       -> -Infinity

+

+-- Specials and zeros for toEng

+ddbast772 toEng "NaN"              -> NaN

+ddbast773 toEng "-Infinity"        -> -Infinity

+ddbast774 toEng "-sNaN"            -> -sNaN

+ddbast775 toEng "-NaN"             -> -NaN

+ddbast776 toEng "+Infinity"        -> Infinity

+ddbast778 toEng "+sNaN"            -> sNaN

+ddbast779 toEng "+NaN"             -> NaN

+ddbast780 toEng "INFINITY"         -> Infinity

+ddbast781 toEng "SNAN"             -> sNaN

+ddbast782 toEng "NAN"              -> NaN

+ddbast783 toEng "infinity"         -> Infinity

+ddbast784 toEng "snan"             -> sNaN

+ddbast785 toEng "nan"              -> NaN

+ddbast786 toEng "InFINITY"         -> Infinity

+ddbast787 toEng "SnAN"             -> sNaN

+ddbast788 toEng "nAN"              -> NaN

+ddbast789 toEng "iNfinity"         -> Infinity

+ddbast790 toEng "sNan"             -> sNaN

+ddbast791 toEng "Nan"              -> NaN

+ddbast792 toEng "Infinity"         -> Infinity

+ddbast793 toEng "sNaN"             -> sNaN

+

+-- Zero toEng, etc.

+ddbast800 toEng 0e+1              -> "0.00E+3"  -- doc example

+

+ddbast801 toEng 0.000000000       -> 0E-9

+ddbast802 toEng 0.00000000        -> 0.00E-6

+ddbast803 toEng 0.0000000         -> 0.0E-6

+ddbast804 toEng 0.000000          -> 0.000000

+ddbast805 toEng 0.00000           -> 0.00000

+ddbast806 toEng 0.0000            -> 0.0000

+ddbast807 toEng 0.000             -> 0.000

+ddbast808 toEng 0.00              -> 0.00

+ddbast809 toEng 0.0               -> 0.0

+ddbast810 toEng  .0               -> 0.0

+ddbast811 toEng 0.                -> 0

+ddbast812 toEng -.0               -> -0.0

+ddbast813 toEng -0.               -> -0

+ddbast814 toEng -0.0              -> -0.0

+ddbast815 toEng -0.00             -> -0.00

+ddbast816 toEng -0.000            -> -0.000

+ddbast817 toEng -0.0000           -> -0.0000

+ddbast818 toEng -0.00000          -> -0.00000

+ddbast819 toEng -0.000000         -> -0.000000

+ddbast820 toEng -0.0000000        -> -0.0E-6

+ddbast821 toEng -0.00000000       -> -0.00E-6

+ddbast822 toEng -0.000000000      -> -0E-9

+

+ddbast830 toEng  0.00E+0          -> 0.00

+ddbast831 toEng  0.00E+1          -> 0.0

+ddbast832 toEng  0.00E+2          -> 0

+ddbast833 toEng  0.00E+3          -> 0.00E+3

+ddbast834 toEng  0.00E+4          -> 0.0E+3

+ddbast835 toEng  0.00E+5          -> 0E+3

+ddbast836 toEng  0.00E+6          -> 0.00E+6

+ddbast837 toEng  0.00E+7          -> 0.0E+6

+ddbast838 toEng  0.00E+8          -> 0E+6

+ddbast839 toEng  0.00E+9          -> 0.00E+9

+

+ddbast840 toEng  0.0E+0           -> 0.0

+ddbast841 toEng  0.0E+1           -> 0

+ddbast842 toEng  0.0E+2           -> 0.00E+3

+ddbast843 toEng  0.0E+3           -> 0.0E+3

+ddbast844 toEng  0.0E+4           -> 0E+3

+ddbast845 toEng  0.0E+5           -> 0.00E+6

+ddbast846 toEng  0.0E+6           -> 0.0E+6

+ddbast847 toEng  0.0E+7           -> 0E+6

+ddbast848 toEng  0.0E+8           -> 0.00E+9

+ddbast849 toEng  0.0E+9           -> 0.0E+9

+

+ddbast850 toEng  0E+0             -> 0

+ddbast851 toEng  0E+1             -> 0.00E+3

+ddbast852 toEng  0E+2             -> 0.0E+3

+ddbast853 toEng  0E+3             -> 0E+3

+ddbast854 toEng  0E+4             -> 0.00E+6

+ddbast855 toEng  0E+5             -> 0.0E+6

+ddbast856 toEng  0E+6             -> 0E+6

+ddbast857 toEng  0E+7             -> 0.00E+9

+ddbast858 toEng  0E+8             -> 0.0E+9

+ddbast859 toEng  0E+9             -> 0E+9

+

+ddbast860 toEng  0.0E-0           -> 0.0

+ddbast861 toEng  0.0E-1           -> 0.00

+ddbast862 toEng  0.0E-2           -> 0.000

+ddbast863 toEng  0.0E-3           -> 0.0000

+ddbast864 toEng  0.0E-4           -> 0.00000

+ddbast865 toEng  0.0E-5           -> 0.000000

+ddbast866 toEng  0.0E-6           -> 0.0E-6

+ddbast867 toEng  0.0E-7           -> 0.00E-6

+ddbast868 toEng  0.0E-8           -> 0E-9

+ddbast869 toEng  0.0E-9           -> 0.0E-9

+

+ddbast870 toEng  0.00E-0          -> 0.00

+ddbast871 toEng  0.00E-1          -> 0.000

+ddbast872 toEng  0.00E-2          -> 0.0000

+ddbast873 toEng  0.00E-3          -> 0.00000

+ddbast874 toEng  0.00E-4          -> 0.000000

+ddbast875 toEng  0.00E-5          -> 0.0E-6

+ddbast876 toEng  0.00E-6          -> 0.00E-6

+ddbast877 toEng  0.00E-7          -> 0E-9

+ddbast878 toEng  0.00E-8          -> 0.0E-9

+ddbast879 toEng  0.00E-9          -> 0.00E-9

+

+-- long input strings

+ddbas801 tosci '01234567890123456' -> 1234567890123456

+ddbas802 tosci '001234567890123456' -> 1234567890123456

+ddbas803 tosci '0001234567890123456' -> 1234567890123456

+ddbas804 tosci '00001234567890123456' -> 1234567890123456

+ddbas805 tosci '000001234567890123456' -> 1234567890123456

+ddbas806 tosci '0000001234567890123456' -> 1234567890123456

+ddbas807 tosci '00000001234567890123456' -> 1234567890123456

+ddbas808 tosci '000000001234567890123456' -> 1234567890123456

+ddbas809 tosci '0000000001234567890123456' -> 1234567890123456

+ddbas810 tosci '00000000001234567890123456' -> 1234567890123456

+

+ddbas811 tosci '0.1234567890123456' -> 0.1234567890123456

+ddbas812 tosci '0.01234567890123456' -> 0.01234567890123456

+ddbas813 tosci '0.001234567890123456' -> 0.001234567890123456

+ddbas814 tosci '0.0001234567890123456' -> 0.0001234567890123456

+ddbas815 tosci '0.00001234567890123456' -> 0.00001234567890123456

+ddbas816 tosci '0.000001234567890123456' -> 0.000001234567890123456

+ddbas817 tosci '0.0000001234567890123456' -> 1.234567890123456E-7

+ddbas818 tosci '0.00000001234567890123456' -> 1.234567890123456E-8

+ddbas819 tosci '0.000000001234567890123456' -> 1.234567890123456E-9

+ddbas820 tosci '0.0000000001234567890123456' -> 1.234567890123456E-10

+

+ddbas821 tosci '12345678901234567890' -> 1.234567890123457E+19 Inexact Rounded

+ddbas822 tosci '123456789012345678901' -> 1.234567890123457E+20 Inexact Rounded

+ddbas823 tosci '1234567890123456789012' -> 1.234567890123457E+21 Inexact Rounded

+ddbas824 tosci '12345678901234567890123' -> 1.234567890123457E+22 Inexact Rounded

+ddbas825 tosci '123456789012345678901234' -> 1.234567890123457E+23 Inexact Rounded

+ddbas826 tosci '1234567890123456789012345' -> 1.234567890123457E+24 Inexact Rounded

+ddbas827 tosci '12345678901234567890123456' -> 1.234567890123457E+25 Inexact Rounded

+ddbas828 tosci '123456789012345678901234567' -> 1.234567890123457E+26 Inexact Rounded

+ddbas829 tosci '1234567890123456789012345678' -> 1.234567890123457E+27 Inexact Rounded

+

+-- subnormals and overflows

+ddbas906 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded

+ddbas907 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded

+ddbas908 toSci '0.9e-999999999'     -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas909 toSci '0.09e-999999999'    -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas910 toSci '0.1e1000000000'     -> Infinity Overflow  Inexact Rounded

+ddbas911 toSci '10e-1000000000'     -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas912 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded

+ddbas913 toSci '99e-9999999999'     -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas914 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded

+ddbas915 toSci '1111e-9999999999'   -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas916 toSci '1111e-99999999999'  -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas917 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded

+-- negatives the same

+ddbas918 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded

+ddbas919 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded

+ddbas920 toSci '-0.9e-999999999'    -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas921 toSci '-0.09e-999999999'   -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas922 toSci '-0.1e1000000000'    -> -Infinity Overflow  Inexact Rounded

+ddbas923 toSci '-10e-1000000000'    -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas924 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded

+ddbas925 toSci '-99e-9999999999'    -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas926 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded

+ddbas927 toSci '-1111e-9999999999'  -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas928 toSci '-1111e-99999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas929 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded

+

+-- overflow results at different rounding modes

+rounding:  ceiling

+ddbas930 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+ddbas931 toSci '-7e10000'  -> -9.999999999999999E+384 Overflow  Inexact Rounded

+rounding:  up

+ddbas932 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+ddbas933 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  down

+ddbas934 toSci  '7e10000'  ->  9.999999999999999E+384 Overflow  Inexact Rounded

+ddbas935 toSci '-7e10000'  -> -9.999999999999999E+384 Overflow  Inexact Rounded

+rounding:  floor

+ddbas936 toSci  '7e10000'  ->  9.999999999999999E+384 Overflow  Inexact Rounded

+ddbas937 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+

+rounding:  half_up

+ddbas938 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+ddbas939 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  half_even

+ddbas940 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+ddbas941 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  half_down

+ddbas942 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+ddbas943 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+

+rounding:  half_even

+

+-- Now check 854/754r some subnormals and underflow to 0

+ddbem400 toSci  1.0000E-383     -> 1.0000E-383

+ddbem401 toSci  0.1E-394        -> 1E-395       Subnormal

+ddbem402 toSci  0.1000E-394     -> 1.000E-395   Subnormal

+ddbem403 toSci  0.0100E-394     -> 1.00E-396    Subnormal

+ddbem404 toSci  0.0010E-394     -> 1.0E-397     Subnormal

+ddbem405 toSci  0.0001E-394     -> 1E-398       Subnormal

+ddbem406 toSci  0.00010E-394    -> 1E-398     Subnormal Rounded

+ddbem407 toSci  0.00013E-394    -> 1E-398     Underflow Subnormal Inexact Rounded

+ddbem408 toSci  0.00015E-394    -> 2E-398     Underflow Subnormal Inexact Rounded

+ddbem409 toSci  0.00017E-394    -> 2E-398     Underflow Subnormal Inexact Rounded

+ddbem410 toSci  0.00023E-394    -> 2E-398     Underflow Subnormal Inexact Rounded

+ddbem411 toSci  0.00025E-394    -> 2E-398     Underflow Subnormal Inexact Rounded

+ddbem412 toSci  0.00027E-394    -> 3E-398     Underflow Subnormal Inexact Rounded

+ddbem413 toSci  0.000149E-394   -> 1E-398     Underflow Subnormal Inexact Rounded

+ddbem414 toSci  0.000150E-394   -> 2E-398     Underflow Subnormal Inexact Rounded

+ddbem415 toSci  0.000151E-394   -> 2E-398     Underflow Subnormal Inexact Rounded

+ddbem416 toSci  0.000249E-394   -> 2E-398     Underflow Subnormal Inexact Rounded

+ddbem417 toSci  0.000250E-394   -> 2E-398     Underflow Subnormal Inexact Rounded

+ddbem418 toSci  0.000251E-394   -> 3E-398     Underflow Subnormal Inexact Rounded

+ddbem419 toSci  0.00009E-394    -> 1E-398     Underflow Subnormal Inexact Rounded

+ddbem420 toSci  0.00005E-394    -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddbem421 toSci  0.00003E-394    -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddbem422 toSci  0.000009E-394   -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddbem423 toSci  0.000005E-394   -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddbem424 toSci  0.000003E-394   -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+

+ddbem425 toSci  0.001049E-394   -> 1.0E-397   Underflow Subnormal Inexact Rounded

+ddbem426 toSci  0.001050E-394   -> 1.0E-397   Underflow Subnormal Inexact Rounded

+ddbem427 toSci  0.001051E-394   -> 1.1E-397   Underflow Subnormal Inexact Rounded

+ddbem428 toSci  0.001149E-394   -> 1.1E-397   Underflow Subnormal Inexact Rounded

+ddbem429 toSci  0.001150E-394   -> 1.2E-397   Underflow Subnormal Inexact Rounded

+ddbem430 toSci  0.001151E-394   -> 1.2E-397   Underflow Subnormal Inexact Rounded

+

+ddbem432 toSci  0.010049E-394   -> 1.00E-396  Underflow Subnormal Inexact Rounded

+ddbem433 toSci  0.010050E-394   -> 1.00E-396  Underflow Subnormal Inexact Rounded

+ddbem434 toSci  0.010051E-394   -> 1.01E-396  Underflow Subnormal Inexact Rounded

+ddbem435 toSci  0.010149E-394   -> 1.01E-396  Underflow Subnormal Inexact Rounded

+ddbem436 toSci  0.010150E-394   -> 1.02E-396  Underflow Subnormal Inexact Rounded

+ddbem437 toSci  0.010151E-394   -> 1.02E-396  Underflow Subnormal Inexact Rounded

+

+ddbem440 toSci  0.10103E-394    -> 1.010E-395 Underflow Subnormal Inexact Rounded

+ddbem441 toSci  0.10105E-394    -> 1.010E-395 Underflow Subnormal Inexact Rounded

+ddbem442 toSci  0.10107E-394    -> 1.011E-395 Underflow Subnormal Inexact Rounded

+ddbem443 toSci  0.10113E-394    -> 1.011E-395 Underflow Subnormal Inexact Rounded

+ddbem444 toSci  0.10115E-394    -> 1.012E-395 Underflow Subnormal Inexact Rounded

+ddbem445 toSci  0.10117E-394    -> 1.012E-395 Underflow Subnormal Inexact Rounded

+

+ddbem450 toSci  1.10730E-395   -> 1.107E-395 Underflow Subnormal Inexact Rounded

+ddbem451 toSci  1.10750E-395   -> 1.108E-395 Underflow Subnormal Inexact Rounded

+ddbem452 toSci  1.10770E-395   -> 1.108E-395 Underflow Subnormal Inexact Rounded

+ddbem453 toSci  1.10830E-395   -> 1.108E-395 Underflow Subnormal Inexact Rounded

+ddbem454 toSci  1.10850E-395   -> 1.108E-395 Underflow Subnormal Inexact Rounded

+ddbem455 toSci  1.10870E-395   -> 1.109E-395 Underflow Subnormal Inexact Rounded

+

+-- make sure sign OK

+ddbem456 toSci  -0.10103E-394   -> -1.010E-395 Underflow Subnormal Inexact Rounded

+ddbem457 toSci  -0.10105E-394   -> -1.010E-395 Underflow Subnormal Inexact Rounded

+ddbem458 toSci  -0.10107E-394   -> -1.011E-395 Underflow Subnormal Inexact Rounded

+ddbem459 toSci  -0.10113E-394   -> -1.011E-395 Underflow Subnormal Inexact Rounded

+ddbem460 toSci  -0.10115E-394   -> -1.012E-395 Underflow Subnormal Inexact Rounded

+ddbem461 toSci  -0.10117E-394   -> -1.012E-395 Underflow Subnormal Inexact Rounded

+

+-- '999s' cases

+ddbem464 toSci  999999E-395         -> 9.99999E-390 Subnormal

+ddbem465 toSci  99999.0E-394        -> 9.99990E-390 Subnormal

+ddbem466 toSci  99999.E-394         -> 9.9999E-390  Subnormal

+ddbem467 toSci  9999.9E-394         -> 9.9999E-391  Subnormal

+ddbem468 toSci  999.99E-394         -> 9.9999E-392  Subnormal

+ddbem469 toSci  99.999E-394         -> 9.9999E-393  Subnormal

+ddbem470 toSci  9.9999E-394         -> 9.9999E-394  Subnormal

+ddbem471 toSci  0.99999E-394        -> 1.0000E-394 Underflow Subnormal Inexact Rounded

+ddbem472 toSci  0.099999E-394       -> 1.000E-395 Underflow Subnormal Inexact Rounded

+ddbem473 toSci  0.0099999E-394      -> 1.00E-396  Underflow Subnormal Inexact Rounded

+ddbem474 toSci  0.00099999E-394     -> 1.0E-397   Underflow Subnormal Inexact Rounded

+ddbem475 toSci  0.000099999E-394    -> 1E-398     Underflow Subnormal Inexact Rounded

+ddbem476 toSci  0.0000099999E-394   -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddbem477 toSci  0.00000099999E-394  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddbem478 toSci  0.000000099999E-394 -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+

+-- Exponents with insignificant leading zeros

+ddbas1001 toSci  1e999999999 -> Infinity Overflow Inexact Rounded

+ddbas1002 toSci  1e0999999999 -> Infinity Overflow Inexact Rounded

+ddbas1003 toSci  1e00999999999 -> Infinity Overflow Inexact Rounded

+ddbas1004 toSci  1e000999999999 -> Infinity Overflow Inexact Rounded

+ddbas1005 toSci  1e000000000000999999999 -> Infinity Overflow Inexact Rounded

+ddbas1006 toSci  1e000000000001000000007 -> Infinity Overflow Inexact Rounded

+ddbas1007 toSci  1e-999999999 -> 0E-398             Underflow Subnormal Inexact Rounded Clamped

+ddbas1008 toSci  1e-0999999999 -> 0E-398            Underflow Subnormal Inexact Rounded Clamped

+ddbas1009 toSci  1e-00999999999 -> 0E-398           Underflow Subnormal Inexact Rounded Clamped

+ddbas1010 toSci  1e-000999999999 -> 0E-398          Underflow Subnormal Inexact Rounded Clamped

+ddbas1011 toSci  1e-000000000000999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddbas1012 toSci  1e-000000000001000000007 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+

+-- check for double-rounded subnormals

+ddbas1041 toSci     1.1111111111152444E-384 ->  1.11111111111524E-384 Inexact Rounded Subnormal Underflow

+ddbas1042 toSci     1.1111111111152445E-384 ->  1.11111111111524E-384 Inexact Rounded Subnormal Underflow

+ddbas1043 toSci     1.1111111111152446E-384 ->  1.11111111111524E-384 Inexact Rounded Subnormal Underflow

+

+-- clamped zeros [see also clamp.decTest]

+ddbas1075 toSci   0e+10000  ->  0E+369  Clamped

+ddbas1076 toSci   0e-10000  ->  0E-398  Clamped

+ddbas1077 toSci  -0e+10000  -> -0E+369  Clamped

+ddbas1078 toSci  -0e-10000  -> -0E-398  Clamped

+

+-- extreme values from next-wider

+ddbas1101 toSci -9.99999999999999999999999999999999E+6144 -> -Infinity Overflow Inexact Rounded

+ddbas1102 toSci -1E-6143 -> -0E-398 Inexact Rounded Subnormal Underflow Clamped

+ddbas1103 toSci -1E-6176 -> -0E-398 Inexact Rounded Subnormal Underflow Clamped

+ddbas1104 toSci -0 -> -0

+ddbas1105 toSci +0 ->  0

+ddbas1106 toSci +1E-6176 ->  0E-398 Inexact Rounded Subnormal Underflow Clamped

+ddbas1107 toSci +1E-6173 ->  0E-398 Inexact Rounded Subnormal Underflow Clamped

+ddbas1108 toSci +9.99999999999999999999999999999999E+6144 ->  Infinity Overflow Inexact Rounded

+

diff --git a/Lib/test/decimaltestdata/ddCanonical.decTest b/Lib/test/decimaltestdata/ddCanonical.decTest
new file mode 100644
index 0000000..4d659b0
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCanonical.decTest
@@ -0,0 +1,357 @@
+------------------------------------------------------------------------

+-- ddCanonical.decTest -- test decDouble canonical results            --

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

+

+-- This file tests that copy operations leave uncanonical operands

+-- unchanged, and vice versa

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Uncanonical declets are: abc, where:

+--   a=1,2,3

+--   b=6,7,e,f

+--   c=e,f

+

+-- assert some standard (canonical) values; this tests that FromString

+-- produces canonical results (many more in decimalNN)

+ddcan001 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff

+ddcan002 apply 0                      -> #2238000000000000

+ddcan003 apply 1                      -> #2238000000000001

+ddcan004 apply -1                     -> #a238000000000001

+ddcan005 apply Infinity               -> #7800000000000000

+ddcan006 apply -Infinity              -> #f800000000000000

+ddcan007 apply -NaN                   -> #fc00000000000000

+ddcan008 apply -sNaN                  -> #fe00000000000000

+ddcan009 apply NaN999999999999999     -> #7c00ff3fcff3fcff

+ddcan010 apply sNaN999999999999999    -> #7e00ff3fcff3fcff

+decan011 apply  9999999999999999      -> #6e38ff3fcff3fcff

+ddcan012 apply 7.50                   -> #22300000000003d0

+ddcan013 apply 9.99                   -> #22300000000000ff

+

+-- Base tests for canonical encodings (individual operator

+-- propagation is tested later)

+

+-- Finites: declets in coefficient

+ddcan021 canonical  #77fcff3fcff3fcff  -> #77fcff3fcff3fcff

+ddcan022 canonical  #77fcff3fcff3fcff  -> #77fcff3fcff3fcff

+ddcan023 canonical  #77ffff3fcff3fcff  -> #77fcff3fcff3fcff

+ddcan024 canonical  #77ffff3fcff3fcff  -> #77fcff3fcff3fcff

+ddcan025 canonical  #77fcffffcff3fcff  -> #77fcff3fcff3fcff

+ddcan026 canonical  #77fcffffcff3fcff  -> #77fcff3fcff3fcff

+ddcan027 canonical  #77fcff3ffff3fcff  -> #77fcff3fcff3fcff

+ddcan028 canonical  #77fcff3ffff3fcff  -> #77fcff3fcff3fcff

+ddcan030 canonical  #77fcff3fcffffcff  -> #77fcff3fcff3fcff

+ddcan031 canonical  #77fcff3fcffffcff  -> #77fcff3fcff3fcff

+ddcan032 canonical  #77fcff3fcff3ffff  -> #77fcff3fcff3fcff

+ddcan033 canonical  #77fcff3fcff3ffff  -> #77fcff3fcff3fcff

+ddcan035 canonical  #77fcff3fdff3fcff  -> #77fcff3fcff3fcff

+ddcan036 canonical  #77fcff3feff3fcff  -> #77fcff3fcff3fcff

+

+-- NaN: declets in payload

+ddcan100 canonical  NaN999999999999999 -> #7c00ff3fcff3fcff

+ddcan101 canonical  #7c00ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan102 canonical  #7c03ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan103 canonical  #7c00ffffcff3fcff  -> #7c00ff3fcff3fcff

+ddcan104 canonical  #7c00ff3ffff3fcff  -> #7c00ff3fcff3fcff

+ddcan105 canonical  #7c00ff3fcffffcff  -> #7c00ff3fcff3fcff

+ddcan106 canonical  #7c00ff3fcff3ffff  -> #7c00ff3fcff3fcff

+ddcan107 canonical  #7c00ff3fcff3ffff  -> #7c00ff3fcff3fcff

+-- NaN: exponent continuation bits [excluding sNaN selector]

+ddcan110 canonical  #7c00ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan112 canonical  #7d00ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan113 canonical  #7c80ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan114 canonical  #7c40ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan115 canonical  #7c20ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan116 canonical  #7c10ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan117 canonical  #7c08ff3fcff3fcff  -> #7c00ff3fcff3fcff

+ddcan118 canonical  #7c04ff3fcff3fcff  -> #7c00ff3fcff3fcff

+

+-- sNaN: declets in payload

+ddcan120 canonical sNaN999999999999999 -> #7e00ff3fcff3fcff

+ddcan121 canonical  #7e00ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan122 canonical  #7e03ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan123 canonical  #7e00ffffcff3fcff  -> #7e00ff3fcff3fcff

+ddcan124 canonical  #7e00ff3ffff3fcff  -> #7e00ff3fcff3fcff

+ddcan125 canonical  #7e00ff3fcffffcff  -> #7e00ff3fcff3fcff

+ddcan126 canonical  #7e00ff3fcff3ffff  -> #7e00ff3fcff3fcff

+ddcan127 canonical  #7e00ff3fcff3ffff  -> #7e00ff3fcff3fcff

+-- sNaN: exponent continuation bits [excluding sNaN selector]

+ddcan130 canonical  #7e00ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan132 canonical  #7f00ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan133 canonical  #7e80ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan134 canonical  #7e40ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan135 canonical  #7e20ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan136 canonical  #7e10ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan137 canonical  #7e08ff3fcff3fcff  -> #7e00ff3fcff3fcff

+ddcan138 canonical  #7e04ff3fcff3fcff  -> #7e00ff3fcff3fcff

+

+-- Inf: exponent continuation bits

+ddcan140 canonical  #7800000000000000  -> #7800000000000000

+ddcan141 canonical  #7900000000000000  -> #7800000000000000

+ddcan142 canonical  #7a00000000000000  -> #7800000000000000

+ddcan143 canonical  #7880000000000000  -> #7800000000000000

+ddcan144 canonical  #7840000000000000  -> #7800000000000000

+ddcan145 canonical  #7820000000000000  -> #7800000000000000

+ddcan146 canonical  #7810000000000000  -> #7800000000000000

+ddcan147 canonical  #7808000000000000  -> #7800000000000000

+ddcan148 canonical  #7804000000000000  -> #7800000000000000

+

+-- Inf: coefficient continuation bits (first, last, and a few others)

+ddcan150 canonical  #7800000000000000  -> #7800000000000000

+ddcan151 canonical  #7802000000000000  -> #7800000000000000

+ddcan152 canonical  #7800000000000001  -> #7800000000000000

+ddcan153 canonical  #7801000000000000  -> #7800000000000000

+ddcan154 canonical  #7800200000000000  -> #7800000000000000

+ddcan155 canonical  #7800080000000000  -> #7800000000000000

+ddcan156 canonical  #7800002000000000  -> #7800000000000000

+ddcan157 canonical  #7800000400000000  -> #7800000000000000

+ddcan158 canonical  #7800000040000000  -> #7800000000000000

+ddcan159 canonical  #7800000008000000  -> #7800000000000000

+ddcan160 canonical  #7800000000400000  -> #7800000000000000

+ddcan161 canonical  #7800000000020000  -> #7800000000000000

+ddcan162 canonical  #7800000000008000  -> #7800000000000000

+ddcan163 canonical  #7800000000000200  -> #7800000000000000

+ddcan164 canonical  #7800000000000040  -> #7800000000000000

+ddcan165 canonical  #7800000000000008  -> #7800000000000000

+

+

+-- Now the operators -- trying to check paths that might fail to

+-- canonicalize propagated operands

+

+----- Add:

+-- Finites: neutral 0

+ddcan202 add  0E+384 #77ffff3fcff3fcff        -> #77fcff3fcff3fcff

+ddcan203 add         #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff

+-- tiny zero

+ddcan204 add  0E-398 #77ffff3fcff3fcff        -> #77fcff3fcff3fcff Rounded

+ddcan205 add         #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded

+-- tiny non zero

+ddcan206 add -1E-398 #77ffff3fcff3fcff         -> #77fcff3fcff3fcff Inexact Rounded

+ddcan207 add         #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded

+-- NaN: declets in payload

+ddcan211 add  0  #7c03ff3fcff3fcff      -> #7c00ff3fcff3fcff

+ddcan212 add     #7c03ff3fcff3fcff  0   -> #7c00ff3fcff3fcff

+-- NaN: exponent continuation bits [excluding sNaN selector]

+ddcan213 add  0  #7c40ff3fcff3fcff      -> #7c00ff3fcff3fcff

+ddcan214 add     #7c40ff3fcff3fcff  0   -> #7c00ff3fcff3fcff

+-- sNaN: declets in payload

+ddcan215 add  0  #7e00ffffcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation

+ddcan216 add     #7e00ffffcff3fcff  0   -> #7c00ff3fcff3fcff Invalid_operation

+-- sNaN: exponent continuation bits [excluding sNaN selector]

+ddcan217 add  0  #7e80ff3fcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation

+ddcan218 add     #7e80ff3fcff3fcff  0   -> #7c00ff3fcff3fcff Invalid_operation

+-- Inf: exponent continuation bits

+ddcan220 add  0  #7880000000000000      -> #7800000000000000

+ddcan221 add     #7880000000000000  0   -> #7800000000000000

+-- Inf: coefficient continuation bits

+ddcan222 add  0  #7802000000000000     -> #7800000000000000

+ddcan223 add     #7802000000000000  0  -> #7800000000000000

+ddcan224 add  0  #7800000000000001     -> #7800000000000000

+ddcan225 add     #7800000000000001  0  -> #7800000000000000

+ddcan226 add  0  #7800002000000000     -> #7800000000000000

+ddcan227 add     #7800002000000000  0  -> #7800000000000000

+

+----- Class: [does not return encoded]

+

+----- Compare:

+ddcan231 compare -Inf   1     ->  #a238000000000001

+ddcan232 compare -Inf  -Inf   ->  #2238000000000000

+ddcan233 compare  1    -Inf   ->  #2238000000000001

+ddcan234 compare  #7c00ff3ffff3fcff -1000  ->  #7c00ff3fcff3fcff

+ddcan235 compare  #7e00ff3ffff3fcff -1000  ->  #7c00ff3fcff3fcff  Invalid_operation

+

+----- CompareSig:

+ddcan241 comparesig -Inf   1     ->  #a238000000000001

+ddcan242 comparesig -Inf  -Inf   ->  #2238000000000000

+ddcan243 comparesig  1    -Inf   ->  #2238000000000001

+ddcan244 comparesig  #7c00ff3ffff3fcff -1000  ->  #7c00ff3fcff3fcff  Invalid_operation

+ddcan245 comparesig  #7e00ff3ffff3fcff -1000  ->  #7c00ff3fcff3fcff  Invalid_operation

+

+----- Copy: [does not usually canonicalize]

+-- finites

+ddcan250 copy  #77ffff3fcff3fcff  -> #77ffff3fcff3fcff

+ddcan251 copy  #77fcff3fdff3fcff  -> #77fcff3fdff3fcff

+-- NaNs

+ddcan252 copy  #7c03ff3fcff3fcff  -> #7c03ff3fcff3fcff

+ddcan253 copy  #7c00ff3fcff3ffff  -> #7c00ff3fcff3ffff

+ddcan254 copy  #7d00ff3fcff3fcff  -> #7d00ff3fcff3fcff

+ddcan255 copy  #7c04ff3fcff3fcff  -> #7c04ff3fcff3fcff

+-- sNaN

+ddcan256 copy  #7e00ff3fcffffcff  -> #7e00ff3fcffffcff

+ddcan257 copy  #7e40ff3fcff3fcff  -> #7e40ff3fcff3fcff

+-- Inf

+ddcan258 copy  #7a00000000000000  -> #7a00000000000000

+ddcan259 copy  #7800200000000000  -> #7800200000000000

+

+----- CopyAbs: [does not usually canonicalize]

+-- finites

+ddcan260 copyabs  #f7ffff3fcff3fcff  -> #77ffff3fcff3fcff

+ddcan261 copyabs  #f7fcff3fdff3fcff  -> #77fcff3fdff3fcff

+-- NaNs

+ddcan262 copyabs  #fc03ff3fcff3fcff  -> #7c03ff3fcff3fcff

+ddcan263 copyabs  #fc00ff3fcff3ffff  -> #7c00ff3fcff3ffff

+ddcan264 copyabs  #fd00ff3fcff3fcff  -> #7d00ff3fcff3fcff

+ddcan265 copyabs  #fc04ff3fcff3fcff  -> #7c04ff3fcff3fcff

+-- sNaN

+ddcan266 copyabs  #fe00ff3fcffffcff  -> #7e00ff3fcffffcff

+ddcan267 copyabs  #fe40ff3fcff3fcff  -> #7e40ff3fcff3fcff

+-- Inf

+ddcan268 copyabs  #fa00000000000000  -> #7a00000000000000

+ddcan269 copyabs  #f800200000000000  -> #7800200000000000

+

+----- CopyNegate: [does not usually canonicalize]

+-- finites

+ddcan270 copynegate  #77ffff3fcff3fcff  -> #f7ffff3fcff3fcff

+ddcan271 copynegate  #77fcff3fdff3fcff  -> #f7fcff3fdff3fcff

+-- NaNs

+ddcan272 copynegate  #7c03ff3fcff3fcff  -> #fc03ff3fcff3fcff

+ddcan273 copynegate  #7c00ff3fcff3ffff  -> #fc00ff3fcff3ffff

+ddcan274 copynegate  #7d00ff3fcff3fcff  -> #fd00ff3fcff3fcff

+ddcan275 copynegate  #7c04ff3fcff3fcff  -> #fc04ff3fcff3fcff

+-- sNaN

+ddcan276 copynegate  #7e00ff3fcffffcff  -> #fe00ff3fcffffcff

+ddcan277 copynegate  #7e40ff3fcff3fcff  -> #fe40ff3fcff3fcff

+-- Inf

+ddcan278 copynegate  #7a00000000000000  -> #fa00000000000000

+ddcan279 copynegate  #7800200000000000  -> #f800200000000000

+

+----- CopySign: [does not usually canonicalize]

+-- finites

+ddcan280 copysign  #77ffff3fcff3fcff -1 -> #f7ffff3fcff3fcff

+ddcan281 copysign  #77fcff3fdff3fcff  1 -> #77fcff3fdff3fcff

+-- NaNs

+ddcan282 copysign  #7c03ff3fcff3fcff -1 -> #fc03ff3fcff3fcff

+ddcan283 copysign  #7c00ff3fcff3ffff  1 -> #7c00ff3fcff3ffff

+ddcan284 copysign  #7d00ff3fcff3fcff -1 -> #fd00ff3fcff3fcff

+ddcan285 copysign  #7c04ff3fcff3fcff  1 -> #7c04ff3fcff3fcff

+-- sNaN

+ddcan286 copysign  #7e00ff3fcffffcff -1 -> #fe00ff3fcffffcff

+ddcan287 copysign  #7e40ff3fcff3fcff  1 -> #7e40ff3fcff3fcff

+-- Inf

+ddcan288 copysign  #7a00000000000000 -1 -> #fa00000000000000

+ddcan289 copysign  #7800200000000000  1 -> #7800200000000000

+

+----- Multiply:

+-- Finites: neutral 0

+ddcan302 multiply  1      #77ffff3fcff3fcff        -> #77fcff3fcff3fcff

+ddcan303 multiply         #77fcffffcff3fcff  1     -> #77fcff3fcff3fcff

+-- negative

+ddcan306 multiply -1      #77ffff3fcff3fcff        -> #f7fcff3fcff3fcff

+ddcan307 multiply         #77fcffffcff3fcff -1     -> #f7fcff3fcff3fcff

+-- NaN: declets in payload

+ddcan311 multiply  1  #7c03ff3fcff3fcff      -> #7c00ff3fcff3fcff

+ddcan312 multiply     #7c03ff3fcff3fcff  1   -> #7c00ff3fcff3fcff

+-- NaN: exponent continuation bits [excluding sNaN selector]

+ddcan313 multiply  1  #7c40ff3fcff3fcff      -> #7c00ff3fcff3fcff

+ddcan314 multiply     #7c40ff3fcff3fcff  1   -> #7c00ff3fcff3fcff

+-- sNaN: declets in payload

+ddcan315 multiply  1  #7e00ffffcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation

+ddcan316 multiply     #7e00ffffcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation

+-- sNaN: exponent continuation bits [excluding sNaN selector]

+ddcan317 multiply  1  #7e80ff3fcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation

+ddcan318 multiply     #7e80ff3fcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation

+-- Inf: exponent continuation bits

+ddcan320 multiply  1  #7880000000000000      -> #7800000000000000

+ddcan321 multiply     #7880000000000000  1   -> #7800000000000000

+-- Inf: coefficient continuation bits

+ddcan322 multiply  1  #7802000000000000     -> #7800000000000000

+ddcan323 multiply     #7802000000000000  1  -> #7800000000000000

+ddcan324 multiply  1  #7800000000000001     -> #7800000000000000

+ddcan325 multiply     #7800000000000001  1  -> #7800000000000000

+ddcan326 multiply  1  #7800002000000000     -> #7800000000000000

+ddcan327 multiply     #7800002000000000  1  -> #7800000000000000

+

+----- Quantize:

+ddcan401 quantize  #6e38ff3ffff3fcff 1    -> #6e38ff3fcff3fcff

+ddcan402 quantize  #6e38ff3fcff3fdff 0    -> #6e38ff3fcff3fcff

+ddcan403 quantize  #7880000000000000 Inf  -> #7800000000000000

+ddcan404 quantize  #7802000000000000 -Inf -> #7800000000000000

+ddcan410 quantize  #7c03ff3fcff3fcff  1   -> #7c00ff3fcff3fcff

+ddcan411 quantize  #7c03ff3fcff3fcff  1   -> #7c00ff3fcff3fcff

+ddcan412 quantize  #7c40ff3fcff3fcff  1   -> #7c00ff3fcff3fcff

+ddcan413 quantize  #7c40ff3fcff3fcff  1   -> #7c00ff3fcff3fcff

+ddcan414 quantize  #7e00ffffcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation

+ddcan415 quantize  #7e00ffffcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation

+ddcan416 quantize  #7e80ff3fcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation

+ddcan417 quantize  #7e80ff3fcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation

+

+----- Subtract:

+-- Finites: neutral 0

+ddcan502 subtract  0E+384 #77ffff3fcff3fcff        -> #f7fcff3fcff3fcff

+ddcan503 subtract         #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff

+-- tiny zero

+ddcan504 subtract  0E-398 #77ffff3fcff3fcff        -> #f7fcff3fcff3fcff Rounded

+ddcan505 subtract         #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded

+-- tiny non zero

+ddcan506 subtract -1E-398 #77ffff3fcff3fcff         -> #f7fcff3fcff3fcff Inexact Rounded

+ddcan507 subtract         #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded

+-- NaN: declets in payload

+ddcan511 subtract  0  #7c03ff3fcff3fcff      -> #7c00ff3fcff3fcff

+ddcan512 subtract     #7c03ff3fcff3fcff  0   -> #7c00ff3fcff3fcff

+-- NaN: exponent continuation bits [excluding sNaN selector]

+ddcan513 subtract  0  #7c40ff3fcff3fcff      -> #7c00ff3fcff3fcff

+ddcan514 subtract     #7c40ff3fcff3fcff  0   -> #7c00ff3fcff3fcff

+-- sNaN: declets in payload

+ddcan515 subtract  0  #7e00ffffcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation

+ddcan516 subtract     #7e00ffffcff3fcff  0   -> #7c00ff3fcff3fcff Invalid_operation

+-- sNaN: exponent continuation bits [excluding sNaN selector]

+ddcan517 subtract  0  #7e80ff3fcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation

+ddcan518 subtract     #7e80ff3fcff3fcff  0   -> #7c00ff3fcff3fcff Invalid_operation

+-- Inf: exponent continuation bits

+ddcan520 subtract  0  #7880000000000000      -> #f800000000000000

+ddcan521 subtract     #7880000000000000  0   -> #7800000000000000

+-- Inf: coefficient continuation bits

+ddcan522 subtract  0  #7802000000000000     -> #f800000000000000

+ddcan523 subtract     #7802000000000000  0  -> #7800000000000000

+ddcan524 subtract  0  #7800000000000001     -> #f800000000000000

+ddcan525 subtract     #7800000000000001  0  -> #7800000000000000

+ddcan526 subtract  0  #7800002000000000     -> #f800000000000000

+ddcan527 subtract     #7800002000000000  0  -> #7800000000000000

+

+----- ToIntegral:

+ddcan601 tointegralx  #6e38ff3ffff3fcff -> #6e38ff3fcff3fcff

+ddcan602 tointegralx  #6e38ff3fcff3fdff -> #6e38ff3fcff3fcff

+ddcan603 tointegralx  #7880000000000000 -> #7800000000000000

+ddcan604 tointegralx  #7802000000000000 -> #7800000000000000

+ddcan610 tointegralx  #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff

+ddcan611 tointegralx  #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff

+ddcan612 tointegralx  #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff

+ddcan613 tointegralx  #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff

+ddcan614 tointegralx  #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation

+ddcan615 tointegralx  #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation

+ddcan616 tointegralx  #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation

+ddcan617 tointegralx  #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation

+-- uncanonical 3999, 39.99, 3.99, 0.399, and negatives

+ddcan618 tointegralx  #2238000000000fff -> #2238000000000cff

+ddcan619 tointegralx  #2230000000000fff -> #2238000000000040 Inexact Rounded

+ddcan620 tointegralx  #222c000000000fff -> #2238000000000004 Inexact Rounded

+ddcan621 tointegralx  #2228000000000fff -> #2238000000000000 Inexact Rounded

+ddcan622 tointegralx  #a238000000000fff -> #a238000000000cff

+ddcan623 tointegralx  #a230000000000fff -> #a238000000000040 Inexact Rounded

+ddcan624 tointegralx  #a22c000000000fff -> #a238000000000004 Inexact Rounded

+ddcan625 tointegralx  #a228000000000fff -> #a238000000000000 Inexact Rounded

+

+

+

diff --git a/Lib/test/decimaltestdata/ddClass.decTest b/Lib/test/decimaltestdata/ddClass.decTest
new file mode 100644
index 0000000..8a38f4a
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddClass.decTest
@@ -0,0 +1,76 @@
+------------------------------------------------------------------------

+-- ddClass.decTest -- decDouble Class operations                      --

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

+

+-- [New 2006.11.27]

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+ddcla001  class    0                        -> +Zero

+ddcla002  class    0.00                     -> +Zero

+ddcla003  class    0E+5                     -> +Zero

+ddcla004  class    1E-396                   -> +Subnormal

+ddcla005  class  0.1E-383                   -> +Subnormal

+ddcla006  class  0.999999999999999E-383     -> +Subnormal

+ddcla007  class  1.000000000000000E-383     -> +Normal

+ddcla008  class   1E-383                    -> +Normal

+ddcla009  class   1E-100                    -> +Normal

+ddcla010  class   1E-10                     -> +Normal

+ddcla012  class   1E-1                      -> +Normal

+ddcla013  class   1                         -> +Normal

+ddcla014  class   2.50                      -> +Normal

+ddcla015  class   100.100                   -> +Normal

+ddcla016  class   1E+30                     -> +Normal

+ddcla017  class   1E+384                    -> +Normal

+ddcla018  class   9.999999999999999E+384    -> +Normal

+ddcla019  class   Inf                       -> +Infinity

+

+ddcla021  class   -0                        -> -Zero

+ddcla022  class   -0.00                     -> -Zero

+ddcla023  class   -0E+5                     -> -Zero

+ddcla024  class   -1E-396                   -> -Subnormal

+ddcla025  class  -0.1E-383                  -> -Subnormal

+ddcla026  class  -0.999999999999999E-383    -> -Subnormal

+ddcla027  class  -1.000000000000000E-383    -> -Normal

+ddcla028  class  -1E-383                    -> -Normal

+ddcla029  class  -1E-100                    -> -Normal

+ddcla030  class  -1E-10                     -> -Normal

+ddcla032  class  -1E-1                      -> -Normal

+ddcla033  class  -1                         -> -Normal

+ddcla034  class  -2.50                      -> -Normal

+ddcla035  class  -100.100                   -> -Normal

+ddcla036  class  -1E+30                     -> -Normal

+ddcla037  class  -1E+384                    -> -Normal

+ddcla038  class  -9.999999999999999E+384    -> -Normal

+ddcla039  class  -Inf                       -> -Infinity

+

+ddcla041  class   NaN                       -> NaN

+ddcla042  class  -NaN                       -> NaN

+ddcla043  class  +NaN12345                  -> NaN

+ddcla044  class   sNaN                      -> sNaN

+ddcla045  class  -sNaN                      -> sNaN

+ddcla046  class  +sNaN12345                 -> sNaN

+

+

+

diff --git a/Lib/test/decimaltestdata/ddCompare.decTest b/Lib/test/decimaltestdata/ddCompare.decTest
new file mode 100644
index 0000000..5f6fba5
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCompare.decTest
@@ -0,0 +1,744 @@
+------------------------------------------------------------------------

+-- ddCompare.decTest -- decDouble comparison that allows quiet NaNs   --

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddcom001 compare  -2  -2  -> 0

+ddcom002 compare  -2  -1  -> -1

+ddcom003 compare  -2   0  -> -1

+ddcom004 compare  -2   1  -> -1

+ddcom005 compare  -2   2  -> -1

+ddcom006 compare  -1  -2  -> 1

+ddcom007 compare  -1  -1  -> 0

+ddcom008 compare  -1   0  -> -1

+ddcom009 compare  -1   1  -> -1

+ddcom010 compare  -1   2  -> -1

+ddcom011 compare   0  -2  -> 1

+ddcom012 compare   0  -1  -> 1

+ddcom013 compare   0   0  -> 0

+ddcom014 compare   0   1  -> -1

+ddcom015 compare   0   2  -> -1

+ddcom016 compare   1  -2  -> 1

+ddcom017 compare   1  -1  -> 1

+ddcom018 compare   1   0  -> 1

+ddcom019 compare   1   1  -> 0

+ddcom020 compare   1   2  -> -1

+ddcom021 compare   2  -2  -> 1

+ddcom022 compare   2  -1  -> 1

+ddcom023 compare   2   0  -> 1

+ddcom025 compare   2   1  -> 1

+ddcom026 compare   2   2  -> 0

+

+ddcom031 compare  -20  -20  -> 0

+ddcom032 compare  -20  -10  -> -1

+ddcom033 compare  -20   00  -> -1

+ddcom034 compare  -20   10  -> -1

+ddcom035 compare  -20   20  -> -1

+ddcom036 compare  -10  -20  -> 1

+ddcom037 compare  -10  -10  -> 0

+ddcom038 compare  -10   00  -> -1

+ddcom039 compare  -10   10  -> -1

+ddcom040 compare  -10   20  -> -1

+ddcom041 compare   00  -20  -> 1

+ddcom042 compare   00  -10  -> 1

+ddcom043 compare   00   00  -> 0

+ddcom044 compare   00   10  -> -1

+ddcom045 compare   00   20  -> -1

+ddcom046 compare   10  -20  -> 1

+ddcom047 compare   10  -10  -> 1

+ddcom048 compare   10   00  -> 1

+ddcom049 compare   10   10  -> 0

+ddcom050 compare   10   20  -> -1

+ddcom051 compare   20  -20  -> 1

+ddcom052 compare   20  -10  -> 1

+ddcom053 compare   20   00  -> 1

+ddcom055 compare   20   10  -> 1

+ddcom056 compare   20   20  -> 0

+

+ddcom061 compare  -2.0  -2.0  -> 0

+ddcom062 compare  -2.0  -1.0  -> -1

+ddcom063 compare  -2.0   0.0  -> -1

+ddcom064 compare  -2.0   1.0  -> -1

+ddcom065 compare  -2.0   2.0  -> -1

+ddcom066 compare  -1.0  -2.0  -> 1

+ddcom067 compare  -1.0  -1.0  -> 0

+ddcom068 compare  -1.0   0.0  -> -1

+ddcom069 compare  -1.0   1.0  -> -1

+ddcom070 compare  -1.0   2.0  -> -1

+ddcom071 compare   0.0  -2.0  -> 1

+ddcom072 compare   0.0  -1.0  -> 1

+ddcom073 compare   0.0   0.0  -> 0

+ddcom074 compare   0.0   1.0  -> -1

+ddcom075 compare   0.0   2.0  -> -1

+ddcom076 compare   1.0  -2.0  -> 1

+ddcom077 compare   1.0  -1.0  -> 1

+ddcom078 compare   1.0   0.0  -> 1

+ddcom079 compare   1.0   1.0  -> 0

+ddcom080 compare   1.0   2.0  -> -1

+ddcom081 compare   2.0  -2.0  -> 1

+ddcom082 compare   2.0  -1.0  -> 1

+ddcom083 compare   2.0   0.0  -> 1

+ddcom085 compare   2.0   1.0  -> 1

+ddcom086 compare   2.0   2.0  -> 0

+ddcom087 compare   1.0   0.1  -> 1

+ddcom088 compare   0.1   1.0  -> -1

+

+-- now some cases which might overflow if subtract were used

+ddcom095 compare  9.999999999999999E+384 9.999999999999999E+384  -> 0

+ddcom096 compare -9.999999999999999E+384 9.999999999999999E+384  -> -1

+ddcom097 compare  9.999999999999999E+384 -9.999999999999999E+384 -> 1

+ddcom098 compare -9.999999999999999E+384 -9.999999999999999E+384 -> 0

+

+-- some differing length/exponent cases

+ddcom100 compare   7.0    7.0    -> 0

+ddcom101 compare   7.0    7      -> 0

+ddcom102 compare   7      7.0    -> 0

+ddcom103 compare   7E+0   7.0    -> 0

+ddcom104 compare   70E-1  7.0    -> 0

+ddcom105 compare   0.7E+1 7      -> 0

+ddcom106 compare   70E-1  7      -> 0

+ddcom107 compare   7.0    7E+0   -> 0

+ddcom108 compare   7.0    70E-1  -> 0

+ddcom109 compare   7      0.7E+1 -> 0

+ddcom110 compare   7      70E-1  -> 0

+

+ddcom120 compare   8.0    7.0    -> 1

+ddcom121 compare   8.0    7      -> 1

+ddcom122 compare   8      7.0    -> 1

+ddcom123 compare   8E+0   7.0    -> 1

+ddcom124 compare   80E-1  7.0    -> 1

+ddcom125 compare   0.8E+1 7      -> 1

+ddcom126 compare   80E-1  7      -> 1

+ddcom127 compare   8.0    7E+0   -> 1

+ddcom128 compare   8.0    70E-1  -> 1

+ddcom129 compare   8      0.7E+1  -> 1

+ddcom130 compare   8      70E-1  -> 1

+

+ddcom140 compare   8.0    9.0    -> -1

+ddcom141 compare   8.0    9      -> -1

+ddcom142 compare   8      9.0    -> -1

+ddcom143 compare   8E+0   9.0    -> -1

+ddcom144 compare   80E-1  9.0    -> -1

+ddcom145 compare   0.8E+1 9      -> -1

+ddcom146 compare   80E-1  9      -> -1

+ddcom147 compare   8.0    9E+0   -> -1

+ddcom148 compare   8.0    90E-1  -> -1

+ddcom149 compare   8      0.9E+1 -> -1

+ddcom150 compare   8      90E-1  -> -1

+

+-- and again, with sign changes -+ ..

+ddcom200 compare  -7.0    7.0    -> -1

+ddcom201 compare  -7.0    7      -> -1

+ddcom202 compare  -7      7.0    -> -1

+ddcom203 compare  -7E+0   7.0    -> -1

+ddcom204 compare  -70E-1  7.0    -> -1

+ddcom205 compare  -0.7E+1 7      -> -1

+ddcom206 compare  -70E-1  7      -> -1

+ddcom207 compare  -7.0    7E+0   -> -1

+ddcom208 compare  -7.0    70E-1  -> -1

+ddcom209 compare  -7      0.7E+1 -> -1

+ddcom210 compare  -7      70E-1  -> -1

+

+ddcom220 compare  -8.0    7.0    -> -1

+ddcom221 compare  -8.0    7      -> -1

+ddcom222 compare  -8      7.0    -> -1

+ddcom223 compare  -8E+0   7.0    -> -1

+ddcom224 compare  -80E-1  7.0    -> -1

+ddcom225 compare  -0.8E+1 7      -> -1

+ddcom226 compare  -80E-1  7      -> -1

+ddcom227 compare  -8.0    7E+0   -> -1

+ddcom228 compare  -8.0    70E-1  -> -1

+ddcom229 compare  -8      0.7E+1 -> -1

+ddcom230 compare  -8      70E-1  -> -1

+

+ddcom240 compare  -8.0    9.0    -> -1

+ddcom241 compare  -8.0    9      -> -1

+ddcom242 compare  -8      9.0    -> -1

+ddcom243 compare  -8E+0   9.0    -> -1

+ddcom244 compare  -80E-1  9.0    -> -1

+ddcom245 compare  -0.8E+1 9      -> -1

+ddcom246 compare  -80E-1  9      -> -1

+ddcom247 compare  -8.0    9E+0   -> -1

+ddcom248 compare  -8.0    90E-1  -> -1

+ddcom249 compare  -8      0.9E+1 -> -1

+ddcom250 compare  -8      90E-1  -> -1

+

+-- and again, with sign changes +- ..

+ddcom300 compare   7.0    -7.0    -> 1

+ddcom301 compare   7.0    -7      -> 1

+ddcom302 compare   7      -7.0    -> 1

+ddcom303 compare   7E+0   -7.0    -> 1

+ddcom304 compare   70E-1  -7.0    -> 1

+ddcom305 compare   .7E+1  -7      -> 1

+ddcom306 compare   70E-1  -7      -> 1

+ddcom307 compare   7.0    -7E+0   -> 1

+ddcom308 compare   7.0    -70E-1  -> 1

+ddcom309 compare   7      -.7E+1  -> 1

+ddcom310 compare   7      -70E-1  -> 1

+

+ddcom320 compare   8.0    -7.0    -> 1

+ddcom321 compare   8.0    -7      -> 1

+ddcom322 compare   8      -7.0    -> 1

+ddcom323 compare   8E+0   -7.0    -> 1

+ddcom324 compare   80E-1  -7.0    -> 1

+ddcom325 compare   .8E+1  -7      -> 1

+ddcom326 compare   80E-1  -7      -> 1

+ddcom327 compare   8.0    -7E+0   -> 1

+ddcom328 compare   8.0    -70E-1  -> 1

+ddcom329 compare   8      -.7E+1  -> 1

+ddcom330 compare   8      -70E-1  -> 1

+

+ddcom340 compare   8.0    -9.0    -> 1

+ddcom341 compare   8.0    -9      -> 1

+ddcom342 compare   8      -9.0    -> 1

+ddcom343 compare   8E+0   -9.0    -> 1

+ddcom344 compare   80E-1  -9.0    -> 1

+ddcom345 compare   .8E+1  -9      -> 1

+ddcom346 compare   80E-1  -9      -> 1

+ddcom347 compare   8.0    -9E+0   -> 1

+ddcom348 compare   8.0    -90E-1  -> 1

+ddcom349 compare   8      -.9E+1  -> 1

+ddcom350 compare   8      -90E-1  -> 1

+

+-- and again, with sign changes -- ..

+ddcom400 compare   -7.0    -7.0    -> 0

+ddcom401 compare   -7.0    -7      -> 0

+ddcom402 compare   -7      -7.0    -> 0

+ddcom403 compare   -7E+0   -7.0    -> 0

+ddcom404 compare   -70E-1  -7.0    -> 0

+ddcom405 compare   -.7E+1  -7      -> 0

+ddcom406 compare   -70E-1  -7      -> 0

+ddcom407 compare   -7.0    -7E+0   -> 0

+ddcom408 compare   -7.0    -70E-1  -> 0

+ddcom409 compare   -7      -.7E+1  -> 0

+ddcom410 compare   -7      -70E-1  -> 0

+

+ddcom420 compare   -8.0    -7.0    -> -1

+ddcom421 compare   -8.0    -7      -> -1

+ddcom422 compare   -8      -7.0    -> -1

+ddcom423 compare   -8E+0   -7.0    -> -1

+ddcom424 compare   -80E-1  -7.0    -> -1

+ddcom425 compare   -.8E+1  -7      -> -1

+ddcom426 compare   -80E-1  -7      -> -1

+ddcom427 compare   -8.0    -7E+0   -> -1

+ddcom428 compare   -8.0    -70E-1  -> -1

+ddcom429 compare   -8      -.7E+1  -> -1

+ddcom430 compare   -8      -70E-1  -> -1

+

+ddcom440 compare   -8.0    -9.0    -> 1

+ddcom441 compare   -8.0    -9      -> 1

+ddcom442 compare   -8      -9.0    -> 1

+ddcom443 compare   -8E+0   -9.0    -> 1

+ddcom444 compare   -80E-1  -9.0    -> 1

+ddcom445 compare   -.8E+1  -9      -> 1

+ddcom446 compare   -80E-1  -9      -> 1

+ddcom447 compare   -8.0    -9E+0   -> 1

+ddcom448 compare   -8.0    -90E-1  -> 1

+ddcom449 compare   -8      -.9E+1  -> 1

+ddcom450 compare   -8      -90E-1  -> 1

+

+-- misalignment traps for little-endian

+ddcom451 compare      1.0       0.1  -> 1

+ddcom452 compare      0.1       1.0  -> -1

+ddcom453 compare     10.0       0.1  -> 1

+ddcom454 compare      0.1      10.0  -> -1

+ddcom455 compare      100       1.0  -> 1

+ddcom456 compare      1.0       100  -> -1

+ddcom457 compare     1000      10.0  -> 1

+ddcom458 compare     10.0      1000  -> -1

+ddcom459 compare    10000     100.0  -> 1

+ddcom460 compare    100.0     10000  -> -1

+ddcom461 compare   100000    1000.0  -> 1

+ddcom462 compare   1000.0    100000  -> -1

+ddcom463 compare  1000000   10000.0  -> 1

+ddcom464 compare  10000.0   1000000  -> -1

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+ddcom473 compare 123.4560000000000E-89 123.456E-89 -> 0

+ddcom474 compare 123.456000000000E+89 123.456E+89 -> 0

+ddcom475 compare 123.45600000000E-89 123.456E-89 -> 0

+ddcom476 compare 123.4560000000E+89 123.456E+89 -> 0

+ddcom477 compare 123.456000000E-89 123.456E-89 -> 0

+ddcom478 compare 123.45600000E+89 123.456E+89 -> 0

+ddcom479 compare 123.4560000E-89 123.456E-89 -> 0

+ddcom480 compare 123.456000E+89 123.456E+89 -> 0

+ddcom481 compare 123.45600E-89 123.456E-89 -> 0

+ddcom482 compare 123.4560E+89 123.456E+89 -> 0

+ddcom483 compare 123.456E-89 123.456E-89 -> 0

+ddcom487 compare 123.456E+89 123.4560000000000E+89 -> 0

+ddcom488 compare 123.456E-89 123.456000000000E-89 -> 0

+ddcom489 compare 123.456E+89 123.45600000000E+89 -> 0

+ddcom490 compare 123.456E-89 123.4560000000E-89 -> 0

+ddcom491 compare 123.456E+89 123.456000000E+89 -> 0

+ddcom492 compare 123.456E-89 123.45600000E-89 -> 0

+ddcom493 compare 123.456E+89 123.4560000E+89 -> 0

+ddcom494 compare 123.456E-89 123.456000E-89 -> 0

+ddcom495 compare 123.456E+89 123.45600E+89 -> 0

+ddcom496 compare 123.456E-89 123.4560E-89 -> 0

+ddcom497 compare 123.456E+89 123.456E+89 -> 0

+

+-- wide-ranging, around precision; signs equal

+ddcom500 compare    1     1E-15    -> 1

+ddcom501 compare    1     1E-14    -> 1

+ddcom502 compare    1     1E-13    -> 1

+ddcom503 compare    1     1E-12    -> 1

+ddcom504 compare    1     1E-11    -> 1

+ddcom505 compare    1     1E-10    -> 1

+ddcom506 compare    1     1E-9     -> 1

+ddcom507 compare    1     1E-8     -> 1

+ddcom508 compare    1     1E-7     -> 1

+ddcom509 compare    1     1E-6     -> 1

+ddcom510 compare    1     1E-5     -> 1

+ddcom511 compare    1     1E-4     -> 1

+ddcom512 compare    1     1E-3     -> 1

+ddcom513 compare    1     1E-2     -> 1

+ddcom514 compare    1     1E-1     -> 1

+ddcom515 compare    1     1E-0     -> 0

+ddcom516 compare    1     1E+1     -> -1

+ddcom517 compare    1     1E+2     -> -1

+ddcom518 compare    1     1E+3     -> -1

+ddcom519 compare    1     1E+4     -> -1

+ddcom521 compare    1     1E+5     -> -1

+ddcom522 compare    1     1E+6     -> -1

+ddcom523 compare    1     1E+7     -> -1

+ddcom524 compare    1     1E+8     -> -1

+ddcom525 compare    1     1E+9     -> -1

+ddcom526 compare    1     1E+10    -> -1

+ddcom527 compare    1     1E+11    -> -1

+ddcom528 compare    1     1E+12    -> -1

+ddcom529 compare    1     1E+13    -> -1

+ddcom530 compare    1     1E+14    -> -1

+ddcom531 compare    1     1E+15    -> -1

+-- LR swap

+ddcom540 compare    1E-15  1       -> -1

+ddcom541 compare    1E-14  1       -> -1

+ddcom542 compare    1E-13  1       -> -1

+ddcom543 compare    1E-12  1       -> -1

+ddcom544 compare    1E-11  1       -> -1

+ddcom545 compare    1E-10  1       -> -1

+ddcom546 compare    1E-9   1       -> -1

+ddcom547 compare    1E-8   1       -> -1

+ddcom548 compare    1E-7   1       -> -1

+ddcom549 compare    1E-6   1       -> -1

+ddcom550 compare    1E-5   1       -> -1

+ddcom551 compare    1E-4   1       -> -1

+ddcom552 compare    1E-3   1       -> -1

+ddcom553 compare    1E-2   1       -> -1

+ddcom554 compare    1E-1   1       -> -1

+ddcom555 compare    1E-0   1       ->  0

+ddcom556 compare    1E+1   1       ->  1

+ddcom557 compare    1E+2   1       ->  1

+ddcom558 compare    1E+3   1       ->  1

+ddcom559 compare    1E+4   1       ->  1

+ddcom561 compare    1E+5   1       ->  1

+ddcom562 compare    1E+6   1       ->  1

+ddcom563 compare    1E+7   1       ->  1

+ddcom564 compare    1E+8   1       ->  1

+ddcom565 compare    1E+9   1       ->  1

+ddcom566 compare    1E+10  1       ->  1

+ddcom567 compare    1E+11  1       ->  1

+ddcom568 compare    1E+12  1       ->  1

+ddcom569 compare    1E+13  1       ->  1

+ddcom570 compare    1E+14  1       ->  1

+ddcom571 compare    1E+15  1       ->  1

+-- similar with a useful coefficient, one side only

+ddcom580 compare  0.000000987654321     1E-15    -> 1

+ddcom581 compare  0.000000987654321     1E-14    -> 1

+ddcom582 compare  0.000000987654321     1E-13    -> 1

+ddcom583 compare  0.000000987654321     1E-12    -> 1

+ddcom584 compare  0.000000987654321     1E-11    -> 1

+ddcom585 compare  0.000000987654321     1E-10    -> 1

+ddcom586 compare  0.000000987654321     1E-9     -> 1

+ddcom587 compare  0.000000987654321     1E-8     -> 1

+ddcom588 compare  0.000000987654321     1E-7     -> 1

+ddcom589 compare  0.000000987654321     1E-6     -> -1

+ddcom590 compare  0.000000987654321     1E-5     -> -1

+ddcom591 compare  0.000000987654321     1E-4     -> -1

+ddcom592 compare  0.000000987654321     1E-3     -> -1

+ddcom593 compare  0.000000987654321     1E-2     -> -1

+ddcom594 compare  0.000000987654321     1E-1     -> -1

+ddcom595 compare  0.000000987654321     1E-0     -> -1

+ddcom596 compare  0.000000987654321     1E+1     -> -1

+ddcom597 compare  0.000000987654321     1E+2     -> -1

+ddcom598 compare  0.000000987654321     1E+3     -> -1

+ddcom599 compare  0.000000987654321     1E+4     -> -1

+

+-- check some unit-y traps

+ddcom600 compare   12            12.2345 -> -1

+ddcom601 compare   12.0          12.2345 -> -1

+ddcom602 compare   12.00         12.2345 -> -1

+ddcom603 compare   12.000        12.2345 -> -1

+ddcom604 compare   12.0000       12.2345 -> -1

+ddcom605 compare   12.00000      12.2345 -> -1

+ddcom606 compare   12.000000     12.2345 -> -1

+ddcom607 compare   12.0000000    12.2345 -> -1

+ddcom608 compare   12.00000000   12.2345 -> -1

+ddcom609 compare   12.000000000  12.2345 -> -1

+ddcom610 compare   12.1234 12            ->  1

+ddcom611 compare   12.1234 12.0          ->  1

+ddcom612 compare   12.1234 12.00         ->  1

+ddcom613 compare   12.1234 12.000        ->  1

+ddcom614 compare   12.1234 12.0000       ->  1

+ddcom615 compare   12.1234 12.00000      ->  1

+ddcom616 compare   12.1234 12.000000     ->  1

+ddcom617 compare   12.1234 12.0000000    ->  1

+ddcom618 compare   12.1234 12.00000000   ->  1

+ddcom619 compare   12.1234 12.000000000  ->  1

+ddcom620 compare  -12           -12.2345 ->  1

+ddcom621 compare  -12.0         -12.2345 ->  1

+ddcom622 compare  -12.00        -12.2345 ->  1

+ddcom623 compare  -12.000       -12.2345 ->  1

+ddcom624 compare  -12.0000      -12.2345 ->  1

+ddcom625 compare  -12.00000     -12.2345 ->  1

+ddcom626 compare  -12.000000    -12.2345 ->  1

+ddcom627 compare  -12.0000000   -12.2345 ->  1

+ddcom628 compare  -12.00000000  -12.2345 ->  1

+ddcom629 compare  -12.000000000 -12.2345 ->  1

+ddcom630 compare  -12.1234 -12           -> -1

+ddcom631 compare  -12.1234 -12.0         -> -1

+ddcom632 compare  -12.1234 -12.00        -> -1

+ddcom633 compare  -12.1234 -12.000       -> -1

+ddcom634 compare  -12.1234 -12.0000      -> -1

+ddcom635 compare  -12.1234 -12.00000     -> -1

+ddcom636 compare  -12.1234 -12.000000    -> -1

+ddcom637 compare  -12.1234 -12.0000000   -> -1

+ddcom638 compare  -12.1234 -12.00000000  -> -1

+ddcom639 compare  -12.1234 -12.000000000 -> -1

+

+-- extended zeros

+ddcom640 compare   0     0   -> 0

+ddcom641 compare   0    -0   -> 0

+ddcom642 compare   0    -0.0 -> 0

+ddcom643 compare   0     0.0 -> 0

+ddcom644 compare  -0     0   -> 0

+ddcom645 compare  -0    -0   -> 0

+ddcom646 compare  -0    -0.0 -> 0

+ddcom647 compare  -0     0.0 -> 0

+ddcom648 compare   0.0   0   -> 0

+ddcom649 compare   0.0  -0   -> 0

+ddcom650 compare   0.0  -0.0 -> 0

+ddcom651 compare   0.0   0.0 -> 0

+ddcom652 compare  -0.0   0   -> 0

+ddcom653 compare  -0.0  -0   -> 0

+ddcom654 compare  -0.0  -0.0 -> 0

+ddcom655 compare  -0.0   0.0 -> 0

+

+ddcom656 compare  -0E1   0.0 -> 0

+ddcom657 compare  -0E2   0.0 -> 0

+ddcom658 compare   0E1   0.0 -> 0

+ddcom659 compare   0E2   0.0 -> 0

+ddcom660 compare  -0E1   0   -> 0

+ddcom661 compare  -0E2   0   -> 0

+ddcom662 compare   0E1   0   -> 0

+ddcom663 compare   0E2   0   -> 0

+ddcom664 compare  -0E1  -0E1 -> 0

+ddcom665 compare  -0E2  -0E1 -> 0

+ddcom666 compare   0E1  -0E1 -> 0

+ddcom667 compare   0E2  -0E1 -> 0

+ddcom668 compare  -0E1  -0E2 -> 0

+ddcom669 compare  -0E2  -0E2 -> 0

+ddcom670 compare   0E1  -0E2 -> 0

+ddcom671 compare   0E2  -0E2 -> 0

+ddcom672 compare  -0E1   0E1 -> 0

+ddcom673 compare  -0E2   0E1 -> 0

+ddcom674 compare   0E1   0E1 -> 0

+ddcom675 compare   0E2   0E1 -> 0

+ddcom676 compare  -0E1   0E2 -> 0

+ddcom677 compare  -0E2   0E2 -> 0

+ddcom678 compare   0E1   0E2 -> 0

+ddcom679 compare   0E2   0E2 -> 0

+

+-- trailing zeros; unit-y

+ddcom680 compare   12    12           -> 0

+ddcom681 compare   12    12.0         -> 0

+ddcom682 compare   12    12.00        -> 0

+ddcom683 compare   12    12.000       -> 0

+ddcom684 compare   12    12.0000      -> 0

+ddcom685 compare   12    12.00000     -> 0

+ddcom686 compare   12    12.000000    -> 0

+ddcom687 compare   12    12.0000000   -> 0

+ddcom688 compare   12    12.00000000  -> 0

+ddcom689 compare   12    12.000000000 -> 0

+ddcom690 compare   12              12 -> 0

+ddcom691 compare   12.0            12 -> 0

+ddcom692 compare   12.00           12 -> 0

+ddcom693 compare   12.000          12 -> 0

+ddcom694 compare   12.0000         12 -> 0

+ddcom695 compare   12.00000        12 -> 0

+ddcom696 compare   12.000000       12 -> 0

+ddcom697 compare   12.0000000      12 -> 0

+ddcom698 compare   12.00000000     12 -> 0

+ddcom699 compare   12.000000000    12 -> 0

+

+-- first, second, & last digit

+ddcom700 compare   1234567890123456 1234567890123455 -> 1

+ddcom701 compare   1234567890123456 1234567890123456 -> 0

+ddcom702 compare   1234567890123456 1234567890123457 -> -1

+ddcom703 compare   1234567890123456 0234567890123456 -> 1

+ddcom704 compare   1234567890123456 1234567890123456 -> 0

+ddcom705 compare   1234567890123456 2234567890123456 -> -1

+ddcom706 compare   1134567890123456 1034567890123456 -> 1

+ddcom707 compare   1134567890123456 1134567890123456 -> 0

+ddcom708 compare   1134567890123456 1234567890123456 -> -1

+

+-- miscellaneous

+ddcom721 compare 12345678000 1 -> 1

+ddcom722 compare 1 12345678000 -> -1

+ddcom723 compare 1234567800  1 -> 1

+ddcom724 compare 1 1234567800  -> -1

+ddcom725 compare 1234567890  1 -> 1

+ddcom726 compare 1 1234567890  -> -1

+ddcom727 compare 1234567891  1 -> 1

+ddcom728 compare 1 1234567891  -> -1

+ddcom729 compare 12345678901 1 -> 1

+ddcom730 compare 1 12345678901 -> -1

+ddcom731 compare 1234567896  1 -> 1

+ddcom732 compare 1 1234567896  -> -1

+

+-- residue cases at lower precision

+ddcom740 compare  1  0.9999999  -> 1

+ddcom741 compare  1  0.999999   -> 1

+ddcom742 compare  1  0.99999    -> 1

+ddcom743 compare  1  1.0000     -> 0

+ddcom744 compare  1  1.00001    -> -1

+ddcom745 compare  1  1.000001   -> -1

+ddcom746 compare  1  1.0000001  -> -1

+ddcom750 compare  0.9999999  1  -> -1

+ddcom751 compare  0.999999   1  -> -1

+ddcom752 compare  0.99999    1  -> -1

+ddcom753 compare  1.0000     1  -> 0

+ddcom754 compare  1.00001    1  -> 1

+ddcom755 compare  1.000001   1  -> 1

+ddcom756 compare  1.0000001  1  -> 1

+

+-- Specials

+ddcom780 compare  Inf  -Inf   ->  1

+ddcom781 compare  Inf  -1000  ->  1

+ddcom782 compare  Inf  -1     ->  1

+ddcom783 compare  Inf  -0     ->  1

+ddcom784 compare  Inf   0     ->  1

+ddcom785 compare  Inf   1     ->  1

+ddcom786 compare  Inf   1000  ->  1

+ddcom787 compare  Inf   Inf   ->  0

+ddcom788 compare -1000  Inf   -> -1

+ddcom789 compare -Inf   Inf   -> -1

+ddcom790 compare -1     Inf   -> -1

+ddcom791 compare -0     Inf   -> -1

+ddcom792 compare  0     Inf   -> -1

+ddcom793 compare  1     Inf   -> -1

+ddcom794 compare  1000  Inf   -> -1

+ddcom795 compare  Inf   Inf   ->  0

+

+ddcom800 compare -Inf  -Inf   ->  0

+ddcom801 compare -Inf  -1000  -> -1

+ddcom802 compare -Inf  -1     -> -1

+ddcom803 compare -Inf  -0     -> -1

+ddcom804 compare -Inf   0     -> -1

+ddcom805 compare -Inf   1     -> -1

+ddcom806 compare -Inf   1000  -> -1

+ddcom807 compare -Inf   Inf   -> -1

+ddcom808 compare -Inf  -Inf   ->  0

+ddcom809 compare -1000 -Inf   ->  1

+ddcom810 compare -1    -Inf   ->  1

+ddcom811 compare -0    -Inf   ->  1

+ddcom812 compare  0    -Inf   ->  1

+ddcom813 compare  1    -Inf   ->  1

+ddcom814 compare  1000 -Inf   ->  1

+ddcom815 compare  Inf  -Inf   ->  1

+

+ddcom821 compare  NaN -Inf    ->  NaN

+ddcom822 compare  NaN -1000   ->  NaN

+ddcom823 compare  NaN -1      ->  NaN

+ddcom824 compare  NaN -0      ->  NaN

+ddcom825 compare  NaN  0      ->  NaN

+ddcom826 compare  NaN  1      ->  NaN

+ddcom827 compare  NaN  1000   ->  NaN

+ddcom828 compare  NaN  Inf    ->  NaN

+ddcom829 compare  NaN  NaN    ->  NaN

+ddcom830 compare -Inf  NaN    ->  NaN

+ddcom831 compare -1000 NaN    ->  NaN

+ddcom832 compare -1    NaN    ->  NaN

+ddcom833 compare -0    NaN    ->  NaN

+ddcom834 compare  0    NaN    ->  NaN

+ddcom835 compare  1    NaN    ->  NaN

+ddcom836 compare  1000 NaN    ->  NaN

+ddcom837 compare  Inf  NaN    ->  NaN

+ddcom838 compare -NaN -NaN    -> -NaN

+ddcom839 compare +NaN -NaN    ->  NaN

+ddcom840 compare -NaN +NaN    -> -NaN

+

+ddcom841 compare  sNaN -Inf   ->  NaN  Invalid_operation

+ddcom842 compare  sNaN -1000  ->  NaN  Invalid_operation

+ddcom843 compare  sNaN -1     ->  NaN  Invalid_operation

+ddcom844 compare  sNaN -0     ->  NaN  Invalid_operation

+ddcom845 compare  sNaN  0     ->  NaN  Invalid_operation

+ddcom846 compare  sNaN  1     ->  NaN  Invalid_operation

+ddcom847 compare  sNaN  1000  ->  NaN  Invalid_operation

+ddcom848 compare  sNaN  NaN   ->  NaN  Invalid_operation

+ddcom849 compare  sNaN sNaN   ->  NaN  Invalid_operation

+ddcom850 compare  NaN  sNaN   ->  NaN  Invalid_operation

+ddcom851 compare -Inf  sNaN   ->  NaN  Invalid_operation

+ddcom852 compare -1000 sNaN   ->  NaN  Invalid_operation

+ddcom853 compare -1    sNaN   ->  NaN  Invalid_operation

+ddcom854 compare -0    sNaN   ->  NaN  Invalid_operation

+ddcom855 compare  0    sNaN   ->  NaN  Invalid_operation

+ddcom856 compare  1    sNaN   ->  NaN  Invalid_operation

+ddcom857 compare  1000 sNaN   ->  NaN  Invalid_operation

+ddcom858 compare  Inf  sNaN   ->  NaN  Invalid_operation

+ddcom859 compare  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddcom860 compare  NaN9 -Inf   ->  NaN9

+ddcom861 compare  NaN8  999   ->  NaN8

+ddcom862 compare  NaN77 Inf   ->  NaN77

+ddcom863 compare -NaN67 NaN5  -> -NaN67

+ddcom864 compare -Inf  -NaN4  -> -NaN4

+ddcom865 compare -999  -NaN33 -> -NaN33

+ddcom866 compare  Inf   NaN2  ->  NaN2

+ddcom867 compare -NaN41 -NaN42 -> -NaN41

+ddcom868 compare +NaN41 -NaN42 ->  NaN41

+ddcom869 compare -NaN41 +NaN42 -> -NaN41

+ddcom870 compare +NaN41 +NaN42 ->  NaN41

+

+ddcom871 compare -sNaN99 -Inf    -> -NaN99 Invalid_operation

+ddcom872 compare  sNaN98 -11     ->  NaN98 Invalid_operation

+ddcom873 compare  sNaN97  NaN    ->  NaN97 Invalid_operation

+ddcom874 compare  sNaN16 sNaN94  ->  NaN16 Invalid_operation

+ddcom875 compare  NaN85  sNaN83  ->  NaN83 Invalid_operation

+ddcom876 compare -Inf    sNaN92  ->  NaN92 Invalid_operation

+ddcom877 compare  088    sNaN81  ->  NaN81 Invalid_operation

+ddcom878 compare  Inf    sNaN90  ->  NaN90 Invalid_operation

+ddcom879 compare  NaN   -sNaN89  -> -NaN89 Invalid_operation

+

+-- wide range

+ddcom880 compare +1.23456789012345E-0 9E+384 -> -1

+ddcom881 compare 9E+384 +1.23456789012345E-0 ->  1

+ddcom882 compare +0.100 9E-383               ->  1

+ddcom883 compare 9E-383 +0.100               -> -1

+ddcom885 compare -1.23456789012345E-0 9E+384 -> -1

+ddcom886 compare 9E+384 -1.23456789012345E-0 ->  1

+ddcom887 compare -0.100 9E-383               -> -1

+ddcom888 compare 9E-383 -0.100               ->  1

+

+-- spread zeros

+ddcom900 compare   0E-383  0       ->  0

+ddcom901 compare   0E-383 -0       ->  0

+ddcom902 compare  -0E-383  0       ->  0

+ddcom903 compare  -0E-383 -0       ->  0

+ddcom904 compare   0E-383  0E+384  ->  0

+ddcom905 compare   0E-383 -0E+384  ->  0

+ddcom906 compare  -0E-383  0E+384  ->  0

+ddcom907 compare  -0E-383 -0E+384  ->  0

+ddcom908 compare   0       0E+384  ->  0

+ddcom909 compare   0      -0E+384  ->  0

+ddcom910 compare  -0       0E+384  ->  0

+ddcom911 compare  -0      -0E+384  ->  0

+ddcom930 compare   0E+384  0       ->  0

+ddcom931 compare   0E+384 -0       ->  0

+ddcom932 compare  -0E+384  0       ->  0

+ddcom933 compare  -0E+384 -0       ->  0

+ddcom934 compare   0E+384  0E-383  ->  0

+ddcom935 compare   0E+384 -0E-383  ->  0

+ddcom936 compare  -0E+384  0E-383  ->  0

+ddcom937 compare  -0E+384 -0E-383  ->  0

+ddcom938 compare   0       0E-383  ->  0

+ddcom939 compare   0      -0E-383  ->  0

+ddcom940 compare  -0       0E-383  ->  0

+ddcom941 compare  -0      -0E-383  ->  0

+

+-- signs

+ddcom961 compare  1e+77  1e+11 ->  1

+ddcom962 compare  1e+77 -1e+11 ->  1

+ddcom963 compare -1e+77  1e+11 -> -1

+ddcom964 compare -1e+77 -1e+11 -> -1

+ddcom965 compare  1e-77  1e-11 -> -1

+ddcom966 compare  1e-77 -1e-11 ->  1

+ddcom967 compare -1e-77  1e-11 -> -1

+ddcom968 compare -1e-77 -1e-11 ->  1

+

+-- full alignment range, both ways

+ddcomp1001 compare 1 1.000000000000000  -> 0

+ddcomp1002 compare 1 1.00000000000000   -> 0

+ddcomp1003 compare 1 1.0000000000000    -> 0

+ddcomp1004 compare 1 1.000000000000     -> 0

+ddcomp1005 compare 1 1.00000000000      -> 0

+ddcomp1006 compare 1 1.0000000000       -> 0

+ddcomp1007 compare 1 1.000000000        -> 0

+ddcomp1008 compare 1 1.00000000         -> 0

+ddcomp1009 compare 1 1.0000000          -> 0

+ddcomp1010 compare 1 1.000000           -> 0

+ddcomp1011 compare 1 1.00000            -> 0

+ddcomp1012 compare 1 1.0000             -> 0

+ddcomp1013 compare 1 1.000              -> 0

+ddcomp1014 compare 1 1.00               -> 0

+ddcomp1015 compare 1 1.0                -> 0

+ddcomp1021 compare 1.000000000000000  1 -> 0

+ddcomp1022 compare 1.00000000000000   1 -> 0

+ddcomp1023 compare 1.0000000000000    1 -> 0

+ddcomp1024 compare 1.000000000000     1 -> 0

+ddcomp1025 compare 1.00000000000      1 -> 0

+ddcomp1026 compare 1.0000000000       1 -> 0

+ddcomp1027 compare 1.000000000        1 -> 0

+ddcomp1028 compare 1.00000000         1 -> 0

+ddcomp1029 compare 1.0000000          1 -> 0

+ddcomp1030 compare 1.000000           1 -> 0

+ddcomp1031 compare 1.00000            1 -> 0

+ddcomp1032 compare 1.0000             1 -> 0

+ddcomp1033 compare 1.000              1 -> 0

+ddcomp1034 compare 1.00               1 -> 0

+ddcomp1035 compare 1.0                1 -> 0

+

+-- check MSD always detected non-zero

+ddcomp1040 compare 0 0.000000000000000  -> 0

+ddcomp1041 compare 0 1.000000000000000  -> -1

+ddcomp1042 compare 0 2.000000000000000  -> -1

+ddcomp1043 compare 0 3.000000000000000  -> -1

+ddcomp1044 compare 0 4.000000000000000  -> -1

+ddcomp1045 compare 0 5.000000000000000  -> -1

+ddcomp1046 compare 0 6.000000000000000  -> -1

+ddcomp1047 compare 0 7.000000000000000  -> -1

+ddcomp1048 compare 0 8.000000000000000  -> -1

+ddcomp1049 compare 0 9.000000000000000  -> -1

+ddcomp1050 compare 0.000000000000000  0 -> 0

+ddcomp1051 compare 1.000000000000000  0 -> 1

+ddcomp1052 compare 2.000000000000000  0 -> 1

+ddcomp1053 compare 3.000000000000000  0 -> 1

+ddcomp1054 compare 4.000000000000000  0 -> 1

+ddcomp1055 compare 5.000000000000000  0 -> 1

+ddcomp1056 compare 6.000000000000000  0 -> 1

+ddcomp1057 compare 7.000000000000000  0 -> 1

+ddcomp1058 compare 8.000000000000000  0 -> 1

+ddcomp1059 compare 9.000000000000000  0 -> 1

+

+-- Null tests

+ddcom9990 compare 10  # -> NaN Invalid_operation

+ddcom9991 compare  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddCompareSig.decTest b/Lib/test/decimaltestdata/ddCompareSig.decTest
new file mode 100644
index 0000000..b4895da
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCompareSig.decTest
@@ -0,0 +1,647 @@
+------------------------------------------------------------------------

+-- ddCompareSig.decTest -- decDouble comparison; all NaNs signal      --

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddcms001 comparesig  -2  -2  -> 0

+ddcms002 comparesig  -2  -1  -> -1

+ddcms003 comparesig  -2   0  -> -1

+ddcms004 comparesig  -2   1  -> -1

+ddcms005 comparesig  -2   2  -> -1

+ddcms006 comparesig  -1  -2  -> 1

+ddcms007 comparesig  -1  -1  -> 0

+ddcms008 comparesig  -1   0  -> -1

+ddcms009 comparesig  -1   1  -> -1

+ddcms010 comparesig  -1   2  -> -1

+ddcms011 comparesig   0  -2  -> 1

+ddcms012 comparesig   0  -1  -> 1

+ddcms013 comparesig   0   0  -> 0

+ddcms014 comparesig   0   1  -> -1

+ddcms015 comparesig   0   2  -> -1

+ddcms016 comparesig   1  -2  -> 1

+ddcms017 comparesig   1  -1  -> 1

+ddcms018 comparesig   1   0  -> 1

+ddcms019 comparesig   1   1  -> 0

+ddcms020 comparesig   1   2  -> -1

+ddcms021 comparesig   2  -2  -> 1

+ddcms022 comparesig   2  -1  -> 1

+ddcms023 comparesig   2   0  -> 1

+ddcms025 comparesig   2   1  -> 1

+ddcms026 comparesig   2   2  -> 0

+

+ddcms031 comparesig  -20  -20  -> 0

+ddcms032 comparesig  -20  -10  -> -1

+ddcms033 comparesig  -20   00  -> -1

+ddcms034 comparesig  -20   10  -> -1

+ddcms035 comparesig  -20   20  -> -1

+ddcms036 comparesig  -10  -20  -> 1

+ddcms037 comparesig  -10  -10  -> 0

+ddcms038 comparesig  -10   00  -> -1

+ddcms039 comparesig  -10   10  -> -1

+ddcms040 comparesig  -10   20  -> -1

+ddcms041 comparesig   00  -20  -> 1

+ddcms042 comparesig   00  -10  -> 1

+ddcms043 comparesig   00   00  -> 0

+ddcms044 comparesig   00   10  -> -1

+ddcms045 comparesig   00   20  -> -1

+ddcms046 comparesig   10  -20  -> 1

+ddcms047 comparesig   10  -10  -> 1

+ddcms048 comparesig   10   00  -> 1

+ddcms049 comparesig   10   10  -> 0

+ddcms050 comparesig   10   20  -> -1

+ddcms051 comparesig   20  -20  -> 1

+ddcms052 comparesig   20  -10  -> 1

+ddcms053 comparesig   20   00  -> 1

+ddcms055 comparesig   20   10  -> 1

+ddcms056 comparesig   20   20  -> 0

+

+ddcms061 comparesig  -2.0  -2.0  -> 0

+ddcms062 comparesig  -2.0  -1.0  -> -1

+ddcms063 comparesig  -2.0   0.0  -> -1

+ddcms064 comparesig  -2.0   1.0  -> -1

+ddcms065 comparesig  -2.0   2.0  -> -1

+ddcms066 comparesig  -1.0  -2.0  -> 1

+ddcms067 comparesig  -1.0  -1.0  -> 0

+ddcms068 comparesig  -1.0   0.0  -> -1

+ddcms069 comparesig  -1.0   1.0  -> -1

+ddcms070 comparesig  -1.0   2.0  -> -1

+ddcms071 comparesig   0.0  -2.0  -> 1

+ddcms072 comparesig   0.0  -1.0  -> 1

+ddcms073 comparesig   0.0   0.0  -> 0

+ddcms074 comparesig   0.0   1.0  -> -1

+ddcms075 comparesig   0.0   2.0  -> -1

+ddcms076 comparesig   1.0  -2.0  -> 1

+ddcms077 comparesig   1.0  -1.0  -> 1

+ddcms078 comparesig   1.0   0.0  -> 1

+ddcms079 comparesig   1.0   1.0  -> 0

+ddcms080 comparesig   1.0   2.0  -> -1

+ddcms081 comparesig   2.0  -2.0  -> 1

+ddcms082 comparesig   2.0  -1.0  -> 1

+ddcms083 comparesig   2.0   0.0  -> 1

+ddcms085 comparesig   2.0   1.0  -> 1

+ddcms086 comparesig   2.0   2.0  -> 0

+

+-- now some cases which might overflow if subtract were used

+ddcms090 comparesig  9.999999999999999E+384 9.999999999999999E+384  -> 0

+ddcms091 comparesig -9.999999999999999E+384 9.999999999999999E+384  -> -1

+ddcms092 comparesig  9.999999999999999E+384 -9.999999999999999E+384 -> 1

+ddcms093 comparesig -9.999999999999999E+384 -9.999999999999999E+384 -> 0

+

+-- some differing length/exponent cases

+ddcms100 comparesig   7.0    7.0    -> 0

+ddcms101 comparesig   7.0    7      -> 0

+ddcms102 comparesig   7      7.0    -> 0

+ddcms103 comparesig   7E+0   7.0    -> 0

+ddcms104 comparesig   70E-1  7.0    -> 0

+ddcms105 comparesig   0.7E+1 7      -> 0

+ddcms106 comparesig   70E-1  7      -> 0

+ddcms107 comparesig   7.0    7E+0   -> 0

+ddcms108 comparesig   7.0    70E-1  -> 0

+ddcms109 comparesig   7      0.7E+1 -> 0

+ddcms110 comparesig   7      70E-1  -> 0

+

+ddcms120 comparesig   8.0    7.0    -> 1

+ddcms121 comparesig   8.0    7      -> 1

+ddcms122 comparesig   8      7.0    -> 1

+ddcms123 comparesig   8E+0   7.0    -> 1

+ddcms124 comparesig   80E-1  7.0    -> 1

+ddcms125 comparesig   0.8E+1 7      -> 1

+ddcms126 comparesig   80E-1  7      -> 1

+ddcms127 comparesig   8.0    7E+0   -> 1

+ddcms128 comparesig   8.0    70E-1  -> 1

+ddcms129 comparesig   8      0.7E+1  -> 1

+ddcms130 comparesig   8      70E-1  -> 1

+

+ddcms140 comparesig   8.0    9.0    -> -1

+ddcms141 comparesig   8.0    9      -> -1

+ddcms142 comparesig   8      9.0    -> -1

+ddcms143 comparesig   8E+0   9.0    -> -1

+ddcms144 comparesig   80E-1  9.0    -> -1

+ddcms145 comparesig   0.8E+1 9      -> -1

+ddcms146 comparesig   80E-1  9      -> -1

+ddcms147 comparesig   8.0    9E+0   -> -1

+ddcms148 comparesig   8.0    90E-1  -> -1

+ddcms149 comparesig   8      0.9E+1 -> -1

+ddcms150 comparesig   8      90E-1  -> -1

+

+-- and again, with sign changes -+ ..

+ddcms200 comparesig  -7.0    7.0    -> -1

+ddcms201 comparesig  -7.0    7      -> -1

+ddcms202 comparesig  -7      7.0    -> -1

+ddcms203 comparesig  -7E+0   7.0    -> -1

+ddcms204 comparesig  -70E-1  7.0    -> -1

+ddcms205 comparesig  -0.7E+1 7      -> -1

+ddcms206 comparesig  -70E-1  7      -> -1

+ddcms207 comparesig  -7.0    7E+0   -> -1

+ddcms208 comparesig  -7.0    70E-1  -> -1

+ddcms209 comparesig  -7      0.7E+1 -> -1

+ddcms210 comparesig  -7      70E-1  -> -1

+

+ddcms220 comparesig  -8.0    7.0    -> -1

+ddcms221 comparesig  -8.0    7      -> -1

+ddcms222 comparesig  -8      7.0    -> -1

+ddcms223 comparesig  -8E+0   7.0    -> -1

+ddcms224 comparesig  -80E-1  7.0    -> -1

+ddcms225 comparesig  -0.8E+1 7      -> -1

+ddcms226 comparesig  -80E-1  7      -> -1

+ddcms227 comparesig  -8.0    7E+0   -> -1

+ddcms228 comparesig  -8.0    70E-1  -> -1

+ddcms229 comparesig  -8      0.7E+1 -> -1

+ddcms230 comparesig  -8      70E-1  -> -1

+

+ddcms240 comparesig  -8.0    9.0    -> -1

+ddcms241 comparesig  -8.0    9      -> -1

+ddcms242 comparesig  -8      9.0    -> -1

+ddcms243 comparesig  -8E+0   9.0    -> -1

+ddcms244 comparesig  -80E-1  9.0    -> -1

+ddcms245 comparesig  -0.8E+1 9      -> -1

+ddcms246 comparesig  -80E-1  9      -> -1

+ddcms247 comparesig  -8.0    9E+0   -> -1

+ddcms248 comparesig  -8.0    90E-1  -> -1

+ddcms249 comparesig  -8      0.9E+1 -> -1

+ddcms250 comparesig  -8      90E-1  -> -1

+

+-- and again, with sign changes +- ..

+ddcms300 comparesig   7.0    -7.0    -> 1

+ddcms301 comparesig   7.0    -7      -> 1

+ddcms302 comparesig   7      -7.0    -> 1

+ddcms303 comparesig   7E+0   -7.0    -> 1

+ddcms304 comparesig   70E-1  -7.0    -> 1

+ddcms305 comparesig   .7E+1  -7      -> 1

+ddcms306 comparesig   70E-1  -7      -> 1

+ddcms307 comparesig   7.0    -7E+0   -> 1

+ddcms308 comparesig   7.0    -70E-1  -> 1

+ddcms309 comparesig   7      -.7E+1  -> 1

+ddcms310 comparesig   7      -70E-1  -> 1

+

+ddcms320 comparesig   8.0    -7.0    -> 1

+ddcms321 comparesig   8.0    -7      -> 1

+ddcms322 comparesig   8      -7.0    -> 1

+ddcms323 comparesig   8E+0   -7.0    -> 1

+ddcms324 comparesig   80E-1  -7.0    -> 1

+ddcms325 comparesig   .8E+1  -7      -> 1

+ddcms326 comparesig   80E-1  -7      -> 1

+ddcms327 comparesig   8.0    -7E+0   -> 1

+ddcms328 comparesig   8.0    -70E-1  -> 1

+ddcms329 comparesig   8      -.7E+1  -> 1

+ddcms330 comparesig   8      -70E-1  -> 1

+

+ddcms340 comparesig   8.0    -9.0    -> 1

+ddcms341 comparesig   8.0    -9      -> 1

+ddcms342 comparesig   8      -9.0    -> 1

+ddcms343 comparesig   8E+0   -9.0    -> 1

+ddcms344 comparesig   80E-1  -9.0    -> 1

+ddcms345 comparesig   .8E+1  -9      -> 1

+ddcms346 comparesig   80E-1  -9      -> 1

+ddcms347 comparesig   8.0    -9E+0   -> 1

+ddcms348 comparesig   8.0    -90E-1  -> 1

+ddcms349 comparesig   8      -.9E+1  -> 1

+ddcms350 comparesig   8      -90E-1  -> 1

+

+-- and again, with sign changes -- ..

+ddcms400 comparesig   -7.0    -7.0    -> 0

+ddcms401 comparesig   -7.0    -7      -> 0

+ddcms402 comparesig   -7      -7.0    -> 0

+ddcms403 comparesig   -7E+0   -7.0    -> 0

+ddcms404 comparesig   -70E-1  -7.0    -> 0

+ddcms405 comparesig   -.7E+1  -7      -> 0

+ddcms406 comparesig   -70E-1  -7      -> 0

+ddcms407 comparesig   -7.0    -7E+0   -> 0

+ddcms408 comparesig   -7.0    -70E-1  -> 0

+ddcms409 comparesig   -7      -.7E+1  -> 0

+ddcms410 comparesig   -7      -70E-1  -> 0

+

+ddcms420 comparesig   -8.0    -7.0    -> -1

+ddcms421 comparesig   -8.0    -7      -> -1

+ddcms422 comparesig   -8      -7.0    -> -1

+ddcms423 comparesig   -8E+0   -7.0    -> -1

+ddcms424 comparesig   -80E-1  -7.0    -> -1

+ddcms425 comparesig   -.8E+1  -7      -> -1

+ddcms426 comparesig   -80E-1  -7      -> -1

+ddcms427 comparesig   -8.0    -7E+0   -> -1

+ddcms428 comparesig   -8.0    -70E-1  -> -1

+ddcms429 comparesig   -8      -.7E+1  -> -1

+ddcms430 comparesig   -8      -70E-1  -> -1

+

+ddcms440 comparesig   -8.0    -9.0    -> 1

+ddcms441 comparesig   -8.0    -9      -> 1

+ddcms442 comparesig   -8      -9.0    -> 1

+ddcms443 comparesig   -8E+0   -9.0    -> 1

+ddcms444 comparesig   -80E-1  -9.0    -> 1

+ddcms445 comparesig   -.8E+1  -9      -> 1

+ddcms446 comparesig   -80E-1  -9      -> 1

+ddcms447 comparesig   -8.0    -9E+0   -> 1

+ddcms448 comparesig   -8.0    -90E-1  -> 1

+ddcms449 comparesig   -8      -.9E+1  -> 1

+ddcms450 comparesig   -8      -90E-1  -> 1

+

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+ddcms473 comparesig 123.4560000000000E-89 123.456E-89 -> 0

+ddcms474 comparesig 123.456000000000E+89 123.456E+89 -> 0

+ddcms475 comparesig 123.45600000000E-89 123.456E-89 -> 0

+ddcms476 comparesig 123.4560000000E+89 123.456E+89 -> 0

+ddcms477 comparesig 123.456000000E-89 123.456E-89 -> 0

+ddcms478 comparesig 123.45600000E+89 123.456E+89 -> 0

+ddcms479 comparesig 123.4560000E-89 123.456E-89 -> 0

+ddcms480 comparesig 123.456000E+89 123.456E+89 -> 0

+ddcms481 comparesig 123.45600E-89 123.456E-89 -> 0

+ddcms482 comparesig 123.4560E+89 123.456E+89 -> 0

+ddcms483 comparesig 123.456E-89 123.456E-89 -> 0

+ddcms487 comparesig 123.456E+89 123.4560000000000E+89 -> 0

+ddcms488 comparesig 123.456E-89 123.456000000000E-89 -> 0

+ddcms489 comparesig 123.456E+89 123.45600000000E+89 -> 0

+ddcms490 comparesig 123.456E-89 123.4560000000E-89 -> 0

+ddcms491 comparesig 123.456E+89 123.456000000E+89 -> 0

+ddcms492 comparesig 123.456E-89 123.45600000E-89 -> 0

+ddcms493 comparesig 123.456E+89 123.4560000E+89 -> 0

+ddcms494 comparesig 123.456E-89 123.456000E-89 -> 0

+ddcms495 comparesig 123.456E+89 123.45600E+89 -> 0

+ddcms496 comparesig 123.456E-89 123.4560E-89 -> 0

+ddcms497 comparesig 123.456E+89 123.456E+89 -> 0

+

+-- wide-ranging, around precision; signs equal

+ddcms500 comparesig    1     1E-15    -> 1

+ddcms501 comparesig    1     1E-14    -> 1

+ddcms502 comparesig    1     1E-13    -> 1

+ddcms503 comparesig    1     1E-12    -> 1

+ddcms504 comparesig    1     1E-11    -> 1

+ddcms505 comparesig    1     1E-10    -> 1

+ddcms506 comparesig    1     1E-9     -> 1

+ddcms507 comparesig    1     1E-8     -> 1

+ddcms508 comparesig    1     1E-7     -> 1

+ddcms509 comparesig    1     1E-6     -> 1

+ddcms510 comparesig    1     1E-5     -> 1

+ddcms511 comparesig    1     1E-4     -> 1

+ddcms512 comparesig    1     1E-3     -> 1

+ddcms513 comparesig    1     1E-2     -> 1

+ddcms514 comparesig    1     1E-1     -> 1

+ddcms515 comparesig    1     1E-0     -> 0

+ddcms516 comparesig    1     1E+1     -> -1

+ddcms517 comparesig    1     1E+2     -> -1

+ddcms518 comparesig    1     1E+3     -> -1

+ddcms519 comparesig    1     1E+4     -> -1

+ddcms521 comparesig    1     1E+5     -> -1

+ddcms522 comparesig    1     1E+6     -> -1

+ddcms523 comparesig    1     1E+7     -> -1

+ddcms524 comparesig    1     1E+8     -> -1

+ddcms525 comparesig    1     1E+9     -> -1

+ddcms526 comparesig    1     1E+10    -> -1

+ddcms527 comparesig    1     1E+11    -> -1

+ddcms528 comparesig    1     1E+12    -> -1

+ddcms529 comparesig    1     1E+13    -> -1

+ddcms530 comparesig    1     1E+14    -> -1

+ddcms531 comparesig    1     1E+15    -> -1

+-- LR swap

+ddcms540 comparesig    1E-15  1       -> -1

+ddcms541 comparesig    1E-14  1       -> -1

+ddcms542 comparesig    1E-13  1       -> -1

+ddcms543 comparesig    1E-12  1       -> -1

+ddcms544 comparesig    1E-11  1       -> -1

+ddcms545 comparesig    1E-10  1       -> -1

+ddcms546 comparesig    1E-9   1       -> -1

+ddcms547 comparesig    1E-8   1       -> -1

+ddcms548 comparesig    1E-7   1       -> -1

+ddcms549 comparesig    1E-6   1       -> -1

+ddcms550 comparesig    1E-5   1       -> -1

+ddcms551 comparesig    1E-4   1       -> -1

+ddcms552 comparesig    1E-3   1       -> -1

+ddcms553 comparesig    1E-2   1       -> -1

+ddcms554 comparesig    1E-1   1       -> -1

+ddcms555 comparesig    1E-0   1       ->  0

+ddcms556 comparesig    1E+1   1       ->  1

+ddcms557 comparesig    1E+2   1       ->  1

+ddcms558 comparesig    1E+3   1       ->  1

+ddcms559 comparesig    1E+4   1       ->  1

+ddcms561 comparesig    1E+5   1       ->  1

+ddcms562 comparesig    1E+6   1       ->  1

+ddcms563 comparesig    1E+7   1       ->  1

+ddcms564 comparesig    1E+8   1       ->  1

+ddcms565 comparesig    1E+9   1       ->  1

+ddcms566 comparesig    1E+10  1       ->  1

+ddcms567 comparesig    1E+11  1       ->  1

+ddcms568 comparesig    1E+12  1       ->  1

+ddcms569 comparesig    1E+13  1       ->  1

+ddcms570 comparesig    1E+14  1       ->  1

+ddcms571 comparesig    1E+15  1       ->  1

+-- similar with a useful coefficient, one side only

+ddcms580 comparesig  0.000000987654321     1E-15    -> 1

+ddcms581 comparesig  0.000000987654321     1E-14    -> 1

+ddcms582 comparesig  0.000000987654321     1E-13    -> 1

+ddcms583 comparesig  0.000000987654321     1E-12    -> 1

+ddcms584 comparesig  0.000000987654321     1E-11    -> 1

+ddcms585 comparesig  0.000000987654321     1E-10    -> 1

+ddcms586 comparesig  0.000000987654321     1E-9     -> 1

+ddcms587 comparesig  0.000000987654321     1E-8     -> 1

+ddcms588 comparesig  0.000000987654321     1E-7     -> 1

+ddcms589 comparesig  0.000000987654321     1E-6     -> -1

+ddcms590 comparesig  0.000000987654321     1E-5     -> -1

+ddcms591 comparesig  0.000000987654321     1E-4     -> -1

+ddcms592 comparesig  0.000000987654321     1E-3     -> -1

+ddcms593 comparesig  0.000000987654321     1E-2     -> -1

+ddcms594 comparesig  0.000000987654321     1E-1     -> -1

+ddcms595 comparesig  0.000000987654321     1E-0     -> -1

+ddcms596 comparesig  0.000000987654321     1E+1     -> -1

+ddcms597 comparesig  0.000000987654321     1E+2     -> -1

+ddcms598 comparesig  0.000000987654321     1E+3     -> -1

+ddcms599 comparesig  0.000000987654321     1E+4     -> -1

+

+-- check some unit-y traps

+ddcms600 comparesig   12            12.2345 -> -1

+ddcms601 comparesig   12.0          12.2345 -> -1

+ddcms602 comparesig   12.00         12.2345 -> -1

+ddcms603 comparesig   12.000        12.2345 -> -1

+ddcms604 comparesig   12.0000       12.2345 -> -1

+ddcms605 comparesig   12.00000      12.2345 -> -1

+ddcms606 comparesig   12.000000     12.2345 -> -1

+ddcms607 comparesig   12.0000000    12.2345 -> -1

+ddcms608 comparesig   12.00000000   12.2345 -> -1

+ddcms609 comparesig   12.000000000  12.2345 -> -1

+ddcms610 comparesig   12.1234 12            ->  1

+ddcms611 comparesig   12.1234 12.0          ->  1

+ddcms612 comparesig   12.1234 12.00         ->  1

+ddcms613 comparesig   12.1234 12.000        ->  1

+ddcms614 comparesig   12.1234 12.0000       ->  1

+ddcms615 comparesig   12.1234 12.00000      ->  1

+ddcms616 comparesig   12.1234 12.000000     ->  1

+ddcms617 comparesig   12.1234 12.0000000    ->  1

+ddcms618 comparesig   12.1234 12.00000000   ->  1

+ddcms619 comparesig   12.1234 12.000000000  ->  1

+ddcms620 comparesig  -12           -12.2345 ->  1

+ddcms621 comparesig  -12.0         -12.2345 ->  1

+ddcms622 comparesig  -12.00        -12.2345 ->  1

+ddcms623 comparesig  -12.000       -12.2345 ->  1

+ddcms624 comparesig  -12.0000      -12.2345 ->  1

+ddcms625 comparesig  -12.00000     -12.2345 ->  1

+ddcms626 comparesig  -12.000000    -12.2345 ->  1

+ddcms627 comparesig  -12.0000000   -12.2345 ->  1

+ddcms628 comparesig  -12.00000000  -12.2345 ->  1

+ddcms629 comparesig  -12.000000000 -12.2345 ->  1

+ddcms630 comparesig  -12.1234 -12           -> -1

+ddcms631 comparesig  -12.1234 -12.0         -> -1

+ddcms632 comparesig  -12.1234 -12.00        -> -1

+ddcms633 comparesig  -12.1234 -12.000       -> -1

+ddcms634 comparesig  -12.1234 -12.0000      -> -1

+ddcms635 comparesig  -12.1234 -12.00000     -> -1

+ddcms636 comparesig  -12.1234 -12.000000    -> -1

+ddcms637 comparesig  -12.1234 -12.0000000   -> -1

+ddcms638 comparesig  -12.1234 -12.00000000  -> -1

+ddcms639 comparesig  -12.1234 -12.000000000 -> -1

+

+-- extended zeros

+ddcms640 comparesig   0     0   -> 0

+ddcms641 comparesig   0    -0   -> 0

+ddcms642 comparesig   0    -0.0 -> 0

+ddcms643 comparesig   0     0.0 -> 0

+ddcms644 comparesig  -0     0   -> 0

+ddcms645 comparesig  -0    -0   -> 0

+ddcms646 comparesig  -0    -0.0 -> 0

+ddcms647 comparesig  -0     0.0 -> 0

+ddcms648 comparesig   0.0   0   -> 0

+ddcms649 comparesig   0.0  -0   -> 0

+ddcms650 comparesig   0.0  -0.0 -> 0

+ddcms651 comparesig   0.0   0.0 -> 0

+ddcms652 comparesig  -0.0   0   -> 0

+ddcms653 comparesig  -0.0  -0   -> 0

+ddcms654 comparesig  -0.0  -0.0 -> 0

+ddcms655 comparesig  -0.0   0.0 -> 0

+

+ddcms656 comparesig  -0E1   0.0 -> 0

+ddcms657 comparesig  -0E2   0.0 -> 0

+ddcms658 comparesig   0E1   0.0 -> 0

+ddcms659 comparesig   0E2   0.0 -> 0

+ddcms660 comparesig  -0E1   0   -> 0

+ddcms661 comparesig  -0E2   0   -> 0

+ddcms662 comparesig   0E1   0   -> 0

+ddcms663 comparesig   0E2   0   -> 0

+ddcms664 comparesig  -0E1  -0E1 -> 0

+ddcms665 comparesig  -0E2  -0E1 -> 0

+ddcms666 comparesig   0E1  -0E1 -> 0

+ddcms667 comparesig   0E2  -0E1 -> 0

+ddcms668 comparesig  -0E1  -0E2 -> 0

+ddcms669 comparesig  -0E2  -0E2 -> 0

+ddcms670 comparesig   0E1  -0E2 -> 0

+ddcms671 comparesig   0E2  -0E2 -> 0

+ddcms672 comparesig  -0E1   0E1 -> 0

+ddcms673 comparesig  -0E2   0E1 -> 0

+ddcms674 comparesig   0E1   0E1 -> 0

+ddcms675 comparesig   0E2   0E1 -> 0

+ddcms676 comparesig  -0E1   0E2 -> 0

+ddcms677 comparesig  -0E2   0E2 -> 0

+ddcms678 comparesig   0E1   0E2 -> 0

+ddcms679 comparesig   0E2   0E2 -> 0

+

+-- trailing zeros; unit-y

+ddcms680 comparesig   12    12           -> 0

+ddcms681 comparesig   12    12.0         -> 0

+ddcms682 comparesig   12    12.00        -> 0

+ddcms683 comparesig   12    12.000       -> 0

+ddcms684 comparesig   12    12.0000      -> 0

+ddcms685 comparesig   12    12.00000     -> 0

+ddcms686 comparesig   12    12.000000    -> 0

+ddcms687 comparesig   12    12.0000000   -> 0

+ddcms688 comparesig   12    12.00000000  -> 0

+ddcms689 comparesig   12    12.000000000 -> 0

+ddcms690 comparesig   12              12 -> 0

+ddcms691 comparesig   12.0            12 -> 0

+ddcms692 comparesig   12.00           12 -> 0

+ddcms693 comparesig   12.000          12 -> 0

+ddcms694 comparesig   12.0000         12 -> 0

+ddcms695 comparesig   12.00000        12 -> 0

+ddcms696 comparesig   12.000000       12 -> 0

+ddcms697 comparesig   12.0000000      12 -> 0

+ddcms698 comparesig   12.00000000     12 -> 0

+ddcms699 comparesig   12.000000000    12 -> 0

+

+-- first, second, & last digit

+ddcms700 comparesig   1234567890123456 1234567890123455 -> 1

+ddcms701 comparesig   1234567890123456 1234567890123456 -> 0

+ddcms702 comparesig   1234567890123456 1234567890123457 -> -1

+ddcms703 comparesig   1234567890123456 0234567890123456 -> 1

+ddcms704 comparesig   1234567890123456 1234567890123456 -> 0

+ddcms705 comparesig   1234567890123456 2234567890123456 -> -1

+ddcms706 comparesig   1134567890123456 1034567890123456 -> 1

+ddcms707 comparesig   1134567890123456 1134567890123456 -> 0

+ddcms708 comparesig   1134567890123456 1234567890123456 -> -1

+

+-- miscellaneous

+ddcms721 comparesig 12345678000 1 -> 1

+ddcms722 comparesig 1 12345678000 -> -1

+ddcms723 comparesig 1234567800  1 -> 1

+ddcms724 comparesig 1 1234567800  -> -1

+ddcms725 comparesig 1234567890  1 -> 1

+ddcms726 comparesig 1 1234567890  -> -1

+ddcms727 comparesig 1234567891  1 -> 1

+ddcms728 comparesig 1 1234567891  -> -1

+ddcms729 comparesig 12345678901 1 -> 1

+ddcms730 comparesig 1 12345678901 -> -1

+ddcms731 comparesig 1234567896  1 -> 1

+ddcms732 comparesig 1 1234567896  -> -1

+

+-- residue cases at lower precision

+ddcms740 comparesig  1  0.9999999  -> 1

+ddcms741 comparesig  1  0.999999   -> 1

+ddcms742 comparesig  1  0.99999    -> 1

+ddcms743 comparesig  1  1.0000     -> 0

+ddcms744 comparesig  1  1.00001    -> -1

+ddcms745 comparesig  1  1.000001   -> -1

+ddcms746 comparesig  1  1.0000001  -> -1

+ddcms750 comparesig  0.9999999  1  -> -1

+ddcms751 comparesig  0.999999   1  -> -1

+ddcms752 comparesig  0.99999    1  -> -1

+ddcms753 comparesig  1.0000     1  -> 0

+ddcms754 comparesig  1.00001    1  -> 1

+ddcms755 comparesig  1.000001   1  -> 1

+ddcms756 comparesig  1.0000001  1  -> 1

+

+-- Specials

+ddcms780 comparesig  Inf  -Inf   ->  1

+ddcms781 comparesig  Inf  -1000  ->  1

+ddcms782 comparesig  Inf  -1     ->  1

+ddcms783 comparesig  Inf  -0     ->  1

+ddcms784 comparesig  Inf   0     ->  1

+ddcms785 comparesig  Inf   1     ->  1

+ddcms786 comparesig  Inf   1000  ->  1

+ddcms787 comparesig  Inf   Inf   ->  0

+ddcms788 comparesig -1000  Inf   -> -1

+ddcms789 comparesig -Inf   Inf   -> -1

+ddcms790 comparesig -1     Inf   -> -1

+ddcms791 comparesig -0     Inf   -> -1

+ddcms792 comparesig  0     Inf   -> -1

+ddcms793 comparesig  1     Inf   -> -1

+ddcms794 comparesig  1000  Inf   -> -1

+ddcms795 comparesig  Inf   Inf   ->  0

+

+ddcms800 comparesig -Inf  -Inf   ->  0

+ddcms801 comparesig -Inf  -1000  -> -1

+ddcms802 comparesig -Inf  -1     -> -1

+ddcms803 comparesig -Inf  -0     -> -1

+ddcms804 comparesig -Inf   0     -> -1

+ddcms805 comparesig -Inf   1     -> -1

+ddcms806 comparesig -Inf   1000  -> -1

+ddcms807 comparesig -Inf   Inf   -> -1

+ddcms808 comparesig -Inf  -Inf   ->  0

+ddcms809 comparesig -1000 -Inf   ->  1

+ddcms810 comparesig -1    -Inf   ->  1

+ddcms811 comparesig -0    -Inf   ->  1

+ddcms812 comparesig  0    -Inf   ->  1

+ddcms813 comparesig  1    -Inf   ->  1

+ddcms814 comparesig  1000 -Inf   ->  1

+ddcms815 comparesig  Inf  -Inf   ->  1

+

+ddcms821 comparesig  NaN -Inf    ->  NaN  Invalid_operation

+ddcms822 comparesig  NaN -1000   ->  NaN  Invalid_operation

+ddcms823 comparesig  NaN -1      ->  NaN  Invalid_operation

+ddcms824 comparesig  NaN -0      ->  NaN  Invalid_operation

+ddcms825 comparesig  NaN  0      ->  NaN  Invalid_operation

+ddcms826 comparesig  NaN  1      ->  NaN  Invalid_operation

+ddcms827 comparesig  NaN  1000   ->  NaN  Invalid_operation

+ddcms828 comparesig  NaN  Inf    ->  NaN  Invalid_operation

+ddcms829 comparesig  NaN  NaN    ->  NaN  Invalid_operation

+ddcms830 comparesig -Inf  NaN    ->  NaN  Invalid_operation

+ddcms831 comparesig -1000 NaN    ->  NaN  Invalid_operation

+ddcms832 comparesig -1    NaN    ->  NaN  Invalid_operation

+ddcms833 comparesig -0    NaN    ->  NaN  Invalid_operation

+ddcms834 comparesig  0    NaN    ->  NaN  Invalid_operation

+ddcms835 comparesig  1    NaN    ->  NaN  Invalid_operation

+ddcms836 comparesig  1000 NaN    ->  NaN  Invalid_operation

+ddcms837 comparesig  Inf  NaN    ->  NaN  Invalid_operation

+ddcms838 comparesig -NaN -NaN    -> -NaN  Invalid_operation

+ddcms839 comparesig +NaN -NaN    ->  NaN  Invalid_operation

+ddcms840 comparesig -NaN +NaN    -> -NaN  Invalid_operation

+

+ddcms841 comparesig  sNaN -Inf   ->  NaN  Invalid_operation

+ddcms842 comparesig  sNaN -1000  ->  NaN  Invalid_operation

+ddcms843 comparesig  sNaN -1     ->  NaN  Invalid_operation

+ddcms844 comparesig  sNaN -0     ->  NaN  Invalid_operation

+ddcms845 comparesig  sNaN  0     ->  NaN  Invalid_operation

+ddcms846 comparesig  sNaN  1     ->  NaN  Invalid_operation

+ddcms847 comparesig  sNaN  1000  ->  NaN  Invalid_operation

+ddcms848 comparesig  sNaN  NaN   ->  NaN  Invalid_operation

+ddcms849 comparesig  sNaN sNaN   ->  NaN  Invalid_operation

+ddcms850 comparesig  NaN  sNaN   ->  NaN  Invalid_operation

+ddcms851 comparesig -Inf  sNaN   ->  NaN  Invalid_operation

+ddcms852 comparesig -1000 sNaN   ->  NaN  Invalid_operation

+ddcms853 comparesig -1    sNaN   ->  NaN  Invalid_operation

+ddcms854 comparesig -0    sNaN   ->  NaN  Invalid_operation

+ddcms855 comparesig  0    sNaN   ->  NaN  Invalid_operation

+ddcms856 comparesig  1    sNaN   ->  NaN  Invalid_operation

+ddcms857 comparesig  1000 sNaN   ->  NaN  Invalid_operation

+ddcms858 comparesig  Inf  sNaN   ->  NaN  Invalid_operation

+ddcms859 comparesig  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddcms860 comparesig  NaN9 -Inf   ->  NaN9   Invalid_operation

+ddcms861 comparesig  NaN8  999   ->  NaN8   Invalid_operation

+ddcms862 comparesig  NaN77 Inf   ->  NaN77  Invalid_operation

+ddcms863 comparesig -NaN67 NaN5  -> -NaN67  Invalid_operation

+ddcms864 comparesig -Inf  -NaN4  -> -NaN4   Invalid_operation

+ddcms865 comparesig -999  -NaN33 -> -NaN33  Invalid_operation

+ddcms866 comparesig  Inf   NaN2  ->  NaN2   Invalid_operation

+ddcms867 comparesig -NaN41 -NaN42 -> -NaN41 Invalid_operation

+ddcms868 comparesig +NaN41 -NaN42 ->  NaN41 Invalid_operation

+ddcms869 comparesig -NaN41 +NaN42 -> -NaN41 Invalid_operation

+ddcms870 comparesig +NaN41 +NaN42 ->  NaN41 Invalid_operation

+

+ddcms871 comparesig -sNaN99 -Inf    -> -NaN99 Invalid_operation

+ddcms872 comparesig  sNaN98 -11     ->  NaN98 Invalid_operation

+ddcms873 comparesig  sNaN97  NaN    ->  NaN97 Invalid_operation

+ddcms874 comparesig  sNaN16 sNaN94  ->  NaN16 Invalid_operation

+ddcms875 comparesig  NaN85  sNaN83  ->  NaN83 Invalid_operation

+ddcms876 comparesig -Inf    sNaN92  ->  NaN92 Invalid_operation

+ddcms877 comparesig  088    sNaN81  ->  NaN81 Invalid_operation

+ddcms878 comparesig  Inf    sNaN90  ->  NaN90 Invalid_operation

+ddcms879 comparesig  NaN   -sNaN89  -> -NaN89 Invalid_operation

+

+-- wide range

+ddcms880 comparesig +1.23456789012345E-0 9E+384 -> -1

+ddcms881 comparesig 9E+384 +1.23456789012345E-0 ->  1

+ddcms882 comparesig +0.100 9E-383               ->  1

+ddcms883 comparesig 9E-383 +0.100               -> -1

+ddcms885 comparesig -1.23456789012345E-0 9E+384 -> -1

+ddcms886 comparesig 9E+384 -1.23456789012345E-0 ->  1

+ddcms887 comparesig -0.100 9E-383               -> -1

+ddcms888 comparesig 9E-383 -0.100               ->  1

+

+-- signs

+ddcms901 comparesig  1e+77  1e+11 ->  1

+ddcms902 comparesig  1e+77 -1e+11 ->  1

+ddcms903 comparesig -1e+77  1e+11 -> -1

+ddcms904 comparesig -1e+77 -1e+11 -> -1

+ddcms905 comparesig  1e-77  1e-11 -> -1

+ddcms906 comparesig  1e-77 -1e-11 ->  1

+ddcms907 comparesig -1e-77  1e-11 -> -1

+ddcms908 comparesig -1e-77 -1e-11 ->  1

+

+-- Null tests

+ddcms990 comparesig 10  # -> NaN Invalid_operation

+ddcms991 comparesig  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddCompareTotal.decTest b/Lib/test/decimaltestdata/ddCompareTotal.decTest
new file mode 100644
index 0000000..b86b8df
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCompareTotal.decTest
@@ -0,0 +1,706 @@
+------------------------------------------------------------------------

+-- ddCompareTotal.decTest -- decDouble comparison using total ordering--

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+-- Similarly, comparetotal will have some radically different paths

+-- than compare.

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddcot001 comparetotal  -2  -2  -> 0

+ddcot002 comparetotal  -2  -1  -> -1

+ddcot003 comparetotal  -2   0  -> -1

+ddcot004 comparetotal  -2   1  -> -1

+ddcot005 comparetotal  -2   2  -> -1

+ddcot006 comparetotal  -1  -2  -> 1

+ddcot007 comparetotal  -1  -1  -> 0

+ddcot008 comparetotal  -1   0  -> -1

+ddcot009 comparetotal  -1   1  -> -1

+ddcot010 comparetotal  -1   2  -> -1

+ddcot011 comparetotal   0  -2  -> 1

+ddcot012 comparetotal   0  -1  -> 1

+ddcot013 comparetotal   0   0  -> 0

+ddcot014 comparetotal   0   1  -> -1

+ddcot015 comparetotal   0   2  -> -1

+ddcot016 comparetotal   1  -2  -> 1

+ddcot017 comparetotal   1  -1  -> 1

+ddcot018 comparetotal   1   0  -> 1

+ddcot019 comparetotal   1   1  -> 0

+ddcot020 comparetotal   1   2  -> -1

+ddcot021 comparetotal   2  -2  -> 1

+ddcot022 comparetotal   2  -1  -> 1

+ddcot023 comparetotal   2   0  -> 1

+ddcot025 comparetotal   2   1  -> 1

+ddcot026 comparetotal   2   2  -> 0

+

+ddcot031 comparetotal  -20  -20  -> 0

+ddcot032 comparetotal  -20  -10  -> -1

+ddcot033 comparetotal  -20   00  -> -1

+ddcot034 comparetotal  -20   10  -> -1

+ddcot035 comparetotal  -20   20  -> -1

+ddcot036 comparetotal  -10  -20  -> 1

+ddcot037 comparetotal  -10  -10  -> 0

+ddcot038 comparetotal  -10   00  -> -1

+ddcot039 comparetotal  -10   10  -> -1

+ddcot040 comparetotal  -10   20  -> -1

+ddcot041 comparetotal   00  -20  -> 1

+ddcot042 comparetotal   00  -10  -> 1

+ddcot043 comparetotal   00   00  -> 0

+ddcot044 comparetotal   00   10  -> -1

+ddcot045 comparetotal   00   20  -> -1

+ddcot046 comparetotal   10  -20  -> 1

+ddcot047 comparetotal   10  -10  -> 1

+ddcot048 comparetotal   10   00  -> 1

+ddcot049 comparetotal   10   10  -> 0

+ddcot050 comparetotal   10   20  -> -1

+ddcot051 comparetotal   20  -20  -> 1

+ddcot052 comparetotal   20  -10  -> 1

+ddcot053 comparetotal   20   00  -> 1

+ddcot055 comparetotal   20   10  -> 1

+ddcot056 comparetotal   20   20  -> 0

+

+ddcot061 comparetotal  -2.0  -2.0  -> 0

+ddcot062 comparetotal  -2.0  -1.0  -> -1

+ddcot063 comparetotal  -2.0   0.0  -> -1

+ddcot064 comparetotal  -2.0   1.0  -> -1

+ddcot065 comparetotal  -2.0   2.0  -> -1

+ddcot066 comparetotal  -1.0  -2.0  -> 1

+ddcot067 comparetotal  -1.0  -1.0  -> 0

+ddcot068 comparetotal  -1.0   0.0  -> -1

+ddcot069 comparetotal  -1.0   1.0  -> -1

+ddcot070 comparetotal  -1.0   2.0  -> -1

+ddcot071 comparetotal   0.0  -2.0  -> 1

+ddcot072 comparetotal   0.0  -1.0  -> 1

+ddcot073 comparetotal   0.0   0.0  -> 0

+ddcot074 comparetotal   0.0   1.0  -> -1

+ddcot075 comparetotal   0.0   2.0  -> -1

+ddcot076 comparetotal   1.0  -2.0  -> 1

+ddcot077 comparetotal   1.0  -1.0  -> 1

+ddcot078 comparetotal   1.0   0.0  -> 1

+ddcot079 comparetotal   1.0   1.0  -> 0

+ddcot080 comparetotal   1.0   2.0  -> -1

+ddcot081 comparetotal   2.0  -2.0  -> 1

+ddcot082 comparetotal   2.0  -1.0  -> 1

+ddcot083 comparetotal   2.0   0.0  -> 1

+ddcot085 comparetotal   2.0   1.0  -> 1

+ddcot086 comparetotal   2.0   2.0  -> 0

+

+-- now some cases which might overflow if subtract were used

+ddcot090 comparetotal  9.99999999E+384 9.99999999E+384  -> 0

+ddcot091 comparetotal -9.99999999E+384 9.99999999E+384  -> -1

+ddcot092 comparetotal  9.99999999E+384 -9.99999999E+384 -> 1

+ddcot093 comparetotal -9.99999999E+384 -9.99999999E+384 -> 0

+

+-- some differing length/exponent cases

+-- in this first group, compare would compare all equal

+ddcot100 comparetotal   7.0    7.0    -> 0

+ddcot101 comparetotal   7.0    7      -> -1

+ddcot102 comparetotal   7      7.0    -> 1

+ddcot103 comparetotal   7E+0   7.0    -> 1

+ddcot104 comparetotal   70E-1  7.0    -> 0

+ddcot105 comparetotal   0.7E+1 7      -> 0

+ddcot106 comparetotal   70E-1  7      -> -1

+ddcot107 comparetotal   7.0    7E+0   -> -1

+ddcot108 comparetotal   7.0    70E-1  -> 0

+ddcot109 comparetotal   7      0.7E+1 -> 0

+ddcot110 comparetotal   7      70E-1  -> 1

+

+ddcot120 comparetotal   8.0    7.0    -> 1

+ddcot121 comparetotal   8.0    7      -> 1

+ddcot122 comparetotal   8      7.0    -> 1

+ddcot123 comparetotal   8E+0   7.0    -> 1

+ddcot124 comparetotal   80E-1  7.0    -> 1

+ddcot125 comparetotal   0.8E+1 7      -> 1

+ddcot126 comparetotal   80E-1  7      -> 1

+ddcot127 comparetotal   8.0    7E+0   -> 1

+ddcot128 comparetotal   8.0    70E-1  -> 1

+ddcot129 comparetotal   8      0.7E+1  -> 1

+ddcot130 comparetotal   8      70E-1  -> 1

+

+ddcot140 comparetotal   8.0    9.0    -> -1

+ddcot141 comparetotal   8.0    9      -> -1

+ddcot142 comparetotal   8      9.0    -> -1

+ddcot143 comparetotal   8E+0   9.0    -> -1

+ddcot144 comparetotal   80E-1  9.0    -> -1

+ddcot145 comparetotal   0.8E+1 9      -> -1

+ddcot146 comparetotal   80E-1  9      -> -1

+ddcot147 comparetotal   8.0    9E+0   -> -1

+ddcot148 comparetotal   8.0    90E-1  -> -1

+ddcot149 comparetotal   8      0.9E+1 -> -1

+ddcot150 comparetotal   8      90E-1  -> -1

+

+-- and again, with sign changes -+ ..

+ddcot200 comparetotal  -7.0    7.0    -> -1

+ddcot201 comparetotal  -7.0    7      -> -1

+ddcot202 comparetotal  -7      7.0    -> -1

+ddcot203 comparetotal  -7E+0   7.0    -> -1

+ddcot204 comparetotal  -70E-1  7.0    -> -1

+ddcot205 comparetotal  -0.7E+1 7      -> -1

+ddcot206 comparetotal  -70E-1  7      -> -1

+ddcot207 comparetotal  -7.0    7E+0   -> -1

+ddcot208 comparetotal  -7.0    70E-1  -> -1

+ddcot209 comparetotal  -7      0.7E+1 -> -1

+ddcot210 comparetotal  -7      70E-1  -> -1

+

+ddcot220 comparetotal  -8.0    7.0    -> -1

+ddcot221 comparetotal  -8.0    7      -> -1

+ddcot222 comparetotal  -8      7.0    -> -1

+ddcot223 comparetotal  -8E+0   7.0    -> -1

+ddcot224 comparetotal  -80E-1  7.0    -> -1

+ddcot225 comparetotal  -0.8E+1 7      -> -1

+ddcot226 comparetotal  -80E-1  7      -> -1

+ddcot227 comparetotal  -8.0    7E+0   -> -1

+ddcot228 comparetotal  -8.0    70E-1  -> -1

+ddcot229 comparetotal  -8      0.7E+1 -> -1

+ddcot230 comparetotal  -8      70E-1  -> -1

+

+ddcot240 comparetotal  -8.0    9.0    -> -1

+ddcot241 comparetotal  -8.0    9      -> -1

+ddcot242 comparetotal  -8      9.0    -> -1

+ddcot243 comparetotal  -8E+0   9.0    -> -1

+ddcot244 comparetotal  -80E-1  9.0    -> -1

+ddcot245 comparetotal  -0.8E+1 9      -> -1

+ddcot246 comparetotal  -80E-1  9      -> -1

+ddcot247 comparetotal  -8.0    9E+0   -> -1

+ddcot248 comparetotal  -8.0    90E-1  -> -1

+ddcot249 comparetotal  -8      0.9E+1 -> -1

+ddcot250 comparetotal  -8      90E-1  -> -1

+

+-- and again, with sign changes +- ..

+ddcot300 comparetotal   7.0    -7.0    -> 1

+ddcot301 comparetotal   7.0    -7      -> 1

+ddcot302 comparetotal   7      -7.0    -> 1

+ddcot303 comparetotal   7E+0   -7.0    -> 1

+ddcot304 comparetotal   70E-1  -7.0    -> 1

+ddcot305 comparetotal   .7E+1  -7      -> 1

+ddcot306 comparetotal   70E-1  -7      -> 1

+ddcot307 comparetotal   7.0    -7E+0   -> 1

+ddcot308 comparetotal   7.0    -70E-1  -> 1

+ddcot309 comparetotal   7      -.7E+1  -> 1

+ddcot310 comparetotal   7      -70E-1  -> 1

+

+ddcot320 comparetotal   8.0    -7.0    -> 1

+ddcot321 comparetotal   8.0    -7      -> 1

+ddcot322 comparetotal   8      -7.0    -> 1

+ddcot323 comparetotal   8E+0   -7.0    -> 1

+ddcot324 comparetotal   80E-1  -7.0    -> 1

+ddcot325 comparetotal   .8E+1  -7      -> 1

+ddcot326 comparetotal   80E-1  -7      -> 1

+ddcot327 comparetotal   8.0    -7E+0   -> 1

+ddcot328 comparetotal   8.0    -70E-1  -> 1

+ddcot329 comparetotal   8      -.7E+1  -> 1

+ddcot330 comparetotal   8      -70E-1  -> 1

+

+ddcot340 comparetotal   8.0    -9.0    -> 1

+ddcot341 comparetotal   8.0    -9      -> 1

+ddcot342 comparetotal   8      -9.0    -> 1

+ddcot343 comparetotal   8E+0   -9.0    -> 1

+ddcot344 comparetotal   80E-1  -9.0    -> 1

+ddcot345 comparetotal   .8E+1  -9      -> 1

+ddcot346 comparetotal   80E-1  -9      -> 1

+ddcot347 comparetotal   8.0    -9E+0   -> 1

+ddcot348 comparetotal   8.0    -90E-1  -> 1

+ddcot349 comparetotal   8      -.9E+1  -> 1

+ddcot350 comparetotal   8      -90E-1  -> 1

+

+-- and again, with sign changes -- ..

+ddcot400 comparetotal   -7.0    -7.0    -> 0

+ddcot401 comparetotal   -7.0    -7      -> 1

+ddcot402 comparetotal   -7      -7.0    -> -1

+ddcot403 comparetotal   -7E+0   -7.0    -> -1

+ddcot404 comparetotal   -70E-1  -7.0    -> 0

+ddcot405 comparetotal   -.7E+1  -7      -> 0

+ddcot406 comparetotal   -70E-1  -7      -> 1

+ddcot407 comparetotal   -7.0    -7E+0   -> 1

+ddcot408 comparetotal   -7.0    -70E-1  -> 0

+ddcot409 comparetotal   -7      -.7E+1  -> 0

+ddcot410 comparetotal   -7      -70E-1  -> -1

+

+ddcot420 comparetotal   -8.0    -7.0    -> -1

+ddcot421 comparetotal   -8.0    -7      -> -1

+ddcot422 comparetotal   -8      -7.0    -> -1

+ddcot423 comparetotal   -8E+0   -7.0    -> -1

+ddcot424 comparetotal   -80E-1  -7.0    -> -1

+ddcot425 comparetotal   -.8E+1  -7      -> -1

+ddcot426 comparetotal   -80E-1  -7      -> -1

+ddcot427 comparetotal   -8.0    -7E+0   -> -1

+ddcot428 comparetotal   -8.0    -70E-1  -> -1

+ddcot429 comparetotal   -8      -.7E+1  -> -1

+ddcot430 comparetotal   -8      -70E-1  -> -1

+

+ddcot440 comparetotal   -8.0    -9.0    -> 1

+ddcot441 comparetotal   -8.0    -9      -> 1

+ddcot442 comparetotal   -8      -9.0    -> 1

+ddcot443 comparetotal   -8E+0   -9.0    -> 1

+ddcot444 comparetotal   -80E-1  -9.0    -> 1

+ddcot445 comparetotal   -.8E+1  -9      -> 1

+ddcot446 comparetotal   -80E-1  -9      -> 1

+ddcot447 comparetotal   -8.0    -9E+0   -> 1

+ddcot448 comparetotal   -8.0    -90E-1  -> 1

+ddcot449 comparetotal   -8      -.9E+1  -> 1

+ddcot450 comparetotal   -8      -90E-1  -> 1

+

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+ddcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1

+ddcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1

+ddcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1

+ddcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1

+ddcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1

+ddcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1

+ddcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1

+ddcot480 comparetotal 123.456000E+89 123.456E+89 -> -1

+ddcot481 comparetotal 123.45600E-89 123.456E-89 -> -1

+ddcot482 comparetotal 123.4560E+89 123.456E+89 -> -1

+ddcot483 comparetotal 123.456E-89 123.456E-89 -> 0

+ddcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1

+ddcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1

+ddcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1

+ddcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1

+ddcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1

+ddcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1

+ddcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1

+ddcot494 comparetotal 123.456E-89 123.456000E-89 -> 1

+ddcot495 comparetotal 123.456E+89 123.45600E+89 -> 1

+ddcot496 comparetotal 123.456E-89 123.4560E-89 -> 1

+ddcot497 comparetotal 123.456E+89 123.456E+89 -> 0

+

+-- wide-ranging, around precision; signs equal

+ddcot498 comparetotal    1     1E-17    -> 1

+ddcot499 comparetotal    1     1E-16    -> 1

+ddcot500 comparetotal    1     1E-15    -> 1

+ddcot501 comparetotal    1     1E-14    -> 1

+ddcot502 comparetotal    1     1E-13    -> 1

+ddcot503 comparetotal    1     1E-12    -> 1

+ddcot504 comparetotal    1     1E-11    -> 1

+ddcot505 comparetotal    1     1E-10    -> 1

+ddcot506 comparetotal    1     1E-9     -> 1

+ddcot507 comparetotal    1     1E-8     -> 1

+ddcot508 comparetotal    1     1E-7     -> 1

+ddcot509 comparetotal    1     1E-6     -> 1

+ddcot510 comparetotal    1     1E-5     -> 1

+ddcot511 comparetotal    1     1E-4     -> 1

+ddcot512 comparetotal    1     1E-3     -> 1

+ddcot513 comparetotal    1     1E-2     -> 1

+ddcot514 comparetotal    1     1E-1     -> 1

+ddcot515 comparetotal    1     1E-0     -> 0

+ddcot516 comparetotal    1     1E+1     -> -1

+ddcot517 comparetotal    1     1E+2     -> -1

+ddcot518 comparetotal    1     1E+3     -> -1

+ddcot519 comparetotal    1     1E+4     -> -1

+ddcot521 comparetotal    1     1E+5     -> -1

+ddcot522 comparetotal    1     1E+6     -> -1

+ddcot523 comparetotal    1     1E+7     -> -1

+ddcot524 comparetotal    1     1E+8     -> -1

+ddcot525 comparetotal    1     1E+9     -> -1

+ddcot526 comparetotal    1     1E+10    -> -1

+ddcot527 comparetotal    1     1E+11    -> -1

+ddcot528 comparetotal    1     1E+12    -> -1

+ddcot529 comparetotal    1     1E+13    -> -1

+ddcot530 comparetotal    1     1E+14    -> -1

+ddcot531 comparetotal    1     1E+15    -> -1

+ddcot532 comparetotal    1     1E+16    -> -1

+ddcot533 comparetotal    1     1E+17    -> -1

+-- LR swap

+ddcot538 comparetotal    1E-17  1       -> -1

+ddcot539 comparetotal    1E-16  1       -> -1

+ddcot540 comparetotal    1E-15  1       -> -1

+ddcot541 comparetotal    1E-14  1       -> -1

+ddcot542 comparetotal    1E-13  1       -> -1

+ddcot543 comparetotal    1E-12  1       -> -1

+ddcot544 comparetotal    1E-11  1       -> -1

+ddcot545 comparetotal    1E-10  1       -> -1

+ddcot546 comparetotal    1E-9   1       -> -1

+ddcot547 comparetotal    1E-8   1       -> -1

+ddcot548 comparetotal    1E-7   1       -> -1

+ddcot549 comparetotal    1E-6   1       -> -1

+ddcot550 comparetotal    1E-5   1       -> -1

+ddcot551 comparetotal    1E-4   1       -> -1

+ddcot552 comparetotal    1E-3   1       -> -1

+ddcot553 comparetotal    1E-2   1       -> -1

+ddcot554 comparetotal    1E-1   1       -> -1

+ddcot555 comparetotal    1E-0   1       ->  0

+ddcot556 comparetotal    1E+1   1       ->  1

+ddcot557 comparetotal    1E+2   1       ->  1

+ddcot558 comparetotal    1E+3   1       ->  1

+ddcot559 comparetotal    1E+4   1       ->  1

+ddcot561 comparetotal    1E+5   1       ->  1

+ddcot562 comparetotal    1E+6   1       ->  1

+ddcot563 comparetotal    1E+7   1       ->  1

+ddcot564 comparetotal    1E+8   1       ->  1

+ddcot565 comparetotal    1E+9   1       ->  1

+ddcot566 comparetotal    1E+10  1       ->  1

+ddcot567 comparetotal    1E+11  1       ->  1

+ddcot568 comparetotal    1E+12  1       ->  1

+ddcot569 comparetotal    1E+13  1       ->  1

+ddcot570 comparetotal    1E+14  1       ->  1

+ddcot571 comparetotal    1E+15  1       ->  1

+ddcot572 comparetotal    1E+16  1       ->  1

+ddcot573 comparetotal    1E+17  1       ->  1

+-- similar with a useful coefficient, one side only

+ddcot578 comparetotal  0.000000987654321     1E-17    -> 1

+ddcot579 comparetotal  0.000000987654321     1E-16    -> 1

+ddcot580 comparetotal  0.000000987654321     1E-15    -> 1

+ddcot581 comparetotal  0.000000987654321     1E-14    -> 1

+ddcot582 comparetotal  0.000000987654321     1E-13    -> 1

+ddcot583 comparetotal  0.000000987654321     1E-12    -> 1

+ddcot584 comparetotal  0.000000987654321     1E-11    -> 1

+ddcot585 comparetotal  0.000000987654321     1E-10    -> 1

+ddcot586 comparetotal  0.000000987654321     1E-9     -> 1

+ddcot587 comparetotal  0.000000987654321     1E-8     -> 1

+ddcot588 comparetotal  0.000000987654321     1E-7     -> 1

+ddcot589 comparetotal  0.000000987654321     1E-6     -> -1

+ddcot590 comparetotal  0.000000987654321     1E-5     -> -1

+ddcot591 comparetotal  0.000000987654321     1E-4     -> -1

+ddcot592 comparetotal  0.000000987654321     1E-3     -> -1

+ddcot593 comparetotal  0.000000987654321     1E-2     -> -1

+ddcot594 comparetotal  0.000000987654321     1E-1     -> -1

+ddcot595 comparetotal  0.000000987654321     1E-0     -> -1

+ddcot596 comparetotal  0.000000987654321     1E+1     -> -1

+ddcot597 comparetotal  0.000000987654321     1E+2     -> -1

+ddcot598 comparetotal  0.000000987654321     1E+3     -> -1

+ddcot599 comparetotal  0.000000987654321     1E+4     -> -1

+

+-- check some unit-y traps

+ddcot600 comparetotal   12            12.2345 -> -1

+ddcot601 comparetotal   12.0          12.2345 -> -1

+ddcot602 comparetotal   12.00         12.2345 -> -1

+ddcot603 comparetotal   12.000        12.2345 -> -1

+ddcot604 comparetotal   12.0000       12.2345 -> -1

+ddcot605 comparetotal   12.00000      12.2345 -> -1

+ddcot606 comparetotal   12.000000     12.2345 -> -1

+ddcot607 comparetotal   12.0000000    12.2345 -> -1

+ddcot608 comparetotal   12.00000000   12.2345 -> -1

+ddcot609 comparetotal   12.000000000  12.2345 -> -1

+ddcot610 comparetotal   12.1234 12            ->  1

+ddcot611 comparetotal   12.1234 12.0          ->  1

+ddcot612 comparetotal   12.1234 12.00         ->  1

+ddcot613 comparetotal   12.1234 12.000        ->  1

+ddcot614 comparetotal   12.1234 12.0000       ->  1

+ddcot615 comparetotal   12.1234 12.00000      ->  1

+ddcot616 comparetotal   12.1234 12.000000     ->  1

+ddcot617 comparetotal   12.1234 12.0000000    ->  1

+ddcot618 comparetotal   12.1234 12.00000000   ->  1

+ddcot619 comparetotal   12.1234 12.000000000  ->  1

+ddcot620 comparetotal  -12           -12.2345 ->  1

+ddcot621 comparetotal  -12.0         -12.2345 ->  1

+ddcot622 comparetotal  -12.00        -12.2345 ->  1

+ddcot623 comparetotal  -12.000       -12.2345 ->  1

+ddcot624 comparetotal  -12.0000      -12.2345 ->  1

+ddcot625 comparetotal  -12.00000     -12.2345 ->  1

+ddcot626 comparetotal  -12.000000    -12.2345 ->  1

+ddcot627 comparetotal  -12.0000000   -12.2345 ->  1

+ddcot628 comparetotal  -12.00000000  -12.2345 ->  1

+ddcot629 comparetotal  -12.000000000 -12.2345 ->  1

+ddcot630 comparetotal  -12.1234 -12           -> -1

+ddcot631 comparetotal  -12.1234 -12.0         -> -1

+ddcot632 comparetotal  -12.1234 -12.00        -> -1

+ddcot633 comparetotal  -12.1234 -12.000       -> -1

+ddcot634 comparetotal  -12.1234 -12.0000      -> -1

+ddcot635 comparetotal  -12.1234 -12.00000     -> -1

+ddcot636 comparetotal  -12.1234 -12.000000    -> -1

+ddcot637 comparetotal  -12.1234 -12.0000000   -> -1

+ddcot638 comparetotal  -12.1234 -12.00000000  -> -1

+ddcot639 comparetotal  -12.1234 -12.000000000 -> -1

+

+-- extended zeros

+ddcot640 comparetotal   0     0   -> 0

+ddcot641 comparetotal   0    -0   -> 1

+ddcot642 comparetotal   0    -0.0 -> 1

+ddcot643 comparetotal   0     0.0 -> 1

+ddcot644 comparetotal  -0     0   -> -1

+ddcot645 comparetotal  -0    -0   -> 0

+ddcot646 comparetotal  -0    -0.0 -> -1

+ddcot647 comparetotal  -0     0.0 -> -1

+ddcot648 comparetotal   0.0   0   -> -1

+ddcot649 comparetotal   0.0  -0   -> 1

+ddcot650 comparetotal   0.0  -0.0 -> 1

+ddcot651 comparetotal   0.0   0.0 -> 0

+ddcot652 comparetotal  -0.0   0   -> -1

+ddcot653 comparetotal  -0.0  -0   -> 1

+ddcot654 comparetotal  -0.0  -0.0 -> 0

+ddcot655 comparetotal  -0.0   0.0 -> -1

+

+ddcot656 comparetotal  -0E1   0.0 -> -1

+ddcot657 comparetotal  -0E2   0.0 -> -1

+ddcot658 comparetotal   0E1   0.0 -> 1

+ddcot659 comparetotal   0E2   0.0 -> 1

+ddcot660 comparetotal  -0E1   0   -> -1

+ddcot661 comparetotal  -0E2   0   -> -1

+ddcot662 comparetotal   0E1   0   -> 1

+ddcot663 comparetotal   0E2   0   -> 1

+ddcot664 comparetotal  -0E1  -0E1 -> 0

+ddcot665 comparetotal  -0E2  -0E1 -> -1

+ddcot666 comparetotal   0E1  -0E1 -> 1

+ddcot667 comparetotal   0E2  -0E1 -> 1

+ddcot668 comparetotal  -0E1  -0E2 -> 1

+ddcot669 comparetotal  -0E2  -0E2 -> 0

+ddcot670 comparetotal   0E1  -0E2 -> 1

+ddcot671 comparetotal   0E2  -0E2 -> 1

+ddcot672 comparetotal  -0E1   0E1 -> -1

+ddcot673 comparetotal  -0E2   0E1 -> -1

+ddcot674 comparetotal   0E1   0E1 -> 0

+ddcot675 comparetotal   0E2   0E1 -> 1

+ddcot676 comparetotal  -0E1   0E2 -> -1

+ddcot677 comparetotal  -0E2   0E2 -> -1

+ddcot678 comparetotal   0E1   0E2 -> -1

+ddcot679 comparetotal   0E2   0E2 -> 0

+

+-- trailing zeros; unit-y

+ddcot680 comparetotal   12    12           -> 0

+ddcot681 comparetotal   12    12.0         -> 1

+ddcot682 comparetotal   12    12.00        -> 1

+ddcot683 comparetotal   12    12.000       -> 1

+ddcot684 comparetotal   12    12.0000      -> 1

+ddcot685 comparetotal   12    12.00000     -> 1

+ddcot686 comparetotal   12    12.000000    -> 1

+ddcot687 comparetotal   12    12.0000000   -> 1

+ddcot688 comparetotal   12    12.00000000  -> 1

+ddcot689 comparetotal   12    12.000000000 -> 1

+ddcot690 comparetotal   12              12 -> 0

+ddcot691 comparetotal   12.0            12 -> -1

+ddcot692 comparetotal   12.00           12 -> -1

+ddcot693 comparetotal   12.000          12 -> -1

+ddcot694 comparetotal   12.0000         12 -> -1

+ddcot695 comparetotal   12.00000        12 -> -1

+ddcot696 comparetotal   12.000000       12 -> -1

+ddcot697 comparetotal   12.0000000      12 -> -1

+ddcot698 comparetotal   12.00000000     12 -> -1

+ddcot699 comparetotal   12.000000000    12 -> -1

+

+-- old long operand checks

+ddcot701 comparetotal 12345678000  1 ->  1

+ddcot702 comparetotal 1 12345678000  -> -1

+ddcot703 comparetotal 1234567800   1 ->  1

+ddcot704 comparetotal 1 1234567800   -> -1

+ddcot705 comparetotal 1234567890   1 ->  1

+ddcot706 comparetotal 1 1234567890   -> -1

+ddcot707 comparetotal 1234567891   1 ->  1

+ddcot708 comparetotal 1 1234567891   -> -1

+ddcot709 comparetotal 12345678901  1 ->  1

+ddcot710 comparetotal 1 12345678901  -> -1

+ddcot711 comparetotal 1234567896   1 ->  1

+ddcot712 comparetotal 1 1234567896   -> -1

+ddcot713 comparetotal -1234567891  1 -> -1

+ddcot714 comparetotal 1 -1234567891  ->  1

+ddcot715 comparetotal -12345678901 1 -> -1

+ddcot716 comparetotal 1 -12345678901 ->  1

+ddcot717 comparetotal -1234567896  1 -> -1

+ddcot718 comparetotal 1 -1234567896  ->  1

+

+-- old residue cases

+ddcot740 comparetotal  1  0.9999999  -> 1

+ddcot741 comparetotal  1  0.999999   -> 1

+ddcot742 comparetotal  1  0.99999    -> 1

+ddcot743 comparetotal  1  1.0000     -> 1

+ddcot744 comparetotal  1  1.00001    -> -1

+ddcot745 comparetotal  1  1.000001   -> -1

+ddcot746 comparetotal  1  1.0000001  -> -1

+ddcot750 comparetotal  0.9999999  1  -> -1

+ddcot751 comparetotal  0.999999   1  -> -1

+ddcot752 comparetotal  0.99999    1  -> -1

+ddcot753 comparetotal  1.0000     1  -> -1

+ddcot754 comparetotal  1.00001    1  -> 1

+ddcot755 comparetotal  1.000001   1  -> 1

+ddcot756 comparetotal  1.0000001  1  -> 1

+

+-- Specials

+ddcot780 comparetotal  Inf  -Inf   ->  1

+ddcot781 comparetotal  Inf  -1000  ->  1

+ddcot782 comparetotal  Inf  -1     ->  1

+ddcot783 comparetotal  Inf  -0     ->  1

+ddcot784 comparetotal  Inf   0     ->  1

+ddcot785 comparetotal  Inf   1     ->  1

+ddcot786 comparetotal  Inf   1000  ->  1

+ddcot787 comparetotal  Inf   Inf   ->  0

+ddcot788 comparetotal -1000  Inf   -> -1

+ddcot789 comparetotal -Inf   Inf   -> -1

+ddcot790 comparetotal -1     Inf   -> -1

+ddcot791 comparetotal -0     Inf   -> -1

+ddcot792 comparetotal  0     Inf   -> -1

+ddcot793 comparetotal  1     Inf   -> -1

+ddcot794 comparetotal  1000  Inf   -> -1

+ddcot795 comparetotal  Inf   Inf   ->  0

+

+ddcot800 comparetotal -Inf  -Inf   ->  0

+ddcot801 comparetotal -Inf  -1000  -> -1

+ddcot802 comparetotal -Inf  -1     -> -1

+ddcot803 comparetotal -Inf  -0     -> -1

+ddcot804 comparetotal -Inf   0     -> -1

+ddcot805 comparetotal -Inf   1     -> -1

+ddcot806 comparetotal -Inf   1000  -> -1

+ddcot807 comparetotal -Inf   Inf   -> -1

+ddcot808 comparetotal -Inf  -Inf   ->  0

+ddcot809 comparetotal -1000 -Inf   ->  1

+ddcot810 comparetotal -1    -Inf   ->  1

+ddcot811 comparetotal -0    -Inf   ->  1

+ddcot812 comparetotal  0    -Inf   ->  1

+ddcot813 comparetotal  1    -Inf   ->  1

+ddcot814 comparetotal  1000 -Inf   ->  1

+ddcot815 comparetotal  Inf  -Inf   ->  1

+

+ddcot821 comparetotal  NaN -Inf    ->  1

+ddcot822 comparetotal  NaN -1000   ->  1

+ddcot823 comparetotal  NaN -1      ->  1

+ddcot824 comparetotal  NaN -0      ->  1

+ddcot825 comparetotal  NaN  0      ->  1

+ddcot826 comparetotal  NaN  1      ->  1

+ddcot827 comparetotal  NaN  1000   ->  1

+ddcot828 comparetotal  NaN  Inf    ->  1

+ddcot829 comparetotal  NaN  NaN    ->  0

+ddcot830 comparetotal -Inf  NaN    ->  -1

+ddcot831 comparetotal -1000 NaN    ->  -1

+ddcot832 comparetotal -1    NaN    ->  -1

+ddcot833 comparetotal -0    NaN    ->  -1

+ddcot834 comparetotal  0    NaN    ->  -1

+ddcot835 comparetotal  1    NaN    ->  -1

+ddcot836 comparetotal  1000 NaN    ->  -1

+ddcot837 comparetotal  Inf  NaN    ->  -1

+ddcot838 comparetotal -NaN -NaN    ->  0

+ddcot839 comparetotal +NaN -NaN    ->  1

+ddcot840 comparetotal -NaN +NaN    ->  -1

+

+ddcot841 comparetotal  sNaN -sNaN  ->  1

+ddcot842 comparetotal  sNaN -NaN   ->  1

+ddcot843 comparetotal  sNaN -Inf   ->  1

+ddcot844 comparetotal  sNaN -1000  ->  1

+ddcot845 comparetotal  sNaN -1     ->  1

+ddcot846 comparetotal  sNaN -0     ->  1

+ddcot847 comparetotal  sNaN  0     ->  1

+ddcot848 comparetotal  sNaN  1     ->  1

+ddcot849 comparetotal  sNaN  1000  ->  1

+ddcot850 comparetotal  sNaN  NaN   ->  -1

+ddcot851 comparetotal  sNaN sNaN   ->  0

+

+ddcot852 comparetotal -sNaN sNaN   ->  -1

+ddcot853 comparetotal -NaN  sNaN   ->  -1

+ddcot854 comparetotal -Inf  sNaN   ->  -1

+ddcot855 comparetotal -1000 sNaN   ->  -1

+ddcot856 comparetotal -1    sNaN   ->  -1

+ddcot857 comparetotal -0    sNaN   ->  -1

+ddcot858 comparetotal  0    sNaN   ->  -1

+ddcot859 comparetotal  1    sNaN   ->  -1

+ddcot860 comparetotal  1000 sNaN   ->  -1

+ddcot861 comparetotal  Inf  sNaN   ->  -1

+ddcot862 comparetotal  NaN  sNaN   ->  1

+ddcot863 comparetotal  sNaN sNaN   ->  0

+

+ddcot871 comparetotal  -sNaN -sNaN  ->  0

+ddcot872 comparetotal  -sNaN -NaN   ->  1

+ddcot873 comparetotal  -sNaN -Inf   ->  -1

+ddcot874 comparetotal  -sNaN -1000  ->  -1

+ddcot875 comparetotal  -sNaN -1     ->  -1

+ddcot876 comparetotal  -sNaN -0     ->  -1

+ddcot877 comparetotal  -sNaN  0     ->  -1

+ddcot878 comparetotal  -sNaN  1     ->  -1

+ddcot879 comparetotal  -sNaN  1000  ->  -1

+ddcot880 comparetotal  -sNaN  NaN   ->  -1

+ddcot881 comparetotal  -sNaN sNaN   ->  -1

+

+ddcot882 comparetotal -sNaN -sNaN   ->  0

+ddcot883 comparetotal -NaN  -sNaN   ->  -1

+ddcot884 comparetotal -Inf  -sNaN   ->  1

+ddcot885 comparetotal -1000 -sNaN   ->  1

+ddcot886 comparetotal -1    -sNaN   ->  1

+ddcot887 comparetotal -0    -sNaN   ->  1

+ddcot888 comparetotal  0    -sNaN   ->  1

+ddcot889 comparetotal  1    -sNaN   ->  1

+ddcot890 comparetotal  1000 -sNaN   ->  1

+ddcot891 comparetotal  Inf  -sNaN   ->  1

+ddcot892 comparetotal  NaN  -sNaN   ->  1

+ddcot893 comparetotal  sNaN -sNaN   ->  1

+

+-- NaNs with payload

+ddcot960 comparetotal  NaN9 -Inf   ->  1

+ddcot961 comparetotal  NaN8  999   ->  1

+ddcot962 comparetotal  NaN77 Inf   ->  1

+ddcot963 comparetotal -NaN67 NaN5  ->  -1

+ddcot964 comparetotal -Inf  -NaN4  ->  1

+ddcot965 comparetotal -999  -NaN33 ->  1

+ddcot966 comparetotal  Inf   NaN2  ->  -1

+

+ddcot970 comparetotal -NaN41 -NaN42 -> 1

+ddcot971 comparetotal +NaN41 -NaN42 -> 1

+ddcot972 comparetotal -NaN41 +NaN42 -> -1

+ddcot973 comparetotal +NaN41 +NaN42 -> -1

+ddcot974 comparetotal -NaN42 -NaN01 -> -1

+ddcot975 comparetotal +NaN42 -NaN01 ->  1

+ddcot976 comparetotal -NaN42 +NaN01 -> -1

+ddcot977 comparetotal +NaN42 +NaN01 ->  1

+

+ddcot980 comparetotal -sNaN771 -sNaN772 -> 1

+ddcot981 comparetotal +sNaN771 -sNaN772 -> 1

+ddcot982 comparetotal -sNaN771 +sNaN772 -> -1

+ddcot983 comparetotal +sNaN771 +sNaN772 -> -1

+ddcot984 comparetotal -sNaN772 -sNaN771 -> -1

+ddcot985 comparetotal +sNaN772 -sNaN771 ->  1

+ddcot986 comparetotal -sNaN772 +sNaN771 -> -1

+ddcot987 comparetotal +sNaN772 +sNaN771 ->  1

+

+ddcot991 comparetotal -sNaN99 -Inf    -> -1

+ddcot992 comparetotal  sNaN98 -11     ->  1

+ddcot993 comparetotal  sNaN97  NaN    -> -1

+ddcot994 comparetotal  sNaN16 sNaN94  -> -1

+ddcot995 comparetotal  NaN85  sNaN83  ->  1

+ddcot996 comparetotal -Inf    sNaN92  -> -1

+ddcot997 comparetotal  088    sNaN81  -> -1

+ddcot998 comparetotal  Inf    sNaN90  -> -1

+ddcot999 comparetotal  NaN   -sNaN89  ->  1

+

+-- spread zeros

+ddcot1110 comparetotal   0E-383  0       -> -1

+ddcot1111 comparetotal   0E-383 -0       ->  1

+ddcot1112 comparetotal  -0E-383  0       -> -1

+ddcot1113 comparetotal  -0E-383 -0       ->  1

+ddcot1114 comparetotal   0E-383  0E+384  -> -1

+ddcot1115 comparetotal   0E-383 -0E+384  ->  1

+ddcot1116 comparetotal  -0E-383  0E+384  -> -1

+ddcot1117 comparetotal  -0E-383 -0E+384  ->  1

+ddcot1118 comparetotal   0       0E+384  -> -1

+ddcot1119 comparetotal   0      -0E+384  ->  1

+ddcot1120 comparetotal  -0       0E+384  -> -1

+ddcot1121 comparetotal  -0      -0E+384  ->  1

+

+ddcot1130 comparetotal   0E+384  0       ->  1

+ddcot1131 comparetotal   0E+384 -0       ->  1

+ddcot1132 comparetotal  -0E+384  0       -> -1

+ddcot1133 comparetotal  -0E+384 -0       -> -1

+ddcot1134 comparetotal   0E+384  0E-383  ->  1

+ddcot1135 comparetotal   0E+384 -0E-383  ->  1

+ddcot1136 comparetotal  -0E+384  0E-383  -> -1

+ddcot1137 comparetotal  -0E+384 -0E-383  -> -1

+ddcot1138 comparetotal   0       0E-383  ->  1

+ddcot1139 comparetotal   0      -0E-383  ->  1

+ddcot1140 comparetotal  -0       0E-383  -> -1

+ddcot1141 comparetotal  -0      -0E-383  -> -1

+

+-- Null tests

+ddcot9990 comparetotal 10  # -> NaN Invalid_operation

+ddcot9991 comparetotal  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddCompareTotalMag.decTest b/Lib/test/decimaltestdata/ddCompareTotalMag.decTest
new file mode 100644
index 0000000..e93a749
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCompareTotalMag.decTest
@@ -0,0 +1,706 @@
+------------------------------------------------------------------------

+-- ddCompareTotalMag.decTest -- decDouble comparison; abs. total order--

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+-- Similarly, comparetotal will have some radically different paths

+-- than compare.

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddctm001 comparetotmag  -2  -2   ->   0

+ddctm002 comparetotmag  -2  -1   ->   1

+ddctm003 comparetotmag  -2   0   ->   1

+ddctm004 comparetotmag  -2   1   ->   1

+ddctm005 comparetotmag  -2   2   ->   0

+ddctm006 comparetotmag  -1  -2   ->  -1

+ddctm007 comparetotmag  -1  -1   ->   0

+ddctm008 comparetotmag  -1   0   ->   1

+ddctm009 comparetotmag  -1   1   ->   0

+ddctm010 comparetotmag  -1   2   ->  -1

+ddctm011 comparetotmag   0  -2   ->  -1

+ddctm012 comparetotmag   0  -1   ->  -1

+ddctm013 comparetotmag   0   0   ->   0

+ddctm014 comparetotmag   0   1   ->  -1

+ddctm015 comparetotmag   0   2   ->  -1

+ddctm016 comparetotmag   1  -2   ->  -1

+ddctm017 comparetotmag   1  -1   ->   0

+ddctm018 comparetotmag   1   0   ->   1

+ddctm019 comparetotmag   1   1   ->   0

+ddctm020 comparetotmag   1   2   ->  -1

+ddctm021 comparetotmag   2  -2   ->   0

+ddctm022 comparetotmag   2  -1   ->   1

+ddctm023 comparetotmag   2   0   ->   1

+ddctm025 comparetotmag   2   1   ->   1

+ddctm026 comparetotmag   2   2   ->   0

+

+ddctm031 comparetotmag  -20  -20   ->   0

+ddctm032 comparetotmag  -20  -10   ->   1

+ddctm033 comparetotmag  -20   00   ->   1

+ddctm034 comparetotmag  -20   10   ->   1

+ddctm035 comparetotmag  -20   20   ->   0

+ddctm036 comparetotmag  -10  -20   ->  -1

+ddctm037 comparetotmag  -10  -10   ->   0

+ddctm038 comparetotmag  -10   00   ->   1

+ddctm039 comparetotmag  -10   10   ->   0

+ddctm040 comparetotmag  -10   20   ->  -1

+ddctm041 comparetotmag   00  -20   ->  -1

+ddctm042 comparetotmag   00  -10   ->  -1

+ddctm043 comparetotmag   00   00   ->   0

+ddctm044 comparetotmag   00   10   ->  -1

+ddctm045 comparetotmag   00   20   ->  -1

+ddctm046 comparetotmag   10  -20   ->  -1

+ddctm047 comparetotmag   10  -10   ->   0

+ddctm048 comparetotmag   10   00   ->   1

+ddctm049 comparetotmag   10   10   ->   0

+ddctm050 comparetotmag   10   20   ->  -1

+ddctm051 comparetotmag   20  -20   ->   0

+ddctm052 comparetotmag   20  -10   ->   1

+ddctm053 comparetotmag   20   00   ->   1

+ddctm055 comparetotmag   20   10   ->   1

+ddctm056 comparetotmag   20   20   ->   0

+

+ddctm061 comparetotmag  -2.0  -2.0   ->   0

+ddctm062 comparetotmag  -2.0  -1.0   ->   1

+ddctm063 comparetotmag  -2.0   0.0   ->   1

+ddctm064 comparetotmag  -2.0   1.0   ->   1

+ddctm065 comparetotmag  -2.0   2.0   ->   0

+ddctm066 comparetotmag  -1.0  -2.0   ->  -1

+ddctm067 comparetotmag  -1.0  -1.0   ->   0

+ddctm068 comparetotmag  -1.0   0.0   ->   1

+ddctm069 comparetotmag  -1.0   1.0   ->   0

+ddctm070 comparetotmag  -1.0   2.0   ->  -1

+ddctm071 comparetotmag   0.0  -2.0   ->  -1

+ddctm072 comparetotmag   0.0  -1.0   ->  -1

+ddctm073 comparetotmag   0.0   0.0   ->   0

+ddctm074 comparetotmag   0.0   1.0   ->  -1

+ddctm075 comparetotmag   0.0   2.0   ->  -1

+ddctm076 comparetotmag   1.0  -2.0   ->  -1

+ddctm077 comparetotmag   1.0  -1.0   ->   0

+ddctm078 comparetotmag   1.0   0.0   ->   1

+ddctm079 comparetotmag   1.0   1.0   ->   0

+ddctm080 comparetotmag   1.0   2.0   ->  -1

+ddctm081 comparetotmag   2.0  -2.0   ->   0

+ddctm082 comparetotmag   2.0  -1.0   ->   1

+ddctm083 comparetotmag   2.0   0.0   ->   1

+ddctm085 comparetotmag   2.0   1.0   ->   1

+ddctm086 comparetotmag   2.0   2.0   ->   0

+

+-- now some cases which might overflow if subtract were used

+ddctm090 comparetotmag  9.99999999E+384 9.99999999E+384   ->   0

+ddctm091 comparetotmag -9.99999999E+384 9.99999999E+384   ->   0

+ddctm092 comparetotmag  9.99999999E+384 -9.99999999E+384  ->   0

+ddctm093 comparetotmag -9.99999999E+384 -9.99999999E+384  ->   0

+

+-- some differing length/exponent cases

+-- in this first group, compare would compare all equal

+ddctm100 comparetotmag   7.0    7.0     ->   0

+ddctm101 comparetotmag   7.0    7       ->  -1

+ddctm102 comparetotmag   7      7.0     ->   1

+ddctm103 comparetotmag   7E+0   7.0     ->   1

+ddctm104 comparetotmag   70E-1  7.0     ->   0

+ddctm105 comparetotmag   0.7E+1 7       ->   0

+ddctm106 comparetotmag   70E-1  7       ->  -1

+ddctm107 comparetotmag   7.0    7E+0    ->  -1

+ddctm108 comparetotmag   7.0    70E-1   ->   0

+ddctm109 comparetotmag   7      0.7E+1  ->   0

+ddctm110 comparetotmag   7      70E-1   ->   1

+

+ddctm120 comparetotmag   8.0    7.0     ->   1

+ddctm121 comparetotmag   8.0    7       ->   1

+ddctm122 comparetotmag   8      7.0     ->   1

+ddctm123 comparetotmag   8E+0   7.0     ->   1

+ddctm124 comparetotmag   80E-1  7.0     ->   1

+ddctm125 comparetotmag   0.8E+1 7       ->   1

+ddctm126 comparetotmag   80E-1  7       ->   1

+ddctm127 comparetotmag   8.0    7E+0    ->   1

+ddctm128 comparetotmag   8.0    70E-1   ->   1

+ddctm129 comparetotmag   8      0.7E+1   ->   1

+ddctm130 comparetotmag   8      70E-1   ->   1

+

+ddctm140 comparetotmag   8.0    9.0     ->  -1

+ddctm141 comparetotmag   8.0    9       ->  -1

+ddctm142 comparetotmag   8      9.0     ->  -1

+ddctm143 comparetotmag   8E+0   9.0     ->  -1

+ddctm144 comparetotmag   80E-1  9.0     ->  -1

+ddctm145 comparetotmag   0.8E+1 9       ->  -1

+ddctm146 comparetotmag   80E-1  9       ->  -1

+ddctm147 comparetotmag   8.0    9E+0    ->  -1

+ddctm148 comparetotmag   8.0    90E-1   ->  -1

+ddctm149 comparetotmag   8      0.9E+1  ->  -1

+ddctm150 comparetotmag   8      90E-1   ->  -1

+

+-- and again, with sign changes -+ ..

+ddctm200 comparetotmag  -7.0    7.0     ->   0

+ddctm201 comparetotmag  -7.0    7       ->  -1

+ddctm202 comparetotmag  -7      7.0     ->   1

+ddctm203 comparetotmag  -7E+0   7.0     ->   1

+ddctm204 comparetotmag  -70E-1  7.0     ->   0

+ddctm205 comparetotmag  -0.7E+1 7       ->   0

+ddctm206 comparetotmag  -70E-1  7       ->  -1

+ddctm207 comparetotmag  -7.0    7E+0    ->  -1

+ddctm208 comparetotmag  -7.0    70E-1   ->   0

+ddctm209 comparetotmag  -7      0.7E+1  ->   0

+ddctm210 comparetotmag  -7      70E-1   ->   1

+

+ddctm220 comparetotmag  -8.0    7.0     ->   1

+ddctm221 comparetotmag  -8.0    7       ->   1

+ddctm222 comparetotmag  -8      7.0     ->   1

+ddctm223 comparetotmag  -8E+0   7.0     ->   1

+ddctm224 comparetotmag  -80E-1  7.0     ->   1

+ddctm225 comparetotmag  -0.8E+1 7       ->   1

+ddctm226 comparetotmag  -80E-1  7       ->   1

+ddctm227 comparetotmag  -8.0    7E+0    ->   1

+ddctm228 comparetotmag  -8.0    70E-1   ->   1

+ddctm229 comparetotmag  -8      0.7E+1  ->   1

+ddctm230 comparetotmag  -8      70E-1   ->   1

+

+ddctm240 comparetotmag  -8.0    9.0     ->  -1

+ddctm241 comparetotmag  -8.0    9       ->  -1

+ddctm242 comparetotmag  -8      9.0     ->  -1

+ddctm243 comparetotmag  -8E+0   9.0     ->  -1

+ddctm244 comparetotmag  -80E-1  9.0     ->  -1

+ddctm245 comparetotmag  -0.8E+1 9       ->  -1

+ddctm246 comparetotmag  -80E-1  9       ->  -1

+ddctm247 comparetotmag  -8.0    9E+0    ->  -1

+ddctm248 comparetotmag  -8.0    90E-1   ->  -1

+ddctm249 comparetotmag  -8      0.9E+1  ->  -1

+ddctm250 comparetotmag  -8      90E-1   ->  -1

+

+-- and again, with sign changes +- ..

+ddctm300 comparetotmag   7.0    -7.0     ->   0

+ddctm301 comparetotmag   7.0    -7       ->  -1

+ddctm302 comparetotmag   7      -7.0     ->   1

+ddctm303 comparetotmag   7E+0   -7.0     ->   1

+ddctm304 comparetotmag   70E-1  -7.0     ->   0

+ddctm305 comparetotmag   .7E+1  -7       ->   0

+ddctm306 comparetotmag   70E-1  -7       ->  -1

+ddctm307 comparetotmag   7.0    -7E+0    ->  -1

+ddctm308 comparetotmag   7.0    -70E-1   ->   0

+ddctm309 comparetotmag   7      -.7E+1   ->   0

+ddctm310 comparetotmag   7      -70E-1   ->   1

+

+ddctm320 comparetotmag   8.0    -7.0     ->   1

+ddctm321 comparetotmag   8.0    -7       ->   1

+ddctm322 comparetotmag   8      -7.0     ->   1

+ddctm323 comparetotmag   8E+0   -7.0     ->   1

+ddctm324 comparetotmag   80E-1  -7.0     ->   1

+ddctm325 comparetotmag   .8E+1  -7       ->   1

+ddctm326 comparetotmag   80E-1  -7       ->   1

+ddctm327 comparetotmag   8.0    -7E+0    ->   1

+ddctm328 comparetotmag   8.0    -70E-1   ->   1

+ddctm329 comparetotmag   8      -.7E+1   ->   1

+ddctm330 comparetotmag   8      -70E-1   ->   1

+

+ddctm340 comparetotmag   8.0    -9.0     ->  -1

+ddctm341 comparetotmag   8.0    -9       ->  -1

+ddctm342 comparetotmag   8      -9.0     ->  -1

+ddctm343 comparetotmag   8E+0   -9.0     ->  -1

+ddctm344 comparetotmag   80E-1  -9.0     ->  -1

+ddctm345 comparetotmag   .8E+1  -9       ->  -1

+ddctm346 comparetotmag   80E-1  -9       ->  -1

+ddctm347 comparetotmag   8.0    -9E+0    ->  -1

+ddctm348 comparetotmag   8.0    -90E-1   ->  -1

+ddctm349 comparetotmag   8      -.9E+1   ->  -1

+ddctm350 comparetotmag   8      -90E-1   ->  -1

+

+-- and again, with sign changes -- ..

+ddctm400 comparetotmag   -7.0    -7.0     ->   0

+ddctm401 comparetotmag   -7.0    -7       ->  -1

+ddctm402 comparetotmag   -7      -7.0     ->   1

+ddctm403 comparetotmag   -7E+0   -7.0     ->   1

+ddctm404 comparetotmag   -70E-1  -7.0     ->   0

+ddctm405 comparetotmag   -.7E+1  -7       ->   0

+ddctm406 comparetotmag   -70E-1  -7       ->  -1

+ddctm407 comparetotmag   -7.0    -7E+0    ->  -1

+ddctm408 comparetotmag   -7.0    -70E-1   ->   0

+ddctm409 comparetotmag   -7      -.7E+1   ->   0

+ddctm410 comparetotmag   -7      -70E-1   ->   1

+

+ddctm420 comparetotmag   -8.0    -7.0     ->   1

+ddctm421 comparetotmag   -8.0    -7       ->   1

+ddctm422 comparetotmag   -8      -7.0     ->   1

+ddctm423 comparetotmag   -8E+0   -7.0     ->   1

+ddctm424 comparetotmag   -80E-1  -7.0     ->   1

+ddctm425 comparetotmag   -.8E+1  -7       ->   1

+ddctm426 comparetotmag   -80E-1  -7       ->   1

+ddctm427 comparetotmag   -8.0    -7E+0    ->   1

+ddctm428 comparetotmag   -8.0    -70E-1   ->   1

+ddctm429 comparetotmag   -8      -.7E+1   ->   1

+ddctm430 comparetotmag   -8      -70E-1   ->   1

+

+ddctm440 comparetotmag   -8.0    -9.0     ->  -1

+ddctm441 comparetotmag   -8.0    -9       ->  -1

+ddctm442 comparetotmag   -8      -9.0     ->  -1

+ddctm443 comparetotmag   -8E+0   -9.0     ->  -1

+ddctm444 comparetotmag   -80E-1  -9.0     ->  -1

+ddctm445 comparetotmag   -.8E+1  -9       ->  -1

+ddctm446 comparetotmag   -80E-1  -9       ->  -1

+ddctm447 comparetotmag   -8.0    -9E+0    ->  -1

+ddctm448 comparetotmag   -8.0    -90E-1   ->  -1

+ddctm449 comparetotmag   -8      -.9E+1   ->  -1

+ddctm450 comparetotmag   -8      -90E-1   ->  -1

+

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+ddctm473 comparetotmag 123.4560000000000E-89 123.456E-89  ->  -1

+ddctm474 comparetotmag 123.456000000000E+89 123.456E+89  ->  -1

+ddctm475 comparetotmag 123.45600000000E-89 123.456E-89  ->  -1

+ddctm476 comparetotmag 123.4560000000E+89 123.456E+89  ->  -1

+ddctm477 comparetotmag 123.456000000E-89 123.456E-89  ->  -1

+ddctm478 comparetotmag 123.45600000E+89 123.456E+89  ->  -1

+ddctm479 comparetotmag 123.4560000E-89 123.456E-89  ->  -1

+ddctm480 comparetotmag 123.456000E+89 123.456E+89  ->  -1

+ddctm481 comparetotmag 123.45600E-89 123.456E-89  ->  -1

+ddctm482 comparetotmag 123.4560E+89 123.456E+89  ->  -1

+ddctm483 comparetotmag 123.456E-89 123.456E-89  ->   0

+ddctm487 comparetotmag 123.456E+89 123.4560000000000E+89  ->   1

+ddctm488 comparetotmag 123.456E-89 123.456000000000E-89  ->   1

+ddctm489 comparetotmag 123.456E+89 123.45600000000E+89  ->   1

+ddctm490 comparetotmag 123.456E-89 123.4560000000E-89  ->   1

+ddctm491 comparetotmag 123.456E+89 123.456000000E+89  ->   1

+ddctm492 comparetotmag 123.456E-89 123.45600000E-89  ->   1

+ddctm493 comparetotmag 123.456E+89 123.4560000E+89  ->   1

+ddctm494 comparetotmag 123.456E-89 123.456000E-89  ->   1

+ddctm495 comparetotmag 123.456E+89 123.45600E+89  ->   1

+ddctm496 comparetotmag 123.456E-89 123.4560E-89  ->   1

+ddctm497 comparetotmag 123.456E+89 123.456E+89  ->   0

+

+-- wide-ranging, around precision; signs equal

+ddctm498 comparetotmag    1     1E-17     ->   1

+ddctm499 comparetotmag    1     1E-16     ->   1

+ddctm500 comparetotmag    1     1E-15     ->   1

+ddctm501 comparetotmag    1     1E-14     ->   1

+ddctm502 comparetotmag    1     1E-13     ->   1

+ddctm503 comparetotmag    1     1E-12     ->   1

+ddctm504 comparetotmag    1     1E-11     ->   1

+ddctm505 comparetotmag    1     1E-10     ->   1

+ddctm506 comparetotmag    1     1E-9      ->   1

+ddctm507 comparetotmag    1     1E-8      ->   1

+ddctm508 comparetotmag    1     1E-7      ->   1

+ddctm509 comparetotmag    1     1E-6      ->   1

+ddctm510 comparetotmag    1     1E-5      ->   1

+ddctm511 comparetotmag    1     1E-4      ->   1

+ddctm512 comparetotmag    1     1E-3      ->   1

+ddctm513 comparetotmag    1     1E-2      ->   1

+ddctm514 comparetotmag    1     1E-1      ->   1

+ddctm515 comparetotmag    1     1E-0      ->   0

+ddctm516 comparetotmag    1     1E+1      ->  -1

+ddctm517 comparetotmag    1     1E+2      ->  -1

+ddctm518 comparetotmag    1     1E+3      ->  -1

+ddctm519 comparetotmag    1     1E+4      ->  -1

+ddctm521 comparetotmag    1     1E+5      ->  -1

+ddctm522 comparetotmag    1     1E+6      ->  -1

+ddctm523 comparetotmag    1     1E+7      ->  -1

+ddctm524 comparetotmag    1     1E+8      ->  -1

+ddctm525 comparetotmag    1     1E+9      ->  -1

+ddctm526 comparetotmag    1     1E+10     ->  -1

+ddctm527 comparetotmag    1     1E+11     ->  -1

+ddctm528 comparetotmag    1     1E+12     ->  -1

+ddctm529 comparetotmag    1     1E+13     ->  -1

+ddctm530 comparetotmag    1     1E+14     ->  -1

+ddctm531 comparetotmag    1     1E+15     ->  -1

+ddctm532 comparetotmag    1     1E+16     ->  -1

+ddctm533 comparetotmag    1     1E+17     ->  -1

+-- LR swap

+ddctm538 comparetotmag    1E-17  1        ->  -1

+ddctm539 comparetotmag    1E-16  1        ->  -1

+ddctm540 comparetotmag    1E-15  1        ->  -1

+ddctm541 comparetotmag    1E-14  1        ->  -1

+ddctm542 comparetotmag    1E-13  1        ->  -1

+ddctm543 comparetotmag    1E-12  1        ->  -1

+ddctm544 comparetotmag    1E-11  1        ->  -1

+ddctm545 comparetotmag    1E-10  1        ->  -1

+ddctm546 comparetotmag    1E-9   1        ->  -1

+ddctm547 comparetotmag    1E-8   1        ->  -1

+ddctm548 comparetotmag    1E-7   1        ->  -1

+ddctm549 comparetotmag    1E-6   1        ->  -1

+ddctm550 comparetotmag    1E-5   1        ->  -1

+ddctm551 comparetotmag    1E-4   1        ->  -1

+ddctm552 comparetotmag    1E-3   1        ->  -1

+ddctm553 comparetotmag    1E-2   1        ->  -1

+ddctm554 comparetotmag    1E-1   1        ->  -1

+ddctm555 comparetotmag    1E-0   1        ->   0

+ddctm556 comparetotmag    1E+1   1        ->   1

+ddctm557 comparetotmag    1E+2   1        ->   1

+ddctm558 comparetotmag    1E+3   1        ->   1

+ddctm559 comparetotmag    1E+4   1        ->   1

+ddctm561 comparetotmag    1E+5   1        ->   1

+ddctm562 comparetotmag    1E+6   1        ->   1

+ddctm563 comparetotmag    1E+7   1        ->   1

+ddctm564 comparetotmag    1E+8   1        ->   1

+ddctm565 comparetotmag    1E+9   1        ->   1

+ddctm566 comparetotmag    1E+10  1        ->   1

+ddctm567 comparetotmag    1E+11  1        ->   1

+ddctm568 comparetotmag    1E+12  1        ->   1

+ddctm569 comparetotmag    1E+13  1        ->   1

+ddctm570 comparetotmag    1E+14  1        ->   1

+ddctm571 comparetotmag    1E+15  1        ->   1

+ddctm572 comparetotmag    1E+16  1        ->   1

+ddctm573 comparetotmag    1E+17  1        ->   1

+-- similar with a useful coefficient, one side only

+ddctm578 comparetotmag  0.000000987654321     1E-17     ->   1

+ddctm579 comparetotmag  0.000000987654321     1E-16     ->   1

+ddctm580 comparetotmag  0.000000987654321     1E-15     ->   1

+ddctm581 comparetotmag  0.000000987654321     1E-14     ->   1

+ddctm582 comparetotmag  0.000000987654321     1E-13     ->   1

+ddctm583 comparetotmag  0.000000987654321     1E-12     ->   1

+ddctm584 comparetotmag  0.000000987654321     1E-11     ->   1

+ddctm585 comparetotmag  0.000000987654321     1E-10     ->   1

+ddctm586 comparetotmag  0.000000987654321     1E-9      ->   1

+ddctm587 comparetotmag  0.000000987654321     1E-8      ->   1

+ddctm588 comparetotmag  0.000000987654321     1E-7      ->   1

+ddctm589 comparetotmag  0.000000987654321     1E-6      ->  -1

+ddctm590 comparetotmag  0.000000987654321     1E-5      ->  -1

+ddctm591 comparetotmag  0.000000987654321     1E-4      ->  -1

+ddctm592 comparetotmag  0.000000987654321     1E-3      ->  -1

+ddctm593 comparetotmag  0.000000987654321     1E-2      ->  -1

+ddctm594 comparetotmag  0.000000987654321     1E-1      ->  -1

+ddctm595 comparetotmag  0.000000987654321     1E-0      ->  -1

+ddctm596 comparetotmag  0.000000987654321     1E+1      ->  -1

+ddctm597 comparetotmag  0.000000987654321     1E+2      ->  -1

+ddctm598 comparetotmag  0.000000987654321     1E+3      ->  -1

+ddctm599 comparetotmag  0.000000987654321     1E+4      ->  -1

+

+-- check some unit-y traps

+ddctm600 comparetotmag   12            12.2345  ->  -1

+ddctm601 comparetotmag   12.0          12.2345  ->  -1

+ddctm602 comparetotmag   12.00         12.2345  ->  -1

+ddctm603 comparetotmag   12.000        12.2345  ->  -1

+ddctm604 comparetotmag   12.0000       12.2345  ->  -1

+ddctm605 comparetotmag   12.00000      12.2345  ->  -1

+ddctm606 comparetotmag   12.000000     12.2345  ->  -1

+ddctm607 comparetotmag   12.0000000    12.2345  ->  -1

+ddctm608 comparetotmag   12.00000000   12.2345  ->  -1

+ddctm609 comparetotmag   12.000000000  12.2345  ->  -1

+ddctm610 comparetotmag   12.1234 12             ->   1

+ddctm611 comparetotmag   12.1234 12.0           ->   1

+ddctm612 comparetotmag   12.1234 12.00          ->   1

+ddctm613 comparetotmag   12.1234 12.000         ->   1

+ddctm614 comparetotmag   12.1234 12.0000        ->   1

+ddctm615 comparetotmag   12.1234 12.00000       ->   1

+ddctm616 comparetotmag   12.1234 12.000000      ->   1

+ddctm617 comparetotmag   12.1234 12.0000000     ->   1

+ddctm618 comparetotmag   12.1234 12.00000000    ->   1

+ddctm619 comparetotmag   12.1234 12.000000000   ->   1

+ddctm620 comparetotmag  -12           -12.2345  ->  -1

+ddctm621 comparetotmag  -12.0         -12.2345  ->  -1

+ddctm622 comparetotmag  -12.00        -12.2345  ->  -1

+ddctm623 comparetotmag  -12.000       -12.2345  ->  -1

+ddctm624 comparetotmag  -12.0000      -12.2345  ->  -1

+ddctm625 comparetotmag  -12.00000     -12.2345  ->  -1

+ddctm626 comparetotmag  -12.000000    -12.2345  ->  -1

+ddctm627 comparetotmag  -12.0000000   -12.2345  ->  -1

+ddctm628 comparetotmag  -12.00000000  -12.2345  ->  -1

+ddctm629 comparetotmag  -12.000000000 -12.2345  ->  -1

+ddctm630 comparetotmag  -12.1234 -12            ->   1

+ddctm631 comparetotmag  -12.1234 -12.0          ->   1

+ddctm632 comparetotmag  -12.1234 -12.00         ->   1

+ddctm633 comparetotmag  -12.1234 -12.000        ->   1

+ddctm634 comparetotmag  -12.1234 -12.0000       ->   1

+ddctm635 comparetotmag  -12.1234 -12.00000      ->   1

+ddctm636 comparetotmag  -12.1234 -12.000000     ->   1

+ddctm637 comparetotmag  -12.1234 -12.0000000    ->   1

+ddctm638 comparetotmag  -12.1234 -12.00000000   ->   1

+ddctm639 comparetotmag  -12.1234 -12.000000000  ->   1

+

+-- extended zeros

+ddctm640 comparetotmag   0     0    ->   0

+ddctm641 comparetotmag   0    -0    ->   0

+ddctm642 comparetotmag   0    -0.0  ->   1

+ddctm643 comparetotmag   0     0.0  ->   1

+ddctm644 comparetotmag  -0     0    ->   0

+ddctm645 comparetotmag  -0    -0    ->   0

+ddctm646 comparetotmag  -0    -0.0  ->   1

+ddctm647 comparetotmag  -0     0.0  ->   1

+ddctm648 comparetotmag   0.0   0    ->  -1

+ddctm649 comparetotmag   0.0  -0    ->  -1

+ddctm650 comparetotmag   0.0  -0.0  ->   0

+ddctm651 comparetotmag   0.0   0.0  ->   0

+ddctm652 comparetotmag  -0.0   0    ->  -1

+ddctm653 comparetotmag  -0.0  -0    ->  -1

+ddctm654 comparetotmag  -0.0  -0.0  ->   0

+ddctm655 comparetotmag  -0.0   0.0  ->   0

+

+ddctm656 comparetotmag  -0E1   0.0  ->   1

+ddctm657 comparetotmag  -0E2   0.0  ->   1

+ddctm658 comparetotmag   0E1   0.0  ->   1

+ddctm659 comparetotmag   0E2   0.0  ->   1

+ddctm660 comparetotmag  -0E1   0    ->   1

+ddctm661 comparetotmag  -0E2   0    ->   1

+ddctm662 comparetotmag   0E1   0    ->   1

+ddctm663 comparetotmag   0E2   0    ->   1

+ddctm664 comparetotmag  -0E1  -0E1  ->   0

+ddctm665 comparetotmag  -0E2  -0E1  ->   1

+ddctm666 comparetotmag   0E1  -0E1  ->   0

+ddctm667 comparetotmag   0E2  -0E1  ->   1

+ddctm668 comparetotmag  -0E1  -0E2  ->  -1

+ddctm669 comparetotmag  -0E2  -0E2  ->   0

+ddctm670 comparetotmag   0E1  -0E2  ->  -1

+ddctm671 comparetotmag   0E2  -0E2  ->   0

+ddctm672 comparetotmag  -0E1   0E1  ->   0

+ddctm673 comparetotmag  -0E2   0E1  ->   1

+ddctm674 comparetotmag   0E1   0E1  ->   0

+ddctm675 comparetotmag   0E2   0E1  ->   1

+ddctm676 comparetotmag  -0E1   0E2  ->  -1

+ddctm677 comparetotmag  -0E2   0E2  ->   0

+ddctm678 comparetotmag   0E1   0E2  ->  -1

+ddctm679 comparetotmag   0E2   0E2  ->   0

+

+-- trailing zeros; unit-y

+ddctm680 comparetotmag   12    12            ->   0

+ddctm681 comparetotmag   12    12.0          ->   1

+ddctm682 comparetotmag   12    12.00         ->   1

+ddctm683 comparetotmag   12    12.000        ->   1

+ddctm684 comparetotmag   12    12.0000       ->   1

+ddctm685 comparetotmag   12    12.00000      ->   1

+ddctm686 comparetotmag   12    12.000000     ->   1

+ddctm687 comparetotmag   12    12.0000000    ->   1

+ddctm688 comparetotmag   12    12.00000000   ->   1

+ddctm689 comparetotmag   12    12.000000000  ->   1

+ddctm690 comparetotmag   12              12  ->   0

+ddctm691 comparetotmag   12.0            12  ->  -1

+ddctm692 comparetotmag   12.00           12  ->  -1

+ddctm693 comparetotmag   12.000          12  ->  -1

+ddctm694 comparetotmag   12.0000         12  ->  -1

+ddctm695 comparetotmag   12.00000        12  ->  -1

+ddctm696 comparetotmag   12.000000       12  ->  -1

+ddctm697 comparetotmag   12.0000000      12  ->  -1

+ddctm698 comparetotmag   12.00000000     12  ->  -1

+ddctm699 comparetotmag   12.000000000    12  ->  -1

+

+-- old long operand checks

+ddctm701 comparetotmag 12345678000  1  ->   1

+ddctm702 comparetotmag 1 12345678000   ->  -1

+ddctm703 comparetotmag 1234567800   1  ->   1

+ddctm704 comparetotmag 1 1234567800    ->  -1

+ddctm705 comparetotmag 1234567890   1  ->   1

+ddctm706 comparetotmag 1 1234567890    ->  -1

+ddctm707 comparetotmag 1234567891   1  ->   1

+ddctm708 comparetotmag 1 1234567891    ->  -1

+ddctm709 comparetotmag 12345678901  1  ->   1

+ddctm710 comparetotmag 1 12345678901   ->  -1

+ddctm711 comparetotmag 1234567896   1  ->   1

+ddctm712 comparetotmag 1 1234567896    ->  -1

+ddctm713 comparetotmag -1234567891  1  ->   1

+ddctm714 comparetotmag 1 -1234567891   ->  -1

+ddctm715 comparetotmag -12345678901 1  ->   1

+ddctm716 comparetotmag 1 -12345678901  ->  -1

+ddctm717 comparetotmag -1234567896  1  ->   1

+ddctm718 comparetotmag 1 -1234567896   ->  -1

+

+-- old residue cases

+ddctm740 comparetotmag  1  0.9999999   ->   1

+ddctm741 comparetotmag  1  0.999999    ->   1

+ddctm742 comparetotmag  1  0.99999     ->   1

+ddctm743 comparetotmag  1  1.0000      ->   1

+ddctm744 comparetotmag  1  1.00001     ->  -1

+ddctm745 comparetotmag  1  1.000001    ->  -1

+ddctm746 comparetotmag  1  1.0000001   ->  -1

+ddctm750 comparetotmag  0.9999999  1   ->  -1

+ddctm751 comparetotmag  0.999999   1   ->  -1

+ddctm752 comparetotmag  0.99999    1   ->  -1

+ddctm753 comparetotmag  1.0000     1   ->  -1

+ddctm754 comparetotmag  1.00001    1   ->   1

+ddctm755 comparetotmag  1.000001   1   ->   1

+ddctm756 comparetotmag  1.0000001  1   ->   1

+

+-- Specials

+ddctm780 comparetotmag  Inf  -Inf   ->  0

+ddctm781 comparetotmag  Inf  -1000  ->  1

+ddctm782 comparetotmag  Inf  -1     ->  1

+ddctm783 comparetotmag  Inf  -0     ->  1

+ddctm784 comparetotmag  Inf   0     ->  1

+ddctm785 comparetotmag  Inf   1     ->  1

+ddctm786 comparetotmag  Inf   1000  ->  1

+ddctm787 comparetotmag  Inf   Inf   ->  0

+ddctm788 comparetotmag -1000  Inf   -> -1

+ddctm789 comparetotmag -Inf   Inf   ->  0

+ddctm790 comparetotmag -1     Inf   -> -1

+ddctm791 comparetotmag -0     Inf   -> -1

+ddctm792 comparetotmag  0     Inf   -> -1

+ddctm793 comparetotmag  1     Inf   -> -1

+ddctm794 comparetotmag  1000  Inf   -> -1

+ddctm795 comparetotmag  Inf   Inf   ->  0

+

+ddctm800 comparetotmag -Inf  -Inf   ->  0

+ddctm801 comparetotmag -Inf  -1000  ->  1

+ddctm802 comparetotmag -Inf  -1     ->  1

+ddctm803 comparetotmag -Inf  -0     ->  1

+ddctm804 comparetotmag -Inf   0     ->  1

+ddctm805 comparetotmag -Inf   1     ->  1

+ddctm806 comparetotmag -Inf   1000  ->  1

+ddctm807 comparetotmag -Inf   Inf   ->  0

+ddctm808 comparetotmag -Inf  -Inf   ->  0

+ddctm809 comparetotmag -1000 -Inf   -> -1

+ddctm810 comparetotmag -1    -Inf   -> -1

+ddctm811 comparetotmag -0    -Inf   -> -1

+ddctm812 comparetotmag  0    -Inf   -> -1

+ddctm813 comparetotmag  1    -Inf   -> -1

+ddctm814 comparetotmag  1000 -Inf   -> -1

+ddctm815 comparetotmag  Inf  -Inf   ->  0

+

+ddctm821 comparetotmag  NaN -Inf    ->  1

+ddctm822 comparetotmag  NaN -1000   ->  1

+ddctm823 comparetotmag  NaN -1      ->  1

+ddctm824 comparetotmag  NaN -0      ->  1

+ddctm825 comparetotmag  NaN  0      ->  1

+ddctm826 comparetotmag  NaN  1      ->  1

+ddctm827 comparetotmag  NaN  1000   ->  1

+ddctm828 comparetotmag  NaN  Inf    ->  1

+ddctm829 comparetotmag  NaN  NaN    ->  0

+ddctm830 comparetotmag -Inf  NaN    ->  -1

+ddctm831 comparetotmag -1000 NaN    ->  -1

+ddctm832 comparetotmag -1    NaN    ->  -1

+ddctm833 comparetotmag -0    NaN    ->  -1

+ddctm834 comparetotmag  0    NaN    ->  -1

+ddctm835 comparetotmag  1    NaN    ->  -1

+ddctm836 comparetotmag  1000 NaN    ->  -1

+ddctm837 comparetotmag  Inf  NaN    ->  -1

+ddctm838 comparetotmag -NaN -NaN    ->  0

+ddctm839 comparetotmag +NaN -NaN    ->  0

+ddctm840 comparetotmag -NaN +NaN    ->  0

+

+ddctm841 comparetotmag  sNaN -sNaN  ->  0

+ddctm842 comparetotmag  sNaN -NaN   ->  -1

+ddctm843 comparetotmag  sNaN -Inf   ->  1

+ddctm844 comparetotmag  sNaN -1000  ->  1

+ddctm845 comparetotmag  sNaN -1     ->  1

+ddctm846 comparetotmag  sNaN -0     ->  1

+ddctm847 comparetotmag  sNaN  0     ->  1

+ddctm848 comparetotmag  sNaN  1     ->  1

+ddctm849 comparetotmag  sNaN  1000  ->  1

+ddctm850 comparetotmag  sNaN  NaN   ->  -1

+ddctm851 comparetotmag  sNaN sNaN   ->  0

+

+ddctm852 comparetotmag -sNaN sNaN   ->  0

+ddctm853 comparetotmag -NaN  sNaN   ->  1

+ddctm854 comparetotmag -Inf  sNaN   ->  -1

+ddctm855 comparetotmag -1000 sNaN   ->  -1

+ddctm856 comparetotmag -1    sNaN   ->  -1

+ddctm857 comparetotmag -0    sNaN   ->  -1

+ddctm858 comparetotmag  0    sNaN   ->  -1

+ddctm859 comparetotmag  1    sNaN   ->  -1

+ddctm860 comparetotmag  1000 sNaN   ->  -1

+ddctm861 comparetotmag  Inf  sNaN   ->  -1

+ddctm862 comparetotmag  NaN  sNaN   ->  1

+ddctm863 comparetotmag  sNaN sNaN   ->  0

+

+ddctm871 comparetotmag  -sNaN -sNaN  ->  0

+ddctm872 comparetotmag  -sNaN -NaN   ->  -1

+ddctm873 comparetotmag  -sNaN -Inf   ->  1

+ddctm874 comparetotmag  -sNaN -1000  ->  1

+ddctm875 comparetotmag  -sNaN -1     ->  1

+ddctm876 comparetotmag  -sNaN -0     ->  1

+ddctm877 comparetotmag  -sNaN  0     ->  1

+ddctm878 comparetotmag  -sNaN  1     ->  1

+ddctm879 comparetotmag  -sNaN  1000  ->  1

+ddctm880 comparetotmag  -sNaN  NaN   ->  -1

+ddctm881 comparetotmag  -sNaN sNaN   ->  0

+

+ddctm882 comparetotmag -sNaN -sNaN   ->  0

+ddctm883 comparetotmag -NaN  -sNaN   ->  1

+ddctm884 comparetotmag -Inf  -sNaN   ->  -1

+ddctm885 comparetotmag -1000 -sNaN   ->  -1

+ddctm886 comparetotmag -1    -sNaN   ->  -1

+ddctm887 comparetotmag -0    -sNaN   ->  -1

+ddctm888 comparetotmag  0    -sNaN   ->  -1

+ddctm889 comparetotmag  1    -sNaN   ->  -1

+ddctm890 comparetotmag  1000 -sNaN   ->  -1

+ddctm891 comparetotmag  Inf  -sNaN   ->  -1

+ddctm892 comparetotmag  NaN  -sNaN   ->  1

+ddctm893 comparetotmag  sNaN -sNaN   ->  0

+

+-- NaNs with payload

+ddctm960 comparetotmag  NaN9 -Inf   ->  1

+ddctm961 comparetotmag  NaN8  999   ->  1

+ddctm962 comparetotmag  NaN77 Inf   ->  1

+ddctm963 comparetotmag -NaN67 NaN5  ->  1

+ddctm964 comparetotmag -Inf  -NaN4  ->  -1

+ddctm965 comparetotmag -999  -NaN33 ->  -1

+ddctm966 comparetotmag  Inf   NaN2  ->  -1

+

+ddctm970 comparetotmag -NaN41 -NaN42 -> -1

+ddctm971 comparetotmag +NaN41 -NaN42 -> -1

+ddctm972 comparetotmag -NaN41 +NaN42 -> -1

+ddctm973 comparetotmag +NaN41 +NaN42 -> -1

+ddctm974 comparetotmag -NaN42 -NaN01 ->  1

+ddctm975 comparetotmag +NaN42 -NaN01 ->  1

+ddctm976 comparetotmag -NaN42 +NaN01 ->  1

+ddctm977 comparetotmag +NaN42 +NaN01 ->  1

+

+ddctm980 comparetotmag -sNaN771 -sNaN772 -> -1

+ddctm981 comparetotmag +sNaN771 -sNaN772 -> -1

+ddctm982 comparetotmag -sNaN771 +sNaN772 -> -1

+ddctm983 comparetotmag +sNaN771 +sNaN772 -> -1

+ddctm984 comparetotmag -sNaN772 -sNaN771 ->  1

+ddctm985 comparetotmag +sNaN772 -sNaN771 ->  1

+ddctm986 comparetotmag -sNaN772 +sNaN771 ->  1

+ddctm987 comparetotmag +sNaN772 +sNaN771 ->  1

+

+ddctm991 comparetotmag -sNaN99 -Inf    ->  1

+ddctm992 comparetotmag  sNaN98 -11     ->  1

+ddctm993 comparetotmag  sNaN97  NaN    -> -1

+ddctm994 comparetotmag  sNaN16 sNaN94  -> -1

+ddctm995 comparetotmag  NaN85  sNaN83  ->  1

+ddctm996 comparetotmag -Inf    sNaN92  -> -1

+ddctm997 comparetotmag  088    sNaN81  -> -1

+ddctm998 comparetotmag  Inf    sNaN90  -> -1

+ddctm999 comparetotmag  NaN   -sNaN89  ->  1

+

+-- spread zeros

+ddctm1110 comparetotmag   0E-383  0        ->  -1

+ddctm1111 comparetotmag   0E-383 -0        ->  -1

+ddctm1112 comparetotmag  -0E-383  0        ->  -1

+ddctm1113 comparetotmag  -0E-383 -0        ->  -1

+ddctm1114 comparetotmag   0E-383  0E+384   ->  -1

+ddctm1115 comparetotmag   0E-383 -0E+384   ->  -1

+ddctm1116 comparetotmag  -0E-383  0E+384   ->  -1

+ddctm1117 comparetotmag  -0E-383 -0E+384   ->  -1

+ddctm1118 comparetotmag   0       0E+384   ->  -1

+ddctm1119 comparetotmag   0      -0E+384   ->  -1

+ddctm1120 comparetotmag  -0       0E+384   ->  -1

+ddctm1121 comparetotmag  -0      -0E+384   ->  -1

+

+ddctm1130 comparetotmag   0E+384  0        ->   1

+ddctm1131 comparetotmag   0E+384 -0        ->   1

+ddctm1132 comparetotmag  -0E+384  0        ->   1

+ddctm1133 comparetotmag  -0E+384 -0        ->   1

+ddctm1134 comparetotmag   0E+384  0E-383   ->   1

+ddctm1135 comparetotmag   0E+384 -0E-383   ->   1

+ddctm1136 comparetotmag  -0E+384  0E-383   ->   1

+ddctm1137 comparetotmag  -0E+384 -0E-383   ->   1

+ddctm1138 comparetotmag   0       0E-383   ->   1

+ddctm1139 comparetotmag   0      -0E-383   ->   1

+ddctm1140 comparetotmag  -0       0E-383   ->   1

+ddctm1141 comparetotmag  -0      -0E-383   ->   1

+

+-- Null tests

+ddctm9990 comparetotmag 10  # -> NaN Invalid_operation

+ddctm9991 comparetotmag  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddCopy.decTest b/Lib/test/decimaltestdata/ddCopy.decTest
new file mode 100644
index 0000000..9d82db7
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCopy.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- ddCopy.decTest -- quiet decDouble copy                             --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check

+ddcpy001 copy       +7.50  -> 7.50

+

+-- Infinities

+ddcpy011 copy  Infinity    -> Infinity

+ddcpy012 copy  -Infinity   -> -Infinity

+

+-- NaNs, 0 payload

+ddcpy021 copy         NaN  -> NaN

+ddcpy022 copy        -NaN  -> -NaN

+ddcpy023 copy        sNaN  -> sNaN

+ddcpy024 copy       -sNaN  -> -sNaN

+

+-- NaNs, non-0 payload

+ddcpy031 copy       NaN10  -> NaN10

+ddcpy032 copy      -NaN10  -> -NaN10

+ddcpy033 copy      sNaN10  -> sNaN10

+ddcpy034 copy     -sNaN10  -> -sNaN10

+ddcpy035 copy       NaN7   -> NaN7

+ddcpy036 copy      -NaN7   -> -NaN7

+ddcpy037 copy      sNaN101 -> sNaN101

+ddcpy038 copy     -sNaN101 -> -sNaN101

+

+-- finites

+ddcpy101 copy          7   -> 7

+ddcpy102 copy         -7   -> -7

+ddcpy103 copy         75   -> 75

+ddcpy104 copy        -75   -> -75

+ddcpy105 copy       7.50   -> 7.50

+ddcpy106 copy      -7.50   -> -7.50

+ddcpy107 copy       7.500  -> 7.500

+ddcpy108 copy      -7.500  -> -7.500

+

+-- zeros

+ddcpy111 copy          0   -> 0

+ddcpy112 copy         -0   -> -0

+ddcpy113 copy       0E+4   -> 0E+4

+ddcpy114 copy      -0E+4   -> -0E+4

+ddcpy115 copy     0.0000   -> 0.0000

+ddcpy116 copy    -0.0000   -> -0.0000

+ddcpy117 copy      0E-141  -> 0E-141

+ddcpy118 copy     -0E-141  -> -0E-141

+

+-- full coefficients, alternating bits

+ddcpy121 copy  2682682682682682         -> 2682682682682682

+ddcpy122 copy  -2682682682682682        -> -2682682682682682

+ddcpy123 copy  1341341341341341         -> 1341341341341341

+ddcpy124 copy  -1341341341341341        -> -1341341341341341

+

+-- Nmax, Nmin, Ntiny

+ddcpy131 copy  9.999999999999999E+384   -> 9.999999999999999E+384

+ddcpy132 copy  1E-383                   -> 1E-383

+ddcpy133 copy  1.000000000000000E-383   -> 1.000000000000000E-383

+ddcpy134 copy  1E-398                   -> 1E-398

+

+ddcpy135 copy  -1E-398                  -> -1E-398

+ddcpy136 copy  -1.000000000000000E-383  -> -1.000000000000000E-383

+ddcpy137 copy  -1E-383                  -> -1E-383

+ddcpy138 copy  -9.999999999999999E+384  -> -9.999999999999999E+384

diff --git a/Lib/test/decimaltestdata/ddCopyAbs.decTest b/Lib/test/decimaltestdata/ddCopyAbs.decTest
new file mode 100644
index 0000000..c60cc38
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCopyAbs.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- ddCopyAbs.decTest -- quiet decDouble copy and set sign to zero     --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check

+ddcpa001 copyabs       +7.50  -> 7.50

+

+-- Infinities

+ddcpa011 copyabs  Infinity    -> Infinity

+ddcpa012 copyabs  -Infinity   -> Infinity

+

+-- NaNs, 0 payload

+ddcpa021 copyabs         NaN  -> NaN

+ddcpa022 copyabs        -NaN  -> NaN

+ddcpa023 copyabs        sNaN  -> sNaN

+ddcpa024 copyabs       -sNaN  -> sNaN

+

+-- NaNs, non-0 payload

+ddcpa031 copyabs       NaN10  -> NaN10

+ddcpa032 copyabs      -NaN15  -> NaN15

+ddcpa033 copyabs      sNaN15  -> sNaN15

+ddcpa034 copyabs     -sNaN10  -> sNaN10

+ddcpa035 copyabs       NaN7   -> NaN7

+ddcpa036 copyabs      -NaN7   -> NaN7

+ddcpa037 copyabs      sNaN101 -> sNaN101

+ddcpa038 copyabs     -sNaN101 -> sNaN101

+

+-- finites

+ddcpa101 copyabs          7   -> 7

+ddcpa102 copyabs         -7   -> 7

+ddcpa103 copyabs         75   -> 75

+ddcpa104 copyabs        -75   -> 75

+ddcpa105 copyabs       7.10   -> 7.10

+ddcpa106 copyabs      -7.10   -> 7.10

+ddcpa107 copyabs       7.500  -> 7.500

+ddcpa108 copyabs      -7.500  -> 7.500

+

+-- zeros

+ddcpa111 copyabs          0   -> 0

+ddcpa112 copyabs         -0   -> 0

+ddcpa113 copyabs       0E+6   -> 0E+6

+ddcpa114 copyabs      -0E+6   -> 0E+6

+ddcpa115 copyabs     0.0000   -> 0.0000

+ddcpa116 copyabs    -0.0000   -> 0.0000

+ddcpa117 copyabs      0E-141  -> 0E-141

+ddcpa118 copyabs     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+ddcpa121 copyabs  2682682682682682         -> 2682682682682682

+ddcpa122 copyabs  -2682682682682682        -> 2682682682682682

+ddcpa123 copyabs  1341341341341341         -> 1341341341341341

+ddcpa124 copyabs  -1341341341341341        -> 1341341341341341

+

+-- Nmax, Nmin, Ntiny

+ddcpa131 copyabs  9.999999999999999E+384   -> 9.999999999999999E+384

+ddcpa132 copyabs  1E-383                   -> 1E-383

+ddcpa133 copyabs  1.000000000000000E-383   -> 1.000000000000000E-383

+ddcpa134 copyabs  1E-398                   -> 1E-398

+

+ddcpa135 copyabs  -1E-398                  -> 1E-398

+ddcpa136 copyabs  -1.000000000000000E-383  -> 1.000000000000000E-383

+ddcpa137 copyabs  -1E-383                  -> 1E-383

+ddcpa138 copyabs  -9.999999999999999E+384  -> 9.999999999999999E+384

diff --git a/Lib/test/decimaltestdata/ddCopyNegate.decTest b/Lib/test/decimaltestdata/ddCopyNegate.decTest
new file mode 100644
index 0000000..c2c6098
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCopyNegate.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- ddCopyNegate.decTest -- quiet decDouble copy and negate            --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check

+ddcpn001 copynegate       +7.50  -> -7.50

+

+-- Infinities

+ddcpn011 copynegate  Infinity    -> -Infinity

+ddcpn012 copynegate  -Infinity   -> Infinity

+

+-- NaNs, 0 payload

+ddcpn021 copynegate         NaN  -> -NaN

+ddcpn022 copynegate        -NaN  -> NaN

+ddcpn023 copynegate        sNaN  -> -sNaN

+ddcpn024 copynegate       -sNaN  -> sNaN

+

+-- NaNs, non-0 payload

+ddcpn031 copynegate       NaN13  -> -NaN13

+ddcpn032 copynegate      -NaN13  -> NaN13

+ddcpn033 copynegate      sNaN13  -> -sNaN13

+ddcpn034 copynegate     -sNaN13  -> sNaN13

+ddcpn035 copynegate       NaN70  -> -NaN70

+ddcpn036 copynegate      -NaN70  -> NaN70

+ddcpn037 copynegate      sNaN101 -> -sNaN101

+ddcpn038 copynegate     -sNaN101 -> sNaN101

+

+-- finites

+ddcpn101 copynegate          7   -> -7

+ddcpn102 copynegate         -7   -> 7

+ddcpn103 copynegate         75   -> -75

+ddcpn104 copynegate        -75   -> 75

+ddcpn105 copynegate       7.50   -> -7.50

+ddcpn106 copynegate      -7.50   -> 7.50

+ddcpn107 copynegate       7.500  -> -7.500

+ddcpn108 copynegate      -7.500  -> 7.500

+

+-- zeros

+ddcpn111 copynegate          0   -> -0

+ddcpn112 copynegate         -0   -> 0

+ddcpn113 copynegate       0E+4   -> -0E+4

+ddcpn114 copynegate      -0E+4   -> 0E+4

+ddcpn115 copynegate     0.0000   -> -0.0000

+ddcpn116 copynegate    -0.0000   -> 0.0000

+ddcpn117 copynegate      0E-141  -> -0E-141

+ddcpn118 copynegate     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+ddcpn121 copynegate  2682682682682682         -> -2682682682682682

+ddcpn122 copynegate  -2682682682682682        -> 2682682682682682

+ddcpn123 copynegate  1341341341341341         -> -1341341341341341

+ddcpn124 copynegate  -1341341341341341        -> 1341341341341341

+

+-- Nmax, Nmin, Ntiny

+ddcpn131 copynegate  9.999999999999999E+384   -> -9.999999999999999E+384

+ddcpn132 copynegate  1E-383                   -> -1E-383

+ddcpn133 copynegate  1.000000000000000E-383   -> -1.000000000000000E-383

+ddcpn134 copynegate  1E-398                   -> -1E-398

+

+ddcpn135 copynegate  -1E-398                  -> 1E-398

+ddcpn136 copynegate  -1.000000000000000E-383  -> 1.000000000000000E-383

+ddcpn137 copynegate  -1E-383                  -> 1E-383

+ddcpn138 copynegate  -9.999999999999999E+384  -> 9.999999999999999E+384

diff --git a/Lib/test/decimaltestdata/ddCopySign.decTest b/Lib/test/decimaltestdata/ddCopySign.decTest
new file mode 100644
index 0000000..36b060e
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddCopySign.decTest
@@ -0,0 +1,175 @@
+------------------------------------------------------------------------

+-- ddCopySign.decTest -- quiet decDouble copy with sign from rhs      --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check

+ddcps001 copysign       +7.50     11 -> 7.50

+

+-- Infinities

+ddcps011 copysign  Infinity       11 -> Infinity

+ddcps012 copysign  -Infinity      11 -> Infinity

+

+-- NaNs, 0 payload

+ddcps021 copysign         NaN     11 -> NaN

+ddcps022 copysign        -NaN     11 -> NaN

+ddcps023 copysign        sNaN     11 -> sNaN

+ddcps024 copysign       -sNaN     11 -> sNaN

+

+-- NaNs, non-0 payload

+ddcps031 copysign       NaN10     11 -> NaN10

+ddcps032 copysign      -NaN10     11 -> NaN10

+ddcps033 copysign      sNaN10     11 -> sNaN10

+ddcps034 copysign     -sNaN10     11 -> sNaN10

+ddcps035 copysign       NaN7      11 -> NaN7

+ddcps036 copysign      -NaN7      11 -> NaN7

+ddcps037 copysign      sNaN101    11 -> sNaN101

+ddcps038 copysign     -sNaN101    11 -> sNaN101

+

+-- finites

+ddcps101 copysign          7      11 -> 7

+ddcps102 copysign         -7      11 -> 7

+ddcps103 copysign         75      11 -> 75

+ddcps104 copysign        -75      11 -> 75

+ddcps105 copysign       7.50      11 -> 7.50

+ddcps106 copysign      -7.50      11 -> 7.50

+ddcps107 copysign       7.500     11 -> 7.500

+ddcps108 copysign      -7.500     11 -> 7.500

+

+-- zeros

+ddcps111 copysign          0      11 -> 0

+ddcps112 copysign         -0      11 -> 0

+ddcps113 copysign       0E+4      11 -> 0E+4

+ddcps114 copysign      -0E+4      11 -> 0E+4

+ddcps115 copysign     0.0000      11 -> 0.0000

+ddcps116 copysign    -0.0000      11 -> 0.0000

+ddcps117 copysign      0E-141     11 -> 0E-141

+ddcps118 copysign     -0E-141     11 -> 0E-141

+

+-- full coefficients, alternating bits

+ddcps121 copysign  2682682682682682            11 -> 2682682682682682

+ddcps122 copysign  -2682682682682682           11 -> 2682682682682682

+ddcps123 copysign  1341341341341341            11 -> 1341341341341341

+ddcps124 copysign  -1341341341341341           11 -> 1341341341341341

+

+-- Nmax, Nmin, Ntiny

+ddcps131 copysign  9.999999999999999E+384      11 -> 9.999999999999999E+384

+ddcps132 copysign  1E-383                      11 -> 1E-383

+ddcps133 copysign  1.000000000000000E-383      11 -> 1.000000000000000E-383

+ddcps134 copysign  1E-398                      11 -> 1E-398

+

+ddcps135 copysign  -1E-398                     11 -> 1E-398

+ddcps136 copysign  -1.000000000000000E-383     11 -> 1.000000000000000E-383

+ddcps137 copysign  -1E-383                     11 -> 1E-383

+ddcps138 copysign  -9.999999999999999E+384     11 -> 9.999999999999999E+384

+

+-- repeat with negative RHS

+

+-- Infinities

+ddcps211 copysign  Infinity       -34 -> -Infinity

+ddcps212 copysign  -Infinity      -34 -> -Infinity

+

+-- NaNs, 0 payload

+ddcps221 copysign         NaN     -34 -> -NaN

+ddcps222 copysign        -NaN     -34 -> -NaN

+ddcps223 copysign        sNaN     -34 -> -sNaN

+ddcps224 copysign       -sNaN     -34 -> -sNaN

+

+-- NaNs, non-0 payload

+ddcps231 copysign       NaN10     -34 -> -NaN10

+ddcps232 copysign      -NaN10     -34 -> -NaN10

+ddcps233 copysign      sNaN10     -34 -> -sNaN10

+ddcps234 copysign     -sNaN10     -34 -> -sNaN10

+ddcps235 copysign       NaN7      -34 -> -NaN7

+ddcps236 copysign      -NaN7      -34 -> -NaN7

+ddcps237 copysign      sNaN101    -34 -> -sNaN101

+ddcps238 copysign     -sNaN101    -34 -> -sNaN101

+

+-- finites

+ddcps301 copysign          7      -34 -> -7

+ddcps302 copysign         -7      -34 -> -7

+ddcps303 copysign         75      -34 -> -75

+ddcps304 copysign        -75      -34 -> -75

+ddcps305 copysign       7.50      -34 -> -7.50

+ddcps306 copysign      -7.50      -34 -> -7.50

+ddcps307 copysign       7.500     -34 -> -7.500

+ddcps308 copysign      -7.500     -34 -> -7.500

+

+-- zeros

+ddcps311 copysign          0      -34 -> -0

+ddcps312 copysign         -0      -34 -> -0

+ddcps313 copysign       0E+4      -34 -> -0E+4

+ddcps314 copysign      -0E+4      -34 -> -0E+4

+ddcps315 copysign     0.0000      -34 -> -0.0000

+ddcps316 copysign    -0.0000      -34 -> -0.0000

+ddcps317 copysign      0E-141     -34 -> -0E-141

+ddcps318 copysign     -0E-141     -34 -> -0E-141

+

+-- full coefficients, alternating bits

+ddcps321 copysign  2682682682682682            -34 -> -2682682682682682

+ddcps322 copysign  -2682682682682682           -34 -> -2682682682682682

+ddcps323 copysign  1341341341341341            -34 -> -1341341341341341

+ddcps324 copysign  -1341341341341341           -34 -> -1341341341341341

+

+-- Nmax, Nmin, Ntiny

+ddcps331 copysign  9.999999999999999E+384      -34 -> -9.999999999999999E+384

+ddcps332 copysign  1E-383                      -34 -> -1E-383

+ddcps333 copysign  1.000000000000000E-383      -34 -> -1.000000000000000E-383

+ddcps334 copysign  1E-398                      -34 -> -1E-398

+

+ddcps335 copysign  -1E-398                     -34 -> -1E-398

+ddcps336 copysign  -1.000000000000000E-383     -34 -> -1.000000000000000E-383

+ddcps337 copysign  -1E-383                     -34 -> -1E-383

+ddcps338 copysign  -9.999999999999999E+384     -34 -> -9.999999999999999E+384

+

+-- Other kinds of RHS

+ddcps401 copysign          701    -34 -> -701

+ddcps402 copysign         -720    -34 -> -720

+ddcps403 copysign          701    -0  -> -701

+ddcps404 copysign         -720    -0  -> -720

+ddcps405 copysign          701    +0  ->  701

+ddcps406 copysign         -720    +0  ->  720

+ddcps407 copysign          701    +34 ->  701

+ddcps408 copysign         -720    +34 ->  720

+

+ddcps413 copysign          701    -Inf  -> -701

+ddcps414 copysign         -720    -Inf  -> -720

+ddcps415 copysign          701    +Inf  ->  701

+ddcps416 copysign         -720    +Inf  ->  720

+

+ddcps420 copysign          701    -NaN  -> -701

+ddcps421 copysign         -720    -NaN  -> -720

+ddcps422 copysign          701    +NaN  ->  701

+ddcps423 copysign         -720    +NaN  ->  720

+ddcps425 copysign         -720    +NaN8 ->  720

+

+ddcps426 copysign          701    -sNaN  -> -701

+ddcps427 copysign         -720    -sNaN  -> -720

+ddcps428 copysign          701    +sNaN  ->  701

+ddcps429 copysign         -720    +sNaN  ->  720

+ddcps430 copysign         -720    +sNaN3 ->  720

+

diff --git a/Lib/test/decimaltestdata/ddDivide.decTest b/Lib/test/decimaltestdata/ddDivide.decTest
new file mode 100644
index 0000000..9069894
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddDivide.decTest
@@ -0,0 +1,854 @@
+------------------------------------------------------------------------

+-- ddDivide.decTest -- decDouble division                             --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+dddiv001 divide  1     1    ->  1

+dddiv002 divide  2     1    ->  2

+dddiv003 divide  1     2    ->  0.5

+dddiv004 divide  2     2    ->  1

+dddiv005 divide  0     1    ->  0

+dddiv006 divide  0     2    ->  0

+dddiv007 divide  1     3    ->  0.3333333333333333 Inexact Rounded

+dddiv008 divide  2     3    ->  0.6666666666666667 Inexact Rounded

+dddiv009 divide  3     3    ->  1

+

+dddiv010 divide  2.4   1    ->  2.4

+dddiv011 divide  2.4   -1   ->  -2.4

+dddiv012 divide  -2.4  1    ->  -2.4

+dddiv013 divide  -2.4  -1   ->  2.4

+dddiv014 divide  2.40  1    ->  2.40

+dddiv015 divide  2.400 1    ->  2.400

+dddiv016 divide  2.4   2    ->  1.2

+dddiv017 divide  2.400 2    ->  1.200

+dddiv018 divide  2.    2    ->  1

+dddiv019 divide  20    20   ->  1

+

+dddiv020 divide  187   187    ->  1

+dddiv021 divide  5     2      ->  2.5

+dddiv022 divide  50    20     ->  2.5

+dddiv023 divide  500   200    ->  2.5

+dddiv024 divide  50.0  20.0   ->  2.5

+dddiv025 divide  5.00  2.00   ->  2.5

+dddiv026 divide  5     2.0    ->  2.5

+dddiv027 divide  5     2.000  ->  2.5

+dddiv028 divide  5     0.20   ->  25

+dddiv029 divide  5     0.200  ->  25

+dddiv030 divide  10    1      ->  10

+dddiv031 divide  100   1      ->  100

+dddiv032 divide  1000  1      ->  1000

+dddiv033 divide  1000  100    ->  10

+

+dddiv035 divide  1     2      ->  0.5

+dddiv036 divide  1     4      ->  0.25

+dddiv037 divide  1     8      ->  0.125

+dddiv038 divide  1     16     ->  0.0625

+dddiv039 divide  1     32     ->  0.03125

+dddiv040 divide  1     64     ->  0.015625

+dddiv041 divide  1    -2      ->  -0.5

+dddiv042 divide  1    -4      ->  -0.25

+dddiv043 divide  1    -8      ->  -0.125

+dddiv044 divide  1    -16     ->  -0.0625

+dddiv045 divide  1    -32     ->  -0.03125

+dddiv046 divide  1    -64     ->  -0.015625

+dddiv047 divide -1     2      ->  -0.5

+dddiv048 divide -1     4      ->  -0.25

+dddiv049 divide -1     8      ->  -0.125

+dddiv050 divide -1     16     ->  -0.0625

+dddiv051 divide -1     32     ->  -0.03125

+dddiv052 divide -1     64     ->  -0.015625

+dddiv053 divide -1    -2      ->  0.5

+dddiv054 divide -1    -4      ->  0.25

+dddiv055 divide -1    -8      ->  0.125

+dddiv056 divide -1    -16     ->  0.0625

+dddiv057 divide -1    -32     ->  0.03125

+dddiv058 divide -1    -64     ->  0.015625

+

+-- bcdTime

+dddiv060 divide  1 7                   -> 0.1428571428571429 Inexact Rounded

+dddiv061 divide 1.2345678  1.9876543   -> 0.6211179680490717 Inexact Rounded

+

+--               1234567890123456

+dddiv071 divide  9999999999999999 1  ->  9999999999999999

+dddiv072 divide  999999999999999  1  ->  999999999999999

+dddiv073 divide  99999999999999   1  ->  99999999999999

+dddiv074 divide  9999999999999    1  ->  9999999999999

+dddiv075 divide  999999999999     1  ->  999999999999

+dddiv076 divide  99999999999      1  ->  99999999999

+dddiv077 divide  9999999999       1  ->  9999999999

+dddiv078 divide  999999999        1  ->  999999999

+dddiv079 divide  99999999         1  ->  99999999

+dddiv080 divide  9999999          1  ->  9999999

+dddiv081 divide  999999           1  ->  999999

+dddiv082 divide  99999            1  ->  99999

+dddiv083 divide  9999             1  ->  9999

+dddiv084 divide  999              1  ->  999

+dddiv085 divide  99               1  ->  99

+dddiv086 divide  9                1  ->  9

+

+dddiv090 divide  0.            1    ->  0

+dddiv091 divide  .0            1    ->  0.0

+dddiv092 divide  0.00          1    ->  0.00

+dddiv093 divide  0.00E+9       1    ->  0E+7

+dddiv094 divide  0.0000E-50    1    ->  0E-54

+

+dddiv095 divide  1            1E-8  ->  1E+8

+dddiv096 divide  1            1E-9  ->  1E+9

+dddiv097 divide  1            1E-10 ->  1E+10

+dddiv098 divide  1            1E-11 ->  1E+11

+dddiv099 divide  1            1E-12 ->  1E+12

+

+dddiv100 divide  1  1   -> 1

+dddiv101 divide  1  2   -> 0.5

+dddiv102 divide  1  3   -> 0.3333333333333333 Inexact Rounded

+dddiv103 divide  1  4   -> 0.25

+dddiv104 divide  1  5   -> 0.2

+dddiv105 divide  1  6   -> 0.1666666666666667 Inexact Rounded

+dddiv106 divide  1  7   -> 0.1428571428571429 Inexact Rounded

+dddiv107 divide  1  8   -> 0.125

+dddiv108 divide  1  9   -> 0.1111111111111111 Inexact Rounded

+dddiv109 divide  1  10  -> 0.1

+dddiv110 divide  1  1   -> 1

+dddiv111 divide  2  1   -> 2

+dddiv112 divide  3  1   -> 3

+dddiv113 divide  4  1   -> 4

+dddiv114 divide  5  1   -> 5

+dddiv115 divide  6  1   -> 6

+dddiv116 divide  7  1   -> 7

+dddiv117 divide  8  1   -> 8

+dddiv118 divide  9  1   -> 9

+dddiv119 divide  10 1   -> 10

+

+dddiv120 divide  3E+1 0.001  -> 3E+4

+dddiv121 divide  2.200 2     -> 1.100

+

+dddiv130 divide  12345  4.999  ->  2469.493898779756    Inexact Rounded

+dddiv131 divide  12345  4.99   ->  2473.947895791583    Inexact Rounded

+dddiv132 divide  12345  4.9    ->  2519.387755102041    Inexact Rounded

+dddiv133 divide  12345  5      ->  2469

+dddiv134 divide  12345  5.1    ->  2420.588235294118    Inexact Rounded

+dddiv135 divide  12345  5.01   ->  2464.071856287425    Inexact Rounded

+dddiv136 divide  12345  5.001  ->  2468.506298740252    Inexact Rounded

+

+-- test possibly imprecise results

+dddiv220 divide 391   597 ->  0.6549413735343384  Inexact Rounded

+dddiv221 divide 391  -597 -> -0.6549413735343384  Inexact Rounded

+dddiv222 divide -391  597 -> -0.6549413735343384  Inexact Rounded

+dddiv223 divide -391 -597 ->  0.6549413735343384  Inexact Rounded

+

+-- test some cases that are close to exponent overflow

+dddiv270 divide 1 1e384                  -> 1E-384                 Subnormal

+dddiv271 divide 1 0.9e384                -> 1.11111111111111E-384  Rounded Inexact Subnormal Underflow

+dddiv272 divide 1 0.99e384               -> 1.01010101010101E-384  Rounded Inexact Subnormal Underflow

+dddiv273 divide 1 0.9999999999999999e384 -> 1.00000000000000E-384  Rounded Inexact Subnormal Underflow

+dddiv274 divide 9e384    1               -> 9.000000000000000E+384 Clamped

+dddiv275 divide 9.9e384  1               -> 9.900000000000000E+384 Clamped

+dddiv276 divide 9.99e384 1               -> 9.990000000000000E+384 Clamped

+dddiv277 divide 9.999999999999999e384 1  -> 9.999999999999999E+384

+

+-- Divide into 0 tests

+dddiv301 divide    0    7     -> 0

+dddiv302 divide    0    7E-5  -> 0E+5

+dddiv303 divide    0    7E-1  -> 0E+1

+dddiv304 divide    0    7E+1  -> 0.0

+dddiv305 divide    0    7E+5  -> 0.00000

+dddiv306 divide    0    7E+6  -> 0.000000

+dddiv307 divide    0    7E+7  -> 0E-7

+dddiv308 divide    0   70E-5  -> 0E+5

+dddiv309 divide    0   70E-1  -> 0E+1

+dddiv310 divide    0   70E+0  -> 0

+dddiv311 divide    0   70E+1  -> 0.0

+dddiv312 divide    0   70E+5  -> 0.00000

+dddiv313 divide    0   70E+6  -> 0.000000

+dddiv314 divide    0   70E+7  -> 0E-7

+dddiv315 divide    0  700E-5  -> 0E+5

+dddiv316 divide    0  700E-1  -> 0E+1

+dddiv317 divide    0  700E+0  -> 0

+dddiv318 divide    0  700E+1  -> 0.0

+dddiv319 divide    0  700E+5  -> 0.00000

+dddiv320 divide    0  700E+6  -> 0.000000

+dddiv321 divide    0  700E+7  -> 0E-7

+dddiv322 divide    0  700E+77 -> 0E-77

+

+dddiv331 divide 0E-3    7E-5  -> 0E+2

+dddiv332 divide 0E-3    7E-1  -> 0.00

+dddiv333 divide 0E-3    7E+1  -> 0.0000

+dddiv334 divide 0E-3    7E+5  -> 0E-8

+dddiv335 divide 0E-1    7E-5  -> 0E+4

+dddiv336 divide 0E-1    7E-1  -> 0

+dddiv337 divide 0E-1    7E+1  -> 0.00

+dddiv338 divide 0E-1    7E+5  -> 0.000000

+dddiv339 divide 0E+1    7E-5  -> 0E+6

+dddiv340 divide 0E+1    7E-1  -> 0E+2

+dddiv341 divide 0E+1    7E+1  -> 0

+dddiv342 divide 0E+1    7E+5  -> 0.0000

+dddiv343 divide 0E+3    7E-5  -> 0E+8

+dddiv344 divide 0E+3    7E-1  -> 0E+4

+dddiv345 divide 0E+3    7E+1  -> 0E+2

+dddiv346 divide 0E+3    7E+5  -> 0.00

+

+-- These were 'input rounding'

+dddiv441 divide 12345678000 1 -> 12345678000

+dddiv442 divide 1 12345678000 -> 8.100000664200054E-11 Inexact Rounded

+dddiv443 divide 1234567800  1 -> 1234567800

+dddiv444 divide 1 1234567800  -> 8.100000664200054E-10 Inexact Rounded

+dddiv445 divide 1234567890  1 -> 1234567890

+dddiv446 divide 1 1234567890  -> 8.100000073710001E-10 Inexact Rounded

+dddiv447 divide 1234567891  1 -> 1234567891

+dddiv448 divide 1 1234567891  -> 8.100000067149001E-10 Inexact Rounded

+dddiv449 divide 12345678901 1 -> 12345678901

+dddiv450 divide 1 12345678901 -> 8.100000073053901E-11 Inexact Rounded

+dddiv451 divide 1234567896  1 -> 1234567896

+dddiv452 divide 1 1234567896  -> 8.100000034344000E-10 Inexact Rounded

+

+-- high-lows

+dddiv453 divide 1e+1   1    ->   1E+1

+dddiv454 divide 1e+1   1.0  ->   1E+1

+dddiv455 divide 1e+1   1.00 ->   1E+1

+dddiv456 divide 1e+2   2    ->   5E+1

+dddiv457 divide 1e+2   2.0  ->   5E+1

+dddiv458 divide 1e+2   2.00 ->   5E+1

+

+-- some from IEEE discussions

+dddiv460 divide 3e0      2e0     -> 1.5

+dddiv461 divide 30e-1    2e0     -> 1.5

+dddiv462 divide 300e-2   2e0     -> 1.50

+dddiv464 divide 3000e-3  2e0     -> 1.500

+dddiv465 divide 3e0      20e-1   -> 1.5

+dddiv466 divide 30e-1    20e-1   -> 1.5

+dddiv467 divide 300e-2   20e-1   -> 1.5

+dddiv468 divide 3000e-3  20e-1   -> 1.50

+dddiv469 divide 3e0      200e-2  -> 1.5

+dddiv470 divide 30e-1    200e-2  -> 1.5

+dddiv471 divide 300e-2   200e-2  -> 1.5

+dddiv472 divide 3000e-3  200e-2  -> 1.5

+dddiv473 divide 3e0      2000e-3 -> 1.5

+dddiv474 divide 30e-1    2000e-3 -> 1.5

+dddiv475 divide 300e-2   2000e-3 -> 1.5

+dddiv476 divide 3000e-3  2000e-3 -> 1.5

+

+-- some reciprocals

+dddiv480 divide 1        1.0E+33 -> 1E-33

+dddiv481 divide 1        10E+33  -> 1E-34

+dddiv482 divide 1        1.0E-33 -> 1E+33

+dddiv483 divide 1        10E-33  -> 1E+32

+

+-- RMS discussion table

+dddiv484 divide 0e5     1e3 ->   0E+2

+dddiv485 divide 0e5     2e3 ->   0E+2

+dddiv486 divide 0e5    10e2 ->   0E+3

+dddiv487 divide 0e5    20e2 ->   0E+3

+dddiv488 divide 0e5   100e1 ->   0E+4

+dddiv489 divide 0e5   200e1 ->   0E+4

+

+dddiv491 divide 1e5     1e3 ->   1E+2

+dddiv492 divide 1e5     2e3 ->   5E+1

+dddiv493 divide 1e5    10e2 ->   1E+2

+dddiv494 divide 1e5    20e2 ->   5E+1

+dddiv495 divide 1e5   100e1 ->   1E+2

+dddiv496 divide 1e5   200e1 ->   5E+1

+

+-- tryzeros cases

+rounding:    half_up

+dddiv497  divide  0E+380 1000E-13  -> 0E+369 Clamped

+dddiv498  divide  0E-390 1000E+13  -> 0E-398 Clamped

+

+rounding:    half_up

+

+-- focus on trailing zeros issues

+dddiv500 divide  1      9.9    ->  0.1010101010101010  Inexact Rounded

+dddiv501 divide  1      9.09   ->  0.1100110011001100  Inexact Rounded

+dddiv502 divide  1      9.009  ->  0.1110001110001110  Inexact Rounded

+

+dddiv511 divide 1         2    -> 0.5

+dddiv512 divide 1.0       2    -> 0.5

+dddiv513 divide 1.00      2    -> 0.50

+dddiv514 divide 1.000     2    -> 0.500

+dddiv515 divide 1.0000    2    -> 0.5000

+dddiv516 divide 1.00000   2    -> 0.50000

+dddiv517 divide 1.000000  2    -> 0.500000

+dddiv518 divide 1.0000000 2    -> 0.5000000

+dddiv519 divide 1.00      2.00 -> 0.5

+

+dddiv521 divide 2    1         -> 2

+dddiv522 divide 2    1.0       -> 2

+dddiv523 divide 2    1.00      -> 2

+dddiv524 divide 2    1.000     -> 2

+dddiv525 divide 2    1.0000    -> 2

+dddiv526 divide 2    1.00000   -> 2

+dddiv527 divide 2    1.000000  -> 2

+dddiv528 divide 2    1.0000000 -> 2

+dddiv529 divide 2.00 1.00      -> 2

+

+dddiv530 divide  2.40   2      ->  1.20

+dddiv531 divide  2.40   4      ->  0.60

+dddiv532 divide  2.40  10      ->  0.24

+dddiv533 divide  2.40   2.0    ->  1.2

+dddiv534 divide  2.40   4.0    ->  0.6

+dddiv535 divide  2.40  10.0    ->  0.24

+dddiv536 divide  2.40   2.00   ->  1.2

+dddiv537 divide  2.40   4.00   ->  0.6

+dddiv538 divide  2.40  10.00   ->  0.24

+dddiv539 divide  0.9    0.1    ->  9

+dddiv540 divide  0.9    0.01   ->  9E+1

+dddiv541 divide  0.9    0.001  ->  9E+2

+dddiv542 divide  5      2      ->  2.5

+dddiv543 divide  5      2.0    ->  2.5

+dddiv544 divide  5      2.00   ->  2.5

+dddiv545 divide  5      20     ->  0.25

+dddiv546 divide  5      20.0   ->  0.25

+dddiv547 divide  2.400  2      ->  1.200

+dddiv548 divide  2.400  2.0    ->  1.20

+dddiv549 divide  2.400  2.400  ->  1

+

+dddiv550 divide  240    1      ->  240

+dddiv551 divide  240    10     ->  24

+dddiv552 divide  240    100    ->  2.4

+dddiv553 divide  240    1000   ->  0.24

+dddiv554 divide  2400   1      ->  2400

+dddiv555 divide  2400   10     ->  240

+dddiv556 divide  2400   100    ->  24

+dddiv557 divide  2400   1000   ->  2.4

+

+-- +ve exponent

+dddiv600 divide  2.4E+9     2  ->  1.2E+9

+dddiv601 divide  2.40E+9    2  ->  1.20E+9

+dddiv602 divide  2.400E+9   2  ->  1.200E+9

+dddiv603 divide  2.4000E+9  2  ->  1.2000E+9

+dddiv604 divide  24E+8      2  ->  1.2E+9

+dddiv605 divide  240E+7     2  ->  1.20E+9

+dddiv606 divide  2400E+6    2  ->  1.200E+9

+dddiv607 divide  24000E+5   2  ->  1.2000E+9

+

+-- more zeros, etc.

+dddiv731 divide 5.00 1E-3    -> 5.00E+3

+dddiv732 divide 00.00 0.000  -> NaN Division_undefined

+dddiv733 divide 00.00 0E-3   -> NaN Division_undefined

+dddiv734 divide  0    -0     -> NaN Division_undefined

+dddiv735 divide -0     0     -> NaN Division_undefined

+dddiv736 divide -0    -0     -> NaN Division_undefined

+

+dddiv741 divide  0    -1     -> -0

+dddiv742 divide -0    -1     ->  0

+dddiv743 divide  0     1     ->  0

+dddiv744 divide -0     1     -> -0

+dddiv745 divide -1     0     -> -Infinity Division_by_zero

+dddiv746 divide -1    -0     ->  Infinity Division_by_zero

+dddiv747 divide  1     0     ->  Infinity Division_by_zero

+dddiv748 divide  1    -0     -> -Infinity Division_by_zero

+

+dddiv751 divide  0.0  -1     -> -0.0

+dddiv752 divide -0.0  -1     ->  0.0

+dddiv753 divide  0.0   1     ->  0.0

+dddiv754 divide -0.0   1     -> -0.0

+dddiv755 divide -1.0   0     -> -Infinity Division_by_zero

+dddiv756 divide -1.0  -0     ->  Infinity Division_by_zero

+dddiv757 divide  1.0   0     ->  Infinity Division_by_zero

+dddiv758 divide  1.0  -0     -> -Infinity Division_by_zero

+

+dddiv761 divide  0    -1.0   -> -0E+1

+dddiv762 divide -0    -1.0   ->  0E+1

+dddiv763 divide  0     1.0   ->  0E+1

+dddiv764 divide -0     1.0   -> -0E+1

+dddiv765 divide -1     0.0   -> -Infinity Division_by_zero

+dddiv766 divide -1    -0.0   ->  Infinity Division_by_zero

+dddiv767 divide  1     0.0   ->  Infinity Division_by_zero

+dddiv768 divide  1    -0.0   -> -Infinity Division_by_zero

+

+dddiv771 divide  0.0  -1.0   -> -0

+dddiv772 divide -0.0  -1.0   ->  0

+dddiv773 divide  0.0   1.0   ->  0

+dddiv774 divide -0.0   1.0   -> -0

+dddiv775 divide -1.0   0.0   -> -Infinity Division_by_zero

+dddiv776 divide -1.0  -0.0   ->  Infinity Division_by_zero

+dddiv777 divide  1.0   0.0   ->  Infinity Division_by_zero

+dddiv778 divide  1.0  -0.0   -> -Infinity Division_by_zero

+

+-- Specials

+dddiv780 divide  Inf  -Inf   ->  NaN Invalid_operation

+dddiv781 divide  Inf  -1000  -> -Infinity

+dddiv782 divide  Inf  -1     -> -Infinity

+dddiv783 divide  Inf  -0     -> -Infinity

+dddiv784 divide  Inf   0     ->  Infinity

+dddiv785 divide  Inf   1     ->  Infinity

+dddiv786 divide  Inf   1000  ->  Infinity

+dddiv787 divide  Inf   Inf   ->  NaN Invalid_operation

+dddiv788 divide -1000  Inf   -> -0E-398 Clamped

+dddiv789 divide -Inf   Inf   ->  NaN Invalid_operation

+dddiv790 divide -1     Inf   -> -0E-398 Clamped

+dddiv791 divide -0     Inf   -> -0E-398 Clamped

+dddiv792 divide  0     Inf   ->  0E-398 Clamped

+dddiv793 divide  1     Inf   ->  0E-398 Clamped

+dddiv794 divide  1000  Inf   ->  0E-398 Clamped

+dddiv795 divide  Inf   Inf   ->  NaN Invalid_operation

+

+dddiv800 divide -Inf  -Inf   ->  NaN Invalid_operation

+dddiv801 divide -Inf  -1000  ->  Infinity

+dddiv802 divide -Inf  -1     ->  Infinity

+dddiv803 divide -Inf  -0     ->  Infinity

+dddiv804 divide -Inf   0     -> -Infinity

+dddiv805 divide -Inf   1     -> -Infinity

+dddiv806 divide -Inf   1000  -> -Infinity

+dddiv807 divide -Inf   Inf   ->  NaN Invalid_operation

+dddiv808 divide -1000  Inf   -> -0E-398 Clamped

+dddiv809 divide -Inf  -Inf   ->  NaN Invalid_operation

+dddiv810 divide -1    -Inf   ->  0E-398 Clamped

+dddiv811 divide -0    -Inf   ->  0E-398 Clamped

+dddiv812 divide  0    -Inf   -> -0E-398 Clamped

+dddiv813 divide  1    -Inf   -> -0E-398 Clamped

+dddiv814 divide  1000 -Inf   -> -0E-398 Clamped

+dddiv815 divide  Inf  -Inf   ->  NaN Invalid_operation

+

+dddiv821 divide  NaN -Inf    ->  NaN

+dddiv822 divide  NaN -1000   ->  NaN

+dddiv823 divide  NaN -1      ->  NaN

+dddiv824 divide  NaN -0      ->  NaN

+dddiv825 divide  NaN  0      ->  NaN

+dddiv826 divide  NaN  1      ->  NaN

+dddiv827 divide  NaN  1000   ->  NaN

+dddiv828 divide  NaN  Inf    ->  NaN

+dddiv829 divide  NaN  NaN    ->  NaN

+dddiv830 divide -Inf  NaN    ->  NaN

+dddiv831 divide -1000 NaN    ->  NaN

+dddiv832 divide -1    NaN    ->  NaN

+dddiv833 divide -0    NaN    ->  NaN

+dddiv834 divide  0    NaN    ->  NaN

+dddiv835 divide  1    NaN    ->  NaN

+dddiv836 divide  1000 NaN    ->  NaN

+dddiv837 divide  Inf  NaN    ->  NaN

+

+dddiv841 divide  sNaN -Inf   ->  NaN  Invalid_operation

+dddiv842 divide  sNaN -1000  ->  NaN  Invalid_operation

+dddiv843 divide  sNaN -1     ->  NaN  Invalid_operation

+dddiv844 divide  sNaN -0     ->  NaN  Invalid_operation

+dddiv845 divide  sNaN  0     ->  NaN  Invalid_operation

+dddiv846 divide  sNaN  1     ->  NaN  Invalid_operation

+dddiv847 divide  sNaN  1000  ->  NaN  Invalid_operation

+dddiv848 divide  sNaN  NaN   ->  NaN  Invalid_operation

+dddiv849 divide  sNaN sNaN   ->  NaN  Invalid_operation

+dddiv850 divide  NaN  sNaN   ->  NaN  Invalid_operation

+dddiv851 divide -Inf  sNaN   ->  NaN  Invalid_operation

+dddiv852 divide -1000 sNaN   ->  NaN  Invalid_operation

+dddiv853 divide -1    sNaN   ->  NaN  Invalid_operation

+dddiv854 divide -0    sNaN   ->  NaN  Invalid_operation

+dddiv855 divide  0    sNaN   ->  NaN  Invalid_operation

+dddiv856 divide  1    sNaN   ->  NaN  Invalid_operation

+dddiv857 divide  1000 sNaN   ->  NaN  Invalid_operation

+dddiv858 divide  Inf  sNaN   ->  NaN  Invalid_operation

+dddiv859 divide  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dddiv861 divide  NaN9 -Inf   ->  NaN9

+dddiv862 divide  NaN8  1000  ->  NaN8

+dddiv863 divide  NaN7  Inf   ->  NaN7

+dddiv864 divide  NaN6  NaN5  ->  NaN6

+dddiv865 divide -Inf   NaN4  ->  NaN4

+dddiv866 divide -1000  NaN3  ->  NaN3

+dddiv867 divide  Inf   NaN2  ->  NaN2

+

+dddiv871 divide  sNaN99 -Inf    ->  NaN99 Invalid_operation

+dddiv872 divide  sNaN98 -1      ->  NaN98 Invalid_operation

+dddiv873 divide  sNaN97  NaN    ->  NaN97 Invalid_operation

+dddiv874 divide  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+dddiv875 divide  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dddiv876 divide -Inf    sNaN92  ->  NaN92 Invalid_operation

+dddiv877 divide  0      sNaN91  ->  NaN91 Invalid_operation

+dddiv878 divide  Inf    sNaN90  ->  NaN90 Invalid_operation

+dddiv879 divide  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+dddiv881 divide  -NaN9  -Inf   ->  -NaN9

+dddiv882 divide  -NaN8   1000  ->  -NaN8

+dddiv883 divide  -NaN7   Inf   ->  -NaN7

+dddiv884 divide  -NaN6  -NaN5  ->  -NaN6

+dddiv885 divide  -Inf   -NaN4  ->  -NaN4

+dddiv886 divide  -1000  -NaN3  ->  -NaN3

+dddiv887 divide   Inf   -NaN2  ->  -NaN2

+

+dddiv891 divide -sNaN99 -Inf    -> -NaN99 Invalid_operation

+dddiv892 divide -sNaN98 -1      -> -NaN98 Invalid_operation

+dddiv893 divide -sNaN97  NaN    -> -NaN97 Invalid_operation

+dddiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation

+dddiv895 divide -NaN95  -sNaN93 -> -NaN93 Invalid_operation

+dddiv896 divide -Inf    -sNaN92 -> -NaN92 Invalid_operation

+dddiv897 divide  0      -sNaN91 -> -NaN91 Invalid_operation

+dddiv898 divide  Inf    -sNaN90 -> -NaN90 Invalid_operation

+dddiv899 divide -NaN    -sNaN89 -> -NaN89 Invalid_operation

+

+-- Various flavours of divide by 0

+dddiv901 divide    0       0   ->  NaN Division_undefined

+dddiv902 divide    0.0E5   0   ->  NaN Division_undefined

+dddiv903 divide    0.000   0   ->  NaN Division_undefined

+dddiv904 divide    0.0001  0   ->  Infinity Division_by_zero

+dddiv905 divide    0.01    0   ->  Infinity Division_by_zero

+dddiv906 divide    0.1     0   ->  Infinity Division_by_zero

+dddiv907 divide    1       0   ->  Infinity Division_by_zero

+dddiv908 divide    1       0.0 ->  Infinity Division_by_zero

+dddiv909 divide   10       0.0 ->  Infinity Division_by_zero

+dddiv910 divide   1E+100   0.0 ->  Infinity Division_by_zero

+dddiv911 divide   1E+100   0   ->  Infinity Division_by_zero

+

+dddiv921 divide   -0.0001  0   -> -Infinity Division_by_zero

+dddiv922 divide   -0.01    0   -> -Infinity Division_by_zero

+dddiv923 divide   -0.1     0   -> -Infinity Division_by_zero

+dddiv924 divide   -1       0   -> -Infinity Division_by_zero

+dddiv925 divide   -1       0.0 -> -Infinity Division_by_zero

+dddiv926 divide  -10       0.0 -> -Infinity Division_by_zero

+dddiv927 divide  -1E+100   0.0 -> -Infinity Division_by_zero

+dddiv928 divide  -1E+100   0   -> -Infinity Division_by_zero

+

+dddiv931 divide    0.0001 -0   -> -Infinity Division_by_zero

+dddiv932 divide    0.01   -0   -> -Infinity Division_by_zero

+dddiv933 divide    0.1    -0   -> -Infinity Division_by_zero

+dddiv934 divide    1      -0   -> -Infinity Division_by_zero

+dddiv935 divide    1      -0.0 -> -Infinity Division_by_zero

+dddiv936 divide   10      -0.0 -> -Infinity Division_by_zero

+dddiv937 divide   1E+100  -0.0 -> -Infinity Division_by_zero

+dddiv938 divide   1E+100  -0   -> -Infinity Division_by_zero

+

+dddiv941 divide   -0.0001 -0   ->  Infinity Division_by_zero

+dddiv942 divide   -0.01   -0   ->  Infinity Division_by_zero

+dddiv943 divide   -0.1    -0   ->  Infinity Division_by_zero

+dddiv944 divide   -1      -0   ->  Infinity Division_by_zero

+dddiv945 divide   -1      -0.0 ->  Infinity Division_by_zero

+dddiv946 divide  -10      -0.0 ->  Infinity Division_by_zero

+dddiv947 divide  -1E+100  -0.0 ->  Infinity Division_by_zero

+dddiv948 divide  -1E+100  -0   ->  Infinity Division_by_zero

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+dddiv1021  divide 1E0          1E0 -> 1

+dddiv1022  divide 1E0          2E0 -> 0.5

+dddiv1023  divide 1E0          3E0 -> 0.3333333333333333 Inexact Rounded

+dddiv1024  divide 100E-2   1000E-3 -> 1

+dddiv1025  divide 24E-1        2E0 -> 1.2

+dddiv1026  divide 2400E-3      2E0 -> 1.200

+dddiv1027  divide 5E0          2E0 -> 2.5

+dddiv1028  divide 5E0        20E-1 -> 2.5

+dddiv1029  divide 5E0      2000E-3 -> 2.5

+dddiv1030  divide 5E0         2E-1 -> 25

+dddiv1031  divide 5E0        20E-2 -> 25

+dddiv1032  divide 480E-2       3E0 -> 1.60

+dddiv1033  divide 47E-1        2E0 -> 2.35

+

+-- ECMAScript bad examples

+rounding:    half_down

+dddiv1040  divide 5 9  -> 0.5555555555555556 Inexact Rounded

+rounding:    half_even

+dddiv1041  divide 6 11 -> 0.5454545454545455 Inexact Rounded

+

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

+-- signs

+dddiv1051 divide  1e+277  1e-311 ->  Infinity Overflow Inexact Rounded

+dddiv1052 divide  1e+277 -1e-311 -> -Infinity Overflow Inexact Rounded

+dddiv1053 divide -1e+277  1e-311 -> -Infinity Overflow Inexact Rounded

+dddiv1054 divide -1e+277 -1e-311 ->  Infinity Overflow Inexact Rounded

+dddiv1055 divide  1e-277  1e+311 ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+dddiv1056 divide  1e-277 -1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+dddiv1057 divide -1e-277  1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+dddiv1058 divide -1e-277 -1e+311 ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+

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

+dddiv1060 divide 1e-291 1e+101 -> 1E-392 Subnormal

+dddiv1061 divide 1e-291 1e+102 -> 1E-393 Subnormal

+dddiv1062 divide 1e-291 1e+103 -> 1E-394 Subnormal

+dddiv1063 divide 1e-291 1e+104 -> 1E-395 Subnormal

+dddiv1064 divide 1e-291 1e+105 -> 1E-396 Subnormal

+dddiv1065 divide 1e-291 1e+106 -> 1E-397 Subnormal

+dddiv1066 divide 1e-291 1e+107 -> 1E-398 Subnormal

+dddiv1067 divide 1e-291 1e+108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+dddiv1068 divide 1e-291 1e+109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+dddiv1069 divide 1e-291 1e+110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

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

+dddiv1070 divide 1e+60 1e-321 -> 1.000000000000E+381  Clamped

+dddiv1071 divide 1e+60 1e-322 -> 1.0000000000000E+382  Clamped

+dddiv1072 divide 1e+60 1e-323 -> 1.00000000000000E+383  Clamped

+dddiv1073 divide 1e+60 1e-324 -> 1.000000000000000E+384  Clamped

+dddiv1074 divide 1e+60 1e-325 -> Infinity Overflow Inexact Rounded

+dddiv1075 divide 1e+60 1e-326 -> Infinity Overflow Inexact Rounded

+dddiv1076 divide 1e+60 1e-327 -> Infinity Overflow Inexact Rounded

+dddiv1077 divide 1e+60 1e-328 -> Infinity Overflow Inexact Rounded

+dddiv1078 divide 1e+60 1e-329 -> Infinity Overflow Inexact Rounded

+dddiv1079 divide 1e+60 1e-330 -> Infinity Overflow Inexact Rounded

+

+dddiv1101 divide  1.0000E-394  1     -> 1.0000E-394 Subnormal

+dddiv1102 divide  1.000E-394   1e+1  -> 1.000E-395  Subnormal

+dddiv1103 divide  1.00E-394    1e+2  -> 1.00E-396   Subnormal

+dddiv1104 divide  1.0E-394     1e+3  -> 1.0E-397    Subnormal

+dddiv1105 divide  1.0E-394     1e+4  -> 1E-398     Subnormal Rounded

+dddiv1106 divide  1.3E-394     1e+4  -> 1E-398     Underflow Subnormal Inexact Rounded

+dddiv1107 divide  1.5E-394     1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded

+dddiv1108 divide  1.7E-394     1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded

+dddiv1109 divide  2.3E-394     1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded

+dddiv1110 divide  2.5E-394     1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded

+dddiv1111 divide  2.7E-394     1e+4  -> 3E-398     Underflow Subnormal Inexact Rounded

+dddiv1112 divide  1.49E-394    1e+4  -> 1E-398     Underflow Subnormal Inexact Rounded

+dddiv1113 divide  1.50E-394    1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded

+dddiv1114 divide  1.51E-394    1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded

+dddiv1115 divide  2.49E-394    1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded

+dddiv1116 divide  2.50E-394    1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded

+dddiv1117 divide  2.51E-394    1e+4  -> 3E-398     Underflow Subnormal Inexact Rounded

+

+dddiv1118 divide  1E-394       1e+4  -> 1E-398     Subnormal

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

+dddiv1120 divide  5E-394       1e+5  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped

+dddiv1121 divide  7E-394       1e+5  -> 1E-398     Underflow Subnormal Inexact Rounded

+dddiv1122 divide  9E-394       1e+5  -> 1E-398     Underflow Subnormal Inexact Rounded

+dddiv1123 divide  9.9E-394     1e+5  -> 1E-398     Underflow Subnormal Inexact Rounded

+

+dddiv1124 divide  1E-394      -1e+4  -> -1E-398    Subnormal

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

+dddiv1126 divide -5E-394       1e+5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped

+dddiv1127 divide  7E-394      -1e+5  -> -1E-398    Underflow Subnormal Inexact Rounded

+dddiv1128 divide -9E-394       1e+5  -> -1E-398    Underflow Subnormal Inexact Rounded

+dddiv1129 divide  9.9E-394    -1e+5  -> -1E-398    Underflow Subnormal Inexact Rounded

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

+

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

+dddiv1132 divide  1.0E-199     1e+199 -> 1E-398    Subnormal Rounded

+dddiv1133 divide  1.0E-199     1e+198 -> 1.0E-397  Subnormal

+dddiv1134 divide  2.0E-199     2e+198 -> 1.0E-397  Subnormal

+dddiv1135 divide  4.0E-199     4e+198 -> 1.0E-397  Subnormal

+dddiv1136 divide 10.0E-199    10e+198 -> 1.0E-397  Subnormal

+dddiv1137 divide 30.0E-199    30e+198 -> 1.0E-397  Subnormal

+

+-- randoms

+dddiv2010  divide  -3.303226714900711E-35   8.796578842713183E+73   ->  -3.755126594058783E-109 Inexact Rounded

+dddiv2011  divide   933153327821073.6       68782181090246.25       ->   13.56678885475763 Inexact Rounded

+dddiv2012  divide   5.04752436057906E-72   -8.179481771238642E+64   ->  -6.170958627632835E-137 Inexact Rounded

+dddiv2013  divide  -3707613309582318        3394911196503.048       ->  -1092.109070010836 Inexact Rounded

+dddiv2014  divide   99689.0555190461       -4.735208553891464       ->  -21052.72753765411 Inexact Rounded

+dddiv2015  divide  -1447915775613329        269750797.8184875       ->  -5367605.164925653 Inexact Rounded

+dddiv2016  divide  -9.394881304225258E-19  -830585.0252671636       ->   1.131116143251358E-24 Inexact Rounded

+dddiv2017  divide  -1.056283432738934       88.58754555124013       ->  -0.01192361100159352 Inexact Rounded

+dddiv2018  divide   5763220933343.081       689089567025052.1       ->   0.008363529516524456 Inexact Rounded

+dddiv2019  divide   873819.122103216        9.740612494523300E-49   ->   8.970884763093948E+53 Inexact Rounded

+dddiv2020  divide   8022914.838533576       6178.566801742713       ->   1298.507420243583 Inexact Rounded

+dddiv2021  divide   203982.7605650363      -2158.283639053435       ->  -94.51156320422168 Inexact Rounded

+dddiv2022  divide   803.6310547013030       7101143795399.238       ->   1.131692411611166E-10 Inexact Rounded

+dddiv2023  divide   9.251697842123399E-82  -1.342350220606119E-7    ->  -6.892163982321936E-75 Inexact Rounded

+dddiv2024  divide  -1.980600645637992E-53  -5.474262753214457E+77   ->   3.618022617703168E-131 Inexact Rounded

+dddiv2025  divide  -210.0322996351690      -8.580951835872843E+80   ->   2.447657365434971E-79 Inexact Rounded

+dddiv2026  divide  -1.821980314020370E+85  -3.018915267138165       ->   6.035215144503042E+84 Inexact Rounded

+dddiv2027  divide  -772264503601.1047       5.158258271408988E-86   ->  -1.497141986630614E+97 Inexact Rounded

+dddiv2028  divide  -767.0532415847106       2.700027228028939E-59   ->  -2.840909282772941E+61 Inexact Rounded

+dddiv2029  divide   496724.8548250093       7.32700588163100E+66    ->   6.779370220929013E-62 Inexact Rounded

+dddiv2030  divide  -304232651447703.9      -108.9730808657440       ->   2791814721862.565 Inexact Rounded

+dddiv2031  divide  -7.233817192699405E+42  -5711302004.149411       ->   1.266579352211430E+33 Inexact Rounded

+dddiv2032  divide  -9.999221444912745E+96   4010569406446197        ->  -2.493217404202250E+81 Inexact Rounded

+dddiv2033  divide  -1837272.061937622       8.356322838066762       ->  -219866.0939196882 Inexact Rounded

+dddiv2034  divide   2168.517555606529       209.1910258615061       ->   10.36620737756784 Inexact Rounded

+dddiv2035  divide  -1.884389790576371E+88   2.95181953870583E+20    ->  -6.383824505079828E+67 Inexact Rounded

+dddiv2036  divide   732263.6037438196       961222.3634446889       ->   0.7618045850698269 Inexact Rounded

+dddiv2037  divide  -813461419.0348336       5.376293753809143E+84   ->  -1.513052404285927E-76 Inexact Rounded

+dddiv2038  divide  -45562133508108.50      -9.776843494690107E+51   ->   4.660208945029519E-39 Inexact Rounded

+dddiv2039  divide  -6.489393172441016E+80  -9101965.097852113       ->   7.129661674897421E+73 Inexact Rounded

+dddiv2040  divide   3.694576237117349E+93   6683512.012622003       ->   5.527896456443912E+86 Inexact Rounded

+dddiv2041  divide  -2.252877726403272E+19  -7451913256.181367       ->   3023220546.125531 Inexact Rounded

+dddiv2042  divide   518303.1989111842       50.01587020474133       ->   10362.77479107123 Inexact Rounded

+dddiv2043  divide   2.902087881880103E+24   33.32400992305702       ->   8.708699488989578E+22 Inexact Rounded

+dddiv2044  divide   549619.4559510557       1660824845196338        ->   3.309316196351104E-10 Inexact Rounded

+dddiv2045  divide  -6775670774684043        8292152023.077262       ->  -817118.4941891062 Inexact Rounded

+dddiv2046  divide  -77.50923921524079      -5.636882655425815E+74   ->   1.375037302588405E-73 Inexact Rounded

+dddiv2047  divide  -2.984889459605149E-10  -88106156784122.99       ->   3.387833005721384E-24 Inexact Rounded

+dddiv2048  divide   0.949517293997085       44767115.96450998       ->   2.121015110175589E-8 Inexact Rounded

+dddiv2049  divide  -2760937211.084521      -1087015876975408        ->   0.000002539923537057024 Inexact Rounded

+dddiv2050  divide   28438351.85030536      -4.209397904088624E-47   ->  -6.755919135770688E+53 Inexact Rounded

+dddiv2051  divide  -85562731.6820956       -7.166045442530185E+45   ->   1.194002080621542E-38 Inexact Rounded

+dddiv2052  divide   2533802852165.25        7154.119606235955       ->   354173957.3317501 Inexact Rounded

+dddiv2053  divide  -8858831346851.474       97.59734208801716       ->  -90769186509.83577 Inexact Rounded

+dddiv2054  divide   176783629801387.5       840073263.3109817       ->   210438.3480848206 Inexact Rounded

+dddiv2055  divide  -493506471796175.6       79733894790822.03       ->  -6.189418854940746 Inexact Rounded

+dddiv2056  divide   790.1682542103445       829.9449370367435       ->   0.9520731062371214 Inexact Rounded

+dddiv2057  divide  -8920459838.583164      -4767.889187899214       ->   1870945.294035581 Inexact Rounded

+dddiv2058  divide   53536687164422.1        53137.5007032689        ->   1007512330.385698 Inexact Rounded

+dddiv2059  divide   4.051532311146561E-74  -2.343089768972261E+94   ->  -1.729140882606332E-168 Inexact Rounded

+dddiv2060  divide  -14847758778636.88       3.062543516383807E-43   ->  -4.848178874587497E+55 Inexact Rounded

+

+-- Division probably has pre-rounding, so need to test rounding

+-- explicitly rather than assume included through other tests;

+-- tests include simple rounding and also the tricky cases of sticky

+-- bits following two zeros

+--

+--   1/99999 gives 0.0000100001000010000100001000010000100001

+--                       1234567890123456

+--

+--   1/999999 gives 0.000001000001000001000001000001000001000001

+--                         1234567890123456

+

+rounding: ceiling

+dddiv3001  divide  1     3    ->  0.3333333333333334 Inexact Rounded

+dddiv3002  divide  2     3    ->  0.6666666666666667 Inexact Rounded

+dddiv3003  divide  1 99999    ->  0.00001000010000100002  Inexact Rounded

+dddiv3004  divide  1 999999   ->  0.000001000001000001001 Inexact Rounded

+

+rounding: floor

+dddiv3011  divide  1     3    ->  0.3333333333333333 Inexact Rounded

+dddiv3012  divide  2     3    ->  0.6666666666666666 Inexact Rounded

+dddiv3013  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded

+dddiv3014  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded

+

+rounding: up

+dddiv3021  divide  1     3    ->  0.3333333333333334 Inexact Rounded

+dddiv3022  divide  2     3    ->  0.6666666666666667 Inexact Rounded

+dddiv3023  divide  1 99999    ->  0.00001000010000100002  Inexact Rounded

+dddiv3024  divide  1 999999   ->  0.000001000001000001001 Inexact Rounded

+

+rounding: down

+dddiv3031  divide  1     3    ->  0.3333333333333333 Inexact Rounded

+dddiv3032  divide  2     3    ->  0.6666666666666666 Inexact Rounded

+dddiv3033  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded

+dddiv3034  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded

+

+rounding: half_up

+dddiv3041  divide  1     3    ->  0.3333333333333333 Inexact Rounded

+dddiv3042  divide  2     3    ->  0.6666666666666667 Inexact Rounded

+dddiv3043  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded

+dddiv3044  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded

+

+rounding: half_down

+dddiv3051  divide  1     3    ->  0.3333333333333333 Inexact Rounded

+dddiv3052  divide  2     3    ->  0.6666666666666667 Inexact Rounded

+dddiv3053  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded

+dddiv3054  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded

+

+rounding: half_even

+dddiv3061  divide  1     3    ->  0.3333333333333333 Inexact Rounded

+dddiv3062  divide  2     3    ->  0.6666666666666667 Inexact Rounded

+dddiv3063  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded

+dddiv3064  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded

+

+rounding: 05up

+dddiv3071  divide  1     3    ->  0.3333333333333333 Inexact Rounded

+dddiv3072  divide  2     3    ->  0.6666666666666666 Inexact Rounded

+dddiv3073  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded

+dddiv3074  divide  1 999999   ->  0.000001000001000001001 Inexact Rounded

+

+-- random divide tests with result near 1

+rounding: half_even

+dddiv4001 divide  3195385192916917   3195385192946695  ->  0.9999999999906809  Inexact Rounded

+dddiv4002 divide  1393723067526993   1393723067519475  ->  1.000000000005394  Inexact Rounded

+dddiv4003 divide   759985543702302    759985543674015  ->  1.000000000037220  Inexact Rounded

+dddiv4004 divide  9579158456027302   9579158456036864  ->  0.9999999999990018  Inexact Rounded

+dddiv4005 divide  7079398299143569   7079398299156904  ->  0.9999999999981164  Inexact Rounded

+dddiv4006 divide  6636169255366598   6636169255336386  ->  1.000000000004553  Inexact Rounded

+dddiv4007 divide  6964813971340090   6964813971321554  ->  1.000000000002661  Inexact Rounded

+dddiv4008 divide  4182275225480784   4182275225454009  ->  1.000000000006402  Inexact Rounded

+dddiv4009 divide  9228325124938029   9228325124918730  ->  1.000000000002091  Inexact Rounded

+dddiv4010 divide  3428346338630192   3428346338609843  ->  1.000000000005936  Inexact Rounded

+dddiv4011 divide  2143511550722893   2143511550751754  ->  0.9999999999865356  Inexact Rounded

+dddiv4012 divide  1672732924396785   1672732924401811  ->  0.9999999999969953  Inexact Rounded

+dddiv4013 divide  4190714611948216   4190714611948664  ->  0.9999999999998931  Inexact Rounded

+dddiv4014 divide  3942254800848877   3942254800814556  ->  1.000000000008706  Inexact Rounded

+dddiv4015 divide  2854459826952334   2854459826960762  ->  0.9999999999970474  Inexact Rounded

+dddiv4016 divide  2853258953664731   2853258953684471  ->  0.9999999999930816  Inexact Rounded

+dddiv4017 divide  9453512638125978   9453512638146425  ->  0.9999999999978371  Inexact Rounded

+dddiv4018 divide   339476633940369    339476633912887  ->  1.000000000080954  Inexact Rounded

+dddiv4019 divide  4542181492688467   4542181492697735  ->  0.9999999999979596  Inexact Rounded

+dddiv4020 divide  7312600192399197   7312600192395424  ->  1.000000000000516  Inexact Rounded

+dddiv4021 divide  1811674985570111   1811674985603935  ->  0.9999999999813300  Inexact Rounded

+dddiv4022 divide  1706462639003481   1706462639017740  ->  0.9999999999916441  Inexact Rounded

+dddiv4023 divide  6697052654940368   6697052654934110  ->  1.000000000000934  Inexact Rounded

+dddiv4024 divide  5015283664277539   5015283664310719  ->  0.9999999999933842  Inexact Rounded

+dddiv4025 divide  2359501561537464   2359501561502464  ->  1.000000000014834  Inexact Rounded

+dddiv4026 divide  2669850227909157   2669850227901548  ->  1.000000000002850  Inexact Rounded

+dddiv4027 divide  9329725546974648   9329725547002445  ->  0.9999999999970206  Inexact Rounded

+dddiv4028 divide  3228562867071248   3228562867106206  ->  0.9999999999891723  Inexact Rounded

+dddiv4029 divide  4862226644921175   4862226644909380  ->  1.000000000002426  Inexact Rounded

+dddiv4030 divide  1022267997054529   1022267997071329  ->  0.9999999999835660  Inexact Rounded

+dddiv4031 divide  1048777482023719   1048777482000948  ->  1.000000000021712  Inexact Rounded

+dddiv4032 divide  9980113777337098   9980113777330539  ->  1.000000000000657  Inexact Rounded

+dddiv4033 divide  7506839167963908   7506839167942901  ->  1.000000000002798  Inexact Rounded

+dddiv4034 divide   231119751977860    231119751962453  ->  1.000000000066662  Inexact Rounded

+dddiv4035 divide  4034903664762962   4034903664795526  ->  0.9999999999919294  Inexact Rounded

+dddiv4036 divide  5700122152274696   5700122152251386  ->  1.000000000004089  Inexact Rounded

+dddiv4037 divide  6869599590293110   6869599590293495  ->  0.9999999999999440  Inexact Rounded

+dddiv4038 divide  5576281960092797   5576281960105579  ->  0.9999999999977078  Inexact Rounded

+dddiv4039 divide  2304844888381318   2304844888353073  ->  1.000000000012255  Inexact Rounded

+dddiv4040 divide  3265933651656452   3265933651682779  ->  0.9999999999919389  Inexact Rounded

+dddiv4041 divide  5235714985079914   5235714985066131  ->  1.000000000002632  Inexact Rounded

+dddiv4042 divide  5578481572827551   5578481572822945  ->  1.000000000000826  Inexact Rounded

+dddiv4043 divide  4909616081396134   4909616081373076  ->  1.000000000004696  Inexact Rounded

+dddiv4044 divide   636447224349537    636447224338757  ->  1.000000000016938  Inexact Rounded

+dddiv4045 divide  1539373428396640   1539373428364727  ->  1.000000000020731  Inexact Rounded

+dddiv4046 divide  2028786707377893   2028786707378866  ->  0.9999999999995204  Inexact Rounded

+dddiv4047 divide   137643260486222    137643260487419  ->  0.9999999999913036  Inexact Rounded

+dddiv4048 divide   247451519746765    247451519752267  ->  0.9999999999777653  Inexact Rounded

+dddiv4049 divide  7877858475022054   7877858474999794  ->  1.000000000002826  Inexact Rounded

+dddiv4050 divide  7333242694766258   7333242694744628  ->  1.000000000002950  Inexact Rounded

+dddiv4051 divide   124051503698592    124051503699397  ->  0.9999999999935108  Inexact Rounded

+dddiv4052 divide  8944737432385188   8944737432406860  ->  0.9999999999975771  Inexact Rounded

+dddiv4053 divide  9883948923406874   9883948923424843  ->  0.9999999999981820  Inexact Rounded

+dddiv4054 divide  6829178741654284   6829178741671973  ->  0.9999999999974098  Inexact Rounded

+dddiv4055 divide  7342752479768122   7342752479793385  ->  0.9999999999965595  Inexact Rounded

+dddiv4056 divide  8066426579008783   8066426578977563  ->  1.000000000003870  Inexact Rounded

+dddiv4057 divide  8992775071383295   8992775071352712  ->  1.000000000003401  Inexact Rounded

+dddiv4058 divide  5485011755545641   5485011755543611  ->  1.000000000000370  Inexact Rounded

+dddiv4059 divide  5779983054353918   5779983054365300  ->  0.9999999999980308  Inexact Rounded

+dddiv4060 divide  9502265102713774   9502265102735208  ->  0.9999999999977443  Inexact Rounded

+dddiv4061 divide  2109558399130981   2109558399116281  ->  1.000000000006968  Inexact Rounded

+dddiv4062 divide  5296182636350471   5296182636351521  ->  0.9999999999998017  Inexact Rounded

+dddiv4063 divide  1440019225591883   1440019225601844  ->  0.9999999999930827  Inexact Rounded

+dddiv4064 divide  8182110791881341   8182110791847174  ->  1.000000000004176  Inexact Rounded

+dddiv4065 divide   489098235512060    489098235534516  ->  0.9999999999540869  Inexact Rounded

+dddiv4066 divide  6475687084782038   6475687084756089  ->  1.000000000004007  Inexact Rounded

+dddiv4067 divide  8094348555736948   8094348555759236  ->  0.9999999999972465  Inexact Rounded

+dddiv4068 divide  1982766816291543   1982766816309463  ->  0.9999999999909621  Inexact Rounded

+dddiv4069 divide  9277314300113251   9277314300084467  ->  1.000000000003103  Inexact Rounded

+dddiv4070 divide  4335532959318934   4335532959293167  ->  1.000000000005943  Inexact Rounded

+dddiv4071 divide  7767113032981348   7767113032968132  ->  1.000000000001702  Inexact Rounded

+dddiv4072 divide  1578548053342868   1578548053370448  ->  0.9999999999825282  Inexact Rounded

+dddiv4073 divide  3790420686666898   3790420686636315  ->  1.000000000008068  Inexact Rounded

+dddiv4074 divide   871682421955147    871682421976441  ->  0.9999999999755714  Inexact Rounded

+dddiv4075 divide   744141054479940    744141054512329  ->  0.9999999999564746  Inexact Rounded

+dddiv4076 divide  8956824183670735   8956824183641741  ->  1.000000000003237  Inexact Rounded

+dddiv4077 divide  8337291694485682   8337291694451193  ->  1.000000000004137  Inexact Rounded

+dddiv4078 divide  4107775944683669   4107775944657097  ->  1.000000000006469  Inexact Rounded

+dddiv4079 divide  8691900057964648   8691900057997555  ->  0.9999999999962141  Inexact Rounded

+dddiv4080 divide  2229528520536462   2229528520502337  ->  1.000000000015306  Inexact Rounded

+dddiv4081 divide   398442083774322    398442083746273  ->  1.000000000070397  Inexact Rounded

+dddiv4082 divide  5319819776808759   5319819776838313  ->  0.9999999999944445  Inexact Rounded

+dddiv4083 divide  7710491299066855   7710491299041858  ->  1.000000000003242  Inexact Rounded

+dddiv4084 divide  9083231296087266   9083231296058160  ->  1.000000000003204  Inexact Rounded

+dddiv4085 divide  3566873574904559   3566873574890328  ->  1.000000000003990  Inexact Rounded

+dddiv4086 divide   596343290550525    596343290555614  ->  0.9999999999914663  Inexact Rounded

+dddiv4087 divide   278227925093192    278227925068104  ->  1.000000000090171  Inexact Rounded

+dddiv4088 divide  3292902958490649   3292902958519881  ->  0.9999999999911227  Inexact Rounded

+dddiv4089 divide  5521871364245881   5521871364229536  ->  1.000000000002960  Inexact Rounded

+dddiv4090 divide  2406505602883617   2406505602857997  ->  1.000000000010646  Inexact Rounded

+dddiv4091 divide  7741146984869208   7741146984867255  ->  1.000000000000252  Inexact Rounded

+dddiv4092 divide  4576041832414909   4576041832405102  ->  1.000000000002143  Inexact Rounded

+dddiv4093 divide  9183756982878057   9183756982901934  ->  0.9999999999974001  Inexact Rounded

+dddiv4094 divide  6215736513855159   6215736513870342  ->  0.9999999999975573  Inexact Rounded

+dddiv4095 divide   248554968534533    248554968551417  ->  0.9999999999320714  Inexact Rounded

+dddiv4096 divide   376314165668645    376314165659755  ->  1.000000000023624  Inexact Rounded

+dddiv4097 divide  5513569249809718   5513569249808906  ->  1.000000000000147  Inexact Rounded

+dddiv4098 divide  3367992242167904   3367992242156228  ->  1.000000000003467  Inexact Rounded

+dddiv4099 divide  6134869538966967   6134869538985986  ->  0.9999999999968999  Inexact Rounded

+

+-- Null tests

+dddiv9998 divide 10  # -> NaN Invalid_operation

+dddiv9999 divide  # 10 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/ddDivideInt.decTest b/Lib/test/decimaltestdata/ddDivideInt.decTest
new file mode 100644
index 0000000..7116841
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddDivideInt.decTest
@@ -0,0 +1,449 @@
+------------------------------------------------------------------------

+-- ddDivideInt.decTest -- decDouble integer division                  --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+dddvi001 divideint  1     1    ->  1

+dddvi002 divideint  2     1    ->  2

+dddvi003 divideint  1     2    ->  0

+dddvi004 divideint  2     2    ->  1

+dddvi005 divideint  0     1    ->  0

+dddvi006 divideint  0     2    ->  0

+dddvi007 divideint  1     3    ->  0

+dddvi008 divideint  2     3    ->  0

+dddvi009 divideint  3     3    ->  1

+

+dddvi010 divideint  2.4   1    ->  2

+dddvi011 divideint  2.4   -1   ->  -2

+dddvi012 divideint  -2.4  1    ->  -2

+dddvi013 divideint  -2.4  -1   ->  2

+dddvi014 divideint  2.40  1    ->  2

+dddvi015 divideint  2.400 1    ->  2

+dddvi016 divideint  2.4   2    ->  1

+dddvi017 divideint  2.400 2    ->  1

+dddvi018 divideint  2.    2    ->  1

+dddvi019 divideint  20    20   ->  1

+

+dddvi020 divideint  187   187  ->  1

+dddvi021 divideint  5     2    ->  2

+dddvi022 divideint  5     2.0    ->  2

+dddvi023 divideint  5     2.000  ->  2

+dddvi024 divideint  5     0.200  ->  25

+dddvi025 divideint  5     0.200  ->  25

+

+dddvi030 divideint  1     2      ->  0

+dddvi031 divideint  1     4      ->  0

+dddvi032 divideint  1     8      ->  0

+dddvi033 divideint  1     16     ->  0

+dddvi034 divideint  1     32     ->  0

+dddvi035 divideint  1     64     ->  0

+dddvi040 divideint  1    -2      -> -0

+dddvi041 divideint  1    -4      -> -0

+dddvi042 divideint  1    -8      -> -0

+dddvi043 divideint  1    -16     -> -0

+dddvi044 divideint  1    -32     -> -0

+dddvi045 divideint  1    -64     -> -0

+dddvi050 divideint -1     2      -> -0

+dddvi051 divideint -1     4      -> -0

+dddvi052 divideint -1     8      -> -0

+dddvi053 divideint -1     16     -> -0

+dddvi054 divideint -1     32     -> -0

+dddvi055 divideint -1     64     -> -0

+dddvi060 divideint -1    -2      ->  0

+dddvi061 divideint -1    -4      ->  0

+dddvi062 divideint -1    -8      ->  0

+dddvi063 divideint -1    -16     ->  0

+dddvi064 divideint -1    -32     ->  0

+dddvi065 divideint -1    -64     ->  0

+

+-- similar with powers of ten

+dddvi160 divideint  1     1         ->  1

+dddvi161 divideint  1     10        ->  0

+dddvi162 divideint  1     100       ->  0

+dddvi163 divideint  1     1000      ->  0

+dddvi164 divideint  1     10000     ->  0

+dddvi165 divideint  1     100000    ->  0

+dddvi166 divideint  1     1000000   ->  0

+dddvi167 divideint  1     10000000  ->  0

+dddvi168 divideint  1     100000000 ->  0

+dddvi170 divideint  1    -1         -> -1

+dddvi171 divideint  1    -10        -> -0

+dddvi172 divideint  1    -100       -> -0

+dddvi173 divideint  1    -1000      -> -0

+dddvi174 divideint  1    -10000     -> -0

+dddvi175 divideint  1    -100000    -> -0

+dddvi176 divideint  1    -1000000   -> -0

+dddvi177 divideint  1    -10000000  -> -0

+dddvi178 divideint  1    -100000000 -> -0

+dddvi180 divideint -1     1         -> -1

+dddvi181 divideint -1     10        -> -0

+dddvi182 divideint -1     100       -> -0

+dddvi183 divideint -1     1000      -> -0

+dddvi184 divideint -1     10000     -> -0

+dddvi185 divideint -1     100000    -> -0

+dddvi186 divideint -1     1000000   -> -0

+dddvi187 divideint -1     10000000  -> -0

+dddvi188 divideint -1     100000000 -> -0

+dddvi190 divideint -1    -1         ->  1

+dddvi191 divideint -1    -10        ->  0

+dddvi192 divideint -1    -100       ->  0

+dddvi193 divideint -1    -1000      ->  0

+dddvi194 divideint -1    -10000     ->  0

+dddvi195 divideint -1    -100000    ->  0

+dddvi196 divideint -1    -1000000   ->  0

+dddvi197 divideint -1    -10000000  ->  0

+dddvi198 divideint -1    -100000000 ->  0

+

+-- some long operand (at p=9) cases

+dddvi070 divideint  999999999     1  ->  999999999

+dddvi071 divideint  999999999.4   1  ->  999999999

+dddvi072 divideint  999999999.5   1  ->  999999999

+dddvi073 divideint  999999999.9   1  ->  999999999

+dddvi074 divideint  999999999.999 1  ->  999999999

+

+dddvi090 divideint  0.            1    ->  0

+dddvi091 divideint  .0            1    ->  0

+dddvi092 divideint  0.00          1    ->  0

+dddvi093 divideint  0.00E+9       1    ->  0

+dddvi094 divideint  0.0000E-50    1    ->  0

+

+dddvi100 divideint  1  1   -> 1

+dddvi101 divideint  1  2   -> 0

+dddvi102 divideint  1  3   -> 0

+dddvi103 divideint  1  4   -> 0

+dddvi104 divideint  1  5   -> 0

+dddvi105 divideint  1  6   -> 0

+dddvi106 divideint  1  7   -> 0

+dddvi107 divideint  1  8   -> 0

+dddvi108 divideint  1  9   -> 0

+dddvi109 divideint  1  10  -> 0

+dddvi110 divideint  1  1   -> 1

+dddvi111 divideint  2  1   -> 2

+dddvi112 divideint  3  1   -> 3

+dddvi113 divideint  4  1   -> 4

+dddvi114 divideint  5  1   -> 5

+dddvi115 divideint  6  1   -> 6

+dddvi116 divideint  7  1   -> 7

+dddvi117 divideint  8  1   -> 8

+dddvi118 divideint  9  1   -> 9

+dddvi119 divideint  10 1   -> 10

+

+-- from DiagBigDecimal

+dddvi131 divideint  101.3   1     ->  101

+dddvi132 divideint  101.0   1     ->  101

+dddvi133 divideint  101.3   3     ->  33

+dddvi134 divideint  101.0   3     ->  33

+dddvi135 divideint  2.4     1     ->  2

+dddvi136 divideint  2.400   1     ->  2

+dddvi137 divideint  18      18    ->  1

+dddvi138 divideint  1120    1000  ->  1

+dddvi139 divideint  2.4     2     ->  1

+dddvi140 divideint  2.400   2     ->  1

+dddvi141 divideint  0.5     2.000 ->  0

+dddvi142 divideint  8.005   7     ->  1

+dddvi143 divideint  5       2     ->  2

+dddvi144 divideint  0       2     ->  0

+dddvi145 divideint  0.00    2     ->  0

+

+-- Others

+dddvi150 divideint  12345  4.999  ->  2469

+dddvi151 divideint  12345  4.99   ->  2473

+dddvi152 divideint  12345  4.9    ->  2519

+dddvi153 divideint  12345  5      ->  2469

+dddvi154 divideint  12345  5.1    ->  2420

+dddvi155 divideint  12345  5.01   ->  2464

+dddvi156 divideint  12345  5.001  ->  2468

+dddvi157 divideint    101  7.6    ->  13

+

+-- Various flavours of divideint by 0

+dddvi201 divideint  0      0   -> NaN Division_undefined

+dddvi202 divideint  0.0E5  0   -> NaN Division_undefined

+dddvi203 divideint  0.000  0   -> NaN Division_undefined

+dddvi204 divideint  0.0001 0   -> Infinity Division_by_zero

+dddvi205 divideint  0.01   0   -> Infinity Division_by_zero

+dddvi206 divideint  0.1    0   -> Infinity Division_by_zero

+dddvi207 divideint  1      0   -> Infinity Division_by_zero

+dddvi208 divideint  1      0.0 -> Infinity Division_by_zero

+dddvi209 divideint 10      0.0 -> Infinity Division_by_zero

+dddvi210 divideint 1E+100  0.0 -> Infinity Division_by_zero

+dddvi211 divideint 1E+380  0   -> Infinity Division_by_zero

+dddvi214 divideint  -0.0001 0   -> -Infinity Division_by_zero

+dddvi215 divideint  -0.01   0   -> -Infinity Division_by_zero

+dddvi216 divideint  -0.1    0   -> -Infinity Division_by_zero

+dddvi217 divideint  -1      0   -> -Infinity Division_by_zero

+dddvi218 divideint  -1      0.0 -> -Infinity Division_by_zero

+dddvi219 divideint -10      0.0 -> -Infinity Division_by_zero

+dddvi220 divideint -1E+100  0.0 -> -Infinity Division_by_zero

+dddvi221 divideint -1E+380  0   -> -Infinity Division_by_zero

+

+-- test some cases that are close to exponent overflow

+dddvi270 divideint 1 1e384          -> 0

+dddvi271 divideint 1 0.9e384        -> 0

+dddvi272 divideint 1 0.99e384       -> 0

+dddvi273 divideint 1 0.9999999999999999e384       -> 0

+dddvi274 divideint 9e384    1       -> NaN Division_impossible

+dddvi275 divideint 9.9e384  1       -> NaN Division_impossible

+dddvi276 divideint 9.99e384 1       -> NaN Division_impossible

+dddvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible

+

+dddvi280 divideint 0.1 9e-383       -> NaN Division_impossible

+dddvi281 divideint 0.1 99e-383      -> NaN Division_impossible

+dddvi282 divideint 0.1 999e-383     -> NaN Division_impossible

+dddvi283 divideint 0.1 9e-382       -> NaN Division_impossible

+dddvi284 divideint 0.1 99e-382      -> NaN Division_impossible

+

+-- GD edge cases: lhs smaller than rhs but more digits

+dddvi301  divideint  0.9      2      ->  0

+dddvi302  divideint  0.9      2.0    ->  0

+dddvi303  divideint  0.9      2.1    ->  0

+dddvi304  divideint  0.9      2.00   ->  0

+dddvi305  divideint  0.9      2.01   ->  0

+dddvi306  divideint  0.12     1      ->  0

+dddvi307  divideint  0.12     1.0    ->  0

+dddvi308  divideint  0.12     1.00   ->  0

+dddvi309  divideint  0.12     1.0    ->  0

+dddvi310  divideint  0.12     1.00   ->  0

+dddvi311  divideint  0.12     2      ->  0

+dddvi312  divideint  0.12     2.0    ->  0

+dddvi313  divideint  0.12     2.1    ->  0

+dddvi314  divideint  0.12     2.00   ->  0

+dddvi315  divideint  0.12     2.01   ->  0

+

+-- edge cases of impossible

+dddvi330  divideint  1234567890123456  10    ->  123456789012345

+dddvi331  divideint  1234567890123456   1    ->  1234567890123456

+dddvi332  divideint  1234567890123456   0.1  ->  NaN Division_impossible

+dddvi333  divideint  1234567890123456   0.01 ->  NaN Division_impossible

+

+-- overflow and underflow tests [from divide]

+dddvi1051 divideint  1e+277  1e-311 ->  NaN Division_impossible

+dddvi1052 divideint  1e+277 -1e-311 ->  NaN Division_impossible

+dddvi1053 divideint -1e+277  1e-311 ->  NaN Division_impossible

+dddvi1054 divideint -1e+277 -1e-311 ->  NaN Division_impossible

+dddvi1055 divideint  1e-277  1e+311 ->  0

+dddvi1056 divideint  1e-277 -1e+311 -> -0

+dddvi1057 divideint -1e-277  1e+311 -> -0

+dddvi1058 divideint -1e-277 -1e+311 ->  0

+

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

+dddvi1060 divideint 1e-291 1e+101 -> 0

+dddvi1061 divideint 1e-291 1e+102 -> 0

+dddvi1062 divideint 1e-291 1e+103 -> 0

+dddvi1063 divideint 1e-291 1e+104 -> 0

+dddvi1064 divideint 1e-291 1e+105 -> 0

+dddvi1065 divideint 1e-291 1e+106 -> 0

+dddvi1066 divideint 1e-291 1e+107 -> 0

+dddvi1067 divideint 1e-291 1e+108 -> 0

+dddvi1068 divideint 1e-291 1e+109 -> 0

+dddvi1069 divideint 1e-291 1e+110 -> 0

+

+dddvi1101 divideint  1.0000E-394  1     -> 0

+dddvi1102 divideint  1.000E-394   1e+1  -> 0

+dddvi1103 divideint  1.00E-394    1e+2  -> 0

+

+dddvi1118 divideint  1E-394       1e+4  -> 0

+dddvi1119 divideint  3E-394      -1e+5  -> -0

+dddvi1120 divideint  5E-394       1e+5  -> 0

+

+dddvi1124 divideint  1E-394      -1e+4  -> -0

+dddvi1130 divideint  3.0E-394    -1e+5  -> -0

+

+dddvi1131 divideint  1.0E-199     1e+200 -> 0

+dddvi1132 divideint  1.0E-199     1e+199 -> 0

+dddvi1133 divideint  1.0E-199     1e+198 -> 0

+dddvi1134 divideint  2.0E-199     2e+198 -> 0

+dddvi1135 divideint  4.0E-199     4e+198 -> 0

+

+-- long operand checks

+dddvi401 divideint 12345678000 100 -> 123456780

+dddvi402 divideint 1 12345678000   -> 0

+dddvi403 divideint 1234567800  10  -> 123456780

+dddvi404 divideint 1 1234567800    -> 0

+dddvi405 divideint 1234567890  10  -> 123456789

+dddvi406 divideint 1 1234567890    -> 0

+dddvi407 divideint 1234567891  10  -> 123456789

+dddvi408 divideint 1 1234567891    -> 0

+dddvi409 divideint 12345678901 100 -> 123456789

+dddvi410 divideint 1 12345678901   -> 0

+dddvi411 divideint 1234567896  10  -> 123456789

+dddvi412 divideint 1 1234567896    -> 0

+dddvi413 divideint 12345678948 100 -> 123456789

+dddvi414 divideint 12345678949 100 -> 123456789

+dddvi415 divideint 12345678950 100 -> 123456789

+dddvi416 divideint 12345678951 100 -> 123456789

+dddvi417 divideint 12345678999 100 -> 123456789

+dddvi441 divideint 12345678000 1 -> 12345678000

+dddvi442 divideint 1 12345678000 -> 0

+dddvi443 divideint 1234567800  1 -> 1234567800

+dddvi444 divideint 1 1234567800  -> 0

+dddvi445 divideint 1234567890  1 -> 1234567890

+dddvi446 divideint 1 1234567890  -> 0

+dddvi447 divideint 1234567891  1 -> 1234567891

+dddvi448 divideint 1 1234567891  -> 0

+dddvi449 divideint 12345678901 1 -> 12345678901

+dddvi450 divideint 1 12345678901 -> 0

+dddvi451 divideint 1234567896  1 -> 1234567896

+dddvi452 divideint 1 1234567896  -> 0

+

+-- more zeros, etc.

+dddvi531 divideint 5.00 1E-3    -> 5000

+dddvi532 divideint 00.00 0.000  -> NaN Division_undefined

+dddvi533 divideint 00.00 0E-3   -> NaN Division_undefined

+dddvi534 divideint  0    -0     -> NaN Division_undefined

+dddvi535 divideint -0     0     -> NaN Division_undefined

+dddvi536 divideint -0    -0     -> NaN Division_undefined

+

+dddvi541 divideint  0    -1     -> -0

+dddvi542 divideint -0    -1     ->  0

+dddvi543 divideint  0     1     ->  0

+dddvi544 divideint -0     1     -> -0

+dddvi545 divideint -1     0     -> -Infinity Division_by_zero

+dddvi546 divideint -1    -0     ->  Infinity Division_by_zero

+dddvi547 divideint  1     0     ->  Infinity Division_by_zero

+dddvi548 divideint  1    -0     -> -Infinity Division_by_zero

+

+dddvi551 divideint  0.0  -1     -> -0

+dddvi552 divideint -0.0  -1     ->  0

+dddvi553 divideint  0.0   1     ->  0

+dddvi554 divideint -0.0   1     -> -0

+dddvi555 divideint -1.0   0     -> -Infinity Division_by_zero

+dddvi556 divideint -1.0  -0     ->  Infinity Division_by_zero

+dddvi557 divideint  1.0   0     ->  Infinity Division_by_zero

+dddvi558 divideint  1.0  -0     -> -Infinity Division_by_zero

+

+dddvi561 divideint  0    -1.0   -> -0

+dddvi562 divideint -0    -1.0   ->  0

+dddvi563 divideint  0     1.0   ->  0

+dddvi564 divideint -0     1.0   -> -0

+dddvi565 divideint -1     0.0   -> -Infinity Division_by_zero

+dddvi566 divideint -1    -0.0   ->  Infinity Division_by_zero

+dddvi567 divideint  1     0.0   ->  Infinity Division_by_zero

+dddvi568 divideint  1    -0.0   -> -Infinity Division_by_zero

+

+dddvi571 divideint  0.0  -1.0   -> -0

+dddvi572 divideint -0.0  -1.0   ->  0

+dddvi573 divideint  0.0   1.0   ->  0

+dddvi574 divideint -0.0   1.0   -> -0

+dddvi575 divideint -1.0   0.0   -> -Infinity Division_by_zero

+dddvi576 divideint -1.0  -0.0   ->  Infinity Division_by_zero

+dddvi577 divideint  1.0   0.0   ->  Infinity Division_by_zero

+dddvi578 divideint  1.0  -0.0   -> -Infinity Division_by_zero

+

+-- Specials

+dddvi580 divideint  Inf  -Inf   ->  NaN Invalid_operation

+dddvi581 divideint  Inf  -1000  -> -Infinity

+dddvi582 divideint  Inf  -1     -> -Infinity

+dddvi583 divideint  Inf  -0     -> -Infinity

+dddvi584 divideint  Inf   0     ->  Infinity

+dddvi585 divideint  Inf   1     ->  Infinity

+dddvi586 divideint  Inf   1000  ->  Infinity

+dddvi587 divideint  Inf   Inf   ->  NaN Invalid_operation

+dddvi588 divideint -1000  Inf   -> -0

+dddvi589 divideint -Inf   Inf   ->  NaN Invalid_operation

+dddvi590 divideint -1     Inf   -> -0

+dddvi591 divideint -0     Inf   -> -0

+dddvi592 divideint  0     Inf   ->  0

+dddvi593 divideint  1     Inf   ->  0

+dddvi594 divideint  1000  Inf   ->  0

+dddvi595 divideint  Inf   Inf   ->  NaN Invalid_operation

+

+dddvi600 divideint -Inf  -Inf   ->  NaN Invalid_operation

+dddvi601 divideint -Inf  -1000  ->  Infinity

+dddvi602 divideint -Inf  -1     ->  Infinity

+dddvi603 divideint -Inf  -0     ->  Infinity

+dddvi604 divideint -Inf   0     -> -Infinity

+dddvi605 divideint -Inf   1     -> -Infinity

+dddvi606 divideint -Inf   1000  -> -Infinity

+dddvi607 divideint -Inf   Inf   ->  NaN Invalid_operation

+dddvi608 divideint -1000  Inf   -> -0

+dddvi609 divideint -Inf  -Inf   ->  NaN Invalid_operation

+dddvi610 divideint -1    -Inf   ->  0

+dddvi611 divideint -0    -Inf   ->  0

+dddvi612 divideint  0    -Inf   -> -0

+dddvi613 divideint  1    -Inf   -> -0

+dddvi614 divideint  1000 -Inf   -> -0

+dddvi615 divideint  Inf  -Inf   ->  NaN Invalid_operation

+

+dddvi621 divideint  NaN -Inf    ->  NaN

+dddvi622 divideint  NaN -1000   ->  NaN

+dddvi623 divideint  NaN -1      ->  NaN

+dddvi624 divideint  NaN -0      ->  NaN

+dddvi625 divideint  NaN  0      ->  NaN

+dddvi626 divideint  NaN  1      ->  NaN

+dddvi627 divideint  NaN  1000   ->  NaN

+dddvi628 divideint  NaN  Inf    ->  NaN

+dddvi629 divideint  NaN  NaN    ->  NaN

+dddvi630 divideint -Inf  NaN    ->  NaN

+dddvi631 divideint -1000 NaN    ->  NaN

+dddvi632 divideint -1    NaN    ->  NaN

+dddvi633 divideint -0    NaN    ->  NaN

+dddvi634 divideint  0    NaN    ->  NaN

+dddvi635 divideint  1    NaN    ->  NaN

+dddvi636 divideint  1000 NaN    ->  NaN

+dddvi637 divideint  Inf  NaN    ->  NaN

+

+dddvi641 divideint  sNaN -Inf   ->  NaN  Invalid_operation

+dddvi642 divideint  sNaN -1000  ->  NaN  Invalid_operation

+dddvi643 divideint  sNaN -1     ->  NaN  Invalid_operation

+dddvi644 divideint  sNaN -0     ->  NaN  Invalid_operation

+dddvi645 divideint  sNaN  0     ->  NaN  Invalid_operation

+dddvi646 divideint  sNaN  1     ->  NaN  Invalid_operation

+dddvi647 divideint  sNaN  1000  ->  NaN  Invalid_operation

+dddvi648 divideint  sNaN  NaN   ->  NaN  Invalid_operation

+dddvi649 divideint  sNaN sNaN   ->  NaN  Invalid_operation

+dddvi650 divideint  NaN  sNaN   ->  NaN  Invalid_operation

+dddvi651 divideint -Inf  sNaN   ->  NaN  Invalid_operation

+dddvi652 divideint -1000 sNaN   ->  NaN  Invalid_operation

+dddvi653 divideint -1    sNaN   ->  NaN  Invalid_operation

+dddvi654 divideint -0    sNaN   ->  NaN  Invalid_operation

+dddvi655 divideint  0    sNaN   ->  NaN  Invalid_operation

+dddvi656 divideint  1    sNaN   ->  NaN  Invalid_operation

+dddvi657 divideint  1000 sNaN   ->  NaN  Invalid_operation

+dddvi658 divideint  Inf  sNaN   ->  NaN  Invalid_operation

+dddvi659 divideint  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dddvi661 divideint  NaN9 -Inf   ->  NaN9

+dddvi662 divideint  NaN8  1000  ->  NaN8

+dddvi663 divideint  NaN7  Inf   ->  NaN7

+dddvi664 divideint -NaN6  NaN5  -> -NaN6

+dddvi665 divideint -Inf   NaN4  ->  NaN4

+dddvi666 divideint -1000  NaN3  ->  NaN3

+dddvi667 divideint  Inf  -NaN2  -> -NaN2

+

+dddvi671 divideint -sNaN99 -Inf    -> -NaN99 Invalid_operation

+dddvi672 divideint  sNaN98 -1      ->  NaN98 Invalid_operation

+dddvi673 divideint  sNaN97  NaN    ->  NaN97 Invalid_operation

+dddvi674 divideint  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+dddvi675 divideint  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dddvi676 divideint -Inf    sNaN92  ->  NaN92 Invalid_operation

+dddvi677 divideint  0      sNaN91  ->  NaN91 Invalid_operation

+dddvi678 divideint  Inf   -sNaN90  -> -NaN90 Invalid_operation

+dddvi679 divideint  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+-- Null tests

+dddvi900 divideint  10  # -> NaN Invalid_operation

+dddvi901 divideint   # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddEncode.decTest b/Lib/test/decimaltestdata/ddEncode.decTest
new file mode 100644
index 0000000..3fa434c
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddEncode.decTest
@@ -0,0 +1,490 @@
+------------------------------------------------------------------------

+-- ddEncode.decTest -- decimal eight-byte format testcases            --

+-- Copyright (c) IBM Corporation, 2000, 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                                                   --

+------------------------------------------------------------------------

+-- [Previously called decimal64.decTest]

+version: 2.57

+

+-- This set of tests is for the eight-byte concrete representation.

+-- Its characteristics are:

+--

+--  1 bit  sign

+--  5 bits combination field

+--  8 bits exponent continuation

+-- 50 bits coefficient continuation

+--

+-- Total exponent length 10 bits

+-- Total coefficient length 54 bits (16 digits)

+--

+-- Elimit =  767 (maximum encoded exponent)

+-- Emax   =  384 (largest exponent value)

+-- Emin   = -383 (smallest exponent value)

+-- bias   =  398 (subtracted from encoded exponent) = -Etiny

+

+-- The testcases here have only exactly representable data on the

+-- 'left-hand-side'; rounding from strings is tested in 'base'

+-- testcase groups.

+

+extended:    1

+clamp:       1

+precision:   16

+rounding:    half_up

+maxExponent: 384

+minExponent: -383

+

+-- General testcases

+-- (mostly derived from the Strawman 4 document and examples)

+dece001 apply   #A2300000000003D0 -> -7.50

+dece002 apply   -7.50             -> #A2300000000003D0

+-- derivative canonical plain strings

+dece003 apply   #A23c0000000003D0 -> -7.50E+3

+dece004 apply   -7.50E+3          -> #A23c0000000003D0

+dece005 apply   #A2380000000003D0 -> -750

+dece006 apply   -750              -> #A2380000000003D0

+dece007 apply   #A2340000000003D0 -> -75.0

+dece008 apply   -75.0             -> #A2340000000003D0

+dece009 apply   #A22c0000000003D0 -> -0.750

+dece010 apply   -0.750            -> #A22c0000000003D0

+dece011 apply   #A2280000000003D0 -> -0.0750

+dece012 apply   -0.0750           -> #A2280000000003D0

+dece013 apply   #A2200000000003D0 -> -0.000750

+dece014 apply   -0.000750         -> #A2200000000003D0

+dece015 apply   #A2180000000003D0 -> -0.00000750

+dece016 apply   -0.00000750       -> #A2180000000003D0

+dece017 apply   #A2140000000003D0 -> -7.50E-7

+dece018 apply   -7.50E-7          -> #A2140000000003D0

+

+-- Normality

+dece020 apply   1234567890123456   -> #263934b9c1e28e56

+dece021 apply  -1234567890123456   -> #a63934b9c1e28e56

+dece022 apply   1234.567890123456  -> #260934b9c1e28e56

+dece023 apply  #260934b9c1e28e56   -> 1234.567890123456

+dece024 apply   1111111111111111   -> #2638912449124491

+dece025 apply   9999999999999999   -> #6e38ff3fcff3fcff

+

+-- Nmax and similar

+dece031 apply   9999999999999999E+369   -> #77fcff3fcff3fcff

+dece032 apply   9.999999999999999E+384  -> #77fcff3fcff3fcff

+dece033 apply   #77fcff3fcff3fcff       -> 9.999999999999999E+384

+dece034 apply   1.234567890123456E+384  -> #47fd34b9c1e28e56

+dece035 apply   #47fd34b9c1e28e56       -> 1.234567890123456E+384

+-- fold-downs (more below)

+dece036 apply   1.23E+384               -> #47fd300000000000 Clamped

+dece037 apply   #47fd300000000000       -> 1.230000000000000E+384

+decd038 apply   1E+384                  -> #47fc000000000000 Clamped

+decd039 apply   #47fc000000000000       -> 1.000000000000000E+384

+

+decd051 apply   12345                   -> #22380000000049c5

+decd052 apply   #22380000000049c5       -> 12345

+decd053 apply   1234                    -> #2238000000000534

+decd054 apply   #2238000000000534       -> 1234

+decd055 apply   123                     -> #22380000000000a3

+decd056 apply   #22380000000000a3       -> 123

+decd057 apply   12                      -> #2238000000000012

+decd058 apply   #2238000000000012       -> 12

+decd059 apply   1                       -> #2238000000000001

+decd060 apply   #2238000000000001       -> 1

+decd061 apply   1.23                    -> #22300000000000a3

+decd062 apply   #22300000000000a3       -> 1.23

+decd063 apply   123.45                  -> #22300000000049c5

+decd064 apply   #22300000000049c5       -> 123.45

+

+-- Nmin and below

+decd071 apply   1E-383                  -> #003c000000000001

+decd072 apply   #003c000000000001       -> 1E-383

+decd073 apply   1.000000000000000E-383  -> #0400000000000000

+decd074 apply   #0400000000000000       -> 1.000000000000000E-383

+decd075 apply   1.000000000000001E-383  -> #0400000000000001

+decd076 apply   #0400000000000001       -> 1.000000000000001E-383

+

+decd077 apply   0.100000000000000E-383  -> #0000800000000000      Subnormal

+decd078 apply   #0000800000000000       -> 1.00000000000000E-384  Subnormal

+decd079 apply   0.000000000000010E-383  -> #0000000000000010      Subnormal

+decd080 apply   #0000000000000010       -> 1.0E-397               Subnormal

+decd081 apply   0.00000000000001E-383   -> #0004000000000001      Subnormal

+decd082 apply   #0004000000000001       -> 1E-397                 Subnormal

+decd083 apply   0.000000000000001E-383  -> #0000000000000001      Subnormal

+decd084 apply   #0000000000000001       -> 1E-398                 Subnormal

+-- next is smallest all-nines

+decd085 apply   9999999999999999E-398   -> #6400ff3fcff3fcff

+decd086 apply   #6400ff3fcff3fcff       -> 9.999999999999999E-383

+-- and a problematic divide result

+decd088 apply   1.111111111111111E-383  -> #0400912449124491

+decd089 apply   #0400912449124491       -> 1.111111111111111E-383

+

+-- forties

+decd090 apply        40                -> #2238000000000040

+decd091 apply        39.99             -> #2230000000000cff

+

+-- underflows cannot be tested as all LHS exact

+

+-- Same again, negatives

+-- Nmax and similar

+decd122 apply  -9.999999999999999E+384  -> #f7fcff3fcff3fcff

+decd123 apply   #f7fcff3fcff3fcff       -> -9.999999999999999E+384

+decd124 apply  -1.234567890123456E+384  -> #c7fd34b9c1e28e56

+decd125 apply   #c7fd34b9c1e28e56       -> -1.234567890123456E+384

+-- fold-downs (more below)

+decd130 apply  -1.23E+384               -> #c7fd300000000000 Clamped

+decd131 apply   #c7fd300000000000       -> -1.230000000000000E+384

+decd132 apply  -1E+384                  -> #c7fc000000000000 Clamped

+decd133 apply   #c7fc000000000000       -> -1.000000000000000E+384

+

+-- overflows

+decd151 apply  -12345                   -> #a2380000000049c5

+decd152 apply   #a2380000000049c5       -> -12345

+decd153 apply  -1234                    -> #a238000000000534

+decd154 apply   #a238000000000534       -> -1234

+decd155 apply  -123                     -> #a2380000000000a3

+decd156 apply   #a2380000000000a3       -> -123

+decd157 apply  -12                      -> #a238000000000012

+decd158 apply   #a238000000000012       -> -12

+decd159 apply  -1                       -> #a238000000000001

+decd160 apply   #a238000000000001       -> -1

+decd161 apply  -1.23                    -> #a2300000000000a3

+decd162 apply   #a2300000000000a3       -> -1.23

+decd163 apply  -123.45                  -> #a2300000000049c5

+decd164 apply   #a2300000000049c5       -> -123.45

+

+-- Nmin and below

+decd171 apply  -1E-383                  -> #803c000000000001

+decd172 apply   #803c000000000001       -> -1E-383

+decd173 apply  -1.000000000000000E-383  -> #8400000000000000

+decd174 apply   #8400000000000000       -> -1.000000000000000E-383

+decd175 apply  -1.000000000000001E-383  -> #8400000000000001

+decd176 apply   #8400000000000001       -> -1.000000000000001E-383

+

+decd177 apply  -0.100000000000000E-383  -> #8000800000000000       Subnormal

+decd178 apply   #8000800000000000       -> -1.00000000000000E-384  Subnormal

+decd179 apply  -0.000000000000010E-383  -> #8000000000000010       Subnormal

+decd180 apply   #8000000000000010       -> -1.0E-397               Subnormal

+decd181 apply  -0.00000000000001E-383   -> #8004000000000001       Subnormal

+decd182 apply   #8004000000000001       -> -1E-397                 Subnormal

+decd183 apply  -0.000000000000001E-383  -> #8000000000000001       Subnormal

+decd184 apply   #8000000000000001       -> -1E-398                 Subnormal

+-- next is smallest all-nines

+decd185 apply   -9999999999999999E-398   -> #e400ff3fcff3fcff

+decd186 apply   #e400ff3fcff3fcff       -> -9.999999999999999E-383

+-- and a tricky subnormal

+decd187 apply   1.11111111111524E-384    -> #00009124491246a4      Subnormal

+decd188 apply   #00009124491246a4        -> 1.11111111111524E-384  Subnormal

+

+-- near-underflows

+decd189 apply   -1e-398                 -> #8000000000000001  Subnormal

+decd190 apply   -1.0e-398               -> #8000000000000001  Subnormal Rounded

+

+-- zeros

+decd401 apply   0E-500                  -> #0000000000000000  Clamped

+decd402 apply   0E-400                  -> #0000000000000000  Clamped

+decd403 apply   0E-398                  -> #0000000000000000

+decd404 apply   #0000000000000000       -> 0E-398

+decd405 apply   0.000000000000000E-383  -> #0000000000000000

+decd406 apply   #0000000000000000       -> 0E-398

+decd407 apply   0E-2                    -> #2230000000000000

+decd408 apply   #2230000000000000       -> 0.00

+decd409 apply   0                       -> #2238000000000000

+decd410 apply   #2238000000000000       -> 0

+decd411 apply   0E+3                    -> #2244000000000000

+decd412 apply   #2244000000000000       -> 0E+3

+decd413 apply   0E+369                  -> #43fc000000000000

+decd414 apply   #43fc000000000000       -> 0E+369

+-- clamped zeros...

+decd415 apply   0E+370                  -> #43fc000000000000  Clamped

+decd416 apply   #43fc000000000000       -> 0E+369

+decd417 apply   0E+384                  -> #43fc000000000000  Clamped

+decd418 apply   #43fc000000000000       -> 0E+369

+decd419 apply   0E+400                  -> #43fc000000000000  Clamped

+decd420 apply   #43fc000000000000       -> 0E+369

+decd421 apply   0E+500                  -> #43fc000000000000  Clamped

+decd422 apply   #43fc000000000000       -> 0E+369

+

+-- negative zeros

+decd431 apply   -0E-400                 -> #8000000000000000  Clamped

+decd432 apply   -0E-400                 -> #8000000000000000  Clamped

+decd433 apply   -0E-398                 -> #8000000000000000

+decd434 apply   #8000000000000000       -> -0E-398

+decd435 apply   -0.000000000000000E-383 -> #8000000000000000

+decd436 apply   #8000000000000000       -> -0E-398

+decd437 apply   -0E-2                   -> #a230000000000000

+decd438 apply   #a230000000000000       -> -0.00

+decd439 apply   -0                      -> #a238000000000000

+decd440 apply   #a238000000000000       -> -0

+decd441 apply   -0E+3                   -> #a244000000000000

+decd442 apply   #a244000000000000       -> -0E+3

+decd443 apply   -0E+369                 -> #c3fc000000000000

+decd444 apply   #c3fc000000000000       -> -0E+369

+-- clamped zeros...

+decd445 apply   -0E+370                 -> #c3fc000000000000  Clamped

+decd446 apply   #c3fc000000000000       -> -0E+369

+decd447 apply   -0E+384                 -> #c3fc000000000000  Clamped

+decd448 apply   #c3fc000000000000       -> -0E+369

+decd449 apply   -0E+400                 -> #c3fc000000000000  Clamped

+decd450 apply   #c3fc000000000000       -> -0E+369

+decd451 apply   -0E+500                 -> #c3fc000000000000  Clamped

+decd452 apply   #c3fc000000000000       -> -0E+369

+

+-- exponents

+decd460 apply   #225c000000000007 -> 7E+9

+decd461 apply   7E+9  -> #225c000000000007

+decd462 apply   #23c4000000000007 -> 7E+99

+decd463 apply   7E+99 -> #23c4000000000007

+

+-- Specials

+decd500 apply   Infinity          -> #7800000000000000

+decd501 apply   #7878787878787878 -> #7800000000000000

+decd502 apply   #7800000000000000 -> Infinity

+decd503 apply   #7979797979797979 -> #7800000000000000

+decd504 apply   #7900000000000000 -> Infinity

+decd505 apply   #7a7a7a7a7a7a7a7a -> #7800000000000000

+decd506 apply   #7a00000000000000 -> Infinity

+decd507 apply   #7b7b7b7b7b7b7b7b -> #7800000000000000

+decd508 apply   #7b00000000000000 -> Infinity

+

+decd509 apply   NaN               -> #7c00000000000000

+decd510 apply   #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c

+decd511 apply   #7c00000000000000 -> NaN

+decd512 apply   #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d

+decd513 apply   #7d00000000000000 -> NaN

+decd514 apply   #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e

+decd515 apply   #7e00000000000000 -> sNaN

+decd516 apply   #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f

+decd517 apply   #7f00000000000000 -> sNaN

+decd518 apply   #7fffffffffffffff -> sNaN999999999999999

+decd519 apply   #7fffffffffffffff -> #7e00ff3fcff3fcff

+

+decd520 apply   -Infinity         -> #f800000000000000

+decd521 apply   #f878787878787878 -> #f800000000000000

+decd522 apply   #f800000000000000 -> -Infinity

+decd523 apply   #f979797979797979 -> #f800000000000000

+decd524 apply   #f900000000000000 -> -Infinity

+decd525 apply   #fa7a7a7a7a7a7a7a -> #f800000000000000

+decd526 apply   #fa00000000000000 -> -Infinity

+decd527 apply   #fb7b7b7b7b7b7b7b -> #f800000000000000

+decd528 apply   #fb00000000000000 -> -Infinity

+

+decd529 apply   -NaN              -> #fc00000000000000

+decd530 apply   #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c

+decd531 apply   #fc00000000000000 -> -NaN

+decd532 apply   #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d

+decd533 apply   #fd00000000000000 -> -NaN

+decd534 apply   #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e

+decd535 apply   #fe00000000000000 -> -sNaN

+decd536 apply   #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f

+decd537 apply   #ff00000000000000 -> -sNaN

+decd538 apply   #ffffffffffffffff -> -sNaN999999999999999

+decd539 apply   #ffffffffffffffff -> #fe00ff3fcff3fcff

+

+-- diagnostic NaNs

+decd540 apply   NaN                 -> #7c00000000000000

+decd541 apply   NaN0                -> #7c00000000000000

+decd542 apply   NaN1                -> #7c00000000000001

+decd543 apply   NaN12               -> #7c00000000000012

+decd544 apply   NaN79               -> #7c00000000000079

+decd545 apply   NaN12345            -> #7c000000000049c5

+decd546 apply   NaN123456           -> #7c00000000028e56

+decd547 apply   NaN799799           -> #7c000000000f7fdf

+decd548 apply   NaN799799799799799  -> #7c03dff7fdff7fdf

+decd549 apply   NaN999999999999999  -> #7c00ff3fcff3fcff

+-- too many digits

+

+-- fold-down full sequence

+decd601 apply   1E+384                  -> #47fc000000000000 Clamped

+decd602 apply   #47fc000000000000       -> 1.000000000000000E+384

+decd603 apply   1E+383                  -> #43fc800000000000 Clamped

+decd604 apply   #43fc800000000000       -> 1.00000000000000E+383

+decd605 apply   1E+382                  -> #43fc100000000000 Clamped

+decd606 apply   #43fc100000000000       -> 1.0000000000000E+382

+decd607 apply   1E+381                  -> #43fc010000000000 Clamped

+decd608 apply   #43fc010000000000       -> 1.000000000000E+381

+decd609 apply   1E+380                  -> #43fc002000000000 Clamped

+decd610 apply   #43fc002000000000       -> 1.00000000000E+380

+decd611 apply   1E+379                  -> #43fc000400000000 Clamped

+decd612 apply   #43fc000400000000       -> 1.0000000000E+379

+decd613 apply   1E+378                  -> #43fc000040000000 Clamped

+decd614 apply   #43fc000040000000       -> 1.000000000E+378

+decd615 apply   1E+377                  -> #43fc000008000000 Clamped

+decd616 apply   #43fc000008000000       -> 1.00000000E+377

+decd617 apply   1E+376                  -> #43fc000001000000 Clamped

+decd618 apply   #43fc000001000000       -> 1.0000000E+376

+decd619 apply   1E+375                  -> #43fc000000100000 Clamped

+decd620 apply   #43fc000000100000       -> 1.000000E+375

+decd621 apply   1E+374                  -> #43fc000000020000 Clamped

+decd622 apply   #43fc000000020000       -> 1.00000E+374

+decd623 apply   1E+373                  -> #43fc000000004000 Clamped

+decd624 apply   #43fc000000004000       -> 1.0000E+373

+decd625 apply   1E+372                  -> #43fc000000000400 Clamped

+decd626 apply   #43fc000000000400       -> 1.000E+372

+decd627 apply   1E+371                  -> #43fc000000000080 Clamped

+decd628 apply   #43fc000000000080       -> 1.00E+371

+decd629 apply   1E+370                  -> #43fc000000000010 Clamped

+decd630 apply   #43fc000000000010       -> 1.0E+370

+decd631 apply   1E+369                  -> #43fc000000000001

+decd632 apply   #43fc000000000001       -> 1E+369

+decd633 apply   1E+368                  -> #43f8000000000001

+decd634 apply   #43f8000000000001       -> 1E+368

+-- same with 9s

+decd641 apply   9E+384                  -> #77fc000000000000 Clamped

+decd642 apply   #77fc000000000000       -> 9.000000000000000E+384

+decd643 apply   9E+383                  -> #43fc8c0000000000 Clamped

+decd644 apply   #43fc8c0000000000       -> 9.00000000000000E+383

+decd645 apply   9E+382                  -> #43fc1a0000000000 Clamped

+decd646 apply   #43fc1a0000000000       -> 9.0000000000000E+382

+decd647 apply   9E+381                  -> #43fc090000000000 Clamped

+decd648 apply   #43fc090000000000       -> 9.000000000000E+381

+decd649 apply   9E+380                  -> #43fc002300000000 Clamped

+decd650 apply   #43fc002300000000       -> 9.00000000000E+380

+decd651 apply   9E+379                  -> #43fc000680000000 Clamped

+decd652 apply   #43fc000680000000       -> 9.0000000000E+379

+decd653 apply   9E+378                  -> #43fc000240000000 Clamped

+decd654 apply   #43fc000240000000       -> 9.000000000E+378

+decd655 apply   9E+377                  -> #43fc000008c00000 Clamped

+decd656 apply   #43fc000008c00000       -> 9.00000000E+377

+decd657 apply   9E+376                  -> #43fc000001a00000 Clamped

+decd658 apply   #43fc000001a00000       -> 9.0000000E+376

+decd659 apply   9E+375                  -> #43fc000000900000 Clamped

+decd660 apply   #43fc000000900000       -> 9.000000E+375

+decd661 apply   9E+374                  -> #43fc000000023000 Clamped

+decd662 apply   #43fc000000023000       -> 9.00000E+374

+decd663 apply   9E+373                  -> #43fc000000006800 Clamped

+decd664 apply   #43fc000000006800       -> 9.0000E+373

+decd665 apply   9E+372                  -> #43fc000000002400 Clamped

+decd666 apply   #43fc000000002400       -> 9.000E+372

+decd667 apply   9E+371                  -> #43fc00000000008c Clamped

+decd668 apply   #43fc00000000008c       -> 9.00E+371

+decd669 apply   9E+370                  -> #43fc00000000001a Clamped

+decd670 apply   #43fc00000000001a       -> 9.0E+370

+decd671 apply   9E+369                  -> #43fc000000000009

+decd672 apply   #43fc000000000009       -> 9E+369

+decd673 apply   9E+368                  -> #43f8000000000009

+decd674 apply   #43f8000000000009       -> 9E+368

+

+

+-- Selected DPD codes

+decd700 apply   #2238000000000000       -> 0

+decd701 apply   #2238000000000009       -> 9

+decd702 apply   #2238000000000010       -> 10

+decd703 apply   #2238000000000019       -> 19

+decd704 apply   #2238000000000020       -> 20

+decd705 apply   #2238000000000029       -> 29

+decd706 apply   #2238000000000030       -> 30

+decd707 apply   #2238000000000039       -> 39

+decd708 apply   #2238000000000040       -> 40

+decd709 apply   #2238000000000049       -> 49

+decd710 apply   #2238000000000050       -> 50

+decd711 apply   #2238000000000059       -> 59

+decd712 apply   #2238000000000060       -> 60

+decd713 apply   #2238000000000069       -> 69

+decd714 apply   #2238000000000070       -> 70

+decd715 apply   #2238000000000071       -> 71

+decd716 apply   #2238000000000072       -> 72

+decd717 apply   #2238000000000073       -> 73

+decd718 apply   #2238000000000074       -> 74

+decd719 apply   #2238000000000075       -> 75

+decd720 apply   #2238000000000076       -> 76

+decd721 apply   #2238000000000077       -> 77

+decd722 apply   #2238000000000078       -> 78

+decd723 apply   #2238000000000079       -> 79

+

+decd725 apply   #223800000000029e       -> 994

+decd726 apply   #223800000000029f       -> 995

+decd727 apply   #22380000000002a0       -> 520

+decd728 apply   #22380000000002a1       -> 521

+-- from telco test data

+decd730 apply   #2238000000000188       -> 308

+decd731 apply   #22380000000001a3       -> 323

+decd732 apply   #223800000000002a       ->  82

+decd733 apply   #22380000000001a9       -> 329

+decd734 apply   #2238000000000081       -> 101

+decd735 apply   #22380000000002a2       -> 522

+

+-- DPD: one of each of the huffman groups

+decd740 apply   #22380000000003f7       -> 777

+decd741 apply   #22380000000003f8       -> 778

+decd742 apply   #22380000000003eb       -> 787

+decd743 apply   #223800000000037d       -> 877

+decd744 apply   #223800000000039f       -> 997

+decd745 apply   #22380000000003bf       -> 979

+decd746 apply   #22380000000003df       -> 799

+decd747 apply   #223800000000006e       -> 888

+

+-- DPD all-highs cases (includes the 24 redundant codes)

+decd750 apply   #223800000000006e       -> 888

+decd751 apply   #223800000000016e       -> 888

+decd752 apply   #223800000000026e       -> 888

+decd753 apply   #223800000000036e       -> 888

+decd754 apply   #223800000000006f       -> 889

+decd755 apply   #223800000000016f       -> 889

+decd756 apply   #223800000000026f       -> 889

+decd757 apply   #223800000000036f       -> 889

+

+decd760 apply   #223800000000007e       -> 898

+decd761 apply   #223800000000017e       -> 898

+decd762 apply   #223800000000027e       -> 898

+decd763 apply   #223800000000037e       -> 898

+decd764 apply   #223800000000007f       -> 899

+decd765 apply   #223800000000017f       -> 899

+decd766 apply   #223800000000027f       -> 899

+decd767 apply   #223800000000037f       -> 899

+

+decd770 apply   #22380000000000ee       -> 988

+decd771 apply   #22380000000001ee       -> 988

+decd772 apply   #22380000000002ee       -> 988

+decd773 apply   #22380000000003ee       -> 988

+decd774 apply   #22380000000000ef       -> 989

+decd775 apply   #22380000000001ef       -> 989

+decd776 apply   #22380000000002ef       -> 989

+decd777 apply   #22380000000003ef       -> 989

+

+decd780 apply   #22380000000000fe       -> 998

+decd781 apply   #22380000000001fe       -> 998

+decd782 apply   #22380000000002fe       -> 998

+decd783 apply   #22380000000003fe       -> 998

+decd784 apply   #22380000000000ff       -> 999

+decd785 apply   #22380000000001ff       -> 999

+decd786 apply   #22380000000002ff       -> 999

+decd787 apply   #22380000000003ff       -> 999

+

+-- values around [u]int32 edges (zeros done earlier)

+decd800 apply -2147483646  -> #a23800008c78af46

+decd801 apply -2147483647  -> #a23800008c78af47

+decd802 apply -2147483648  -> #a23800008c78af48

+decd803 apply -2147483649  -> #a23800008c78af49

+decd804 apply  2147483646  -> #223800008c78af46

+decd805 apply  2147483647  -> #223800008c78af47

+decd806 apply  2147483648  -> #223800008c78af48

+decd807 apply  2147483649  -> #223800008c78af49

+decd808 apply  4294967294  -> #2238000115afb55a

+decd809 apply  4294967295  -> #2238000115afb55b

+decd810 apply  4294967296  -> #2238000115afb57a

+decd811 apply  4294967297  -> #2238000115afb57b

+

+decd820 apply  #a23800008c78af46 -> -2147483646

+decd821 apply  #a23800008c78af47 -> -2147483647

+decd822 apply  #a23800008c78af48 -> -2147483648

+decd823 apply  #a23800008c78af49 -> -2147483649

+decd824 apply  #223800008c78af46 ->  2147483646

+decd825 apply  #223800008c78af47 ->  2147483647

+decd826 apply  #223800008c78af48 ->  2147483648

+decd827 apply  #223800008c78af49 ->  2147483649

+decd828 apply  #2238000115afb55a ->  4294967294

+decd829 apply  #2238000115afb55b ->  4294967295

+decd830 apply  #2238000115afb57a ->  4294967296

+decd831 apply  #2238000115afb57b ->  4294967297

+

+-- for narrowing

+decd840 apply  #2870000000000000 ->  2.000000000000000E-99

diff --git a/Lib/test/decimaltestdata/ddFMA.decTest b/Lib/test/decimaltestdata/ddFMA.decTest
new file mode 100644
index 0000000..bc44b6a
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddFMA.decTest
@@ -0,0 +1,1698 @@
+------------------------------------------------------------------------

+-- ddFMA.decTest -- decDouble Fused Multiply Add                      --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- These tests comprese three parts:

+--   1. Sanity checks and other three-operand tests (especially those

+--      where the fused operation makes a difference)

+--   2. Multiply tests (third operand is neutral zero [0E+emax])

+--   3. Addition tests (first operand is 1)

+-- The multiply and addition tests are extensive because FMA may have

+-- its own dedicated multiplication or addition routine(s), and they

+-- also inherently check the left-to-right properties.

+

+-- Sanity checks

+ddfma0001 fma  1   1   1 ->   2

+ddfma0002 fma  1   1   2 ->   3

+ddfma0003 fma  2   2   3 ->   7

+ddfma0004 fma  9   9   9 ->  90

+ddfma0005 fma -1   1   1 ->   0

+ddfma0006 fma -1   1   2 ->   1

+ddfma0007 fma -2   2   3 ->  -1

+ddfma0008 fma -9   9   9 -> -72

+ddfma0011 fma  1  -1   1 ->   0

+ddfma0012 fma  1  -1   2 ->   1

+ddfma0013 fma  2  -2   3 ->  -1

+ddfma0014 fma  9  -9   9 -> -72

+ddfma0015 fma  1   1  -1 ->   0

+ddfma0016 fma  1   1  -2 ->  -1

+ddfma0017 fma  2   2  -3 ->   1

+ddfma0018 fma  9   9  -9 ->  72

+

+-- non-integer exacts

+ddfma0100  fma    25.2   63.6   -438  ->  1164.72

+ddfma0101  fma   0.301  0.380    334  ->  334.114380

+ddfma0102  fma    49.2   -4.8   23.3  ->  -212.86

+ddfma0103  fma    4.22  0.079  -94.6  ->  -94.26662

+ddfma0104  fma     903  0.797  0.887  ->  720.578

+ddfma0105  fma    6.13   -161   65.9  ->  -921.03

+ddfma0106  fma    28.2    727   5.45  ->  20506.85

+ddfma0107  fma       4    605    688  ->  3108

+ddfma0108  fma    93.3   0.19  0.226  ->  17.953

+ddfma0109  fma   0.169   -341   5.61  ->  -52.019

+ddfma0110  fma   -72.2     30  -51.2  ->  -2217.2

+ddfma0111  fma  -0.409     13   20.4  ->  15.083

+ddfma0112  fma     317   77.0   19.0  ->  24428.0

+ddfma0113  fma      47   6.58   1.62  ->  310.88

+ddfma0114  fma    1.36  0.984  0.493  ->  1.83124

+ddfma0115  fma    72.7    274   1.56  ->  19921.36

+ddfma0116  fma     335    847     83  ->  283828

+ddfma0117  fma     666  0.247   25.4  ->  189.902

+ddfma0118  fma   -3.87   3.06   78.0  ->  66.1578

+ddfma0119  fma   0.742    192   35.6  ->  178.064

+ddfma0120  fma   -91.6   5.29  0.153  ->  -484.411

+

+-- cases where result is different from separate multiply + add; each

+-- is preceded by the result of unfused multiply and add

+-- [this is about 20% of all similar  cases in general]

+--                                                                      ->  7.123356429257969E+16

+ddfma0201  fma       27583489.6645      2582471078.04      2593183.42371  ->  7.123356429257970E+16  Inexact Rounded

+--                                                                      ->  22813275328.80506

+ddfma0208  fma        24280.355566      939577.397653        2032.013252  ->  22813275328.80507      Inexact Rounded

+--                                                                      ->  -2.030397734278062E+16

+ddfma0209  fma          7848976432      -2586831.2281      137903.517909  ->  -2.030397734278061E+16 Inexact Rounded

+--                                                                      ->  2040774094814.077

+ddfma0217  fma        56890.388731      35872030.4255      339337.123410  ->  2040774094814.078      Inexact Rounded

+--                                                                      ->  2.714469575205049E+18

+ddfma0220  fma       7533543.57445       360317763928      5073392.31638  ->  2.714469575205050E+18  Inexact Rounded

+--                                                                      ->  1.011676297716716E+19

+ddfma0223  fma       739945255.563      13672312784.1      -994381.53572  ->  1.011676297716715E+19  Inexact Rounded

+--                                                                      ->  -2.914135721455315E+23

+ddfma0224  fma       -413510957218       704729988550       9234162614.0  ->  -2.914135721455314E+23 Inexact Rounded

+--                                                                      ->  2.620119863365786E+17

+ddfma0226  fma        437484.00601       598906432790      894450638.442  ->  2.620119863365787E+17  Inexact Rounded

+--                                                                      ->  1.272647995808178E+19

+ddfma0253  fma         73287556929      173651305.784     -358312568.389  ->  1.272647995808177E+19  Inexact Rounded

+--                                                                      ->  -1.753769320861851E+18

+ddfma0257  fma        203258304486      -8628278.8066      153127.446727  ->  -1.753769320861850E+18 Inexact Rounded

+--                                                                      ->  -1.550737835263346E+17

+ddfma0260  fma       42560533.1774     -3643605282.86       178277.96377  ->  -1.550737835263347E+17 Inexact Rounded

+--                                                                      ->  2.897624620576005E+22

+ddfma0269  fma        142656587375       203118879670       604576103991  ->  2.897624620576004E+22  Inexact Rounded

+

+-- Cases where multiply would overflow or underflow if separate

+fma0300  fma   9e+384    10   0         -> Infinity  Overflow Inexact Rounded

+fma0301  fma   1e+384    10   0         -> Infinity  Overflow Inexact Rounded

+fma0302  fma   1e+384    10   -1e+384   -> 9.000000000000000E+384  Clamped

+fma0303  fma   1e+384    10   -9e+384   -> 1.000000000000000E+384  Clamped

+-- subnormal etc.

+fma0305  fma   1e-398    0.1  0         -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+fma0306  fma   1e-398    0.1  1         -> 1.000000000000000 Inexact Rounded

+fma0307  fma   1e-398    0.1  1e-398    -> 1E-398 Underflow Subnormal Inexact Rounded

+

+-- Infinite combinations

+ddfma0800 fma  Inf   Inf   Inf    ->  Infinity

+ddfma0801 fma  Inf   Inf  -Inf    ->  NaN Invalid_operation

+ddfma0802 fma  Inf  -Inf   Inf    ->  NaN Invalid_operation

+ddfma0803 fma  Inf  -Inf  -Inf    -> -Infinity

+ddfma0804 fma -Inf   Inf   Inf    ->  NaN Invalid_operation

+ddfma0805 fma -Inf   Inf  -Inf    -> -Infinity

+ddfma0806 fma -Inf  -Inf   Inf    ->  Infinity

+ddfma0807 fma -Inf  -Inf  -Inf    ->  NaN Invalid_operation

+

+-- Triple NaN propagation

+ddfma0900 fma  NaN2  NaN3  NaN5   ->  NaN2

+ddfma0901 fma  0     NaN3  NaN5   ->  NaN3

+ddfma0902 fma  0     0     NaN5   ->  NaN5

+-- first sNaN wins (consider qNaN from earlier sNaN being

+-- overridden by an sNaN in third operand)

+ddfma0903 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation

+ddfma0904 fma  0     sNaN2 sNaN3  ->  NaN2 Invalid_operation

+ddfma0905 fma  0     0     sNaN3  ->  NaN3 Invalid_operation

+ddfma0906 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation

+ddfma0907 fma  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation

+ddfma0908 fma  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation

+

+-- MULTIPLICATION TESTS ------------------------------------------------

+

+-- sanity checks

+ddfma2000 fma  2      2   0e+384  ->  4

+ddfma2001 fma  2      3   0e+384  ->  6

+ddfma2002 fma  5      1   0e+384  ->  5

+ddfma2003 fma  5      2   0e+384  ->  10

+ddfma2004 fma  1.20   2   0e+384  ->  2.40

+ddfma2005 fma  1.20   0   0e+384  ->  0.00

+ddfma2006 fma  1.20  -2   0e+384  ->  -2.40

+ddfma2007 fma  -1.20  2   0e+384  ->  -2.40

+ddfma2008 fma  -1.20  0   0e+384  ->  0.00

+ddfma2009 fma  -1.20 -2   0e+384  ->  2.40

+ddfma2010 fma  5.09 7.1   0e+384  ->  36.139

+ddfma2011 fma  2.5    4   0e+384  ->  10.0

+ddfma2012 fma  2.50   4   0e+384  ->  10.00

+ddfma2013 fma  1.23456789 1.00000000   0e+384  ->  1.234567890000000 Rounded

+ddfma2015 fma  2.50   4   0e+384  ->  10.00

+ddfma2016 fma   9.999999999  9.999999999   0e+384  ->   99.99999998000000 Inexact Rounded

+ddfma2017 fma   9.999999999 -9.999999999   0e+384  ->  -99.99999998000000 Inexact Rounded

+ddfma2018 fma  -9.999999999  9.999999999   0e+384  ->  -99.99999998000000 Inexact Rounded

+ddfma2019 fma  -9.999999999 -9.999999999   0e+384  ->   99.99999998000000 Inexact Rounded

+

+-- zeros, etc.

+ddfma2021 fma   0      0       0e+384  ->   0

+ddfma2022 fma   0     -0       0e+384  ->   0

+ddfma2023 fma  -0      0       0e+384  ->   0

+ddfma2024 fma  -0     -0       0e+384  ->   0

+ddfma2025 fma  -0.0   -0.0     0e+384  ->   0.00

+ddfma2026 fma  -0.0   -0.0     0e+384  ->   0.00

+ddfma2027 fma  -0.0   -0.0     0e+384  ->   0.00

+ddfma2028 fma  -0.0   -0.0     0e+384  ->   0.00

+ddfma2030 fma   5.00   1E-3    0e+384  ->   0.00500

+ddfma2031 fma   00.00  0.000   0e+384  ->   0.00000

+ddfma2032 fma   00.00  0E-3    0e+384  ->   0.00000     -- rhs is 0

+ddfma2033 fma   0E-3   00.00   0e+384  ->   0.00000     -- lhs is 0

+ddfma2034 fma  -5.00   1E-3    0e+384  ->  -0.00500

+ddfma2035 fma  -00.00  0.000   0e+384  ->   0.00000

+ddfma2036 fma  -00.00  0E-3    0e+384  ->   0.00000     -- rhs is 0

+ddfma2037 fma  -0E-3   00.00   0e+384  ->   0.00000     -- lhs is 0

+ddfma2038 fma   5.00  -1E-3    0e+384  ->  -0.00500

+ddfma2039 fma   00.00 -0.000   0e+384  ->   0.00000

+ddfma2040 fma   00.00 -0E-3    0e+384  ->   0.00000     -- rhs is 0

+ddfma2041 fma   0E-3  -00.00   0e+384  ->   0.00000     -- lhs is 0

+ddfma2042 fma  -5.00  -1E-3    0e+384  ->   0.00500

+ddfma2043 fma  -00.00 -0.000   0e+384  ->   0.00000

+ddfma2044 fma  -00.00 -0E-3    0e+384  ->   0.00000     -- rhs is 0

+ddfma2045 fma  -0E-3  -00.00  -0e+384  ->   0.00000     -- lhs is 0

+ddfma2046 fma  -0E-3   00.00  -0e+384  ->  -0.00000

+ddfma2047 fma   0E-3  -00.00  -0e+384  ->  -0.00000

+ddfma2048 fma   0E-3   00.00  -0e+384  ->   0.00000

+

+-- examples from decarith

+ddfma2050 fma  1.20 3          0e+384  ->  3.60

+ddfma2051 fma  7    3          0e+384  ->  21

+ddfma2052 fma  0.9  0.8        0e+384  ->  0.72

+ddfma2053 fma  0.9  -0         0e+384  ->  0.0

+ddfma2054 fma  654321 654321   0e+384  ->  428135971041

+

+ddfma2060 fma  123.45 1e7    0e+384  ->   1.2345E+9

+ddfma2061 fma  123.45 1e8    0e+384  ->   1.2345E+10

+ddfma2062 fma  123.45 1e+9   0e+384  ->   1.2345E+11

+ddfma2063 fma  123.45 1e10   0e+384  ->   1.2345E+12

+ddfma2064 fma  123.45 1e11   0e+384  ->   1.2345E+13

+ddfma2065 fma  123.45 1e12   0e+384  ->   1.2345E+14

+ddfma2066 fma  123.45 1e13   0e+384  ->   1.2345E+15

+

+

+-- test some intermediate lengths

+--                    1234567890123456

+ddfma2080 fma  0.1 1230123456456789       0e+384  ->  123012345645678.9

+ddfma2084 fma  0.1 1230123456456789       0e+384  ->  123012345645678.9

+ddfma2090 fma  1230123456456789     0.1   0e+384  ->  123012345645678.9

+ddfma2094 fma  1230123456456789     0.1   0e+384  ->  123012345645678.9

+

+-- test some more edge cases and carries

+ddfma2101 fma  9 9     0e+384  ->  81

+ddfma2102 fma  9 90     0e+384  ->  810

+ddfma2103 fma  9 900     0e+384  ->  8100

+ddfma2104 fma  9 9000     0e+384  ->  81000

+ddfma2105 fma  9 90000     0e+384  ->  810000

+ddfma2106 fma  9 900000     0e+384  ->  8100000

+ddfma2107 fma  9 9000000     0e+384  ->  81000000

+ddfma2108 fma  9 90000000     0e+384  ->  810000000

+ddfma2109 fma  9 900000000     0e+384  ->  8100000000

+ddfma2110 fma  9 9000000000     0e+384  ->  81000000000

+ddfma2111 fma  9 90000000000     0e+384  ->  810000000000

+ddfma2112 fma  9 900000000000     0e+384  ->  8100000000000

+ddfma2113 fma  9 9000000000000     0e+384  ->  81000000000000

+ddfma2114 fma  9 90000000000000     0e+384  ->  810000000000000

+ddfma2115 fma  9 900000000000000     0e+384  ->  8100000000000000

+--ddfma2116 fma  9 9000000000000000     0e+384  ->  81000000000000000

+--ddfma2117 fma  9 90000000000000000     0e+384  ->  810000000000000000

+--ddfma2118 fma  9 900000000000000000     0e+384  ->  8100000000000000000

+--ddfma2119 fma  9 9000000000000000000     0e+384  ->  81000000000000000000

+--ddfma2120 fma  9 90000000000000000000     0e+384  ->  810000000000000000000

+--ddfma2121 fma  9 900000000000000000000     0e+384  ->  8100000000000000000000

+--ddfma2122 fma  9 9000000000000000000000     0e+384  ->  81000000000000000000000

+--ddfma2123 fma  9 90000000000000000000000     0e+384  ->  810000000000000000000000

+-- test some more edge cases without carries

+ddfma2131 fma  3 3     0e+384  ->  9

+ddfma2132 fma  3 30     0e+384  ->  90

+ddfma2133 fma  3 300     0e+384  ->  900

+ddfma2134 fma  3 3000     0e+384  ->  9000

+ddfma2135 fma  3 30000     0e+384  ->  90000

+ddfma2136 fma  3 300000     0e+384  ->  900000

+ddfma2137 fma  3 3000000     0e+384  ->  9000000

+ddfma2138 fma  3 30000000     0e+384  ->  90000000

+ddfma2139 fma  3 300000000     0e+384  ->  900000000

+ddfma2140 fma  3 3000000000     0e+384  ->  9000000000

+ddfma2141 fma  3 30000000000     0e+384  ->  90000000000

+ddfma2142 fma  3 300000000000     0e+384  ->  900000000000

+ddfma2143 fma  3 3000000000000     0e+384  ->  9000000000000

+ddfma2144 fma  3 30000000000000     0e+384  ->  90000000000000

+ddfma2145 fma  3 300000000000000     0e+384  ->  900000000000000

+

+-- test some edge cases with exact rounding

+ddfma2301 fma  9 9     0e+384  ->  81

+ddfma2302 fma  9 90     0e+384  ->  810

+ddfma2303 fma  9 900     0e+384  ->  8100

+ddfma2304 fma  9 9000     0e+384  ->  81000

+ddfma2305 fma  9 90000     0e+384  ->  810000

+ddfma2306 fma  9 900000     0e+384  ->  8100000

+ddfma2307 fma  9 9000000     0e+384  ->  81000000

+ddfma2308 fma  9 90000000     0e+384  ->  810000000

+ddfma2309 fma  9 900000000     0e+384  ->  8100000000

+ddfma2310 fma  9 9000000000     0e+384  ->  81000000000

+ddfma2311 fma  9 90000000000     0e+384  ->  810000000000

+ddfma2312 fma  9 900000000000     0e+384  ->  8100000000000

+ddfma2313 fma  9 9000000000000     0e+384  ->  81000000000000

+ddfma2314 fma  9 90000000000000     0e+384  ->  810000000000000

+ddfma2315 fma  9 900000000000000     0e+384  ->  8100000000000000

+ddfma2316 fma  9 9000000000000000     0e+384  ->  8.100000000000000E+16  Rounded

+ddfma2317 fma  90 9000000000000000     0e+384  ->  8.100000000000000E+17  Rounded

+ddfma2318 fma  900 9000000000000000     0e+384  ->  8.100000000000000E+18  Rounded

+ddfma2319 fma  9000 9000000000000000     0e+384  ->  8.100000000000000E+19  Rounded

+ddfma2320 fma  90000 9000000000000000     0e+384  ->  8.100000000000000E+20  Rounded

+ddfma2321 fma  900000 9000000000000000     0e+384  ->  8.100000000000000E+21  Rounded

+ddfma2322 fma  9000000 9000000000000000     0e+384  ->  8.100000000000000E+22  Rounded

+ddfma2323 fma  90000000 9000000000000000     0e+384  ->  8.100000000000000E+23  Rounded

+

+-- tryzeros cases

+ddfma2504  fma   0E-260 1000E-260    0e+384  ->  0E-398 Clamped

+ddfma2505  fma   100E+260 0E+260     0e+384  ->  0E+369 Clamped

+

+-- mixed with zeros

+ddfma2541 fma   0    -1       0e+384  ->   0

+ddfma2542 fma  -0    -1       0e+384  ->   0

+ddfma2543 fma   0     1       0e+384  ->   0

+ddfma2544 fma  -0     1       0e+384  ->   0

+ddfma2545 fma  -1     0       0e+384  ->   0

+ddfma2546 fma  -1    -0       0e+384  ->   0

+ddfma2547 fma   1     0       0e+384  ->   0

+ddfma2548 fma   1    -0       0e+384  ->   0

+

+ddfma2551 fma   0.0  -1       0e+384  ->   0.0

+ddfma2552 fma  -0.0  -1       0e+384  ->   0.0

+ddfma2553 fma   0.0   1       0e+384  ->   0.0

+ddfma2554 fma  -0.0   1       0e+384  ->   0.0

+ddfma2555 fma  -1.0   0       0e+384  ->   0.0

+ddfma2556 fma  -1.0  -0       0e+384  ->   0.0

+ddfma2557 fma   1.0   0       0e+384  ->   0.0

+ddfma2558 fma   1.0  -0       0e+384  ->   0.0

+

+ddfma2561 fma   0    -1.0     0e+384  ->   0.0

+ddfma2562 fma  -0    -1.0     0e+384  ->   0.0

+ddfma2563 fma   0     1.0     0e+384  ->   0.0

+ddfma2564 fma  -0     1.0     0e+384  ->   0.0

+ddfma2565 fma  -1     0.0     0e+384  ->   0.0

+ddfma2566 fma  -1    -0.0     0e+384  ->   0.0

+ddfma2567 fma   1     0.0     0e+384  ->   0.0

+ddfma2568 fma   1    -0.0     0e+384  ->   0.0

+

+ddfma2571 fma   0.0  -1.0     0e+384  ->   0.00

+ddfma2572 fma  -0.0  -1.0     0e+384  ->   0.00

+ddfma2573 fma   0.0   1.0     0e+384  ->   0.00

+ddfma2574 fma  -0.0   1.0     0e+384  ->   0.00

+ddfma2575 fma  -1.0   0.0     0e+384  ->   0.00

+ddfma2576 fma  -1.0  -0.0     0e+384  ->   0.00

+ddfma2577 fma   1.0   0.0     0e+384  ->   0.00

+ddfma2578 fma   1.0  -0.0     0e+384  ->   0.00

+

+-- Specials

+ddfma2580 fma   Inf  -Inf     0e+384  ->  -Infinity

+ddfma2581 fma   Inf  -1000    0e+384  ->  -Infinity

+ddfma2582 fma   Inf  -1       0e+384  ->  -Infinity

+ddfma2583 fma   Inf  -0       0e+384  ->   NaN  Invalid_operation

+ddfma2584 fma   Inf   0       0e+384  ->   NaN  Invalid_operation

+ddfma2585 fma   Inf   1       0e+384  ->   Infinity

+ddfma2586 fma   Inf   1000    0e+384  ->   Infinity

+ddfma2587 fma   Inf   Inf     0e+384  ->   Infinity

+ddfma2588 fma  -1000  Inf     0e+384  ->  -Infinity

+ddfma2589 fma  -Inf   Inf     0e+384  ->  -Infinity

+ddfma2590 fma  -1     Inf     0e+384  ->  -Infinity

+ddfma2591 fma  -0     Inf     0e+384  ->   NaN  Invalid_operation

+ddfma2592 fma   0     Inf     0e+384  ->   NaN  Invalid_operation

+ddfma2593 fma   1     Inf     0e+384  ->   Infinity

+ddfma2594 fma   1000  Inf     0e+384  ->   Infinity

+ddfma2595 fma   Inf   Inf     0e+384  ->   Infinity

+

+ddfma2600 fma  -Inf  -Inf     0e+384  ->   Infinity

+ddfma2601 fma  -Inf  -1000    0e+384  ->   Infinity

+ddfma2602 fma  -Inf  -1       0e+384  ->   Infinity

+ddfma2603 fma  -Inf  -0       0e+384  ->   NaN  Invalid_operation

+ddfma2604 fma  -Inf   0       0e+384  ->   NaN  Invalid_operation

+ddfma2605 fma  -Inf   1       0e+384  ->  -Infinity

+ddfma2606 fma  -Inf   1000    0e+384  ->  -Infinity

+ddfma2607 fma  -Inf   Inf     0e+384  ->  -Infinity

+ddfma2608 fma  -1000  Inf     0e+384  ->  -Infinity

+ddfma2609 fma  -Inf  -Inf     0e+384  ->   Infinity

+ddfma2610 fma  -1    -Inf     0e+384  ->   Infinity

+ddfma2611 fma  -0    -Inf     0e+384  ->   NaN  Invalid_operation

+ddfma2612 fma   0    -Inf     0e+384  ->   NaN  Invalid_operation

+ddfma2613 fma   1    -Inf     0e+384  ->  -Infinity

+ddfma2614 fma   1000 -Inf     0e+384  ->  -Infinity

+ddfma2615 fma   Inf  -Inf     0e+384  ->  -Infinity

+

+ddfma2621 fma   NaN -Inf      0e+384  ->   NaN

+ddfma2622 fma   NaN -1000     0e+384  ->   NaN

+ddfma2623 fma   NaN -1        0e+384  ->   NaN

+ddfma2624 fma   NaN -0        0e+384  ->   NaN

+ddfma2625 fma   NaN  0        0e+384  ->   NaN

+ddfma2626 fma   NaN  1        0e+384  ->   NaN

+ddfma2627 fma   NaN  1000     0e+384  ->   NaN

+ddfma2628 fma   NaN  Inf      0e+384  ->   NaN

+ddfma2629 fma   NaN  NaN      0e+384  ->   NaN

+ddfma2630 fma  -Inf  NaN      0e+384  ->   NaN

+ddfma2631 fma  -1000 NaN      0e+384  ->   NaN

+ddfma2632 fma  -1    NaN      0e+384  ->   NaN

+ddfma2633 fma  -0    NaN      0e+384  ->   NaN

+ddfma2634 fma   0    NaN      0e+384  ->   NaN

+ddfma2635 fma   1    NaN      0e+384  ->   NaN

+ddfma2636 fma   1000 NaN      0e+384  ->   NaN

+ddfma2637 fma   Inf  NaN      0e+384  ->   NaN

+

+ddfma2641 fma   sNaN -Inf     0e+384  ->   NaN  Invalid_operation

+ddfma2642 fma   sNaN -1000    0e+384  ->   NaN  Invalid_operation

+ddfma2643 fma   sNaN -1       0e+384  ->   NaN  Invalid_operation

+ddfma2644 fma   sNaN -0       0e+384  ->   NaN  Invalid_operation

+ddfma2645 fma   sNaN  0       0e+384  ->   NaN  Invalid_operation

+ddfma2646 fma   sNaN  1       0e+384  ->   NaN  Invalid_operation

+ddfma2647 fma   sNaN  1000    0e+384  ->   NaN  Invalid_operation

+ddfma2648 fma   sNaN  NaN     0e+384  ->   NaN  Invalid_operation

+ddfma2649 fma   sNaN sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2650 fma   NaN  sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2651 fma  -Inf  sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2652 fma  -1000 sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2653 fma  -1    sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2654 fma  -0    sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2655 fma   0    sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2656 fma   1    sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2657 fma   1000 sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2658 fma   Inf  sNaN     0e+384  ->   NaN  Invalid_operation

+ddfma2659 fma   NaN  sNaN     0e+384  ->   NaN  Invalid_operation

+

+-- propagating NaNs

+ddfma2661 fma   NaN9 -Inf     0e+384  ->   NaN9

+ddfma2662 fma   NaN8  999     0e+384  ->   NaN8

+ddfma2663 fma   NaN71 Inf     0e+384  ->   NaN71

+ddfma2664 fma   NaN6  NaN5    0e+384  ->   NaN6

+ddfma2665 fma  -Inf   NaN4    0e+384  ->   NaN4

+ddfma2666 fma  -999   NaN33   0e+384  ->   NaN33

+ddfma2667 fma   Inf   NaN2    0e+384  ->   NaN2

+

+ddfma2671 fma   sNaN99 -Inf      0e+384  ->   NaN99 Invalid_operation

+ddfma2672 fma   sNaN98 -11       0e+384  ->   NaN98 Invalid_operation

+ddfma2673 fma   sNaN97  NaN      0e+384  ->   NaN97 Invalid_operation

+ddfma2674 fma   sNaN16 sNaN94    0e+384  ->   NaN16 Invalid_operation

+ddfma2675 fma   NaN95  sNaN93    0e+384  ->   NaN93 Invalid_operation

+ddfma2676 fma  -Inf    sNaN92    0e+384  ->   NaN92 Invalid_operation

+ddfma2677 fma   088    sNaN91    0e+384  ->   NaN91 Invalid_operation

+ddfma2678 fma   Inf    sNaN90    0e+384  ->   NaN90 Invalid_operation

+ddfma2679 fma   NaN    sNaN89    0e+384  ->   NaN89 Invalid_operation

+

+ddfma2681 fma  -NaN9 -Inf     0e+384  ->  -NaN9

+ddfma2682 fma  -NaN8  999     0e+384  ->  -NaN8

+ddfma2683 fma  -NaN71 Inf     0e+384  ->  -NaN71

+ddfma2684 fma  -NaN6 -NaN5    0e+384  ->  -NaN6

+ddfma2685 fma  -Inf  -NaN4    0e+384  ->  -NaN4

+ddfma2686 fma  -999  -NaN33   0e+384  ->  -NaN33

+ddfma2687 fma   Inf  -NaN2    0e+384  ->  -NaN2

+

+ddfma2691 fma  -sNaN99 -Inf      0e+384  ->  -NaN99 Invalid_operation

+ddfma2692 fma  -sNaN98 -11       0e+384  ->  -NaN98 Invalid_operation

+ddfma2693 fma  -sNaN97  NaN      0e+384  ->  -NaN97 Invalid_operation

+ddfma2694 fma  -sNaN16 -sNaN94   0e+384  ->  -NaN16 Invalid_operation

+ddfma2695 fma  -NaN95  -sNaN93   0e+384  ->  -NaN93 Invalid_operation

+ddfma2696 fma  -Inf    -sNaN92   0e+384  ->  -NaN92 Invalid_operation

+ddfma2697 fma   088    -sNaN91   0e+384  ->  -NaN91 Invalid_operation

+ddfma2698 fma   Inf    -sNaN90   0e+384  ->  -NaN90 Invalid_operation

+ddfma2699 fma  -NaN    -sNaN89   0e+384  ->  -NaN89 Invalid_operation

+

+ddfma2701 fma  -NaN  -Inf     0e+384  ->  -NaN

+ddfma2702 fma  -NaN   999     0e+384  ->  -NaN

+ddfma2703 fma  -NaN   Inf     0e+384  ->  -NaN

+ddfma2704 fma  -NaN  -NaN     0e+384  ->  -NaN

+ddfma2705 fma  -Inf  -NaN0    0e+384  ->  -NaN

+ddfma2706 fma  -999  -NaN     0e+384  ->  -NaN

+ddfma2707 fma   Inf  -NaN     0e+384  ->  -NaN

+

+ddfma2711 fma  -sNaN   -Inf      0e+384  ->  -NaN Invalid_operation

+ddfma2712 fma  -sNaN   -11       0e+384  ->  -NaN Invalid_operation

+ddfma2713 fma  -sNaN00  NaN      0e+384  ->  -NaN Invalid_operation

+ddfma2714 fma  -sNaN   -sNaN     0e+384  ->  -NaN Invalid_operation

+ddfma2715 fma  -NaN    -sNaN     0e+384  ->  -NaN Invalid_operation

+ddfma2716 fma  -Inf    -sNaN     0e+384  ->  -NaN Invalid_operation

+ddfma2717 fma   088    -sNaN     0e+384  ->  -NaN Invalid_operation

+ddfma2718 fma   Inf    -sNaN     0e+384  ->  -NaN Invalid_operation

+ddfma2719 fma  -NaN    -sNaN     0e+384  ->  -NaN Invalid_operation

+

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

+-- signs

+ddfma2751 fma   1e+277  1e+311   0e+384  ->   Infinity Overflow Inexact Rounded

+ddfma2752 fma   1e+277 -1e+311   0e+384  ->  -Infinity Overflow Inexact Rounded

+ddfma2753 fma  -1e+277  1e+311   0e+384  ->  -Infinity Overflow Inexact Rounded

+ddfma2754 fma  -1e+277 -1e+311   0e+384  ->   Infinity Overflow Inexact Rounded

+ddfma2755 fma   1e-277  1e-311   0e+384  ->   0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddfma2756 fma   1e-277 -1e-311   0e+384  ->  -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddfma2757 fma  -1e-277  1e-311   0e+384  ->  -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddfma2758 fma  -1e-277 -1e-311   0e+384  ->   0E-398 Underflow Subnormal Inexact Rounded Clamped

+

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

+ddfma2760 fma  1e-291 1e-101   0e+384  ->  1E-392 Subnormal

+ddfma2761 fma  1e-291 1e-102   0e+384  ->  1E-393 Subnormal

+ddfma2762 fma  1e-291 1e-103   0e+384  ->  1E-394 Subnormal

+ddfma2763 fma  1e-291 1e-104   0e+384  ->  1E-395 Subnormal

+ddfma2764 fma  1e-291 1e-105   0e+384  ->  1E-396 Subnormal

+ddfma2765 fma  1e-291 1e-106   0e+384  ->  1E-397 Subnormal

+ddfma2766 fma  1e-291 1e-107   0e+384  ->  1E-398 Subnormal

+ddfma2767 fma  1e-291 1e-108   0e+384  ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddfma2768 fma  1e-291 1e-109   0e+384  ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddfma2769 fma  1e-291 1e-110   0e+384  ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

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

+ddfma2770 fma  1e+60 1e+321   0e+384  ->  1.000000000000E+381  Clamped

+ddfma2771 fma  1e+60 1e+322   0e+384  ->  1.0000000000000E+382  Clamped

+ddfma2772 fma  1e+60 1e+323   0e+384  ->  1.00000000000000E+383  Clamped

+ddfma2773 fma  1e+60 1e+324   0e+384  ->  1.000000000000000E+384  Clamped

+ddfma2774 fma  1e+60 1e+325   0e+384  ->  Infinity Overflow Inexact Rounded

+ddfma2775 fma  1e+60 1e+326   0e+384  ->  Infinity Overflow Inexact Rounded

+ddfma2776 fma  1e+60 1e+327   0e+384  ->  Infinity Overflow Inexact Rounded

+ddfma2777 fma  1e+60 1e+328   0e+384  ->  Infinity Overflow Inexact Rounded

+ddfma2778 fma  1e+60 1e+329   0e+384  ->  Infinity Overflow Inexact Rounded

+ddfma2779 fma  1e+60 1e+330   0e+384  ->  Infinity Overflow Inexact Rounded

+

+ddfma2801 fma   1.0000E-394  1       0e+384  ->  1.0000E-394 Subnormal

+ddfma2802 fma   1.000E-394   1e-1    0e+384  ->  1.000E-395  Subnormal

+ddfma2803 fma   1.00E-394    1e-2    0e+384  ->  1.00E-396   Subnormal

+ddfma2804 fma   1.0E-394     1e-3    0e+384  ->  1.0E-397    Subnormal

+ddfma2805 fma   1.0E-394     1e-4    0e+384  ->  1E-398     Subnormal Rounded

+ddfma2806 fma   1.3E-394     1e-4    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded

+ddfma2807 fma   1.5E-394     1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded

+ddfma2808 fma   1.7E-394     1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded

+ddfma2809 fma   2.3E-394     1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded

+ddfma2810 fma   2.5E-394     1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded

+ddfma2811 fma   2.7E-394     1e-4    0e+384  ->  3E-398     Underflow Subnormal Inexact Rounded

+ddfma2812 fma   1.49E-394    1e-4    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded

+ddfma2813 fma   1.50E-394    1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded

+ddfma2814 fma   1.51E-394    1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded

+ddfma2815 fma   2.49E-394    1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded

+ddfma2816 fma   2.50E-394    1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded

+ddfma2817 fma   2.51E-394    1e-4    0e+384  ->  3E-398     Underflow Subnormal Inexact Rounded

+

+ddfma2818 fma   1E-394       1e-4    0e+384  ->  1E-398     Subnormal

+ddfma2819 fma   3E-394       1e-5    0e+384  ->  0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddfma2820 fma   5E-394       1e-5    0e+384  ->  0E-398     Underflow Subnormal Inexact Rounded Clamped

+ddfma2821 fma   7E-394       1e-5    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded

+ddfma2822 fma   9E-394       1e-5    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded

+ddfma2823 fma   9.9E-394     1e-5    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded

+

+ddfma2824 fma   1E-394      -1e-4    0e+384  ->  -1E-398    Subnormal

+ddfma2825 fma   3E-394      -1e-5    0e+384  ->  -0E-398    Underflow Subnormal Inexact Rounded Clamped

+ddfma2826 fma  -5E-394       1e-5    0e+384  ->  -0E-398    Underflow Subnormal Inexact Rounded Clamped

+ddfma2827 fma   7E-394      -1e-5    0e+384  ->  -1E-398    Underflow Subnormal Inexact Rounded

+ddfma2828 fma  -9E-394       1e-5    0e+384  ->  -1E-398    Underflow Subnormal Inexact Rounded

+ddfma2829 fma   9.9E-394    -1e-5    0e+384  ->  -1E-398    Underflow Subnormal Inexact Rounded

+ddfma2830 fma   3.0E-394    -1e-5    0e+384  ->  -0E-398    Underflow Subnormal Inexact Rounded Clamped

+

+ddfma2831 fma   1.0E-199     1e-200   0e+384  ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddfma2832 fma   1.0E-199     1e-199   0e+384  ->  1E-398    Subnormal Rounded

+ddfma2833 fma   1.0E-199     1e-198   0e+384  ->  1.0E-397    Subnormal

+ddfma2834 fma   2.0E-199     2e-198   0e+384  ->  4.0E-397    Subnormal

+ddfma2835 fma   4.0E-199     4e-198   0e+384  ->  1.60E-396   Subnormal

+ddfma2836 fma  10.0E-199    10e-198   0e+384  ->  1.000E-395  Subnormal

+ddfma2837 fma  30.0E-199    30e-198   0e+384  ->  9.000E-395  Subnormal

+ddfma2838 fma  40.0E-199    40e-188   0e+384  ->  1.6000E-384 Subnormal

+ddfma2839 fma  40.0E-199    40e-187   0e+384  ->  1.6000E-383

+ddfma2840 fma  40.0E-199    40e-186   0e+384  ->  1.6000E-382

+

+-- Long operand overflow may be a different path

+ddfma2870 fma  100  9.999E+383           0e+384  ->   Infinity Inexact Overflow Rounded

+ddfma2871 fma  100 -9.999E+383       0e+384  ->  -Infinity Inexact Overflow Rounded

+ddfma2872 fma       9.999E+383 100   0e+384  ->   Infinity Inexact Overflow Rounded

+ddfma2873 fma      -9.999E+383 100   0e+384  ->  -Infinity Inexact Overflow Rounded

+

+-- check for double-rounded subnormals

+ddfma2881 fma   1.2347E-355 1.2347E-40    0e+384  ->   1.524E-395 Inexact Rounded Subnormal Underflow

+ddfma2882 fma   1.234E-355 1.234E-40      0e+384  ->   1.523E-395 Inexact Rounded Subnormal Underflow

+ddfma2883 fma   1.23E-355  1.23E-40       0e+384  ->   1.513E-395 Inexact Rounded Subnormal Underflow

+ddfma2884 fma   1.2E-355   1.2E-40        0e+384  ->   1.44E-395  Subnormal

+ddfma2885 fma   1.2E-355   1.2E-41        0e+384  ->   1.44E-396  Subnormal

+ddfma2886 fma   1.2E-355   1.2E-42        0e+384  ->   1.4E-397   Subnormal Inexact Rounded Underflow

+ddfma2887 fma   1.2E-355   1.3E-42        0e+384  ->   1.6E-397   Subnormal Inexact Rounded Underflow

+ddfma2888 fma   1.3E-355   1.3E-42        0e+384  ->   1.7E-397   Subnormal Inexact Rounded Underflow

+ddfma2889 fma   1.3E-355   1.3E-43        0e+384  ->     2E-398   Subnormal Inexact Rounded Underflow

+ddfma2890 fma   1.3E-356   1.3E-43        0e+384  ->     0E-398   Clamped Subnormal Inexact Rounded Underflow

+

+ddfma2891 fma   1.2345E-39   1.234E-355   0e+384  ->   1.5234E-394 Inexact Rounded Subnormal Underflow

+ddfma2892 fma   1.23456E-39  1.234E-355   0e+384  ->   1.5234E-394 Inexact Rounded Subnormal Underflow

+ddfma2893 fma   1.2345E-40   1.234E-355   0e+384  ->   1.523E-395  Inexact Rounded Subnormal Underflow

+ddfma2894 fma   1.23456E-40  1.234E-355   0e+384  ->   1.523E-395  Inexact Rounded Subnormal Underflow

+ddfma2895 fma   1.2345E-41   1.234E-355   0e+384  ->   1.52E-396   Inexact Rounded Subnormal Underflow

+ddfma2896 fma   1.23456E-41  1.234E-355   0e+384  ->   1.52E-396   Inexact Rounded Subnormal Underflow

+

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

+ddfma2900 fma   0.3000000000E-191 0.3000000000E-191   0e+384  ->  9.00000000000000E-384 Subnormal Rounded

+ddfma2901 fma   0.3000000001E-191 0.3000000001E-191   0e+384  ->  9.00000000600000E-384 Underflow Inexact Subnormal Rounded

+ddfma2902 fma   9.999999999999999E-383  0.0999999999999           0e+384  ->  9.99999999999000E-384 Underflow Inexact Subnormal Rounded

+ddfma2903 fma   9.999999999999999E-383  0.09999999999999          0e+384  ->  9.99999999999900E-384 Underflow Inexact Subnormal Rounded

+ddfma2904 fma   9.999999999999999E-383  0.099999999999999         0e+384  ->  9.99999999999990E-384 Underflow Inexact Subnormal Rounded

+ddfma2905 fma   9.999999999999999E-383  0.0999999999999999        0e+384  ->  9.99999999999999E-384 Underflow Inexact Subnormal Rounded

+-- prove operands are exact

+ddfma2906 fma   9.999999999999999E-383  1                         0e+384  ->  9.999999999999999E-383

+ddfma2907 fma                        1  0.09999999999999999       0e+384  ->  0.09999999999999999

+-- the next rounds to Nmin

+ddfma2908 fma   9.999999999999999E-383  0.09999999999999999       0e+384  ->  1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+

+-- hugest

+ddfma2909 fma   9999999999999999 9999999999999999   0e+384  ->  9.999999999999998E+31 Inexact Rounded

+

+-- Null tests

+ddfma2990 fma  10  #   0e+384  ->  NaN Invalid_operation

+ddfma2991 fma   # 10   0e+384  ->  NaN Invalid_operation

+

+

+-- ADDITION TESTS ------------------------------------------------------

+

+-- [first group are 'quick confidence check']

+ddfma3001 fma  1  1       1       ->  2

+ddfma3002 fma  1  2       3       ->  5

+ddfma3003 fma  1  '5.75'  '3.3'   ->  9.05

+ddfma3004 fma  1  '5'     '-3'    ->  2

+ddfma3005 fma  1  '-5'    '-3'    ->  -8

+ddfma3006 fma  1  '-7'    '2.5'   ->  -4.5

+ddfma3007 fma  1  '0.7'   '0.3'   ->  1.0

+ddfma3008 fma  1  '1.25'  '1.25'  ->  2.50

+ddfma3009 fma  1  '1.23456789'  '1.00000000' -> '2.23456789'

+ddfma3010 fma  1  '1.23456789'  '1.00000011' -> '2.23456800'

+

+--             1234567890123456      1234567890123456

+ddfma3011 fma  1  '0.4444444444444446'  '0.5555555555555555' -> '1.000000000000000' Inexact Rounded

+ddfma3012 fma  1  '0.4444444444444445'  '0.5555555555555555' -> '1.000000000000000' Rounded

+ddfma3013 fma  1  '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'

+ddfma3014 fma  1    '4444444444444444' '0.49'   -> '4444444444444444' Inexact Rounded

+ddfma3015 fma  1    '4444444444444444' '0.499'  -> '4444444444444444' Inexact Rounded

+ddfma3016 fma  1    '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded

+ddfma3017 fma  1    '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded

+ddfma3018 fma  1    '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded

+ddfma3019 fma  1    '4444444444444444' '0.501'  -> '4444444444444445' Inexact Rounded

+ddfma3020 fma  1    '4444444444444444' '0.51'   -> '4444444444444445' Inexact Rounded

+

+ddfma3021 fma  1  0 1 -> 1

+ddfma3022 fma  1  1 1 -> 2

+ddfma3023 fma  1  2 1 -> 3

+ddfma3024 fma  1  3 1 -> 4

+ddfma3025 fma  1  4 1 -> 5

+ddfma3026 fma  1  5 1 -> 6

+ddfma3027 fma  1  6 1 -> 7

+ddfma3028 fma  1  7 1 -> 8

+ddfma3029 fma  1  8 1 -> 9

+ddfma3030 fma  1  9 1 -> 10

+

+-- some carrying effects

+ddfma3031 fma  1  '0.9998'  '0.0000' -> '0.9998'

+ddfma3032 fma  1  '0.9998'  '0.0001' -> '0.9999'

+ddfma3033 fma  1  '0.9998'  '0.0002' -> '1.0000'

+ddfma3034 fma  1  '0.9998'  '0.0003' -> '1.0001'

+

+ddfma3035 fma  1  '70'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+ddfma3036 fma  1  '700'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+ddfma3037 fma  1  '7000'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+ddfma3038 fma  1  '70000'  '10000e+16' -> '1.000000000000001E+20' Inexact Rounded

+ddfma3039 fma  1  '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded

+

+-- symmetry:

+ddfma3040 fma  1  '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded

+ddfma3041 fma  1  '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded

+ddfma3042 fma  1  '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded

+ddfma3044 fma  1  '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded

+ddfma3045 fma  1  '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded

+

+-- same, without rounding

+ddfma3046 fma  1  '10000e+9'  '7' -> '10000000000007'

+ddfma3047 fma  1  '10000e+9'  '70' -> '10000000000070'

+ddfma3048 fma  1  '10000e+9'  '700' -> '10000000000700'

+ddfma3049 fma  1  '10000e+9'  '7000' -> '10000000007000'

+ddfma3050 fma  1  '10000e+9'  '70000' -> '10000000070000'

+ddfma3051 fma  1  '10000e+9'  '700000' -> '10000000700000'

+ddfma3052 fma  1  '10000e+9'  '7000000' -> '10000007000000'

+

+-- examples from decarith

+ddfma3053 fma  1  '12' '7.00' -> '19.00'

+ddfma3054 fma  1  '1.3' '-1.07' -> '0.23'

+ddfma3055 fma  1  '1.3' '-1.30' -> '0.00'

+ddfma3056 fma  1  '1.3' '-2.07' -> '-0.77'

+ddfma3057 fma  1  '1E+2' '1E+4' -> '1.01E+4'

+

+-- leading zero preservation

+ddfma3061 fma  1  1 '0.0001' -> '1.0001'

+ddfma3062 fma  1  1 '0.00001' -> '1.00001'

+ddfma3063 fma  1  1 '0.000001' -> '1.000001'

+ddfma3064 fma  1  1 '0.0000001' -> '1.0000001'

+ddfma3065 fma  1  1 '0.00000001' -> '1.00000001'

+

+-- some funny zeros [in case of bad signum]

+ddfma3070 fma  1  1  0    -> 1

+ddfma3071 fma  1  1 0.    -> 1

+ddfma3072 fma  1  1  .0   -> 1.0

+ddfma3073 fma  1  1 0.0   -> 1.0

+ddfma3074 fma  1  1 0.00  -> 1.00

+ddfma3075 fma  1   0  1   -> 1

+ddfma3076 fma  1  0.  1   -> 1

+ddfma3077 fma  1   .0 1   -> 1.0

+ddfma3078 fma  1  0.0 1   -> 1.0

+ddfma3079 fma  1  0.00 1  -> 1.00

+

+-- some carries

+ddfma3080 fma  1  999999998 1  -> 999999999

+ddfma3081 fma  1  999999999 1  -> 1000000000

+ddfma3082 fma  1   99999999 1  -> 100000000

+ddfma3083 fma  1    9999999 1  -> 10000000

+ddfma3084 fma  1     999999 1  -> 1000000

+ddfma3085 fma  1      99999 1  -> 100000

+ddfma3086 fma  1       9999 1  -> 10000

+ddfma3087 fma  1        999 1  -> 1000

+ddfma3088 fma  1         99 1  -> 100

+ddfma3089 fma  1          9 1  -> 10

+

+

+-- more LHS swaps

+ddfma3090 fma  1  '-56267E-10'   0 ->  '-0.0000056267'

+ddfma3091 fma  1  '-56267E-6'    0 ->  '-0.056267'

+ddfma3092 fma  1  '-56267E-5'    0 ->  '-0.56267'

+ddfma3093 fma  1  '-56267E-4'    0 ->  '-5.6267'

+ddfma3094 fma  1  '-56267E-3'    0 ->  '-56.267'

+ddfma3095 fma  1  '-56267E-2'    0 ->  '-562.67'

+ddfma3096 fma  1  '-56267E-1'    0 ->  '-5626.7'

+ddfma3097 fma  1  '-56267E-0'    0 ->  '-56267'

+ddfma3098 fma  1  '-5E-10'       0 ->  '-5E-10'

+ddfma3099 fma  1  '-5E-7'        0 ->  '-5E-7'

+ddfma3100 fma  1  '-5E-6'        0 ->  '-0.000005'

+ddfma3101 fma  1  '-5E-5'        0 ->  '-0.00005'

+ddfma3102 fma  1  '-5E-4'        0 ->  '-0.0005'

+ddfma3103 fma  1  '-5E-1'        0 ->  '-0.5'

+ddfma3104 fma  1  '-5E0'         0 ->  '-5'

+ddfma3105 fma  1  '-5E1'         0 ->  '-50'

+ddfma3106 fma  1  '-5E5'         0 ->  '-500000'

+ddfma3107 fma  1  '-5E15'        0 ->  '-5000000000000000'

+ddfma3108 fma  1  '-5E16'        0 ->  '-5.000000000000000E+16'  Rounded

+ddfma3109 fma  1  '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded

+ddfma3110 fma  1  '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded

+ddfma3111 fma  1  '-5E100'       0 ->  '-5.000000000000000E+100' Rounded

+

+-- more RHS swaps

+ddfma3113 fma  1  0  '-56267E-10' ->  '-0.0000056267'

+ddfma3114 fma  1  0  '-56267E-6'  ->  '-0.056267'

+ddfma3116 fma  1  0  '-56267E-5'  ->  '-0.56267'

+ddfma3117 fma  1  0  '-56267E-4'  ->  '-5.6267'

+ddfma3119 fma  1  0  '-56267E-3'  ->  '-56.267'

+ddfma3120 fma  1  0  '-56267E-2'  ->  '-562.67'

+ddfma3121 fma  1  0  '-56267E-1'  ->  '-5626.7'

+ddfma3122 fma  1  0  '-56267E-0'  ->  '-56267'

+ddfma3123 fma  1  0  '-5E-10'     ->  '-5E-10'

+ddfma3124 fma  1  0  '-5E-7'      ->  '-5E-7'

+ddfma3125 fma  1  0  '-5E-6'      ->  '-0.000005'

+ddfma3126 fma  1  0  '-5E-5'      ->  '-0.00005'

+ddfma3127 fma  1  0  '-5E-4'      ->  '-0.0005'

+ddfma3128 fma  1  0  '-5E-1'      ->  '-0.5'

+ddfma3129 fma  1  0  '-5E0'       ->  '-5'

+ddfma3130 fma  1  0  '-5E1'       ->  '-50'

+ddfma3131 fma  1  0  '-5E5'       ->  '-500000'

+ddfma3132 fma  1  0  '-5E15'      ->  '-5000000000000000'

+ddfma3133 fma  1  0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded

+ddfma3134 fma  1  0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded

+ddfma3135 fma  1  0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded

+ddfma3136 fma  1  0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded

+

+-- related

+ddfma3137 fma  1   1  '0E-19'      ->  '1.000000000000000'  Rounded

+ddfma3138 fma  1  -1  '0E-19'      ->  '-1.000000000000000' Rounded

+ddfma3139 fma  1  '0E-19' 1        ->  '1.000000000000000'  Rounded

+ddfma3140 fma  1  '0E-19' -1       ->  '-1.000000000000000' Rounded

+ddfma3141 fma  1  1E+11   0.0000   ->  '100000000000.0000'

+ddfma3142 fma  1  1E+11   0.00000  ->  '100000000000.0000'  Rounded

+ddfma3143 fma  1  0.000   1E+12    ->  '1000000000000.000'

+ddfma3144 fma  1  0.0000  1E+12    ->  '1000000000000.000'  Rounded

+

+-- [some of the next group are really constructor tests]

+ddfma3146 fma  1  '00.0'  0       ->  '0.0'

+ddfma3147 fma  1  '0.00'  0       ->  '0.00'

+ddfma3148 fma  1   0      '0.00'  ->  '0.00'

+ddfma3149 fma  1   0      '00.0'  ->  '0.0'

+ddfma3150 fma  1  '00.0'  '0.00'  ->  '0.00'

+ddfma3151 fma  1  '0.00'  '00.0'  ->  '0.00'

+ddfma3152 fma  1  '3'     '.3'    ->  '3.3'

+ddfma3153 fma  1  '3.'    '.3'    ->  '3.3'

+ddfma3154 fma  1  '3.0'   '.3'    ->  '3.3'

+ddfma3155 fma  1  '3.00'  '.3'    ->  '3.30'

+ddfma3156 fma  1  '3'     '3'     ->  '6'

+ddfma3157 fma  1  '3'     '+3'    ->  '6'

+ddfma3158 fma  1  '3'     '-3'    ->  '0'

+ddfma3159 fma  1  '0.3'   '-0.3'  ->  '0.0'

+ddfma3160 fma  1  '0.03'  '-0.03' ->  '0.00'

+

+-- try borderline precision, with carries, etc.

+ddfma3161 fma  1  '1E+12' '-1'    -> '999999999999'

+ddfma3162 fma  1  '1E+12'  '1.11' -> '1000000000001.11'

+ddfma3163 fma  1  '1.11'  '1E+12' -> '1000000000001.11'

+ddfma3164 fma  1  '-1'    '1E+12' -> '999999999999'

+ddfma3165 fma  1  '7E+12' '-1'    -> '6999999999999'

+ddfma3166 fma  1  '7E+12'  '1.11' -> '7000000000001.11'

+ddfma3167 fma  1  '1.11'  '7E+12' -> '7000000000001.11'

+ddfma3168 fma  1  '-1'    '7E+12' -> '6999999999999'

+

+rounding: half_up

+--           1.234567890123456      1234567890123456      1 234567890123456

+ddfma3170 fma  1  '4.444444444444444'  '0.5555555555555567' -> '5.000000000000001' Inexact Rounded

+ddfma3171 fma  1  '4.444444444444444'  '0.5555555555555566' -> '5.000000000000001' Inexact Rounded

+ddfma3172 fma  1  '4.444444444444444'  '0.5555555555555565' -> '5.000000000000001' Inexact Rounded

+ddfma3173 fma  1  '4.444444444444444'  '0.5555555555555564' -> '5.000000000000000' Inexact Rounded

+ddfma3174 fma  1  '4.444444444444444'  '0.5555555555555553' -> '4.999999999999999' Inexact Rounded

+ddfma3175 fma  1  '4.444444444444444'  '0.5555555555555552' -> '4.999999999999999' Inexact Rounded

+ddfma3176 fma  1  '4.444444444444444'  '0.5555555555555551' -> '4.999999999999999' Inexact Rounded

+ddfma3177 fma  1  '4.444444444444444'  '0.5555555555555550' -> '4.999999999999999' Rounded

+ddfma3178 fma  1  '4.444444444444444'  '0.5555555555555545' -> '4.999999999999999' Inexact Rounded

+ddfma3179 fma  1  '4.444444444444444'  '0.5555555555555544' -> '4.999999999999998' Inexact Rounded

+ddfma3180 fma  1  '4.444444444444444'  '0.5555555555555543' -> '4.999999999999998' Inexact Rounded

+ddfma3181 fma  1  '4.444444444444444'  '0.5555555555555542' -> '4.999999999999998' Inexact Rounded

+ddfma3182 fma  1  '4.444444444444444'  '0.5555555555555541' -> '4.999999999999998' Inexact Rounded

+ddfma3183 fma  1  '4.444444444444444'  '0.5555555555555540' -> '4.999999999999998' Rounded

+

+-- and some more, including residue effects and different roundings

+rounding: half_up

+ddfma3200 fma  1  '1234560123456789' 0             -> '1234560123456789'

+ddfma3201 fma  1  '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded

+ddfma3202 fma  1  '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded

+ddfma3203 fma  1  '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded

+ddfma3204 fma  1  '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded

+ddfma3205 fma  1  '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded

+ddfma3206 fma  1  '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded

+ddfma3207 fma  1  '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded

+ddfma3208 fma  1  '1234560123456789' 0.5           -> '1234560123456790' Inexact Rounded

+ddfma3209 fma  1  '1234560123456789' 0.500000001   -> '1234560123456790' Inexact Rounded

+ddfma3210 fma  1  '1234560123456789' 0.500001      -> '1234560123456790' Inexact Rounded

+ddfma3211 fma  1  '1234560123456789' 0.51          -> '1234560123456790' Inexact Rounded

+ddfma3212 fma  1  '1234560123456789' 0.6           -> '1234560123456790' Inexact Rounded

+ddfma3213 fma  1  '1234560123456789' 0.9           -> '1234560123456790' Inexact Rounded

+ddfma3214 fma  1  '1234560123456789' 0.99999       -> '1234560123456790' Inexact Rounded

+ddfma3215 fma  1  '1234560123456789' 0.999999999   -> '1234560123456790' Inexact Rounded

+ddfma3216 fma  1  '1234560123456789' 1             -> '1234560123456790'

+ddfma3217 fma  1  '1234560123456789' 1.000000001   -> '1234560123456790' Inexact Rounded

+ddfma3218 fma  1  '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded

+ddfma3219 fma  1  '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded

+

+rounding: half_even

+ddfma3220 fma  1  '1234560123456789' 0             -> '1234560123456789'

+ddfma3221 fma  1  '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded

+ddfma3222 fma  1  '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded

+ddfma3223 fma  1  '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded

+ddfma3224 fma  1  '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded

+ddfma3225 fma  1  '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded

+ddfma3226 fma  1  '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded

+ddfma3227 fma  1  '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded

+ddfma3228 fma  1  '1234560123456789' 0.5           -> '1234560123456790' Inexact Rounded

+ddfma3229 fma  1  '1234560123456789' 0.500000001   -> '1234560123456790' Inexact Rounded

+ddfma3230 fma  1  '1234560123456789' 0.500001      -> '1234560123456790' Inexact Rounded

+ddfma3231 fma  1  '1234560123456789' 0.51          -> '1234560123456790' Inexact Rounded

+ddfma3232 fma  1  '1234560123456789' 0.6           -> '1234560123456790' Inexact Rounded

+ddfma3233 fma  1  '1234560123456789' 0.9           -> '1234560123456790' Inexact Rounded

+ddfma3234 fma  1  '1234560123456789' 0.99999       -> '1234560123456790' Inexact Rounded

+ddfma3235 fma  1  '1234560123456789' 0.999999999   -> '1234560123456790' Inexact Rounded

+ddfma3236 fma  1  '1234560123456789' 1             -> '1234560123456790'

+ddfma3237 fma  1  '1234560123456789' 1.00000001    -> '1234560123456790' Inexact Rounded

+ddfma3238 fma  1  '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded

+ddfma3239 fma  1  '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded

+-- critical few with even bottom digit...

+ddfma3240 fma  1  '1234560123456788' 0.499999999   -> '1234560123456788' Inexact Rounded

+ddfma3241 fma  1  '1234560123456788' 0.5           -> '1234560123456788' Inexact Rounded

+ddfma3242 fma  1  '1234560123456788' 0.500000001   -> '1234560123456789' Inexact Rounded

+

+rounding: down

+ddfma3250 fma  1  '1234560123456789' 0             -> '1234560123456789'

+ddfma3251 fma  1  '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded

+ddfma3252 fma  1  '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded

+ddfma3253 fma  1  '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded

+ddfma3254 fma  1  '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded

+ddfma3255 fma  1  '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded

+ddfma3256 fma  1  '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded

+ddfma3257 fma  1  '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded

+ddfma3258 fma  1  '1234560123456789' 0.5           -> '1234560123456789' Inexact Rounded

+ddfma3259 fma  1  '1234560123456789' 0.500000001   -> '1234560123456789' Inexact Rounded

+ddfma3260 fma  1  '1234560123456789' 0.500001      -> '1234560123456789' Inexact Rounded

+ddfma3261 fma  1  '1234560123456789' 0.51          -> '1234560123456789' Inexact Rounded

+ddfma3262 fma  1  '1234560123456789' 0.6           -> '1234560123456789' Inexact Rounded

+ddfma3263 fma  1  '1234560123456789' 0.9           -> '1234560123456789' Inexact Rounded

+ddfma3264 fma  1  '1234560123456789' 0.99999       -> '1234560123456789' Inexact Rounded

+ddfma3265 fma  1  '1234560123456789' 0.999999999   -> '1234560123456789' Inexact Rounded

+ddfma3266 fma  1  '1234560123456789' 1             -> '1234560123456790'

+ddfma3267 fma  1  '1234560123456789' 1.00000001    -> '1234560123456790' Inexact Rounded

+ddfma3268 fma  1  '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded

+ddfma3269 fma  1  '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded

+

+-- 1 in last place tests

+rounding: half_up

+ddfma3301 fma  1   -1   1      ->   0

+ddfma3302 fma  1    0   1      ->   1

+ddfma3303 fma  1    1   1      ->   2

+ddfma3304 fma  1   12   1      ->  13

+ddfma3305 fma  1   98   1      ->  99

+ddfma3306 fma  1   99   1      -> 100

+ddfma3307 fma  1  100   1      -> 101

+ddfma3308 fma  1  101   1      -> 102

+ddfma3309 fma  1   -1  -1      ->  -2

+ddfma3310 fma  1    0  -1      ->  -1

+ddfma3311 fma  1    1  -1      ->   0

+ddfma3312 fma  1   12  -1      ->  11

+ddfma3313 fma  1   98  -1      ->  97

+ddfma3314 fma  1   99  -1      ->  98

+ddfma3315 fma  1  100  -1      ->  99

+ddfma3316 fma  1  101  -1      -> 100

+

+ddfma3321 fma  1  -0.01  0.01    ->  0.00

+ddfma3322 fma  1   0.00  0.01    ->  0.01

+ddfma3323 fma  1   0.01  0.01    ->  0.02

+ddfma3324 fma  1   0.12  0.01    ->  0.13

+ddfma3325 fma  1   0.98  0.01    ->  0.99

+ddfma3326 fma  1   0.99  0.01    ->  1.00

+ddfma3327 fma  1   1.00  0.01    ->  1.01

+ddfma3328 fma  1   1.01  0.01    ->  1.02

+ddfma3329 fma  1  -0.01 -0.01    -> -0.02

+ddfma3330 fma  1   0.00 -0.01    -> -0.01

+ddfma3331 fma  1   0.01 -0.01    ->  0.00

+ddfma3332 fma  1   0.12 -0.01    ->  0.11

+ddfma3333 fma  1   0.98 -0.01    ->  0.97

+ddfma3334 fma  1   0.99 -0.01    ->  0.98

+ddfma3335 fma  1   1.00 -0.01    ->  0.99

+ddfma3336 fma  1   1.01 -0.01    ->  1.00

+

+-- some more cases where adding 0 affects the coefficient

+ddfma3340 fma  1  1E+3    0    ->         1000

+ddfma3341 fma  1  1E+15   0    ->    1000000000000000

+ddfma3342 fma  1  1E+16   0    ->   1.000000000000000E+16  Rounded

+ddfma3343 fma  1  1E+20   0    ->   1.000000000000000E+20  Rounded

+-- which simply follow from these cases ...

+ddfma3344 fma  1  1E+3    1    ->         1001

+ddfma3345 fma  1  1E+15   1    ->    1000000000000001

+ddfma3346 fma  1  1E+16   1    ->   1.000000000000000E+16  Inexact Rounded

+ddfma3347 fma  1  1E+20   1    ->   1.000000000000000E+20  Inexact Rounded

+ddfma3348 fma  1  1E+3    7    ->         1007

+ddfma3349 fma  1  1E+15   7    ->    1000000000000007

+ddfma3350 fma  1  1E+16   7    ->   1.000000000000001E+16  Inexact Rounded

+ddfma3351 fma  1  1E+20   7    ->   1.000000000000000E+20  Inexact Rounded

+

+-- tryzeros cases

+rounding:    half_up

+ddfma3360  fma  1  0E+50 10000E+1  -> 1.0000E+5

+ddfma3361  fma  1  0E-50 10000E+1  -> 100000.0000000000 Rounded

+ddfma3362  fma  1  10000E+1 0E-50  -> 100000.0000000000 Rounded

+ddfma3363  fma  1  10000E+1 10000E-50  -> 100000.0000000000 Rounded Inexact

+ddfma3364  fma  1  9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369

+

+-- a curiosity from JSR 13 testing

+rounding:    half_down

+ddfma3370 fma  1   999999999999999 815 -> 1000000000000814

+ddfma3371 fma  1  9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact

+rounding:    half_up

+ddfma3372 fma  1   999999999999999 815 -> 1000000000000814

+ddfma3373 fma  1  9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact

+rounding:    half_even

+ddfma3374 fma  1   999999999999999 815 -> 1000000000000814

+ddfma3375 fma  1  9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact

+

+-- ulp replacement tests

+ddfma3400 fma  1    1   77e-14      ->  1.00000000000077

+ddfma3401 fma  1    1   77e-15      ->  1.000000000000077

+ddfma3402 fma  1    1   77e-16      ->  1.000000000000008 Inexact Rounded

+ddfma3403 fma  1    1   77e-17      ->  1.000000000000001 Inexact Rounded

+ddfma3404 fma  1    1   77e-18      ->  1.000000000000000 Inexact Rounded

+ddfma3405 fma  1    1   77e-19      ->  1.000000000000000 Inexact Rounded

+ddfma3406 fma  1    1   77e-299     ->  1.000000000000000 Inexact Rounded

+

+ddfma3410 fma  1   10   77e-14      ->  10.00000000000077

+ddfma3411 fma  1   10   77e-15      ->  10.00000000000008 Inexact Rounded

+ddfma3412 fma  1   10   77e-16      ->  10.00000000000001 Inexact Rounded

+ddfma3413 fma  1   10   77e-17      ->  10.00000000000000 Inexact Rounded

+ddfma3414 fma  1   10   77e-18      ->  10.00000000000000 Inexact Rounded

+ddfma3415 fma  1   10   77e-19      ->  10.00000000000000 Inexact Rounded

+ddfma3416 fma  1   10   77e-299     ->  10.00000000000000 Inexact Rounded

+

+ddfma3420 fma  1   77e-14       1   ->  1.00000000000077

+ddfma3421 fma  1   77e-15       1   ->  1.000000000000077

+ddfma3422 fma  1   77e-16       1   ->  1.000000000000008 Inexact Rounded

+ddfma3423 fma  1   77e-17       1   ->  1.000000000000001 Inexact Rounded

+ddfma3424 fma  1   77e-18       1   ->  1.000000000000000 Inexact Rounded

+ddfma3425 fma  1   77e-19       1   ->  1.000000000000000 Inexact Rounded

+ddfma3426 fma  1   77e-299      1   ->  1.000000000000000 Inexact Rounded

+

+ddfma3430 fma  1   77e-14      10   ->  10.00000000000077

+ddfma3431 fma  1   77e-15      10   ->  10.00000000000008 Inexact Rounded

+ddfma3432 fma  1   77e-16      10   ->  10.00000000000001 Inexact Rounded

+ddfma3433 fma  1   77e-17      10   ->  10.00000000000000 Inexact Rounded

+ddfma3434 fma  1   77e-18      10   ->  10.00000000000000 Inexact Rounded

+ddfma3435 fma  1   77e-19      10   ->  10.00000000000000 Inexact Rounded

+ddfma3436 fma  1   77e-299     10   ->  10.00000000000000 Inexact Rounded

+

+-- negative ulps

+ddfma36440 fma  1    1   -77e-14      ->  0.99999999999923

+ddfma36441 fma  1    1   -77e-15      ->  0.999999999999923

+ddfma36442 fma  1    1   -77e-16      ->  0.9999999999999923

+ddfma36443 fma  1    1   -77e-17      ->  0.9999999999999992 Inexact Rounded

+ddfma36444 fma  1    1   -77e-18      ->  0.9999999999999999 Inexact Rounded

+ddfma36445 fma  1    1   -77e-19      ->  1.000000000000000 Inexact Rounded

+ddfma36446 fma  1    1   -77e-99      ->  1.000000000000000 Inexact Rounded

+

+ddfma36450 fma  1   10   -77e-14      ->   9.99999999999923

+ddfma36451 fma  1   10   -77e-15      ->   9.999999999999923

+ddfma36452 fma  1   10   -77e-16      ->   9.999999999999992 Inexact Rounded

+ddfma36453 fma  1   10   -77e-17      ->   9.999999999999999 Inexact Rounded

+ddfma36454 fma  1   10   -77e-18      ->  10.00000000000000 Inexact Rounded

+ddfma36455 fma  1   10   -77e-19      ->  10.00000000000000 Inexact Rounded

+ddfma36456 fma  1   10   -77e-99      ->  10.00000000000000 Inexact Rounded

+

+ddfma36460 fma  1   -77e-14       1   ->  0.99999999999923

+ddfma36461 fma  1   -77e-15       1   ->  0.999999999999923

+ddfma36462 fma  1   -77e-16       1   ->  0.9999999999999923

+ddfma36463 fma  1   -77e-17       1   ->  0.9999999999999992 Inexact Rounded

+ddfma36464 fma  1   -77e-18       1   ->  0.9999999999999999 Inexact Rounded

+ddfma36465 fma  1   -77e-19       1   ->  1.000000000000000 Inexact Rounded

+ddfma36466 fma  1   -77e-99       1   ->  1.000000000000000 Inexact Rounded

+

+ddfma36470 fma  1   -77e-14      10   ->   9.99999999999923

+ddfma36471 fma  1   -77e-15      10   ->   9.999999999999923

+ddfma36472 fma  1   -77e-16      10   ->   9.999999999999992 Inexact Rounded

+ddfma36473 fma  1   -77e-17      10   ->   9.999999999999999 Inexact Rounded

+ddfma36474 fma  1   -77e-18      10   ->  10.00000000000000 Inexact Rounded

+ddfma36475 fma  1   -77e-19      10   ->  10.00000000000000 Inexact Rounded

+ddfma36476 fma  1   -77e-99      10   ->  10.00000000000000 Inexact Rounded

+

+-- negative ulps

+ddfma36480 fma  1   -1    77e-14      ->  -0.99999999999923

+ddfma36481 fma  1   -1    77e-15      ->  -0.999999999999923

+ddfma36482 fma  1   -1    77e-16      ->  -0.9999999999999923

+ddfma36483 fma  1   -1    77e-17      ->  -0.9999999999999992 Inexact Rounded

+ddfma36484 fma  1   -1    77e-18      ->  -0.9999999999999999 Inexact Rounded

+ddfma36485 fma  1   -1    77e-19      ->  -1.000000000000000 Inexact Rounded

+ddfma36486 fma  1   -1    77e-99      ->  -1.000000000000000 Inexact Rounded

+

+ddfma36490 fma  1  -10    77e-14      ->   -9.99999999999923

+ddfma36491 fma  1  -10    77e-15      ->   -9.999999999999923

+ddfma36492 fma  1  -10    77e-16      ->   -9.999999999999992 Inexact Rounded

+ddfma36493 fma  1  -10    77e-17      ->   -9.999999999999999 Inexact Rounded

+ddfma36494 fma  1  -10    77e-18      ->  -10.00000000000000 Inexact Rounded

+ddfma36495 fma  1  -10    77e-19      ->  -10.00000000000000 Inexact Rounded

+ddfma36496 fma  1  -10    77e-99      ->  -10.00000000000000 Inexact Rounded

+

+ddfma36500 fma  1    77e-14      -1   ->  -0.99999999999923

+ddfma36501 fma  1    77e-15      -1   ->  -0.999999999999923

+ddfma36502 fma  1    77e-16      -1   ->  -0.9999999999999923

+ddfma36503 fma  1    77e-17      -1   ->  -0.9999999999999992 Inexact Rounded

+ddfma36504 fma  1    77e-18      -1   ->  -0.9999999999999999 Inexact Rounded

+ddfma36505 fma  1    77e-19      -1   ->  -1.000000000000000 Inexact Rounded

+ddfma36506 fma  1    77e-99      -1   ->  -1.000000000000000 Inexact Rounded

+

+ddfma36510 fma  1    77e-14      -10  ->   -9.99999999999923

+ddfma36511 fma  1    77e-15      -10  ->   -9.999999999999923

+ddfma36512 fma  1    77e-16      -10  ->   -9.999999999999992 Inexact Rounded

+ddfma36513 fma  1    77e-17      -10  ->   -9.999999999999999 Inexact Rounded

+ddfma36514 fma  1    77e-18      -10  ->  -10.00000000000000 Inexact Rounded

+ddfma36515 fma  1    77e-19      -10  ->  -10.00000000000000 Inexact Rounded

+ddfma36516 fma  1    77e-99      -10  ->  -10.00000000000000 Inexact Rounded

+

+-- and a couple more with longer RHS

+ddfma36520 fma  1    1   -7777e-16      ->  0.9999999999992223

+ddfma36521 fma  1    1   -7777e-17      ->  0.9999999999999222 Inexact Rounded

+ddfma36522 fma  1    1   -7777e-18      ->  0.9999999999999922 Inexact Rounded

+ddfma36523 fma  1    1   -7777e-19      ->  0.9999999999999992 Inexact Rounded

+ddfma36524 fma  1    1   -7777e-20      ->  0.9999999999999999 Inexact Rounded

+ddfma36525 fma  1    1   -7777e-21      ->  1.000000000000000 Inexact Rounded

+ddfma36526 fma  1    1   -7777e-22      ->  1.000000000000000 Inexact Rounded

+

+

+-- and some more residue effects and different roundings

+rounding: half_up

+ddfma36540 fma  1  '6543210123456789' 0             -> '6543210123456789'

+ddfma36541 fma  1  '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+ddfma36542 fma  1  '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+ddfma36543 fma  1  '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+ddfma36544 fma  1  '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+ddfma36545 fma  1  '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+ddfma36546 fma  1  '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+ddfma36547 fma  1  '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded

+ddfma36548 fma  1  '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded

+ddfma36549 fma  1  '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded

+ddfma36550 fma  1  '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded

+ddfma36551 fma  1  '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded

+ddfma36552 fma  1  '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded

+ddfma36553 fma  1  '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded

+ddfma36554 fma  1  '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded

+ddfma36555 fma  1  '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded

+ddfma36556 fma  1  '6543210123456789' 1             -> '6543210123456790'

+ddfma36557 fma  1  '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded

+ddfma36558 fma  1  '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+ddfma36559 fma  1  '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+

+rounding: half_even

+ddfma36560 fma  1  '6543210123456789' 0             -> '6543210123456789'

+ddfma36561 fma  1  '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+ddfma36562 fma  1  '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+ddfma36563 fma  1  '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+ddfma36564 fma  1  '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+ddfma36565 fma  1  '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+ddfma36566 fma  1  '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+ddfma36567 fma  1  '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded

+ddfma36568 fma  1  '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded

+ddfma36569 fma  1  '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded

+ddfma36570 fma  1  '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded

+ddfma36571 fma  1  '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded

+ddfma36572 fma  1  '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded

+ddfma36573 fma  1  '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded

+ddfma36574 fma  1  '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded

+ddfma36575 fma  1  '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded

+ddfma36576 fma  1  '6543210123456789' 1             -> '6543210123456790'

+ddfma36577 fma  1  '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded

+ddfma36578 fma  1  '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+ddfma36579 fma  1  '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+

+-- critical few with even bottom digit...

+ddfma37540 fma  1  '6543210123456788' 0.499999999   -> '6543210123456788' Inexact Rounded

+ddfma37541 fma  1  '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded

+ddfma37542 fma  1  '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded

+

+rounding: down

+ddfma37550 fma  1  '6543210123456789' 0             -> '6543210123456789'

+ddfma37551 fma  1  '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+ddfma37552 fma  1  '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+ddfma37553 fma  1  '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+ddfma37554 fma  1  '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+ddfma37555 fma  1  '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+ddfma37556 fma  1  '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+ddfma37557 fma  1  '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded

+ddfma37558 fma  1  '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded

+ddfma37559 fma  1  '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded

+ddfma37560 fma  1  '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded

+ddfma37561 fma  1  '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded

+ddfma37562 fma  1  '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded

+ddfma37563 fma  1  '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded

+ddfma37564 fma  1  '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded

+ddfma37565 fma  1  '6543210123456789' 0.999999999   -> '6543210123456789' Inexact Rounded

+ddfma37566 fma  1  '6543210123456789' 1             -> '6543210123456790'

+ddfma37567 fma  1  '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded

+ddfma37568 fma  1  '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+ddfma37569 fma  1  '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+

+

+-- verify a query

+rounding:     down

+ddfma37661 fma  1  1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded

+ddfma37662 fma  1       0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded

+ddfma37663 fma  1  1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded

+ddfma37664 fma  1       0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded

+

+-- more zeros, etc.

+rounding: half_even

+

+ddfma37701 fma  1  5.00 1.00E-3 -> 5.00100

+ddfma37702 fma  1  00.00 0.000  -> 0.000

+ddfma37703 fma  1  00.00 0E-3   -> 0.000

+ddfma37704 fma  1  0E-3  00.00  -> 0.000

+

+ddfma37710 fma  1  0E+3  00.00  -> 0.00

+ddfma37711 fma  1  0E+3  00.0   -> 0.0

+ddfma37712 fma  1  0E+3  00.    -> 0

+ddfma37713 fma  1  0E+3  00.E+1 -> 0E+1

+ddfma37714 fma  1  0E+3  00.E+2 -> 0E+2

+ddfma37715 fma  1  0E+3  00.E+3 -> 0E+3

+ddfma37716 fma  1  0E+3  00.E+4 -> 0E+3

+ddfma37717 fma  1  0E+3  00.E+5 -> 0E+3

+ddfma37718 fma  1  0E+3  -00.0   -> 0.0

+ddfma37719 fma  1  0E+3  -00.    -> 0

+ddfma37731 fma  1  0E+3  -00.E+1 -> 0E+1

+

+ddfma37720 fma  1  00.00  0E+3  -> 0.00

+ddfma37721 fma  1  00.0   0E+3  -> 0.0

+ddfma37722 fma  1  00.    0E+3  -> 0

+ddfma37723 fma  1  00.E+1 0E+3  -> 0E+1

+ddfma37724 fma  1  00.E+2 0E+3  -> 0E+2

+ddfma37725 fma  1  00.E+3 0E+3  -> 0E+3

+ddfma37726 fma  1  00.E+4 0E+3  -> 0E+3

+ddfma37727 fma  1  00.E+5 0E+3  -> 0E+3

+ddfma37728 fma  1  -00.00 0E+3  -> 0.00

+ddfma37729 fma  1  -00.0  0E+3  -> 0.0

+ddfma37730 fma  1  -00.   0E+3  -> 0

+

+ddfma37732 fma  1   0     0     ->  0

+ddfma37733 fma  1   0    -0     ->  0

+ddfma37734 fma  1  -0     0     ->  0

+ddfma37735 fma  1  -0    -0     -> -0     -- IEEE 854 special case

+

+ddfma37736 fma  1   1    -1     ->  0

+ddfma37737 fma  1  -1    -1     -> -2

+ddfma37738 fma  1   1     1     ->  2

+ddfma37739 fma  1  -1     1     ->  0

+

+ddfma37741 fma  1   0    -1     -> -1

+ddfma37742 fma  1  -0    -1     -> -1

+ddfma37743 fma  1   0     1     ->  1

+ddfma37744 fma  1  -0     1     ->  1

+ddfma37745 fma  1  -1     0     -> -1

+ddfma37746 fma  1  -1    -0     -> -1

+ddfma37747 fma  1   1     0     ->  1

+ddfma37748 fma  1   1    -0     ->  1

+

+ddfma37751 fma  1   0.0  -1     -> -1.0

+ddfma37752 fma  1  -0.0  -1     -> -1.0

+ddfma37753 fma  1   0.0   1     ->  1.0

+ddfma37754 fma  1  -0.0   1     ->  1.0

+ddfma37755 fma  1  -1.0   0     -> -1.0

+ddfma37756 fma  1  -1.0  -0     -> -1.0

+ddfma37757 fma  1   1.0   0     ->  1.0

+ddfma37758 fma  1   1.0  -0     ->  1.0

+

+ddfma37761 fma  1   0    -1.0   -> -1.0

+ddfma37762 fma  1  -0    -1.0   -> -1.0

+ddfma37763 fma  1   0     1.0   ->  1.0

+ddfma37764 fma  1  -0     1.0   ->  1.0

+ddfma37765 fma  1  -1     0.0   -> -1.0

+ddfma37766 fma  1  -1    -0.0   -> -1.0

+ddfma37767 fma  1   1     0.0   ->  1.0

+ddfma37768 fma  1   1    -0.0   ->  1.0

+

+ddfma37771 fma  1   0.0  -1.0   -> -1.0

+ddfma37772 fma  1  -0.0  -1.0   -> -1.0

+ddfma37773 fma  1   0.0   1.0   ->  1.0

+ddfma37774 fma  1  -0.0   1.0   ->  1.0

+ddfma37775 fma  1  -1.0   0.0   -> -1.0

+ddfma37776 fma  1  -1.0  -0.0   -> -1.0

+ddfma37777 fma  1   1.0   0.0   ->  1.0

+ddfma37778 fma  1   1.0  -0.0   ->  1.0

+

+-- Specials

+ddfma37780 fma  1  -Inf  -Inf   -> -Infinity

+ddfma37781 fma  1  -Inf  -1000  -> -Infinity

+ddfma37782 fma  1  -Inf  -1     -> -Infinity

+ddfma37783 fma  1  -Inf  -0     -> -Infinity

+ddfma37784 fma  1  -Inf   0     -> -Infinity

+ddfma37785 fma  1  -Inf   1     -> -Infinity

+ddfma37786 fma  1  -Inf   1000  -> -Infinity

+ddfma37787 fma  1  -1000 -Inf   -> -Infinity

+ddfma37788 fma  1  -Inf  -Inf   -> -Infinity

+ddfma37789 fma  1  -1    -Inf   -> -Infinity

+ddfma37790 fma  1  -0    -Inf   -> -Infinity

+ddfma37791 fma  1   0    -Inf   -> -Infinity

+ddfma37792 fma  1   1    -Inf   -> -Infinity

+ddfma37793 fma  1   1000 -Inf   -> -Infinity

+ddfma37794 fma  1   Inf  -Inf   ->  NaN  Invalid_operation

+

+ddfma37800 fma  1   Inf  -Inf   ->  NaN  Invalid_operation

+ddfma37801 fma  1   Inf  -1000  ->  Infinity

+ddfma37802 fma  1   Inf  -1     ->  Infinity

+ddfma37803 fma  1   Inf  -0     ->  Infinity

+ddfma37804 fma  1   Inf   0     ->  Infinity

+ddfma37805 fma  1   Inf   1     ->  Infinity

+ddfma37806 fma  1   Inf   1000  ->  Infinity

+ddfma37807 fma  1   Inf   Inf   ->  Infinity

+ddfma37808 fma  1  -1000  Inf   ->  Infinity

+ddfma37809 fma  1  -Inf   Inf   ->  NaN  Invalid_operation

+ddfma37810 fma  1  -1     Inf   ->  Infinity

+ddfma37811 fma  1  -0     Inf   ->  Infinity

+ddfma37812 fma  1   0     Inf   ->  Infinity

+ddfma37813 fma  1   1     Inf   ->  Infinity

+ddfma37814 fma  1   1000  Inf   ->  Infinity

+ddfma37815 fma  1   Inf   Inf   ->  Infinity

+

+ddfma37821 fma  1   NaN -Inf    ->  NaN

+ddfma37822 fma  1   NaN -1000   ->  NaN

+ddfma37823 fma  1   NaN -1      ->  NaN

+ddfma37824 fma  1   NaN -0      ->  NaN

+ddfma37825 fma  1   NaN  0      ->  NaN

+ddfma37826 fma  1   NaN  1      ->  NaN

+ddfma37827 fma  1   NaN  1000   ->  NaN

+ddfma37828 fma  1   NaN  Inf    ->  NaN

+ddfma37829 fma  1   NaN  NaN    ->  NaN

+ddfma37830 fma  1  -Inf  NaN    ->  NaN

+ddfma37831 fma  1  -1000 NaN    ->  NaN

+ddfma37832 fma  1  -1    NaN    ->  NaN

+ddfma37833 fma  1  -0    NaN    ->  NaN

+ddfma37834 fma  1   0    NaN    ->  NaN

+ddfma37835 fma  1   1    NaN    ->  NaN

+ddfma37836 fma  1   1000 NaN    ->  NaN

+ddfma37837 fma  1   Inf  NaN    ->  NaN

+

+ddfma37841 fma  1   sNaN -Inf   ->  NaN  Invalid_operation

+ddfma37842 fma  1   sNaN -1000  ->  NaN  Invalid_operation

+ddfma37843 fma  1   sNaN -1     ->  NaN  Invalid_operation

+ddfma37844 fma  1   sNaN -0     ->  NaN  Invalid_operation

+ddfma37845 fma  1   sNaN  0     ->  NaN  Invalid_operation

+ddfma37846 fma  1   sNaN  1     ->  NaN  Invalid_operation

+ddfma37847 fma  1   sNaN  1000  ->  NaN  Invalid_operation

+ddfma37848 fma  1   sNaN  NaN   ->  NaN  Invalid_operation

+ddfma37849 fma  1   sNaN sNaN   ->  NaN  Invalid_operation

+ddfma37850 fma  1   NaN  sNaN   ->  NaN  Invalid_operation

+ddfma37851 fma  1  -Inf  sNaN   ->  NaN  Invalid_operation

+ddfma37852 fma  1  -1000 sNaN   ->  NaN  Invalid_operation

+ddfma37853 fma  1  -1    sNaN   ->  NaN  Invalid_operation

+ddfma37854 fma  1  -0    sNaN   ->  NaN  Invalid_operation

+ddfma37855 fma  1   0    sNaN   ->  NaN  Invalid_operation

+ddfma37856 fma  1   1    sNaN   ->  NaN  Invalid_operation

+ddfma37857 fma  1   1000 sNaN   ->  NaN  Invalid_operation

+ddfma37858 fma  1   Inf  sNaN   ->  NaN  Invalid_operation

+ddfma37859 fma  1   NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddfma37861 fma  1   NaN1   -Inf    ->  NaN1

+ddfma37862 fma  1  +NaN2   -1000   ->  NaN2

+ddfma37863 fma  1   NaN3    1000   ->  NaN3

+ddfma37864 fma  1   NaN4    Inf    ->  NaN4

+ddfma37865 fma  1   NaN5   +NaN6   ->  NaN5

+ddfma37866 fma  1  -Inf     NaN7   ->  NaN7

+ddfma37867 fma  1  -1000    NaN8   ->  NaN8

+ddfma37868 fma  1   1000    NaN9   ->  NaN9

+ddfma37869 fma  1   Inf    +NaN10  ->  NaN10

+ddfma37871 fma  1   sNaN11  -Inf   ->  NaN11  Invalid_operation

+ddfma37872 fma  1   sNaN12  -1000  ->  NaN12  Invalid_operation

+ddfma37873 fma  1   sNaN13   1000  ->  NaN13  Invalid_operation

+ddfma37874 fma  1   sNaN14   NaN17 ->  NaN14  Invalid_operation

+ddfma37875 fma  1   sNaN15  sNaN18 ->  NaN15  Invalid_operation

+ddfma37876 fma  1   NaN16   sNaN19 ->  NaN19  Invalid_operation

+ddfma37877 fma  1  -Inf    +sNaN20 ->  NaN20  Invalid_operation

+ddfma37878 fma  1  -1000    sNaN21 ->  NaN21  Invalid_operation

+ddfma37879 fma  1   1000    sNaN22 ->  NaN22  Invalid_operation

+ddfma37880 fma  1   Inf     sNaN23 ->  NaN23  Invalid_operation

+ddfma37881 fma  1  +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+ddfma37882 fma  1  -NaN26    NaN28 -> -NaN26

+ddfma37883 fma  1  -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+ddfma37884 fma  1   1000    -NaN30 -> -NaN30

+ddfma37885 fma  1   1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- Here we explore near the boundary of rounding a subnormal to Nmin

+ddfma37575 fma  1   1E-383 -1E-398 ->  9.99999999999999E-384  Subnormal

+ddfma37576 fma  1  -1E-383 +1E-398 -> -9.99999999999999E-384  Subnormal

+

+-- check overflow edge case

+--               1234567890123456

+ddfma37972 apply   9.999999999999999E+384         -> 9.999999999999999E+384

+ddfma37973 fma  1      9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded

+ddfma37974 fma  1       9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded

+ddfma37975 fma  1       9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded

+ddfma37976 fma  1       9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded

+ddfma37977 fma  1       9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded

+ddfma37978 fma  1       9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded

+ddfma37979 fma  1       9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded

+ddfma37980 fma  1       9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded

+ddfma37981 fma  1       9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded

+ddfma37982 fma  1       9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded

+ddfma37983 fma  1       9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded

+ddfma37984 fma  1       9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded

+

+ddfma37985 apply  -9.999999999999999E+384         -> -9.999999999999999E+384

+ddfma37986 fma  1     -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded

+ddfma37987 fma  1      -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded

+ddfma37988 fma  1      -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded

+ddfma37989 fma  1      -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded

+ddfma37990 fma  1      -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded

+ddfma37991 fma  1      -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded

+ddfma37992 fma  1      -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded

+ddfma37993 fma  1      -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded

+ddfma37994 fma  1      -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded

+ddfma37995 fma  1      -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded

+ddfma37996 fma  1      -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded

+ddfma37997 fma  1      -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded

+

+-- And for round down full and subnormal results

+rounding:     down

+ddfma371100 fma  1  1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact

+ddfma371101 fma  1  1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact

+ddfma371103 fma  1    +1 -1e-383    -> 0.9999999999999999  Rounded Inexact

+ddfma371104 fma  1  1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact

+ddfma371105 fma  1  1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact

+ddfma371106 fma  1  1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact

+ddfma371107 fma  1  1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact

+ddfma371108 fma  1  1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact

+ddfma371109 fma  1  1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact

+

+rounding:     ceiling

+ddfma371110 fma  1  -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact

+ddfma371111 fma  1  -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact

+ddfma371113 fma  1     -1 +1e-383   -> -0.9999999999999999  Rounded Inexact

+ddfma371114 fma  1  -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact

+ddfma371115 fma  1  -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact

+ddfma371116 fma  1  -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact

+ddfma371117 fma  1  -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact

+ddfma371118 fma  1  -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact

+ddfma371119 fma  1  -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact

+

+-- tests based on Gunnar Degnbol's edge case

+rounding:     half_even

+

+ddfma371300 fma  1  1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded

+ddfma371310 fma  1  1E16  -0.51                ->  9999999999999999      Inexact Rounded

+ddfma371311 fma  1  1E16  -0.501               ->  9999999999999999      Inexact Rounded

+ddfma371312 fma  1  1E16  -0.5001              ->  9999999999999999      Inexact Rounded

+ddfma371313 fma  1  1E16  -0.50001             ->  9999999999999999      Inexact Rounded

+ddfma371314 fma  1  1E16  -0.500001            ->  9999999999999999      Inexact Rounded

+ddfma371315 fma  1  1E16  -0.5000001           ->  9999999999999999      Inexact Rounded

+ddfma371316 fma  1  1E16  -0.50000001          ->  9999999999999999      Inexact Rounded

+ddfma371317 fma  1  1E16  -0.500000001         ->  9999999999999999      Inexact Rounded

+ddfma371318 fma  1  1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded

+ddfma371319 fma  1  1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded

+ddfma371320 fma  1  1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded

+ddfma371321 fma  1  1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded

+ddfma371322 fma  1  1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded

+ddfma371323 fma  1  1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded

+ddfma371324 fma  1  1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded

+ddfma371325 fma  1  1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded

+ddfma371326 fma  1  1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded

+ddfma371327 fma  1  1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded

+ddfma371328 fma  1  1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded

+ddfma371329 fma  1  1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded

+ddfma371330 fma  1  1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded

+ddfma371331 fma  1  1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded

+ddfma371332 fma  1  1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded

+ddfma371333 fma  1  1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded

+ddfma371334 fma  1  1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded

+ddfma371335 fma  1  1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded

+ddfma371336 fma  1  1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded

+ddfma371337 fma  1  1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded

+ddfma371338 fma  1  1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded

+ddfma371339 fma  1  1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded

+

+ddfma371340 fma  1  1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded

+ddfma371341 fma  1  1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded

+

+ddfma371349 fma  1  9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded

+ddfma371350 fma  1  9999999999999999 0.49                ->  9999999999999999      Inexact Rounded

+ddfma371351 fma  1  9999999999999999 0.499               ->  9999999999999999      Inexact Rounded

+ddfma371352 fma  1  9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded

+ddfma371353 fma  1  9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded

+ddfma371354 fma  1  9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded

+ddfma371355 fma  1  9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded

+ddfma371356 fma  1  9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded

+ddfma371357 fma  1  9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded

+ddfma371358 fma  1  9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded

+ddfma371359 fma  1  9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded

+ddfma371360 fma  1  9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded

+ddfma371361 fma  1  9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded

+ddfma371362 fma  1  9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded

+ddfma371363 fma  1  9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded

+ddfma371364 fma  1  9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded

+ddfma371365 fma  1  9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded

+ddfma371367 fma  1  9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded

+ddfma371368 fma  1  9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded

+ddfma371369 fma  1  9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded

+ddfma371370 fma  1  9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded

+ddfma371371 fma  1  9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded

+ddfma371372 fma  1  9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded

+ddfma371373 fma  1  9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded

+ddfma371374 fma  1  9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded

+ddfma371375 fma  1  9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded

+ddfma371376 fma  1  9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded

+ddfma371377 fma  1  9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded

+ddfma371378 fma  1  9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded

+ddfma371379 fma  1  9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded

+ddfma371380 fma  1  9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded

+ddfma371381 fma  1  9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded

+ddfma371382 fma  1  9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded

+ddfma371383 fma  1  9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded

+ddfma371384 fma  1  9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded

+ddfma371385 fma  1  9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded

+ddfma371386 fma  1  9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded

+ddfma371387 fma  1  9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded

+ddfma371388 fma  1  9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded

+ddfma371389 fma  1  9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded

+ddfma371390 fma  1  9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded

+ddfma371391 fma  1  9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded

+ddfma371392 fma  1  9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded

+ddfma371393 fma  1  9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded

+ddfma371394 fma  1  9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded

+ddfma371395 fma  1  9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded

+ddfma371396 fma  1  9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded

+

+-- More GD edge cases, where difference between the unadjusted

+-- exponents is larger than the maximum precision and one side is 0

+ddfma371420 fma  1   0 1.123456789012345     -> 1.123456789012345

+ddfma371421 fma  1   0 1.123456789012345E-1  -> 0.1123456789012345

+ddfma371422 fma  1   0 1.123456789012345E-2  -> 0.01123456789012345

+ddfma371423 fma  1   0 1.123456789012345E-3  -> 0.001123456789012345

+ddfma371424 fma  1   0 1.123456789012345E-4  -> 0.0001123456789012345

+ddfma371425 fma  1   0 1.123456789012345E-5  -> 0.00001123456789012345

+ddfma371426 fma  1   0 1.123456789012345E-6  -> 0.000001123456789012345

+ddfma371427 fma  1   0 1.123456789012345E-7  -> 1.123456789012345E-7

+ddfma371428 fma  1   0 1.123456789012345E-8  -> 1.123456789012345E-8

+ddfma371429 fma  1   0 1.123456789012345E-9  -> 1.123456789012345E-9

+ddfma371430 fma  1   0 1.123456789012345E-10 -> 1.123456789012345E-10

+ddfma371431 fma  1   0 1.123456789012345E-11 -> 1.123456789012345E-11

+ddfma371432 fma  1   0 1.123456789012345E-12 -> 1.123456789012345E-12

+ddfma371433 fma  1   0 1.123456789012345E-13 -> 1.123456789012345E-13

+ddfma371434 fma  1   0 1.123456789012345E-14 -> 1.123456789012345E-14

+ddfma371435 fma  1   0 1.123456789012345E-15 -> 1.123456789012345E-15

+ddfma371436 fma  1   0 1.123456789012345E-16 -> 1.123456789012345E-16

+ddfma371437 fma  1   0 1.123456789012345E-17 -> 1.123456789012345E-17

+ddfma371438 fma  1   0 1.123456789012345E-18 -> 1.123456789012345E-18

+ddfma371439 fma  1   0 1.123456789012345E-19 -> 1.123456789012345E-19

+

+-- same, reversed 0

+ddfma371440 fma  1  1.123456789012345     0 -> 1.123456789012345

+ddfma371441 fma  1  1.123456789012345E-1  0 -> 0.1123456789012345

+ddfma371442 fma  1  1.123456789012345E-2  0 -> 0.01123456789012345

+ddfma371443 fma  1  1.123456789012345E-3  0 -> 0.001123456789012345

+ddfma371444 fma  1  1.123456789012345E-4  0 -> 0.0001123456789012345

+ddfma371445 fma  1  1.123456789012345E-5  0 -> 0.00001123456789012345

+ddfma371446 fma  1  1.123456789012345E-6  0 -> 0.000001123456789012345

+ddfma371447 fma  1  1.123456789012345E-7  0 -> 1.123456789012345E-7

+ddfma371448 fma  1  1.123456789012345E-8  0 -> 1.123456789012345E-8

+ddfma371449 fma  1  1.123456789012345E-9  0 -> 1.123456789012345E-9

+ddfma371450 fma  1  1.123456789012345E-10 0 -> 1.123456789012345E-10

+ddfma371451 fma  1  1.123456789012345E-11 0 -> 1.123456789012345E-11

+ddfma371452 fma  1  1.123456789012345E-12 0 -> 1.123456789012345E-12

+ddfma371453 fma  1  1.123456789012345E-13 0 -> 1.123456789012345E-13

+ddfma371454 fma  1  1.123456789012345E-14 0 -> 1.123456789012345E-14

+ddfma371455 fma  1  1.123456789012345E-15 0 -> 1.123456789012345E-15

+ddfma371456 fma  1  1.123456789012345E-16 0 -> 1.123456789012345E-16

+ddfma371457 fma  1  1.123456789012345E-17 0 -> 1.123456789012345E-17

+ddfma371458 fma  1  1.123456789012345E-18 0 -> 1.123456789012345E-18

+ddfma371459 fma  1  1.123456789012345E-19 0 -> 1.123456789012345E-19

+

+-- same, Es on the 0

+ddfma371460 fma  1  1.123456789012345  0E-0   -> 1.123456789012345

+ddfma371461 fma  1  1.123456789012345  0E-1   -> 1.123456789012345

+ddfma371462 fma  1  1.123456789012345  0E-2   -> 1.123456789012345

+ddfma371463 fma  1  1.123456789012345  0E-3   -> 1.123456789012345

+ddfma371464 fma  1  1.123456789012345  0E-4   -> 1.123456789012345

+ddfma371465 fma  1  1.123456789012345  0E-5   -> 1.123456789012345

+ddfma371466 fma  1  1.123456789012345  0E-6   -> 1.123456789012345

+ddfma371467 fma  1  1.123456789012345  0E-7   -> 1.123456789012345

+ddfma371468 fma  1  1.123456789012345  0E-8   -> 1.123456789012345

+ddfma371469 fma  1  1.123456789012345  0E-9   -> 1.123456789012345

+ddfma371470 fma  1  1.123456789012345  0E-10  -> 1.123456789012345

+ddfma371471 fma  1  1.123456789012345  0E-11  -> 1.123456789012345

+ddfma371472 fma  1  1.123456789012345  0E-12  -> 1.123456789012345

+ddfma371473 fma  1  1.123456789012345  0E-13  -> 1.123456789012345

+ddfma371474 fma  1  1.123456789012345  0E-14  -> 1.123456789012345

+ddfma371475 fma  1  1.123456789012345  0E-15  -> 1.123456789012345

+-- next four flag Rounded because the 0 extends the result

+ddfma371476 fma  1  1.123456789012345  0E-16  -> 1.123456789012345 Rounded

+ddfma371477 fma  1  1.123456789012345  0E-17  -> 1.123456789012345 Rounded

+ddfma371478 fma  1  1.123456789012345  0E-18  -> 1.123456789012345 Rounded

+ddfma371479 fma  1  1.123456789012345  0E-19  -> 1.123456789012345 Rounded

+

+-- sum of two opposite-sign operands is exactly 0 and floor => -0

+rounding:    half_up

+-- exact zeros from zeros

+ddfma371500 fma  1   0        0E-19  ->  0E-19

+ddfma371501 fma  1  -0        0E-19  ->  0E-19

+ddfma371502 fma  1   0       -0E-19  ->  0E-19

+ddfma371503 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddfma371511 fma  1  -11      11    ->  0

+ddfma371512 fma  1   11     -11    ->  0

+

+rounding:    half_down

+-- exact zeros from zeros

+ddfma371520 fma  1   0        0E-19  ->  0E-19

+ddfma371521 fma  1  -0        0E-19  ->  0E-19

+ddfma371522 fma  1   0       -0E-19  ->  0E-19

+ddfma371523 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddfma371531 fma  1  -11      11    ->  0

+ddfma371532 fma  1   11     -11    ->  0

+

+rounding:    half_even

+-- exact zeros from zeros

+ddfma371540 fma  1   0        0E-19  ->  0E-19

+ddfma371541 fma  1  -0        0E-19  ->  0E-19

+ddfma371542 fma  1   0       -0E-19  ->  0E-19

+ddfma371543 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddfma371551 fma  1  -11      11    ->  0

+ddfma371552 fma  1   11     -11    ->  0

+

+rounding:    up

+-- exact zeros from zeros

+ddfma371560 fma  1   0        0E-19  ->  0E-19

+ddfma371561 fma  1  -0        0E-19  ->  0E-19

+ddfma371562 fma  1   0       -0E-19  ->  0E-19

+ddfma371563 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddfma371571 fma  1  -11      11    ->  0

+ddfma371572 fma  1   11     -11    ->  0

+

+rounding:    down

+-- exact zeros from zeros

+ddfma371580 fma  1   0        0E-19  ->  0E-19

+ddfma371581 fma  1  -0        0E-19  ->  0E-19

+ddfma371582 fma  1   0       -0E-19  ->  0E-19

+ddfma371583 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddfma371591 fma  1  -11      11    ->  0

+ddfma371592 fma  1   11     -11    ->  0

+

+rounding:    ceiling

+-- exact zeros from zeros

+ddfma371600 fma  1   0        0E-19  ->  0E-19

+ddfma371601 fma  1  -0        0E-19  ->  0E-19

+ddfma371602 fma  1   0       -0E-19  ->  0E-19

+ddfma371603 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddfma371611 fma  1  -11      11    ->  0

+ddfma371612 fma  1   11     -11    ->  0

+

+-- and the extra-special ugly case; unusual minuses marked by -- *

+rounding:    floor

+-- exact zeros from zeros

+ddfma371620 fma  1   0        0E-19  ->  0E-19

+ddfma371621 fma  1  -0        0E-19  -> -0E-19           -- *

+ddfma371622 fma  1   0       -0E-19  -> -0E-19           -- *

+ddfma371623 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+ddfma371631 fma  1  -11      11    ->  -0                -- *

+ddfma371632 fma  1   11     -11    ->  -0                -- *

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+ddfma371701 fma  1  130E-2    120E-2    -> 2.50

+ddfma371702 fma  1  130E-2    12E-1     -> 2.50

+ddfma371703 fma  1  130E-2    1E0       -> 2.30

+ddfma371704 fma  1  1E2       1E4       -> 1.01E+4

+ddfma371705 fma  1  130E-2   -120E-2 -> 0.10

+ddfma371706 fma  1  130E-2   -12E-1  -> 0.10

+ddfma371707 fma  1  130E-2   -1E0    -> 0.30

+ddfma371708 fma  1  1E2      -1E4    -> -9.9E+3

+

+-- Gappy coefficients; check residue handling even with full coefficient gap

+rounding: half_even

+

+ddfma375001 fma  1  1234567890123456 1      -> 1234567890123457

+ddfma375002 fma  1  1234567890123456 0.6    -> 1234567890123457  Inexact Rounded

+ddfma375003 fma  1  1234567890123456 0.06   -> 1234567890123456  Inexact Rounded

+ddfma375004 fma  1  1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded

+ddfma375005 fma  1  1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded

+ddfma375006 fma  1  1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded

+ddfma375007 fma  1  1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded

+ddfma375008 fma  1  1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded

+ddfma375009 fma  1  1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded

+ddfma375010 fma  1  1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded

+ddfma375011 fma  1  1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded

+ddfma375012 fma  1  1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded

+ddfma375013 fma  1  1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded

+ddfma375014 fma  1  1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded

+ddfma375015 fma  1  1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded

+ddfma375016 fma  1  1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded

+ddfma375017 fma  1  1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded

+ddfma375018 fma  1  1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded

+ddfma375019 fma  1  1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded

+ddfma375020 fma  1  1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded

+ddfma375021 fma  1  1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded

+

+-- widening second argument at gap

+ddfma375030 fma  1  12345678 1                       -> 12345679

+ddfma375031 fma  1  12345678 0.1                     -> 12345678.1

+ddfma375032 fma  1  12345678 0.12                    -> 12345678.12

+ddfma375033 fma  1  12345678 0.123                   -> 12345678.123

+ddfma375034 fma  1  12345678 0.1234                  -> 12345678.1234

+ddfma375035 fma  1  12345678 0.12345                 -> 12345678.12345

+ddfma375036 fma  1  12345678 0.123456                -> 12345678.123456

+ddfma375037 fma  1  12345678 0.1234567               -> 12345678.1234567

+ddfma375038 fma  1  12345678 0.12345678              -> 12345678.12345678

+ddfma375039 fma  1  12345678 0.123456789             -> 12345678.12345679 Inexact Rounded

+ddfma375040 fma  1  12345678 0.123456785             -> 12345678.12345678 Inexact Rounded

+ddfma375041 fma  1  12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded

+ddfma375042 fma  1  12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded

+ddfma375043 fma  1  12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded

+ddfma375044 fma  1  12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded

+ddfma375045 fma  1  12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded

+ddfma375046 fma  1  12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded

+ddfma375047 fma  1  12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded

+ddfma375048 fma  1  12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded

+ddfma375049 fma  1  12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded

+--                               90123456

+rounding: half_even

+ddfma375050 fma  1  12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded

+ddfma375051 fma  1  12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded

+ddfma375052 fma  1  12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded

+ddfma375053 fma  1  12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded

+ddfma375054 fma  1  12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded

+ddfma375055 fma  1  12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded

+ddfma375056 fma  1  12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded

+ddfma375057 fma  1  12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded

+ddfma375060 fma  1  12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded

+ddfma375061 fma  1  12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded

+ddfma375062 fma  1  12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded

+ddfma375063 fma  1  12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded

+ddfma375064 fma  1  12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded

+ddfma375065 fma  1  12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded

+ddfma375066 fma  1  12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded

+ddfma375067 fma  1  12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded

+-- far-out residues (full coefficient gap is 16+15 digits)

+rounding: up

+ddfma375070 fma  1  12345678 1E-8                    -> 12345678.00000001

+ddfma375071 fma  1  12345678 1E-9                    -> 12345678.00000001 Inexact Rounded

+ddfma375072 fma  1  12345678 1E-10                   -> 12345678.00000001 Inexact Rounded

+ddfma375073 fma  1  12345678 1E-11                   -> 12345678.00000001 Inexact Rounded

+ddfma375074 fma  1  12345678 1E-12                   -> 12345678.00000001 Inexact Rounded

+ddfma375075 fma  1  12345678 1E-13                   -> 12345678.00000001 Inexact Rounded

+ddfma375076 fma  1  12345678 1E-14                   -> 12345678.00000001 Inexact Rounded

+ddfma375077 fma  1  12345678 1E-15                   -> 12345678.00000001 Inexact Rounded

+ddfma375078 fma  1  12345678 1E-16                   -> 12345678.00000001 Inexact Rounded

+ddfma375079 fma  1  12345678 1E-17                   -> 12345678.00000001 Inexact Rounded

+ddfma375080 fma  1  12345678 1E-18                   -> 12345678.00000001 Inexact Rounded

+ddfma375081 fma  1  12345678 1E-19                   -> 12345678.00000001 Inexact Rounded

+ddfma375082 fma  1  12345678 1E-20                   -> 12345678.00000001 Inexact Rounded

+ddfma375083 fma  1  12345678 1E-25                   -> 12345678.00000001 Inexact Rounded

+ddfma375084 fma  1  12345678 1E-30                   -> 12345678.00000001 Inexact Rounded

+ddfma375085 fma  1  12345678 1E-31                   -> 12345678.00000001 Inexact Rounded

+ddfma375086 fma  1  12345678 1E-32                   -> 12345678.00000001 Inexact Rounded

+ddfma375087 fma  1  12345678 1E-33                   -> 12345678.00000001 Inexact Rounded

+ddfma375088 fma  1  12345678 1E-34                   -> 12345678.00000001 Inexact Rounded

+ddfma375089 fma  1  12345678 1E-35                   -> 12345678.00000001 Inexact Rounded

+

+-- desctructive subtraction (from remainder tests)

+

+-- +++ some of these will be off-by-one remainder vs remainderNear

+

+ddfma4000  fma  -1234567890123454   1.000000000000001    1234567890123456  ->  0.765432109876546

+ddfma4001  fma  -1234567890123443    1.00000000000001    1234567890123456  ->  0.65432109876557

+ddfma4002  fma  -1234567890123332     1.0000000000001    1234567890123456  ->  0.5432109876668

+ddfma4003  fma   -308641972530863   4.000000000000001    1234567890123455  ->  2.691358027469137

+ddfma4004  fma   -308641972530863   4.000000000000001    1234567890123456  ->  3.691358027469137

+ddfma4005  fma   -246913578024696     4.9999999999999    1234567890123456  ->  0.6913578024696

+ddfma4006  fma   -246913578024691    4.99999999999999    1234567890123456  ->  3.46913578024691

+ddfma4007  fma   -246913578024691   4.999999999999999    1234567890123456  ->  1.246913578024691

+ddfma4008  fma   -246913578024691   5.000000000000001    1234567890123456  ->  0.753086421975309

+ddfma4009  fma   -246913578024690    5.00000000000001    1234567890123456  ->  3.53086421975310

+ddfma4010  fma   -246913578024686     5.0000000000001    1234567890123456  ->  1.3086421975314

+ddfma4011  fma  -1234567890123455   1.000000000000001    1234567890123456  ->  -0.234567890123455

+ddfma4012  fma  -1234567890123444    1.00000000000001    1234567890123456  ->  -0.34567890123444

+ddfma4013  fma  -1234567890123333     1.0000000000001    1234567890123456  ->  -0.4567890123333

+ddfma4014  fma   -308641972530864   4.000000000000001    1234567890123455  ->  -1.308641972530864

+ddfma4015  fma   -308641972530864   4.000000000000001    1234567890123456  ->  -0.308641972530864

+ddfma4016  fma   -246913578024696     4.9999999999999    1234567890123456  ->  0.6913578024696

+ddfma4017  fma   -246913578024692    4.99999999999999    1234567890123456  ->  -1.53086421975308

+ddfma4018  fma   -246913578024691   4.999999999999999    1234567890123456  ->  1.246913578024691

+ddfma4019  fma   -246913578024691   5.000000000000001    1234567890123456  ->  0.753086421975309

+ddfma4020  fma   -246913578024691    5.00000000000001    1234567890123456  ->  -1.46913578024691

+ddfma4021  fma   -246913578024686     5.0000000000001    1234567890123456  ->  1.3086421975314

+

+

+-- Null tests

+ddfma39990 fma  1  10  # -> NaN Invalid_operation

+ddfma39991 fma  1   # 10 -> NaN Invalid_operation

+

+

diff --git a/Lib/test/decimaltestdata/ddInvert.decTest b/Lib/test/decimaltestdata/ddInvert.decTest
new file mode 100644
index 0000000..b4ae744
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddInvert.decTest
@@ -0,0 +1,202 @@
+------------------------------------------------------------------------

+-- ddInvert.decTest -- digitwise logical INVERT for decDoubles        --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check (truth table)

+ddinv001 invert             0 -> 1111111111111111

+ddinv002 invert             1 -> 1111111111111110

+ddinv003 invert            10 -> 1111111111111101

+ddinv004 invert     111111111 -> 1111111000000000

+ddinv005 invert     000000000 -> 1111111111111111

+-- and at msd and msd-1

+ddinv007 invert 0000000000000000 ->   1111111111111111

+ddinv008 invert 1000000000000000 ->    111111111111111

+ddinv009 invert 0000000000000000 ->   1111111111111111

+ddinv010 invert 0100000000000000 ->   1011111111111111

+ddinv011 invert 0111111111111111 ->   1000000000000000

+ddinv012 invert 1111111111111111 ->                  0

+ddinv013 invert 0011111111111111 ->   1100000000000000

+ddinv014 invert 0111111111111111 ->   1000000000000000

+

+-- Various lengths

+--             123456789         1234567890123456

+ddinv021 invert 111111111     ->  1111111000000000

+ddinv022 invert 111111111111  ->  1111000000000000

+ddinv023 invert  11111111     ->  1111111100000000

+ddinv025 invert   1111111     ->  1111111110000000

+ddinv026 invert    111111     ->  1111111111000000

+ddinv027 invert     11111     ->  1111111111100000

+ddinv028 invert      1111     ->  1111111111110000

+ddinv029 invert       111     ->  1111111111111000

+ddinv031 invert        11     ->  1111111111111100

+ddinv032 invert         1     ->  1111111111111110

+ddinv033 invert 111111111111  ->  1111000000000000

+ddinv034 invert 11111111111   ->  1111100000000000

+ddinv035 invert 1111111111    ->  1111110000000000

+ddinv036 invert 111111111     ->  1111111000000000

+

+ddinv040 invert 011111111   ->  1111111100000000

+ddinv041 invert 101111111   ->  1111111010000000

+ddinv042 invert 110111111   ->  1111111001000000

+ddinv043 invert 111011111   ->  1111111000100000

+ddinv044 invert 111101111   ->  1111111000010000

+ddinv045 invert 111110111   ->  1111111000001000

+ddinv046 invert 111111011   ->  1111111000000100

+ddinv047 invert 111111101   ->  1111111000000010

+ddinv048 invert 111111110   ->  1111111000000001

+ddinv049 invert 011111011   ->  1111111100000100

+ddinv050 invert 101111101   ->  1111111010000010

+ddinv051 invert 110111110   ->  1111111001000001

+ddinv052 invert 111011101   ->  1111111000100010

+ddinv053 invert 111101011   ->  1111111000010100

+ddinv054 invert 111110111   ->  1111111000001000

+ddinv055 invert 111101011   ->  1111111000010100

+ddinv056 invert 111011101   ->  1111111000100010

+ddinv057 invert 110111110   ->  1111111001000001

+ddinv058 invert 101111101   ->  1111111010000010

+ddinv059 invert 011111011   ->  1111111100000100

+

+ddinv080 invert 1000000011111111   ->   111111100000000

+ddinv081 invert 0100000101111111   ->  1011111010000000

+ddinv082 invert 0010000110111111   ->  1101111001000000

+ddinv083 invert 0001000111011111   ->  1110111000100000

+ddinv084 invert 0000100111101111   ->  1111011000010000

+ddinv085 invert 0000010111110111   ->  1111101000001000

+ddinv086 invert 0000001111111011   ->  1111110000000100

+ddinv087 invert 0000010111111101   ->  1111101000000010

+ddinv088 invert 0000100111111110   ->  1111011000000001

+ddinv089 invert 0001000011111011   ->  1110111100000100

+ddinv090 invert 0010000101111101   ->  1101111010000010

+ddinv091 invert 0100000110111110   ->  1011111001000001

+ddinv092 invert 1000000111011101   ->   111111000100010

+ddinv093 invert 0100000111101011   ->  1011111000010100

+ddinv094 invert 0010000111110111   ->  1101111000001000

+ddinv095 invert 0001000111101011   ->  1110111000010100

+ddinv096 invert 0000100111011101   ->  1111011000100010

+ddinv097 invert 0000010110111110   ->  1111101001000001

+ddinv098 invert 0000001101111101   ->  1111110010000010

+ddinv099 invert 0000010011111011   ->  1111101100000100

+

+-- non-0/1 should not be accepted, nor should signs

+ddinv220 invert 111111112   ->  NaN Invalid_operation

+ddinv221 invert 333333333   ->  NaN Invalid_operation

+ddinv222 invert 555555555   ->  NaN Invalid_operation

+ddinv223 invert 777777777   ->  NaN Invalid_operation

+ddinv224 invert 999999999   ->  NaN Invalid_operation

+ddinv225 invert 222222222   ->  NaN Invalid_operation

+ddinv226 invert 444444444   ->  NaN Invalid_operation

+ddinv227 invert 666666666   ->  NaN Invalid_operation

+ddinv228 invert 888888888   ->  NaN Invalid_operation

+ddinv229 invert 999999999   ->  NaN Invalid_operation

+ddinv230 invert 999999999   ->  NaN Invalid_operation

+ddinv231 invert 999999999   ->  NaN Invalid_operation

+ddinv232 invert 999999999   ->  NaN Invalid_operation

+-- a few randoms

+ddinv240 invert  567468689  ->  NaN Invalid_operation

+ddinv241 invert  567367689  ->  NaN Invalid_operation

+ddinv242 invert -631917772  ->  NaN Invalid_operation

+ddinv243 invert -756253257  ->  NaN Invalid_operation

+ddinv244 invert  835590149  ->  NaN Invalid_operation

+-- test MSD

+ddinv250 invert  2000000000000000  ->  NaN Invalid_operation

+ddinv251 invert  3000000000000000  ->  NaN Invalid_operation

+ddinv252 invert  4000000000000000  ->  NaN Invalid_operation

+ddinv253 invert  5000000000000000  ->  NaN Invalid_operation

+ddinv254 invert  6000000000000000  ->  NaN Invalid_operation

+ddinv255 invert  7000000000000000  ->  NaN Invalid_operation

+ddinv256 invert  8000000000000000  ->  NaN Invalid_operation

+ddinv257 invert  9000000000000000  ->  NaN Invalid_operation

+-- test MSD-1

+ddinv270 invert  0200001000000000  ->  NaN Invalid_operation

+ddinv271 invert  0300000100000000  ->  NaN Invalid_operation

+ddinv272 invert  0400000010000000  ->  NaN Invalid_operation

+ddinv273 invert  0500000001000000  ->  NaN Invalid_operation

+ddinv274 invert  1600000000100000  ->  NaN Invalid_operation

+ddinv275 invert  1700000000010000  ->  NaN Invalid_operation

+ddinv276 invert  1800000000001000  ->  NaN Invalid_operation

+ddinv277 invert  1900000000000100  ->  NaN Invalid_operation

+-- test LSD

+ddinv280 invert  0010000000000002  ->  NaN Invalid_operation

+ddinv281 invert  0001000000000003  ->  NaN Invalid_operation

+ddinv282 invert  0000100000000004  ->  NaN Invalid_operation

+ddinv283 invert  0000010000000005  ->  NaN Invalid_operation

+ddinv284 invert  1000001000000006  ->  NaN Invalid_operation

+ddinv285 invert  1000000100000007  ->  NaN Invalid_operation

+ddinv286 invert  1000000010000008  ->  NaN Invalid_operation

+ddinv287 invert  1000000001000009  ->  NaN Invalid_operation

+-- test Middie

+ddinv288 invert  0010000020000000  ->  NaN Invalid_operation

+ddinv289 invert  0001000030000001  ->  NaN Invalid_operation

+ddinv290 invert  0000100040000010  ->  NaN Invalid_operation

+ddinv291 invert  0000010050000100  ->  NaN Invalid_operation

+ddinv292 invert  1000001060001000  ->  NaN Invalid_operation

+ddinv293 invert  1000000170010000  ->  NaN Invalid_operation

+ddinv294 invert  1000000080100000  ->  NaN Invalid_operation

+ddinv295 invert  1000000091000000  ->  NaN Invalid_operation

+-- sign

+ddinv296 invert -1000000001000000  ->  NaN Invalid_operation

+ddinv299 invert  1000000001000000  ->  111111110111111

+

+

+-- Nmax, Nmin, Ntiny-like

+ddinv341 invert  9.99999999E+299   -> NaN Invalid_operation

+ddinv342 invert  1E-299            -> NaN Invalid_operation

+ddinv343 invert  1.00000000E-299   -> NaN Invalid_operation

+ddinv344 invert  1E-207            -> NaN Invalid_operation

+ddinv345 invert  -1E-207           -> NaN Invalid_operation

+ddinv346 invert  -1.00000000E-299  -> NaN Invalid_operation

+ddinv347 invert  -1E-299           -> NaN Invalid_operation

+ddinv348 invert  -9.99999999E+299  -> NaN Invalid_operation

+

+-- A few other non-integers

+ddinv361 invert  1.0               -> NaN Invalid_operation

+ddinv362 invert  1E+1              -> NaN Invalid_operation

+ddinv363 invert  0.0               -> NaN Invalid_operation

+ddinv364 invert  0E+1              -> NaN Invalid_operation

+ddinv365 invert  9.9               -> NaN Invalid_operation

+ddinv366 invert  9E+1              -> NaN Invalid_operation

+

+-- All Specials are in error

+ddinv788 invert -Inf     -> NaN  Invalid_operation

+ddinv794 invert  Inf     -> NaN  Invalid_operation

+ddinv821 invert  NaN     -> NaN  Invalid_operation

+ddinv841 invert  sNaN    -> NaN  Invalid_operation

+-- propagating NaNs

+ddinv861 invert  NaN1    -> NaN Invalid_operation

+ddinv862 invert +NaN2    -> NaN Invalid_operation

+ddinv863 invert  NaN3    -> NaN Invalid_operation

+ddinv864 invert  NaN4    -> NaN Invalid_operation

+ddinv865 invert  NaN5    -> NaN Invalid_operation

+ddinv871 invert  sNaN11  -> NaN Invalid_operation

+ddinv872 invert  sNaN12  -> NaN Invalid_operation

+ddinv873 invert  sNaN13  -> NaN Invalid_operation

+ddinv874 invert  sNaN14  -> NaN Invalid_operation

+ddinv875 invert  sNaN15  -> NaN Invalid_operation

+ddinv876 invert  NaN16   -> NaN Invalid_operation

+ddinv881 invert +NaN25   -> NaN Invalid_operation

+ddinv882 invert -NaN26   -> NaN Invalid_operation

+ddinv883 invert -sNaN27  -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddLogB.decTest b/Lib/test/decimaltestdata/ddLogB.decTest
new file mode 100644
index 0000000..99a3843
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddLogB.decTest
@@ -0,0 +1,159 @@
+------------------------------------------------------------------------

+-- ddLogB.decTest -- integral 754r adjusted exponent, for decDoubles  --

+-- Copyright (c) IBM Corporation, 2005, 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.57

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- basics

+ddlogb000 logb  0                 -> -Infinity  Division_by_zero

+ddlogb001 logb  1E-398            -> -398

+ddlogb002 logb  1E-383            -> -383

+ddlogb003 logb  0.001             -> -3

+ddlogb004 logb  0.03              -> -2

+ddlogb005 logb  1                 ->  0

+ddlogb006 logb  2                 ->  0

+ddlogb007 logb  2.5               ->  0

+ddlogb008 logb  2.500             ->  0

+ddlogb009 logb  10                ->  1

+ddlogb010 logb  70                ->  1

+ddlogb011 logb  100               ->  2

+ddlogb012 logb  333               ->  2

+ddlogb013 logb  9E+384            ->  384

+ddlogb014 logb +Infinity          ->  Infinity

+

+-- negatives appear to be treated as positives

+ddlogb021 logb -0                 -> -Infinity  Division_by_zero

+ddlogb022 logb -1E-398            -> -398

+ddlogb023 logb -9E-383            -> -383

+ddlogb024 logb -0.001             -> -3

+ddlogb025 logb -1                 ->  0

+ddlogb026 logb -2                 ->  0

+ddlogb027 logb -10                ->  1

+ddlogb028 logb -70                ->  1

+ddlogb029 logb -100               ->  2

+ddlogb030 logb -9E+384            ->  384

+ddlogb031 logb -Infinity          ->  Infinity

+

+-- zeros

+ddlogb111 logb          0   -> -Infinity  Division_by_zero

+ddlogb112 logb         -0   -> -Infinity  Division_by_zero

+ddlogb113 logb       0E+4   -> -Infinity  Division_by_zero

+ddlogb114 logb      -0E+4   -> -Infinity  Division_by_zero

+ddlogb115 logb     0.0000   -> -Infinity  Division_by_zero

+ddlogb116 logb    -0.0000   -> -Infinity  Division_by_zero

+ddlogb117 logb      0E-141  -> -Infinity  Division_by_zero

+ddlogb118 logb     -0E-141  -> -Infinity  Division_by_zero

+

+-- full coefficients, alternating bits

+ddlogb121 logb   268268268        -> 8

+ddlogb122 logb  -268268268        -> 8

+ddlogb123 logb   134134134        -> 8

+ddlogb124 logb  -134134134        -> 8

+

+-- Nmax, Nmin, Ntiny

+ddlogb131 logb  9.999999999999999E+384   ->  384

+ddlogb132 logb  1E-383                   -> -383

+ddlogb133 logb  1.000000000000000E-383   -> -383

+ddlogb134 logb  1E-398                   -> -398

+

+ddlogb135 logb  -1E-398                  -> -398

+ddlogb136 logb  -1.000000000000000E-383  -> -383

+ddlogb137 logb  -1E-383                  -> -383

+ddlogb138 logb  -9.999999999999999E+384  ->  384

+

+-- ones

+ddlogb0061 logb  1                 ->   0

+ddlogb0062 logb  1.0               ->   0

+ddlogb0063 logb  1.000000000000000 ->   0

+

+-- notable cases -- exact powers of 10

+ddlogb1100 logb 1             -> 0

+ddlogb1101 logb 10            -> 1

+ddlogb1102 logb 100           -> 2

+ddlogb1103 logb 1000          -> 3

+ddlogb1104 logb 10000         -> 4

+ddlogb1105 logb 100000        -> 5

+ddlogb1106 logb 1000000       -> 6

+ddlogb1107 logb 10000000      -> 7

+ddlogb1108 logb 100000000     -> 8

+ddlogb1109 logb 1000000000    -> 9

+ddlogb1110 logb 10000000000   -> 10

+ddlogb1111 logb 100000000000  -> 11

+ddlogb1112 logb 1000000000000 -> 12

+ddlogb1113 logb 0.00000000001 -> -11

+ddlogb1114 logb 0.0000000001 -> -10

+ddlogb1115 logb 0.000000001 -> -9

+ddlogb1116 logb 0.00000001 -> -8

+ddlogb1117 logb 0.0000001 -> -7

+ddlogb1118 logb 0.000001 -> -6

+ddlogb1119 logb 0.00001 -> -5

+ddlogb1120 logb 0.0001 -> -4

+ddlogb1121 logb 0.001 -> -3

+ddlogb1122 logb 0.01 -> -2

+ddlogb1123 logb 0.1 -> -1

+ddlogb1124 logb 1E-99  -> -99

+ddlogb1125 logb 1E-100 -> -100

+ddlogb1127 logb 1E-299 -> -299

+ddlogb1126 logb 1E-383 -> -383

+

+-- suggestions from Ilan Nehama

+ddlogb1400 logb 10E-3    -> -2

+ddlogb1401 logb 10E-2    -> -1

+ddlogb1402 logb 100E-2   ->  0

+ddlogb1403 logb 1000E-2  ->  1

+ddlogb1404 logb 10000E-2 ->  2

+ddlogb1405 logb 10E-1    ->  0

+ddlogb1406 logb 100E-1   ->  1

+ddlogb1407 logb 1000E-1  ->  2

+ddlogb1408 logb 10000E-1 ->  3

+ddlogb1409 logb 10E0     ->  1

+ddlogb1410 logb 100E0    ->  2

+ddlogb1411 logb 1000E0   ->  3

+ddlogb1412 logb 10000E0  ->  4

+ddlogb1413 logb 10E1     ->  2

+ddlogb1414 logb 100E1    ->  3

+ddlogb1415 logb 1000E1   ->  4

+ddlogb1416 logb 10000E1  ->  5

+ddlogb1417 logb 10E2     ->  3

+ddlogb1418 logb 100E2    ->  4

+ddlogb1419 logb 1000E2   ->  5

+ddlogb1420 logb 10000E2  ->  6

+

+-- special values

+ddlogb820  logb   Infinity ->   Infinity

+ddlogb821  logb   0        ->  -Infinity Division_by_zero

+ddlogb822  logb   NaN      ->   NaN

+ddlogb823  logb   sNaN     ->   NaN     Invalid_operation

+-- propagating NaNs

+ddlogb824  logb   sNaN123  ->   NaN123  Invalid_operation

+ddlogb825  logb   -sNaN321 ->  -NaN321  Invalid_operation

+ddlogb826  logb   NaN456   ->   NaN456

+ddlogb827  logb   -NaN654  ->  -NaN654

+ddlogb828  logb   NaN1     ->   NaN1

+

+-- Null test

+ddlogb900  logb #   -> NaN Invalid_operation

+

+

diff --git a/Lib/test/decimaltestdata/ddMax.decTest b/Lib/test/decimaltestdata/ddMax.decTest
new file mode 100644
index 0000000..515f79a
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddMax.decTest
@@ -0,0 +1,322 @@
+------------------------------------------------------------------------

+-- ddMax.decTest -- decDouble maxnum                                  --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddmax001 max  -2  -2  -> -2

+ddmax002 max  -2  -1  -> -1

+ddmax003 max  -2   0  ->  0

+ddmax004 max  -2   1  ->  1

+ddmax005 max  -2   2  ->  2

+ddmax006 max  -1  -2  -> -1

+ddmax007 max  -1  -1  -> -1

+ddmax008 max  -1   0  ->  0

+ddmax009 max  -1   1  ->  1

+ddmax010 max  -1   2  ->  2

+ddmax011 max   0  -2  ->  0

+ddmax012 max   0  -1  ->  0

+ddmax013 max   0   0  ->  0

+ddmax014 max   0   1  ->  1

+ddmax015 max   0   2  ->  2

+ddmax016 max   1  -2  ->  1

+ddmax017 max   1  -1  ->  1

+ddmax018 max   1   0  ->  1

+ddmax019 max   1   1  ->  1

+ddmax020 max   1   2  ->  2

+ddmax021 max   2  -2  ->  2

+ddmax022 max   2  -1  ->  2

+ddmax023 max   2   0  ->  2

+ddmax025 max   2   1  ->  2

+ddmax026 max   2   2  ->  2

+

+-- extended zeros

+ddmax030 max   0     0   ->  0

+ddmax031 max   0    -0   ->  0

+ddmax032 max   0    -0.0 ->  0

+ddmax033 max   0     0.0 ->  0

+ddmax034 max  -0     0   ->  0    -- note: -0 = 0, but 0 chosen

+ddmax035 max  -0    -0   -> -0

+ddmax036 max  -0    -0.0 -> -0.0

+ddmax037 max  -0     0.0 ->  0.0

+ddmax038 max   0.0   0   ->  0

+ddmax039 max   0.0  -0   ->  0.0

+ddmax040 max   0.0  -0.0 ->  0.0

+ddmax041 max   0.0   0.0 ->  0.0

+ddmax042 max  -0.0   0   ->  0

+ddmax043 max  -0.0  -0   -> -0.0

+ddmax044 max  -0.0  -0.0 -> -0.0

+ddmax045 max  -0.0   0.0 ->  0.0

+

+ddmax050 max  -0E1   0E1 ->  0E+1

+ddmax051 max  -0E2   0E2 ->  0E+2

+ddmax052 max  -0E2   0E1 ->  0E+1

+ddmax053 max  -0E1   0E2 ->  0E+2

+ddmax054 max   0E1  -0E1 ->  0E+1

+ddmax055 max   0E2  -0E2 ->  0E+2

+ddmax056 max   0E2  -0E1 ->  0E+2

+ddmax057 max   0E1  -0E2 ->  0E+1

+

+ddmax058 max   0E1   0E1 ->  0E+1

+ddmax059 max   0E2   0E2 ->  0E+2

+ddmax060 max   0E2   0E1 ->  0E+2

+ddmax061 max   0E1   0E2 ->  0E+2

+ddmax062 max  -0E1  -0E1 -> -0E+1

+ddmax063 max  -0E2  -0E2 -> -0E+2

+ddmax064 max  -0E2  -0E1 -> -0E+1

+ddmax065 max  -0E1  -0E2 -> -0E+1

+

+-- Specials

+ddmax090 max  Inf  -Inf   ->  Infinity

+ddmax091 max  Inf  -1000  ->  Infinity

+ddmax092 max  Inf  -1     ->  Infinity

+ddmax093 max  Inf  -0     ->  Infinity

+ddmax094 max  Inf   0     ->  Infinity

+ddmax095 max  Inf   1     ->  Infinity

+ddmax096 max  Inf   1000  ->  Infinity

+ddmax097 max  Inf   Inf   ->  Infinity

+ddmax098 max -1000  Inf   ->  Infinity

+ddmax099 max -Inf   Inf   ->  Infinity

+ddmax100 max -1     Inf   ->  Infinity

+ddmax101 max -0     Inf   ->  Infinity

+ddmax102 max  0     Inf   ->  Infinity

+ddmax103 max  1     Inf   ->  Infinity

+ddmax104 max  1000  Inf   ->  Infinity

+ddmax105 max  Inf   Inf   ->  Infinity

+

+ddmax120 max -Inf  -Inf   -> -Infinity

+ddmax121 max -Inf  -1000  -> -1000

+ddmax122 max -Inf  -1     -> -1

+ddmax123 max -Inf  -0     -> -0

+ddmax124 max -Inf   0     ->  0

+ddmax125 max -Inf   1     ->  1

+ddmax126 max -Inf   1000  ->  1000

+ddmax127 max -Inf   Inf   ->  Infinity

+ddmax128 max -Inf  -Inf   ->  -Infinity

+ddmax129 max -1000 -Inf   ->  -1000

+ddmax130 max -1    -Inf   ->  -1

+ddmax131 max -0    -Inf   ->  -0

+ddmax132 max  0    -Inf   ->  0

+ddmax133 max  1    -Inf   ->  1

+ddmax134 max  1000 -Inf   ->  1000

+ddmax135 max  Inf  -Inf   ->  Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+ddmax141 max  NaN -Inf    -> -Infinity

+ddmax142 max  NaN -1000   -> -1000

+ddmax143 max  NaN -1      -> -1

+ddmax144 max  NaN -0      -> -0

+ddmax145 max  NaN  0      ->  0

+ddmax146 max  NaN  1      ->  1

+ddmax147 max  NaN  1000   ->  1000

+ddmax148 max  NaN  Inf    ->  Infinity

+ddmax149 max  NaN  NaN    ->  NaN

+ddmax150 max -Inf  NaN    -> -Infinity

+ddmax151 max -1000 NaN    -> -1000

+ddmax152 max -1    NaN    -> -1

+ddmax153 max -0    NaN    -> -0

+ddmax154 max  0    NaN    ->  0

+ddmax155 max  1    NaN    ->  1

+ddmax156 max  1000 NaN    ->  1000

+ddmax157 max  Inf  NaN    ->  Infinity

+

+ddmax161 max  sNaN -Inf   ->  NaN  Invalid_operation

+ddmax162 max  sNaN -1000  ->  NaN  Invalid_operation

+ddmax163 max  sNaN -1     ->  NaN  Invalid_operation

+ddmax164 max  sNaN -0     ->  NaN  Invalid_operation

+ddmax165 max  sNaN  0     ->  NaN  Invalid_operation

+ddmax166 max  sNaN  1     ->  NaN  Invalid_operation

+ddmax167 max  sNaN  1000  ->  NaN  Invalid_operation

+ddmax168 max  sNaN  NaN   ->  NaN  Invalid_operation

+ddmax169 max  sNaN sNaN   ->  NaN  Invalid_operation

+ddmax170 max  NaN  sNaN   ->  NaN  Invalid_operation

+ddmax171 max -Inf  sNaN   ->  NaN  Invalid_operation

+ddmax172 max -1000 sNaN   ->  NaN  Invalid_operation

+ddmax173 max -1    sNaN   ->  NaN  Invalid_operation

+ddmax174 max -0    sNaN   ->  NaN  Invalid_operation

+ddmax175 max  0    sNaN   ->  NaN  Invalid_operation

+ddmax176 max  1    sNaN   ->  NaN  Invalid_operation

+ddmax177 max  1000 sNaN   ->  NaN  Invalid_operation

+ddmax178 max  Inf  sNaN   ->  NaN  Invalid_operation

+ddmax179 max  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddmax181 max  NaN9  -Inf   -> -Infinity

+ddmax182 max  NaN8     9   ->  9

+ddmax183 max -NaN7   Inf   ->  Infinity

+

+ddmax184 max -NaN1   NaN11 -> -NaN1

+ddmax185 max  NaN2   NaN12 ->  NaN2

+ddmax186 max -NaN13 -NaN7  -> -NaN13

+ddmax187 max  NaN14 -NaN5  ->  NaN14

+

+ddmax188 max -Inf    NaN4  -> -Infinity

+ddmax189 max -9     -NaN3  -> -9

+ddmax190 max  Inf    NaN2  ->  Infinity

+

+ddmax191 max  sNaN99 -Inf    ->  NaN99 Invalid_operation

+ddmax192 max  sNaN98 -1      ->  NaN98 Invalid_operation

+ddmax193 max -sNaN97  NaN    -> -NaN97 Invalid_operation

+ddmax194 max  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+ddmax195 max  NaN95  sNaN93  ->  NaN93 Invalid_operation

+ddmax196 max -Inf    sNaN92  ->  NaN92 Invalid_operation

+ddmax197 max  0      sNaN91  ->  NaN91 Invalid_operation

+ddmax198 max  Inf   -sNaN90  -> -NaN90 Invalid_operation

+ddmax199 max  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+-- old rounding checks

+ddmax221 max 12345678000 1  -> 12345678000

+ddmax222 max 1 12345678000  -> 12345678000

+ddmax223 max 1234567800  1  -> 1234567800

+ddmax224 max 1 1234567800   -> 1234567800

+ddmax225 max 1234567890  1  -> 1234567890

+ddmax226 max 1 1234567890   -> 1234567890

+ddmax227 max 1234567891  1  -> 1234567891

+ddmax228 max 1 1234567891   -> 1234567891

+ddmax229 max 12345678901 1  -> 12345678901

+ddmax230 max 1 12345678901  -> 12345678901

+ddmax231 max 1234567896  1  -> 1234567896

+ddmax232 max 1 1234567896   -> 1234567896

+ddmax233 max -1234567891  1 -> 1

+ddmax234 max 1 -1234567891  -> 1

+ddmax235 max -12345678901 1 -> 1

+ddmax236 max 1 -12345678901 -> 1

+ddmax237 max -1234567896  1 -> 1

+ddmax238 max 1 -1234567896  -> 1

+

+-- from examples

+ddmax280 max '3'   '2'  ->  '3'

+ddmax281 max '-10' '3'  ->  '3'

+ddmax282 max '1.0' '1'  ->  '1'

+ddmax283 max '1' '1.0'  ->  '1'

+ddmax284 max '7' 'NaN'  ->  '7'

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+ddmax401 max  Inf    1.1     ->  Infinity

+ddmax402 max  1.1    1       ->  1.1

+ddmax403 max  1      1.0     ->  1

+ddmax404 max  1.0    0.1     ->  1.0

+ddmax405 max  0.1    0.10    ->  0.1

+ddmax406 max  0.10   0.100   ->  0.10

+ddmax407 max  0.10   0       ->  0.10

+ddmax408 max  0      0.0     ->  0

+ddmax409 max  0.0   -0       ->  0.0

+ddmax410 max  0.0   -0.0     ->  0.0

+ddmax411 max  0.00  -0.0     ->  0.00

+ddmax412 max  0.0   -0.00    ->  0.0

+ddmax413 max  0     -0.0     ->  0

+ddmax414 max  0     -0       ->  0

+ddmax415 max -0.0   -0       -> -0.0

+ddmax416 max -0     -0.100   -> -0

+ddmax417 max -0.100 -0.10    -> -0.100

+ddmax418 max -0.10  -0.1     -> -0.10

+ddmax419 max -0.1   -1.0     -> -0.1

+ddmax420 max -1.0   -1       -> -1.0

+ddmax421 max -1     -1.1     -> -1

+ddmax423 max -1.1   -Inf     -> -1.1

+-- same with operands reversed

+ddmax431 max  1.1    Inf     ->  Infinity

+ddmax432 max  1      1.1     ->  1.1

+ddmax433 max  1.0    1       ->  1

+ddmax434 max  0.1    1.0     ->  1.0

+ddmax435 max  0.10   0.1     ->  0.1

+ddmax436 max  0.100  0.10    ->  0.10

+ddmax437 max  0      0.10    ->  0.10

+ddmax438 max  0.0    0       ->  0

+ddmax439 max -0      0.0     ->  0.0

+ddmax440 max -0.0    0.0     ->  0.0

+ddmax441 max -0.0    0.00    ->  0.00

+ddmax442 max -0.00   0.0     ->  0.0

+ddmax443 max -0.0    0       ->  0

+ddmax444 max -0      0       ->  0

+ddmax445 max -0     -0.0     -> -0.0

+ddmax446 max -0.100 -0       -> -0

+ddmax447 max -0.10  -0.100   -> -0.100

+ddmax448 max -0.1   -0.10    -> -0.10

+ddmax449 max -1.0   -0.1     -> -0.1

+ddmax450 max -1     -1.0     -> -1.0

+ddmax451 max -1.1   -1       -> -1

+ddmax453 max -Inf   -1.1     -> -1.1

+-- largies

+ddmax460 max  1000   1E+3    ->  1E+3

+ddmax461 max  1E+3   1000    ->  1E+3

+ddmax462 max  1000  -1E+3    ->  1000

+ddmax463 max  1E+3  -1000    ->  1E+3

+ddmax464 max -1000   1E+3    ->  1E+3

+ddmax465 max -1E+3   1000    ->  1000

+ddmax466 max -1000  -1E+3    -> -1000

+ddmax467 max -1E+3  -1000    -> -1000

+

+-- misalignment traps for little-endian

+ddmax471 max      1.0       0.1  -> 1.0

+ddmax472 max      0.1       1.0  -> 1.0

+ddmax473 max     10.0       0.1  -> 10.0

+ddmax474 max      0.1      10.0  -> 10.0

+ddmax475 max      100       1.0  -> 100

+ddmax476 max      1.0       100  -> 100

+ddmax477 max     1000      10.0  -> 1000

+ddmax478 max     10.0      1000  -> 1000

+ddmax479 max    10000     100.0  -> 10000

+ddmax480 max    100.0     10000  -> 10000

+ddmax481 max   100000    1000.0  -> 100000

+ddmax482 max   1000.0    100000  -> 100000

+ddmax483 max  1000000   10000.0  -> 1000000

+ddmax484 max  10000.0   1000000  -> 1000000

+

+-- subnormals

+ddmax510 max  1.00E-383       0  ->   1.00E-383

+ddmax511 max  0.1E-383        0  ->   1E-384    Subnormal

+ddmax512 max  0.10E-383       0  ->   1.0E-384  Subnormal

+ddmax513 max  0.100E-383      0  ->   1.00E-384 Subnormal

+ddmax514 max  0.01E-383       0  ->   1E-385    Subnormal

+ddmax515 max  0.999E-383      0  ->   9.99E-384 Subnormal

+ddmax516 max  0.099E-383      0  ->   9.9E-385  Subnormal

+ddmax517 max  0.009E-383      0  ->   9E-386    Subnormal

+ddmax518 max  0.001E-383      0  ->   1E-386    Subnormal

+ddmax519 max  0.0009E-383     0  ->   9E-387    Subnormal

+ddmax520 max  0.0001E-383     0  ->   1E-387    Subnormal

+

+ddmax530 max -1.00E-383       0  ->   0

+ddmax531 max -0.1E-383        0  ->   0

+ddmax532 max -0.10E-383       0  ->   0

+ddmax533 max -0.100E-383      0  ->   0

+ddmax534 max -0.01E-383       0  ->   0

+ddmax535 max -0.999E-383      0  ->   0

+ddmax536 max -0.099E-383      0  ->   0

+ddmax537 max -0.009E-383      0  ->   0

+ddmax538 max -0.001E-383      0  ->   0

+ddmax539 max -0.0009E-383     0  ->   0

+ddmax540 max -0.0001E-383     0  ->   0

+

+-- Null tests

+ddmax900 max 10  #  -> NaN Invalid_operation

+ddmax901 max  # 10  -> NaN Invalid_operation

+

+

+

diff --git a/Lib/test/decimaltestdata/ddMaxMag.decTest b/Lib/test/decimaltestdata/ddMaxMag.decTest
new file mode 100644
index 0000000..c43c460
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddMaxMag.decTest
@@ -0,0 +1,304 @@
+------------------------------------------------------------------------

+-- ddMaxMag.decTest -- decDouble maxnummag                            --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddmxg001 maxmag  -2  -2  -> -2

+ddmxg002 maxmag  -2  -1  -> -2

+ddmxg003 maxmag  -2   0  -> -2

+ddmxg004 maxmag  -2   1  -> -2

+ddmxg005 maxmag  -2   2  ->  2

+ddmxg006 maxmag  -1  -2  -> -2

+ddmxg007 maxmag  -1  -1  -> -1

+ddmxg008 maxmag  -1   0  -> -1

+ddmxg009 maxmag  -1   1  ->  1

+ddmxg010 maxmag  -1   2  ->  2

+ddmxg011 maxmag   0  -2  -> -2

+ddmxg012 maxmag   0  -1  -> -1

+ddmxg013 maxmag   0   0  ->  0

+ddmxg014 maxmag   0   1  ->  1

+ddmxg015 maxmag   0   2  ->  2

+ddmxg016 maxmag   1  -2  -> -2

+ddmxg017 maxmag   1  -1  ->  1

+ddmxg018 maxmag   1   0  ->  1

+ddmxg019 maxmag   1   1  ->  1

+ddmxg020 maxmag   1   2  ->  2

+ddmxg021 maxmag   2  -2  ->  2

+ddmxg022 maxmag   2  -1  ->  2

+ddmxg023 maxmag   2   0  ->  2

+ddmxg025 maxmag   2   1  ->  2

+ddmxg026 maxmag   2   2  ->  2

+

+-- extended zeros

+ddmxg030 maxmag   0     0   ->  0

+ddmxg031 maxmag   0    -0   ->  0

+ddmxg032 maxmag   0    -0.0 ->  0

+ddmxg033 maxmag   0     0.0 ->  0

+ddmxg034 maxmag  -0     0   ->  0    -- note: -0 = 0, but 0 chosen

+ddmxg035 maxmag  -0    -0   -> -0

+ddmxg036 maxmag  -0    -0.0 -> -0.0

+ddmxg037 maxmag  -0     0.0 ->  0.0

+ddmxg038 maxmag   0.0   0   ->  0

+ddmxg039 maxmag   0.0  -0   ->  0.0

+ddmxg040 maxmag   0.0  -0.0 ->  0.0

+ddmxg041 maxmag   0.0   0.0 ->  0.0

+ddmxg042 maxmag  -0.0   0   ->  0

+ddmxg043 maxmag  -0.0  -0   -> -0.0

+ddmxg044 maxmag  -0.0  -0.0 -> -0.0

+ddmxg045 maxmag  -0.0   0.0 ->  0.0

+

+ddmxg050 maxmag  -0E1   0E1 ->  0E+1

+ddmxg051 maxmag  -0E2   0E2 ->  0E+2

+ddmxg052 maxmag  -0E2   0E1 ->  0E+1

+ddmxg053 maxmag  -0E1   0E2 ->  0E+2

+ddmxg054 maxmag   0E1  -0E1 ->  0E+1

+ddmxg055 maxmag   0E2  -0E2 ->  0E+2

+ddmxg056 maxmag   0E2  -0E1 ->  0E+2

+ddmxg057 maxmag   0E1  -0E2 ->  0E+1

+

+ddmxg058 maxmag   0E1   0E1 ->  0E+1

+ddmxg059 maxmag   0E2   0E2 ->  0E+2

+ddmxg060 maxmag   0E2   0E1 ->  0E+2

+ddmxg061 maxmag   0E1   0E2 ->  0E+2

+ddmxg062 maxmag  -0E1  -0E1 -> -0E+1

+ddmxg063 maxmag  -0E2  -0E2 -> -0E+2

+ddmxg064 maxmag  -0E2  -0E1 -> -0E+1

+ddmxg065 maxmag  -0E1  -0E2 -> -0E+1

+

+-- Specials

+ddmxg090 maxmag  Inf  -Inf   ->  Infinity

+ddmxg091 maxmag  Inf  -1000  ->  Infinity

+ddmxg092 maxmag  Inf  -1     ->  Infinity

+ddmxg093 maxmag  Inf  -0     ->  Infinity

+ddmxg094 maxmag  Inf   0     ->  Infinity

+ddmxg095 maxmag  Inf   1     ->  Infinity

+ddmxg096 maxmag  Inf   1000  ->  Infinity

+ddmxg097 maxmag  Inf   Inf   ->  Infinity

+ddmxg098 maxmag -1000  Inf   ->  Infinity

+ddmxg099 maxmag -Inf   Inf   ->  Infinity

+ddmxg100 maxmag -1     Inf   ->  Infinity

+ddmxg101 maxmag -0     Inf   ->  Infinity

+ddmxg102 maxmag  0     Inf   ->  Infinity

+ddmxg103 maxmag  1     Inf   ->  Infinity

+ddmxg104 maxmag  1000  Inf   ->  Infinity

+ddmxg105 maxmag  Inf   Inf   ->  Infinity

+

+ddmxg120 maxmag -Inf  -Inf   -> -Infinity

+ddmxg121 maxmag -Inf  -1000  -> -Infinity

+ddmxg122 maxmag -Inf  -1     -> -Infinity

+ddmxg123 maxmag -Inf  -0     -> -Infinity

+ddmxg124 maxmag -Inf   0     -> -Infinity

+ddmxg125 maxmag -Inf   1     -> -Infinity

+ddmxg126 maxmag -Inf   1000  -> -Infinity

+ddmxg127 maxmag -Inf   Inf   ->  Infinity

+ddmxg128 maxmag -Inf  -Inf   ->  -Infinity

+ddmxg129 maxmag -1000 -Inf   -> -Infinity

+ddmxg130 maxmag -1    -Inf   -> -Infinity

+ddmxg131 maxmag -0    -Inf   -> -Infinity

+ddmxg132 maxmag  0    -Inf   -> -Infinity

+ddmxg133 maxmag  1    -Inf   -> -Infinity

+ddmxg134 maxmag  1000 -Inf   -> -Infinity

+ddmxg135 maxmag  Inf  -Inf   ->  Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+ddmxg141 maxmag  NaN -Inf    -> -Infinity

+ddmxg142 maxmag  NaN -1000   -> -1000

+ddmxg143 maxmag  NaN -1      -> -1

+ddmxg144 maxmag  NaN -0      -> -0

+ddmxg145 maxmag  NaN  0      ->  0

+ddmxg146 maxmag  NaN  1      ->  1

+ddmxg147 maxmag  NaN  1000   ->  1000

+ddmxg148 maxmag  NaN  Inf    ->  Infinity

+ddmxg149 maxmag  NaN  NaN    ->  NaN

+ddmxg150 maxmag -Inf  NaN    -> -Infinity

+ddmxg151 maxmag -1000 NaN    -> -1000

+ddmxg152 maxmag -1    NaN    -> -1

+ddmxg153 maxmag -0    NaN    -> -0

+ddmxg154 maxmag  0    NaN    ->  0

+ddmxg155 maxmag  1    NaN    ->  1

+ddmxg156 maxmag  1000 NaN    ->  1000

+ddmxg157 maxmag  Inf  NaN    ->  Infinity

+

+ddmxg161 maxmag  sNaN -Inf   ->  NaN  Invalid_operation

+ddmxg162 maxmag  sNaN -1000  ->  NaN  Invalid_operation

+ddmxg163 maxmag  sNaN -1     ->  NaN  Invalid_operation

+ddmxg164 maxmag  sNaN -0     ->  NaN  Invalid_operation

+ddmxg165 maxmag  sNaN  0     ->  NaN  Invalid_operation

+ddmxg166 maxmag  sNaN  1     ->  NaN  Invalid_operation

+ddmxg167 maxmag  sNaN  1000  ->  NaN  Invalid_operation

+ddmxg168 maxmag  sNaN  NaN   ->  NaN  Invalid_operation

+ddmxg169 maxmag  sNaN sNaN   ->  NaN  Invalid_operation

+ddmxg170 maxmag  NaN  sNaN   ->  NaN  Invalid_operation

+ddmxg171 maxmag -Inf  sNaN   ->  NaN  Invalid_operation

+ddmxg172 maxmag -1000 sNaN   ->  NaN  Invalid_operation

+ddmxg173 maxmag -1    sNaN   ->  NaN  Invalid_operation

+ddmxg174 maxmag -0    sNaN   ->  NaN  Invalid_operation

+ddmxg175 maxmag  0    sNaN   ->  NaN  Invalid_operation

+ddmxg176 maxmag  1    sNaN   ->  NaN  Invalid_operation

+ddmxg177 maxmag  1000 sNaN   ->  NaN  Invalid_operation

+ddmxg178 maxmag  Inf  sNaN   ->  NaN  Invalid_operation

+ddmxg179 maxmag  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddmxg181 maxmag  NaN9  -Inf   -> -Infinity

+ddmxg182 maxmag  NaN8     9   ->  9

+ddmxg183 maxmag -NaN7   Inf   ->  Infinity

+

+ddmxg184 maxmag -NaN1   NaN11 -> -NaN1

+ddmxg185 maxmag  NaN2   NaN12 ->  NaN2

+ddmxg186 maxmag -NaN13 -NaN7  -> -NaN13

+ddmxg187 maxmag  NaN14 -NaN5  ->  NaN14

+

+ddmxg188 maxmag -Inf    NaN4  -> -Infinity

+ddmxg189 maxmag -9     -NaN3  -> -9

+ddmxg190 maxmag  Inf    NaN2  ->  Infinity

+

+ddmxg191 maxmag  sNaN99 -Inf    ->  NaN99 Invalid_operation

+ddmxg192 maxmag  sNaN98 -1      ->  NaN98 Invalid_operation

+ddmxg193 maxmag -sNaN97  NaN    -> -NaN97 Invalid_operation

+ddmxg194 maxmag  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+ddmxg195 maxmag  NaN95  sNaN93  ->  NaN93 Invalid_operation

+ddmxg196 maxmag -Inf    sNaN92  ->  NaN92 Invalid_operation

+ddmxg197 maxmag  0      sNaN91  ->  NaN91 Invalid_operation

+ddmxg198 maxmag  Inf   -sNaN90  -> -NaN90 Invalid_operation

+ddmxg199 maxmag  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+-- old rounding checks

+ddmxg221 maxmag 12345678000 1  -> 12345678000

+ddmxg222 maxmag 1 12345678000  -> 12345678000

+ddmxg223 maxmag 1234567800  1  -> 1234567800

+ddmxg224 maxmag 1 1234567800   -> 1234567800

+ddmxg225 maxmag 1234567890  1  -> 1234567890

+ddmxg226 maxmag 1 1234567890   -> 1234567890

+ddmxg227 maxmag 1234567891  1  -> 1234567891

+ddmxg228 maxmag 1 1234567891   -> 1234567891

+ddmxg229 maxmag 12345678901 1  -> 12345678901

+ddmxg230 maxmag 1 12345678901  -> 12345678901

+ddmxg231 maxmag 1234567896  1  -> 1234567896

+ddmxg232 maxmag 1 1234567896   -> 1234567896

+ddmxg233 maxmag -1234567891  1 -> -1234567891

+ddmxg234 maxmag 1 -1234567891  -> -1234567891

+ddmxg235 maxmag -12345678901 1 -> -12345678901

+ddmxg236 maxmag 1 -12345678901 -> -12345678901

+ddmxg237 maxmag -1234567896  1 -> -1234567896

+ddmxg238 maxmag 1 -1234567896  -> -1234567896

+

+-- from examples

+ddmxg280 maxmag '3'   '2'  ->  '3'

+ddmxg281 maxmag '-10' '3'  ->  '-10'

+ddmxg282 maxmag '1.0' '1'  ->  '1'

+ddmxg283 maxmag '1' '1.0'  ->  '1'

+ddmxg284 maxmag '7' 'NaN'  ->  '7'

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+ddmxg401 maxmag  Inf    1.1     ->  Infinity

+ddmxg402 maxmag  1.1    1       ->  1.1

+ddmxg403 maxmag  1      1.0     ->  1

+ddmxg404 maxmag  1.0    0.1     ->  1.0

+ddmxg405 maxmag  0.1    0.10    ->  0.1

+ddmxg406 maxmag  0.10   0.100   ->  0.10

+ddmxg407 maxmag  0.10   0       ->  0.10

+ddmxg408 maxmag  0      0.0     ->  0

+ddmxg409 maxmag  0.0   -0       ->  0.0

+ddmxg410 maxmag  0.0   -0.0     ->  0.0

+ddmxg411 maxmag  0.00  -0.0     ->  0.00

+ddmxg412 maxmag  0.0   -0.00    ->  0.0

+ddmxg413 maxmag  0     -0.0     ->  0

+ddmxg414 maxmag  0     -0       ->  0

+ddmxg415 maxmag -0.0   -0       -> -0.0

+ddmxg416 maxmag -0     -0.100   -> -0.100

+ddmxg417 maxmag -0.100 -0.10    -> -0.100

+ddmxg418 maxmag -0.10  -0.1     -> -0.10

+ddmxg419 maxmag -0.1   -1.0     -> -1.0

+ddmxg420 maxmag -1.0   -1       -> -1.0

+ddmxg421 maxmag -1     -1.1     -> -1.1

+ddmxg423 maxmag -1.1   -Inf     -> -Infinity

+-- same with operands reversed

+ddmxg431 maxmag  1.1    Inf     ->  Infinity

+ddmxg432 maxmag  1      1.1     ->  1.1

+ddmxg433 maxmag  1.0    1       ->  1

+ddmxg434 maxmag  0.1    1.0     ->  1.0

+ddmxg435 maxmag  0.10   0.1     ->  0.1

+ddmxg436 maxmag  0.100  0.10    ->  0.10

+ddmxg437 maxmag  0      0.10    ->  0.10

+ddmxg438 maxmag  0.0    0       ->  0

+ddmxg439 maxmag -0      0.0     ->  0.0

+ddmxg440 maxmag -0.0    0.0     ->  0.0

+ddmxg441 maxmag -0.0    0.00    ->  0.00

+ddmxg442 maxmag -0.00   0.0     ->  0.0

+ddmxg443 maxmag -0.0    0       ->  0

+ddmxg444 maxmag -0      0       ->  0

+ddmxg445 maxmag -0     -0.0     -> -0.0

+ddmxg446 maxmag -0.100 -0       -> -0.100

+ddmxg447 maxmag -0.10  -0.100   -> -0.100

+ddmxg448 maxmag -0.1   -0.10    -> -0.10

+ddmxg449 maxmag -1.0   -0.1     -> -1.0

+ddmxg450 maxmag -1     -1.0     -> -1.0

+ddmxg451 maxmag -1.1   -1       -> -1.1

+ddmxg453 maxmag -Inf   -1.1     -> -Infinity

+-- largies

+ddmxg460 maxmag  1000   1E+3    ->  1E+3

+ddmxg461 maxmag  1E+3   1000    ->  1E+3

+ddmxg462 maxmag  1000  -1E+3    ->  1000

+ddmxg463 maxmag  1E+3  -1000    ->  1E+3

+ddmxg464 maxmag -1000   1E+3    ->  1E+3

+ddmxg465 maxmag -1E+3   1000    ->  1000

+ddmxg466 maxmag -1000  -1E+3    -> -1000

+ddmxg467 maxmag -1E+3  -1000    -> -1000

+

+-- subnormals

+ddmxg510 maxmag  1.00E-383       0  ->   1.00E-383

+ddmxg511 maxmag  0.1E-383        0  ->   1E-384    Subnormal

+ddmxg512 maxmag  0.10E-383       0  ->   1.0E-384  Subnormal

+ddmxg513 maxmag  0.100E-383      0  ->   1.00E-384 Subnormal

+ddmxg514 maxmag  0.01E-383       0  ->   1E-385    Subnormal

+ddmxg515 maxmag  0.999E-383      0  ->   9.99E-384 Subnormal

+ddmxg516 maxmag  0.099E-383      0  ->   9.9E-385  Subnormal

+ddmxg517 maxmag  0.009E-383      0  ->   9E-386    Subnormal

+ddmxg518 maxmag  0.001E-383      0  ->   1E-386    Subnormal

+ddmxg519 maxmag  0.0009E-383     0  ->   9E-387    Subnormal

+ddmxg520 maxmag  0.0001E-383     0  ->   1E-387    Subnormal

+

+ddmxg530 maxmag -1.00E-383       0  ->  -1.00E-383

+ddmxg531 maxmag -0.1E-383        0  ->  -1E-384    Subnormal

+ddmxg532 maxmag -0.10E-383       0  ->  -1.0E-384  Subnormal

+ddmxg533 maxmag -0.100E-383      0  ->  -1.00E-384 Subnormal

+ddmxg534 maxmag -0.01E-383       0  ->  -1E-385    Subnormal

+ddmxg535 maxmag -0.999E-383      0  ->  -9.99E-384 Subnormal

+ddmxg536 maxmag -0.099E-383      0  ->  -9.9E-385  Subnormal

+ddmxg537 maxmag -0.009E-383      0  ->  -9E-386    Subnormal

+ddmxg538 maxmag -0.001E-383      0  ->  -1E-386    Subnormal

+ddmxg539 maxmag -0.0009E-383     0  ->  -9E-387    Subnormal

+ddmxg540 maxmag -0.0001E-383     0  ->  -1E-387    Subnormal

+

+-- Null tests

+ddmxg900 maxmag 10  #  -> NaN Invalid_operation

+ddmxg901 maxmag  # 10  -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/ddMin.decTest b/Lib/test/decimaltestdata/ddMin.decTest
new file mode 100644
index 0000000..c77a71e
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddMin.decTest
@@ -0,0 +1,309 @@
+------------------------------------------------------------------------

+-- ddMin.decTest -- decDouble minnum                                  --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddmin001 min  -2  -2  -> -2

+ddmin002 min  -2  -1  -> -2

+ddmin003 min  -2   0  -> -2

+ddmin004 min  -2   1  -> -2

+ddmin005 min  -2   2  -> -2

+ddmin006 min  -1  -2  -> -2

+ddmin007 min  -1  -1  -> -1

+ddmin008 min  -1   0  -> -1

+ddmin009 min  -1   1  -> -1

+ddmin010 min  -1   2  -> -1

+ddmin011 min   0  -2  -> -2

+ddmin012 min   0  -1  -> -1

+ddmin013 min   0   0  ->  0

+ddmin014 min   0   1  ->  0

+ddmin015 min   0   2  ->  0

+ddmin016 min   1  -2  -> -2

+ddmin017 min   1  -1  -> -1

+ddmin018 min   1   0  ->  0

+ddmin019 min   1   1  ->  1

+ddmin020 min   1   2  ->  1

+ddmin021 min   2  -2  -> -2

+ddmin022 min   2  -1  -> -1

+ddmin023 min   2   0  ->  0

+ddmin025 min   2   1  ->  1

+ddmin026 min   2   2  ->  2

+

+-- extended zeros

+ddmin030 min   0     0   ->  0

+ddmin031 min   0    -0   -> -0

+ddmin032 min   0    -0.0 -> -0.0

+ddmin033 min   0     0.0 ->  0.0

+ddmin034 min  -0     0   -> -0

+ddmin035 min  -0    -0   -> -0

+ddmin036 min  -0    -0.0 -> -0

+ddmin037 min  -0     0.0 -> -0

+ddmin038 min   0.0   0   ->  0.0

+ddmin039 min   0.0  -0   -> -0

+ddmin040 min   0.0  -0.0 -> -0.0

+ddmin041 min   0.0   0.0 ->  0.0

+ddmin042 min  -0.0   0   -> -0.0

+ddmin043 min  -0.0  -0   -> -0

+ddmin044 min  -0.0  -0.0 -> -0.0

+ddmin045 min  -0.0   0.0 -> -0.0

+

+ddmin046 min   0E1  -0E1 -> -0E+1

+ddmin047 min  -0E1   0E2 -> -0E+1

+ddmin048 min   0E2   0E1 ->  0E+1

+ddmin049 min   0E1   0E2 ->  0E+1

+ddmin050 min  -0E3  -0E2 -> -0E+3

+ddmin051 min  -0E2  -0E3 -> -0E+3

+

+-- Specials

+ddmin090 min  Inf  -Inf   -> -Infinity

+ddmin091 min  Inf  -1000  -> -1000

+ddmin092 min  Inf  -1     -> -1

+ddmin093 min  Inf  -0     -> -0

+ddmin094 min  Inf   0     ->  0

+ddmin095 min  Inf   1     ->  1

+ddmin096 min  Inf   1000  ->  1000

+ddmin097 min  Inf   Inf   ->  Infinity

+ddmin098 min -1000  Inf   -> -1000

+ddmin099 min -Inf   Inf   -> -Infinity

+ddmin100 min -1     Inf   -> -1

+ddmin101 min -0     Inf   -> -0

+ddmin102 min  0     Inf   ->  0

+ddmin103 min  1     Inf   ->  1

+ddmin104 min  1000  Inf   ->  1000

+ddmin105 min  Inf   Inf   ->  Infinity

+

+ddmin120 min -Inf  -Inf   -> -Infinity

+ddmin121 min -Inf  -1000  -> -Infinity

+ddmin122 min -Inf  -1     -> -Infinity

+ddmin123 min -Inf  -0     -> -Infinity

+ddmin124 min -Inf   0     -> -Infinity

+ddmin125 min -Inf   1     -> -Infinity

+ddmin126 min -Inf   1000  -> -Infinity

+ddmin127 min -Inf   Inf   -> -Infinity

+ddmin128 min -Inf  -Inf   -> -Infinity

+ddmin129 min -1000 -Inf   -> -Infinity

+ddmin130 min -1    -Inf   -> -Infinity

+ddmin131 min -0    -Inf   -> -Infinity

+ddmin132 min  0    -Inf   -> -Infinity

+ddmin133 min  1    -Inf   -> -Infinity

+ddmin134 min  1000 -Inf   -> -Infinity

+ddmin135 min  Inf  -Inf   -> -Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+ddmin141 min  NaN -Inf    ->  -Infinity

+ddmin142 min  NaN -1000   ->  -1000

+ddmin143 min  NaN -1      ->  -1

+ddmin144 min  NaN -0      ->  -0

+ddmin145 min  NaN  0      ->  0

+ddmin146 min  NaN  1      ->  1

+ddmin147 min  NaN  1000   ->  1000

+ddmin148 min  NaN  Inf    ->  Infinity

+ddmin149 min  NaN  NaN    ->  NaN

+ddmin150 min -Inf  NaN    -> -Infinity

+ddmin151 min -1000 NaN    -> -1000

+ddmin152 min -1   -NaN    -> -1

+ddmin153 min -0    NaN    -> -0

+ddmin154 min  0   -NaN    ->  0

+ddmin155 min  1    NaN    ->  1

+ddmin156 min  1000 NaN    ->  1000

+ddmin157 min  Inf  NaN    ->  Infinity

+

+ddmin161 min  sNaN -Inf   ->  NaN  Invalid_operation

+ddmin162 min  sNaN -1000  ->  NaN  Invalid_operation

+ddmin163 min  sNaN -1     ->  NaN  Invalid_operation

+ddmin164 min  sNaN -0     ->  NaN  Invalid_operation

+ddmin165 min -sNaN  0     -> -NaN  Invalid_operation

+ddmin166 min -sNaN  1     -> -NaN  Invalid_operation

+ddmin167 min  sNaN  1000  ->  NaN  Invalid_operation

+ddmin168 min  sNaN  NaN   ->  NaN  Invalid_operation

+ddmin169 min  sNaN sNaN   ->  NaN  Invalid_operation

+ddmin170 min  NaN  sNaN   ->  NaN  Invalid_operation

+ddmin171 min -Inf  sNaN   ->  NaN  Invalid_operation

+ddmin172 min -1000 sNaN   ->  NaN  Invalid_operation

+ddmin173 min -1    sNaN   ->  NaN  Invalid_operation

+ddmin174 min -0    sNaN   ->  NaN  Invalid_operation

+ddmin175 min  0    sNaN   ->  NaN  Invalid_operation

+ddmin176 min  1    sNaN   ->  NaN  Invalid_operation

+ddmin177 min  1000 sNaN   ->  NaN  Invalid_operation

+ddmin178 min  Inf  sNaN   ->  NaN  Invalid_operation

+ddmin179 min  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddmin181 min  NaN9   -Inf   -> -Infinity

+ddmin182 min -NaN8    9990  ->  9990

+ddmin183 min  NaN71   Inf   ->  Infinity

+

+ddmin184 min  NaN1    NaN54 ->  NaN1

+ddmin185 min  NaN22  -NaN53 ->  NaN22

+ddmin186 min -NaN3    NaN6  -> -NaN3

+ddmin187 min -NaN44   NaN7  -> -NaN44

+

+ddmin188 min -Inf     NaN41 -> -Infinity

+ddmin189 min -9999   -NaN33 -> -9999

+ddmin190 min  Inf     NaN2  ->  Infinity

+

+ddmin191 min  sNaN99 -Inf    ->  NaN99 Invalid_operation

+ddmin192 min  sNaN98 -11     ->  NaN98 Invalid_operation

+ddmin193 min -sNaN97  NaN8   -> -NaN97 Invalid_operation

+ddmin194 min  sNaN69 sNaN94  ->  NaN69 Invalid_operation

+ddmin195 min  NaN95  sNaN93  ->  NaN93 Invalid_operation

+ddmin196 min -Inf    sNaN92  ->  NaN92 Invalid_operation

+ddmin197 min  088    sNaN91  ->  NaN91 Invalid_operation

+ddmin198 min  Inf   -sNaN90  -> -NaN90 Invalid_operation

+ddmin199 min  NaN    sNaN86  ->  NaN86 Invalid_operation

+

+-- old rounding checks

+ddmin221 min -12345678000 1  -> -12345678000

+ddmin222 min 1 -12345678000  -> -12345678000

+ddmin223 min -1234567800  1  -> -1234567800

+ddmin224 min 1 -1234567800   -> -1234567800

+ddmin225 min -1234567890  1  -> -1234567890

+ddmin226 min 1 -1234567890   -> -1234567890

+ddmin227 min -1234567891  1  -> -1234567891

+ddmin228 min 1 -1234567891   -> -1234567891

+ddmin229 min -12345678901 1  -> -12345678901

+ddmin230 min 1 -12345678901  -> -12345678901

+ddmin231 min -1234567896  1  -> -1234567896

+ddmin232 min 1 -1234567896   -> -1234567896

+ddmin233 min 1234567891  1   -> 1

+ddmin234 min 1 1234567891    -> 1

+ddmin235 min 12345678901 1   -> 1

+ddmin236 min 1 12345678901   -> 1

+ddmin237 min 1234567896  1   -> 1

+ddmin238 min 1 1234567896    -> 1

+

+-- from examples

+ddmin280 min '3'   '2'  ->  '2'

+ddmin281 min '-10' '3'  ->  '-10'

+ddmin282 min '1.0' '1'  ->  '1.0'

+ddmin283 min '1' '1.0'  ->  '1.0'

+ddmin284 min '7' 'NaN'  ->  '7'

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+ddmin401 min  Inf    1.1     ->  1.1

+ddmin402 min  1.1    1       ->  1

+ddmin403 min  1      1.0     ->  1.0

+ddmin404 min  1.0    0.1     ->  0.1

+ddmin405 min  0.1    0.10    ->  0.10

+ddmin406 min  0.10   0.100   ->  0.100

+ddmin407 min  0.10   0       ->  0

+ddmin408 min  0      0.0     ->  0.0

+ddmin409 min  0.0   -0       -> -0

+ddmin410 min  0.0   -0.0     -> -0.0

+ddmin411 min  0.00  -0.0     -> -0.0

+ddmin412 min  0.0   -0.00    -> -0.00

+ddmin413 min  0     -0.0     -> -0.0

+ddmin414 min  0     -0       -> -0

+ddmin415 min -0.0   -0       -> -0

+ddmin416 min -0     -0.100   -> -0.100

+ddmin417 min -0.100 -0.10    -> -0.10

+ddmin418 min -0.10  -0.1     -> -0.1

+ddmin419 min -0.1   -1.0     -> -1.0

+ddmin420 min -1.0   -1       -> -1

+ddmin421 min -1     -1.1     -> -1.1

+ddmin423 min -1.1   -Inf     -> -Infinity

+-- same with operands reversed

+ddmin431 min  1.1    Inf     ->  1.1

+ddmin432 min  1      1.1     ->  1

+ddmin433 min  1.0    1       ->  1.0

+ddmin434 min  0.1    1.0     ->  0.1

+ddmin435 min  0.10   0.1     ->  0.10

+ddmin436 min  0.100  0.10    ->  0.100

+ddmin437 min  0      0.10    ->  0

+ddmin438 min  0.0    0       ->  0.0

+ddmin439 min -0      0.0     -> -0

+ddmin440 min -0.0    0.0     -> -0.0

+ddmin441 min -0.0    0.00    -> -0.0

+ddmin442 min -0.00   0.0     -> -0.00

+ddmin443 min -0.0    0       -> -0.0

+ddmin444 min -0      0       -> -0

+ddmin445 min -0     -0.0     -> -0

+ddmin446 min -0.100 -0       -> -0.100

+ddmin447 min -0.10  -0.100   -> -0.10

+ddmin448 min -0.1   -0.10    -> -0.1

+ddmin449 min -1.0   -0.1     -> -1.0

+ddmin450 min -1     -1.0     -> -1

+ddmin451 min -1.1   -1       -> -1.1

+ddmin453 min -Inf   -1.1     -> -Infinity

+-- largies

+ddmin460 min  1000   1E+3    ->  1000

+ddmin461 min  1E+3   1000    ->  1000

+ddmin462 min  1000  -1E+3    -> -1E+3

+ddmin463 min  1E+3  -384    -> -384

+ddmin464 min -384   1E+3    -> -384

+ddmin465 min -1E+3   1000    -> -1E+3

+ddmin466 min -384  -1E+3    -> -1E+3

+ddmin467 min -1E+3  -384    -> -1E+3

+

+-- misalignment traps for little-endian

+ddmin471 min      1.0       0.1  -> 0.1

+ddmin472 min      0.1       1.0  -> 0.1

+ddmin473 min     10.0       0.1  -> 0.1

+ddmin474 min      0.1      10.0  -> 0.1

+ddmin475 min      100       1.0  -> 1.0

+ddmin476 min      1.0       100  -> 1.0

+ddmin477 min     1000      10.0  -> 10.0

+ddmin478 min     10.0      1000  -> 10.0

+ddmin479 min    10000     100.0  -> 100.0

+ddmin480 min    100.0     10000  -> 100.0

+ddmin481 min   100000    1000.0  -> 1000.0

+ddmin482 min   1000.0    100000  -> 1000.0

+ddmin483 min  1000000   10000.0  -> 10000.0

+ddmin484 min  10000.0   1000000  -> 10000.0

+

+-- subnormals

+ddmin510 min  1.00E-383       0  ->   0

+ddmin511 min  0.1E-383        0  ->   0

+ddmin512 min  0.10E-383       0  ->   0

+ddmin513 min  0.100E-383      0  ->   0

+ddmin514 min  0.01E-383       0  ->   0

+ddmin515 min  0.999E-383      0  ->   0

+ddmin516 min  0.099E-383      0  ->   0

+ddmin517 min  0.009E-383      0  ->   0

+ddmin518 min  0.001E-383      0  ->   0

+ddmin519 min  0.0009E-383     0  ->   0

+ddmin520 min  0.0001E-383     0  ->   0

+

+ddmin530 min -1.00E-383       0  ->  -1.00E-383

+ddmin531 min -0.1E-383        0  ->  -1E-384    Subnormal

+ddmin532 min -0.10E-383       0  ->  -1.0E-384  Subnormal

+ddmin533 min -0.100E-383      0  ->  -1.00E-384 Subnormal

+ddmin534 min -0.01E-383       0  ->  -1E-385    Subnormal

+ddmin535 min -0.999E-383      0  ->  -9.99E-384 Subnormal

+ddmin536 min -0.099E-383      0  ->  -9.9E-385  Subnormal

+ddmin537 min -0.009E-383      0  ->  -9E-386    Subnormal

+ddmin538 min -0.001E-383      0  ->  -1E-386    Subnormal

+ddmin539 min -0.0009E-383     0  ->  -9E-387    Subnormal

+ddmin540 min -0.0001E-383     0  ->  -1E-387    Subnormal

+

+

+-- Null tests

+ddmin900 min 10  # -> NaN Invalid_operation

+ddmin901 min  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddMinMag.decTest b/Lib/test/decimaltestdata/ddMinMag.decTest
new file mode 100644
index 0000000..9291abc
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddMinMag.decTest
@@ -0,0 +1,293 @@
+------------------------------------------------------------------------

+-- ddMinMag.decTest -- decDouble minnummag                            --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddmng001 minmag  -2  -2  -> -2

+ddmng002 minmag  -2  -1  -> -1

+ddmng003 minmag  -2   0  ->  0

+ddmng004 minmag  -2   1  ->  1

+ddmng005 minmag  -2   2  -> -2

+ddmng006 minmag  -1  -2  -> -1

+ddmng007 minmag  -1  -1  -> -1

+ddmng008 minmag  -1   0  ->  0

+ddmng009 minmag  -1   1  -> -1

+ddmng010 minmag  -1   2  -> -1

+ddmng011 minmag   0  -2  ->  0

+ddmng012 minmag   0  -1  ->  0

+ddmng013 minmag   0   0  ->  0

+ddmng014 minmag   0   1  ->  0

+ddmng015 minmag   0   2  ->  0

+ddmng016 minmag   1  -2  ->  1

+ddmng017 minmag   1  -1  -> -1

+ddmng018 minmag   1   0  ->  0

+ddmng019 minmag   1   1  ->  1

+ddmng020 minmag   1   2  ->  1

+ddmng021 minmag   2  -2  -> -2

+ddmng022 minmag   2  -1  -> -1

+ddmng023 minmag   2   0  ->  0

+ddmng025 minmag   2   1  ->  1

+ddmng026 minmag   2   2  ->  2

+

+-- extended zeros

+ddmng030 minmag   0     0   ->  0

+ddmng031 minmag   0    -0   -> -0

+ddmng032 minmag   0    -0.0 -> -0.0

+ddmng033 minmag   0     0.0 ->  0.0

+ddmng034 minmag  -0     0   -> -0

+ddmng035 minmag  -0    -0   -> -0

+ddmng036 minmag  -0    -0.0 -> -0

+ddmng037 minmag  -0     0.0 -> -0

+ddmng038 minmag   0.0   0   ->  0.0

+ddmng039 minmag   0.0  -0   -> -0

+ddmng040 minmag   0.0  -0.0 -> -0.0

+ddmng041 minmag   0.0   0.0 ->  0.0

+ddmng042 minmag  -0.0   0   -> -0.0

+ddmng043 minmag  -0.0  -0   -> -0

+ddmng044 minmag  -0.0  -0.0 -> -0.0

+ddmng045 minmag  -0.0   0.0 -> -0.0

+

+ddmng046 minmag   0E1  -0E1 -> -0E+1

+ddmng047 minmag  -0E1   0E2 -> -0E+1

+ddmng048 minmag   0E2   0E1 ->  0E+1

+ddmng049 minmag   0E1   0E2 ->  0E+1

+ddmng050 minmag  -0E3  -0E2 -> -0E+3

+ddmng051 minmag  -0E2  -0E3 -> -0E+3

+

+-- Specials

+ddmng090 minmag  Inf  -Inf   -> -Infinity

+ddmng091 minmag  Inf  -1000  -> -1000

+ddmng092 minmag  Inf  -1     -> -1

+ddmng093 minmag  Inf  -0     -> -0

+ddmng094 minmag  Inf   0     ->  0

+ddmng095 minmag  Inf   1     ->  1

+ddmng096 minmag  Inf   1000  ->  1000

+ddmng097 minmag  Inf   Inf   ->  Infinity

+ddmng098 minmag -1000  Inf   -> -1000

+ddmng099 minmag -Inf   Inf   -> -Infinity

+ddmng100 minmag -1     Inf   -> -1

+ddmng101 minmag -0     Inf   -> -0

+ddmng102 minmag  0     Inf   ->  0

+ddmng103 minmag  1     Inf   ->  1

+ddmng104 minmag  1000  Inf   ->  1000

+ddmng105 minmag  Inf   Inf   ->  Infinity

+

+ddmng120 minmag -Inf  -Inf   -> -Infinity

+ddmng121 minmag -Inf  -1000  -> -1000

+ddmng122 minmag -Inf  -1     -> -1

+ddmng123 minmag -Inf  -0     -> -0

+ddmng124 minmag -Inf   0     ->  0

+ddmng125 minmag -Inf   1     ->  1

+ddmng126 minmag -Inf   1000  ->  1000

+ddmng127 minmag -Inf   Inf   -> -Infinity

+ddmng128 minmag -Inf  -Inf   -> -Infinity

+ddmng129 minmag -1000 -Inf   -> -1000

+ddmng130 minmag -1    -Inf   -> -1

+ddmng131 minmag -0    -Inf   -> -0

+ddmng132 minmag  0    -Inf   ->  0

+ddmng133 minmag  1    -Inf   ->  1

+ddmng134 minmag  1000 -Inf   ->  1000

+ddmng135 minmag  Inf  -Inf   -> -Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+ddmng141 minmag  NaN -Inf    ->  -Infinity

+ddmng142 minmag  NaN -1000   ->  -1000

+ddmng143 minmag  NaN -1      ->  -1

+ddmng144 minmag  NaN -0      ->  -0

+ddmng145 minmag  NaN  0      ->  0

+ddmng146 minmag  NaN  1      ->  1

+ddmng147 minmag  NaN  1000   ->  1000

+ddmng148 minmag  NaN  Inf    ->  Infinity

+ddmng149 minmag  NaN  NaN    ->  NaN

+ddmng150 minmag -Inf  NaN    -> -Infinity

+ddmng151 minmag -1000 NaN    -> -1000

+ddmng152 minmag -1   -NaN    -> -1

+ddmng153 minmag -0    NaN    -> -0

+ddmng154 minmag  0   -NaN    ->  0

+ddmng155 minmag  1    NaN    ->  1

+ddmng156 minmag  1000 NaN    ->  1000

+ddmng157 minmag  Inf  NaN    ->  Infinity

+

+ddmng161 minmag  sNaN -Inf   ->  NaN  Invalid_operation

+ddmng162 minmag  sNaN -1000  ->  NaN  Invalid_operation

+ddmng163 minmag  sNaN -1     ->  NaN  Invalid_operation

+ddmng164 minmag  sNaN -0     ->  NaN  Invalid_operation

+ddmng165 minmag -sNaN  0     -> -NaN  Invalid_operation

+ddmng166 minmag -sNaN  1     -> -NaN  Invalid_operation

+ddmng167 minmag  sNaN  1000  ->  NaN  Invalid_operation

+ddmng168 minmag  sNaN  NaN   ->  NaN  Invalid_operation

+ddmng169 minmag  sNaN sNaN   ->  NaN  Invalid_operation

+ddmng170 minmag  NaN  sNaN   ->  NaN  Invalid_operation

+ddmng171 minmag -Inf  sNaN   ->  NaN  Invalid_operation

+ddmng172 minmag -1000 sNaN   ->  NaN  Invalid_operation

+ddmng173 minmag -1    sNaN   ->  NaN  Invalid_operation

+ddmng174 minmag -0    sNaN   ->  NaN  Invalid_operation

+ddmng175 minmag  0    sNaN   ->  NaN  Invalid_operation

+ddmng176 minmag  1    sNaN   ->  NaN  Invalid_operation

+ddmng177 minmag  1000 sNaN   ->  NaN  Invalid_operation

+ddmng178 minmag  Inf  sNaN   ->  NaN  Invalid_operation

+ddmng179 minmag  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddmng181 minmag  NaN9   -Inf   -> -Infinity

+ddmng182 minmag -NaN8    9990  ->  9990

+ddmng183 minmag  NaN71   Inf   ->  Infinity

+

+ddmng184 minmag  NaN1    NaN54 ->  NaN1

+ddmng185 minmag  NaN22  -NaN53 ->  NaN22

+ddmng186 minmag -NaN3    NaN6  -> -NaN3

+ddmng187 minmag -NaN44   NaN7  -> -NaN44

+

+ddmng188 minmag -Inf     NaN41 -> -Infinity

+ddmng189 minmag -9999   -NaN33 -> -9999

+ddmng190 minmag  Inf     NaN2  ->  Infinity

+

+ddmng191 minmag  sNaN99 -Inf    ->  NaN99 Invalid_operation

+ddmng192 minmag  sNaN98 -11     ->  NaN98 Invalid_operation

+ddmng193 minmag -sNaN97  NaN8   -> -NaN97 Invalid_operation

+ddmng194 minmag  sNaN69 sNaN94  ->  NaN69 Invalid_operation

+ddmng195 minmag  NaN95  sNaN93  ->  NaN93 Invalid_operation

+ddmng196 minmag -Inf    sNaN92  ->  NaN92 Invalid_operation

+ddmng197 minmag  088    sNaN91  ->  NaN91 Invalid_operation

+ddmng198 minmag  Inf   -sNaN90  -> -NaN90 Invalid_operation

+ddmng199 minmag  NaN    sNaN86  ->  NaN86 Invalid_operation

+

+-- old rounding checks

+ddmng221 minmag -12345678000 1  -> 1

+ddmng222 minmag 1 -12345678000  -> 1

+ddmng223 minmag -1234567800  1  -> 1

+ddmng224 minmag 1 -1234567800   -> 1

+ddmng225 minmag -1234567890  1  -> 1

+ddmng226 minmag 1 -1234567890   -> 1

+ddmng227 minmag -1234567891  1  -> 1

+ddmng228 minmag 1 -1234567891   -> 1

+ddmng229 minmag -12345678901 1  -> 1

+ddmng230 minmag 1 -12345678901  -> 1

+ddmng231 minmag -1234567896  1  -> 1

+ddmng232 minmag 1 -1234567896   -> 1

+ddmng233 minmag 1234567891  1   -> 1

+ddmng234 minmag 1 1234567891    -> 1

+ddmng235 minmag 12345678901 1   -> 1

+ddmng236 minmag 1 12345678901   -> 1

+ddmng237 minmag 1234567896  1   -> 1

+ddmng238 minmag 1 1234567896    -> 1

+

+-- from examples

+ddmng280 minmag '3'   '2'  ->  '2'

+ddmng281 minmag '-10' '3'  ->  '3'

+ddmng282 minmag '1.0' '1'  ->  '1.0'

+ddmng283 minmag '1' '1.0'  ->  '1.0'

+ddmng284 minmag '7' 'NaN'  ->  '7'

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+ddmng401 minmag  Inf    1.1     ->  1.1

+ddmng402 minmag  1.1    1       ->  1

+ddmng403 minmag  1      1.0     ->  1.0

+ddmng404 minmag  1.0    0.1     ->  0.1

+ddmng405 minmag  0.1    0.10    ->  0.10

+ddmng406 minmag  0.10   0.100   ->  0.100

+ddmng407 minmag  0.10   0       ->  0

+ddmng408 minmag  0      0.0     ->  0.0

+ddmng409 minmag  0.0   -0       -> -0

+ddmng410 minmag  0.0   -0.0     -> -0.0

+ddmng411 minmag  0.00  -0.0     -> -0.0

+ddmng412 minmag  0.0   -0.00    -> -0.00

+ddmng413 minmag  0     -0.0     -> -0.0

+ddmng414 minmag  0     -0       -> -0

+ddmng415 minmag -0.0   -0       -> -0

+ddmng416 minmag -0     -0.100   -> -0

+ddmng417 minmag -0.100 -0.10    -> -0.10

+ddmng418 minmag -0.10  -0.1     -> -0.1

+ddmng419 minmag -0.1   -1.0     -> -0.1

+ddmng420 minmag -1.0   -1       -> -1

+ddmng421 minmag -1     -1.1     -> -1

+ddmng423 minmag -1.1   -Inf     -> -1.1

+-- same with operands reversed

+ddmng431 minmag  1.1    Inf     ->  1.1

+ddmng432 minmag  1      1.1     ->  1

+ddmng433 minmag  1.0    1       ->  1.0

+ddmng434 minmag  0.1    1.0     ->  0.1

+ddmng435 minmag  0.10   0.1     ->  0.10

+ddmng436 minmag  0.100  0.10    ->  0.100

+ddmng437 minmag  0      0.10    ->  0

+ddmng438 minmag  0.0    0       ->  0.0

+ddmng439 minmag -0      0.0     -> -0

+ddmng440 minmag -0.0    0.0     -> -0.0

+ddmng441 minmag -0.0    0.00    -> -0.0

+ddmng442 minmag -0.00   0.0     -> -0.00

+ddmng443 minmag -0.0    0       -> -0.0

+ddmng444 minmag -0      0       -> -0

+ddmng445 minmag -0     -0.0     -> -0

+ddmng446 minmag -0.100 -0       -> -0

+ddmng447 minmag -0.10  -0.100   -> -0.10

+ddmng448 minmag -0.1   -0.10    -> -0.1

+ddmng449 minmag -1.0   -0.1     -> -0.1

+ddmng450 minmag -1     -1.0     -> -1

+ddmng451 minmag -1.1   -1       -> -1

+ddmng453 minmag -Inf   -1.1     -> -1.1

+-- largies

+ddmng460 minmag  1000   1E+3    ->  1000

+ddmng461 minmag  1E+3   1000    ->  1000

+ddmng462 minmag  1000  -1E+3    -> -1E+3

+ddmng463 minmag  1E+3   -384    -> -384

+ddmng464 minmag -384    1E+3    -> -384

+ddmng465 minmag -1E+3   1000    -> -1E+3

+ddmng466 minmag -384   -1E+3    -> -384

+ddmng467 minmag -1E+3   -384    -> -384

+

+-- subnormals

+ddmng510 minmag  1.00E-383       0  ->   0

+ddmng511 minmag  0.1E-383        0  ->   0

+ddmng512 minmag  0.10E-383       0  ->   0

+ddmng513 minmag  0.100E-383      0  ->   0

+ddmng514 minmag  0.01E-383       0  ->   0

+ddmng515 minmag  0.999E-383      0  ->   0

+ddmng516 minmag  0.099E-383      0  ->   0

+ddmng517 minmag  0.009E-383      0  ->   0

+ddmng518 minmag  0.001E-383      0  ->   0

+ddmng519 minmag  0.0009E-383     0  ->   0

+ddmng520 minmag  0.0001E-383     0  ->   0

+

+ddmng530 minmag -1.00E-383       0  ->   0

+ddmng531 minmag -0.1E-383        0  ->   0

+ddmng532 minmag -0.10E-383       0  ->   0

+ddmng533 minmag -0.100E-383      0  ->   0

+ddmng534 minmag -0.01E-383       0  ->   0

+ddmng535 minmag -0.999E-383      0  ->   0

+ddmng536 minmag -0.099E-383      0  ->   0

+ddmng537 minmag -0.009E-383      0  ->   0

+ddmng538 minmag -0.001E-383      0  ->   0

+ddmng539 minmag -0.0009E-383     0  ->   0

+ddmng540 minmag -0.0001E-383     0  ->   0

+

+

+-- Null tests

+ddmng900 minmag 10  # -> NaN Invalid_operation

+ddmng901 minmag  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddMinus.decTest b/Lib/test/decimaltestdata/ddMinus.decTest
new file mode 100644
index 0000000..07dfa7a
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddMinus.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- ddMinus.decTest -- decDouble 0-x                                   --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check

+ddmns001 minus       +7.50  -> -7.50

+

+-- Infinities

+ddmns011 minus  Infinity    -> -Infinity

+ddmns012 minus  -Infinity   -> Infinity

+

+-- NaNs, 0 payload

+ddmns021 minus         NaN  -> NaN

+ddmns022 minus        -NaN  -> -NaN

+ddmns023 minus        sNaN  -> NaN  Invalid_operation

+ddmns024 minus       -sNaN  -> -NaN Invalid_operation

+

+-- NaNs, non-0 payload

+ddmns031 minus       NaN13  -> NaN13

+ddmns032 minus      -NaN13  -> -NaN13

+ddmns033 minus      sNaN13  -> NaN13   Invalid_operation

+ddmns034 minus     -sNaN13  -> -NaN13  Invalid_operation

+ddmns035 minus       NaN70  -> NaN70

+ddmns036 minus      -NaN70  -> -NaN70

+ddmns037 minus      sNaN101 -> NaN101  Invalid_operation

+ddmns038 minus     -sNaN101 -> -NaN101 Invalid_operation

+

+-- finites

+ddmns101 minus          7   -> -7

+ddmns102 minus         -7   -> 7

+ddmns103 minus         75   -> -75

+ddmns104 minus        -75   -> 75

+ddmns105 minus       7.50   -> -7.50

+ddmns106 minus      -7.50   -> 7.50

+ddmns107 minus       7.500  -> -7.500

+ddmns108 minus      -7.500  -> 7.500

+

+-- zeros

+ddmns111 minus          0   -> 0

+ddmns112 minus         -0   -> 0

+ddmns113 minus       0E+4   -> 0E+4

+ddmns114 minus      -0E+4   -> 0E+4

+ddmns115 minus     0.0000   -> 0.0000

+ddmns116 minus    -0.0000   -> 0.0000

+ddmns117 minus      0E-141  -> 0E-141

+ddmns118 minus     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+ddmns121 minus  2682682682682682         -> -2682682682682682

+ddmns122 minus  -2682682682682682        -> 2682682682682682

+ddmns123 minus  1341341341341341         -> -1341341341341341

+ddmns124 minus  -1341341341341341        -> 1341341341341341

+

+-- Nmax, Nmin, Ntiny

+ddmns131 minus  9.999999999999999E+384   -> -9.999999999999999E+384

+ddmns132 minus  1E-383                   -> -1E-383

+ddmns133 minus  1.000000000000000E-383   -> -1.000000000000000E-383

+ddmns134 minus  1E-398                   -> -1E-398 Subnormal

+

+ddmns135 minus  -1E-398                  -> 1E-398 Subnormal

+ddmns136 minus  -1.000000000000000E-383  -> 1.000000000000000E-383

+ddmns137 minus  -1E-383                  -> 1E-383

+ddmns138 minus  -9.999999999999999E+384  -> 9.999999999999999E+384

diff --git a/Lib/test/decimaltestdata/ddMultiply.decTest b/Lib/test/decimaltestdata/ddMultiply.decTest
new file mode 100644
index 0000000..f506ea2
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddMultiply.decTest
@@ -0,0 +1,546 @@
+------------------------------------------------------------------------

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

+

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

+

+-- power-of-ten edge cases

+ddmul1001 multiply  1      10               -> 10

+ddmul1002 multiply  1      100              -> 100

+ddmul1003 multiply  1      1000             -> 1000

+ddmul1004 multiply  1      10000            -> 10000

+ddmul1005 multiply  1      100000           -> 100000

+ddmul1006 multiply  1      1000000          -> 1000000

+ddmul1007 multiply  1      10000000         -> 10000000

+ddmul1008 multiply  1      100000000        -> 100000000

+ddmul1009 multiply  1      1000000000       -> 1000000000

+ddmul1010 multiply  1      10000000000      -> 10000000000

+ddmul1011 multiply  1      100000000000     -> 100000000000

+ddmul1012 multiply  1      1000000000000    -> 1000000000000

+ddmul1013 multiply  1      10000000000000   -> 10000000000000

+ddmul1014 multiply  1      100000000000000  -> 100000000000000

+ddmul1015 multiply  1      1000000000000000 -> 1000000000000000

+ddmul1021 multiply  10     1                -> 10

+ddmul1022 multiply  10     10               -> 100

+ddmul1023 multiply  10     100              -> 1000

+ddmul1024 multiply  10     1000             -> 10000

+ddmul1025 multiply  10     10000            -> 100000

+ddmul1026 multiply  10     100000           -> 1000000

+ddmul1027 multiply  10     1000000          -> 10000000

+ddmul1028 multiply  10     10000000         -> 100000000

+ddmul1029 multiply  10     100000000        -> 1000000000

+ddmul1030 multiply  10     1000000000       -> 10000000000

+ddmul1031 multiply  10     10000000000      -> 100000000000

+ddmul1032 multiply  10     100000000000     -> 1000000000000

+ddmul1033 multiply  10     1000000000000    -> 10000000000000

+ddmul1034 multiply  10     10000000000000   -> 100000000000000

+ddmul1035 multiply  10     100000000000000  -> 1000000000000000

+ddmul1041 multiply  100    0.1              -> 10.0

+ddmul1042 multiply  100    1                -> 100

+ddmul1043 multiply  100    10               -> 1000

+ddmul1044 multiply  100    100              -> 10000

+ddmul1045 multiply  100    1000             -> 100000

+ddmul1046 multiply  100    10000            -> 1000000

+ddmul1047 multiply  100    100000           -> 10000000

+ddmul1048 multiply  100    1000000          -> 100000000

+ddmul1049 multiply  100    10000000         -> 1000000000

+ddmul1050 multiply  100    100000000        -> 10000000000

+ddmul1051 multiply  100    1000000000       -> 100000000000

+ddmul1052 multiply  100    10000000000      -> 1000000000000

+ddmul1053 multiply  100    100000000000     -> 10000000000000

+ddmul1054 multiply  100    1000000000000    -> 100000000000000

+ddmul1055 multiply  100    10000000000000   -> 1000000000000000

+ddmul1061 multiply  1000   0.01             -> 10.00

+ddmul1062 multiply  1000   0.1              -> 100.0

+ddmul1063 multiply  1000   1                -> 1000

+ddmul1064 multiply  1000   10               -> 10000

+ddmul1065 multiply  1000   100              -> 100000

+ddmul1066 multiply  1000   1000             -> 1000000

+ddmul1067 multiply  1000   10000            -> 10000000

+ddmul1068 multiply  1000   100000           -> 100000000

+ddmul1069 multiply  1000   1000000          -> 1000000000

+ddmul1070 multiply  1000   10000000         -> 10000000000

+ddmul1071 multiply  1000   100000000        -> 100000000000

+ddmul1072 multiply  1000   1000000000       -> 1000000000000

+ddmul1073 multiply  1000   10000000000      -> 10000000000000

+ddmul1074 multiply  1000   100000000000     -> 100000000000000

+ddmul1075 multiply  1000   1000000000000    -> 1000000000000000

+ddmul1081 multiply  10000  0.001            -> 10.000

+ddmul1082 multiply  10000  0.01             -> 100.00

+ddmul1083 multiply  10000  0.1              -> 1000.0

+ddmul1084 multiply  10000  1                -> 10000

+ddmul1085 multiply  10000  10               -> 100000

+ddmul1086 multiply  10000  100              -> 1000000

+ddmul1087 multiply  10000  1000             -> 10000000

+ddmul1088 multiply  10000  10000            -> 100000000

+ddmul1089 multiply  10000  100000           -> 1000000000

+ddmul1090 multiply  10000  1000000          -> 10000000000

+ddmul1091 multiply  10000  10000000         -> 100000000000

+ddmul1092 multiply  10000  100000000        -> 1000000000000

+ddmul1093 multiply  10000  1000000000       -> 10000000000000

+ddmul1094 multiply  10000  10000000000      -> 100000000000000

+ddmul1095 multiply  10000  100000000000     -> 1000000000000000

+

+ddmul1097 multiply  10000   99999999999     ->  999999999990000

+ddmul1098 multiply  10000   99999999999     ->  999999999990000

+

+

+

+

+-- Null tests

+ddmul9990 multiply 10  # -> NaN Invalid_operation

+ddmul9991 multiply  # 10 -> NaN Invalid_operation

+

+

+

+

diff --git a/Lib/test/decimaltestdata/ddNextMinus.decTest b/Lib/test/decimaltestdata/ddNextMinus.decTest
new file mode 100644
index 0000000..b9b0de5
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddNextMinus.decTest
@@ -0,0 +1,126 @@
+------------------------------------------------------------------------

+-- ddNextMinus.decTest -- decDouble next that is less [754r nextdown] --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+ddnextm001 nextminus  0.9999999999999995 ->   0.9999999999999994

+ddnextm002 nextminus  0.9999999999999996 ->   0.9999999999999995

+ddnextm003 nextminus  0.9999999999999997 ->   0.9999999999999996

+ddnextm004 nextminus  0.9999999999999998 ->   0.9999999999999997

+ddnextm005 nextminus  0.9999999999999999 ->   0.9999999999999998

+ddnextm006 nextminus  1.000000000000000  ->   0.9999999999999999

+ddnextm007 nextminus  1.0         ->   0.9999999999999999

+ddnextm008 nextminus  1           ->   0.9999999999999999

+ddnextm009 nextminus  1.000000000000001  ->   1.000000000000000

+ddnextm010 nextminus  1.000000000000002  ->   1.000000000000001

+ddnextm011 nextminus  1.000000000000003  ->   1.000000000000002

+ddnextm012 nextminus  1.000000000000004  ->   1.000000000000003

+ddnextm013 nextminus  1.000000000000005  ->   1.000000000000004

+ddnextm014 nextminus  1.000000000000006  ->   1.000000000000005

+ddnextm015 nextminus  1.000000000000007  ->   1.000000000000006

+ddnextm016 nextminus  1.000000000000008  ->   1.000000000000007

+ddnextm017 nextminus  1.000000000000009  ->   1.000000000000008

+ddnextm018 nextminus  1.000000000000010  ->   1.000000000000009

+ddnextm019 nextminus  1.000000000000011  ->   1.000000000000010

+ddnextm020 nextminus  1.000000000000012  ->   1.000000000000011

+

+ddnextm021 nextminus -0.9999999999999995 ->  -0.9999999999999996

+ddnextm022 nextminus -0.9999999999999996 ->  -0.9999999999999997

+ddnextm023 nextminus -0.9999999999999997 ->  -0.9999999999999998

+ddnextm024 nextminus -0.9999999999999998 ->  -0.9999999999999999

+ddnextm025 nextminus -0.9999999999999999 ->  -1.000000000000000

+ddnextm026 nextminus -1.000000000000000  ->  -1.000000000000001

+ddnextm027 nextminus -1.0         ->  -1.000000000000001

+ddnextm028 nextminus -1           ->  -1.000000000000001

+ddnextm029 nextminus -1.000000000000001  ->  -1.000000000000002

+ddnextm030 nextminus -1.000000000000002  ->  -1.000000000000003

+ddnextm031 nextminus -1.000000000000003  ->  -1.000000000000004

+ddnextm032 nextminus -1.000000000000004  ->  -1.000000000000005

+ddnextm033 nextminus -1.000000000000005  ->  -1.000000000000006

+ddnextm034 nextminus -1.000000000000006  ->  -1.000000000000007

+ddnextm035 nextminus -1.000000000000007  ->  -1.000000000000008

+ddnextm036 nextminus -1.000000000000008  ->  -1.000000000000009

+ddnextm037 nextminus -1.000000000000009  ->  -1.000000000000010

+ddnextm038 nextminus -1.000000000000010  ->  -1.000000000000011

+ddnextm039 nextminus -1.000000000000011  ->  -1.000000000000012

+

+-- ultra-tiny inputs

+ddnextm062 nextminus  1E-398         ->   0E-398

+ddnextm065 nextminus -1E-398         ->  -2E-398

+

+-- Zeros

+ddnextm100 nextminus -0           -> -1E-398

+ddnextm101 nextminus  0           -> -1E-398

+ddnextm102 nextminus  0.00        -> -1E-398

+ddnextm103 nextminus -0.00        -> -1E-398

+ddnextm104 nextminus  0E-300      -> -1E-398

+ddnextm105 nextminus  0E+300      -> -1E-398

+ddnextm106 nextminus  0E+30000    -> -1E-398

+ddnextm107 nextminus -0E+30000    -> -1E-398

+

+-- specials

+ddnextm150 nextminus   Inf    ->  9.999999999999999E+384

+ddnextm151 nextminus  -Inf    -> -Infinity

+ddnextm152 nextminus   NaN    ->  NaN

+ddnextm153 nextminus  sNaN    ->  NaN   Invalid_operation

+ddnextm154 nextminus   NaN77  ->  NaN77

+ddnextm155 nextminus  sNaN88  ->  NaN88 Invalid_operation

+ddnextm156 nextminus  -NaN    -> -NaN

+ddnextm157 nextminus -sNaN    -> -NaN   Invalid_operation

+ddnextm158 nextminus  -NaN77  -> -NaN77

+ddnextm159 nextminus -sNaN88  -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+ddnextm170 nextminus  9.999999999999999E+384   -> 9.999999999999998E+384

+ddnextm171 nextminus  9.999999999999998E+384   -> 9.999999999999997E+384

+ddnextm172 nextminus  1E-383                   -> 9.99999999999999E-384

+ddnextm173 nextminus  1.000000000000000E-383   -> 9.99999999999999E-384

+ddnextm174 nextminus  9E-398                   -> 8E-398

+ddnextm175 nextminus  9.9E-397                 -> 9.8E-397

+ddnextm176 nextminus  9.99999999999E-387       -> 9.99999999998E-387

+ddnextm177 nextminus  9.99999999999999E-384    -> 9.99999999999998E-384

+ddnextm178 nextminus  9.99999999999998E-384    -> 9.99999999999997E-384

+ddnextm179 nextminus  9.99999999999997E-384    -> 9.99999999999996E-384

+ddnextm180 nextminus  0E-398                   -> -1E-398

+ddnextm181 nextminus  1E-398                   -> 0E-398

+ddnextm182 nextminus  2E-398                   -> 1E-398

+

+ddnextm183 nextminus  -0E-398                  -> -1E-398

+ddnextm184 nextminus  -1E-398                  -> -2E-398

+ddnextm185 nextminus  -2E-398                  -> -3E-398

+ddnextm186 nextminus  -10E-398                 -> -1.1E-397

+ddnextm187 nextminus  -100E-398                -> -1.01E-396

+ddnextm188 nextminus  -100000E-398             -> -1.00001E-393

+ddnextm189 nextminus  -1.00000000000E-383      -> -1.000000000000001E-383

+ddnextm190 nextminus  -1.000000000000000E-383  -> -1.000000000000001E-383

+ddnextm191 nextminus  -1E-383                  -> -1.000000000000001E-383

+ddnextm192 nextminus  -9.999999999999998E+384  -> -9.999999999999999E+384

+ddnextm193 nextminus  -9.999999999999999E+384  -> -Infinity

+

+-- Null tests

+ddnextm900 nextminus  # -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/ddNextPlus.decTest b/Lib/test/decimaltestdata/ddNextPlus.decTest
new file mode 100644
index 0000000..2bb2641
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddNextPlus.decTest
@@ -0,0 +1,124 @@
+------------------------------------------------------------------------

+-- ddNextPlus.decTest -- decDouble next that is greater [754r nextup] --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+ddnextp001 nextplus  0.9999999999999995 ->   0.9999999999999996

+ddnextp002 nextplus  0.9999999999999996 ->   0.9999999999999997

+ddnextp003 nextplus  0.9999999999999997 ->   0.9999999999999998

+ddnextp004 nextplus  0.9999999999999998 ->   0.9999999999999999

+ddnextp005 nextplus  0.9999999999999999 ->   1.000000000000000

+ddnextp006 nextplus  1.000000000000000  ->   1.000000000000001

+ddnextp007 nextplus  1.0         ->   1.000000000000001

+ddnextp008 nextplus  1           ->   1.000000000000001

+ddnextp009 nextplus  1.000000000000001  ->   1.000000000000002

+ddnextp010 nextplus  1.000000000000002  ->   1.000000000000003

+ddnextp011 nextplus  1.000000000000003  ->   1.000000000000004

+ddnextp012 nextplus  1.000000000000004  ->   1.000000000000005

+ddnextp013 nextplus  1.000000000000005  ->   1.000000000000006

+ddnextp014 nextplus  1.000000000000006  ->   1.000000000000007

+ddnextp015 nextplus  1.000000000000007  ->   1.000000000000008

+ddnextp016 nextplus  1.000000000000008  ->   1.000000000000009

+ddnextp017 nextplus  1.000000000000009  ->   1.000000000000010

+ddnextp018 nextplus  1.000000000000010  ->   1.000000000000011

+ddnextp019 nextplus  1.000000000000011  ->   1.000000000000012

+

+ddnextp021 nextplus -0.9999999999999995 ->  -0.9999999999999994

+ddnextp022 nextplus -0.9999999999999996 ->  -0.9999999999999995

+ddnextp023 nextplus -0.9999999999999997 ->  -0.9999999999999996

+ddnextp024 nextplus -0.9999999999999998 ->  -0.9999999999999997

+ddnextp025 nextplus -0.9999999999999999 ->  -0.9999999999999998

+ddnextp026 nextplus -1.000000000000000  ->  -0.9999999999999999

+ddnextp027 nextplus -1.0         ->  -0.9999999999999999

+ddnextp028 nextplus -1           ->  -0.9999999999999999

+ddnextp029 nextplus -1.000000000000001  ->  -1.000000000000000

+ddnextp030 nextplus -1.000000000000002  ->  -1.000000000000001

+ddnextp031 nextplus -1.000000000000003  ->  -1.000000000000002

+ddnextp032 nextplus -1.000000000000004  ->  -1.000000000000003

+ddnextp033 nextplus -1.000000000000005  ->  -1.000000000000004

+ddnextp034 nextplus -1.000000000000006  ->  -1.000000000000005

+ddnextp035 nextplus -1.000000000000007  ->  -1.000000000000006

+ddnextp036 nextplus -1.000000000000008  ->  -1.000000000000007

+ddnextp037 nextplus -1.000000000000009  ->  -1.000000000000008

+ddnextp038 nextplus -1.000000000000010  ->  -1.000000000000009

+ddnextp039 nextplus -1.000000000000011  ->  -1.000000000000010

+ddnextp040 nextplus -1.000000000000012  ->  -1.000000000000011

+

+-- Zeros

+ddnextp100 nextplus  0           ->  1E-398

+ddnextp101 nextplus  0.00        ->  1E-398

+ddnextp102 nextplus  0E-300      ->  1E-398

+ddnextp103 nextplus  0E+300      ->  1E-398

+ddnextp104 nextplus  0E+30000    ->  1E-398

+ddnextp105 nextplus -0           ->  1E-398

+ddnextp106 nextplus -0.00        ->  1E-398

+ddnextp107 nextplus -0E-300      ->  1E-398

+ddnextp108 nextplus -0E+300      ->  1E-398

+ddnextp109 nextplus -0E+30000    ->  1E-398

+

+-- specials

+ddnextp150 nextplus   Inf    ->  Infinity

+ddnextp151 nextplus  -Inf    -> -9.999999999999999E+384

+ddnextp152 nextplus   NaN    ->  NaN

+ddnextp153 nextplus  sNaN    ->  NaN   Invalid_operation

+ddnextp154 nextplus   NaN77  ->  NaN77

+ddnextp155 nextplus  sNaN88  ->  NaN88 Invalid_operation

+ddnextp156 nextplus  -NaN    -> -NaN

+ddnextp157 nextplus -sNaN    -> -NaN   Invalid_operation

+ddnextp158 nextplus  -NaN77  -> -NaN77

+ddnextp159 nextplus -sNaN88  -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+ddnextp170 nextplus  -9.999999999999999E+384  -> -9.999999999999998E+384

+ddnextp171 nextplus  -9.999999999999998E+384  -> -9.999999999999997E+384

+ddnextp172 nextplus  -1E-383                  -> -9.99999999999999E-384

+ddnextp173 nextplus  -1.000000000000000E-383  -> -9.99999999999999E-384

+ddnextp174 nextplus  -9E-398                  -> -8E-398

+ddnextp175 nextplus  -9.9E-397                -> -9.8E-397

+ddnextp176 nextplus  -9.99999999999E-387      -> -9.99999999998E-387

+ddnextp177 nextplus  -9.99999999999999E-384   -> -9.99999999999998E-384

+ddnextp178 nextplus  -9.99999999999998E-384   -> -9.99999999999997E-384

+ddnextp179 nextplus  -9.99999999999997E-384   -> -9.99999999999996E-384

+ddnextp180 nextplus  -0E-398                  ->  1E-398

+ddnextp181 nextplus  -1E-398                  -> -0E-398

+ddnextp182 nextplus  -2E-398                  -> -1E-398

+

+ddnextp183 nextplus   0E-398                  ->  1E-398

+ddnextp184 nextplus   1E-398                  ->  2E-398

+ddnextp185 nextplus   2E-398                  ->  3E-398

+ddnextp186 nextplus   10E-398                 ->  1.1E-397

+ddnextp187 nextplus   100E-398                ->  1.01E-396

+ddnextp188 nextplus   100000E-398             ->  1.00001E-393

+ddnextp189 nextplus   1.00000000000E-383      ->  1.000000000000001E-383

+ddnextp190 nextplus   1.000000000000000E-383  ->  1.000000000000001E-383

+ddnextp191 nextplus   1E-383                  ->  1.000000000000001E-383

+ddnextp192 nextplus   9.999999999999998E+384  ->  9.999999999999999E+384

+ddnextp193 nextplus   9.999999999999999E+384  ->  Infinity

+

+-- Null tests

+ddnextp900 nextplus  # -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/ddNextToward.decTest b/Lib/test/decimaltestdata/ddNextToward.decTest
new file mode 100644
index 0000000..80e4ac6
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddNextToward.decTest
@@ -0,0 +1,374 @@
+------------------------------------------------------------------------

+-- ddNextToward.decTest -- decDouble next toward rhs [754r nextafter] --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check with a scattering of numerics

+ddnextt001 nexttoward   10    10   ->  10

+ddnextt002 nexttoward  -10   -10   -> -10

+ddnextt003 nexttoward   1     10   ->  1.000000000000001

+ddnextt004 nexttoward   1    -10   ->  0.9999999999999999

+ddnextt005 nexttoward  -1     10   -> -0.9999999999999999

+ddnextt006 nexttoward  -1    -10   -> -1.000000000000001

+ddnextt007 nexttoward   0     10   ->  1E-398       Underflow Subnormal Inexact Rounded

+ddnextt008 nexttoward   0    -10   -> -1E-398       Underflow Subnormal Inexact Rounded

+ddnextt009 nexttoward   9.999999999999999E+384 +Infinity ->  Infinity Overflow Inexact Rounded

+ddnextt010 nexttoward  -9.999999999999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded

+ddnextt011 nexttoward       9.999999999999999  10  ->  10.00000000000000

+ddnextt012 nexttoward   10  9.999999999999999      ->  9.999999999999999

+ddnextt013 nexttoward      -9.999999999999999 -10  -> -10.00000000000000

+ddnextt014 nexttoward  -10 -9.999999999999999      -> -9.999999999999999

+ddnextt015 nexttoward       9.999999999999998  10  ->  9.999999999999999

+ddnextt016 nexttoward   10  9.999999999999998      ->  9.999999999999999

+ddnextt017 nexttoward      -9.999999999999998 -10  -> -9.999999999999999

+ddnextt018 nexttoward  -10 -9.999999999999998      -> -9.999999999999999

+

+------- lhs=rhs

+-- finites

+ddnextt101 nexttoward          7       7 ->  7

+ddnextt102 nexttoward         -7      -7 -> -7

+ddnextt103 nexttoward         75      75 ->  75

+ddnextt104 nexttoward        -75     -75 -> -75

+ddnextt105 nexttoward       7.50     7.5 ->  7.50

+ddnextt106 nexttoward      -7.50   -7.50 -> -7.50

+ddnextt107 nexttoward       7.500 7.5000 ->  7.500

+ddnextt108 nexttoward      -7.500   -7.5 -> -7.500

+

+-- zeros

+ddnextt111 nexttoward          0       0 ->  0

+ddnextt112 nexttoward         -0      -0 -> -0

+ddnextt113 nexttoward       0E+4       0 ->  0E+4

+ddnextt114 nexttoward      -0E+4      -0 -> -0E+4

+ddnextt115 nexttoward     0.00000000000   0.000000000000 ->  0E-11

+ddnextt116 nexttoward    -0.00000000000  -0.00           -> -0E-11

+ddnextt117 nexttoward      0E-141      0 ->  0E-141

+ddnextt118 nexttoward     -0E-141   -000 -> -0E-141

+

+-- full coefficients, alternating bits

+ddnextt121 nexttoward   268268268    268268268 ->   268268268

+ddnextt122 nexttoward  -268268268   -268268268 ->  -268268268

+ddnextt123 nexttoward   134134134    134134134 ->   134134134

+ddnextt124 nexttoward  -134134134   -134134134 ->  -134134134

+

+-- Nmax, Nmin, Ntiny

+ddnextt131 nexttoward  9.999999999999999E+384  9.999999999999999E+384   ->   9.999999999999999E+384

+ddnextt132 nexttoward  1E-383           1E-383            ->   1E-383

+ddnextt133 nexttoward  1.000000000000000E-383  1.000000000000000E-383   ->   1.000000000000000E-383

+ddnextt134 nexttoward  1E-398           1E-398            ->   1E-398

+

+ddnextt135 nexttoward  -1E-398          -1E-398           ->  -1E-398

+ddnextt136 nexttoward  -1.000000000000000E-383 -1.000000000000000E-383  ->  -1.000000000000000E-383

+ddnextt137 nexttoward  -1E-383          -1E-383           ->  -1E-383

+ddnextt138 nexttoward  -9.999999999999999E+384 -9.999999999999999E+384  ->  -9.999999999999999E+384

+

+------- lhs<rhs

+ddnextt201 nexttoward  0.9999999999999995 Infinity ->   0.9999999999999996

+ddnextt202 nexttoward  0.9999999999999996 Infinity ->   0.9999999999999997

+ddnextt203 nexttoward  0.9999999999999997 Infinity ->   0.9999999999999998

+ddnextt204 nexttoward  0.9999999999999998 Infinity ->   0.9999999999999999

+ddnextt205 nexttoward  0.9999999999999999 Infinity ->   1.000000000000000

+ddnextt206 nexttoward  1.000000000000000  Infinity ->   1.000000000000001

+ddnextt207 nexttoward  1.0         Infinity ->   1.000000000000001

+ddnextt208 nexttoward  1           Infinity ->   1.000000000000001

+ddnextt209 nexttoward  1.000000000000001  Infinity ->   1.000000000000002

+ddnextt210 nexttoward  1.000000000000002  Infinity ->   1.000000000000003

+ddnextt211 nexttoward  1.000000000000003  Infinity ->   1.000000000000004

+ddnextt212 nexttoward  1.000000000000004  Infinity ->   1.000000000000005

+ddnextt213 nexttoward  1.000000000000005  Infinity ->   1.000000000000006

+ddnextt214 nexttoward  1.000000000000006  Infinity ->   1.000000000000007

+ddnextt215 nexttoward  1.000000000000007  Infinity ->   1.000000000000008

+ddnextt216 nexttoward  1.000000000000008  Infinity ->   1.000000000000009

+ddnextt217 nexttoward  1.000000000000009  Infinity ->   1.000000000000010

+ddnextt218 nexttoward  1.000000000000010  Infinity ->   1.000000000000011

+ddnextt219 nexttoward  1.000000000000011  Infinity ->   1.000000000000012

+

+ddnextt221 nexttoward -0.9999999999999995 Infinity ->  -0.9999999999999994

+ddnextt222 nexttoward -0.9999999999999996 Infinity ->  -0.9999999999999995

+ddnextt223 nexttoward -0.9999999999999997 Infinity ->  -0.9999999999999996

+ddnextt224 nexttoward -0.9999999999999998 Infinity ->  -0.9999999999999997

+ddnextt225 nexttoward -0.9999999999999999 Infinity ->  -0.9999999999999998

+ddnextt226 nexttoward -1.000000000000000  Infinity ->  -0.9999999999999999

+ddnextt227 nexttoward -1.0         Infinity ->  -0.9999999999999999

+ddnextt228 nexttoward -1           Infinity ->  -0.9999999999999999

+ddnextt229 nexttoward -1.000000000000001  Infinity ->  -1.000000000000000

+ddnextt230 nexttoward -1.000000000000002  Infinity ->  -1.000000000000001

+ddnextt231 nexttoward -1.000000000000003  Infinity ->  -1.000000000000002

+ddnextt232 nexttoward -1.000000000000004  Infinity ->  -1.000000000000003

+ddnextt233 nexttoward -1.000000000000005  Infinity ->  -1.000000000000004

+ddnextt234 nexttoward -1.000000000000006  Infinity ->  -1.000000000000005

+ddnextt235 nexttoward -1.000000000000007  Infinity ->  -1.000000000000006

+ddnextt236 nexttoward -1.000000000000008  Infinity ->  -1.000000000000007

+ddnextt237 nexttoward -1.000000000000009  Infinity ->  -1.000000000000008

+ddnextt238 nexttoward -1.000000000000010  Infinity ->  -1.000000000000009

+ddnextt239 nexttoward -1.000000000000011  Infinity ->  -1.000000000000010

+ddnextt240 nexttoward -1.000000000000012  Infinity ->  -1.000000000000011

+

+-- Zeros

+ddnextt300 nexttoward  0           Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt301 nexttoward  0.00        Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt302 nexttoward  0E-300      Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt303 nexttoward  0E+300      Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt304 nexttoward  0E+30000    Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt305 nexttoward -0           Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt306 nexttoward -0.00        Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt307 nexttoward -0E-300      Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt308 nexttoward -0E+300      Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+ddnextt309 nexttoward -0E+30000    Infinity ->  1E-398              Underflow Subnormal Inexact Rounded

+

+-- specials

+ddnextt350 nexttoward   Inf    Infinity ->  Infinity

+ddnextt351 nexttoward  -Inf    Infinity -> -9.999999999999999E+384

+ddnextt352 nexttoward   NaN    Infinity ->  NaN

+ddnextt353 nexttoward  sNaN    Infinity ->  NaN   Invalid_operation

+ddnextt354 nexttoward   NaN77  Infinity ->  NaN77

+ddnextt355 nexttoward  sNaN88  Infinity ->  NaN88 Invalid_operation

+ddnextt356 nexttoward  -NaN    Infinity -> -NaN

+ddnextt357 nexttoward -sNaN    Infinity -> -NaN   Invalid_operation

+ddnextt358 nexttoward  -NaN77  Infinity -> -NaN77

+ddnextt359 nexttoward -sNaN88  Infinity -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+ddnextt370 nexttoward  -9.999999999999999E+384  Infinity  -> -9.999999999999998E+384

+ddnextt371 nexttoward  -9.999999999999998E+384  Infinity  -> -9.999999999999997E+384

+ddnextt372 nexttoward  -1E-383                  Infinity  -> -9.99999999999999E-384  Underflow Subnormal Inexact Rounded

+ddnextt373 nexttoward  -1.000000000000000E-383  Infinity  -> -9.99999999999999E-384  Underflow Subnormal Inexact Rounded

+ddnextt374 nexttoward  -9E-398                  Infinity  -> -8E-398                 Underflow Subnormal Inexact Rounded

+ddnextt375 nexttoward  -9.9E-397                Infinity  -> -9.8E-397               Underflow Subnormal Inexact Rounded

+ddnextt376 nexttoward  -9.99999999999E-387      Infinity  -> -9.99999999998E-387     Underflow Subnormal Inexact Rounded

+ddnextt377 nexttoward  -9.99999999999999E-384   Infinity  -> -9.99999999999998E-384  Underflow Subnormal Inexact Rounded

+ddnextt378 nexttoward  -9.99999999999998E-384   Infinity  -> -9.99999999999997E-384  Underflow Subnormal Inexact Rounded

+ddnextt379 nexttoward  -9.99999999999997E-384   Infinity  -> -9.99999999999996E-384  Underflow Subnormal Inexact Rounded

+ddnextt380 nexttoward  -0E-398                  Infinity  ->  1E-398                 Underflow Subnormal Inexact Rounded

+ddnextt381 nexttoward  -1E-398                  Infinity  -> -0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddnextt382 nexttoward  -2E-398                  Infinity  -> -1E-398                 Underflow Subnormal Inexact Rounded

+

+ddnextt383 nexttoward   0E-398                  Infinity  ->  1E-398                 Underflow Subnormal Inexact Rounded

+ddnextt384 nexttoward   1E-398                  Infinity  ->  2E-398                 Underflow Subnormal Inexact Rounded

+ddnextt385 nexttoward   2E-398                  Infinity  ->  3E-398                 Underflow Subnormal Inexact Rounded

+ddnextt386 nexttoward   10E-398                 Infinity  ->  1.1E-397               Underflow Subnormal Inexact Rounded

+ddnextt387 nexttoward   100E-398                Infinity  ->  1.01E-396              Underflow Subnormal Inexact Rounded

+ddnextt388 nexttoward   100000E-398             Infinity  ->  1.00001E-393           Underflow Subnormal Inexact Rounded

+ddnextt389 nexttoward   1.00000000000E-383      Infinity  ->  1.000000000000001E-383

+ddnextt390 nexttoward   1.000000000000000E-383  Infinity  ->  1.000000000000001E-383

+ddnextt391 nexttoward   1E-383                  Infinity  ->  1.000000000000001E-383

+ddnextt392 nexttoward   9.999999999999997E+384  Infinity  ->  9.999999999999998E+384

+ddnextt393 nexttoward   9.999999999999998E+384  Infinity  ->  9.999999999999999E+384

+ddnextt394 nexttoward   9.999999999999999E+384  Infinity  ->  Infinity               Overflow Inexact Rounded

+

+------- lhs>rhs

+ddnextt401 nexttoward  0.9999999999999995  -Infinity ->   0.9999999999999994

+ddnextt402 nexttoward  0.9999999999999996  -Infinity ->   0.9999999999999995

+ddnextt403 nexttoward  0.9999999999999997  -Infinity ->   0.9999999999999996

+ddnextt404 nexttoward  0.9999999999999998  -Infinity ->   0.9999999999999997

+ddnextt405 nexttoward  0.9999999999999999  -Infinity ->   0.9999999999999998

+ddnextt406 nexttoward  1.000000000000000   -Infinity ->   0.9999999999999999

+ddnextt407 nexttoward  1.0          -Infinity ->   0.9999999999999999

+ddnextt408 nexttoward  1            -Infinity ->   0.9999999999999999

+ddnextt409 nexttoward  1.000000000000001   -Infinity ->   1.000000000000000

+ddnextt410 nexttoward  1.000000000000002   -Infinity ->   1.000000000000001

+ddnextt411 nexttoward  1.000000000000003   -Infinity ->   1.000000000000002

+ddnextt412 nexttoward  1.000000000000004   -Infinity ->   1.000000000000003

+ddnextt413 nexttoward  1.000000000000005   -Infinity ->   1.000000000000004

+ddnextt414 nexttoward  1.000000000000006   -Infinity ->   1.000000000000005

+ddnextt415 nexttoward  1.000000000000007   -Infinity ->   1.000000000000006

+ddnextt416 nexttoward  1.000000000000008   -Infinity ->   1.000000000000007

+ddnextt417 nexttoward  1.000000000000009   -Infinity ->   1.000000000000008

+ddnextt418 nexttoward  1.000000000000010   -Infinity ->   1.000000000000009

+ddnextt419 nexttoward  1.000000000000011   -Infinity ->   1.000000000000010

+ddnextt420 nexttoward  1.000000000000012   -Infinity ->   1.000000000000011

+

+ddnextt421 nexttoward -0.9999999999999995  -Infinity ->  -0.9999999999999996

+ddnextt422 nexttoward -0.9999999999999996  -Infinity ->  -0.9999999999999997

+ddnextt423 nexttoward -0.9999999999999997  -Infinity ->  -0.9999999999999998

+ddnextt424 nexttoward -0.9999999999999998  -Infinity ->  -0.9999999999999999

+ddnextt425 nexttoward -0.9999999999999999  -Infinity ->  -1.000000000000000

+ddnextt426 nexttoward -1.000000000000000   -Infinity ->  -1.000000000000001

+ddnextt427 nexttoward -1.0          -Infinity ->  -1.000000000000001

+ddnextt428 nexttoward -1            -Infinity ->  -1.000000000000001

+ddnextt429 nexttoward -1.000000000000001   -Infinity ->  -1.000000000000002

+ddnextt430 nexttoward -1.000000000000002   -Infinity ->  -1.000000000000003

+ddnextt431 nexttoward -1.000000000000003   -Infinity ->  -1.000000000000004

+ddnextt432 nexttoward -1.000000000000004   -Infinity ->  -1.000000000000005

+ddnextt433 nexttoward -1.000000000000005   -Infinity ->  -1.000000000000006

+ddnextt434 nexttoward -1.000000000000006   -Infinity ->  -1.000000000000007

+ddnextt435 nexttoward -1.000000000000007   -Infinity ->  -1.000000000000008

+ddnextt436 nexttoward -1.000000000000008   -Infinity ->  -1.000000000000009

+ddnextt437 nexttoward -1.000000000000009   -Infinity ->  -1.000000000000010

+ddnextt438 nexttoward -1.000000000000010   -Infinity ->  -1.000000000000011

+ddnextt439 nexttoward -1.000000000000011   -Infinity ->  -1.000000000000012

+

+-- Zeros

+ddnextt500 nexttoward -0            -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded

+ddnextt501 nexttoward  0            -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded

+ddnextt502 nexttoward  0.00         -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded

+ddnextt503 nexttoward -0.00         -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded

+ddnextt504 nexttoward  0E-300       -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded

+ddnextt505 nexttoward  0E+300       -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded

+ddnextt506 nexttoward  0E+30000     -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded

+ddnextt507 nexttoward -0E+30000     -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded

+

+-- specials

+ddnextt550 nexttoward   Inf     -Infinity ->  9.999999999999999E+384

+ddnextt551 nexttoward  -Inf     -Infinity -> -Infinity

+ddnextt552 nexttoward   NaN     -Infinity ->  NaN

+ddnextt553 nexttoward  sNaN     -Infinity ->  NaN   Invalid_operation

+ddnextt554 nexttoward   NaN77   -Infinity ->  NaN77

+ddnextt555 nexttoward  sNaN88   -Infinity ->  NaN88 Invalid_operation

+ddnextt556 nexttoward  -NaN     -Infinity -> -NaN

+ddnextt557 nexttoward -sNaN     -Infinity -> -NaN   Invalid_operation

+ddnextt558 nexttoward  -NaN77   -Infinity -> -NaN77

+ddnextt559 nexttoward -sNaN88   -Infinity -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+ddnextt670 nexttoward  9.999999999999999E+384   -Infinity  -> 9.999999999999998E+384

+ddnextt671 nexttoward  9.999999999999998E+384   -Infinity  -> 9.999999999999997E+384

+ddnextt672 nexttoward  1E-383                   -Infinity  -> 9.99999999999999E-384   Underflow Subnormal  Inexact Rounded

+ddnextt673 nexttoward  1.000000000000000E-383   -Infinity  -> 9.99999999999999E-384   Underflow Subnormal  Inexact Rounded

+ddnextt674 nexttoward  9E-398                   -Infinity  -> 8E-398                  Underflow Subnormal  Inexact Rounded

+ddnextt675 nexttoward  9.9E-397                 -Infinity  -> 9.8E-397                Underflow Subnormal  Inexact Rounded

+ddnextt676 nexttoward  9.99999999999E-387       -Infinity  -> 9.99999999998E-387      Underflow Subnormal  Inexact Rounded

+ddnextt677 nexttoward  9.99999999999999E-384    -Infinity  -> 9.99999999999998E-384   Underflow Subnormal  Inexact Rounded

+ddnextt678 nexttoward  9.99999999999998E-384    -Infinity  -> 9.99999999999997E-384   Underflow Subnormal  Inexact Rounded

+ddnextt679 nexttoward  9.99999999999997E-384    -Infinity  -> 9.99999999999996E-384   Underflow Subnormal  Inexact Rounded

+ddnextt680 nexttoward  0E-398                   -Infinity  -> -1E-398                 Underflow Subnormal  Inexact Rounded

+ddnextt681 nexttoward  1E-398                   -Infinity  -> 0E-398                  Underflow Subnormal  Inexact Rounded Clamped

+ddnextt682 nexttoward  2E-398                   -Infinity  -> 1E-398                  Underflow Subnormal  Inexact Rounded

+

+ddnextt683 nexttoward  -0E-398                  -Infinity  -> -1E-398                 Underflow Subnormal  Inexact Rounded

+ddnextt684 nexttoward  -1E-398                  -Infinity  -> -2E-398                 Underflow Subnormal  Inexact Rounded

+ddnextt685 nexttoward  -2E-398                  -Infinity  -> -3E-398                 Underflow Subnormal  Inexact Rounded

+ddnextt686 nexttoward  -10E-398                 -Infinity  -> -1.1E-397               Underflow Subnormal  Inexact Rounded

+ddnextt687 nexttoward  -100E-398                -Infinity  -> -1.01E-396              Underflow Subnormal  Inexact Rounded

+ddnextt688 nexttoward  -100000E-398             -Infinity  -> -1.00001E-393           Underflow Subnormal  Inexact Rounded

+ddnextt689 nexttoward  -1.00000000000E-383      -Infinity  -> -1.000000000000001E-383

+ddnextt690 nexttoward  -1.000000000000000E-383  -Infinity  -> -1.000000000000001E-383

+ddnextt691 nexttoward  -1E-383                  -Infinity  -> -1.000000000000001E-383

+ddnextt692 nexttoward  -9.999999999999998E+384  -Infinity  -> -9.999999999999999E+384

+ddnextt693 nexttoward  -9.999999999999999E+384  -Infinity  -> -Infinity               Overflow Inexact Rounded

+

+------- Specials

+ddnextt780 nexttoward -Inf  -Inf   -> -Infinity

+ddnextt781 nexttoward -Inf  -1000  -> -9.999999999999999E+384

+ddnextt782 nexttoward -Inf  -1     -> -9.999999999999999E+384

+ddnextt783 nexttoward -Inf  -0     -> -9.999999999999999E+384

+ddnextt784 nexttoward -Inf   0     -> -9.999999999999999E+384

+ddnextt785 nexttoward -Inf   1     -> -9.999999999999999E+384

+ddnextt786 nexttoward -Inf   1000  -> -9.999999999999999E+384

+ddnextt787 nexttoward -1000 -Inf   -> -1000.000000000001

+ddnextt788 nexttoward -Inf  -Inf   -> -Infinity

+ddnextt789 nexttoward -1    -Inf   -> -1.000000000000001

+ddnextt790 nexttoward -0    -Inf   -> -1E-398           Underflow Subnormal Inexact Rounded

+ddnextt791 nexttoward  0    -Inf   -> -1E-398           Underflow Subnormal Inexact Rounded

+ddnextt792 nexttoward  1    -Inf   ->  0.9999999999999999

+ddnextt793 nexttoward  1000 -Inf   ->  999.9999999999999

+ddnextt794 nexttoward  Inf  -Inf   ->  9.999999999999999E+384

+

+ddnextt800 nexttoward  Inf  -Inf   ->  9.999999999999999E+384

+ddnextt801 nexttoward  Inf  -1000  ->  9.999999999999999E+384

+ddnextt802 nexttoward  Inf  -1     ->  9.999999999999999E+384

+ddnextt803 nexttoward  Inf  -0     ->  9.999999999999999E+384

+ddnextt804 nexttoward  Inf   0     ->  9.999999999999999E+384

+ddnextt805 nexttoward  Inf   1     ->  9.999999999999999E+384

+ddnextt806 nexttoward  Inf   1000  ->  9.999999999999999E+384

+ddnextt807 nexttoward  Inf   Inf   ->  Infinity

+ddnextt808 nexttoward -1000  Inf   -> -999.9999999999999

+ddnextt809 nexttoward -Inf   Inf   -> -9.999999999999999E+384

+ddnextt810 nexttoward -1     Inf   -> -0.9999999999999999

+ddnextt811 nexttoward -0     Inf   ->  1E-398           Underflow Subnormal Inexact Rounded

+ddnextt812 nexttoward  0     Inf   ->  1E-398           Underflow Subnormal Inexact Rounded

+ddnextt813 nexttoward  1     Inf   ->  1.000000000000001

+ddnextt814 nexttoward  1000  Inf   ->  1000.000000000001

+ddnextt815 nexttoward  Inf   Inf   ->  Infinity

+

+ddnextt821 nexttoward  NaN -Inf    ->  NaN

+ddnextt822 nexttoward  NaN -1000   ->  NaN

+ddnextt823 nexttoward  NaN -1      ->  NaN

+ddnextt824 nexttoward  NaN -0      ->  NaN

+ddnextt825 nexttoward  NaN  0      ->  NaN

+ddnextt826 nexttoward  NaN  1      ->  NaN

+ddnextt827 nexttoward  NaN  1000   ->  NaN

+ddnextt828 nexttoward  NaN  Inf    ->  NaN

+ddnextt829 nexttoward  NaN  NaN    ->  NaN

+ddnextt830 nexttoward -Inf  NaN    ->  NaN

+ddnextt831 nexttoward -1000 NaN    ->  NaN

+ddnextt832 nexttoward -1    NaN    ->  NaN

+ddnextt833 nexttoward -0    NaN    ->  NaN

+ddnextt834 nexttoward  0    NaN    ->  NaN

+ddnextt835 nexttoward  1    NaN    ->  NaN

+ddnextt836 nexttoward  1000 NaN    ->  NaN

+ddnextt837 nexttoward  Inf  NaN    ->  NaN

+

+ddnextt841 nexttoward  sNaN -Inf   ->  NaN  Invalid_operation

+ddnextt842 nexttoward  sNaN -1000  ->  NaN  Invalid_operation

+ddnextt843 nexttoward  sNaN -1     ->  NaN  Invalid_operation

+ddnextt844 nexttoward  sNaN -0     ->  NaN  Invalid_operation

+ddnextt845 nexttoward  sNaN  0     ->  NaN  Invalid_operation

+ddnextt846 nexttoward  sNaN  1     ->  NaN  Invalid_operation

+ddnextt847 nexttoward  sNaN  1000  ->  NaN  Invalid_operation

+ddnextt848 nexttoward  sNaN  NaN   ->  NaN  Invalid_operation

+ddnextt849 nexttoward  sNaN sNaN   ->  NaN  Invalid_operation

+ddnextt850 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation

+ddnextt851 nexttoward -Inf  sNaN   ->  NaN  Invalid_operation

+ddnextt852 nexttoward -1000 sNaN   ->  NaN  Invalid_operation

+ddnextt853 nexttoward -1    sNaN   ->  NaN  Invalid_operation

+ddnextt854 nexttoward -0    sNaN   ->  NaN  Invalid_operation

+ddnextt855 nexttoward  0    sNaN   ->  NaN  Invalid_operation

+ddnextt856 nexttoward  1    sNaN   ->  NaN  Invalid_operation

+ddnextt857 nexttoward  1000 sNaN   ->  NaN  Invalid_operation

+ddnextt858 nexttoward  Inf  sNaN   ->  NaN  Invalid_operation

+ddnextt859 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddnextt861 nexttoward  NaN1   -Inf    ->  NaN1

+ddnextt862 nexttoward +NaN2   -1000   ->  NaN2

+ddnextt863 nexttoward  NaN3    1000   ->  NaN3

+ddnextt864 nexttoward  NaN4    Inf    ->  NaN4

+ddnextt865 nexttoward  NaN5   +NaN6   ->  NaN5

+ddnextt866 nexttoward -Inf     NaN7   ->  NaN7

+ddnextt867 nexttoward -1000    NaN8   ->  NaN8

+ddnextt868 nexttoward  1000    NaN9   ->  NaN9

+ddnextt869 nexttoward  Inf    +NaN10  ->  NaN10

+ddnextt871 nexttoward  sNaN11  -Inf   ->  NaN11  Invalid_operation

+ddnextt872 nexttoward  sNaN12  -1000  ->  NaN12  Invalid_operation

+ddnextt873 nexttoward  sNaN13   1000  ->  NaN13  Invalid_operation

+ddnextt874 nexttoward  sNaN14   NaN17 ->  NaN14  Invalid_operation

+ddnextt875 nexttoward  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+ddnextt876 nexttoward  NaN16   sNaN19 ->  NaN19  Invalid_operation

+ddnextt877 nexttoward -Inf    +sNaN20 ->  NaN20  Invalid_operation

+ddnextt878 nexttoward -1000    sNaN21 ->  NaN21  Invalid_operation

+ddnextt879 nexttoward  1000    sNaN22 ->  NaN22  Invalid_operation

+ddnextt880 nexttoward  Inf     sNaN23 ->  NaN23  Invalid_operation

+ddnextt881 nexttoward +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+ddnextt882 nexttoward -NaN26    NaN28 -> -NaN26

+ddnextt883 nexttoward -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+ddnextt884 nexttoward  1000    -NaN30 -> -NaN30

+ddnextt885 nexttoward  1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- Null tests

+ddnextt900 nexttoward 1  # -> NaN Invalid_operation

+ddnextt901 nexttoward #  1 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/ddOr.decTest b/Lib/test/decimaltestdata/ddOr.decTest
new file mode 100644
index 0000000..903ced0
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddOr.decTest
@@ -0,0 +1,292 @@
+------------------------------------------------------------------------

+-- ddOr.decTest -- digitwise logical OR for decDoubles                --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check (truth table)

+ddor001 or             0    0 ->    0

+ddor002 or             0    1 ->    1

+ddor003 or             1    0 ->    1

+ddor004 or             1    1 ->    1

+ddor005 or          1100 1010 -> 1110

+-- and at msd and msd-1

+ddor006 or 0000000000000000 0000000000000000 ->           0

+ddor007 or 0000000000000000 1000000000000000 ->   1000000000000000

+ddor008 or 1000000000000000 0000000000000000 ->   1000000000000000

+ddor009 or 1000000000000000 1000000000000000 ->   1000000000000000

+ddor010 or 0000000000000000 0000000000000000 ->           0

+ddor011 or 0000000000000000 0100000000000000 ->    100000000000000

+ddor012 or 0100000000000000 0000000000000000 ->    100000000000000

+ddor013 or 0100000000000000 0100000000000000 ->    100000000000000

+

+-- Various lengths

+--         1234567890123456     1234567890123456 1234567890123456

+ddor020 or 1111111111111111     1111111111111111  ->  1111111111111111

+ddor021 or  111111111111111      111111111111111  ->   111111111111111

+ddor022 or   11111111111111       11111111111111  ->    11111111111111

+ddor023 or    1111111111111        1111111111111  ->     1111111111111

+ddor024 or     111111111111         111111111111  ->      111111111111

+ddor025 or      11111111111          11111111111  ->       11111111111

+ddor026 or       1111111111           1111111111  ->        1111111111

+ddor027 or        111111111            111111111  ->         111111111

+ddor028 or         11111111             11111111  ->          11111111

+ddor029 or          1111111              1111111  ->           1111111

+ddor030 or           111111               111111  ->            111111

+ddor031 or            11111                11111  ->             11111

+ddor032 or             1111                 1111  ->              1111

+ddor033 or              111                  111  ->               111

+ddor034 or               11                   11  ->                11

+ddor035 or                1                    1  ->                 1

+ddor036 or                0                    0  ->                 0

+

+ddor042 or  111111110000000     1111111110000000  ->  1111111110000000

+ddor043 or   11111110000000     1000000100000000  ->  1011111110000000

+ddor044 or    1111110000000     1000001000000000  ->  1001111110000000

+ddor045 or     111110000000     1000010000000000  ->  1000111110000000

+ddor046 or      11110000000     1000100000000000  ->  1000111110000000

+ddor047 or       1110000000     1001000000000000  ->  1001001110000000

+ddor048 or        110000000     1010000000000000  ->  1010000110000000

+ddor049 or         10000000     1100000000000000  ->  1100000010000000

+

+ddor090 or 011111111  111101111  ->  111111111

+ddor091 or 101111111  111101111  ->  111111111

+ddor092 or 110111111  111101111  ->  111111111

+ddor093 or 111011111  111101111  ->  111111111

+ddor094 or 111101111  111101111  ->  111101111

+ddor095 or 111110111  111101111  ->  111111111

+ddor096 or 111111011  111101111  ->  111111111

+ddor097 or 111111101  111101111  ->  111111111

+ddor098 or 111111110  111101111  ->  111111111

+

+ddor100 or 111101111  011111111  ->  111111111

+ddor101 or 111101111  101111111  ->  111111111

+ddor102 or 111101111  110111111  ->  111111111

+ddor103 or 111101111  111011111  ->  111111111

+ddor104 or 111101111  111101111  ->  111101111

+ddor105 or 111101111  111110111  ->  111111111

+ddor106 or 111101111  111111011  ->  111111111

+ddor107 or 111101111  111111101  ->  111111111

+ddor108 or 111101111  111111110  ->  111111111

+

+-- non-0/1 should not be accepted, nor should signs

+ddor220 or 111111112  111111111  ->  NaN Invalid_operation

+ddor221 or 333333333  333333333  ->  NaN Invalid_operation

+ddor222 or 555555555  555555555  ->  NaN Invalid_operation

+ddor223 or 777777777  777777777  ->  NaN Invalid_operation

+ddor224 or 999999999  999999999  ->  NaN Invalid_operation

+ddor225 or 222222222  999999999  ->  NaN Invalid_operation

+ddor226 or 444444444  999999999  ->  NaN Invalid_operation

+ddor227 or 666666666  999999999  ->  NaN Invalid_operation

+ddor228 or 888888888  999999999  ->  NaN Invalid_operation

+ddor229 or 999999999  222222222  ->  NaN Invalid_operation

+ddor230 or 999999999  444444444  ->  NaN Invalid_operation

+ddor231 or 999999999  666666666  ->  NaN Invalid_operation

+ddor232 or 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+ddor240 or  567468689 -934981942 ->  NaN Invalid_operation

+ddor241 or  567367689  934981942 ->  NaN Invalid_operation

+ddor242 or -631917772 -706014634 ->  NaN Invalid_operation

+ddor243 or -756253257  138579234 ->  NaN Invalid_operation

+ddor244 or  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+ddor250 or  2000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddor251 or  7000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddor252 or  8000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddor253 or  9000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddor254 or  2000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddor255 or  7000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddor256 or  8000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddor257 or  9000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddor258 or  1000000000000000 2000000000000000 ->  NaN Invalid_operation

+ddor259 or  1000000000000000 7000000000000000 ->  NaN Invalid_operation

+ddor260 or  1000000000000000 8000000000000000 ->  NaN Invalid_operation

+ddor261 or  1000000000000000 9000000000000000 ->  NaN Invalid_operation

+ddor262 or  0000000000000000 2000000000000000 ->  NaN Invalid_operation

+ddor263 or  0000000000000000 7000000000000000 ->  NaN Invalid_operation

+ddor264 or  0000000000000000 8000000000000000 ->  NaN Invalid_operation

+ddor265 or  0000000000000000 9000000000000000 ->  NaN Invalid_operation

+-- test MSD-1

+ddor270 or  0200001000000000 1000100000000010 ->  NaN Invalid_operation

+ddor271 or  0700000100000000 1000010000000100 ->  NaN Invalid_operation

+ddor272 or  0800000010000000 1000001000001000 ->  NaN Invalid_operation

+ddor273 or  0900000001000000 1000000100010000 ->  NaN Invalid_operation

+ddor274 or  1000000000100000 0200000010100000 ->  NaN Invalid_operation

+ddor275 or  1000000000010000 0700000001000000 ->  NaN Invalid_operation

+ddor276 or  1000000000001000 0800000010100000 ->  NaN Invalid_operation

+ddor277 or  1000000000000100 0900000000010000 ->  NaN Invalid_operation

+-- test LSD

+ddor280 or  0010000000000002 1000000100000001 ->  NaN Invalid_operation

+ddor281 or  0001000000000007 1000001000000011 ->  NaN Invalid_operation

+ddor282 or  0000100000000008 1000010000000001 ->  NaN Invalid_operation

+ddor283 or  0000010000000009 1000100000000001 ->  NaN Invalid_operation

+ddor284 or  1000001000000000 0001000000000002 ->  NaN Invalid_operation

+ddor285 or  1000000100000000 0010000000000007 ->  NaN Invalid_operation

+ddor286 or  1000000010000000 0100000000000008 ->  NaN Invalid_operation

+ddor287 or  1000000001000000 1000000000000009 ->  NaN Invalid_operation

+-- test Middie

+ddor288 or  0010000020000000 1000001000000000 ->  NaN Invalid_operation

+ddor289 or  0001000070000001 1000000100000000 ->  NaN Invalid_operation

+ddor290 or  0000100080000010 1000000010000000 ->  NaN Invalid_operation

+ddor291 or  0000010090000100 1000000001000000 ->  NaN Invalid_operation

+ddor292 or  1000001000001000 0000000020100000 ->  NaN Invalid_operation

+ddor293 or  1000000100010000 0000000070010000 ->  NaN Invalid_operation

+ddor294 or  1000000010100000 0000000080001000 ->  NaN Invalid_operation

+ddor295 or  1000000001000000 0000000090000100 ->  NaN Invalid_operation

+-- signs

+ddor296 or -1000000001000000 -0000010000000100 ->  NaN Invalid_operation

+ddor297 or -1000000001000000  0000000010000100 ->  NaN Invalid_operation

+ddor298 or  1000000001000000 -0000001000000100 ->  NaN Invalid_operation

+ddor299 or  1000000001000000  0000000011000100 ->  1000000011000100

+

+-- Nmax, Nmin, Ntiny-like

+ddor331 or  2   9.99999999E+199     -> NaN Invalid_operation

+ddor332 or  3   1E-199              -> NaN Invalid_operation

+ddor333 or  4   1.00000000E-199     -> NaN Invalid_operation

+ddor334 or  5   1E-100              -> NaN Invalid_operation

+ddor335 or  6   -1E-100             -> NaN Invalid_operation

+ddor336 or  7   -1.00000000E-199    -> NaN Invalid_operation

+ddor337 or  8   -1E-199             -> NaN Invalid_operation

+ddor338 or  9   -9.99999999E+199    -> NaN Invalid_operation

+ddor341 or  9.99999999E+299     -18 -> NaN Invalid_operation

+ddor342 or  1E-299               01 -> NaN Invalid_operation

+ddor343 or  1.00000000E-299     -18 -> NaN Invalid_operation

+ddor344 or  1E-100               18 -> NaN Invalid_operation

+ddor345 or  -1E-100             -10 -> NaN Invalid_operation

+ddor346 or  -1.00000000E-299     18 -> NaN Invalid_operation

+ddor347 or  -1E-299              10 -> NaN Invalid_operation

+ddor348 or  -9.99999999E+299    -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+ddor361 or  1.0                  1  -> NaN Invalid_operation

+ddor362 or  1E+1                 1  -> NaN Invalid_operation

+ddor363 or  0.0                  1  -> NaN Invalid_operation

+ddor364 or  0E+1                 1  -> NaN Invalid_operation

+ddor365 or  9.9                  1  -> NaN Invalid_operation

+ddor366 or  9E+1                 1  -> NaN Invalid_operation

+ddor371 or  0 1.0                   -> NaN Invalid_operation

+ddor372 or  0 1E+1                  -> NaN Invalid_operation

+ddor373 or  0 0.0                   -> NaN Invalid_operation

+ddor374 or  0 0E+1                  -> NaN Invalid_operation

+ddor375 or  0 9.9                   -> NaN Invalid_operation

+ddor376 or  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+ddor780 or -Inf  -Inf   -> NaN Invalid_operation

+ddor781 or -Inf  -1000  -> NaN Invalid_operation

+ddor782 or -Inf  -1     -> NaN Invalid_operation

+ddor783 or -Inf  -0     -> NaN Invalid_operation

+ddor784 or -Inf   0     -> NaN Invalid_operation

+ddor785 or -Inf   1     -> NaN Invalid_operation

+ddor786 or -Inf   1000  -> NaN Invalid_operation

+ddor787 or -1000 -Inf   -> NaN Invalid_operation

+ddor788 or -Inf  -Inf   -> NaN Invalid_operation

+ddor789 or -1    -Inf   -> NaN Invalid_operation

+ddor790 or -0    -Inf   -> NaN Invalid_operation

+ddor791 or  0    -Inf   -> NaN Invalid_operation

+ddor792 or  1    -Inf   -> NaN Invalid_operation

+ddor793 or  1000 -Inf   -> NaN Invalid_operation

+ddor794 or  Inf  -Inf   -> NaN Invalid_operation

+

+ddor800 or  Inf  -Inf   -> NaN Invalid_operation

+ddor801 or  Inf  -1000  -> NaN Invalid_operation

+ddor802 or  Inf  -1     -> NaN Invalid_operation

+ddor803 or  Inf  -0     -> NaN Invalid_operation

+ddor804 or  Inf   0     -> NaN Invalid_operation

+ddor805 or  Inf   1     -> NaN Invalid_operation

+ddor806 or  Inf   1000  -> NaN Invalid_operation

+ddor807 or  Inf   Inf   -> NaN Invalid_operation

+ddor808 or -1000  Inf   -> NaN Invalid_operation

+ddor809 or -Inf   Inf   -> NaN Invalid_operation

+ddor810 or -1     Inf   -> NaN Invalid_operation

+ddor811 or -0     Inf   -> NaN Invalid_operation

+ddor812 or  0     Inf   -> NaN Invalid_operation

+ddor813 or  1     Inf   -> NaN Invalid_operation

+ddor814 or  1000  Inf   -> NaN Invalid_operation

+ddor815 or  Inf   Inf   -> NaN Invalid_operation

+

+ddor821 or  NaN -Inf    -> NaN Invalid_operation

+ddor822 or  NaN -1000   -> NaN Invalid_operation

+ddor823 or  NaN -1      -> NaN Invalid_operation

+ddor824 or  NaN -0      -> NaN Invalid_operation

+ddor825 or  NaN  0      -> NaN Invalid_operation

+ddor826 or  NaN  1      -> NaN Invalid_operation

+ddor827 or  NaN  1000   -> NaN Invalid_operation

+ddor828 or  NaN  Inf    -> NaN Invalid_operation

+ddor829 or  NaN  NaN    -> NaN Invalid_operation

+ddor830 or -Inf  NaN    -> NaN Invalid_operation

+ddor831 or -1000 NaN    -> NaN Invalid_operation

+ddor832 or -1    NaN    -> NaN Invalid_operation

+ddor833 or -0    NaN    -> NaN Invalid_operation

+ddor834 or  0    NaN    -> NaN Invalid_operation

+ddor835 or  1    NaN    -> NaN Invalid_operation

+ddor836 or  1000 NaN    -> NaN Invalid_operation

+ddor837 or  Inf  NaN    -> NaN Invalid_operation

+

+ddor841 or  sNaN -Inf   ->  NaN  Invalid_operation

+ddor842 or  sNaN -1000  ->  NaN  Invalid_operation

+ddor843 or  sNaN -1     ->  NaN  Invalid_operation

+ddor844 or  sNaN -0     ->  NaN  Invalid_operation

+ddor845 or  sNaN  0     ->  NaN  Invalid_operation

+ddor846 or  sNaN  1     ->  NaN  Invalid_operation

+ddor847 or  sNaN  1000  ->  NaN  Invalid_operation

+ddor848 or  sNaN  NaN   ->  NaN  Invalid_operation

+ddor849 or  sNaN sNaN   ->  NaN  Invalid_operation

+ddor850 or  NaN  sNaN   ->  NaN  Invalid_operation

+ddor851 or -Inf  sNaN   ->  NaN  Invalid_operation

+ddor852 or -1000 sNaN   ->  NaN  Invalid_operation

+ddor853 or -1    sNaN   ->  NaN  Invalid_operation

+ddor854 or -0    sNaN   ->  NaN  Invalid_operation

+ddor855 or  0    sNaN   ->  NaN  Invalid_operation

+ddor856 or  1    sNaN   ->  NaN  Invalid_operation

+ddor857 or  1000 sNaN   ->  NaN  Invalid_operation

+ddor858 or  Inf  sNaN   ->  NaN  Invalid_operation

+ddor859 or  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddor861 or  NaN1   -Inf    -> NaN Invalid_operation

+ddor862 or +NaN2   -1000   -> NaN Invalid_operation

+ddor863 or  NaN3    1000   -> NaN Invalid_operation

+ddor864 or  NaN4    Inf    -> NaN Invalid_operation

+ddor865 or  NaN5   +NaN6   -> NaN Invalid_operation

+ddor866 or -Inf     NaN7   -> NaN Invalid_operation

+ddor867 or -1000    NaN8   -> NaN Invalid_operation

+ddor868 or  1000    NaN9   -> NaN Invalid_operation

+ddor869 or  Inf    +NaN10  -> NaN Invalid_operation

+ddor871 or  sNaN11  -Inf   -> NaN Invalid_operation

+ddor872 or  sNaN12  -1000  -> NaN Invalid_operation

+ddor873 or  sNaN13   1000  -> NaN Invalid_operation

+ddor874 or  sNaN14   NaN17 -> NaN Invalid_operation

+ddor875 or  sNaN15  sNaN18 -> NaN Invalid_operation

+ddor876 or  NaN16   sNaN19 -> NaN Invalid_operation

+ddor877 or -Inf    +sNaN20 -> NaN Invalid_operation

+ddor878 or -1000    sNaN21 -> NaN Invalid_operation

+ddor879 or  1000    sNaN22 -> NaN Invalid_operation

+ddor880 or  Inf     sNaN23 -> NaN Invalid_operation

+ddor881 or +NaN25  +sNaN24 -> NaN Invalid_operation

+ddor882 or -NaN26    NaN28 -> NaN Invalid_operation

+ddor883 or -sNaN27  sNaN29 -> NaN Invalid_operation

+ddor884 or  1000    -NaN30 -> NaN Invalid_operation

+ddor885 or  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddPlus.decTest b/Lib/test/decimaltestdata/ddPlus.decTest
new file mode 100644
index 0000000..0a2b838
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddPlus.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- ddPlus.decTest -- decDouble 0+x                                    --

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

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check

+ddpls001 plus       +7.50  -> 7.50

+

+-- Infinities

+ddpls011 plus  Infinity    -> Infinity

+ddpls012 plus  -Infinity   -> -Infinity

+

+-- NaNs, 0 payload

+ddpls021 plus         NaN  -> NaN

+ddpls022 plus        -NaN  -> -NaN

+ddpls023 plus        sNaN  -> NaN  Invalid_operation

+ddpls024 plus       -sNaN  -> -NaN Invalid_operation

+

+-- NaNs, non-0 payload

+ddpls031 plus       NaN13  -> NaN13

+ddpls032 plus      -NaN13  -> -NaN13

+ddpls033 plus      sNaN13  -> NaN13   Invalid_operation

+ddpls034 plus     -sNaN13  -> -NaN13  Invalid_operation

+ddpls035 plus       NaN70  -> NaN70

+ddpls036 plus      -NaN70  -> -NaN70

+ddpls037 plus      sNaN101 -> NaN101  Invalid_operation

+ddpls038 plus     -sNaN101 -> -NaN101 Invalid_operation

+

+-- finites

+ddpls101 plus          7   -> 7

+ddpls102 plus         -7   -> -7

+ddpls103 plus         75   -> 75

+ddpls104 plus        -75   -> -75

+ddpls105 plus       7.50   -> 7.50

+ddpls106 plus      -7.50   -> -7.50

+ddpls107 plus       7.500  -> 7.500

+ddpls108 plus      -7.500  -> -7.500

+

+-- zeros

+ddpls111 plus          0   -> 0

+ddpls112 plus         -0   -> 0

+ddpls113 plus       0E+4   -> 0E+4

+ddpls114 plus      -0E+4   -> 0E+4

+ddpls115 plus     0.0000   -> 0.0000

+ddpls116 plus    -0.0000   -> 0.0000

+ddpls117 plus      0E-141  -> 0E-141

+ddpls118 plus     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+ddpls121 plus  2682682682682682         -> 2682682682682682

+ddpls122 plus  -2682682682682682        -> -2682682682682682

+ddpls123 plus  1341341341341341         -> 1341341341341341

+ddpls124 plus  -1341341341341341        -> -1341341341341341

+

+-- Nmax, Nmin, Ntiny

+ddpls131 plus  9.999999999999999E+384   -> 9.999999999999999E+384

+ddpls132 plus  1E-383                   -> 1E-383

+ddpls133 plus  1.000000000000000E-383   -> 1.000000000000000E-383

+ddpls134 plus  1E-398                   -> 1E-398 Subnormal

+

+ddpls135 plus  -1E-398                  -> -1E-398 Subnormal

+ddpls136 plus  -1.000000000000000E-383  -> -1.000000000000000E-383

+ddpls137 plus  -1E-383                  -> -1E-383

+ddpls138 plus  -9.999999999999999E+384  -> -9.999999999999999E+384

diff --git a/Lib/test/decimaltestdata/ddQuantize.decTest b/Lib/test/decimaltestdata/ddQuantize.decTest
new file mode 100644
index 0000000..8cd5287
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddQuantize.decTest
@@ -0,0 +1,825 @@
+------------------------------------------------------------------------

+-- ddQuantize.decTest -- decDouble quantize operation                 --

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

+

+-- Most of the tests here assume a "regular pattern", where the

+-- sign and coefficient are +1.

+-- 2004.03.15 Underflow for quantize is suppressed

+-- 2005.06.08 More extensive tests for 'does not fit'

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks

+ddqua001 quantize 0       1e0   -> 0

+ddqua002 quantize 1       1e0   -> 1

+ddqua003 quantize 0.1    1e+2   -> 0E+2 Inexact Rounded

+ddqua005 quantize 0.1    1e+1   -> 0E+1 Inexact Rounded

+ddqua006 quantize 0.1     1e0   -> 0 Inexact Rounded

+ddqua007 quantize 0.1    1e-1   -> 0.1

+ddqua008 quantize 0.1    1e-2   -> 0.10

+ddqua009 quantize 0.1    1e-3   -> 0.100

+ddqua010 quantize 0.9    1e+2   -> 0E+2 Inexact Rounded

+ddqua011 quantize 0.9    1e+1   -> 0E+1 Inexact Rounded

+ddqua012 quantize 0.9    1e+0   -> 1 Inexact Rounded

+ddqua013 quantize 0.9    1e-1   -> 0.9

+ddqua014 quantize 0.9    1e-2   -> 0.90

+ddqua015 quantize 0.9    1e-3   -> 0.900

+-- negatives

+ddqua021 quantize -0      1e0   -> -0

+ddqua022 quantize -1      1e0   -> -1

+ddqua023 quantize -0.1   1e+2   -> -0E+2 Inexact Rounded

+ddqua025 quantize -0.1   1e+1   -> -0E+1 Inexact Rounded

+ddqua026 quantize -0.1    1e0   -> -0 Inexact Rounded

+ddqua027 quantize -0.1   1e-1   -> -0.1

+ddqua028 quantize -0.1   1e-2   -> -0.10

+ddqua029 quantize -0.1   1e-3   -> -0.100

+ddqua030 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded

+ddqua031 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded

+ddqua032 quantize -0.9   1e+0   -> -1 Inexact Rounded

+ddqua033 quantize -0.9   1e-1   -> -0.9

+ddqua034 quantize -0.9   1e-2   -> -0.90

+ddqua035 quantize -0.9   1e-3   -> -0.900

+ddqua036 quantize -0.5   1e+2   -> -0E+2 Inexact Rounded

+ddqua037 quantize -0.5   1e+1   -> -0E+1 Inexact Rounded

+ddqua038 quantize -0.5   1e+0   -> -0 Inexact Rounded

+ddqua039 quantize -0.5   1e-1   -> -0.5

+ddqua040 quantize -0.5   1e-2   -> -0.50

+ddqua041 quantize -0.5   1e-3   -> -0.500

+ddqua042 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded

+ddqua043 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded

+ddqua044 quantize -0.9   1e+0   -> -1 Inexact Rounded

+ddqua045 quantize -0.9   1e-1   -> -0.9

+ddqua046 quantize -0.9   1e-2   -> -0.90

+ddqua047 quantize -0.9   1e-3   -> -0.900

+

+-- examples from Specification

+ddqua060 quantize 2.17   0.001  -> 2.170

+ddqua061 quantize 2.17   0.01   -> 2.17

+ddqua062 quantize 2.17   0.1    -> 2.2 Inexact Rounded

+ddqua063 quantize 2.17   1e+0   -> 2 Inexact Rounded

+ddqua064 quantize 2.17   1e+1   -> 0E+1 Inexact Rounded

+ddqua065 quantize -Inf    Inf   -> -Infinity

+ddqua066 quantize 2       Inf   -> NaN Invalid_operation

+ddqua067 quantize -0.1    1     -> -0 Inexact Rounded

+ddqua068 quantize -0      1e+5     -> -0E+5

+ddqua069 quantize +123456789012345.6 1e-2 -> NaN Invalid_operation

+ddqua070 quantize -987654335236450.6 1e-2 -> NaN Invalid_operation

+ddqua071 quantize 217    1e-1   -> 217.0

+ddqua072 quantize 217    1e+0   -> 217

+ddqua073 quantize 217    1e+1   -> 2.2E+2 Inexact Rounded

+ddqua074 quantize 217    1e+2   -> 2E+2 Inexact Rounded

+

+-- general tests ..

+ddqua089 quantize 12     1e+4   -> 0E+4 Inexact Rounded

+ddqua090 quantize 12     1e+3   -> 0E+3 Inexact Rounded

+ddqua091 quantize 12     1e+2   -> 0E+2 Inexact Rounded

+ddqua092 quantize 12     1e+1   -> 1E+1 Inexact Rounded

+ddqua093 quantize 1.2345 1e-2   -> 1.23 Inexact Rounded

+ddqua094 quantize 1.2355 1e-2   -> 1.24 Inexact Rounded

+ddqua095 quantize 1.2345 1e-6   -> 1.234500

+ddqua096 quantize 9.9999 1e-2   -> 10.00 Inexact Rounded

+ddqua097 quantize 0.0001 1e-2   -> 0.00 Inexact Rounded

+ddqua098 quantize 0.001  1e-2   -> 0.00 Inexact Rounded

+ddqua099 quantize 0.009  1e-2   -> 0.01 Inexact Rounded

+ddqua100 quantize 92     1e+2   -> 1E+2 Inexact Rounded

+

+ddqua101 quantize -1      1e0   ->  -1

+ddqua102 quantize -1     1e-1   ->  -1.0

+ddqua103 quantize -1     1e-2   ->  -1.00

+ddqua104 quantize  0      1e0   ->  0

+ddqua105 quantize  0     1e-1   ->  0.0

+ddqua106 quantize  0     1e-2   ->  0.00

+ddqua107 quantize  0.00   1e0   ->  0

+ddqua108 quantize  0     1e+1   ->  0E+1

+ddqua109 quantize  0     1e+2   ->  0E+2

+ddqua110 quantize +1      1e0   ->  1

+ddqua111 quantize +1     1e-1   ->  1.0

+ddqua112 quantize +1     1e-2   ->  1.00

+

+ddqua120 quantize   1.04  1e-3 ->  1.040

+ddqua121 quantize   1.04  1e-2 ->  1.04

+ddqua122 quantize   1.04  1e-1 ->  1.0 Inexact Rounded

+ddqua123 quantize   1.04   1e0 ->  1 Inexact Rounded

+ddqua124 quantize   1.05  1e-3 ->  1.050

+ddqua125 quantize   1.05  1e-2 ->  1.05

+ddqua126 quantize   1.05  1e-1 ->  1.0 Inexact Rounded

+ddqua131 quantize   1.05   1e0 ->  1 Inexact Rounded

+ddqua132 quantize   1.06  1e-3 ->  1.060

+ddqua133 quantize   1.06  1e-2 ->  1.06

+ddqua134 quantize   1.06  1e-1 ->  1.1 Inexact Rounded

+ddqua135 quantize   1.06   1e0 ->  1 Inexact Rounded

+

+ddqua140 quantize   -10    1e-2  ->  -10.00

+ddqua141 quantize   +1     1e-2  ->  1.00

+ddqua142 quantize   +10    1e-2  ->  10.00

+ddqua143 quantize   1E+17  1e-2  ->  NaN Invalid_operation

+ddqua144 quantize   1E-17  1e-2  ->  0.00 Inexact Rounded

+ddqua145 quantize   1E-3   1e-2  ->  0.00 Inexact Rounded

+ddqua146 quantize   1E-2   1e-2  ->  0.01

+ddqua147 quantize   1E-1   1e-2  ->  0.10

+ddqua148 quantize   0E-17  1e-2  ->  0.00

+

+ddqua150 quantize   1.0600 1e-5 ->  1.06000

+ddqua151 quantize   1.0600 1e-4 ->  1.0600

+ddqua152 quantize   1.0600 1e-3 ->  1.060 Rounded

+ddqua153 quantize   1.0600 1e-2 ->  1.06 Rounded

+ddqua154 quantize   1.0600 1e-1 ->  1.1 Inexact Rounded

+ddqua155 quantize   1.0600  1e0 ->  1 Inexact Rounded

+

+-- a couple where rounding was different in base tests

+rounding:    half_up

+ddqua157 quantize -0.5   1e+0   -> -1 Inexact Rounded

+ddqua158 quantize   1.05  1e-1 ->  1.1 Inexact Rounded

+ddqua159 quantize   1.06   1e0 ->  1 Inexact Rounded

+rounding:    half_even

+

+-- base tests with non-1 coefficients

+ddqua161 quantize 0      -9e0   -> 0

+ddqua162 quantize 1      -7e0   -> 1

+ddqua163 quantize 0.1   -1e+2   -> 0E+2 Inexact Rounded

+ddqua165 quantize 0.1    0e+1   -> 0E+1 Inexact Rounded

+ddqua166 quantize 0.1     2e0   -> 0 Inexact Rounded

+ddqua167 quantize 0.1    3e-1   -> 0.1

+ddqua168 quantize 0.1   44e-2   -> 0.10

+ddqua169 quantize 0.1  555e-3   -> 0.100

+ddqua170 quantize 0.9 6666e+2   -> 0E+2 Inexact Rounded

+ddqua171 quantize 0.9 -777e+1   -> 0E+1 Inexact Rounded

+ddqua172 quantize 0.9  -88e+0   -> 1 Inexact Rounded

+ddqua173 quantize 0.9   -9e-1   -> 0.9

+ddqua174 quantize 0.9    0e-2   -> 0.90

+ddqua175 quantize 0.9  1.1e-3   -> 0.9000

+-- negatives

+ddqua181 quantize -0    1.1e0   -> -0.0

+ddqua182 quantize -1     -1e0   -> -1

+ddqua183 quantize -0.1  11e+2   -> -0E+2 Inexact Rounded

+ddqua185 quantize -0.1 111e+1   -> -0E+1 Inexact Rounded

+ddqua186 quantize -0.1   71e0   -> -0 Inexact Rounded

+ddqua187 quantize -0.1 -91e-1   -> -0.1

+ddqua188 quantize -0.1 -.1e-2   -> -0.100

+ddqua189 quantize -0.1  -1e-3   -> -0.100

+ddqua190 quantize -0.9   0e+2   -> -0E+2 Inexact Rounded

+ddqua191 quantize -0.9  -0e+1   -> -0E+1 Inexact Rounded

+ddqua192 quantize -0.9 -10e+0   -> -1 Inexact Rounded

+ddqua193 quantize -0.9 100e-1   -> -0.9

+ddqua194 quantize -0.9 999e-2   -> -0.90

+

+-- +ve exponents ..

+ddqua201 quantize   -1   1e+0 ->  -1

+ddqua202 quantize   -1   1e+1 ->  -0E+1 Inexact Rounded

+ddqua203 quantize   -1   1e+2 ->  -0E+2 Inexact Rounded

+ddqua204 quantize    0   1e+0 ->  0

+ddqua205 quantize    0   1e+1 ->  0E+1

+ddqua206 quantize    0   1e+2 ->  0E+2

+ddqua207 quantize   +1   1e+0 ->  1

+ddqua208 quantize   +1   1e+1 ->  0E+1 Inexact Rounded

+ddqua209 quantize   +1   1e+2 ->  0E+2 Inexact Rounded

+

+ddqua220 quantize   1.04 1e+3 ->  0E+3 Inexact Rounded

+ddqua221 quantize   1.04 1e+2 ->  0E+2 Inexact Rounded

+ddqua222 quantize   1.04 1e+1 ->  0E+1 Inexact Rounded

+ddqua223 quantize   1.04 1e+0 ->  1 Inexact Rounded

+ddqua224 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded

+ddqua225 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded

+ddqua226 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded

+ddqua227 quantize   1.05 1e+0 ->  1 Inexact Rounded

+ddqua228 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded

+ddqua229 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded

+ddqua230 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded

+ddqua231 quantize   1.05 1e+0 ->  1 Inexact Rounded

+ddqua232 quantize   1.06 1e+3 ->  0E+3 Inexact Rounded

+ddqua233 quantize   1.06 1e+2 ->  0E+2 Inexact Rounded

+ddqua234 quantize   1.06 1e+1 ->  0E+1 Inexact Rounded

+ddqua235 quantize   1.06 1e+0 ->  1 Inexact Rounded

+

+ddqua240 quantize   -10   1e+1  ->  -1E+1 Rounded

+ddqua241 quantize   +1    1e+1  ->  0E+1 Inexact Rounded

+ddqua242 quantize   +10   1e+1  ->  1E+1 Rounded

+ddqua243 quantize   1E+1  1e+1  ->  1E+1          -- underneath this is E+1

+ddqua244 quantize   1E+2  1e+1  ->  1.0E+2        -- underneath this is E+1

+ddqua245 quantize   1E+3  1e+1  ->  1.00E+3       -- underneath this is E+1

+ddqua246 quantize   1E+4  1e+1  ->  1.000E+4      -- underneath this is E+1

+ddqua247 quantize   1E+5  1e+1  ->  1.0000E+5     -- underneath this is E+1

+ddqua248 quantize   1E+6  1e+1  ->  1.00000E+6    -- underneath this is E+1

+ddqua249 quantize   1E+7  1e+1  ->  1.000000E+7   -- underneath this is E+1

+ddqua250 quantize   1E+8  1e+1  ->  1.0000000E+8  -- underneath this is E+1

+ddqua251 quantize   1E+9  1e+1  ->  1.00000000E+9 -- underneath this is E+1

+-- next one tries to add 9 zeros

+ddqua252 quantize   1E+17 1e+1  ->  NaN Invalid_operation

+ddqua253 quantize   1E-17 1e+1  ->  0E+1 Inexact Rounded

+ddqua254 quantize   1E-2  1e+1  ->  0E+1 Inexact Rounded

+ddqua255 quantize   0E-17 1e+1  ->  0E+1

+ddqua256 quantize  -0E-17 1e+1  -> -0E+1

+ddqua257 quantize  -0E-1  1e+1  -> -0E+1

+ddqua258 quantize  -0     1e+1  -> -0E+1

+ddqua259 quantize  -0E+1  1e+1  -> -0E+1

+

+ddqua260 quantize   -10   1e+2  ->  -0E+2 Inexact Rounded

+ddqua261 quantize   +1    1e+2  ->  0E+2 Inexact Rounded

+ddqua262 quantize   +10   1e+2  ->  0E+2 Inexact Rounded

+ddqua263 quantize   1E+1  1e+2  ->  0E+2 Inexact Rounded

+ddqua264 quantize   1E+2  1e+2  ->  1E+2

+ddqua265 quantize   1E+3  1e+2  ->  1.0E+3

+ddqua266 quantize   1E+4  1e+2  ->  1.00E+4

+ddqua267 quantize   1E+5  1e+2  ->  1.000E+5

+ddqua268 quantize   1E+6  1e+2  ->  1.0000E+6

+ddqua269 quantize   1E+7  1e+2  ->  1.00000E+7

+ddqua270 quantize   1E+8  1e+2  ->  1.000000E+8

+ddqua271 quantize   1E+9  1e+2  ->  1.0000000E+9

+ddqua272 quantize   1E+10 1e+2  ->  1.00000000E+10

+ddqua273 quantize   1E-10 1e+2  ->  0E+2 Inexact Rounded

+ddqua274 quantize   1E-2  1e+2  ->  0E+2 Inexact Rounded

+ddqua275 quantize   0E-10 1e+2  ->  0E+2

+

+ddqua280 quantize   -10   1e+3  ->  -0E+3 Inexact Rounded

+ddqua281 quantize   +1    1e+3  ->  0E+3 Inexact Rounded

+ddqua282 quantize   +10   1e+3  ->  0E+3 Inexact Rounded

+ddqua283 quantize   1E+1  1e+3  ->  0E+3 Inexact Rounded

+ddqua284 quantize   1E+2  1e+3  ->  0E+3 Inexact Rounded

+ddqua285 quantize   1E+3  1e+3  ->  1E+3

+ddqua286 quantize   1E+4  1e+3  ->  1.0E+4

+ddqua287 quantize   1E+5  1e+3  ->  1.00E+5

+ddqua288 quantize   1E+6  1e+3  ->  1.000E+6

+ddqua289 quantize   1E+7  1e+3  ->  1.0000E+7

+ddqua290 quantize   1E+8  1e+3  ->  1.00000E+8

+ddqua291 quantize   1E+9  1e+3  ->  1.000000E+9

+ddqua292 quantize   1E+10 1e+3  ->  1.0000000E+10

+ddqua293 quantize   1E-10 1e+3  ->  0E+3 Inexact Rounded

+ddqua294 quantize   1E-2  1e+3  ->  0E+3 Inexact Rounded

+ddqua295 quantize   0E-10 1e+3  ->  0E+3

+

+-- round up from below [sign wrong in JIT compiler once]

+ddqua300 quantize   0.0078 1e-5 ->  0.00780

+ddqua301 quantize   0.0078 1e-4 ->  0.0078

+ddqua302 quantize   0.0078 1e-3 ->  0.008 Inexact Rounded

+ddqua303 quantize   0.0078 1e-2 ->  0.01 Inexact Rounded

+ddqua304 quantize   0.0078 1e-1 ->  0.0 Inexact Rounded

+ddqua305 quantize   0.0078  1e0 ->  0 Inexact Rounded

+ddqua306 quantize   0.0078 1e+1 ->  0E+1 Inexact Rounded

+ddqua307 quantize   0.0078 1e+2 ->  0E+2 Inexact Rounded

+

+ddqua310 quantize  -0.0078 1e-5 -> -0.00780

+ddqua311 quantize  -0.0078 1e-4 -> -0.0078

+ddqua312 quantize  -0.0078 1e-3 -> -0.008 Inexact Rounded

+ddqua313 quantize  -0.0078 1e-2 -> -0.01 Inexact Rounded

+ddqua314 quantize  -0.0078 1e-1 -> -0.0 Inexact Rounded

+ddqua315 quantize  -0.0078  1e0 -> -0 Inexact Rounded

+ddqua316 quantize  -0.0078 1e+1 -> -0E+1 Inexact Rounded

+ddqua317 quantize  -0.0078 1e+2 -> -0E+2 Inexact Rounded

+

+ddqua320 quantize   0.078 1e-5 ->  0.07800

+ddqua321 quantize   0.078 1e-4 ->  0.0780

+ddqua322 quantize   0.078 1e-3 ->  0.078

+ddqua323 quantize   0.078 1e-2 ->  0.08 Inexact Rounded

+ddqua324 quantize   0.078 1e-1 ->  0.1 Inexact Rounded

+ddqua325 quantize   0.078  1e0 ->  0 Inexact Rounded

+ddqua326 quantize   0.078 1e+1 ->  0E+1 Inexact Rounded

+ddqua327 quantize   0.078 1e+2 ->  0E+2 Inexact Rounded

+

+ddqua330 quantize  -0.078 1e-5 -> -0.07800

+ddqua331 quantize  -0.078 1e-4 -> -0.0780

+ddqua332 quantize  -0.078 1e-3 -> -0.078

+ddqua333 quantize  -0.078 1e-2 -> -0.08 Inexact Rounded

+ddqua334 quantize  -0.078 1e-1 -> -0.1 Inexact Rounded

+ddqua335 quantize  -0.078  1e0 -> -0 Inexact Rounded

+ddqua336 quantize  -0.078 1e+1 -> -0E+1 Inexact Rounded

+ddqua337 quantize  -0.078 1e+2 -> -0E+2 Inexact Rounded

+

+ddqua340 quantize   0.78 1e-5 ->  0.78000

+ddqua341 quantize   0.78 1e-4 ->  0.7800

+ddqua342 quantize   0.78 1e-3 ->  0.780

+ddqua343 quantize   0.78 1e-2 ->  0.78

+ddqua344 quantize   0.78 1e-1 ->  0.8 Inexact Rounded

+ddqua345 quantize   0.78  1e0 ->  1 Inexact Rounded

+ddqua346 quantize   0.78 1e+1 ->  0E+1 Inexact Rounded

+ddqua347 quantize   0.78 1e+2 ->  0E+2 Inexact Rounded

+

+ddqua350 quantize  -0.78 1e-5 -> -0.78000

+ddqua351 quantize  -0.78 1e-4 -> -0.7800

+ddqua352 quantize  -0.78 1e-3 -> -0.780

+ddqua353 quantize  -0.78 1e-2 -> -0.78

+ddqua354 quantize  -0.78 1e-1 -> -0.8 Inexact Rounded

+ddqua355 quantize  -0.78  1e0 -> -1 Inexact Rounded

+ddqua356 quantize  -0.78 1e+1 -> -0E+1 Inexact Rounded

+ddqua357 quantize  -0.78 1e+2 -> -0E+2 Inexact Rounded

+

+ddqua360 quantize   7.8 1e-5 ->  7.80000

+ddqua361 quantize   7.8 1e-4 ->  7.8000

+ddqua362 quantize   7.8 1e-3 ->  7.800

+ddqua363 quantize   7.8 1e-2 ->  7.80

+ddqua364 quantize   7.8 1e-1 ->  7.8

+ddqua365 quantize   7.8  1e0 ->  8 Inexact Rounded

+ddqua366 quantize   7.8 1e+1 ->  1E+1 Inexact Rounded

+ddqua367 quantize   7.8 1e+2 ->  0E+2 Inexact Rounded

+ddqua368 quantize   7.8 1e+3 ->  0E+3 Inexact Rounded

+

+ddqua370 quantize  -7.8 1e-5 -> -7.80000

+ddqua371 quantize  -7.8 1e-4 -> -7.8000

+ddqua372 quantize  -7.8 1e-3 -> -7.800

+ddqua373 quantize  -7.8 1e-2 -> -7.80

+ddqua374 quantize  -7.8 1e-1 -> -7.8

+ddqua375 quantize  -7.8  1e0 -> -8 Inexact Rounded

+ddqua376 quantize  -7.8 1e+1 -> -1E+1 Inexact Rounded

+ddqua377 quantize  -7.8 1e+2 -> -0E+2 Inexact Rounded

+ddqua378 quantize  -7.8 1e+3 -> -0E+3 Inexact Rounded

+

+-- some individuals

+ddqua380 quantize   1234567352364.506 1e-2 -> 1234567352364.51 Inexact Rounded

+ddqua381 quantize   12345673523645.06 1e-2 -> 12345673523645.06

+ddqua382 quantize   123456735236450.6 1e-2 -> NaN Invalid_operation

+ddqua383 quantize   1234567352364506  1e-2 -> NaN Invalid_operation

+ddqua384 quantize  -1234567352364.506 1e-2 -> -1234567352364.51 Inexact Rounded

+ddqua385 quantize  -12345673523645.06 1e-2 -> -12345673523645.06

+ddqua386 quantize  -123456735236450.6 1e-2 -> NaN Invalid_operation

+ddqua387 quantize  -1234567352364506  1e-2 -> NaN Invalid_operation

+

+rounding: down

+ddqua389 quantize   123456735236450.6 1e-2 -> NaN Invalid_operation

+-- ? should that one instead have been:

+-- ddqua389 quantize   123456735236450.6 1e-2 -> NaN Invalid_operation

+rounding: half_up

+

+-- and a few more from e-mail discussions

+ddqua391 quantize  12345678912.34567  1e-3 -> 12345678912.346   Inexact Rounded

+ddqua392 quantize  123456789123.4567  1e-3 -> 123456789123.457  Inexact Rounded

+ddqua393 quantize  1234567891234.567  1e-3 -> 1234567891234.567

+ddqua394 quantize  12345678912345.67  1e-3 -> NaN Invalid_operation

+ddqua395 quantize  123456789123456.7  1e-3 -> NaN Invalid_operation

+ddqua396 quantize  1234567891234567.  1e-3 -> NaN Invalid_operation

+

+-- some 9999 round-up cases

+ddqua400 quantize   9.999        1e-5  ->  9.99900

+ddqua401 quantize   9.999        1e-4  ->  9.9990

+ddqua402 quantize   9.999        1e-3  ->  9.999

+ddqua403 quantize   9.999        1e-2  -> 10.00     Inexact Rounded

+ddqua404 quantize   9.999        1e-1  -> 10.0      Inexact Rounded

+ddqua405 quantize   9.999         1e0  -> 10        Inexact Rounded

+ddqua406 quantize   9.999         1e1  -> 1E+1      Inexact Rounded

+ddqua407 quantize   9.999         1e2  -> 0E+2      Inexact Rounded

+

+ddqua410 quantize   0.999        1e-5  ->  0.99900

+ddqua411 quantize   0.999        1e-4  ->  0.9990

+ddqua412 quantize   0.999        1e-3  ->  0.999

+ddqua413 quantize   0.999        1e-2  ->  1.00     Inexact Rounded

+ddqua414 quantize   0.999        1e-1  ->  1.0      Inexact Rounded

+ddqua415 quantize   0.999         1e0  ->  1        Inexact Rounded

+ddqua416 quantize   0.999         1e1  -> 0E+1      Inexact Rounded

+

+ddqua420 quantize   0.0999       1e-5  ->  0.09990

+ddqua421 quantize   0.0999       1e-4  ->  0.0999

+ddqua422 quantize   0.0999       1e-3  ->  0.100    Inexact Rounded

+ddqua423 quantize   0.0999       1e-2  ->  0.10     Inexact Rounded

+ddqua424 quantize   0.0999       1e-1  ->  0.1      Inexact Rounded

+ddqua425 quantize   0.0999        1e0  ->  0        Inexact Rounded

+ddqua426 quantize   0.0999        1e1  -> 0E+1      Inexact Rounded

+

+ddqua430 quantize   0.00999      1e-5  ->  0.00999

+ddqua431 quantize   0.00999      1e-4  ->  0.0100   Inexact Rounded

+ddqua432 quantize   0.00999      1e-3  ->  0.010    Inexact Rounded

+ddqua433 quantize   0.00999      1e-2  ->  0.01     Inexact Rounded

+ddqua434 quantize   0.00999      1e-1  ->  0.0      Inexact Rounded

+ddqua435 quantize   0.00999       1e0  ->  0        Inexact Rounded

+ddqua436 quantize   0.00999       1e1  -> 0E+1      Inexact Rounded

+

+ddqua440 quantize   0.000999     1e-5  ->  0.00100  Inexact Rounded

+ddqua441 quantize   0.000999     1e-4  ->  0.0010   Inexact Rounded

+ddqua442 quantize   0.000999     1e-3  ->  0.001    Inexact Rounded

+ddqua443 quantize   0.000999     1e-2  ->  0.00     Inexact Rounded

+ddqua444 quantize   0.000999     1e-1  ->  0.0      Inexact Rounded

+ddqua445 quantize   0.000999      1e0  ->  0        Inexact Rounded

+ddqua446 quantize   0.000999      1e1  -> 0E+1      Inexact Rounded

+

+ddqua1001 quantize  0.000        0.001 ->  0.000

+ddqua1002 quantize  0.001        0.001 ->  0.001

+ddqua1003 quantize  0.0012       0.001 ->  0.001     Inexact Rounded

+ddqua1004 quantize  0.0018       0.001 ->  0.002     Inexact Rounded

+ddqua1005 quantize  0.501        0.001 ->  0.501

+ddqua1006 quantize  0.5012       0.001 ->  0.501     Inexact Rounded

+ddqua1007 quantize  0.5018       0.001 ->  0.502     Inexact Rounded

+ddqua1008 quantize  0.999        0.001 ->  0.999

+

+ddqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded

+ddqua482 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded

+ddqua483 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded

+ddqua484 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded

+ddqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded

+ddqua486 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded

+-- a potential double-round

+ddqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded

+ddqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded

+

+ddqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded

+ddqua492 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded

+ddqua493 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded

+ddqua494 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded

+ddqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded

+ddqua496 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded

+ddqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded

+ddqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded

+

+-- Zeros

+ddqua500 quantize   0     1e1 ->  0E+1

+ddqua501 quantize   0     1e0 ->  0

+ddqua502 quantize   0    1e-1 ->  0.0

+ddqua503 quantize   0.0  1e-1 ->  0.0

+ddqua504 quantize   0.0   1e0 ->  0

+ddqua505 quantize   0.0  1e+1 ->  0E+1

+ddqua506 quantize   0E+1 1e-1 ->  0.0

+ddqua507 quantize   0E+1  1e0 ->  0

+ddqua508 quantize   0E+1 1e+1 ->  0E+1

+ddqua509 quantize  -0     1e1 -> -0E+1

+ddqua510 quantize  -0     1e0 -> -0

+ddqua511 quantize  -0    1e-1 -> -0.0

+ddqua512 quantize  -0.0  1e-1 -> -0.0

+ddqua513 quantize  -0.0   1e0 -> -0

+ddqua514 quantize  -0.0  1e+1 -> -0E+1

+ddqua515 quantize  -0E+1 1e-1 -> -0.0

+ddqua516 quantize  -0E+1  1e0 -> -0

+ddqua517 quantize  -0E+1 1e+1 -> -0E+1

+

+-- Suspicious RHS values

+ddqua520 quantize   1.234    1e359 -> 0E+359 Inexact Rounded

+ddqua521 quantize 123.456    1e359 -> 0E+359 Inexact Rounded

+ddqua522 quantize   1.234    1e359 -> 0E+359 Inexact Rounded

+ddqua523 quantize 123.456    1e359 -> 0E+359 Inexact Rounded

+-- next four are "won't fit" overfl

+ddqua526 quantize   1.234   1e-299 -> NaN Invalid_operation

+ddqua527 quantize 123.456   1e-299 -> NaN Invalid_operation

+ddqua528 quantize   1.234   1e-299 -> NaN Invalid_operation

+ddqua529 quantize 123.456   1e-299 -> NaN Invalid_operation

+

+ddqua532 quantize   1.234E+299    1e299 -> 1E+299    Inexact Rounded

+ddqua533 quantize   1.234E+298    1e299 -> 0E+299    Inexact Rounded

+ddqua534 quantize   1.234         1e299 -> 0E+299    Inexact Rounded

+ddqua537 quantize   0            1e-299 -> 0E-299

+-- next two are "won't fit" overflows

+ddqua538 quantize   1.234        1e-299 -> NaN Invalid_operation

+ddqua539 quantize   1.234        1e-300 -> NaN Invalid_operation

+-- [more below]

+

+-- Specials

+ddqua580 quantize  Inf    -Inf   ->  Infinity

+ddqua581 quantize  Inf  1e-299   ->  NaN  Invalid_operation

+ddqua582 quantize  Inf  1e-1     ->  NaN  Invalid_operation

+ddqua583 quantize  Inf   1e0     ->  NaN  Invalid_operation

+ddqua584 quantize  Inf   1e1     ->  NaN  Invalid_operation

+ddqua585 quantize  Inf   1e299   ->  NaN  Invalid_operation

+ddqua586 quantize  Inf     Inf   ->  Infinity

+ddqua587 quantize -1000    Inf   ->  NaN  Invalid_operation

+ddqua588 quantize -Inf     Inf   ->  -Infinity

+ddqua589 quantize -1       Inf   ->  NaN  Invalid_operation

+ddqua590 quantize  0       Inf   ->  NaN  Invalid_operation

+ddqua591 quantize  1       Inf   ->  NaN  Invalid_operation

+ddqua592 quantize  1000    Inf   ->  NaN  Invalid_operation

+ddqua593 quantize  Inf     Inf   ->  Infinity

+ddqua594 quantize  Inf  1e-0     ->  NaN  Invalid_operation

+ddqua595 quantize -0       Inf   ->  NaN  Invalid_operation

+

+ddqua600 quantize -Inf    -Inf   ->  -Infinity

+ddqua601 quantize -Inf  1e-299   ->  NaN  Invalid_operation

+ddqua602 quantize -Inf  1e-1     ->  NaN  Invalid_operation

+ddqua603 quantize -Inf   1e0     ->  NaN  Invalid_operation

+ddqua604 quantize -Inf   1e1     ->  NaN  Invalid_operation

+ddqua605 quantize -Inf   1e299   ->  NaN  Invalid_operation

+ddqua606 quantize -Inf     Inf   ->  -Infinity

+ddqua607 quantize -1000    Inf   ->  NaN  Invalid_operation

+ddqua608 quantize -Inf    -Inf   ->  -Infinity

+ddqua609 quantize -1      -Inf   ->  NaN  Invalid_operation

+ddqua610 quantize  0      -Inf   ->  NaN  Invalid_operation

+ddqua611 quantize  1      -Inf   ->  NaN  Invalid_operation

+ddqua612 quantize  1000   -Inf   ->  NaN  Invalid_operation

+ddqua613 quantize  Inf    -Inf   ->  Infinity

+ddqua614 quantize -Inf  1e-0     ->  NaN  Invalid_operation

+ddqua615 quantize -0      -Inf   ->  NaN  Invalid_operation

+

+ddqua621 quantize  NaN   -Inf    ->  NaN

+ddqua622 quantize  NaN 1e-299    ->  NaN

+ddqua623 quantize  NaN 1e-1      ->  NaN

+ddqua624 quantize  NaN  1e0      ->  NaN

+ddqua625 quantize  NaN  1e1      ->  NaN

+ddqua626 quantize  NaN  1e299    ->  NaN

+ddqua627 quantize  NaN    Inf    ->  NaN

+ddqua628 quantize  NaN    NaN    ->  NaN

+ddqua629 quantize -Inf    NaN    ->  NaN

+ddqua630 quantize -1000   NaN    ->  NaN

+ddqua631 quantize -1      NaN    ->  NaN

+ddqua632 quantize  0      NaN    ->  NaN

+ddqua633 quantize  1      NaN    ->  NaN

+ddqua634 quantize  1000   NaN    ->  NaN

+ddqua635 quantize  Inf    NaN    ->  NaN

+ddqua636 quantize  NaN 1e-0      ->  NaN

+ddqua637 quantize -0      NaN    ->  NaN

+

+ddqua641 quantize  sNaN   -Inf   ->  NaN  Invalid_operation

+ddqua642 quantize  sNaN 1e-299   ->  NaN  Invalid_operation

+ddqua643 quantize  sNaN 1e-1     ->  NaN  Invalid_operation

+ddqua644 quantize  sNaN  1e0     ->  NaN  Invalid_operation

+ddqua645 quantize  sNaN  1e1     ->  NaN  Invalid_operation

+ddqua646 quantize  sNaN  1e299   ->  NaN  Invalid_operation

+ddqua647 quantize  sNaN    NaN   ->  NaN  Invalid_operation

+ddqua648 quantize  sNaN   sNaN   ->  NaN  Invalid_operation

+ddqua649 quantize  NaN    sNaN   ->  NaN  Invalid_operation

+ddqua650 quantize -Inf    sNaN   ->  NaN  Invalid_operation

+ddqua651 quantize -1000   sNaN   ->  NaN  Invalid_operation

+ddqua652 quantize -1      sNaN   ->  NaN  Invalid_operation

+ddqua653 quantize  0      sNaN   ->  NaN  Invalid_operation

+ddqua654 quantize  1      sNaN   ->  NaN  Invalid_operation

+ddqua655 quantize  1000   sNaN   ->  NaN  Invalid_operation

+ddqua656 quantize  Inf    sNaN   ->  NaN  Invalid_operation

+ddqua657 quantize  NaN    sNaN   ->  NaN  Invalid_operation

+ddqua658 quantize  sNaN 1e-0     ->  NaN  Invalid_operation

+ddqua659 quantize -0      sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddqua661 quantize  NaN9 -Inf   ->  NaN9

+ddqua662 quantize  NaN8  919   ->  NaN8

+ddqua663 quantize  NaN71 Inf   ->  NaN71

+ddqua664 quantize  NaN6  NaN5  ->  NaN6

+ddqua665 quantize -Inf   NaN4  ->  NaN4

+ddqua666 quantize -919   NaN31 ->  NaN31

+ddqua667 quantize  Inf   NaN2  ->  NaN2

+

+ddqua671 quantize  sNaN99 -Inf    ->  NaN99 Invalid_operation

+ddqua672 quantize  sNaN98 -11     ->  NaN98 Invalid_operation

+ddqua673 quantize  sNaN97  NaN    ->  NaN97 Invalid_operation

+ddqua674 quantize  sNaN16 sNaN94  ->  NaN16 Invalid_operation

+ddqua675 quantize  NaN95  sNaN93  ->  NaN93 Invalid_operation

+ddqua676 quantize -Inf    sNaN92  ->  NaN92 Invalid_operation

+ddqua677 quantize  088    sNaN91  ->  NaN91 Invalid_operation

+ddqua678 quantize  Inf    sNaN90  ->  NaN90 Invalid_operation

+ddqua679 quantize  NaN    sNaN88  ->  NaN88 Invalid_operation

+

+ddqua681 quantize -NaN9 -Inf   -> -NaN9

+ddqua682 quantize -NaN8  919   -> -NaN8

+ddqua683 quantize -NaN71 Inf   -> -NaN71

+ddqua684 quantize -NaN6 -NaN5  -> -NaN6

+ddqua685 quantize -Inf  -NaN4  -> -NaN4

+ddqua686 quantize -919  -NaN31 -> -NaN31

+ddqua687 quantize  Inf  -NaN2  -> -NaN2

+

+ddqua691 quantize -sNaN99 -Inf    -> -NaN99 Invalid_operation

+ddqua692 quantize -sNaN98 -11     -> -NaN98 Invalid_operation

+ddqua693 quantize -sNaN97  NaN    -> -NaN97 Invalid_operation

+ddqua694 quantize -sNaN16 sNaN94  -> -NaN16 Invalid_operation

+ddqua695 quantize -NaN95 -sNaN93  -> -NaN93 Invalid_operation

+ddqua696 quantize -Inf   -sNaN92  -> -NaN92 Invalid_operation

+ddqua697 quantize  088   -sNaN91  -> -NaN91 Invalid_operation

+ddqua698 quantize  Inf   -sNaN90  -> -NaN90 Invalid_operation

+ddqua699 quantize  NaN   -sNaN88  -> -NaN88 Invalid_operation

+

+-- subnormals and underflow

+ddqua710 quantize  1.00E-383    1e-383  ->   1E-383    Rounded

+ddqua711 quantize  0.1E-383    2e-384  ->   1E-384   Subnormal

+ddqua712 quantize  0.10E-383   3e-384  ->   1E-384   Subnormal Rounded

+ddqua713 quantize  0.100E-383  4e-384  ->   1E-384   Subnormal Rounded

+ddqua714 quantize  0.01E-383   5e-385  ->   1E-385   Subnormal

+-- next is rounded to Emin

+ddqua715 quantize  0.999E-383   1e-383  ->   1E-383    Inexact Rounded

+ddqua716 quantize  0.099E-383 10e-384  ->   1E-384   Inexact Rounded Subnormal

+

+ddqua717 quantize  0.009E-383  1e-385  ->   1E-385   Inexact Rounded Subnormal

+ddqua718 quantize  0.001E-383  1e-385  ->   0E-385   Inexact Rounded

+ddqua719 quantize  0.0009E-383 1e-385  ->   0E-385   Inexact Rounded

+ddqua720 quantize  0.0001E-383 1e-385  ->   0E-385   Inexact Rounded

+

+ddqua730 quantize -1.00E-383   1e-383  ->  -1E-383     Rounded

+ddqua731 quantize -0.1E-383    1e-383  ->  -0E-383     Rounded Inexact

+ddqua732 quantize -0.10E-383   1e-383  ->  -0E-383     Rounded Inexact

+ddqua733 quantize -0.100E-383  1e-383  ->  -0E-383     Rounded Inexact

+ddqua734 quantize -0.01E-383   1e-383  ->  -0E-383     Inexact Rounded

+-- next is rounded to Emin

+ddqua735 quantize -0.999E-383 90e-383  ->  -1E-383     Inexact Rounded

+ddqua736 quantize -0.099E-383 -1e-383  ->  -0E-383     Inexact Rounded

+ddqua737 quantize -0.009E-383 -1e-383  ->  -0E-383     Inexact Rounded

+ddqua738 quantize -0.001E-383 -0e-383  ->  -0E-383     Inexact Rounded

+ddqua739 quantize -0.0001E-383 0e-383  ->  -0E-383     Inexact Rounded

+

+ddqua740 quantize -1.00E-383   1e-384 ->  -1.0E-383   Rounded

+ddqua741 quantize -0.1E-383    1e-384 ->  -1E-384    Subnormal

+ddqua742 quantize -0.10E-383   1e-384 ->  -1E-384    Subnormal Rounded

+ddqua743 quantize -0.100E-383  1e-384 ->  -1E-384    Subnormal Rounded

+ddqua744 quantize -0.01E-383   1e-384 ->  -0E-384    Inexact Rounded

+-- next is rounded to Emin

+ddqua745 quantize -0.999E-383  1e-384 ->  -1.0E-383   Inexact Rounded

+ddqua746 quantize -0.099E-383  1e-384 ->  -1E-384    Inexact Rounded Subnormal

+ddqua747 quantize -0.009E-383  1e-384 ->  -0E-384    Inexact Rounded

+ddqua748 quantize -0.001E-383  1e-384 ->  -0E-384    Inexact Rounded

+ddqua749 quantize -0.0001E-383 1e-384 ->  -0E-384    Inexact Rounded

+

+ddqua750 quantize -1.00E-383   1e-385 ->  -1.00E-383

+ddqua751 quantize -0.1E-383    1e-385 ->  -1.0E-384  Subnormal

+ddqua752 quantize -0.10E-383   1e-385 ->  -1.0E-384  Subnormal

+ddqua753 quantize -0.100E-383  1e-385 ->  -1.0E-384  Subnormal Rounded

+ddqua754 quantize -0.01E-383   1e-385 ->  -1E-385    Subnormal

+-- next is rounded to Emin

+ddqua755 quantize -0.999E-383  1e-385 ->  -1.00E-383  Inexact Rounded

+ddqua756 quantize -0.099E-383  1e-385 ->  -1.0E-384  Inexact Rounded Subnormal

+ddqua757 quantize -0.009E-383  1e-385 ->  -1E-385    Inexact Rounded Subnormal

+ddqua758 quantize -0.001E-383  1e-385 ->  -0E-385    Inexact Rounded

+ddqua759 quantize -0.0001E-383 1e-385 ->  -0E-385    Inexact Rounded

+

+ddqua760 quantize -1.00E-383   1e-386 ->  -1.000E-383

+ddqua761 quantize -0.1E-383    1e-386 ->  -1.00E-384  Subnormal

+ddqua762 quantize -0.10E-383   1e-386 ->  -1.00E-384  Subnormal

+ddqua763 quantize -0.100E-383  1e-386 ->  -1.00E-384  Subnormal

+ddqua764 quantize -0.01E-383   1e-386 ->  -1.0E-385   Subnormal

+ddqua765 quantize -0.999E-383  1e-386 ->  -9.99E-384  Subnormal

+ddqua766 quantize -0.099E-383  1e-386 ->  -9.9E-385   Subnormal

+ddqua767 quantize -0.009E-383  1e-386 ->  -9E-386     Subnormal

+ddqua768 quantize -0.001E-383  1e-386 ->  -1E-386     Subnormal

+ddqua769 quantize -0.0001E-383 1e-386 ->  -0E-386     Inexact Rounded

+

+-- More from Fung Lee

+ddqua1021 quantize  8.666666666666000E+384  1.000000000000000E+384 ->  8.666666666666000E+384

+ddqua1022 quantize -8.666666666666000E+384  1.000000000000000E+384 -> -8.666666666666000E+384

+ddqua1027 quantize 8.666666666666000E+323  1E+31    -> NaN Invalid_operation

+ddqua1030 quantize 8.66666666E+3           1E+3     -> 9E+3 Inexact Rounded

+

+-- Int and uInt32 edge values for testing conversions

+ddqua1040 quantize -2147483646     0 -> -2147483646

+ddqua1041 quantize -2147483647     0 -> -2147483647

+ddqua1042 quantize -2147483648     0 -> -2147483648

+ddqua1043 quantize -2147483649     0 -> -2147483649

+ddqua1044 quantize  2147483646     0 ->  2147483646

+ddqua1045 quantize  2147483647     0 ->  2147483647

+ddqua1046 quantize  2147483648     0 ->  2147483648

+ddqua1047 quantize  2147483649     0 ->  2147483649

+ddqua1048 quantize  4294967294     0 ->  4294967294

+ddqua1049 quantize  4294967295     0 ->  4294967295

+ddqua1050 quantize  4294967296     0 ->  4294967296

+ddqua1051 quantize  4294967297     0 ->  4294967297

+

+-- Rounding swathe

+rounding: half_even

+ddqua1100 quantize  1.2300    1.00    ->  1.23  Rounded

+ddqua1101 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+ddqua1102 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+ddqua1103 quantize  1.2350    1.00    ->  1.24  Inexact Rounded

+ddqua1104 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+ddqua1105 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+ddqua1106 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+ddqua1107 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+ddqua1108 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+ddqua1109 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+

+rounding: half_up

+ddqua1200 quantize  1.2300    1.00    ->  1.23  Rounded

+ddqua1201 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+ddqua1202 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+ddqua1203 quantize  1.2350    1.00    ->  1.24  Inexact Rounded

+ddqua1204 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+ddqua1205 quantize  1.2450    1.00    ->  1.25  Inexact Rounded

+ddqua1206 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+ddqua1207 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+ddqua1208 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+ddqua1209 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+

+rounding: half_down

+ddqua1300 quantize  1.2300    1.00    ->  1.23  Rounded

+ddqua1301 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+ddqua1302 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+ddqua1303 quantize  1.2350    1.00    ->  1.23  Inexact Rounded

+ddqua1304 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+ddqua1305 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+ddqua1306 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+ddqua1307 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+ddqua1308 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+ddqua1309 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+

+rounding: up

+ddqua1400 quantize  1.2300    1.00    ->  1.23  Rounded

+ddqua1401 quantize  1.2301    1.00    ->  1.24  Inexact Rounded

+ddqua1402 quantize  1.2310    1.00    ->  1.24  Inexact Rounded

+ddqua1403 quantize  1.2350    1.00    ->  1.24  Inexact Rounded

+ddqua1404 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+ddqua1405 quantize  1.2450    1.00    ->  1.25  Inexact Rounded

+ddqua1406 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+ddqua1407 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+ddqua1408 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+ddqua1409 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+ddqua1411 quantize -1.2399    1.00    -> -1.24  Inexact Rounded

+

+rounding: down

+ddqua1500 quantize  1.2300    1.00    ->  1.23  Rounded

+ddqua1501 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+ddqua1502 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+ddqua1503 quantize  1.2350    1.00    ->  1.23  Inexact Rounded

+ddqua1504 quantize  1.2351    1.00    ->  1.23  Inexact Rounded

+ddqua1505 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+ddqua1506 quantize  1.2451    1.00    ->  1.24  Inexact Rounded

+ddqua1507 quantize  1.2360    1.00    ->  1.23  Inexact Rounded

+ddqua1508 quantize  1.2370    1.00    ->  1.23  Inexact Rounded

+ddqua1509 quantize  1.2399    1.00    ->  1.23  Inexact Rounded

+ddqua1511 quantize -1.2399    1.00    -> -1.23  Inexact Rounded

+

+rounding: ceiling

+ddqua1600 quantize  1.2300    1.00    ->  1.23  Rounded

+ddqua1601 quantize  1.2301    1.00    ->  1.24  Inexact Rounded

+ddqua1602 quantize  1.2310    1.00    ->  1.24  Inexact Rounded

+ddqua1603 quantize  1.2350    1.00    ->  1.24  Inexact Rounded

+ddqua1604 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+ddqua1605 quantize  1.2450    1.00    ->  1.25  Inexact Rounded

+ddqua1606 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+ddqua1607 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+ddqua1608 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+ddqua1609 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+ddqua1611 quantize -1.2399    1.00    -> -1.23  Inexact Rounded

+

+rounding: floor

+ddqua1700 quantize  1.2300    1.00    ->  1.23  Rounded

+ddqua1701 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+ddqua1702 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+ddqua1703 quantize  1.2350    1.00    ->  1.23  Inexact Rounded

+ddqua1704 quantize  1.2351    1.00    ->  1.23  Inexact Rounded

+ddqua1705 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+ddqua1706 quantize  1.2451    1.00    ->  1.24  Inexact Rounded

+ddqua1707 quantize  1.2360    1.00    ->  1.23  Inexact Rounded

+ddqua1708 quantize  1.2370    1.00    ->  1.23  Inexact Rounded

+ddqua1709 quantize  1.2399    1.00    ->  1.23  Inexact Rounded

+ddqua1711 quantize -1.2399    1.00    -> -1.24  Inexact Rounded

+

+rounding: 05up

+ddqua1800 quantize  1.2000    1.00    ->  1.20  Rounded

+ddqua1801 quantize  1.2001    1.00    ->  1.21  Inexact Rounded

+ddqua1802 quantize  1.2010    1.00    ->  1.21  Inexact Rounded

+ddqua1803 quantize  1.2050    1.00    ->  1.21  Inexact Rounded

+ddqua1804 quantize  1.2051    1.00    ->  1.21  Inexact Rounded

+ddqua1807 quantize  1.2060    1.00    ->  1.21  Inexact Rounded

+ddqua1808 quantize  1.2070    1.00    ->  1.21  Inexact Rounded

+ddqua1809 quantize  1.2099    1.00    ->  1.21  Inexact Rounded

+ddqua1811 quantize -1.2099    1.00    -> -1.21  Inexact Rounded

+

+ddqua1900 quantize  1.2100    1.00    ->  1.21  Rounded

+ddqua1901 quantize  1.2101    1.00    ->  1.21  Inexact Rounded

+ddqua1902 quantize  1.2110    1.00    ->  1.21  Inexact Rounded

+ddqua1903 quantize  1.2150    1.00    ->  1.21  Inexact Rounded

+ddqua1904 quantize  1.2151    1.00    ->  1.21  Inexact Rounded

+ddqua1907 quantize  1.2160    1.00    ->  1.21  Inexact Rounded

+ddqua1908 quantize  1.2170    1.00    ->  1.21  Inexact Rounded

+ddqua1909 quantize  1.2199    1.00    ->  1.21  Inexact Rounded

+ddqua1911 quantize -1.2199    1.00    -> -1.21  Inexact Rounded

+

+ddqua2000 quantize  1.2400    1.00    ->  1.24  Rounded

+ddqua2001 quantize  1.2401    1.00    ->  1.24  Inexact Rounded

+ddqua2002 quantize  1.2410    1.00    ->  1.24  Inexact Rounded

+ddqua2003 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+ddqua2004 quantize  1.2451    1.00    ->  1.24  Inexact Rounded

+ddqua2007 quantize  1.2460    1.00    ->  1.24  Inexact Rounded

+ddqua2008 quantize  1.2470    1.00    ->  1.24  Inexact Rounded

+ddqua2009 quantize  1.2499    1.00    ->  1.24  Inexact Rounded

+ddqua2011 quantize -1.2499    1.00    -> -1.24  Inexact Rounded

+

+ddqua2100 quantize  1.2500    1.00    ->  1.25  Rounded

+ddqua2101 quantize  1.2501    1.00    ->  1.26  Inexact Rounded

+ddqua2102 quantize  1.2510    1.00    ->  1.26  Inexact Rounded

+ddqua2103 quantize  1.2550    1.00    ->  1.26  Inexact Rounded

+ddqua2104 quantize  1.2551    1.00    ->  1.26  Inexact Rounded

+ddqua2107 quantize  1.2560    1.00    ->  1.26  Inexact Rounded

+ddqua2108 quantize  1.2570    1.00    ->  1.26  Inexact Rounded

+ddqua2109 quantize  1.2599    1.00    ->  1.26  Inexact Rounded

+ddqua2111 quantize -1.2599    1.00    -> -1.26  Inexact Rounded

+

+ddqua2200 quantize  1.2600    1.00    ->  1.26  Rounded

+ddqua2201 quantize  1.2601    1.00    ->  1.26  Inexact Rounded

+ddqua2202 quantize  1.2610    1.00    ->  1.26  Inexact Rounded

+ddqua2203 quantize  1.2650    1.00    ->  1.26  Inexact Rounded

+ddqua2204 quantize  1.2651    1.00    ->  1.26  Inexact Rounded

+ddqua2207 quantize  1.2660    1.00    ->  1.26  Inexact Rounded

+ddqua2208 quantize  1.2670    1.00    ->  1.26  Inexact Rounded

+ddqua2209 quantize  1.2699    1.00    ->  1.26  Inexact Rounded

+ddqua2211 quantize -1.2699    1.00    -> -1.26  Inexact Rounded

+

+ddqua2300 quantize  1.2900    1.00    ->  1.29  Rounded

+ddqua2301 quantize  1.2901    1.00    ->  1.29  Inexact Rounded

+ddqua2302 quantize  1.2910    1.00    ->  1.29  Inexact Rounded

+ddqua2303 quantize  1.2950    1.00    ->  1.29  Inexact Rounded

+ddqua2304 quantize  1.2951    1.00    ->  1.29  Inexact Rounded

+ddqua2307 quantize  1.2960    1.00    ->  1.29  Inexact Rounded

+ddqua2308 quantize  1.2970    1.00    ->  1.29  Inexact Rounded

+ddqua2309 quantize  1.2999    1.00    ->  1.29  Inexact Rounded

+ddqua2311 quantize -1.2999    1.00    -> -1.29  Inexact Rounded

+

+-- Null tests

+rounding:    half_even

+ddqua998 quantize 10    # -> NaN Invalid_operation

+ddqua999 quantize  # 1e10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddReduce.decTest b/Lib/test/decimaltestdata/ddReduce.decTest
new file mode 100644
index 0000000..545beeb
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddReduce.decTest
@@ -0,0 +1,182 @@
+------------------------------------------------------------------------

+-- ddReduce.decTest -- remove trailing zeros from a decDouble         --

+-- Copyright (c) IBM Corporation, 2003, 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.57

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+ddred001 reduce '1'      -> '1'

+ddred002 reduce '-1'     -> '-1'

+ddred003 reduce '1.00'   -> '1'

+ddred004 reduce '-1.00'  -> '-1'

+ddred005 reduce '0'      -> '0'

+ddred006 reduce '0.00'   -> '0'

+ddred007 reduce '00.0'   -> '0'

+ddred008 reduce '00.00'  -> '0'

+ddred009 reduce '00'     -> '0'

+ddred010 reduce '0E+1'   -> '0'

+ddred011 reduce '0E+5'   -> '0'

+

+ddred012 reduce '-2'     -> '-2'

+ddred013 reduce '2'      -> '2'

+ddred014 reduce '-2.00'  -> '-2'

+ddred015 reduce '2.00'   -> '2'

+ddred016 reduce '-0'     -> '-0'

+ddred017 reduce '-0.00'  -> '-0'

+ddred018 reduce '-00.0'  -> '-0'

+ddred019 reduce '-00.00' -> '-0'

+ddred020 reduce '-00'    -> '-0'

+ddred021 reduce '-0E+5'   -> '-0'

+ddred022 reduce '-0E+1'  -> '-0'

+

+ddred030 reduce '+0.1'            -> '0.1'

+ddred031 reduce '-0.1'            -> '-0.1'

+ddred032 reduce '+0.01'           -> '0.01'

+ddred033 reduce '-0.01'           -> '-0.01'

+ddred034 reduce '+0.001'          -> '0.001'

+ddred035 reduce '-0.001'          -> '-0.001'

+ddred036 reduce '+0.000001'       -> '0.000001'

+ddred037 reduce '-0.000001'       -> '-0.000001'

+ddred038 reduce '+0.000000000001' -> '1E-12'

+ddred039 reduce '-0.000000000001' -> '-1E-12'

+

+ddred041 reduce 1.1        -> 1.1

+ddred042 reduce 1.10       -> 1.1

+ddred043 reduce 1.100      -> 1.1

+ddred044 reduce 1.110      -> 1.11

+ddred045 reduce -1.1       -> -1.1

+ddred046 reduce -1.10      -> -1.1

+ddred047 reduce -1.100     -> -1.1

+ddred048 reduce -1.110     -> -1.11

+ddred049 reduce 9.9        -> 9.9

+ddred050 reduce 9.90       -> 9.9

+ddred051 reduce 9.900      -> 9.9

+ddred052 reduce 9.990      -> 9.99

+ddred053 reduce -9.9       -> -9.9

+ddred054 reduce -9.90      -> -9.9

+ddred055 reduce -9.900     -> -9.9

+ddred056 reduce -9.990     -> -9.99

+

+-- some trailing fractional zeros with zeros in units

+ddred060 reduce  10.0        -> 1E+1

+ddred061 reduce  10.00       -> 1E+1

+ddred062 reduce  100.0       -> 1E+2

+ddred063 reduce  100.00      -> 1E+2

+ddred064 reduce  1.1000E+3   -> 1.1E+3

+ddred065 reduce  1.10000E+3  -> 1.1E+3

+ddred066 reduce -10.0        -> -1E+1

+ddred067 reduce -10.00       -> -1E+1

+ddred068 reduce -100.0       -> -1E+2

+ddred069 reduce -100.00      -> -1E+2

+ddred070 reduce -1.1000E+3   -> -1.1E+3

+ddred071 reduce -1.10000E+3  -> -1.1E+3

+

+-- some insignificant trailing zeros with positive exponent

+ddred080 reduce  10E+1       -> 1E+2

+ddred081 reduce  100E+1      -> 1E+3

+ddred082 reduce  1.0E+2      -> 1E+2

+ddred083 reduce  1.0E+3      -> 1E+3

+ddred084 reduce  1.1E+3      -> 1.1E+3

+ddred085 reduce  1.00E+3     -> 1E+3

+ddred086 reduce  1.10E+3     -> 1.1E+3

+ddred087 reduce -10E+1       -> -1E+2

+ddred088 reduce -100E+1      -> -1E+3

+ddred089 reduce -1.0E+2      -> -1E+2

+ddred090 reduce -1.0E+3      -> -1E+3

+ddred091 reduce -1.1E+3      -> -1.1E+3

+ddred092 reduce -1.00E+3     -> -1E+3

+ddred093 reduce -1.10E+3     -> -1.1E+3

+

+-- some significant trailing zeros, were we to be trimming

+ddred100 reduce  11          -> 11

+ddred101 reduce  10          -> 1E+1

+ddred102 reduce  10.         -> 1E+1

+ddred103 reduce  1.1E+1      -> 11

+ddred104 reduce  1.0E+1      -> 1E+1

+ddred105 reduce  1.10E+2     -> 1.1E+2

+ddred106 reduce  1.00E+2     -> 1E+2

+ddred107 reduce  1.100E+3    -> 1.1E+3

+ddred108 reduce  1.000E+3    -> 1E+3

+ddred109 reduce  1.000000E+6 -> 1E+6

+ddred110 reduce -11          -> -11

+ddred111 reduce -10          -> -1E+1

+ddred112 reduce -10.         -> -1E+1

+ddred113 reduce -1.1E+1      -> -11

+ddred114 reduce -1.0E+1      -> -1E+1

+ddred115 reduce -1.10E+2     -> -1.1E+2

+ddred116 reduce -1.00E+2     -> -1E+2

+ddred117 reduce -1.100E+3    -> -1.1E+3

+ddred118 reduce -1.000E+3    -> -1E+3

+ddred119 reduce -1.00000E+5  -> -1E+5

+ddred120 reduce -1.000000E+6 -> -1E+6

+ddred121 reduce -10.00000E+6 -> -1E+7

+ddred122 reduce -100.0000E+6 -> -1E+8

+ddred123 reduce -1000.000E+6 -> -1E+9

+ddred124 reduce -10000.00E+6 -> -1E+10

+ddred125 reduce -100000.0E+6 -> -1E+11

+ddred126 reduce -1000000.E+6 -> -1E+12

+

+-- examples from decArith

+ddred140 reduce '2.1'     ->  '2.1'

+ddred141 reduce '-2.0'    ->  '-2'

+ddred142 reduce '1.200'   ->  '1.2'

+ddred143 reduce '-120'    ->  '-1.2E+2'

+ddred144 reduce '120.00'  ->  '1.2E+2'

+ddred145 reduce '0.00'    ->  '0'

+

+-- Nmax, Nmin, Ntiny

+-- note origami effect on some of these

+ddred151 reduce  9.999999999999999E+384   -> 9.999999999999999E+384

+ddred152 reduce  9.999999000000000E+380   -> 9.99999900000E+380

+ddred153 reduce  9.999999999990000E+384   -> 9.999999999990000E+384

+ddred154 reduce  1E-383                   -> 1E-383

+ddred155 reduce  1.000000000000000E-383   -> 1E-383

+ddred156 reduce  2.000E-395               -> 2E-395   Subnormal

+ddred157 reduce  1E-398                   -> 1E-398   Subnormal

+

+ddred161 reduce  -1E-398                  -> -1E-398  Subnormal

+ddred162 reduce  -2.000E-395              -> -2E-395  Subnormal

+ddred163 reduce  -1.000000000000000E-383  -> -1E-383

+ddred164 reduce  -1E-383                  -> -1E-383

+ddred165 reduce  -9.999999000000000E+380  -> -9.99999900000E+380

+ddred166 reduce  -9.999999999990000E+384  -> -9.999999999990000E+384

+ddred167 reduce  -9.999999999999990E+384  -> -9.999999999999990E+384

+ddred168 reduce  -9.999999999999999E+384  -> -9.999999999999999E+384

+ddred169 reduce  -9.999999999999990E+384  -> -9.999999999999990E+384

+

+

+-- specials (reduce does not affect payload)

+ddred820 reduce 'Inf'    -> 'Infinity'

+ddred821 reduce '-Inf'   -> '-Infinity'

+ddred822 reduce   NaN    ->  NaN

+ddred823 reduce  sNaN    ->  NaN    Invalid_operation

+ddred824 reduce   NaN101 ->  NaN101

+ddred825 reduce  sNaN010 ->  NaN10  Invalid_operation

+ddred827 reduce  -NaN    -> -NaN

+ddred828 reduce -sNaN    -> -NaN    Invalid_operation

+ddred829 reduce  -NaN101 -> -NaN101

+ddred830 reduce -sNaN010 -> -NaN10  Invalid_operation

+

+-- Null test

+ddred900 reduce  # -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddRemainder.decTest b/Lib/test/decimaltestdata/ddRemainder.decTest
new file mode 100644
index 0000000..d805a48
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddRemainder.decTest
@@ -0,0 +1,600 @@
+------------------------------------------------------------------------

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

+

+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

+

+-- destructive subtract

+ddrem1101 remainder  1234567890123456  1.000000000000001  ->  0.765432109876546

+ddrem1102 remainder  1234567890123456   1.00000000000001  ->   0.65432109876557

+ddrem1103 remainder  1234567890123456    1.0000000000001  ->    0.5432109876668

+ddrem1104 remainder  1234567890123455  4.000000000000001  ->  2.691358027469137

+ddrem1105 remainder  1234567890123456  4.000000000000001  ->  3.691358027469137

+ddrem1106 remainder  1234567890123456    4.9999999999999  ->    0.6913578024696

+ddrem1107 remainder  1234567890123456   4.99999999999999  ->   3.46913578024691

+ddrem1108 remainder  1234567890123456  4.999999999999999  ->  1.246913578024691

+ddrem1109 remainder  1234567890123456  5.000000000000001  ->  0.753086421975309

+ddrem1110 remainder  1234567890123456   5.00000000000001  ->   3.53086421975310

+ddrem1111 remainder  1234567890123456    5.0000000000001  ->    1.3086421975314

+

+-- Null tests

+ddrem1000 remainder 10  # -> NaN Invalid_operation

+ddrem1001 remainder  # 10 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/ddRemainderNear.decTest b/Lib/test/decimaltestdata/ddRemainderNear.decTest
new file mode 100644
index 0000000..dfcd3eb
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddRemainderNear.decTest
@@ -0,0 +1,629 @@
+------------------------------------------------------------------------

+-- ddRemainderNear.decTest -- decDouble remainder-near                --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- sanity checks (as base, above)

+ddrmn001 remaindernear  1     1    ->  0

+ddrmn002 remaindernear  2     1    ->  0

+ddrmn003 remaindernear  1     2    ->  1

+ddrmn004 remaindernear  2     2    ->  0

+ddrmn005 remaindernear  0     1    ->  0

+ddrmn006 remaindernear  0     2    ->  0

+ddrmn007 remaindernear  1     3    ->  1

+ddrmn008 remaindernear  2     3    -> -1

+ddrmn009 remaindernear  3     3    ->  0

+

+ddrmn010 remaindernear  2.4   1    ->  0.4

+ddrmn011 remaindernear  2.4   -1   ->  0.4

+ddrmn012 remaindernear  -2.4  1    ->  -0.4

+ddrmn013 remaindernear  -2.4  -1   ->  -0.4

+ddrmn014 remaindernear  2.40  1    ->  0.40

+ddrmn015 remaindernear  2.400 1    ->  0.400

+ddrmn016 remaindernear  2.4   2    ->  0.4

+ddrmn017 remaindernear  2.400 2    ->  0.400

+ddrmn018 remaindernear  2.    2    ->  0

+ddrmn019 remaindernear  20    20   ->  0

+

+ddrmn020 remaindernear  187   187    ->  0

+ddrmn021 remaindernear  5     2      ->  1

+ddrmn022 remaindernear  5     2.0    ->  1.0

+ddrmn023 remaindernear  5     2.000  ->  1.000

+ddrmn024 remaindernear  5     0.200  ->  0.000

+ddrmn025 remaindernear  5     0.200  ->  0.000

+

+ddrmn030 remaindernear  1     2      ->  1

+ddrmn031 remaindernear  1     4      ->  1

+ddrmn032 remaindernear  1     8      ->  1

+

+ddrmn033 remaindernear  1     16     ->  1

+ddrmn034 remaindernear  1     32     ->  1

+ddrmn035 remaindernear  1     64     ->  1

+ddrmn040 remaindernear  1    -2      ->  1

+ddrmn041 remaindernear  1    -4      ->  1

+ddrmn042 remaindernear  1    -8      ->  1

+ddrmn043 remaindernear  1    -16     ->  1

+ddrmn044 remaindernear  1    -32     ->  1

+ddrmn045 remaindernear  1    -64     ->  1

+ddrmn050 remaindernear -1     2      ->  -1

+ddrmn051 remaindernear -1     4      ->  -1

+ddrmn052 remaindernear -1     8      ->  -1

+ddrmn053 remaindernear -1     16     ->  -1

+ddrmn054 remaindernear -1     32     ->  -1

+ddrmn055 remaindernear -1     64     ->  -1

+ddrmn060 remaindernear -1    -2      ->  -1

+ddrmn061 remaindernear -1    -4      ->  -1

+ddrmn062 remaindernear -1    -8      ->  -1

+ddrmn063 remaindernear -1    -16     ->  -1

+ddrmn064 remaindernear -1    -32     ->  -1

+ddrmn065 remaindernear -1    -64     ->  -1

+

+ddrmn066 remaindernear          9.9   1  -> -0.1

+ddrmn067 remaindernear         99.7   1  -> -0.3

+ddrmn068 remaindernear  999999999     1  -> 0

+ddrmn069 remaindernear  999999999.4   1  -> 0.4

+ddrmn070 remaindernear  999999999.5   1  -> -0.5

+ddrmn071 remaindernear  999999999.9   1  -> -0.1

+ddrmn072 remaindernear  999999999.999 1  -> -0.001

+ddrmn073 remaindernear  999999.999999 1  -> -0.000001

+ddrmn074 remaindernear  9             1  -> 0

+ddrmn075 remaindernear  9999999999999999 1  -> 0

+ddrmn076 remaindernear  9999999999999999 2  -> -1

+ddrmn077 remaindernear  9999999999999999 3  -> 0

+ddrmn078 remaindernear  9999999999999999 4  -> -1

+

+ddrmn080 remaindernear  0.            1  -> 0

+ddrmn081 remaindernear  .0            1  -> 0.0

+ddrmn082 remaindernear  0.00          1  -> 0.00

+ddrmn083 remaindernear  0.00E+9       1  -> 0

+ddrmn084 remaindernear  0.00E+3       1  -> 0

+ddrmn085 remaindernear  0.00E+2       1  -> 0

+ddrmn086 remaindernear  0.00E+1       1  -> 0.0

+ddrmn087 remaindernear  0.00E+0       1  -> 0.00

+ddrmn088 remaindernear  0.00E-0       1  -> 0.00

+ddrmn089 remaindernear  0.00E-1       1  -> 0.000

+ddrmn090 remaindernear  0.00E-2       1  -> 0.0000

+ddrmn091 remaindernear  0.00E-3       1  -> 0.00000

+ddrmn092 remaindernear  0.00E-4       1  -> 0.000000

+ddrmn093 remaindernear  0.00E-5       1  -> 0E-7

+ddrmn094 remaindernear  0.00E-6       1  -> 0E-8

+ddrmn095 remaindernear  0.0000E-50    1  -> 0E-54

+

+-- Various flavours of remaindernear by 0

+ddrmn101 remaindernear  0       0   -> NaN Division_undefined

+ddrmn102 remaindernear  0      -0   -> NaN Division_undefined

+ddrmn103 remaindernear -0       0   -> NaN Division_undefined

+ddrmn104 remaindernear -0      -0   -> NaN Division_undefined

+ddrmn105 remaindernear  0.0E5   0   -> NaN Division_undefined

+ddrmn106 remaindernear  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]

+ddrmn107 remaindernear  0.0001  0   -> NaN Invalid_operation

+ddrmn108 remaindernear  0.01    0   -> NaN Invalid_operation

+ddrmn109 remaindernear  0.1     0   -> NaN Invalid_operation

+ddrmn110 remaindernear  1       0   -> NaN Invalid_operation

+ddrmn111 remaindernear  1       0.0 -> NaN Invalid_operation

+ddrmn112 remaindernear 10       0.0 -> NaN Invalid_operation

+ddrmn113 remaindernear 1E+100   0.0 -> NaN Invalid_operation

+ddrmn114 remaindernear 1E+380   0   -> NaN Invalid_operation

+ddrmn115 remaindernear  0.0001 -0   -> NaN Invalid_operation

+ddrmn116 remaindernear  0.01   -0   -> NaN Invalid_operation

+ddrmn119 remaindernear  0.1    -0   -> NaN Invalid_operation

+ddrmn120 remaindernear  1      -0   -> NaN Invalid_operation

+ddrmn121 remaindernear  1      -0.0 -> NaN Invalid_operation

+ddrmn122 remaindernear 10      -0.0 -> NaN Invalid_operation

+ddrmn123 remaindernear 1E+100  -0.0 -> NaN Invalid_operation

+ddrmn124 remaindernear 1E+384  -0   -> NaN Invalid_operation

+-- and zeros on left

+ddrmn130 remaindernear  0      1   ->  0

+ddrmn131 remaindernear  0     -1   ->  0

+ddrmn132 remaindernear  0.0    1   ->  0.0

+ddrmn133 remaindernear  0.0   -1   ->  0.0

+ddrmn134 remaindernear -0      1   -> -0

+ddrmn135 remaindernear -0     -1   -> -0

+ddrmn136 remaindernear -0.0    1   -> -0.0

+ddrmn137 remaindernear -0.0   -1   -> -0.0

+

+-- 0.5ers

+ddrmn143 remaindernear   0.5  2     ->  0.5

+ddrmn144 remaindernear   0.5  2.1   ->  0.5

+ddrmn145 remaindernear   0.5  2.01  ->  0.50

+ddrmn146 remaindernear   0.5  2.001 ->  0.500

+ddrmn147 remaindernear   0.50 2     ->  0.50

+ddrmn148 remaindernear   0.50 2.01  ->  0.50

+ddrmn149 remaindernear   0.50 2.001 ->  0.500

+

+-- steadies

+ddrmn150 remaindernear  1  1   -> 0

+ddrmn151 remaindernear  1  2   -> 1

+ddrmn152 remaindernear  1  3   -> 1

+ddrmn153 remaindernear  1  4   -> 1

+ddrmn154 remaindernear  1  5   -> 1

+ddrmn155 remaindernear  1  6   -> 1

+ddrmn156 remaindernear  1  7   -> 1

+ddrmn157 remaindernear  1  8   -> 1

+ddrmn158 remaindernear  1  9   -> 1

+ddrmn159 remaindernear  1  10  -> 1

+ddrmn160 remaindernear  1  1   -> 0

+ddrmn161 remaindernear  2  1   -> 0

+ddrmn162 remaindernear  3  1   -> 0

+ddrmn163 remaindernear  4  1   -> 0

+ddrmn164 remaindernear  5  1   -> 0

+ddrmn165 remaindernear  6  1   -> 0

+ddrmn166 remaindernear  7  1   -> 0

+ddrmn167 remaindernear  8  1   -> 0

+ddrmn168 remaindernear  9  1   -> 0

+ddrmn169 remaindernear  10 1   -> 0

+

+-- some differences from remainder

+ddrmn171 remaindernear   0.4  1.020 ->  0.400

+ddrmn172 remaindernear   0.50 1.020 ->  0.500

+ddrmn173 remaindernear   0.51 1.020 ->  0.510

+ddrmn174 remaindernear   0.52 1.020 -> -0.500

+ddrmn175 remaindernear   0.6  1.020 -> -0.420

+

+-- More flavours of remaindernear by 0

+ddrmn201 remaindernear  0      0   -> NaN Division_undefined

+ddrmn202 remaindernear  0.0E5  0   -> NaN Division_undefined

+ddrmn203 remaindernear  0.000  0   -> NaN Division_undefined

+ddrmn204 remaindernear  0.0001 0   -> NaN Invalid_operation

+ddrmn205 remaindernear  0.01   0   -> NaN Invalid_operation

+ddrmn206 remaindernear  0.1    0   -> NaN Invalid_operation

+ddrmn207 remaindernear  1      0   -> NaN Invalid_operation

+ddrmn208 remaindernear  1      0.0 -> NaN Invalid_operation

+ddrmn209 remaindernear 10      0.0 -> NaN Invalid_operation

+ddrmn210 remaindernear 1E+100  0.0 -> NaN Invalid_operation

+ddrmn211 remaindernear 1E+380  0   -> NaN Invalid_operation

+

+-- tests from the extended specification

+ddrmn221 remaindernear 2.1     3   -> -0.9

+ddrmn222 remaindernear  10     6   -> -2

+ddrmn223 remaindernear  10     3   ->  1

+ddrmn224 remaindernear -10     3   -> -1

+ddrmn225 remaindernear  10.2   1   -> 0.2

+ddrmn226 remaindernear  10     0.3 -> 0.1

+ddrmn227 remaindernear   3.6   1.3 -> -0.3

+

+-- some differences from remainder

+ddrmn231 remaindernear  -0.4  1.020 -> -0.400

+ddrmn232 remaindernear  -0.50 1.020 -> -0.500

+ddrmn233 remaindernear  -0.51 1.020 -> -0.510

+ddrmn234 remaindernear  -0.52 1.020 ->  0.500

+ddrmn235 remaindernear  -0.6  1.020 ->  0.420

+

+-- high Xs

+ddrmn240 remaindernear  1E+2  1.00  ->  0.00

+

+-- ddrmn3xx are from DiagBigDecimal

+ddrmn301 remaindernear   1    3     ->  1

+ddrmn302 remaindernear   5    5     ->  0

+ddrmn303 remaindernear   13   10    ->  3

+ddrmn304 remaindernear   13   50    ->  13

+ddrmn305 remaindernear   13   100   ->  13

+ddrmn306 remaindernear   13   1000  ->  13

+ddrmn307 remaindernear   .13    1   ->  0.13

+ddrmn308 remaindernear   0.133  1   ->  0.133

+ddrmn309 remaindernear   0.1033 1   ->  0.1033

+ddrmn310 remaindernear   1.033  1   ->  0.033

+ddrmn311 remaindernear   10.33  1   ->  0.33

+ddrmn312 remaindernear   10.33 10   ->  0.33

+ddrmn313 remaindernear   103.3  1   ->  0.3

+ddrmn314 remaindernear   133   10   ->  3

+ddrmn315 remaindernear   1033  10   ->  3

+ddrmn316 remaindernear   1033  50   -> -17

+ddrmn317 remaindernear   101.0  3   -> -1.0

+ddrmn318 remaindernear   102.0  3   ->  0.0

+ddrmn319 remaindernear   103.0  3   ->  1.0

+ddrmn320 remaindernear   2.40   1   ->  0.40

+ddrmn321 remaindernear   2.400  1   ->  0.400

+ddrmn322 remaindernear   2.4    1   ->  0.4

+ddrmn323 remaindernear   2.4    2   ->  0.4

+ddrmn324 remaindernear   2.400  2   ->  0.400

+ddrmn325 remaindernear   1   0.3    ->  0.1

+ddrmn326 remaindernear   1   0.30   ->  0.10

+ddrmn327 remaindernear   1   0.300  ->  0.100

+ddrmn328 remaindernear   1   0.3000 ->  0.1000

+ddrmn329 remaindernear   1.0    0.3 ->  0.1

+ddrmn330 remaindernear   1.00   0.3 ->  0.10

+ddrmn331 remaindernear   1.000  0.3 ->  0.100

+ddrmn332 remaindernear   1.0000 0.3 ->  0.1000

+ddrmn333 remaindernear   0.5  2     ->  0.5

+ddrmn334 remaindernear   0.5  2.1   ->  0.5

+ddrmn335 remaindernear   0.5  2.01  ->  0.50

+ddrmn336 remaindernear   0.5  2.001 ->  0.500

+ddrmn337 remaindernear   0.50 2     ->  0.50

+ddrmn338 remaindernear   0.50 2.01  ->  0.50

+ddrmn339 remaindernear   0.50 2.001 ->  0.500

+

+ddrmn340 remaindernear   0.5   0.5000001    ->  -1E-7

+ddrmn341 remaindernear   0.5   0.50000001    ->  -1E-8

+ddrmn342 remaindernear   0.5   0.500000001    ->  -1E-9

+ddrmn343 remaindernear   0.5   0.5000000001    ->  -1E-10

+ddrmn344 remaindernear   0.5   0.50000000001    ->  -1E-11

+ddrmn345 remaindernear   0.5   0.4999999    ->  1E-7

+ddrmn346 remaindernear   0.5   0.49999999    ->  1E-8

+ddrmn347 remaindernear   0.5   0.499999999    ->  1E-9

+ddrmn348 remaindernear   0.5   0.4999999999    ->  1E-10

+ddrmn349 remaindernear   0.5   0.49999999999    ->  1E-11

+ddrmn350 remaindernear   0.5   0.499999999999    ->  1E-12

+

+ddrmn351 remaindernear   0.03  7  ->  0.03

+ddrmn352 remaindernear   5   2    ->  1

+ddrmn353 remaindernear   4.1   2    ->  0.1

+ddrmn354 remaindernear   4.01   2    ->  0.01

+ddrmn355 remaindernear   4.001   2    ->  0.001

+ddrmn356 remaindernear   4.0001   2    ->  0.0001

+ddrmn357 remaindernear   4.00001   2    ->  0.00001

+ddrmn358 remaindernear   4.000001   2    ->  0.000001

+ddrmn359 remaindernear   4.0000001   2    ->  1E-7

+

+ddrmn360 remaindernear   1.2   0.7345 -> -0.2690

+ddrmn361 remaindernear   0.8   12     ->  0.8

+ddrmn362 remaindernear   0.8   0.2    ->  0.0

+ddrmn363 remaindernear   0.8   0.3    -> -0.1

+ddrmn364 remaindernear   0.800   12   ->  0.800

+ddrmn365 remaindernear   0.800   1.7  ->  0.800

+ddrmn366 remaindernear   2.400   2    ->  0.400

+

+-- round to even

+ddrmn371 remaindernear   121     2    ->  1

+ddrmn372 remaindernear   122     2    ->  0

+ddrmn373 remaindernear   123     2    -> -1

+ddrmn374 remaindernear   124     2    ->  0

+ddrmn375 remaindernear   125     2    ->  1

+ddrmn376 remaindernear   126     2    ->  0

+ddrmn377 remaindernear   127     2    -> -1

+

+ddrmn381 remaindernear 12345  1         ->  0

+ddrmn382 remaindernear 12345  1.0001    -> -0.2344

+ddrmn383 remaindernear 12345  1.001     -> -0.333

+ddrmn384 remaindernear 12345  1.01      -> -0.23

+ddrmn385 remaindernear 12345  1.1       -> -0.3

+ddrmn386 remaindernear 12355  4         -> -1

+ddrmn387 remaindernear 12345  4         ->  1

+ddrmn388 remaindernear 12355  4.0001    -> -1.3089

+ddrmn389 remaindernear 12345  4.0001    ->  0.6914

+ddrmn390 remaindernear 12345  4.9       ->  1.9

+ddrmn391 remaindernear 12345  4.99      -> -0.26

+ddrmn392 remaindernear 12345  4.999     ->  2.469

+ddrmn393 remaindernear 12345  4.9999    ->  0.2469

+ddrmn394 remaindernear 12345  5         ->  0

+ddrmn395 remaindernear 12345  5.0001    -> -0.2469

+ddrmn396 remaindernear 12345  5.001     -> -2.469

+ddrmn397 remaindernear 12345  5.01      ->  0.36

+ddrmn398 remaindernear 12345  5.1       -> -2.1

+

+-- the nasty division-by-1 cases

+ddrmn401 remaindernear   0.4         1   ->  0.4

+ddrmn402 remaindernear   0.45        1   ->  0.45

+ddrmn403 remaindernear   0.455       1   ->  0.455

+ddrmn404 remaindernear   0.4555      1   ->  0.4555

+ddrmn405 remaindernear   0.45555     1   ->  0.45555

+ddrmn406 remaindernear   0.455555    1   ->  0.455555

+ddrmn407 remaindernear   0.4555555   1   ->  0.4555555

+ddrmn408 remaindernear   0.45555555  1   ->  0.45555555

+ddrmn409 remaindernear   0.455555555 1   ->  0.455555555

+-- with spill... [412 exercises sticktab loop]

+ddrmn411 remaindernear   0.5         1   ->  0.5

+ddrmn412 remaindernear   0.55        1   -> -0.45

+ddrmn413 remaindernear   0.555       1   -> -0.445

+ddrmn414 remaindernear   0.5555      1   -> -0.4445

+ddrmn415 remaindernear   0.55555     1   -> -0.44445

+ddrmn416 remaindernear   0.555555    1   -> -0.444445

+ddrmn417 remaindernear   0.5555555   1   -> -0.4444445

+ddrmn418 remaindernear   0.55555555  1   -> -0.44444445

+ddrmn419 remaindernear   0.555555555 1   -> -0.444444445

+

+-- folddowns

+ddrmn421 remaindernear   1E+384       1  ->   NaN Division_impossible

+ddrmn422 remaindernear   1E+384  1E+383  ->   0E+369 Clamped

+ddrmn423 remaindernear   1E+384  2E+383  ->   0E+369 Clamped

+ddrmn424 remaindernear   1E+384  3E+383  ->   1.00000000000000E+383 Clamped

+ddrmn425 remaindernear   1E+384  4E+383  ->   2.00000000000000E+383 Clamped

+ddrmn426 remaindernear   1E+384  5E+383  ->   0E+369 Clamped

+ddrmn427 remaindernear   1E+384  6E+383  ->  -2.00000000000000E+383 Clamped

+ddrmn428 remaindernear   1E+384  7E+383  ->   3.00000000000000E+383 Clamped

+ddrmn429 remaindernear   1E+384  8E+383  ->   2.00000000000000E+383 Clamped

+ddrmn430 remaindernear   1E+384  9E+383  ->   1.00000000000000E+383 Clamped

+-- tinies

+ddrmn431 remaindernear   1E-397  1E-398  ->   0E-398

+ddrmn432 remaindernear   1E-397  2E-398  ->   0E-398

+ddrmn433 remaindernear   1E-397  3E-398  ->   1E-398 Subnormal

+ddrmn434 remaindernear   1E-397  4E-398  ->   2E-398 Subnormal

+ddrmn435 remaindernear   1E-397  5E-398  ->   0E-398

+ddrmn436 remaindernear   1E-397  6E-398  ->  -2E-398 Subnormal

+ddrmn437 remaindernear   1E-397  7E-398  ->   3E-398 Subnormal

+ddrmn438 remaindernear   1E-397  8E-398  ->   2E-398 Subnormal

+ddrmn439 remaindernear   1E-397  9E-398  ->   1E-398 Subnormal

+ddrmn440 remaindernear   1E-397 10E-398  ->   0E-398

+ddrmn441 remaindernear   1E-397 11E-398  ->  -1E-398 Subnormal

+ddrmn442 remaindernear 100E-397 11E-398  ->  -1E-398 Subnormal

+ddrmn443 remaindernear 100E-397 20E-398  ->   0E-398

+ddrmn444 remaindernear 100E-397 21E-398  ->  -8E-398 Subnormal

+ddrmn445 remaindernear 100E-397 30E-398  -> 1.0E-397 Subnormal

+

+-- zero signs

+ddrmn650 remaindernear  1  1 ->  0

+ddrmn651 remaindernear -1  1 -> -0

+ddrmn652 remaindernear  1 -1 ->  0

+ddrmn653 remaindernear -1 -1 -> -0

+ddrmn654 remaindernear  0  1 ->  0

+ddrmn655 remaindernear -0  1 -> -0

+ddrmn656 remaindernear  0 -1 ->  0

+ddrmn657 remaindernear -0 -1 -> -0

+ddrmn658 remaindernear  0.00  1  ->  0.00

+ddrmn659 remaindernear -0.00  1  -> -0.00

+

+-- Specials

+ddrmn680 remaindernear  Inf  -Inf   ->  NaN Invalid_operation

+ddrmn681 remaindernear  Inf  -1000  ->  NaN Invalid_operation

+ddrmn682 remaindernear  Inf  -1     ->  NaN Invalid_operation

+ddrmn683 remaindernear  Inf   0     ->  NaN Invalid_operation

+ddrmn684 remaindernear  Inf  -0     ->  NaN Invalid_operation

+ddrmn685 remaindernear  Inf   1     ->  NaN Invalid_operation

+ddrmn686 remaindernear  Inf   1000  ->  NaN Invalid_operation

+ddrmn687 remaindernear  Inf   Inf   ->  NaN Invalid_operation

+ddrmn688 remaindernear -1000  Inf   -> -1000

+ddrmn689 remaindernear -Inf   Inf   ->  NaN Invalid_operation

+ddrmn691 remaindernear -1     Inf   -> -1

+ddrmn692 remaindernear  0     Inf   ->  0

+ddrmn693 remaindernear -0     Inf   -> -0

+ddrmn694 remaindernear  1     Inf   ->  1

+ddrmn695 remaindernear  1000  Inf   ->  1000

+ddrmn696 remaindernear  Inf   Inf   ->  NaN Invalid_operation

+

+ddrmn700 remaindernear -Inf  -Inf   ->  NaN Invalid_operation

+ddrmn701 remaindernear -Inf  -1000  ->  NaN Invalid_operation

+ddrmn702 remaindernear -Inf  -1     ->  NaN Invalid_operation

+ddrmn703 remaindernear -Inf  -0     ->  NaN Invalid_operation

+ddrmn704 remaindernear -Inf   0     ->  NaN Invalid_operation

+ddrmn705 remaindernear -Inf   1     ->  NaN Invalid_operation

+ddrmn706 remaindernear -Inf   1000  ->  NaN Invalid_operation

+ddrmn707 remaindernear -Inf   Inf   ->  NaN Invalid_operation

+ddrmn708 remaindernear -Inf  -Inf   ->  NaN Invalid_operation

+ddrmn709 remaindernear -1000  Inf   -> -1000

+ddrmn710 remaindernear -1    -Inf   -> -1

+ddrmn711 remaindernear -0    -Inf   -> -0

+ddrmn712 remaindernear  0    -Inf   ->  0

+ddrmn713 remaindernear  1    -Inf   ->  1

+ddrmn714 remaindernear  1000 -Inf   ->  1000

+ddrmn715 remaindernear  Inf  -Inf   ->  NaN Invalid_operation

+

+ddrmn721 remaindernear  NaN -Inf    ->  NaN

+ddrmn722 remaindernear  NaN -1000   ->  NaN

+ddrmn723 remaindernear  NaN -1      ->  NaN

+ddrmn724 remaindernear  NaN -0      ->  NaN

+ddrmn725 remaindernear -NaN  0      -> -NaN

+ddrmn726 remaindernear  NaN  1      ->  NaN

+ddrmn727 remaindernear  NaN  1000   ->  NaN

+ddrmn728 remaindernear  NaN  Inf    ->  NaN

+ddrmn729 remaindernear  NaN -NaN    ->  NaN

+ddrmn730 remaindernear -Inf  NaN    ->  NaN

+ddrmn731 remaindernear -1000 NaN    ->  NaN

+ddrmn732 remaindernear -1    NaN    ->  NaN

+ddrmn733 remaindernear -0   -NaN    -> -NaN

+ddrmn734 remaindernear  0    NaN    ->  NaN

+ddrmn735 remaindernear  1   -NaN    -> -NaN

+ddrmn736 remaindernear  1000 NaN    ->  NaN

+ddrmn737 remaindernear  Inf  NaN    ->  NaN

+

+ddrmn741 remaindernear  sNaN -Inf   ->  NaN  Invalid_operation

+ddrmn742 remaindernear  sNaN -1000  ->  NaN  Invalid_operation

+ddrmn743 remaindernear -sNaN -1     -> -NaN  Invalid_operation

+ddrmn744 remaindernear  sNaN -0     ->  NaN  Invalid_operation

+ddrmn745 remaindernear  sNaN  0     ->  NaN  Invalid_operation

+ddrmn746 remaindernear  sNaN  1     ->  NaN  Invalid_operation

+ddrmn747 remaindernear  sNaN  1000  ->  NaN  Invalid_operation

+ddrmn749 remaindernear  sNaN  NaN   ->  NaN  Invalid_operation

+ddrmn750 remaindernear  sNaN sNaN   ->  NaN  Invalid_operation

+ddrmn751 remaindernear  NaN  sNaN   ->  NaN  Invalid_operation

+ddrmn752 remaindernear -Inf  sNaN   ->  NaN  Invalid_operation

+ddrmn753 remaindernear -1000 sNaN   ->  NaN  Invalid_operation

+ddrmn754 remaindernear -1    sNaN   ->  NaN  Invalid_operation

+ddrmn755 remaindernear -0    sNaN   ->  NaN  Invalid_operation

+ddrmn756 remaindernear  0    sNaN   ->  NaN  Invalid_operation

+ddrmn757 remaindernear  1    sNaN   ->  NaN  Invalid_operation

+ddrmn758 remaindernear  1000 sNaN   ->  NaN  Invalid_operation

+ddrmn759 remaindernear  Inf -sNaN   -> -NaN  Invalid_operation

+

+-- propaging NaNs

+ddrmn760 remaindernear  NaN1   NaN7   ->  NaN1

+ddrmn761 remaindernear sNaN2   NaN8   ->  NaN2 Invalid_operation

+ddrmn762 remaindernear  NaN3  sNaN9   ->  NaN9 Invalid_operation

+ddrmn763 remaindernear sNaN4  sNaN10  ->  NaN4 Invalid_operation

+ddrmn764 remaindernear    15   NaN11  ->  NaN11

+ddrmn765 remaindernear  NaN6   NaN12  ->  NaN6

+ddrmn766 remaindernear  Inf    NaN13  ->  NaN13

+ddrmn767 remaindernear  NaN14  -Inf   ->  NaN14

+ddrmn768 remaindernear    0    NaN15  ->  NaN15

+ddrmn769 remaindernear  NaN16   -0    ->  NaN16

+

+-- edge cases of impossible

+ddrmn770  remaindernear  1234567890123456  10    -> -4

+ddrmn771  remaindernear  1234567890123456   1    ->  0

+ddrmn772  remaindernear  1234567890123456   0.1  ->  NaN Division_impossible

+ddrmn773  remaindernear  1234567890123456   0.01 ->  NaN Division_impossible

+

+-- long operand checks

+ddrmn801 remaindernear 12345678000 100 -> 0

+ddrmn802 remaindernear 1 12345678000   -> 1

+ddrmn803 remaindernear 1234567800  10  -> 0

+ddrmn804 remaindernear 1 1234567800    -> 1

+ddrmn805 remaindernear 1234567890  10  -> 0

+ddrmn806 remaindernear 1 1234567890    -> 1

+ddrmn807 remaindernear 1234567891  10  -> 1

+ddrmn808 remaindernear 1 1234567891    -> 1

+ddrmn809 remaindernear 12345678901 100 -> 1

+ddrmn810 remaindernear 1 12345678901   -> 1

+ddrmn811 remaindernear 1234567896  10  -> -4

+ddrmn812 remaindernear 1 1234567896    -> 1

+

+ddrmn821 remaindernear 12345678000 100 -> 0

+ddrmn822 remaindernear 1 12345678000   -> 1

+ddrmn823 remaindernear 1234567800  10  -> 0

+ddrmn824 remaindernear 1 1234567800    -> 1

+ddrmn825 remaindernear 1234567890  10  -> 0

+ddrmn826 remaindernear 1 1234567890    -> 1

+ddrmn827 remaindernear 1234567891  10  -> 1

+ddrmn828 remaindernear 1 1234567891    -> 1

+ddrmn829 remaindernear 12345678901 100 -> 1

+ddrmn830 remaindernear 1 12345678901   -> 1

+ddrmn831 remaindernear 1234567896  10  -> -4

+ddrmn832 remaindernear 1 1234567896    -> 1

+

+-- from divideint

+ddrmn840 remaindernear  100000000.0   1  ->  0.0

+ddrmn841 remaindernear  100000000.4   1  ->  0.4

+ddrmn842 remaindernear  100000000.5   1  ->  0.5

+ddrmn843 remaindernear  100000000.9   1  -> -0.1

+ddrmn844 remaindernear  100000000.999 1  -> -0.001

+ddrmn850 remaindernear  100000003     5  -> -2

+ddrmn851 remaindernear  10000003      5  -> -2

+ddrmn852 remaindernear  1000003       5  -> -2

+ddrmn853 remaindernear  100003        5  -> -2

+ddrmn854 remaindernear  10003         5  -> -2

+ddrmn855 remaindernear  1003          5  -> -2

+ddrmn856 remaindernear  103           5  -> -2

+ddrmn857 remaindernear  13            5  -> -2

+ddrmn858 remaindernear  1             5  ->  1

+

+-- Vladimir's cases         1234567890123456

+ddrmn860 remaindernear 123.0e1 1000000000000000  -> 1230

+ddrmn861 remaindernear 1230    1000000000000000  -> 1230

+ddrmn862 remaindernear 12.3e2  1000000000000000  -> 1230

+ddrmn863 remaindernear 1.23e3  1000000000000000  -> 1230

+ddrmn864 remaindernear 123e1   1000000000000000  -> 1230

+ddrmn870 remaindernear 123e1    1000000000000000 -> 1230

+ddrmn871 remaindernear 123e1     100000000000000 -> 1230

+ddrmn872 remaindernear 123e1      10000000000000 -> 1230

+ddrmn873 remaindernear 123e1       1000000000000 -> 1230

+ddrmn874 remaindernear 123e1        100000000000 -> 1230

+ddrmn875 remaindernear 123e1         10000000000 -> 1230

+ddrmn876 remaindernear 123e1          1000000000 -> 1230

+ddrmn877 remaindernear 123e1           100000000 -> 1230

+ddrmn878 remaindernear 1230            100000000 -> 1230

+ddrmn879 remaindernear 123e1            10000000 -> 1230

+ddrmn880 remaindernear 123e1             1000000 -> 1230

+ddrmn881 remaindernear 123e1              100000 -> 1230

+ddrmn882 remaindernear 123e1               10000 -> 1230

+ddrmn883 remaindernear 123e1                1000 ->  230

+ddrmn884 remaindernear 123e1                 100 ->   30

+ddrmn885 remaindernear 123e1                  10 ->    0

+ddrmn886 remaindernear 123e1                   1 ->    0

+

+ddrmn890 remaindernear 123e1    2000000000000000 -> 1230

+ddrmn891 remaindernear 123e1     200000000000000 -> 1230

+ddrmn892 remaindernear 123e1      20000000000000 -> 1230

+ddrmn893 remaindernear 123e1       2000000000000 -> 1230

+ddrmn894 remaindernear 123e1        200000000000 -> 1230

+ddrmn895 remaindernear 123e1         20000000000 -> 1230

+ddrmn896 remaindernear 123e1          2000000000 -> 1230

+ddrmn897 remaindernear 123e1           200000000 -> 1230

+ddrmn899 remaindernear 123e1            20000000 -> 1230

+ddrmn900 remaindernear 123e1             2000000 -> 1230

+ddrmn901 remaindernear 123e1              200000 -> 1230

+ddrmn902 remaindernear 123e1               20000 -> 1230

+ddrmn903 remaindernear 123e1                2000 -> -770

+ddrmn904 remaindernear 123e1                 200 ->   30

+ddrmn905 remaindernear 123e1                  20 ->  -10

+ddrmn906 remaindernear 123e1                   2 ->    0

+

+ddrmn910 remaindernear 123e1    5000000000000000 -> 1230

+ddrmn911 remaindernear 123e1     500000000000000 -> 1230

+ddrmn912 remaindernear 123e1      50000000000000 -> 1230

+ddrmn913 remaindernear 123e1       5000000000000 -> 1230

+ddrmn914 remaindernear 123e1        500000000000 -> 1230

+ddrmn915 remaindernear 123e1         50000000000 -> 1230

+ddrmn916 remaindernear 123e1          5000000000 -> 1230

+ddrmn917 remaindernear 123e1           500000000 -> 1230

+ddrmn919 remaindernear 123e1            50000000 -> 1230

+ddrmn920 remaindernear 123e1             5000000 -> 1230

+ddrmn921 remaindernear 123e1              500000 -> 1230

+ddrmn922 remaindernear 123e1               50000 -> 1230

+ddrmn923 remaindernear 123e1                5000 -> 1230

+ddrmn924 remaindernear 123e1                 500 ->  230

+ddrmn925 remaindernear 123e1                  50 ->  -20

+ddrmn926 remaindernear 123e1                   5 ->    0

+

+ddrmn930 remaindernear 123e1    9000000000000000 -> 1230

+ddrmn931 remaindernear 123e1     900000000000000 -> 1230

+ddrmn932 remaindernear 123e1      90000000000000 -> 1230

+ddrmn933 remaindernear 123e1       9000000000000 -> 1230

+ddrmn934 remaindernear 123e1        900000000000 -> 1230

+ddrmn935 remaindernear 123e1         90000000000 -> 1230

+ddrmn936 remaindernear 123e1          9000000000 -> 1230

+ddrmn937 remaindernear 123e1           900000000 -> 1230

+ddrmn939 remaindernear 123e1            90000000 -> 1230

+ddrmn940 remaindernear 123e1             9000000 -> 1230

+ddrmn941 remaindernear 123e1              900000 -> 1230

+ddrmn942 remaindernear 123e1               90000 -> 1230

+ddrmn943 remaindernear 123e1                9000 -> 1230

+ddrmn944 remaindernear 123e1                 900 ->  330

+ddrmn945 remaindernear 123e1                  90 ->  -30

+ddrmn946 remaindernear 123e1                   9 ->   -3

+

+ddrmn950 remaindernear 123e1   1000000000000000 -> 1230

+ddrmn961 remaindernear 123e1   2999999999999999 -> 1230

+ddrmn962 remaindernear 123e1   3999999999999999 -> 1230

+ddrmn963 remaindernear 123e1   4999999999999999 -> 1230

+ddrmn964 remaindernear 123e1   5999999999999999 -> 1230

+ddrmn965 remaindernear 123e1   6999999999999999 -> 1230

+ddrmn966 remaindernear 123e1   7999999999999999 -> 1230

+ddrmn967 remaindernear 123e1   8999999999999999 -> 1230

+ddrmn968 remaindernear 123e1   9999999999999999 -> 1230

+ddrmn969 remaindernear 123e1   9876543210987654 -> 1230

+

+ddrmn980 remaindernear 123e1 1000E299 -> 1.23E+3  -- 123E+1 internally

+

+

+-- overflow and underflow tests [from divide]

+ddrmn1051 remaindernear  1e+277  1e-311 ->  NaN Division_impossible

+ddrmn1052 remaindernear  1e+277 -1e-311 ->  NaN Division_impossible

+ddrmn1053 remaindernear -1e+277  1e-311 ->  NaN Division_impossible

+ddrmn1054 remaindernear -1e+277 -1e-311 ->  NaN Division_impossible

+ddrmn1055 remaindernear  1e-277  1e+311 ->  1E-277

+ddrmn1056 remaindernear  1e-277 -1e+311 ->  1E-277

+ddrmn1057 remaindernear -1e-277  1e+311 -> -1E-277

+ddrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277

+

+-- destructive subtract

+ddrmn1100 remainderNear  1234567890123456  1.000000000000001  ->  -0.234567890123455

+ddrmn1101 remainderNear  1234567890123456   1.00000000000001  ->   -0.34567890123444

+ddrmn1102 remainderNear  1234567890123456    1.0000000000001  ->    -0.4567890123333

+ddrmn1103 remainderNear  1234567890123455  4.000000000000001  ->  -1.308641972530864

+ddrmn1104 remainderNear  1234567890123456  4.000000000000001  ->  -0.308641972530864

+ddrmn1115 remainderNear  1234567890123456    4.9999999999999  ->     0.6913578024696

+ddrmn1116 remainderNear  1234567890123456   4.99999999999999  ->   -1.53086421975308

+ddrmn1117 remainderNear  1234567890123456  4.999999999999999  ->   1.246913578024691

+ddrmn1118 remainderNear  1234567890123456  5.000000000000001  ->   0.753086421975309

+ddrmn1119 remainderNear  1234567890123456   5.00000000000001  ->   -1.46913578024691

+ddrmn1110 remainderNear  1234567890123456    5.0000000000001  ->     1.3086421975314

+

+-- Null tests

+ddrmn1000 remaindernear 10  # -> NaN Invalid_operation

+ddrmn1001 remaindernear  # 10 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/ddRotate.decTest b/Lib/test/decimaltestdata/ddRotate.decTest
new file mode 100644
index 0000000..e6294b3
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddRotate.decTest
@@ -0,0 +1,262 @@
+------------------------------------------------------------------------

+-- ddRotate.decTest -- rotate a decDouble coefficient left or right   --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check

+ddrot001 rotate                 0    0  ->  0

+ddrot002 rotate                 0    2  ->  0

+ddrot003 rotate                 1    2  ->  100

+ddrot004 rotate                 1   15  ->  1000000000000000

+ddrot005 rotate                 1   16  ->  1

+ddrot006 rotate                 1   -1  ->  1000000000000000

+ddrot007 rotate                 0   -2  ->  0

+ddrot008 rotate  1234567890123456   -1  ->  6123456789012345

+ddrot009 rotate  1234567890123456   -15 ->  2345678901234561

+ddrot010 rotate  1234567890123456   -16 ->  1234567890123456

+ddrot011 rotate  9934567890123456   -15 ->  9345678901234569

+ddrot012 rotate  9934567890123456   -16 ->  9934567890123456

+

+-- rhs must be an integer

+ddrot015 rotate        1    1.5    -> NaN Invalid_operation

+ddrot016 rotate        1    1.0    -> NaN Invalid_operation

+ddrot017 rotate        1    0.1    -> NaN Invalid_operation

+ddrot018 rotate        1    0.0    -> NaN Invalid_operation

+ddrot019 rotate        1    1E+1   -> NaN Invalid_operation

+ddrot020 rotate        1    1E+99  -> NaN Invalid_operation

+ddrot021 rotate        1    Inf    -> NaN Invalid_operation

+ddrot022 rotate        1    -Inf   -> NaN Invalid_operation

+-- and |rhs| <= precision

+ddrot025 rotate        1    -1000  -> NaN Invalid_operation

+ddrot026 rotate        1    -17    -> NaN Invalid_operation

+ddrot027 rotate        1     17    -> NaN Invalid_operation

+ddrot028 rotate        1     1000  -> NaN Invalid_operation

+

+-- full pattern

+ddrot030 rotate  1234567890123456         -16  -> 1234567890123456

+ddrot031 rotate  1234567890123456         -15  -> 2345678901234561

+ddrot032 rotate  1234567890123456         -14  -> 3456789012345612

+ddrot033 rotate  1234567890123456         -13  -> 4567890123456123

+ddrot034 rotate  1234567890123456         -12  -> 5678901234561234

+ddrot035 rotate  1234567890123456         -11  -> 6789012345612345

+ddrot036 rotate  1234567890123456         -10  -> 7890123456123456

+ddrot037 rotate  1234567890123456         -9   -> 8901234561234567

+ddrot038 rotate  1234567890123456         -8   -> 9012345612345678

+ddrot039 rotate  1234567890123456         -7   ->  123456123456789

+ddrot040 rotate  1234567890123456         -6   -> 1234561234567890

+ddrot041 rotate  1234567890123456         -5   -> 2345612345678901

+ddrot042 rotate  1234567890123456         -4   -> 3456123456789012

+ddrot043 rotate  1234567890123456         -3   -> 4561234567890123

+ddrot044 rotate  1234567890123456         -2   -> 5612345678901234

+ddrot045 rotate  1234567890123456         -1   -> 6123456789012345

+ddrot046 rotate  1234567890123456         -0   -> 1234567890123456

+

+ddrot047 rotate  1234567890123456         +0   -> 1234567890123456

+ddrot048 rotate  1234567890123456         +1   -> 2345678901234561

+ddrot049 rotate  1234567890123456         +2   -> 3456789012345612

+ddrot050 rotate  1234567890123456         +3   -> 4567890123456123

+ddrot051 rotate  1234567890123456         +4   -> 5678901234561234

+ddrot052 rotate  1234567890123456         +5   -> 6789012345612345

+ddrot053 rotate  1234567890123456         +6   -> 7890123456123456

+ddrot054 rotate  1234567890123456         +7   -> 8901234561234567

+ddrot055 rotate  1234567890123456         +8   -> 9012345612345678

+ddrot056 rotate  1234567890123456         +9   ->  123456123456789

+ddrot057 rotate  1234567890123456         +10  -> 1234561234567890

+ddrot058 rotate  1234567890123456         +11  -> 2345612345678901

+ddrot059 rotate  1234567890123456         +12  -> 3456123456789012

+ddrot060 rotate  1234567890123456         +13  -> 4561234567890123

+ddrot061 rotate  1234567890123456         +14  -> 5612345678901234

+ddrot062 rotate  1234567890123456         +15  -> 6123456789012345

+ddrot063 rotate  1234567890123456         +16  -> 1234567890123456

+

+-- zeros

+ddrot070 rotate  0E-10              +9   ->   0E-10

+ddrot071 rotate  0E-10              -9   ->   0E-10

+ddrot072 rotate  0.000              +9   ->   0.000

+ddrot073 rotate  0.000              -9   ->   0.000

+ddrot074 rotate  0E+10              +9   ->   0E+10

+ddrot075 rotate  0E+10              -9   ->   0E+10

+ddrot076 rotate -0E-10              +9   ->  -0E-10

+ddrot077 rotate -0E-10              -9   ->  -0E-10

+ddrot078 rotate -0.000              +9   ->  -0.000

+ddrot079 rotate -0.000              -9   ->  -0.000

+ddrot080 rotate -0E+10              +9   ->  -0E+10

+ddrot081 rotate -0E+10              -9   ->  -0E+10

+

+-- Nmax, Nmin, Ntiny

+ddrot141 rotate  9.999999999999999E+384     -1  -> 9.999999999999999E+384

+ddrot142 rotate  9.999999999999999E+384     -15 -> 9.999999999999999E+384

+ddrot143 rotate  9.999999999999999E+384      1  -> 9.999999999999999E+384

+ddrot144 rotate  9.999999999999999E+384      15 -> 9.999999999999999E+384

+ddrot145 rotate  1E-383                     -1  -> 1.000000000000000E-368

+ddrot146 rotate  1E-383                     -15 -> 1.0E-382

+ddrot147 rotate  1E-383                      1  -> 1.0E-382

+ddrot148 rotate  1E-383                      15 -> 1.000000000000000E-368

+ddrot151 rotate  1.000000000000000E-383     -1  -> 1.00000000000000E-384

+ddrot152 rotate  1.000000000000000E-383     -15 -> 1E-398

+ddrot153 rotate  1.000000000000000E-383      1  -> 1E-398

+ddrot154 rotate  1.000000000000000E-383      15 -> 1.00000000000000E-384

+ddrot155 rotate  9.000000000000000E-383     -1  -> 9.00000000000000E-384

+ddrot156 rotate  9.000000000000000E-383     -15 -> 9E-398

+ddrot157 rotate  9.000000000000000E-383      1  -> 9E-398

+ddrot158 rotate  9.000000000000000E-383      15 -> 9.00000000000000E-384

+ddrot160 rotate  1E-398                     -1  -> 1.000000000000000E-383

+ddrot161 rotate  1E-398                     -15 -> 1.0E-397

+ddrot162 rotate  1E-398                      1  -> 1.0E-397

+ddrot163 rotate  1E-398                      15 -> 1.000000000000000E-383

+--  negatives

+ddrot171 rotate -9.999999999999999E+384     -1  -> -9.999999999999999E+384

+ddrot172 rotate -9.999999999999999E+384     -15 -> -9.999999999999999E+384

+ddrot173 rotate -9.999999999999999E+384      1  -> -9.999999999999999E+384

+ddrot174 rotate -9.999999999999999E+384      15 -> -9.999999999999999E+384

+ddrot175 rotate -1E-383                     -1  -> -1.000000000000000E-368

+ddrot176 rotate -1E-383                     -15 -> -1.0E-382

+ddrot177 rotate -1E-383                      1  -> -1.0E-382

+ddrot178 rotate -1E-383                      15 -> -1.000000000000000E-368

+ddrot181 rotate -1.000000000000000E-383     -1  -> -1.00000000000000E-384

+ddrot182 rotate -1.000000000000000E-383     -15 -> -1E-398

+ddrot183 rotate -1.000000000000000E-383      1  -> -1E-398

+ddrot184 rotate -1.000000000000000E-383      15 -> -1.00000000000000E-384

+ddrot185 rotate -9.000000000000000E-383     -1  -> -9.00000000000000E-384

+ddrot186 rotate -9.000000000000000E-383     -15 -> -9E-398

+ddrot187 rotate -9.000000000000000E-383      1  -> -9E-398

+ddrot188 rotate -9.000000000000000E-383      15 -> -9.00000000000000E-384

+ddrot190 rotate -1E-398                     -1  -> -1.000000000000000E-383

+ddrot191 rotate -1E-398                     -15 -> -1.0E-397

+ddrot192 rotate -1E-398                      1  -> -1.0E-397

+ddrot193 rotate -1E-398                      15 -> -1.000000000000000E-383

+

+-- more negatives (of sanities)

+ddrot201 rotate                -0    0  -> -0

+ddrot202 rotate                -0    2  -> -0

+ddrot203 rotate                -1    2  -> -100

+ddrot204 rotate                -1   15  -> -1000000000000000

+ddrot205 rotate                -1   16  -> -1

+ddrot206 rotate                -1   -1  -> -1000000000000000

+ddrot207 rotate                -0   -2  -> -0

+ddrot208 rotate -1234567890123456   -1  -> -6123456789012345

+ddrot209 rotate -1234567890123456   -15 -> -2345678901234561

+ddrot210 rotate -1234567890123456   -16 -> -1234567890123456

+ddrot211 rotate -9934567890123456   -15 -> -9345678901234569

+ddrot212 rotate -9934567890123456   -16 -> -9934567890123456

+

+

+-- Specials; NaNs are handled as usual

+ddrot781 rotate -Inf  -8     -> -Infinity

+ddrot782 rotate -Inf  -1     -> -Infinity

+ddrot783 rotate -Inf  -0     -> -Infinity

+ddrot784 rotate -Inf   0     -> -Infinity

+ddrot785 rotate -Inf   1     -> -Infinity

+ddrot786 rotate -Inf   8     -> -Infinity

+ddrot787 rotate -1000 -Inf   -> NaN Invalid_operation

+ddrot788 rotate -Inf  -Inf   -> NaN Invalid_operation

+ddrot789 rotate -1    -Inf   -> NaN Invalid_operation

+ddrot790 rotate -0    -Inf   -> NaN Invalid_operation

+ddrot791 rotate  0    -Inf   -> NaN Invalid_operation

+ddrot792 rotate  1    -Inf   -> NaN Invalid_operation

+ddrot793 rotate  1000 -Inf   -> NaN Invalid_operation

+ddrot794 rotate  Inf  -Inf   -> NaN Invalid_operation

+

+ddrot800 rotate  Inf  -Inf   -> NaN Invalid_operation

+ddrot801 rotate  Inf  -8     -> Infinity

+ddrot802 rotate  Inf  -1     -> Infinity

+ddrot803 rotate  Inf  -0     -> Infinity

+ddrot804 rotate  Inf   0     -> Infinity

+ddrot805 rotate  Inf   1     -> Infinity

+ddrot806 rotate  Inf   8     -> Infinity

+ddrot807 rotate  Inf   Inf   -> NaN Invalid_operation

+ddrot808 rotate -1000  Inf   -> NaN Invalid_operation

+ddrot809 rotate -Inf   Inf   -> NaN Invalid_operation

+ddrot810 rotate -1     Inf   -> NaN Invalid_operation

+ddrot811 rotate -0     Inf   -> NaN Invalid_operation

+ddrot812 rotate  0     Inf   -> NaN Invalid_operation

+ddrot813 rotate  1     Inf   -> NaN Invalid_operation

+ddrot814 rotate  1000  Inf   -> NaN Invalid_operation

+ddrot815 rotate  Inf   Inf   -> NaN Invalid_operation

+

+ddrot821 rotate  NaN -Inf    ->  NaN

+ddrot822 rotate  NaN -1000   ->  NaN

+ddrot823 rotate  NaN -1      ->  NaN

+ddrot824 rotate  NaN -0      ->  NaN

+ddrot825 rotate  NaN  0      ->  NaN

+ddrot826 rotate  NaN  1      ->  NaN

+ddrot827 rotate  NaN  1000   ->  NaN

+ddrot828 rotate  NaN  Inf    ->  NaN

+ddrot829 rotate  NaN  NaN    ->  NaN

+ddrot830 rotate -Inf  NaN    ->  NaN

+ddrot831 rotate -1000 NaN    ->  NaN

+ddrot832 rotate -1    NaN    ->  NaN

+ddrot833 rotate -0    NaN    ->  NaN

+ddrot834 rotate  0    NaN    ->  NaN

+ddrot835 rotate  1    NaN    ->  NaN

+ddrot836 rotate  1000 NaN    ->  NaN

+ddrot837 rotate  Inf  NaN    ->  NaN

+

+ddrot841 rotate  sNaN -Inf   ->  NaN  Invalid_operation

+ddrot842 rotate  sNaN -1000  ->  NaN  Invalid_operation

+ddrot843 rotate  sNaN -1     ->  NaN  Invalid_operation

+ddrot844 rotate  sNaN -0     ->  NaN  Invalid_operation

+ddrot845 rotate  sNaN  0     ->  NaN  Invalid_operation

+ddrot846 rotate  sNaN  1     ->  NaN  Invalid_operation

+ddrot847 rotate  sNaN  1000  ->  NaN  Invalid_operation

+ddrot848 rotate  sNaN  NaN   ->  NaN  Invalid_operation

+ddrot849 rotate  sNaN sNaN   ->  NaN  Invalid_operation

+ddrot850 rotate  NaN  sNaN   ->  NaN  Invalid_operation

+ddrot851 rotate -Inf  sNaN   ->  NaN  Invalid_operation

+ddrot852 rotate -1000 sNaN   ->  NaN  Invalid_operation

+ddrot853 rotate -1    sNaN   ->  NaN  Invalid_operation

+ddrot854 rotate -0    sNaN   ->  NaN  Invalid_operation

+ddrot855 rotate  0    sNaN   ->  NaN  Invalid_operation

+ddrot856 rotate  1    sNaN   ->  NaN  Invalid_operation

+ddrot857 rotate  1000 sNaN   ->  NaN  Invalid_operation

+ddrot858 rotate  Inf  sNaN   ->  NaN  Invalid_operation

+ddrot859 rotate  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddrot861 rotate  NaN1   -Inf    ->  NaN1

+ddrot862 rotate +NaN2   -1000   ->  NaN2

+ddrot863 rotate  NaN3    1000   ->  NaN3

+ddrot864 rotate  NaN4    Inf    ->  NaN4

+ddrot865 rotate  NaN5   +NaN6   ->  NaN5

+ddrot866 rotate -Inf     NaN7   ->  NaN7

+ddrot867 rotate -1000    NaN8   ->  NaN8

+ddrot868 rotate  1000    NaN9   ->  NaN9

+ddrot869 rotate  Inf    +NaN10  ->  NaN10

+ddrot871 rotate  sNaN11  -Inf   ->  NaN11  Invalid_operation

+ddrot872 rotate  sNaN12  -1000  ->  NaN12  Invalid_operation

+ddrot873 rotate  sNaN13   1000  ->  NaN13  Invalid_operation

+ddrot874 rotate  sNaN14   NaN17 ->  NaN14  Invalid_operation

+ddrot875 rotate  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+ddrot876 rotate  NaN16   sNaN19 ->  NaN19  Invalid_operation

+ddrot877 rotate -Inf    +sNaN20 ->  NaN20  Invalid_operation

+ddrot878 rotate -1000    sNaN21 ->  NaN21  Invalid_operation

+ddrot879 rotate  1000    sNaN22 ->  NaN22  Invalid_operation

+ddrot880 rotate  Inf     sNaN23 ->  NaN23  Invalid_operation

+ddrot881 rotate +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+ddrot882 rotate -NaN26    NaN28 -> -NaN26

+ddrot883 rotate -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+ddrot884 rotate  1000    -NaN30 -> -NaN30

+ddrot885 rotate  1000   -sNaN31 -> -NaN31  Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddSameQuantum.decTest b/Lib/test/decimaltestdata/ddSameQuantum.decTest
new file mode 100644
index 0000000..6f7db15
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddSameQuantum.decTest
@@ -0,0 +1,389 @@
+------------------------------------------------------------------------

+-- ddSameQuantum.decTest -- check decDouble quantums match            --

+-- Copyright (c) IBM Corporation, 2001, 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.57

+

+-- All operands and results are decDoubles.

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+ddsamq001 samequantum  0      0      ->  1

+ddsamq002 samequantum  0      1      ->  1

+ddsamq003 samequantum  1      0      ->  1

+ddsamq004 samequantum  1      1      ->  1

+

+ddsamq011 samequantum  10     1E+1   -> 0

+ddsamq012 samequantum  10E+1  10E+1  -> 1

+ddsamq013 samequantum  100    10E+1  -> 0

+ddsamq014 samequantum  100    1E+2   -> 0

+ddsamq015 samequantum  0.1    1E-2   -> 0

+ddsamq016 samequantum  0.1    1E-1   -> 1

+ddsamq017 samequantum  0.1    1E-0   -> 0

+ddsamq018 samequantum  999    999    -> 1

+ddsamq019 samequantum  999E-1 99.9   -> 1

+ddsamq020 samequantum  111E-1 22.2   -> 1

+ddsamq021 samequantum  111E-1 1234.2 -> 1

+

+-- zeros

+ddsamq030 samequantum  0.0    1.1    -> 1

+ddsamq031 samequantum  0.0    1.11   -> 0

+ddsamq032 samequantum  0.0    0      -> 0

+ddsamq033 samequantum  0.0    0.0    -> 1

+ddsamq034 samequantum  0.0    0.00   -> 0

+ddsamq035 samequantum  0E+1   0E+0   -> 0

+ddsamq036 samequantum  0E+1   0E+1   -> 1

+ddsamq037 samequantum  0E+1   0E+2   -> 0

+ddsamq038 samequantum  0E-17  0E-16  -> 0

+ddsamq039 samequantum  0E-17  0E-17  -> 1

+ddsamq040 samequantum  0E-17  0E-18  -> 0

+ddsamq041 samequantum  0E-17  0.0E-15 -> 0

+ddsamq042 samequantum  0E-17  0.0E-16 -> 1

+ddsamq043 samequantum  0E-17  0.0E-17 -> 0

+ddsamq044 samequantum -0E-17  0.0E-16 -> 1

+ddsamq045 samequantum  0E-17 -0.0E-17 -> 0

+ddsamq046 samequantum  0E-17 -0.0E-16 -> 1

+ddsamq047 samequantum -0E-17  0.0E-17 -> 0

+ddsamq048 samequantum -0E-17 -0.0E-16 -> 1

+ddsamq049 samequantum -0E-17 -0.0E-17 -> 0

+

+-- Nmax, Nmin, Ntiny

+ddsamq051 samequantum  9.999999999999999E+384    9.999999999999999E+384  -> 1

+ddsamq052 samequantum  1E-383             1E-383           -> 1

+ddsamq053 samequantum  1.000000000000000E-383    1.000000000000000E-383  -> 1

+ddsamq054 samequantum  1E-398             1E-398           -> 1

+ddsamq055 samequantum  9.999999999999999E+384    9.999999999999999E+384  -> 1

+ddsamq056 samequantum  1E-383             1E-383           -> 1

+ddsamq057 samequantum  1.000000000000000E-383    1.000000000000000E-383  -> 1

+ddsamq058 samequantum  1E-398             1E-398           -> 1

+

+ddsamq061 samequantum  -1E-398            -1E-398          -> 1

+ddsamq062 samequantum  -1.000000000000000E-383   -1.000000000000000E-383 -> 1

+ddsamq063 samequantum  -1E-383            -1E-383          -> 1

+ddsamq064 samequantum  -9.999999999999999E+384   -9.999999999999999E+384 -> 1

+ddsamq065 samequantum  -1E-398            -1E-398          -> 1

+ddsamq066 samequantum  -1.000000000000000E-383   -1.000000000000000E-383 -> 1

+ddsamq067 samequantum  -1E-383            -1E-383          -> 1

+ddsamq068 samequantum  -9.999999999999999E+384   -9.999999999999999E+384 -> 1

+

+ddsamq071 samequantum  -4E-398            -1E-398          -> 1

+ddsamq072 samequantum  -4.000000000000000E-383   -1.000040000000000E-383 -> 1

+ddsamq073 samequantum  -4E-383            -1E-383          -> 1

+ddsamq074 samequantum  -4.999999999999999E+384   -9.999999999949999E+384 -> 1

+ddsamq075 samequantum  -4E-398            -1E-398          -> 1

+ddsamq076 samequantum  -4.000000000000000E-383   -1.004000000000000E-383 -> 1

+ddsamq077 samequantum  -4E-383            -1E-383          -> 1

+ddsamq078 samequantum  -4.999999999999999E+384   -9.949999999999999E+384 -> 1

+

+ddsamq081 samequantum  -4E-397            -1E-398          -> 0

+ddsamq082 samequantum  -4.000000000000000E-383   -1.000040000000000E-336 -> 0

+ddsamq083 samequantum  -4E-346            -1E-383          -> 0

+ddsamq084 samequantum  -4.999999999999999E+384   -9.999499999999999E+336 -> 0

+ddsamq085 samequantum  -4E-397            -1E-398          -> 0

+ddsamq086 samequantum  -4.000000000000000E-383   -1.004000000000000E-336 -> 0

+ddsamq087 samequantum  -4E-346            -1E-383          -> 0

+ddsamq088 samequantum  -4.999999999999999E+384   -9.949999999999999E+336 -> 0

+

+-- specials & combinations

+ddsamq0110 samequantum  -Inf    -Inf   -> 1

+ddsamq0111 samequantum  -Inf     Inf   -> 1

+ddsamq0112 samequantum  -Inf     NaN   -> 0

+ddsamq0113 samequantum  -Inf    -7E+3  -> 0

+ddsamq0114 samequantum  -Inf    -7     -> 0

+ddsamq0115 samequantum  -Inf    -7E-3  -> 0

+ddsamq0116 samequantum  -Inf    -0E-3  -> 0

+ddsamq0117 samequantum  -Inf    -0     -> 0

+ddsamq0118 samequantum  -Inf    -0E+3  -> 0

+ddsamq0119 samequantum  -Inf     0E-3  -> 0

+ddsamq0120 samequantum  -Inf     0     -> 0

+ddsamq0121 samequantum  -Inf     0E+3  -> 0

+ddsamq0122 samequantum  -Inf     7E-3  -> 0

+ddsamq0123 samequantum  -Inf     7     -> 0

+ddsamq0124 samequantum  -Inf     7E+3  -> 0

+ddsamq0125 samequantum  -Inf     sNaN  -> 0

+

+ddsamq0210 samequantum   Inf    -Inf   -> 1

+ddsamq0211 samequantum   Inf     Inf   -> 1

+ddsamq0212 samequantum   Inf     NaN   -> 0

+ddsamq0213 samequantum   Inf    -7E+3  -> 0

+ddsamq0214 samequantum   Inf    -7     -> 0

+ddsamq0215 samequantum   Inf    -7E-3  -> 0

+ddsamq0216 samequantum   Inf    -0E-3  -> 0

+ddsamq0217 samequantum   Inf    -0     -> 0

+ddsamq0218 samequantum   Inf    -0E+3  -> 0

+ddsamq0219 samequantum   Inf     0E-3  -> 0

+ddsamq0220 samequantum   Inf     0     -> 0

+ddsamq0221 samequantum   Inf     0E+3  -> 0

+ddsamq0222 samequantum   Inf     7E-3  -> 0

+ddsamq0223 samequantum   Inf     7     -> 0

+ddsamq0224 samequantum   Inf     7E+3  -> 0

+ddsamq0225 samequantum   Inf     sNaN  -> 0

+

+ddsamq0310 samequantum   NaN    -Inf   -> 0

+ddsamq0311 samequantum   NaN     Inf   -> 0

+ddsamq0312 samequantum   NaN     NaN   -> 1

+ddsamq0313 samequantum   NaN    -7E+3  -> 0

+ddsamq0314 samequantum   NaN    -7     -> 0

+ddsamq0315 samequantum   NaN    -7E-3  -> 0

+ddsamq0316 samequantum   NaN    -0E-3  -> 0

+ddsamq0317 samequantum   NaN    -0     -> 0

+ddsamq0318 samequantum   NaN    -0E+3  -> 0

+ddsamq0319 samequantum   NaN     0E-3  -> 0

+ddsamq0320 samequantum   NaN     0     -> 0

+ddsamq0321 samequantum   NaN     0E+3  -> 0

+ddsamq0322 samequantum   NaN     7E-3  -> 0

+ddsamq0323 samequantum   NaN     7     -> 0

+ddsamq0324 samequantum   NaN     7E+3  -> 0

+ddsamq0325 samequantum   NaN     sNaN  -> 1

+

+ddsamq0410 samequantum  -7E+3    -Inf   -> 0

+ddsamq0411 samequantum  -7E+3     Inf   -> 0

+ddsamq0412 samequantum  -7E+3     NaN   -> 0

+ddsamq0413 samequantum  -7E+3    -7E+3  -> 1

+ddsamq0414 samequantum  -7E+3    -7     -> 0

+ddsamq0415 samequantum  -7E+3    -7E-3  -> 0

+ddsamq0416 samequantum  -7E+3    -0E-3  -> 0

+ddsamq0417 samequantum  -7E+3    -0     -> 0

+ddsamq0418 samequantum  -7E+3    -0E+3  -> 1

+ddsamq0419 samequantum  -7E+3     0E-3  -> 0

+ddsamq0420 samequantum  -7E+3     0     -> 0

+ddsamq0421 samequantum  -7E+3     0E+3  -> 1

+ddsamq0422 samequantum  -7E+3     7E-3  -> 0

+ddsamq0423 samequantum  -7E+3     7     -> 0

+ddsamq0424 samequantum  -7E+3     7E+3  -> 1

+ddsamq0425 samequantum  -7E+3     sNaN  -> 0

+

+ddsamq0510 samequantum  -7      -Inf   -> 0

+ddsamq0511 samequantum  -7       Inf   -> 0

+ddsamq0512 samequantum  -7       NaN   -> 0

+ddsamq0513 samequantum  -7      -7E+3  -> 0

+ddsamq0514 samequantum  -7      -7     -> 1

+ddsamq0515 samequantum  -7      -7E-3  -> 0

+ddsamq0516 samequantum  -7      -0E-3  -> 0

+ddsamq0517 samequantum  -7      -0     -> 1

+ddsamq0518 samequantum  -7      -0E+3  -> 0

+ddsamq0519 samequantum  -7       0E-3  -> 0

+ddsamq0520 samequantum  -7       0     -> 1

+ddsamq0521 samequantum  -7       0E+3  -> 0

+ddsamq0522 samequantum  -7       7E-3  -> 0

+ddsamq0523 samequantum  -7       7     -> 1

+ddsamq0524 samequantum  -7       7E+3  -> 0

+ddsamq0525 samequantum  -7       sNaN  -> 0

+

+ddsamq0610 samequantum  -7E-3    -Inf   -> 0

+ddsamq0611 samequantum  -7E-3     Inf   -> 0

+ddsamq0612 samequantum  -7E-3     NaN   -> 0

+ddsamq0613 samequantum  -7E-3    -7E+3  -> 0

+ddsamq0614 samequantum  -7E-3    -7     -> 0

+ddsamq0615 samequantum  -7E-3    -7E-3  -> 1

+ddsamq0616 samequantum  -7E-3    -0E-3  -> 1

+ddsamq0617 samequantum  -7E-3    -0     -> 0

+ddsamq0618 samequantum  -7E-3    -0E+3  -> 0

+ddsamq0619 samequantum  -7E-3     0E-3  -> 1

+ddsamq0620 samequantum  -7E-3     0     -> 0

+ddsamq0621 samequantum  -7E-3     0E+3  -> 0

+ddsamq0622 samequantum  -7E-3     7E-3  -> 1

+ddsamq0623 samequantum  -7E-3     7     -> 0

+ddsamq0624 samequantum  -7E-3     7E+3  -> 0

+ddsamq0625 samequantum  -7E-3     sNaN  -> 0

+

+ddsamq0710 samequantum  -0E-3    -Inf   -> 0

+ddsamq0711 samequantum  -0E-3     Inf   -> 0

+ddsamq0712 samequantum  -0E-3     NaN   -> 0

+ddsamq0713 samequantum  -0E-3    -7E+3  -> 0

+ddsamq0714 samequantum  -0E-3    -7     -> 0

+ddsamq0715 samequantum  -0E-3    -7E-3  -> 1

+ddsamq0716 samequantum  -0E-3    -0E-3  -> 1

+ddsamq0717 samequantum  -0E-3    -0     -> 0

+ddsamq0718 samequantum  -0E-3    -0E+3  -> 0

+ddsamq0719 samequantum  -0E-3     0E-3  -> 1

+ddsamq0720 samequantum  -0E-3     0     -> 0

+ddsamq0721 samequantum  -0E-3     0E+3  -> 0

+ddsamq0722 samequantum  -0E-3     7E-3  -> 1

+ddsamq0723 samequantum  -0E-3     7     -> 0

+ddsamq0724 samequantum  -0E-3     7E+3  -> 0

+ddsamq0725 samequantum  -0E-3     sNaN  -> 0

+

+ddsamq0810 samequantum  -0      -Inf   -> 0

+ddsamq0811 samequantum  -0       Inf   -> 0

+ddsamq0812 samequantum  -0       NaN   -> 0

+ddsamq0813 samequantum  -0      -7E+3  -> 0

+ddsamq0814 samequantum  -0      -7     -> 1

+ddsamq0815 samequantum  -0      -7E-3  -> 0

+ddsamq0816 samequantum  -0      -0E-3  -> 0

+ddsamq0817 samequantum  -0      -0     -> 1

+ddsamq0818 samequantum  -0      -0E+3  -> 0

+ddsamq0819 samequantum  -0       0E-3  -> 0

+ddsamq0820 samequantum  -0       0     -> 1

+ddsamq0821 samequantum  -0       0E+3  -> 0

+ddsamq0822 samequantum  -0       7E-3  -> 0

+ddsamq0823 samequantum  -0       7     -> 1

+ddsamq0824 samequantum  -0       7E+3  -> 0

+ddsamq0825 samequantum  -0       sNaN  -> 0

+

+ddsamq0910 samequantum  -0E+3    -Inf   -> 0

+ddsamq0911 samequantum  -0E+3     Inf   -> 0

+ddsamq0912 samequantum  -0E+3     NaN   -> 0

+ddsamq0913 samequantum  -0E+3    -7E+3  -> 1

+ddsamq0914 samequantum  -0E+3    -7     -> 0

+ddsamq0915 samequantum  -0E+3    -7E-3  -> 0

+ddsamq0916 samequantum  -0E+3    -0E-3  -> 0

+ddsamq0917 samequantum  -0E+3    -0     -> 0

+ddsamq0918 samequantum  -0E+3    -0E+3  -> 1

+ddsamq0919 samequantum  -0E+3     0E-3  -> 0

+ddsamq0920 samequantum  -0E+3     0     -> 0

+ddsamq0921 samequantum  -0E+3     0E+3  -> 1

+ddsamq0922 samequantum  -0E+3     7E-3  -> 0

+ddsamq0923 samequantum  -0E+3     7     -> 0

+ddsamq0924 samequantum  -0E+3     7E+3  -> 1

+ddsamq0925 samequantum  -0E+3     sNaN  -> 0

+

+ddsamq1110 samequantum  0E-3    -Inf   -> 0

+ddsamq1111 samequantum  0E-3     Inf   -> 0

+ddsamq1112 samequantum  0E-3     NaN   -> 0

+ddsamq1113 samequantum  0E-3    -7E+3  -> 0

+ddsamq1114 samequantum  0E-3    -7     -> 0

+ddsamq1115 samequantum  0E-3    -7E-3  -> 1

+ddsamq1116 samequantum  0E-3    -0E-3  -> 1

+ddsamq1117 samequantum  0E-3    -0     -> 0

+ddsamq1118 samequantum  0E-3    -0E+3  -> 0

+ddsamq1119 samequantum  0E-3     0E-3  -> 1

+ddsamq1120 samequantum  0E-3     0     -> 0

+ddsamq1121 samequantum  0E-3     0E+3  -> 0

+ddsamq1122 samequantum  0E-3     7E-3  -> 1

+ddsamq1123 samequantum  0E-3     7     -> 0

+ddsamq1124 samequantum  0E-3     7E+3  -> 0

+ddsamq1125 samequantum  0E-3     sNaN  -> 0

+

+ddsamq1210 samequantum  0       -Inf   -> 0

+ddsamq1211 samequantum  0        Inf   -> 0

+ddsamq1212 samequantum  0        NaN   -> 0

+ddsamq1213 samequantum  0       -7E+3  -> 0

+ddsamq1214 samequantum  0       -7     -> 1

+ddsamq1215 samequantum  0       -7E-3  -> 0

+ddsamq1216 samequantum  0       -0E-3  -> 0

+ddsamq1217 samequantum  0       -0     -> 1

+ddsamq1218 samequantum  0       -0E+3  -> 0

+ddsamq1219 samequantum  0        0E-3  -> 0

+ddsamq1220 samequantum  0        0     -> 1

+ddsamq1221 samequantum  0        0E+3  -> 0

+ddsamq1222 samequantum  0        7E-3  -> 0

+ddsamq1223 samequantum  0        7     -> 1

+ddsamq1224 samequantum  0        7E+3  -> 0

+ddsamq1225 samequantum  0        sNaN  -> 0

+

+ddsamq1310 samequantum  0E+3    -Inf   -> 0

+ddsamq1311 samequantum  0E+3     Inf   -> 0

+ddsamq1312 samequantum  0E+3     NaN   -> 0

+ddsamq1313 samequantum  0E+3    -7E+3  -> 1

+ddsamq1314 samequantum  0E+3    -7     -> 0

+ddsamq1315 samequantum  0E+3    -7E-3  -> 0

+ddsamq1316 samequantum  0E+3    -0E-3  -> 0

+ddsamq1317 samequantum  0E+3    -0     -> 0

+ddsamq1318 samequantum  0E+3    -0E+3  -> 1

+ddsamq1319 samequantum  0E+3     0E-3  -> 0

+ddsamq1320 samequantum  0E+3     0     -> 0

+ddsamq1321 samequantum  0E+3     0E+3  -> 1

+ddsamq1322 samequantum  0E+3     7E-3  -> 0

+ddsamq1323 samequantum  0E+3     7     -> 0

+ddsamq1324 samequantum  0E+3     7E+3  -> 1

+ddsamq1325 samequantum  0E+3     sNaN  -> 0

+

+ddsamq1410 samequantum  7E-3    -Inf   -> 0

+ddsamq1411 samequantum  7E-3     Inf   -> 0

+ddsamq1412 samequantum  7E-3     NaN   -> 0

+ddsamq1413 samequantum  7E-3    -7E+3  -> 0

+ddsamq1414 samequantum  7E-3    -7     -> 0

+ddsamq1415 samequantum  7E-3    -7E-3  -> 1

+ddsamq1416 samequantum  7E-3    -0E-3  -> 1

+ddsamq1417 samequantum  7E-3    -0     -> 0

+ddsamq1418 samequantum  7E-3    -0E+3  -> 0

+ddsamq1419 samequantum  7E-3     0E-3  -> 1

+ddsamq1420 samequantum  7E-3     0     -> 0

+ddsamq1421 samequantum  7E-3     0E+3  -> 0

+ddsamq1422 samequantum  7E-3     7E-3  -> 1

+ddsamq1423 samequantum  7E-3     7     -> 0

+ddsamq1424 samequantum  7E-3     7E+3  -> 0

+ddsamq1425 samequantum  7E-3     sNaN  -> 0

+

+ddsamq1510 samequantum  7      -Inf   -> 0

+ddsamq1511 samequantum  7       Inf   -> 0

+ddsamq1512 samequantum  7       NaN   -> 0

+ddsamq1513 samequantum  7      -7E+3  -> 0

+ddsamq1514 samequantum  7      -7     -> 1

+ddsamq1515 samequantum  7      -7E-3  -> 0

+ddsamq1516 samequantum  7      -0E-3  -> 0

+ddsamq1517 samequantum  7      -0     -> 1

+ddsamq1518 samequantum  7      -0E+3  -> 0

+ddsamq1519 samequantum  7       0E-3  -> 0

+ddsamq1520 samequantum  7       0     -> 1

+ddsamq1521 samequantum  7       0E+3  -> 0

+ddsamq1522 samequantum  7       7E-3  -> 0

+ddsamq1523 samequantum  7       7     -> 1

+ddsamq1524 samequantum  7       7E+3  -> 0

+ddsamq1525 samequantum  7       sNaN  -> 0

+

+ddsamq1610 samequantum  7E+3    -Inf   -> 0

+ddsamq1611 samequantum  7E+3     Inf   -> 0

+ddsamq1612 samequantum  7E+3     NaN   -> 0

+ddsamq1613 samequantum  7E+3    -7E+3  -> 1

+ddsamq1614 samequantum  7E+3    -7     -> 0

+ddsamq1615 samequantum  7E+3    -7E-3  -> 0

+ddsamq1616 samequantum  7E+3    -0E-3  -> 0

+ddsamq1617 samequantum  7E+3    -0     -> 0

+ddsamq1618 samequantum  7E+3    -0E+3  -> 1

+ddsamq1619 samequantum  7E+3     0E-3  -> 0

+ddsamq1620 samequantum  7E+3     0     -> 0

+ddsamq1621 samequantum  7E+3     0E+3  -> 1

+ddsamq1622 samequantum  7E+3     7E-3  -> 0

+ddsamq1623 samequantum  7E+3     7     -> 0

+ddsamq1624 samequantum  7E+3     7E+3  -> 1

+ddsamq1625 samequantum  7E+3     sNaN  -> 0

+

+ddsamq1710 samequantum  sNaN    -Inf   -> 0

+ddsamq1711 samequantum  sNaN     Inf   -> 0

+ddsamq1712 samequantum  sNaN     NaN   -> 1

+ddsamq1713 samequantum  sNaN    -7E+3  -> 0

+ddsamq1714 samequantum  sNaN    -7     -> 0

+ddsamq1715 samequantum  sNaN    -7E-3  -> 0

+ddsamq1716 samequantum  sNaN    -0E-3  -> 0

+ddsamq1717 samequantum  sNaN    -0     -> 0

+ddsamq1718 samequantum  sNaN    -0E+3  -> 0

+ddsamq1719 samequantum  sNaN     0E-3  -> 0

+ddsamq1720 samequantum  sNaN     0     -> 0

+ddsamq1721 samequantum  sNaN     0E+3  -> 0

+ddsamq1722 samequantum  sNaN     7E-3  -> 0

+ddsamq1723 samequantum  sNaN     7     -> 0

+ddsamq1724 samequantum  sNaN     7E+3  -> 0

+ddsamq1725 samequantum  sNaN     sNaN  -> 1

+-- noisy NaNs

+ddsamq1730 samequantum  sNaN3    sNaN3 -> 1

+ddsamq1731 samequantum  sNaN3    sNaN4 -> 1

+ddsamq1732 samequantum   NaN3     NaN3 -> 1

+ddsamq1733 samequantum   NaN3     NaN4 -> 1

+ddsamq1734 samequantum  sNaN3     3    -> 0

+ddsamq1735 samequantum   NaN3     3    -> 0

+ddsamq1736 samequantum      4    sNaN4 -> 0

+ddsamq1737 samequantum      3     NaN3 -> 0

+ddsamq1738 samequantum    Inf    sNaN4 -> 0

+ddsamq1739 samequantum   -Inf     NaN3 -> 0

+

diff --git a/Lib/test/decimaltestdata/ddScaleB.decTest b/Lib/test/decimaltestdata/ddScaleB.decTest
new file mode 100644
index 0000000..d0b92b5
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddScaleB.decTest
@@ -0,0 +1,243 @@
+------------------------------------------------------------------------

+-- ddScalebB.decTest -- scale a decDouble by powers of 10             --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Max |rhs| is 2*(384+16) = 800

+

+-- Sanity checks

+ddscb001 scaleb       7.50   10 -> 7.50E+10

+ddscb002 scaleb       7.50    3 -> 7.50E+3

+ddscb003 scaleb       7.50    2 -> 750

+ddscb004 scaleb       7.50    1 -> 75.0

+ddscb005 scaleb       7.50    0 -> 7.50

+ddscb006 scaleb       7.50   -1 -> 0.750

+ddscb007 scaleb       7.50   -2 -> 0.0750

+ddscb008 scaleb       7.50  -10 -> 7.50E-10

+ddscb009 scaleb      -7.50    3 -> -7.50E+3

+ddscb010 scaleb      -7.50    2 -> -750

+ddscb011 scaleb      -7.50    1 -> -75.0

+ddscb012 scaleb      -7.50    0 -> -7.50

+ddscb013 scaleb      -7.50   -1 -> -0.750

+

+-- Infinities

+ddscb014 scaleb  Infinity   1 -> Infinity

+ddscb015 scaleb  -Infinity  2 -> -Infinity

+ddscb016 scaleb  Infinity  -1 -> Infinity

+ddscb017 scaleb  -Infinity -2 -> -Infinity

+

+-- Next two are somewhat undefined in 754r; treat as non-integer

+ddscb018 scaleb  10  Infinity -> NaN Invalid_operation

+ddscb019 scaleb  10 -Infinity -> NaN Invalid_operation

+

+-- NaNs are undefined in 754r; assume usual processing

+-- NaNs, 0 payload

+ddscb021 scaleb         NaN  1 -> NaN

+ddscb022 scaleb        -NaN -1 -> -NaN

+ddscb023 scaleb        sNaN  1 -> NaN Invalid_operation

+ddscb024 scaleb       -sNaN  1 -> -NaN Invalid_operation

+ddscb025 scaleb    4    NaN    -> NaN

+ddscb026 scaleb -Inf   -NaN    -> -NaN

+ddscb027 scaleb    4   sNaN    -> NaN Invalid_operation

+ddscb028 scaleb  Inf  -sNaN    -> -NaN Invalid_operation

+

+-- non-integer RHS

+ddscb030 scaleb  1.23    1    ->  12.3

+ddscb031 scaleb  1.23    1.00 ->  NaN Invalid_operation

+ddscb032 scaleb  1.23    1.1  ->  NaN Invalid_operation

+ddscb033 scaleb  1.23    1.01 ->  NaN Invalid_operation

+ddscb034 scaleb  1.23    0.01 ->  NaN Invalid_operation

+ddscb035 scaleb  1.23    0.11 ->  NaN Invalid_operation

+ddscb036 scaleb  1.23    0.999999999 ->  NaN Invalid_operation

+ddscb037 scaleb  1.23   -1    ->  0.123

+ddscb038 scaleb  1.23   -1.00 ->  NaN Invalid_operation

+ddscb039 scaleb  1.23   -1.1  ->  NaN Invalid_operation

+ddscb040 scaleb  1.23   -1.01 ->  NaN Invalid_operation

+ddscb041 scaleb  1.23   -0.01 ->  NaN Invalid_operation

+ddscb042 scaleb  1.23   -0.11 ->  NaN Invalid_operation

+ddscb043 scaleb  1.23   -0.999999999 ->  NaN Invalid_operation

+ddscb044 scaleb  1.23    0.1         ->  NaN Invalid_operation

+ddscb045 scaleb  1.23    1E+1        ->  NaN Invalid_operation

+ddscb046 scaleb  1.23    1.1234E+6   ->  NaN Invalid_operation

+ddscb047 scaleb  1.23    1.123E+4    ->  NaN Invalid_operation

+

+-- out-of range RHS

+ddscb120 scaleb  1.23    799         ->  Infinity Overflow Inexact Rounded

+ddscb121 scaleb  1.23    800         ->  Infinity Overflow Inexact Rounded

+ddscb122 scaleb  1.23    801         ->  NaN Invalid_operation

+ddscb123 scaleb  1.23    802         ->  NaN Invalid_operation

+ddscb124 scaleb  1.23   -799         ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddscb125 scaleb  1.23   -800         ->  0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddscb126 scaleb  1.23   -801         ->  NaN Invalid_operation

+ddscb127 scaleb  1.23   -802         ->  NaN Invalid_operation

+

+-- NaNs, non-0 payload

+-- propagating NaNs

+ddscb861 scaleb  NaN01   -Inf     ->  NaN1

+ddscb862 scaleb -NaN02   -1000    -> -NaN2

+ddscb863 scaleb  NaN03    1000    ->  NaN3

+ddscb864 scaleb  NaN04    Inf     ->  NaN4

+ddscb865 scaleb  NaN05    NaN61   ->  NaN5

+ddscb866 scaleb -Inf     -NaN71   -> -NaN71

+ddscb867 scaleb -1000     NaN81   ->  NaN81

+ddscb868 scaleb  1000     NaN91   ->  NaN91

+ddscb869 scaleb  Inf      NaN101  ->  NaN101

+ddscb871 scaleb  sNaN011  -Inf    ->  NaN11  Invalid_operation

+ddscb872 scaleb  sNaN012  -1000   ->  NaN12  Invalid_operation

+ddscb873 scaleb -sNaN013   1000   -> -NaN13  Invalid_operation

+ddscb874 scaleb  sNaN014   NaN171 ->  NaN14  Invalid_operation

+ddscb875 scaleb  sNaN015  sNaN181 ->  NaN15  Invalid_operation

+ddscb876 scaleb  NaN016   sNaN191 ->  NaN191 Invalid_operation

+ddscb877 scaleb -Inf      sNaN201 ->  NaN201 Invalid_operation

+ddscb878 scaleb -1000     sNaN211 ->  NaN211 Invalid_operation

+ddscb879 scaleb  1000    -sNaN221 -> -NaN221 Invalid_operation

+ddscb880 scaleb  Inf      sNaN231 ->  NaN231 Invalid_operation

+ddscb881 scaleb  NaN025   sNaN241 ->  NaN241 Invalid_operation

+

+-- finites

+ddscb051 scaleb          7   -2  -> 0.07

+ddscb052 scaleb         -7   -2  -> -0.07

+ddscb053 scaleb         75   -2  -> 0.75

+ddscb054 scaleb        -75   -2  -> -0.75

+ddscb055 scaleb       7.50   -2  -> 0.0750

+ddscb056 scaleb      -7.50   -2  -> -0.0750

+ddscb057 scaleb       7.500  -2  -> 0.07500

+ddscb058 scaleb      -7.500  -2  -> -0.07500

+ddscb061 scaleb          7   -1  -> 0.7

+ddscb062 scaleb         -7   -1  -> -0.7

+ddscb063 scaleb         75   -1  -> 7.5

+ddscb064 scaleb        -75   -1  -> -7.5

+ddscb065 scaleb       7.50   -1  -> 0.750

+ddscb066 scaleb      -7.50   -1  -> -0.750

+ddscb067 scaleb       7.500  -1  -> 0.7500

+ddscb068 scaleb      -7.500  -1  -> -0.7500

+ddscb071 scaleb          7    0  -> 7

+ddscb072 scaleb         -7    0  -> -7

+ddscb073 scaleb         75    0  -> 75

+ddscb074 scaleb        -75    0  -> -75

+ddscb075 scaleb       7.50    0  -> 7.50

+ddscb076 scaleb      -7.50    0  -> -7.50

+ddscb077 scaleb       7.500   0  -> 7.500

+ddscb078 scaleb      -7.500   0  -> -7.500

+ddscb081 scaleb          7    1  -> 7E+1

+ddscb082 scaleb         -7    1  -> -7E+1

+ddscb083 scaleb         75    1  -> 7.5E+2

+ddscb084 scaleb        -75    1  -> -7.5E+2

+ddscb085 scaleb       7.50    1  -> 75.0

+ddscb086 scaleb      -7.50    1  -> -75.0

+ddscb087 scaleb       7.500   1  -> 75.00

+ddscb088 scaleb      -7.500   1  -> -75.00

+ddscb091 scaleb          7    2  -> 7E+2

+ddscb092 scaleb         -7    2  -> -7E+2

+ddscb093 scaleb         75    2  -> 7.5E+3

+ddscb094 scaleb        -75    2  -> -7.5E+3

+ddscb095 scaleb       7.50    2  -> 750

+ddscb096 scaleb      -7.50    2  -> -750

+ddscb097 scaleb       7.500   2  -> 750.0

+ddscb098 scaleb      -7.500   2  -> -750.0

+

+-- zeros

+ddscb111 scaleb          0  1 -> 0E+1

+ddscb112 scaleb         -0  2 -> -0E+2

+ddscb113 scaleb       0E+4  3 -> 0E+7

+ddscb114 scaleb      -0E+4  4 -> -0E+8

+ddscb115 scaleb     0.0000  5 -> 0E+1

+ddscb116 scaleb    -0.0000  6 -> -0E+2

+ddscb117 scaleb      0E-141 7 -> 0E-134

+ddscb118 scaleb     -0E-141 8 -> -0E-133

+

+-- Nmax, Nmin, Ntiny

+ddscb132 scaleb  9.999999999999999E+384  +384 -> Infinity    Overflow Inexact Rounded

+ddscb133 scaleb  9.999999999999999E+384  +10 -> Infinity     Overflow Inexact Rounded

+ddscb134 scaleb  9.999999999999999E+384  +1  -> Infinity     Overflow Inexact Rounded

+ddscb135 scaleb  9.999999999999999E+384   0  -> 9.999999999999999E+384

+ddscb136 scaleb  9.999999999999999E+384  -1  -> 9.999999999999999E+383

+ddscb137 scaleb  1E-383           +1  -> 1E-382

+ddscb138 scaleb  1E-383           -0  -> 1E-383

+ddscb139 scaleb  1E-383           -1  -> 1E-384          Subnormal

+ddscb140 scaleb  1.000000000000000E-383  +1  -> 1.000000000000000E-382

+ddscb141 scaleb  1.000000000000000E-383   0  -> 1.000000000000000E-383

+ddscb142 scaleb  1.000000000000000E-383  -1  -> 1.00000000000000E-384 Subnormal Rounded

+ddscb143 scaleb  1E-398          +1  -> 1E-397          Subnormal

+ddscb144 scaleb  1E-398          -0  -> 1E-398         Subnormal

+ddscb145 scaleb  1E-398          -1  -> 0E-398         Underflow Subnormal Inexact Rounded Clamped

+

+ddscb150 scaleb  -1E-398         +1  -> -1E-397         Subnormal

+ddscb151 scaleb  -1E-398         -0  -> -1E-398        Subnormal

+ddscb152 scaleb  -1E-398         -1  -> -0E-398        Underflow Subnormal Inexact Rounded Clamped

+ddscb153 scaleb  -1.000000000000000E-383 +1  -> -1.000000000000000E-382

+ddscb154 scaleb  -1.000000000000000E-383 +0  -> -1.000000000000000E-383

+ddscb155 scaleb  -1.000000000000000E-383 -1  -> -1.00000000000000E-384 Subnormal Rounded

+ddscb156 scaleb  -1E-383          +1  -> -1E-382

+ddscb157 scaleb  -1E-383          -0  -> -1E-383

+ddscb158 scaleb  -1E-383          -1  -> -1E-384          Subnormal

+ddscb159 scaleb  -9.999999999999999E+384 +1  -> -Infinity        Overflow Inexact Rounded

+ddscb160 scaleb  -9.999999999999999E+384 +0  -> -9.999999999999999E+384

+ddscb161 scaleb  -9.999999999999999E+384 -1  -> -9.999999999999999E+383

+ddscb162 scaleb  -9E+384          +1  -> -Infinity        Overflow Inexact Rounded

+ddscb163 scaleb  -1E+384          +1  -> -Infinity        Overflow Inexact Rounded

+

+-- some Origami

+-- (these check that overflow is being done correctly)

+ddscb171 scaleb   1000E+365  +1 -> 1.000E+369

+ddscb172 scaleb   1000E+366  +1 -> 1.000E+370

+ddscb173 scaleb   1000E+367  +1 -> 1.000E+371

+ddscb174 scaleb   1000E+368  +1 -> 1.000E+372

+ddscb175 scaleb   1000E+369  +1 -> 1.0000E+373                  Clamped

+ddscb176 scaleb   1000E+370  +1 -> 1.00000E+374                 Clamped

+ddscb177 scaleb   1000E+371  +1 -> 1.000000E+375                Clamped

+ddscb178 scaleb   1000E+372  +1 -> 1.0000000E+376               Clamped

+ddscb179 scaleb   1000E+373  +1 -> 1.00000000E+377              Clamped

+ddscb180 scaleb   1000E+374  +1 -> 1.000000000E+378             Clamped

+ddscb181 scaleb   1000E+375  +1 -> 1.0000000000E+379            Clamped

+ddscb182 scaleb   1000E+376  +1 -> 1.00000000000E+380           Clamped

+ddscb183 scaleb   1000E+377  +1 -> 1.000000000000E+381          Clamped

+ddscb184 scaleb   1000E+378  +1 -> 1.0000000000000E+382         Clamped

+ddscb185 scaleb   1000E+379  +1 -> 1.00000000000000E+383        Clamped

+ddscb186 scaleb   1000E+380  +1 -> 1.000000000000000E+384       Clamped

+ddscb187 scaleb   1000E+381  +1 -> Infinity    Overflow Inexact Rounded

+

+-- and a few more subnormal truncations

+-- (these check that underflow is being done correctly)

+ddscb201 scaleb  1.000000000000000E-383   0  -> 1.000000000000000E-383

+ddscb202 scaleb  1.000000000000000E-383  -1  -> 1.00000000000000E-384 Subnormal Rounded

+ddscb203 scaleb  1.000000000000000E-383  -2  -> 1.0000000000000E-385 Subnormal Rounded

+ddscb204 scaleb  1.000000000000000E-383  -3  -> 1.000000000000E-386 Subnormal Rounded

+ddscb205 scaleb  1.000000000000000E-383  -4  -> 1.00000000000E-387 Subnormal Rounded

+ddscb206 scaleb  1.000000000000000E-383  -5  -> 1.0000000000E-388 Subnormal Rounded

+ddscb207 scaleb  1.000000000000000E-383  -6  -> 1.000000000E-389 Subnormal Rounded

+ddscb208 scaleb  1.000000000000000E-383  -7  -> 1.00000000E-390 Subnormal Rounded

+ddscb209 scaleb  1.000000000000000E-383  -8  -> 1.0000000E-391 Subnormal Rounded

+ddscb210 scaleb  1.000000000000000E-383  -9  -> 1.000000E-392 Subnormal Rounded

+ddscb211 scaleb  1.000000000000000E-383  -10 -> 1.00000E-393 Subnormal Rounded

+ddscb212 scaleb  1.000000000000000E-383  -11 -> 1.0000E-394 Subnormal Rounded

+ddscb213 scaleb  1.000000000000000E-383  -12 -> 1.000E-395 Subnormal Rounded

+ddscb214 scaleb  1.000000000000000E-383  -13 -> 1.00E-396 Subnormal Rounded

+ddscb215 scaleb  1.000000000000000E-383  -14 -> 1.0E-397 Subnormal Rounded

+ddscb216 scaleb  1.000000000000000E-383  -15 -> 1E-398 Subnormal Rounded

+ddscb217 scaleb  1.000000000000000E-383  -16 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+ddscb218 scaleb  1.000000000000000E-383  -17 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped

+

diff --git a/Lib/test/decimaltestdata/ddShift.decTest b/Lib/test/decimaltestdata/ddShift.decTest
new file mode 100644
index 0000000..f2e80b3
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddShift.decTest
@@ -0,0 +1,262 @@
+------------------------------------------------------------------------

+-- ddShift.decTest -- shift decDouble coefficient left or right       --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check

+ddshi001 shift                 0    0  ->  0

+ddshi002 shift                 0    2  ->  0

+ddshi003 shift                 1    2  ->  100

+ddshi004 shift                 1   15  ->  1000000000000000

+ddshi005 shift                 1   16  ->  0

+ddshi006 shift                 1   -1  ->  0

+ddshi007 shift                 0   -2  ->  0

+ddshi008 shift  1234567890123456   -1  ->  123456789012345

+ddshi009 shift  1234567890123456   -15 ->  1

+ddshi010 shift  1234567890123456   -16 ->  0

+ddshi011 shift  9934567890123456   -15 ->  9

+ddshi012 shift  9934567890123456   -16 ->  0

+

+-- rhs must be an integer

+ddshi015 shift        1    1.5    -> NaN Invalid_operation

+ddshi016 shift        1    1.0    -> NaN Invalid_operation

+ddshi017 shift        1    0.1    -> NaN Invalid_operation

+ddshi018 shift        1    0.0    -> NaN Invalid_operation

+ddshi019 shift        1    1E+1   -> NaN Invalid_operation

+ddshi020 shift        1    1E+99  -> NaN Invalid_operation

+ddshi021 shift        1    Inf    -> NaN Invalid_operation

+ddshi022 shift        1    -Inf   -> NaN Invalid_operation

+-- and |rhs| <= precision

+ddshi025 shift        1    -1000  -> NaN Invalid_operation

+ddshi026 shift        1    -17    -> NaN Invalid_operation

+ddshi027 shift        1     17    -> NaN Invalid_operation

+ddshi028 shift        1     1000  -> NaN Invalid_operation

+

+-- full shifting pattern

+ddshi030 shift  1234567890123456         -16  -> 0

+ddshi031 shift  1234567890123456         -15  -> 1

+ddshi032 shift  1234567890123456         -14  -> 12

+ddshi033 shift  1234567890123456         -13  -> 123

+ddshi034 shift  1234567890123456         -12  -> 1234

+ddshi035 shift  1234567890123456         -11  -> 12345

+ddshi036 shift  1234567890123456         -10  -> 123456

+ddshi037 shift  1234567890123456         -9   -> 1234567

+ddshi038 shift  1234567890123456         -8   -> 12345678

+ddshi039 shift  1234567890123456         -7   -> 123456789

+ddshi040 shift  1234567890123456         -6   -> 1234567890

+ddshi041 shift  1234567890123456         -5   -> 12345678901

+ddshi042 shift  1234567890123456         -4   -> 123456789012

+ddshi043 shift  1234567890123456         -3   -> 1234567890123

+ddshi044 shift  1234567890123456         -2   -> 12345678901234

+ddshi045 shift  1234567890123456         -1   -> 123456789012345

+ddshi046 shift  1234567890123456         -0   -> 1234567890123456

+

+ddshi047 shift  1234567890123456         +0   -> 1234567890123456

+ddshi048 shift  1234567890123456         +1   -> 2345678901234560

+ddshi049 shift  1234567890123456         +2   -> 3456789012345600

+ddshi050 shift  1234567890123456         +3   -> 4567890123456000

+ddshi051 shift  1234567890123456         +4   -> 5678901234560000

+ddshi052 shift  1234567890123456         +5   -> 6789012345600000

+ddshi053 shift  1234567890123456         +6   -> 7890123456000000

+ddshi054 shift  1234567890123456         +7   -> 8901234560000000

+ddshi055 shift  1234567890123456         +8   -> 9012345600000000

+ddshi056 shift  1234567890123456         +9   ->  123456000000000

+ddshi057 shift  1234567890123456         +10  -> 1234560000000000

+ddshi058 shift  1234567890123456         +11  -> 2345600000000000

+ddshi059 shift  1234567890123456         +12  -> 3456000000000000

+ddshi060 shift  1234567890123456         +13  -> 4560000000000000

+ddshi061 shift  1234567890123456         +14  -> 5600000000000000

+ddshi062 shift  1234567890123456         +15  -> 6000000000000000

+ddshi063 shift  1234567890123456         +16  -> 0

+

+-- zeros

+ddshi070 shift  0E-10              +9   ->   0E-10

+ddshi071 shift  0E-10              -9   ->   0E-10

+ddshi072 shift  0.000              +9   ->   0.000

+ddshi073 shift  0.000              -9   ->   0.000

+ddshi074 shift  0E+10              +9   ->   0E+10

+ddshi075 shift  0E+10              -9   ->   0E+10

+ddshi076 shift -0E-10              +9   ->  -0E-10

+ddshi077 shift -0E-10              -9   ->  -0E-10

+ddshi078 shift -0.000              +9   ->  -0.000

+ddshi079 shift -0.000              -9   ->  -0.000

+ddshi080 shift -0E+10              +9   ->  -0E+10

+ddshi081 shift -0E+10              -9   ->  -0E+10

+

+-- Nmax, Nmin, Ntiny

+ddshi141 shift  9.999999999999999E+384     -1  -> 9.99999999999999E+383

+ddshi142 shift  9.999999999999999E+384     -15 -> 9E+369

+ddshi143 shift  9.999999999999999E+384      1  -> 9.999999999999990E+384

+ddshi144 shift  9.999999999999999E+384      15 -> 9.000000000000000E+384

+ddshi145 shift  1E-383                     -1  -> 0E-383

+ddshi146 shift  1E-383                     -15 -> 0E-383

+ddshi147 shift  1E-383                      1  -> 1.0E-382

+ddshi148 shift  1E-383                      15 -> 1.000000000000000E-368

+ddshi151 shift  1.000000000000000E-383     -1  -> 1.00000000000000E-384

+ddshi152 shift  1.000000000000000E-383     -15 -> 1E-398

+ddshi153 shift  1.000000000000000E-383      1  -> 0E-398

+ddshi154 shift  1.000000000000000E-383      15 -> 0E-398

+ddshi155 shift  9.000000000000000E-383     -1  -> 9.00000000000000E-384

+ddshi156 shift  9.000000000000000E-383     -15 -> 9E-398

+ddshi157 shift  9.000000000000000E-383      1  -> 0E-398

+ddshi158 shift  9.000000000000000E-383      15 -> 0E-398

+ddshi160 shift  1E-398                     -1  -> 0E-398

+ddshi161 shift  1E-398                     -15 -> 0E-398

+ddshi162 shift  1E-398                      1  -> 1.0E-397

+ddshi163 shift  1E-398                      15 -> 1.000000000000000E-383

+--  negatives

+ddshi171 shift -9.999999999999999E+384     -1  -> -9.99999999999999E+383

+ddshi172 shift -9.999999999999999E+384     -15 -> -9E+369

+ddshi173 shift -9.999999999999999E+384      1  -> -9.999999999999990E+384

+ddshi174 shift -9.999999999999999E+384      15 -> -9.000000000000000E+384

+ddshi175 shift -1E-383                     -1  -> -0E-383

+ddshi176 shift -1E-383                     -15 -> -0E-383

+ddshi177 shift -1E-383                      1  -> -1.0E-382

+ddshi178 shift -1E-383                      15 -> -1.000000000000000E-368

+ddshi181 shift -1.000000000000000E-383     -1  -> -1.00000000000000E-384

+ddshi182 shift -1.000000000000000E-383     -15 -> -1E-398

+ddshi183 shift -1.000000000000000E-383      1  -> -0E-398

+ddshi184 shift -1.000000000000000E-383      15 -> -0E-398

+ddshi185 shift -9.000000000000000E-383     -1  -> -9.00000000000000E-384

+ddshi186 shift -9.000000000000000E-383     -15 -> -9E-398

+ddshi187 shift -9.000000000000000E-383      1  -> -0E-398

+ddshi188 shift -9.000000000000000E-383      15 -> -0E-398

+ddshi190 shift -1E-398                     -1  -> -0E-398

+ddshi191 shift -1E-398                     -15 -> -0E-398

+ddshi192 shift -1E-398                      1  -> -1.0E-397

+ddshi193 shift -1E-398                      15 -> -1.000000000000000E-383

+

+-- more negatives (of sanities)

+ddshi201 shift                -0    0  -> -0

+ddshi202 shift                -0    2  -> -0

+ddshi203 shift                -1    2  -> -100

+ddshi204 shift                -1   15  -> -1000000000000000

+ddshi205 shift                -1   16  -> -0

+ddshi206 shift                -1   -1  -> -0

+ddshi207 shift                -0   -2  -> -0

+ddshi208 shift -1234567890123456   -1  -> -123456789012345

+ddshi209 shift -1234567890123456   -15 -> -1

+ddshi210 shift -1234567890123456   -16 -> -0

+ddshi211 shift -9934567890123456   -15 -> -9

+ddshi212 shift -9934567890123456   -16 -> -0

+

+

+-- Specials; NaNs are handled as usual

+ddshi781 shift -Inf  -8     -> -Infinity

+ddshi782 shift -Inf  -1     -> -Infinity

+ddshi783 shift -Inf  -0     -> -Infinity

+ddshi784 shift -Inf   0     -> -Infinity

+ddshi785 shift -Inf   1     -> -Infinity

+ddshi786 shift -Inf   8     -> -Infinity

+ddshi787 shift -1000 -Inf   -> NaN Invalid_operation

+ddshi788 shift -Inf  -Inf   -> NaN Invalid_operation

+ddshi789 shift -1    -Inf   -> NaN Invalid_operation

+ddshi790 shift -0    -Inf   -> NaN Invalid_operation

+ddshi791 shift  0    -Inf   -> NaN Invalid_operation

+ddshi792 shift  1    -Inf   -> NaN Invalid_operation

+ddshi793 shift  1000 -Inf   -> NaN Invalid_operation

+ddshi794 shift  Inf  -Inf   -> NaN Invalid_operation

+

+ddshi800 shift  Inf  -Inf   -> NaN Invalid_operation

+ddshi801 shift  Inf  -8     -> Infinity

+ddshi802 shift  Inf  -1     -> Infinity

+ddshi803 shift  Inf  -0     -> Infinity

+ddshi804 shift  Inf   0     -> Infinity

+ddshi805 shift  Inf   1     -> Infinity

+ddshi806 shift  Inf   8     -> Infinity

+ddshi807 shift  Inf   Inf   -> NaN Invalid_operation

+ddshi808 shift -1000  Inf   -> NaN Invalid_operation

+ddshi809 shift -Inf   Inf   -> NaN Invalid_operation

+ddshi810 shift -1     Inf   -> NaN Invalid_operation

+ddshi811 shift -0     Inf   -> NaN Invalid_operation

+ddshi812 shift  0     Inf   -> NaN Invalid_operation

+ddshi813 shift  1     Inf   -> NaN Invalid_operation

+ddshi814 shift  1000  Inf   -> NaN Invalid_operation

+ddshi815 shift  Inf   Inf   -> NaN Invalid_operation

+

+ddshi821 shift  NaN -Inf    ->  NaN

+ddshi822 shift  NaN -1000   ->  NaN

+ddshi823 shift  NaN -1      ->  NaN

+ddshi824 shift  NaN -0      ->  NaN

+ddshi825 shift  NaN  0      ->  NaN

+ddshi826 shift  NaN  1      ->  NaN

+ddshi827 shift  NaN  1000   ->  NaN

+ddshi828 shift  NaN  Inf    ->  NaN

+ddshi829 shift  NaN  NaN    ->  NaN

+ddshi830 shift -Inf  NaN    ->  NaN

+ddshi831 shift -1000 NaN    ->  NaN

+ddshi832 shift -1    NaN    ->  NaN

+ddshi833 shift -0    NaN    ->  NaN

+ddshi834 shift  0    NaN    ->  NaN

+ddshi835 shift  1    NaN    ->  NaN

+ddshi836 shift  1000 NaN    ->  NaN

+ddshi837 shift  Inf  NaN    ->  NaN

+

+ddshi841 shift  sNaN -Inf   ->  NaN  Invalid_operation

+ddshi842 shift  sNaN -1000  ->  NaN  Invalid_operation

+ddshi843 shift  sNaN -1     ->  NaN  Invalid_operation

+ddshi844 shift  sNaN -0     ->  NaN  Invalid_operation

+ddshi845 shift  sNaN  0     ->  NaN  Invalid_operation

+ddshi846 shift  sNaN  1     ->  NaN  Invalid_operation

+ddshi847 shift  sNaN  1000  ->  NaN  Invalid_operation

+ddshi848 shift  sNaN  NaN   ->  NaN  Invalid_operation

+ddshi849 shift  sNaN sNaN   ->  NaN  Invalid_operation

+ddshi850 shift  NaN  sNaN   ->  NaN  Invalid_operation

+ddshi851 shift -Inf  sNaN   ->  NaN  Invalid_operation

+ddshi852 shift -1000 sNaN   ->  NaN  Invalid_operation

+ddshi853 shift -1    sNaN   ->  NaN  Invalid_operation

+ddshi854 shift -0    sNaN   ->  NaN  Invalid_operation

+ddshi855 shift  0    sNaN   ->  NaN  Invalid_operation

+ddshi856 shift  1    sNaN   ->  NaN  Invalid_operation

+ddshi857 shift  1000 sNaN   ->  NaN  Invalid_operation

+ddshi858 shift  Inf  sNaN   ->  NaN  Invalid_operation

+ddshi859 shift  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddshi861 shift  NaN1   -Inf    ->  NaN1

+ddshi862 shift +NaN2   -1000   ->  NaN2

+ddshi863 shift  NaN3    1000   ->  NaN3

+ddshi864 shift  NaN4    Inf    ->  NaN4

+ddshi865 shift  NaN5   +NaN6   ->  NaN5

+ddshi866 shift -Inf     NaN7   ->  NaN7

+ddshi867 shift -1000    NaN8   ->  NaN8

+ddshi868 shift  1000    NaN9   ->  NaN9

+ddshi869 shift  Inf    +NaN10  ->  NaN10

+ddshi871 shift  sNaN11  -Inf   ->  NaN11  Invalid_operation

+ddshi872 shift  sNaN12  -1000  ->  NaN12  Invalid_operation

+ddshi873 shift  sNaN13   1000  ->  NaN13  Invalid_operation

+ddshi874 shift  sNaN14   NaN17 ->  NaN14  Invalid_operation

+ddshi875 shift  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+ddshi876 shift  NaN16   sNaN19 ->  NaN19  Invalid_operation

+ddshi877 shift -Inf    +sNaN20 ->  NaN20  Invalid_operation

+ddshi878 shift -1000    sNaN21 ->  NaN21  Invalid_operation

+ddshi879 shift  1000    sNaN22 ->  NaN22  Invalid_operation

+ddshi880 shift  Inf     sNaN23 ->  NaN23  Invalid_operation

+ddshi881 shift +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+ddshi882 shift -NaN26    NaN28 -> -NaN26

+ddshi883 shift -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+ddshi884 shift  1000    -NaN30 -> -NaN30

+ddshi885 shift  1000   -sNaN31 -> -NaN31  Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddSubtract.decTest b/Lib/test/decimaltestdata/ddSubtract.decTest
new file mode 100644
index 0000000..b10f5e4
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddSubtract.decTest
@@ -0,0 +1,629 @@
+------------------------------------------------------------------------

+-- ddSubtract.decTest -- decDouble subtraction                        --

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

+

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

+

+-- [first group are 'quick confidence check']

+ddsub001 subtract  0   0  -> '0'

+ddsub002 subtract  1   1  -> '0'

+ddsub003 subtract  1   2  -> '-1'

+ddsub004 subtract  2   1  -> '1'

+ddsub005 subtract  2   2  -> '0'

+ddsub006 subtract  3   2  -> '1'

+ddsub007 subtract  2   3  -> '-1'

+

+ddsub011 subtract -0   0  -> '-0'

+ddsub012 subtract -1   1  -> '-2'

+ddsub013 subtract -1   2  -> '-3'

+ddsub014 subtract -2   1  -> '-3'

+ddsub015 subtract -2   2  -> '-4'

+ddsub016 subtract -3   2  -> '-5'

+ddsub017 subtract -2   3  -> '-5'

+

+ddsub021 subtract  0  -0  -> '0'

+ddsub022 subtract  1  -1  -> '2'

+ddsub023 subtract  1  -2  -> '3'

+ddsub024 subtract  2  -1  -> '3'

+ddsub025 subtract  2  -2  -> '4'

+ddsub026 subtract  3  -2  -> '5'

+ddsub027 subtract  2  -3  -> '5'

+

+ddsub030 subtract  11  1  -> 10

+ddsub031 subtract  10  1  ->  9

+ddsub032 subtract  9   1  ->  8

+ddsub033 subtract  1   1  ->  0

+ddsub034 subtract  0   1  -> -1

+ddsub035 subtract -1   1  -> -2

+ddsub036 subtract -9   1  -> -10

+ddsub037 subtract -10  1  -> -11

+ddsub038 subtract -11  1  -> -12

+

+ddsub040 subtract '5.75' '3.3'  -> '2.45'

+ddsub041 subtract '5'    '-3'   -> '8'

+ddsub042 subtract '-5'   '-3'   -> '-2'

+ddsub043 subtract '-7'   '2.5'  -> '-9.5'

+ddsub044 subtract '0.7'  '0.3'  -> '0.4'

+ddsub045 subtract '1.3'  '0.3'  -> '1.0'

+ddsub046 subtract '1.25' '1.25' -> '0.00'

+

+ddsub050 subtract '1.23456789'    '1.00000000' -> '0.23456789'

+ddsub051 subtract '1.23456789'    '1.00000089' -> '0.23456700'

+

+ddsub060 subtract '70'    '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded

+ddsub061 subtract '700'    '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded

+ddsub062 subtract '7000'    '10000e+16' -> '-9.999999999999999E+19' Inexact Rounded

+ddsub063 subtract '70000'    '10000e+16' -> '-9.999999999999993E+19' Rounded

+ddsub064 subtract '700000'    '10000e+16' -> '-9.999999999999930E+19' Rounded

+  -- symmetry:

+ddsub065 subtract '10000e+16'    '70' -> '1.000000000000000E+20' Inexact Rounded

+ddsub066 subtract '10000e+16'    '700' -> '1.000000000000000E+20' Inexact Rounded

+ddsub067 subtract '10000e+16'    '7000' -> '9.999999999999999E+19' Inexact Rounded

+ddsub068 subtract '10000e+16'    '70000' -> '9.999999999999993E+19' Rounded

+ddsub069 subtract '10000e+16'    '700000' -> '9.999999999999930E+19' Rounded

+

+  -- some of the next group are really constructor tests

+ddsub090 subtract '00.0'    '0.0'  -> '0.0'

+ddsub091 subtract '00.0'    '0.00' -> '0.00'

+ddsub092 subtract '0.00'    '00.0' -> '0.00'

+ddsub093 subtract '00.0'    '0.00' -> '0.00'

+ddsub094 subtract '0.00'    '00.0' -> '0.00'

+ddsub095 subtract '3'    '.3'   -> '2.7'

+ddsub096 subtract '3.'   '.3'   -> '2.7'

+ddsub097 subtract '3.0'  '.3'   -> '2.7'

+ddsub098 subtract '3.00' '.3'   -> '2.70'

+ddsub099 subtract '3'    '3'    -> '0'

+ddsub100 subtract '3'    '+3'   -> '0'

+ddsub101 subtract '3'    '-3'   -> '6'

+ddsub102 subtract '3'    '0.3'  -> '2.7'

+ddsub103 subtract '3.'   '0.3'  -> '2.7'

+ddsub104 subtract '3.0'  '0.3'  -> '2.7'

+ddsub105 subtract '3.00' '0.3'  -> '2.70'

+ddsub106 subtract '3'    '3.0'  -> '0.0'

+ddsub107 subtract '3'    '+3.0' -> '0.0'

+ddsub108 subtract '3'    '-3.0' -> '6.0'

+

+-- the above all from add; massaged and extended.  Now some new ones...

+-- [particularly important for comparisons]

+-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7

+-- with input rounding.

+ddsub120 subtract  '10.23456784'    '10.23456789'  -> '-5E-8'

+ddsub121 subtract  '10.23456785'    '10.23456789'  -> '-4E-8'

+ddsub122 subtract  '10.23456786'    '10.23456789'  -> '-3E-8'

+ddsub123 subtract  '10.23456787'    '10.23456789'  -> '-2E-8'

+ddsub124 subtract  '10.23456788'    '10.23456789'  -> '-1E-8'

+ddsub125 subtract  '10.23456789'    '10.23456789'  -> '0E-8'

+ddsub126 subtract  '10.23456790'    '10.23456789'  -> '1E-8'

+ddsub127 subtract  '10.23456791'    '10.23456789'  -> '2E-8'

+ddsub128 subtract  '10.23456792'    '10.23456789'  -> '3E-8'

+ddsub129 subtract  '10.23456793'    '10.23456789'  -> '4E-8'

+ddsub130 subtract  '10.23456794'    '10.23456789'  -> '5E-8'

+ddsub131 subtract  '10.23456781'    '10.23456786'  -> '-5E-8'

+ddsub132 subtract  '10.23456782'    '10.23456786'  -> '-4E-8'

+ddsub133 subtract  '10.23456783'    '10.23456786'  -> '-3E-8'

+ddsub134 subtract  '10.23456784'    '10.23456786'  -> '-2E-8'

+ddsub135 subtract  '10.23456785'    '10.23456786'  -> '-1E-8'

+ddsub136 subtract  '10.23456786'    '10.23456786'  -> '0E-8'

+ddsub137 subtract  '10.23456787'    '10.23456786'  -> '1E-8'

+ddsub138 subtract  '10.23456788'    '10.23456786'  -> '2E-8'

+ddsub139 subtract  '10.23456789'    '10.23456786'  -> '3E-8'

+ddsub140 subtract  '10.23456790'    '10.23456786'  -> '4E-8'

+ddsub141 subtract  '10.23456791'    '10.23456786'  -> '5E-8'

+ddsub142 subtract  '1'              '0.999999999'  -> '1E-9'

+ddsub143 subtract  '0.999999999'    '1'            -> '-1E-9'

+ddsub144 subtract  '-10.23456780'   '-10.23456786' -> '6E-8'

+ddsub145 subtract  '-10.23456790'   '-10.23456786' -> '-4E-8'

+ddsub146 subtract  '-10.23456791'   '-10.23456786' -> '-5E-8'

+

+-- additional scaled arithmetic tests [0.97 problem]

+ddsub160 subtract '0'     '.1'      -> '-0.1'

+ddsub161 subtract '00'    '.97983'  -> '-0.97983'

+ddsub162 subtract '0'     '.9'      -> '-0.9'

+ddsub163 subtract '0'     '0.102'   -> '-0.102'

+ddsub164 subtract '0'     '.4'      -> '-0.4'

+ddsub165 subtract '0'     '.307'    -> '-0.307'

+ddsub166 subtract '0'     '.43822'  -> '-0.43822'

+ddsub167 subtract '0'     '.911'    -> '-0.911'

+ddsub168 subtract '.0'    '.02'     -> '-0.02'

+ddsub169 subtract '00'    '.392'    -> '-0.392'

+ddsub170 subtract '0'     '.26'     -> '-0.26'

+ddsub171 subtract '0'     '0.51'    -> '-0.51'

+ddsub172 subtract '0'     '.2234'   -> '-0.2234'

+ddsub173 subtract '0'     '.2'      -> '-0.2'

+ddsub174 subtract '.0'    '.0008'   -> '-0.0008'

+-- 0. on left

+ddsub180 subtract '0.0'     '-.1'      -> '0.1'

+ddsub181 subtract '0.00'    '-.97983'  -> '0.97983'

+ddsub182 subtract '0.0'     '-.9'      -> '0.9'

+ddsub183 subtract '0.0'     '-0.102'   -> '0.102'

+ddsub184 subtract '0.0'     '-.4'      -> '0.4'

+ddsub185 subtract '0.0'     '-.307'    -> '0.307'

+ddsub186 subtract '0.0'     '-.43822'  -> '0.43822'

+ddsub187 subtract '0.0'     '-.911'    -> '0.911'

+ddsub188 subtract '0.0'     '-.02'     -> '0.02'

+ddsub189 subtract '0.00'    '-.392'    -> '0.392'

+ddsub190 subtract '0.0'     '-.26'     -> '0.26'

+ddsub191 subtract '0.0'     '-0.51'    -> '0.51'

+ddsub192 subtract '0.0'     '-.2234'   -> '0.2234'

+ddsub193 subtract '0.0'     '-.2'      -> '0.2'

+ddsub194 subtract '0.0'     '-.0008'   -> '0.0008'

+-- negatives of same

+ddsub200 subtract '0'     '-.1'      -> '0.1'

+ddsub201 subtract '00'    '-.97983'  -> '0.97983'

+ddsub202 subtract '0'     '-.9'      -> '0.9'

+ddsub203 subtract '0'     '-0.102'   -> '0.102'

+ddsub204 subtract '0'     '-.4'      -> '0.4'

+ddsub205 subtract '0'     '-.307'    -> '0.307'

+ddsub206 subtract '0'     '-.43822'  -> '0.43822'

+ddsub207 subtract '0'     '-.911'    -> '0.911'

+ddsub208 subtract '.0'    '-.02'     -> '0.02'

+ddsub209 subtract '00'    '-.392'    -> '0.392'

+ddsub210 subtract '0'     '-.26'     -> '0.26'

+ddsub211 subtract '0'     '-0.51'    -> '0.51'

+ddsub212 subtract '0'     '-.2234'   -> '0.2234'

+ddsub213 subtract '0'     '-.2'      -> '0.2'

+ddsub214 subtract '.0'    '-.0008'   -> '0.0008'

+

+-- more fixed, LHS swaps [really the same as testcases under add]

+ddsub220 subtract '-56267E-12' 0  -> '-5.6267E-8'

+ddsub221 subtract '-56267E-11' 0  -> '-5.6267E-7'

+ddsub222 subtract '-56267E-10' 0  -> '-0.0000056267'

+ddsub223 subtract '-56267E-9'  0  -> '-0.000056267'

+ddsub224 subtract '-56267E-8'  0  -> '-0.00056267'

+ddsub225 subtract '-56267E-7'  0  -> '-0.0056267'

+ddsub226 subtract '-56267E-6'  0  -> '-0.056267'

+ddsub227 subtract '-56267E-5'  0  -> '-0.56267'

+ddsub228 subtract '-56267E-2'  0  -> '-562.67'

+ddsub229 subtract '-56267E-1'  0  -> '-5626.7'

+ddsub230 subtract '-56267E-0'  0  -> '-56267'

+-- symmetry ...

+ddsub240 subtract 0 '-56267E-12'  -> '5.6267E-8'

+ddsub241 subtract 0 '-56267E-11'  -> '5.6267E-7'

+ddsub242 subtract 0 '-56267E-10'  -> '0.0000056267'

+ddsub243 subtract 0 '-56267E-9'   -> '0.000056267'

+ddsub244 subtract 0 '-56267E-8'   -> '0.00056267'

+ddsub245 subtract 0 '-56267E-7'   -> '0.0056267'

+ddsub246 subtract 0 '-56267E-6'   -> '0.056267'

+ddsub247 subtract 0 '-56267E-5'   -> '0.56267'

+ddsub248 subtract 0 '-56267E-2'   -> '562.67'

+ddsub249 subtract 0 '-56267E-1'   -> '5626.7'

+ddsub250 subtract 0 '-56267E-0'   -> '56267'

+

+-- now some more from the 'new' add

+ddsub301 subtract '1.23456789'  '1.00000000' -> '0.23456789'

+ddsub302 subtract '1.23456789'  '1.00000011' -> '0.23456778'

+

+-- some carrying effects

+ddsub321 subtract '0.9998'  '0.0000' -> '0.9998'

+ddsub322 subtract '0.9998'  '0.0001' -> '0.9997'

+ddsub323 subtract '0.9998'  '0.0002' -> '0.9996'

+ddsub324 subtract '0.9998'  '0.0003' -> '0.9995'

+ddsub325 subtract '0.9998'  '-0.0000' -> '0.9998'

+ddsub326 subtract '0.9998'  '-0.0001' -> '0.9999'

+ddsub327 subtract '0.9998'  '-0.0002' -> '1.0000'

+ddsub328 subtract '0.9998'  '-0.0003' -> '1.0001'

+

+-- internal boundaries

+ddsub346 subtract '10000e+9'  '7'   -> '9999999999993'

+ddsub347 subtract '10000e+9'  '70'   -> '9999999999930'

+ddsub348 subtract '10000e+9'  '700'   -> '9999999999300'

+ddsub349 subtract '10000e+9'  '7000'   -> '9999999993000'

+ddsub350 subtract '10000e+9'  '70000'   -> '9999999930000'

+ddsub351 subtract '10000e+9'  '700000'   -> '9999999300000'

+ddsub352 subtract '7' '10000e+9'   -> '-9999999999993'

+ddsub353 subtract '70' '10000e+9'   -> '-9999999999930'

+ddsub354 subtract '700' '10000e+9'   -> '-9999999999300'

+ddsub355 subtract '7000' '10000e+9'   -> '-9999999993000'

+ddsub356 subtract '70000' '10000e+9'   -> '-9999999930000'

+ddsub357 subtract '700000' '10000e+9'   -> '-9999999300000'

+

+-- zero preservation

+ddsub361 subtract 1 '0.0001' -> '0.9999'

+ddsub362 subtract 1 '0.00001' -> '0.99999'

+ddsub363 subtract 1 '0.000001' -> '0.999999'

+ddsub364 subtract 1 '0.0000000000000001' -> '0.9999999999999999'

+ddsub365 subtract 1 '0.00000000000000001' -> '1.000000000000000' Inexact Rounded

+ddsub366 subtract 1 '0.000000000000000001' -> '1.000000000000000' Inexact Rounded

+

+-- some funny zeros [in case of bad signum]

+ddsub370 subtract 1  0  -> 1

+ddsub371 subtract 1 0.  -> 1

+ddsub372 subtract 1  .0 -> 1.0

+ddsub373 subtract 1 0.0 -> 1.0

+ddsub374 subtract  0  1 -> -1

+ddsub375 subtract 0.  1 -> -1

+ddsub376 subtract  .0 1 -> -1.0

+ddsub377 subtract 0.0 1 -> -1.0

+

+-- leading 0 digit before round

+ddsub910 subtract -103519362 -51897955.3 -> -51621406.7

+ddsub911 subtract 159579.444 89827.5229 -> 69751.9211

+

+ddsub920 subtract 333.0000000123456 33.00000001234566 -> 299.9999999999999 Inexact Rounded

+ddsub921 subtract 333.0000000123456 33.00000001234565 -> 300.0000000000000 Inexact Rounded

+ddsub922 subtract 133.0000000123456 33.00000001234565 ->  99.99999999999995

+ddsub923 subtract 133.0000000123456 33.00000001234564 ->  99.99999999999996

+ddsub924 subtract 133.0000000123456 33.00000001234540 -> 100.0000000000002 Rounded

+ddsub925 subtract 133.0000000123456 43.00000001234560 ->  90.00000000000000

+ddsub926 subtract 133.0000000123456 43.00000001234561 ->  89.99999999999999

+ddsub927 subtract 133.0000000123456 43.00000001234566 ->  89.99999999999994

+ddsub928 subtract 101.0000000123456 91.00000001234566 ->   9.99999999999994

+ddsub929 subtract 101.0000000123456 99.00000001234566 ->   1.99999999999994

+

+-- more LHS swaps [were fixed]

+ddsub390 subtract '-56267E-10'   0 ->  '-0.0000056267'

+ddsub391 subtract '-56267E-6'    0 ->  '-0.056267'

+ddsub392 subtract '-56267E-5'    0 ->  '-0.56267'

+ddsub393 subtract '-56267E-4'    0 ->  '-5.6267'

+ddsub394 subtract '-56267E-3'    0 ->  '-56.267'

+ddsub395 subtract '-56267E-2'    0 ->  '-562.67'

+ddsub396 subtract '-56267E-1'    0 ->  '-5626.7'

+ddsub397 subtract '-56267E-0'    0 ->  '-56267'

+ddsub398 subtract '-5E-10'       0 ->  '-5E-10'

+ddsub399 subtract '-5E-7'        0 ->  '-5E-7'

+ddsub400 subtract '-5E-6'        0 ->  '-0.000005'

+ddsub401 subtract '-5E-5'        0 ->  '-0.00005'

+ddsub402 subtract '-5E-4'        0 ->  '-0.0005'

+ddsub403 subtract '-5E-1'        0 ->  '-0.5'

+ddsub404 subtract '-5E0'         0 ->  '-5'

+ddsub405 subtract '-5E1'         0 ->  '-50'

+ddsub406 subtract '-5E5'         0 ->  '-500000'

+ddsub407 subtract '-5E15'        0 ->  '-5000000000000000'

+ddsub408 subtract '-5E16'        0 ->  '-5.000000000000000E+16'  Rounded

+ddsub409 subtract '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded

+ddsub410 subtract '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded

+ddsub411 subtract '-5E100'       0 ->  '-5.000000000000000E+100' Rounded

+

+-- more RHS swaps [were fixed]

+ddsub420 subtract 0  '-56267E-10' ->  '0.0000056267'

+ddsub421 subtract 0  '-56267E-6'  ->  '0.056267'

+ddsub422 subtract 0  '-56267E-5'  ->  '0.56267'

+ddsub423 subtract 0  '-56267E-4'  ->  '5.6267'

+ddsub424 subtract 0  '-56267E-3'  ->  '56.267'

+ddsub425 subtract 0  '-56267E-2'  ->  '562.67'

+ddsub426 subtract 0  '-56267E-1'  ->  '5626.7'

+ddsub427 subtract 0  '-56267E-0'  ->  '56267'

+ddsub428 subtract 0  '-5E-10'     ->  '5E-10'

+ddsub429 subtract 0  '-5E-7'      ->  '5E-7'

+ddsub430 subtract 0  '-5E-6'      ->  '0.000005'

+ddsub431 subtract 0  '-5E-5'      ->  '0.00005'

+ddsub432 subtract 0  '-5E-4'      ->  '0.0005'

+ddsub433 subtract 0  '-5E-1'      ->  '0.5'

+ddsub434 subtract 0  '-5E0'       ->  '5'

+ddsub435 subtract 0  '-5E1'       ->  '50'

+ddsub436 subtract 0  '-5E5'       ->  '500000'

+ddsub437 subtract 0  '-5E15'      ->  '5000000000000000'

+ddsub438 subtract 0  '-5E16'      ->  '5.000000000000000E+16'   Rounded

+ddsub439 subtract 0  '-5E17'      ->  '5.000000000000000E+17'   Rounded

+ddsub440 subtract 0  '-5E18'      ->  '5.000000000000000E+18'   Rounded

+ddsub441 subtract 0  '-5E100'     ->  '5.000000000000000E+100'  Rounded

+

+

+-- try borderline precision, with carries, etc.

+ddsub461 subtract '1E+16' '1'        -> '9999999999999999'

+ddsub462 subtract '1E+12' '-1.111'   -> '1000000000001.111'

+ddsub463 subtract '1.111'  '-1E+12'  -> '1000000000001.111'

+ddsub464 subtract '-1'    '-1E+16'   -> '9999999999999999'

+ddsub465 subtract '7E+15' '1'        -> '6999999999999999'

+ddsub466 subtract '7E+12' '-1.111'   -> '7000000000001.111'

+ddsub467 subtract '1.111'  '-7E+12'  -> '7000000000001.111'

+ddsub468 subtract '-1'    '-7E+15'   -> '6999999999999999'

+

+--                  1234567890123456       1234567890123456      1 23456789012345

+ddsub470 subtract '0.4444444444444444'  '-0.5555555555555563' -> '1.000000000000001' Inexact Rounded

+ddsub471 subtract '0.4444444444444444'  '-0.5555555555555562' -> '1.000000000000001' Inexact Rounded

+ddsub472 subtract '0.4444444444444444'  '-0.5555555555555561' -> '1.000000000000000' Inexact Rounded

+ddsub473 subtract '0.4444444444444444'  '-0.5555555555555560' -> '1.000000000000000' Inexact Rounded

+ddsub474 subtract '0.4444444444444444'  '-0.5555555555555559' -> '1.000000000000000' Inexact Rounded

+ddsub475 subtract '0.4444444444444444'  '-0.5555555555555558' -> '1.000000000000000' Inexact Rounded

+ddsub476 subtract '0.4444444444444444'  '-0.5555555555555557' -> '1.000000000000000' Inexact Rounded

+ddsub477 subtract '0.4444444444444444'  '-0.5555555555555556' -> '1.000000000000000' Rounded

+ddsub478 subtract '0.4444444444444444'  '-0.5555555555555555' -> '0.9999999999999999'

+ddsub479 subtract '0.4444444444444444'  '-0.5555555555555554' -> '0.9999999999999998'

+ddsub480 subtract '0.4444444444444444'  '-0.5555555555555553' -> '0.9999999999999997'

+ddsub481 subtract '0.4444444444444444'  '-0.5555555555555552' -> '0.9999999999999996'

+ddsub482 subtract '0.4444444444444444'  '-0.5555555555555551' -> '0.9999999999999995'

+ddsub483 subtract '0.4444444444444444'  '-0.5555555555555550' -> '0.9999999999999994'

+

+-- and some more, including residue effects and different roundings

+rounding: half_up

+ddsub500 subtract '1231234567456789' 0             -> '1231234567456789'

+ddsub501 subtract '1231234567456789' 0.000000001   -> '1231234567456789' Inexact Rounded

+ddsub502 subtract '1231234567456789' 0.000001      -> '1231234567456789' Inexact Rounded

+ddsub503 subtract '1231234567456789' 0.1           -> '1231234567456789' Inexact Rounded

+ddsub504 subtract '1231234567456789' 0.4           -> '1231234567456789' Inexact Rounded

+ddsub505 subtract '1231234567456789' 0.49          -> '1231234567456789' Inexact Rounded

+ddsub506 subtract '1231234567456789' 0.499999      -> '1231234567456789' Inexact Rounded

+ddsub507 subtract '1231234567456789' 0.499999999   -> '1231234567456789' Inexact Rounded

+ddsub508 subtract '1231234567456789' 0.5           -> '1231234567456789' Inexact Rounded

+ddsub509 subtract '1231234567456789' 0.500000001   -> '1231234567456788' Inexact Rounded

+ddsub510 subtract '1231234567456789' 0.500001      -> '1231234567456788' Inexact Rounded

+ddsub511 subtract '1231234567456789' 0.51          -> '1231234567456788' Inexact Rounded

+ddsub512 subtract '1231234567456789' 0.6           -> '1231234567456788' Inexact Rounded

+ddsub513 subtract '1231234567456789' 0.9           -> '1231234567456788' Inexact Rounded

+ddsub514 subtract '1231234567456789' 0.99999       -> '1231234567456788' Inexact Rounded

+ddsub515 subtract '1231234567456789' 0.999999999   -> '1231234567456788' Inexact Rounded

+ddsub516 subtract '1231234567456789' 1             -> '1231234567456788'

+ddsub517 subtract '1231234567456789' 1.000000001   -> '1231234567456788' Inexact Rounded

+ddsub518 subtract '1231234567456789' 1.00001       -> '1231234567456788' Inexact Rounded

+ddsub519 subtract '1231234567456789' 1.1           -> '1231234567456788' Inexact Rounded

+

+rounding: half_even

+ddsub520 subtract '1231234567456789' 0             -> '1231234567456789'

+ddsub521 subtract '1231234567456789' 0.000000001   -> '1231234567456789' Inexact Rounded

+ddsub522 subtract '1231234567456789' 0.000001      -> '1231234567456789' Inexact Rounded

+ddsub523 subtract '1231234567456789' 0.1           -> '1231234567456789' Inexact Rounded

+ddsub524 subtract '1231234567456789' 0.4           -> '1231234567456789' Inexact Rounded

+ddsub525 subtract '1231234567456789' 0.49          -> '1231234567456789' Inexact Rounded

+ddsub526 subtract '1231234567456789' 0.499999      -> '1231234567456789' Inexact Rounded

+ddsub527 subtract '1231234567456789' 0.499999999   -> '1231234567456789' Inexact Rounded

+ddsub528 subtract '1231234567456789' 0.5           -> '1231234567456788' Inexact Rounded

+ddsub529 subtract '1231234567456789' 0.500000001   -> '1231234567456788' Inexact Rounded

+ddsub530 subtract '1231234567456789' 0.500001      -> '1231234567456788' Inexact Rounded

+ddsub531 subtract '1231234567456789' 0.51          -> '1231234567456788' Inexact Rounded

+ddsub532 subtract '1231234567456789' 0.6           -> '1231234567456788' Inexact Rounded

+ddsub533 subtract '1231234567456789' 0.9           -> '1231234567456788' Inexact Rounded

+ddsub534 subtract '1231234567456789' 0.99999       -> '1231234567456788' Inexact Rounded

+ddsub535 subtract '1231234567456789' 0.999999999   -> '1231234567456788' Inexact Rounded

+ddsub536 subtract '1231234567456789' 1             -> '1231234567456788'

+ddsub537 subtract '1231234567456789' 1.00000001    -> '1231234567456788' Inexact Rounded

+ddsub538 subtract '1231234567456789' 1.00001       -> '1231234567456788' Inexact Rounded

+ddsub539 subtract '1231234567456789' 1.1           -> '1231234567456788' Inexact Rounded

+-- critical few with even bottom digit...

+ddsub540 subtract '1231234567456788' 0.499999999   -> '1231234567456788' Inexact Rounded

+ddsub541 subtract '1231234567456788' 0.5           -> '1231234567456788' Inexact Rounded

+ddsub542 subtract '1231234567456788' 0.500000001   -> '1231234567456787' Inexact Rounded

+

+rounding: down

+ddsub550 subtract '1231234567456789' 0             -> '1231234567456789'

+ddsub551 subtract '1231234567456789' 0.000000001   -> '1231234567456788' Inexact Rounded

+ddsub552 subtract '1231234567456789' 0.000001      -> '1231234567456788' Inexact Rounded

+ddsub553 subtract '1231234567456789' 0.1           -> '1231234567456788' Inexact Rounded

+ddsub554 subtract '1231234567456789' 0.4           -> '1231234567456788' Inexact Rounded

+ddsub555 subtract '1231234567456789' 0.49          -> '1231234567456788' Inexact Rounded

+ddsub556 subtract '1231234567456789' 0.499999      -> '1231234567456788' Inexact Rounded

+ddsub557 subtract '1231234567456789' 0.499999999   -> '1231234567456788' Inexact Rounded

+ddsub558 subtract '1231234567456789' 0.5           -> '1231234567456788' Inexact Rounded

+ddsub559 subtract '1231234567456789' 0.500000001   -> '1231234567456788' Inexact Rounded

+ddsub560 subtract '1231234567456789' 0.500001      -> '1231234567456788' Inexact Rounded

+ddsub561 subtract '1231234567456789' 0.51          -> '1231234567456788' Inexact Rounded

+ddsub562 subtract '1231234567456789' 0.6           -> '1231234567456788' Inexact Rounded

+ddsub563 subtract '1231234567456789' 0.9           -> '1231234567456788' Inexact Rounded

+ddsub564 subtract '1231234567456789' 0.99999       -> '1231234567456788' Inexact Rounded

+ddsub565 subtract '1231234567456789' 0.999999999   -> '1231234567456788' Inexact Rounded

+ddsub566 subtract '1231234567456789' 1             -> '1231234567456788'

+ddsub567 subtract '1231234567456789' 1.00000001    -> '1231234567456787' Inexact Rounded

+ddsub568 subtract '1231234567456789' 1.00001       -> '1231234567456787' Inexact Rounded

+ddsub569 subtract '1231234567456789' 1.1           -> '1231234567456787' Inexact Rounded

+

+-- symmetry...

+rounding: half_up

+ddsub600 subtract 0             '1231234567456789' -> '-1231234567456789'

+ddsub601 subtract 0.000000001   '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub602 subtract 0.000001      '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub603 subtract 0.1           '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub604 subtract 0.4           '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub605 subtract 0.49          '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub606 subtract 0.499999      '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub607 subtract 0.499999999   '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub608 subtract 0.5           '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub609 subtract 0.500000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub610 subtract 0.500001      '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub611 subtract 0.51          '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub612 subtract 0.6           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub613 subtract 0.9           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub614 subtract 0.99999       '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub615 subtract 0.999999999   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub616 subtract 1             '1231234567456789' -> '-1231234567456788'

+ddsub617 subtract 1.000000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub618 subtract 1.00001       '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub619 subtract 1.1           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+

+rounding: half_even

+ddsub620 subtract 0             '1231234567456789' -> '-1231234567456789'

+ddsub621 subtract 0.000000001   '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub622 subtract 0.000001      '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub623 subtract 0.1           '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub624 subtract 0.4           '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub625 subtract 0.49          '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub626 subtract 0.499999      '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub627 subtract 0.499999999   '1231234567456789' -> '-1231234567456789' Inexact Rounded

+ddsub628 subtract 0.5           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub629 subtract 0.500000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub630 subtract 0.500001      '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub631 subtract 0.51          '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub632 subtract 0.6           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub633 subtract 0.9           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub634 subtract 0.99999       '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub635 subtract 0.999999999   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub636 subtract 1             '1231234567456789' -> '-1231234567456788'

+ddsub637 subtract 1.00000001    '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub638 subtract 1.00001       '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub639 subtract 1.1           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+-- critical few with even bottom digit...

+ddsub640 subtract 0.499999999   '1231234567456788' -> '-1231234567456788' Inexact Rounded

+ddsub641 subtract 0.5           '1231234567456788' -> '-1231234567456788' Inexact Rounded

+ddsub642 subtract 0.500000001   '1231234567456788' -> '-1231234567456787' Inexact Rounded

+

+rounding: down

+ddsub650 subtract 0             '1231234567456789' -> '-1231234567456789'

+ddsub651 subtract 0.000000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub652 subtract 0.000001      '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub653 subtract 0.1           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub654 subtract 0.4           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub655 subtract 0.49          '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub656 subtract 0.499999      '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub657 subtract 0.499999999   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub658 subtract 0.5           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub659 subtract 0.500000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub660 subtract 0.500001      '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub661 subtract 0.51          '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub662 subtract 0.6           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub663 subtract 0.9           '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub664 subtract 0.99999       '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub665 subtract 0.999999999   '1231234567456789' -> '-1231234567456788' Inexact Rounded

+ddsub666 subtract 1             '1231234567456789' -> '-1231234567456788'

+ddsub667 subtract 1.00000001    '1231234567456789' -> '-1231234567456787' Inexact Rounded

+ddsub668 subtract 1.00001       '1231234567456789' -> '-1231234567456787' Inexact Rounded

+ddsub669 subtract 1.1           '1231234567456789' -> '-1231234567456787' Inexact Rounded

+

+

+-- lots of leading zeros in intermediate result, and showing effects of

+-- input rounding would have affected the following

+rounding: half_up

+ddsub670 subtract '1234567456789' '1234567456788.1' -> 0.9

+ddsub671 subtract '1234567456789' '1234567456788.9' -> 0.1

+ddsub672 subtract '1234567456789' '1234567456789.1' -> -0.1

+ddsub673 subtract '1234567456789' '1234567456789.5' -> -0.5

+ddsub674 subtract '1234567456789' '1234567456789.9' -> -0.9

+

+rounding: half_even

+ddsub680 subtract '1234567456789' '1234567456788.1' -> 0.9

+ddsub681 subtract '1234567456789' '1234567456788.9' -> 0.1

+ddsub682 subtract '1234567456789' '1234567456789.1' -> -0.1

+ddsub683 subtract '1234567456789' '1234567456789.5' -> -0.5

+ddsub684 subtract '1234567456789' '1234567456789.9' -> -0.9

+

+ddsub685 subtract '1234567456788' '1234567456787.1' -> 0.9

+ddsub686 subtract '1234567456788' '1234567456787.9' -> 0.1

+ddsub687 subtract '1234567456788' '1234567456788.1' -> -0.1

+ddsub688 subtract '1234567456788' '1234567456788.5' -> -0.5

+ddsub689 subtract '1234567456788' '1234567456788.9' -> -0.9

+

+rounding: down

+ddsub690 subtract '1234567456789' '1234567456788.1' -> 0.9

+ddsub691 subtract '1234567456789' '1234567456788.9' -> 0.1

+ddsub692 subtract '1234567456789' '1234567456789.1' -> -0.1

+ddsub693 subtract '1234567456789' '1234567456789.5' -> -0.5

+ddsub694 subtract '1234567456789' '1234567456789.9' -> -0.9

+

+-- Specials

+ddsub780 subtract -Inf   Inf   -> -Infinity

+ddsub781 subtract -Inf   1000  -> -Infinity

+ddsub782 subtract -Inf   1     -> -Infinity

+ddsub783 subtract -Inf  -0     -> -Infinity

+ddsub784 subtract -Inf  -1     -> -Infinity

+ddsub785 subtract -Inf  -1000  -> -Infinity

+ddsub787 subtract -1000  Inf   -> -Infinity

+ddsub788 subtract -Inf   Inf   -> -Infinity

+ddsub789 subtract -1     Inf   -> -Infinity

+ddsub790 subtract  0     Inf   -> -Infinity

+ddsub791 subtract  1     Inf   -> -Infinity

+ddsub792 subtract  1000  Inf   -> -Infinity

+

+ddsub800 subtract  Inf   Inf   ->  NaN  Invalid_operation

+ddsub801 subtract  Inf   1000  ->  Infinity

+ddsub802 subtract  Inf   1     ->  Infinity

+ddsub803 subtract  Inf   0     ->  Infinity

+ddsub804 subtract  Inf  -0     ->  Infinity

+ddsub805 subtract  Inf  -1     ->  Infinity

+ddsub806 subtract  Inf  -1000  ->  Infinity

+ddsub807 subtract  Inf  -Inf   ->  Infinity

+ddsub808 subtract -1000 -Inf   ->  Infinity

+ddsub809 subtract -Inf  -Inf   ->  NaN  Invalid_operation

+ddsub810 subtract -1    -Inf   ->  Infinity

+ddsub811 subtract -0    -Inf   ->  Infinity

+ddsub812 subtract  0    -Inf   ->  Infinity

+ddsub813 subtract  1    -Inf   ->  Infinity

+ddsub814 subtract  1000 -Inf   ->  Infinity

+ddsub815 subtract  Inf  -Inf   ->  Infinity

+

+ddsub821 subtract  NaN   Inf   ->  NaN

+ddsub822 subtract -NaN   1000  -> -NaN

+ddsub823 subtract  NaN   1     ->  NaN

+ddsub824 subtract  NaN   0     ->  NaN

+ddsub825 subtract  NaN  -0     ->  NaN

+ddsub826 subtract  NaN  -1     ->  NaN

+ddsub827 subtract  NaN  -1000  ->  NaN

+ddsub828 subtract  NaN  -Inf   ->  NaN

+ddsub829 subtract -NaN   NaN   -> -NaN

+ddsub830 subtract -Inf   NaN   ->  NaN

+ddsub831 subtract -1000  NaN   ->  NaN

+ddsub832 subtract -1     NaN   ->  NaN

+ddsub833 subtract -0     NaN   ->  NaN

+ddsub834 subtract  0     NaN   ->  NaN

+ddsub835 subtract  1     NaN   ->  NaN

+ddsub836 subtract  1000 -NaN   -> -NaN

+ddsub837 subtract  Inf   NaN   ->  NaN

+

+ddsub841 subtract  sNaN  Inf   ->  NaN  Invalid_operation

+ddsub842 subtract -sNaN  1000  -> -NaN  Invalid_operation

+ddsub843 subtract  sNaN  1     ->  NaN  Invalid_operation

+ddsub844 subtract  sNaN  0     ->  NaN  Invalid_operation

+ddsub845 subtract  sNaN -0     ->  NaN  Invalid_operation

+ddsub846 subtract  sNaN -1     ->  NaN  Invalid_operation

+ddsub847 subtract  sNaN -1000  ->  NaN  Invalid_operation

+ddsub848 subtract  sNaN  NaN   ->  NaN  Invalid_operation

+ddsub849 subtract  sNaN sNaN   ->  NaN  Invalid_operation

+ddsub850 subtract  NaN  sNaN   ->  NaN  Invalid_operation

+ddsub851 subtract -Inf -sNaN   -> -NaN  Invalid_operation

+ddsub852 subtract -1000 sNaN   ->  NaN  Invalid_operation

+ddsub853 subtract -1    sNaN   ->  NaN  Invalid_operation

+ddsub854 subtract -0    sNaN   ->  NaN  Invalid_operation

+ddsub855 subtract  0    sNaN   ->  NaN  Invalid_operation

+ddsub856 subtract  1    sNaN   ->  NaN  Invalid_operation

+ddsub857 subtract  1000 sNaN   ->  NaN  Invalid_operation

+ddsub858 subtract  Inf  sNaN   ->  NaN  Invalid_operation

+ddsub859 subtract  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddsub861 subtract  NaN01   -Inf     ->  NaN1

+ddsub862 subtract -NaN02   -1000    -> -NaN2

+ddsub863 subtract  NaN03    1000    ->  NaN3

+ddsub864 subtract  NaN04    Inf     ->  NaN4

+ddsub865 subtract  NaN05    NaN61   ->  NaN5

+ddsub866 subtract -Inf     -NaN71   -> -NaN71

+ddsub867 subtract -1000     NaN81   ->  NaN81

+ddsub868 subtract  1000     NaN91   ->  NaN91

+ddsub869 subtract  Inf      NaN101  ->  NaN101

+ddsub871 subtract  sNaN011  -Inf    ->  NaN11  Invalid_operation

+ddsub872 subtract  sNaN012  -1000   ->  NaN12  Invalid_operation

+ddsub873 subtract -sNaN013   1000   -> -NaN13  Invalid_operation

+ddsub874 subtract  sNaN014   NaN171 ->  NaN14  Invalid_operation

+ddsub875 subtract  sNaN015  sNaN181 ->  NaN15  Invalid_operation

+ddsub876 subtract  NaN016   sNaN191 ->  NaN191 Invalid_operation

+ddsub877 subtract -Inf      sNaN201 ->  NaN201 Invalid_operation

+ddsub878 subtract -1000     sNaN211 ->  NaN211 Invalid_operation

+ddsub879 subtract  1000    -sNaN221 -> -NaN221 Invalid_operation

+ddsub880 subtract  Inf      sNaN231 ->  NaN231 Invalid_operation

+ddsub881 subtract  NaN025   sNaN241 ->  NaN241 Invalid_operation

+

+-- edge case spills

+ddsub901 subtract  2.E-3  1.002  -> -1.000

+ddsub902 subtract  2.0E-3  1.002  -> -1.0000

+ddsub903 subtract  2.00E-3  1.0020  -> -1.00000

+ddsub904 subtract  2.000E-3  1.00200  -> -1.000000

+ddsub905 subtract  2.0000E-3  1.002000  -> -1.0000000

+ddsub906 subtract  2.00000E-3  1.0020000  -> -1.00000000

+ddsub907 subtract  2.000000E-3  1.00200000  -> -1.000000000

+ddsub908 subtract  2.0000000E-3  1.002000000  -> -1.0000000000

+

+-- subnormals and overflows covered under Add

+

+-- Null tests

+ddsub9990 subtract 10  # -> NaN Invalid_operation

+ddsub9991 subtract  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ddToIntegral.decTest b/Lib/test/decimaltestdata/ddToIntegral.decTest
new file mode 100644
index 0000000..438d347
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddToIntegral.decTest
@@ -0,0 +1,257 @@
+------------------------------------------------------------------------

+-- ddToIntegral.decTest -- round Double to integral value             --

+-- Copyright (c) IBM Corporation, 2001, 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.57

+

+-- This set of tests tests the extended specification 'round-to-integral

+-- value-exact' operations (from IEEE 854, later modified in 754r).

+-- All non-zero results are defined as being those from either copy or

+-- quantize, so those are assumed to have been tested extensively

+-- elsewhere; the tests here are for integrity, rounding mode, etc.

+-- Also, it is assumed the test harness will use these tests for both

+-- ToIntegralExact (which does set Inexact) and the fixed-name

+-- functions (which do not set Inexact).

+

+-- Note that decNumber implements an earlier definition of toIntegral

+-- which never sets Inexact; the decTest operator for that is called

+-- 'tointegral' instead of 'tointegralx'.

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+ddintx001 tointegralx      0     ->  0

+ddintx002 tointegralx      0.0   ->  0

+ddintx003 tointegralx      0.1   ->  0  Inexact Rounded

+ddintx004 tointegralx      0.2   ->  0  Inexact Rounded

+ddintx005 tointegralx      0.3   ->  0  Inexact Rounded

+ddintx006 tointegralx      0.4   ->  0  Inexact Rounded

+ddintx007 tointegralx      0.5   ->  0  Inexact Rounded

+ddintx008 tointegralx      0.6   ->  1  Inexact Rounded

+ddintx009 tointegralx      0.7   ->  1  Inexact Rounded

+ddintx010 tointegralx      0.8   ->  1  Inexact Rounded

+ddintx011 tointegralx      0.9   ->  1  Inexact Rounded

+ddintx012 tointegralx      1     ->  1

+ddintx013 tointegralx      1.0   ->  1  Rounded

+ddintx014 tointegralx      1.1   ->  1  Inexact Rounded

+ddintx015 tointegralx      1.2   ->  1  Inexact Rounded

+ddintx016 tointegralx      1.3   ->  1  Inexact Rounded

+ddintx017 tointegralx      1.4   ->  1  Inexact Rounded

+ddintx018 tointegralx      1.5   ->  2  Inexact Rounded

+ddintx019 tointegralx      1.6   ->  2  Inexact Rounded

+ddintx020 tointegralx      1.7   ->  2  Inexact Rounded

+ddintx021 tointegralx      1.8   ->  2  Inexact Rounded

+ddintx022 tointegralx      1.9   ->  2  Inexact Rounded

+-- negatives

+ddintx031 tointegralx     -0     -> -0

+ddintx032 tointegralx     -0.0   -> -0

+ddintx033 tointegralx     -0.1   -> -0  Inexact Rounded

+ddintx034 tointegralx     -0.2   -> -0  Inexact Rounded

+ddintx035 tointegralx     -0.3   -> -0  Inexact Rounded

+ddintx036 tointegralx     -0.4   -> -0  Inexact Rounded

+ddintx037 tointegralx     -0.5   -> -0  Inexact Rounded

+ddintx038 tointegralx     -0.6   -> -1  Inexact Rounded

+ddintx039 tointegralx     -0.7   -> -1  Inexact Rounded

+ddintx040 tointegralx     -0.8   -> -1  Inexact Rounded

+ddintx041 tointegralx     -0.9   -> -1  Inexact Rounded

+ddintx042 tointegralx     -1     -> -1

+ddintx043 tointegralx     -1.0   -> -1  Rounded

+ddintx044 tointegralx     -1.1   -> -1  Inexact Rounded

+ddintx045 tointegralx     -1.2   -> -1  Inexact Rounded

+ddintx046 tointegralx     -1.3   -> -1  Inexact Rounded

+ddintx047 tointegralx     -1.4   -> -1  Inexact Rounded

+ddintx048 tointegralx     -1.5   -> -2  Inexact Rounded

+ddintx049 tointegralx     -1.6   -> -2  Inexact Rounded

+ddintx050 tointegralx     -1.7   -> -2  Inexact Rounded

+ddintx051 tointegralx     -1.8   -> -2  Inexact Rounded

+ddintx052 tointegralx     -1.9   -> -2  Inexact Rounded

+-- next two would be NaN using quantize(x, 0)

+ddintx053 tointegralx    10E+60  -> 1.0E+61

+ddintx054 tointegralx   -10E+60  -> -1.0E+61

+

+-- numbers around precision

+ddintx060 tointegralx '56267E-17'   -> '0'      Inexact Rounded

+ddintx061 tointegralx '56267E-5'    -> '1'      Inexact Rounded

+ddintx062 tointegralx '56267E-2'    -> '563'    Inexact Rounded

+ddintx063 tointegralx '56267E-1'    -> '5627'   Inexact Rounded

+ddintx065 tointegralx '56267E-0'    -> '56267'

+ddintx066 tointegralx '56267E+0'    -> '56267'

+ddintx067 tointegralx '56267E+1'    -> '5.6267E+5'

+ddintx068 tointegralx '56267E+9'    -> '5.6267E+13'

+ddintx069 tointegralx '56267E+10'   -> '5.6267E+14'

+ddintx070 tointegralx '56267E+11'   -> '5.6267E+15'

+ddintx071 tointegralx '56267E+12'   -> '5.6267E+16'

+ddintx072 tointegralx '56267E+13'   -> '5.6267E+17'

+ddintx073 tointegralx '1.23E+96'    -> '1.23E+96'

+ddintx074 tointegralx '1.23E+384'   -> #47fd300000000000  Clamped

+

+ddintx080 tointegralx '-56267E-10'  -> '-0'      Inexact Rounded

+ddintx081 tointegralx '-56267E-5'   -> '-1'      Inexact Rounded

+ddintx082 tointegralx '-56267E-2'   -> '-563'    Inexact Rounded

+ddintx083 tointegralx '-56267E-1'   -> '-5627'   Inexact Rounded

+ddintx085 tointegralx '-56267E-0'   -> '-56267'

+ddintx086 tointegralx '-56267E+0'   -> '-56267'

+ddintx087 tointegralx '-56267E+1'   -> '-5.6267E+5'

+ddintx088 tointegralx '-56267E+9'   -> '-5.6267E+13'

+ddintx089 tointegralx '-56267E+10'  -> '-5.6267E+14'

+ddintx090 tointegralx '-56267E+11'  -> '-5.6267E+15'

+ddintx091 tointegralx '-56267E+12'  -> '-5.6267E+16'

+ddintx092 tointegralx '-56267E+13'  -> '-5.6267E+17'

+ddintx093 tointegralx '-1.23E+96'   -> '-1.23E+96'

+ddintx094 tointegralx '-1.23E+384'  -> #c7fd300000000000  Clamped

+

+-- subnormal inputs

+ddintx100 tointegralx        1E-299 -> 0  Inexact Rounded

+ddintx101 tointegralx      0.1E-299 -> 0  Inexact Rounded

+ddintx102 tointegralx     0.01E-299 -> 0  Inexact Rounded

+ddintx103 tointegralx        0E-299 -> 0

+

+-- specials and zeros

+ddintx120 tointegralx 'Inf'       ->  Infinity

+ddintx121 tointegralx '-Inf'      -> -Infinity

+ddintx122 tointegralx   NaN       ->  NaN

+ddintx123 tointegralx  sNaN       ->  NaN  Invalid_operation

+ddintx124 tointegralx     0       ->  0

+ddintx125 tointegralx    -0       -> -0

+ddintx126 tointegralx     0.000   ->  0

+ddintx127 tointegralx     0.00    ->  0

+ddintx128 tointegralx     0.0     ->  0

+ddintx129 tointegralx     0       ->  0

+ddintx130 tointegralx     0E-3    ->  0

+ddintx131 tointegralx     0E-2    ->  0

+ddintx132 tointegralx     0E-1    ->  0

+ddintx133 tointegralx     0E-0    ->  0

+ddintx134 tointegralx     0E+1    ->  0E+1

+ddintx135 tointegralx     0E+2    ->  0E+2

+ddintx136 tointegralx     0E+3    ->  0E+3

+ddintx137 tointegralx     0E+4    ->  0E+4

+ddintx138 tointegralx     0E+5    ->  0E+5

+ddintx139 tointegralx    -0.000   -> -0

+ddintx140 tointegralx    -0.00    -> -0

+ddintx141 tointegralx    -0.0     -> -0

+ddintx142 tointegralx    -0       -> -0

+ddintx143 tointegralx    -0E-3    -> -0

+ddintx144 tointegralx    -0E-2    -> -0

+ddintx145 tointegralx    -0E-1    -> -0

+ddintx146 tointegralx    -0E-0    -> -0

+ddintx147 tointegralx    -0E+1    -> -0E+1

+ddintx148 tointegralx    -0E+2    -> -0E+2

+ddintx149 tointegralx    -0E+3    -> -0E+3

+ddintx150 tointegralx    -0E+4    -> -0E+4

+ddintx151 tointegralx    -0E+5    -> -0E+5

+-- propagating NaNs

+ddintx152 tointegralx   NaN808    ->  NaN808

+ddintx153 tointegralx  sNaN080    ->  NaN80  Invalid_operation

+ddintx154 tointegralx  -NaN808    -> -NaN808

+ddintx155 tointegralx -sNaN080    -> -NaN80  Invalid_operation

+ddintx156 tointegralx  -NaN       -> -NaN

+ddintx157 tointegralx -sNaN       -> -NaN    Invalid_operation

+

+-- examples

+rounding:    half_up

+ddintx200 tointegralx     2.1    -> 2            Inexact Rounded

+ddintx201 tointegralx   100      -> 100

+ddintx202 tointegralx   100.0    -> 100          Rounded

+ddintx203 tointegralx   101.5    -> 102          Inexact Rounded

+ddintx204 tointegralx  -101.5    -> -102         Inexact Rounded

+ddintx205 tointegralx   10E+5    -> 1.0E+6

+ddintx206 tointegralx  7.89E+77  -> 7.89E+77

+ddintx207 tointegralx   -Inf     -> -Infinity

+

+

+-- all rounding modes

+rounding:    half_even

+ddintx210 tointegralx     55.5   ->  56  Inexact Rounded

+ddintx211 tointegralx     56.5   ->  56  Inexact Rounded

+ddintx212 tointegralx     57.5   ->  58  Inexact Rounded

+ddintx213 tointegralx    -55.5   -> -56  Inexact Rounded

+ddintx214 tointegralx    -56.5   -> -56  Inexact Rounded

+ddintx215 tointegralx    -57.5   -> -58  Inexact Rounded

+

+rounding:    half_up

+

+ddintx220 tointegralx     55.5   ->  56  Inexact Rounded

+ddintx221 tointegralx     56.5   ->  57  Inexact Rounded

+ddintx222 tointegralx     57.5   ->  58  Inexact Rounded

+ddintx223 tointegralx    -55.5   -> -56  Inexact Rounded

+ddintx224 tointegralx    -56.5   -> -57  Inexact Rounded

+ddintx225 tointegralx    -57.5   -> -58  Inexact Rounded

+

+rounding:    half_down

+

+ddintx230 tointegralx     55.5   ->  55  Inexact Rounded

+ddintx231 tointegralx     56.5   ->  56  Inexact Rounded

+ddintx232 tointegralx     57.5   ->  57  Inexact Rounded

+ddintx233 tointegralx    -55.5   -> -55  Inexact Rounded

+ddintx234 tointegralx    -56.5   -> -56  Inexact Rounded

+ddintx235 tointegralx    -57.5   -> -57  Inexact Rounded

+

+rounding:    up

+

+ddintx240 tointegralx     55.3   ->  56  Inexact Rounded

+ddintx241 tointegralx     56.3   ->  57  Inexact Rounded

+ddintx242 tointegralx     57.3   ->  58  Inexact Rounded

+ddintx243 tointegralx    -55.3   -> -56  Inexact Rounded

+ddintx244 tointegralx    -56.3   -> -57  Inexact Rounded

+ddintx245 tointegralx    -57.3   -> -58  Inexact Rounded

+

+rounding:    down

+

+ddintx250 tointegralx     55.7   ->  55  Inexact Rounded

+ddintx251 tointegralx     56.7   ->  56  Inexact Rounded

+ddintx252 tointegralx     57.7   ->  57  Inexact Rounded

+ddintx253 tointegralx    -55.7   -> -55  Inexact Rounded

+ddintx254 tointegralx    -56.7   -> -56  Inexact Rounded

+ddintx255 tointegralx    -57.7   -> -57  Inexact Rounded

+

+rounding:    ceiling

+

+ddintx260 tointegralx     55.3   ->  56  Inexact Rounded

+ddintx261 tointegralx     56.3   ->  57  Inexact Rounded

+ddintx262 tointegralx     57.3   ->  58  Inexact Rounded

+ddintx263 tointegralx    -55.3   -> -55  Inexact Rounded

+ddintx264 tointegralx    -56.3   -> -56  Inexact Rounded

+ddintx265 tointegralx    -57.3   -> -57  Inexact Rounded

+

+rounding:    floor

+

+ddintx270 tointegralx     55.7   ->  55  Inexact Rounded

+ddintx271 tointegralx     56.7   ->  56  Inexact Rounded

+ddintx272 tointegralx     57.7   ->  57  Inexact Rounded

+ddintx273 tointegralx    -55.7   -> -56  Inexact Rounded

+ddintx274 tointegralx    -56.7   -> -57  Inexact Rounded

+ddintx275 tointegralx    -57.7   -> -58  Inexact Rounded

+

+-- Int and uInt32 edge values for testing conversions

+ddintx300 tointegralx -2147483646  -> -2147483646

+ddintx301 tointegralx -2147483647  -> -2147483647

+ddintx302 tointegralx -2147483648  -> -2147483648

+ddintx303 tointegralx -2147483649  -> -2147483649

+ddintx304 tointegralx  2147483646  ->  2147483646

+ddintx305 tointegralx  2147483647  ->  2147483647

+ddintx306 tointegralx  2147483648  ->  2147483648

+ddintx307 tointegralx  2147483649  ->  2147483649

+ddintx308 tointegralx  4294967294  ->  4294967294

+ddintx309 tointegralx  4294967295  ->  4294967295

+ddintx310 tointegralx  4294967296  ->  4294967296

+ddintx311 tointegralx  4294967297  ->  4294967297

+

diff --git a/Lib/test/decimaltestdata/ddXor.decTest b/Lib/test/decimaltestdata/ddXor.decTest
new file mode 100644
index 0000000..78e9750
--- /dev/null
+++ b/Lib/test/decimaltestdata/ddXor.decTest
@@ -0,0 +1,337 @@
+------------------------------------------------------------------------

+-- ddXor.decTest -- digitwise logical XOR for decDoubles              --

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

+

+precision:   16

+maxExponent: 384

+minExponent: -383

+extended:    1

+clamp:       1

+rounding:    half_even

+

+-- Sanity check (truth table)

+ddxor001 xor             0    0 ->    0

+ddxor002 xor             0    1 ->    1

+ddxor003 xor             1    0 ->    1

+ddxor004 xor             1    1 ->    0

+ddxor005 xor          1100 1010 ->  110

+-- and at msd and msd-1

+ddxor006 xor 0000000000000000 0000000000000000 ->           0

+ddxor007 xor 0000000000000000 1000000000000000 ->   1000000000000000

+ddxor008 xor 1000000000000000 0000000000000000 ->   1000000000000000

+ddxor009 xor 1000000000000000 1000000000000000 ->           0

+ddxor010 xor 0000000000000000 0000000000000000 ->           0

+ddxor011 xor 0000000000000000 0100000000000000 ->    100000000000000

+ddxor012 xor 0100000000000000 0000000000000000 ->    100000000000000

+ddxor013 xor 0100000000000000 0100000000000000 ->           0

+

+-- Various lengths

+--          1234567890123456     1234567890123456 1234567890123456

+ddxor021 xor 1111111110000000     1111111110000000  ->  0

+ddxor022 xor  111111110000000      111111110000000  ->  0

+ddxor023 xor   11111110000000       11111110000000  ->  0

+ddxor024 xor    1111110000000        1111110000000  ->  0

+ddxor025 xor     111110000000         111110000000  ->  0

+ddxor026 xor      11110000000          11110000000  ->  0

+ddxor027 xor       1110000000           1110000000  ->  0

+ddxor028 xor        110000000            110000000  ->  0

+ddxor029 xor         10000000             10000000  ->  0

+ddxor030 xor          1000000              1000000  ->  0

+ddxor031 xor           100000               100000  ->  0

+ddxor032 xor            10000                10000  ->  0

+ddxor033 xor             1000                 1000  ->  0

+ddxor034 xor              100                  100  ->  0

+ddxor035 xor               10                   10  ->  0

+ddxor036 xor                1                    1  ->  0

+

+ddxor040 xor 111111111  111111111111  ->  111000000000

+ddxor041 xor  11111111  111111111111  ->  111100000000

+ddxor042 xor  11111111     111111111  ->  100000000

+ddxor043 xor   1111111     100000010  ->  101111101

+ddxor044 xor    111111     100000100  ->  100111011

+ddxor045 xor     11111     100001000  ->  100010111

+ddxor046 xor      1111     100010000  ->  100011111

+ddxor047 xor       111     100100000  ->  100100111

+ddxor048 xor        11     101000000  ->  101000011

+ddxor049 xor         1     110000000  ->  110000001

+

+ddxor050 xor 1111111111  1  ->  1111111110

+ddxor051 xor  111111111  1  ->  111111110

+ddxor052 xor   11111111  1  ->  11111110

+ddxor053 xor    1111111  1  ->  1111110

+ddxor054 xor     111111  1  ->  111110

+ddxor055 xor      11111  1  ->  11110

+ddxor056 xor       1111  1  ->  1110

+ddxor057 xor        111  1  ->  110

+ddxor058 xor         11  1  ->  10

+ddxor059 xor          1  1  ->  0

+

+ddxor060 xor 1111111111  0  ->  1111111111

+ddxor061 xor  111111111  0  ->  111111111

+ddxor062 xor   11111111  0  ->  11111111

+ddxor063 xor    1111111  0  ->  1111111

+ddxor064 xor     111111  0  ->  111111

+ddxor065 xor      11111  0  ->  11111

+ddxor066 xor       1111  0  ->  1111

+ddxor067 xor        111  0  ->  111

+ddxor068 xor         11  0  ->  11

+ddxor069 xor          1  0  ->  1

+

+ddxor070 xor 1  1111111111  ->  1111111110

+ddxor071 xor 1   111111111  ->  111111110

+ddxor072 xor 1    11111111  ->  11111110

+ddxor073 xor 1     1111111  ->  1111110

+ddxor074 xor 1      111111  ->  111110

+ddxor075 xor 1       11111  ->  11110

+ddxor076 xor 1        1111  ->  1110

+ddxor077 xor 1         111  ->  110

+ddxor078 xor 1          11  ->  10

+ddxor079 xor 1           1  ->  0

+

+ddxor080 xor 0  1111111111  ->  1111111111

+ddxor081 xor 0   111111111  ->  111111111

+ddxor082 xor 0    11111111  ->  11111111

+ddxor083 xor 0     1111111  ->  1111111

+ddxor084 xor 0      111111  ->  111111

+ddxor085 xor 0       11111  ->  11111

+ddxor086 xor 0        1111  ->  1111

+ddxor087 xor 0         111  ->  111

+ddxor088 xor 0          11  ->  11

+ddxor089 xor 0           1  ->  1

+

+ddxor090 xor 011111111  111101111  ->  100010000

+ddxor091 xor 101111111  111101111  ->   10010000

+ddxor092 xor 110111111  111101111  ->    1010000

+ddxor093 xor 111011111  111101111  ->     110000

+ddxor094 xor 111101111  111101111  ->          0

+ddxor095 xor 111110111  111101111  ->      11000

+ddxor096 xor 111111011  111101111  ->      10100

+ddxor097 xor 111111101  111101111  ->      10010

+ddxor098 xor 111111110  111101111  ->      10001

+

+ddxor100 xor 111101111  011111111  ->  100010000

+ddxor101 xor 111101111  101111111  ->   10010000

+ddxor102 xor 111101111  110111111  ->    1010000

+ddxor103 xor 111101111  111011111  ->     110000

+ddxor104 xor 111101111  111101111  ->          0

+ddxor105 xor 111101111  111110111  ->      11000

+ddxor106 xor 111101111  111111011  ->      10100

+ddxor107 xor 111101111  111111101  ->      10010

+ddxor108 xor 111101111  111111110  ->      10001

+

+-- non-0/1 should not be accepted, nor should signs

+ddxor220 xor 111111112  111111111  ->  NaN Invalid_operation

+ddxor221 xor 333333333  333333333  ->  NaN Invalid_operation

+ddxor222 xor 555555555  555555555  ->  NaN Invalid_operation

+ddxor223 xor 777777777  777777777  ->  NaN Invalid_operation

+ddxor224 xor 999999999  999999999  ->  NaN Invalid_operation

+ddxor225 xor 222222222  999999999  ->  NaN Invalid_operation

+ddxor226 xor 444444444  999999999  ->  NaN Invalid_operation

+ddxor227 xor 666666666  999999999  ->  NaN Invalid_operation

+ddxor228 xor 888888888  999999999  ->  NaN Invalid_operation

+ddxor229 xor 999999999  222222222  ->  NaN Invalid_operation

+ddxor230 xor 999999999  444444444  ->  NaN Invalid_operation

+ddxor231 xor 999999999  666666666  ->  NaN Invalid_operation

+ddxor232 xor 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+ddxor240 xor  567468689 -934981942 ->  NaN Invalid_operation

+ddxor241 xor  567367689  934981942 ->  NaN Invalid_operation

+ddxor242 xor -631917772 -706014634 ->  NaN Invalid_operation

+ddxor243 xor -756253257  138579234 ->  NaN Invalid_operation

+ddxor244 xor  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+ddxor250 xor  2000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddxor251 xor  7000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddxor252 xor  8000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddxor253 xor  9000000000000000 1000000000000000 ->  NaN Invalid_operation

+ddxor254 xor  2000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddxor255 xor  7000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddxor256 xor  8000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddxor257 xor  9000000000000000 0000000000000000 ->  NaN Invalid_operation

+ddxor258 xor  1000000000000000 2000000000000000 ->  NaN Invalid_operation

+ddxor259 xor  1000000000000000 7000000000000000 ->  NaN Invalid_operation

+ddxor260 xor  1000000000000000 8000000000000000 ->  NaN Invalid_operation

+ddxor261 xor  1000000000000000 9000000000000000 ->  NaN Invalid_operation

+ddxor262 xor  0000000000000000 2000000000000000 ->  NaN Invalid_operation

+ddxor263 xor  0000000000000000 7000000000000000 ->  NaN Invalid_operation

+ddxor264 xor  0000000000000000 8000000000000000 ->  NaN Invalid_operation

+ddxor265 xor  0000000000000000 9000000000000000 ->  NaN Invalid_operation

+-- test MSD-1

+ddxor270 xor  0200001000000000 1000100000000010 ->  NaN Invalid_operation

+ddxor271 xor  0700000100000000 1000010000000100 ->  NaN Invalid_operation

+ddxor272 xor  0800000010000000 1000001000001000 ->  NaN Invalid_operation

+ddxor273 xor  0900000001000000 1000000100010000 ->  NaN Invalid_operation

+ddxor274 xor  1000000000100000 0200000010100000 ->  NaN Invalid_operation

+ddxor275 xor  1000000000010000 0700000001000000 ->  NaN Invalid_operation

+ddxor276 xor  1000000000001000 0800000010100000 ->  NaN Invalid_operation

+ddxor277 xor  1000000000000100 0900000000010000 ->  NaN Invalid_operation

+-- test LSD

+ddxor280 xor  0010000000000002 1000000100000001 ->  NaN Invalid_operation

+ddxor281 xor  0001000000000007 1000001000000011 ->  NaN Invalid_operation

+ddxor282 xor  0000100000000008 1000010000000001 ->  NaN Invalid_operation

+ddxor283 xor  0000010000000009 1000100000000001 ->  NaN Invalid_operation

+ddxor284 xor  1000001000000000 0001000000000002 ->  NaN Invalid_operation

+ddxor285 xor  1000000100000000 0010000000000007 ->  NaN Invalid_operation

+ddxor286 xor  1000000010000000 0100000000000008 ->  NaN Invalid_operation

+ddxor287 xor  1000000001000000 1000000000000009 ->  NaN Invalid_operation

+-- test Middie

+ddxor288 xor  0010000020000000 1000001000000000 ->  NaN Invalid_operation

+ddxor289 xor  0001000070000001 1000000100000000 ->  NaN Invalid_operation

+ddxor290 xor  0000100080000010 1000000010000000 ->  NaN Invalid_operation

+ddxor291 xor  0000010090000100 1000000001000000 ->  NaN Invalid_operation

+ddxor292 xor  1000001000001000 0000000020100000 ->  NaN Invalid_operation

+ddxor293 xor  1000000100010000 0000000070010000 ->  NaN Invalid_operation

+ddxor294 xor  1000000010100000 0000000080001000 ->  NaN Invalid_operation

+ddxor295 xor  1000000001000000 0000000090000100 ->  NaN Invalid_operation

+-- signs

+ddxor296 xor -1000000001000000 -0000010000000100 ->  NaN Invalid_operation

+ddxor297 xor -1000000001000000  0000000010000100 ->  NaN Invalid_operation

+ddxor298 xor  1000000001000000 -0000001000000100 ->  NaN Invalid_operation

+ddxor299 xor  1000000001000000  0000000011000100 ->  1000000010000100

+

+-- Nmax, Nmin, Ntiny-like

+ddxor331 xor  2   9.99999999E+299     -> NaN Invalid_operation

+ddxor332 xor  3   1E-299              -> NaN Invalid_operation

+ddxor333 xor  4   1.00000000E-299     -> NaN Invalid_operation

+ddxor334 xor  5   1E-200              -> NaN Invalid_operation

+ddxor335 xor  6   -1E-200             -> NaN Invalid_operation

+ddxor336 xor  7   -1.00000000E-299    -> NaN Invalid_operation

+ddxor337 xor  8   -1E-299             -> NaN Invalid_operation

+ddxor338 xor  9   -9.99999999E+299    -> NaN Invalid_operation

+ddxor341 xor  9.99999999E+299     -18 -> NaN Invalid_operation

+ddxor342 xor  1E-299               01 -> NaN Invalid_operation

+ddxor343 xor  1.00000000E-299     -18 -> NaN Invalid_operation

+ddxor344 xor  1E-208               18 -> NaN Invalid_operation

+ddxor345 xor  -1E-207             -10 -> NaN Invalid_operation

+ddxor346 xor  -1.00000000E-299     18 -> NaN Invalid_operation

+ddxor347 xor  -1E-299              10 -> NaN Invalid_operation

+ddxor348 xor  -9.99999999E+299    -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+ddxor361 xor  1.0                  1  -> NaN Invalid_operation

+ddxor362 xor  1E+1                 1  -> NaN Invalid_operation

+ddxor363 xor  0.0                  1  -> NaN Invalid_operation

+ddxor364 xor  0E+1                 1  -> NaN Invalid_operation

+ddxor365 xor  9.9                  1  -> NaN Invalid_operation

+ddxor366 xor  9E+1                 1  -> NaN Invalid_operation

+ddxor371 xor  0 1.0                   -> NaN Invalid_operation

+ddxor372 xor  0 1E+1                  -> NaN Invalid_operation

+ddxor373 xor  0 0.0                   -> NaN Invalid_operation

+ddxor374 xor  0 0E+1                  -> NaN Invalid_operation

+ddxor375 xor  0 9.9                   -> NaN Invalid_operation

+ddxor376 xor  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+ddxor780 xor -Inf  -Inf   -> NaN Invalid_operation

+ddxor781 xor -Inf  -1000  -> NaN Invalid_operation

+ddxor782 xor -Inf  -1     -> NaN Invalid_operation

+ddxor783 xor -Inf  -0     -> NaN Invalid_operation

+ddxor784 xor -Inf   0     -> NaN Invalid_operation

+ddxor785 xor -Inf   1     -> NaN Invalid_operation

+ddxor786 xor -Inf   1000  -> NaN Invalid_operation

+ddxor787 xor -1000 -Inf   -> NaN Invalid_operation

+ddxor788 xor -Inf  -Inf   -> NaN Invalid_operation

+ddxor789 xor -1    -Inf   -> NaN Invalid_operation

+ddxor790 xor -0    -Inf   -> NaN Invalid_operation

+ddxor791 xor  0    -Inf   -> NaN Invalid_operation

+ddxor792 xor  1    -Inf   -> NaN Invalid_operation

+ddxor793 xor  1000 -Inf   -> NaN Invalid_operation

+ddxor794 xor  Inf  -Inf   -> NaN Invalid_operation

+

+ddxor800 xor  Inf  -Inf   -> NaN Invalid_operation

+ddxor801 xor  Inf  -1000  -> NaN Invalid_operation

+ddxor802 xor  Inf  -1     -> NaN Invalid_operation

+ddxor803 xor  Inf  -0     -> NaN Invalid_operation

+ddxor804 xor  Inf   0     -> NaN Invalid_operation

+ddxor805 xor  Inf   1     -> NaN Invalid_operation

+ddxor806 xor  Inf   1000  -> NaN Invalid_operation

+ddxor807 xor  Inf   Inf   -> NaN Invalid_operation

+ddxor808 xor -1000  Inf   -> NaN Invalid_operation

+ddxor809 xor -Inf   Inf   -> NaN Invalid_operation

+ddxor810 xor -1     Inf   -> NaN Invalid_operation

+ddxor811 xor -0     Inf   -> NaN Invalid_operation

+ddxor812 xor  0     Inf   -> NaN Invalid_operation

+ddxor813 xor  1     Inf   -> NaN Invalid_operation

+ddxor814 xor  1000  Inf   -> NaN Invalid_operation

+ddxor815 xor  Inf   Inf   -> NaN Invalid_operation

+

+ddxor821 xor  NaN -Inf    -> NaN Invalid_operation

+ddxor822 xor  NaN -1000   -> NaN Invalid_operation

+ddxor823 xor  NaN -1      -> NaN Invalid_operation

+ddxor824 xor  NaN -0      -> NaN Invalid_operation

+ddxor825 xor  NaN  0      -> NaN Invalid_operation

+ddxor826 xor  NaN  1      -> NaN Invalid_operation

+ddxor827 xor  NaN  1000   -> NaN Invalid_operation

+ddxor828 xor  NaN  Inf    -> NaN Invalid_operation

+ddxor829 xor  NaN  NaN    -> NaN Invalid_operation

+ddxor830 xor -Inf  NaN    -> NaN Invalid_operation

+ddxor831 xor -1000 NaN    -> NaN Invalid_operation

+ddxor832 xor -1    NaN    -> NaN Invalid_operation

+ddxor833 xor -0    NaN    -> NaN Invalid_operation

+ddxor834 xor  0    NaN    -> NaN Invalid_operation

+ddxor835 xor  1    NaN    -> NaN Invalid_operation

+ddxor836 xor  1000 NaN    -> NaN Invalid_operation

+ddxor837 xor  Inf  NaN    -> NaN Invalid_operation

+

+ddxor841 xor  sNaN -Inf   ->  NaN  Invalid_operation

+ddxor842 xor  sNaN -1000  ->  NaN  Invalid_operation

+ddxor843 xor  sNaN -1     ->  NaN  Invalid_operation

+ddxor844 xor  sNaN -0     ->  NaN  Invalid_operation

+ddxor845 xor  sNaN  0     ->  NaN  Invalid_operation

+ddxor846 xor  sNaN  1     ->  NaN  Invalid_operation

+ddxor847 xor  sNaN  1000  ->  NaN  Invalid_operation

+ddxor848 xor  sNaN  NaN   ->  NaN  Invalid_operation

+ddxor849 xor  sNaN sNaN   ->  NaN  Invalid_operation

+ddxor850 xor  NaN  sNaN   ->  NaN  Invalid_operation

+ddxor851 xor -Inf  sNaN   ->  NaN  Invalid_operation

+ddxor852 xor -1000 sNaN   ->  NaN  Invalid_operation

+ddxor853 xor -1    sNaN   ->  NaN  Invalid_operation

+ddxor854 xor -0    sNaN   ->  NaN  Invalid_operation

+ddxor855 xor  0    sNaN   ->  NaN  Invalid_operation

+ddxor856 xor  1    sNaN   ->  NaN  Invalid_operation

+ddxor857 xor  1000 sNaN   ->  NaN  Invalid_operation

+ddxor858 xor  Inf  sNaN   ->  NaN  Invalid_operation

+ddxor859 xor  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+ddxor861 xor  NaN1   -Inf    -> NaN Invalid_operation

+ddxor862 xor +NaN2   -1000   -> NaN Invalid_operation

+ddxor863 xor  NaN3    1000   -> NaN Invalid_operation

+ddxor864 xor  NaN4    Inf    -> NaN Invalid_operation

+ddxor865 xor  NaN5   +NaN6   -> NaN Invalid_operation

+ddxor866 xor -Inf     NaN7   -> NaN Invalid_operation

+ddxor867 xor -1000    NaN8   -> NaN Invalid_operation

+ddxor868 xor  1000    NaN9   -> NaN Invalid_operation

+ddxor869 xor  Inf    +NaN10  -> NaN Invalid_operation

+ddxor871 xor  sNaN11  -Inf   -> NaN Invalid_operation

+ddxor872 xor  sNaN12  -1000  -> NaN Invalid_operation

+ddxor873 xor  sNaN13   1000  -> NaN Invalid_operation

+ddxor874 xor  sNaN14   NaN17 -> NaN Invalid_operation

+ddxor875 xor  sNaN15  sNaN18 -> NaN Invalid_operation

+ddxor876 xor  NaN16   sNaN19 -> NaN Invalid_operation

+ddxor877 xor -Inf    +sNaN20 -> NaN Invalid_operation

+ddxor878 xor -1000    sNaN21 -> NaN Invalid_operation

+ddxor879 xor  1000    sNaN22 -> NaN Invalid_operation

+ddxor880 xor  Inf     sNaN23 -> NaN Invalid_operation

+ddxor881 xor +NaN25  +sNaN24 -> NaN Invalid_operation

+ddxor882 xor -NaN26    NaN28 -> NaN Invalid_operation

+ddxor883 xor -sNaN27  sNaN29 -> NaN Invalid_operation

+ddxor884 xor  1000    -NaN30 -> NaN Invalid_operation

+ddxor885 xor  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/decDouble.decTest b/Lib/test/decimaltestdata/decDouble.decTest
new file mode 100644
index 0000000..bdbf678
--- /dev/null
+++ b/Lib/test/decimaltestdata/decDouble.decTest
@@ -0,0 +1,65 @@
+------------------------------------------------------------------------
+-- decDouble.decTest -- run all decDouble decimal arithmetic tests    --
+-- 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.57
+
+-- decDouble tests
+dectest: ddAbs
+dectest: ddAdd
+dectest: ddAnd
+dectest: ddBase
+dectest: ddCanonical
+dectest: ddClass
+dectest: ddCompare
+dectest: ddCompareSig
+dectest: ddCompareTotal
+dectest: ddCompareTotalMag
+dectest: ddCopy
+dectest: ddCopyAbs
+dectest: ddCopyNegate
+dectest: ddCopySign
+dectest: ddDivide
+dectest: ddDivideInt
+dectest: ddEncode
+dectest: ddFMA
+dectest: ddInvert
+dectest: ddLogB
+dectest: ddMax
+dectest: ddMaxMag
+dectest: ddMin
+dectest: ddMinMag
+dectest: ddMinus
+dectest: ddMultiply
+dectest: ddNextMinus
+dectest: ddNextPlus
+dectest: ddNextToward
+dectest: ddOr
+dectest: ddPlus
+dectest: ddQuantize
+dectest: ddReduce
+dectest: ddRemainder
+dectest: ddRemainderNear
+dectest: ddRotate
+dectest: ddSameQuantum
+dectest: ddScaleB
+dectest: ddShift
+dectest: ddSubtract
+dectest: ddToIntegral
+dectest: ddXor
+
diff --git a/Lib/test/decimaltestdata/decQuad.decTest b/Lib/test/decimaltestdata/decQuad.decTest
new file mode 100644
index 0000000..e9ec663
--- /dev/null
+++ b/Lib/test/decimaltestdata/decQuad.decTest
@@ -0,0 +1,65 @@
+------------------------------------------------------------------------
+-- decQuad.decTest -- run all decQuad decimal arithmetic tests        --
+-- 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.57
+
+-- decQuad tests
+dectest: dqAbs
+dectest: dqAdd
+dectest: dqAnd
+dectest: dqBase
+dectest: dqCanonical
+dectest: dqClass
+dectest: dqCompare
+dectest: dqCompareSig
+dectest: dqCompareTotal
+dectest: dqCompareTotalMag
+dectest: dqCopy
+dectest: dqCopyAbs
+dectest: dqCopyNegate
+dectest: dqCopySign
+dectest: dqDivide
+dectest: dqDivideInt
+dectest: dqEncode
+dectest: dqFMA
+dectest: dqInvert
+dectest: dqLogB
+dectest: dqMax
+dectest: dqMaxMag
+dectest: dqMin
+dectest: dqMinMag
+dectest: dqMinus
+dectest: dqMultiply
+dectest: dqNextMinus
+dectest: dqNextPlus
+dectest: dqNextToward
+dectest: dqOr
+dectest: dqPlus
+dectest: dqQuantize
+dectest: dqReduce
+dectest: dqRemainder
+dectest: dqRemainderNear
+dectest: dqRotate
+dectest: dqSameQuantum
+dectest: dqScaleB
+dectest: dqShift
+dectest: dqSubtract
+dectest: dqToIntegral
+dectest: dqXor
+
diff --git a/Lib/test/decimaltestdata/decSingle.decTest b/Lib/test/decimaltestdata/decSingle.decTest
new file mode 100644
index 0000000..aae9b37
--- /dev/null
+++ b/Lib/test/decimaltestdata/decSingle.decTest
@@ -0,0 +1,25 @@
+------------------------------------------------------------------------
+-- decSingle.decTest -- run all decSingle decimal arithmetic tests    --
+-- 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.57
+
+-- decSingle tests
+dectest: dsBase
+dectest: dsEncode
+
diff --git a/Lib/test/decimaltestdata/decimal128.decTest b/Lib/test/decimaltestdata/decimal128.decTest
deleted file mode 100644
index 3cc9d06..0000000
--- a/Lib/test/decimaltestdata/decimal128.decTest
+++ /dev/null
@@ -1,441 +0,0 @@
-------------------------------------------------------------------------
--- decimal128.decTest -- decimal sixteen-byte format testcases        --
--- Copyright (c) IBM Corporation, 2000, 2003.  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.39
-
--- This set of tests is for the sixteen-byte concrete representation.
--- Its characteristics are:
---
---   1 bit  sign
---   5 bits combination field
---  12 bits exponent continuation
--- 110 bits coefficient continuation
---
--- Total exponent length 14 bits
--- Total coefficient length 114 bits (34 digits)
---
--- Elimit = 12287 (maximum encoded exponent)
--- Emax   =  6144 (largest exponent value)
--- Emin   = -6143 (smallest exponent value)
--- bias   =  6176 (subtracted from encoded exponent) = -Etiny
-
-extended:    1
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
-
--- General testcases
--- (mostly derived from the Strawman 4 document and examples)
-decg001 apply   #A20780000000000000000000000003D0 -> -7.50
-decg002 apply   -7.50  -> #A20780000000000000000000000003D0
-
--- Normality
-decf010 apply   1234567890123456789012345678901234   -> #2608134b9c1e28e56f3c127177823534
-decf011 apply   1234567890123456789012345678901234.0 -> #2608134b9c1e28e56f3c127177823534 Rounded
-decf012 apply   1234567890123456789012345678901234.1 -> #2608134b9c1e28e56f3c127177823534 Rounded Inexact
-decf013 apply  -1234567890123456789012345678901234   -> #a608134b9c1e28e56f3c127177823534
-decf014 apply  -1234567890123456789012345678901234.0 -> #a608134b9c1e28e56f3c127177823534 Rounded
-decf015 apply  -1234567890123456789012345678901234.1 -> #a608134b9c1e28e56f3c127177823534 Rounded Inexact
-
-
--- Nmax and similar
-decf022 apply   9.999999999999999999999999999999999E+6144  -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-decf023 apply   #77ffcff3fcff3fcff3fcff3fcff3fcff -> 9.999999999999999999999999999999999E+6144
-decf024 apply   1.234567890123456789012345678901234E+6144 -> #47ffd34b9c1e28e56f3c127177823534
-decf025 apply   #47ffd34b9c1e28e56f3c127177823534 -> 1.234567890123456789012345678901234E+6144
--- fold-downs (more below)
-decf030 apply   1.23E+6144    -> #47ffd300000000000000000000000000 Clamped
-decf031 apply   #47ffd300000000000000000000000000       -> 1.230000000000000000000000000000000E+6144
-decf032 apply   1E+6144       -> #47ffc000000000000000000000000000 Clamped
-decf033 apply   #47ffc000000000000000000000000000       -> 1.000000000000000000000000000000000E+6144
-
--- overflows
-maxExponent: 9999  -- set high so conversion causes the overflow
-minExponent: -9999
-decf040 apply   10E+6144                 -> #78000000000000000000000000000000 Overflow Rounded Inexact
-decf041 apply   1.000000000000000E+6145  -> #78000000000000000000000000000000 Overflow Rounded Inexact
-maxExponent: 6144
-minExponent: -6143
-
-decf051 apply   12345                   -> #220800000000000000000000000049c5
-decf052 apply   #220800000000000000000000000049c5       -> 12345
-decf053 apply   1234                    -> #22080000000000000000000000000534
-decf054 apply   #22080000000000000000000000000534       -> 1234
-decf055 apply   123                     -> #220800000000000000000000000000a3
-decf056 apply   #220800000000000000000000000000a3       -> 123
-decf057 apply   12                      -> #22080000000000000000000000000012
-decf058 apply   #22080000000000000000000000000012       -> 12
-decf059 apply   1                       -> #22080000000000000000000000000001
-decf060 apply   #22080000000000000000000000000001       -> 1
-decf061 apply   1.23                    -> #220780000000000000000000000000a3
-decf062 apply   #220780000000000000000000000000a3       -> 1.23
-decf063 apply   123.45                  -> #220780000000000000000000000049c5
-decf064 apply   #220780000000000000000000000049c5       -> 123.45
-
--- Nmin and below
-decf071 apply   1E-6143                                    -> #00084000000000000000000000000001
-decf072 apply   #00084000000000000000000000000001          -> 1E-6143
-decf073 apply   1.000000000000000000000000000000000E-6143  -> #04000000000000000000000000000000
-decf074 apply   #04000000000000000000000000000000          -> 1.000000000000000000000000000000000E-6143
-decf075 apply   1.000000000000000000000000000000001E-6143  -> #04000000000000000000000000000001
-decf076 apply   #04000000000000000000000000000001          -> 1.000000000000000000000000000000001E-6143
-
-decf077 apply   0.100000000000000000000000000000000E-6143  -> #00000800000000000000000000000000      Subnormal
-decf078 apply   #00000800000000000000000000000000          -> 1.00000000000000000000000000000000E-6144  Subnormal
-decf079 apply   0.000000000000000000000000000000010E-6143  -> #00000000000000000000000000000010      Subnormal
-decf080 apply   #00000000000000000000000000000010          -> 1.0E-6175              Subnormal
-decf081 apply   0.00000000000000000000000000000001E-6143   -> #00004000000000000000000000000001      Subnormal
-decf082 apply   #00004000000000000000000000000001          -> 1E-6175                Subnormal
-decf083 apply   0.000000000000000000000000000000001E-6143  -> #00000000000000000000000000000001      Subnormal
-decf084 apply   #00000000000000000000000000000001          -> 1E-6176                 Subnormal
-
--- underflows
-decf090 apply   1e-6176                  -> #00000000000000000000000000000001  Subnormal
-decf091 apply   1.9e-6176                -> #00000000000000000000000000000002  Subnormal Underflow Inexact Rounded
-decf092 apply   1.1e-6176                -> #00000000000000000000000000000001  Subnormal Underflow Inexact Rounded
-decf093 apply   1.00000000001e-6176      -> #00000000000000000000000000000001  Subnormal Underflow Inexact Rounded
-decf094 apply   1.00000000000001e-6176   -> #00000000000000000000000000000001  Subnormal Underflow Inexact Rounded
-decf095 apply   1.000000000000001e-6176  -> #00000000000000000000000000000001  Subnormal Underflow Inexact Rounded
-decf096 apply   0.1e-6176                -> #00000000000000000000000000000000  Subnormal Underflow Inexact Rounded
-decf097 apply   0.00000000001e-6176      -> #00000000000000000000000000000000  Subnormal Underflow Inexact Rounded
-decf098 apply   0.00000000000001e-6176   -> #00000000000000000000000000000000  Subnormal Underflow Inexact Rounded
-decf099 apply   0.000000000000001e-6176  -> #00000000000000000000000000000000  Subnormal Underflow Inexact Rounded
-decf100 apply   999999999999999999999999999999999e-6176 -> #00000ff3fcff3fcff3fcff3fcff3fcff  Subnormal
-
--- same again, negatives
--- Nmax and similar
-decf122 apply  -9.999999999999999999999999999999999E+6144  -> #f7ffcff3fcff3fcff3fcff3fcff3fcff
-decf123 apply   #f7ffcff3fcff3fcff3fcff3fcff3fcff -> -9.999999999999999999999999999999999E+6144
-decf124 apply  -1.234567890123456789012345678901234E+6144 -> #c7ffd34b9c1e28e56f3c127177823534
-decf125 apply   #c7ffd34b9c1e28e56f3c127177823534 -> -1.234567890123456789012345678901234E+6144
--- fold-downs (more below)
-decf130 apply  -1.23E+6144    -> #c7ffd300000000000000000000000000 Clamped
-decf131 apply   #c7ffd300000000000000000000000000       -> -1.230000000000000000000000000000000E+6144
-decf132 apply  -1E+6144       -> #c7ffc000000000000000000000000000 Clamped
-decf133 apply   #c7ffc000000000000000000000000000       -> -1.000000000000000000000000000000000E+6144
-
--- overflows
-maxExponent: 9999  -- set high so conversion causes the overflow
-minExponent: -9999
-decf140 apply  -10E+6144                 -> #f8000000000000000000000000000000 Overflow Rounded Inexact
-decf141 apply  -1.000000000000000E+6145  -> #f8000000000000000000000000000000 Overflow Rounded Inexact
-maxExponent: 6144
-minExponent: -6143
-
-decf151 apply  -12345                   -> #a20800000000000000000000000049c5
-decf152 apply   #a20800000000000000000000000049c5       -> -12345
-decf153 apply  -1234                    -> #a2080000000000000000000000000534
-decf154 apply   #a2080000000000000000000000000534       -> -1234
-decf155 apply  -123                     -> #a20800000000000000000000000000a3
-decf156 apply   #a20800000000000000000000000000a3       -> -123
-decf157 apply  -12                      -> #a2080000000000000000000000000012
-decf158 apply   #a2080000000000000000000000000012       -> -12
-decf159 apply  -1                       -> #a2080000000000000000000000000001
-decf160 apply   #a2080000000000000000000000000001       -> -1
-decf161 apply  -1.23                    -> #a20780000000000000000000000000a3
-decf162 apply   #a20780000000000000000000000000a3       -> -1.23
-decf163 apply  -123.45                  -> #a20780000000000000000000000049c5
-decf164 apply   #a20780000000000000000000000049c5       -> -123.45
-
--- Nmin and below
-decf171 apply  -1E-6143                                    -> #80084000000000000000000000000001
-decf172 apply   #80084000000000000000000000000001          -> -1E-6143
-decf173 apply  -1.000000000000000000000000000000000E-6143  -> #84000000000000000000000000000000
-decf174 apply   #84000000000000000000000000000000          -> -1.000000000000000000000000000000000E-6143
-decf175 apply  -1.000000000000000000000000000000001E-6143  -> #84000000000000000000000000000001
-decf176 apply   #84000000000000000000000000000001          -> -1.000000000000000000000000000000001E-6143
-
-decf177 apply  -0.100000000000000000000000000000000E-6143  -> #80000800000000000000000000000000      Subnormal
-decf178 apply   #80000800000000000000000000000000          -> -1.00000000000000000000000000000000E-6144  Subnormal
-decf179 apply  -0.000000000000000000000000000000010E-6143  -> #80000000000000000000000000000010      Subnormal
-decf180 apply   #80000000000000000000000000000010          -> -1.0E-6175              Subnormal
-decf181 apply  -0.00000000000000000000000000000001E-6143   -> #80004000000000000000000000000001      Subnormal
-decf182 apply   #80004000000000000000000000000001          -> -1E-6175                Subnormal
-decf183 apply  -0.000000000000000000000000000000001E-6143  -> #80000000000000000000000000000001      Subnormal
-decf184 apply   #80000000000000000000000000000001          -> -1E-6176                 Subnormal
-
--- underflows
-decf190 apply   -1e-6176                  -> #80000000000000000000000000000001  Subnormal
-decf191 apply   -1.9e-6176                -> #80000000000000000000000000000002  Subnormal Underflow Inexact Rounded
-decf192 apply   -1.1e-6176                -> #80000000000000000000000000000001  Subnormal Underflow Inexact Rounded
-decf193 apply   -1.00000000001e-6176      -> #80000000000000000000000000000001  Subnormal Underflow Inexact Rounded
-decf194 apply   -1.00000000000001e-6176   -> #80000000000000000000000000000001  Subnormal Underflow Inexact Rounded
-decf195 apply   -1.000000000000001e-6176  -> #80000000000000000000000000000001  Subnormal Underflow Inexact Rounded
-decf196 apply   -0.1e-6176                -> #80000000000000000000000000000000  Subnormal Underflow Inexact Rounded
-decf197 apply   -0.00000000001e-6176      -> #80000000000000000000000000000000  Subnormal Underflow Inexact Rounded
-decf198 apply   -0.00000000000001e-6176   -> #80000000000000000000000000000000  Subnormal Underflow Inexact Rounded
-decf199 apply   -0.000000000000001e-6176  -> #80000000000000000000000000000000  Subnormal Underflow Inexact Rounded
-decf200 apply   -999999999999999999999999999999999e-6176 -> #80000ff3fcff3fcff3fcff3fcff3fcff  Subnormal
-
--- zeros
-decf400 apply   0E-8000                 -> #00000000000000000000000000000000  Clamped
-decf401 apply   0E-6177                 -> #00000000000000000000000000000000  Clamped
-decf402 apply   0E-6176                 -> #00000000000000000000000000000000
-decf403 apply   #00000000000000000000000000000000       -> 0E-6176
-decf404 apply   0.000000000000000000000000000000000E-6143  -> #00000000000000000000000000000000
-decf405 apply   #00000000000000000000000000000000       -> 0E-6176
-decf406 apply   0E-2                    -> #22078000000000000000000000000000
-decf407 apply   #22078000000000000000000000000000       -> 0.00
-decf408 apply   0                       -> #22080000000000000000000000000000
-decf409 apply   #22080000000000000000000000000000       -> 0
-decf410 apply   0E+3                    -> #2208c000000000000000000000000000
-decf411 apply   #2208c000000000000000000000000000       -> 0E+3
-decf412 apply   0E+6111                 -> #43ffc000000000000000000000000000
-decf413 apply   #43ffc000000000000000000000000000       -> 0E+6111
--- clamped zeros...
-decf414 apply   0E+6112                 -> #43ffc000000000000000000000000000  Clamped
-decf415 apply   #43ffc000000000000000000000000000       -> 0E+6111
-decf416 apply   0E+6144                 -> #43ffc000000000000000000000000000  Clamped
-decf417 apply   #43ffc000000000000000000000000000       -> 0E+6111
-decf418 apply   0E+8000                 -> #43ffc000000000000000000000000000  Clamped
-decf419 apply   #43ffc000000000000000000000000000       -> 0E+6111
-
--- negative zeros
-decf420 apply  -0E-8000                 -> #80000000000000000000000000000000  Clamped
-decf421 apply  -0E-6177                 -> #80000000000000000000000000000000  Clamped
-decf422 apply  -0E-6176                 -> #80000000000000000000000000000000
-decf423 apply   #80000000000000000000000000000000       -> -0E-6176
-decf424 apply  -0.000000000000000000000000000000000E-6143  -> #80000000000000000000000000000000
-decf425 apply   #80000000000000000000000000000000       -> -0E-6176
-decf426 apply  -0E-2                    -> #a2078000000000000000000000000000
-decf427 apply   #a2078000000000000000000000000000       -> -0.00
-decf428 apply  -0                       -> #a2080000000000000000000000000000
-decf429 apply   #a2080000000000000000000000000000       -> -0
-decf430 apply  -0E+3                    -> #a208c000000000000000000000000000
-decf431 apply   #a208c000000000000000000000000000       -> -0E+3
-decf432 apply  -0E+6111                 -> #c3ffc000000000000000000000000000
-decf433 apply   #c3ffc000000000000000000000000000       -> -0E+6111
--- clamped zeros...
-decf434 apply  -0E+6112                 -> #c3ffc000000000000000000000000000  Clamped
-decf435 apply   #c3ffc000000000000000000000000000       -> -0E+6111
-decf436 apply  -0E+6144                 -> #c3ffc000000000000000000000000000  Clamped
-decf437 apply   #c3ffc000000000000000000000000000       -> -0E+6111
-decf438 apply  -0E+8000                 -> #c3ffc000000000000000000000000000  Clamped
-decf439 apply   #c3ffc000000000000000000000000000       -> -0E+6111
-
--- Specials
-decf500 apply   Infinity                          -> #78000000000000000000000000000000
-decf501 apply   #78787878787878787878787878787878 -> #78000000000000000000000000000000
-decf502 apply   #78000000000000000000000000000000 -> Infinity
-decf503 apply   #79797979797979797979797979797979 -> #78000000000000000000000000000000
-decf504 apply   #79000000000000000000000000000000 -> Infinity
-decf505 apply   #7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #78000000000000000000000000000000
-decf506 apply   #7a000000000000000000000000000000 -> Infinity
-decf507 apply   #7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #78000000000000000000000000000000
-decf508 apply   #7b000000000000000000000000000000 -> Infinity
-
-decf509 apply   NaN                               -> #7c000000000000000000000000000000
-decf510 apply   #7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #7c003c7c7c7c7c7c7c7c7c7c7c7c7c7c
-decf511 apply   #7c000000000000000000000000000000 -> NaN
-decf512 apply   #7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #7c003d7d7d7d7d7d7d7d7d7d7d7d7d7d
-decf513 apply   #7d000000000000000000000000000000 -> NaN
-decf514 apply   #7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #7e003e7e7c7e7e7e7e7c7e7e7e7e7c7e
-decf515 apply   #7e000000000000000000000000000000 -> sNaN
-decf516 apply   #7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #7e003f7f7c7f7f7f7f7c7f7f7f7f7c7f
-decf517 apply   #7f000000000000000000000000000000 -> sNaN
-decf518 apply   #7fffffffffffffffffffffffffffffff -> sNaN999999999999999999999999999999999
-decf519 apply   #7fffffffffffffffffffffffffffffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-
-decf520 apply   -Infinity                         -> #f8000000000000000000000000000000
-decf521 apply   #f8787878787878787878787878787878 -> #f8000000000000000000000000000000
-decf522 apply   #f8000000000000000000000000000000 -> -Infinity
-decf523 apply   #f9797979797979797979797979797979 -> #f8000000000000000000000000000000
-decf524 apply   #f9000000000000000000000000000000 -> -Infinity
-decf525 apply   #fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #f8000000000000000000000000000000
-decf526 apply   #fa000000000000000000000000000000 -> -Infinity
-decf527 apply   #fb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #f8000000000000000000000000000000
-decf528 apply   #fb000000000000000000000000000000 -> -Infinity
-
-decf529 apply   -NaN                              -> #fc000000000000000000000000000000
-decf530 apply   #fc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #fc003c7c7c7c7c7c7c7c7c7c7c7c7c7c
-decf531 apply   #fc000000000000000000000000000000 -> -NaN
-decf532 apply   #fd7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #fc003d7d7d7d7d7d7d7d7d7d7d7d7d7d
-decf533 apply   #fd000000000000000000000000000000 -> -NaN
-decf534 apply   #fe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #fe003e7e7c7e7e7e7e7c7e7e7e7e7c7e
-decf535 apply   #fe000000000000000000000000000000 -> -sNaN
-decf536 apply   #ff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #fe003f7f7c7f7f7f7f7c7f7f7f7f7c7f
-decf537 apply   #ff000000000000000000000000000000 -> -sNaN
-decf538 apply   #ffffffffffffffffffffffffffffffff -> -sNaN999999999999999999999999999999999
-decf539 apply   #ffffffffffffffffffffffffffffffff -> #fe000ff3fcff3fcff3fcff3fcff3fcff
-
-decf540 apply   NaN               -> #7c000000000000000000000000000000
-decf541 apply   NaN0              -> #7c000000000000000000000000000000
-decf542 apply   NaN1              -> #7c000000000000000000000000000001
-decf543 apply   NaN12             -> #7c000000000000000000000000000012
-decf544 apply   NaN79             -> #7c000000000000000000000000000079
-decf545 apply   NaN12345          -> #7c0000000000000000000000000049c5
-decf546 apply   NaN123456         -> #7c000000000000000000000000028e56
-decf547 apply   NaN799799         -> #7c0000000000000000000000000f7fdf
-decf548 apply   NaN799799799799799799799799799799799  -> #7c003dff7fdff7fdff7fdff7fdff7fdf
-decf549 apply   NaN999999999999999999999999999999999  -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-decf550 apply   NaN1234567890123456789012345678901234 -> #7c000000000000000000000000000000  -- too many digits
-
--- fold-down full sequence
-decf600 apply   1E+6145                 -> #78000000000000000000000000000000 Overflow Inexact Rounded
-decf601 apply   1E+6144                 -> #47ffc000000000000000000000000000 Clamped
-decf602 apply   #47ffc000000000000000000000000000       -> 1.000000000000000000000000000000000E+6144
-decf603 apply   1E+6143                 -> #43ffc800000000000000000000000000 Clamped
-decf604 apply   #43ffc800000000000000000000000000       -> 1.00000000000000000000000000000000E+6143
-decf605 apply   1E+6142                 -> #43ffc100000000000000000000000000 Clamped
-decf606 apply   #43ffc100000000000000000000000000       -> 1.0000000000000000000000000000000E+6142
-decf607 apply   1E+6141                 -> #43ffc010000000000000000000000000 Clamped
-decf608 apply   #43ffc010000000000000000000000000       -> 1.000000000000000000000000000000E+6141
-decf609 apply   1E+6140                 -> #43ffc002000000000000000000000000 Clamped
-decf610 apply   #43ffc002000000000000000000000000       -> 1.00000000000000000000000000000E+6140
-decf611 apply   1E+6139                 -> #43ffc000400000000000000000000000 Clamped
-decf612 apply   #43ffc000400000000000000000000000       -> 1.0000000000000000000000000000E+6139
-decf613 apply   1E+6138                 -> #43ffc000040000000000000000000000 Clamped
-decf614 apply   #43ffc000040000000000000000000000       -> 1.000000000000000000000000000E+6138
-decf615 apply   1E+6137                 -> #43ffc000008000000000000000000000 Clamped
-decf616 apply   #43ffc000008000000000000000000000       -> 1.00000000000000000000000000E+6137
-decf617 apply   1E+6136                 -> #43ffc000001000000000000000000000 Clamped
-decf618 apply   #43ffc000001000000000000000000000       -> 1.0000000000000000000000000E+6136
-decf619 apply   1E+6135                 -> #43ffc000000100000000000000000000 Clamped
-decf620 apply   #43ffc000000100000000000000000000       -> 1.000000000000000000000000E+6135
-decf621 apply   1E+6134                 -> #43ffc000000020000000000000000000 Clamped
-decf622 apply   #43ffc000000020000000000000000000       -> 1.00000000000000000000000E+6134
-decf623 apply   1E+6133                 -> #43ffc000000004000000000000000000 Clamped
-decf624 apply   #43ffc000000004000000000000000000       -> 1.0000000000000000000000E+6133
-decf625 apply   1E+6132                 -> #43ffc000000000400000000000000000 Clamped
-decf626 apply   #43ffc000000000400000000000000000       -> 1.000000000000000000000E+6132
-decf627 apply   1E+6131                 -> #43ffc000000000080000000000000000 Clamped
-decf628 apply   #43ffc000000000080000000000000000       -> 1.00000000000000000000E+6131
-decf629 apply   1E+6130                 -> #43ffc000000000010000000000000000 Clamped
-decf630 apply   #43ffc000000000010000000000000000       -> 1.0000000000000000000E+6130
-decf631 apply   1E+6129                 -> #43ffc000000000001000000000000000 Clamped
-decf632 apply   #43ffc000000000001000000000000000       -> 1.000000000000000000E+6129
-decf633 apply   1E+6128                 -> #43ffc000000000000200000000000000 Clamped
-decf634 apply   #43ffc000000000000200000000000000       -> 1.00000000000000000E+6128
-decf635 apply   1E+6127                 -> #43ffc000000000000040000000000000 Clamped
-decf636 apply   #43ffc000000000000040000000000000       -> 1.0000000000000000E+6127
-decf637 apply   1E+6126                 -> #43ffc000000000000004000000000000 Clamped
-decf638 apply   #43ffc000000000000004000000000000       -> 1.000000000000000E+6126
-decf639 apply   1E+6125                 -> #43ffc000000000000000800000000000 Clamped
-decf640 apply   #43ffc000000000000000800000000000       -> 1.00000000000000E+6125
-decf641 apply   1E+6124                 -> #43ffc000000000000000100000000000 Clamped
-decf642 apply   #43ffc000000000000000100000000000       -> 1.0000000000000E+6124
-decf643 apply   1E+6123                 -> #43ffc000000000000000010000000000 Clamped
-decf644 apply   #43ffc000000000000000010000000000       -> 1.000000000000E+6123
-decf645 apply   1E+6122                 -> #43ffc000000000000000002000000000 Clamped
-decf646 apply   #43ffc000000000000000002000000000       -> 1.00000000000E+6122
-decf647 apply   1E+6121                 -> #43ffc000000000000000000400000000 Clamped
-decf648 apply   #43ffc000000000000000000400000000       -> 1.0000000000E+6121
-decf649 apply   1E+6120                 -> #43ffc000000000000000000040000000 Clamped
-decf650 apply   #43ffc000000000000000000040000000       -> 1.000000000E+6120
-decf651 apply   1E+6119                 -> #43ffc000000000000000000008000000 Clamped
-decf652 apply   #43ffc000000000000000000008000000       -> 1.00000000E+6119
-decf653 apply   1E+6118                 -> #43ffc000000000000000000001000000 Clamped
-decf654 apply   #43ffc000000000000000000001000000       -> 1.0000000E+6118
-decf655 apply   1E+6117                 -> #43ffc000000000000000000000100000 Clamped
-decf656 apply   #43ffc000000000000000000000100000       -> 1.000000E+6117
-decf657 apply   1E+6116                 -> #43ffc000000000000000000000020000 Clamped
-decf658 apply   #43ffc000000000000000000000020000       -> 1.00000E+6116
-decf659 apply   1E+6115                 -> #43ffc000000000000000000000004000 Clamped
-decf660 apply   #43ffc000000000000000000000004000       -> 1.0000E+6115
-decf661 apply   1E+6114                 -> #43ffc000000000000000000000000400 Clamped
-decf662 apply   #43ffc000000000000000000000000400       -> 1.000E+6114
-decf663 apply   1E+6113                 -> #43ffc000000000000000000000000080 Clamped
-decf664 apply   #43ffc000000000000000000000000080       -> 1.00E+6113
-decf665 apply   1E+6112                 -> #43ffc000000000000000000000000010 Clamped
-decf666 apply   #43ffc000000000000000000000000010       -> 1.0E+6112
-decf667 apply   1E+6111                 -> #43ffc000000000000000000000000001
-decf668 apply   #43ffc000000000000000000000000001       -> 1E+6111
-decf669 apply   1E+6110                 -> #43ff8000000000000000000000000001
-decf670 apply   #43ff8000000000000000000000000001       -> 1E+6110
-
--- Selected DPD codes
-decf700 apply   #22080000000000000000000000000000       -> 0
-decf701 apply   #22080000000000000000000000000009       -> 9
-decf702 apply   #22080000000000000000000000000010       -> 10
-decf703 apply   #22080000000000000000000000000019       -> 19
-decf704 apply   #22080000000000000000000000000020       -> 20
-decf705 apply   #22080000000000000000000000000029       -> 29
-decf706 apply   #22080000000000000000000000000030       -> 30
-decf707 apply   #22080000000000000000000000000039       -> 39
-decf708 apply   #22080000000000000000000000000040       -> 40
-decf709 apply   #22080000000000000000000000000049       -> 49
-decf710 apply   #22080000000000000000000000000050       -> 50
-decf711 apply   #22080000000000000000000000000059       -> 59
-decf712 apply   #22080000000000000000000000000060       -> 60
-decf713 apply   #22080000000000000000000000000069       -> 69
-decf714 apply   #22080000000000000000000000000070       -> 70
-decf715 apply   #22080000000000000000000000000071       -> 71
-decf716 apply   #22080000000000000000000000000072       -> 72
-decf717 apply   #22080000000000000000000000000073       -> 73
-decf718 apply   #22080000000000000000000000000074       -> 74
-decf719 apply   #22080000000000000000000000000075       -> 75
-decf720 apply   #22080000000000000000000000000076       -> 76
-decf721 apply   #22080000000000000000000000000077       -> 77
-decf722 apply   #22080000000000000000000000000078       -> 78
-decf723 apply   #22080000000000000000000000000079       -> 79
-
-decf730 apply   #2208000000000000000000000000029e       -> 994
-decf731 apply   #2208000000000000000000000000029f       -> 995
-decf732 apply   #220800000000000000000000000002a0       -> 520
-decf733 apply   #220800000000000000000000000002a1       -> 521
-
--- DPD: one of each of the huffman groups
-decf740 apply   #220800000000000000000000000003f7       -> 777
-decf741 apply   #220800000000000000000000000003f8       -> 778
-decf742 apply   #220800000000000000000000000003eb       -> 787
-decf743 apply   #2208000000000000000000000000037d       -> 877
-decf744 apply   #2208000000000000000000000000039f       -> 997
-decf745 apply   #220800000000000000000000000003bf       -> 979
-decf746 apply   #220800000000000000000000000003df       -> 799
-decf747 apply   #2208000000000000000000000000006e       -> 888
-
-
--- DPD all-highs cases (includes the 24 redundant codes)
-decf750 apply   #2208000000000000000000000000006e       -> 888
-decf751 apply   #2208000000000000000000000000016e       -> 888
-decf752 apply   #2208000000000000000000000000026e       -> 888
-decf753 apply   #2208000000000000000000000000036e       -> 888
-decf754 apply   #2208000000000000000000000000006f       -> 889
-decf755 apply   #2208000000000000000000000000016f       -> 889
-decf756 apply   #2208000000000000000000000000026f       -> 889
-decf757 apply   #2208000000000000000000000000036f       -> 889
-
-decf760 apply   #2208000000000000000000000000007e       -> 898
-decf761 apply   #2208000000000000000000000000017e       -> 898
-decf762 apply   #2208000000000000000000000000027e       -> 898
-decf763 apply   #2208000000000000000000000000037e       -> 898
-decf764 apply   #2208000000000000000000000000007f       -> 899
-decf765 apply   #2208000000000000000000000000017f       -> 899
-decf766 apply   #2208000000000000000000000000027f       -> 899
-decf767 apply   #2208000000000000000000000000037f       -> 899
-
-decf770 apply   #220800000000000000000000000000ee       -> 988
-decf771 apply   #220800000000000000000000000001ee       -> 988
-decf772 apply   #220800000000000000000000000002ee       -> 988
-decf773 apply   #220800000000000000000000000003ee       -> 988
-decf774 apply   #220800000000000000000000000000ef       -> 989
-decf775 apply   #220800000000000000000000000001ef       -> 989
-decf776 apply   #220800000000000000000000000002ef       -> 989
-decf777 apply   #220800000000000000000000000003ef       -> 989
-
-decf780 apply   #220800000000000000000000000000fe       -> 998
-decf781 apply   #220800000000000000000000000001fe       -> 998
-decf782 apply   #220800000000000000000000000002fe       -> 998
-decf783 apply   #220800000000000000000000000003fe       -> 998
-decf784 apply   #220800000000000000000000000000ff       -> 999
-decf785 apply   #220800000000000000000000000001ff       -> 999
-decf786 apply   #220800000000000000000000000002ff       -> 999
-decf787 apply   #220800000000000000000000000003ff       -> 999
-
diff --git a/Lib/test/decimaltestdata/decimal32.decTest b/Lib/test/decimaltestdata/decimal32.decTest
deleted file mode 100644
index faf1cf4..0000000
--- a/Lib/test/decimaltestdata/decimal32.decTest
+++ /dev/null
@@ -1,385 +0,0 @@
-------------------------------------------------------------------------
--- decimal32.decTest -- decimal four-byte format testcases            --
--- Copyright (c) IBM Corporation, 2000, 2003.  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.39
-
--- This set of tests is for the four-byte concrete representation.
--- Its characteristics are:
---
---  1 bit  sign
---  5 bits combination field
---  6 bits exponent continuation
--- 20 bits coefficient continuation
---
--- Total exponent length 8 bits
--- Total coefficient length 24 bits (7 digits)
---
--- Elimit =  191 (maximum encoded exponent)
--- Emax   =   96 (largest exponent value)
--- Emin   =  -95 (smallest exponent value)
--- bias   =  101 (subtracted from encoded exponent) = -Etiny
-
-extended:    1
-precision:   7
-rounding:    half_up
-maxExponent: 96
-minExponent: -95
-
--- General testcases
--- (mostly derived from the Strawman 4 document and examples)
-decd001 apply   #A23003D0          -> -7.50
-decd002 apply   -7.50              -> #A23003D0
-
--- Normality
-decd010 apply   1234567            -> #2654d2e7
-decd011 apply   1234567.0          -> #2654d2e7 Rounded
-decd012 apply   1234567.1          -> #2654d2e7 Rounded Inexact
-decd013 apply  -1234567            -> #a654d2e7
-decd014 apply  -1234567.0          -> #a654d2e7 Rounded
-decd015 apply  -1234567.1          -> #a654d2e7 Rounded Inexact
-
-
--- Nmax and similar
-decd022 apply   9.999999E+96            -> #77f3fcff
-decd023 apply   #77f3fcff               -> 9.999999E+96
-decd024 apply   1.234567E+96            -> #47f4d2e7
-decd025 apply   #47f4d2e7               -> 1.234567E+96
--- fold-downs (more below)
-decd030 apply   1.23E+96                -> #47f4c000 Clamped
-decd031 apply   #47f4c000               -> 1.230000E+96
-decd032 apply   1E+96                   -> #47f00000 Clamped
-decd033 apply   #47f00000               -> 1.000000E+96
-
--- overflows
-maxExponent: 999   -- set high so conversion causes the overflow
-minExponent: -999
-decd040 apply   10E+96                  -> #78000000 Overflow Rounded Inexact
-decd041 apply   1.000000E+97            -> #78000000 Overflow Rounded Inexact
-maxExponent: 96
-minExponent: -95
-
-decd051 apply   12345                   -> #225049c5
-decd052 apply   #225049c5               -> 12345
-decd053 apply   1234                    -> #22500534
-decd054 apply   #22500534               -> 1234
-decd055 apply   123                     -> #225000a3
-decd056 apply   #225000a3               -> 123
-decd057 apply   12                      -> #22500012
-decd058 apply   #22500012               -> 12
-decd059 apply   1                       -> #22500001
-decd060 apply   #22500001               -> 1
-decd061 apply   1.23                    -> #223000a3
-decd062 apply   #223000a3               -> 1.23
-decd063 apply   123.45                  -> #223049c5
-decd064 apply   #223049c5               -> 123.45
-
--- Nmin and below
-decd071 apply   1E-95                   -> #00600001
-decd072 apply   #00600001               -> 1E-95
-decd073 apply   1.000000E-95            -> #04000000
-decd074 apply   #04000000               -> 1.000000E-95
-decd075 apply   1.000001E-95            -> #04000001
-decd076 apply   #04000001               -> 1.000001E-95
-
-decd077 apply   0.100000E-95            -> #00020000     Subnormal
-decd07x apply   1.00000E-96             -> 1.00000E-96   Subnormal
-decd078 apply   #00020000               -> 1.00000E-96   Subnormal
-decd079 apply   0.000010E-95            -> #00000010     Subnormal
-decd080 apply   #00000010               -> 1.0E-100      Subnormal
-decd081 apply   0.000001E-95            -> #00000001     Subnormal
-decd082 apply   #00000001               -> 1E-101        Subnormal
-decd083 apply   1e-101                  -> #00000001     Subnormal
-decd084 apply   #00000001               -> 1E-101        Subnormal
-decd08x apply   1e-101                  -> 1E-101        Subnormal
-
--- underflows
-decd090 apply   1e-101                  -> #00000001  Subnormal
-decd091 apply   1.9e-101                -> #00000002  Subnormal Underflow Inexact Rounded
-decd092 apply   1.1e-101                -> #00000001  Subnormal Underflow Inexact Rounded
-decd093 apply   1.001e-101              -> #00000001  Subnormal Underflow Inexact Rounded
-decd094 apply   1.000001e-101           -> #00000001  Subnormal Underflow Inexact Rounded
-decd095 apply   1.0000001e-101          -> #00000001  Subnormal Underflow Inexact Rounded
-decd096 apply   0.1e-101                -> #00000000  Subnormal Underflow Inexact Rounded
-decd097 apply   0.001e-101              -> #00000000  Subnormal Underflow Inexact Rounded
-decd098 apply   0.000001e-101           -> #00000000  Subnormal Underflow Inexact Rounded
-decd099 apply   0.0000001e-101          -> #00000000  Subnormal Underflow Inexact Rounded
-
--- same again, negatives --
-
--- Nmax and similar
-decd122 apply  -9.999999E+96            -> #f7f3fcff
-decd123 apply   #f7f3fcff               -> -9.999999E+96
-decd124 apply  -1.234567E+96            -> #c7f4d2e7
-decd125 apply   #c7f4d2e7               -> -1.234567E+96
--- fold-downs (more below)
-decd130 apply  -1.23E+96                -> #c7f4c000 Clamped
-decd131 apply   #c7f4c000               -> -1.230000E+96
-decd132 apply  -1E+96                   -> #c7f00000 Clamped
-decd133 apply   #c7f00000               -> -1.000000E+96
-
--- overflows
-maxExponent: 999   -- set high so conversion causes the overflow
-minExponent: -999
-decd140 apply  -10E+96                  -> #f8000000 Overflow Rounded Inexact
-decd141 apply  -1.000000E+97            -> #f8000000 Overflow Rounded Inexact
-maxExponent: 96
-minExponent: -95
-
-decd151 apply  -12345                   -> #a25049c5
-decd152 apply   #a25049c5               -> -12345
-decd153 apply  -1234                    -> #a2500534
-decd154 apply   #a2500534               -> -1234
-decd155 apply  -123                     -> #a25000a3
-decd156 apply   #a25000a3               -> -123
-decd157 apply  -12                      -> #a2500012
-decd158 apply   #a2500012               -> -12
-decd159 apply  -1                       -> #a2500001
-decd160 apply   #a2500001               -> -1
-decd161 apply  -1.23                    -> #a23000a3
-decd162 apply   #a23000a3               -> -1.23
-decd163 apply  -123.45                  -> #a23049c5
-decd164 apply   #a23049c5               -> -123.45
-
--- Nmin and below
-decd171 apply  -1E-95                   -> #80600001
-decd172 apply   #80600001               -> -1E-95
-decd173 apply  -1.000000E-95            -> #84000000
-decd174 apply   #84000000               -> -1.000000E-95
-decd175 apply  -1.000001E-95            -> #84000001
-decd176 apply   #84000001               -> -1.000001E-95
-
-decd177 apply  -0.100000E-95            -> #80020000     Subnormal
-decd178 apply   #80020000               -> -1.00000E-96  Subnormal
-decd179 apply  -0.000010E-95            -> #80000010     Subnormal
-decd180 apply   #80000010               -> -1.0E-100     Subnormal
-decd181 apply  -0.000001E-95            -> #80000001     Subnormal
-decd182 apply   #80000001               -> -1E-101       Subnormal
-decd183 apply  -1e-101                  -> #80000001     Subnormal
-decd184 apply   #80000001               -> -1E-101       Subnormal
-
--- underflows
-decd190 apply  -1e-101                  -> #80000001  Subnormal
-decd191 apply  -1.9e-101                -> #80000002  Subnormal Underflow Inexact Rounded
-decd192 apply  -1.1e-101                -> #80000001  Subnormal Underflow Inexact Rounded
-decd193 apply  -1.001e-101              -> #80000001  Subnormal Underflow Inexact Rounded
-decd194 apply  -1.000001e-101           -> #80000001  Subnormal Underflow Inexact Rounded
-decd195 apply  -1.0000001e-101          -> #80000001  Subnormal Underflow Inexact Rounded
-decd196 apply  -0.1e-101                -> #80000000  Subnormal Underflow Inexact Rounded
-decd197 apply  -0.001e-101              -> #80000000  Subnormal Underflow Inexact Rounded
-decd198 apply  -0.000001e-101           -> #80000000  Subnormal Underflow Inexact Rounded
-decd199 apply  -0.0000001e-101          -> #80000000  Subnormal Underflow Inexact Rounded
-
--- zeros
-decd400 apply   0E-400                  -> #00000000  Clamped
-decd401 apply   0E-101                  -> #00000000
-decd402 apply   #00000000               -> 0E-101
-decd403 apply   0.000000E-95            -> #00000000
-decd404 apply   #00000000               -> 0E-101
-decd405 apply   0E-2                    -> #22300000
-decd406 apply   #22300000               -> 0.00
-decd407 apply   0                       -> #22500000
-decd408 apply   #22500000               -> 0
-decd409 apply   0E+3                    -> #22800000
-decd410 apply   #22800000               -> 0E+3
-decd411 apply   0E+90                   -> #43f00000
-decd412 apply   #43f00000               -> 0E+90
--- clamped zeros...
-decd413 apply   0E+91                   -> #43f00000  Clamped
-decd414 apply   #43f00000               -> 0E+90
-decd415 apply   0E+96                   -> #43f00000  Clamped
-decd416 apply   #43f00000               -> 0E+90
-decd417 apply   0E+400                  -> #43f00000  Clamped
-decd418 apply   #43f00000               -> 0E+90
-
--- negative zeros
-decd420 apply   -0E-400                 -> #80000000  Clamped
-decd421 apply   -0E-101                 -> #80000000
-decd422 apply   #80000000               -> -0E-101
-decd423 apply   -0.000000E-95           -> #80000000
-decd424 apply   #80000000               -> -0E-101
-decd425 apply   -0E-2                   -> #a2300000
-decd426 apply   #a2300000               -> -0.00
-decd427 apply   -0                      -> #a2500000
-decd428 apply   #a2500000               -> -0
-decd429 apply   -0E+3                   -> #a2800000
-decd430 apply   #a2800000               -> -0E+3
-decd431 apply   -0E+90                  -> #c3f00000
-decd432 apply   #c3f00000               -> -0E+90
--- clamped zeros...
-decd433 apply   -0E+91                  -> #c3f00000  Clamped
-decd434 apply   #c3f00000               -> -0E+90
-decd435 apply   -0E+96                  -> #c3f00000  Clamped
-decd436 apply   #c3f00000               -> -0E+90
-decd437 apply   -0E+400                 -> #c3f00000  Clamped
-decd438 apply   #c3f00000               -> -0E+90
-
--- Specials
-decd500 apply   Infinity  -> #78000000
-decd501 apply   #78787878 -> #78000000
-decd502 apply   #78000000 -> Infinity
-decd503 apply   #79797979 -> #78000000
-decd504 apply   #79000000 -> Infinity
-decd505 apply   #7a7a7a7a -> #78000000
-decd506 apply   #7a000000 -> Infinity
-decd507 apply   #7b7b7b7b -> #78000000
-decd508 apply   #7b000000 -> Infinity
-decd509 apply   #7c7c7c7c -> #7c0c7c7c
-
-decd510 apply   NaN       -> #7c000000
-decd511 apply   #7c000000 -> NaN
-decd512 apply   #7d7d7d7d -> #7c0d7d7d
-decd513 apply   #7d000000 -> NaN
-decd514 apply   #7e7e7e7e -> #7e0e7c7e
-decd515 apply   #7e000000 -> sNaN
-decd516 apply   #7f7f7f7f -> #7e0f7c7f
-decd517 apply   #7f000000 -> sNaN
-decd518 apply   #7fffffff -> sNaN999999
-decd519 apply   #7fffffff -> #7e03fcff
-
-decd520 apply   -Infinity -> #f8000000
-decd521 apply   #f8787878 -> #f8000000
-decd522 apply   #f8000000 -> -Infinity
-decd523 apply   #f9797979 -> #f8000000
-decd524 apply   #f9000000 -> -Infinity
-decd525 apply   #fa7a7a7a -> #f8000000
-decd526 apply   #fa000000 -> -Infinity
-decd527 apply   #fb7b7b7b -> #f8000000
-decd528 apply   #fb000000 -> -Infinity
-
-decd529 apply   -NaN      -> #fc000000
-decd530 apply   #fc7c7c7c -> #fc0c7c7c
-decd531 apply   #fc000000 -> -NaN
-decd532 apply   #fd7d7d7d -> #fc0d7d7d
-decd533 apply   #fd000000 -> -NaN
-decd534 apply   #fe7e7e7e -> #fe0e7c7e
-decd535 apply   #fe000000 -> -sNaN
-decd536 apply   #ff7f7f7f -> #fe0f7c7f
-decd537 apply   #ff000000 -> -sNaN
-decd538 apply   #ffffffff -> -sNaN999999
-decd539 apply   #ffffffff -> #fe03fcff
-
--- diagnostic NaNs
-decd540 apply   NaN       -> #7c000000
-decd541 apply   NaN0      -> #7c000000
-decd542 apply   NaN1      -> #7c000001
-decd543 apply   NaN12     -> #7c000012
-decd544 apply   NaN79     -> #7c000079
-decd545 apply   NaN12345   -> #7c0049c5
-decd546 apply   NaN123456  -> #7c028e56
-decd547 apply   NaN799799  -> #7c0f7fdf
-decd548 apply   NaN999999  -> #7c03fcff
-decd549 apply   NaN1234567 -> #7c000000  -- too many digits
-
-
--- fold-down full sequence
-decd601 apply   1E+96                   -> #47f00000 Clamped
-decd602 apply   #47f00000               -> 1.000000E+96
-decd603 apply   1E+95                   -> #43f20000 Clamped
-decd604 apply   #43f20000               -> 1.00000E+95
-decd605 apply   1E+94                   -> #43f04000 Clamped
-decd606 apply   #43f04000               -> 1.0000E+94
-decd607 apply   1E+93                   -> #43f00400 Clamped
-decd608 apply   #43f00400               -> 1.000E+93
-decd609 apply   1E+92                   -> #43f00080 Clamped
-decd610 apply   #43f00080               -> 1.00E+92
-decd611 apply   1E+91                   -> #43f00010 Clamped
-decd612 apply   #43f00010               -> 1.0E+91
-decd613 apply   1E+90                   -> #43f00001
-decd614 apply   #43f00001               -> 1E+90
-
-
--- Selected DPD codes
-decd700 apply   #22500000       -> 0
-decd701 apply   #22500009       -> 9
-decd702 apply   #22500010       -> 10
-decd703 apply   #22500019       -> 19
-decd704 apply   #22500020       -> 20
-decd705 apply   #22500029       -> 29
-decd706 apply   #22500030       -> 30
-decd707 apply   #22500039       -> 39
-decd708 apply   #22500040       -> 40
-decd709 apply   #22500049       -> 49
-decd710 apply   #22500050       -> 50
-decd711 apply   #22500059       -> 59
-decd712 apply   #22500060       -> 60
-decd713 apply   #22500069       -> 69
-decd714 apply   #22500070       -> 70
-decd715 apply   #22500071       -> 71
-decd716 apply   #22500072       -> 72
-decd717 apply   #22500073       -> 73
-decd718 apply   #22500074       -> 74
-decd719 apply   #22500075       -> 75
-decd720 apply   #22500076       -> 76
-decd721 apply   #22500077       -> 77
-decd722 apply   #22500078       -> 78
-decd723 apply   #22500079       -> 79
-
-decd730 apply   #2250029e       -> 994
-decd731 apply   #2250029f       -> 995
-decd732 apply   #225002a0       -> 520
-decd733 apply   #225002a1       -> 521
-
--- DPD: one of each of the huffman groups
-decd740 apply   #225003f7       -> 777
-decd741 apply   #225003f8       -> 778
-decd742 apply   #225003eb       -> 787
-decd743 apply   #2250037d       -> 877
-decd744 apply   #2250039f       -> 997
-decd745 apply   #225003bf       -> 979
-decd746 apply   #225003df       -> 799
-decd747 apply   #2250006e       -> 888
-
-
--- DPD all-highs cases (includes the 24 redundant codes)
-decd750 apply   #2250006e       -> 888
-decd751 apply   #2250016e       -> 888
-decd752 apply   #2250026e       -> 888
-decd753 apply   #2250036e       -> 888
-decd754 apply   #2250006f       -> 889
-decd755 apply   #2250016f       -> 889
-decd756 apply   #2250026f       -> 889
-decd757 apply   #2250036f       -> 889
-
-decd760 apply   #2250007e       -> 898
-decd761 apply   #2250017e       -> 898
-decd762 apply   #2250027e       -> 898
-decd763 apply   #2250037e       -> 898
-decd764 apply   #2250007f       -> 899
-decd765 apply   #2250017f       -> 899
-decd766 apply   #2250027f       -> 899
-decd767 apply   #2250037f       -> 899
-
-decd770 apply   #225000ee       -> 988
-decd771 apply   #225001ee       -> 988
-decd772 apply   #225002ee       -> 988
-decd773 apply   #225003ee       -> 988
-decd774 apply   #225000ef       -> 989
-decd775 apply   #225001ef       -> 989
-decd776 apply   #225002ef       -> 989
-decd777 apply   #225003ef       -> 989
-
-decd780 apply   #225000fe       -> 998
-decd781 apply   #225001fe       -> 998
-decd782 apply   #225002fe       -> 998
-decd783 apply   #225003fe       -> 998
-decd784 apply   #225000ff       -> 999
-decd785 apply   #225001ff       -> 999
-decd786 apply   #225002ff       -> 999
-decd787 apply   #225003ff       -> 999
-
diff --git a/Lib/test/decimaltestdata/decimal64.decTest b/Lib/test/decimaltestdata/decimal64.decTest
deleted file mode 100644
index a254167..0000000
--- a/Lib/test/decimaltestdata/decimal64.decTest
+++ /dev/null
@@ -1,444 +0,0 @@
-------------------------------------------------------------------------
--- decimal64.decTest -- decimal eight-byte format testcases           --
--- Copyright (c) IBM Corporation, 2000, 2003.  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.39
-
--- This set of tests is for the eight-byte concrete representation.
--- Its characteristics are:
---
---  1 bit  sign
---  5 bits combination field
---  8 bits exponent continuation
--- 50 bits coefficient continuation
---
--- Total exponent length 10 bits
--- Total coefficient length 54 bits (16 digits)
---
--- Elimit =  767 (maximum encoded exponent)
--- Emax   =  384 (largest exponent value)
--- Emin   = -383 (smallest exponent value)
--- bias   =  398 (subtracted from encoded exponent) = -Etiny
-
-extended:    1
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
--- General testcases
--- (mostly derived from the Strawman 4 document and examples)
-dece001 apply   #A2300000000003D0 -> -7.50
-dece002 apply   -7.50             -> #A2300000000003D0
-
--- Normality
-dece010 apply   1234567890123456   -> #263934b9c1e28e56
-dece011 apply   1234567890123456.0 -> #263934b9c1e28e56 Rounded
-dece012 apply   1234567890123456.1 -> #263934b9c1e28e56 Rounded Inexact
-dece013 apply  -1234567890123456   -> #a63934b9c1e28e56
-dece014 apply  -1234567890123456.0 -> #a63934b9c1e28e56 Rounded
-dece015 apply  -1234567890123456.1 -> #a63934b9c1e28e56 Rounded Inexact
-
-
--- Nmax and similar
-dece022 apply   9.999999999999999E+384  -> #77fcff3fcff3fcff
-dece023 apply   #77fcff3fcff3fcff       -> 9.999999999999999E+384
-dece024 apply   1.234567890123456E+384  -> #47fd34b9c1e28e56
-dece025 apply   #47fd34b9c1e28e56       -> 1.234567890123456E+384
--- fold-downs (more below)
-dece030 apply   1.23E+384               -> #47fd300000000000 Clamped
-dece031 apply   #47fd300000000000       -> 1.230000000000000E+384
-dece032 apply   1E+384                  -> #47fc000000000000 Clamped
-dece033 apply   #47fc000000000000       -> 1.000000000000000E+384
-
--- overflows
-maxExponent: 999   -- set high so conversion causes the overflow
-minExponent: -999
-dece040 apply   10E+384                 -> #7800000000000000 Overflow Rounded Inexact
-dece041 apply   1.000000000000000E+385  -> #7800000000000000 Overflow Rounded Inexact
-maxExponent: 384
-minExponent: -383
-
-dece051 apply   12345                   -> #22380000000049c5
-dece052 apply   #22380000000049c5       -> 12345
-dece053 apply   1234                    -> #2238000000000534
-dece054 apply   #2238000000000534       -> 1234
-dece055 apply   123                     -> #22380000000000a3
-dece056 apply   #22380000000000a3       -> 123
-dece057 apply   12                      -> #2238000000000012
-dece058 apply   #2238000000000012       -> 12
-dece059 apply   1                       -> #2238000000000001
-dece060 apply   #2238000000000001       -> 1
-dece061 apply   1.23                    -> #22300000000000a3
-dece062 apply   #22300000000000a3       -> 1.23
-dece063 apply   123.45                  -> #22300000000049c5
-dece064 apply   #22300000000049c5       -> 123.45
-
--- Nmin and below
-dece071 apply   1E-383                  -> #003c000000000001
-dece072 apply   #003c000000000001       -> 1E-383
-dece073 apply   1.000000000000000E-383  -> #0400000000000000
-dece074 apply   #0400000000000000       -> 1.000000000000000E-383
-dece075 apply   1.000000000000001E-383  -> #0400000000000001
-dece076 apply   #0400000000000001       -> 1.000000000000001E-383
-
-dece077 apply   0.100000000000000E-383  -> #0000800000000000      Subnormal
-dece078 apply   #0000800000000000       -> 1.00000000000000E-384  Subnormal
-dece079 apply   0.000000000000010E-383  -> #0000000000000010      Subnormal
-dece080 apply   #0000000000000010       -> 1.0E-397               Subnormal
-dece081 apply   0.00000000000001E-383   -> #0004000000000001      Subnormal
-dece082 apply   #0004000000000001       -> 1E-397                 Subnormal
-dece083 apply   0.000000000000001E-383  -> #0000000000000001      Subnormal
-dece084 apply   #0000000000000001       -> 1E-398                 Subnormal
-
--- underflows
-dece090 apply   1e-398                  -> #0000000000000001  Subnormal
-dece091 apply   1.9e-398                -> #0000000000000002  Subnormal Underflow Inexact Rounded
-dece092 apply   1.1e-398                -> #0000000000000001  Subnormal Underflow Inexact Rounded
-dece093 apply   1.00000000001e-398      -> #0000000000000001  Subnormal Underflow Inexact Rounded
-dece094 apply   1.00000000000001e-398   -> #0000000000000001  Subnormal Underflow Inexact Rounded
-dece095 apply   1.000000000000001e-398  -> #0000000000000001  Subnormal Underflow Inexact Rounded
-dece096 apply   0.1e-398                -> #0000000000000000  Subnormal Underflow Inexact Rounded
-dece097 apply   0.00000000001e-398      -> #0000000000000000  Subnormal Underflow Inexact Rounded
-dece098 apply   0.00000000000001e-398   -> #0000000000000000  Subnormal Underflow Inexact Rounded
-dece099 apply   0.000000000000001e-398  -> #0000000000000000  Subnormal Underflow Inexact Rounded
-
--- Same again, negatives
--- Nmax and similar
-dece122 apply  -9.999999999999999E+384  -> #f7fcff3fcff3fcff
-dece123 apply   #f7fcff3fcff3fcff       -> -9.999999999999999E+384
-dece124 apply  -1.234567890123456E+384  -> #c7fd34b9c1e28e56
-dece125 apply   #c7fd34b9c1e28e56       -> -1.234567890123456E+384
--- fold-downs (more below)
-dece130 apply  -1.23E+384               -> #c7fd300000000000 Clamped
-dece131 apply   #c7fd300000000000       -> -1.230000000000000E+384
-dece132 apply  -1E+384                  -> #c7fc000000000000 Clamped
-dece133 apply   #c7fc000000000000       -> -1.000000000000000E+384
-
--- overflows
-maxExponent: 999   -- set high so conversion causes the overflow
-minExponent: -999
-dece140 apply  -10E+384                 -> #f800000000000000 Overflow Rounded Inexact
-dece141 apply  -1.000000000000000E+385  -> #f800000000000000 Overflow Rounded Inexact
-maxExponent: 384
-minExponent: -383
-
-dece151 apply  -12345                   -> #a2380000000049c5
-dece152 apply   #a2380000000049c5       -> -12345
-dece153 apply  -1234                    -> #a238000000000534
-dece154 apply   #a238000000000534       -> -1234
-dece155 apply  -123                     -> #a2380000000000a3
-dece156 apply   #a2380000000000a3       -> -123
-dece157 apply  -12                      -> #a238000000000012
-dece158 apply   #a238000000000012       -> -12
-dece159 apply  -1                       -> #a238000000000001
-dece160 apply   #a238000000000001       -> -1
-dece161 apply  -1.23                    -> #a2300000000000a3
-dece162 apply   #a2300000000000a3       -> -1.23
-dece163 apply  -123.45                  -> #a2300000000049c5
-dece164 apply   #a2300000000049c5       -> -123.45
-
--- Nmin and below
-dece171 apply  -1E-383                  -> #803c000000000001
-dece172 apply   #803c000000000001       -> -1E-383
-dece173 apply  -1.000000000000000E-383  -> #8400000000000000
-dece174 apply   #8400000000000000       -> -1.000000000000000E-383
-dece175 apply  -1.000000000000001E-383  -> #8400000000000001
-dece176 apply   #8400000000000001       -> -1.000000000000001E-383
-
-dece177 apply  -0.100000000000000E-383  -> #8000800000000000       Subnormal
-dece178 apply   #8000800000000000       -> -1.00000000000000E-384  Subnormal
-dece179 apply  -0.000000000000010E-383  -> #8000000000000010       Subnormal
-dece180 apply   #8000000000000010       -> -1.0E-397               Subnormal
-dece181 apply  -0.00000000000001E-383   -> #8004000000000001       Subnormal
-dece182 apply   #8004000000000001       -> -1E-397                 Subnormal
-dece183 apply  -0.000000000000001E-383  -> #8000000000000001       Subnormal
-dece184 apply   #8000000000000001       -> -1E-398                 Subnormal
-
--- underflows
-dece189 apply   -1e-398                 -> #8000000000000001  Subnormal
-dece190 apply   -1.0e-398               -> #8000000000000001  Subnormal Rounded
-dece191 apply   -1.9e-398               -> #8000000000000002  Subnormal Underflow Inexact Rounded
-dece192 apply   -1.1e-398               -> #8000000000000001  Subnormal Underflow Inexact Rounded
-dece193 apply   -1.00000000001e-398     -> #8000000000000001  Subnormal Underflow Inexact Rounded
-dece194 apply   -1.00000000000001e-398  -> #8000000000000001  Subnormal Underflow Inexact Rounded
-dece195 apply   -1.000000000000001e-398 -> #8000000000000001  Subnormal Underflow Inexact Rounded
-dece196 apply   -0.1e-398               -> #8000000000000000  Subnormal Underflow Inexact Rounded
-dece197 apply   -0.00000000001e-398     -> #8000000000000000  Subnormal Underflow Inexact Rounded
-dece198 apply   -0.00000000000001e-398  -> #8000000000000000  Subnormal Underflow Inexact Rounded
-dece199 apply   -0.000000000000001e-398 -> #8000000000000000  Subnormal Underflow Inexact Rounded
-
--- zeros
-dece401 apply   0E-500                  -> #0000000000000000  Clamped
-dece402 apply   0E-400                  -> #0000000000000000  Clamped
-dece403 apply   0E-398                  -> #0000000000000000
-dece404 apply   #0000000000000000       -> 0E-398
-dece405 apply   0.000000000000000E-383  -> #0000000000000000
-dece406 apply   #0000000000000000       -> 0E-398
-dece407 apply   0E-2                    -> #2230000000000000
-dece408 apply   #2230000000000000       -> 0.00
-dece409 apply   0                       -> #2238000000000000
-dece410 apply   #2238000000000000       -> 0
-dece411 apply   0E+3                    -> #2244000000000000
-dece412 apply   #2244000000000000       -> 0E+3
-dece413 apply   0E+369                  -> #43fc000000000000
-dece414 apply   #43fc000000000000       -> 0E+369
--- clamped zeros...
-dece415 apply   0E+370                  -> #43fc000000000000  Clamped
-dece416 apply   #43fc000000000000       -> 0E+369
-dece417 apply   0E+384                  -> #43fc000000000000  Clamped
-dece418 apply   #43fc000000000000       -> 0E+369
-dece419 apply   0E+400                  -> #43fc000000000000  Clamped
-dece420 apply   #43fc000000000000       -> 0E+369
-dece421 apply   0E+500                  -> #43fc000000000000  Clamped
-dece422 apply   #43fc000000000000       -> 0E+369
-
--- negative zeros
-dece431 apply   -0E-400                 -> #8000000000000000  Clamped
-dece432 apply   -0E-400                 -> #8000000000000000  Clamped
-dece433 apply   -0E-398                 -> #8000000000000000
-dece434 apply   #8000000000000000       -> -0E-398
-dece435 apply   -0.000000000000000E-383 -> #8000000000000000
-dece436 apply   #8000000000000000       -> -0E-398
-dece437 apply   -0E-2                   -> #a230000000000000
-dece438 apply   #a230000000000000       -> -0.00
-dece439 apply   -0                      -> #a238000000000000
-dece440 apply   #a238000000000000       -> -0
-dece441 apply   -0E+3                   -> #a244000000000000
-dece442 apply   #a244000000000000       -> -0E+3
-dece443 apply   -0E+369                 -> #c3fc000000000000
-dece444 apply   #c3fc000000000000       -> -0E+369
--- clamped zeros...
-dece445 apply   -0E+370                 -> #c3fc000000000000  Clamped
-dece446 apply   #c3fc000000000000       -> -0E+369
-dece447 apply   -0E+384                 -> #c3fc000000000000  Clamped
-dece448 apply   #c3fc000000000000       -> -0E+369
-dece449 apply   -0E+400                 -> #c3fc000000000000  Clamped
-dece450 apply   #c3fc000000000000       -> -0E+369
-dece451 apply   -0E+500                 -> #c3fc000000000000  Clamped
-dece452 apply   #c3fc000000000000       -> -0E+369
-
--- Specials
-dece500 apply   Infinity          -> #7800000000000000
-dece501 apply   #7878787878787878 -> #7800000000000000
-dece502 apply   #7800000000000000 -> Infinity
-dece503 apply   #7979797979797979 -> #7800000000000000
-dece504 apply   #7900000000000000 -> Infinity
-dece505 apply   #7a7a7a7a7a7a7a7a -> #7800000000000000
-dece506 apply   #7a00000000000000 -> Infinity
-dece507 apply   #7b7b7b7b7b7b7b7b -> #7800000000000000
-dece508 apply   #7b00000000000000 -> Infinity
-
-dece509 apply   NaN               -> #7c00000000000000
-dece510 apply   #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c
-dece511 apply   #7c00000000000000 -> NaN
-dece512 apply   #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d
-dece513 apply   #7d00000000000000 -> NaN
-dece514 apply   #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e
-dece515 apply   #7e00000000000000 -> sNaN
-dece516 apply   #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f
-dece517 apply   #7f00000000000000 -> sNaN
-dece518 apply   #7fffffffffffffff -> sNaN999999999999999
-dece519 apply   #7fffffffffffffff -> #7e00ff3fcff3fcff
-
-dece520 apply   -Infinity         -> #f800000000000000
-dece521 apply   #f878787878787878 -> #f800000000000000
-dece522 apply   #f800000000000000 -> -Infinity
-dece523 apply   #f979797979797979 -> #f800000000000000
-dece524 apply   #f900000000000000 -> -Infinity
-dece525 apply   #fa7a7a7a7a7a7a7a -> #f800000000000000
-dece526 apply   #fa00000000000000 -> -Infinity
-dece527 apply   #fb7b7b7b7b7b7b7b -> #f800000000000000
-dece528 apply   #fb00000000000000 -> -Infinity
-
-dece529 apply   -NaN              -> #fc00000000000000
-dece530 apply   #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c
-dece531 apply   #fc00000000000000 -> -NaN
-dece532 apply   #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d
-dece533 apply   #fd00000000000000 -> -NaN
-dece534 apply   #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e
-dece535 apply   #fe00000000000000 -> -sNaN
-dece536 apply   #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f
-dece537 apply   #ff00000000000000 -> -sNaN
-dece538 apply   #ffffffffffffffff -> -sNaN999999999999999
-dece539 apply   #ffffffffffffffff -> #fe00ff3fcff3fcff
-
--- diagnostic NaNs
-dece540 apply   NaN                 -> #7c00000000000000
-dece541 apply   NaN0                -> #7c00000000000000
-dece542 apply   NaN1                -> #7c00000000000001
-dece543 apply   NaN12               -> #7c00000000000012
-dece544 apply   NaN79               -> #7c00000000000079
-dece545 apply   NaN12345            -> #7c000000000049c5
-dece546 apply   NaN123456           -> #7c00000000028e56
-dece547 apply   NaN799799           -> #7c000000000f7fdf
-dece548 apply   NaN799799799799799  -> #7c03dff7fdff7fdf
-dece549 apply   NaN999999999999999  -> #7c00ff3fcff3fcff
-dece550 apply   NaN1234567890123456 -> #7c00000000000000  -- too many digits
-
--- fold-down full sequence
-dece601 apply   1E+384                  -> #47fc000000000000 Clamped
-dece602 apply   #47fc000000000000       -> 1.000000000000000E+384
-dece603 apply   1E+383                  -> #43fc800000000000 Clamped
-dece604 apply   #43fc800000000000       -> 1.00000000000000E+383
-dece605 apply   1E+382                  -> #43fc100000000000 Clamped
-dece606 apply   #43fc100000000000       -> 1.0000000000000E+382
-dece607 apply   1E+381                  -> #43fc010000000000 Clamped
-dece608 apply   #43fc010000000000       -> 1.000000000000E+381
-dece609 apply   1E+380                  -> #43fc002000000000 Clamped
-dece610 apply   #43fc002000000000       -> 1.00000000000E+380
-dece611 apply   1E+379                  -> #43fc000400000000 Clamped
-dece612 apply   #43fc000400000000       -> 1.0000000000E+379
-dece613 apply   1E+378                  -> #43fc000040000000 Clamped
-dece614 apply   #43fc000040000000       -> 1.000000000E+378
-dece615 apply   1E+377                  -> #43fc000008000000 Clamped
-dece616 apply   #43fc000008000000       -> 1.00000000E+377
-dece617 apply   1E+376                  -> #43fc000001000000 Clamped
-dece618 apply   #43fc000001000000       -> 1.0000000E+376
-dece619 apply   1E+375                  -> #43fc000000100000 Clamped
-dece620 apply   #43fc000000100000       -> 1.000000E+375
-dece621 apply   1E+374                  -> #43fc000000020000 Clamped
-dece622 apply   #43fc000000020000       -> 1.00000E+374
-dece623 apply   1E+373                  -> #43fc000000004000 Clamped
-dece624 apply   #43fc000000004000       -> 1.0000E+373
-dece625 apply   1E+372                  -> #43fc000000000400 Clamped
-dece626 apply   #43fc000000000400       -> 1.000E+372
-dece627 apply   1E+371                  -> #43fc000000000080 Clamped
-dece628 apply   #43fc000000000080       -> 1.00E+371
-dece629 apply   1E+370                  -> #43fc000000000010 Clamped
-dece630 apply   #43fc000000000010       -> 1.0E+370
-dece631 apply   1E+369                  -> #43fc000000000001
-dece632 apply   #43fc000000000001       -> 1E+369
-dece633 apply   1E+368                  -> #43f8000000000001
-dece634 apply   #43f8000000000001       -> 1E+368
--- same with 9s
-dece641 apply   9E+384                  -> #77fc000000000000 Clamped
-dece642 apply   #77fc000000000000       -> 9.000000000000000E+384
-dece643 apply   9E+383                  -> #43fc8c0000000000 Clamped
-dece644 apply   #43fc8c0000000000       -> 9.00000000000000E+383
-dece645 apply   9E+382                  -> #43fc1a0000000000 Clamped
-dece646 apply   #43fc1a0000000000       -> 9.0000000000000E+382
-dece647 apply   9E+381                  -> #43fc090000000000 Clamped
-dece648 apply   #43fc090000000000       -> 9.000000000000E+381
-dece649 apply   9E+380                  -> #43fc002300000000 Clamped
-dece650 apply   #43fc002300000000       -> 9.00000000000E+380
-dece651 apply   9E+379                  -> #43fc000680000000 Clamped
-dece652 apply   #43fc000680000000       -> 9.0000000000E+379
-dece653 apply   9E+378                  -> #43fc000240000000 Clamped
-dece654 apply   #43fc000240000000       -> 9.000000000E+378
-dece655 apply   9E+377                  -> #43fc000008c00000 Clamped
-dece656 apply   #43fc000008c00000       -> 9.00000000E+377
-dece657 apply   9E+376                  -> #43fc000001a00000 Clamped
-dece658 apply   #43fc000001a00000       -> 9.0000000E+376
-dece659 apply   9E+375                  -> #43fc000000900000 Clamped
-dece660 apply   #43fc000000900000       -> 9.000000E+375
-dece661 apply   9E+374                  -> #43fc000000023000 Clamped
-dece662 apply   #43fc000000023000       -> 9.00000E+374
-dece663 apply   9E+373                  -> #43fc000000006800 Clamped
-dece664 apply   #43fc000000006800       -> 9.0000E+373
-dece665 apply   9E+372                  -> #43fc000000002400 Clamped
-dece666 apply   #43fc000000002400       -> 9.000E+372
-dece667 apply   9E+371                  -> #43fc00000000008c Clamped
-dece668 apply   #43fc00000000008c       -> 9.00E+371
-dece669 apply   9E+370                  -> #43fc00000000001a Clamped
-dece670 apply   #43fc00000000001a       -> 9.0E+370
-dece671 apply   9E+369                  -> #43fc000000000009
-dece672 apply   #43fc000000000009       -> 9E+369
-dece673 apply   9E+368                  -> #43f8000000000009
-dece674 apply   #43f8000000000009       -> 9E+368
-
-
--- Selected DPD codes
-dece700 apply   #2238000000000000       -> 0
-dece701 apply   #2238000000000009       -> 9
-dece702 apply   #2238000000000010       -> 10
-dece703 apply   #2238000000000019       -> 19
-dece704 apply   #2238000000000020       -> 20
-dece705 apply   #2238000000000029       -> 29
-dece706 apply   #2238000000000030       -> 30
-dece707 apply   #2238000000000039       -> 39
-dece708 apply   #2238000000000040       -> 40
-dece709 apply   #2238000000000049       -> 49
-dece710 apply   #2238000000000050       -> 50
-dece711 apply   #2238000000000059       -> 59
-dece712 apply   #2238000000000060       -> 60
-dece713 apply   #2238000000000069       -> 69
-dece714 apply   #2238000000000070       -> 70
-dece715 apply   #2238000000000071       -> 71
-dece716 apply   #2238000000000072       -> 72
-dece717 apply   #2238000000000073       -> 73
-dece718 apply   #2238000000000074       -> 74
-dece719 apply   #2238000000000075       -> 75
-dece720 apply   #2238000000000076       -> 76
-dece721 apply   #2238000000000077       -> 77
-dece722 apply   #2238000000000078       -> 78
-dece723 apply   #2238000000000079       -> 79
-
-dece730 apply   #223800000000029e       -> 994
-dece731 apply   #223800000000029f       -> 995
-dece732 apply   #22380000000002a0       -> 520
-dece733 apply   #22380000000002a1       -> 521
-
--- DPD: one of each of the huffman groups
-dece740 apply   #22380000000003f7       -> 777
-dece741 apply   #22380000000003f8       -> 778
-dece742 apply   #22380000000003eb       -> 787
-dece743 apply   #223800000000037d       -> 877
-dece744 apply   #223800000000039f       -> 997
-dece745 apply   #22380000000003bf       -> 979
-dece746 apply   #22380000000003df       -> 799
-dece747 apply   #223800000000006e       -> 888
-
-
--- DPD all-highs cases (includes the 24 redundant codes)
-dece750 apply   #223800000000006e       -> 888
-dece751 apply   #223800000000016e       -> 888
-dece752 apply   #223800000000026e       -> 888
-dece753 apply   #223800000000036e       -> 888
-dece754 apply   #223800000000006f       -> 889
-dece755 apply   #223800000000016f       -> 889
-dece756 apply   #223800000000026f       -> 889
-dece757 apply   #223800000000036f       -> 889
-
-dece760 apply   #223800000000007e       -> 898
-dece761 apply   #223800000000017e       -> 898
-dece762 apply   #223800000000027e       -> 898
-dece763 apply   #223800000000037e       -> 898
-dece764 apply   #223800000000007f       -> 899
-dece765 apply   #223800000000017f       -> 899
-dece766 apply   #223800000000027f       -> 899
-dece767 apply   #223800000000037f       -> 899
-
-dece770 apply   #22380000000000ee       -> 988
-dece771 apply   #22380000000001ee       -> 988
-dece772 apply   #22380000000002ee       -> 988
-dece773 apply   #22380000000003ee       -> 988
-dece774 apply   #22380000000000ef       -> 989
-dece775 apply   #22380000000001ef       -> 989
-dece776 apply   #22380000000002ef       -> 989
-dece777 apply   #22380000000003ef       -> 989
-
-dece780 apply   #22380000000000fe       -> 998
-dece781 apply   #22380000000001fe       -> 998
-dece782 apply   #22380000000002fe       -> 998
-dece783 apply   #22380000000003fe       -> 998
-dece784 apply   #22380000000000ff       -> 999
-dece785 apply   #22380000000001ff       -> 999
-dece786 apply   #22380000000002ff       -> 999
-dece787 apply   #22380000000003ff       -> 999
-
diff --git a/Lib/test/decimaltestdata/divide.decTest b/Lib/test/decimaltestdata/divide.decTest
index 437d82a..ae2bc08 100644
--- a/Lib/test/decimaltestdata/divide.decTest
+++ b/Lib/test/decimaltestdata/divide.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- divide.decTest -- decimal division                                 --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
@@ -47,41 +47,45 @@
 divx018 divide  2.    2    ->  1
 divx019 divide  20    20   ->  1
 
-divx020 divide  187   187  ->  1
-divx021 divide  5     2    ->  2.5
-divx022 divide  5     2.0    ->  2.5
-divx023 divide  5     2.000  ->  2.5
-divx024 divide  5     0.20   ->  25
-divx025 divide  5     0.200  ->  25
-divx026 divide  10    1      ->  10
-divx027 divide  100   1      ->  100
-divx028 divide  1000  1      ->  1000
-divx029 divide  1000  100    ->  10
+divx020 divide  187   187    ->  1
+divx021 divide  5     2      ->  2.5
+divx022 divide  50    20     ->  2.5
+divx023 divide  500   200    ->  2.5
+divx024 divide  50.0  20.0   ->  2.5
+divx025 divide  5.00  2.00   ->  2.5
+divx026 divide  5     2.0    ->  2.5
+divx027 divide  5     2.000  ->  2.5
+divx028 divide  5     0.20   ->  25
+divx029 divide  5     0.200  ->  25
+divx030 divide  10    1      ->  10
+divx031 divide  100   1      ->  100
+divx032 divide  1000  1      ->  1000
+divx033 divide  1000  100    ->  10
 
-divx030 divide  1     2      ->  0.5
-divx031 divide  1     4      ->  0.25
-divx032 divide  1     8      ->  0.125
-divx033 divide  1     16     ->  0.0625
-divx034 divide  1     32     ->  0.03125
-divx035 divide  1     64     ->  0.015625
-divx040 divide  1    -2      ->  -0.5
-divx041 divide  1    -4      ->  -0.25
-divx042 divide  1    -8      ->  -0.125
-divx043 divide  1    -16     ->  -0.0625
-divx044 divide  1    -32     ->  -0.03125
-divx045 divide  1    -64     ->  -0.015625
-divx050 divide -1     2      ->  -0.5
-divx051 divide -1     4      ->  -0.25
-divx052 divide -1     8      ->  -0.125
-divx053 divide -1     16     ->  -0.0625
-divx054 divide -1     32     ->  -0.03125
-divx055 divide -1     64     ->  -0.015625
-divx060 divide -1    -2      ->  0.5
-divx061 divide -1    -4      ->  0.25
-divx062 divide -1    -8      ->  0.125
-divx063 divide -1    -16     ->  0.0625
-divx064 divide -1    -32     ->  0.03125
-divx065 divide -1    -64     ->  0.015625
+divx035 divide  1     2      ->  0.5
+divx036 divide  1     4      ->  0.25
+divx037 divide  1     8      ->  0.125
+divx038 divide  1     16     ->  0.0625
+divx039 divide  1     32     ->  0.03125
+divx040 divide  1     64     ->  0.015625
+divx041 divide  1    -2      ->  -0.5
+divx042 divide  1    -4      ->  -0.25
+divx043 divide  1    -8      ->  -0.125
+divx044 divide  1    -16     ->  -0.0625
+divx045 divide  1    -32     ->  -0.03125
+divx046 divide  1    -64     ->  -0.015625
+divx047 divide -1     2      ->  -0.5
+divx048 divide -1     4      ->  -0.25
+divx049 divide -1     8      ->  -0.125
+divx050 divide -1     16     ->  -0.0625
+divx051 divide -1     32     ->  -0.03125
+divx052 divide -1     64     ->  -0.015625
+divx053 divide -1    -2      ->  0.5
+divx054 divide -1    -4      ->  0.25
+divx055 divide -1    -8      ->  0.125
+divx056 divide -1    -16     ->  0.0625
+divx057 divide -1    -32     ->  0.03125
+divx058 divide -1    -64     ->  0.015625
 
 divx070 divide  999999999        1    ->  999999999
 divx071 divide  999999999.4      1    ->  999999999 Inexact Rounded
@@ -763,9 +767,9 @@
 divx964 divide 1e-600000000 1e+400000005 -> 1E-1000000005 Subnormal
 divx965 divide 1e-600000000 1e+400000006 -> 1E-1000000006 Subnormal
 divx966 divide 1e-600000000 1e+400000007 -> 1E-1000000007 Subnormal
-divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
+divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 -- [no equivalent of 'subnormal' for overflow]
 divx970 divide 1e+600000000 1e-400000001 -> Infinity Overflow Inexact Rounded
 divx971 divide 1e+600000000 1e-400000002 -> Infinity Overflow Inexact Rounded
@@ -779,10 +783,10 @@
 divx979 divide 1e+600000000 1e-400000010 -> Infinity Overflow Inexact Rounded
 
 -- Sign after overflow and underflow
-divx980 divide  1e-600000000  1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
-divx981 divide  1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-divx982 divide -1e-600000000  1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-divx983 divide -1e-600000000 -1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
+divx980 divide  1e-600000000  1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx981 divide  1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx982 divide -1e-600000000  1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx983 divide -1e-600000000 -1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 divx984 divide  1e+600000000  1e-400000009 ->  Infinity Overflow Inexact Rounded
 divx985 divide  1e+600000000 -1e-400000009 -> -Infinity Overflow Inexact Rounded
 divx986 divide -1e+600000000  1e-400000009 -> -Infinity Overflow Inexact Rounded
@@ -812,6 +816,38 @@
 --   1.465811965811965811965811965811965811966E+7000
 divx1010 divide 343E6000  234E-1000 -> Infinity Overflow Inexact Rounded
 
+precision:   34
+rounding:    half_up
+maxExponent: 6144
+minExponent: -6143
+
+-- Examples from SQL proposal (Krishna Kulkarni)
+precision: 7
+divx1021  divide 1E0          1E0 -> 1
+divx1022  divide 1E0          2E0 -> 0.5
+divx1023  divide 1E0          3E0 -> 0.3333333 Inexact Rounded
+divx1024  divide 100E-2   1000E-3 -> 1
+divx1025  divide 24E-1        2E0 -> 1.2
+divx1026  divide 2400E-3      2E0 -> 1.200
+divx1027  divide 5E0          2E0 -> 2.5
+divx1028  divide 5E0        20E-1 -> 2.5
+divx1029  divide 5E0      2000E-3 -> 2.5
+divx1030  divide 5E0         2E-1 -> 25
+divx1031  divide 5E0        20E-2 -> 25
+divx1032  divide 480E-2       3E0 -> 1.60
+divx1033  divide 47E-1        2E0 -> 2.35
+
+-- ECMAScript bad examples
+rounding:    half_down
+precision: 7
+divx1050  divide 5 9  -> 0.5555556 Inexact Rounded
+rounding:    half_even
+divx1051  divide 5 11 -> 0.4545455 Inexact Rounded
+
+-- payload decapitate
+precision: 5
+divx1055  divide   sNaN987654321 1 ->  NaN54321  Invalid_operation
+
 -- Null tests
 divx9998 divide 10  # -> NaN Invalid_operation
 divx9999 divide  # 10 -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/divideint.decTest b/Lib/test/decimaltestdata/divideint.decTest
index 7c31297..1c940f5 100644
--- a/Lib/test/decimaltestdata/divideint.decTest
+++ b/Lib/test/decimaltestdata/divideint.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- divideint.decTest -- decimal integer division                      --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
@@ -234,6 +234,22 @@
 dvix287 divideint 0.1 9999e-999999997    -> NaN Division_impossible
 dvix288 divideint 0.1 99999e-999999997   -> NaN Division_impossible
 
+-- GD edge cases: lhs smaller than rhs but more digits
+dvix301  divideint  0.9      2      ->  0
+dvix302  divideint  0.9      2.0    ->  0
+dvix303  divideint  0.9      2.1    ->  0
+dvix304  divideint  0.9      2.00   ->  0
+dvix305  divideint  0.9      2.01   ->  0
+dvix306  divideint  0.12     1      ->  0
+dvix307  divideint  0.12     1.0    ->  0
+dvix308  divideint  0.12     1.00   ->  0
+dvix309  divideint  0.12     1.0    ->  0
+dvix310  divideint  0.12     1.00   ->  0
+dvix311  divideint  0.12     2      ->  0
+dvix312  divideint  0.12     2.0    ->  0
+dvix313  divideint  0.12     2.1    ->  0
+dvix314  divideint  0.12     2.00   ->  0
+dvix315  divideint  0.12     2.01   ->  0
 
 -- overflow and underflow tests [from divide]
 maxexponent: 999999999
diff --git a/Lib/test/decimaltestdata/dqAbs.decTest b/Lib/test/decimaltestdata/dqAbs.decTest
new file mode 100644
index 0000000..df010ac
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqAbs.decTest
@@ -0,0 +1,126 @@
+------------------------------------------------------------------------

+-- dqAbs.decTest -- decQuad absolute value, heeding sNaN              --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+dqabs001 abs '1'      -> '1'

+dqabs002 abs '-1'     -> '1'

+dqabs003 abs '1.00'   -> '1.00'

+dqabs004 abs '-1.00'  -> '1.00'

+dqabs005 abs '0'      -> '0'

+dqabs006 abs '0.00'   -> '0.00'

+dqabs007 abs '00.0'   -> '0.0'

+dqabs008 abs '00.00'  -> '0.00'

+dqabs009 abs '00'     -> '0'

+

+dqabs010 abs '-2'     -> '2'

+dqabs011 abs '2'      -> '2'

+dqabs012 abs '-2.00'  -> '2.00'

+dqabs013 abs '2.00'   -> '2.00'

+dqabs014 abs '-0'     -> '0'

+dqabs015 abs '-0.00'  -> '0.00'

+dqabs016 abs '-00.0'  -> '0.0'

+dqabs017 abs '-00.00' -> '0.00'

+dqabs018 abs '-00'    -> '0'

+

+dqabs020 abs '-2000000' -> '2000000'

+dqabs021 abs '2000000'  -> '2000000'

+

+dqabs030 abs '+0.1'            -> '0.1'

+dqabs031 abs '-0.1'            -> '0.1'

+dqabs032 abs '+0.01'           -> '0.01'

+dqabs033 abs '-0.01'           -> '0.01'

+dqabs034 abs '+0.001'          -> '0.001'

+dqabs035 abs '-0.001'          -> '0.001'

+dqabs036 abs '+0.000001'       -> '0.000001'

+dqabs037 abs '-0.000001'       -> '0.000001'

+dqabs038 abs '+0.000000000001' -> '1E-12'

+dqabs039 abs '-0.000000000001' -> '1E-12'

+

+-- examples from decArith

+dqabs040 abs '2.1'     ->  '2.1'

+dqabs041 abs '-100'    ->  '100'

+dqabs042 abs '101.5'   ->  '101.5'

+dqabs043 abs '-101.5'  ->  '101.5'

+

+-- more fixed, potential LHS swaps/overlays if done by subtract 0

+dqabs060 abs '-56267E-10'  -> '0.0000056267'

+dqabs061 abs '-56267E-5'   -> '0.56267'

+dqabs062 abs '-56267E-2'   -> '562.67'

+dqabs063 abs '-56267E-1'   -> '5626.7'

+dqabs065 abs '-56267E-0'   -> '56267'

+

+-- subnormals and underflow

+

+-- long operand tests

+dqabs321 abs 1234567890123456  -> 1234567890123456

+dqabs322 abs 12345678000  -> 12345678000

+dqabs323 abs 1234567800   -> 1234567800

+dqabs324 abs 1234567890   -> 1234567890

+dqabs325 abs 1234567891   -> 1234567891

+dqabs326 abs 12345678901  -> 12345678901

+dqabs327 abs 1234567896   -> 1234567896

+

+-- zeros

+dqabs111 abs          0   -> 0

+dqabs112 abs         -0   -> 0

+dqabs113 abs       0E+6   -> 0E+6

+dqabs114 abs      -0E+6   -> 0E+6

+dqabs115 abs     0.0000   -> 0.0000

+dqabs116 abs    -0.0000   -> 0.0000

+dqabs117 abs      0E-141  -> 0E-141

+dqabs118 abs     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+dqabs121 abs   2682682682682682682682682682682682    ->  2682682682682682682682682682682682

+dqabs122 abs  -2682682682682682682682682682682682    ->  2682682682682682682682682682682682

+dqabs123 abs   1341341341341341341341341341341341    ->  1341341341341341341341341341341341

+dqabs124 abs  -1341341341341341341341341341341341    ->  1341341341341341341341341341341341

+

+-- Nmax, Nmin, Ntiny

+dqabs131 abs  9.999999999999999999999999999999999E+6144   ->  9.999999999999999999999999999999999E+6144

+dqabs132 abs  1E-6143                                     ->  1E-6143

+dqabs133 abs  1.000000000000000000000000000000000E-6143   ->  1.000000000000000000000000000000000E-6143

+dqabs134 abs  1E-6176                                     ->  1E-6176 Subnormal

+

+dqabs135 abs  -1E-6176                                    ->  1E-6176 Subnormal

+dqabs136 abs  -1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000000E-6143

+dqabs137 abs  -1E-6143                                    ->  1E-6143

+dqabs138 abs  -9.999999999999999999999999999999999E+6144  ->  9.999999999999999999999999999999999E+6144

+

+-- specials

+dqabs520 abs 'Inf'    -> 'Infinity'

+dqabs521 abs '-Inf'   -> 'Infinity'

+dqabs522 abs   NaN    ->  NaN

+dqabs523 abs  sNaN    ->  NaN   Invalid_operation

+dqabs524 abs   NaN22  ->  NaN22

+dqabs525 abs  sNaN33  ->  NaN33 Invalid_operation

+dqabs526 abs  -NaN22  -> -NaN22

+dqabs527 abs -sNaN33  -> -NaN33 Invalid_operation

+

+-- Null tests

+dqabs900 abs  # -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqAdd.decTest b/Lib/test/decimaltestdata/dqAdd.decTest
new file mode 100644
index 0000000..256bc98
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqAdd.decTest
@@ -0,0 +1,1157 @@
+------------------------------------------------------------------------

+-- dqAdd.decTest -- decQuad addition                                  --

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

+

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

+

+-- [first group are 'quick confidence check']

+dqadd001 add 1       1       ->  2

+dqadd002 add 2       3       ->  5

+dqadd003 add '5.75'  '3.3'   ->  9.05

+dqadd004 add '5'     '-3'    ->  2

+dqadd005 add '-5'    '-3'    ->  -8

+dqadd006 add '-7'    '2.5'   ->  -4.5

+dqadd007 add '0.7'   '0.3'   ->  1.0

+dqadd008 add '1.25'  '1.25'  ->  2.50

+dqadd009 add '1.23456789'  '1.00000000' -> '2.23456789'

+dqadd010 add '1.23456789'  '1.00000011' -> '2.23456800'

+

+--             1234567890123456      1234567890123456

+dqadd011 add '0.4444444444444444444444444444444446'  '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Inexact Rounded

+dqadd012 add '0.4444444444444444444444444444444445'  '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Rounded

+dqadd013 add '0.4444444444444444444444444444444444'  '0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999'

+dqadd014 add   '4444444444444444444444444444444444' '0.49'   -> '4444444444444444444444444444444444' Inexact Rounded

+dqadd015 add   '4444444444444444444444444444444444' '0.499'  -> '4444444444444444444444444444444444' Inexact Rounded

+dqadd016 add   '4444444444444444444444444444444444' '0.4999' -> '4444444444444444444444444444444444' Inexact Rounded

+dqadd017 add   '4444444444444444444444444444444444' '0.5000' -> '4444444444444444444444444444444444' Inexact Rounded

+dqadd018 add   '4444444444444444444444444444444444' '0.5001' -> '4444444444444444444444444444444445' Inexact Rounded

+dqadd019 add   '4444444444444444444444444444444444' '0.501'  -> '4444444444444444444444444444444445' Inexact Rounded

+dqadd020 add   '4444444444444444444444444444444444' '0.51'   -> '4444444444444444444444444444444445' Inexact Rounded

+

+dqadd021 add 0 1 -> 1

+dqadd022 add 1 1 -> 2

+dqadd023 add 2 1 -> 3

+dqadd024 add 3 1 -> 4

+dqadd025 add 4 1 -> 5

+dqadd026 add 5 1 -> 6

+dqadd027 add 6 1 -> 7

+dqadd028 add 7 1 -> 8

+dqadd029 add 8 1 -> 9

+dqadd030 add 9 1 -> 10

+

+-- some carrying effects

+dqadd031 add '0.9998'  '0.0000' -> '0.9998'

+dqadd032 add '0.9998'  '0.0001' -> '0.9999'

+dqadd033 add '0.9998'  '0.0002' -> '1.0000'

+dqadd034 add '0.9998'  '0.0003' -> '1.0001'

+

+dqadd035 add '70'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd036 add '700'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd037 add '7000'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd038 add '70000'  '10000e+34' -> '1.000000000000000000000000000000001E+38' Inexact Rounded

+dqadd039 add '700000'  '10000e+34' -> '1.000000000000000000000000000000007E+38' Rounded

+

+-- symmetry:

+dqadd040 add '10000e+34'  '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd041 add '10000e+34'  '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd042 add '10000e+34'  '7000' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd044 add '10000e+34'  '70000' -> '1.000000000000000000000000000000001E+38' Inexact Rounded

+dqadd045 add '10000e+34'  '700000' -> '1.000000000000000000000000000000007E+38' Rounded

+

+-- same, without rounding

+dqadd046 add '10000e+9'  '7' -> '10000000000007'

+dqadd047 add '10000e+9'  '70' -> '10000000000070'

+dqadd048 add '10000e+9'  '700' -> '10000000000700'

+dqadd049 add '10000e+9'  '7000' -> '10000000007000'

+dqadd050 add '10000e+9'  '70000' -> '10000000070000'

+dqadd051 add '10000e+9'  '700000' -> '10000000700000'

+dqadd052 add '10000e+9'  '7000000' -> '10000007000000'

+

+-- examples from decarith

+dqadd053 add '12' '7.00' -> '19.00'

+dqadd054 add '1.3' '-1.07' -> '0.23'

+dqadd055 add '1.3' '-1.30' -> '0.00'

+dqadd056 add '1.3' '-2.07' -> '-0.77'

+dqadd057 add '1E+2' '1E+4' -> '1.01E+4'

+

+-- leading zero preservation

+dqadd061 add 1 '0.0001' -> '1.0001'

+dqadd062 add 1 '0.00001' -> '1.00001'

+dqadd063 add 1 '0.000001' -> '1.000001'

+dqadd064 add 1 '0.0000001' -> '1.0000001'

+dqadd065 add 1 '0.00000001' -> '1.00000001'

+

+-- some funny zeros [in case of bad signum]

+dqadd070 add 1  0    -> 1

+dqadd071 add 1 0.    -> 1

+dqadd072 add 1  .0   -> 1.0

+dqadd073 add 1 0.0   -> 1.0

+dqadd074 add 1 0.00  -> 1.00

+dqadd075 add  0  1   -> 1

+dqadd076 add 0.  1   -> 1

+dqadd077 add  .0 1   -> 1.0

+dqadd078 add 0.0 1   -> 1.0

+dqadd079 add 0.00 1  -> 1.00

+

+-- some carries

+dqadd080 add 999999998 1  -> 999999999

+dqadd081 add 999999999 1  -> 1000000000

+dqadd082 add  99999999 1  -> 100000000

+dqadd083 add   9999999 1  -> 10000000

+dqadd084 add    999999 1  -> 1000000

+dqadd085 add     99999 1  -> 100000

+dqadd086 add      9999 1  -> 10000

+dqadd087 add       999 1  -> 1000

+dqadd088 add        99 1  -> 100

+dqadd089 add         9 1  -> 10

+

+

+-- more LHS swaps

+dqadd090 add '-56267E-10'   0 ->  '-0.0000056267'

+dqadd091 add '-56267E-6'    0 ->  '-0.056267'

+dqadd092 add '-56267E-5'    0 ->  '-0.56267'

+dqadd093 add '-56267E-4'    0 ->  '-5.6267'

+dqadd094 add '-56267E-3'    0 ->  '-56.267'

+dqadd095 add '-56267E-2'    0 ->  '-562.67'

+dqadd096 add '-56267E-1'    0 ->  '-5626.7'

+dqadd097 add '-56267E-0'    0 ->  '-56267'

+dqadd098 add '-5E-10'       0 ->  '-5E-10'

+dqadd099 add '-5E-7'        0 ->  '-5E-7'

+dqadd100 add '-5E-6'        0 ->  '-0.000005'

+dqadd101 add '-5E-5'        0 ->  '-0.00005'

+dqadd102 add '-5E-4'        0 ->  '-0.0005'

+dqadd103 add '-5E-1'        0 ->  '-0.5'

+dqadd104 add '-5E0'         0 ->  '-5'

+dqadd105 add '-5E1'         0 ->  '-50'

+dqadd106 add '-5E5'         0 ->  '-500000'

+dqadd107 add '-5E33'        0 ->  '-5000000000000000000000000000000000'

+dqadd108 add '-5E34'        0 ->  '-5.000000000000000000000000000000000E+34'  Rounded

+dqadd109 add '-5E35'        0 ->  '-5.000000000000000000000000000000000E+35'  Rounded

+dqadd110 add '-5E36'        0 ->  '-5.000000000000000000000000000000000E+36'  Rounded

+dqadd111 add '-5E100'       0 ->  '-5.000000000000000000000000000000000E+100' Rounded

+

+-- more RHS swaps

+dqadd113 add 0  '-56267E-10' ->  '-0.0000056267'

+dqadd114 add 0  '-56267E-6'  ->  '-0.056267'

+dqadd116 add 0  '-56267E-5'  ->  '-0.56267'

+dqadd117 add 0  '-56267E-4'  ->  '-5.6267'

+dqadd119 add 0  '-56267E-3'  ->  '-56.267'

+dqadd120 add 0  '-56267E-2'  ->  '-562.67'

+dqadd121 add 0  '-56267E-1'  ->  '-5626.7'

+dqadd122 add 0  '-56267E-0'  ->  '-56267'

+dqadd123 add 0  '-5E-10'     ->  '-5E-10'

+dqadd124 add 0  '-5E-7'      ->  '-5E-7'

+dqadd125 add 0  '-5E-6'      ->  '-0.000005'

+dqadd126 add 0  '-5E-5'      ->  '-0.00005'

+dqadd127 add 0  '-5E-4'      ->  '-0.0005'

+dqadd128 add 0  '-5E-1'      ->  '-0.5'

+dqadd129 add 0  '-5E0'       ->  '-5'

+dqadd130 add 0  '-5E1'       ->  '-50'

+dqadd131 add 0  '-5E5'       ->  '-500000'

+dqadd132 add 0  '-5E33'      ->  '-5000000000000000000000000000000000'

+dqadd133 add 0  '-5E34'      ->  '-5.000000000000000000000000000000000E+34'   Rounded

+dqadd134 add 0  '-5E35'      ->  '-5.000000000000000000000000000000000E+35'   Rounded

+dqadd135 add 0  '-5E36'      ->  '-5.000000000000000000000000000000000E+36'   Rounded

+dqadd136 add 0  '-5E100'     ->  '-5.000000000000000000000000000000000E+100'  Rounded

+

+-- related

+dqadd137 add  1  '0E-39'      ->  '1.000000000000000000000000000000000'  Rounded

+dqadd138 add -1  '0E-39'      ->  '-1.000000000000000000000000000000000' Rounded

+dqadd139 add '0E-39' 1        ->  '1.000000000000000000000000000000000'  Rounded

+dqadd140 add '0E-39' -1       ->  '-1.000000000000000000000000000000000' Rounded

+dqadd141 add 1E+29   0.0000   ->  '100000000000000000000000000000.0000'

+dqadd142 add 1E+29   0.00000  ->  '100000000000000000000000000000.0000'  Rounded

+dqadd143 add 0.000   1E+30    ->  '1000000000000000000000000000000.000'

+dqadd144 add 0.0000  1E+30    ->  '1000000000000000000000000000000.000'  Rounded

+

+-- [some of the next group are really constructor tests]

+dqadd146 add '00.0'  0       ->  '0.0'

+dqadd147 add '0.00'  0       ->  '0.00'

+dqadd148 add  0      '0.00'  ->  '0.00'

+dqadd149 add  0      '00.0'  ->  '0.0'

+dqadd150 add '00.0'  '0.00'  ->  '0.00'

+dqadd151 add '0.00'  '00.0'  ->  '0.00'

+dqadd152 add '3'     '.3'    ->  '3.3'

+dqadd153 add '3.'    '.3'    ->  '3.3'

+dqadd154 add '3.0'   '.3'    ->  '3.3'

+dqadd155 add '3.00'  '.3'    ->  '3.30'

+dqadd156 add '3'     '3'     ->  '6'

+dqadd157 add '3'     '+3'    ->  '6'

+dqadd158 add '3'     '-3'    ->  '0'

+dqadd159 add '0.3'   '-0.3'  ->  '0.0'

+dqadd160 add '0.03'  '-0.03' ->  '0.00'

+

+-- try borderline precision, with carries, etc.

+dqadd161 add '1E+12' '-1'    -> '999999999999'

+dqadd162 add '1E+12'  '1.11' -> '1000000000001.11'

+dqadd163 add '1.11'  '1E+12' -> '1000000000001.11'

+dqadd164 add '-1'    '1E+12' -> '999999999999'

+dqadd165 add '7E+12' '-1'    -> '6999999999999'

+dqadd166 add '7E+12'  '1.11' -> '7000000000001.11'

+dqadd167 add '1.11'  '7E+12' -> '7000000000001.11'

+dqadd168 add '-1'    '7E+12' -> '6999999999999'

+

+rounding: half_up

+dqadd170 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555567' -> '5.000000000000000000000000000000001' Inexact Rounded

+dqadd171 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555566' -> '5.000000000000000000000000000000001' Inexact Rounded

+dqadd172 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555565' -> '5.000000000000000000000000000000001' Inexact Rounded

+dqadd173 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555564' -> '5.000000000000000000000000000000000' Inexact Rounded

+dqadd174 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555553' -> '4.999999999999999999999999999999999' Inexact Rounded

+dqadd175 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555552' -> '4.999999999999999999999999999999999' Inexact Rounded

+dqadd176 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555551' -> '4.999999999999999999999999999999999' Inexact Rounded

+dqadd177 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555550' -> '4.999999999999999999999999999999999' Rounded

+dqadd178 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555545' -> '4.999999999999999999999999999999999' Inexact Rounded

+dqadd179 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555544' -> '4.999999999999999999999999999999998' Inexact Rounded

+dqadd180 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555543' -> '4.999999999999999999999999999999998' Inexact Rounded

+dqadd181 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555542' -> '4.999999999999999999999999999999998' Inexact Rounded

+dqadd182 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555541' -> '4.999999999999999999999999999999998' Inexact Rounded

+dqadd183 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555540' -> '4.999999999999999999999999999999998' Rounded

+

+-- and some more, including residue effects and different roundings

+rounding: half_up

+dqadd200 add '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'

+dqadd201 add '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd202 add '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd203 add '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd204 add '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd205 add '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd206 add '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd207 add '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd208 add '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd209 add '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd210 add '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd211 add '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd212 add '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd213 add '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd214 add '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd215 add '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd216 add '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'

+dqadd217 add '1231234567890123456784560123456789' 1.000000001   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd218 add '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd219 add '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded

+

+rounding: half_even

+dqadd220 add '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'

+dqadd221 add '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd222 add '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd223 add '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd224 add '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd225 add '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd226 add '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd227 add '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd228 add '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd229 add '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd230 add '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd231 add '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd232 add '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd233 add '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd234 add '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd235 add '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd236 add '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'

+dqadd237 add '1231234567890123456784560123456789' 1.00000001    -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd238 add '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd239 add '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded

+-- critical few with even bottom digit...

+dqadd240 add '1231234567890123456784560123456788' 0.499999999   -> '1231234567890123456784560123456788' Inexact Rounded

+dqadd241 add '1231234567890123456784560123456788' 0.5           -> '1231234567890123456784560123456788' Inexact Rounded

+dqadd242 add '1231234567890123456784560123456788' 0.500000001   -> '1231234567890123456784560123456789' Inexact Rounded

+

+rounding: down

+dqadd250 add '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'

+dqadd251 add '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd252 add '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd253 add '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd254 add '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd255 add '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd256 add '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd257 add '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd258 add '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd259 add '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd260 add '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd261 add '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd262 add '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd263 add '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd264 add '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd265 add '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd266 add '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'

+dqadd267 add '1231234567890123456784560123456789' 1.00000001    -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd268 add '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd269 add '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded

+

+-- 1 in last place tests

+rounding: half_up

+dqadd301 add  -1   1      ->   0

+dqadd302 add   0   1      ->   1

+dqadd303 add   1   1      ->   2

+dqadd304 add  12   1      ->  13

+dqadd305 add  98   1      ->  99

+dqadd306 add  99   1      -> 100

+dqadd307 add 100   1      -> 101

+dqadd308 add 101   1      -> 102

+dqadd309 add  -1  -1      ->  -2

+dqadd310 add   0  -1      ->  -1

+dqadd311 add   1  -1      ->   0

+dqadd312 add  12  -1      ->  11

+dqadd313 add  98  -1      ->  97

+dqadd314 add  99  -1      ->  98

+dqadd315 add 100  -1      ->  99

+dqadd316 add 101  -1      -> 100

+

+dqadd321 add -0.01  0.01    ->  0.00

+dqadd322 add  0.00  0.01    ->  0.01

+dqadd323 add  0.01  0.01    ->  0.02

+dqadd324 add  0.12  0.01    ->  0.13

+dqadd325 add  0.98  0.01    ->  0.99

+dqadd326 add  0.99  0.01    ->  1.00

+dqadd327 add  1.00  0.01    ->  1.01

+dqadd328 add  1.01  0.01    ->  1.02

+dqadd329 add -0.01 -0.01    -> -0.02

+dqadd330 add  0.00 -0.01    -> -0.01

+dqadd331 add  0.01 -0.01    ->  0.00

+dqadd332 add  0.12 -0.01    ->  0.11

+dqadd333 add  0.98 -0.01    ->  0.97

+dqadd334 add  0.99 -0.01    ->  0.98

+dqadd335 add  1.00 -0.01    ->  0.99

+dqadd336 add  1.01 -0.01    ->  1.00

+

+-- some more cases where adding 0 affects the coefficient

+dqadd340 add 1E+3    0    ->         1000

+dqadd341 add 1E+33   0    ->    1000000000000000000000000000000000

+dqadd342 add 1E+34   0    ->   1.000000000000000000000000000000000E+34  Rounded

+dqadd343 add 1E+35   0    ->   1.000000000000000000000000000000000E+35  Rounded

+-- which simply follow from these cases ...

+dqadd344 add 1E+3    1    ->         1001

+dqadd345 add 1E+33   1    ->    1000000000000000000000000000000001

+dqadd346 add 1E+34   1    ->   1.000000000000000000000000000000000E+34  Inexact Rounded

+dqadd347 add 1E+35   1    ->   1.000000000000000000000000000000000E+35  Inexact Rounded

+dqadd348 add 1E+3    7    ->         1007

+dqadd349 add 1E+33   7    ->    1000000000000000000000000000000007

+dqadd350 add 1E+34   7    ->   1.000000000000000000000000000000001E+34  Inexact Rounded

+dqadd351 add 1E+35   7    ->   1.000000000000000000000000000000000E+35  Inexact Rounded

+

+-- tryzeros cases

+rounding:    half_up

+dqadd360  add 0E+50 10000E+1  -> 1.0000E+5

+dqadd361  add 0E-50 10000E+1  -> 100000.0000000000000000000000000000 Rounded

+dqadd362  add 10000E+1 0E-50  -> 100000.0000000000000000000000000000 Rounded

+dqadd363  add 10000E+1 10000E-50  -> 100000.0000000000000000000000000000 Rounded Inexact

+dqadd364  add 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0E+6111

+--            1 234567890123456789012345678901234

+

+-- a curiosity from JSR 13 testing

+rounding:    half_down

+dqadd370 add  999999999999999999999999999999999 815 -> 1000000000000000000000000000000814

+dqadd371 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact

+rounding:    half_up

+dqadd372 add  999999999999999999999999999999999 815 -> 1000000000000000000000000000000814

+dqadd373 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact

+rounding:    half_even

+dqadd374 add  999999999999999999999999999999999 815 -> 1000000000000000000000000000000814

+dqadd375 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact

+

+-- ulp replacement tests

+dqadd400 add   1   77e-32      ->  1.00000000000000000000000000000077

+dqadd401 add   1   77e-33      ->  1.000000000000000000000000000000077

+dqadd402 add   1   77e-34      ->  1.000000000000000000000000000000008 Inexact Rounded

+dqadd403 add   1   77e-35      ->  1.000000000000000000000000000000001 Inexact Rounded

+dqadd404 add   1   77e-36      ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd405 add   1   77e-37      ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd406 add   1   77e-299     ->  1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd410 add  10   77e-32      ->  10.00000000000000000000000000000077

+dqadd411 add  10   77e-33      ->  10.00000000000000000000000000000008 Inexact Rounded

+dqadd412 add  10   77e-34      ->  10.00000000000000000000000000000001 Inexact Rounded

+dqadd413 add  10   77e-35      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd414 add  10   77e-36      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd415 add  10   77e-37      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd416 add  10   77e-299     ->  10.00000000000000000000000000000000 Inexact Rounded

+

+dqadd420 add  77e-32       1   ->  1.00000000000000000000000000000077

+dqadd421 add  77e-33       1   ->  1.000000000000000000000000000000077

+dqadd422 add  77e-34       1   ->  1.000000000000000000000000000000008 Inexact Rounded

+dqadd423 add  77e-35       1   ->  1.000000000000000000000000000000001 Inexact Rounded

+dqadd424 add  77e-36       1   ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd425 add  77e-37       1   ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd426 add  77e-299      1   ->  1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd430 add  77e-32      10   ->  10.00000000000000000000000000000077

+dqadd431 add  77e-33      10   ->  10.00000000000000000000000000000008 Inexact Rounded

+dqadd432 add  77e-34      10   ->  10.00000000000000000000000000000001 Inexact Rounded

+dqadd433 add  77e-35      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd434 add  77e-36      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd435 add  77e-37      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd436 add  77e-299     10   ->  10.00000000000000000000000000000000 Inexact Rounded

+

+-- negative ulps

+dqadd6440 add   1   -77e-32      ->  0.99999999999999999999999999999923

+dqadd6441 add   1   -77e-33      ->  0.999999999999999999999999999999923

+dqadd6442 add   1   -77e-34      ->  0.9999999999999999999999999999999923

+dqadd6443 add   1   -77e-35      ->  0.9999999999999999999999999999999992 Inexact Rounded

+dqadd6444 add   1   -77e-36      ->  0.9999999999999999999999999999999999 Inexact Rounded

+dqadd6445 add   1   -77e-37      ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd6446 add   1   -77e-99      ->  1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd6450 add  10   -77e-32      ->   9.99999999999999999999999999999923

+dqadd6451 add  10   -77e-33      ->   9.999999999999999999999999999999923

+dqadd6452 add  10   -77e-34      ->   9.999999999999999999999999999999992 Inexact Rounded

+dqadd6453 add  10   -77e-35      ->   9.999999999999999999999999999999999 Inexact Rounded

+dqadd6454 add  10   -77e-36      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd6455 add  10   -77e-37      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd6456 add  10   -77e-99      ->  10.00000000000000000000000000000000 Inexact Rounded

+

+dqadd6460 add  -77e-32       1   ->  0.99999999999999999999999999999923

+dqadd6461 add  -77e-33       1   ->  0.999999999999999999999999999999923

+dqadd6462 add  -77e-34       1   ->  0.9999999999999999999999999999999923

+dqadd6463 add  -77e-35       1   ->  0.9999999999999999999999999999999992 Inexact Rounded

+dqadd6464 add  -77e-36       1   ->  0.9999999999999999999999999999999999 Inexact Rounded

+dqadd6465 add  -77e-37       1   ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd6466 add  -77e-99       1   ->  1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd6470 add  -77e-32      10   ->   9.99999999999999999999999999999923

+dqadd6471 add  -77e-33      10   ->   9.999999999999999999999999999999923

+dqadd6472 add  -77e-34      10   ->   9.999999999999999999999999999999992 Inexact Rounded

+dqadd6473 add  -77e-35      10   ->   9.999999999999999999999999999999999 Inexact Rounded

+dqadd6474 add  -77e-36      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd6475 add  -77e-37      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd6476 add  -77e-99      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+

+-- negative ulps

+dqadd6480 add  -1    77e-32      ->  -0.99999999999999999999999999999923

+dqadd6481 add  -1    77e-33      ->  -0.999999999999999999999999999999923

+dqadd6482 add  -1    77e-34      ->  -0.9999999999999999999999999999999923

+dqadd6483 add  -1    77e-35      ->  -0.9999999999999999999999999999999992 Inexact Rounded

+dqadd6484 add  -1    77e-36      ->  -0.9999999999999999999999999999999999 Inexact Rounded

+dqadd6485 add  -1    77e-37      ->  -1.000000000000000000000000000000000 Inexact Rounded

+dqadd6486 add  -1    77e-99      ->  -1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd6490 add -10    77e-32      ->   -9.99999999999999999999999999999923

+dqadd6491 add -10    77e-33      ->   -9.999999999999999999999999999999923

+dqadd6492 add -10    77e-34      ->   -9.999999999999999999999999999999992 Inexact Rounded

+dqadd6493 add -10    77e-35      ->   -9.999999999999999999999999999999999 Inexact Rounded

+dqadd6494 add -10    77e-36      ->  -10.00000000000000000000000000000000 Inexact Rounded

+dqadd6495 add -10    77e-37      ->  -10.00000000000000000000000000000000 Inexact Rounded

+dqadd6496 add -10    77e-99      ->  -10.00000000000000000000000000000000 Inexact Rounded

+

+dqadd6500 add   77e-32      -1   ->  -0.99999999999999999999999999999923

+dqadd6501 add   77e-33      -1   ->  -0.999999999999999999999999999999923

+dqadd6502 add   77e-34      -1   ->  -0.9999999999999999999999999999999923

+dqadd6503 add   77e-35      -1   ->  -0.9999999999999999999999999999999992 Inexact Rounded

+dqadd6504 add   77e-36      -1   ->  -0.9999999999999999999999999999999999 Inexact Rounded

+dqadd6505 add   77e-37      -1   ->  -1.000000000000000000000000000000000 Inexact Rounded

+dqadd6506 add   77e-99      -1   ->  -1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd6510 add   77e-32      -10  ->   -9.99999999999999999999999999999923

+dqadd6511 add   77e-33      -10  ->   -9.999999999999999999999999999999923

+dqadd6512 add   77e-34      -10  ->   -9.999999999999999999999999999999992 Inexact Rounded

+dqadd6513 add   77e-35      -10  ->   -9.999999999999999999999999999999999 Inexact Rounded

+dqadd6514 add   77e-36      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded

+dqadd6515 add   77e-37      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded

+dqadd6516 add   77e-99      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded

+

+-- and some more residue effects and different roundings

+rounding: half_up

+dqadd6540 add '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'

+dqadd6541 add '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6542 add '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6543 add '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6544 add '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6545 add '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6546 add '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6547 add '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6548 add '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6549 add '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6550 add '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6551 add '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6552 add '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6553 add '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6554 add '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6555 add '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6556 add '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'

+dqadd6557 add '9876543219876543216543210123456789' 1.000000001   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6558 add '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6559 add '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded

+

+rounding: half_even

+dqadd6560 add '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'

+dqadd6561 add '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6562 add '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6563 add '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6564 add '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6565 add '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6566 add '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6567 add '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd6568 add '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6569 add '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6570 add '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6571 add '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6572 add '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6573 add '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6574 add '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6575 add '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6576 add '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'

+dqadd6577 add '9876543219876543216543210123456789' 1.00000001    -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6578 add '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd6579 add '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded

+

+-- critical few with even bottom digit...

+dqadd7540 add '9876543219876543216543210123456788' 0.499999999   -> '9876543219876543216543210123456788' Inexact Rounded

+dqadd7541 add '9876543219876543216543210123456788' 0.5           -> '9876543219876543216543210123456788' Inexact Rounded

+dqadd7542 add '9876543219876543216543210123456788' 0.500000001   -> '9876543219876543216543210123456789' Inexact Rounded

+

+rounding: down

+dqadd7550 add '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'

+dqadd7551 add '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7552 add '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7553 add '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7554 add '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7555 add '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7556 add '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7557 add '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7558 add '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7559 add '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7560 add '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7561 add '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7562 add '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7563 add '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7564 add '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7565 add '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd7566 add '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'

+dqadd7567 add '9876543219876543216543210123456789' 1.00000001    -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd7568 add '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd7569 add '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded

+

+-- more zeros, etc.

+rounding: half_even

+

+dqadd7701 add 5.00 1.00E-3 -> 5.00100

+dqadd7702 add 00.00 0.000  -> 0.000

+dqadd7703 add 00.00 0E-3   -> 0.000

+dqadd7704 add 0E-3  00.00  -> 0.000

+

+dqadd7710 add 0E+3  00.00  -> 0.00

+dqadd7711 add 0E+3  00.0   -> 0.0

+dqadd7712 add 0E+3  00.    -> 0

+dqadd7713 add 0E+3  00.E+1 -> 0E+1

+dqadd7714 add 0E+3  00.E+2 -> 0E+2

+dqadd7715 add 0E+3  00.E+3 -> 0E+3

+dqadd7716 add 0E+3  00.E+4 -> 0E+3

+dqadd7717 add 0E+3  00.E+5 -> 0E+3

+dqadd7718 add 0E+3  -00.0   -> 0.0

+dqadd7719 add 0E+3  -00.    -> 0

+dqadd7731 add 0E+3  -00.E+1 -> 0E+1

+

+dqadd7720 add 00.00  0E+3  -> 0.00

+dqadd7721 add 00.0   0E+3  -> 0.0

+dqadd7722 add 00.    0E+3  -> 0

+dqadd7723 add 00.E+1 0E+3  -> 0E+1

+dqadd7724 add 00.E+2 0E+3  -> 0E+2

+dqadd7725 add 00.E+3 0E+3  -> 0E+3

+dqadd7726 add 00.E+4 0E+3  -> 0E+3

+dqadd7727 add 00.E+5 0E+3  -> 0E+3

+dqadd7728 add -00.00 0E+3  -> 0.00

+dqadd7729 add -00.0  0E+3  -> 0.0

+dqadd7730 add -00.   0E+3  -> 0

+

+dqadd7732 add  0     0     ->  0

+dqadd7733 add  0    -0     ->  0

+dqadd7734 add -0     0     ->  0

+dqadd7735 add -0    -0     -> -0     -- IEEE 854 special case

+

+dqadd7736 add  1    -1     ->  0

+dqadd7737 add -1    -1     -> -2

+dqadd7738 add  1     1     ->  2

+dqadd7739 add -1     1     ->  0

+

+dqadd7741 add  0    -1     -> -1

+dqadd7742 add -0    -1     -> -1

+dqadd7743 add  0     1     ->  1

+dqadd7744 add -0     1     ->  1

+dqadd7745 add -1     0     -> -1

+dqadd7746 add -1    -0     -> -1

+dqadd7747 add  1     0     ->  1

+dqadd7748 add  1    -0     ->  1

+

+dqadd7751 add  0.0  -1     -> -1.0

+dqadd7752 add -0.0  -1     -> -1.0

+dqadd7753 add  0.0   1     ->  1.0

+dqadd7754 add -0.0   1     ->  1.0

+dqadd7755 add -1.0   0     -> -1.0

+dqadd7756 add -1.0  -0     -> -1.0

+dqadd7757 add  1.0   0     ->  1.0

+dqadd7758 add  1.0  -0     ->  1.0

+

+dqadd7761 add  0    -1.0   -> -1.0

+dqadd7762 add -0    -1.0   -> -1.0

+dqadd7763 add  0     1.0   ->  1.0

+dqadd7764 add -0     1.0   ->  1.0

+dqadd7765 add -1     0.0   -> -1.0

+dqadd7766 add -1    -0.0   -> -1.0

+dqadd7767 add  1     0.0   ->  1.0

+dqadd7768 add  1    -0.0   ->  1.0

+

+dqadd7771 add  0.0  -1.0   -> -1.0

+dqadd7772 add -0.0  -1.0   -> -1.0

+dqadd7773 add  0.0   1.0   ->  1.0

+dqadd7774 add -0.0   1.0   ->  1.0

+dqadd7775 add -1.0   0.0   -> -1.0

+dqadd7776 add -1.0  -0.0   -> -1.0

+dqadd7777 add  1.0   0.0   ->  1.0

+dqadd7778 add  1.0  -0.0   ->  1.0

+

+-- Specials

+dqadd7780 add -Inf  -Inf   -> -Infinity

+dqadd7781 add -Inf  -1000  -> -Infinity

+dqadd7782 add -Inf  -1     -> -Infinity

+dqadd7783 add -Inf  -0     -> -Infinity

+dqadd7784 add -Inf   0     -> -Infinity

+dqadd7785 add -Inf   1     -> -Infinity

+dqadd7786 add -Inf   1000  -> -Infinity

+dqadd7787 add -1000 -Inf   -> -Infinity

+dqadd7788 add -Inf  -Inf   -> -Infinity

+dqadd7789 add -1    -Inf   -> -Infinity

+dqadd7790 add -0    -Inf   -> -Infinity

+dqadd7791 add  0    -Inf   -> -Infinity

+dqadd7792 add  1    -Inf   -> -Infinity

+dqadd7793 add  1000 -Inf   -> -Infinity

+dqadd7794 add  Inf  -Inf   ->  NaN  Invalid_operation

+

+dqadd7800 add  Inf  -Inf   ->  NaN  Invalid_operation

+dqadd7801 add  Inf  -1000  ->  Infinity

+dqadd7802 add  Inf  -1     ->  Infinity

+dqadd7803 add  Inf  -0     ->  Infinity

+dqadd7804 add  Inf   0     ->  Infinity

+dqadd7805 add  Inf   1     ->  Infinity

+dqadd7806 add  Inf   1000  ->  Infinity

+dqadd7807 add  Inf   Inf   ->  Infinity

+dqadd7808 add -1000  Inf   ->  Infinity

+dqadd7809 add -Inf   Inf   ->  NaN  Invalid_operation

+dqadd7810 add -1     Inf   ->  Infinity

+dqadd7811 add -0     Inf   ->  Infinity

+dqadd7812 add  0     Inf   ->  Infinity

+dqadd7813 add  1     Inf   ->  Infinity

+dqadd7814 add  1000  Inf   ->  Infinity

+dqadd7815 add  Inf   Inf   ->  Infinity

+

+dqadd7821 add  NaN -Inf    ->  NaN

+dqadd7822 add  NaN -1000   ->  NaN

+dqadd7823 add  NaN -1      ->  NaN

+dqadd7824 add  NaN -0      ->  NaN

+dqadd7825 add  NaN  0      ->  NaN

+dqadd7826 add  NaN  1      ->  NaN

+dqadd7827 add  NaN  1000   ->  NaN

+dqadd7828 add  NaN  Inf    ->  NaN

+dqadd7829 add  NaN  NaN    ->  NaN

+dqadd7830 add -Inf  NaN    ->  NaN

+dqadd7831 add -1000 NaN    ->  NaN

+dqadd7832 add -1    NaN    ->  NaN

+dqadd7833 add -0    NaN    ->  NaN

+dqadd7834 add  0    NaN    ->  NaN

+dqadd7835 add  1    NaN    ->  NaN

+dqadd7836 add  1000 NaN    ->  NaN

+dqadd7837 add  Inf  NaN    ->  NaN

+

+dqadd7841 add  sNaN -Inf   ->  NaN  Invalid_operation

+dqadd7842 add  sNaN -1000  ->  NaN  Invalid_operation

+dqadd7843 add  sNaN -1     ->  NaN  Invalid_operation

+dqadd7844 add  sNaN -0     ->  NaN  Invalid_operation

+dqadd7845 add  sNaN  0     ->  NaN  Invalid_operation

+dqadd7846 add  sNaN  1     ->  NaN  Invalid_operation

+dqadd7847 add  sNaN  1000  ->  NaN  Invalid_operation

+dqadd7848 add  sNaN  NaN   ->  NaN  Invalid_operation

+dqadd7849 add  sNaN sNaN   ->  NaN  Invalid_operation

+dqadd7850 add  NaN  sNaN   ->  NaN  Invalid_operation

+dqadd7851 add -Inf  sNaN   ->  NaN  Invalid_operation

+dqadd7852 add -1000 sNaN   ->  NaN  Invalid_operation

+dqadd7853 add -1    sNaN   ->  NaN  Invalid_operation

+dqadd7854 add -0    sNaN   ->  NaN  Invalid_operation

+dqadd7855 add  0    sNaN   ->  NaN  Invalid_operation

+dqadd7856 add  1    sNaN   ->  NaN  Invalid_operation

+dqadd7857 add  1000 sNaN   ->  NaN  Invalid_operation

+dqadd7858 add  Inf  sNaN   ->  NaN  Invalid_operation

+dqadd7859 add  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqadd7861 add  NaN1   -Inf    ->  NaN1

+dqadd7862 add +NaN2   -1000   ->  NaN2

+dqadd7863 add  NaN3    1000   ->  NaN3

+dqadd7864 add  NaN4    Inf    ->  NaN4

+dqadd7865 add  NaN5   +NaN6   ->  NaN5

+dqadd7866 add -Inf     NaN7   ->  NaN7

+dqadd7867 add -1000    NaN8   ->  NaN8

+dqadd7868 add  1000    NaN9   ->  NaN9

+dqadd7869 add  Inf    +NaN10  ->  NaN10

+dqadd7871 add  sNaN11  -Inf   ->  NaN11  Invalid_operation

+dqadd7872 add  sNaN12  -1000  ->  NaN12  Invalid_operation

+dqadd7873 add  sNaN13   1000  ->  NaN13  Invalid_operation

+dqadd7874 add  sNaN14   NaN17 ->  NaN14  Invalid_operation

+dqadd7875 add  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+dqadd7876 add  NaN16   sNaN19 ->  NaN19  Invalid_operation

+dqadd7877 add -Inf    +sNaN20 ->  NaN20  Invalid_operation

+dqadd7878 add -1000    sNaN21 ->  NaN21  Invalid_operation

+dqadd7879 add  1000    sNaN22 ->  NaN22  Invalid_operation

+dqadd7880 add  Inf     sNaN23 ->  NaN23  Invalid_operation

+dqadd7881 add +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+dqadd7882 add -NaN26    NaN28 -> -NaN26

+dqadd7883 add -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+dqadd7884 add  1000    -NaN30 -> -NaN30

+dqadd7885 add  1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- Here we explore near the boundary of rounding a subnormal to Nmin

+dqadd7575 add  1E-6143 -1E-6176 ->  9.99999999999999999999999999999999E-6144 Subnormal

+dqadd7576 add -1E-6143 +1E-6176 -> -9.99999999999999999999999999999999E-6144 Subnormal

+

+-- check overflow edge case

+--               1234567890123456

+dqadd7972 apply   9.999999999999999999999999999999999E+6144         -> 9.999999999999999999999999999999999E+6144

+dqadd7973 add     9.999999999999999999999999999999999E+6144  1      -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7974 add      9999999999999999999999999999999999E+6111  1      -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7975 add      9999999999999999999999999999999999E+6111  1E+6111  -> Infinity Overflow Inexact Rounded

+dqadd7976 add      9999999999999999999999999999999999E+6111  9E+6110  -> Infinity Overflow Inexact Rounded

+dqadd7977 add      9999999999999999999999999999999999E+6111  8E+6110  -> Infinity Overflow Inexact Rounded

+dqadd7978 add      9999999999999999999999999999999999E+6111  7E+6110  -> Infinity Overflow Inexact Rounded

+dqadd7979 add      9999999999999999999999999999999999E+6111  6E+6110  -> Infinity Overflow Inexact Rounded

+dqadd7980 add      9999999999999999999999999999999999E+6111  5E+6110  -> Infinity Overflow Inexact Rounded

+dqadd7981 add      9999999999999999999999999999999999E+6111  4E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7982 add      9999999999999999999999999999999999E+6111  3E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7983 add      9999999999999999999999999999999999E+6111  2E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7984 add      9999999999999999999999999999999999E+6111  1E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+

+dqadd7985 apply  -9.999999999999999999999999999999999E+6144         -> -9.999999999999999999999999999999999E+6144

+dqadd7986 add    -9.999999999999999999999999999999999E+6144 -1      -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7987 add     -9999999999999999999999999999999999E+6111 -1      -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7988 add     -9999999999999999999999999999999999E+6111 -1E+6111  -> -Infinity Overflow Inexact Rounded

+dqadd7989 add     -9999999999999999999999999999999999E+6111 -9E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd7990 add     -9999999999999999999999999999999999E+6111 -8E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd7991 add     -9999999999999999999999999999999999E+6111 -7E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd7992 add     -9999999999999999999999999999999999E+6111 -6E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd7993 add     -9999999999999999999999999999999999E+6111 -5E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd7994 add     -9999999999999999999999999999999999E+6111 -4E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7995 add     -9999999999999999999999999999999999E+6111 -3E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7996 add     -9999999999999999999999999999999999E+6111 -2E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd7997 add     -9999999999999999999999999999999999E+6111 -1E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+

+-- And for round down full and subnormal results

+rounding:     down

+dqadd71100 add 1e+2 -1e-6143    -> 99.99999999999999999999999999999999 Rounded Inexact

+dqadd71101 add 1e+1 -1e-6143    -> 9.999999999999999999999999999999999  Rounded Inexact

+dqadd71103 add   +1 -1e-6143    -> 0.9999999999999999999999999999999999  Rounded Inexact

+dqadd71104 add 1e-1 -1e-6143    -> 0.09999999999999999999999999999999999  Rounded Inexact

+dqadd71105 add 1e-2 -1e-6143    -> 0.009999999999999999999999999999999999  Rounded Inexact

+dqadd71106 add 1e-3 -1e-6143    -> 0.0009999999999999999999999999999999999  Rounded Inexact

+dqadd71107 add 1e-4 -1e-6143    -> 0.00009999999999999999999999999999999999  Rounded Inexact

+dqadd71108 add 1e-5 -1e-6143    -> 0.000009999999999999999999999999999999999  Rounded Inexact

+dqadd71109 add 1e-6 -1e-6143    -> 9.999999999999999999999999999999999E-7  Rounded Inexact

+

+rounding:     ceiling

+dqadd71110 add -1e+2 +1e-6143   -> -99.99999999999999999999999999999999 Rounded Inexact

+dqadd71111 add -1e+1 +1e-6143   -> -9.999999999999999999999999999999999  Rounded Inexact

+dqadd71113 add    -1 +1e-6143   -> -0.9999999999999999999999999999999999  Rounded Inexact

+dqadd71114 add -1e-1 +1e-6143   -> -0.09999999999999999999999999999999999  Rounded Inexact

+dqadd71115 add -1e-2 +1e-6143   -> -0.009999999999999999999999999999999999  Rounded Inexact

+dqadd71116 add -1e-3 +1e-6143   -> -0.0009999999999999999999999999999999999  Rounded Inexact

+dqadd71117 add -1e-4 +1e-6143   -> -0.00009999999999999999999999999999999999  Rounded Inexact

+dqadd71118 add -1e-5 +1e-6143   -> -0.000009999999999999999999999999999999999  Rounded Inexact

+dqadd71119 add -1e-6 +1e-6143   -> -9.999999999999999999999999999999999E-7  Rounded Inexact

+

+-- tests based on Gunnar Degnbol's edge case

+rounding:     half_even

+

+dqadd71300 add 1E34  -0.5                 ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71310 add 1E34  -0.51                ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71311 add 1E34  -0.501               ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71312 add 1E34  -0.5001              ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71313 add 1E34  -0.50001             ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71314 add 1E34  -0.500001            ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71315 add 1E34  -0.5000001           ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71316 add 1E34  -0.50000001          ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71317 add 1E34  -0.500000001         ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71318 add 1E34  -0.5000000001        ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71319 add 1E34  -0.50000000001       ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71320 add 1E34  -0.500000000001      ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71321 add 1E34  -0.5000000000001     ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71322 add 1E34  -0.50000000000001    ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71323 add 1E34  -0.500000000000001   ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71324 add 1E34  -0.5000000000000001  ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71325 add 1E34  -0.5000000000000000  ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71326 add 1E34  -0.500000000000000   ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71327 add 1E34  -0.50000000000000    ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71328 add 1E34  -0.5000000000000     ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71329 add 1E34  -0.500000000000      ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71330 add 1E34  -0.50000000000       ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71331 add 1E34  -0.5000000000        ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71332 add 1E34  -0.500000000         ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71333 add 1E34  -0.50000000          ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71334 add 1E34  -0.5000000           ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71335 add 1E34  -0.500000            ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71336 add 1E34  -0.50000             ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71337 add 1E34  -0.5000              ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71338 add 1E34  -0.500               ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71339 add 1E34  -0.50                ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+

+dqadd71340 add 1E34  -5000000.000010001   ->  9999999999999999999999999995000000      Inexact Rounded

+dqadd71341 add 1E34  -5000000.000000001   ->  9999999999999999999999999995000000      Inexact Rounded

+

+dqadd71349 add 9999999999999999999999999999999999 0.4                 ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71350 add 9999999999999999999999999999999999 0.49                ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71351 add 9999999999999999999999999999999999 0.499               ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71352 add 9999999999999999999999999999999999 0.4999              ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71353 add 9999999999999999999999999999999999 0.49999             ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71354 add 9999999999999999999999999999999999 0.499999            ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71355 add 9999999999999999999999999999999999 0.4999999           ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71356 add 9999999999999999999999999999999999 0.49999999          ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71357 add 9999999999999999999999999999999999 0.499999999         ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71358 add 9999999999999999999999999999999999 0.4999999999        ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71359 add 9999999999999999999999999999999999 0.49999999999       ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71360 add 9999999999999999999999999999999999 0.499999999999      ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71361 add 9999999999999999999999999999999999 0.4999999999999     ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71362 add 9999999999999999999999999999999999 0.49999999999999    ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71363 add 9999999999999999999999999999999999 0.499999999999999   ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71364 add 9999999999999999999999999999999999 0.4999999999999999  ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd71365 add 9999999999999999999999999999999999 0.5000000000000000  ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71367 add 9999999999999999999999999999999999 0.500000000000000   ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71368 add 9999999999999999999999999999999999 0.50000000000000    ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71369 add 9999999999999999999999999999999999 0.5000000000000     ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71370 add 9999999999999999999999999999999999 0.500000000000      ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71371 add 9999999999999999999999999999999999 0.50000000000       ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71372 add 9999999999999999999999999999999999 0.5000000000        ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71373 add 9999999999999999999999999999999999 0.500000000         ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71374 add 9999999999999999999999999999999999 0.50000000          ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71375 add 9999999999999999999999999999999999 0.5000000           ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71376 add 9999999999999999999999999999999999 0.500000            ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71377 add 9999999999999999999999999999999999 0.50000             ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71378 add 9999999999999999999999999999999999 0.5000              ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71379 add 9999999999999999999999999999999999 0.500               ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71380 add 9999999999999999999999999999999999 0.50                ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71381 add 9999999999999999999999999999999999 0.5                 ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71382 add 9999999999999999999999999999999999 0.5000000000000001  ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71383 add 9999999999999999999999999999999999 0.500000000000001   ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71384 add 9999999999999999999999999999999999 0.50000000000001    ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71385 add 9999999999999999999999999999999999 0.5000000000001     ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71386 add 9999999999999999999999999999999999 0.500000000001      ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71387 add 9999999999999999999999999999999999 0.50000000001       ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71388 add 9999999999999999999999999999999999 0.5000000001        ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71389 add 9999999999999999999999999999999999 0.500000001         ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71390 add 9999999999999999999999999999999999 0.50000001          ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71391 add 9999999999999999999999999999999999 0.5000001           ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71392 add 9999999999999999999999999999999999 0.500001            ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71393 add 9999999999999999999999999999999999 0.50001             ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71394 add 9999999999999999999999999999999999 0.5001              ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71395 add 9999999999999999999999999999999999 0.501               ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd71396 add 9999999999999999999999999999999999 0.51                ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+

+-- More GD edge cases, where difference between the unadjusted

+-- exponents is larger than the maximum precision and one side is 0

+dqadd71420 add  0 1.123456789987654321123456789012345     -> 1.123456789987654321123456789012345

+dqadd71421 add  0 1.123456789987654321123456789012345E-1  -> 0.1123456789987654321123456789012345

+dqadd71422 add  0 1.123456789987654321123456789012345E-2  -> 0.01123456789987654321123456789012345

+dqadd71423 add  0 1.123456789987654321123456789012345E-3  -> 0.001123456789987654321123456789012345

+dqadd71424 add  0 1.123456789987654321123456789012345E-4  -> 0.0001123456789987654321123456789012345

+dqadd71425 add  0 1.123456789987654321123456789012345E-5  -> 0.00001123456789987654321123456789012345

+dqadd71426 add  0 1.123456789987654321123456789012345E-6  -> 0.000001123456789987654321123456789012345

+dqadd71427 add  0 1.123456789987654321123456789012345E-7  -> 1.123456789987654321123456789012345E-7

+dqadd71428 add  0 1.123456789987654321123456789012345E-8  -> 1.123456789987654321123456789012345E-8

+dqadd71429 add  0 1.123456789987654321123456789012345E-9  -> 1.123456789987654321123456789012345E-9

+dqadd71430 add  0 1.123456789987654321123456789012345E-10 -> 1.123456789987654321123456789012345E-10

+dqadd71431 add  0 1.123456789987654321123456789012345E-11 -> 1.123456789987654321123456789012345E-11

+dqadd71432 add  0 1.123456789987654321123456789012345E-12 -> 1.123456789987654321123456789012345E-12

+dqadd71433 add  0 1.123456789987654321123456789012345E-13 -> 1.123456789987654321123456789012345E-13

+dqadd71434 add  0 1.123456789987654321123456789012345E-14 -> 1.123456789987654321123456789012345E-14

+dqadd71435 add  0 1.123456789987654321123456789012345E-15 -> 1.123456789987654321123456789012345E-15

+dqadd71436 add  0 1.123456789987654321123456789012345E-16 -> 1.123456789987654321123456789012345E-16

+dqadd71437 add  0 1.123456789987654321123456789012345E-17 -> 1.123456789987654321123456789012345E-17

+dqadd71438 add  0 1.123456789987654321123456789012345E-18 -> 1.123456789987654321123456789012345E-18

+dqadd71439 add  0 1.123456789987654321123456789012345E-19 -> 1.123456789987654321123456789012345E-19

+dqadd71440 add  0 1.123456789987654321123456789012345E-20 -> 1.123456789987654321123456789012345E-20

+dqadd71441 add  0 1.123456789987654321123456789012345E-21 -> 1.123456789987654321123456789012345E-21

+dqadd71442 add  0 1.123456789987654321123456789012345E-22 -> 1.123456789987654321123456789012345E-22

+dqadd71443 add  0 1.123456789987654321123456789012345E-23 -> 1.123456789987654321123456789012345E-23

+dqadd71444 add  0 1.123456789987654321123456789012345E-24 -> 1.123456789987654321123456789012345E-24

+dqadd71445 add  0 1.123456789987654321123456789012345E-25 -> 1.123456789987654321123456789012345E-25

+dqadd71446 add  0 1.123456789987654321123456789012345E-26 -> 1.123456789987654321123456789012345E-26

+dqadd71447 add  0 1.123456789987654321123456789012345E-27 -> 1.123456789987654321123456789012345E-27

+dqadd71448 add  0 1.123456789987654321123456789012345E-28 -> 1.123456789987654321123456789012345E-28

+dqadd71449 add  0 1.123456789987654321123456789012345E-29 -> 1.123456789987654321123456789012345E-29

+dqadd71450 add  0 1.123456789987654321123456789012345E-30 -> 1.123456789987654321123456789012345E-30

+dqadd71451 add  0 1.123456789987654321123456789012345E-31 -> 1.123456789987654321123456789012345E-31

+dqadd71452 add  0 1.123456789987654321123456789012345E-32 -> 1.123456789987654321123456789012345E-32

+dqadd71453 add  0 1.123456789987654321123456789012345E-33 -> 1.123456789987654321123456789012345E-33

+dqadd71454 add  0 1.123456789987654321123456789012345E-34 -> 1.123456789987654321123456789012345E-34

+dqadd71455 add  0 1.123456789987654321123456789012345E-35 -> 1.123456789987654321123456789012345E-35

+dqadd71456 add  0 1.123456789987654321123456789012345E-36 -> 1.123456789987654321123456789012345E-36

+

+-- same, reversed 0

+dqadd71460 add 1.123456789987654321123456789012345     0 -> 1.123456789987654321123456789012345

+dqadd71461 add 1.123456789987654321123456789012345E-1  0 -> 0.1123456789987654321123456789012345

+dqadd71462 add 1.123456789987654321123456789012345E-2  0 -> 0.01123456789987654321123456789012345

+dqadd71463 add 1.123456789987654321123456789012345E-3  0 -> 0.001123456789987654321123456789012345

+dqadd71464 add 1.123456789987654321123456789012345E-4  0 -> 0.0001123456789987654321123456789012345

+dqadd71465 add 1.123456789987654321123456789012345E-5  0 -> 0.00001123456789987654321123456789012345

+dqadd71466 add 1.123456789987654321123456789012345E-6  0 -> 0.000001123456789987654321123456789012345

+dqadd71467 add 1.123456789987654321123456789012345E-7  0 -> 1.123456789987654321123456789012345E-7

+dqadd71468 add 1.123456789987654321123456789012345E-8  0 -> 1.123456789987654321123456789012345E-8

+dqadd71469 add 1.123456789987654321123456789012345E-9  0 -> 1.123456789987654321123456789012345E-9

+dqadd71470 add 1.123456789987654321123456789012345E-10 0 -> 1.123456789987654321123456789012345E-10

+dqadd71471 add 1.123456789987654321123456789012345E-11 0 -> 1.123456789987654321123456789012345E-11

+dqadd71472 add 1.123456789987654321123456789012345E-12 0 -> 1.123456789987654321123456789012345E-12

+dqadd71473 add 1.123456789987654321123456789012345E-13 0 -> 1.123456789987654321123456789012345E-13

+dqadd71474 add 1.123456789987654321123456789012345E-14 0 -> 1.123456789987654321123456789012345E-14

+dqadd71475 add 1.123456789987654321123456789012345E-15 0 -> 1.123456789987654321123456789012345E-15

+dqadd71476 add 1.123456789987654321123456789012345E-16 0 -> 1.123456789987654321123456789012345E-16

+dqadd71477 add 1.123456789987654321123456789012345E-17 0 -> 1.123456789987654321123456789012345E-17

+dqadd71478 add 1.123456789987654321123456789012345E-18 0 -> 1.123456789987654321123456789012345E-18

+dqadd71479 add 1.123456789987654321123456789012345E-19 0 -> 1.123456789987654321123456789012345E-19

+dqadd71480 add 1.123456789987654321123456789012345E-20 0 -> 1.123456789987654321123456789012345E-20

+dqadd71481 add 1.123456789987654321123456789012345E-21 0 -> 1.123456789987654321123456789012345E-21

+dqadd71482 add 1.123456789987654321123456789012345E-22 0 -> 1.123456789987654321123456789012345E-22

+dqadd71483 add 1.123456789987654321123456789012345E-23 0 -> 1.123456789987654321123456789012345E-23

+dqadd71484 add 1.123456789987654321123456789012345E-24 0 -> 1.123456789987654321123456789012345E-24

+dqadd71485 add 1.123456789987654321123456789012345E-25 0 -> 1.123456789987654321123456789012345E-25

+dqadd71486 add 1.123456789987654321123456789012345E-26 0 -> 1.123456789987654321123456789012345E-26

+dqadd71487 add 1.123456789987654321123456789012345E-27 0 -> 1.123456789987654321123456789012345E-27

+dqadd71488 add 1.123456789987654321123456789012345E-28 0 -> 1.123456789987654321123456789012345E-28

+dqadd71489 add 1.123456789987654321123456789012345E-29 0 -> 1.123456789987654321123456789012345E-29

+dqadd71490 add 1.123456789987654321123456789012345E-30 0 -> 1.123456789987654321123456789012345E-30

+dqadd71491 add 1.123456789987654321123456789012345E-31 0 -> 1.123456789987654321123456789012345E-31

+dqadd71492 add 1.123456789987654321123456789012345E-32 0 -> 1.123456789987654321123456789012345E-32

+dqadd71493 add 1.123456789987654321123456789012345E-33 0 -> 1.123456789987654321123456789012345E-33

+dqadd71494 add 1.123456789987654321123456789012345E-34 0 -> 1.123456789987654321123456789012345E-34

+dqadd71495 add 1.123456789987654321123456789012345E-35 0 -> 1.123456789987654321123456789012345E-35

+dqadd71496 add 1.123456789987654321123456789012345E-36 0 -> 1.123456789987654321123456789012345E-36

+

+-- same, Es on the 0

+dqadd71500 add 1.123456789987654321123456789012345  0E-0   -> 1.123456789987654321123456789012345

+dqadd71501 add 1.123456789987654321123456789012345  0E-1   -> 1.123456789987654321123456789012345

+dqadd71502 add 1.123456789987654321123456789012345  0E-2   -> 1.123456789987654321123456789012345

+dqadd71503 add 1.123456789987654321123456789012345  0E-3   -> 1.123456789987654321123456789012345

+dqadd71504 add 1.123456789987654321123456789012345  0E-4   -> 1.123456789987654321123456789012345

+dqadd71505 add 1.123456789987654321123456789012345  0E-5   -> 1.123456789987654321123456789012345

+dqadd71506 add 1.123456789987654321123456789012345  0E-6   -> 1.123456789987654321123456789012345

+dqadd71507 add 1.123456789987654321123456789012345  0E-7   -> 1.123456789987654321123456789012345

+dqadd71508 add 1.123456789987654321123456789012345  0E-8   -> 1.123456789987654321123456789012345

+dqadd71509 add 1.123456789987654321123456789012345  0E-9   -> 1.123456789987654321123456789012345

+dqadd71510 add 1.123456789987654321123456789012345  0E-10  -> 1.123456789987654321123456789012345

+dqadd71511 add 1.123456789987654321123456789012345  0E-11  -> 1.123456789987654321123456789012345

+dqadd71512 add 1.123456789987654321123456789012345  0E-12  -> 1.123456789987654321123456789012345

+dqadd71513 add 1.123456789987654321123456789012345  0E-13  -> 1.123456789987654321123456789012345

+dqadd71514 add 1.123456789987654321123456789012345  0E-14  -> 1.123456789987654321123456789012345

+dqadd71515 add 1.123456789987654321123456789012345  0E-15  -> 1.123456789987654321123456789012345

+dqadd71516 add 1.123456789987654321123456789012345  0E-16  -> 1.123456789987654321123456789012345

+dqadd71517 add 1.123456789987654321123456789012345  0E-17  -> 1.123456789987654321123456789012345

+dqadd71518 add 1.123456789987654321123456789012345  0E-18  -> 1.123456789987654321123456789012345

+dqadd71519 add 1.123456789987654321123456789012345  0E-19  -> 1.123456789987654321123456789012345

+dqadd71520 add 1.123456789987654321123456789012345  0E-20  -> 1.123456789987654321123456789012345

+dqadd71521 add 1.123456789987654321123456789012345  0E-21  -> 1.123456789987654321123456789012345

+dqadd71522 add 1.123456789987654321123456789012345  0E-22  -> 1.123456789987654321123456789012345

+dqadd71523 add 1.123456789987654321123456789012345  0E-23  -> 1.123456789987654321123456789012345

+dqadd71524 add 1.123456789987654321123456789012345  0E-24  -> 1.123456789987654321123456789012345

+dqadd71525 add 1.123456789987654321123456789012345  0E-25  -> 1.123456789987654321123456789012345

+dqadd71526 add 1.123456789987654321123456789012345  0E-26  -> 1.123456789987654321123456789012345

+dqadd71527 add 1.123456789987654321123456789012345  0E-27  -> 1.123456789987654321123456789012345

+dqadd71528 add 1.123456789987654321123456789012345  0E-28  -> 1.123456789987654321123456789012345

+dqadd71529 add 1.123456789987654321123456789012345  0E-29  -> 1.123456789987654321123456789012345

+dqadd71530 add 1.123456789987654321123456789012345  0E-30  -> 1.123456789987654321123456789012345

+dqadd71531 add 1.123456789987654321123456789012345  0E-31  -> 1.123456789987654321123456789012345

+dqadd71532 add 1.123456789987654321123456789012345  0E-32  -> 1.123456789987654321123456789012345

+dqadd71533 add 1.123456789987654321123456789012345  0E-33  -> 1.123456789987654321123456789012345

+-- next four flag Rounded because the 0 extends the result

+dqadd71534 add 1.123456789987654321123456789012345  0E-34  -> 1.123456789987654321123456789012345 Rounded

+dqadd71535 add 1.123456789987654321123456789012345  0E-35  -> 1.123456789987654321123456789012345 Rounded

+dqadd71536 add 1.123456789987654321123456789012345  0E-36  -> 1.123456789987654321123456789012345 Rounded

+dqadd71537 add 1.123456789987654321123456789012345  0E-37  -> 1.123456789987654321123456789012345 Rounded

+

+-- sum of two opposite-sign operands is exactly 0 and floor => -0

+rounding:    half_up

+-- exact zeros from zeros

+dqadd71600 add  0        0E-19  ->  0E-19

+dqadd71601 add -0        0E-19  ->  0E-19

+dqadd71602 add  0       -0E-19  ->  0E-19

+dqadd71603 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd71611 add -11      11    ->  0

+dqadd71612 add  11     -11    ->  0

+

+rounding:    half_down

+-- exact zeros from zeros

+dqadd71620 add  0        0E-19  ->  0E-19

+dqadd71621 add -0        0E-19  ->  0E-19

+dqadd71622 add  0       -0E-19  ->  0E-19

+dqadd71623 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd71631 add -11      11    ->  0

+dqadd71632 add  11     -11    ->  0

+

+rounding:    half_even

+-- exact zeros from zeros

+dqadd71640 add  0        0E-19  ->  0E-19

+dqadd71641 add -0        0E-19  ->  0E-19

+dqadd71642 add  0       -0E-19  ->  0E-19

+dqadd71643 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd71651 add -11      11    ->  0

+dqadd71652 add  11     -11    ->  0

+

+rounding:    up

+-- exact zeros from zeros

+dqadd71660 add  0        0E-19  ->  0E-19

+dqadd71661 add -0        0E-19  ->  0E-19

+dqadd71662 add  0       -0E-19  ->  0E-19

+dqadd71663 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd71671 add -11      11    ->  0

+dqadd71672 add  11     -11    ->  0

+

+rounding:    down

+-- exact zeros from zeros

+dqadd71680 add  0        0E-19  ->  0E-19

+dqadd71681 add -0        0E-19  ->  0E-19

+dqadd71682 add  0       -0E-19  ->  0E-19

+dqadd71683 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd71691 add -11      11    ->  0

+dqadd71692 add  11     -11    ->  0

+

+rounding:    ceiling

+-- exact zeros from zeros

+dqadd71700 add  0        0E-19  ->  0E-19

+dqadd71701 add -0        0E-19  ->  0E-19

+dqadd71702 add  0       -0E-19  ->  0E-19

+dqadd71703 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd71711 add -11      11    ->  0

+dqadd71712 add  11     -11    ->  0

+

+-- and the extra-special ugly case; unusual minuses marked by -- *

+rounding:    floor

+-- exact zeros from zeros

+dqadd71720 add  0        0E-19  ->  0E-19

+dqadd71721 add -0        0E-19  -> -0E-19           -- *

+dqadd71722 add  0       -0E-19  -> -0E-19           -- *

+dqadd71723 add -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd71731 add -11      11    ->  -0                -- *

+dqadd71732 add  11     -11    ->  -0                -- *

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+dqadd71741 add 130E-2    120E-2    -> 2.50

+dqadd71742 add 130E-2    12E-1     -> 2.50

+dqadd71743 add 130E-2    1E0       -> 2.30

+dqadd71744 add 1E2       1E4       -> 1.01E+4

+dqadd71745 add 130E-2   -120E-2 -> 0.10

+dqadd71746 add 130E-2   -12E-1  -> 0.10

+dqadd71747 add 130E-2   -1E0    -> 0.30

+dqadd71748 add 1E2      -1E4    -> -9.9E+3

+

+-- Gappy coefficients; check residue handling even with full coefficient gap

+rounding: half_even

+

+dqadd75001 add 1239876543211234567894567890123456 1      -> 1239876543211234567894567890123457

+dqadd75002 add 1239876543211234567894567890123456 0.6    -> 1239876543211234567894567890123457  Inexact Rounded

+dqadd75003 add 1239876543211234567894567890123456 0.06   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75004 add 1239876543211234567894567890123456 6E-3   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75005 add 1239876543211234567894567890123456 6E-4   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75006 add 1239876543211234567894567890123456 6E-5   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75007 add 1239876543211234567894567890123456 6E-6   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75008 add 1239876543211234567894567890123456 6E-7   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75009 add 1239876543211234567894567890123456 6E-8   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75010 add 1239876543211234567894567890123456 6E-9   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75011 add 1239876543211234567894567890123456 6E-10  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75012 add 1239876543211234567894567890123456 6E-11  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75013 add 1239876543211234567894567890123456 6E-12  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75014 add 1239876543211234567894567890123456 6E-13  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75015 add 1239876543211234567894567890123456 6E-14  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75016 add 1239876543211234567894567890123456 6E-15  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75017 add 1239876543211234567894567890123456 6E-16  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75018 add 1239876543211234567894567890123456 6E-17  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75019 add 1239876543211234567894567890123456 6E-18  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75020 add 1239876543211234567894567890123456 6E-19  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd75021 add 1239876543211234567894567890123456 6E-20  -> 1239876543211234567894567890123456  Inexact Rounded

+

+-- widening second argument at gap

+dqadd75030 add 12398765432112345678945678 1                       -> 12398765432112345678945679

+dqadd75031 add 12398765432112345678945678 0.1                     -> 12398765432112345678945678.1

+dqadd75032 add 12398765432112345678945678 0.12                    -> 12398765432112345678945678.12

+dqadd75033 add 12398765432112345678945678 0.123                   -> 12398765432112345678945678.123

+dqadd75034 add 12398765432112345678945678 0.1234                  -> 12398765432112345678945678.1234

+dqadd75035 add 12398765432112345678945678 0.12345                 -> 12398765432112345678945678.12345

+dqadd75036 add 12398765432112345678945678 0.123456                -> 12398765432112345678945678.123456

+dqadd75037 add 12398765432112345678945678 0.1234567               -> 12398765432112345678945678.1234567

+dqadd75038 add 12398765432112345678945678 0.12345678              -> 12398765432112345678945678.12345678

+dqadd75039 add 12398765432112345678945678 0.123456789             -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd75040 add 12398765432112345678945678 0.123456785             -> 12398765432112345678945678.12345678 Inexact Rounded

+dqadd75041 add 12398765432112345678945678 0.1234567850            -> 12398765432112345678945678.12345678 Inexact Rounded

+dqadd75042 add 12398765432112345678945678 0.1234567851            -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd75043 add 12398765432112345678945678 0.12345678501           -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd75044 add 12398765432112345678945678 0.123456785001          -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd75045 add 12398765432112345678945678 0.1234567850001         -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd75046 add 12398765432112345678945678 0.12345678500001        -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd75047 add 12398765432112345678945678 0.123456785000001       -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd75048 add 12398765432112345678945678 0.1234567850000001      -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd75049 add 12398765432112345678945678 0.1234567850000000      -> 12398765432112345678945678.12345678 Inexact Rounded

+--                               90123456

+rounding: half_even

+dqadd75050 add 12398765432112345678945678 0.0234567750000000      -> 12398765432112345678945678.02345678 Inexact Rounded

+dqadd75051 add 12398765432112345678945678 0.0034567750000000      -> 12398765432112345678945678.00345678 Inexact Rounded

+dqadd75052 add 12398765432112345678945678 0.0004567750000000      -> 12398765432112345678945678.00045678 Inexact Rounded

+dqadd75053 add 12398765432112345678945678 0.0000567750000000      -> 12398765432112345678945678.00005678 Inexact Rounded

+dqadd75054 add 12398765432112345678945678 0.0000067750000000      -> 12398765432112345678945678.00000678 Inexact Rounded

+dqadd75055 add 12398765432112345678945678 0.0000007750000000      -> 12398765432112345678945678.00000078 Inexact Rounded

+dqadd75056 add 12398765432112345678945678 0.0000000750000000      -> 12398765432112345678945678.00000008 Inexact Rounded

+dqadd75057 add 12398765432112345678945678 0.0000000050000000      -> 12398765432112345678945678.00000000 Inexact Rounded

+dqadd75060 add 12398765432112345678945678 0.0234567750000001      -> 12398765432112345678945678.02345678 Inexact Rounded

+dqadd75061 add 12398765432112345678945678 0.0034567750000001      -> 12398765432112345678945678.00345678 Inexact Rounded

+dqadd75062 add 12398765432112345678945678 0.0004567750000001      -> 12398765432112345678945678.00045678 Inexact Rounded

+dqadd75063 add 12398765432112345678945678 0.0000567750000001      -> 12398765432112345678945678.00005678 Inexact Rounded

+dqadd75064 add 12398765432112345678945678 0.0000067750000001      -> 12398765432112345678945678.00000678 Inexact Rounded

+dqadd75065 add 12398765432112345678945678 0.0000007750000001      -> 12398765432112345678945678.00000078 Inexact Rounded

+dqadd75066 add 12398765432112345678945678 0.0000000750000001      -> 12398765432112345678945678.00000008 Inexact Rounded

+dqadd75067 add 12398765432112345678945678 0.0000000050000001      -> 12398765432112345678945678.00000001 Inexact Rounded

+-- far-out residues (full coefficient gap is 16+15 digits)

+rounding: up

+dqadd75070 add 12398765432112345678945678 1E-8                    -> 12398765432112345678945678.00000001

+dqadd75071 add 12398765432112345678945678 1E-9                    -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75072 add 12398765432112345678945678 1E-10                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75073 add 12398765432112345678945678 1E-11                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75074 add 12398765432112345678945678 1E-12                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75075 add 12398765432112345678945678 1E-13                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75076 add 12398765432112345678945678 1E-14                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75077 add 12398765432112345678945678 1E-15                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75078 add 12398765432112345678945678 1E-16                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75079 add 12398765432112345678945678 1E-17                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75080 add 12398765432112345678945678 1E-18                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75081 add 12398765432112345678945678 1E-19                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75082 add 12398765432112345678945678 1E-20                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75083 add 12398765432112345678945678 1E-25                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75084 add 12398765432112345678945678 1E-30                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75085 add 12398765432112345678945678 1E-31                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75086 add 12398765432112345678945678 1E-32                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75087 add 12398765432112345678945678 1E-33                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75088 add 12398765432112345678945678 1E-34                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd75089 add 12398765432112345678945678 1E-35                   -> 12398765432112345678945678.00000001 Inexact Rounded

+

+-- Null tests

+dqadd9990 add 10  # -> NaN Invalid_operation

+dqadd9991 add  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqAnd.decTest b/Lib/test/decimaltestdata/dqAnd.decTest
new file mode 100644
index 0000000..e00d44d
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqAnd.decTest
@@ -0,0 +1,420 @@
+------------------------------------------------------------------------

+-- dqAnd.decTest -- digitwise logical AND for decQuads                --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check (truth table)

+dqand001 and             0    0 ->    0

+dqand002 and             0    1 ->    0

+dqand003 and             1    0 ->    0

+dqand004 and             1    1 ->    1

+dqand005 and          1100 1010 -> 1000

+-- and at msd and msd-1

+--           1234567890123456789012345678901234

+dqand006 and 0000000000000000000000000000000000 0000000000000000000000000000000000 ->                  0

+dqand007 and 0000000000000000000000000000000000 1000000000000000000000000000000000 ->                  0

+dqand008 and 1000000000000000000000000000000000 0000000000000000000000000000000000 ->                  0

+dqand009 and 1000000000000000000000000000000000 1000000000000000000000000000000000 ->   1000000000000000000000000000000000

+dqand010 and 0000000000000000000000000000000000 0000000000000000000000000000000000 ->                  0

+dqand011 and 0000000000000000000000000000000000 0100000000000000000000000000000000 ->                  0

+dqand012 and 0100000000000000000000000000000000 0000000000000000000000000000000000 ->                  0

+dqand013 and 0100000000000000000000000000000000 0100000000000000000000000000000000 ->    100000000000000000000000000000000

+

+-- Various lengths

+--           1234567890123456789012345678901234

+

+dqand601 and 0111111111111111111111111111111111 1111111111111111111111111111111111  ->  111111111111111111111111111111111

+dqand602 and 1011111111111111111111111111111111 1111111111111111111111111111111111  -> 1011111111111111111111111111111111

+dqand603 and 1101111111111111111111111111111111 1111111111111111111111111111111111  -> 1101111111111111111111111111111111

+dqand604 and 1110111111111111111111111111111111 1111111111111111111111111111111111  -> 1110111111111111111111111111111111

+dqand605 and 1111011111111111111111111111111111 1111111111111111111111111111111111  -> 1111011111111111111111111111111111

+dqand606 and 1111101111111111111111111111111111 1111111111111111111111111111111111  -> 1111101111111111111111111111111111

+dqand607 and 1111110111111111111111111111111111 1111111111111111111111111111111111  -> 1111110111111111111111111111111111

+dqand608 and 1111111011111111111111111111111111 1111111111111111111111111111111111  -> 1111111011111111111111111111111111

+dqand609 and 1111111101111111111111111111111111 1111111111111111111111111111111111  -> 1111111101111111111111111111111111

+dqand610 and 1111111110111111111111111111111111 1111111111111111111111111111111111  -> 1111111110111111111111111111111111

+dqand611 and 1111111111011111111111111111111111 1111111111111111111111111111111111  -> 1111111111011111111111111111111111

+dqand612 and 1111111111101111111111111111111111 1111111111111111111111111111111111  -> 1111111111101111111111111111111111

+dqand613 and 1111111111110111111111111111111111 1111111111111111111111111111111111  -> 1111111111110111111111111111111111

+dqand614 and 1111111111111011111111111111111111 1111111111111111111111111111111111  -> 1111111111111011111111111111111111

+dqand615 and 1111111111111101111111111111111111 1111111111111111111111111111111111  -> 1111111111111101111111111111111111

+dqand616 and 1111111111111110111111111111111111 1111111111111111111111111111111111  -> 1111111111111110111111111111111111

+dqand617 and 1111111111111111011111111111111111 1111111111111111111111111111111111  -> 1111111111111111011111111111111111

+dqand618 and 1111111111111111101111111111111111 1111111111111111111111111111111111  -> 1111111111111111101111111111111111

+dqand619 and 1111111111111111110111111111111111 1111111111111111111111111111111111  -> 1111111111111111110111111111111111

+dqand620 and 1111111111111111111011111111111111 1111111111111111111111111111111111  -> 1111111111111111111011111111111111

+dqand621 and 1111111111111111111101111111111111 1111111111111111111111111111111111  -> 1111111111111111111101111111111111

+dqand622 and 1111111111111111111110111111111111 1111111111111111111111111111111111  -> 1111111111111111111110111111111111

+dqand623 and 1111111111111111111111011111111111 1111111111111111111111111111111111  -> 1111111111111111111111011111111111

+dqand624 and 1111111111111111111111101111111111 1111111111111111111111111111111111  -> 1111111111111111111111101111111111

+dqand625 and 1111111111111111111111110111111111 1111111111111111111111111111111111  -> 1111111111111111111111110111111111

+dqand626 and 1111111111111111111111111011111111 1111111111111111111111111111111111  -> 1111111111111111111111111011111111

+dqand627 and 1111111111111111111111111101111111 1111111111111111111111111111111111  -> 1111111111111111111111111101111111

+dqand628 and 1111111111111111111111111110111111 1111111111111111111111111111111111  -> 1111111111111111111111111110111111

+dqand629 and 1111111111111111111111111111011111 1111111111111111111111111111111111  -> 1111111111111111111111111111011111

+dqand630 and 1111111111111111111111111111101111 1111111111111111111111111111111111  -> 1111111111111111111111111111101111

+dqand631 and 1111111111111111111111111111110111 1111111111111111111111111111111111  -> 1111111111111111111111111111110111

+dqand632 and 1111111111111111111111111111111011 1111111111111111111111111111111111  -> 1111111111111111111111111111111011

+dqand633 and 1111111111111111111111111111111101 1111111111111111111111111111111111  -> 1111111111111111111111111111111101

+dqand634 and 1111111111111111111111111111111110 1111111111111111111111111111111111  -> 1111111111111111111111111111111110

+

+dqand641 and 1111111111111111111111111111111111 0111111111111111111111111111111111  ->  111111111111111111111111111111111

+dqand642 and 1111111111111111111111111111111111 1011111111111111111111111111111111  -> 1011111111111111111111111111111111

+dqand643 and 1111111111111111111111111111111111 1101111111111111111111111111111111  -> 1101111111111111111111111111111111

+dqand644 and 1111111111111111111111111111111111 1110111111111111111111111111111111  -> 1110111111111111111111111111111111

+dqand645 and 1111111111111111111111111111111111 1111011111111111111111111111111111  -> 1111011111111111111111111111111111

+dqand646 and 1111111111111111111111111111111111 1111101111111111111111111111111111  -> 1111101111111111111111111111111111

+dqand647 and 1111111111111111111111111111111111 1111110111111111111111111111111111  -> 1111110111111111111111111111111111

+dqand648 and 1111111111111111111111111111111111 1111111011111111111111111111111111  -> 1111111011111111111111111111111111

+dqand649 and 1111111111111111111111111111111111 1111111101111111111111111111111111  -> 1111111101111111111111111111111111

+dqand650 and 1111111111111111111111111111111111 1111111110111111111111111111111111  -> 1111111110111111111111111111111111

+dqand651 and 1111111111111111111111111111111111 1111111111011111111111111111111111  -> 1111111111011111111111111111111111

+dqand652 and 1111111111111111111111111111111111 1111111111101111111111111111111111  -> 1111111111101111111111111111111111

+dqand653 and 1111111111111111111111111111111111 1111111111110111111111111111111111  -> 1111111111110111111111111111111111

+dqand654 and 1111111111111111111111111111111111 1111111111111011111111111111111111  -> 1111111111111011111111111111111111

+dqand655 and 1111111111111111111111111111111111 1111111111111101111111111111111111  -> 1111111111111101111111111111111111

+dqand656 and 1111111111111111111111111111111111 1111111111111110111111111111111111  -> 1111111111111110111111111111111111

+dqand657 and 1111111111111111111111111111111111 1111111111111111011111111111111111  -> 1111111111111111011111111111111111

+dqand658 and 1111111111111111111111111111111111 1111111111111111101111111111111111  -> 1111111111111111101111111111111111

+dqand659 and 1111111111111111111111111111111111 1111111111111111110111111111111111  -> 1111111111111111110111111111111111

+dqand660 and 1111111111111111111111111111111111 1111111111111111111011111111111111  -> 1111111111111111111011111111111111

+dqand661 and 1111111111111111111111111111111111 1111111111111111111101111111111111  -> 1111111111111111111101111111111111

+dqand662 and 1111111111111111111111111111111111 1111111111111111111110111111111111  -> 1111111111111111111110111111111111

+dqand663 and 1111111111111111111111111111111111 1111111111111111111111011111111111  -> 1111111111111111111111011111111111

+dqand664 and 1111111111111111111111111111111111 1111111111111111111111101111111111  -> 1111111111111111111111101111111111

+dqand665 and 1111111111111111111111111111111111 1111111111111111111111110111111111  -> 1111111111111111111111110111111111

+dqand666 and 1111111111111111111111111111111111 1111111111111111111111111011111111  -> 1111111111111111111111111011111111

+dqand667 and 1111111111111111111111111111111111 1111111111111111111111111101111111  -> 1111111111111111111111111101111111

+dqand668 and 1111111111111111111111111111111111 1111111111111111111111111110111111  -> 1111111111111111111111111110111111

+dqand669 and 1111111111111111111111111111111111 1111111111111111111111111111011111  -> 1111111111111111111111111111011111

+dqand670 and 1111111111111111111111111111111111 1111111111111111111111111111101111  -> 1111111111111111111111111111101111

+dqand671 and 1111111111111111111111111111111111 1111111111111111111111111111110111  -> 1111111111111111111111111111110111

+dqand672 and 1111111111111111111111111111111111 1111111111111111111111111111111011  -> 1111111111111111111111111111111011

+dqand673 and 1111111111111111111111111111111111 1111111111111111111111111111111101  -> 1111111111111111111111111111111101

+dqand674 and 1111111111111111111111111111111111 1111111111111111111111111111111110  -> 1111111111111111111111111111111110

+dqand675 and 0111111111111111111111111111111111 1111111111111111111111111111111110  ->  111111111111111111111111111111110

+dqand676 and 1111111111111111111111111111111111 1111111111111111111111111111111110  -> 1111111111111111111111111111111110

+

+dqand021 and 1111111111111111 1111111111111111  ->  1111111111111111

+dqand024 and 1111111111111111  111111111111111  ->   111111111111111

+dqand025 and 1111111111111111   11111111111111  ->    11111111111111

+dqand026 and 1111111111111111    1111111111111  ->     1111111111111

+dqand027 and 1111111111111111     111111111111  ->      111111111111

+dqand028 and 1111111111111111      11111111111  ->       11111111111

+dqand029 and 1111111111111111       1111111111  ->        1111111111

+dqand030 and 1111111111111111        111111111  ->         111111111

+dqand031 and 1111111111111111         11111111  ->          11111111

+dqand032 and 1111111111111111          1111111  ->           1111111

+dqand033 and 1111111111111111           111111  ->            111111

+dqand034 and 1111111111111111            11111  ->             11111

+dqand035 and 1111111111111111             1111  ->              1111

+dqand036 and 1111111111111111              111  ->               111

+dqand037 and 1111111111111111               11  ->                11

+dqand038 and 1111111111111111                1  ->                 1

+dqand039 and 1111111111111111                0  ->                 0

+

+dqand040 and 1111111111111111    1111111111111111 ->  1111111111111111

+dqand041 and  111111111111111    1111111111111111 ->   111111111111111

+dqand042 and  111111111111111    1111111111111111 ->   111111111111111

+dqand043 and   11111111111111    1111111111111111 ->    11111111111111

+dqand044 and    1111111111111    1111111111111111 ->     1111111111111

+dqand045 and     111111111111    1111111111111111 ->      111111111111

+dqand046 and      11111111111    1111111111111111 ->       11111111111

+dqand047 and       1111111111    1111111111111111 ->        1111111111

+dqand048 and        111111111    1111111111111111 ->         111111111

+dqand049 and         11111111    1111111111111111 ->          11111111

+dqand050 and          1111111    1111111111111111 ->           1111111

+dqand051 and           111111    1111111111111111 ->            111111

+dqand052 and            11111    1111111111111111 ->             11111

+dqand053 and             1111    1111111111111111 ->              1111

+dqand054 and              111    1111111111111111 ->               111

+dqand055 and               11    1111111111111111 ->                11

+dqand056 and                1    1111111111111111 ->                 1

+dqand057 and                0    1111111111111111 ->                 0

+

+dqand150 and 1111111111  1  ->  1

+dqand151 and  111111111  1  ->  1

+dqand152 and   11111111  1  ->  1

+dqand153 and    1111111  1  ->  1

+dqand154 and     111111  1  ->  1

+dqand155 and      11111  1  ->  1

+dqand156 and       1111  1  ->  1

+dqand157 and        111  1  ->  1

+dqand158 and         11  1  ->  1

+dqand159 and          1  1  ->  1

+

+dqand160 and 1111111111  0  ->  0

+dqand161 and  111111111  0  ->  0

+dqand162 and   11111111  0  ->  0

+dqand163 and    1111111  0  ->  0

+dqand164 and     111111  0  ->  0

+dqand165 and      11111  0  ->  0

+dqand166 and       1111  0  ->  0

+dqand167 and        111  0  ->  0

+dqand168 and         11  0  ->  0

+dqand169 and          1  0  ->  0

+

+dqand170 and 1  1111111111  ->  1

+dqand171 and 1   111111111  ->  1

+dqand172 and 1    11111111  ->  1

+dqand173 and 1     1111111  ->  1

+dqand174 and 1      111111  ->  1

+dqand175 and 1       11111  ->  1

+dqand176 and 1        1111  ->  1

+dqand177 and 1         111  ->  1

+dqand178 and 1          11  ->  1

+dqand179 and 1           1  ->  1

+

+dqand180 and 0  1111111111  ->  0

+dqand181 and 0   111111111  ->  0

+dqand182 and 0    11111111  ->  0

+dqand183 and 0     1111111  ->  0

+dqand184 and 0      111111  ->  0

+dqand185 and 0       11111  ->  0

+dqand186 and 0        1111  ->  0

+dqand187 and 0         111  ->  0

+dqand188 and 0          11  ->  0

+dqand189 and 0           1  ->  0

+

+dqand090 and 011111111  111111111  ->   11111111

+dqand091 and 101111111  111111111  ->  101111111

+dqand092 and 110111111  111111111  ->  110111111

+dqand093 and 111011111  111111111  ->  111011111

+dqand094 and 111101111  111111111  ->  111101111

+dqand095 and 111110111  111111111  ->  111110111

+dqand096 and 111111011  111111111  ->  111111011

+dqand097 and 111111101  111111111  ->  111111101

+dqand098 and 111111110  111111111  ->  111111110

+

+dqand100 and 111111111  011111111  ->   11111111

+dqand101 and 111111111  101111111  ->  101111111

+dqand102 and 111111111  110111111  ->  110111111

+dqand103 and 111111111  111011111  ->  111011111

+dqand104 and 111111111  111101111  ->  111101111

+dqand105 and 111111111  111110111  ->  111110111

+dqand106 and 111111111  111111011  ->  111111011

+dqand107 and 111111111  111111101  ->  111111101

+dqand108 and 111111111  111111110  ->  111111110

+

+-- non-0/1 should not be accepted, nor should signs

+dqand220 and 111111112  111111111  ->  NaN Invalid_operation

+dqand221 and 333333333  333333333  ->  NaN Invalid_operation

+dqand222 and 555555555  555555555  ->  NaN Invalid_operation

+dqand223 and 777777777  777777777  ->  NaN Invalid_operation

+dqand224 and 999999999  999999999  ->  NaN Invalid_operation

+dqand225 and 222222222  999999999  ->  NaN Invalid_operation

+dqand226 and 444444444  999999999  ->  NaN Invalid_operation

+dqand227 and 666666666  999999999  ->  NaN Invalid_operation

+dqand228 and 888888888  999999999  ->  NaN Invalid_operation

+dqand229 and 999999999  222222222  ->  NaN Invalid_operation

+dqand230 and 999999999  444444444  ->  NaN Invalid_operation

+dqand231 and 999999999  666666666  ->  NaN Invalid_operation

+dqand232 and 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+dqand240 and  567468689 -934981942 ->  NaN Invalid_operation

+dqand241 and  567367689  934981942 ->  NaN Invalid_operation

+dqand242 and -631917772 -706014634 ->  NaN Invalid_operation

+dqand243 and -756253257  138579234 ->  NaN Invalid_operation

+dqand244 and  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+dqand250 and  2000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand251 and  7000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand252 and  8000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand253 and  9000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand254 and  2000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand255 and  7000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand256 and  8000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand257 and  9000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand258 and  1000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand259 and  1000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand260 and  1000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand261 and  1000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand262 and  0000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand263 and  0000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand264 and  0000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation

+dqand265 and  0000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation

+-- test MSD-1

+dqand270 and  0200000111000111000111001000000000 1000000111000111000111100000000010 ->  NaN Invalid_operation

+dqand271 and  0700000111000111000111000100000000 1000000111000111000111010000000100 ->  NaN Invalid_operation

+dqand272 and  0800000111000111000111000010000000 1000000111000111000111001000001000 ->  NaN Invalid_operation

+dqand273 and  0900000111000111000111000001000000 1000000111000111000111000100010000 ->  NaN Invalid_operation

+dqand274 and  1000000111000111000111000000100000 0200000111000111000111000010100000 ->  NaN Invalid_operation

+dqand275 and  1000000111000111000111000000010000 0700000111000111000111000001000000 ->  NaN Invalid_operation

+dqand276 and  1000000111000111000111000000001000 0800000111000111000111000010100000 ->  NaN Invalid_operation

+dqand277 and  1000000111000111000111000000000100 0900000111000111000111000000010000 ->  NaN Invalid_operation

+-- test LSD

+dqand280 and  0010000111000111000111000000000002 1000000111000111000111000100000001 ->  NaN Invalid_operation

+dqand281 and  0001000111000111000111000000000007 1000000111000111000111001000000011 ->  NaN Invalid_operation

+dqand282 and  0000000111000111000111100000000008 1000000111000111000111010000000001 ->  NaN Invalid_operation

+dqand283 and  0000000111000111000111010000000009 1000000111000111000111100000000001 ->  NaN Invalid_operation

+dqand284 and  1000000111000111000111001000000000 0001000111000111000111000000000002 ->  NaN Invalid_operation

+dqand285 and  1000000111000111000111000100000000 0010000111000111000111000000000007 ->  NaN Invalid_operation

+dqand286 and  1000000111000111000111000010000000 0100000111000111000111000000000008 ->  NaN Invalid_operation

+dqand287 and  1000000111000111000111000001000000 1000000111000111000111000000000009 ->  NaN Invalid_operation

+-- test Middie

+dqand288 and  0010000111000111000111000020000000 1000000111000111000111001000000000 ->  NaN Invalid_operation

+dqand289 and  0001000111000111000111000070000001 1000000111000111000111000100000000 ->  NaN Invalid_operation

+dqand290 and  0000000111000111000111100080000010 1000000111000111000111000010000000 ->  NaN Invalid_operation

+dqand291 and  0000000111000111000111010090000100 1000000111000111000111000001000000 ->  NaN Invalid_operation

+dqand292 and  1000000111000111000111001000001000 0000000111000111000111000020100000 ->  NaN Invalid_operation

+dqand293 and  1000000111000111000111000100010000 0000000111000111000111000070010000 ->  NaN Invalid_operation

+dqand294 and  1000000111000111000111000010100000 0000000111000111000111000080001000 ->  NaN Invalid_operation

+dqand295 and  1000000111000111000111000001000000 0000000111000111000111000090000100 ->  NaN Invalid_operation

+-- signs

+dqand296 and -1000000111000111000111000001000000 -0000001110001110001110010000000100 ->  NaN Invalid_operation

+dqand297 and -1000000111000111000111000001000000  0000001110001110001110000010000100 ->  NaN Invalid_operation

+dqand298 and  1000000111000111000111000001000000 -0000001110001110001110001000000100 ->  NaN Invalid_operation

+dqand299 and  1000000111000111000111000001000000  0000001110001110001110000011000100 ->  110000110000110000001000000

+

+-- Nmax, Nmin, Ntiny-like

+dqand331 and  2   9.99999999E+999     -> NaN Invalid_operation

+dqand332 and  3   1E-999              -> NaN Invalid_operation

+dqand333 and  4   1.00000000E-999     -> NaN Invalid_operation

+dqand334 and  5   1E-900              -> NaN Invalid_operation

+dqand335 and  6   -1E-900             -> NaN Invalid_operation

+dqand336 and  7   -1.00000000E-999    -> NaN Invalid_operation

+dqand337 and  8   -1E-999             -> NaN Invalid_operation

+dqand338 and  9   -9.99999999E+999    -> NaN Invalid_operation

+dqand341 and  9.99999999E+999     -18 -> NaN Invalid_operation

+dqand342 and  1E-999               01 -> NaN Invalid_operation

+dqand343 and  1.00000000E-999     -18 -> NaN Invalid_operation

+dqand344 and  1E-900               18 -> NaN Invalid_operation

+dqand345 and  -1E-900             -10 -> NaN Invalid_operation

+dqand346 and  -1.00000000E-999     18 -> NaN Invalid_operation

+dqand347 and  -1E-999              10 -> NaN Invalid_operation

+dqand348 and  -9.99999999E+999    -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+dqand361 and  1.0                  1  -> NaN Invalid_operation

+dqand362 and  1E+1                 1  -> NaN Invalid_operation

+dqand363 and  0.0                  1  -> NaN Invalid_operation

+dqand364 and  0E+1                 1  -> NaN Invalid_operation

+dqand365 and  9.9                  1  -> NaN Invalid_operation

+dqand366 and  9E+1                 1  -> NaN Invalid_operation

+dqand371 and  0 1.0                   -> NaN Invalid_operation

+dqand372 and  0 1E+1                  -> NaN Invalid_operation

+dqand373 and  0 0.0                   -> NaN Invalid_operation

+dqand374 and  0 0E+1                  -> NaN Invalid_operation

+dqand375 and  0 9.9                   -> NaN Invalid_operation

+dqand376 and  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+dqand780 and -Inf  -Inf   -> NaN Invalid_operation

+dqand781 and -Inf  -1000  -> NaN Invalid_operation

+dqand782 and -Inf  -1     -> NaN Invalid_operation

+dqand783 and -Inf  -0     -> NaN Invalid_operation

+dqand784 and -Inf   0     -> NaN Invalid_operation

+dqand785 and -Inf   1     -> NaN Invalid_operation

+dqand786 and -Inf   1000  -> NaN Invalid_operation

+dqand787 and -1000 -Inf   -> NaN Invalid_operation

+dqand788 and -Inf  -Inf   -> NaN Invalid_operation

+dqand789 and -1    -Inf   -> NaN Invalid_operation

+dqand790 and -0    -Inf   -> NaN Invalid_operation

+dqand791 and  0    -Inf   -> NaN Invalid_operation

+dqand792 and  1    -Inf   -> NaN Invalid_operation

+dqand793 and  1000 -Inf   -> NaN Invalid_operation

+dqand794 and  Inf  -Inf   -> NaN Invalid_operation

+

+dqand800 and  Inf  -Inf   -> NaN Invalid_operation

+dqand801 and  Inf  -1000  -> NaN Invalid_operation

+dqand802 and  Inf  -1     -> NaN Invalid_operation

+dqand803 and  Inf  -0     -> NaN Invalid_operation

+dqand804 and  Inf   0     -> NaN Invalid_operation

+dqand805 and  Inf   1     -> NaN Invalid_operation

+dqand806 and  Inf   1000  -> NaN Invalid_operation

+dqand807 and  Inf   Inf   -> NaN Invalid_operation

+dqand808 and -1000  Inf   -> NaN Invalid_operation

+dqand809 and -Inf   Inf   -> NaN Invalid_operation

+dqand810 and -1     Inf   -> NaN Invalid_operation

+dqand811 and -0     Inf   -> NaN Invalid_operation

+dqand812 and  0     Inf   -> NaN Invalid_operation

+dqand813 and  1     Inf   -> NaN Invalid_operation

+dqand814 and  1000  Inf   -> NaN Invalid_operation

+dqand815 and  Inf   Inf   -> NaN Invalid_operation

+

+dqand821 and  NaN -Inf    -> NaN Invalid_operation

+dqand822 and  NaN -1000   -> NaN Invalid_operation

+dqand823 and  NaN -1      -> NaN Invalid_operation

+dqand824 and  NaN -0      -> NaN Invalid_operation

+dqand825 and  NaN  0      -> NaN Invalid_operation

+dqand826 and  NaN  1      -> NaN Invalid_operation

+dqand827 and  NaN  1000   -> NaN Invalid_operation

+dqand828 and  NaN  Inf    -> NaN Invalid_operation

+dqand829 and  NaN  NaN    -> NaN Invalid_operation

+dqand830 and -Inf  NaN    -> NaN Invalid_operation

+dqand831 and -1000 NaN    -> NaN Invalid_operation

+dqand832 and -1    NaN    -> NaN Invalid_operation

+dqand833 and -0    NaN    -> NaN Invalid_operation

+dqand834 and  0    NaN    -> NaN Invalid_operation

+dqand835 and  1    NaN    -> NaN Invalid_operation

+dqand836 and  1000 NaN    -> NaN Invalid_operation

+dqand837 and  Inf  NaN    -> NaN Invalid_operation

+

+dqand841 and  sNaN -Inf   ->  NaN  Invalid_operation

+dqand842 and  sNaN -1000  ->  NaN  Invalid_operation

+dqand843 and  sNaN -1     ->  NaN  Invalid_operation

+dqand844 and  sNaN -0     ->  NaN  Invalid_operation

+dqand845 and  sNaN  0     ->  NaN  Invalid_operation

+dqand846 and  sNaN  1     ->  NaN  Invalid_operation

+dqand847 and  sNaN  1000  ->  NaN  Invalid_operation

+dqand848 and  sNaN  NaN   ->  NaN  Invalid_operation

+dqand849 and  sNaN sNaN   ->  NaN  Invalid_operation

+dqand850 and  NaN  sNaN   ->  NaN  Invalid_operation

+dqand851 and -Inf  sNaN   ->  NaN  Invalid_operation

+dqand852 and -1000 sNaN   ->  NaN  Invalid_operation

+dqand853 and -1    sNaN   ->  NaN  Invalid_operation

+dqand854 and -0    sNaN   ->  NaN  Invalid_operation

+dqand855 and  0    sNaN   ->  NaN  Invalid_operation

+dqand856 and  1    sNaN   ->  NaN  Invalid_operation

+dqand857 and  1000 sNaN   ->  NaN  Invalid_operation

+dqand858 and  Inf  sNaN   ->  NaN  Invalid_operation

+dqand859 and  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqand861 and  NaN1   -Inf    -> NaN Invalid_operation

+dqand862 and +NaN2   -1000   -> NaN Invalid_operation

+dqand863 and  NaN3    1000   -> NaN Invalid_operation

+dqand864 and  NaN4    Inf    -> NaN Invalid_operation

+dqand865 and  NaN5   +NaN6   -> NaN Invalid_operation

+dqand866 and -Inf     NaN7   -> NaN Invalid_operation

+dqand867 and -1000    NaN8   -> NaN Invalid_operation

+dqand868 and  1000    NaN9   -> NaN Invalid_operation

+dqand869 and  Inf    +NaN10  -> NaN Invalid_operation

+dqand871 and  sNaN11  -Inf   -> NaN Invalid_operation

+dqand872 and  sNaN12  -1000  -> NaN Invalid_operation

+dqand873 and  sNaN13   1000  -> NaN Invalid_operation

+dqand874 and  sNaN14   NaN17 -> NaN Invalid_operation

+dqand875 and  sNaN15  sNaN18 -> NaN Invalid_operation

+dqand876 and  NaN16   sNaN19 -> NaN Invalid_operation

+dqand877 and -Inf    +sNaN20 -> NaN Invalid_operation

+dqand878 and -1000    sNaN21 -> NaN Invalid_operation

+dqand879 and  1000    sNaN22 -> NaN Invalid_operation

+dqand880 and  Inf     sNaN23 -> NaN Invalid_operation

+dqand881 and +NaN25  +sNaN24 -> NaN Invalid_operation

+dqand882 and -NaN26    NaN28 -> NaN Invalid_operation

+dqand883 and -sNaN27  sNaN29 -> NaN Invalid_operation

+dqand884 and  1000    -NaN30 -> NaN Invalid_operation

+dqand885 and  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqBase.decTest b/Lib/test/decimaltestdata/dqBase.decTest
new file mode 100644
index 0000000..3f2569b
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqBase.decTest
@@ -0,0 +1,1081 @@
+------------------------------------------------------------------------

+-- dqBase.decTest -- base decQuad <--> string conversions             --

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

+

+-- This file tests base conversions from string to a decimal number

+-- and back to a string (in Scientific form)

+

+-- Note that unlike other operations the operand is subject to rounding

+-- to conform to emax and precision settings (that is, numbers will

+-- conform to rules and exponent will be in permitted range).  The

+-- 'left hand side', therefore, may have numbers that cannot be

+-- represented in a decQuad.  Some testcases go to the limit of the

+-- next-wider format, and hence these testcases may also be used to

+-- test narrowing and widening operations.

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+dqbas001 toSci       0 -> 0

+dqbas002 toSci       1 -> 1

+dqbas003 toSci     1.0 -> 1.0

+dqbas004 toSci    1.00 -> 1.00

+dqbas005 toSci      10 -> 10

+dqbas006 toSci    1000 -> 1000

+dqbas007 toSci    10.0 -> 10.0

+dqbas008 toSci    10.1 -> 10.1

+dqbas009 toSci    10.4 -> 10.4

+dqbas010 toSci    10.5 -> 10.5

+dqbas011 toSci    10.6 -> 10.6

+dqbas012 toSci    10.9 -> 10.9

+dqbas013 toSci    11.0 -> 11.0

+dqbas014 toSci  1.234 -> 1.234

+dqbas015 toSci  0.123 -> 0.123

+dqbas016 toSci  0.012 -> 0.012

+dqbas017 toSci  -0    -> -0

+dqbas018 toSci  -0.0  -> -0.0

+dqbas019 toSci -00.00 -> -0.00

+

+dqbas021 toSci     -1 -> -1

+dqbas022 toSci   -1.0 -> -1.0

+dqbas023 toSci   -0.1 -> -0.1

+dqbas024 toSci   -9.1 -> -9.1

+dqbas025 toSci   -9.11 -> -9.11

+dqbas026 toSci   -9.119 -> -9.119

+dqbas027 toSci   -9.999 -> -9.999

+

+dqbas030 toSci  '123456789.123456'   -> '123456789.123456'

+dqbas031 toSci  '123456789.000000'   -> '123456789.000000'

+dqbas032 toSci   '123456789123456'   -> '123456789123456'

+dqbas033 toSci   '0.0000123456789'   -> '0.0000123456789'

+dqbas034 toSci  '0.00000123456789'   -> '0.00000123456789'

+dqbas035 toSci '0.000000123456789'   -> '1.23456789E-7'

+dqbas036 toSci '0.0000000123456789'  -> '1.23456789E-8'

+

+dqbas037 toSci '0.123456789012344'   -> '0.123456789012344'

+dqbas038 toSci '0.123456789012345'   -> '0.123456789012345'

+

+-- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax)

+dqbsn001 toSci -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144

+dqbsn002 toSci -1E-6143 -> -1E-6143

+dqbsn003 toSci -1E-6176 -> -1E-6176 Subnormal

+dqbsn004 toSci -0 -> -0

+dqbsn005 toSci +0 ->  0

+dqbsn006 toSci +1E-6176 ->  1E-6176 Subnormal

+dqbsn007 toSci +1E-6143 ->  1E-6143

+dqbsn008 toSci +9.999999999999999999999999999999999E+6144 ->  9.999999999999999999999999999999999E+6144

+

+-- String [many more examples are implicitly tested elsewhere]

+-- strings without E cannot generate E in result

+dqbas040 toSci "12"        -> '12'

+dqbas041 toSci "-76"       -> '-76'

+dqbas042 toSci "12.76"     -> '12.76'

+dqbas043 toSci "+12.76"    -> '12.76'

+dqbas044 toSci "012.76"    -> '12.76'

+dqbas045 toSci "+0.003"    -> '0.003'

+dqbas046 toSci "17."       -> '17'

+dqbas047 toSci ".5"        -> '0.5'

+dqbas048 toSci "044"       -> '44'

+dqbas049 toSci "0044"      -> '44'

+dqbas050 toSci "0.0005"      -> '0.0005'

+dqbas051 toSci "00.00005"    -> '0.00005'

+dqbas052 toSci "0.000005"    -> '0.000005'

+dqbas053 toSci "0.0000050"   -> '0.0000050'

+dqbas054 toSci "0.0000005"   -> '5E-7'

+dqbas055 toSci "0.00000005"  -> '5E-8'

+dqbas056 toSci "12345678.543210" -> '12345678.543210'

+dqbas057 toSci "2345678.543210" -> '2345678.543210'

+dqbas058 toSci "345678.543210" -> '345678.543210'

+dqbas059 toSci "0345678.54321" -> '345678.54321'

+dqbas060 toSci "345678.5432" -> '345678.5432'

+dqbas061 toSci "+345678.5432" -> '345678.5432'

+dqbas062 toSci "+0345678.5432" -> '345678.5432'

+dqbas063 toSci "+00345678.5432" -> '345678.5432'

+dqbas064 toSci "-345678.5432"  -> '-345678.5432'

+dqbas065 toSci "-0345678.5432"  -> '-345678.5432'

+dqbas066 toSci "-00345678.5432"  -> '-345678.5432'

+-- examples

+dqbas067 toSci "5E-6"        -> '0.000005'

+dqbas068 toSci "50E-7"       -> '0.0000050'

+dqbas069 toSci "5E-7"        -> '5E-7'

+

+-- [No exotics as no Unicode]

+

+-- rounded with dots in all (including edge) places

+dqbas071 toSci  .1234567891234567890123456780123456123  -> 0.1234567891234567890123456780123456 Inexact Rounded

+dqbas072 toSci  1.234567891234567890123456780123456123  ->  1.234567891234567890123456780123456 Inexact Rounded

+dqbas073 toSci  12.34567891234567890123456780123456123  ->  12.34567891234567890123456780123456 Inexact Rounded

+dqbas074 toSci  123.4567891234567890123456780123456123  ->  123.4567891234567890123456780123456 Inexact Rounded

+dqbas075 toSci  1234.567891234567890123456780123456123  ->  1234.567891234567890123456780123456 Inexact Rounded

+dqbas076 toSci  12345.67891234567890123456780123456123  ->  12345.67891234567890123456780123456 Inexact Rounded

+dqbas077 toSci  123456.7891234567890123456780123456123  ->  123456.7891234567890123456780123456 Inexact Rounded

+dqbas078 toSci  1234567.891234567890123456780123456123  ->  1234567.891234567890123456780123456 Inexact Rounded

+dqbas079 toSci  12345678.91234567890123456780123456123  ->  12345678.91234567890123456780123456 Inexact Rounded

+dqbas080 toSci  123456789.1234567890123456780123456123  ->  123456789.1234567890123456780123456 Inexact Rounded

+dqbas081 toSci  1234567891.234567890123456780123456123  ->  1234567891.234567890123456780123456 Inexact Rounded

+dqbas082 toSci  12345678912.34567890123456780123456123  ->  12345678912.34567890123456780123456 Inexact Rounded

+dqbas083 toSci  123456789123.4567890123456780123456123  ->  123456789123.4567890123456780123456 Inexact Rounded

+dqbas084 toSci  1234567891234.567890123456780123456123  ->  1234567891234.567890123456780123456 Inexact Rounded

+dqbas085 toSci  12345678912345.67890123456780123456123  ->  12345678912345.67890123456780123456 Inexact Rounded

+dqbas086 toSci  123456789123456.7890123456780123456123  ->  123456789123456.7890123456780123456 Inexact Rounded

+dqbas087 toSci  1234567891234567.890123456780123456123  ->  1234567891234567.890123456780123456 Inexact Rounded

+dqbas088 toSci  12345678912345678.90123456780123456123  ->  12345678912345678.90123456780123456 Inexact Rounded

+dqbas089 toSci  123456789123456789.0123456780123456123  ->  123456789123456789.0123456780123456 Inexact Rounded

+dqbas090 toSci  1234567891234567890.123456780123456123  ->  1234567891234567890.123456780123456 Inexact Rounded

+dqbas091 toSci  12345678912345678901.23456780123456123  ->  12345678912345678901.23456780123456 Inexact Rounded

+dqbas092 toSci  123456789123456789012.3456780123456123  ->  123456789123456789012.3456780123456 Inexact Rounded

+dqbas093 toSci  1234567891234567890123.456780123456123  ->  1234567891234567890123.456780123456 Inexact Rounded

+dqbas094 toSci  12345678912345678901234.56780123456123  ->  12345678912345678901234.56780123456 Inexact Rounded

+dqbas095 toSci  123456789123456789012345.6780123456123  ->  123456789123456789012345.6780123456 Inexact Rounded

+dqbas096 toSci  1234567891234567890123456.780123456123  ->  1234567891234567890123456.780123456 Inexact Rounded

+dqbas097 toSci  12345678912345678901234567.80123456123  ->  12345678912345678901234567.80123456 Inexact Rounded

+dqbas098 toSci  123456789123456789012345678.0123456123  ->  123456789123456789012345678.0123456 Inexact Rounded

+dqbas099 toSci  1234567891234567890123456780.123456123  ->  1234567891234567890123456780.123456 Inexact Rounded

+dqbas100 toSci  12345678912345678901234567801.23456123  ->  12345678912345678901234567801.23456 Inexact Rounded

+dqbas101 toSci  123456789123456789012345678012.3456123  ->  123456789123456789012345678012.3456 Inexact Rounded

+dqbas102 toSci  1234567891234567890123456780123.456123  ->  1234567891234567890123456780123.456 Inexact Rounded

+dqbas103 toSci  12345678912345678901234567801234.56123  ->  12345678912345678901234567801234.56 Inexact Rounded

+dqbas104 toSci  123456789123456789012345678012345.6123  ->  123456789123456789012345678012345.6 Inexact Rounded

+dqbas105 toSci  1234567891234567890123456780123456.123  ->  1234567891234567890123456780123456  Inexact Rounded

+dqbas106 toSci  12345678912345678901234567801234561.23  ->  1.234567891234567890123456780123456E+34 Inexact Rounded

+dqbas107 toSci  123456789123456789012345678012345612.3  ->  1.234567891234567890123456780123456E+35 Inexact Rounded

+dqbas108 toSci  1234567891234567890123456780123456123.  ->  1.234567891234567890123456780123456E+36 Inexact Rounded

+-- 123456789012345678

+

+-- Numbers with E

+dqbas130 toSci "0.000E-1"  -> '0.0000'

+dqbas131 toSci "0.000E-2"  -> '0.00000'

+dqbas132 toSci "0.000E-3"  -> '0.000000'

+dqbas133 toSci "0.000E-4"  -> '0E-7'

+dqbas134 toSci "0.00E-2"   -> '0.0000'

+dqbas135 toSci "0.00E-3"   -> '0.00000'

+dqbas136 toSci "0.00E-4"   -> '0.000000'

+dqbas137 toSci "0.00E-5"   -> '0E-7'

+dqbas138 toSci "+0E+9"     -> '0E+9'

+dqbas139 toSci "-0E+9"     -> '-0E+9'

+dqbas140 toSci "1E+9"      -> '1E+9'

+dqbas141 toSci "1e+09"     -> '1E+9'

+dqbas142 toSci "1E+90"     -> '1E+90'

+dqbas143 toSci "+1E+009"   -> '1E+9'

+dqbas144 toSci "0E+9"      -> '0E+9'

+dqbas145 toSci "1E+9"      -> '1E+9'

+dqbas146 toSci "1E+09"     -> '1E+9'

+dqbas147 toSci "1e+90"     -> '1E+90'

+dqbas148 toSci "1E+009"    -> '1E+9'

+dqbas149 toSci "000E+9"    -> '0E+9'

+dqbas150 toSci "1E9"       -> '1E+9'

+dqbas151 toSci "1e09"      -> '1E+9'

+dqbas152 toSci "1E90"      -> '1E+90'

+dqbas153 toSci "1E009"     -> '1E+9'

+dqbas154 toSci "0E9"       -> '0E+9'

+dqbas155 toSci "0.000e+0"  -> '0.000'

+dqbas156 toSci "0.000E-1"  -> '0.0000'

+dqbas157 toSci "4E+9"      -> '4E+9'

+dqbas158 toSci "44E+9"     -> '4.4E+10'

+dqbas159 toSci "0.73e-7"   -> '7.3E-8'

+dqbas160 toSci "00E+9"     -> '0E+9'

+dqbas161 toSci "00E-9"     -> '0E-9'

+dqbas162 toSci "10E+9"     -> '1.0E+10'

+dqbas163 toSci "10E+09"    -> '1.0E+10'

+dqbas164 toSci "10e+90"    -> '1.0E+91'

+dqbas165 toSci "10E+009"   -> '1.0E+10'

+dqbas166 toSci "100e+9"    -> '1.00E+11'

+dqbas167 toSci "100e+09"   -> '1.00E+11'

+dqbas168 toSci "100E+90"   -> '1.00E+92'

+dqbas169 toSci "100e+009"  -> '1.00E+11'

+

+dqbas170 toSci "1.265"     -> '1.265'

+dqbas171 toSci "1.265E-20" -> '1.265E-20'

+dqbas172 toSci "1.265E-8"  -> '1.265E-8'

+dqbas173 toSci "1.265E-4"  -> '0.0001265'

+dqbas174 toSci "1.265E-3"  -> '0.001265'

+dqbas175 toSci "1.265E-2"  -> '0.01265'

+dqbas176 toSci "1.265E-1"  -> '0.1265'

+dqbas177 toSci "1.265E-0"  -> '1.265'

+dqbas178 toSci "1.265E+1"  -> '12.65'

+dqbas179 toSci "1.265E+2"  -> '126.5'

+dqbas180 toSci "1.265E+3"  -> '1265'

+dqbas181 toSci "1.265E+4"  -> '1.265E+4'

+dqbas182 toSci "1.265E+8"  -> '1.265E+8'

+dqbas183 toSci "1.265E+20" -> '1.265E+20'

+

+dqbas190 toSci "12.65"     -> '12.65'

+dqbas191 toSci "12.65E-20" -> '1.265E-19'

+dqbas192 toSci "12.65E-8"  -> '1.265E-7'

+dqbas193 toSci "12.65E-4"  -> '0.001265'

+dqbas194 toSci "12.65E-3"  -> '0.01265'

+dqbas195 toSci "12.65E-2"  -> '0.1265'

+dqbas196 toSci "12.65E-1"  -> '1.265'

+dqbas197 toSci "12.65E-0"  -> '12.65'

+dqbas198 toSci "12.65E+1"  -> '126.5'

+dqbas199 toSci "12.65E+2"  -> '1265'

+dqbas200 toSci "12.65E+3"  -> '1.265E+4'

+dqbas201 toSci "12.65E+4"  -> '1.265E+5'

+dqbas202 toSci "12.65E+8"  -> '1.265E+9'

+dqbas203 toSci "12.65E+20" -> '1.265E+21'

+

+dqbas210 toSci "126.5"     -> '126.5'

+dqbas211 toSci "126.5E-20" -> '1.265E-18'

+dqbas212 toSci "126.5E-8"  -> '0.000001265'

+dqbas213 toSci "126.5E-4"  -> '0.01265'

+dqbas214 toSci "126.5E-3"  -> '0.1265'

+dqbas215 toSci "126.5E-2"  -> '1.265'

+dqbas216 toSci "126.5E-1"  -> '12.65'

+dqbas217 toSci "126.5E-0"  -> '126.5'

+dqbas218 toSci "126.5E+1"  -> '1265'

+dqbas219 toSci "126.5E+2"  -> '1.265E+4'

+dqbas220 toSci "126.5E+3"  -> '1.265E+5'

+dqbas221 toSci "126.5E+4"  -> '1.265E+6'

+dqbas222 toSci "126.5E+8"  -> '1.265E+10'

+dqbas223 toSci "126.5E+20" -> '1.265E+22'

+

+dqbas230 toSci "1265"     -> '1265'

+dqbas231 toSci "1265E-20" -> '1.265E-17'

+dqbas232 toSci "1265E-8"  -> '0.00001265'

+dqbas233 toSci "1265E-4"  -> '0.1265'

+dqbas234 toSci "1265E-3"  -> '1.265'

+dqbas235 toSci "1265E-2"  -> '12.65'

+dqbas236 toSci "1265E-1"  -> '126.5'

+dqbas237 toSci "1265E-0"  -> '1265'

+dqbas238 toSci "1265E+1"  -> '1.265E+4'

+dqbas239 toSci "1265E+2"  -> '1.265E+5'

+dqbas240 toSci "1265E+3"  -> '1.265E+6'

+dqbas241 toSci "1265E+4"  -> '1.265E+7'

+dqbas242 toSci "1265E+8"  -> '1.265E+11'

+dqbas243 toSci "1265E+20" -> '1.265E+23'

+

+dqbas250 toSci "0.1265"     -> '0.1265'

+dqbas251 toSci "0.1265E-20" -> '1.265E-21'

+dqbas252 toSci "0.1265E-8"  -> '1.265E-9'

+dqbas253 toSci "0.1265E-4"  -> '0.00001265'

+dqbas254 toSci "0.1265E-3"  -> '0.0001265'

+dqbas255 toSci "0.1265E-2"  -> '0.001265'

+dqbas256 toSci "0.1265E-1"  -> '0.01265'

+dqbas257 toSci "0.1265E-0"  -> '0.1265'

+dqbas258 toSci "0.1265E+1"  -> '1.265'

+dqbas259 toSci "0.1265E+2"  -> '12.65'

+dqbas260 toSci "0.1265E+3"  -> '126.5'

+dqbas261 toSci "0.1265E+4"  -> '1265'

+dqbas262 toSci "0.1265E+8"  -> '1.265E+7'

+dqbas263 toSci "0.1265E+20" -> '1.265E+19'

+

+-- some more negative zeros [systematic tests below]

+dqbas290 toSci "-0.000E-1"  -> '-0.0000'

+dqbas291 toSci "-0.000E-2"  -> '-0.00000'

+dqbas292 toSci "-0.000E-3"  -> '-0.000000'

+dqbas293 toSci "-0.000E-4"  -> '-0E-7'

+dqbas294 toSci "-0.00E-2"   -> '-0.0000'

+dqbas295 toSci "-0.00E-3"   -> '-0.00000'

+dqbas296 toSci "-0.0E-2"    -> '-0.000'

+dqbas297 toSci "-0.0E-3"    -> '-0.0000'

+dqbas298 toSci "-0E-2"      -> '-0.00'

+dqbas299 toSci "-0E-3"      -> '-0.000'

+

+-- Engineering notation tests

+dqbas301  toSci 10e12  -> 1.0E+13

+dqbas302  toEng 10e12  -> 10E+12

+dqbas303  toSci 10e11  -> 1.0E+12

+dqbas304  toEng 10e11  -> 1.0E+12

+dqbas305  toSci 10e10  -> 1.0E+11

+dqbas306  toEng 10e10  -> 100E+9

+dqbas307  toSci 10e9   -> 1.0E+10

+dqbas308  toEng 10e9   -> 10E+9

+dqbas309  toSci 10e8   -> 1.0E+9

+dqbas310  toEng 10e8   -> 1.0E+9

+dqbas311  toSci 10e7   -> 1.0E+8

+dqbas312  toEng 10e7   -> 100E+6

+dqbas313  toSci 10e6   -> 1.0E+7

+dqbas314  toEng 10e6   -> 10E+6

+dqbas315  toSci 10e5   -> 1.0E+6

+dqbas316  toEng 10e5   -> 1.0E+6

+dqbas317  toSci 10e4   -> 1.0E+5

+dqbas318  toEng 10e4   -> 100E+3

+dqbas319  toSci 10e3   -> 1.0E+4

+dqbas320  toEng 10e3   -> 10E+3

+dqbas321  toSci 10e2   -> 1.0E+3

+dqbas322  toEng 10e2   -> 1.0E+3

+dqbas323  toSci 10e1   -> 1.0E+2

+dqbas324  toEng 10e1   -> 100

+dqbas325  toSci 10e0   -> 10

+dqbas326  toEng 10e0   -> 10

+dqbas327  toSci 10e-1  -> 1.0

+dqbas328  toEng 10e-1  -> 1.0

+dqbas329  toSci 10e-2  -> 0.10

+dqbas330  toEng 10e-2  -> 0.10

+dqbas331  toSci 10e-3  -> 0.010

+dqbas332  toEng 10e-3  -> 0.010

+dqbas333  toSci 10e-4  -> 0.0010

+dqbas334  toEng 10e-4  -> 0.0010

+dqbas335  toSci 10e-5  -> 0.00010

+dqbas336  toEng 10e-5  -> 0.00010

+dqbas337  toSci 10e-6  -> 0.000010

+dqbas338  toEng 10e-6  -> 0.000010

+dqbas339  toSci 10e-7  -> 0.0000010

+dqbas340  toEng 10e-7  -> 0.0000010

+dqbas341  toSci 10e-8  -> 1.0E-7

+dqbas342  toEng 10e-8  -> 100E-9

+dqbas343  toSci 10e-9  -> 1.0E-8

+dqbas344  toEng 10e-9  -> 10E-9

+dqbas345  toSci 10e-10 -> 1.0E-9

+dqbas346  toEng 10e-10 -> 1.0E-9

+dqbas347  toSci 10e-11 -> 1.0E-10

+dqbas348  toEng 10e-11 -> 100E-12

+dqbas349  toSci 10e-12 -> 1.0E-11

+dqbas350  toEng 10e-12 -> 10E-12

+dqbas351  toSci 10e-13 -> 1.0E-12

+dqbas352  toEng 10e-13 -> 1.0E-12

+

+dqbas361  toSci 7E12  -> 7E+12

+dqbas362  toEng 7E12  -> 7E+12

+dqbas363  toSci 7E11  -> 7E+11

+dqbas364  toEng 7E11  -> 700E+9

+dqbas365  toSci 7E10  -> 7E+10

+dqbas366  toEng 7E10  -> 70E+9

+dqbas367  toSci 7E9   -> 7E+9

+dqbas368  toEng 7E9   -> 7E+9

+dqbas369  toSci 7E8   -> 7E+8

+dqbas370  toEng 7E8   -> 700E+6

+dqbas371  toSci 7E7   -> 7E+7

+dqbas372  toEng 7E7   -> 70E+6

+dqbas373  toSci 7E6   -> 7E+6

+dqbas374  toEng 7E6   -> 7E+6

+dqbas375  toSci 7E5   -> 7E+5

+dqbas376  toEng 7E5   -> 700E+3

+dqbas377  toSci 7E4   -> 7E+4

+dqbas378  toEng 7E4   -> 70E+3

+dqbas379  toSci 7E3   -> 7E+3

+dqbas380  toEng 7E3   -> 7E+3

+dqbas381  toSci 7E2   -> 7E+2

+dqbas382  toEng 7E2   -> 700

+dqbas383  toSci 7E1   -> 7E+1

+dqbas384  toEng 7E1   -> 70

+dqbas385  toSci 7E0   -> 7

+dqbas386  toEng 7E0   -> 7

+dqbas387  toSci 7E-1  -> 0.7

+dqbas388  toEng 7E-1  -> 0.7

+dqbas389  toSci 7E-2  -> 0.07

+dqbas390  toEng 7E-2  -> 0.07

+dqbas391  toSci 7E-3  -> 0.007

+dqbas392  toEng 7E-3  -> 0.007

+dqbas393  toSci 7E-4  -> 0.0007

+dqbas394  toEng 7E-4  -> 0.0007

+dqbas395  toSci 7E-5  -> 0.00007

+dqbas396  toEng 7E-5  -> 0.00007

+dqbas397  toSci 7E-6  -> 0.000007

+dqbas398  toEng 7E-6  -> 0.000007

+dqbas399  toSci 7E-7  -> 7E-7

+dqbas400  toEng 7E-7  -> 700E-9

+dqbas401  toSci 7E-8  -> 7E-8

+dqbas402  toEng 7E-8  -> 70E-9

+dqbas403  toSci 7E-9  -> 7E-9

+dqbas404  toEng 7E-9  -> 7E-9

+dqbas405  toSci 7E-10 -> 7E-10

+dqbas406  toEng 7E-10 -> 700E-12

+dqbas407  toSci 7E-11 -> 7E-11

+dqbas408  toEng 7E-11 -> 70E-12

+dqbas409  toSci 7E-12 -> 7E-12

+dqbas410  toEng 7E-12 -> 7E-12

+dqbas411  toSci 7E-13 -> 7E-13

+dqbas412  toEng 7E-13 -> 700E-15

+

+-- Exacts remain exact up to precision ..

+dqbas420  toSci    100 -> 100

+dqbas422  toSci   1000 -> 1000

+dqbas424  toSci  999.9 ->  999.9

+dqbas426  toSci 1000.0 -> 1000.0

+dqbas428  toSci 1000.1 -> 1000.1

+dqbas430  toSci 10000 -> 10000

+dqbas432  toSci 1000000000000000000000000000000        -> 1000000000000000000000000000000

+dqbas434  toSci 10000000000000000000000000000000       -> 10000000000000000000000000000000

+dqbas436  toSci 100000000000000000000000000000000      -> 100000000000000000000000000000000

+dqbas438  toSci 1000000000000000000000000000000000     -> 1000000000000000000000000000000000

+dqbas440  toSci 10000000000000000000000000000000000    -> 1.000000000000000000000000000000000E+34   Rounded

+dqbas442  toSci 10000000000000000000000000000000000    -> 1.000000000000000000000000000000000E+34   Rounded

+dqbas444  toSci 10000000000000000000000000000000003    -> 1.000000000000000000000000000000000E+34   Rounded Inexact

+dqbas446  toSci 10000000000000000000000000000000005    -> 1.000000000000000000000000000000000E+34   Rounded Inexact

+dqbas448  toSci 100000000000000000000000000000000050   -> 1.000000000000000000000000000000000E+35   Rounded Inexact

+dqbas450  toSci 10000000000000000000000000000000009    -> 1.000000000000000000000000000000001E+34   Rounded Inexact

+dqbas452  toSci 100000000000000000000000000000000000   -> 1.000000000000000000000000000000000E+35   Rounded

+dqbas454  toSci 100000000000000000000000000000000003   -> 1.000000000000000000000000000000000E+35   Rounded Inexact

+dqbas456  toSci 100000000000000000000000000000000005   -> 1.000000000000000000000000000000000E+35   Rounded Inexact

+dqbas458  toSci 100000000000000000000000000000000009   -> 1.000000000000000000000000000000000E+35   Rounded Inexact

+dqbas460  toSci 1000000000000000000000000000000000000  -> 1.000000000000000000000000000000000E+36   Rounded

+dqbas462  toSci 1000000000000000000000000000000000300  -> 1.000000000000000000000000000000000E+36   Rounded Inexact

+dqbas464  toSci 1000000000000000000000000000000000500  -> 1.000000000000000000000000000000000E+36   Rounded Inexact

+dqbas466  toSci 1000000000000000000000000000000000900  -> 1.000000000000000000000000000000001E+36   Rounded Inexact

+dqbas468  toSci 10000000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+37   Rounded

+dqbas470  toSci 10000000000000000000000000000000003000 -> 1.000000000000000000000000000000000E+37   Rounded Inexact

+dqbas472  toSci 10000000000000000000000000000000005000 -> 1.000000000000000000000000000000000E+37   Rounded Inexact

+dqbas474  toSci 10000000000000000000000000000000009000 -> 1.000000000000000000000000000000001E+37   Rounded Inexact

+

+-- check rounding modes heeded

+rounding:  ceiling

+dqbsr401  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded

+dqbsr402  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112346  Rounded Inexact

+dqbsr403  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112346  Rounded Inexact

+dqbsr404  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact

+rounding:  up

+dqbsr405  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded

+dqbsr406  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112346  Rounded Inexact

+dqbsr407  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112346  Rounded Inexact

+dqbsr408  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact

+rounding:  floor

+dqbsr410  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded

+dqbsr411  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact

+dqbsr412  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112345  Rounded Inexact

+dqbsr413  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112345  Rounded Inexact

+rounding:  half_down

+dqbsr415  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded

+dqbsr416  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact

+dqbsr417  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112345  Rounded Inexact

+dqbsr418  toSci  1.11111111111111111111111111111234650   ->  1.111111111111111111111111111112346  Rounded Inexact

+dqbsr419  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact

+rounding:  half_even

+dqbsr421  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded

+dqbsr422  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact

+dqbsr423  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112346  Rounded Inexact

+dqbsr424  toSci  1.11111111111111111111111111111234650   ->  1.111111111111111111111111111112346  Rounded Inexact

+dqbsr425  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact

+rounding:  down

+dqbsr426  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded

+dqbsr427  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact

+dqbsr428  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112345  Rounded Inexact

+dqbsr429  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112345  Rounded Inexact

+rounding:  half_up

+dqbsr431  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded

+dqbsr432  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact

+dqbsr433  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112346  Rounded Inexact

+dqbsr434  toSci  1.11111111111111111111111111111234650   ->  1.111111111111111111111111111112347  Rounded Inexact

+dqbsr435  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact

+-- negatives

+rounding:  ceiling

+dqbsr501  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded

+dqbsr502  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact

+dqbsr503  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112345  Rounded Inexact

+dqbsr504  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112345  Rounded Inexact

+rounding:  up

+dqbsr505  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded

+dqbsr506  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112346  Rounded Inexact

+dqbsr507  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112346  Rounded Inexact

+dqbsr508  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact

+rounding:  floor

+dqbsr510  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded

+dqbsr511  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112346  Rounded Inexact

+dqbsr512  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112346  Rounded Inexact

+dqbsr513  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact

+rounding:  half_down

+dqbsr515  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded

+dqbsr516  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact

+dqbsr517  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112345  Rounded Inexact

+dqbsr518  toSci -1.11111111111111111111111111111234650   -> -1.111111111111111111111111111112346  Rounded Inexact

+dqbsr519  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact

+rounding:  half_even

+dqbsr521  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded

+dqbsr522  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact

+dqbsr523  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112346  Rounded Inexact

+dqbsr524  toSci -1.11111111111111111111111111111234650   -> -1.111111111111111111111111111112346  Rounded Inexact

+dqbsr525  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact

+rounding:  down

+dqbsr526  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded

+dqbsr527  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact

+dqbsr528  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112345  Rounded Inexact

+dqbsr529  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112345  Rounded Inexact

+rounding:  half_up

+dqbsr531  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded

+dqbsr532  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact

+dqbsr533  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112346  Rounded Inexact

+dqbsr534  toSci -1.11111111111111111111111111111234650   -> -1.111111111111111111111111111112347  Rounded Inexact

+dqbsr535  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact

+

+rounding:    half_even

+

+-- The 'baddies' tests from DiagBigDecimal, plus some new ones

+dqbas500 toSci '1..2'            -> NaN Conversion_syntax

+dqbas501 toSci '.'               -> NaN Conversion_syntax

+dqbas502 toSci '..'              -> NaN Conversion_syntax

+dqbas503 toSci '++1'             -> NaN Conversion_syntax

+dqbas504 toSci '--1'             -> NaN Conversion_syntax

+dqbas505 toSci '-+1'             -> NaN Conversion_syntax

+dqbas506 toSci '+-1'             -> NaN Conversion_syntax

+dqbas507 toSci '12e'             -> NaN Conversion_syntax

+dqbas508 toSci '12e++'           -> NaN Conversion_syntax

+dqbas509 toSci '12f4'            -> NaN Conversion_syntax

+dqbas510 toSci ' +1'             -> NaN Conversion_syntax

+dqbas511 toSci '+ 1'             -> NaN Conversion_syntax

+dqbas512 toSci '12 '             -> NaN Conversion_syntax

+dqbas513 toSci ' + 1'            -> NaN Conversion_syntax

+dqbas514 toSci ' - 1 '           -> NaN Conversion_syntax

+dqbas515 toSci 'x'               -> NaN Conversion_syntax

+dqbas516 toSci '-1-'             -> NaN Conversion_syntax

+dqbas517 toSci '12-'             -> NaN Conversion_syntax

+dqbas518 toSci '3+'              -> NaN Conversion_syntax

+dqbas519 toSci ''                -> NaN Conversion_syntax

+dqbas520 toSci '1e-'             -> NaN Conversion_syntax

+dqbas521 toSci '7e99999a'        -> NaN Conversion_syntax

+dqbas522 toSci '7e123567890x'    -> NaN Conversion_syntax

+dqbas523 toSci '7e12356789012x'  -> NaN Conversion_syntax

+dqbas524 toSci ''                -> NaN Conversion_syntax

+dqbas525 toSci 'e100'            -> NaN Conversion_syntax

+dqbas526 toSci '\u0e5a'          -> NaN Conversion_syntax

+dqbas527 toSci '\u0b65'          -> NaN Conversion_syntax

+dqbas528 toSci '123,65'          -> NaN Conversion_syntax

+dqbas529 toSci '1.34.5'          -> NaN Conversion_syntax

+dqbas530 toSci '.123.5'          -> NaN Conversion_syntax

+dqbas531 toSci '01.35.'          -> NaN Conversion_syntax

+dqbas532 toSci '01.35-'          -> NaN Conversion_syntax

+dqbas533 toSci '0000..'          -> NaN Conversion_syntax

+dqbas534 toSci '.0000.'          -> NaN Conversion_syntax

+dqbas535 toSci '00..00'          -> NaN Conversion_syntax

+dqbas536 toSci '111e*123'        -> NaN Conversion_syntax

+dqbas537 toSci '111e123-'        -> NaN Conversion_syntax

+dqbas538 toSci '111e+12+'        -> NaN Conversion_syntax

+dqbas539 toSci '111e1-3-'        -> NaN Conversion_syntax

+dqbas540 toSci '111e1*23'        -> NaN Conversion_syntax

+dqbas541 toSci '111e1e+3'        -> NaN Conversion_syntax

+dqbas542 toSci '1e1.0'           -> NaN Conversion_syntax

+dqbas543 toSci '1e123e'          -> NaN Conversion_syntax

+dqbas544 toSci 'ten'             -> NaN Conversion_syntax

+dqbas545 toSci 'ONE'             -> NaN Conversion_syntax

+dqbas546 toSci '1e.1'            -> NaN Conversion_syntax

+dqbas547 toSci '1e1.'            -> NaN Conversion_syntax

+dqbas548 toSci '1ee'             -> NaN Conversion_syntax

+dqbas549 toSci 'e+1'             -> NaN Conversion_syntax

+dqbas550 toSci '1.23.4'          -> NaN Conversion_syntax

+dqbas551 toSci '1.2.1'           -> NaN Conversion_syntax

+dqbas552 toSci '1E+1.2'          -> NaN Conversion_syntax

+dqbas553 toSci '1E+1.2.3'        -> NaN Conversion_syntax

+dqbas554 toSci '1E++1'           -> NaN Conversion_syntax

+dqbas555 toSci '1E--1'           -> NaN Conversion_syntax

+dqbas556 toSci '1E+-1'           -> NaN Conversion_syntax

+dqbas557 toSci '1E-+1'           -> NaN Conversion_syntax

+dqbas558 toSci '1E''1'           -> NaN Conversion_syntax

+dqbas559 toSci "1E""1"           -> NaN Conversion_syntax

+dqbas560 toSci "1E"""""          -> NaN Conversion_syntax

+-- Near-specials

+dqbas561 toSci "qNaN"            -> NaN Conversion_syntax

+dqbas562 toSci "NaNq"            -> NaN Conversion_syntax

+dqbas563 toSci "NaNs"            -> NaN Conversion_syntax

+dqbas564 toSci "Infi"            -> NaN Conversion_syntax

+dqbas565 toSci "Infin"           -> NaN Conversion_syntax

+dqbas566 toSci "Infini"          -> NaN Conversion_syntax

+dqbas567 toSci "Infinit"         -> NaN Conversion_syntax

+dqbas568 toSci "-Infinit"        -> NaN Conversion_syntax

+dqbas569 toSci "0Inf"            -> NaN Conversion_syntax

+dqbas570 toSci "9Inf"            -> NaN Conversion_syntax

+dqbas571 toSci "-0Inf"           -> NaN Conversion_syntax

+dqbas572 toSci "-9Inf"           -> NaN Conversion_syntax

+dqbas573 toSci "-sNa"            -> NaN Conversion_syntax

+dqbas574 toSci "xNaN"            -> NaN Conversion_syntax

+dqbas575 toSci "0sNaN"           -> NaN Conversion_syntax

+

+-- some baddies with dots and Es and dots and specials

+dqbas576 toSci  'e+1'            ->  NaN Conversion_syntax

+dqbas577 toSci  '.e+1'           ->  NaN Conversion_syntax

+dqbas578 toSci  '+.e+1'          ->  NaN Conversion_syntax

+dqbas579 toSci  '-.e+'           ->  NaN Conversion_syntax

+dqbas580 toSci  '-.e'            ->  NaN Conversion_syntax

+dqbas581 toSci  'E+1'            ->  NaN Conversion_syntax

+dqbas582 toSci  '.E+1'           ->  NaN Conversion_syntax

+dqbas583 toSci  '+.E+1'          ->  NaN Conversion_syntax

+dqbas584 toSci  '-.E+'           ->  NaN Conversion_syntax

+dqbas585 toSci  '-.E'            ->  NaN Conversion_syntax

+

+dqbas586 toSci  '.NaN'           ->  NaN Conversion_syntax

+dqbas587 toSci  '-.NaN'          ->  NaN Conversion_syntax

+dqbas588 toSci  '+.sNaN'         ->  NaN Conversion_syntax

+dqbas589 toSci  '+.Inf'          ->  NaN Conversion_syntax

+dqbas590 toSci  '.Infinity'      ->  NaN Conversion_syntax

+

+-- Zeros

+dqbas601 toSci 0.000000000       -> 0E-9

+dqbas602 toSci 0.00000000        -> 0E-8

+dqbas603 toSci 0.0000000         -> 0E-7

+dqbas604 toSci 0.000000          -> 0.000000

+dqbas605 toSci 0.00000           -> 0.00000

+dqbas606 toSci 0.0000            -> 0.0000

+dqbas607 toSci 0.000             -> 0.000

+dqbas608 toSci 0.00              -> 0.00

+dqbas609 toSci 0.0               -> 0.0

+dqbas610 toSci  .0               -> 0.0

+dqbas611 toSci 0.                -> 0

+dqbas612 toSci -.0               -> -0.0

+dqbas613 toSci -0.               -> -0

+dqbas614 toSci -0.0              -> -0.0

+dqbas615 toSci -0.00             -> -0.00

+dqbas616 toSci -0.000            -> -0.000

+dqbas617 toSci -0.0000           -> -0.0000

+dqbas618 toSci -0.00000          -> -0.00000

+dqbas619 toSci -0.000000         -> -0.000000

+dqbas620 toSci -0.0000000        -> -0E-7

+dqbas621 toSci -0.00000000       -> -0E-8

+dqbas622 toSci -0.000000000      -> -0E-9

+

+dqbas630 toSci  0.00E+0          -> 0.00

+dqbas631 toSci  0.00E+1          -> 0.0

+dqbas632 toSci  0.00E+2          -> 0

+dqbas633 toSci  0.00E+3          -> 0E+1

+dqbas634 toSci  0.00E+4          -> 0E+2

+dqbas635 toSci  0.00E+5          -> 0E+3

+dqbas636 toSci  0.00E+6          -> 0E+4

+dqbas637 toSci  0.00E+7          -> 0E+5

+dqbas638 toSci  0.00E+8          -> 0E+6

+dqbas639 toSci  0.00E+9          -> 0E+7

+

+dqbas640 toSci  0.0E+0           -> 0.0

+dqbas641 toSci  0.0E+1           -> 0

+dqbas642 toSci  0.0E+2           -> 0E+1

+dqbas643 toSci  0.0E+3           -> 0E+2

+dqbas644 toSci  0.0E+4           -> 0E+3

+dqbas645 toSci  0.0E+5           -> 0E+4

+dqbas646 toSci  0.0E+6           -> 0E+5

+dqbas647 toSci  0.0E+7           -> 0E+6

+dqbas648 toSci  0.0E+8           -> 0E+7

+dqbas649 toSci  0.0E+9           -> 0E+8

+

+dqbas650 toSci  0E+0             -> 0

+dqbas651 toSci  0E+1             -> 0E+1

+dqbas652 toSci  0E+2             -> 0E+2

+dqbas653 toSci  0E+3             -> 0E+3

+dqbas654 toSci  0E+4             -> 0E+4

+dqbas655 toSci  0E+5             -> 0E+5

+dqbas656 toSci  0E+6             -> 0E+6

+dqbas657 toSci  0E+7             -> 0E+7

+dqbas658 toSci  0E+8             -> 0E+8

+dqbas659 toSci  0E+9             -> 0E+9

+

+dqbas660 toSci  0.0E-0           -> 0.0

+dqbas661 toSci  0.0E-1           -> 0.00

+dqbas662 toSci  0.0E-2           -> 0.000

+dqbas663 toSci  0.0E-3           -> 0.0000

+dqbas664 toSci  0.0E-4           -> 0.00000

+dqbas665 toSci  0.0E-5           -> 0.000000

+dqbas666 toSci  0.0E-6           -> 0E-7

+dqbas667 toSci  0.0E-7           -> 0E-8

+dqbas668 toSci  0.0E-8           -> 0E-9

+dqbas669 toSci  0.0E-9           -> 0E-10

+

+dqbas670 toSci  0.00E-0          -> 0.00

+dqbas671 toSci  0.00E-1          -> 0.000

+dqbas672 toSci  0.00E-2          -> 0.0000

+dqbas673 toSci  0.00E-3          -> 0.00000

+dqbas674 toSci  0.00E-4          -> 0.000000

+dqbas675 toSci  0.00E-5          -> 0E-7

+dqbas676 toSci  0.00E-6          -> 0E-8

+dqbas677 toSci  0.00E-7          -> 0E-9

+dqbas678 toSci  0.00E-8          -> 0E-10

+dqbas679 toSci  0.00E-9          -> 0E-11

+

+dqbas680 toSci  000000.          ->  0

+dqbas681 toSci   00000.          ->  0

+dqbas682 toSci    0000.          ->  0

+dqbas683 toSci     000.          ->  0

+dqbas684 toSci      00.          ->  0

+dqbas685 toSci       0.          ->  0

+dqbas686 toSci  +00000.          ->  0

+dqbas687 toSci  -00000.          -> -0

+dqbas688 toSci  +0.              ->  0

+dqbas689 toSci  -0.              -> -0

+

+-- Specials

+dqbas700 toSci "NaN"             -> NaN

+dqbas701 toSci "nan"             -> NaN

+dqbas702 toSci "nAn"             -> NaN

+dqbas703 toSci "NAN"             -> NaN

+dqbas704 toSci "+NaN"            -> NaN

+dqbas705 toSci "+nan"            -> NaN

+dqbas706 toSci "+nAn"            -> NaN

+dqbas707 toSci "+NAN"            -> NaN

+dqbas708 toSci "-NaN"            -> -NaN

+dqbas709 toSci "-nan"            -> -NaN

+dqbas710 toSci "-nAn"            -> -NaN

+dqbas711 toSci "-NAN"            -> -NaN

+dqbas712 toSci 'NaN0'            -> NaN

+dqbas713 toSci 'NaN1'            -> NaN1

+dqbas714 toSci 'NaN12'           -> NaN12

+dqbas715 toSci 'NaN123'          -> NaN123

+dqbas716 toSci 'NaN1234'         -> NaN1234

+dqbas717 toSci 'NaN01'           -> NaN1

+dqbas718 toSci 'NaN012'          -> NaN12

+dqbas719 toSci 'NaN0123'         -> NaN123

+dqbas720 toSci 'NaN01234'        -> NaN1234

+dqbas721 toSci 'NaN001'          -> NaN1

+dqbas722 toSci 'NaN0012'         -> NaN12

+dqbas723 toSci 'NaN00123'        -> NaN123

+dqbas724 toSci 'NaN001234'       -> NaN1234

+dqbas725 toSci 'NaN1234567890123456781234567890123456' -> NaN Conversion_syntax

+dqbas726 toSci 'NaN123e+1'       -> NaN Conversion_syntax

+dqbas727 toSci 'NaN12.45'        -> NaN Conversion_syntax

+dqbas728 toSci 'NaN-12'          -> NaN Conversion_syntax

+dqbas729 toSci 'NaN+12'          -> NaN Conversion_syntax

+

+dqbas730 toSci "sNaN"            -> sNaN

+dqbas731 toSci "snan"            -> sNaN

+dqbas732 toSci "SnAn"            -> sNaN

+dqbas733 toSci "SNAN"            -> sNaN

+dqbas734 toSci "+sNaN"           -> sNaN

+dqbas735 toSci "+snan"           -> sNaN

+dqbas736 toSci "+SnAn"           -> sNaN

+dqbas737 toSci "+SNAN"           -> sNaN

+dqbas738 toSci "-sNaN"           -> -sNaN

+dqbas739 toSci "-snan"           -> -sNaN

+dqbas740 toSci "-SnAn"           -> -sNaN

+dqbas741 toSci "-SNAN"           -> -sNaN

+dqbas742 toSci 'sNaN0000'        -> sNaN

+dqbas743 toSci 'sNaN7'           -> sNaN7

+dqbas744 toSci 'sNaN007234'      -> sNaN7234

+dqbas745 toSci 'sNaN1234567890123456787234561234567890' -> NaN Conversion_syntax

+dqbas746 toSci 'sNaN72.45'       -> NaN Conversion_syntax

+dqbas747 toSci 'sNaN-72'         -> NaN Conversion_syntax

+

+dqbas748 toSci "Inf"             -> Infinity

+dqbas749 toSci "inf"             -> Infinity

+dqbas750 toSci "iNf"             -> Infinity

+dqbas751 toSci "INF"             -> Infinity

+dqbas752 toSci "+Inf"            -> Infinity

+dqbas753 toSci "+inf"            -> Infinity

+dqbas754 toSci "+iNf"            -> Infinity

+dqbas755 toSci "+INF"            -> Infinity

+dqbas756 toSci "-Inf"            -> -Infinity

+dqbas757 toSci "-inf"            -> -Infinity

+dqbas758 toSci "-iNf"            -> -Infinity

+dqbas759 toSci "-INF"            -> -Infinity

+

+dqbas760 toSci "Infinity"        -> Infinity

+dqbas761 toSci "infinity"        -> Infinity

+dqbas762 toSci "iNfInItY"        -> Infinity

+dqbas763 toSci "INFINITY"        -> Infinity

+dqbas764 toSci "+Infinity"       -> Infinity

+dqbas765 toSci "+infinity"       -> Infinity

+dqbas766 toSci "+iNfInItY"       -> Infinity

+dqbas767 toSci "+INFINITY"       -> Infinity

+dqbas768 toSci "-Infinity"       -> -Infinity

+dqbas769 toSci "-infinity"       -> -Infinity

+dqbas770 toSci "-iNfInItY"       -> -Infinity

+dqbas771 toSci "-INFINITY"       -> -Infinity

+

+-- Specials and zeros for toEng

+dqbast772 toEng "NaN"              -> NaN

+dqbast773 toEng "-Infinity"        -> -Infinity

+dqbast774 toEng "-sNaN"            -> -sNaN

+dqbast775 toEng "-NaN"             -> -NaN

+dqbast776 toEng "+Infinity"        -> Infinity

+dqbast778 toEng "+sNaN"            -> sNaN

+dqbast779 toEng "+NaN"             -> NaN

+dqbast780 toEng "INFINITY"         -> Infinity

+dqbast781 toEng "SNAN"             -> sNaN

+dqbast782 toEng "NAN"              -> NaN

+dqbast783 toEng "infinity"         -> Infinity

+dqbast784 toEng "snan"             -> sNaN

+dqbast785 toEng "nan"              -> NaN

+dqbast786 toEng "InFINITY"         -> Infinity

+dqbast787 toEng "SnAN"             -> sNaN

+dqbast788 toEng "nAN"              -> NaN

+dqbast789 toEng "iNfinity"         -> Infinity

+dqbast790 toEng "sNan"             -> sNaN

+dqbast791 toEng "Nan"              -> NaN

+dqbast792 toEng "Infinity"         -> Infinity

+dqbast793 toEng "sNaN"             -> sNaN

+

+-- Zero toEng, etc.

+dqbast800 toEng 0e+1              -> "0.00E+3"  -- doc example

+

+dqbast801 toEng 0.000000000       -> 0E-9

+dqbast802 toEng 0.00000000        -> 0.00E-6

+dqbast803 toEng 0.0000000         -> 0.0E-6

+dqbast804 toEng 0.000000          -> 0.000000

+dqbast805 toEng 0.00000           -> 0.00000

+dqbast806 toEng 0.0000            -> 0.0000

+dqbast807 toEng 0.000             -> 0.000

+dqbast808 toEng 0.00              -> 0.00

+dqbast809 toEng 0.0               -> 0.0

+dqbast810 toEng  .0               -> 0.0

+dqbast811 toEng 0.                -> 0

+dqbast812 toEng -.0               -> -0.0

+dqbast813 toEng -0.               -> -0

+dqbast814 toEng -0.0              -> -0.0

+dqbast815 toEng -0.00             -> -0.00

+dqbast816 toEng -0.000            -> -0.000

+dqbast817 toEng -0.0000           -> -0.0000

+dqbast818 toEng -0.00000          -> -0.00000

+dqbast819 toEng -0.000000         -> -0.000000

+dqbast820 toEng -0.0000000        -> -0.0E-6

+dqbast821 toEng -0.00000000       -> -0.00E-6

+dqbast822 toEng -0.000000000      -> -0E-9

+

+dqbast830 toEng  0.00E+0          -> 0.00

+dqbast831 toEng  0.00E+1          -> 0.0

+dqbast832 toEng  0.00E+2          -> 0

+dqbast833 toEng  0.00E+3          -> 0.00E+3

+dqbast834 toEng  0.00E+4          -> 0.0E+3

+dqbast835 toEng  0.00E+5          -> 0E+3

+dqbast836 toEng  0.00E+6          -> 0.00E+6

+dqbast837 toEng  0.00E+7          -> 0.0E+6

+dqbast838 toEng  0.00E+8          -> 0E+6

+dqbast839 toEng  0.00E+9          -> 0.00E+9

+

+dqbast840 toEng  0.0E+0           -> 0.0

+dqbast841 toEng  0.0E+1           -> 0

+dqbast842 toEng  0.0E+2           -> 0.00E+3

+dqbast843 toEng  0.0E+3           -> 0.0E+3

+dqbast844 toEng  0.0E+4           -> 0E+3

+dqbast845 toEng  0.0E+5           -> 0.00E+6

+dqbast846 toEng  0.0E+6           -> 0.0E+6

+dqbast847 toEng  0.0E+7           -> 0E+6

+dqbast848 toEng  0.0E+8           -> 0.00E+9

+dqbast849 toEng  0.0E+9           -> 0.0E+9

+

+dqbast850 toEng  0E+0             -> 0

+dqbast851 toEng  0E+1             -> 0.00E+3

+dqbast852 toEng  0E+2             -> 0.0E+3

+dqbast853 toEng  0E+3             -> 0E+3

+dqbast854 toEng  0E+4             -> 0.00E+6

+dqbast855 toEng  0E+5             -> 0.0E+6

+dqbast856 toEng  0E+6             -> 0E+6

+dqbast857 toEng  0E+7             -> 0.00E+9

+dqbast858 toEng  0E+8             -> 0.0E+9

+dqbast859 toEng  0E+9             -> 0E+9

+

+dqbast860 toEng  0.0E-0           -> 0.0

+dqbast861 toEng  0.0E-1           -> 0.00

+dqbast862 toEng  0.0E-2           -> 0.000

+dqbast863 toEng  0.0E-3           -> 0.0000

+dqbast864 toEng  0.0E-4           -> 0.00000

+dqbast865 toEng  0.0E-5           -> 0.000000

+dqbast866 toEng  0.0E-6           -> 0.0E-6

+dqbast867 toEng  0.0E-7           -> 0.00E-6

+dqbast868 toEng  0.0E-8           -> 0E-9

+dqbast869 toEng  0.0E-9           -> 0.0E-9

+

+dqbast870 toEng  0.00E-0          -> 0.00

+dqbast871 toEng  0.00E-1          -> 0.000

+dqbast872 toEng  0.00E-2          -> 0.0000

+dqbast873 toEng  0.00E-3          -> 0.00000

+dqbast874 toEng  0.00E-4          -> 0.000000

+dqbast875 toEng  0.00E-5          -> 0.0E-6

+dqbast876 toEng  0.00E-6          -> 0.00E-6

+dqbast877 toEng  0.00E-7          -> 0E-9

+dqbast878 toEng  0.00E-8          -> 0.0E-9

+dqbast879 toEng  0.00E-9          -> 0.00E-9

+

+-- long input strings

+dqbas801 tosci '01234567890123456' -> 1234567890123456

+dqbas802 tosci '001234567890123456' -> 1234567890123456

+dqbas803 tosci '0001234567890123456' -> 1234567890123456

+dqbas804 tosci '00001234567890123456' -> 1234567890123456

+dqbas805 tosci '000001234567890123456' -> 1234567890123456

+dqbas806 tosci '0000001234567890123456' -> 1234567890123456

+dqbas807 tosci '00000001234567890123456' -> 1234567890123456

+dqbas808 tosci '000000001234567890123456' -> 1234567890123456

+dqbas809 tosci '0000000001234567890123456' -> 1234567890123456

+dqbas810 tosci '00000000001234567890123456' -> 1234567890123456

+

+dqbas811 tosci '0.1234567890123456' -> 0.1234567890123456

+dqbas812 tosci '0.01234567890123456' -> 0.01234567890123456

+dqbas813 tosci '0.001234567890123456' -> 0.001234567890123456

+dqbas814 tosci '0.0001234567890123456' -> 0.0001234567890123456

+dqbas815 tosci '0.00001234567890123456' -> 0.00001234567890123456

+dqbas816 tosci '0.000001234567890123456' -> 0.000001234567890123456

+dqbas817 tosci '0.0000001234567890123456' -> 1.234567890123456E-7

+dqbas818 tosci '0.00000001234567890123456' -> 1.234567890123456E-8

+dqbas819 tosci '0.000000001234567890123456' -> 1.234567890123456E-9

+dqbas820 tosci '0.0000000001234567890123456' -> 1.234567890123456E-10

+

+dqbas821 tosci '12345678912345678901234567801234567890' -> 1.234567891234567890123456780123457E+37 Inexact Rounded

+dqbas822 tosci '123456789123456789012345678012345678901' -> 1.234567891234567890123456780123457E+38 Inexact Rounded

+dqbas823 tosci '1234567891234567890123456780123456789012' -> 1.234567891234567890123456780123457E+39 Inexact Rounded

+dqbas824 tosci '12345678912345678901234567801234567890123' -> 1.234567891234567890123456780123457E+40 Inexact Rounded

+dqbas825 tosci '123456789123456789012345678012345678901234' -> 1.234567891234567890123456780123457E+41 Inexact Rounded

+dqbas826 tosci '1234567891234567890123456780123456789012345' -> 1.234567891234567890123456780123457E+42 Inexact Rounded

+dqbas827 tosci '12345678912345678901234567801234567890123456' -> 1.234567891234567890123456780123457E+43 Inexact Rounded

+dqbas828 tosci '123456789123456789012345678012345678901234567' -> 1.234567891234567890123456780123457E+44 Inexact Rounded

+dqbas829 tosci '1234567891234567890123456780123456789012345678' -> 1.234567891234567890123456780123457E+45 Inexact Rounded

+

+-- subnormals and overflows

+dqbas906 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded

+dqbas907 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded

+dqbas908 toSci '0.9e-999999999'     -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas909 toSci '0.09e-999999999'    -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas910 toSci '0.1e1000000000'     -> Infinity Overflow  Inexact Rounded

+dqbas911 toSci '10e-1000000000'     -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas912 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded

+dqbas913 toSci '99e-9999999999'     -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas914 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded

+dqbas915 toSci '1111e-9999999999'   -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas916 toSci '1111e-99999999999'  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas917 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded

+-- negatives the same

+dqbas918 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded

+dqbas919 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded

+dqbas920 toSci '-0.9e-999999999'    -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas921 toSci '-0.09e-999999999'   -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas922 toSci '-0.1e1000000000'    -> -Infinity Overflow  Inexact Rounded

+dqbas923 toSci '-10e-1000000000'    -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas924 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded

+dqbas925 toSci '-99e-9999999999'    -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas926 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded

+dqbas927 toSci '-1111e-9999999999'  -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas928 toSci '-1111e-99999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas929 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded

+

+-- overflow results at different rounding modes

+rounding:  ceiling

+dqbas930 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dqbas931 toSci '-7e10000'  -> -9.999999999999999999999999999999999E+6144 Overflow  Inexact Rounded

+rounding:  up

+dqbas932 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dqbas933 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  down

+dqbas934 toSci  '7e10000'  ->  9.999999999999999999999999999999999E+6144 Overflow  Inexact Rounded

+dqbas935 toSci '-7e10000'  -> -9.999999999999999999999999999999999E+6144 Overflow  Inexact Rounded

+rounding:  floor

+dqbas936 toSci  '7e10000'  ->  9.999999999999999999999999999999999E+6144 Overflow  Inexact Rounded

+dqbas937 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+

+rounding:  half_up

+dqbas938 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dqbas939 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  half_even

+dqbas940 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dqbas941 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  half_down

+dqbas942 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dqbas943 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+

+rounding:  half_even

+

+-- Now check 854/754r some subnormals and underflow to 0

+dqbem400 toSci  1.0000E-383     -> 1.0000E-383

+dqbem401 toSci  0.1E-6172        -> 1E-6173       Subnormal

+dqbem402 toSci  0.1000E-6172     -> 1.000E-6173   Subnormal

+dqbem403 toSci  0.0100E-6172     -> 1.00E-6174    Subnormal

+dqbem404 toSci  0.0010E-6172     -> 1.0E-6175     Subnormal

+dqbem405 toSci  0.0001E-6172     -> 1E-6176       Subnormal

+dqbem406 toSci  0.00010E-6172    -> 1E-6176     Subnormal Rounded

+dqbem407 toSci  0.00013E-6172    -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqbem408 toSci  0.00015E-6172    -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqbem409 toSci  0.00017E-6172    -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqbem410 toSci  0.00023E-6172    -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqbem411 toSci  0.00025E-6172    -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqbem412 toSci  0.00027E-6172    -> 3E-6176     Underflow Subnormal Inexact Rounded

+dqbem413 toSci  0.000149E-6172   -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqbem414 toSci  0.000150E-6172   -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqbem415 toSci  0.000151E-6172   -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqbem416 toSci  0.000249E-6172   -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqbem417 toSci  0.000250E-6172   -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqbem418 toSci  0.000251E-6172   -> 3E-6176     Underflow Subnormal Inexact Rounded

+dqbem419 toSci  0.00009E-6172    -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqbem420 toSci  0.00005E-6172    -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqbem421 toSci  0.00003E-6172    -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqbem422 toSci  0.000009E-6172   -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqbem423 toSci  0.000005E-6172   -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqbem424 toSci  0.000003E-6172   -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+

+dqbem425 toSci  0.001049E-6172   -> 1.0E-6175   Underflow Subnormal Inexact Rounded

+dqbem426 toSci  0.001050E-6172   -> 1.0E-6175   Underflow Subnormal Inexact Rounded

+dqbem427 toSci  0.001051E-6172   -> 1.1E-6175   Underflow Subnormal Inexact Rounded

+dqbem428 toSci  0.001149E-6172   -> 1.1E-6175   Underflow Subnormal Inexact Rounded

+dqbem429 toSci  0.001150E-6172   -> 1.2E-6175   Underflow Subnormal Inexact Rounded

+dqbem430 toSci  0.001151E-6172   -> 1.2E-6175   Underflow Subnormal Inexact Rounded

+

+dqbem432 toSci  0.010049E-6172   -> 1.00E-6174  Underflow Subnormal Inexact Rounded

+dqbem433 toSci  0.010050E-6172   -> 1.00E-6174  Underflow Subnormal Inexact Rounded

+dqbem434 toSci  0.010051E-6172   -> 1.01E-6174  Underflow Subnormal Inexact Rounded

+dqbem435 toSci  0.010149E-6172   -> 1.01E-6174  Underflow Subnormal Inexact Rounded

+dqbem436 toSci  0.010150E-6172   -> 1.02E-6174  Underflow Subnormal Inexact Rounded

+dqbem437 toSci  0.010151E-6172   -> 1.02E-6174  Underflow Subnormal Inexact Rounded

+

+dqbem440 toSci  0.10103E-6172    -> 1.010E-6173 Underflow Subnormal Inexact Rounded

+dqbem441 toSci  0.10105E-6172    -> 1.010E-6173 Underflow Subnormal Inexact Rounded

+dqbem442 toSci  0.10107E-6172    -> 1.011E-6173 Underflow Subnormal Inexact Rounded

+dqbem443 toSci  0.10113E-6172    -> 1.011E-6173 Underflow Subnormal Inexact Rounded

+dqbem444 toSci  0.10115E-6172    -> 1.012E-6173 Underflow Subnormal Inexact Rounded

+dqbem445 toSci  0.10117E-6172    -> 1.012E-6173 Underflow Subnormal Inexact Rounded

+

+dqbem450 toSci  1.10730E-6173   -> 1.107E-6173 Underflow Subnormal Inexact Rounded

+dqbem451 toSci  1.10750E-6173   -> 1.108E-6173 Underflow Subnormal Inexact Rounded

+dqbem452 toSci  1.10770E-6173   -> 1.108E-6173 Underflow Subnormal Inexact Rounded

+dqbem453 toSci  1.10830E-6173   -> 1.108E-6173 Underflow Subnormal Inexact Rounded

+dqbem454 toSci  1.10850E-6173   -> 1.108E-6173 Underflow Subnormal Inexact Rounded

+dqbem455 toSci  1.10870E-6173   -> 1.109E-6173 Underflow Subnormal Inexact Rounded

+

+-- make sure sign OK

+dqbem456 toSci  -0.10103E-6172   -> -1.010E-6173 Underflow Subnormal Inexact Rounded

+dqbem457 toSci  -0.10105E-6172   -> -1.010E-6173 Underflow Subnormal Inexact Rounded

+dqbem458 toSci  -0.10107E-6172   -> -1.011E-6173 Underflow Subnormal Inexact Rounded

+dqbem459 toSci  -0.10113E-6172   -> -1.011E-6173 Underflow Subnormal Inexact Rounded

+dqbem460 toSci  -0.10115E-6172   -> -1.012E-6173 Underflow Subnormal Inexact Rounded

+dqbem461 toSci  -0.10117E-6172   -> -1.012E-6173 Underflow Subnormal Inexact Rounded

+

+-- '999s' cases

+dqbem464 toSci  999999E-6173         -> 9.99999E-6168 Subnormal

+dqbem465 toSci  99999.0E-6172        -> 9.99990E-6168 Subnormal

+dqbem466 toSci  99999.E-6172         -> 9.9999E-6168  Subnormal

+dqbem467 toSci  9999.9E-6172         -> 9.9999E-6169  Subnormal

+dqbem468 toSci  999.99E-6172         -> 9.9999E-6170  Subnormal

+dqbem469 toSci  99.999E-6172         -> 9.9999E-6171  Subnormal

+dqbem470 toSci  9.9999E-6172         -> 9.9999E-6172  Subnormal

+dqbem471 toSci  0.99999E-6172        -> 1.0000E-6172 Underflow Subnormal Inexact Rounded

+dqbem472 toSci  0.099999E-6172       -> 1.000E-6173 Underflow Subnormal Inexact Rounded

+dqbem473 toSci  0.0099999E-6172      -> 1.00E-6174  Underflow Subnormal Inexact Rounded

+dqbem474 toSci  0.00099999E-6172     -> 1.0E-6175   Underflow Subnormal Inexact Rounded

+dqbem475 toSci  0.000099999E-6172    -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqbem476 toSci  0.0000099999E-6172   -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqbem477 toSci  0.00000099999E-6172  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqbem478 toSci  0.000000099999E-6172 -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+

+-- Exponents with insignificant leading zeros

+dqbas1001 toSci  1e999999999 -> Infinity Overflow Inexact Rounded

+dqbas1002 toSci  1e0999999999 -> Infinity Overflow Inexact Rounded

+dqbas1003 toSci  1e00999999999 -> Infinity Overflow Inexact Rounded

+dqbas1004 toSci  1e000999999999 -> Infinity Overflow Inexact Rounded

+dqbas1005 toSci  1e000000000000999999999 -> Infinity Overflow Inexact Rounded

+dqbas1006 toSci  1e000000000001000000007 -> Infinity Overflow Inexact Rounded

+dqbas1007 toSci  1e-999999999 -> 0E-6176             Underflow Subnormal Inexact Rounded Clamped

+dqbas1008 toSci  1e-0999999999 -> 0E-6176            Underflow Subnormal Inexact Rounded Clamped

+dqbas1009 toSci  1e-00999999999 -> 0E-6176           Underflow Subnormal Inexact Rounded Clamped

+dqbas1010 toSci  1e-000999999999 -> 0E-6176          Underflow Subnormal Inexact Rounded Clamped

+dqbas1011 toSci  1e-000000000000999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqbas1012 toSci  1e-000000000001000000007 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+

+-- check for double-rounded subnormals

+dqbas1041 toSci     1.1111111111111111111111111111152444E-6144 ->  1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow

+dqbas1042 toSci     1.1111111111111111111111111111152445E-6144 ->  1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow

+dqbas1043 toSci     1.1111111111111111111111111111152446E-6144 ->  1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow

+

+-- clamped zeros [see also clamp.decTest]

+dqbas1075 toSci   0e+10000  ->  0E+6111 Clamped

+dqbas1076 toSci   0e-10000  ->  0E-6176  Clamped

+dqbas1077 toSci  -0e+10000  -> -0E+6111 Clamped

+dqbas1078 toSci  -0e-10000  -> -0E-6176  Clamped

+

+-- extreme values from next-wider

+dqbas1101 toSci -9.9999999999999999999999999999999999999999999999999999999999999999999E+1572864 -> -Infinity Overflow Inexact Rounded

+dqbas1102 toSci -1E-1572863 -> -0E-6176 Inexact Rounded Subnormal Underflow Clamped

+dqbas1103 toSci -1E-1572932 -> -0E-6176 Inexact Rounded Subnormal Underflow Clamped

+dqbas1104 toSci -0 -> -0

+dqbas1105 toSci +0 ->  0

+dqbas1106 toSci +1E-1572932 ->  0E-6176 Inexact Rounded Subnormal Underflow Clamped

+dqbas1107 toSci +1E-1572863 ->  0E-6176 Inexact Rounded Subnormal Underflow Clamped

+dqbas1108 toSci +9.9999999999999999999999999999999999999999999999999999999999999999999E+1572864 ->  Infinity Overflow Inexact Rounded

+

diff --git a/Lib/test/decimaltestdata/dqCanonical.decTest b/Lib/test/decimaltestdata/dqCanonical.decTest
new file mode 100644
index 0000000..e13c347
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCanonical.decTest
@@ -0,0 +1,372 @@
+------------------------------------------------------------------------

+-- dqCanonical.decTest -- test decQuad canonical results              --

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

+

+-- This file tests that copy operations leave uncanonical operands

+-- unchanged, and vice versa

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Uncanonical declets are: abc, where:

+--   a=1,2,3

+--   b=6,7,e,f

+--   c=e,f

+

+-- assert some standard (canonical) values; this tests that FromString

+-- produces canonical results (many more in decimalNN)

+dqcan001 apply 9.999999999999999999999999999999999E+6144  -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan002 apply 0                      -> #22080000000000000000000000000000

+dqcan003 apply 1                      -> #22080000000000000000000000000001

+dqcan004 apply -1                     -> #a2080000000000000000000000000001

+dqcan005 apply Infinity               -> #78000000000000000000000000000000

+dqcan006 apply -Infinity              -> #f8000000000000000000000000000000

+dqcan007 apply -NaN                   -> #fc000000000000000000000000000000

+dqcan008 apply -sNaN                  -> #fe000000000000000000000000000000

+dqcan009 apply  NaN999999999999999999999999999999999  -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan010 apply sNaN999999999999999999999999999999999  -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+decan011 apply  9999999999999999999999999999999999    -> #6e080ff3fcff3fcff3fcff3fcff3fcff

+dqcan012 apply 7.50                                   -> #220780000000000000000000000003d0

+dqcan013 apply 9.99                                   -> #220780000000000000000000000000ff

+

+-- Base tests for canonical encodings (individual operator

+-- propagation is tested later)

+

+-- Finites: declets in coefficient

+dqcan021 canonical  #77ffcff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan022 canonical  #77fffff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan023 canonical  #77ffcffffcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan024 canonical  #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan025 canonical  #77ffcff3fcffffcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan026 canonical  #77ffcff3fcff3ffff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan027 canonical  #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan028 canonical  #77ffcff3fcff3fcff3ffff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan029 canonical  #77ffcff3fcff3fcff3fcffffcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan030 canonical  #77ffcff3fcff3fcff3fcff3ffff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan031 canonical  #77ffcff3fcff3fcff3fcff3fcffffcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan032 canonical  #77ffcff3fcff3fcff3fcff3fcff3ffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+

+-- NaN: declets in payload

+dqcan061 canonical  #7c000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan062 canonical  #7c000ffffcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan063 canonical  #7c000ff3ffff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan064 canonical  #7c000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan065 canonical  #7c000ff3fcff3ffff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan066 canonical  #7c000ff3fcff3fcffffcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan067 canonical  #7c000ff3fcff3fcff3ffff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan068 canonical  #7c000ff3fcff3fcff3fcffffcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan069 canonical  #7c000ff3fcff3fcff3fcff3ffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan070 canonical  #7c000ff3fcff3fcff3fcff3fcffffcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan071 canonical  #7c000ff3fcff3fcff3fcff3fcff3ffff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+-- NaN: exponent continuation bits [excluding sNaN selector]

+dqcan081 canonical  #7d000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan082 canonical  #7c800ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan083 canonical  #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan084 canonical  #7c200ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan085 canonical  #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan086 canonical  #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan087 canonical  #7c040ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan088 canonical  #7c020ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan089 canonical  #7c010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan090 canonical  #7c008ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan091 canonical  #7c004ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+

+-- sNaN: declets in payload

+dqcan101 canonical  #7e000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan102 canonical  #7e000ffffcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan103 canonical  #7e000ff3ffff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan104 canonical  #7e000ff3fcffffcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan105 canonical  #7e000ff3fcff3ffff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan106 canonical  #7e000ff3fcff3fcffffcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan107 canonical  #7e000ff3fcff3fcff3ffff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan108 canonical  #7e000ff3fcff3fcff3fcffffcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan109 canonical  #7e000ff3fcff3fcff3fcff3ffff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan100 canonical  #7e000ff3fcff3fcff3fcff3fcffffcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan111 canonical  #7e000ff3fcff3fcff3fcff3fcff3ffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+-- sNaN: exponent continuation bits [excluding sNaN selector]

+dqcan121 canonical  #7f000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan122 canonical  #7e800ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan123 canonical  #7e400ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan124 canonical  #7e200ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan125 canonical  #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan126 canonical  #7e080ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan127 canonical  #7e040ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan128 canonical  #7e020ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan129 canonical  #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan130 canonical  #7e008ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+dqcan131 canonical  #7e004ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+

+-- Inf: exponent continuation bits

+dqcan137 canonical  #78000000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan138 canonical  #79000000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan139 canonical  #7a000000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan140 canonical  #78800000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan141 canonical  #78400000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan142 canonical  #78200000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan143 canonical  #78100000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan144 canonical  #78080000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan145 canonical  #78040000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan146 canonical  #78020000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan147 canonical  #78010000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan148 canonical  #78008000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan149 canonical  #78004000000000000000000000000000 -> #78000000000000000000000000000000

+

+-- Inf: coefficient continuation bits (first, last, and a few others)

+dqcan150 canonical  #78000000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan151 canonical  #78020000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan152 canonical  #78000000000000000000000000000001 -> #78000000000000000000000000000000

+dqcan153 canonical  #78010000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan154 canonical  #78002000000000000000000000000000 -> #78000000000000000000000000000000

+dqcan155 canonical  #78000800000000000000000000000000 -> #78000000000000000000000000000000

+dqcan156 canonical  #78000020000000000000000000000000 -> #78000000000000000000000000000000

+dqcan157 canonical  #78000004000000000000000000000000 -> #78000000000000000000000000000000

+dqcan158 canonical  #78000000400000000000000000000000 -> #78000000000000000000000000000000

+dqcan159 canonical  #78000000080000000000000000000000 -> #78000000000000000000000000000000

+dqcan160 canonical  #78000000004000000000000000000000 -> #78000000000000000000000000000000

+dqcan161 canonical  #78000000000200000000000000000000 -> #78000000000000000000000000000000

+dqcan162 canonical  #78000000000080000000000000000000 -> #78000000000000000000000000000000

+dqcan163 canonical  #78000000000002000000000000000000 -> #78000000000000000000000000000000

+dqcan164 canonical  #78000000000000400000000000000000 -> #78000000000000000000000000000000

+dqcan165 canonical  #78000000000000080000000000000000 -> #78000000000000000000000000000000

+dqcan166 canonical  #78000000000000001000000000000000 -> #78000000000000000000000000000000

+dqcan167 canonical  #78000000000000000200000000000000 -> #78000000000000000000000000000000

+dqcan168 canonical  #78000000000000000080000000000000 -> #78000000000000000000000000000000

+dqcan169 canonical  #78000000000000000004000000000000 -> #78000000000000000000000000000000

+dqcan170 canonical  #78000000000000000000400000000000 -> #78000000000000000000000000000000

+dqcan171 canonical  #78000000000000000000010000000000 -> #78000000000000000000000000000000

+dqcan172 canonical  #78000000000000000000002000000000 -> #78000000000000000000000000000000

+dqcan173 canonical  #78000000000000000000000400000000 -> #78000000000000000000000000000000

+dqcan174 canonical  #78000000000000000000000080000000 -> #78000000000000000000000000000000

+dqcan175 canonical  #78000000000000000000000002000000 -> #78000000000000000000000000000000

+dqcan176 canonical  #78000000000000000000000000400000 -> #78000000000000000000000000000000

+dqcan177 canonical  #78000000000000000000000000020000 -> #78000000000000000000000000000000

+dqcan178 canonical  #78000000000000000000000000001000 -> #78000000000000000000000000000000

+dqcan179 canonical  #78000000000000000000000000000400 -> #78000000000000000000000000000000

+dqcan180 canonical  #78000000000000000000000000000020 -> #78000000000000000000000000000000

+dqcan181 canonical  #78000000000000000000000000000008 -> #78000000000000000000000000000000

+

+

+-- Now the operators -- trying to check paths that might fail to

+-- canonicalize propagated operands

+

+----- Add:

+-- Finites: neutral 0

+dqcan202 add  0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff         -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan203 add          #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+-- tiny zero

+dqcan204 add  0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff         -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded

+dqcan205 add          #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded

+-- tiny non zero

+dqcan206 add -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff          -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded

+dqcan207 add          #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded

+-- NaN: declets in payload

+dqcan211 add  0  #7c000ff3fcff3fcff3fcfffffff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan212 add     #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+-- NaN: exponent continuation bits [excluding sNaN selector]

+dqcan213 add  0  #7c400ff3fcff3fcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan214 add     #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+-- sNaN: declets in payload

+dqcan215 add  0  #7e000ff3fcffffcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+dqcan216 add     #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+-- sNaN: exponent continuation bits [excluding sNaN selector]

+dqcan217 add  0  #7e500ff3fcff3fcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+dqcan218 add     #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+-- Inf: exponent continuation bits

+dqcan220 add  0  #78010000000000000000000000000000   -> #78000000000000000000000000000000

+dqcan221 add     #78680000000000000000000000000000 0 -> #78000000000000000000000000000000

+-- Inf: coefficient continuation bits

+dqcan222 add  0  #78002000000000000000000000000000   -> #78000000000000000000000000000000

+dqcan223 add     #78000000000000000000000000000001 0 -> #78000000000000000000000000000000

+dqcan224 add  0  #78000002000000000000000000000000   -> #78000000000000000000000000000000

+dqcan225 add     #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000

+dqcan226 add  0  #78000000000000000005000000000000   -> #78000000000000000000000000000000

+dqcan227 add     #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000

+

+----- Class: [does not return encoded]

+

+----- Compare:

+dqcan231 compare -Inf   1     ->  #a2080000000000000000000000000001

+dqcan232 compare -Inf  -Inf   ->  #22080000000000000000000000000000

+dqcan233 compare  1    -Inf   ->  #22080000000000000000000000000001

+dqcan234 compare  #7c010ff3fcff3fcff3fcff3ffffffcff     -1000  -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan235 compare  #7e004ff3fcff3fcff3ffffffcff3fcff     -1000  -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation

+

+----- CompareSig:

+dqcan241 comparesig -Inf   1     ->  #a2080000000000000000000000000001

+dqcan242 comparesig -Inf  -Inf   ->  #22080000000000000000000000000000

+dqcan243 comparesig  1    -Inf   ->  #22080000000000000000000000000001

+dqcan244 comparesig  #7c400ff3ffff3fcff3fcff3fcff3fcff   -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation

+dqcan245 comparesig  #7e050ff3fcfffffff3fcff3fcff3fcff   -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation

+

+----- Copy: [does not usually canonicalize]

+-- finites

+dqcan250 copy  #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff

+dqcan251 copy  #ee080ff3fcff3ffff3fcff3ffff3fcff -> #ee080ff3fcff3ffff3fcff3ffff3fcff

+-- NaNs

+dqcan252 copy  #7c000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff

+dqcan253 copy  #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff

+-- sNaN

+dqcan254 copy  #7e003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff

+dqcan255 copy  #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff

+-- Inf

+dqcan258 copy  #78002000000000000000000000000000 -> #78002000000000000000000000000000

+dqcan259 copy  #78000000000010000000000000100000 -> #78000000000010000000000000100000

+

+----- CopyAbs: [does not usually canonicalize]

+-- finites

+dqcan260 copyabs  #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff

+dqcan261 copyabs  #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff

+-- NaNs

+dqcan262 copyabs  #fc000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff

+dqcan263 copyabs  #fc080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff

+-- sNaN

+dqcan264 copyabs  #fe003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff

+dqcan265 copyabs  #fe100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff

+-- Inf

+dqcan268 copyabs  #f8002000000000000000000000000000 -> #78002000000000000000000000000000

+dqcan269 copyabs  #f8000000000000700700700000000000 -> #78000000000000700700700000000000

+

+----- CopyNegate: [does not usually canonicalize]

+-- finites

+dqcan270 copynegate  #6e080ff3fcff3fcfffffff3fcfffffff -> #ee080ff3fcff3fcfffffff3fcfffffff

+dqcan271 copynegate  #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff

+-- NaNs

+dqcan272 copynegate  #7c000ff3fcffffffffffff3fcff3fcff -> #fc000ff3fcffffffffffff3fcff3fcff

+dqcan273 copynegate  #7c080ff3fcff3fcff3fcff3fcff3fcff -> #fc080ff3fcff3fcff3fcff3fcff3fcff

+-- sNaN

+dqcan274 copynegate  #7e003ff3fcffffffffffffffcff3fcff -> #fe003ff3fcffffffffffffffcff3fcff

+dqcan275 copynegate  #7e100ff3fcff3fcff3fcff3fcff3fcff -> #fe100ff3fcff3fcff3fcff3fcff3fcff

+-- Inf

+dqcan278 copynegate  #78002000000000000000000000000000 -> #f8002000000000000000000000000000

+dqcan279 copynegate  #78000000000010000000000000100000 -> #f8000000000010000000000000100000

+

+----- CopySign: [does not usually canonicalize]

+-- finites

+dqcan280 copysign  #6e080ff3fcff3fcfffffff3fcfffffff -1 -> #ee080ff3fcff3fcfffffff3fcfffffff

+dqcan281 copysign  #ee080ff3fcff3ffff3fcff3ffff3fcff  1 -> #6e080ff3fcff3ffff3fcff3ffff3fcff

+-- NaNs

+dqcan282 copysign  #7c000ff3fcffffffffffffffcff3fcff -1 -> #fc000ff3fcffffffffffffffcff3fcff

+dqcan283 copysign  #7c080ff3fcff3fcff3fcff3fcff3fcff  1 -> #7c080ff3fcff3fcff3fcff3fcff3fcff

+-- sNaN

+dqcan284 copysign  #7e003ff3fcffffffffffffffcff3fcff -1 -> #fe003ff3fcffffffffffffffcff3fcff

+dqcan285 copysign  #7e100ff3fcff3fcff3fcff3fcff3fcff  1 -> #7e100ff3fcff3fcff3fcff3fcff3fcff

+-- Inf

+dqcan288 copysign  #78002000000000000000000000000000 -1 -> #f8002000000000000000000000000000

+dqcan289 copysign  #78000000000010000000000000100000  1 -> #78000000000010000000000000100000

+

+----- Multiply:

+-- Finites: neutral 0

+dqcan302 multiply  1  #77ffff3fcff3fcff0000000000000000               -> #77ffff3fcff3fcff0000000000000000

+dqcan303 multiply     #77fcffffcff3fcff0000000000000000 1             -> #77fccfffcff3fcff0000000000000000

+-- negative

+dqcan306 multiply -1  #77ffff3fcff3fcff0000000000000000               -> #f7ffff3fcff3fcff0000000000000000

+dqcan307 multiply     #77fcffffcff3fcff0000000000000000 -1            -> #f7fccfffcff3fcff0000000000000000

+-- NaN: declets in payload

+dqcan311 multiply  1  #7c03ff3fcff3fcff0000000000000000               -> #7c003f3fcff3fcff0000000000000000

+dqcan312 multiply     #7c03ff3fcff3fcff0000000000000000 1             -> #7c003f3fcff3fcff0000000000000000

+-- NaN: exponent continuation bits [excluding sNaN selector]

+dqcan313 multiply  1  #7c40ff3fcff3fcff0000000000000000               -> #7c003f3fcff3fcff0000000000000000

+dqcan314 multiply     #7c40ff3fcff3fcff0000000000000000 1             -> #7c003f3fcff3fcff0000000000000000

+-- sNaN: declets in payload

+dqcan315 multiply  1  #7e00ffffcff3fcff0000000000000000               -> #7c000fffcff3fcff0000000000000000 Invalid_operation

+dqcan316 multiply     #7e00ffffcff3fcff0000000000000000 1             -> #7c000fffcff3fcff0000000000000000 Invalid_operation

+-- sNaN: exponent continuation bits [excluding sNaN selector]

+dqcan317 multiply  1  #7e80ff3fcff3fcff0000000000000000               -> #7c003f3fcff3fcff0000000000000000 Invalid_operation

+dqcan318 multiply     #7e80ff3fcff3fcff0000000000000000 1             -> #7c003f3fcff3fcff0000000000000000 Invalid_operation

+-- Inf: exponent continuation bits

+dqcan320 multiply  1  #78800000000000000000000000000000               -> #78000000000000000000000000000000

+dqcan321 multiply     #78800000000000000000000000000000 1             -> #78000000000000000000000000000000

+-- Inf: coefficient continuation bits

+dqcan322 multiply  1  #78020000000000000000000000000000               -> #78000000000000000000000000000000

+dqcan323 multiply     #78020000000000000000000000000000 1             -> #78000000000000000000000000000000

+dqcan324 multiply  1  #78000000000000010000000000000000               -> #78000000000000000000000000000000

+dqcan325 multiply     #78000000000000010000000000000000 1             -> #78000000000000000000000000000000

+dqcan326 multiply  1  #78000020000000000000000000000000               -> #78000000000000000000000000000000

+dqcan327 multiply     #78000020000000000000000000000000 1             -> #78000000000000000000000000000000

+

+----- Quantize:

+dqcan401 quantize  #ee080ff3fcff3fcff3fffffffff3fcff 0    -> #ee080ff3fcff3fcff3fcff3fcff3fcff

+dqcan402 quantize  #ee080ff3fffffffffffcff3fcff3fcff 0    -> #ee080ff3fcff3fcff3fcff3fcff3fcff

+dqcan403 quantize  #78800000000000000000000000000000 Inf  -> #78000000000000000000000000000000

+dqcan404 quantize  #78020000000000000000000000000000 -Inf -> #78000000000000000000000000000000

+dqcan410 quantize  #7c080ff3fcff3fcff3fcff3fcff3fcff  1   -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan411 quantize  #fc000ff3fcfffffff3fcff3fcff3fcff  1   -> #fc000ff3fcff3fcff3fcff3fcff3fcff

+dqcan412 quantize  #7e100ff3fcff3fcff3fcff3fcff3fcff  1   -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation

+dqcan413 quantize  #fe000ff3fcff3fcff3ffffffcff3fcff  1   -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation

+

+----- Subtract:

+-- Finites: neutral 0

+dqcan502 subtract  0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff         -> #f7ffcff3fcff3fcff3fcff3fcff3fcff

+dqcan503 subtract          #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+-- tiny zero

+dqcan504 subtract  0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff         -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Rounded

+dqcan505 subtract          #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded

+-- tiny non zero

+dqcan506 subtract -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff          -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded

+dqcan507 subtract          #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded

+-- NaN: declets in payload

+dqcan511 subtract  0  #7c000ff3fcff3fcff3fcfffffff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan512 subtract     #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+-- NaN: exponent continuation bits [excluding sNaN selector]

+dqcan513 subtract  0  #7c400ff3fcff3fcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan514 subtract     #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+-- sNaN: declets in payload

+dqcan515 subtract  0  #7e000ff3fcffffcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+dqcan516 subtract     #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+-- sNaN: exponent continuation bits [excluding sNaN selector]

+dqcan517 subtract  0  #7e500ff3fcff3fcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+dqcan518 subtract     #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+-- Inf: exponent continuation bits

+dqcan520 subtract  0  #78010000000000000000000000000000   -> #f8000000000000000000000000000000

+dqcan521 subtract     #78680000000000000000000000000000 0 -> #78000000000000000000000000000000

+-- Inf: coefficient continuation bits

+dqcan522 subtract  0  #78002000000000000000000000000000   -> #f8000000000000000000000000000000

+dqcan523 subtract     #78000000000000000000000000000001 0 -> #78000000000000000000000000000000

+dqcan524 subtract  0  #78000002000000000000000000000000   -> #f8000000000000000000000000000000

+dqcan525 subtract     #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000

+dqcan526 subtract  0  #78000000000000000005000000000000   -> #f8000000000000000000000000000000

+dqcan527 subtract     #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000

+

+----- ToIntegral:

+dqcan601 tointegralx  #6e080ff3fdff3fcff3fcff3fcff3fcff  -> #6e080ff3fcff3fcff3fcff3fcff3fcff

+dqcan602 tointegralx  #ee080ff3fcff3ffff3fcff3fcff3fcff  -> #ee080ff3fcff3fcff3fcff3fcff3fcff

+dqcan603 tointegralx  #78800000000000000000000000000000  -> #78000000000000000000000000000000

+dqcan604 tointegralx  #78020000000000000000000000000000  -> #78000000000000000000000000000000

+dqcan614 tointegralx  #7c100ff3fcff3fcff3fcff3fcff3fcff  -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+dqcan615 tointegralx  #fc000ff3fcff3fcff3fcffffcff3fcff  -> #fc000ff3fcff3fcff3fcff3fcff3fcff

+dqcan616 tointegralx  #7e010ff3fcff3fcff3fcff3fcff3fcff  -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+dqcan617 tointegralx  #fe000ff3fcff3fcff3fdff3fcff3fcff  -> #fc000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation

+-- uncanonical 3999, 39.99, 3.99, 0.399,                  and negatives

+dqcan618 tointegralx  #22080000000000000000000000000fff  -> #22080000000000000000000000000cff

+dqcan619 tointegralx  #22078000000000000000000000000fff  -> #22080000000000000000000000000040  Inexact Rounded

+dqcan620 tointegralx  #22074000000000000000000000000fff  -> #22080000000000000000000000000004  Inexact Rounded

+dqcan621 tointegralx  #22070000000000000000000000000fff  -> #22080000000000000000000000000000  Inexact Rounded

+dqcan622 tointegralx  #a2080000000000000000000000000fff  -> #a2080000000000000000000000000cff

+dqcan623 tointegralx  #a2078000000000000000000000000fff  -> #a2080000000000000000000000000040  Inexact Rounded

+dqcan624 tointegralx  #a2074000000000000000000000000fff  -> #a2080000000000000000000000000004  Inexact Rounded

+dqcan625 tointegralx  #a2070000000000000000000000000fff  -> #a2080000000000000000000000000000  Inexact Rounded

+

+

+

diff --git a/Lib/test/decimaltestdata/dqClass.decTest b/Lib/test/decimaltestdata/dqClass.decTest
new file mode 100644
index 0000000..a4703f7
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqClass.decTest
@@ -0,0 +1,77 @@
+------------------------------------------------------------------------

+-- dqClass.decTest -- decQuad Class operations                        --

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

+

+-- [New 2006.11.27]

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+dqcla001  class    0                        -> +Zero

+dqcla002  class    0.00                     -> +Zero

+dqcla003  class    0E+5                     -> +Zero

+dqcla004  class    1E-6176                  -> +Subnormal

+dqcla005  class  0.1E-6143                  -> +Subnormal

+dqcla006  class  0.99999999999999999999999999999999E-6143     -> +Subnormal

+dqcla007  class  1.00000000000000000000000000000000E-6143     -> +Normal

+dqcla008  class   1E-6143                   -> +Normal

+dqcla009  class   1E-100                    -> +Normal

+dqcla010  class   1E-10                     -> +Normal

+dqcla012  class   1E-1                      -> +Normal

+dqcla013  class   1                         -> +Normal

+dqcla014  class   2.50                      -> +Normal

+dqcla015  class   100.100                   -> +Normal

+dqcla016  class   1E+30                     -> +Normal

+dqcla017  class   1E+6144                   -> +Normal

+dqcla018  class   9.99999999999999999999999999999999E+6144    -> +Normal

+dqcla019  class   Inf                       -> +Infinity

+

+dqcla021  class   -0                        -> -Zero

+dqcla022  class   -0.00                     -> -Zero

+dqcla023  class   -0E+5                     -> -Zero

+dqcla024  class   -1E-6176                  -> -Subnormal

+dqcla025  class  -0.1E-6143                 -> -Subnormal

+dqcla026  class  -0.99999999999999999999999999999999E-6143    -> -Subnormal

+dqcla027  class  -1.00000000000000000000000000000000E-6143    -> -Normal

+dqcla028  class  -1E-6143                   -> -Normal

+dqcla029  class  -1E-100                    -> -Normal

+dqcla030  class  -1E-10                     -> -Normal

+dqcla032  class  -1E-1                      -> -Normal

+dqcla033  class  -1                         -> -Normal

+dqcla034  class  -2.50                      -> -Normal

+dqcla035  class  -100.100                   -> -Normal

+dqcla036  class  -1E+30                     -> -Normal

+dqcla037  class  -1E+6144                   -> -Normal

+dqcla0614  class  -9.99999999999999999999999999999999E+6144    -> -Normal

+dqcla039  class  -Inf                       -> -Infinity

+

+dqcla041  class   NaN                       -> NaN

+dqcla042  class  -NaN                       -> NaN

+dqcla043  class  +NaN12345                  -> NaN

+dqcla044  class   sNaN                      -> sNaN

+dqcla045  class  -sNaN                      -> sNaN

+dqcla046  class  +sNaN12345                 -> sNaN

+

+

+

diff --git a/Lib/test/decimaltestdata/dqCompare.decTest b/Lib/test/decimaltestdata/dqCompare.decTest
new file mode 100644
index 0000000..7fccdf1
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCompare.decTest
@@ -0,0 +1,753 @@
+------------------------------------------------------------------------

+-- dqCompare.decTest -- decQuad comparison that allows quiet NaNs     --

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqcom001 compare  -2  -2  -> 0

+dqcom002 compare  -2  -1  -> -1

+dqcom003 compare  -2   0  -> -1

+dqcom004 compare  -2   1  -> -1

+dqcom005 compare  -2   2  -> -1

+dqcom006 compare  -1  -2  -> 1

+dqcom007 compare  -1  -1  -> 0

+dqcom008 compare  -1   0  -> -1

+dqcom009 compare  -1   1  -> -1

+dqcom010 compare  -1   2  -> -1

+dqcom011 compare   0  -2  -> 1

+dqcom012 compare   0  -1  -> 1

+dqcom013 compare   0   0  -> 0

+dqcom014 compare   0   1  -> -1

+dqcom015 compare   0   2  -> -1

+dqcom016 compare   1  -2  -> 1

+dqcom017 compare   1  -1  -> 1

+dqcom018 compare   1   0  -> 1

+dqcom019 compare   1   1  -> 0

+dqcom020 compare   1   2  -> -1

+dqcom021 compare   2  -2  -> 1

+dqcom022 compare   2  -1  -> 1

+dqcom023 compare   2   0  -> 1

+dqcom025 compare   2   1  -> 1

+dqcom026 compare   2   2  -> 0

+

+dqcom031 compare  -20  -20  -> 0

+dqcom032 compare  -20  -10  -> -1

+dqcom033 compare  -20   00  -> -1

+dqcom034 compare  -20   10  -> -1

+dqcom035 compare  -20   20  -> -1

+dqcom036 compare  -10  -20  -> 1

+dqcom037 compare  -10  -10  -> 0

+dqcom038 compare  -10   00  -> -1

+dqcom039 compare  -10   10  -> -1

+dqcom040 compare  -10   20  -> -1

+dqcom041 compare   00  -20  -> 1

+dqcom042 compare   00  -10  -> 1

+dqcom043 compare   00   00  -> 0

+dqcom044 compare   00   10  -> -1

+dqcom045 compare   00   20  -> -1

+dqcom046 compare   10  -20  -> 1

+dqcom047 compare   10  -10  -> 1

+dqcom048 compare   10   00  -> 1

+dqcom049 compare   10   10  -> 0

+dqcom050 compare   10   20  -> -1

+dqcom051 compare   20  -20  -> 1

+dqcom052 compare   20  -10  -> 1

+dqcom053 compare   20   00  -> 1

+dqcom055 compare   20   10  -> 1

+dqcom056 compare   20   20  -> 0

+

+dqcom061 compare  -2.0  -2.0  -> 0

+dqcom062 compare  -2.0  -1.0  -> -1

+dqcom063 compare  -2.0   0.0  -> -1

+dqcom064 compare  -2.0   1.0  -> -1

+dqcom065 compare  -2.0   2.0  -> -1

+dqcom066 compare  -1.0  -2.0  -> 1

+dqcom067 compare  -1.0  -1.0  -> 0

+dqcom068 compare  -1.0   0.0  -> -1

+dqcom069 compare  -1.0   1.0  -> -1

+dqcom070 compare  -1.0   2.0  -> -1

+dqcom071 compare   0.0  -2.0  -> 1

+dqcom072 compare   0.0  -1.0  -> 1

+dqcom073 compare   0.0   0.0  -> 0

+dqcom074 compare   0.0   1.0  -> -1

+dqcom075 compare   0.0   2.0  -> -1

+dqcom076 compare   1.0  -2.0  -> 1

+dqcom077 compare   1.0  -1.0  -> 1

+dqcom078 compare   1.0   0.0  -> 1

+dqcom079 compare   1.0   1.0  -> 0

+dqcom080 compare   1.0   2.0  -> -1

+dqcom081 compare   2.0  -2.0  -> 1

+dqcom082 compare   2.0  -1.0  -> 1

+dqcom083 compare   2.0   0.0  -> 1

+dqcom085 compare   2.0   1.0  -> 1

+dqcom086 compare   2.0   2.0  -> 0

+

+-- now some cases which might overflow if subtract were used

+dqcom090 compare  9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144  -> 0

+dqcom091 compare -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144  -> -1

+dqcom092 compare  9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1

+dqcom093 compare -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0

+

+-- some differing length/exponent cases

+dqcom100 compare   7.0    7.0    -> 0

+dqcom101 compare   7.0    7      -> 0

+dqcom102 compare   7      7.0    -> 0

+dqcom103 compare   7E+0   7.0    -> 0

+dqcom104 compare   70E-1  7.0    -> 0

+dqcom105 compare   0.7E+1 7      -> 0

+dqcom106 compare   70E-1  7      -> 0

+dqcom107 compare   7.0    7E+0   -> 0

+dqcom108 compare   7.0    70E-1  -> 0

+dqcom109 compare   7      0.7E+1 -> 0

+dqcom110 compare   7      70E-1  -> 0

+

+dqcom120 compare   8.0    7.0    -> 1

+dqcom121 compare   8.0    7      -> 1

+dqcom122 compare   8      7.0    -> 1

+dqcom123 compare   8E+0   7.0    -> 1

+dqcom124 compare   80E-1  7.0    -> 1

+dqcom125 compare   0.8E+1 7      -> 1

+dqcom126 compare   80E-1  7      -> 1

+dqcom127 compare   8.0    7E+0   -> 1

+dqcom128 compare   8.0    70E-1  -> 1

+dqcom129 compare   8      0.7E+1  -> 1

+dqcom130 compare   8      70E-1  -> 1

+

+dqcom140 compare   8.0    9.0    -> -1

+dqcom141 compare   8.0    9      -> -1

+dqcom142 compare   8      9.0    -> -1

+dqcom143 compare   8E+0   9.0    -> -1

+dqcom144 compare   80E-1  9.0    -> -1

+dqcom145 compare   0.8E+1 9      -> -1

+dqcom146 compare   80E-1  9      -> -1

+dqcom147 compare   8.0    9E+0   -> -1

+dqcom148 compare   8.0    90E-1  -> -1

+dqcom149 compare   8      0.9E+1 -> -1

+dqcom150 compare   8      90E-1  -> -1

+

+-- and again, with sign changes -+ ..

+dqcom200 compare  -7.0    7.0    -> -1

+dqcom201 compare  -7.0    7      -> -1

+dqcom202 compare  -7      7.0    -> -1

+dqcom203 compare  -7E+0   7.0    -> -1

+dqcom204 compare  -70E-1  7.0    -> -1

+dqcom205 compare  -0.7E+1 7      -> -1

+dqcom206 compare  -70E-1  7      -> -1

+dqcom207 compare  -7.0    7E+0   -> -1

+dqcom208 compare  -7.0    70E-1  -> -1

+dqcom209 compare  -7      0.7E+1 -> -1

+dqcom210 compare  -7      70E-1  -> -1

+

+dqcom220 compare  -8.0    7.0    -> -1

+dqcom221 compare  -8.0    7      -> -1

+dqcom222 compare  -8      7.0    -> -1

+dqcom223 compare  -8E+0   7.0    -> -1

+dqcom224 compare  -80E-1  7.0    -> -1

+dqcom225 compare  -0.8E+1 7      -> -1

+dqcom226 compare  -80E-1  7      -> -1

+dqcom227 compare  -8.0    7E+0   -> -1

+dqcom228 compare  -8.0    70E-1  -> -1

+dqcom229 compare  -8      0.7E+1 -> -1

+dqcom230 compare  -8      70E-1  -> -1

+

+dqcom240 compare  -8.0    9.0    -> -1

+dqcom241 compare  -8.0    9      -> -1

+dqcom242 compare  -8      9.0    -> -1

+dqcom243 compare  -8E+0   9.0    -> -1

+dqcom244 compare  -80E-1  9.0    -> -1

+dqcom245 compare  -0.8E+1 9      -> -1

+dqcom246 compare  -80E-1  9      -> -1

+dqcom247 compare  -8.0    9E+0   -> -1

+dqcom248 compare  -8.0    90E-1  -> -1

+dqcom249 compare  -8      0.9E+1 -> -1

+dqcom250 compare  -8      90E-1  -> -1

+

+-- and again, with sign changes +- ..

+dqcom300 compare   7.0    -7.0    -> 1

+dqcom301 compare   7.0    -7      -> 1

+dqcom302 compare   7      -7.0    -> 1

+dqcom303 compare   7E+0   -7.0    -> 1

+dqcom304 compare   70E-1  -7.0    -> 1

+dqcom305 compare   .7E+1  -7      -> 1

+dqcom306 compare   70E-1  -7      -> 1

+dqcom307 compare   7.0    -7E+0   -> 1

+dqcom308 compare   7.0    -70E-1  -> 1

+dqcom309 compare   7      -.7E+1  -> 1

+dqcom310 compare   7      -70E-1  -> 1

+

+dqcom320 compare   8.0    -7.0    -> 1

+dqcom321 compare   8.0    -7      -> 1

+dqcom322 compare   8      -7.0    -> 1

+dqcom323 compare   8E+0   -7.0    -> 1

+dqcom324 compare   80E-1  -7.0    -> 1

+dqcom325 compare   .8E+1  -7      -> 1

+dqcom326 compare   80E-1  -7      -> 1

+dqcom327 compare   8.0    -7E+0   -> 1

+dqcom328 compare   8.0    -70E-1  -> 1

+dqcom329 compare   8      -.7E+1  -> 1

+dqcom330 compare   8      -70E-1  -> 1

+

+dqcom340 compare   8.0    -9.0    -> 1

+dqcom341 compare   8.0    -9      -> 1

+dqcom342 compare   8      -9.0    -> 1

+dqcom343 compare   8E+0   -9.0    -> 1

+dqcom344 compare   80E-1  -9.0    -> 1

+dqcom345 compare   .8E+1  -9      -> 1

+dqcom346 compare   80E-1  -9      -> 1

+dqcom347 compare   8.0    -9E+0   -> 1

+dqcom348 compare   8.0    -90E-1  -> 1

+dqcom349 compare   8      -.9E+1  -> 1

+dqcom350 compare   8      -90E-1  -> 1

+

+-- and again, with sign changes -- ..

+dqcom400 compare   -7.0    -7.0    -> 0

+dqcom401 compare   -7.0    -7      -> 0

+dqcom402 compare   -7      -7.0    -> 0

+dqcom403 compare   -7E+0   -7.0    -> 0

+dqcom404 compare   -70E-1  -7.0    -> 0

+dqcom405 compare   -.7E+1  -7      -> 0

+dqcom406 compare   -70E-1  -7      -> 0

+dqcom407 compare   -7.0    -7E+0   -> 0

+dqcom408 compare   -7.0    -70E-1  -> 0

+dqcom409 compare   -7      -.7E+1  -> 0

+dqcom410 compare   -7      -70E-1  -> 0

+

+dqcom420 compare   -8.0    -7.0    -> -1

+dqcom421 compare   -8.0    -7      -> -1

+dqcom422 compare   -8      -7.0    -> -1

+dqcom423 compare   -8E+0   -7.0    -> -1

+dqcom424 compare   -80E-1  -7.0    -> -1

+dqcom425 compare   -.8E+1  -7      -> -1

+dqcom426 compare   -80E-1  -7      -> -1

+dqcom427 compare   -8.0    -7E+0   -> -1

+dqcom428 compare   -8.0    -70E-1  -> -1

+dqcom429 compare   -8      -.7E+1  -> -1

+dqcom430 compare   -8      -70E-1  -> -1

+

+dqcom440 compare   -8.0    -9.0    -> 1

+dqcom441 compare   -8.0    -9      -> 1

+dqcom442 compare   -8      -9.0    -> 1

+dqcom443 compare   -8E+0   -9.0    -> 1

+dqcom444 compare   -80E-1  -9.0    -> 1

+dqcom445 compare   -.8E+1  -9      -> 1

+dqcom446 compare   -80E-1  -9      -> 1

+dqcom447 compare   -8.0    -9E+0   -> 1

+dqcom448 compare   -8.0    -90E-1  -> 1

+dqcom449 compare   -8      -.9E+1  -> 1

+dqcom450 compare   -8      -90E-1  -> 1

+

+-- misalignment traps for little-endian

+dqcom451 compare      1.0       0.1  -> 1

+dqcom452 compare      0.1       1.0  -> -1

+dqcom453 compare     10.0       0.1  -> 1

+dqcom454 compare      0.1      10.0  -> -1

+dqcom455 compare      100       1.0  -> 1

+dqcom456 compare      1.0       100  -> -1

+dqcom457 compare     1000      10.0  -> 1

+dqcom458 compare     10.0      1000  -> -1

+dqcom459 compare    10000     100.0  -> 1

+dqcom460 compare    100.0     10000  -> -1

+dqcom461 compare   100000    1000.0  -> 1

+dqcom462 compare   1000.0    100000  -> -1

+dqcom463 compare  1000000   10000.0  -> 1

+dqcom464 compare  10000.0   1000000  -> -1

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+dqcom473 compare 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0

+dqcom474 compare 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0

+dqcom475 compare 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0

+dqcom476 compare 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0

+dqcom477 compare 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0

+dqcom478 compare 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0

+dqcom479 compare 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0

+dqcom480 compare 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0

+dqcom481 compare 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0

+dqcom482 compare 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0

+dqcom483 compare 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0

+dqcom487 compare 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0

+dqcom488 compare 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0

+dqcom489 compare 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0

+dqcom490 compare 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0

+dqcom491 compare 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0

+dqcom492 compare 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0

+dqcom493 compare 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0

+dqcom494 compare 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0

+dqcom495 compare 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0

+dqcom496 compare 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0

+dqcom497 compare 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0

+

+-- wide-ranging, around precision; signs equal

+dqcom500 compare    1     1E-15    -> 1

+dqcom501 compare    1     1E-14    -> 1

+dqcom502 compare    1     1E-13    -> 1

+dqcom503 compare    1     1E-12    -> 1

+dqcom504 compare    1     1E-11    -> 1

+dqcom505 compare    1     1E-10    -> 1

+dqcom506 compare    1     1E-9     -> 1

+dqcom507 compare    1     1E-8     -> 1

+dqcom508 compare    1     1E-7     -> 1

+dqcom509 compare    1     1E-6     -> 1

+dqcom510 compare    1     1E-5     -> 1

+dqcom511 compare    1     1E-4     -> 1

+dqcom512 compare    1     1E-3     -> 1

+dqcom513 compare    1     1E-2     -> 1

+dqcom514 compare    1     1E-1     -> 1

+dqcom515 compare    1     1E-0     -> 0

+dqcom516 compare    1     1E+1     -> -1

+dqcom517 compare    1     1E+2     -> -1

+dqcom518 compare    1     1E+3     -> -1

+dqcom519 compare    1     1E+4     -> -1

+dqcom521 compare    1     1E+5     -> -1

+dqcom522 compare    1     1E+6     -> -1

+dqcom523 compare    1     1E+7     -> -1

+dqcom524 compare    1     1E+8     -> -1

+dqcom525 compare    1     1E+9     -> -1

+dqcom526 compare    1     1E+10    -> -1

+dqcom527 compare    1     1E+11    -> -1

+dqcom528 compare    1     1E+12    -> -1

+dqcom529 compare    1     1E+13    -> -1

+dqcom530 compare    1     1E+14    -> -1

+dqcom531 compare    1     1E+15    -> -1

+-- LR swap

+dqcom540 compare    1E-15  1       -> -1

+dqcom541 compare    1E-14  1       -> -1

+dqcom542 compare    1E-13  1       -> -1

+dqcom543 compare    1E-12  1       -> -1

+dqcom544 compare    1E-11  1       -> -1

+dqcom545 compare    1E-10  1       -> -1

+dqcom546 compare    1E-9   1       -> -1

+dqcom547 compare    1E-8   1       -> -1

+dqcom548 compare    1E-7   1       -> -1

+dqcom549 compare    1E-6   1       -> -1

+dqcom550 compare    1E-5   1       -> -1

+dqcom551 compare    1E-4   1       -> -1

+dqcom552 compare    1E-3   1       -> -1

+dqcom553 compare    1E-2   1       -> -1

+dqcom554 compare    1E-1   1       -> -1

+dqcom555 compare    1E-0   1       ->  0

+dqcom556 compare    1E+1   1       ->  1

+dqcom557 compare    1E+2   1       ->  1

+dqcom558 compare    1E+3   1       ->  1

+dqcom559 compare    1E+4   1       ->  1

+dqcom561 compare    1E+5   1       ->  1

+dqcom562 compare    1E+6   1       ->  1

+dqcom563 compare    1E+7   1       ->  1

+dqcom564 compare    1E+8   1       ->  1

+dqcom565 compare    1E+9   1       ->  1

+dqcom566 compare    1E+10  1       ->  1

+dqcom567 compare    1E+11  1       ->  1

+dqcom568 compare    1E+12  1       ->  1

+dqcom569 compare    1E+13  1       ->  1

+dqcom570 compare    1E+14  1       ->  1

+dqcom571 compare    1E+15  1       ->  1

+-- similar with a useful coefficient, one side only

+dqcom580 compare  0.000000987654321     1E-15    -> 1

+dqcom581 compare  0.000000987654321     1E-14    -> 1

+dqcom582 compare  0.000000987654321     1E-13    -> 1

+dqcom583 compare  0.000000987654321     1E-12    -> 1

+dqcom584 compare  0.000000987654321     1E-11    -> 1

+dqcom585 compare  0.000000987654321     1E-10    -> 1

+dqcom586 compare  0.000000987654321     1E-9     -> 1

+dqcom587 compare  0.000000987654321     1E-8     -> 1

+dqcom588 compare  0.000000987654321     1E-7     -> 1

+dqcom589 compare  0.000000987654321     1E-6     -> -1

+dqcom590 compare  0.000000987654321     1E-5     -> -1

+dqcom591 compare  0.000000987654321     1E-4     -> -1

+dqcom592 compare  0.000000987654321     1E-3     -> -1

+dqcom593 compare  0.000000987654321     1E-2     -> -1

+dqcom594 compare  0.000000987654321     1E-1     -> -1

+dqcom595 compare  0.000000987654321     1E-0     -> -1

+dqcom596 compare  0.000000987654321     1E+1     -> -1

+dqcom597 compare  0.000000987654321     1E+2     -> -1

+dqcom598 compare  0.000000987654321     1E+3     -> -1

+dqcom599 compare  0.000000987654321     1E+4     -> -1

+

+-- check some unit-y traps

+dqcom600 compare   12            12.2345 -> -1

+dqcom601 compare   12.0          12.2345 -> -1

+dqcom602 compare   12.00         12.2345 -> -1

+dqcom603 compare   12.000        12.2345 -> -1

+dqcom604 compare   12.0000       12.2345 -> -1

+dqcom605 compare   12.00000      12.2345 -> -1

+dqcom606 compare   12.000000     12.2345 -> -1

+dqcom607 compare   12.0000000    12.2345 -> -1

+dqcom608 compare   12.00000000   12.2345 -> -1

+dqcom609 compare   12.000000000  12.2345 -> -1

+dqcom610 compare   12.1234 12            ->  1

+dqcom611 compare   12.1234 12.0          ->  1

+dqcom612 compare   12.1234 12.00         ->  1

+dqcom613 compare   12.1234 12.000        ->  1

+dqcom614 compare   12.1234 12.0000       ->  1

+dqcom615 compare   12.1234 12.00000      ->  1

+dqcom616 compare   12.1234 12.000000     ->  1

+dqcom617 compare   12.1234 12.0000000    ->  1

+dqcom618 compare   12.1234 12.00000000   ->  1

+dqcom619 compare   12.1234 12.000000000  ->  1

+dqcom620 compare  -12           -12.2345 ->  1

+dqcom621 compare  -12.0         -12.2345 ->  1

+dqcom622 compare  -12.00        -12.2345 ->  1

+dqcom623 compare  -12.000       -12.2345 ->  1

+dqcom624 compare  -12.0000      -12.2345 ->  1

+dqcom625 compare  -12.00000     -12.2345 ->  1

+dqcom626 compare  -12.000000    -12.2345 ->  1

+dqcom627 compare  -12.0000000   -12.2345 ->  1

+dqcom628 compare  -12.00000000  -12.2345 ->  1

+dqcom629 compare  -12.000000000 -12.2345 ->  1

+dqcom630 compare  -12.1234 -12           -> -1

+dqcom631 compare  -12.1234 -12.0         -> -1

+dqcom632 compare  -12.1234 -12.00        -> -1

+dqcom633 compare  -12.1234 -12.000       -> -1

+dqcom634 compare  -12.1234 -12.0000      -> -1

+dqcom635 compare  -12.1234 -12.00000     -> -1

+dqcom636 compare  -12.1234 -12.000000    -> -1

+dqcom637 compare  -12.1234 -12.0000000   -> -1

+dqcom638 compare  -12.1234 -12.00000000  -> -1

+dqcom639 compare  -12.1234 -12.000000000 -> -1

+

+-- extended zeros

+dqcom640 compare   0     0   -> 0

+dqcom641 compare   0    -0   -> 0

+dqcom642 compare   0    -0.0 -> 0

+dqcom643 compare   0     0.0 -> 0

+dqcom644 compare  -0     0   -> 0

+dqcom645 compare  -0    -0   -> 0

+dqcom646 compare  -0    -0.0 -> 0

+dqcom647 compare  -0     0.0 -> 0

+dqcom648 compare   0.0   0   -> 0

+dqcom649 compare   0.0  -0   -> 0

+dqcom650 compare   0.0  -0.0 -> 0

+dqcom651 compare   0.0   0.0 -> 0

+dqcom652 compare  -0.0   0   -> 0

+dqcom653 compare  -0.0  -0   -> 0

+dqcom654 compare  -0.0  -0.0 -> 0

+dqcom655 compare  -0.0   0.0 -> 0

+

+dqcom656 compare  -0E1   0.0 -> 0

+dqcom657 compare  -0E2   0.0 -> 0

+dqcom658 compare   0E1   0.0 -> 0

+dqcom659 compare   0E2   0.0 -> 0

+dqcom660 compare  -0E1   0   -> 0

+dqcom661 compare  -0E2   0   -> 0

+dqcom662 compare   0E1   0   -> 0

+dqcom663 compare   0E2   0   -> 0

+dqcom664 compare  -0E1  -0E1 -> 0

+dqcom665 compare  -0E2  -0E1 -> 0

+dqcom666 compare   0E1  -0E1 -> 0

+dqcom667 compare   0E2  -0E1 -> 0

+dqcom668 compare  -0E1  -0E2 -> 0

+dqcom669 compare  -0E2  -0E2 -> 0

+dqcom670 compare   0E1  -0E2 -> 0

+dqcom671 compare   0E2  -0E2 -> 0

+dqcom672 compare  -0E1   0E1 -> 0

+dqcom673 compare  -0E2   0E1 -> 0

+dqcom674 compare   0E1   0E1 -> 0

+dqcom675 compare   0E2   0E1 -> 0

+dqcom676 compare  -0E1   0E2 -> 0

+dqcom677 compare  -0E2   0E2 -> 0

+dqcom678 compare   0E1   0E2 -> 0

+dqcom679 compare   0E2   0E2 -> 0

+

+-- trailing zeros; unit-y

+dqcom680 compare   12    12           -> 0

+dqcom681 compare   12    12.0         -> 0

+dqcom682 compare   12    12.00        -> 0

+dqcom683 compare   12    12.000       -> 0

+dqcom684 compare   12    12.0000      -> 0

+dqcom685 compare   12    12.00000     -> 0

+dqcom686 compare   12    12.000000    -> 0

+dqcom687 compare   12    12.0000000   -> 0

+dqcom688 compare   12    12.00000000  -> 0

+dqcom689 compare   12    12.000000000 -> 0

+dqcom690 compare   12              12 -> 0

+dqcom691 compare   12.0            12 -> 0

+dqcom692 compare   12.00           12 -> 0

+dqcom693 compare   12.000          12 -> 0

+dqcom694 compare   12.0000         12 -> 0

+dqcom695 compare   12.00000        12 -> 0

+dqcom696 compare   12.000000       12 -> 0

+dqcom697 compare   12.0000000      12 -> 0

+dqcom698 compare   12.00000000     12 -> 0

+dqcom699 compare   12.000000000    12 -> 0

+

+-- first, second, & last digit

+dqcom700 compare   1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1

+dqcom701 compare   1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0

+dqcom702 compare   1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1

+dqcom703 compare   1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1

+dqcom704 compare   1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0

+dqcom705 compare   1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1

+dqcom706 compare   1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1

+dqcom707 compare   1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0

+dqcom708 compare   1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1

+

+-- miscellaneous

+dqcom721 compare 12345678000 1 -> 1

+dqcom722 compare 1 12345678000 -> -1

+dqcom723 compare 1234567800  1 -> 1

+dqcom724 compare 1 1234567800  -> -1

+dqcom725 compare 1234567890  1 -> 1

+dqcom726 compare 1 1234567890  -> -1

+dqcom727 compare 1234567891  1 -> 1

+dqcom728 compare 1 1234567891  -> -1

+dqcom729 compare 12345678901 1 -> 1

+dqcom730 compare 1 12345678901 -> -1

+dqcom731 compare 1234567896  1 -> 1

+dqcom732 compare 1 1234567896  -> -1

+

+-- residue cases at lower precision

+dqcom740 compare  1  0.9999999  -> 1

+dqcom741 compare  1  0.999999   -> 1

+dqcom742 compare  1  0.99999    -> 1

+dqcom743 compare  1  1.0000     -> 0

+dqcom744 compare  1  1.00001    -> -1

+dqcom745 compare  1  1.000001   -> -1

+dqcom746 compare  1  1.0000001  -> -1

+dqcom750 compare  0.9999999  1  -> -1

+dqcom751 compare  0.999999   1  -> -1

+dqcom752 compare  0.99999    1  -> -1

+dqcom753 compare  1.0000     1  -> 0

+dqcom754 compare  1.00001    1  -> 1

+dqcom755 compare  1.000001   1  -> 1

+dqcom756 compare  1.0000001  1  -> 1

+

+-- Specials

+dqcom780 compare  Inf  -Inf   ->  1

+dqcom781 compare  Inf  -1000  ->  1

+dqcom782 compare  Inf  -1     ->  1

+dqcom783 compare  Inf  -0     ->  1

+dqcom784 compare  Inf   0     ->  1

+dqcom785 compare  Inf   1     ->  1

+dqcom786 compare  Inf   1000  ->  1

+dqcom787 compare  Inf   Inf   ->  0

+dqcom788 compare -1000  Inf   -> -1

+dqcom789 compare -Inf   Inf   -> -1

+dqcom790 compare -1     Inf   -> -1

+dqcom791 compare -0     Inf   -> -1

+dqcom792 compare  0     Inf   -> -1

+dqcom793 compare  1     Inf   -> -1

+dqcom794 compare  1000  Inf   -> -1

+dqcom795 compare  Inf   Inf   ->  0

+

+dqcom800 compare -Inf  -Inf   ->  0

+dqcom801 compare -Inf  -1000  -> -1

+dqcom802 compare -Inf  -1     -> -1

+dqcom803 compare -Inf  -0     -> -1

+dqcom804 compare -Inf   0     -> -1

+dqcom805 compare -Inf   1     -> -1

+dqcom806 compare -Inf   1000  -> -1

+dqcom807 compare -Inf   Inf   -> -1

+dqcom808 compare -Inf  -Inf   ->  0

+dqcom809 compare -1000 -Inf   ->  1

+dqcom810 compare -1    -Inf   ->  1

+dqcom811 compare -0    -Inf   ->  1

+dqcom812 compare  0    -Inf   ->  1

+dqcom813 compare  1    -Inf   ->  1

+dqcom814 compare  1000 -Inf   ->  1

+dqcom815 compare  Inf  -Inf   ->  1

+

+dqcom821 compare  NaN -Inf    ->  NaN

+dqcom822 compare  NaN -1000   ->  NaN

+dqcom823 compare  NaN -1      ->  NaN

+dqcom824 compare  NaN -0      ->  NaN

+dqcom825 compare  NaN  0      ->  NaN

+dqcom826 compare  NaN  1      ->  NaN

+dqcom827 compare  NaN  1000   ->  NaN

+dqcom828 compare  NaN  Inf    ->  NaN

+dqcom829 compare  NaN  NaN    ->  NaN

+dqcom830 compare -Inf  NaN    ->  NaN

+dqcom831 compare -1000 NaN    ->  NaN

+dqcom832 compare -1    NaN    ->  NaN

+dqcom833 compare -0    NaN    ->  NaN

+dqcom834 compare  0    NaN    ->  NaN

+dqcom835 compare  1    NaN    ->  NaN

+dqcom836 compare  1000 NaN    ->  NaN

+dqcom837 compare  Inf  NaN    ->  NaN

+dqcom838 compare -NaN -NaN    -> -NaN

+dqcom839 compare +NaN -NaN    ->  NaN

+dqcom840 compare -NaN +NaN    -> -NaN

+

+dqcom841 compare  sNaN -Inf   ->  NaN  Invalid_operation

+dqcom842 compare  sNaN -1000  ->  NaN  Invalid_operation

+dqcom843 compare  sNaN -1     ->  NaN  Invalid_operation

+dqcom844 compare  sNaN -0     ->  NaN  Invalid_operation

+dqcom845 compare  sNaN  0     ->  NaN  Invalid_operation

+dqcom846 compare  sNaN  1     ->  NaN  Invalid_operation

+dqcom847 compare  sNaN  1000  ->  NaN  Invalid_operation

+dqcom848 compare  sNaN  NaN   ->  NaN  Invalid_operation

+dqcom849 compare  sNaN sNaN   ->  NaN  Invalid_operation

+dqcom850 compare  NaN  sNaN   ->  NaN  Invalid_operation

+dqcom851 compare -Inf  sNaN   ->  NaN  Invalid_operation

+dqcom852 compare -1000 sNaN   ->  NaN  Invalid_operation

+dqcom853 compare -1    sNaN   ->  NaN  Invalid_operation

+dqcom854 compare -0    sNaN   ->  NaN  Invalid_operation

+dqcom855 compare  0    sNaN   ->  NaN  Invalid_operation

+dqcom856 compare  1    sNaN   ->  NaN  Invalid_operation

+dqcom857 compare  1000 sNaN   ->  NaN  Invalid_operation

+dqcom858 compare  Inf  sNaN   ->  NaN  Invalid_operation

+dqcom859 compare  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqcom860 compare  NaN9 -Inf   ->  NaN9

+dqcom861 compare  NaN8  999   ->  NaN8

+dqcom862 compare  NaN77 Inf   ->  NaN77

+dqcom863 compare -NaN67 NaN5  -> -NaN67

+dqcom864 compare -Inf  -NaN4  -> -NaN4

+dqcom865 compare -999  -NaN33 -> -NaN33

+dqcom866 compare  Inf   NaN2  ->  NaN2

+dqcom867 compare -NaN41 -NaN42 -> -NaN41

+dqcom868 compare +NaN41 -NaN42 ->  NaN41

+dqcom869 compare -NaN41 +NaN42 -> -NaN41

+dqcom870 compare +NaN41 +NaN42 ->  NaN41

+

+dqcom871 compare -sNaN99 -Inf    -> -NaN99 Invalid_operation

+dqcom872 compare  sNaN98 -11     ->  NaN98 Invalid_operation

+dqcom873 compare  sNaN97  NaN    ->  NaN97 Invalid_operation

+dqcom874 compare  sNaN16 sNaN94  ->  NaN16 Invalid_operation

+dqcom875 compare  NaN85  sNaN83  ->  NaN83 Invalid_operation

+dqcom876 compare -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqcom877 compare  088    sNaN81  ->  NaN81 Invalid_operation

+dqcom878 compare  Inf    sNaN90  ->  NaN90 Invalid_operation

+dqcom879 compare  NaN   -sNaN89  -> -NaN89 Invalid_operation

+

+-- wide range

+dqcom880 compare +1.23456789012345E-0 9E+6144 -> -1

+dqcom881 compare 9E+6144 +1.23456789012345E-0 ->  1

+dqcom882 compare +0.100 9E-6143               ->  1

+dqcom883 compare 9E-6143 +0.100               -> -1

+dqcom885 compare -1.23456789012345E-0 9E+6144 -> -1

+dqcom886 compare 9E+6144 -1.23456789012345E-0 ->  1

+dqcom887 compare -0.100 9E-6143               -> -1

+dqcom888 compare 9E-6143 -0.100               ->  1

+

+-- signs

+dqcom901 compare  1e+77  1e+11 ->  1

+dqcom902 compare  1e+77 -1e+11 ->  1

+dqcom903 compare -1e+77  1e+11 -> -1

+dqcom904 compare -1e+77 -1e+11 -> -1

+dqcom905 compare  1e-77  1e-11 -> -1

+dqcom906 compare  1e-77 -1e-11 ->  1

+dqcom907 compare -1e-77  1e-11 -> -1

+dqcom908 compare -1e-77 -1e-11 ->  1

+

+-- full alignment range, both ways

+dqcomp1001 compare 1 1.000000000000000000000000000000000  -> 0

+dqcomp1002 compare 1 1.00000000000000000000000000000000   -> 0

+dqcomp1003 compare 1 1.0000000000000000000000000000000    -> 0

+dqcomp1004 compare 1 1.000000000000000000000000000000     -> 0

+dqcomp1005 compare 1 1.00000000000000000000000000000      -> 0

+dqcomp1006 compare 1 1.0000000000000000000000000000       -> 0

+dqcomp1007 compare 1 1.000000000000000000000000000        -> 0

+dqcomp1008 compare 1 1.00000000000000000000000000         -> 0

+dqcomp1009 compare 1 1.0000000000000000000000000          -> 0

+dqcomp1010 compare 1 1.000000000000000000000000           -> 0

+dqcomp1011 compare 1 1.00000000000000000000000            -> 0

+dqcomp1012 compare 1 1.0000000000000000000000             -> 0

+dqcomp1013 compare 1 1.000000000000000000000              -> 0

+dqcomp1014 compare 1 1.00000000000000000000               -> 0

+dqcomp1015 compare 1 1.0000000000000000000                -> 0

+dqcomp1016 compare 1 1.000000000000000000                 -> 0

+dqcomp1017 compare 1 1.00000000000000000                  -> 0

+dqcomp1018 compare 1 1.0000000000000000                   -> 0

+dqcomp1019 compare 1 1.000000000000000  -> 0

+dqcomp1020 compare 1 1.00000000000000   -> 0

+dqcomp1021 compare 1 1.0000000000000    -> 0

+dqcomp1022 compare 1 1.000000000000     -> 0

+dqcomp1023 compare 1 1.00000000000      -> 0

+dqcomp1024 compare 1 1.0000000000       -> 0

+dqcomp1025 compare 1 1.000000000        -> 0

+dqcomp1026 compare 1 1.00000000         -> 0

+dqcomp1027 compare 1 1.0000000          -> 0

+dqcomp1028 compare 1 1.000000           -> 0

+dqcomp1029 compare 1 1.00000            -> 0

+dqcomp1030 compare 1 1.0000             -> 0

+dqcomp1031 compare 1 1.000              -> 0

+dqcomp1032 compare 1 1.00               -> 0

+dqcomp1033 compare 1 1.0                -> 0

+

+dqcomp1041 compare 1.000000000000000000000000000000000  1 -> 0

+dqcomp1042 compare 1.00000000000000000000000000000000   1 -> 0

+dqcomp1043 compare 1.0000000000000000000000000000000    1 -> 0

+dqcomp1044 compare 1.000000000000000000000000000000     1 -> 0

+dqcomp1045 compare 1.00000000000000000000000000000      1 -> 0

+dqcomp1046 compare 1.0000000000000000000000000000       1 -> 0

+dqcomp1047 compare 1.000000000000000000000000000        1 -> 0

+dqcomp1048 compare 1.00000000000000000000000000         1 -> 0

+dqcomp1049 compare 1.0000000000000000000000000          1 -> 0

+dqcomp1050 compare 1.000000000000000000000000           1 -> 0

+dqcomp1051 compare 1.00000000000000000000000            1 -> 0

+dqcomp1052 compare 1.0000000000000000000000             1 -> 0

+dqcomp1053 compare 1.000000000000000000000              1 -> 0

+dqcomp1054 compare 1.00000000000000000000               1 -> 0

+dqcomp1055 compare 1.0000000000000000000                1 -> 0

+dqcomp1056 compare 1.000000000000000000                 1 -> 0

+dqcomp1057 compare 1.00000000000000000                  1 -> 0

+dqcomp1058 compare 1.0000000000000000                   1 -> 0

+dqcomp1059 compare 1.000000000000000  1 -> 0

+dqcomp1060 compare 1.00000000000000   1 -> 0

+dqcomp1061 compare 1.0000000000000    1 -> 0

+dqcomp1062 compare 1.000000000000     1 -> 0

+dqcomp1063 compare 1.00000000000      1 -> 0

+dqcomp1064 compare 1.0000000000       1 -> 0

+dqcomp1065 compare 1.000000000        1 -> 0

+dqcomp1066 compare 1.00000000         1 -> 0

+dqcomp1067 compare 1.0000000          1 -> 0

+dqcomp1068 compare 1.000000           1 -> 0

+dqcomp1069 compare 1.00000            1 -> 0

+dqcomp1070 compare 1.0000             1 -> 0

+dqcomp1071 compare 1.000              1 -> 0

+dqcomp1072 compare 1.00               1 -> 0

+dqcomp1073 compare 1.0                1 -> 0

+

+-- check MSD always detected non-zero

+dqcomp1080 compare 0 0.000000000000000000000000000000000  -> 0

+dqcomp1081 compare 0 1.000000000000000000000000000000000  -> -1

+dqcomp1082 compare 0 2.000000000000000000000000000000000  -> -1

+dqcomp1083 compare 0 3.000000000000000000000000000000000  -> -1

+dqcomp1084 compare 0 4.000000000000000000000000000000000  -> -1

+dqcomp1085 compare 0 5.000000000000000000000000000000000  -> -1

+dqcomp1086 compare 0 6.000000000000000000000000000000000  -> -1

+dqcomp1087 compare 0 7.000000000000000000000000000000000  -> -1

+dqcomp1088 compare 0 8.000000000000000000000000000000000  -> -1

+dqcomp1089 compare 0 9.000000000000000000000000000000000  -> -1

+dqcomp1090 compare 0.000000000000000000000000000000000  0 -> 0

+dqcomp1091 compare 1.000000000000000000000000000000000  0 -> 1

+dqcomp1092 compare 2.000000000000000000000000000000000  0 -> 1

+dqcomp1093 compare 3.000000000000000000000000000000000  0 -> 1

+dqcomp1094 compare 4.000000000000000000000000000000000  0 -> 1

+dqcomp1095 compare 5.000000000000000000000000000000000  0 -> 1

+dqcomp1096 compare 6.000000000000000000000000000000000  0 -> 1

+dqcomp1097 compare 7.000000000000000000000000000000000  0 -> 1

+dqcomp1098 compare 8.000000000000000000000000000000000  0 -> 1

+dqcomp1099 compare 9.000000000000000000000000000000000  0 -> 1

+

+-- Null tests

+dqcom990 compare 10  # -> NaN Invalid_operation

+dqcom991 compare  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqCompareSig.decTest b/Lib/test/decimaltestdata/dqCompareSig.decTest
new file mode 100644
index 0000000..36d5e9b
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCompareSig.decTest
@@ -0,0 +1,647 @@
+------------------------------------------------------------------------

+-- dqCompareSig.decTest -- decQuad comparison; all NaNs signal        --

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqcms001 comparesig  -2  -2  -> 0

+dqcms002 comparesig  -2  -1  -> -1

+dqcms003 comparesig  -2   0  -> -1

+dqcms004 comparesig  -2   1  -> -1

+dqcms005 comparesig  -2   2  -> -1

+dqcms006 comparesig  -1  -2  -> 1

+dqcms007 comparesig  -1  -1  -> 0

+dqcms008 comparesig  -1   0  -> -1

+dqcms009 comparesig  -1   1  -> -1

+dqcms010 comparesig  -1   2  -> -1

+dqcms011 comparesig   0  -2  -> 1

+dqcms012 comparesig   0  -1  -> 1

+dqcms013 comparesig   0   0  -> 0

+dqcms014 comparesig   0   1  -> -1

+dqcms015 comparesig   0   2  -> -1

+dqcms016 comparesig   1  -2  -> 1

+dqcms017 comparesig   1  -1  -> 1

+dqcms018 comparesig   1   0  -> 1

+dqcms019 comparesig   1   1  -> 0

+dqcms020 comparesig   1   2  -> -1

+dqcms021 comparesig   2  -2  -> 1

+dqcms022 comparesig   2  -1  -> 1

+dqcms023 comparesig   2   0  -> 1

+dqcms025 comparesig   2   1  -> 1

+dqcms026 comparesig   2   2  -> 0

+

+dqcms031 comparesig  -20  -20  -> 0

+dqcms032 comparesig  -20  -10  -> -1

+dqcms033 comparesig  -20   00  -> -1

+dqcms034 comparesig  -20   10  -> -1

+dqcms035 comparesig  -20   20  -> -1

+dqcms036 comparesig  -10  -20  -> 1

+dqcms037 comparesig  -10  -10  -> 0

+dqcms038 comparesig  -10   00  -> -1

+dqcms039 comparesig  -10   10  -> -1

+dqcms040 comparesig  -10   20  -> -1

+dqcms041 comparesig   00  -20  -> 1

+dqcms042 comparesig   00  -10  -> 1

+dqcms043 comparesig   00   00  -> 0

+dqcms044 comparesig   00   10  -> -1

+dqcms045 comparesig   00   20  -> -1

+dqcms046 comparesig   10  -20  -> 1

+dqcms047 comparesig   10  -10  -> 1

+dqcms048 comparesig   10   00  -> 1

+dqcms049 comparesig   10   10  -> 0

+dqcms050 comparesig   10   20  -> -1

+dqcms051 comparesig   20  -20  -> 1

+dqcms052 comparesig   20  -10  -> 1

+dqcms053 comparesig   20   00  -> 1

+dqcms055 comparesig   20   10  -> 1

+dqcms056 comparesig   20   20  -> 0

+

+dqcms061 comparesig  -2.0  -2.0  -> 0

+dqcms062 comparesig  -2.0  -1.0  -> -1

+dqcms063 comparesig  -2.0   0.0  -> -1

+dqcms064 comparesig  -2.0   1.0  -> -1

+dqcms065 comparesig  -2.0   2.0  -> -1

+dqcms066 comparesig  -1.0  -2.0  -> 1

+dqcms067 comparesig  -1.0  -1.0  -> 0

+dqcms068 comparesig  -1.0   0.0  -> -1

+dqcms069 comparesig  -1.0   1.0  -> -1

+dqcms070 comparesig  -1.0   2.0  -> -1

+dqcms071 comparesig   0.0  -2.0  -> 1

+dqcms072 comparesig   0.0  -1.0  -> 1

+dqcms073 comparesig   0.0   0.0  -> 0

+dqcms074 comparesig   0.0   1.0  -> -1

+dqcms075 comparesig   0.0   2.0  -> -1

+dqcms076 comparesig   1.0  -2.0  -> 1

+dqcms077 comparesig   1.0  -1.0  -> 1

+dqcms078 comparesig   1.0   0.0  -> 1

+dqcms079 comparesig   1.0   1.0  -> 0

+dqcms080 comparesig   1.0   2.0  -> -1

+dqcms081 comparesig   2.0  -2.0  -> 1

+dqcms082 comparesig   2.0  -1.0  -> 1

+dqcms083 comparesig   2.0   0.0  -> 1

+dqcms085 comparesig   2.0   1.0  -> 1

+dqcms086 comparesig   2.0   2.0  -> 0

+

+-- now some cases which might overflow if subtract were used

+dqcms090 comparesig  9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144  -> 0

+dqcms091 comparesig -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144  -> -1

+dqcms092 comparesig  9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1

+dqcms093 comparesig -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0

+

+-- some differing length/exponent cases

+dqcms100 comparesig   7.0    7.0    -> 0

+dqcms101 comparesig   7.0    7      -> 0

+dqcms102 comparesig   7      7.0    -> 0

+dqcms103 comparesig   7E+0   7.0    -> 0

+dqcms104 comparesig   70E-1  7.0    -> 0

+dqcms105 comparesig   0.7E+1 7      -> 0

+dqcms106 comparesig   70E-1  7      -> 0

+dqcms107 comparesig   7.0    7E+0   -> 0

+dqcms108 comparesig   7.0    70E-1  -> 0

+dqcms109 comparesig   7      0.7E+1 -> 0

+dqcms110 comparesig   7      70E-1  -> 0

+

+dqcms120 comparesig   8.0    7.0    -> 1

+dqcms121 comparesig   8.0    7      -> 1

+dqcms122 comparesig   8      7.0    -> 1

+dqcms123 comparesig   8E+0   7.0    -> 1

+dqcms124 comparesig   80E-1  7.0    -> 1

+dqcms125 comparesig   0.8E+1 7      -> 1

+dqcms126 comparesig   80E-1  7      -> 1

+dqcms127 comparesig   8.0    7E+0   -> 1

+dqcms128 comparesig   8.0    70E-1  -> 1

+dqcms129 comparesig   8      0.7E+1  -> 1

+dqcms130 comparesig   8      70E-1  -> 1

+

+dqcms140 comparesig   8.0    9.0    -> -1

+dqcms141 comparesig   8.0    9      -> -1

+dqcms142 comparesig   8      9.0    -> -1

+dqcms143 comparesig   8E+0   9.0    -> -1

+dqcms144 comparesig   80E-1  9.0    -> -1

+dqcms145 comparesig   0.8E+1 9      -> -1

+dqcms146 comparesig   80E-1  9      -> -1

+dqcms147 comparesig   8.0    9E+0   -> -1

+dqcms148 comparesig   8.0    90E-1  -> -1

+dqcms149 comparesig   8      0.9E+1 -> -1

+dqcms150 comparesig   8      90E-1  -> -1

+

+-- and again, with sign changes -+ ..

+dqcms200 comparesig  -7.0    7.0    -> -1

+dqcms201 comparesig  -7.0    7      -> -1

+dqcms202 comparesig  -7      7.0    -> -1

+dqcms203 comparesig  -7E+0   7.0    -> -1

+dqcms204 comparesig  -70E-1  7.0    -> -1

+dqcms205 comparesig  -0.7E+1 7      -> -1

+dqcms206 comparesig  -70E-1  7      -> -1

+dqcms207 comparesig  -7.0    7E+0   -> -1

+dqcms208 comparesig  -7.0    70E-1  -> -1

+dqcms209 comparesig  -7      0.7E+1 -> -1

+dqcms210 comparesig  -7      70E-1  -> -1

+

+dqcms220 comparesig  -8.0    7.0    -> -1

+dqcms221 comparesig  -8.0    7      -> -1

+dqcms222 comparesig  -8      7.0    -> -1

+dqcms223 comparesig  -8E+0   7.0    -> -1

+dqcms224 comparesig  -80E-1  7.0    -> -1

+dqcms225 comparesig  -0.8E+1 7      -> -1

+dqcms226 comparesig  -80E-1  7      -> -1

+dqcms227 comparesig  -8.0    7E+0   -> -1

+dqcms228 comparesig  -8.0    70E-1  -> -1

+dqcms229 comparesig  -8      0.7E+1 -> -1

+dqcms230 comparesig  -8      70E-1  -> -1

+

+dqcms240 comparesig  -8.0    9.0    -> -1

+dqcms241 comparesig  -8.0    9      -> -1

+dqcms242 comparesig  -8      9.0    -> -1

+dqcms243 comparesig  -8E+0   9.0    -> -1

+dqcms244 comparesig  -80E-1  9.0    -> -1

+dqcms245 comparesig  -0.8E+1 9      -> -1

+dqcms246 comparesig  -80E-1  9      -> -1

+dqcms247 comparesig  -8.0    9E+0   -> -1

+dqcms248 comparesig  -8.0    90E-1  -> -1

+dqcms249 comparesig  -8      0.9E+1 -> -1

+dqcms250 comparesig  -8      90E-1  -> -1

+

+-- and again, with sign changes +- ..

+dqcms300 comparesig   7.0    -7.0    -> 1

+dqcms301 comparesig   7.0    -7      -> 1

+dqcms302 comparesig   7      -7.0    -> 1

+dqcms303 comparesig   7E+0   -7.0    -> 1

+dqcms304 comparesig   70E-1  -7.0    -> 1

+dqcms305 comparesig   .7E+1  -7      -> 1

+dqcms306 comparesig   70E-1  -7      -> 1

+dqcms307 comparesig   7.0    -7E+0   -> 1

+dqcms308 comparesig   7.0    -70E-1  -> 1

+dqcms309 comparesig   7      -.7E+1  -> 1

+dqcms310 comparesig   7      -70E-1  -> 1

+

+dqcms320 comparesig   8.0    -7.0    -> 1

+dqcms321 comparesig   8.0    -7      -> 1

+dqcms322 comparesig   8      -7.0    -> 1

+dqcms323 comparesig   8E+0   -7.0    -> 1

+dqcms324 comparesig   80E-1  -7.0    -> 1

+dqcms325 comparesig   .8E+1  -7      -> 1

+dqcms326 comparesig   80E-1  -7      -> 1

+dqcms327 comparesig   8.0    -7E+0   -> 1

+dqcms328 comparesig   8.0    -70E-1  -> 1

+dqcms329 comparesig   8      -.7E+1  -> 1

+dqcms330 comparesig   8      -70E-1  -> 1

+

+dqcms340 comparesig   8.0    -9.0    -> 1

+dqcms341 comparesig   8.0    -9      -> 1

+dqcms342 comparesig   8      -9.0    -> 1

+dqcms343 comparesig   8E+0   -9.0    -> 1

+dqcms344 comparesig   80E-1  -9.0    -> 1

+dqcms345 comparesig   .8E+1  -9      -> 1

+dqcms346 comparesig   80E-1  -9      -> 1

+dqcms347 comparesig   8.0    -9E+0   -> 1

+dqcms348 comparesig   8.0    -90E-1  -> 1

+dqcms349 comparesig   8      -.9E+1  -> 1

+dqcms350 comparesig   8      -90E-1  -> 1

+

+-- and again, with sign changes -- ..

+dqcms400 comparesig   -7.0    -7.0    -> 0

+dqcms401 comparesig   -7.0    -7      -> 0

+dqcms402 comparesig   -7      -7.0    -> 0

+dqcms403 comparesig   -7E+0   -7.0    -> 0

+dqcms404 comparesig   -70E-1  -7.0    -> 0

+dqcms405 comparesig   -.7E+1  -7      -> 0

+dqcms406 comparesig   -70E-1  -7      -> 0

+dqcms407 comparesig   -7.0    -7E+0   -> 0

+dqcms408 comparesig   -7.0    -70E-1  -> 0

+dqcms409 comparesig   -7      -.7E+1  -> 0

+dqcms410 comparesig   -7      -70E-1  -> 0

+

+dqcms420 comparesig   -8.0    -7.0    -> -1

+dqcms421 comparesig   -8.0    -7      -> -1

+dqcms422 comparesig   -8      -7.0    -> -1

+dqcms423 comparesig   -8E+0   -7.0    -> -1

+dqcms424 comparesig   -80E-1  -7.0    -> -1

+dqcms425 comparesig   -.8E+1  -7      -> -1

+dqcms426 comparesig   -80E-1  -7      -> -1

+dqcms427 comparesig   -8.0    -7E+0   -> -1

+dqcms428 comparesig   -8.0    -70E-1  -> -1

+dqcms429 comparesig   -8      -.7E+1  -> -1

+dqcms430 comparesig   -8      -70E-1  -> -1

+

+dqcms440 comparesig   -8.0    -9.0    -> 1

+dqcms441 comparesig   -8.0    -9      -> 1

+dqcms442 comparesig   -8      -9.0    -> 1

+dqcms443 comparesig   -8E+0   -9.0    -> 1

+dqcms444 comparesig   -80E-1  -9.0    -> 1

+dqcms445 comparesig   -.8E+1  -9      -> 1

+dqcms446 comparesig   -80E-1  -9      -> 1

+dqcms447 comparesig   -8.0    -9E+0   -> 1

+dqcms448 comparesig   -8.0    -90E-1  -> 1

+dqcms449 comparesig   -8      -.9E+1  -> 1

+dqcms450 comparesig   -8      -90E-1  -> 1

+

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+dqcms473 comparesig 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0

+dqcms474 comparesig 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0

+dqcms475 comparesig 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0

+dqcms476 comparesig 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0

+dqcms477 comparesig 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0

+dqcms478 comparesig 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0

+dqcms479 comparesig 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0

+dqcms480 comparesig 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0

+dqcms481 comparesig 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0

+dqcms482 comparesig 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0

+dqcms483 comparesig 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0

+dqcms487 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0

+dqcms488 comparesig 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0

+dqcms489 comparesig 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0

+dqcms490 comparesig 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0

+dqcms491 comparesig 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0

+dqcms492 comparesig 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0

+dqcms493 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0

+dqcms494 comparesig 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0

+dqcms495 comparesig 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0

+dqcms496 comparesig 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0

+dqcms497 comparesig 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0

+

+-- wide-ranging, around precision; signs equal

+dqcms500 comparesig    1     1E-15    -> 1

+dqcms501 comparesig    1     1E-14    -> 1

+dqcms502 comparesig    1     1E-13    -> 1

+dqcms503 comparesig    1     1E-12    -> 1

+dqcms504 comparesig    1     1E-11    -> 1

+dqcms505 comparesig    1     1E-10    -> 1

+dqcms506 comparesig    1     1E-9     -> 1

+dqcms507 comparesig    1     1E-8     -> 1

+dqcms508 comparesig    1     1E-7     -> 1

+dqcms509 comparesig    1     1E-6     -> 1

+dqcms510 comparesig    1     1E-5     -> 1

+dqcms511 comparesig    1     1E-4     -> 1

+dqcms512 comparesig    1     1E-3     -> 1

+dqcms513 comparesig    1     1E-2     -> 1

+dqcms514 comparesig    1     1E-1     -> 1

+dqcms515 comparesig    1     1E-0     -> 0

+dqcms516 comparesig    1     1E+1     -> -1

+dqcms517 comparesig    1     1E+2     -> -1

+dqcms518 comparesig    1     1E+3     -> -1

+dqcms519 comparesig    1     1E+4     -> -1

+dqcms521 comparesig    1     1E+5     -> -1

+dqcms522 comparesig    1     1E+6     -> -1

+dqcms523 comparesig    1     1E+7     -> -1

+dqcms524 comparesig    1     1E+8     -> -1

+dqcms525 comparesig    1     1E+9     -> -1

+dqcms526 comparesig    1     1E+10    -> -1

+dqcms527 comparesig    1     1E+11    -> -1

+dqcms528 comparesig    1     1E+12    -> -1

+dqcms529 comparesig    1     1E+13    -> -1

+dqcms530 comparesig    1     1E+14    -> -1

+dqcms531 comparesig    1     1E+15    -> -1

+-- LR swap

+dqcms540 comparesig    1E-15  1       -> -1

+dqcms541 comparesig    1E-14  1       -> -1

+dqcms542 comparesig    1E-13  1       -> -1

+dqcms543 comparesig    1E-12  1       -> -1

+dqcms544 comparesig    1E-11  1       -> -1

+dqcms545 comparesig    1E-10  1       -> -1

+dqcms546 comparesig    1E-9   1       -> -1

+dqcms547 comparesig    1E-8   1       -> -1

+dqcms548 comparesig    1E-7   1       -> -1

+dqcms549 comparesig    1E-6   1       -> -1

+dqcms550 comparesig    1E-5   1       -> -1

+dqcms551 comparesig    1E-4   1       -> -1

+dqcms552 comparesig    1E-3   1       -> -1

+dqcms553 comparesig    1E-2   1       -> -1

+dqcms554 comparesig    1E-1   1       -> -1

+dqcms555 comparesig    1E-0   1       ->  0

+dqcms556 comparesig    1E+1   1       ->  1

+dqcms557 comparesig    1E+2   1       ->  1

+dqcms558 comparesig    1E+3   1       ->  1

+dqcms559 comparesig    1E+4   1       ->  1

+dqcms561 comparesig    1E+5   1       ->  1

+dqcms562 comparesig    1E+6   1       ->  1

+dqcms563 comparesig    1E+7   1       ->  1

+dqcms564 comparesig    1E+8   1       ->  1

+dqcms565 comparesig    1E+9   1       ->  1

+dqcms566 comparesig    1E+10  1       ->  1

+dqcms567 comparesig    1E+11  1       ->  1

+dqcms568 comparesig    1E+12  1       ->  1

+dqcms569 comparesig    1E+13  1       ->  1

+dqcms570 comparesig    1E+14  1       ->  1

+dqcms571 comparesig    1E+15  1       ->  1

+-- similar with a useful coefficient, one side only

+dqcms580 comparesig  0.000000987654321     1E-15    -> 1

+dqcms581 comparesig  0.000000987654321     1E-14    -> 1

+dqcms582 comparesig  0.000000987654321     1E-13    -> 1

+dqcms583 comparesig  0.000000987654321     1E-12    -> 1

+dqcms584 comparesig  0.000000987654321     1E-11    -> 1

+dqcms585 comparesig  0.000000987654321     1E-10    -> 1

+dqcms586 comparesig  0.000000987654321     1E-9     -> 1

+dqcms587 comparesig  0.000000987654321     1E-8     -> 1

+dqcms588 comparesig  0.000000987654321     1E-7     -> 1

+dqcms589 comparesig  0.000000987654321     1E-6     -> -1

+dqcms590 comparesig  0.000000987654321     1E-5     -> -1

+dqcms591 comparesig  0.000000987654321     1E-4     -> -1

+dqcms592 comparesig  0.000000987654321     1E-3     -> -1

+dqcms593 comparesig  0.000000987654321     1E-2     -> -1

+dqcms594 comparesig  0.000000987654321     1E-1     -> -1

+dqcms595 comparesig  0.000000987654321     1E-0     -> -1

+dqcms596 comparesig  0.000000987654321     1E+1     -> -1

+dqcms597 comparesig  0.000000987654321     1E+2     -> -1

+dqcms598 comparesig  0.000000987654321     1E+3     -> -1

+dqcms599 comparesig  0.000000987654321     1E+4     -> -1

+

+-- check some unit-y traps

+dqcms600 comparesig   12            12.2345 -> -1

+dqcms601 comparesig   12.0          12.2345 -> -1

+dqcms602 comparesig   12.00         12.2345 -> -1

+dqcms603 comparesig   12.000        12.2345 -> -1

+dqcms604 comparesig   12.0000       12.2345 -> -1

+dqcms605 comparesig   12.00000      12.2345 -> -1

+dqcms606 comparesig   12.000000     12.2345 -> -1

+dqcms607 comparesig   12.0000000    12.2345 -> -1

+dqcms608 comparesig   12.00000000   12.2345 -> -1

+dqcms609 comparesig   12.000000000  12.2345 -> -1

+dqcms610 comparesig   12.1234 12            ->  1

+dqcms611 comparesig   12.1234 12.0          ->  1

+dqcms612 comparesig   12.1234 12.00         ->  1

+dqcms613 comparesig   12.1234 12.000        ->  1

+dqcms614 comparesig   12.1234 12.0000       ->  1

+dqcms615 comparesig   12.1234 12.00000      ->  1

+dqcms616 comparesig   12.1234 12.000000     ->  1

+dqcms617 comparesig   12.1234 12.0000000    ->  1

+dqcms618 comparesig   12.1234 12.00000000   ->  1

+dqcms619 comparesig   12.1234 12.000000000  ->  1

+dqcms620 comparesig  -12           -12.2345 ->  1

+dqcms621 comparesig  -12.0         -12.2345 ->  1

+dqcms622 comparesig  -12.00        -12.2345 ->  1

+dqcms623 comparesig  -12.000       -12.2345 ->  1

+dqcms624 comparesig  -12.0000      -12.2345 ->  1

+dqcms625 comparesig  -12.00000     -12.2345 ->  1

+dqcms626 comparesig  -12.000000    -12.2345 ->  1

+dqcms627 comparesig  -12.0000000   -12.2345 ->  1

+dqcms628 comparesig  -12.00000000  -12.2345 ->  1

+dqcms629 comparesig  -12.000000000 -12.2345 ->  1

+dqcms630 comparesig  -12.1234 -12           -> -1

+dqcms631 comparesig  -12.1234 -12.0         -> -1

+dqcms632 comparesig  -12.1234 -12.00        -> -1

+dqcms633 comparesig  -12.1234 -12.000       -> -1

+dqcms634 comparesig  -12.1234 -12.0000      -> -1

+dqcms635 comparesig  -12.1234 -12.00000     -> -1

+dqcms636 comparesig  -12.1234 -12.000000    -> -1

+dqcms637 comparesig  -12.1234 -12.0000000   -> -1

+dqcms638 comparesig  -12.1234 -12.00000000  -> -1

+dqcms639 comparesig  -12.1234 -12.000000000 -> -1

+

+-- extended zeros

+dqcms640 comparesig   0     0   -> 0

+dqcms641 comparesig   0    -0   -> 0

+dqcms642 comparesig   0    -0.0 -> 0

+dqcms643 comparesig   0     0.0 -> 0

+dqcms644 comparesig  -0     0   -> 0

+dqcms645 comparesig  -0    -0   -> 0

+dqcms646 comparesig  -0    -0.0 -> 0

+dqcms647 comparesig  -0     0.0 -> 0

+dqcms648 comparesig   0.0   0   -> 0

+dqcms649 comparesig   0.0  -0   -> 0

+dqcms650 comparesig   0.0  -0.0 -> 0

+dqcms651 comparesig   0.0   0.0 -> 0

+dqcms652 comparesig  -0.0   0   -> 0

+dqcms653 comparesig  -0.0  -0   -> 0

+dqcms654 comparesig  -0.0  -0.0 -> 0

+dqcms655 comparesig  -0.0   0.0 -> 0

+

+dqcms656 comparesig  -0E1   0.0 -> 0

+dqcms657 comparesig  -0E2   0.0 -> 0

+dqcms658 comparesig   0E1   0.0 -> 0

+dqcms659 comparesig   0E2   0.0 -> 0

+dqcms660 comparesig  -0E1   0   -> 0

+dqcms661 comparesig  -0E2   0   -> 0

+dqcms662 comparesig   0E1   0   -> 0

+dqcms663 comparesig   0E2   0   -> 0

+dqcms664 comparesig  -0E1  -0E1 -> 0

+dqcms665 comparesig  -0E2  -0E1 -> 0

+dqcms666 comparesig   0E1  -0E1 -> 0

+dqcms667 comparesig   0E2  -0E1 -> 0

+dqcms668 comparesig  -0E1  -0E2 -> 0

+dqcms669 comparesig  -0E2  -0E2 -> 0

+dqcms670 comparesig   0E1  -0E2 -> 0

+dqcms671 comparesig   0E2  -0E2 -> 0

+dqcms672 comparesig  -0E1   0E1 -> 0

+dqcms673 comparesig  -0E2   0E1 -> 0

+dqcms674 comparesig   0E1   0E1 -> 0

+dqcms675 comparesig   0E2   0E1 -> 0

+dqcms676 comparesig  -0E1   0E2 -> 0

+dqcms677 comparesig  -0E2   0E2 -> 0

+dqcms678 comparesig   0E1   0E2 -> 0

+dqcms679 comparesig   0E2   0E2 -> 0

+

+-- trailing zeros; unit-y

+dqcms680 comparesig   12    12           -> 0

+dqcms681 comparesig   12    12.0         -> 0

+dqcms682 comparesig   12    12.00        -> 0

+dqcms683 comparesig   12    12.000       -> 0

+dqcms684 comparesig   12    12.0000      -> 0

+dqcms685 comparesig   12    12.00000     -> 0

+dqcms686 comparesig   12    12.000000    -> 0

+dqcms687 comparesig   12    12.0000000   -> 0

+dqcms688 comparesig   12    12.00000000  -> 0

+dqcms689 comparesig   12    12.000000000 -> 0

+dqcms690 comparesig   12              12 -> 0

+dqcms691 comparesig   12.0            12 -> 0

+dqcms692 comparesig   12.00           12 -> 0

+dqcms693 comparesig   12.000          12 -> 0

+dqcms694 comparesig   12.0000         12 -> 0

+dqcms695 comparesig   12.00000        12 -> 0

+dqcms696 comparesig   12.000000       12 -> 0

+dqcms697 comparesig   12.0000000      12 -> 0

+dqcms698 comparesig   12.00000000     12 -> 0

+dqcms699 comparesig   12.000000000    12 -> 0

+

+-- first, second, & last digit

+dqcms700 comparesig   1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1

+dqcms701 comparesig   1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0

+dqcms702 comparesig   1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1

+dqcms703 comparesig   1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1

+dqcms704 comparesig   1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0

+dqcms705 comparesig   1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1

+dqcms706 comparesig   1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1

+dqcms707 comparesig   1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0

+dqcms708 comparesig   1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1

+

+-- miscellaneous

+dqcms721 comparesig 12345678000 1 -> 1

+dqcms722 comparesig 1 12345678000 -> -1

+dqcms723 comparesig 1234567800  1 -> 1

+dqcms724 comparesig 1 1234567800  -> -1

+dqcms725 comparesig 1234567890  1 -> 1

+dqcms726 comparesig 1 1234567890  -> -1

+dqcms727 comparesig 1234567891  1 -> 1

+dqcms728 comparesig 1 1234567891  -> -1

+dqcms729 comparesig 12345678901 1 -> 1

+dqcms730 comparesig 1 12345678901 -> -1

+dqcms731 comparesig 1234567896  1 -> 1

+dqcms732 comparesig 1 1234567896  -> -1

+

+-- residue cases at lower precision

+dqcms740 comparesig  1  0.9999999  -> 1

+dqcms741 comparesig  1  0.999999   -> 1

+dqcms742 comparesig  1  0.99999    -> 1

+dqcms743 comparesig  1  1.0000     -> 0

+dqcms744 comparesig  1  1.00001    -> -1

+dqcms745 comparesig  1  1.000001   -> -1

+dqcms746 comparesig  1  1.0000001  -> -1

+dqcms750 comparesig  0.9999999  1  -> -1

+dqcms751 comparesig  0.999999   1  -> -1

+dqcms752 comparesig  0.99999    1  -> -1

+dqcms753 comparesig  1.0000     1  -> 0

+dqcms754 comparesig  1.00001    1  -> 1

+dqcms755 comparesig  1.000001   1  -> 1

+dqcms756 comparesig  1.0000001  1  -> 1

+

+-- Specials

+dqcms780 comparesig  Inf  -Inf   ->  1

+dqcms781 comparesig  Inf  -1000  ->  1

+dqcms782 comparesig  Inf  -1     ->  1

+dqcms783 comparesig  Inf  -0     ->  1

+dqcms784 comparesig  Inf   0     ->  1

+dqcms785 comparesig  Inf   1     ->  1

+dqcms786 comparesig  Inf   1000  ->  1

+dqcms787 comparesig  Inf   Inf   ->  0

+dqcms788 comparesig -1000  Inf   -> -1

+dqcms789 comparesig -Inf   Inf   -> -1

+dqcms790 comparesig -1     Inf   -> -1

+dqcms791 comparesig -0     Inf   -> -1

+dqcms792 comparesig  0     Inf   -> -1

+dqcms793 comparesig  1     Inf   -> -1

+dqcms794 comparesig  1000  Inf   -> -1

+dqcms795 comparesig  Inf   Inf   ->  0

+

+dqcms800 comparesig -Inf  -Inf   ->  0

+dqcms801 comparesig -Inf  -1000  -> -1

+dqcms802 comparesig -Inf  -1     -> -1

+dqcms803 comparesig -Inf  -0     -> -1

+dqcms804 comparesig -Inf   0     -> -1

+dqcms805 comparesig -Inf   1     -> -1

+dqcms806 comparesig -Inf   1000  -> -1

+dqcms807 comparesig -Inf   Inf   -> -1

+dqcms808 comparesig -Inf  -Inf   ->  0

+dqcms809 comparesig -1000 -Inf   ->  1

+dqcms810 comparesig -1    -Inf   ->  1

+dqcms811 comparesig -0    -Inf   ->  1

+dqcms812 comparesig  0    -Inf   ->  1

+dqcms813 comparesig  1    -Inf   ->  1

+dqcms814 comparesig  1000 -Inf   ->  1

+dqcms815 comparesig  Inf  -Inf   ->  1

+

+dqcms821 comparesig  NaN -Inf    ->  NaN  Invalid_operation

+dqcms822 comparesig  NaN -1000   ->  NaN  Invalid_operation

+dqcms823 comparesig  NaN -1      ->  NaN  Invalid_operation

+dqcms824 comparesig  NaN -0      ->  NaN  Invalid_operation

+dqcms825 comparesig  NaN  0      ->  NaN  Invalid_operation

+dqcms826 comparesig  NaN  1      ->  NaN  Invalid_operation

+dqcms827 comparesig  NaN  1000   ->  NaN  Invalid_operation

+dqcms828 comparesig  NaN  Inf    ->  NaN  Invalid_operation

+dqcms829 comparesig  NaN  NaN    ->  NaN  Invalid_operation

+dqcms830 comparesig -Inf  NaN    ->  NaN  Invalid_operation

+dqcms831 comparesig -1000 NaN    ->  NaN  Invalid_operation

+dqcms832 comparesig -1    NaN    ->  NaN  Invalid_operation

+dqcms833 comparesig -0    NaN    ->  NaN  Invalid_operation

+dqcms834 comparesig  0    NaN    ->  NaN  Invalid_operation

+dqcms835 comparesig  1    NaN    ->  NaN  Invalid_operation

+dqcms836 comparesig  1000 NaN    ->  NaN  Invalid_operation

+dqcms837 comparesig  Inf  NaN    ->  NaN  Invalid_operation

+dqcms838 comparesig -NaN -NaN    -> -NaN  Invalid_operation

+dqcms839 comparesig +NaN -NaN    ->  NaN  Invalid_operation

+dqcms840 comparesig -NaN +NaN    -> -NaN  Invalid_operation

+

+dqcms841 comparesig  sNaN -Inf   ->  NaN  Invalid_operation

+dqcms842 comparesig  sNaN -1000  ->  NaN  Invalid_operation

+dqcms843 comparesig  sNaN -1     ->  NaN  Invalid_operation

+dqcms844 comparesig  sNaN -0     ->  NaN  Invalid_operation

+dqcms845 comparesig  sNaN  0     ->  NaN  Invalid_operation

+dqcms846 comparesig  sNaN  1     ->  NaN  Invalid_operation

+dqcms847 comparesig  sNaN  1000  ->  NaN  Invalid_operation

+dqcms848 comparesig  sNaN  NaN   ->  NaN  Invalid_operation

+dqcms849 comparesig  sNaN sNaN   ->  NaN  Invalid_operation

+dqcms850 comparesig  NaN  sNaN   ->  NaN  Invalid_operation

+dqcms851 comparesig -Inf  sNaN   ->  NaN  Invalid_operation

+dqcms852 comparesig -1000 sNaN   ->  NaN  Invalid_operation

+dqcms853 comparesig -1    sNaN   ->  NaN  Invalid_operation

+dqcms854 comparesig -0    sNaN   ->  NaN  Invalid_operation

+dqcms855 comparesig  0    sNaN   ->  NaN  Invalid_operation

+dqcms856 comparesig  1    sNaN   ->  NaN  Invalid_operation

+dqcms857 comparesig  1000 sNaN   ->  NaN  Invalid_operation

+dqcms858 comparesig  Inf  sNaN   ->  NaN  Invalid_operation

+dqcms859 comparesig  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqcms860 comparesig  NaN9 -Inf   ->  NaN9    Invalid_operation

+dqcms861 comparesig  NaN8  999   ->  NaN8    Invalid_operation

+dqcms862 comparesig  NaN77 Inf   ->  NaN77   Invalid_operation

+dqcms863 comparesig -NaN67 NaN5  -> -NaN67   Invalid_operation

+dqcms864 comparesig -Inf  -NaN4  -> -NaN4    Invalid_operation

+dqcms865 comparesig -999  -NaN33 -> -NaN33   Invalid_operation

+dqcms866 comparesig  Inf   NaN2  ->  NaN2    Invalid_operation

+dqcms867 comparesig -NaN41 -NaN42 -> -NaN41  Invalid_operation

+dqcms868 comparesig +NaN41 -NaN42 ->  NaN41  Invalid_operation

+dqcms869 comparesig -NaN41 +NaN42 -> -NaN41  Invalid_operation

+dqcms870 comparesig +NaN41 +NaN42 ->  NaN41  Invalid_operation

+

+dqcms871 comparesig -sNaN99 -Inf    -> -NaN99 Invalid_operation

+dqcms872 comparesig  sNaN98 -11     ->  NaN98 Invalid_operation

+dqcms873 comparesig  sNaN97  NaN    ->  NaN97 Invalid_operation

+dqcms874 comparesig  sNaN16 sNaN94  ->  NaN16 Invalid_operation

+dqcms875 comparesig  NaN85  sNaN83  ->  NaN83 Invalid_operation

+dqcms876 comparesig -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqcms877 comparesig  088    sNaN81  ->  NaN81 Invalid_operation

+dqcms878 comparesig  Inf    sNaN90  ->  NaN90 Invalid_operation

+dqcms879 comparesig  NaN   -sNaN89  -> -NaN89 Invalid_operation

+

+-- wide range

+dqcms880 comparesig +1.23456789012345E-0 9E+6144 -> -1

+dqcms881 comparesig 9E+6144 +1.23456789012345E-0 ->  1

+dqcms882 comparesig +0.100 9E-6143               ->  1

+dqcms883 comparesig 9E-6143 +0.100               -> -1

+dqcms885 comparesig -1.23456789012345E-0 9E+6144 -> -1

+dqcms886 comparesig 9E+6144 -1.23456789012345E-0 ->  1

+dqcms887 comparesig -0.100 9E-6143               -> -1

+dqcms888 comparesig 9E-6143 -0.100               ->  1

+

+-- signs

+dqcms901 comparesig  1e+77  1e+11 ->  1

+dqcms902 comparesig  1e+77 -1e+11 ->  1

+dqcms903 comparesig -1e+77  1e+11 -> -1

+dqcms904 comparesig -1e+77 -1e+11 -> -1

+dqcms905 comparesig  1e-77  1e-11 -> -1

+dqcms906 comparesig  1e-77 -1e-11 ->  1

+dqcms907 comparesig -1e-77  1e-11 -> -1

+dqcms908 comparesig -1e-77 -1e-11 ->  1

+

+-- Null tests

+dqcms990 comparesig 10  # -> NaN Invalid_operation

+dqcms991 comparesig  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqCompareTotal.decTest b/Lib/test/decimaltestdata/dqCompareTotal.decTest
new file mode 100644
index 0000000..f5cec06
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCompareTotal.decTest
@@ -0,0 +1,706 @@
+------------------------------------------------------------------------

+-- dqCompareTotal.decTest -- decQuad comparison using total ordering  --

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+-- Similarly, comparetotal will have some radically different paths

+-- than compare.

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqcot001 comparetotal  -2  -2  -> 0

+dqcot002 comparetotal  -2  -1  -> -1

+dqcot003 comparetotal  -2   0  -> -1

+dqcot004 comparetotal  -2   1  -> -1

+dqcot005 comparetotal  -2   2  -> -1

+dqcot006 comparetotal  -1  -2  -> 1

+dqcot007 comparetotal  -1  -1  -> 0

+dqcot008 comparetotal  -1   0  -> -1

+dqcot009 comparetotal  -1   1  -> -1

+dqcot010 comparetotal  -1   2  -> -1

+dqcot011 comparetotal   0  -2  -> 1

+dqcot012 comparetotal   0  -1  -> 1

+dqcot013 comparetotal   0   0  -> 0

+dqcot014 comparetotal   0   1  -> -1

+dqcot015 comparetotal   0   2  -> -1

+dqcot016 comparetotal   1  -2  -> 1

+dqcot017 comparetotal   1  -1  -> 1

+dqcot018 comparetotal   1   0  -> 1

+dqcot019 comparetotal   1   1  -> 0

+dqcot020 comparetotal   1   2  -> -1

+dqcot021 comparetotal   2  -2  -> 1

+dqcot022 comparetotal   2  -1  -> 1

+dqcot023 comparetotal   2   0  -> 1

+dqcot025 comparetotal   2   1  -> 1

+dqcot026 comparetotal   2   2  -> 0

+

+dqcot031 comparetotal  -20  -20  -> 0

+dqcot032 comparetotal  -20  -10  -> -1

+dqcot033 comparetotal  -20   00  -> -1

+dqcot034 comparetotal  -20   10  -> -1

+dqcot035 comparetotal  -20   20  -> -1

+dqcot036 comparetotal  -10  -20  -> 1

+dqcot037 comparetotal  -10  -10  -> 0

+dqcot038 comparetotal  -10   00  -> -1

+dqcot039 comparetotal  -10   10  -> -1

+dqcot040 comparetotal  -10   20  -> -1

+dqcot041 comparetotal   00  -20  -> 1

+dqcot042 comparetotal   00  -10  -> 1

+dqcot043 comparetotal   00   00  -> 0

+dqcot044 comparetotal   00   10  -> -1

+dqcot045 comparetotal   00   20  -> -1

+dqcot046 comparetotal   10  -20  -> 1

+dqcot047 comparetotal   10  -10  -> 1

+dqcot048 comparetotal   10   00  -> 1

+dqcot049 comparetotal   10   10  -> 0

+dqcot050 comparetotal   10   20  -> -1

+dqcot051 comparetotal   20  -20  -> 1

+dqcot052 comparetotal   20  -10  -> 1

+dqcot053 comparetotal   20   00  -> 1

+dqcot055 comparetotal   20   10  -> 1

+dqcot056 comparetotal   20   20  -> 0

+

+dqcot061 comparetotal  -2.0  -2.0  -> 0

+dqcot062 comparetotal  -2.0  -1.0  -> -1

+dqcot063 comparetotal  -2.0   0.0  -> -1

+dqcot064 comparetotal  -2.0   1.0  -> -1

+dqcot065 comparetotal  -2.0   2.0  -> -1

+dqcot066 comparetotal  -1.0  -2.0  -> 1

+dqcot067 comparetotal  -1.0  -1.0  -> 0

+dqcot068 comparetotal  -1.0   0.0  -> -1

+dqcot069 comparetotal  -1.0   1.0  -> -1

+dqcot070 comparetotal  -1.0   2.0  -> -1

+dqcot071 comparetotal   0.0  -2.0  -> 1

+dqcot072 comparetotal   0.0  -1.0  -> 1

+dqcot073 comparetotal   0.0   0.0  -> 0

+dqcot074 comparetotal   0.0   1.0  -> -1

+dqcot075 comparetotal   0.0   2.0  -> -1

+dqcot076 comparetotal   1.0  -2.0  -> 1

+dqcot077 comparetotal   1.0  -1.0  -> 1

+dqcot078 comparetotal   1.0   0.0  -> 1

+dqcot079 comparetotal   1.0   1.0  -> 0

+dqcot080 comparetotal   1.0   2.0  -> -1

+dqcot081 comparetotal   2.0  -2.0  -> 1

+dqcot082 comparetotal   2.0  -1.0  -> 1

+dqcot083 comparetotal   2.0   0.0  -> 1

+dqcot085 comparetotal   2.0   1.0  -> 1

+dqcot086 comparetotal   2.0   2.0  -> 0

+

+-- now some cases which might overflow if subtract were used

+dqcot090 comparetotal  9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144  -> 0

+dqcot091 comparetotal -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144  -> -1

+dqcot092 comparetotal  9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 1

+dqcot093 comparetotal -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0

+

+-- some differing length/exponent cases

+-- in this first group, compare would compare all equal

+dqcot100 comparetotal   7.0    7.0    -> 0

+dqcot101 comparetotal   7.0    7      -> -1

+dqcot102 comparetotal   7      7.0    -> 1

+dqcot103 comparetotal   7E+0   7.0    -> 1

+dqcot104 comparetotal   70E-1  7.0    -> 0

+dqcot105 comparetotal   0.7E+1 7      -> 0

+dqcot106 comparetotal   70E-1  7      -> -1

+dqcot107 comparetotal   7.0    7E+0   -> -1

+dqcot108 comparetotal   7.0    70E-1  -> 0

+dqcot109 comparetotal   7      0.7E+1 -> 0

+dqcot110 comparetotal   7      70E-1  -> 1

+

+dqcot120 comparetotal   8.0    7.0    -> 1

+dqcot121 comparetotal   8.0    7      -> 1

+dqcot122 comparetotal   8      7.0    -> 1

+dqcot123 comparetotal   8E+0   7.0    -> 1

+dqcot124 comparetotal   80E-1  7.0    -> 1

+dqcot125 comparetotal   0.8E+1 7      -> 1

+dqcot126 comparetotal   80E-1  7      -> 1

+dqcot127 comparetotal   8.0    7E+0   -> 1

+dqcot128 comparetotal   8.0    70E-1  -> 1

+dqcot129 comparetotal   8      0.7E+1  -> 1

+dqcot130 comparetotal   8      70E-1  -> 1

+

+dqcot140 comparetotal   8.0    9.0    -> -1

+dqcot141 comparetotal   8.0    9      -> -1

+dqcot142 comparetotal   8      9.0    -> -1

+dqcot143 comparetotal   8E+0   9.0    -> -1

+dqcot144 comparetotal   80E-1  9.0    -> -1

+dqcot145 comparetotal   0.8E+1 9      -> -1

+dqcot146 comparetotal   80E-1  9      -> -1

+dqcot147 comparetotal   8.0    9E+0   -> -1

+dqcot148 comparetotal   8.0    90E-1  -> -1

+dqcot149 comparetotal   8      0.9E+1 -> -1

+dqcot150 comparetotal   8      90E-1  -> -1

+

+-- and again, with sign changes -+ ..

+dqcot200 comparetotal  -7.0    7.0    -> -1

+dqcot201 comparetotal  -7.0    7      -> -1

+dqcot202 comparetotal  -7      7.0    -> -1

+dqcot203 comparetotal  -7E+0   7.0    -> -1

+dqcot204 comparetotal  -70E-1  7.0    -> -1

+dqcot205 comparetotal  -0.7E+1 7      -> -1

+dqcot206 comparetotal  -70E-1  7      -> -1

+dqcot207 comparetotal  -7.0    7E+0   -> -1

+dqcot208 comparetotal  -7.0    70E-1  -> -1

+dqcot209 comparetotal  -7      0.7E+1 -> -1

+dqcot210 comparetotal  -7      70E-1  -> -1

+

+dqcot220 comparetotal  -8.0    7.0    -> -1

+dqcot221 comparetotal  -8.0    7      -> -1

+dqcot222 comparetotal  -8      7.0    -> -1

+dqcot223 comparetotal  -8E+0   7.0    -> -1

+dqcot224 comparetotal  -80E-1  7.0    -> -1

+dqcot225 comparetotal  -0.8E+1 7      -> -1

+dqcot226 comparetotal  -80E-1  7      -> -1

+dqcot227 comparetotal  -8.0    7E+0   -> -1

+dqcot228 comparetotal  -8.0    70E-1  -> -1

+dqcot229 comparetotal  -8      0.7E+1 -> -1

+dqcot230 comparetotal  -8      70E-1  -> -1

+

+dqcot240 comparetotal  -8.0    9.0    -> -1

+dqcot241 comparetotal  -8.0    9      -> -1

+dqcot242 comparetotal  -8      9.0    -> -1

+dqcot243 comparetotal  -8E+0   9.0    -> -1

+dqcot244 comparetotal  -80E-1  9.0    -> -1

+dqcot245 comparetotal  -0.8E+1 9      -> -1

+dqcot246 comparetotal  -80E-1  9      -> -1

+dqcot247 comparetotal  -8.0    9E+0   -> -1

+dqcot248 comparetotal  -8.0    90E-1  -> -1

+dqcot249 comparetotal  -8      0.9E+1 -> -1

+dqcot250 comparetotal  -8      90E-1  -> -1

+

+-- and again, with sign changes +- ..

+dqcot300 comparetotal   7.0    -7.0    -> 1

+dqcot301 comparetotal   7.0    -7      -> 1

+dqcot302 comparetotal   7      -7.0    -> 1

+dqcot303 comparetotal   7E+0   -7.0    -> 1

+dqcot304 comparetotal   70E-1  -7.0    -> 1

+dqcot305 comparetotal   .7E+1  -7      -> 1

+dqcot306 comparetotal   70E-1  -7      -> 1

+dqcot307 comparetotal   7.0    -7E+0   -> 1

+dqcot308 comparetotal   7.0    -70E-1  -> 1

+dqcot309 comparetotal   7      -.7E+1  -> 1

+dqcot310 comparetotal   7      -70E-1  -> 1

+

+dqcot320 comparetotal   8.0    -7.0    -> 1

+dqcot321 comparetotal   8.0    -7      -> 1

+dqcot322 comparetotal   8      -7.0    -> 1

+dqcot323 comparetotal   8E+0   -7.0    -> 1

+dqcot324 comparetotal   80E-1  -7.0    -> 1

+dqcot325 comparetotal   .8E+1  -7      -> 1

+dqcot326 comparetotal   80E-1  -7      -> 1

+dqcot327 comparetotal   8.0    -7E+0   -> 1

+dqcot328 comparetotal   8.0    -70E-1  -> 1

+dqcot329 comparetotal   8      -.7E+1  -> 1

+dqcot330 comparetotal   8      -70E-1  -> 1

+

+dqcot340 comparetotal   8.0    -9.0    -> 1

+dqcot341 comparetotal   8.0    -9      -> 1

+dqcot342 comparetotal   8      -9.0    -> 1

+dqcot343 comparetotal   8E+0   -9.0    -> 1

+dqcot344 comparetotal   80E-1  -9.0    -> 1

+dqcot345 comparetotal   .8E+1  -9      -> 1

+dqcot346 comparetotal   80E-1  -9      -> 1

+dqcot347 comparetotal   8.0    -9E+0   -> 1

+dqcot348 comparetotal   8.0    -90E-1  -> 1

+dqcot349 comparetotal   8      -.9E+1  -> 1

+dqcot350 comparetotal   8      -90E-1  -> 1

+

+-- and again, with sign changes -- ..

+dqcot400 comparetotal   -7.0    -7.0    -> 0

+dqcot401 comparetotal   -7.0    -7      -> 1

+dqcot402 comparetotal   -7      -7.0    -> -1

+dqcot403 comparetotal   -7E+0   -7.0    -> -1

+dqcot404 comparetotal   -70E-1  -7.0    -> 0

+dqcot405 comparetotal   -.7E+1  -7      -> 0

+dqcot406 comparetotal   -70E-1  -7      -> 1

+dqcot407 comparetotal   -7.0    -7E+0   -> 1

+dqcot408 comparetotal   -7.0    -70E-1  -> 0

+dqcot409 comparetotal   -7      -.7E+1  -> 0

+dqcot410 comparetotal   -7      -70E-1  -> -1

+

+dqcot420 comparetotal   -8.0    -7.0    -> -1

+dqcot421 comparetotal   -8.0    -7      -> -1

+dqcot422 comparetotal   -8      -7.0    -> -1

+dqcot423 comparetotal   -8E+0   -7.0    -> -1

+dqcot424 comparetotal   -80E-1  -7.0    -> -1

+dqcot425 comparetotal   -.8E+1  -7      -> -1

+dqcot426 comparetotal   -80E-1  -7      -> -1

+dqcot427 comparetotal   -8.0    -7E+0   -> -1

+dqcot428 comparetotal   -8.0    -70E-1  -> -1

+dqcot429 comparetotal   -8      -.7E+1  -> -1

+dqcot430 comparetotal   -8      -70E-1  -> -1

+

+dqcot440 comparetotal   -8.0    -9.0    -> 1

+dqcot441 comparetotal   -8.0    -9      -> 1

+dqcot442 comparetotal   -8      -9.0    -> 1

+dqcot443 comparetotal   -8E+0   -9.0    -> 1

+dqcot444 comparetotal   -80E-1  -9.0    -> 1

+dqcot445 comparetotal   -.8E+1  -9      -> 1

+dqcot446 comparetotal   -80E-1  -9      -> 1

+dqcot447 comparetotal   -8.0    -9E+0   -> 1

+dqcot448 comparetotal   -8.0    -90E-1  -> 1

+dqcot449 comparetotal   -8      -.9E+1  -> 1

+dqcot450 comparetotal   -8      -90E-1  -> 1

+

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+dqcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1

+dqcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1

+dqcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1

+dqcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1

+dqcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1

+dqcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1

+dqcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1

+dqcot480 comparetotal 123.456000E+89 123.456E+89 -> -1

+dqcot481 comparetotal 123.45600E-89 123.456E-89 -> -1

+dqcot482 comparetotal 123.4560E+89 123.456E+89 -> -1

+dqcot483 comparetotal 123.456E-89 123.456E-89 -> 0

+dqcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1

+dqcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1

+dqcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1

+dqcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1

+dqcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1

+dqcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1

+dqcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1

+dqcot494 comparetotal 123.456E-89 123.456000E-89 -> 1

+dqcot495 comparetotal 123.456E+89 123.45600E+89 -> 1

+dqcot496 comparetotal 123.456E-89 123.4560E-89 -> 1

+dqcot497 comparetotal 123.456E+89 123.456E+89 -> 0

+

+-- wide-ranging, around precision; signs equal

+dqcot498 comparetotal    1     1E-17    -> 1

+dqcot499 comparetotal    1     1E-16    -> 1

+dqcot500 comparetotal    1     1E-15    -> 1

+dqcot501 comparetotal    1     1E-14    -> 1

+dqcot502 comparetotal    1     1E-13    -> 1

+dqcot503 comparetotal    1     1E-12    -> 1

+dqcot504 comparetotal    1     1E-11    -> 1

+dqcot505 comparetotal    1     1E-10    -> 1

+dqcot506 comparetotal    1     1E-9     -> 1

+dqcot507 comparetotal    1     1E-8     -> 1

+dqcot508 comparetotal    1     1E-7     -> 1

+dqcot509 comparetotal    1     1E-6     -> 1

+dqcot510 comparetotal    1     1E-5     -> 1

+dqcot511 comparetotal    1     1E-4     -> 1

+dqcot512 comparetotal    1     1E-3     -> 1

+dqcot513 comparetotal    1     1E-2     -> 1

+dqcot514 comparetotal    1     1E-1     -> 1

+dqcot515 comparetotal    1     1E-0     -> 0

+dqcot516 comparetotal    1     1E+1     -> -1

+dqcot517 comparetotal    1     1E+2     -> -1

+dqcot518 comparetotal    1     1E+3     -> -1

+dqcot519 comparetotal    1     1E+4     -> -1

+dqcot521 comparetotal    1     1E+5     -> -1

+dqcot522 comparetotal    1     1E+6     -> -1

+dqcot523 comparetotal    1     1E+7     -> -1

+dqcot524 comparetotal    1     1E+8     -> -1

+dqcot525 comparetotal    1     1E+9     -> -1

+dqcot526 comparetotal    1     1E+10    -> -1

+dqcot527 comparetotal    1     1E+11    -> -1

+dqcot528 comparetotal    1     1E+12    -> -1

+dqcot529 comparetotal    1     1E+13    -> -1

+dqcot530 comparetotal    1     1E+14    -> -1

+dqcot531 comparetotal    1     1E+15    -> -1

+dqcot532 comparetotal    1     1E+16    -> -1

+dqcot533 comparetotal    1     1E+17    -> -1

+-- LR swap

+dqcot538 comparetotal    1E-17  1       -> -1

+dqcot539 comparetotal    1E-16  1       -> -1

+dqcot540 comparetotal    1E-15  1       -> -1

+dqcot541 comparetotal    1E-14  1       -> -1

+dqcot542 comparetotal    1E-13  1       -> -1

+dqcot543 comparetotal    1E-12  1       -> -1

+dqcot544 comparetotal    1E-11  1       -> -1

+dqcot545 comparetotal    1E-10  1       -> -1

+dqcot546 comparetotal    1E-9   1       -> -1

+dqcot547 comparetotal    1E-8   1       -> -1

+dqcot548 comparetotal    1E-7   1       -> -1

+dqcot549 comparetotal    1E-6   1       -> -1

+dqcot550 comparetotal    1E-5   1       -> -1

+dqcot551 comparetotal    1E-4   1       -> -1

+dqcot552 comparetotal    1E-3   1       -> -1

+dqcot553 comparetotal    1E-2   1       -> -1

+dqcot554 comparetotal    1E-1   1       -> -1

+dqcot555 comparetotal    1E-0   1       ->  0

+dqcot556 comparetotal    1E+1   1       ->  1

+dqcot557 comparetotal    1E+2   1       ->  1

+dqcot558 comparetotal    1E+3   1       ->  1

+dqcot559 comparetotal    1E+4   1       ->  1

+dqcot561 comparetotal    1E+5   1       ->  1

+dqcot562 comparetotal    1E+6   1       ->  1

+dqcot563 comparetotal    1E+7   1       ->  1

+dqcot564 comparetotal    1E+8   1       ->  1

+dqcot565 comparetotal    1E+9   1       ->  1

+dqcot566 comparetotal    1E+10  1       ->  1

+dqcot567 comparetotal    1E+11  1       ->  1

+dqcot568 comparetotal    1E+12  1       ->  1

+dqcot569 comparetotal    1E+13  1       ->  1

+dqcot570 comparetotal    1E+14  1       ->  1

+dqcot571 comparetotal    1E+15  1       ->  1

+dqcot572 comparetotal    1E+16  1       ->  1

+dqcot573 comparetotal    1E+17  1       ->  1

+-- similar with a useful coefficient, one side only

+dqcot578 comparetotal  0.000000987654321     1E-17    -> 1

+dqcot579 comparetotal  0.000000987654321     1E-16    -> 1

+dqcot580 comparetotal  0.000000987654321     1E-15    -> 1

+dqcot581 comparetotal  0.000000987654321     1E-14    -> 1

+dqcot582 comparetotal  0.000000987654321     1E-13    -> 1

+dqcot583 comparetotal  0.000000987654321     1E-12    -> 1

+dqcot584 comparetotal  0.000000987654321     1E-11    -> 1

+dqcot585 comparetotal  0.000000987654321     1E-10    -> 1

+dqcot586 comparetotal  0.000000987654321     1E-9     -> 1

+dqcot587 comparetotal  0.000000987654321     1E-8     -> 1

+dqcot588 comparetotal  0.000000987654321     1E-7     -> 1

+dqcot589 comparetotal  0.000000987654321     1E-6     -> -1

+dqcot590 comparetotal  0.000000987654321     1E-5     -> -1

+dqcot591 comparetotal  0.000000987654321     1E-4     -> -1

+dqcot592 comparetotal  0.000000987654321     1E-3     -> -1

+dqcot593 comparetotal  0.000000987654321     1E-2     -> -1

+dqcot594 comparetotal  0.000000987654321     1E-1     -> -1

+dqcot595 comparetotal  0.000000987654321     1E-0     -> -1

+dqcot596 comparetotal  0.000000987654321     1E+1     -> -1

+dqcot597 comparetotal  0.000000987654321     1E+2     -> -1

+dqcot598 comparetotal  0.000000987654321     1E+3     -> -1

+dqcot599 comparetotal  0.000000987654321     1E+4     -> -1

+

+-- check some unit-y traps

+dqcot600 comparetotal   12            12.2345 -> -1

+dqcot601 comparetotal   12.0          12.2345 -> -1

+dqcot602 comparetotal   12.00         12.2345 -> -1

+dqcot603 comparetotal   12.000        12.2345 -> -1

+dqcot604 comparetotal   12.0000       12.2345 -> -1

+dqcot605 comparetotal   12.00000      12.2345 -> -1

+dqcot606 comparetotal   12.000000     12.2345 -> -1

+dqcot607 comparetotal   12.0000000    12.2345 -> -1

+dqcot608 comparetotal   12.00000000   12.2345 -> -1

+dqcot609 comparetotal   12.000000000  12.2345 -> -1

+dqcot610 comparetotal   12.1234 12            ->  1

+dqcot611 comparetotal   12.1234 12.0          ->  1

+dqcot612 comparetotal   12.1234 12.00         ->  1

+dqcot613 comparetotal   12.1234 12.000        ->  1

+dqcot614 comparetotal   12.1234 12.0000       ->  1

+dqcot615 comparetotal   12.1234 12.00000      ->  1

+dqcot616 comparetotal   12.1234 12.000000     ->  1

+dqcot617 comparetotal   12.1234 12.0000000    ->  1

+dqcot618 comparetotal   12.1234 12.00000000   ->  1

+dqcot619 comparetotal   12.1234 12.000000000  ->  1

+dqcot620 comparetotal  -12           -12.2345 ->  1

+dqcot621 comparetotal  -12.0         -12.2345 ->  1

+dqcot622 comparetotal  -12.00        -12.2345 ->  1

+dqcot623 comparetotal  -12.000       -12.2345 ->  1

+dqcot624 comparetotal  -12.0000      -12.2345 ->  1

+dqcot625 comparetotal  -12.00000     -12.2345 ->  1

+dqcot626 comparetotal  -12.000000    -12.2345 ->  1

+dqcot627 comparetotal  -12.0000000   -12.2345 ->  1

+dqcot628 comparetotal  -12.00000000  -12.2345 ->  1

+dqcot629 comparetotal  -12.000000000 -12.2345 ->  1

+dqcot630 comparetotal  -12.1234 -12           -> -1

+dqcot631 comparetotal  -12.1234 -12.0         -> -1

+dqcot632 comparetotal  -12.1234 -12.00        -> -1

+dqcot633 comparetotal  -12.1234 -12.000       -> -1

+dqcot634 comparetotal  -12.1234 -12.0000      -> -1

+dqcot635 comparetotal  -12.1234 -12.00000     -> -1

+dqcot636 comparetotal  -12.1234 -12.000000    -> -1

+dqcot637 comparetotal  -12.1234 -12.0000000   -> -1

+dqcot638 comparetotal  -12.1234 -12.00000000  -> -1

+dqcot639 comparetotal  -12.1234 -12.000000000 -> -1

+

+-- extended zeros

+dqcot640 comparetotal   0     0   -> 0

+dqcot641 comparetotal   0    -0   -> 1

+dqcot642 comparetotal   0    -0.0 -> 1

+dqcot643 comparetotal   0     0.0 -> 1

+dqcot644 comparetotal  -0     0   -> -1

+dqcot645 comparetotal  -0    -0   -> 0

+dqcot646 comparetotal  -0    -0.0 -> -1

+dqcot647 comparetotal  -0     0.0 -> -1

+dqcot648 comparetotal   0.0   0   -> -1

+dqcot649 comparetotal   0.0  -0   -> 1

+dqcot650 comparetotal   0.0  -0.0 -> 1

+dqcot651 comparetotal   0.0   0.0 -> 0

+dqcot652 comparetotal  -0.0   0   -> -1

+dqcot653 comparetotal  -0.0  -0   -> 1

+dqcot654 comparetotal  -0.0  -0.0 -> 0

+dqcot655 comparetotal  -0.0   0.0 -> -1

+

+dqcot656 comparetotal  -0E1   0.0 -> -1

+dqcot657 comparetotal  -0E2   0.0 -> -1

+dqcot658 comparetotal   0E1   0.0 -> 1

+dqcot659 comparetotal   0E2   0.0 -> 1

+dqcot660 comparetotal  -0E1   0   -> -1

+dqcot661 comparetotal  -0E2   0   -> -1

+dqcot662 comparetotal   0E1   0   -> 1

+dqcot663 comparetotal   0E2   0   -> 1

+dqcot664 comparetotal  -0E1  -0E1 -> 0

+dqcot665 comparetotal  -0E2  -0E1 -> -1

+dqcot666 comparetotal   0E1  -0E1 -> 1

+dqcot667 comparetotal   0E2  -0E1 -> 1

+dqcot668 comparetotal  -0E1  -0E2 -> 1

+dqcot669 comparetotal  -0E2  -0E2 -> 0

+dqcot670 comparetotal   0E1  -0E2 -> 1

+dqcot671 comparetotal   0E2  -0E2 -> 1

+dqcot672 comparetotal  -0E1   0E1 -> -1

+dqcot673 comparetotal  -0E2   0E1 -> -1

+dqcot674 comparetotal   0E1   0E1 -> 0

+dqcot675 comparetotal   0E2   0E1 -> 1

+dqcot676 comparetotal  -0E1   0E2 -> -1

+dqcot677 comparetotal  -0E2   0E2 -> -1

+dqcot678 comparetotal   0E1   0E2 -> -1

+dqcot679 comparetotal   0E2   0E2 -> 0

+

+-- trailing zeros; unit-y

+dqcot680 comparetotal   12    12           -> 0

+dqcot681 comparetotal   12    12.0         -> 1

+dqcot682 comparetotal   12    12.00        -> 1

+dqcot683 comparetotal   12    12.000       -> 1

+dqcot684 comparetotal   12    12.0000      -> 1

+dqcot685 comparetotal   12    12.00000     -> 1

+dqcot686 comparetotal   12    12.000000    -> 1

+dqcot687 comparetotal   12    12.0000000   -> 1

+dqcot688 comparetotal   12    12.00000000  -> 1

+dqcot689 comparetotal   12    12.000000000 -> 1

+dqcot690 comparetotal   12              12 -> 0

+dqcot691 comparetotal   12.0            12 -> -1

+dqcot692 comparetotal   12.00           12 -> -1

+dqcot693 comparetotal   12.000          12 -> -1

+dqcot694 comparetotal   12.0000         12 -> -1

+dqcot695 comparetotal   12.00000        12 -> -1

+dqcot696 comparetotal   12.000000       12 -> -1

+dqcot697 comparetotal   12.0000000      12 -> -1

+dqcot698 comparetotal   12.00000000     12 -> -1

+dqcot699 comparetotal   12.000000000    12 -> -1

+

+-- old long operand checks

+dqcot701 comparetotal 12345678000  1 ->  1

+dqcot702 comparetotal 1 12345678000  -> -1

+dqcot703 comparetotal 1234567800   1 ->  1

+dqcot704 comparetotal 1 1234567800   -> -1

+dqcot705 comparetotal 1234567890   1 ->  1

+dqcot706 comparetotal 1 1234567890   -> -1

+dqcot707 comparetotal 1234567891   1 ->  1

+dqcot708 comparetotal 1 1234567891   -> -1

+dqcot709 comparetotal 12345678901  1 ->  1

+dqcot710 comparetotal 1 12345678901  -> -1

+dqcot711 comparetotal 1234567896   1 ->  1

+dqcot712 comparetotal 1 1234567896   -> -1

+dqcot713 comparetotal -1234567891  1 -> -1

+dqcot714 comparetotal 1 -1234567891  ->  1

+dqcot715 comparetotal -12345678901 1 -> -1

+dqcot716 comparetotal 1 -12345678901 ->  1

+dqcot717 comparetotal -1234567896  1 -> -1

+dqcot718 comparetotal 1 -1234567896  ->  1

+

+-- old residue cases

+dqcot740 comparetotal  1  0.9999999  -> 1

+dqcot741 comparetotal  1  0.999999   -> 1

+dqcot742 comparetotal  1  0.99999    -> 1

+dqcot743 comparetotal  1  1.0000     -> 1

+dqcot744 comparetotal  1  1.00001    -> -1

+dqcot745 comparetotal  1  1.000001   -> -1

+dqcot746 comparetotal  1  1.0000001  -> -1

+dqcot750 comparetotal  0.9999999  1  -> -1

+dqcot751 comparetotal  0.999999   1  -> -1

+dqcot752 comparetotal  0.99999    1  -> -1

+dqcot753 comparetotal  1.0000     1  -> -1

+dqcot754 comparetotal  1.00001    1  -> 1

+dqcot755 comparetotal  1.000001   1  -> 1

+dqcot756 comparetotal  1.0000001  1  -> 1

+

+-- Specials

+dqcot780 comparetotal  Inf  -Inf   ->  1

+dqcot781 comparetotal  Inf  -1000  ->  1

+dqcot782 comparetotal  Inf  -1     ->  1

+dqcot783 comparetotal  Inf  -0     ->  1

+dqcot784 comparetotal  Inf   0     ->  1

+dqcot785 comparetotal  Inf   1     ->  1

+dqcot786 comparetotal  Inf   1000  ->  1

+dqcot787 comparetotal  Inf   Inf   ->  0

+dqcot788 comparetotal -1000  Inf   -> -1

+dqcot789 comparetotal -Inf   Inf   -> -1

+dqcot790 comparetotal -1     Inf   -> -1

+dqcot791 comparetotal -0     Inf   -> -1

+dqcot792 comparetotal  0     Inf   -> -1

+dqcot793 comparetotal  1     Inf   -> -1

+dqcot794 comparetotal  1000  Inf   -> -1

+dqcot795 comparetotal  Inf   Inf   ->  0

+

+dqcot800 comparetotal -Inf  -Inf   ->  0

+dqcot801 comparetotal -Inf  -1000  -> -1

+dqcot802 comparetotal -Inf  -1     -> -1

+dqcot803 comparetotal -Inf  -0     -> -1

+dqcot804 comparetotal -Inf   0     -> -1

+dqcot805 comparetotal -Inf   1     -> -1

+dqcot806 comparetotal -Inf   1000  -> -1

+dqcot807 comparetotal -Inf   Inf   -> -1

+dqcot808 comparetotal -Inf  -Inf   ->  0

+dqcot809 comparetotal -1000 -Inf   ->  1

+dqcot810 comparetotal -1    -Inf   ->  1

+dqcot811 comparetotal -0    -Inf   ->  1

+dqcot812 comparetotal  0    -Inf   ->  1

+dqcot813 comparetotal  1    -Inf   ->  1

+dqcot814 comparetotal  1000 -Inf   ->  1

+dqcot815 comparetotal  Inf  -Inf   ->  1

+

+dqcot821 comparetotal  NaN -Inf    ->  1

+dqcot822 comparetotal  NaN -1000   ->  1

+dqcot823 comparetotal  NaN -1      ->  1

+dqcot824 comparetotal  NaN -0      ->  1

+dqcot825 comparetotal  NaN  0      ->  1

+dqcot826 comparetotal  NaN  1      ->  1

+dqcot827 comparetotal  NaN  1000   ->  1

+dqcot828 comparetotal  NaN  Inf    ->  1

+dqcot829 comparetotal  NaN  NaN    ->  0

+dqcot830 comparetotal -Inf  NaN    ->  -1

+dqcot831 comparetotal -1000 NaN    ->  -1

+dqcot832 comparetotal -1    NaN    ->  -1

+dqcot833 comparetotal -0    NaN    ->  -1

+dqcot834 comparetotal  0    NaN    ->  -1

+dqcot835 comparetotal  1    NaN    ->  -1

+dqcot836 comparetotal  1000 NaN    ->  -1

+dqcot837 comparetotal  Inf  NaN    ->  -1

+dqcot838 comparetotal -NaN -NaN    ->  0

+dqcot839 comparetotal +NaN -NaN    ->  1

+dqcot840 comparetotal -NaN +NaN    ->  -1

+

+dqcot841 comparetotal  sNaN -sNaN  ->  1

+dqcot842 comparetotal  sNaN -NaN   ->  1

+dqcot843 comparetotal  sNaN -Inf   ->  1

+dqcot844 comparetotal  sNaN -1000  ->  1

+dqcot845 comparetotal  sNaN -1     ->  1

+dqcot846 comparetotal  sNaN -0     ->  1

+dqcot847 comparetotal  sNaN  0     ->  1

+dqcot848 comparetotal  sNaN  1     ->  1

+dqcot849 comparetotal  sNaN  1000  ->  1

+dqcot850 comparetotal  sNaN  NaN   ->  -1

+dqcot851 comparetotal  sNaN sNaN   ->  0

+

+dqcot852 comparetotal -sNaN sNaN   ->  -1

+dqcot853 comparetotal -NaN  sNaN   ->  -1

+dqcot854 comparetotal -Inf  sNaN   ->  -1

+dqcot855 comparetotal -1000 sNaN   ->  -1

+dqcot856 comparetotal -1    sNaN   ->  -1

+dqcot857 comparetotal -0    sNaN   ->  -1

+dqcot858 comparetotal  0    sNaN   ->  -1

+dqcot859 comparetotal  1    sNaN   ->  -1

+dqcot860 comparetotal  1000 sNaN   ->  -1

+dqcot861 comparetotal  Inf  sNaN   ->  -1

+dqcot862 comparetotal  NaN  sNaN   ->  1

+dqcot863 comparetotal  sNaN sNaN   ->  0

+

+dqcot871 comparetotal  -sNaN -sNaN  ->  0

+dqcot872 comparetotal  -sNaN -NaN   ->  1

+dqcot873 comparetotal  -sNaN -Inf   ->  -1

+dqcot874 comparetotal  -sNaN -1000  ->  -1

+dqcot875 comparetotal  -sNaN -1     ->  -1

+dqcot876 comparetotal  -sNaN -0     ->  -1

+dqcot877 comparetotal  -sNaN  0     ->  -1

+dqcot878 comparetotal  -sNaN  1     ->  -1

+dqcot879 comparetotal  -sNaN  1000  ->  -1

+dqcot880 comparetotal  -sNaN  NaN   ->  -1

+dqcot881 comparetotal  -sNaN sNaN   ->  -1

+

+dqcot882 comparetotal -sNaN -sNaN   ->  0

+dqcot883 comparetotal -NaN  -sNaN   ->  -1

+dqcot884 comparetotal -Inf  -sNaN   ->  1

+dqcot885 comparetotal -1000 -sNaN   ->  1

+dqcot886 comparetotal -1    -sNaN   ->  1

+dqcot887 comparetotal -0    -sNaN   ->  1

+dqcot888 comparetotal  0    -sNaN   ->  1

+dqcot889 comparetotal  1    -sNaN   ->  1

+dqcot890 comparetotal  1000 -sNaN   ->  1

+dqcot891 comparetotal  Inf  -sNaN   ->  1

+dqcot892 comparetotal  NaN  -sNaN   ->  1

+dqcot893 comparetotal  sNaN -sNaN   ->  1

+

+-- NaNs with payload

+dqcot960 comparetotal  NaN9 -Inf   ->  1

+dqcot961 comparetotal  NaN8  999   ->  1

+dqcot962 comparetotal  NaN77 Inf   ->  1

+dqcot963 comparetotal -NaN67 NaN5  ->  -1

+dqcot964 comparetotal -Inf  -NaN4  ->  1

+dqcot965 comparetotal -999  -NaN33 ->  1

+dqcot966 comparetotal  Inf   NaN2  ->  -1

+

+dqcot970 comparetotal -NaN41 -NaN42 -> 1

+dqcot971 comparetotal +NaN41 -NaN42 -> 1

+dqcot972 comparetotal -NaN41 +NaN42 -> -1

+dqcot973 comparetotal +NaN41 +NaN42 -> -1

+dqcot974 comparetotal -NaN42 -NaN01 -> -1

+dqcot975 comparetotal +NaN42 -NaN01 ->  1

+dqcot976 comparetotal -NaN42 +NaN01 -> -1

+dqcot977 comparetotal +NaN42 +NaN01 ->  1

+

+dqcot980 comparetotal -sNaN771 -sNaN772 -> 1

+dqcot981 comparetotal +sNaN771 -sNaN772 -> 1

+dqcot982 comparetotal -sNaN771 +sNaN772 -> -1

+dqcot983 comparetotal +sNaN771 +sNaN772 -> -1

+dqcot984 comparetotal -sNaN772 -sNaN771 -> -1

+dqcot985 comparetotal +sNaN772 -sNaN771 ->  1

+dqcot986 comparetotal -sNaN772 +sNaN771 -> -1

+dqcot987 comparetotal +sNaN772 +sNaN771 ->  1

+

+dqcot991 comparetotal -sNaN99 -Inf    -> -1

+dqcot992 comparetotal  sNaN98 -11     ->  1

+dqcot993 comparetotal  sNaN97  NaN    -> -1

+dqcot994 comparetotal  sNaN16 sNaN94  -> -1

+dqcot995 comparetotal  NaN85  sNaN83  ->  1

+dqcot996 comparetotal -Inf    sNaN92  -> -1

+dqcot997 comparetotal  088    sNaN81  -> -1

+dqcot998 comparetotal  Inf    sNaN90  -> -1

+dqcot999 comparetotal  NaN   -sNaN89  ->  1

+

+-- spread zeros

+dqcot1110 comparetotal   0E-6143  0       -> -1

+dqcot1111 comparetotal   0E-6143 -0       ->  1

+dqcot1112 comparetotal  -0E-6143  0       -> -1

+dqcot1113 comparetotal  -0E-6143 -0       ->  1

+dqcot1114 comparetotal   0E-6143  0E+6144  -> -1

+dqcot1115 comparetotal   0E-6143 -0E+6144  ->  1

+dqcot1116 comparetotal  -0E-6143  0E+6144  -> -1

+dqcot1117 comparetotal  -0E-6143 -0E+6144  ->  1

+dqcot1118 comparetotal   0       0E+6144  -> -1

+dqcot1119 comparetotal   0      -0E+6144  ->  1

+dqcot1120 comparetotal  -0       0E+6144  -> -1

+dqcot1121 comparetotal  -0      -0E+6144  ->  1

+

+dqcot1130 comparetotal   0E+6144  0       ->  1

+dqcot1131 comparetotal   0E+6144 -0       ->  1

+dqcot1132 comparetotal  -0E+6144  0       -> -1

+dqcot1133 comparetotal  -0E+6144 -0       -> -1

+dqcot1134 comparetotal   0E+6144  0E-6143  ->  1

+dqcot1135 comparetotal   0E+6144 -0E-6143  ->  1

+dqcot1136 comparetotal  -0E+6144  0E-6143  -> -1

+dqcot1137 comparetotal  -0E+6144 -0E-6143  -> -1

+dqcot1138 comparetotal   0       0E-6143  ->  1

+dqcot1139 comparetotal   0      -0E-6143  ->  1

+dqcot1140 comparetotal  -0       0E-6143  -> -1

+dqcot1141 comparetotal  -0      -0E-6143  -> -1

+

+-- Null tests

+dqcot9990 comparetotal 10  # -> NaN Invalid_operation

+dqcot9991 comparetotal  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqCompareTotalMag.decTest b/Lib/test/decimaltestdata/dqCompareTotalMag.decTest
new file mode 100644
index 0000000..76c1089
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCompareTotalMag.decTest
@@ -0,0 +1,706 @@
+------------------------------------------------------------------------

+-- dqCompareTotalMag.decTest -- decQuad comparison; abs. total order  --

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

+

+-- Note that we cannot assume add/subtract tests cover paths adequately,

+-- here, because the code might be quite different (comparison cannot

+-- overflow or underflow, so actual subtractions are not necessary).

+-- Similarly, comparetotal will have some radically different paths

+-- than compare.

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqctm001 comparetotmag  -2  -2   ->   0

+dqctm002 comparetotmag  -2  -1   ->   1

+dqctm003 comparetotmag  -2   0   ->   1

+dqctm004 comparetotmag  -2   1   ->   1

+dqctm005 comparetotmag  -2   2   ->   0

+dqctm006 comparetotmag  -1  -2   ->  -1

+dqctm007 comparetotmag  -1  -1   ->   0

+dqctm008 comparetotmag  -1   0   ->   1

+dqctm009 comparetotmag  -1   1   ->   0

+dqctm010 comparetotmag  -1   2   ->  -1

+dqctm011 comparetotmag   0  -2   ->  -1

+dqctm012 comparetotmag   0  -1   ->  -1

+dqctm013 comparetotmag   0   0   ->   0

+dqctm014 comparetotmag   0   1   ->  -1

+dqctm015 comparetotmag   0   2   ->  -1

+dqctm016 comparetotmag   1  -2   ->  -1

+dqctm017 comparetotmag   1  -1   ->   0

+dqctm018 comparetotmag   1   0   ->   1

+dqctm019 comparetotmag   1   1   ->   0

+dqctm020 comparetotmag   1   2   ->  -1

+dqctm021 comparetotmag   2  -2   ->   0

+dqctm022 comparetotmag   2  -1   ->   1

+dqctm023 comparetotmag   2   0   ->   1

+dqctm025 comparetotmag   2   1   ->   1

+dqctm026 comparetotmag   2   2   ->   0

+

+dqctm031 comparetotmag  -20  -20   ->   0

+dqctm032 comparetotmag  -20  -10   ->   1

+dqctm033 comparetotmag  -20   00   ->   1

+dqctm034 comparetotmag  -20   10   ->   1

+dqctm035 comparetotmag  -20   20   ->   0

+dqctm036 comparetotmag  -10  -20   ->  -1

+dqctm037 comparetotmag  -10  -10   ->   0

+dqctm038 comparetotmag  -10   00   ->   1

+dqctm039 comparetotmag  -10   10   ->   0

+dqctm040 comparetotmag  -10   20   ->  -1

+dqctm041 comparetotmag   00  -20   ->  -1

+dqctm042 comparetotmag   00  -10   ->  -1

+dqctm043 comparetotmag   00   00   ->   0

+dqctm044 comparetotmag   00   10   ->  -1

+dqctm045 comparetotmag   00   20   ->  -1

+dqctm046 comparetotmag   10  -20   ->  -1

+dqctm047 comparetotmag   10  -10   ->   0

+dqctm048 comparetotmag   10   00   ->   1

+dqctm049 comparetotmag   10   10   ->   0

+dqctm050 comparetotmag   10   20   ->  -1

+dqctm051 comparetotmag   20  -20   ->   0

+dqctm052 comparetotmag   20  -10   ->   1

+dqctm053 comparetotmag   20   00   ->   1

+dqctm055 comparetotmag   20   10   ->   1

+dqctm056 comparetotmag   20   20   ->   0

+

+dqctm061 comparetotmag  -2.0  -2.0   ->   0

+dqctm062 comparetotmag  -2.0  -1.0   ->   1

+dqctm063 comparetotmag  -2.0   0.0   ->   1

+dqctm064 comparetotmag  -2.0   1.0   ->   1

+dqctm065 comparetotmag  -2.0   2.0   ->   0

+dqctm066 comparetotmag  -1.0  -2.0   ->  -1

+dqctm067 comparetotmag  -1.0  -1.0   ->   0

+dqctm068 comparetotmag  -1.0   0.0   ->   1

+dqctm069 comparetotmag  -1.0   1.0   ->   0

+dqctm070 comparetotmag  -1.0   2.0   ->  -1

+dqctm071 comparetotmag   0.0  -2.0   ->  -1

+dqctm072 comparetotmag   0.0  -1.0   ->  -1

+dqctm073 comparetotmag   0.0   0.0   ->   0

+dqctm074 comparetotmag   0.0   1.0   ->  -1

+dqctm075 comparetotmag   0.0   2.0   ->  -1

+dqctm076 comparetotmag   1.0  -2.0   ->  -1

+dqctm077 comparetotmag   1.0  -1.0   ->   0

+dqctm078 comparetotmag   1.0   0.0   ->   1

+dqctm079 comparetotmag   1.0   1.0   ->   0

+dqctm080 comparetotmag   1.0   2.0   ->  -1

+dqctm081 comparetotmag   2.0  -2.0   ->   0

+dqctm082 comparetotmag   2.0  -1.0   ->   1

+dqctm083 comparetotmag   2.0   0.0   ->   1

+dqctm085 comparetotmag   2.0   1.0   ->   1

+dqctm086 comparetotmag   2.0   2.0   ->   0

+

+-- now some cases which might overflow if subtract were used

+dqctm090 comparetotmag  9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144   ->   0

+dqctm091 comparetotmag -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144   ->   0

+dqctm092 comparetotmag  9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144  ->   0

+dqctm093 comparetotmag -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144  ->   0

+

+-- some differing length/exponent cases

+-- in this first group, compare would compare all equal

+dqctm100 comparetotmag   7.0    7.0     ->   0

+dqctm101 comparetotmag   7.0    7       ->  -1

+dqctm102 comparetotmag   7      7.0     ->   1

+dqctm103 comparetotmag   7E+0   7.0     ->   1

+dqctm104 comparetotmag   70E-1  7.0     ->   0

+dqctm105 comparetotmag   0.7E+1 7       ->   0

+dqctm106 comparetotmag   70E-1  7       ->  -1

+dqctm107 comparetotmag   7.0    7E+0    ->  -1

+dqctm108 comparetotmag   7.0    70E-1   ->   0

+dqctm109 comparetotmag   7      0.7E+1  ->   0

+dqctm110 comparetotmag   7      70E-1   ->   1

+

+dqctm120 comparetotmag   8.0    7.0     ->   1

+dqctm121 comparetotmag   8.0    7       ->   1

+dqctm122 comparetotmag   8      7.0     ->   1

+dqctm123 comparetotmag   8E+0   7.0     ->   1

+dqctm124 comparetotmag   80E-1  7.0     ->   1

+dqctm125 comparetotmag   0.8E+1 7       ->   1

+dqctm126 comparetotmag   80E-1  7       ->   1

+dqctm127 comparetotmag   8.0    7E+0    ->   1

+dqctm128 comparetotmag   8.0    70E-1   ->   1

+dqctm129 comparetotmag   8      0.7E+1   ->   1

+dqctm130 comparetotmag   8      70E-1   ->   1

+

+dqctm140 comparetotmag   8.0    9.0     ->  -1

+dqctm141 comparetotmag   8.0    9       ->  -1

+dqctm142 comparetotmag   8      9.0     ->  -1

+dqctm143 comparetotmag   8E+0   9.0     ->  -1

+dqctm144 comparetotmag   80E-1  9.0     ->  -1

+dqctm145 comparetotmag   0.8E+1 9       ->  -1

+dqctm146 comparetotmag   80E-1  9       ->  -1

+dqctm147 comparetotmag   8.0    9E+0    ->  -1

+dqctm148 comparetotmag   8.0    90E-1   ->  -1

+dqctm149 comparetotmag   8      0.9E+1  ->  -1

+dqctm150 comparetotmag   8      90E-1   ->  -1

+

+-- and again, with sign changes -+ ..

+dqctm200 comparetotmag  -7.0    7.0     ->   0

+dqctm201 comparetotmag  -7.0    7       ->  -1

+dqctm202 comparetotmag  -7      7.0     ->   1

+dqctm203 comparetotmag  -7E+0   7.0     ->   1

+dqctm204 comparetotmag  -70E-1  7.0     ->   0

+dqctm205 comparetotmag  -0.7E+1 7       ->   0

+dqctm206 comparetotmag  -70E-1  7       ->  -1

+dqctm207 comparetotmag  -7.0    7E+0    ->  -1

+dqctm208 comparetotmag  -7.0    70E-1   ->   0

+dqctm209 comparetotmag  -7      0.7E+1  ->   0

+dqctm210 comparetotmag  -7      70E-1   ->   1

+

+dqctm220 comparetotmag  -8.0    7.0     ->   1

+dqctm221 comparetotmag  -8.0    7       ->   1

+dqctm222 comparetotmag  -8      7.0     ->   1

+dqctm223 comparetotmag  -8E+0   7.0     ->   1

+dqctm224 comparetotmag  -80E-1  7.0     ->   1

+dqctm225 comparetotmag  -0.8E+1 7       ->   1

+dqctm226 comparetotmag  -80E-1  7       ->   1

+dqctm227 comparetotmag  -8.0    7E+0    ->   1

+dqctm228 comparetotmag  -8.0    70E-1   ->   1

+dqctm229 comparetotmag  -8      0.7E+1  ->   1

+dqctm230 comparetotmag  -8      70E-1   ->   1

+

+dqctm240 comparetotmag  -8.0    9.0     ->  -1

+dqctm241 comparetotmag  -8.0    9       ->  -1

+dqctm242 comparetotmag  -8      9.0     ->  -1

+dqctm243 comparetotmag  -8E+0   9.0     ->  -1

+dqctm244 comparetotmag  -80E-1  9.0     ->  -1

+dqctm245 comparetotmag  -0.8E+1 9       ->  -1

+dqctm246 comparetotmag  -80E-1  9       ->  -1

+dqctm247 comparetotmag  -8.0    9E+0    ->  -1

+dqctm248 comparetotmag  -8.0    90E-1   ->  -1

+dqctm249 comparetotmag  -8      0.9E+1  ->  -1

+dqctm250 comparetotmag  -8      90E-1   ->  -1

+

+-- and again, with sign changes +- ..

+dqctm300 comparetotmag   7.0    -7.0     ->   0

+dqctm301 comparetotmag   7.0    -7       ->  -1

+dqctm302 comparetotmag   7      -7.0     ->   1

+dqctm303 comparetotmag   7E+0   -7.0     ->   1

+dqctm304 comparetotmag   70E-1  -7.0     ->   0

+dqctm305 comparetotmag   .7E+1  -7       ->   0

+dqctm306 comparetotmag   70E-1  -7       ->  -1

+dqctm307 comparetotmag   7.0    -7E+0    ->  -1

+dqctm308 comparetotmag   7.0    -70E-1   ->   0

+dqctm309 comparetotmag   7      -.7E+1   ->   0

+dqctm310 comparetotmag   7      -70E-1   ->   1

+

+dqctm320 comparetotmag   8.0    -7.0     ->   1

+dqctm321 comparetotmag   8.0    -7       ->   1

+dqctm322 comparetotmag   8      -7.0     ->   1

+dqctm323 comparetotmag   8E+0   -7.0     ->   1

+dqctm324 comparetotmag   80E-1  -7.0     ->   1

+dqctm325 comparetotmag   .8E+1  -7       ->   1

+dqctm326 comparetotmag   80E-1  -7       ->   1

+dqctm327 comparetotmag   8.0    -7E+0    ->   1

+dqctm328 comparetotmag   8.0    -70E-1   ->   1

+dqctm329 comparetotmag   8      -.7E+1   ->   1

+dqctm330 comparetotmag   8      -70E-1   ->   1

+

+dqctm340 comparetotmag   8.0    -9.0     ->  -1

+dqctm341 comparetotmag   8.0    -9       ->  -1

+dqctm342 comparetotmag   8      -9.0     ->  -1

+dqctm343 comparetotmag   8E+0   -9.0     ->  -1

+dqctm344 comparetotmag   80E-1  -9.0     ->  -1

+dqctm345 comparetotmag   .8E+1  -9       ->  -1

+dqctm346 comparetotmag   80E-1  -9       ->  -1

+dqctm347 comparetotmag   8.0    -9E+0    ->  -1

+dqctm348 comparetotmag   8.0    -90E-1   ->  -1

+dqctm349 comparetotmag   8      -.9E+1   ->  -1

+dqctm350 comparetotmag   8      -90E-1   ->  -1

+

+-- and again, with sign changes -- ..

+dqctm400 comparetotmag   -7.0    -7.0     ->   0

+dqctm401 comparetotmag   -7.0    -7       ->  -1

+dqctm402 comparetotmag   -7      -7.0     ->   1

+dqctm403 comparetotmag   -7E+0   -7.0     ->   1

+dqctm404 comparetotmag   -70E-1  -7.0     ->   0

+dqctm405 comparetotmag   -.7E+1  -7       ->   0

+dqctm406 comparetotmag   -70E-1  -7       ->  -1

+dqctm407 comparetotmag   -7.0    -7E+0    ->  -1

+dqctm408 comparetotmag   -7.0    -70E-1   ->   0

+dqctm409 comparetotmag   -7      -.7E+1   ->   0

+dqctm410 comparetotmag   -7      -70E-1   ->   1

+

+dqctm420 comparetotmag   -8.0    -7.0     ->   1

+dqctm421 comparetotmag   -8.0    -7       ->   1

+dqctm422 comparetotmag   -8      -7.0     ->   1

+dqctm423 comparetotmag   -8E+0   -7.0     ->   1

+dqctm424 comparetotmag   -80E-1  -7.0     ->   1

+dqctm425 comparetotmag   -.8E+1  -7       ->   1

+dqctm426 comparetotmag   -80E-1  -7       ->   1

+dqctm427 comparetotmag   -8.0    -7E+0    ->   1

+dqctm428 comparetotmag   -8.0    -70E-1   ->   1

+dqctm429 comparetotmag   -8      -.7E+1   ->   1

+dqctm430 comparetotmag   -8      -70E-1   ->   1

+

+dqctm440 comparetotmag   -8.0    -9.0     ->  -1

+dqctm441 comparetotmag   -8.0    -9       ->  -1

+dqctm442 comparetotmag   -8      -9.0     ->  -1

+dqctm443 comparetotmag   -8E+0   -9.0     ->  -1

+dqctm444 comparetotmag   -80E-1  -9.0     ->  -1

+dqctm445 comparetotmag   -.8E+1  -9       ->  -1

+dqctm446 comparetotmag   -80E-1  -9       ->  -1

+dqctm447 comparetotmag   -8.0    -9E+0    ->  -1

+dqctm448 comparetotmag   -8.0    -90E-1   ->  -1

+dqctm449 comparetotmag   -8      -.9E+1   ->  -1

+dqctm450 comparetotmag   -8      -90E-1   ->  -1

+

+

+-- testcases that subtract to lots of zeros at boundaries [pgr]

+dqctm473 comparetotmag 123.4560000000000E-89 123.456E-89  ->  -1

+dqctm474 comparetotmag 123.456000000000E+89 123.456E+89  ->  -1

+dqctm475 comparetotmag 123.45600000000E-89 123.456E-89  ->  -1

+dqctm476 comparetotmag 123.4560000000E+89 123.456E+89  ->  -1

+dqctm477 comparetotmag 123.456000000E-89 123.456E-89  ->  -1

+dqctm478 comparetotmag 123.45600000E+89 123.456E+89  ->  -1

+dqctm479 comparetotmag 123.4560000E-89 123.456E-89  ->  -1

+dqctm480 comparetotmag 123.456000E+89 123.456E+89  ->  -1

+dqctm481 comparetotmag 123.45600E-89 123.456E-89  ->  -1

+dqctm482 comparetotmag 123.4560E+89 123.456E+89  ->  -1

+dqctm483 comparetotmag 123.456E-89 123.456E-89  ->   0

+dqctm487 comparetotmag 123.456E+89 123.4560000000000E+89  ->   1

+dqctm488 comparetotmag 123.456E-89 123.456000000000E-89  ->   1

+dqctm489 comparetotmag 123.456E+89 123.45600000000E+89  ->   1

+dqctm490 comparetotmag 123.456E-89 123.4560000000E-89  ->   1

+dqctm491 comparetotmag 123.456E+89 123.456000000E+89  ->   1

+dqctm492 comparetotmag 123.456E-89 123.45600000E-89  ->   1

+dqctm493 comparetotmag 123.456E+89 123.4560000E+89  ->   1

+dqctm494 comparetotmag 123.456E-89 123.456000E-89  ->   1

+dqctm495 comparetotmag 123.456E+89 123.45600E+89  ->   1

+dqctm496 comparetotmag 123.456E-89 123.4560E-89  ->   1

+dqctm497 comparetotmag 123.456E+89 123.456E+89  ->   0

+

+-- wide-ranging, around precision; signs equal

+dqctm498 comparetotmag    1     1E-17     ->   1

+dqctm499 comparetotmag    1     1E-16     ->   1

+dqctm500 comparetotmag    1     1E-15     ->   1

+dqctm501 comparetotmag    1     1E-14     ->   1

+dqctm502 comparetotmag    1     1E-13     ->   1

+dqctm503 comparetotmag    1     1E-12     ->   1

+dqctm504 comparetotmag    1     1E-11     ->   1

+dqctm505 comparetotmag    1     1E-10     ->   1

+dqctm506 comparetotmag    1     1E-9      ->   1

+dqctm507 comparetotmag    1     1E-8      ->   1

+dqctm508 comparetotmag    1     1E-7      ->   1

+dqctm509 comparetotmag    1     1E-6      ->   1

+dqctm510 comparetotmag    1     1E-5      ->   1

+dqctm511 comparetotmag    1     1E-4      ->   1

+dqctm512 comparetotmag    1     1E-3      ->   1

+dqctm513 comparetotmag    1     1E-2      ->   1

+dqctm514 comparetotmag    1     1E-1      ->   1

+dqctm515 comparetotmag    1     1E-0      ->   0

+dqctm516 comparetotmag    1     1E+1      ->  -1

+dqctm517 comparetotmag    1     1E+2      ->  -1

+dqctm518 comparetotmag    1     1E+3      ->  -1

+dqctm519 comparetotmag    1     1E+4      ->  -1

+dqctm521 comparetotmag    1     1E+5      ->  -1

+dqctm522 comparetotmag    1     1E+6      ->  -1

+dqctm523 comparetotmag    1     1E+7      ->  -1

+dqctm524 comparetotmag    1     1E+8      ->  -1

+dqctm525 comparetotmag    1     1E+9      ->  -1

+dqctm526 comparetotmag    1     1E+10     ->  -1

+dqctm527 comparetotmag    1     1E+11     ->  -1

+dqctm528 comparetotmag    1     1E+12     ->  -1

+dqctm529 comparetotmag    1     1E+13     ->  -1

+dqctm530 comparetotmag    1     1E+14     ->  -1

+dqctm531 comparetotmag    1     1E+15     ->  -1

+dqctm532 comparetotmag    1     1E+16     ->  -1

+dqctm533 comparetotmag    1     1E+17     ->  -1

+-- LR swap

+dqctm538 comparetotmag    1E-17  1        ->  -1

+dqctm539 comparetotmag    1E-16  1        ->  -1

+dqctm540 comparetotmag    1E-15  1        ->  -1

+dqctm541 comparetotmag    1E-14  1        ->  -1

+dqctm542 comparetotmag    1E-13  1        ->  -1

+dqctm543 comparetotmag    1E-12  1        ->  -1

+dqctm544 comparetotmag    1E-11  1        ->  -1

+dqctm545 comparetotmag    1E-10  1        ->  -1

+dqctm546 comparetotmag    1E-9   1        ->  -1

+dqctm547 comparetotmag    1E-8   1        ->  -1

+dqctm548 comparetotmag    1E-7   1        ->  -1

+dqctm549 comparetotmag    1E-6   1        ->  -1

+dqctm550 comparetotmag    1E-5   1        ->  -1

+dqctm551 comparetotmag    1E-4   1        ->  -1

+dqctm552 comparetotmag    1E-3   1        ->  -1

+dqctm553 comparetotmag    1E-2   1        ->  -1

+dqctm554 comparetotmag    1E-1   1        ->  -1

+dqctm555 comparetotmag    1E-0   1        ->   0

+dqctm556 comparetotmag    1E+1   1        ->   1

+dqctm557 comparetotmag    1E+2   1        ->   1

+dqctm558 comparetotmag    1E+3   1        ->   1

+dqctm559 comparetotmag    1E+4   1        ->   1

+dqctm561 comparetotmag    1E+5   1        ->   1

+dqctm562 comparetotmag    1E+6   1        ->   1

+dqctm563 comparetotmag    1E+7   1        ->   1

+dqctm564 comparetotmag    1E+8   1        ->   1

+dqctm565 comparetotmag    1E+9   1        ->   1

+dqctm566 comparetotmag    1E+10  1        ->   1

+dqctm567 comparetotmag    1E+11  1        ->   1

+dqctm568 comparetotmag    1E+12  1        ->   1

+dqctm569 comparetotmag    1E+13  1        ->   1

+dqctm570 comparetotmag    1E+14  1        ->   1

+dqctm571 comparetotmag    1E+15  1        ->   1

+dqctm572 comparetotmag    1E+16  1        ->   1

+dqctm573 comparetotmag    1E+17  1        ->   1

+-- similar with a useful coefficient, one side only

+dqctm578 comparetotmag  0.000000987654321     1E-17     ->   1

+dqctm579 comparetotmag  0.000000987654321     1E-16     ->   1

+dqctm580 comparetotmag  0.000000987654321     1E-15     ->   1

+dqctm581 comparetotmag  0.000000987654321     1E-14     ->   1

+dqctm582 comparetotmag  0.000000987654321     1E-13     ->   1

+dqctm583 comparetotmag  0.000000987654321     1E-12     ->   1

+dqctm584 comparetotmag  0.000000987654321     1E-11     ->   1

+dqctm585 comparetotmag  0.000000987654321     1E-10     ->   1

+dqctm586 comparetotmag  0.000000987654321     1E-9      ->   1

+dqctm587 comparetotmag  0.000000987654321     1E-8      ->   1

+dqctm588 comparetotmag  0.000000987654321     1E-7      ->   1

+dqctm589 comparetotmag  0.000000987654321     1E-6      ->  -1

+dqctm590 comparetotmag  0.000000987654321     1E-5      ->  -1

+dqctm591 comparetotmag  0.000000987654321     1E-4      ->  -1

+dqctm592 comparetotmag  0.000000987654321     1E-3      ->  -1

+dqctm593 comparetotmag  0.000000987654321     1E-2      ->  -1

+dqctm594 comparetotmag  0.000000987654321     1E-1      ->  -1

+dqctm595 comparetotmag  0.000000987654321     1E-0      ->  -1

+dqctm596 comparetotmag  0.000000987654321     1E+1      ->  -1

+dqctm597 comparetotmag  0.000000987654321     1E+2      ->  -1

+dqctm598 comparetotmag  0.000000987654321     1E+3      ->  -1

+dqctm599 comparetotmag  0.000000987654321     1E+4      ->  -1

+

+-- check some unit-y traps

+dqctm600 comparetotmag   12            12.2345  ->  -1

+dqctm601 comparetotmag   12.0          12.2345  ->  -1

+dqctm602 comparetotmag   12.00         12.2345  ->  -1

+dqctm603 comparetotmag   12.000        12.2345  ->  -1

+dqctm604 comparetotmag   12.0000       12.2345  ->  -1

+dqctm605 comparetotmag   12.00000      12.2345  ->  -1

+dqctm606 comparetotmag   12.000000     12.2345  ->  -1

+dqctm607 comparetotmag   12.0000000    12.2345  ->  -1

+dqctm608 comparetotmag   12.00000000   12.2345  ->  -1

+dqctm609 comparetotmag   12.000000000  12.2345  ->  -1

+dqctm610 comparetotmag   12.1234 12             ->   1

+dqctm611 comparetotmag   12.1234 12.0           ->   1

+dqctm612 comparetotmag   12.1234 12.00          ->   1

+dqctm613 comparetotmag   12.1234 12.000         ->   1

+dqctm614 comparetotmag   12.1234 12.0000        ->   1

+dqctm615 comparetotmag   12.1234 12.00000       ->   1

+dqctm616 comparetotmag   12.1234 12.000000      ->   1

+dqctm617 comparetotmag   12.1234 12.0000000     ->   1

+dqctm618 comparetotmag   12.1234 12.00000000    ->   1

+dqctm619 comparetotmag   12.1234 12.000000000   ->   1

+dqctm620 comparetotmag  -12           -12.2345  ->  -1

+dqctm621 comparetotmag  -12.0         -12.2345  ->  -1

+dqctm622 comparetotmag  -12.00        -12.2345  ->  -1

+dqctm623 comparetotmag  -12.000       -12.2345  ->  -1

+dqctm624 comparetotmag  -12.0000      -12.2345  ->  -1

+dqctm625 comparetotmag  -12.00000     -12.2345  ->  -1

+dqctm626 comparetotmag  -12.000000    -12.2345  ->  -1

+dqctm627 comparetotmag  -12.0000000   -12.2345  ->  -1

+dqctm628 comparetotmag  -12.00000000  -12.2345  ->  -1

+dqctm629 comparetotmag  -12.000000000 -12.2345  ->  -1

+dqctm630 comparetotmag  -12.1234 -12            ->   1

+dqctm631 comparetotmag  -12.1234 -12.0          ->   1

+dqctm632 comparetotmag  -12.1234 -12.00         ->   1

+dqctm633 comparetotmag  -12.1234 -12.000        ->   1

+dqctm634 comparetotmag  -12.1234 -12.0000       ->   1

+dqctm635 comparetotmag  -12.1234 -12.00000      ->   1

+dqctm636 comparetotmag  -12.1234 -12.000000     ->   1

+dqctm637 comparetotmag  -12.1234 -12.0000000    ->   1

+dqctm638 comparetotmag  -12.1234 -12.00000000   ->   1

+dqctm639 comparetotmag  -12.1234 -12.000000000  ->   1

+

+-- extended zeros

+dqctm640 comparetotmag   0     0    ->   0

+dqctm641 comparetotmag   0    -0    ->   0

+dqctm642 comparetotmag   0    -0.0  ->   1

+dqctm643 comparetotmag   0     0.0  ->   1

+dqctm644 comparetotmag  -0     0    ->   0

+dqctm645 comparetotmag  -0    -0    ->   0

+dqctm646 comparetotmag  -0    -0.0  ->   1

+dqctm647 comparetotmag  -0     0.0  ->   1

+dqctm648 comparetotmag   0.0   0    ->  -1

+dqctm649 comparetotmag   0.0  -0    ->  -1

+dqctm650 comparetotmag   0.0  -0.0  ->   0

+dqctm651 comparetotmag   0.0   0.0  ->   0

+dqctm652 comparetotmag  -0.0   0    ->  -1

+dqctm653 comparetotmag  -0.0  -0    ->  -1

+dqctm654 comparetotmag  -0.0  -0.0  ->   0

+dqctm655 comparetotmag  -0.0   0.0  ->   0

+

+dqctm656 comparetotmag  -0E1   0.0  ->   1

+dqctm657 comparetotmag  -0E2   0.0  ->   1

+dqctm658 comparetotmag   0E1   0.0  ->   1

+dqctm659 comparetotmag   0E2   0.0  ->   1

+dqctm660 comparetotmag  -0E1   0    ->   1

+dqctm661 comparetotmag  -0E2   0    ->   1

+dqctm662 comparetotmag   0E1   0    ->   1

+dqctm663 comparetotmag   0E2   0    ->   1

+dqctm664 comparetotmag  -0E1  -0E1  ->   0

+dqctm665 comparetotmag  -0E2  -0E1  ->   1

+dqctm666 comparetotmag   0E1  -0E1  ->   0

+dqctm667 comparetotmag   0E2  -0E1  ->   1

+dqctm668 comparetotmag  -0E1  -0E2  ->  -1

+dqctm669 comparetotmag  -0E2  -0E2  ->   0

+dqctm670 comparetotmag   0E1  -0E2  ->  -1

+dqctm671 comparetotmag   0E2  -0E2  ->   0

+dqctm672 comparetotmag  -0E1   0E1  ->   0

+dqctm673 comparetotmag  -0E2   0E1  ->   1

+dqctm674 comparetotmag   0E1   0E1  ->   0

+dqctm675 comparetotmag   0E2   0E1  ->   1

+dqctm676 comparetotmag  -0E1   0E2  ->  -1

+dqctm677 comparetotmag  -0E2   0E2  ->   0

+dqctm678 comparetotmag   0E1   0E2  ->  -1

+dqctm679 comparetotmag   0E2   0E2  ->   0

+

+-- trailing zeros; unit-y

+dqctm680 comparetotmag   12    12            ->   0

+dqctm681 comparetotmag   12    12.0          ->   1

+dqctm682 comparetotmag   12    12.00         ->   1

+dqctm683 comparetotmag   12    12.000        ->   1

+dqctm684 comparetotmag   12    12.0000       ->   1

+dqctm685 comparetotmag   12    12.00000      ->   1

+dqctm686 comparetotmag   12    12.000000     ->   1

+dqctm687 comparetotmag   12    12.0000000    ->   1

+dqctm688 comparetotmag   12    12.00000000   ->   1

+dqctm689 comparetotmag   12    12.000000000  ->   1

+dqctm690 comparetotmag   12              12  ->   0

+dqctm691 comparetotmag   12.0            12  ->  -1

+dqctm692 comparetotmag   12.00           12  ->  -1

+dqctm693 comparetotmag   12.000          12  ->  -1

+dqctm694 comparetotmag   12.0000         12  ->  -1

+dqctm695 comparetotmag   12.00000        12  ->  -1

+dqctm696 comparetotmag   12.000000       12  ->  -1

+dqctm697 comparetotmag   12.0000000      12  ->  -1

+dqctm698 comparetotmag   12.00000000     12  ->  -1

+dqctm699 comparetotmag   12.000000000    12  ->  -1

+

+-- old long operand checks

+dqctm701 comparetotmag 12345678000  1  ->   1

+dqctm702 comparetotmag 1 12345678000   ->  -1

+dqctm703 comparetotmag 1234567800   1  ->   1

+dqctm704 comparetotmag 1 1234567800    ->  -1

+dqctm705 comparetotmag 1234567890   1  ->   1

+dqctm706 comparetotmag 1 1234567890    ->  -1

+dqctm707 comparetotmag 1234567891   1  ->   1

+dqctm708 comparetotmag 1 1234567891    ->  -1

+dqctm709 comparetotmag 12345678901  1  ->   1

+dqctm710 comparetotmag 1 12345678901   ->  -1

+dqctm711 comparetotmag 1234567896   1  ->   1

+dqctm712 comparetotmag 1 1234567896    ->  -1

+dqctm713 comparetotmag -1234567891  1  ->   1

+dqctm714 comparetotmag 1 -1234567891   ->  -1

+dqctm715 comparetotmag -12345678901 1  ->   1

+dqctm716 comparetotmag 1 -12345678901  ->  -1

+dqctm717 comparetotmag -1234567896  1  ->   1

+dqctm718 comparetotmag 1 -1234567896   ->  -1

+

+-- old residue cases

+dqctm740 comparetotmag  1  0.9999999   ->   1

+dqctm741 comparetotmag  1  0.999999    ->   1

+dqctm742 comparetotmag  1  0.99999     ->   1

+dqctm743 comparetotmag  1  1.0000      ->   1

+dqctm744 comparetotmag  1  1.00001     ->  -1

+dqctm745 comparetotmag  1  1.000001    ->  -1

+dqctm746 comparetotmag  1  1.0000001   ->  -1

+dqctm750 comparetotmag  0.9999999  1   ->  -1

+dqctm751 comparetotmag  0.999999   1   ->  -1

+dqctm752 comparetotmag  0.99999    1   ->  -1

+dqctm753 comparetotmag  1.0000     1   ->  -1

+dqctm754 comparetotmag  1.00001    1   ->   1

+dqctm755 comparetotmag  1.000001   1   ->   1

+dqctm756 comparetotmag  1.0000001  1   ->   1

+

+-- Specials

+dqctm780 comparetotmag  Inf  -Inf   ->  0

+dqctm781 comparetotmag  Inf  -1000  ->  1

+dqctm782 comparetotmag  Inf  -1     ->  1

+dqctm783 comparetotmag  Inf  -0     ->  1

+dqctm784 comparetotmag  Inf   0     ->  1

+dqctm785 comparetotmag  Inf   1     ->  1

+dqctm786 comparetotmag  Inf   1000  ->  1

+dqctm787 comparetotmag  Inf   Inf   ->  0

+dqctm788 comparetotmag -1000  Inf   -> -1

+dqctm789 comparetotmag -Inf   Inf   ->  0

+dqctm790 comparetotmag -1     Inf   -> -1

+dqctm791 comparetotmag -0     Inf   -> -1

+dqctm792 comparetotmag  0     Inf   -> -1

+dqctm793 comparetotmag  1     Inf   -> -1

+dqctm794 comparetotmag  1000  Inf   -> -1

+dqctm795 comparetotmag  Inf   Inf   ->  0

+

+dqctm800 comparetotmag -Inf  -Inf   ->  0

+dqctm801 comparetotmag -Inf  -1000  ->  1

+dqctm802 comparetotmag -Inf  -1     ->  1

+dqctm803 comparetotmag -Inf  -0     ->  1

+dqctm804 comparetotmag -Inf   0     ->  1

+dqctm805 comparetotmag -Inf   1     ->  1

+dqctm806 comparetotmag -Inf   1000  ->  1

+dqctm807 comparetotmag -Inf   Inf   ->  0

+dqctm808 comparetotmag -Inf  -Inf   ->  0

+dqctm809 comparetotmag -1000 -Inf   -> -1

+dqctm810 comparetotmag -1    -Inf   -> -1

+dqctm811 comparetotmag -0    -Inf   -> -1

+dqctm812 comparetotmag  0    -Inf   -> -1

+dqctm813 comparetotmag  1    -Inf   -> -1

+dqctm814 comparetotmag  1000 -Inf   -> -1

+dqctm815 comparetotmag  Inf  -Inf   ->  0

+

+dqctm821 comparetotmag  NaN -Inf    ->  1

+dqctm822 comparetotmag  NaN -1000   ->  1

+dqctm823 comparetotmag  NaN -1      ->  1

+dqctm824 comparetotmag  NaN -0      ->  1

+dqctm825 comparetotmag  NaN  0      ->  1

+dqctm826 comparetotmag  NaN  1      ->  1

+dqctm827 comparetotmag  NaN  1000   ->  1

+dqctm828 comparetotmag  NaN  Inf    ->  1

+dqctm829 comparetotmag  NaN  NaN    ->  0

+dqctm830 comparetotmag -Inf  NaN    ->  -1

+dqctm831 comparetotmag -1000 NaN    ->  -1

+dqctm832 comparetotmag -1    NaN    ->  -1

+dqctm833 comparetotmag -0    NaN    ->  -1

+dqctm834 comparetotmag  0    NaN    ->  -1

+dqctm835 comparetotmag  1    NaN    ->  -1

+dqctm836 comparetotmag  1000 NaN    ->  -1

+dqctm837 comparetotmag  Inf  NaN    ->  -1

+dqctm838 comparetotmag -NaN -NaN    ->  0

+dqctm839 comparetotmag +NaN -NaN    ->  0

+dqctm840 comparetotmag -NaN +NaN    ->  0

+

+dqctm841 comparetotmag  sNaN -sNaN  ->  0

+dqctm842 comparetotmag  sNaN -NaN   ->  -1

+dqctm843 comparetotmag  sNaN -Inf   ->  1

+dqctm844 comparetotmag  sNaN -1000  ->  1

+dqctm845 comparetotmag  sNaN -1     ->  1

+dqctm846 comparetotmag  sNaN -0     ->  1

+dqctm847 comparetotmag  sNaN  0     ->  1

+dqctm848 comparetotmag  sNaN  1     ->  1

+dqctm849 comparetotmag  sNaN  1000  ->  1

+dqctm850 comparetotmag  sNaN  NaN   ->  -1

+dqctm851 comparetotmag  sNaN sNaN   ->  0

+

+dqctm852 comparetotmag -sNaN sNaN   ->  0

+dqctm853 comparetotmag -NaN  sNaN   ->  1

+dqctm854 comparetotmag -Inf  sNaN   ->  -1

+dqctm855 comparetotmag -1000 sNaN   ->  -1

+dqctm856 comparetotmag -1    sNaN   ->  -1

+dqctm857 comparetotmag -0    sNaN   ->  -1

+dqctm858 comparetotmag  0    sNaN   ->  -1

+dqctm859 comparetotmag  1    sNaN   ->  -1

+dqctm860 comparetotmag  1000 sNaN   ->  -1

+dqctm861 comparetotmag  Inf  sNaN   ->  -1

+dqctm862 comparetotmag  NaN  sNaN   ->  1

+dqctm863 comparetotmag  sNaN sNaN   ->  0

+

+dqctm871 comparetotmag  -sNaN -sNaN  ->  0

+dqctm872 comparetotmag  -sNaN -NaN   ->  -1

+dqctm873 comparetotmag  -sNaN -Inf   ->  1

+dqctm874 comparetotmag  -sNaN -1000  ->  1

+dqctm875 comparetotmag  -sNaN -1     ->  1

+dqctm876 comparetotmag  -sNaN -0     ->  1

+dqctm877 comparetotmag  -sNaN  0     ->  1

+dqctm878 comparetotmag  -sNaN  1     ->  1

+dqctm879 comparetotmag  -sNaN  1000  ->  1

+dqctm880 comparetotmag  -sNaN  NaN   ->  -1

+dqctm881 comparetotmag  -sNaN sNaN   ->  0

+

+dqctm882 comparetotmag -sNaN -sNaN   ->  0

+dqctm883 comparetotmag -NaN  -sNaN   ->  1

+dqctm884 comparetotmag -Inf  -sNaN   ->  -1

+dqctm885 comparetotmag -1000 -sNaN   ->  -1

+dqctm886 comparetotmag -1    -sNaN   ->  -1

+dqctm887 comparetotmag -0    -sNaN   ->  -1

+dqctm888 comparetotmag  0    -sNaN   ->  -1

+dqctm889 comparetotmag  1    -sNaN   ->  -1

+dqctm890 comparetotmag  1000 -sNaN   ->  -1

+dqctm891 comparetotmag  Inf  -sNaN   ->  -1

+dqctm892 comparetotmag  NaN  -sNaN   ->  1

+dqctm893 comparetotmag  sNaN -sNaN   ->  0

+

+-- NaNs with payload

+dqctm960 comparetotmag  NaN9 -Inf   ->  1

+dqctm961 comparetotmag  NaN8  999   ->  1

+dqctm962 comparetotmag  NaN77 Inf   ->  1

+dqctm963 comparetotmag -NaN67 NaN5  ->  1

+dqctm964 comparetotmag -Inf  -NaN4  ->  -1

+dqctm965 comparetotmag -999  -NaN33 ->  -1

+dqctm966 comparetotmag  Inf   NaN2  ->  -1

+

+dqctm970 comparetotmag -NaN41 -NaN42 -> -1

+dqctm971 comparetotmag +NaN41 -NaN42 -> -1

+dqctm972 comparetotmag -NaN41 +NaN42 -> -1

+dqctm973 comparetotmag +NaN41 +NaN42 -> -1

+dqctm974 comparetotmag -NaN42 -NaN01 ->  1

+dqctm975 comparetotmag +NaN42 -NaN01 ->  1

+dqctm976 comparetotmag -NaN42 +NaN01 ->  1

+dqctm977 comparetotmag +NaN42 +NaN01 ->  1

+

+dqctm980 comparetotmag -sNaN771 -sNaN772 -> -1

+dqctm981 comparetotmag +sNaN771 -sNaN772 -> -1

+dqctm982 comparetotmag -sNaN771 +sNaN772 -> -1

+dqctm983 comparetotmag +sNaN771 +sNaN772 -> -1

+dqctm984 comparetotmag -sNaN772 -sNaN771 ->  1

+dqctm985 comparetotmag +sNaN772 -sNaN771 ->  1

+dqctm986 comparetotmag -sNaN772 +sNaN771 ->  1

+dqctm987 comparetotmag +sNaN772 +sNaN771 ->  1

+

+dqctm991 comparetotmag -sNaN99 -Inf    ->  1

+dqctm992 comparetotmag  sNaN98 -11     ->  1

+dqctm993 comparetotmag  sNaN97  NaN    -> -1

+dqctm994 comparetotmag  sNaN16 sNaN94  -> -1

+dqctm995 comparetotmag  NaN85  sNaN83  ->  1

+dqctm996 comparetotmag -Inf    sNaN92  -> -1

+dqctm997 comparetotmag  088    sNaN81  -> -1

+dqctm998 comparetotmag  Inf    sNaN90  -> -1

+dqctm999 comparetotmag  NaN   -sNaN89  ->  1

+

+-- spread zeros

+dqctm1110 comparetotmag   0E-6143  0        ->  -1

+dqctm1111 comparetotmag   0E-6143 -0        ->  -1

+dqctm1112 comparetotmag  -0E-6143  0        ->  -1

+dqctm1113 comparetotmag  -0E-6143 -0        ->  -1

+dqctm1114 comparetotmag   0E-6143  0E+6144   ->  -1

+dqctm1115 comparetotmag   0E-6143 -0E+6144   ->  -1

+dqctm1116 comparetotmag  -0E-6143  0E+6144   ->  -1

+dqctm1117 comparetotmag  -0E-6143 -0E+6144   ->  -1

+dqctm1118 comparetotmag   0       0E+6144   ->  -1

+dqctm1119 comparetotmag   0      -0E+6144   ->  -1

+dqctm1120 comparetotmag  -0       0E+6144   ->  -1

+dqctm1121 comparetotmag  -0      -0E+6144   ->  -1

+

+dqctm1130 comparetotmag   0E+6144  0        ->   1

+dqctm1131 comparetotmag   0E+6144 -0        ->   1

+dqctm1132 comparetotmag  -0E+6144  0        ->   1

+dqctm1133 comparetotmag  -0E+6144 -0        ->   1

+dqctm1134 comparetotmag   0E+6144  0E-6143   ->   1

+dqctm1135 comparetotmag   0E+6144 -0E-6143   ->   1

+dqctm1136 comparetotmag  -0E+6144  0E-6143   ->   1

+dqctm1137 comparetotmag  -0E+6144 -0E-6143   ->   1

+dqctm1138 comparetotmag   0       0E-6143   ->   1

+dqctm1139 comparetotmag   0      -0E-6143   ->   1

+dqctm1140 comparetotmag  -0       0E-6143   ->   1

+dqctm1141 comparetotmag  -0      -0E-6143   ->   1

+

+-- Null tests

+dqctm9990 comparetotmag 10  # -> NaN Invalid_operation

+dqctm9991 comparetotmag  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqCopy.decTest b/Lib/test/decimaltestdata/dqCopy.decTest
new file mode 100644
index 0000000..b768801
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCopy.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- dqCopy.decTest -- quiet decQuad copy                               --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check

+dqcpy001 copy       +7.50  -> 7.50

+

+-- Infinities

+dqcpy011 copy  Infinity    -> Infinity

+dqcpy012 copy  -Infinity   -> -Infinity

+

+-- NaNs, 0 payload

+dqcpy021 copy         NaN  -> NaN

+dqcpy022 copy        -NaN  -> -NaN

+dqcpy023 copy        sNaN  -> sNaN

+dqcpy024 copy       -sNaN  -> -sNaN

+

+-- NaNs, non-0 payload

+dqcpy031 copy       NaN10  -> NaN10

+dqcpy032 copy      -NaN10  -> -NaN10

+dqcpy033 copy      sNaN10  -> sNaN10

+dqcpy034 copy     -sNaN10  -> -sNaN10

+dqcpy035 copy       NaN7   -> NaN7

+dqcpy036 copy      -NaN7   -> -NaN7

+dqcpy037 copy      sNaN101 -> sNaN101

+dqcpy038 copy     -sNaN101 -> -sNaN101

+

+-- finites

+dqcpy101 copy          7   -> 7

+dqcpy102 copy         -7   -> -7

+dqcpy103 copy         75   -> 75

+dqcpy104 copy        -75   -> -75

+dqcpy105 copy       7.50   -> 7.50

+dqcpy106 copy      -7.50   -> -7.50

+dqcpy107 copy       7.500  -> 7.500

+dqcpy108 copy      -7.500  -> -7.500

+

+-- zeros

+dqcpy111 copy          0   -> 0

+dqcpy112 copy         -0   -> -0

+dqcpy113 copy       0E+4   -> 0E+4

+dqcpy114 copy      -0E+4   -> -0E+4

+dqcpy115 copy     0.0000   -> 0.0000

+dqcpy116 copy    -0.0000   -> -0.0000

+dqcpy117 copy      0E-141  -> 0E-141

+dqcpy118 copy     -0E-141  -> -0E-141

+

+-- full coefficients, alternating bits

+dqcpy121 copy   2682682682682682682682682682682682    ->  2682682682682682682682682682682682

+dqcpy122 copy  -2682682682682682682682682682682682    -> -2682682682682682682682682682682682

+dqcpy123 copy   1341341341341341341341341341341341    ->  1341341341341341341341341341341341

+dqcpy124 copy  -1341341341341341341341341341341341    -> -1341341341341341341341341341341341

+

+-- Nmax, Nmin, Ntiny

+dqcpy131 copy  9.999999999999999999999999999999999E+6144   ->  9.999999999999999999999999999999999E+6144

+dqcpy132 copy  1E-6143                                     ->  1E-6143

+dqcpy133 copy  1.000000000000000000000000000000000E-6143   ->  1.000000000000000000000000000000000E-6143

+dqcpy134 copy  1E-6176                                     ->  1E-6176

+

+dqcpy135 copy  -1E-6176                                    -> -1E-6176

+dqcpy136 copy  -1.000000000000000000000000000000000E-6143  -> -1.000000000000000000000000000000000E-6143

+dqcpy137 copy  -1E-6143                                    -> -1E-6143

+dqcpy138 copy  -9.999999999999999999999999999999999E+6144  -> -9.999999999999999999999999999999999E+6144

diff --git a/Lib/test/decimaltestdata/dqCopyAbs.decTest b/Lib/test/decimaltestdata/dqCopyAbs.decTest
new file mode 100644
index 0000000..427e6dd
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCopyAbs.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- dqCopyAbs.decTest -- quiet decQuad copy and set sign to zero       --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check

+dqcpa001 copyabs       +7.50  -> 7.50

+

+-- Infinities

+dqcpa011 copyabs  Infinity    -> Infinity

+dqcpa012 copyabs  -Infinity   -> Infinity

+

+-- NaNs, 0 payload

+dqcpa021 copyabs         NaN  -> NaN

+dqcpa022 copyabs        -NaN  -> NaN

+dqcpa023 copyabs        sNaN  -> sNaN

+dqcpa024 copyabs       -sNaN  -> sNaN

+

+-- NaNs, non-0 payload

+dqcpa031 copyabs       NaN10  -> NaN10

+dqcpa032 copyabs      -NaN15  -> NaN15

+dqcpa033 copyabs      sNaN15  -> sNaN15

+dqcpa034 copyabs     -sNaN10  -> sNaN10

+dqcpa035 copyabs       NaN7   -> NaN7

+dqcpa036 copyabs      -NaN7   -> NaN7

+dqcpa037 copyabs      sNaN101 -> sNaN101

+dqcpa038 copyabs     -sNaN101 -> sNaN101

+

+-- finites

+dqcpa101 copyabs          7   -> 7

+dqcpa102 copyabs         -7   -> 7

+dqcpa103 copyabs         75   -> 75

+dqcpa104 copyabs        -75   -> 75

+dqcpa105 copyabs       7.10   -> 7.10

+dqcpa106 copyabs      -7.10   -> 7.10

+dqcpa107 copyabs       7.500  -> 7.500

+dqcpa108 copyabs      -7.500  -> 7.500

+

+-- zeros

+dqcpa111 copyabs          0   -> 0

+dqcpa112 copyabs         -0   -> 0

+dqcpa113 copyabs       0E+6   -> 0E+6

+dqcpa114 copyabs      -0E+6   -> 0E+6

+dqcpa115 copyabs     0.0000   -> 0.0000

+dqcpa116 copyabs    -0.0000   -> 0.0000

+dqcpa117 copyabs      0E-141  -> 0E-141

+dqcpa118 copyabs     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+dqcpa121 copyabs   2682682682682682682682682682682682    ->  2682682682682682682682682682682682

+dqcpa122 copyabs  -2682682682682682682682682682682682    ->  2682682682682682682682682682682682

+dqcpa123 copyabs   1341341341341341341341341341341341    ->  1341341341341341341341341341341341

+dqcpa124 copyabs  -1341341341341341341341341341341341    ->  1341341341341341341341341341341341

+

+-- Nmax, Nmin, Ntiny

+dqcpa131 copyabs  9.999999999999999999999999999999999E+6144   ->  9.999999999999999999999999999999999E+6144

+dqcpa132 copyabs  1E-6143                                     ->  1E-6143

+dqcpa133 copyabs  1.000000000000000000000000000000000E-6143   ->  1.000000000000000000000000000000000E-6143

+dqcpa134 copyabs  1E-6176                                     ->  1E-6176

+

+dqcpa135 copyabs  -1E-6176                                    ->  1E-6176

+dqcpa136 copyabs  -1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000000E-6143

+dqcpa137 copyabs  -1E-6143                                    ->  1E-6143

+dqcpa138 copyabs  -9.999999999999999999999999999999999E+6144  ->  9.999999999999999999999999999999999E+6144

diff --git a/Lib/test/decimaltestdata/dqCopyNegate.decTest b/Lib/test/decimaltestdata/dqCopyNegate.decTest
new file mode 100644
index 0000000..34a6f3c
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCopyNegate.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- dqCopyNegate.decTest -- quiet decQuad copy and negate              --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check

+dqcpn001 copynegate       +7.50  -> -7.50

+

+-- Infinities

+dqcpn011 copynegate  Infinity    -> -Infinity

+dqcpn012 copynegate  -Infinity   -> Infinity

+

+-- NaNs, 0 payload

+dqcpn021 copynegate         NaN  -> -NaN

+dqcpn022 copynegate        -NaN  -> NaN

+dqcpn023 copynegate        sNaN  -> -sNaN

+dqcpn024 copynegate       -sNaN  -> sNaN

+

+-- NaNs, non-0 payload

+dqcpn031 copynegate       NaN13  -> -NaN13

+dqcpn032 copynegate      -NaN13  -> NaN13

+dqcpn033 copynegate      sNaN13  -> -sNaN13

+dqcpn034 copynegate     -sNaN13  -> sNaN13

+dqcpn035 copynegate       NaN70  -> -NaN70

+dqcpn036 copynegate      -NaN70  -> NaN70

+dqcpn037 copynegate      sNaN101 -> -sNaN101

+dqcpn038 copynegate     -sNaN101 -> sNaN101

+

+-- finites

+dqcpn101 copynegate          7   -> -7

+dqcpn102 copynegate         -7   -> 7

+dqcpn103 copynegate         75   -> -75

+dqcpn104 copynegate        -75   -> 75

+dqcpn105 copynegate       7.50   -> -7.50

+dqcpn106 copynegate      -7.50   -> 7.50

+dqcpn107 copynegate       7.500  -> -7.500

+dqcpn108 copynegate      -7.500  -> 7.500

+

+-- zeros

+dqcpn111 copynegate          0   -> -0

+dqcpn112 copynegate         -0   -> 0

+dqcpn113 copynegate       0E+4   -> -0E+4

+dqcpn114 copynegate      -0E+4   -> 0E+4

+dqcpn115 copynegate     0.0000   -> -0.0000

+dqcpn116 copynegate    -0.0000   -> 0.0000

+dqcpn117 copynegate      0E-141  -> -0E-141

+dqcpn118 copynegate     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+dqcpn121 copynegate   2682682682682682682682682682682682    -> -2682682682682682682682682682682682

+dqcpn122 copynegate  -2682682682682682682682682682682682    ->  2682682682682682682682682682682682

+dqcpn123 copynegate   1341341341341341341341341341341341    -> -1341341341341341341341341341341341

+dqcpn124 copynegate  -1341341341341341341341341341341341    ->  1341341341341341341341341341341341

+

+-- Nmax, Nmin, Ntiny

+dqcpn131 copynegate  9.999999999999999999999999999999999E+6144   -> -9.999999999999999999999999999999999E+6144

+dqcpn132 copynegate  1E-6143                                     -> -1E-6143

+dqcpn133 copynegate  1.000000000000000000000000000000000E-6143   -> -1.000000000000000000000000000000000E-6143

+dqcpn134 copynegate  1E-6176                                     -> -1E-6176

+

+dqcpn135 copynegate  -1E-6176                                    ->  1E-6176

+dqcpn136 copynegate  -1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000000E-6143

+dqcpn137 copynegate  -1E-6143                                    ->  1E-6143

+dqcpn138 copynegate  -9.999999999999999999999999999999999E+6144  ->  9.999999999999999999999999999999999E+6144

diff --git a/Lib/test/decimaltestdata/dqCopySign.decTest b/Lib/test/decimaltestdata/dqCopySign.decTest
new file mode 100644
index 0000000..902c937
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqCopySign.decTest
@@ -0,0 +1,175 @@
+------------------------------------------------------------------------

+-- dqCopySign.decTest -- quiet decQuad copy with sign from rhs        --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check

+dqcps001 copysign       +7.50     11 -> 7.50

+

+-- Infinities

+dqcps011 copysign  Infinity       11 -> Infinity

+dqcps012 copysign  -Infinity      11 -> Infinity

+

+-- NaNs, 0 payload

+dqcps021 copysign         NaN     11 -> NaN

+dqcps022 copysign        -NaN     11 -> NaN

+dqcps023 copysign        sNaN     11 -> sNaN

+dqcps024 copysign       -sNaN     11 -> sNaN

+

+-- NaNs, non-0 payload

+dqcps031 copysign       NaN10     11 -> NaN10

+dqcps032 copysign      -NaN10     11 -> NaN10

+dqcps033 copysign      sNaN10     11 -> sNaN10

+dqcps034 copysign     -sNaN10     11 -> sNaN10

+dqcps035 copysign       NaN7      11 -> NaN7

+dqcps036 copysign      -NaN7      11 -> NaN7

+dqcps037 copysign      sNaN101    11 -> sNaN101

+dqcps038 copysign     -sNaN101    11 -> sNaN101

+

+-- finites

+dqcps101 copysign          7      11 -> 7

+dqcps102 copysign         -7      11 -> 7

+dqcps103 copysign         75      11 -> 75

+dqcps104 copysign        -75      11 -> 75

+dqcps105 copysign       7.50      11 -> 7.50

+dqcps106 copysign      -7.50      11 -> 7.50

+dqcps107 copysign       7.500     11 -> 7.500

+dqcps108 copysign      -7.500     11 -> 7.500

+

+-- zeros

+dqcps111 copysign          0      11 -> 0

+dqcps112 copysign         -0      11 -> 0

+dqcps113 copysign       0E+4      11 -> 0E+4

+dqcps114 copysign      -0E+4      11 -> 0E+4

+dqcps115 copysign     0.0000      11 -> 0.0000

+dqcps116 copysign    -0.0000      11 -> 0.0000

+dqcps117 copysign      0E-141     11 -> 0E-141

+dqcps118 copysign     -0E-141     11 -> 0E-141

+

+-- full coefficients, alternating bits

+dqcps121 copysign   2682682682682682682682682682682682 8  ->  2682682682682682682682682682682682

+dqcps122 copysign  -2682682682682682682682682682682682 8  ->  2682682682682682682682682682682682

+dqcps123 copysign   1341341341341341341341341341341341 8  ->  1341341341341341341341341341341341

+dqcps124 copysign  -1341341341341341341341341341341341 8  ->  1341341341341341341341341341341341

+

+-- Nmax, Nmin, Ntiny

+dqcps131 copysign  9.999999999999999999999999999999999E+6144 8 ->  9.999999999999999999999999999999999E+6144

+dqcps132 copysign  1E-6143                                   8 ->  1E-6143

+dqcps133 copysign  1.000000000000000000000000000000000E-6143 8 ->  1.000000000000000000000000000000000E-6143

+dqcps134 copysign  1E-6176                                   8 ->  1E-6176

+

+dqcps135 copysign  -1E-6176                                   8 ->  1E-6176

+dqcps136 copysign  -1.000000000000000000000000000000000E-6143 8 ->  1.000000000000000000000000000000000E-6143

+dqcps137 copysign  -1E-6143                                   8 ->  1E-6143

+dqcps138 copysign  -9.999999999999999999999999999999999E+6144 8 ->  9.999999999999999999999999999999999E+6144

+

+-- repeat with negative RHS

+

+-- Infinities

+dqcps211 copysign  Infinity       -34 -> -Infinity

+dqcps212 copysign  -Infinity      -34 -> -Infinity

+

+-- NaNs, 0 payload

+dqcps221 copysign         NaN     -34 -> -NaN

+dqcps222 copysign        -NaN     -34 -> -NaN

+dqcps223 copysign        sNaN     -34 -> -sNaN

+dqcps224 copysign       -sNaN     -34 -> -sNaN

+

+-- NaNs, non-0 payload

+dqcps231 copysign       NaN10     -34 -> -NaN10

+dqcps232 copysign      -NaN10     -34 -> -NaN10

+dqcps233 copysign      sNaN10     -34 -> -sNaN10

+dqcps234 copysign     -sNaN10     -34 -> -sNaN10

+dqcps235 copysign       NaN7      -34 -> -NaN7

+dqcps236 copysign      -NaN7      -34 -> -NaN7

+dqcps237 copysign      sNaN101    -34 -> -sNaN101

+dqcps238 copysign     -sNaN101    -34 -> -sNaN101

+

+-- finites

+dqcps301 copysign          7      -34 -> -7

+dqcps302 copysign         -7      -34 -> -7

+dqcps303 copysign         75      -34 -> -75

+dqcps304 copysign        -75      -34 -> -75

+dqcps305 copysign       7.50      -34 -> -7.50

+dqcps306 copysign      -7.50      -34 -> -7.50

+dqcps307 copysign       7.500     -34 -> -7.500

+dqcps308 copysign      -7.500     -34 -> -7.500

+

+-- zeros

+dqcps311 copysign          0      -34 -> -0

+dqcps312 copysign         -0      -34 -> -0

+dqcps313 copysign       0E+4      -34 -> -0E+4

+dqcps314 copysign      -0E+4      -34 -> -0E+4

+dqcps315 copysign     0.0000      -34 -> -0.0000

+dqcps316 copysign    -0.0000      -34 -> -0.0000

+dqcps317 copysign      0E-141     -34 -> -0E-141

+dqcps318 copysign     -0E-141     -34 -> -0E-141

+

+-- full coefficients, alternating bits

+dqcps321 copysign   2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682

+dqcps322 copysign  -2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682

+dqcps323 copysign   1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341

+dqcps324 copysign  -1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341

+

+-- Nmax, Nmin, Ntiny

+dqcps331 copysign  9.999999999999999999999999999999999E+6144 -1  -> -9.999999999999999999999999999999999E+6144

+dqcps332 copysign  1E-6143                                   -1  -> -1E-6143

+dqcps333 copysign  1.000000000000000000000000000000000E-6143 -1  -> -1.000000000000000000000000000000000E-6143

+dqcps334 copysign  1E-6176                                   -1  -> -1E-6176

+

+dqcps335 copysign  -1E-6176                                   -3 -> -1E-6176

+dqcps336 copysign  -1.000000000000000000000000000000000E-6143 -3 -> -1.000000000000000000000000000000000E-6143

+dqcps337 copysign  -1E-6143                                   -3 -> -1E-6143

+dqcps338 copysign  -9.999999999999999999999999999999999E+6144 -3 -> -9.999999999999999999999999999999999E+6144

+

+-- Other kinds of RHS

+dqcps401 copysign          701    -34 -> -701

+dqcps402 copysign         -720    -34 -> -720

+dqcps403 copysign          701    -0  -> -701

+dqcps404 copysign         -720    -0  -> -720

+dqcps405 copysign          701    +0  ->  701

+dqcps406 copysign         -720    +0  ->  720

+dqcps407 copysign          701    +34 ->  701

+dqcps408 copysign         -720    +34 ->  720

+

+dqcps413 copysign          701    -Inf  -> -701

+dqcps414 copysign         -720    -Inf  -> -720

+dqcps415 copysign          701    +Inf  ->  701

+dqcps416 copysign         -720    +Inf  ->  720

+

+dqcps420 copysign          701    -NaN  -> -701

+dqcps421 copysign         -720    -NaN  -> -720

+dqcps422 copysign          701    +NaN  ->  701

+dqcps423 copysign         -720    +NaN  ->  720

+dqcps425 copysign         -720    +NaN8 ->  720

+

+dqcps426 copysign          701    -sNaN  -> -701

+dqcps427 copysign         -720    -sNaN  -> -720

+dqcps428 copysign          701    +sNaN  ->  701

+dqcps429 copysign         -720    +sNaN  ->  720

+dqcps430 copysign         -720    +sNaN3 ->  720

+

diff --git a/Lib/test/decimaltestdata/dqDivide.decTest b/Lib/test/decimaltestdata/dqDivide.decTest
new file mode 100644
index 0000000..1ea6d31
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqDivide.decTest
@@ -0,0 +1,808 @@
+------------------------------------------------------------------------

+-- dqDivide.decTest -- decQuad division                               --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqdiv001 divide  1     1    ->  1

+dqdiv002 divide  2     1    ->  2

+dqdiv003 divide  1     2    ->  0.5

+dqdiv004 divide  2     2    ->  1

+dqdiv005 divide  0     1    ->  0

+dqdiv006 divide  0     2    ->  0

+dqdiv007 divide  1     3    ->  0.3333333333333333333333333333333333 Inexact Rounded

+dqdiv008 divide  2     3    ->  0.6666666666666666666666666666666667 Inexact Rounded

+dqdiv009 divide  3     3    ->  1

+

+dqdiv010 divide  2.4   1    ->  2.4

+dqdiv011 divide  2.4   -1   ->  -2.4

+dqdiv012 divide  -2.4  1    ->  -2.4

+dqdiv013 divide  -2.4  -1   ->  2.4

+dqdiv014 divide  2.40  1    ->  2.40

+dqdiv015 divide  2.400 1    ->  2.400

+dqdiv016 divide  2.4   2    ->  1.2

+dqdiv017 divide  2.400 2    ->  1.200

+dqdiv018 divide  2.    2    ->  1

+dqdiv019 divide  20    20   ->  1

+

+dqdiv020 divide  187   187    ->  1

+dqdiv021 divide  5     2      ->  2.5

+dqdiv022 divide  50    20     ->  2.5

+dqdiv023 divide  500   200    ->  2.5

+dqdiv024 divide  50.0  20.0   ->  2.5

+dqdiv025 divide  5.00  2.00   ->  2.5

+dqdiv026 divide  5     2.0    ->  2.5

+dqdiv027 divide  5     2.000  ->  2.5

+dqdiv028 divide  5     0.20   ->  25

+dqdiv029 divide  5     0.200  ->  25

+dqdiv030 divide  10    1      ->  10

+dqdiv031 divide  100   1      ->  100

+dqdiv032 divide  1000  1      ->  1000

+dqdiv033 divide  1000  100    ->  10

+

+dqdiv035 divide  1     2      ->  0.5

+dqdiv036 divide  1     4      ->  0.25

+dqdiv037 divide  1     8      ->  0.125

+dqdiv038 divide  1     16     ->  0.0625

+dqdiv039 divide  1     32     ->  0.03125

+dqdiv040 divide  1     64     ->  0.015625

+dqdiv041 divide  1    -2      ->  -0.5

+dqdiv042 divide  1    -4      ->  -0.25

+dqdiv043 divide  1    -8      ->  -0.125

+dqdiv044 divide  1    -16     ->  -0.0625

+dqdiv045 divide  1    -32     ->  -0.03125

+dqdiv046 divide  1    -64     ->  -0.015625

+dqdiv047 divide -1     2      ->  -0.5

+dqdiv048 divide -1     4      ->  -0.25

+dqdiv049 divide -1     8      ->  -0.125

+dqdiv050 divide -1     16     ->  -0.0625

+dqdiv051 divide -1     32     ->  -0.03125

+dqdiv052 divide -1     64     ->  -0.015625

+dqdiv053 divide -1    -2      ->  0.5

+dqdiv054 divide -1    -4      ->  0.25

+dqdiv055 divide -1    -8      ->  0.125

+dqdiv056 divide -1    -16     ->  0.0625

+dqdiv057 divide -1    -32     ->  0.03125

+dqdiv058 divide -1    -64     ->  0.015625

+

+-- bcdTime

+dqdiv060 divide  1 7                   -> 0.1428571428571428571428571428571429 Inexact Rounded

+dqdiv061 divide 1.2345678  1.9876543   -> 0.6211179680490717123193907511985359 Inexact Rounded

+

+--               1234567890123456

+dqdiv067 divide  9999999999999999999999999999999999  1 ->  9999999999999999999999999999999999

+dqdiv068 divide  999999999999999999999999999999999   1 ->  999999999999999999999999999999999

+dqdiv069 divide  99999999999999999999999999999999    1 ->  99999999999999999999999999999999

+dqdiv070 divide  99999999999999999                   1 ->  99999999999999999

+dqdiv071 divide  9999999999999999                    1 ->  9999999999999999

+dqdiv072 divide  999999999999999                     1 ->  999999999999999

+dqdiv073 divide  99999999999999                      1 ->  99999999999999

+dqdiv074 divide  9999999999999                       1 ->  9999999999999

+dqdiv075 divide  999999999999                        1 ->  999999999999

+dqdiv076 divide  99999999999                         1 ->  99999999999

+dqdiv077 divide  9999999999                          1 ->  9999999999

+dqdiv078 divide  999999999                           1 ->  999999999

+dqdiv079 divide  99999999                            1 ->  99999999

+dqdiv080 divide  9999999                             1 ->  9999999

+dqdiv081 divide  999999                              1 ->  999999

+dqdiv082 divide  99999                               1 ->  99999

+dqdiv083 divide  9999                                1 ->  9999

+dqdiv084 divide  999                                 1 ->  999

+dqdiv085 divide  99                                  1 ->  99

+dqdiv086 divide  9                                   1 ->  9

+

+dqdiv090 divide  0.            1    ->  0

+dqdiv091 divide  .0            1    ->  0.0

+dqdiv092 divide  0.00          1    ->  0.00

+dqdiv093 divide  0.00E+9       1    ->  0E+7

+dqdiv094 divide  0.0000E-50    1    ->  0E-54

+

+dqdiv095 divide  1            1E-8  ->  1E+8

+dqdiv096 divide  1            1E-9  ->  1E+9

+dqdiv097 divide  1            1E-10 ->  1E+10

+dqdiv098 divide  1            1E-11 ->  1E+11

+dqdiv099 divide  1            1E-12 ->  1E+12

+

+dqdiv100 divide  1  1   -> 1

+dqdiv101 divide  1  2   -> 0.5

+dqdiv102 divide  1  3   -> 0.3333333333333333333333333333333333 Inexact Rounded

+dqdiv103 divide  1  4   -> 0.25

+dqdiv104 divide  1  5   -> 0.2

+dqdiv105 divide  1  6   -> 0.1666666666666666666666666666666667 Inexact Rounded

+dqdiv106 divide  1  7   -> 0.1428571428571428571428571428571429 Inexact Rounded

+dqdiv107 divide  1  8   -> 0.125

+dqdiv108 divide  1  9   -> 0.1111111111111111111111111111111111 Inexact Rounded

+dqdiv109 divide  1  10  -> 0.1

+dqdiv110 divide  1  1   -> 1

+dqdiv111 divide  2  1   -> 2

+dqdiv112 divide  3  1   -> 3

+dqdiv113 divide  4  1   -> 4

+dqdiv114 divide  5  1   -> 5

+dqdiv115 divide  6  1   -> 6

+dqdiv116 divide  7  1   -> 7

+dqdiv117 divide  8  1   -> 8

+dqdiv118 divide  9  1   -> 9

+dqdiv119 divide  10 1   -> 10

+

+dqdiv120 divide  3E+1 0.001  -> 3E+4

+dqdiv121 divide  2.200 2     -> 1.100

+

+dqdiv130 divide  12345  4.999  -> 2469.493898779755951190238047609522  Inexact Rounded

+dqdiv131 divide  12345  4.99   -> 2473.947895791583166332665330661323  Inexact Rounded

+dqdiv132 divide  12345  4.9    -> 2519.387755102040816326530612244898  Inexact Rounded

+dqdiv133 divide  12345  5      -> 2469

+dqdiv134 divide  12345  5.1    -> 2420.588235294117647058823529411765  Inexact Rounded

+dqdiv135 divide  12345  5.01   -> 2464.071856287425149700598802395210  Inexact Rounded

+dqdiv136 divide  12345  5.001  -> 2468.506298740251949610077984403119  Inexact Rounded

+

+-- test possibly imprecise results

+dqdiv220 divide 391   597 ->  0.6549413735343383584589614740368509  Inexact Rounded

+dqdiv221 divide 391  -597 -> -0.6549413735343383584589614740368509  Inexact Rounded

+dqdiv222 divide -391  597 -> -0.6549413735343383584589614740368509  Inexact Rounded

+dqdiv223 divide -391 -597 ->  0.6549413735343383584589614740368509  Inexact Rounded

+

+-- test some cases that are close to exponent overflow

+dqdiv270 divide 1 1e6144                  -> 1E-6144                 Subnormal

+dqdiv271 divide 1 0.9e6144                -> 1.11111111111111111111111111111111E-6144  Rounded Inexact Subnormal Underflow

+dqdiv272 divide 1 0.99e6144               -> 1.01010101010101010101010101010101E-6144  Rounded Inexact Subnormal Underflow

+dqdiv273 divide 1 0.9999999999999999e6144 -> 1.00000000000000010000000000000001E-6144  Rounded Inexact Subnormal Underflow

+dqdiv274 divide 9e6144    1               -> 9.000000000000000000000000000000000E+6144 Clamped

+dqdiv275 divide 9.9e6144  1               -> 9.900000000000000000000000000000000E+6144 Clamped

+dqdiv276 divide 9.99e6144 1               -> 9.990000000000000000000000000000000E+6144 Clamped

+dqdiv277 divide 9.999999999999999e6144 1  -> 9.999999999999999000000000000000000E+6144 Clamped

+

+dqdiv278 divide 1 0.9999999999999999999999999999999999e6144 -> 1.00000000000000000000000000000000E-6144  Rounded Inexact Subnormal Underflow

+dqdiv279 divide 9.999999999999999999999999999999999e6144 1  -> 9.999999999999999999999999999999999E+6144

+

+-- Divide into 0 tests

+dqdiv301 divide    0    7     -> 0

+dqdiv302 divide    0    7E-5  -> 0E+5

+dqdiv303 divide    0    7E-1  -> 0E+1

+dqdiv304 divide    0    7E+1  -> 0.0

+dqdiv305 divide    0    7E+5  -> 0.00000

+dqdiv306 divide    0    7E+6  -> 0.000000

+dqdiv307 divide    0    7E+7  -> 0E-7

+dqdiv308 divide    0   70E-5  -> 0E+5

+dqdiv309 divide    0   70E-1  -> 0E+1

+dqdiv310 divide    0   70E+0  -> 0

+dqdiv311 divide    0   70E+1  -> 0.0

+dqdiv312 divide    0   70E+5  -> 0.00000

+dqdiv313 divide    0   70E+6  -> 0.000000

+dqdiv314 divide    0   70E+7  -> 0E-7

+dqdiv315 divide    0  700E-5  -> 0E+5

+dqdiv316 divide    0  700E-1  -> 0E+1

+dqdiv317 divide    0  700E+0  -> 0

+dqdiv318 divide    0  700E+1  -> 0.0

+dqdiv319 divide    0  700E+5  -> 0.00000

+dqdiv320 divide    0  700E+6  -> 0.000000

+dqdiv321 divide    0  700E+7  -> 0E-7

+dqdiv322 divide    0  700E+77 -> 0E-77

+

+dqdiv331 divide 0E-3    7E-5  -> 0E+2

+dqdiv332 divide 0E-3    7E-1  -> 0.00

+dqdiv333 divide 0E-3    7E+1  -> 0.0000

+dqdiv334 divide 0E-3    7E+5  -> 0E-8

+dqdiv335 divide 0E-1    7E-5  -> 0E+4

+dqdiv336 divide 0E-1    7E-1  -> 0

+dqdiv337 divide 0E-1    7E+1  -> 0.00

+dqdiv338 divide 0E-1    7E+5  -> 0.000000

+dqdiv339 divide 0E+1    7E-5  -> 0E+6

+dqdiv340 divide 0E+1    7E-1  -> 0E+2

+dqdiv341 divide 0E+1    7E+1  -> 0

+dqdiv342 divide 0E+1    7E+5  -> 0.0000

+dqdiv343 divide 0E+3    7E-5  -> 0E+8

+dqdiv344 divide 0E+3    7E-1  -> 0E+4

+dqdiv345 divide 0E+3    7E+1  -> 0E+2

+dqdiv346 divide 0E+3    7E+5  -> 0.00

+

+-- These were 'input rounding'

+dqdiv441 divide 12345678000 1 -> 12345678000

+dqdiv442 divide 1 12345678000 -> 8.100000664200054464404466081166219E-11 Inexact Rounded

+dqdiv443 divide 1234567800  1 -> 1234567800

+dqdiv444 divide 1 1234567800  -> 8.100000664200054464404466081166219E-10 Inexact Rounded

+dqdiv445 divide 1234567890  1 -> 1234567890

+dqdiv446 divide 1 1234567890  -> 8.100000073710000670761006103925156E-10 Inexact Rounded

+dqdiv447 divide 1234567891  1 -> 1234567891

+dqdiv448 divide 1 1234567891  -> 8.100000067149000556665214614754629E-10 Inexact Rounded

+dqdiv449 divide 12345678901 1 -> 12345678901

+dqdiv450 divide 1 12345678901 -> 8.100000073053900658873130042376760E-11 Inexact Rounded

+dqdiv451 divide 1234567896  1 -> 1234567896

+dqdiv452 divide 1 1234567896  -> 8.100000034344000145618560617422697E-10 Inexact Rounded

+

+-- high-lows

+dqdiv453 divide 1e+1   1    ->   1E+1

+dqdiv454 divide 1e+1   1.0  ->   1E+1

+dqdiv455 divide 1e+1   1.00 ->   1E+1

+dqdiv456 divide 1e+2   2    ->   5E+1

+dqdiv457 divide 1e+2   2.0  ->   5E+1

+dqdiv458 divide 1e+2   2.00 ->   5E+1

+

+-- some from IEEE discussions

+dqdiv460 divide 3e0      2e0     -> 1.5

+dqdiv461 divide 30e-1    2e0     -> 1.5

+dqdiv462 divide 300e-2   2e0     -> 1.50

+dqdiv464 divide 3000e-3  2e0     -> 1.500

+dqdiv465 divide 3e0      20e-1   -> 1.5

+dqdiv466 divide 30e-1    20e-1   -> 1.5

+dqdiv467 divide 300e-2   20e-1   -> 1.5

+dqdiv468 divide 3000e-3  20e-1   -> 1.50

+dqdiv469 divide 3e0      200e-2  -> 1.5

+dqdiv470 divide 30e-1    200e-2  -> 1.5

+dqdiv471 divide 300e-2   200e-2  -> 1.5

+dqdiv472 divide 3000e-3  200e-2  -> 1.5

+dqdiv473 divide 3e0      2000e-3 -> 1.5

+dqdiv474 divide 30e-1    2000e-3 -> 1.5

+dqdiv475 divide 300e-2   2000e-3 -> 1.5

+dqdiv476 divide 3000e-3  2000e-3 -> 1.5

+

+-- some reciprocals

+dqdiv480 divide 1        1.0E+33 -> 1E-33

+dqdiv481 divide 1        10E+33  -> 1E-34

+dqdiv482 divide 1        1.0E-33 -> 1E+33

+dqdiv483 divide 1        10E-33  -> 1E+32

+

+-- RMS discussion table

+dqdiv484 divide 0e5     1e3 ->   0E+2

+dqdiv485 divide 0e5     2e3 ->   0E+2

+dqdiv486 divide 0e5    10e2 ->   0E+3

+dqdiv487 divide 0e5    20e2 ->   0E+3

+dqdiv488 divide 0e5   100e1 ->   0E+4

+dqdiv489 divide 0e5   200e1 ->   0E+4

+

+dqdiv491 divide 1e5     1e3 ->   1E+2

+dqdiv492 divide 1e5     2e3 ->   5E+1

+dqdiv493 divide 1e5    10e2 ->   1E+2

+dqdiv494 divide 1e5    20e2 ->   5E+1

+dqdiv495 divide 1e5   100e1 ->   1E+2

+dqdiv496 divide 1e5   200e1 ->   5E+1

+

+-- tryzeros cases

+rounding:    half_up

+dqdiv497  divide  0E+6108 1000E-33  -> 0E+6111 Clamped

+dqdiv498  divide  0E-6170 1000E+33  -> 0E-6176 Clamped

+

+rounding:    half_up

+

+-- focus on trailing zeros issues

+dqdiv500 divide  1      9.9    ->  0.1010101010101010101010101010101010  Inexact Rounded

+dqdiv501 divide  1      9.09   ->  0.1100110011001100110011001100110011  Inexact Rounded

+dqdiv502 divide  1      9.009  ->  0.1110001110001110001110001110001110  Inexact Rounded

+

+dqdiv511 divide 1         2    -> 0.5

+dqdiv512 divide 1.0       2    -> 0.5

+dqdiv513 divide 1.00      2    -> 0.50

+dqdiv514 divide 1.000     2    -> 0.500

+dqdiv515 divide 1.0000    2    -> 0.5000

+dqdiv516 divide 1.00000   2    -> 0.50000

+dqdiv517 divide 1.000000  2    -> 0.500000

+dqdiv518 divide 1.0000000 2    -> 0.5000000

+dqdiv519 divide 1.00      2.00 -> 0.5

+

+dqdiv521 divide 2    1         -> 2

+dqdiv522 divide 2    1.0       -> 2

+dqdiv523 divide 2    1.00      -> 2

+dqdiv524 divide 2    1.000     -> 2

+dqdiv525 divide 2    1.0000    -> 2

+dqdiv526 divide 2    1.00000   -> 2

+dqdiv527 divide 2    1.000000  -> 2

+dqdiv528 divide 2    1.0000000 -> 2

+dqdiv529 divide 2.00 1.00      -> 2

+

+dqdiv530 divide  2.40   2      ->  1.20

+dqdiv531 divide  2.40   4      ->  0.60

+dqdiv532 divide  2.40  10      ->  0.24

+dqdiv533 divide  2.40   2.0    ->  1.2

+dqdiv534 divide  2.40   4.0    ->  0.6

+dqdiv535 divide  2.40  10.0    ->  0.24

+dqdiv536 divide  2.40   2.00   ->  1.2

+dqdiv537 divide  2.40   4.00   ->  0.6

+dqdiv538 divide  2.40  10.00   ->  0.24

+dqdiv539 divide  0.9    0.1    ->  9

+dqdiv540 divide  0.9    0.01   ->  9E+1

+dqdiv541 divide  0.9    0.001  ->  9E+2

+dqdiv542 divide  5      2      ->  2.5

+dqdiv543 divide  5      2.0    ->  2.5

+dqdiv544 divide  5      2.00   ->  2.5

+dqdiv545 divide  5      20     ->  0.25

+dqdiv546 divide  5      20.0   ->  0.25

+dqdiv547 divide  2.400  2      ->  1.200

+dqdiv548 divide  2.400  2.0    ->  1.20

+dqdiv549 divide  2.400  2.400  ->  1

+

+dqdiv550 divide  240    1      ->  240

+dqdiv551 divide  240    10     ->  24

+dqdiv552 divide  240    100    ->  2.4

+dqdiv553 divide  240    1000   ->  0.24

+dqdiv554 divide  2400   1      ->  2400

+dqdiv555 divide  2400   10     ->  240

+dqdiv556 divide  2400   100    ->  24

+dqdiv557 divide  2400   1000   ->  2.4

+

+-- +ve exponent

+dqdiv600 divide  2.4E+9     2  ->  1.2E+9

+dqdiv601 divide  2.40E+9    2  ->  1.20E+9

+dqdiv602 divide  2.400E+9   2  ->  1.200E+9

+dqdiv603 divide  2.4000E+9  2  ->  1.2000E+9

+dqdiv604 divide  24E+8      2  ->  1.2E+9

+dqdiv605 divide  240E+7     2  ->  1.20E+9

+dqdiv606 divide  2400E+6    2  ->  1.200E+9

+dqdiv607 divide  24000E+5   2  ->  1.2000E+9

+

+-- more zeros, etc.

+dqdiv731 divide 5.00 1E-3    -> 5.00E+3

+dqdiv732 divide 00.00 0.000  -> NaN Division_undefined

+dqdiv733 divide 00.00 0E-3   -> NaN Division_undefined

+dqdiv734 divide  0    -0     -> NaN Division_undefined

+dqdiv735 divide -0     0     -> NaN Division_undefined

+dqdiv736 divide -0    -0     -> NaN Division_undefined

+

+dqdiv741 divide  0    -1     -> -0

+dqdiv742 divide -0    -1     ->  0

+dqdiv743 divide  0     1     ->  0

+dqdiv744 divide -0     1     -> -0

+dqdiv745 divide -1     0     -> -Infinity Division_by_zero

+dqdiv746 divide -1    -0     ->  Infinity Division_by_zero

+dqdiv747 divide  1     0     ->  Infinity Division_by_zero

+dqdiv748 divide  1    -0     -> -Infinity Division_by_zero

+

+dqdiv751 divide  0.0  -1     -> -0.0

+dqdiv752 divide -0.0  -1     ->  0.0

+dqdiv753 divide  0.0   1     ->  0.0

+dqdiv754 divide -0.0   1     -> -0.0

+dqdiv755 divide -1.0   0     -> -Infinity Division_by_zero

+dqdiv756 divide -1.0  -0     ->  Infinity Division_by_zero

+dqdiv757 divide  1.0   0     ->  Infinity Division_by_zero

+dqdiv758 divide  1.0  -0     -> -Infinity Division_by_zero

+

+dqdiv761 divide  0    -1.0   -> -0E+1

+dqdiv762 divide -0    -1.0   ->  0E+1

+dqdiv763 divide  0     1.0   ->  0E+1

+dqdiv764 divide -0     1.0   -> -0E+1

+dqdiv765 divide -1     0.0   -> -Infinity Division_by_zero

+dqdiv766 divide -1    -0.0   ->  Infinity Division_by_zero

+dqdiv767 divide  1     0.0   ->  Infinity Division_by_zero

+dqdiv768 divide  1    -0.0   -> -Infinity Division_by_zero

+

+dqdiv771 divide  0.0  -1.0   -> -0

+dqdiv772 divide -0.0  -1.0   ->  0

+dqdiv773 divide  0.0   1.0   ->  0

+dqdiv774 divide -0.0   1.0   -> -0

+dqdiv775 divide -1.0   0.0   -> -Infinity Division_by_zero

+dqdiv776 divide -1.0  -0.0   ->  Infinity Division_by_zero

+dqdiv777 divide  1.0   0.0   ->  Infinity Division_by_zero

+dqdiv778 divide  1.0  -0.0   -> -Infinity Division_by_zero

+

+-- Specials

+dqdiv780 divide  Inf  -Inf   ->  NaN Invalid_operation

+dqdiv781 divide  Inf  -1000  -> -Infinity

+dqdiv782 divide  Inf  -1     -> -Infinity

+dqdiv783 divide  Inf  -0     -> -Infinity

+dqdiv784 divide  Inf   0     ->  Infinity

+dqdiv785 divide  Inf   1     ->  Infinity

+dqdiv786 divide  Inf   1000  ->  Infinity

+dqdiv787 divide  Inf   Inf   ->  NaN Invalid_operation

+dqdiv788 divide -1000  Inf   -> -0E-6176 Clamped

+dqdiv789 divide -Inf   Inf   ->  NaN Invalid_operation

+dqdiv790 divide -1     Inf   -> -0E-6176 Clamped

+dqdiv791 divide -0     Inf   -> -0E-6176 Clamped

+dqdiv792 divide  0     Inf   ->  0E-6176 Clamped

+dqdiv793 divide  1     Inf   ->  0E-6176 Clamped

+dqdiv794 divide  1000  Inf   ->  0E-6176 Clamped

+dqdiv795 divide  Inf   Inf   ->  NaN Invalid_operation

+

+dqdiv800 divide -Inf  -Inf   ->  NaN Invalid_operation

+dqdiv801 divide -Inf  -1000  ->  Infinity

+dqdiv802 divide -Inf  -1     ->  Infinity

+dqdiv803 divide -Inf  -0     ->  Infinity

+dqdiv804 divide -Inf   0     -> -Infinity

+dqdiv805 divide -Inf   1     -> -Infinity

+dqdiv806 divide -Inf   1000  -> -Infinity

+dqdiv807 divide -Inf   Inf   ->  NaN Invalid_operation

+dqdiv808 divide -1000  Inf   -> -0E-6176 Clamped

+dqdiv809 divide -Inf  -Inf   ->  NaN Invalid_operation

+dqdiv810 divide -1    -Inf   ->  0E-6176 Clamped

+dqdiv811 divide -0    -Inf   ->  0E-6176 Clamped

+dqdiv812 divide  0    -Inf   -> -0E-6176 Clamped

+dqdiv813 divide  1    -Inf   -> -0E-6176 Clamped

+dqdiv814 divide  1000 -Inf   -> -0E-6176 Clamped

+dqdiv815 divide  Inf  -Inf   ->  NaN Invalid_operation

+

+dqdiv821 divide  NaN -Inf    ->  NaN

+dqdiv822 divide  NaN -1000   ->  NaN

+dqdiv823 divide  NaN -1      ->  NaN

+dqdiv824 divide  NaN -0      ->  NaN

+dqdiv825 divide  NaN  0      ->  NaN

+dqdiv826 divide  NaN  1      ->  NaN

+dqdiv827 divide  NaN  1000   ->  NaN

+dqdiv828 divide  NaN  Inf    ->  NaN

+dqdiv829 divide  NaN  NaN    ->  NaN

+dqdiv830 divide -Inf  NaN    ->  NaN

+dqdiv831 divide -1000 NaN    ->  NaN

+dqdiv832 divide -1    NaN    ->  NaN

+dqdiv833 divide -0    NaN    ->  NaN

+dqdiv834 divide  0    NaN    ->  NaN

+dqdiv835 divide  1    NaN    ->  NaN

+dqdiv836 divide  1000 NaN    ->  NaN

+dqdiv837 divide  Inf  NaN    ->  NaN

+

+dqdiv841 divide  sNaN -Inf   ->  NaN  Invalid_operation

+dqdiv842 divide  sNaN -1000  ->  NaN  Invalid_operation

+dqdiv843 divide  sNaN -1     ->  NaN  Invalid_operation

+dqdiv844 divide  sNaN -0     ->  NaN  Invalid_operation

+dqdiv845 divide  sNaN  0     ->  NaN  Invalid_operation

+dqdiv846 divide  sNaN  1     ->  NaN  Invalid_operation

+dqdiv847 divide  sNaN  1000  ->  NaN  Invalid_operation

+dqdiv848 divide  sNaN  NaN   ->  NaN  Invalid_operation

+dqdiv849 divide  sNaN sNaN   ->  NaN  Invalid_operation

+dqdiv850 divide  NaN  sNaN   ->  NaN  Invalid_operation

+dqdiv851 divide -Inf  sNaN   ->  NaN  Invalid_operation

+dqdiv852 divide -1000 sNaN   ->  NaN  Invalid_operation

+dqdiv853 divide -1    sNaN   ->  NaN  Invalid_operation

+dqdiv854 divide -0    sNaN   ->  NaN  Invalid_operation

+dqdiv855 divide  0    sNaN   ->  NaN  Invalid_operation

+dqdiv856 divide  1    sNaN   ->  NaN  Invalid_operation

+dqdiv857 divide  1000 sNaN   ->  NaN  Invalid_operation

+dqdiv858 divide  Inf  sNaN   ->  NaN  Invalid_operation

+dqdiv859 divide  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqdiv861 divide  NaN9 -Inf   ->  NaN9

+dqdiv862 divide  NaN8  1000  ->  NaN8

+dqdiv863 divide  NaN7  Inf   ->  NaN7

+dqdiv864 divide  NaN6  NaN5  ->  NaN6

+dqdiv865 divide -Inf   NaN4  ->  NaN4

+dqdiv866 divide -1000  NaN3  ->  NaN3

+dqdiv867 divide  Inf   NaN2  ->  NaN2

+

+dqdiv871 divide  sNaN99 -Inf    ->  NaN99 Invalid_operation

+dqdiv872 divide  sNaN98 -1      ->  NaN98 Invalid_operation

+dqdiv873 divide  sNaN97  NaN    ->  NaN97 Invalid_operation

+dqdiv874 divide  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+dqdiv875 divide  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dqdiv876 divide -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqdiv877 divide  0      sNaN91  ->  NaN91 Invalid_operation

+dqdiv878 divide  Inf    sNaN90  ->  NaN90 Invalid_operation

+dqdiv879 divide  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+dqdiv881 divide  -NaN9  -Inf   ->  -NaN9

+dqdiv882 divide  -NaN8   1000  ->  -NaN8

+dqdiv883 divide  -NaN7   Inf   ->  -NaN7

+dqdiv884 divide  -NaN6  -NaN5  ->  -NaN6

+dqdiv885 divide  -Inf   -NaN4  ->  -NaN4

+dqdiv886 divide  -1000  -NaN3  ->  -NaN3

+dqdiv887 divide   Inf   -NaN2  ->  -NaN2

+

+dqdiv891 divide -sNaN99 -Inf    -> -NaN99 Invalid_operation

+dqdiv892 divide -sNaN98 -1      -> -NaN98 Invalid_operation

+dqdiv893 divide -sNaN97  NaN    -> -NaN97 Invalid_operation

+dqdiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation

+dqdiv895 divide -NaN95  -sNaN93 -> -NaN93 Invalid_operation

+dqdiv896 divide -Inf    -sNaN92 -> -NaN92 Invalid_operation

+dqdiv897 divide  0      -sNaN91 -> -NaN91 Invalid_operation

+dqdiv898 divide  Inf    -sNaN90 -> -NaN90 Invalid_operation

+dqdiv899 divide -NaN    -sNaN89 -> -NaN89 Invalid_operation

+

+-- Various flavours of divide by 0

+dqdiv901 divide    0       0   ->  NaN Division_undefined

+dqdiv902 divide    0.0E5   0   ->  NaN Division_undefined

+dqdiv903 divide    0.000   0   ->  NaN Division_undefined

+dqdiv904 divide    0.0001  0   ->  Infinity Division_by_zero

+dqdiv905 divide    0.01    0   ->  Infinity Division_by_zero

+dqdiv906 divide    0.1     0   ->  Infinity Division_by_zero

+dqdiv907 divide    1       0   ->  Infinity Division_by_zero

+dqdiv908 divide    1       0.0 ->  Infinity Division_by_zero

+dqdiv909 divide   10       0.0 ->  Infinity Division_by_zero

+dqdiv910 divide   1E+100   0.0 ->  Infinity Division_by_zero

+dqdiv911 divide   1E+100   0   ->  Infinity Division_by_zero

+

+dqdiv921 divide   -0.0001  0   -> -Infinity Division_by_zero

+dqdiv922 divide   -0.01    0   -> -Infinity Division_by_zero

+dqdiv923 divide   -0.1     0   -> -Infinity Division_by_zero

+dqdiv924 divide   -1       0   -> -Infinity Division_by_zero

+dqdiv925 divide   -1       0.0 -> -Infinity Division_by_zero

+dqdiv926 divide  -10       0.0 -> -Infinity Division_by_zero

+dqdiv927 divide  -1E+100   0.0 -> -Infinity Division_by_zero

+dqdiv928 divide  -1E+100   0   -> -Infinity Division_by_zero

+

+dqdiv931 divide    0.0001 -0   -> -Infinity Division_by_zero

+dqdiv932 divide    0.01   -0   -> -Infinity Division_by_zero

+dqdiv933 divide    0.1    -0   -> -Infinity Division_by_zero

+dqdiv934 divide    1      -0   -> -Infinity Division_by_zero

+dqdiv935 divide    1      -0.0 -> -Infinity Division_by_zero

+dqdiv936 divide   10      -0.0 -> -Infinity Division_by_zero

+dqdiv937 divide   1E+100  -0.0 -> -Infinity Division_by_zero

+dqdiv938 divide   1E+100  -0   -> -Infinity Division_by_zero

+

+dqdiv941 divide   -0.0001 -0   ->  Infinity Division_by_zero

+dqdiv942 divide   -0.01   -0   ->  Infinity Division_by_zero

+dqdiv943 divide   -0.1    -0   ->  Infinity Division_by_zero

+dqdiv944 divide   -1      -0   ->  Infinity Division_by_zero

+dqdiv945 divide   -1      -0.0 ->  Infinity Division_by_zero

+dqdiv946 divide  -10      -0.0 ->  Infinity Division_by_zero

+dqdiv947 divide  -1E+100  -0.0 ->  Infinity Division_by_zero

+dqdiv948 divide  -1E+100  -0   ->  Infinity Division_by_zero

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+dqdiv1021  divide 1E0          1E0 -> 1

+dqdiv1022  divide 1E0          2E0 -> 0.5

+dqdiv1023  divide 1E0          3E0 -> 0.3333333333333333333333333333333333 Inexact Rounded

+dqdiv1024  divide 100E-2   1000E-3 -> 1

+dqdiv1025  divide 24E-1        2E0 -> 1.2

+dqdiv1026  divide 2400E-3      2E0 -> 1.200

+dqdiv1027  divide 5E0          2E0 -> 2.5

+dqdiv1028  divide 5E0        20E-1 -> 2.5

+dqdiv1029  divide 5E0      2000E-3 -> 2.5

+dqdiv1030  divide 5E0         2E-1 -> 25

+dqdiv1031  divide 5E0        20E-2 -> 25

+dqdiv1032  divide 480E-2       3E0 -> 1.60

+dqdiv1033  divide 47E-1        2E0 -> 2.35

+

+-- ECMAScript bad examples

+rounding:    half_down

+dqdiv1040  divide 5 9  -> 0.5555555555555555555555555555555556 Inexact Rounded

+rounding:    half_even

+dqdiv1041  divide 6 11 -> 0.5454545454545454545454545454545455 Inexact Rounded

+

+-- Gyuris example

+dqdiv1050  divide 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0.9999999999999999999999999999991254 Inexact Rounded

+

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

+-- signs

+dqdiv1751 divide  1e+4277  1e-3311 ->  Infinity Overflow Inexact Rounded

+dqdiv1752 divide  1e+4277 -1e-3311 -> -Infinity Overflow Inexact Rounded

+dqdiv1753 divide -1e+4277  1e-3311 -> -Infinity Overflow Inexact Rounded

+dqdiv1754 divide -1e+4277 -1e-3311 ->  Infinity Overflow Inexact Rounded

+dqdiv1755 divide  1e-4277  1e+3311 ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqdiv1756 divide  1e-4277 -1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqdiv1757 divide -1e-4277  1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqdiv1758 divide -1e-4277 -1e+3311 ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped

+

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

+dqdiv1760 divide 1e-6069 1e+101 -> 1E-6170 Subnormal

+dqdiv1761 divide 1e-6069 1e+102 -> 1E-6171 Subnormal

+dqdiv1762 divide 1e-6069 1e+103 -> 1E-6172 Subnormal

+dqdiv1763 divide 1e-6069 1e+104 -> 1E-6173 Subnormal

+dqdiv1764 divide 1e-6069 1e+105 -> 1E-6174 Subnormal

+dqdiv1765 divide 1e-6069 1e+106 -> 1E-6175 Subnormal

+dqdiv1766 divide 1e-6069 1e+107 -> 1E-6176 Subnormal

+dqdiv1767 divide 1e-6069 1e+108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqdiv1768 divide 1e-6069 1e+109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqdiv1769 divide 1e-6069 1e+110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

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

+dqdiv1770 divide 1e+40 1e-6101 -> 1.000000000000000000000000000000E+6141 Clamped

+dqdiv1771 divide 1e+40 1e-6102 -> 1.0000000000000000000000000000000E+6142  Clamped

+dqdiv1772 divide 1e+40 1e-6103 -> 1.00000000000000000000000000000000E+6143  Clamped

+dqdiv1773 divide 1e+40 1e-6104 -> 1.000000000000000000000000000000000E+6144  Clamped

+dqdiv1774 divide 1e+40 1e-6105 -> Infinity Overflow Inexact Rounded

+dqdiv1775 divide 1e+40 1e-6106 -> Infinity Overflow Inexact Rounded

+dqdiv1776 divide 1e+40 1e-6107 -> Infinity Overflow Inexact Rounded

+dqdiv1777 divide 1e+40 1e-6108 -> Infinity Overflow Inexact Rounded

+dqdiv1778 divide 1e+40 1e-6109 -> Infinity Overflow Inexact Rounded

+dqdiv1779 divide 1e+40 1e-6110 -> Infinity Overflow Inexact Rounded

+

+dqdiv1801 divide  1.0000E-6172  1     -> 1.0000E-6172 Subnormal

+dqdiv1802 divide  1.000E-6172   1e+1  -> 1.000E-6173  Subnormal

+dqdiv1803 divide  1.00E-6172    1e+2  -> 1.00E-6174   Subnormal

+dqdiv1804 divide  1.0E-6172     1e+3  -> 1.0E-6175    Subnormal

+dqdiv1805 divide  1.0E-6172     1e+4  -> 1E-6176     Subnormal Rounded

+dqdiv1806 divide  1.3E-6172     1e+4  -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1807 divide  1.5E-6172     1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1808 divide  1.7E-6172     1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1809 divide  2.3E-6172     1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1810 divide  2.5E-6172     1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1811 divide  2.7E-6172     1e+4  -> 3E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1812 divide  1.49E-6172    1e+4  -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1813 divide  1.50E-6172    1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1814 divide  1.51E-6172    1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1815 divide  2.49E-6172    1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1816 divide  2.50E-6172    1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1817 divide  2.51E-6172    1e+4  -> 3E-6176     Underflow Subnormal Inexact Rounded

+

+dqdiv1818 divide  1E-6172       1e+4  -> 1E-6176     Subnormal

+dqdiv1819 divide  3E-6172       1e+5  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqdiv1820 divide  5E-6172       1e+5  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqdiv1821 divide  7E-6172       1e+5  -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1822 divide  9E-6172       1e+5  -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqdiv1823 divide  9.9E-6172     1e+5  -> 1E-6176     Underflow Subnormal Inexact Rounded

+

+dqdiv1824 divide  1E-6172      -1e+4  -> -1E-6176    Subnormal

+dqdiv1825 divide  3E-6172      -1e+5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped

+dqdiv1826 divide -5E-6172       1e+5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped

+dqdiv1827 divide  7E-6172      -1e+5  -> -1E-6176    Underflow Subnormal Inexact Rounded

+dqdiv1828 divide -9E-6172       1e+5  -> -1E-6176    Underflow Subnormal Inexact Rounded

+dqdiv1829 divide  9.9E-6172    -1e+5  -> -1E-6176    Underflow Subnormal Inexact Rounded

+dqdiv1830 divide  3.0E-6172    -1e+5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped

+

+dqdiv1831 divide  1.0E-5977     1e+200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqdiv1832 divide  1.0E-5977     1e+199 -> 1E-6176   Subnormal Rounded

+dqdiv1833 divide  1.0E-5977     1e+198 -> 1.0E-6175 Subnormal

+dqdiv1834 divide  2.0E-5977     2e+198 -> 1.0E-6175 Subnormal

+dqdiv1835 divide  4.0E-5977     4e+198 -> 1.0E-6175 Subnormal

+dqdiv1836 divide 10.0E-5977    10e+198 -> 1.0E-6175 Subnormal

+dqdiv1837 divide 30.0E-5977    30e+198 -> 1.0E-6175 Subnormal

+dqdiv1838 divide 40.0E-5982    40e+166 -> 1.0E-6148 Subnormal

+dqdiv1839 divide 40.0E-5982    40e+165 -> 1.0E-6147 Subnormal

+dqdiv1840 divide 40.0E-5982    40e+164 -> 1.0E-6146 Subnormal

+

+-- randoms

+rounding:  half_even

+dqdiv2010  divide  -5231195652931651968034356117118850         -7243718664422548573203260970.34995          ->   722169.9095831284624736051460550680 Inexact Rounded

+dqdiv2011  divide  -89584669773927.82711237350022515352        -42077943728529635884.21142627532985         ->   0.000002129017291146471565928125887527266 Inexact Rounded

+dqdiv2012  divide  -2.828201693360723203806974891946180E-232    812596541221823960386384403089240.9         ->  -3.480450075640521320040055759125120E-265 Inexact Rounded

+dqdiv2013  divide  -6442775372761069267502937539408720          24904085056.69185465145182606089196         ->  -258703556388226463687701.4884719589 Inexact Rounded

+dqdiv2014  divide   5.535520011272625629610079879714705        -44343664650.57203052003068113531208         ->  -1.248322630728089308975940533493562E-10 Inexact Rounded

+dqdiv2015  divide   65919273712517865964325.99419625010        -314733354141381737378622515.7789054         ->  -0.0002094448295521490616379784758911632 Inexact Rounded

+dqdiv2016  divide  -7.779172568193197107115275140431129E+759   -140453015639.3988987652895178782143         ->   5.538629792161641534962774244238115E+748 Inexact Rounded

+dqdiv2017  divide   644314832597569.0181226067518178797        -115024585257425.1635759521565201075         ->  -5.601540150356479257367687450922795 Inexact Rounded

+dqdiv2018  divide   6.898640941579611450676592553286870E-47    -11272429881407851485163914999.25943         ->  -6.119923578285338689371137648319280E-75 Inexact Rounded

+dqdiv2019  divide  -3591344544888727133.30819750163254          5329395.423792795661446561090331037         ->  -673874662941.1968525589460533725290 Inexact Rounded

+dqdiv2020  divide  -7.682356781384631313156462724425838E+747   -6.60375855512219057281922141809940E+703     ->   1.163330960279556016678379128875149E+44 Inexact Rounded

+dqdiv2021  divide  -4511495596596941820863224.274679699         3365395017.263329795449661616090724         ->  -1340554548115304.904166888018346299 Inexact Rounded

+dqdiv2022  divide   5.211164127840931517263639608151299         164.5566381356276567012533847006453         ->   0.03166790587655228864478260157156510 Inexact Rounded

+dqdiv2023  divide  -49891.2243893458830384077684620383         -47179.9312961860747554053371171530          ->   1.057467084386767291602189656430268 Inexact Rounded

+dqdiv2024  divide   15065477.47214268488077415462413353         4366211.120892953261309529740552596         ->   3.450469309661227984244545513441359 Inexact Rounded

+dqdiv2025  divide   1.575670269440761846109602429612644E+370    653199649324740300.006185482643439          ->   2.412233795700359170904588548041481E+352 Inexact Rounded

+dqdiv2026  divide  -2112422311733448924573432192.620145        -80067206.03590693153848215848613406         ->   26383115089417660175.20102646756574 Inexact Rounded

+dqdiv2027  divide  -67096536051279809.32218611548721839        -869685412881941081664251990181.1049         ->   7.715035236584805921278566365231168E-14 Inexact Rounded

+dqdiv2028  divide  -58612908548962047.21866913425488972        -978449597531.3873665583475633831644         ->   59903.86085991703091236507859837023 Inexact Rounded

+dqdiv2029  divide  -133032412010942.1476864138213319796        -7.882059293498670705446528648201359E-428    ->   1.687787506504433064549515681693715E+441 Inexact Rounded

+dqdiv2030  divide   1.83746698338966029492299716360513E+977    -9.897926608979649951672839879128603E+154    ->  -1.856416051542212552042390218062458E+822 Inexact Rounded

+dqdiv2031  divide  -113742475841399236307128962.1507063         8298602.203049834732657567965262989         ->  -13706221006665137826.16557393919929 Inexact Rounded

+dqdiv2032  divide   196.4787574650754152995941808331862         929.6553388472318094427422117172394         ->   0.2113458066176526651006917922814018 Inexact Rounded

+dqdiv2033  divide   71931221465.43867996282803628130350         3838685934206426257090718.402248853         ->   1.873850132527423413607199513324021E-14 Inexact Rounded

+dqdiv2034  divide   488.4282502289651653783596246312885        -80.68940956806634280078706577953188         ->  -6.053189047280693318844801899473272 Inexact Rounded

+dqdiv2035  divide   9.001764344963921754981762913247394E-162   -8.585540973667205753734967645386919E-729    ->  -1.048479574271827326396012573232934E+567 Inexact Rounded

+dqdiv2036  divide  -7.404133959409894743706402857145471E-828   -51.38159929460289711134684843086265         ->   1.441008855516029461032061785219773E-829 Inexact Rounded

+dqdiv2037  divide   2.967520235574419794048994436040717E-613   -6252513855.91394894949879262731889          ->  -4.746123405656409127572998751885338E-623 Inexact Rounded

+dqdiv2038  divide  -18826852654824040505.83920366765051        -6336924877942437992590557460147340          ->   2.970976146546494669807886278519194E-15 Inexact Rounded

+dqdiv2039  divide  -8.101406784809197604949584001735949E+561    4.823300306948942821076681658771635E+361    ->  -1.679639721610839204738445747238987E+200 Inexact Rounded

+dqdiv2040  divide  -6.11981977773094052331062585191723E+295     1.507610253755339328302779005586534E+238    ->  -4.059285058911577244044418416044763E+57 Inexact Rounded

+dqdiv2041  divide   6.472638850046815880599220534274055E-596   -4.475233712083047516933911786159972         ->  -1.446324207062261745520496475778879E-596 Inexact Rounded

+dqdiv2042  divide  -84438593330.71277839631144509397112        -586684596204401664208947.4054879633         ->   1.439250218550041228759983937772504E-13 Inexact Rounded

+dqdiv2043  divide   9.354533233294022616695815656704369E-24     405.500390626135304252144163591746          ->   2.306911028827774549740571229736198E-26 Inexact Rounded

+dqdiv2044  divide   985606423350210.7374876650149957881        -36811563697.41925681866694859828794         ->  -26774.36990864119445335813354717711 Inexact Rounded

+dqdiv2045  divide  -8.187280774177715706278002247766311E-123   -38784124393.91212870828430001300068         ->   2.110987653356139147357240727794365E-133 Inexact Rounded

+dqdiv2046  divide  -4.612203126350070903459245798371657E+912    7.971562182727956290901984736800519E+64     ->  -5.785820922708683237098826662769748E+847 Inexact Rounded

+dqdiv2047  divide   4.661015909421485298247928967977089E+888   -6.360911253323922338737311563845581E+388    ->  -7.327591478321365980156654539638836E+499 Inexact Rounded

+dqdiv2048  divide   9156078172903.257500003260710833030         7.189796653262147139071634237964074E-90     ->   1.273482215766000994365201545096026E+102 Inexact Rounded

+dqdiv2049  divide  -1.710722303327476586373477781276586E-311   -3167561628260156837329323.729380695         ->   5.400754599578613984875752958645655E-336 Inexact Rounded

+dqdiv2050  divide  -4.647935210881806238321616345413021E-878    209388.5431867744648177308460639582         ->  -2.219765771394593733140494297388140E-883 Inexact Rounded

+dqdiv2051  divide   5958.694728395760992719084781582700         4.541510156564315632536353171846096E-746    ->   1.312051393253638664947852693005480E+749 Inexact Rounded

+dqdiv2052  divide  -7.935732544649702175256699886872093E-489   -7.433329073664793138998765647467971E+360    ->   1.067587949626076917672271619664656E-849 Inexact Rounded

+dqdiv2053  divide  -2746650864601157.863589959939901350         7.016684945507647528907184694359598E+548    ->  -3.914456593009309529351254950429932E-534 Inexact Rounded

+dqdiv2054  divide   3605149408631197365447953.994569178        -75614025825649082.78264864428237833         ->  -47678315.88472693507060063188020532 Inexact Rounded

+dqdiv2055  divide   788194320921798404906375214.196349         -6.222718148433247384932573401976337E-418    ->  -1.266639918634671803982222244977287E+444 Inexact Rounded

+dqdiv2056  divide   5620722730534752.758208943447603211         6.843552841168538319123000917657759E-139    ->   8.213164800485434666629970443739554E+153 Inexact Rounded

+dqdiv2057  divide   7304534676713703938102.403949019402        -576169.3685010935108153023803590835         ->  -12677756014201995.31969237144394772 Inexact Rounded

+dqdiv2058  divide   8067918762.134621639254916786945547        -8.774771480055536009105596163864758E+954    ->  -9.194448858836332156766764605125245E-946 Inexact Rounded

+dqdiv2059  divide   8.702093454123046507578256899537563E-324   -5.875399733016018404580201176576293E-401    ->  -1.481106622452052581470443526957335E+77 Inexact Rounded

+dqdiv2060  divide  -41426.01662518451861386352415092356         90.00146621684478300510769802013464         ->  -460.2815750287318692732067709176200 Inexact Rounded

+

+-- random divide tests with result near 1

+dqdiv4001 divide  2003100352770753969878925664524900   2003100352770753969878925664497824  ->  1.000000000000000000000000000013517  Inexact Rounded

+dqdiv4002 divide  4817785793916490652579552318371645   4817785793916490652579552318362097  ->  1.000000000000000000000000000001982  Inexact Rounded

+dqdiv4003 divide  8299187410920067325648068439560282   8299187410920067325648068439591159  ->  0.9999999999999999999999999999962795  Inexact Rounded

+dqdiv4004 divide  5641088455897407044544461785365899   5641088455897407044544461785389965  ->  0.9999999999999999999999999999957338  Inexact Rounded

+dqdiv4005 divide  5752274694706545359326361313490424   5752274694706545359326361313502723  ->  0.9999999999999999999999999999978619  Inexact Rounded

+dqdiv4006 divide  6762079477373670594829319346099665   6762079477373670594829319346132579  ->  0.9999999999999999999999999999951326  Inexact Rounded

+dqdiv4007 divide  7286425153691890341633023222602916   7286425153691890341633023222606556  ->  0.9999999999999999999999999999995004  Inexact Rounded

+dqdiv4008 divide  9481233991901305727648306421946655   9481233991901305727648306421919124  ->  1.000000000000000000000000000002904  Inexact Rounded

+dqdiv4009 divide  4282053941893951742029444065614311   4282053941893951742029444065583077  ->  1.000000000000000000000000000007294  Inexact Rounded

+dqdiv4010 divide   626888225441250639741781850338695    626888225441250639741781850327299  ->  1.000000000000000000000000000018179  Inexact Rounded

+dqdiv4011 divide  3860973649222028009456598604468547   3860973649222028009456598604476849  ->  0.9999999999999999999999999999978498  Inexact Rounded

+dqdiv4012 divide  4753157080127468127908060607821839   4753157080127468127908060607788379  ->  1.000000000000000000000000000007040  Inexact Rounded

+dqdiv4013 divide   552448546203754062805706277880419    552448546203754062805706277881903  ->  0.9999999999999999999999999999973138  Inexact Rounded

+dqdiv4014 divide  8405954527952158455323713728917395   8405954527952158455323713728933866  ->  0.9999999999999999999999999999980406  Inexact Rounded

+dqdiv4015 divide  7554096502235321142555802238016116   7554096502235321142555802238026546  ->  0.9999999999999999999999999999986193  Inexact Rounded

+dqdiv4016 divide  4053257674127518606871054934746782   4053257674127518606871054934767355  ->  0.9999999999999999999999999999949243  Inexact Rounded

+dqdiv4017 divide  7112419420755090454716888844011582   7112419420755090454716888844038105  ->  0.9999999999999999999999999999962709  Inexact Rounded

+dqdiv4018 divide  3132302137520072728164549730911846   3132302137520072728164549730908416  ->  1.000000000000000000000000000001095  Inexact Rounded

+dqdiv4019 divide  4788374045841416355706715048161013   4788374045841416355706715048190077  ->  0.9999999999999999999999999999939303  Inexact Rounded

+dqdiv4020 divide  9466021636047630218238075099510597   9466021636047630218238075099484053  ->  1.000000000000000000000000000002804  Inexact Rounded

+dqdiv4021 divide   912742745646765625597399692138650    912742745646765625597399692139042  ->  0.9999999999999999999999999999995705  Inexact Rounded

+dqdiv4022 divide  9508402742933643208806264897188504   9508402742933643208806264897195973  ->  0.9999999999999999999999999999992145  Inexact Rounded

+dqdiv4023 divide  1186956795727233704962361914360895   1186956795727233704962361914329577  ->  1.000000000000000000000000000026385  Inexact Rounded

+dqdiv4024 divide  5972210268839014812696916170967938   5972210268839014812696916170954974  ->  1.000000000000000000000000000002171  Inexact Rounded

+dqdiv4025 divide  2303801625521619930894460139793140   2303801625521619930894460139799643  ->  0.9999999999999999999999999999971773  Inexact Rounded

+dqdiv4026 divide  6022231560002898264777393473966595   6022231560002898264777393473947198  ->  1.000000000000000000000000000003221  Inexact Rounded

+dqdiv4027 divide  8426148335801396199969346032210893   8426148335801396199969346032203179  ->  1.000000000000000000000000000000915  Inexact Rounded

+dqdiv4028 divide  8812278947028784637382847098411749   8812278947028784637382847098385317  ->  1.000000000000000000000000000002999  Inexact Rounded

+dqdiv4029 divide  8145282002348367383264197170116146   8145282002348367383264197170083988  ->  1.000000000000000000000000000003948  Inexact Rounded

+dqdiv4030 divide  6821577571876840153123510107387026   6821577571876840153123510107418008  ->  0.9999999999999999999999999999954582  Inexact Rounded

+dqdiv4031 divide  9018555319518966970480565482023720   9018555319518966970480565482013346  ->  1.000000000000000000000000000001150  Inexact Rounded

+dqdiv4032 divide  4602155712998228449640717252788864   4602155712998228449640717252818502  ->  0.9999999999999999999999999999935600  Inexact Rounded

+dqdiv4033 divide  6675607481522785614506828292264472   6675607481522785614506828292277100  ->  0.9999999999999999999999999999981083  Inexact Rounded

+dqdiv4034 divide  4015881516871833897766945836264472   4015881516871833897766945836262645  ->  1.000000000000000000000000000000455  Inexact Rounded

+dqdiv4035 divide  1415580205933411837595459716910365   1415580205933411837595459716880139  ->  1.000000000000000000000000000021352  Inexact Rounded

+dqdiv4036 divide  9432968297069542816752035276361552   9432968297069542816752035276353054  ->  1.000000000000000000000000000000901  Inexact Rounded

+dqdiv4037 divide  4799319591303848500532766682140658   4799319591303848500532766682172655  ->  0.9999999999999999999999999999933330  Inexact Rounded

+dqdiv4038 divide   316854270732839529790584284987472    316854270732839529790584285004832  ->  0.9999999999999999999999999999452114  Inexact Rounded

+dqdiv4039 divide  3598981300592490427826027975697415   3598981300592490427826027975686712  ->  1.000000000000000000000000000002974  Inexact Rounded

+dqdiv4040 divide  1664315435694461371155800682196520   1664315435694461371155800682195617  ->  1.000000000000000000000000000000543  Inexact Rounded

+dqdiv4041 divide  1680872316531128890102855316510581   1680872316531128890102855316495545  ->  1.000000000000000000000000000008945  Inexact Rounded

+dqdiv4042 divide  9881274879566405475755499281644730   9881274879566405475755499281615743  ->  1.000000000000000000000000000002934  Inexact Rounded

+dqdiv4043 divide  4737225957717466960447204232279216   4737225957717466960447204232277452  ->  1.000000000000000000000000000000372  Inexact Rounded

+dqdiv4044 divide  2482097379414867061213319346418288   2482097379414867061213319346387936  ->  1.000000000000000000000000000012228  Inexact Rounded

+dqdiv4045 divide  7406977595233762723576434122161868   7406977595233762723576434122189042  ->  0.9999999999999999999999999999963313  Inexact Rounded

+dqdiv4046 divide   228782057757566047086593281773577    228782057757566047086593281769727  ->  1.000000000000000000000000000016828  Inexact Rounded

+dqdiv4047 divide  2956594270240579648823270540367653   2956594270240579648823270540368556  ->  0.9999999999999999999999999999996946  Inexact Rounded

+dqdiv4048 divide  6326964098897620620534136767634340   6326964098897620620534136767619339  ->  1.000000000000000000000000000002371  Inexact Rounded

+dqdiv4049 divide   414586440456590215247002678327800    414586440456590215247002678316922  ->  1.000000000000000000000000000026238  Inexact Rounded

+dqdiv4050 divide  7364552208570039386220505636779125   7364552208570039386220505636803548  ->  0.9999999999999999999999999999966837  Inexact Rounded

+dqdiv4051 divide  5626266749902369710022824950590056   5626266749902369710022824950591008  ->  0.9999999999999999999999999999998308  Inexact Rounded

+dqdiv4052 divide  4863278293916197454987481343460484   4863278293916197454987481343442522  ->  1.000000000000000000000000000003693  Inexact Rounded

+dqdiv4053 divide  1170713582030637359713249796835483   1170713582030637359713249796823345  ->  1.000000000000000000000000000010368  Inexact Rounded

+dqdiv4054 divide  9838062494725965667776326556052931   9838062494725965667776326556061002  ->  0.9999999999999999999999999999991796  Inexact Rounded

+dqdiv4055 divide  4071388731298861093005687091498922   4071388731298861093005687091498278  ->  1.000000000000000000000000000000158  Inexact Rounded

+dqdiv4056 divide  8753155722324706795855038590272526   8753155722324706795855038590276656  ->  0.9999999999999999999999999999995282  Inexact Rounded

+dqdiv4057 divide  4399941911533273418844742658240485   4399941911533273418844742658219891  ->  1.000000000000000000000000000004681  Inexact Rounded

+dqdiv4058 divide  4127884159949503677776430620050269   4127884159949503677776430620026091  ->  1.000000000000000000000000000005857  Inexact Rounded

+dqdiv4059 divide  5536160822360800067042528317438808   5536160822360800067042528317450687  ->  0.9999999999999999999999999999978543  Inexact Rounded

+dqdiv4060 divide  3973234998468664936671088237710246   3973234998468664936671088237741886  ->  0.9999999999999999999999999999920367  Inexact Rounded

+dqdiv4061 divide  9824855935638263593410444142327358   9824855935638263593410444142328576  ->  0.9999999999999999999999999999998760  Inexact Rounded

+dqdiv4062 divide  5917078517340218131867327300814867   5917078517340218131867327300788701  ->  1.000000000000000000000000000004422  Inexact Rounded

+dqdiv4063 divide  4354236601830544882286139612521362   4354236601830544882286139612543223  ->  0.9999999999999999999999999999949794  Inexact Rounded

+dqdiv4064 divide  8058474772375259017342110013891294   8058474772375259017342110013906792  ->  0.9999999999999999999999999999980768  Inexact Rounded

+dqdiv4065 divide  5519604020981748170517093746166328   5519604020981748170517093746181763  ->  0.9999999999999999999999999999972036  Inexact Rounded

+dqdiv4066 divide  1502130966879805458831323782443139   1502130966879805458831323782412213  ->  1.000000000000000000000000000020588  Inexact Rounded

+dqdiv4067 divide   562795633719481212915159787980270    562795633719481212915159788007066  ->  0.9999999999999999999999999999523877  Inexact Rounded

+dqdiv4068 divide  6584743324494664273941281557268878   6584743324494664273941281557258945  ->  1.000000000000000000000000000001508  Inexact Rounded

+dqdiv4069 divide  3632000327285743997976431109416500   3632000327285743997976431109408107  ->  1.000000000000000000000000000002311  Inexact Rounded

+dqdiv4070 divide  1145827237315430089388953838561450   1145827237315430089388953838527332  ->  1.000000000000000000000000000029776  Inexact Rounded

+dqdiv4071 divide  8874431010357691869725372317350380   8874431010357691869725372317316472  ->  1.000000000000000000000000000003821  Inexact Rounded

+dqdiv4072 divide   992948718902804648119753141202196    992948718902804648119753141235222  ->  0.9999999999999999999999999999667395  Inexact Rounded

+dqdiv4073 divide  2522735183374218505142417265439989   2522735183374218505142417265453779  ->  0.9999999999999999999999999999945337  Inexact Rounded

+dqdiv4074 divide  2668419161912936508006872303501052   2668419161912936508006872303471036  ->  1.000000000000000000000000000011249  Inexact Rounded

+dqdiv4075 divide  3036169085665186712590941111775092   3036169085665186712590941111808846  ->  0.9999999999999999999999999999888827  Inexact Rounded

+dqdiv4076 divide  9441634604917231638508898934006147   9441634604917231638508898934000288  ->  1.000000000000000000000000000000621  Inexact Rounded

+dqdiv4077 divide  2677301353164377091111458811839190   2677301353164377091111458811867722  ->  0.9999999999999999999999999999893430  Inexact Rounded

+dqdiv4078 divide  6844979203112066166583765857171426   6844979203112066166583765857189682  ->  0.9999999999999999999999999999973329  Inexact Rounded

+dqdiv4079 divide  2220337435141796724323783960231661   2220337435141796724323783960208778  ->  1.000000000000000000000000000010306  Inexact Rounded

+dqdiv4080 divide  6447424700019783931569996989561380   6447424700019783931569996989572454  ->  0.9999999999999999999999999999982824  Inexact Rounded

+dqdiv4081 divide  7512856762696607119847092195587180   7512856762696607119847092195557346  ->  1.000000000000000000000000000003971  Inexact Rounded

+dqdiv4082 divide  7395261981193960399087819077237482   7395261981193960399087819077242487  ->  0.9999999999999999999999999999993232  Inexact Rounded

+dqdiv4083 divide  2253442467682584035792724884376735   2253442467682584035792724884407178  ->  0.9999999999999999999999999999864904  Inexact Rounded

+dqdiv4084 divide  8153138680300213135577336466190997   8153138680300213135577336466220607  ->  0.9999999999999999999999999999963683  Inexact Rounded

+dqdiv4085 divide  4668731252254148074041022681801390   4668731252254148074041022681778101  ->  1.000000000000000000000000000004988  Inexact Rounded

+dqdiv4086 divide  6078404557993669696040425501815056   6078404557993669696040425501797612  ->  1.000000000000000000000000000002870  Inexact Rounded

+dqdiv4087 divide  2306352359874261623223356878316278   2306352359874261623223356878335612  ->  0.9999999999999999999999999999916171  Inexact Rounded

+dqdiv4088 divide  3264842186668480362900909564091908   3264842186668480362900909564058658  ->  1.000000000000000000000000000010184  Inexact Rounded

+dqdiv4089 divide  6971985047279636878957959608612204   6971985047279636878957959608615088  ->  0.9999999999999999999999999999995863  Inexact Rounded

+dqdiv4090 divide  5262810889952721235466445973816257   5262810889952721235466445973783077  ->  1.000000000000000000000000000006305  Inexact Rounded

+dqdiv4091 divide  7947944731035267178548357070080288   7947944731035267178548357070061339  ->  1.000000000000000000000000000002384  Inexact Rounded

+dqdiv4092 divide  5071808908395375108383035800443229   5071808908395375108383035800412429  ->  1.000000000000000000000000000006073  Inexact Rounded

+dqdiv4093 divide  2043146542084503655511507209262969   2043146542084503655511507209249263  ->  1.000000000000000000000000000006708  Inexact Rounded

+dqdiv4094 divide  4097632735384534181661959731264802   4097632735384534181661959731234499  ->  1.000000000000000000000000000007395  Inexact Rounded

+dqdiv4095 divide  3061477642831387489729464587044430   3061477642831387489729464587059452  ->  0.9999999999999999999999999999950932  Inexact Rounded

+dqdiv4096 divide  3429854941039776159498802936252638   3429854941039776159498802936246415  ->  1.000000000000000000000000000001814  Inexact Rounded

+dqdiv4097 divide  4874324979578599700024133278284545   4874324979578599700024133278262131  ->  1.000000000000000000000000000004598  Inexact Rounded

+dqdiv4098 divide  5701652369691833541455978515820882   5701652369691833541455978515834854  ->  0.9999999999999999999999999999975495  Inexact Rounded

+dqdiv4099 divide  2928205728402945266953255632343113   2928205728402945266953255632373794  ->  0.9999999999999999999999999999895223  Inexact Rounded

+

+-- Null tests

+dqdiv9998 divide 10  # -> NaN Invalid_operation

+dqdiv9999 divide  # 10 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqDivideInt.decTest b/Lib/test/decimaltestdata/dqDivideInt.decTest
new file mode 100644
index 0000000..b5eec63
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqDivideInt.decTest
@@ -0,0 +1,453 @@
+------------------------------------------------------------------------

+-- dqDivideInt.decTest -- decQuad integer division                    --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+

+dqdvi001 divideint  1     1    ->  1

+dqdvi002 divideint  2     1    ->  2

+dqdvi003 divideint  1     2    ->  0

+dqdvi004 divideint  2     2    ->  1

+dqdvi005 divideint  0     1    ->  0

+dqdvi006 divideint  0     2    ->  0

+dqdvi007 divideint  1     3    ->  0

+dqdvi008 divideint  2     3    ->  0

+dqdvi009 divideint  3     3    ->  1

+

+dqdvi010 divideint  2.4   1    ->  2

+dqdvi011 divideint  2.4   -1   ->  -2

+dqdvi012 divideint  -2.4  1    ->  -2

+dqdvi013 divideint  -2.4  -1   ->  2

+dqdvi014 divideint  2.40  1    ->  2

+dqdvi015 divideint  2.400 1    ->  2

+dqdvi016 divideint  2.4   2    ->  1

+dqdvi017 divideint  2.400 2    ->  1

+dqdvi018 divideint  2.    2    ->  1

+dqdvi019 divideint  20    20   ->  1

+

+dqdvi020 divideint  187   187  ->  1

+dqdvi021 divideint  5     2    ->  2

+dqdvi022 divideint  5     2.0    ->  2

+dqdvi023 divideint  5     2.000  ->  2

+dqdvi024 divideint  5     0.200  ->  25

+dqdvi025 divideint  5     0.200  ->  25

+

+dqdvi030 divideint  1     2      ->  0

+dqdvi031 divideint  1     4      ->  0

+dqdvi032 divideint  1     8      ->  0

+dqdvi033 divideint  1     16     ->  0

+dqdvi034 divideint  1     32     ->  0

+dqdvi035 divideint  1     64     ->  0

+dqdvi040 divideint  1    -2      -> -0

+dqdvi041 divideint  1    -4      -> -0

+dqdvi042 divideint  1    -8      -> -0

+dqdvi043 divideint  1    -16     -> -0

+dqdvi044 divideint  1    -32     -> -0

+dqdvi045 divideint  1    -64     -> -0

+dqdvi050 divideint -1     2      -> -0

+dqdvi051 divideint -1     4      -> -0

+dqdvi052 divideint -1     8      -> -0

+dqdvi053 divideint -1     16     -> -0

+dqdvi054 divideint -1     32     -> -0

+dqdvi055 divideint -1     64     -> -0

+dqdvi060 divideint -1    -2      ->  0

+dqdvi061 divideint -1    -4      ->  0

+dqdvi062 divideint -1    -8      ->  0

+dqdvi063 divideint -1    -16     ->  0

+dqdvi064 divideint -1    -32     ->  0

+dqdvi065 divideint -1    -64     ->  0

+

+-- similar with powers of ten

+dqdvi160 divideint  1     1         ->  1

+dqdvi161 divideint  1     10        ->  0

+dqdvi162 divideint  1     100       ->  0

+dqdvi163 divideint  1     1000      ->  0

+dqdvi164 divideint  1     10000     ->  0

+dqdvi165 divideint  1     100000    ->  0

+dqdvi166 divideint  1     1000000   ->  0

+dqdvi167 divideint  1     10000000  ->  0

+dqdvi168 divideint  1     100000000 ->  0

+dqdvi170 divideint  1    -1         -> -1

+dqdvi171 divideint  1    -10        -> -0

+dqdvi172 divideint  1    -100       -> -0

+dqdvi173 divideint  1    -1000      -> -0

+dqdvi174 divideint  1    -10000     -> -0

+dqdvi175 divideint  1    -100000    -> -0

+dqdvi176 divideint  1    -1000000   -> -0

+dqdvi177 divideint  1    -10000000  -> -0

+dqdvi178 divideint  1    -100000000 -> -0

+dqdvi180 divideint -1     1         -> -1

+dqdvi181 divideint -1     10        -> -0

+dqdvi182 divideint -1     100       -> -0

+dqdvi183 divideint -1     1000      -> -0

+dqdvi184 divideint -1     10000     -> -0

+dqdvi185 divideint -1     100000    -> -0

+dqdvi186 divideint -1     1000000   -> -0

+dqdvi187 divideint -1     10000000  -> -0

+dqdvi188 divideint -1     100000000 -> -0

+dqdvi190 divideint -1    -1         ->  1

+dqdvi191 divideint -1    -10        ->  0

+dqdvi192 divideint -1    -100       ->  0

+dqdvi193 divideint -1    -1000      ->  0

+dqdvi194 divideint -1    -10000     ->  0

+dqdvi195 divideint -1    -100000    ->  0

+dqdvi196 divideint -1    -1000000   ->  0

+dqdvi197 divideint -1    -10000000  ->  0

+dqdvi198 divideint -1    -100000000 ->  0

+

+-- some long operand (at p=9) cases

+dqdvi070 divideint  999999999     1  ->  999999999

+dqdvi071 divideint  999999999.4   1  ->  999999999

+dqdvi072 divideint  999999999.5   1  ->  999999999

+dqdvi073 divideint  999999999.9   1  ->  999999999

+dqdvi074 divideint  999999999.999 1  ->  999999999

+

+dqdvi090 divideint  0.            1    ->  0

+dqdvi091 divideint  .0            1    ->  0

+dqdvi092 divideint  0.00          1    ->  0

+dqdvi093 divideint  0.00E+9       1    ->  0

+dqdvi094 divideint  0.0000E-50    1    ->  0

+

+dqdvi100 divideint  1  1   -> 1

+dqdvi101 divideint  1  2   -> 0

+dqdvi102 divideint  1  3   -> 0

+dqdvi103 divideint  1  4   -> 0

+dqdvi104 divideint  1  5   -> 0

+dqdvi105 divideint  1  6   -> 0

+dqdvi106 divideint  1  7   -> 0

+dqdvi107 divideint  1  8   -> 0

+dqdvi108 divideint  1  9   -> 0

+dqdvi109 divideint  1  10  -> 0

+dqdvi110 divideint  1  1   -> 1

+dqdvi111 divideint  2  1   -> 2

+dqdvi112 divideint  3  1   -> 3

+dqdvi113 divideint  4  1   -> 4

+dqdvi114 divideint  5  1   -> 5

+dqdvi115 divideint  6  1   -> 6

+dqdvi116 divideint  7  1   -> 7

+dqdvi117 divideint  8  1   -> 8

+dqdvi118 divideint  9  1   -> 9

+dqdvi119 divideint  10 1   -> 10

+

+-- from DiagBigDecimal

+dqdvi131 divideint  101.3   1     ->  101

+dqdvi132 divideint  101.0   1     ->  101

+dqdvi133 divideint  101.3   3     ->  33

+dqdvi134 divideint  101.0   3     ->  33

+dqdvi135 divideint  2.4     1     ->  2

+dqdvi136 divideint  2.400   1     ->  2

+dqdvi137 divideint  18      18    ->  1

+dqdvi138 divideint  1120    1000  ->  1

+dqdvi139 divideint  2.4     2     ->  1

+dqdvi140 divideint  2.400   2     ->  1

+dqdvi141 divideint  0.5     2.000 ->  0

+dqdvi142 divideint  8.005   7     ->  1

+dqdvi143 divideint  5       2     ->  2

+dqdvi144 divideint  0       2     ->  0

+dqdvi145 divideint  0.00    2     ->  0

+

+-- Others

+dqdvi150 divideint  12345  4.999  ->  2469

+dqdvi151 divideint  12345  4.99   ->  2473

+dqdvi152 divideint  12345  4.9    ->  2519

+dqdvi153 divideint  12345  5      ->  2469

+dqdvi154 divideint  12345  5.1    ->  2420

+dqdvi155 divideint  12345  5.01   ->  2464

+dqdvi156 divideint  12345  5.001  ->  2468

+dqdvi157 divideint    101  7.6    ->  13

+

+-- Various flavours of divideint by 0

+dqdvi201 divideint  0      0   -> NaN Division_undefined

+dqdvi202 divideint  0.0E5  0   -> NaN Division_undefined

+dqdvi203 divideint  0.000  0   -> NaN Division_undefined

+dqdvi204 divideint  0.0001 0   -> Infinity Division_by_zero

+dqdvi205 divideint  0.01   0   -> Infinity Division_by_zero

+dqdvi206 divideint  0.1    0   -> Infinity Division_by_zero

+dqdvi207 divideint  1      0   -> Infinity Division_by_zero

+dqdvi208 divideint  1      0.0 -> Infinity Division_by_zero

+dqdvi209 divideint 10      0.0 -> Infinity Division_by_zero

+dqdvi210 divideint 1E+100  0.0 -> Infinity Division_by_zero

+dqdvi211 divideint 1E+380  0   -> Infinity Division_by_zero

+dqdvi214 divideint  -0.0001 0   -> -Infinity Division_by_zero

+dqdvi215 divideint  -0.01   0   -> -Infinity Division_by_zero

+dqdvi216 divideint  -0.1    0   -> -Infinity Division_by_zero

+dqdvi217 divideint  -1      0   -> -Infinity Division_by_zero

+dqdvi218 divideint  -1      0.0 -> -Infinity Division_by_zero

+dqdvi219 divideint -10      0.0 -> -Infinity Division_by_zero

+dqdvi220 divideint -1E+100  0.0 -> -Infinity Division_by_zero

+dqdvi221 divideint -1E+380  0   -> -Infinity Division_by_zero

+

+-- test some cases that are close to exponent overflow

+dqdvi270 divideint 1 1e384          -> 0

+dqdvi271 divideint 1 0.9e384        -> 0

+dqdvi272 divideint 1 0.99e384       -> 0

+dqdvi273 divideint 1 0.9999999999999999e384       -> 0

+dqdvi274 divideint 9e384    1       -> NaN Division_impossible

+dqdvi275 divideint 9.9e384  1       -> NaN Division_impossible

+dqdvi276 divideint 9.99e384 1       -> NaN Division_impossible

+dqdvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible

+

+dqdvi280 divideint 0.1 9e-383       -> NaN Division_impossible

+dqdvi281 divideint 0.1 99e-383      -> NaN Division_impossible

+dqdvi282 divideint 0.1 999e-383     -> NaN Division_impossible

+dqdvi283 divideint 0.1 9e-382       -> NaN Division_impossible

+dqdvi284 divideint 0.1 99e-382      -> NaN Division_impossible

+

+-- GD edge cases: lhs smaller than rhs but more digits

+dqdvi301  divideint  0.9      2      ->  0

+dqdvi302  divideint  0.9      2.0    ->  0

+dqdvi303  divideint  0.9      2.1    ->  0

+dqdvi304  divideint  0.9      2.00   ->  0

+dqdvi305  divideint  0.9      2.01   ->  0

+dqdvi306  divideint  0.12     1      ->  0

+dqdvi307  divideint  0.12     1.0    ->  0

+dqdvi308  divideint  0.12     1.00   ->  0

+dqdvi309  divideint  0.12     1.0    ->  0

+dqdvi310  divideint  0.12     1.00   ->  0

+dqdvi311  divideint  0.12     2      ->  0

+dqdvi312  divideint  0.12     2.0    ->  0

+dqdvi313  divideint  0.12     2.1    ->  0

+dqdvi314  divideint  0.12     2.00   ->  0

+dqdvi315  divideint  0.12     2.01   ->  0

+

+-- edge cases of impossible

+dqdvi330  divideint  1234567987654321987654321890123456  10    ->  123456798765432198765432189012345

+dqdvi331  divideint  1234567987654321987654321890123456   1    ->  1234567987654321987654321890123456

+dqdvi332  divideint  1234567987654321987654321890123456   0.1  ->  NaN Division_impossible

+dqdvi333  divideint  1234567987654321987654321890123456   0.01 ->  NaN Division_impossible

+

+-- overflow and underflow tests [from divide]

+dqdvi1051 divideint  1e+277  1e-311 ->  NaN Division_impossible

+dqdvi1052 divideint  1e+277 -1e-311 ->  NaN Division_impossible

+dqdvi1053 divideint -1e+277  1e-311 ->  NaN Division_impossible

+dqdvi1054 divideint -1e+277 -1e-311 ->  NaN Division_impossible

+dqdvi1055 divideint  1e-277  1e+311 ->  0

+dqdvi1056 divideint  1e-277 -1e+311 -> -0

+dqdvi1057 divideint -1e-277  1e+311 -> -0

+dqdvi1058 divideint -1e-277 -1e+311 ->  0

+

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

+dqdvi1060 divideint 1e-291 1e+101 -> 0

+dqdvi1061 divideint 1e-291 1e+102 -> 0

+dqdvi1062 divideint 1e-291 1e+103 -> 0

+dqdvi1063 divideint 1e-291 1e+104 -> 0

+dqdvi1064 divideint 1e-291 1e+105 -> 0

+dqdvi1065 divideint 1e-291 1e+106 -> 0

+dqdvi1066 divideint 1e-291 1e+107 -> 0

+dqdvi1067 divideint 1e-291 1e+108 -> 0

+dqdvi1068 divideint 1e-291 1e+109 -> 0

+dqdvi1069 divideint 1e-291 1e+110 -> 0

+

+dqdvi1101 divideint  1.0000E-394  1     -> 0

+dqdvi1102 divideint  1.000E-394   1e+1  -> 0

+dqdvi1103 divideint  1.00E-394    1e+2  -> 0

+

+dqdvi1118 divideint  1E-394       1e+4  -> 0

+dqdvi1119 divideint  3E-394      -1e+5  -> -0

+dqdvi1120 divideint  5E-394       1e+5  -> 0

+

+dqdvi1124 divideint  1E-394      -1e+4  -> -0

+dqdvi1130 divideint  3.0E-394    -1e+5  -> -0

+

+dqdvi1131 divideint  1.0E-199     1e+200 -> 0

+dqdvi1132 divideint  1.0E-199     1e+199 -> 0

+dqdvi1133 divideint  1.0E-199     1e+198 -> 0

+dqdvi1134 divideint  2.0E-199     2e+198 -> 0

+dqdvi1135 divideint  4.0E-199     4e+198 -> 0

+

+-- long operand checks

+dqdvi401 divideint 12345678000 100 -> 123456780

+dqdvi402 divideint 1 12345678000   -> 0

+dqdvi403 divideint 1234567800  10  -> 123456780

+dqdvi404 divideint 1 1234567800    -> 0

+dqdvi405 divideint 1234567890  10  -> 123456789

+dqdvi406 divideint 1 1234567890    -> 0

+dqdvi407 divideint 1234567891  10  -> 123456789

+dqdvi408 divideint 1 1234567891    -> 0

+dqdvi409 divideint 12345678901 100 -> 123456789

+dqdvi410 divideint 1 12345678901   -> 0

+dqdvi411 divideint 1234567896  10  -> 123456789

+dqdvi412 divideint 1 1234567896    -> 0

+dqdvi413 divideint 12345678948 100 -> 123456789

+dqdvi414 divideint 12345678949 100 -> 123456789

+dqdvi415 divideint 12345678950 100 -> 123456789

+dqdvi416 divideint 12345678951 100 -> 123456789

+dqdvi417 divideint 12345678999 100 -> 123456789

+dqdvi441 divideint 12345678000 1 -> 12345678000

+dqdvi442 divideint 1 12345678000 -> 0

+dqdvi443 divideint 1234567800  1 -> 1234567800

+dqdvi444 divideint 1 1234567800  -> 0

+dqdvi445 divideint 1234567890  1 -> 1234567890

+dqdvi446 divideint 1 1234567890  -> 0

+dqdvi447 divideint 1234567891  1 -> 1234567891

+dqdvi448 divideint 1 1234567891  -> 0

+dqdvi449 divideint 12345678901 1 -> 12345678901

+dqdvi450 divideint 1 12345678901 -> 0

+dqdvi451 divideint 1234567896  1 -> 1234567896

+dqdvi452 divideint 1 1234567896  -> 0

+

+-- more zeros, etc.

+dqdvi531 divideint 5.00 1E-3    -> 5000

+dqdvi532 divideint 00.00 0.000  -> NaN Division_undefined

+dqdvi533 divideint 00.00 0E-3   -> NaN Division_undefined

+dqdvi534 divideint  0    -0     -> NaN Division_undefined

+dqdvi535 divideint -0     0     -> NaN Division_undefined

+dqdvi536 divideint -0    -0     -> NaN Division_undefined

+

+dqdvi541 divideint  0    -1     -> -0

+dqdvi542 divideint -0    -1     ->  0

+dqdvi543 divideint  0     1     ->  0

+dqdvi544 divideint -0     1     -> -0

+dqdvi545 divideint -1     0     -> -Infinity Division_by_zero

+dqdvi546 divideint -1    -0     ->  Infinity Division_by_zero

+dqdvi547 divideint  1     0     ->  Infinity Division_by_zero

+dqdvi548 divideint  1    -0     -> -Infinity Division_by_zero

+

+dqdvi551 divideint  0.0  -1     -> -0

+dqdvi552 divideint -0.0  -1     ->  0

+dqdvi553 divideint  0.0   1     ->  0

+dqdvi554 divideint -0.0   1     -> -0

+dqdvi555 divideint -1.0   0     -> -Infinity Division_by_zero

+dqdvi556 divideint -1.0  -0     ->  Infinity Division_by_zero

+dqdvi557 divideint  1.0   0     ->  Infinity Division_by_zero

+dqdvi558 divideint  1.0  -0     -> -Infinity Division_by_zero

+

+dqdvi561 divideint  0    -1.0   -> -0

+dqdvi562 divideint -0    -1.0   ->  0

+dqdvi563 divideint  0     1.0   ->  0

+dqdvi564 divideint -0     1.0   -> -0

+dqdvi565 divideint -1     0.0   -> -Infinity Division_by_zero

+dqdvi566 divideint -1    -0.0   ->  Infinity Division_by_zero

+dqdvi567 divideint  1     0.0   ->  Infinity Division_by_zero

+dqdvi568 divideint  1    -0.0   -> -Infinity Division_by_zero

+

+dqdvi571 divideint  0.0  -1.0   -> -0

+dqdvi572 divideint -0.0  -1.0   ->  0

+dqdvi573 divideint  0.0   1.0   ->  0

+dqdvi574 divideint -0.0   1.0   -> -0

+dqdvi575 divideint -1.0   0.0   -> -Infinity Division_by_zero

+dqdvi576 divideint -1.0  -0.0   ->  Infinity Division_by_zero

+dqdvi577 divideint  1.0   0.0   ->  Infinity Division_by_zero

+dqdvi578 divideint  1.0  -0.0   -> -Infinity Division_by_zero

+

+-- Specials

+dqdvi580 divideint  Inf  -Inf   ->  NaN Invalid_operation

+dqdvi581 divideint  Inf  -1000  -> -Infinity

+dqdvi582 divideint  Inf  -1     -> -Infinity

+dqdvi583 divideint  Inf  -0     -> -Infinity

+dqdvi584 divideint  Inf   0     ->  Infinity

+dqdvi585 divideint  Inf   1     ->  Infinity

+dqdvi586 divideint  Inf   1000  ->  Infinity

+dqdvi587 divideint  Inf   Inf   ->  NaN Invalid_operation

+dqdvi588 divideint -1000  Inf   -> -0

+dqdvi589 divideint -Inf   Inf   ->  NaN Invalid_operation

+dqdvi590 divideint -1     Inf   -> -0

+dqdvi591 divideint -0     Inf   -> -0

+dqdvi592 divideint  0     Inf   ->  0

+dqdvi593 divideint  1     Inf   ->  0

+dqdvi594 divideint  1000  Inf   ->  0

+dqdvi595 divideint  Inf   Inf   ->  NaN Invalid_operation

+

+dqdvi600 divideint -Inf  -Inf   ->  NaN Invalid_operation

+dqdvi601 divideint -Inf  -1000  ->  Infinity

+dqdvi602 divideint -Inf  -1     ->  Infinity

+dqdvi603 divideint -Inf  -0     ->  Infinity

+dqdvi604 divideint -Inf   0     -> -Infinity

+dqdvi605 divideint -Inf   1     -> -Infinity

+dqdvi606 divideint -Inf   1000  -> -Infinity

+dqdvi607 divideint -Inf   Inf   ->  NaN Invalid_operation

+dqdvi608 divideint -1000  Inf   -> -0

+dqdvi609 divideint -Inf  -Inf   ->  NaN Invalid_operation

+dqdvi610 divideint -1    -Inf   ->  0

+dqdvi611 divideint -0    -Inf   ->  0

+dqdvi612 divideint  0    -Inf   -> -0

+dqdvi613 divideint  1    -Inf   -> -0

+dqdvi614 divideint  1000 -Inf   -> -0

+dqdvi615 divideint  Inf  -Inf   ->  NaN Invalid_operation

+

+dqdvi621 divideint  NaN -Inf    ->  NaN

+dqdvi622 divideint  NaN -1000   ->  NaN

+dqdvi623 divideint  NaN -1      ->  NaN

+dqdvi624 divideint  NaN -0      ->  NaN

+dqdvi625 divideint  NaN  0      ->  NaN

+dqdvi626 divideint  NaN  1      ->  NaN

+dqdvi627 divideint  NaN  1000   ->  NaN

+dqdvi628 divideint  NaN  Inf    ->  NaN

+dqdvi629 divideint  NaN  NaN    ->  NaN

+dqdvi630 divideint -Inf  NaN    ->  NaN

+dqdvi631 divideint -1000 NaN    ->  NaN

+dqdvi632 divideint -1    NaN    ->  NaN

+dqdvi633 divideint -0    NaN    ->  NaN

+dqdvi634 divideint  0    NaN    ->  NaN

+dqdvi635 divideint  1    NaN    ->  NaN

+dqdvi636 divideint  1000 NaN    ->  NaN

+dqdvi637 divideint  Inf  NaN    ->  NaN

+

+dqdvi641 divideint  sNaN -Inf   ->  NaN  Invalid_operation

+dqdvi642 divideint  sNaN -1000  ->  NaN  Invalid_operation

+dqdvi643 divideint  sNaN -1     ->  NaN  Invalid_operation

+dqdvi644 divideint  sNaN -0     ->  NaN  Invalid_operation

+dqdvi645 divideint  sNaN  0     ->  NaN  Invalid_operation

+dqdvi646 divideint  sNaN  1     ->  NaN  Invalid_operation

+dqdvi647 divideint  sNaN  1000  ->  NaN  Invalid_operation

+dqdvi648 divideint  sNaN  NaN   ->  NaN  Invalid_operation

+dqdvi649 divideint  sNaN sNaN   ->  NaN  Invalid_operation

+dqdvi650 divideint  NaN  sNaN   ->  NaN  Invalid_operation

+dqdvi651 divideint -Inf  sNaN   ->  NaN  Invalid_operation

+dqdvi652 divideint -1000 sNaN   ->  NaN  Invalid_operation

+dqdvi653 divideint -1    sNaN   ->  NaN  Invalid_operation

+dqdvi654 divideint -0    sNaN   ->  NaN  Invalid_operation

+dqdvi655 divideint  0    sNaN   ->  NaN  Invalid_operation

+dqdvi656 divideint  1    sNaN   ->  NaN  Invalid_operation

+dqdvi657 divideint  1000 sNaN   ->  NaN  Invalid_operation

+dqdvi658 divideint  Inf  sNaN   ->  NaN  Invalid_operation

+dqdvi659 divideint  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqdvi661 divideint  NaN9 -Inf   ->  NaN9

+dqdvi662 divideint  NaN8  1000  ->  NaN8

+dqdvi663 divideint  NaN7  Inf   ->  NaN7

+dqdvi664 divideint -NaN6  NaN5  -> -NaN6

+dqdvi665 divideint -Inf   NaN4  ->  NaN4

+dqdvi666 divideint -1000  NaN3  ->  NaN3

+dqdvi667 divideint  Inf  -NaN2  -> -NaN2

+

+dqdvi671 divideint -sNaN99 -Inf    -> -NaN99 Invalid_operation

+dqdvi672 divideint  sNaN98 -1      ->  NaN98 Invalid_operation

+dqdvi673 divideint  sNaN97  NaN    ->  NaN97 Invalid_operation

+dqdvi674 divideint  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+dqdvi675 divideint  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dqdvi676 divideint -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqdvi677 divideint  0      sNaN91  ->  NaN91 Invalid_operation

+dqdvi678 divideint  Inf   -sNaN90  -> -NaN90 Invalid_operation

+dqdvi679 divideint  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+-- Gyuris example

+dqdvi700 divideint 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0

+

+-- Null tests

+dqdvi900 divideint  10  # -> NaN Invalid_operation

+dqdvi901 divideint   # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqEncode.decTest b/Lib/test/decimaltestdata/dqEncode.decTest
new file mode 100644
index 0000000..fcb512b
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqEncode.decTest
@@ -0,0 +1,477 @@
+------------------------------------------------------------------------

+-- dqEncode.decTest -- decimal sixteen-byte format testcases          --

+-- Copyright (c) IBM Corporation, 2000, 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                                                   --

+------------------------------------------------------------------------

+-- [Previously called decimal128.decTest]

+version: 2.57

+

+-- This set of tests is for the sixteen-byte concrete representation.

+-- Its characteristics are:

+--

+--   1 bit  sign

+--   5 bits combination field

+--  12 bits exponent continuation

+-- 110 bits coefficient continuation

+--

+-- Total exponent length 14 bits

+-- Total coefficient length 114 bits (34 digits)

+--

+-- Elimit = 12287 (maximum encoded exponent)

+-- Emax   =  6144 (largest exponent value)

+-- Emin   = -6143 (smallest exponent value)

+-- bias   =  6176 (subtracted from encoded exponent) = -Etiny

+

+-- The testcases here have only exactly representable data on the

+-- 'left-hand-side'; rounding from strings is tested in 'base'

+-- testcase groups.

+

+extended:    1

+clamp:       1

+precision:   34

+rounding:    half_up

+maxExponent: 6144

+minExponent: -6143

+

+-- General testcases

+-- (mostly derived from the Strawman 4 document and examples)

+decq001 apply   #A20780000000000000000000000003D0 -> -7.50

+decq002 apply   -7.50             -> #A20780000000000000000000000003D0

+-- derivative canonical plain strings

+decq003 apply   #A20840000000000000000000000003D0 -> -7.50E+3

+decq004 apply   -7.50E+3          -> #A20840000000000000000000000003D0

+decq005 apply   #A20800000000000000000000000003D0 -> -750

+decq006 apply   -750              -> #A20800000000000000000000000003D0

+decq007 apply   #A207c0000000000000000000000003D0 -> -75.0

+decq008 apply   -75.0             -> #A207c0000000000000000000000003D0

+decq009 apply   #A20740000000000000000000000003D0 -> -0.750

+decq010 apply   -0.750            -> #A20740000000000000000000000003D0

+decq011 apply   #A20700000000000000000000000003D0 -> -0.0750

+decq012 apply   -0.0750           -> #A20700000000000000000000000003D0

+decq013 apply   #A20680000000000000000000000003D0 -> -0.000750

+decq014 apply   -0.000750         -> #A20680000000000000000000000003D0

+decq015 apply   #A20600000000000000000000000003D0 -> -0.00000750

+decq016 apply   -0.00000750       -> #A20600000000000000000000000003D0

+decq017 apply   #A205c0000000000000000000000003D0 -> -7.50E-7

+decq018 apply   -7.50E-7          -> #A205c0000000000000000000000003D0

+

+-- Normality

+decq020 apply   1234567890123456789012345678901234   -> #2608134b9c1e28e56f3c127177823534

+decq021 apply  -1234567890123456789012345678901234   -> #a608134b9c1e28e56f3c127177823534

+decq022 apply   1111111111111111111111111111111111   -> #26080912449124491244912449124491

+

+-- Nmax and similar

+decq031 apply   9.999999999999999999999999999999999E+6144  -> #77ffcff3fcff3fcff3fcff3fcff3fcff

+decq032 apply   #77ffcff3fcff3fcff3fcff3fcff3fcff -> 9.999999999999999999999999999999999E+6144

+decq033 apply   1.234567890123456789012345678901234E+6144 -> #47ffd34b9c1e28e56f3c127177823534

+decq034 apply   #47ffd34b9c1e28e56f3c127177823534 -> 1.234567890123456789012345678901234E+6144

+-- fold-downs (more below)

+decq035 apply   1.23E+6144    -> #47ffd300000000000000000000000000 Clamped

+decq036 apply   #47ffd300000000000000000000000000       -> 1.230000000000000000000000000000000E+6144

+decq037 apply   1E+6144       -> #47ffc000000000000000000000000000 Clamped

+decq038 apply   #47ffc000000000000000000000000000       -> 1.000000000000000000000000000000000E+6144

+

+decq051 apply   12345                   -> #220800000000000000000000000049c5

+decq052 apply   #220800000000000000000000000049c5       -> 12345

+decq053 apply   1234                    -> #22080000000000000000000000000534

+decq054 apply   #22080000000000000000000000000534       -> 1234

+decq055 apply   123                     -> #220800000000000000000000000000a3

+decq056 apply   #220800000000000000000000000000a3       -> 123

+decq057 apply   12                      -> #22080000000000000000000000000012

+decq058 apply   #22080000000000000000000000000012       -> 12

+decq059 apply   1                       -> #22080000000000000000000000000001

+decq060 apply   #22080000000000000000000000000001       -> 1

+decq061 apply   1.23                    -> #220780000000000000000000000000a3

+decq062 apply   #220780000000000000000000000000a3       -> 1.23

+decq063 apply   123.45                  -> #220780000000000000000000000049c5

+decq064 apply   #220780000000000000000000000049c5       -> 123.45

+

+-- Nmin and below

+decq071 apply   1E-6143                                    -> #00084000000000000000000000000001

+decq072 apply   #00084000000000000000000000000001          -> 1E-6143

+decq073 apply   1.000000000000000000000000000000000E-6143  -> #04000000000000000000000000000000

+decq074 apply   #04000000000000000000000000000000          -> 1.000000000000000000000000000000000E-6143

+decq075 apply   1.000000000000000000000000000000001E-6143  -> #04000000000000000000000000000001

+decq076 apply   #04000000000000000000000000000001          -> 1.000000000000000000000000000000001E-6143

+

+decq077 apply   0.100000000000000000000000000000000E-6143  -> #00000800000000000000000000000000      Subnormal

+decq078 apply   #00000800000000000000000000000000          -> 1.00000000000000000000000000000000E-6144  Subnormal

+decq079 apply   0.000000000000000000000000000000010E-6143  -> #00000000000000000000000000000010      Subnormal

+decq080 apply   #00000000000000000000000000000010          -> 1.0E-6175              Subnormal

+decq081 apply   0.00000000000000000000000000000001E-6143   -> #00004000000000000000000000000001      Subnormal

+decq082 apply   #00004000000000000000000000000001          -> 1E-6175                Subnormal

+decq083 apply   0.000000000000000000000000000000001E-6143  -> #00000000000000000000000000000001      Subnormal

+decq084 apply   #00000000000000000000000000000001          -> 1E-6176                 Subnormal

+

+-- underflows cannot be tested for simple copies, check edge cases

+decq090 apply   1e-6176                  -> #00000000000000000000000000000001  Subnormal

+decq100 apply   999999999999999999999999999999999e-6176 -> #00000ff3fcff3fcff3fcff3fcff3fcff  Subnormal

+

+-- same again, negatives

+-- Nmax and similar

+decq122 apply  -9.999999999999999999999999999999999E+6144  -> #f7ffcff3fcff3fcff3fcff3fcff3fcff

+decq123 apply   #f7ffcff3fcff3fcff3fcff3fcff3fcff -> -9.999999999999999999999999999999999E+6144

+decq124 apply  -1.234567890123456789012345678901234E+6144 -> #c7ffd34b9c1e28e56f3c127177823534

+decq125 apply   #c7ffd34b9c1e28e56f3c127177823534 -> -1.234567890123456789012345678901234E+6144

+-- fold-downs (more below)

+decq130 apply  -1.23E+6144    -> #c7ffd300000000000000000000000000 Clamped

+decq131 apply   #c7ffd300000000000000000000000000       -> -1.230000000000000000000000000000000E+6144

+decq132 apply  -1E+6144       -> #c7ffc000000000000000000000000000 Clamped

+decq133 apply   #c7ffc000000000000000000000000000       -> -1.000000000000000000000000000000000E+6144

+

+decq151 apply  -12345                   -> #a20800000000000000000000000049c5

+decq152 apply   #a20800000000000000000000000049c5       -> -12345

+decq153 apply  -1234                    -> #a2080000000000000000000000000534

+decq154 apply   #a2080000000000000000000000000534       -> -1234

+decq155 apply  -123                     -> #a20800000000000000000000000000a3

+decq156 apply   #a20800000000000000000000000000a3       -> -123

+decq157 apply  -12                      -> #a2080000000000000000000000000012

+decq158 apply   #a2080000000000000000000000000012       -> -12

+decq159 apply  -1                       -> #a2080000000000000000000000000001

+decq160 apply   #a2080000000000000000000000000001       -> -1

+decq161 apply  -1.23                    -> #a20780000000000000000000000000a3

+decq162 apply   #a20780000000000000000000000000a3       -> -1.23

+decq163 apply  -123.45                  -> #a20780000000000000000000000049c5

+decq164 apply   #a20780000000000000000000000049c5       -> -123.45

+

+-- Nmin and below

+decq171 apply  -1E-6143                                    -> #80084000000000000000000000000001

+decq172 apply   #80084000000000000000000000000001          -> -1E-6143

+decq173 apply  -1.000000000000000000000000000000000E-6143  -> #84000000000000000000000000000000

+decq174 apply   #84000000000000000000000000000000          -> -1.000000000000000000000000000000000E-6143

+decq175 apply  -1.000000000000000000000000000000001E-6143  -> #84000000000000000000000000000001

+decq176 apply   #84000000000000000000000000000001          -> -1.000000000000000000000000000000001E-6143

+

+decq177 apply  -0.100000000000000000000000000000000E-6143  -> #80000800000000000000000000000000      Subnormal

+decq178 apply   #80000800000000000000000000000000          -> -1.00000000000000000000000000000000E-6144  Subnormal

+decq179 apply  -0.000000000000000000000000000000010E-6143  -> #80000000000000000000000000000010      Subnormal

+decq180 apply   #80000000000000000000000000000010          -> -1.0E-6175              Subnormal

+decq181 apply  -0.00000000000000000000000000000001E-6143   -> #80004000000000000000000000000001      Subnormal

+decq182 apply   #80004000000000000000000000000001          -> -1E-6175                Subnormal

+decq183 apply  -0.000000000000000000000000000000001E-6143  -> #80000000000000000000000000000001      Subnormal

+decq184 apply   #80000000000000000000000000000001          -> -1E-6176                 Subnormal

+

+-- underflow edge cases

+decq190 apply   -1e-6176                  -> #80000000000000000000000000000001  Subnormal

+decq200 apply   -999999999999999999999999999999999e-6176 -> #80000ff3fcff3fcff3fcff3fcff3fcff  Subnormal

+

+-- zeros

+decq400 apply   0E-8000                 -> #00000000000000000000000000000000  Clamped

+decq401 apply   0E-6177                 -> #00000000000000000000000000000000  Clamped

+decq402 apply   0E-6176                 -> #00000000000000000000000000000000

+decq403 apply   #00000000000000000000000000000000       -> 0E-6176

+decq404 apply   0.000000000000000000000000000000000E-6143  -> #00000000000000000000000000000000

+decq405 apply   #00000000000000000000000000000000       -> 0E-6176

+decq406 apply   0E-2                    -> #22078000000000000000000000000000

+decq407 apply   #22078000000000000000000000000000       -> 0.00

+decq408 apply   0                       -> #22080000000000000000000000000000

+decq409 apply   #22080000000000000000000000000000       -> 0

+decq410 apply   0E+3                    -> #2208c000000000000000000000000000

+decq411 apply   #2208c000000000000000000000000000       -> 0E+3

+decq412 apply   0E+6111                 -> #43ffc000000000000000000000000000

+decq413 apply   #43ffc000000000000000000000000000       -> 0E+6111

+-- clamped zeros...

+decq414 apply   0E+6112                 -> #43ffc000000000000000000000000000  Clamped

+decq415 apply   #43ffc000000000000000000000000000       -> 0E+6111

+decq416 apply   0E+6144                 -> #43ffc000000000000000000000000000  Clamped

+decq417 apply   #43ffc000000000000000000000000000       -> 0E+6111

+decq418 apply   0E+8000                 -> #43ffc000000000000000000000000000  Clamped

+decq419 apply   #43ffc000000000000000000000000000       -> 0E+6111

+

+-- negative zeros

+decq420 apply  -0E-8000                 -> #80000000000000000000000000000000  Clamped

+decq421 apply  -0E-6177                 -> #80000000000000000000000000000000  Clamped

+decq422 apply  -0E-6176                 -> #80000000000000000000000000000000

+decq423 apply   #80000000000000000000000000000000       -> -0E-6176

+decq424 apply  -0.000000000000000000000000000000000E-6143  -> #80000000000000000000000000000000

+decq425 apply   #80000000000000000000000000000000       -> -0E-6176

+decq426 apply  -0E-2                    -> #a2078000000000000000000000000000

+decq427 apply   #a2078000000000000000000000000000       -> -0.00

+decq428 apply  -0                       -> #a2080000000000000000000000000000

+decq429 apply   #a2080000000000000000000000000000       -> -0

+decq430 apply  -0E+3                    -> #a208c000000000000000000000000000

+decq431 apply   #a208c000000000000000000000000000       -> -0E+3

+decq432 apply  -0E+6111                 -> #c3ffc000000000000000000000000000

+decq433 apply   #c3ffc000000000000000000000000000       -> -0E+6111

+-- clamped zeros...

+decq434 apply  -0E+6112                 -> #c3ffc000000000000000000000000000  Clamped

+decq435 apply   #c3ffc000000000000000000000000000       -> -0E+6111

+decq436 apply  -0E+6144                 -> #c3ffc000000000000000000000000000  Clamped

+decq437 apply   #c3ffc000000000000000000000000000       -> -0E+6111

+decq438 apply  -0E+8000                 -> #c3ffc000000000000000000000000000  Clamped

+decq439 apply   #c3ffc000000000000000000000000000       -> -0E+6111

+

+-- exponent lengths

+decq440 apply   #22080000000000000000000000000007       -> 7

+decq441 apply   7 -> #22080000000000000000000000000007

+decq442 apply   #220a4000000000000000000000000007       -> 7E+9

+decq443 apply   7E+9 -> #220a4000000000000000000000000007

+decq444 apply   #2220c000000000000000000000000007       -> 7E+99

+decq445 apply   7E+99 -> #2220c000000000000000000000000007

+decq446 apply   #2301c000000000000000000000000007       -> 7E+999

+decq447 apply   7E+999 -> #2301c000000000000000000000000007

+decq448 apply   #43e3c000000000000000000000000007       -> 7E+5999

+decq449 apply   7E+5999 -> #43e3c000000000000000000000000007

+

+-- Specials

+decq500 apply   Infinity                          -> #78000000000000000000000000000000

+decq501 apply   #78787878787878787878787878787878 -> #78000000000000000000000000000000

+decq502 apply   #78000000000000000000000000000000 -> Infinity

+decq503 apply   #79797979797979797979797979797979 -> #78000000000000000000000000000000

+decq504 apply   #79000000000000000000000000000000 -> Infinity

+decq505 apply   #7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #78000000000000000000000000000000

+decq506 apply   #7a000000000000000000000000000000 -> Infinity

+decq507 apply   #7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #78000000000000000000000000000000

+decq508 apply   #7b000000000000000000000000000000 -> Infinity

+

+decq509 apply   NaN                               -> #7c000000000000000000000000000000

+decq510 apply   #7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #7c003c7c7c7c7c7c7c7c7c7c7c7c7c7c

+decq511 apply   #7c000000000000000000000000000000 -> NaN

+decq512 apply   #7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #7c003d7d7d7d7d7d7d7d7d7d7d7d7d7d

+decq513 apply   #7d000000000000000000000000000000 -> NaN

+decq514 apply   #7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #7e003e7e7c7e7e7e7e7c7e7e7e7e7c7e

+decq515 apply   #7e000000000000000000000000000000 -> sNaN

+decq516 apply   #7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #7e003f7f7c7f7f7f7f7c7f7f7f7f7c7f

+decq517 apply   #7f000000000000000000000000000000 -> sNaN

+decq518 apply   #7fffffffffffffffffffffffffffffff -> sNaN999999999999999999999999999999999

+decq519 apply   #7fffffffffffffffffffffffffffffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff

+

+decq520 apply   -Infinity                         -> #f8000000000000000000000000000000

+decq521 apply   #f8787878787878787878787878787878 -> #f8000000000000000000000000000000

+decq522 apply   #f8000000000000000000000000000000 -> -Infinity

+decq523 apply   #f9797979797979797979797979797979 -> #f8000000000000000000000000000000

+decq524 apply   #f9000000000000000000000000000000 -> -Infinity

+decq525 apply   #fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #f8000000000000000000000000000000

+decq526 apply   #fa000000000000000000000000000000 -> -Infinity

+decq527 apply   #fb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #f8000000000000000000000000000000

+decq528 apply   #fb000000000000000000000000000000 -> -Infinity

+

+decq529 apply   -NaN                              -> #fc000000000000000000000000000000

+decq530 apply   #fc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #fc003c7c7c7c7c7c7c7c7c7c7c7c7c7c

+decq531 apply   #fc000000000000000000000000000000 -> -NaN

+decq532 apply   #fd7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #fc003d7d7d7d7d7d7d7d7d7d7d7d7d7d

+decq533 apply   #fd000000000000000000000000000000 -> -NaN

+decq534 apply   #fe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #fe003e7e7c7e7e7e7e7c7e7e7e7e7c7e

+decq535 apply   #fe000000000000000000000000000000 -> -sNaN

+decq536 apply   #ff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #fe003f7f7c7f7f7f7f7c7f7f7f7f7c7f

+decq537 apply   #ff000000000000000000000000000000 -> -sNaN

+decq538 apply   #ffffffffffffffffffffffffffffffff -> -sNaN999999999999999999999999999999999

+decq539 apply   #ffffffffffffffffffffffffffffffff -> #fe000ff3fcff3fcff3fcff3fcff3fcff

+

+decq540 apply   NaN               -> #7c000000000000000000000000000000

+decq541 apply   NaN0              -> #7c000000000000000000000000000000

+decq542 apply   NaN1              -> #7c000000000000000000000000000001

+decq543 apply   NaN12             -> #7c000000000000000000000000000012

+decq544 apply   NaN79             -> #7c000000000000000000000000000079

+decq545 apply   NaN12345          -> #7c0000000000000000000000000049c5

+decq546 apply   NaN123456         -> #7c000000000000000000000000028e56

+decq547 apply   NaN799799         -> #7c0000000000000000000000000f7fdf

+decq548 apply   NaN799799799799799799799799799799799  -> #7c003dff7fdff7fdff7fdff7fdff7fdf

+decq549 apply   NaN999999999999999999999999999999999  -> #7c000ff3fcff3fcff3fcff3fcff3fcff

+decq550 apply     9999999999999999999999999999999999  -> #6e080ff3fcff3fcff3fcff3fcff3fcff

+

+-- fold-down full sequence

+decq601 apply   1E+6144                 -> #47ffc000000000000000000000000000 Clamped

+decq602 apply   #47ffc000000000000000000000000000       -> 1.000000000000000000000000000000000E+6144

+decq603 apply   1E+6143                 -> #43ffc800000000000000000000000000 Clamped

+decq604 apply   #43ffc800000000000000000000000000       -> 1.00000000000000000000000000000000E+6143

+decq605 apply   1E+6142                 -> #43ffc100000000000000000000000000 Clamped

+decq606 apply   #43ffc100000000000000000000000000       -> 1.0000000000000000000000000000000E+6142

+decq607 apply   1E+6141                 -> #43ffc010000000000000000000000000 Clamped

+decq608 apply   #43ffc010000000000000000000000000       -> 1.000000000000000000000000000000E+6141

+decq609 apply   1E+6140                 -> #43ffc002000000000000000000000000 Clamped

+decq610 apply   #43ffc002000000000000000000000000       -> 1.00000000000000000000000000000E+6140

+decq611 apply   1E+6139                 -> #43ffc000400000000000000000000000 Clamped

+decq612 apply   #43ffc000400000000000000000000000       -> 1.0000000000000000000000000000E+6139

+decq613 apply   1E+6138                 -> #43ffc000040000000000000000000000 Clamped

+decq614 apply   #43ffc000040000000000000000000000       -> 1.000000000000000000000000000E+6138

+decq615 apply   1E+6137                 -> #43ffc000008000000000000000000000 Clamped

+decq616 apply   #43ffc000008000000000000000000000       -> 1.00000000000000000000000000E+6137

+decq617 apply   1E+6136                 -> #43ffc000001000000000000000000000 Clamped

+decq618 apply   #43ffc000001000000000000000000000       -> 1.0000000000000000000000000E+6136

+decq619 apply   1E+6135                 -> #43ffc000000100000000000000000000 Clamped

+decq620 apply   #43ffc000000100000000000000000000       -> 1.000000000000000000000000E+6135

+decq621 apply   1E+6134                 -> #43ffc000000020000000000000000000 Clamped

+decq622 apply   #43ffc000000020000000000000000000       -> 1.00000000000000000000000E+6134

+decq623 apply   1E+6133                 -> #43ffc000000004000000000000000000 Clamped

+decq624 apply   #43ffc000000004000000000000000000       -> 1.0000000000000000000000E+6133

+decq625 apply   1E+6132                 -> #43ffc000000000400000000000000000 Clamped

+decq626 apply   #43ffc000000000400000000000000000       -> 1.000000000000000000000E+6132

+decq627 apply   1E+6131                 -> #43ffc000000000080000000000000000 Clamped

+decq628 apply   #43ffc000000000080000000000000000       -> 1.00000000000000000000E+6131

+decq629 apply   1E+6130                 -> #43ffc000000000010000000000000000 Clamped

+decq630 apply   #43ffc000000000010000000000000000       -> 1.0000000000000000000E+6130

+decq631 apply   1E+6129                 -> #43ffc000000000001000000000000000 Clamped

+decq632 apply   #43ffc000000000001000000000000000       -> 1.000000000000000000E+6129

+decq633 apply   1E+6128                 -> #43ffc000000000000200000000000000 Clamped

+decq634 apply   #43ffc000000000000200000000000000       -> 1.00000000000000000E+6128

+decq635 apply   1E+6127                 -> #43ffc000000000000040000000000000 Clamped

+decq636 apply   #43ffc000000000000040000000000000       -> 1.0000000000000000E+6127

+decq637 apply   1E+6126                 -> #43ffc000000000000004000000000000 Clamped

+decq638 apply   #43ffc000000000000004000000000000       -> 1.000000000000000E+6126

+decq639 apply   1E+6125                 -> #43ffc000000000000000800000000000 Clamped

+decq640 apply   #43ffc000000000000000800000000000       -> 1.00000000000000E+6125

+decq641 apply   1E+6124                 -> #43ffc000000000000000100000000000 Clamped

+decq642 apply   #43ffc000000000000000100000000000       -> 1.0000000000000E+6124

+decq643 apply   1E+6123                 -> #43ffc000000000000000010000000000 Clamped

+decq644 apply   #43ffc000000000000000010000000000       -> 1.000000000000E+6123

+decq645 apply   1E+6122                 -> #43ffc000000000000000002000000000 Clamped

+decq646 apply   #43ffc000000000000000002000000000       -> 1.00000000000E+6122

+decq647 apply   1E+6121                 -> #43ffc000000000000000000400000000 Clamped

+decq648 apply   #43ffc000000000000000000400000000       -> 1.0000000000E+6121

+decq649 apply   1E+6120                 -> #43ffc000000000000000000040000000 Clamped

+decq650 apply   #43ffc000000000000000000040000000       -> 1.000000000E+6120

+decq651 apply   1E+6119                 -> #43ffc000000000000000000008000000 Clamped

+decq652 apply   #43ffc000000000000000000008000000       -> 1.00000000E+6119

+decq653 apply   1E+6118                 -> #43ffc000000000000000000001000000 Clamped

+decq654 apply   #43ffc000000000000000000001000000       -> 1.0000000E+6118

+decq655 apply   1E+6117                 -> #43ffc000000000000000000000100000 Clamped

+decq656 apply   #43ffc000000000000000000000100000       -> 1.000000E+6117

+decq657 apply   1E+6116                 -> #43ffc000000000000000000000020000 Clamped

+decq658 apply   #43ffc000000000000000000000020000       -> 1.00000E+6116

+decq659 apply   1E+6115                 -> #43ffc000000000000000000000004000 Clamped

+decq660 apply   #43ffc000000000000000000000004000       -> 1.0000E+6115

+decq661 apply   1E+6114                 -> #43ffc000000000000000000000000400 Clamped

+decq662 apply   #43ffc000000000000000000000000400       -> 1.000E+6114

+decq663 apply   1E+6113                 -> #43ffc000000000000000000000000080 Clamped

+decq664 apply   #43ffc000000000000000000000000080       -> 1.00E+6113

+decq665 apply   1E+6112                 -> #43ffc000000000000000000000000010 Clamped

+decq666 apply   #43ffc000000000000000000000000010       -> 1.0E+6112

+decq667 apply   1E+6111                 -> #43ffc000000000000000000000000001

+decq668 apply   #43ffc000000000000000000000000001       -> 1E+6111

+decq669 apply   1E+6110                 -> #43ff8000000000000000000000000001

+decq670 apply   #43ff8000000000000000000000000001       -> 1E+6110

+

+-- Selected DPD codes

+decq700 apply   #22080000000000000000000000000000       -> 0

+decq701 apply   #22080000000000000000000000000009       -> 9

+decq702 apply   #22080000000000000000000000000010       -> 10

+decq703 apply   #22080000000000000000000000000019       -> 19

+decq704 apply   #22080000000000000000000000000020       -> 20

+decq705 apply   #22080000000000000000000000000029       -> 29

+decq706 apply   #22080000000000000000000000000030       -> 30

+decq707 apply   #22080000000000000000000000000039       -> 39

+decq708 apply   #22080000000000000000000000000040       -> 40

+decq709 apply   #22080000000000000000000000000049       -> 49

+decq710 apply   #22080000000000000000000000000050       -> 50

+decq711 apply   #22080000000000000000000000000059       -> 59

+decq712 apply   #22080000000000000000000000000060       -> 60

+decq713 apply   #22080000000000000000000000000069       -> 69

+decq714 apply   #22080000000000000000000000000070       -> 70

+decq715 apply   #22080000000000000000000000000071       -> 71

+decq716 apply   #22080000000000000000000000000072       -> 72

+decq717 apply   #22080000000000000000000000000073       -> 73

+decq718 apply   #22080000000000000000000000000074       -> 74

+decq719 apply   #22080000000000000000000000000075       -> 75

+decq720 apply   #22080000000000000000000000000076       -> 76

+decq721 apply   #22080000000000000000000000000077       -> 77

+decq722 apply   #22080000000000000000000000000078       -> 78

+decq723 apply   #22080000000000000000000000000079       -> 79

+

+decq730 apply   #2208000000000000000000000000029e       -> 994

+decq731 apply   #2208000000000000000000000000029f       -> 995

+decq732 apply   #220800000000000000000000000002a0       -> 520

+decq733 apply   #220800000000000000000000000002a1       -> 521

+

+-- DPD: one of each of the huffman groups

+decq740 apply   #220800000000000000000000000003f7       -> 777

+decq741 apply   #220800000000000000000000000003f8       -> 778

+decq742 apply   #220800000000000000000000000003eb       -> 787

+decq743 apply   #2208000000000000000000000000037d       -> 877

+decq744 apply   #2208000000000000000000000000039f       -> 997

+decq745 apply   #220800000000000000000000000003bf       -> 979

+decq746 apply   #220800000000000000000000000003df       -> 799

+decq747 apply   #2208000000000000000000000000006e       -> 888

+

+

+-- DPD all-highs cases (includes the 24 redundant codes)

+decq750 apply   #2208000000000000000000000000006e       -> 888

+decq751 apply   #2208000000000000000000000000016e       -> 888

+decq752 apply   #2208000000000000000000000000026e       -> 888

+decq753 apply   #2208000000000000000000000000036e       -> 888

+decq754 apply   #2208000000000000000000000000006f       -> 889

+decq755 apply   #2208000000000000000000000000016f       -> 889

+decq756 apply   #2208000000000000000000000000026f       -> 889

+decq757 apply   #2208000000000000000000000000036f       -> 889

+

+decq760 apply   #2208000000000000000000000000007e       -> 898

+decq761 apply   #2208000000000000000000000000017e       -> 898

+decq762 apply   #2208000000000000000000000000027e       -> 898

+decq763 apply   #2208000000000000000000000000037e       -> 898

+decq764 apply   #2208000000000000000000000000007f       -> 899

+decq765 apply   #2208000000000000000000000000017f       -> 899

+decq766 apply   #2208000000000000000000000000027f       -> 899

+decq767 apply   #2208000000000000000000000000037f       -> 899

+

+decq770 apply   #220800000000000000000000000000ee       -> 988

+decq771 apply   #220800000000000000000000000001ee       -> 988

+decq772 apply   #220800000000000000000000000002ee       -> 988

+decq773 apply   #220800000000000000000000000003ee       -> 988

+decq774 apply   #220800000000000000000000000000ef       -> 989

+decq775 apply   #220800000000000000000000000001ef       -> 989

+decq776 apply   #220800000000000000000000000002ef       -> 989

+decq777 apply   #220800000000000000000000000003ef       -> 989

+

+decq780 apply   #220800000000000000000000000000fe       -> 998

+decq781 apply   #220800000000000000000000000001fe       -> 998

+decq782 apply   #220800000000000000000000000002fe       -> 998

+decq783 apply   #220800000000000000000000000003fe       -> 998

+decq784 apply   #220800000000000000000000000000ff       -> 999

+decq785 apply   #220800000000000000000000000001ff       -> 999

+decq786 apply   #220800000000000000000000000002ff       -> 999

+decq787 apply   #220800000000000000000000000003ff       -> 999

+

+-- Miscellaneous (testers' queries, etc.)

+

+decq790 apply   #2208000000000000000000000000c000       -> 30000

+decq791 apply   #22080000000000000000000000007800       -> 890000

+decq792 apply   30000 -> #2208000000000000000000000000c000

+decq793 apply   890000 -> #22080000000000000000000000007800

+

+-- values around [u]int32 edges (zeros done earlier)

+decq800 apply -2147483646  -> #a208000000000000000000008c78af46

+decq801 apply -2147483647  -> #a208000000000000000000008c78af47

+decq802 apply -2147483648  -> #a208000000000000000000008c78af48

+decq803 apply -2147483649  -> #a208000000000000000000008c78af49

+decq804 apply  2147483646  -> #2208000000000000000000008c78af46

+decq805 apply  2147483647  -> #2208000000000000000000008c78af47

+decq806 apply  2147483648  -> #2208000000000000000000008c78af48

+decq807 apply  2147483649  -> #2208000000000000000000008c78af49

+decq808 apply  4294967294  -> #22080000000000000000000115afb55a

+decq809 apply  4294967295  -> #22080000000000000000000115afb55b

+decq810 apply  4294967296  -> #22080000000000000000000115afb57a

+decq811 apply  4294967297  -> #22080000000000000000000115afb57b

+

+decq820 apply  #a208000000000000000000008c78af46 -> -2147483646

+decq821 apply  #a208000000000000000000008c78af47 -> -2147483647

+decq822 apply  #a208000000000000000000008c78af48 -> -2147483648

+decq823 apply  #a208000000000000000000008c78af49 -> -2147483649

+decq824 apply  #2208000000000000000000008c78af46 ->  2147483646

+decq825 apply  #2208000000000000000000008c78af47 ->  2147483647

+decq826 apply  #2208000000000000000000008c78af48 ->  2147483648

+decq827 apply  #2208000000000000000000008c78af49 ->  2147483649

+decq828 apply  #22080000000000000000000115afb55a ->  4294967294

+decq829 apply  #22080000000000000000000115afb55b ->  4294967295

+decq830 apply  #22080000000000000000000115afb57a ->  4294967296

+decq831 apply  #22080000000000000000000115afb57b ->  4294967297

+

+-- VG testcase

+decq840 apply    #2080000000000000F294000000172636 -> 8.81125000000001349436E-1548

+decq841 apply    #20800000000000008000000000000000 -> 8.000000000000000000E-1550

+decq842 apply    #1EF98490000000010F6E4E0000000000 -> 7.049000000000010795488000000000000E-3097

+decq843 multiply #20800000000000008000000000000000 #2080000000000000F294000000172636 -> #1EF98490000000010F6E4E0000000000 Rounded

+

diff --git a/Lib/test/decimaltestdata/dqFMA.decTest b/Lib/test/decimaltestdata/dqFMA.decTest
new file mode 100644
index 0000000..f68fdf9
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqFMA.decTest
@@ -0,0 +1,1786 @@
+------------------------------------------------------------------------

+-- dqFMA.decTest -- decQuad Fused Multiply Add                        --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- These tests comprese three parts:

+--   1. Sanity checks and other three-operand tests (especially those

+--      where the fused operation makes a difference)

+--   2. Multiply tests (third operand is neutral zero [0E+emax])

+--   3. Addition tests (first operand is 1)

+-- The multiply and addition tests are extensive because FMA may have

+-- its own dedicated multiplication or addition routine(s), and they

+-- also inherently check the left-to-right properties.

+

+-- Sanity checks

+dqfma0001 fma  1   1   1 ->   2

+dqfma0002 fma  1   1   2 ->   3

+dqfma0003 fma  2   2   3 ->   7

+dqfma0004 fma  9   9   9 ->  90

+dqfma0005 fma -1   1   1 ->   0

+dqfma0006 fma -1   1   2 ->   1

+dqfma0007 fma -2   2   3 ->  -1

+dqfma0008 fma -9   9   9 -> -72

+dqfma0011 fma  1  -1   1 ->   0

+dqfma0012 fma  1  -1   2 ->   1

+dqfma0013 fma  2  -2   3 ->  -1

+dqfma0014 fma  9  -9   9 -> -72

+dqfma0015 fma  1   1  -1 ->   0

+dqfma0016 fma  1   1  -2 ->  -1

+dqfma0017 fma  2   2  -3 ->   1

+dqfma0018 fma  9   9  -9 ->  72

+

+-- non-integer exacts

+dqfma0100  fma    25.2   63.6   -438  ->  1164.72

+dqfma0101  fma   0.301  0.380    334  ->  334.114380

+dqfma0102  fma    49.2   -4.8   23.3  ->  -212.86

+dqfma0103  fma    4.22  0.079  -94.6  ->  -94.26662

+dqfma0104  fma     903  0.797  0.887  ->  720.578

+dqfma0105  fma    6.13   -161   65.9  ->  -921.03

+dqfma0106  fma    28.2    727   5.45  ->  20506.85

+dqfma0107  fma       4    605    688  ->  3108

+dqfma0108  fma    93.3   0.19  0.226  ->  17.953

+dqfma0109  fma   0.169   -341   5.61  ->  -52.019

+dqfma0110  fma   -72.2     30  -51.2  ->  -2217.2

+dqfma0111  fma  -0.409     13   20.4  ->  15.083

+dqfma0112  fma     317   77.0   19.0  ->  24428.0

+dqfma0113  fma      47   6.58   1.62  ->  310.88

+dqfma0114  fma    1.36  0.984  0.493  ->  1.83124

+dqfma0115  fma    72.7    274   1.56  ->  19921.36

+dqfma0116  fma     335    847     83  ->  283828

+dqfma0117  fma     666  0.247   25.4  ->  189.902

+dqfma0118  fma   -3.87   3.06   78.0  ->  66.1578

+dqfma0119  fma   0.742    192   35.6  ->  178.064

+dqfma0120  fma   -91.6   5.29  0.153  ->  -484.411

+

+-- cases where result is different from separate multiply + add; each

+-- is preceded by the result of unfused multiply and add

+-- [this is about 20% of all similar  cases in general]

+--                                                                                                            ->  4.500119002100000209469729375698778E+38

+dqfma0202  fma       68537985861355864457.5694      6565875762972086605.85969       35892634447236753.172812  ->  4.500119002100000209469729375698779E+38 Inexact Rounded

+--                                                                                                            ->  5.996248469584594346858881620185514E+41

+dqfma0208  fma          89261822344727628571.9      6717595845654131383336.89      5061036497288796076266.11  ->  5.996248469584594346858881620185513E+41 Inexact Rounded

+--                                                                                                            ->  1.899242968678256924021594770874070E+34

+dqfma0210  fma       320506237232448685.495971       59257597764017967.984448      3205615239077711589912.85  ->  1.899242968678256924021594770874071E+34 Inexact Rounded

+--                                                                                                            ->  7.078596978842809537929699954860309E+37

+dqfma0215  fma        220247843259112263.17995       321392340287987979002.80        47533279819997167655440  ->  7.078596978842809537929699954860308E+37 Inexact Rounded

+--                                                                                                            ->  1.224955667581427559754106862350743E+37

+dqfma0226  fma       23880729790368880412.1449       512947333827064719.55407      217117438419590824502.963  ->  1.224955667581427559754106862350744E+37 Inexact Rounded

+--                                                                                                            ->  -2.530094043253148806272276368579144E+42

+dqfma0229  fma        2539892357016099706.4126      -996142232667504817717435       53682082598315949425.937  ->  -2.530094043253148806272276368579143E+42 Inexact Rounded

+--                                                                                                            ->  1.713387085759711954319391412788454E+37

+dqfma0233  fma        4546339491341624464.0804            3768717864169205581       83578980278690395184.620  ->  1.713387085759711954319391412788453E+37 Inexact Rounded

+--                                                                                                            ->  4.062275663405823716411579117771547E+35

+dqfma0235  fma        409242119433816131.42253      992633815166741501.477249        70179636544416756129546  ->  4.062275663405823716411579117771548E+35 Inexact Rounded

+--                                                                                                            ->  6.002604327732568490562249875306823E+47

+dqfma0258  fma        817941336593541742159684       733867339769310729266598      78563844650942419311830.8  ->  6.002604327732568490562249875306822E+47 Inexact Rounded

+--                                                                                                            ->  -2.027022514381452197510103395283874E+39

+dqfma0264  fma       387617310169161270.737532     -5229442703414956061216.62      57665666816652967150473.5  ->  -2.027022514381452197510103395283873E+39 Inexact Rounded

+--                                                                                                            ->  -7.856525039803554001144089842730361E+37

+dqfma0267  fma      -847655845720565274701.210        92685316564117739.83984      22780950041376424429.5686  ->  -7.856525039803554001144089842730360E+37 Inexact Rounded

+--                                                                                                            ->  1.695515562011520746125607502237559E+38

+dqfma0268  fma          21590290365127685.3675       7853139227576541379426.8       -3275859437236180.761544  ->  1.695515562011520746125607502237558E+38 Inexact Rounded

+--                                                                                                            ->  -8.448422935783289219748115038014710E+38

+dqfma0269  fma      -974320636272862697.971586      867109103641860247440.756        -9775170775902454762.98  ->  -8.448422935783289219748115038014709E+38 Inexact Rounded

+

+-- Cases where multiply would overflow or underflow if separate

+dqfma0300  fma   9e+6144    10   0         -> Infinity  Overflow Inexact Rounded

+dqfma0301  fma   1e+6144    10   0         -> Infinity  Overflow Inexact Rounded

+dqfma0302  fma   1e+6144    10   -1e+6144  -> 9.000000000000000000000000000000000E+6144 Clamped

+dqfma0303  fma   1e+6144    10   -9e+6144  -> 1.000000000000000000000000000000000E+6144 Clamped

+-- subnormal etc.

+dqfma0305  fma   1e-6176    0.1  0         -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqfma0306  fma   1e-6176    0.1  1         -> 1.000000000000000000000000000000000 Inexact Rounded

+dqfma0307  fma   1e-6176    0.1  1e-6176   -> 1E-6176 Underflow Subnormal Inexact Rounded

+

+-- Infinite combinations

+dqfma0800 fma  Inf   Inf   Inf    ->  Infinity

+dqfma0801 fma  Inf   Inf  -Inf    ->  NaN Invalid_operation

+dqfma0802 fma  Inf  -Inf   Inf    ->  NaN Invalid_operation

+dqfma0803 fma  Inf  -Inf  -Inf    -> -Infinity

+dqfma0804 fma -Inf   Inf   Inf    ->  NaN Invalid_operation

+dqfma0805 fma -Inf   Inf  -Inf    -> -Infinity

+dqfma0806 fma -Inf  -Inf   Inf    ->  Infinity

+dqfma0807 fma -Inf  -Inf  -Inf    ->  NaN Invalid_operation

+

+-- Triple NaN propagation

+dqfma0900 fma  NaN2  NaN3  NaN5   ->  NaN2

+dqfma0901 fma  0     NaN3  NaN5   ->  NaN3

+dqfma0902 fma  0     0     NaN5   ->  NaN5

+-- first sNaN wins (consider qNaN from earlier sNaN being

+-- overridden by an sNaN in third operand)

+dqfma0903 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation

+dqfma0904 fma  0     sNaN2 sNaN3  ->  NaN2 Invalid_operation

+dqfma0905 fma  0     0     sNaN3  ->  NaN3 Invalid_operation

+dqfma0906 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation

+dqfma0907 fma  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation

+dqfma0908 fma  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation

+

+-- MULTIPLICATION TESTS ------------------------------------------------

+rounding:    half_even

+

+-- sanity checks

+dqfma2000 fma  2      2   0e+6144  -> 4

+dqfma2001 fma  2      3   0e+6144  -> 6

+dqfma2002 fma  5      1   0e+6144  -> 5

+dqfma2003 fma  5      2   0e+6144  -> 10

+dqfma2004 fma  1.20   2   0e+6144  -> 2.40

+dqfma2005 fma  1.20   0   0e+6144  -> 0.00

+dqfma2006 fma  1.20  -2   0e+6144  -> -2.40

+dqfma2007 fma  -1.20  2   0e+6144  -> -2.40

+dqfma2008 fma  -1.20  0   0e+6144  -> 0.00

+dqfma2009 fma  -1.20 -2   0e+6144  -> 2.40

+dqfma2010 fma  5.09 7.1   0e+6144  -> 36.139

+dqfma2011 fma  2.5    4   0e+6144  -> 10.0

+dqfma2012 fma  2.50   4   0e+6144  -> 10.00

+dqfma2013 fma  1.23456789 1.0000000000000000000000000000   0e+6144  -> 1.234567890000000000000000000000000 Rounded

+dqfma2015 fma  2.50   4   0e+6144  -> 10.00

+dqfma2016 fma   9.99999999999999999  9.99999999999999999   0e+6144  ->  99.99999999999999980000000000000000 Inexact Rounded

+dqfma2017 fma   9.99999999999999999 -9.99999999999999999   0e+6144  -> -99.99999999999999980000000000000000 Inexact Rounded

+dqfma2018 fma  -9.99999999999999999  9.99999999999999999   0e+6144  -> -99.99999999999999980000000000000000 Inexact Rounded

+dqfma2019 fma  -9.99999999999999999 -9.99999999999999999   0e+6144  ->  99.99999999999999980000000000000000 Inexact Rounded

+

+-- zeros, etc.

+dqfma2021 fma   0      0       0e+6144  ->  0

+dqfma2022 fma   0     -0       0e+6144  ->  0

+dqfma2023 fma  -0      0       0e+6144  ->  0

+dqfma2024 fma  -0     -0       0e+6144  ->  0

+dqfma2025 fma  -0.0   -0.0     0e+6144  ->  0.00

+dqfma2026 fma  -0.0   -0.0     0e+6144  ->  0.00

+dqfma2027 fma  -0.0   -0.0     0e+6144  ->  0.00

+dqfma2028 fma  -0.0   -0.0     0e+6144  ->  0.00

+dqfma2030 fma   5.00   1E-3    0e+6144  ->  0.00500

+dqfma2031 fma   00.00  0.000   0e+6144  ->  0.00000

+dqfma2032 fma   00.00  0E-3    0e+6144  ->  0.00000     -- rhs is 0

+dqfma2033 fma   0E-3   00.00   0e+6144  ->  0.00000     -- lhs is 0

+dqfma2034 fma  -5.00   1E-3    0e+6144  -> -0.00500

+dqfma2035 fma  -00.00  0.000   0e+6144  ->  0.00000

+dqfma2036 fma  -00.00  0E-3    0e+6144  ->  0.00000     -- rhs is 0

+dqfma2037 fma  -0E-3   00.00   0e+6144  ->  0.00000     -- lhs is 0

+dqfma2038 fma   5.00  -1E-3    0e+6144  -> -0.00500

+dqfma2039 fma   00.00 -0.000   0e+6144  ->  0.00000

+dqfma2040 fma   00.00 -0E-3    0e+6144  ->  0.00000     -- rhs is 0

+dqfma2041 fma   0E-3  -00.00   0e+6144  ->  0.00000     -- lhs is 0

+dqfma2042 fma  -5.00  -1E-3    0e+6144  ->  0.00500

+dqfma2043 fma  -00.00 -0.000   0e+6144  ->  0.00000

+dqfma2044 fma  -00.00 -0E-3    0e+6144  ->  0.00000     -- rhs is 0

+dqfma2045 fma  -0E-3  -00.00   0e+6144  ->  0.00000     -- lhs is 0

+

+-- examples from decarith

+dqfma2050 fma  1.20 3          0e+6144  -> 3.60

+dqfma2051 fma  7    3          0e+6144  -> 21

+dqfma2052 fma  0.9  0.8        0e+6144  -> 0.72

+dqfma2053 fma  0.9  -0         0e+6144  -> 0.0

+dqfma2054 fma  654321 654321   0e+6144  -> 428135971041

+

+dqfma2060 fma  123.45 1e7    0e+6144  ->  1.2345E+9

+dqfma2061 fma  123.45 1e8    0e+6144  ->  1.2345E+10

+dqfma2062 fma  123.45 1e+9   0e+6144  ->  1.2345E+11

+dqfma2063 fma  123.45 1e10   0e+6144  ->  1.2345E+12

+dqfma2064 fma  123.45 1e11   0e+6144  ->  1.2345E+13

+dqfma2065 fma  123.45 1e12   0e+6144  ->  1.2345E+14

+dqfma2066 fma  123.45 1e13   0e+6144  ->  1.2345E+15

+

+

+-- test some intermediate lengths

+--                    1234567890123456

+dqfma2080 fma  0.1 1230123456456789       0e+6144  -> 123012345645678.9

+dqfma2084 fma  0.1 1230123456456789       0e+6144  -> 123012345645678.9

+dqfma2090 fma  1230123456456789     0.1   0e+6144  -> 123012345645678.9

+dqfma2094 fma  1230123456456789     0.1   0e+6144  -> 123012345645678.9

+

+-- test some more edge cases and carries

+dqfma2101 fma  9 9     0e+6144  -> 81

+dqfma2102 fma  9 90     0e+6144  -> 810

+dqfma2103 fma  9 900     0e+6144  -> 8100

+dqfma2104 fma  9 9000     0e+6144  -> 81000

+dqfma2105 fma  9 90000     0e+6144  -> 810000

+dqfma2106 fma  9 900000     0e+6144  -> 8100000

+dqfma2107 fma  9 9000000     0e+6144  -> 81000000

+dqfma2108 fma  9 90000000     0e+6144  -> 810000000

+dqfma2109 fma  9 900000000     0e+6144  -> 8100000000

+dqfma2110 fma  9 9000000000     0e+6144  -> 81000000000

+dqfma2111 fma  9 90000000000     0e+6144  -> 810000000000

+dqfma2112 fma  9 900000000000     0e+6144  -> 8100000000000

+dqfma2113 fma  9 9000000000000     0e+6144  -> 81000000000000

+dqfma2114 fma  9 90000000000000     0e+6144  -> 810000000000000

+dqfma2115 fma  9 900000000000000     0e+6144  -> 8100000000000000

+--dqfma2116 fma  9 9000000000000000     0e+6144  -> 81000000000000000

+--dqfma2117 fma  9 90000000000000000     0e+6144  -> 810000000000000000

+--dqfma2118 fma  9 900000000000000000     0e+6144  -> 8100000000000000000

+--dqfma2119 fma  9 9000000000000000000     0e+6144  -> 81000000000000000000

+--dqfma2120 fma  9 90000000000000000000     0e+6144  -> 810000000000000000000

+--dqfma2121 fma  9 900000000000000000000     0e+6144  -> 8100000000000000000000

+--dqfma2122 fma  9 9000000000000000000000     0e+6144  -> 81000000000000000000000

+--dqfma2123 fma  9 90000000000000000000000     0e+6144  -> 810000000000000000000000

+-- test some more edge cases without carries

+dqfma2131 fma  3 3     0e+6144  -> 9

+dqfma2132 fma  3 30     0e+6144  -> 90

+dqfma2133 fma  3 300     0e+6144  -> 900

+dqfma2134 fma  3 3000     0e+6144  -> 9000

+dqfma2135 fma  3 30000     0e+6144  -> 90000

+dqfma2136 fma  3 300000     0e+6144  -> 900000

+dqfma2137 fma  3 3000000     0e+6144  -> 9000000

+dqfma2138 fma  3 30000000     0e+6144  -> 90000000

+dqfma2139 fma  3 300000000     0e+6144  -> 900000000

+dqfma2140 fma  3 3000000000     0e+6144  -> 9000000000

+dqfma2141 fma  3 30000000000     0e+6144  -> 90000000000

+dqfma2142 fma  3 300000000000     0e+6144  -> 900000000000

+dqfma2143 fma  3 3000000000000     0e+6144  -> 9000000000000

+dqfma2144 fma  3 30000000000000     0e+6144  -> 90000000000000

+dqfma2145 fma  3 300000000000000     0e+6144  -> 900000000000000

+dqfma2146 fma  3 3000000000000000     0e+6144  -> 9000000000000000

+dqfma2147 fma  3 30000000000000000     0e+6144  -> 90000000000000000

+dqfma2148 fma  3 300000000000000000     0e+6144  -> 900000000000000000

+dqfma2149 fma  3 3000000000000000000     0e+6144  -> 9000000000000000000

+dqfma2150 fma  3 30000000000000000000     0e+6144  -> 90000000000000000000

+dqfma2151 fma  3 300000000000000000000     0e+6144  -> 900000000000000000000

+dqfma2152 fma  3 3000000000000000000000     0e+6144  -> 9000000000000000000000

+dqfma2153 fma  3 30000000000000000000000     0e+6144  -> 90000000000000000000000

+

+dqfma2263 fma  30269.587755640502150977251770554 4.8046009735990873395936309640543   0e+6144  -> 145433.2908011933696719165119928296 Inexact Rounded

+

+-- test some edge cases with exact rounding

+dqfma2301 fma  900000000000000000 9     0e+6144  -> 8100000000000000000

+dqfma2302 fma  900000000000000000 90     0e+6144  -> 81000000000000000000

+dqfma2303 fma  900000000000000000 900     0e+6144  -> 810000000000000000000

+dqfma2304 fma  900000000000000000 9000     0e+6144  -> 8100000000000000000000

+dqfma2305 fma  900000000000000000 90000     0e+6144  -> 81000000000000000000000

+dqfma2306 fma  900000000000000000 900000     0e+6144  -> 810000000000000000000000

+dqfma2307 fma  900000000000000000 9000000     0e+6144  -> 8100000000000000000000000

+dqfma2308 fma  900000000000000000 90000000     0e+6144  -> 81000000000000000000000000

+dqfma2309 fma  900000000000000000 900000000     0e+6144  -> 810000000000000000000000000

+dqfma2310 fma  900000000000000000 9000000000     0e+6144  -> 8100000000000000000000000000

+dqfma2311 fma  900000000000000000 90000000000     0e+6144  -> 81000000000000000000000000000

+dqfma2312 fma  900000000000000000 900000000000     0e+6144  -> 810000000000000000000000000000

+dqfma2313 fma  900000000000000000 9000000000000     0e+6144  -> 8100000000000000000000000000000

+dqfma2314 fma  900000000000000000 90000000000000     0e+6144  -> 81000000000000000000000000000000

+dqfma2315 fma  900000000000000000 900000000000000     0e+6144  -> 810000000000000000000000000000000

+dqfma2316 fma  900000000000000000 9000000000000000     0e+6144  -> 8100000000000000000000000000000000

+dqfma2317 fma  9000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+34  Rounded

+dqfma2318 fma  90000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+35  Rounded

+dqfma2319 fma  900000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+36  Rounded

+dqfma2320 fma  9000000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+37  Rounded

+dqfma2321 fma  90000000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+38  Rounded

+dqfma2322 fma  900000000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+39  Rounded

+dqfma2323 fma  9000000000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+40  Rounded

+

+-- tryzeros cases

+dqfma2504  fma   0E-4260 1000E-4260    0e+6144  -> 0E-6176 Clamped

+dqfma2505  fma   100E+4260 0E+4260     0e+6144  -> 0E+6111 Clamped

+

+-- mixed with zeros

+dqfma2541 fma   0    -1       0e+6144  ->  0

+dqfma2542 fma  -0    -1       0e+6144  ->  0

+dqfma2543 fma   0     1       0e+6144  ->  0

+dqfma2544 fma  -0     1       0e+6144  ->  0

+dqfma2545 fma  -1     0       0e+6144  ->  0

+dqfma2546 fma  -1    -0       0e+6144  ->  0

+dqfma2547 fma   1     0       0e+6144  ->  0

+dqfma2548 fma   1    -0       0e+6144  ->  0

+

+dqfma2551 fma   0.0  -1       0e+6144  ->  0.0

+dqfma2552 fma  -0.0  -1       0e+6144  ->  0.0

+dqfma2553 fma   0.0   1       0e+6144  ->  0.0

+dqfma2554 fma  -0.0   1       0e+6144  ->  0.0

+dqfma2555 fma  -1.0   0       0e+6144  ->  0.0

+dqfma2556 fma  -1.0  -0       0e+6144  ->  0.0

+dqfma2557 fma   1.0   0       0e+6144  ->  0.0

+dqfma2558 fma   1.0  -0       0e+6144  ->  0.0

+

+dqfma2561 fma   0    -1.0     0e+6144  ->  0.0

+dqfma2562 fma  -0    -1.0     0e+6144  ->  0.0

+dqfma2563 fma   0     1.0     0e+6144  ->  0.0

+dqfma2564 fma  -0     1.0     0e+6144  ->  0.0

+dqfma2565 fma  -1     0.0     0e+6144  ->  0.0

+dqfma2566 fma  -1    -0.0     0e+6144  ->  0.0

+dqfma2567 fma   1     0.0     0e+6144  ->  0.0

+dqfma2568 fma   1    -0.0     0e+6144  ->  0.0

+

+dqfma2571 fma   0.0  -1.0     0e+6144  ->  0.00

+dqfma2572 fma  -0.0  -1.0     0e+6144  ->  0.00

+dqfma2573 fma   0.0   1.0     0e+6144  ->  0.00

+dqfma2574 fma  -0.0   1.0     0e+6144  ->  0.00

+dqfma2575 fma  -1.0   0.0     0e+6144  ->  0.00

+dqfma2576 fma  -1.0  -0.0     0e+6144  ->  0.00

+dqfma2577 fma   1.0   0.0     0e+6144  ->  0.00

+dqfma2578 fma   1.0  -0.0     0e+6144  ->  0.00

+dqfma2579 fma   1.0   0.0     0e+6144  ->  0.00

+dqfma2530 fma  -1.0  -0.0     0e+6144  ->  0.00

+dqfma2531 fma  -1.0   0.0     0e+6144  ->  0.00

+dqfma2532 fma   1.0  -0.0    -0e+6144  -> -0.00

+dqfma2533 fma   1.0   0.0    -0e+6144  ->  0.00

+dqfma2534 fma  -1.0  -0.0    -0e+6144  ->  0.00

+dqfma2535 fma  -1.0   0.0    -0e+6144  -> -0.00

+

+

+-- Specials

+dqfma2580 fma   Inf  -Inf     0e+6144  -> -Infinity

+dqfma2581 fma   Inf  -1000    0e+6144  -> -Infinity

+dqfma2582 fma   Inf  -1       0e+6144  -> -Infinity

+dqfma2583 fma   Inf  -0       0e+6144  ->  NaN  Invalid_operation

+dqfma2584 fma   Inf   0       0e+6144  ->  NaN  Invalid_operation

+dqfma2585 fma   Inf   1       0e+6144  ->  Infinity

+dqfma2586 fma   Inf   1000    0e+6144  ->  Infinity

+dqfma2587 fma   Inf   Inf     0e+6144  ->  Infinity

+dqfma2588 fma  -1000  Inf     0e+6144  -> -Infinity

+dqfma2589 fma  -Inf   Inf     0e+6144  -> -Infinity

+dqfma2590 fma  -1     Inf     0e+6144  -> -Infinity

+dqfma2591 fma  -0     Inf     0e+6144  ->  NaN  Invalid_operation

+dqfma2592 fma   0     Inf     0e+6144  ->  NaN  Invalid_operation

+dqfma2593 fma   1     Inf     0e+6144  ->  Infinity

+dqfma2594 fma   1000  Inf     0e+6144  ->  Infinity

+dqfma2595 fma   Inf   Inf     0e+6144  ->  Infinity

+

+dqfma2600 fma  -Inf  -Inf     0e+6144  ->  Infinity

+dqfma2601 fma  -Inf  -1000    0e+6144  ->  Infinity

+dqfma2602 fma  -Inf  -1       0e+6144  ->  Infinity

+dqfma2603 fma  -Inf  -0       0e+6144  ->  NaN  Invalid_operation

+dqfma2604 fma  -Inf   0       0e+6144  ->  NaN  Invalid_operation

+dqfma2605 fma  -Inf   1       0e+6144  -> -Infinity

+dqfma2606 fma  -Inf   1000    0e+6144  -> -Infinity

+dqfma2607 fma  -Inf   Inf     0e+6144  -> -Infinity

+dqfma2608 fma  -1000  Inf     0e+6144  -> -Infinity

+dqfma2609 fma  -Inf  -Inf     0e+6144  ->  Infinity

+dqfma2610 fma  -1    -Inf     0e+6144  ->  Infinity

+dqfma2611 fma  -0    -Inf     0e+6144  ->  NaN  Invalid_operation

+dqfma2612 fma   0    -Inf     0e+6144  ->  NaN  Invalid_operation

+dqfma2613 fma   1    -Inf     0e+6144  -> -Infinity

+dqfma2614 fma   1000 -Inf     0e+6144  -> -Infinity

+dqfma2615 fma   Inf  -Inf     0e+6144  -> -Infinity

+

+dqfma2621 fma   NaN -Inf      0e+6144  ->  NaN

+dqfma2622 fma   NaN -1000     0e+6144  ->  NaN

+dqfma2623 fma   NaN -1        0e+6144  ->  NaN

+dqfma2624 fma   NaN -0        0e+6144  ->  NaN

+dqfma2625 fma   NaN  0        0e+6144  ->  NaN

+dqfma2626 fma   NaN  1        0e+6144  ->  NaN

+dqfma2627 fma   NaN  1000     0e+6144  ->  NaN

+dqfma2628 fma   NaN  Inf      0e+6144  ->  NaN

+dqfma2629 fma   NaN  NaN      0e+6144  ->  NaN

+dqfma2630 fma  -Inf  NaN      0e+6144  ->  NaN

+dqfma2631 fma  -1000 NaN      0e+6144  ->  NaN

+dqfma2632 fma  -1    NaN      0e+6144  ->  NaN

+dqfma2633 fma  -0    NaN      0e+6144  ->  NaN

+dqfma2634 fma   0    NaN      0e+6144  ->  NaN

+dqfma2635 fma   1    NaN      0e+6144  ->  NaN

+dqfma2636 fma   1000 NaN      0e+6144  ->  NaN

+dqfma2637 fma   Inf  NaN      0e+6144  ->  NaN

+

+dqfma2641 fma   sNaN -Inf     0e+6144  ->  NaN  Invalid_operation

+dqfma2642 fma   sNaN -1000    0e+6144  ->  NaN  Invalid_operation

+dqfma2643 fma   sNaN -1       0e+6144  ->  NaN  Invalid_operation

+dqfma2644 fma   sNaN -0       0e+6144  ->  NaN  Invalid_operation

+dqfma2645 fma   sNaN  0       0e+6144  ->  NaN  Invalid_operation

+dqfma2646 fma   sNaN  1       0e+6144  ->  NaN  Invalid_operation

+dqfma2647 fma   sNaN  1000    0e+6144  ->  NaN  Invalid_operation

+dqfma2648 fma   sNaN  NaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2649 fma   sNaN sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2650 fma   NaN  sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2651 fma  -Inf  sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2652 fma  -1000 sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2653 fma  -1    sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2654 fma  -0    sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2655 fma   0    sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2656 fma   1    sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2657 fma   1000 sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2658 fma   Inf  sNaN     0e+6144  ->  NaN  Invalid_operation

+dqfma2659 fma   NaN  sNaN     0e+6144  ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqfma2661 fma   NaN9 -Inf     0e+6144  ->  NaN9

+dqfma2662 fma   NaN8  999     0e+6144  ->  NaN8

+dqfma2663 fma   NaN71 Inf     0e+6144  ->  NaN71

+dqfma2664 fma   NaN6  NaN5    0e+6144  ->  NaN6

+dqfma2665 fma  -Inf   NaN4    0e+6144  ->  NaN4

+dqfma2666 fma  -999   NaN33   0e+6144  ->  NaN33

+dqfma2667 fma   Inf   NaN2    0e+6144  ->  NaN2

+

+dqfma2671 fma   sNaN99 -Inf      0e+6144  ->  NaN99 Invalid_operation

+dqfma2672 fma   sNaN98 -11       0e+6144  ->  NaN98 Invalid_operation

+dqfma2673 fma   sNaN97  NaN      0e+6144  ->  NaN97 Invalid_operation

+dqfma2674 fma   sNaN16 sNaN94    0e+6144  ->  NaN16 Invalid_operation

+dqfma2675 fma   NaN95  sNaN93    0e+6144  ->  NaN93 Invalid_operation

+dqfma2676 fma  -Inf    sNaN92    0e+6144  ->  NaN92 Invalid_operation

+dqfma2677 fma   088    sNaN91    0e+6144  ->  NaN91 Invalid_operation

+dqfma2678 fma   Inf    sNaN90    0e+6144  ->  NaN90 Invalid_operation

+dqfma2679 fma   NaN    sNaN89    0e+6144  ->  NaN89 Invalid_operation

+

+dqfma2681 fma  -NaN9 -Inf     0e+6144  -> -NaN9

+dqfma2682 fma  -NaN8  999     0e+6144  -> -NaN8

+dqfma2683 fma  -NaN71 Inf     0e+6144  -> -NaN71

+dqfma2684 fma  -NaN6 -NaN5    0e+6144  -> -NaN6

+dqfma2685 fma  -Inf  -NaN4    0e+6144  -> -NaN4

+dqfma2686 fma  -999  -NaN33   0e+6144  -> -NaN33

+dqfma2687 fma   Inf  -NaN2    0e+6144  -> -NaN2

+

+dqfma2691 fma  -sNaN99 -Inf      0e+6144  -> -NaN99 Invalid_operation

+dqfma2692 fma  -sNaN98 -11       0e+6144  -> -NaN98 Invalid_operation

+dqfma2693 fma  -sNaN97  NaN      0e+6144  -> -NaN97 Invalid_operation

+dqfma2694 fma  -sNaN16 -sNaN94   0e+6144  -> -NaN16 Invalid_operation

+dqfma2695 fma  -NaN95  -sNaN93   0e+6144  -> -NaN93 Invalid_operation

+dqfma2696 fma  -Inf    -sNaN92   0e+6144  -> -NaN92 Invalid_operation

+dqfma2697 fma   088    -sNaN91   0e+6144  -> -NaN91 Invalid_operation

+dqfma2698 fma   Inf    -sNaN90   0e+6144  -> -NaN90 Invalid_operation

+dqfma2699 fma  -NaN    -sNaN89   0e+6144  -> -NaN89 Invalid_operation

+

+dqfma2701 fma  -NaN  -Inf     0e+6144  -> -NaN

+dqfma2702 fma  -NaN   999     0e+6144  -> -NaN

+dqfma2703 fma  -NaN   Inf     0e+6144  -> -NaN

+dqfma2704 fma  -NaN  -NaN     0e+6144  -> -NaN

+dqfma2705 fma  -Inf  -NaN0    0e+6144  -> -NaN

+dqfma2706 fma  -999  -NaN     0e+6144  -> -NaN

+dqfma2707 fma   Inf  -NaN     0e+6144  -> -NaN

+

+dqfma2711 fma  -sNaN   -Inf      0e+6144  -> -NaN Invalid_operation

+dqfma2712 fma  -sNaN   -11       0e+6144  -> -NaN Invalid_operation

+dqfma2713 fma  -sNaN00  NaN      0e+6144  -> -NaN Invalid_operation

+dqfma2714 fma  -sNaN   -sNaN     0e+6144  -> -NaN Invalid_operation

+dqfma2715 fma  -NaN    -sNaN     0e+6144  -> -NaN Invalid_operation

+dqfma2716 fma  -Inf    -sNaN     0e+6144  -> -NaN Invalid_operation

+dqfma2717 fma   088    -sNaN     0e+6144  -> -NaN Invalid_operation

+dqfma2718 fma   Inf    -sNaN     0e+6144  -> -NaN Invalid_operation

+dqfma2719 fma  -NaN    -sNaN     0e+6144  -> -NaN Invalid_operation

+

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

+-- signs

+dqfma2751 fma   1e+4277  1e+3311   0e+6144  ->  Infinity Overflow Inexact Rounded

+dqfma2752 fma   1e+4277 -1e+3311   0e+6144  -> -Infinity Overflow Inexact Rounded

+dqfma2753 fma  -1e+4277  1e+3311   0e+6144  -> -Infinity Overflow Inexact Rounded

+dqfma2754 fma  -1e+4277 -1e+3311   0e+6144  ->  Infinity Overflow Inexact Rounded

+dqfma2755 fma   1e-4277  1e-3311   0e+6144  ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqfma2756 fma   1e-4277 -1e-3311   0e+6144  -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqfma2757 fma  -1e-4277  1e-3311   0e+6144  -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqfma2758 fma  -1e-4277 -1e-3311   0e+6144  ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped

+

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

+dqfma2760 fma  1e-6069 1e-101   0e+6144  -> 1E-6170 Subnormal

+dqfma2761 fma  1e-6069 1e-102   0e+6144  -> 1E-6171 Subnormal

+dqfma2762 fma  1e-6069 1e-103   0e+6144  -> 1E-6172 Subnormal

+dqfma2763 fma  1e-6069 1e-104   0e+6144  -> 1E-6173 Subnormal

+dqfma2764 fma  1e-6069 1e-105   0e+6144  -> 1E-6174 Subnormal

+dqfma2765 fma  1e-6069 1e-106   0e+6144  -> 1E-6175 Subnormal

+dqfma2766 fma  1e-6069 1e-107   0e+6144  -> 1E-6176 Subnormal

+dqfma2767 fma  1e-6069 1e-108   0e+6144  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqfma2768 fma  1e-6069 1e-109   0e+6144  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqfma2769 fma  1e-6069 1e-110   0e+6144  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

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

+dqfma2770 fma  1e+40 1e+6101   0e+6144  -> 1.000000000000000000000000000000E+6141 Clamped

+dqfma2771 fma  1e+40 1e+6102   0e+6144  -> 1.0000000000000000000000000000000E+6142  Clamped

+dqfma2772 fma  1e+40 1e+6103   0e+6144  -> 1.00000000000000000000000000000000E+6143  Clamped

+dqfma2773 fma  1e+40 1e+6104   0e+6144  -> 1.000000000000000000000000000000000E+6144  Clamped

+dqfma2774 fma  1e+40 1e+6105   0e+6144  -> Infinity Overflow Inexact Rounded

+dqfma2775 fma  1e+40 1e+6106   0e+6144  -> Infinity Overflow Inexact Rounded

+dqfma2776 fma  1e+40 1e+6107   0e+6144  -> Infinity Overflow Inexact Rounded

+dqfma2777 fma  1e+40 1e+6108   0e+6144  -> Infinity Overflow Inexact Rounded

+dqfma2778 fma  1e+40 1e+6109   0e+6144  -> Infinity Overflow Inexact Rounded

+dqfma2779 fma  1e+40 1e+6110   0e+6144  -> Infinity Overflow Inexact Rounded

+

+dqfma2801 fma   1.0000E-6172  1       0e+6144  -> 1.0000E-6172 Subnormal

+dqfma2802 fma   1.000E-6172   1e-1    0e+6144  -> 1.000E-6173  Subnormal

+dqfma2803 fma   1.00E-6172    1e-2    0e+6144  -> 1.00E-6174   Subnormal

+dqfma2804 fma   1.0E-6172     1e-3    0e+6144  -> 1.0E-6175    Subnormal

+dqfma2805 fma   1.0E-6172     1e-4    0e+6144  -> 1E-6176     Subnormal Rounded

+dqfma2806 fma   1.3E-6172     1e-4    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqfma2807 fma   1.5E-6172     1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqfma2808 fma   1.7E-6172     1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqfma2809 fma   2.3E-6172     1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqfma2810 fma   2.5E-6172     1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqfma2811 fma   2.7E-6172     1e-4    0e+6144  -> 3E-6176     Underflow Subnormal Inexact Rounded

+dqfma2812 fma   1.49E-6172    1e-4    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqfma2813 fma   1.50E-6172    1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqfma2814 fma   1.51E-6172    1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqfma2815 fma   2.49E-6172    1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqfma2816 fma   2.50E-6172    1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded

+dqfma2817 fma   2.51E-6172    1e-4    0e+6144  -> 3E-6176     Underflow Subnormal Inexact Rounded

+

+dqfma2818 fma   1E-6172       1e-4    0e+6144  -> 1E-6176     Subnormal

+dqfma2819 fma   3E-6172       1e-5    0e+6144  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqfma2820 fma   5E-6172       1e-5    0e+6144  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped

+dqfma2821 fma   7E-6172       1e-5    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqfma2822 fma   9E-6172       1e-5    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded

+dqfma2823 fma   9.9E-6172     1e-5    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded

+

+dqfma2824 fma   1E-6172      -1e-4    0e+6144  -> -1E-6176    Subnormal

+dqfma2825 fma   3E-6172      -1e-5    0e+6144  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped

+dqfma2826 fma  -5E-6172       1e-5    0e+6144  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped

+dqfma2827 fma   7E-6172      -1e-5    0e+6144  -> -1E-6176    Underflow Subnormal Inexact Rounded

+dqfma2828 fma  -9E-6172       1e-5    0e+6144  -> -1E-6176    Underflow Subnormal Inexact Rounded

+dqfma2829 fma   9.9E-6172    -1e-5    0e+6144  -> -1E-6176    Underflow Subnormal Inexact Rounded

+dqfma2830 fma   3.0E-6172    -1e-5    0e+6144  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped

+

+dqfma2831 fma   1.0E-5977     1e-200   0e+6144  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqfma2832 fma   1.0E-5977     1e-199   0e+6144  -> 1E-6176    Subnormal Rounded

+dqfma2833 fma   1.0E-5977     1e-198   0e+6144  -> 1.0E-6175    Subnormal

+dqfma2834 fma   2.0E-5977     2e-198   0e+6144  -> 4.0E-6175    Subnormal

+dqfma2835 fma   4.0E-5977     4e-198   0e+6144  -> 1.60E-6174   Subnormal

+dqfma2836 fma  10.0E-5977    10e-198   0e+6144  -> 1.000E-6173  Subnormal

+dqfma2837 fma  30.0E-5977    30e-198   0e+6144  -> 9.000E-6173  Subnormal

+dqfma2838 fma  40.0E-5982    40e-166   0e+6144  -> 1.6000E-6145 Subnormal

+dqfma2839 fma  40.0E-5982    40e-165   0e+6144  -> 1.6000E-6144 Subnormal

+dqfma2840 fma  40.0E-5982    40e-164   0e+6144  -> 1.6000E-6143

+

+-- Long operand overflow may be a different path

+dqfma2870 fma  100  9.999E+6143       0e+6144  ->  Infinity Inexact Overflow Rounded

+dqfma2871 fma  100 -9.999E+6143       0e+6144  -> -Infinity Inexact Overflow Rounded

+dqfma2872 fma       9.999E+6143 100   0e+6144  ->  Infinity Inexact Overflow Rounded

+dqfma2873 fma      -9.999E+6143 100   0e+6144  -> -Infinity Inexact Overflow Rounded

+

+-- check for double-rounded subnormals

+dqfma2881 fma   1.2347E-6133 1.2347E-40    0e+6144  ->  1.524E-6173 Inexact Rounded Subnormal Underflow

+dqfma2882 fma   1.234E-6133 1.234E-40      0e+6144  ->  1.523E-6173 Inexact Rounded Subnormal Underflow

+dqfma2883 fma   1.23E-6133  1.23E-40       0e+6144  ->  1.513E-6173 Inexact Rounded Subnormal Underflow

+dqfma2884 fma   1.2E-6133   1.2E-40        0e+6144  ->  1.44E-6173  Subnormal

+dqfma2885 fma   1.2E-6133   1.2E-41        0e+6144  ->  1.44E-6174  Subnormal

+dqfma2886 fma   1.2E-6133   1.2E-42        0e+6144  ->  1.4E-6175   Subnormal Inexact Rounded Underflow

+dqfma2887 fma   1.2E-6133   1.3E-42        0e+6144  ->  1.6E-6175   Subnormal Inexact Rounded Underflow

+dqfma2888 fma   1.3E-6133   1.3E-42        0e+6144  ->  1.7E-6175   Subnormal Inexact Rounded Underflow

+dqfma2889 fma   1.3E-6133   1.3E-43        0e+6144  ->    2E-6176   Subnormal Inexact Rounded Underflow

+dqfma2890 fma   1.3E-6134   1.3E-43        0e+6144  ->    0E-6176   Clamped Subnormal Inexact Rounded Underflow

+

+dqfma2891 fma   1.2345E-39    1.234E-6133   0e+6144  ->  1.5234E-6172 Inexact Rounded Subnormal Underflow

+dqfma2892 fma   1.23456E-39   1.234E-6133   0e+6144  ->  1.5234E-6172 Inexact Rounded Subnormal Underflow

+dqfma2893 fma   1.2345E-40   1.234E-6133   0e+6144  ->  1.523E-6173  Inexact Rounded Subnormal Underflow

+dqfma2894 fma   1.23456E-40  1.234E-6133   0e+6144  ->  1.523E-6173  Inexact Rounded Subnormal Underflow

+dqfma2895 fma   1.2345E-41   1.234E-6133   0e+6144  ->  1.52E-6174   Inexact Rounded Subnormal Underflow

+dqfma2896 fma   1.23456E-41  1.234E-6133   0e+6144  ->  1.52E-6174   Inexact Rounded Subnormal Underflow

+

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

+-- prove operands are exact

+dqfma2906 fma   9.999999999999999999999999999999999E-6143  1                         0e+6144  -> 9.999999999999999999999999999999999E-6143

+dqfma2907 fma                        1  0.09999999999999999999999999999999999       0e+6144  -> 0.09999999999999999999999999999999999

+-- the next rounds to Nmin

+dqfma2908 fma   9.999999999999999999999999999999999E-6143  0.09999999999999999999999999999999999       0e+6144  -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded

+

+-- hugest

+dqfma2909 fma  9999999999999999999999999999999999 9999999999999999999999999999999999   0e+6144  -> 9.999999999999999999999999999999998E+67 Inexact Rounded

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+precision:   34

+rounding:    half_up

+maxExponent: 6144

+minExponent: -6143

+dqfma21001  fma  130E-2  120E-2   0e+6144  -> 1.5600

+dqfma21002  fma  130E-2  12E-1    0e+6144  -> 1.560

+dqfma21003  fma  130E-2  1E0      0e+6144  -> 1.30

+dqfma21004  fma  1E2     1E4      0e+6144  -> 1E+6

+

+-- Null tests

+dqfma2990 fma  10  #   0e+6144  -> NaN Invalid_operation

+dqfma2991 fma   # 10   0e+6144  -> NaN Invalid_operation

+

+

+-- ADDITION TESTS ------------------------------------------------------

+rounding:    half_even

+

+-- [first group are 'quick confidence check']

+dqadd3001 fma  1  1       1       ->  2

+dqadd3002 fma  1  2       3       ->  5

+dqadd3003 fma  1  '5.75'  '3.3'   ->  9.05

+dqadd3004 fma  1  '5'     '-3'    ->  2

+dqadd3005 fma  1  '-5'    '-3'    ->  -8

+dqadd3006 fma  1  '-7'    '2.5'   ->  -4.5

+dqadd3007 fma  1  '0.7'   '0.3'   ->  1.0

+dqadd3008 fma  1  '1.25'  '1.25'  ->  2.50

+dqadd3009 fma  1  '1.23456789'  '1.00000000' -> '2.23456789'

+dqadd3010 fma  1  '1.23456789'  '1.00000011' -> '2.23456800'

+

+--             1234567890123456      1234567890123456

+dqadd3011 fma  1  '0.4444444444444444444444444444444446'  '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Inexact Rounded

+dqadd3012 fma  1  '0.4444444444444444444444444444444445'  '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Rounded

+dqadd3013 fma  1  '0.4444444444444444444444444444444444'  '0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999'

+dqadd3014 fma  1    '4444444444444444444444444444444444' '0.49'   -> '4444444444444444444444444444444444' Inexact Rounded

+dqadd3015 fma  1    '4444444444444444444444444444444444' '0.499'  -> '4444444444444444444444444444444444' Inexact Rounded

+dqadd3016 fma  1    '4444444444444444444444444444444444' '0.4999' -> '4444444444444444444444444444444444' Inexact Rounded

+dqadd3017 fma  1    '4444444444444444444444444444444444' '0.5000' -> '4444444444444444444444444444444444' Inexact Rounded

+dqadd3018 fma  1    '4444444444444444444444444444444444' '0.5001' -> '4444444444444444444444444444444445' Inexact Rounded

+dqadd3019 fma  1    '4444444444444444444444444444444444' '0.501'  -> '4444444444444444444444444444444445' Inexact Rounded

+dqadd3020 fma  1    '4444444444444444444444444444444444' '0.51'   -> '4444444444444444444444444444444445' Inexact Rounded

+

+dqadd3021 fma  1  0 1 -> 1

+dqadd3022 fma  1  1 1 -> 2

+dqadd3023 fma  1  2 1 -> 3

+dqadd3024 fma  1  3 1 -> 4

+dqadd3025 fma  1  4 1 -> 5

+dqadd3026 fma  1  5 1 -> 6

+dqadd3027 fma  1  6 1 -> 7

+dqadd3028 fma  1  7 1 -> 8

+dqadd3029 fma  1  8 1 -> 9

+dqadd3030 fma  1  9 1 -> 10

+

+-- some carrying effects

+dqadd3031 fma  1  '0.9998'  '0.0000' -> '0.9998'

+dqadd3032 fma  1  '0.9998'  '0.0001' -> '0.9999'

+dqadd3033 fma  1  '0.9998'  '0.0002' -> '1.0000'

+dqadd3034 fma  1  '0.9998'  '0.0003' -> '1.0001'

+

+dqadd3035 fma  1  '70'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd3036 fma  1  '700'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd3037 fma  1  '7000'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd3038 fma  1  '70000'  '10000e+34' -> '1.000000000000000000000000000000001E+38' Inexact Rounded

+dqadd3039 fma  1  '700000'  '10000e+34' -> '1.000000000000000000000000000000007E+38' Rounded

+

+-- symmetry:

+dqadd3040 fma  1  '10000e+34'  '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd3041 fma  1  '10000e+34'  '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd3042 fma  1  '10000e+34'  '7000' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqadd3044 fma  1  '10000e+34'  '70000' -> '1.000000000000000000000000000000001E+38' Inexact Rounded

+dqadd3045 fma  1  '10000e+34'  '700000' -> '1.000000000000000000000000000000007E+38' Rounded

+

+-- same, without rounding

+dqadd3046 fma  1  '10000e+9'  '7' -> '10000000000007'

+dqadd3047 fma  1  '10000e+9'  '70' -> '10000000000070'

+dqadd3048 fma  1  '10000e+9'  '700' -> '10000000000700'

+dqadd3049 fma  1  '10000e+9'  '7000' -> '10000000007000'

+dqadd3050 fma  1  '10000e+9'  '70000' -> '10000000070000'

+dqadd3051 fma  1  '10000e+9'  '700000' -> '10000000700000'

+dqadd3052 fma  1  '10000e+9'  '7000000' -> '10000007000000'

+

+-- examples from decarith

+dqadd3053 fma  1  '12' '7.00' -> '19.00'

+dqadd3054 fma  1  '1.3' '-1.07' -> '0.23'

+dqadd3055 fma  1  '1.3' '-1.30' -> '0.00'

+dqadd3056 fma  1  '1.3' '-2.07' -> '-0.77'

+dqadd3057 fma  1  '1E+2' '1E+4' -> '1.01E+4'

+

+-- leading zero preservation

+dqadd3061 fma  1  1 '0.0001' -> '1.0001'

+dqadd3062 fma  1  1 '0.00001' -> '1.00001'

+dqadd3063 fma  1  1 '0.000001' -> '1.000001'

+dqadd3064 fma  1  1 '0.0000001' -> '1.0000001'

+dqadd3065 fma  1  1 '0.00000001' -> '1.00000001'

+

+-- some funny zeros [in case of bad signum]

+dqadd3070 fma  1  1  0    -> 1

+dqadd3071 fma  1  1 0.    -> 1

+dqadd3072 fma  1  1  .0   -> 1.0

+dqadd3073 fma  1  1 0.0   -> 1.0

+dqadd3074 fma  1  1 0.00  -> 1.00

+dqadd3075 fma  1   0  1   -> 1

+dqadd3076 fma  1  0.  1   -> 1

+dqadd3077 fma  1   .0 1   -> 1.0

+dqadd3078 fma  1  0.0 1   -> 1.0

+dqadd3079 fma  1  0.00 1  -> 1.00

+

+-- some carries

+dqadd3080 fma  1  999999998 1  -> 999999999

+dqadd3081 fma  1  999999999 1  -> 1000000000

+dqadd3082 fma  1   99999999 1  -> 100000000

+dqadd3083 fma  1    9999999 1  -> 10000000

+dqadd3084 fma  1     999999 1  -> 1000000

+dqadd3085 fma  1      99999 1  -> 100000

+dqadd3086 fma  1       9999 1  -> 10000

+dqadd3087 fma  1        999 1  -> 1000

+dqadd3088 fma  1         99 1  -> 100

+dqadd3089 fma  1          9 1  -> 10

+

+

+-- more LHS swaps

+dqadd3090 fma  1  '-56267E-10'   0 ->  '-0.0000056267'

+dqadd3091 fma  1  '-56267E-6'    0 ->  '-0.056267'

+dqadd3092 fma  1  '-56267E-5'    0 ->  '-0.56267'

+dqadd3093 fma  1  '-56267E-4'    0 ->  '-5.6267'

+dqadd3094 fma  1  '-56267E-3'    0 ->  '-56.267'

+dqadd3095 fma  1  '-56267E-2'    0 ->  '-562.67'

+dqadd3096 fma  1  '-56267E-1'    0 ->  '-5626.7'

+dqadd3097 fma  1  '-56267E-0'    0 ->  '-56267'

+dqadd3098 fma  1  '-5E-10'       0 ->  '-5E-10'

+dqadd3099 fma  1  '-5E-7'        0 ->  '-5E-7'

+dqadd3100 fma  1  '-5E-6'        0 ->  '-0.000005'

+dqadd3101 fma  1  '-5E-5'        0 ->  '-0.00005'

+dqadd3102 fma  1  '-5E-4'        0 ->  '-0.0005'

+dqadd3103 fma  1  '-5E-1'        0 ->  '-0.5'

+dqadd3104 fma  1  '-5E0'         0 ->  '-5'

+dqadd3105 fma  1  '-5E1'         0 ->  '-50'

+dqadd3106 fma  1  '-5E5'         0 ->  '-500000'

+dqadd3107 fma  1  '-5E33'        0 ->  '-5000000000000000000000000000000000'

+dqadd3108 fma  1  '-5E34'        0 ->  '-5.000000000000000000000000000000000E+34'  Rounded

+dqadd3109 fma  1  '-5E35'        0 ->  '-5.000000000000000000000000000000000E+35'  Rounded

+dqadd3110 fma  1  '-5E36'        0 ->  '-5.000000000000000000000000000000000E+36'  Rounded

+dqadd3111 fma  1  '-5E100'       0 ->  '-5.000000000000000000000000000000000E+100' Rounded

+

+-- more RHS swaps

+dqadd3113 fma  1  0  '-56267E-10' ->  '-0.0000056267'

+dqadd3114 fma  1  0  '-56267E-6'  ->  '-0.056267'

+dqadd3116 fma  1  0  '-56267E-5'  ->  '-0.56267'

+dqadd3117 fma  1  0  '-56267E-4'  ->  '-5.6267'

+dqadd3119 fma  1  0  '-56267E-3'  ->  '-56.267'

+dqadd3120 fma  1  0  '-56267E-2'  ->  '-562.67'

+dqadd3121 fma  1  0  '-56267E-1'  ->  '-5626.7'

+dqadd3122 fma  1  0  '-56267E-0'  ->  '-56267'

+dqadd3123 fma  1  0  '-5E-10'     ->  '-5E-10'

+dqadd3124 fma  1  0  '-5E-7'      ->  '-5E-7'

+dqadd3125 fma  1  0  '-5E-6'      ->  '-0.000005'

+dqadd3126 fma  1  0  '-5E-5'      ->  '-0.00005'

+dqadd3127 fma  1  0  '-5E-4'      ->  '-0.0005'

+dqadd3128 fma  1  0  '-5E-1'      ->  '-0.5'

+dqadd3129 fma  1  0  '-5E0'       ->  '-5'

+dqadd3130 fma  1  0  '-5E1'       ->  '-50'

+dqadd3131 fma  1  0  '-5E5'       ->  '-500000'

+dqadd3132 fma  1  0  '-5E33'      ->  '-5000000000000000000000000000000000'

+dqadd3133 fma  1  0  '-5E34'      ->  '-5.000000000000000000000000000000000E+34'   Rounded

+dqadd3134 fma  1  0  '-5E35'      ->  '-5.000000000000000000000000000000000E+35'   Rounded

+dqadd3135 fma  1  0  '-5E36'      ->  '-5.000000000000000000000000000000000E+36'   Rounded

+dqadd3136 fma  1  0  '-5E100'     ->  '-5.000000000000000000000000000000000E+100'  Rounded

+

+-- related

+dqadd3137 fma  1   1  '0E-39'      ->  '1.000000000000000000000000000000000'  Rounded

+dqadd3138 fma  1  -1  '0E-39'      ->  '-1.000000000000000000000000000000000' Rounded

+dqadd3139 fma  1  '0E-39' 1        ->  '1.000000000000000000000000000000000'  Rounded

+dqadd3140 fma  1  '0E-39' -1       ->  '-1.000000000000000000000000000000000' Rounded

+dqadd3141 fma  1  1E+29   0.0000   ->  '100000000000000000000000000000.0000'

+dqadd3142 fma  1  1E+29   0.00000  ->  '100000000000000000000000000000.0000'  Rounded

+dqadd3143 fma  1  0.000   1E+30    ->  '1000000000000000000000000000000.000'

+dqadd3144 fma  1  0.0000  1E+30    ->  '1000000000000000000000000000000.000'  Rounded

+

+-- [some of the next group are really constructor tests]

+dqadd3146 fma  1  '00.0'  0       ->  '0.0'

+dqadd3147 fma  1  '0.00'  0       ->  '0.00'

+dqadd3148 fma  1   0      '0.00'  ->  '0.00'

+dqadd3149 fma  1   0      '00.0'  ->  '0.0'

+dqadd3150 fma  1  '00.0'  '0.00'  ->  '0.00'

+dqadd3151 fma  1  '0.00'  '00.0'  ->  '0.00'

+dqadd3152 fma  1  '3'     '.3'    ->  '3.3'

+dqadd3153 fma  1  '3.'    '.3'    ->  '3.3'

+dqadd3154 fma  1  '3.0'   '.3'    ->  '3.3'

+dqadd3155 fma  1  '3.00'  '.3'    ->  '3.30'

+dqadd3156 fma  1  '3'     '3'     ->  '6'

+dqadd3157 fma  1  '3'     '+3'    ->  '6'

+dqadd3158 fma  1  '3'     '-3'    ->  '0'

+dqadd3159 fma  1  '0.3'   '-0.3'  ->  '0.0'

+dqadd3160 fma  1  '0.03'  '-0.03' ->  '0.00'

+

+-- try borderline precision, with carries, etc.

+dqadd3161 fma  1  '1E+12' '-1'    -> '999999999999'

+dqadd3162 fma  1  '1E+12'  '1.11' -> '1000000000001.11'

+dqadd3163 fma  1  '1.11'  '1E+12' -> '1000000000001.11'

+dqadd3164 fma  1  '-1'    '1E+12' -> '999999999999'

+dqadd3165 fma  1  '7E+12' '-1'    -> '6999999999999'

+dqadd3166 fma  1  '7E+12'  '1.11' -> '7000000000001.11'

+dqadd3167 fma  1  '1.11'  '7E+12' -> '7000000000001.11'

+dqadd3168 fma  1  '-1'    '7E+12' -> '6999999999999'

+

+rounding: half_up

+dqadd3170 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555567' -> '5.000000000000000000000000000000001' Inexact Rounded

+dqadd3171 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555566' -> '5.000000000000000000000000000000001' Inexact Rounded

+dqadd3172 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555565' -> '5.000000000000000000000000000000001' Inexact Rounded

+dqadd3173 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555564' -> '5.000000000000000000000000000000000' Inexact Rounded

+dqadd3174 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555553' -> '4.999999999999999999999999999999999' Inexact Rounded

+dqadd3175 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555552' -> '4.999999999999999999999999999999999' Inexact Rounded

+dqadd3176 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555551' -> '4.999999999999999999999999999999999' Inexact Rounded

+dqadd3177 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555550' -> '4.999999999999999999999999999999999' Rounded

+dqadd3178 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555545' -> '4.999999999999999999999999999999999' Inexact Rounded

+dqadd3179 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555544' -> '4.999999999999999999999999999999998' Inexact Rounded

+dqadd3180 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555543' -> '4.999999999999999999999999999999998' Inexact Rounded

+dqadd3181 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555542' -> '4.999999999999999999999999999999998' Inexact Rounded

+dqadd3182 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555541' -> '4.999999999999999999999999999999998' Inexact Rounded

+dqadd3183 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555540' -> '4.999999999999999999999999999999998' Rounded

+

+-- and some more, including residue effects and different roundings

+rounding: half_up

+dqadd3200 fma  1  '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'

+dqadd3201 fma  1  '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3202 fma  1  '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3203 fma  1  '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3204 fma  1  '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3205 fma  1  '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3206 fma  1  '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3207 fma  1  '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3208 fma  1  '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3209 fma  1  '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3210 fma  1  '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3211 fma  1  '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3212 fma  1  '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3213 fma  1  '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3214 fma  1  '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3215 fma  1  '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3216 fma  1  '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'

+dqadd3217 fma  1  '1231234567890123456784560123456789' 1.000000001   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3218 fma  1  '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3219 fma  1  '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded

+

+rounding: half_even

+dqadd3220 fma  1  '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'

+dqadd3221 fma  1  '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3222 fma  1  '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3223 fma  1  '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3224 fma  1  '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3225 fma  1  '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3226 fma  1  '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3227 fma  1  '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3228 fma  1  '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3229 fma  1  '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3230 fma  1  '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3231 fma  1  '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3232 fma  1  '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3233 fma  1  '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3234 fma  1  '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3235 fma  1  '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3236 fma  1  '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'

+dqadd3237 fma  1  '1231234567890123456784560123456789' 1.00000001    -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3238 fma  1  '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3239 fma  1  '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded

+-- critical few with even bottom digit...

+dqadd3240 fma  1  '1231234567890123456784560123456788' 0.499999999   -> '1231234567890123456784560123456788' Inexact Rounded

+dqadd3241 fma  1  '1231234567890123456784560123456788' 0.5           -> '1231234567890123456784560123456788' Inexact Rounded

+dqadd3242 fma  1  '1231234567890123456784560123456788' 0.500000001   -> '1231234567890123456784560123456789' Inexact Rounded

+

+rounding: down

+dqadd3250 fma  1  '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'

+dqadd3251 fma  1  '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3252 fma  1  '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3253 fma  1  '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3254 fma  1  '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3255 fma  1  '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3256 fma  1  '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3257 fma  1  '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3258 fma  1  '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3259 fma  1  '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3260 fma  1  '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3261 fma  1  '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3262 fma  1  '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3263 fma  1  '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3264 fma  1  '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3265 fma  1  '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456789' Inexact Rounded

+dqadd3266 fma  1  '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'

+dqadd3267 fma  1  '1231234567890123456784560123456789' 1.00000001    -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3268 fma  1  '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded

+dqadd3269 fma  1  '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded

+

+-- 1 in last place tests

+rounding: half_up

+dqadd3301 fma  1   -1   1      ->   0

+dqadd3302 fma  1    0   1      ->   1

+dqadd3303 fma  1    1   1      ->   2

+dqadd3304 fma  1   12   1      ->  13

+dqadd3305 fma  1   98   1      ->  99

+dqadd3306 fma  1   99   1      -> 100

+dqadd3307 fma  1  100   1      -> 101

+dqadd3308 fma  1  101   1      -> 102

+dqadd3309 fma  1   -1  -1      ->  -2

+dqadd3310 fma  1    0  -1      ->  -1

+dqadd3311 fma  1    1  -1      ->   0

+dqadd3312 fma  1   12  -1      ->  11

+dqadd3313 fma  1   98  -1      ->  97

+dqadd3314 fma  1   99  -1      ->  98

+dqadd3315 fma  1  100  -1      ->  99

+dqadd3316 fma  1  101  -1      -> 100

+

+dqadd3321 fma  1  -0.01  0.01    ->  0.00

+dqadd3322 fma  1   0.00  0.01    ->  0.01

+dqadd3323 fma  1   0.01  0.01    ->  0.02

+dqadd3324 fma  1   0.12  0.01    ->  0.13

+dqadd3325 fma  1   0.98  0.01    ->  0.99

+dqadd3326 fma  1   0.99  0.01    ->  1.00

+dqadd3327 fma  1   1.00  0.01    ->  1.01

+dqadd3328 fma  1   1.01  0.01    ->  1.02

+dqadd3329 fma  1  -0.01 -0.01    -> -0.02

+dqadd3330 fma  1   0.00 -0.01    -> -0.01

+dqadd3331 fma  1   0.01 -0.01    ->  0.00

+dqadd3332 fma  1   0.12 -0.01    ->  0.11

+dqadd3333 fma  1   0.98 -0.01    ->  0.97

+dqadd3334 fma  1   0.99 -0.01    ->  0.98

+dqadd3335 fma  1   1.00 -0.01    ->  0.99

+dqadd3336 fma  1   1.01 -0.01    ->  1.00

+

+-- some more cases where adding 0 affects the coefficient

+dqadd3340 fma  1  1E+3    0    ->         1000

+dqadd3341 fma  1  1E+33   0    ->    1000000000000000000000000000000000

+dqadd3342 fma  1  1E+34   0    ->   1.000000000000000000000000000000000E+34  Rounded

+dqadd3343 fma  1  1E+35   0    ->   1.000000000000000000000000000000000E+35  Rounded

+-- which simply follow from these cases ...

+dqadd3344 fma  1  1E+3    1    ->         1001

+dqadd3345 fma  1  1E+33   1    ->    1000000000000000000000000000000001

+dqadd3346 fma  1  1E+34   1    ->   1.000000000000000000000000000000000E+34  Inexact Rounded

+dqadd3347 fma  1  1E+35   1    ->   1.000000000000000000000000000000000E+35  Inexact Rounded

+dqadd3348 fma  1  1E+3    7    ->         1007

+dqadd3349 fma  1  1E+33   7    ->    1000000000000000000000000000000007

+dqadd3350 fma  1  1E+34   7    ->   1.000000000000000000000000000000001E+34  Inexact Rounded

+dqadd3351 fma  1  1E+35   7    ->   1.000000000000000000000000000000000E+35  Inexact Rounded

+

+-- tryzeros cases

+rounding:    half_up

+dqadd3360  fma  1  0E+50 10000E+1  -> 1.0000E+5

+dqadd3361  fma  1  0E-50 10000E+1  -> 100000.0000000000000000000000000000 Rounded

+dqadd3362  fma  1  10000E+1 0E-50  -> 100000.0000000000000000000000000000 Rounded

+dqadd3363  fma  1  10000E+1 10000E-50  -> 100000.0000000000000000000000000000 Rounded Inexact

+dqadd3364  fma  1  9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0E+6111

+--            1 234567890123456789012345678901234

+

+-- a curiosity from JSR 13 testing

+rounding:    half_down

+dqadd3370 fma  1   999999999999999999999999999999999 815 -> 1000000000000000000000000000000814

+dqadd3371 fma  1  9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact

+rounding:    half_up

+dqadd3372 fma  1   999999999999999999999999999999999 815 -> 1000000000000000000000000000000814

+dqadd3373 fma  1  9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact

+rounding:    half_even

+dqadd3374 fma  1   999999999999999999999999999999999 815 -> 1000000000000000000000000000000814

+dqadd3375 fma  1  9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact

+

+-- ulp replacement tests

+dqadd3400 fma  1    1   77e-32      ->  1.00000000000000000000000000000077

+dqadd3401 fma  1    1   77e-33      ->  1.000000000000000000000000000000077

+dqadd3402 fma  1    1   77e-34      ->  1.000000000000000000000000000000008 Inexact Rounded

+dqadd3403 fma  1    1   77e-35      ->  1.000000000000000000000000000000001 Inexact Rounded

+dqadd3404 fma  1    1   77e-36      ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd3405 fma  1    1   77e-37      ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd3406 fma  1    1   77e-299     ->  1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd3410 fma  1   10   77e-32      ->  10.00000000000000000000000000000077

+dqadd3411 fma  1   10   77e-33      ->  10.00000000000000000000000000000008 Inexact Rounded

+dqadd3412 fma  1   10   77e-34      ->  10.00000000000000000000000000000001 Inexact Rounded

+dqadd3413 fma  1   10   77e-35      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd3414 fma  1   10   77e-36      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd3415 fma  1   10   77e-37      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd3416 fma  1   10   77e-299     ->  10.00000000000000000000000000000000 Inexact Rounded

+

+dqadd3420 fma  1   77e-32       1   ->  1.00000000000000000000000000000077

+dqadd3421 fma  1   77e-33       1   ->  1.000000000000000000000000000000077

+dqadd3422 fma  1   77e-34       1   ->  1.000000000000000000000000000000008 Inexact Rounded

+dqadd3423 fma  1   77e-35       1   ->  1.000000000000000000000000000000001 Inexact Rounded

+dqadd3424 fma  1   77e-36       1   ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd3425 fma  1   77e-37       1   ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd3426 fma  1   77e-299      1   ->  1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd3430 fma  1   77e-32      10   ->  10.00000000000000000000000000000077

+dqadd3431 fma  1   77e-33      10   ->  10.00000000000000000000000000000008 Inexact Rounded

+dqadd3432 fma  1   77e-34      10   ->  10.00000000000000000000000000000001 Inexact Rounded

+dqadd3433 fma  1   77e-35      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd3434 fma  1   77e-36      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd3435 fma  1   77e-37      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd3436 fma  1   77e-299     10   ->  10.00000000000000000000000000000000 Inexact Rounded

+

+-- negative ulps

+dqadd36440 fma  1    1   -77e-32      ->  0.99999999999999999999999999999923

+dqadd36441 fma  1    1   -77e-33      ->  0.999999999999999999999999999999923

+dqadd36442 fma  1    1   -77e-34      ->  0.9999999999999999999999999999999923

+dqadd36443 fma  1    1   -77e-35      ->  0.9999999999999999999999999999999992 Inexact Rounded

+dqadd36444 fma  1    1   -77e-36      ->  0.9999999999999999999999999999999999 Inexact Rounded

+dqadd36445 fma  1    1   -77e-37      ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd36446 fma  1    1   -77e-99      ->  1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd36450 fma  1   10   -77e-32      ->   9.99999999999999999999999999999923

+dqadd36451 fma  1   10   -77e-33      ->   9.999999999999999999999999999999923

+dqadd36452 fma  1   10   -77e-34      ->   9.999999999999999999999999999999992 Inexact Rounded

+dqadd36453 fma  1   10   -77e-35      ->   9.999999999999999999999999999999999 Inexact Rounded

+dqadd36454 fma  1   10   -77e-36      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd36455 fma  1   10   -77e-37      ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd36456 fma  1   10   -77e-99      ->  10.00000000000000000000000000000000 Inexact Rounded

+

+dqadd36460 fma  1   -77e-32       1   ->  0.99999999999999999999999999999923

+dqadd36461 fma  1   -77e-33       1   ->  0.999999999999999999999999999999923

+dqadd36462 fma  1   -77e-34       1   ->  0.9999999999999999999999999999999923

+dqadd36463 fma  1   -77e-35       1   ->  0.9999999999999999999999999999999992 Inexact Rounded

+dqadd36464 fma  1   -77e-36       1   ->  0.9999999999999999999999999999999999 Inexact Rounded

+dqadd36465 fma  1   -77e-37       1   ->  1.000000000000000000000000000000000 Inexact Rounded

+dqadd36466 fma  1   -77e-99       1   ->  1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd36470 fma  1   -77e-32      10   ->   9.99999999999999999999999999999923

+dqadd36471 fma  1   -77e-33      10   ->   9.999999999999999999999999999999923

+dqadd36472 fma  1   -77e-34      10   ->   9.999999999999999999999999999999992 Inexact Rounded

+dqadd36473 fma  1   -77e-35      10   ->   9.999999999999999999999999999999999 Inexact Rounded

+dqadd36474 fma  1   -77e-36      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd36475 fma  1   -77e-37      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+dqadd36476 fma  1   -77e-99      10   ->  10.00000000000000000000000000000000 Inexact Rounded

+

+-- negative ulps

+dqadd36480 fma  1   -1    77e-32      ->  -0.99999999999999999999999999999923

+dqadd36481 fma  1   -1    77e-33      ->  -0.999999999999999999999999999999923

+dqadd36482 fma  1   -1    77e-34      ->  -0.9999999999999999999999999999999923

+dqadd36483 fma  1   -1    77e-35      ->  -0.9999999999999999999999999999999992 Inexact Rounded

+dqadd36484 fma  1   -1    77e-36      ->  -0.9999999999999999999999999999999999 Inexact Rounded

+dqadd36485 fma  1   -1    77e-37      ->  -1.000000000000000000000000000000000 Inexact Rounded

+dqadd36486 fma  1   -1    77e-99      ->  -1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd36490 fma  1  -10    77e-32      ->   -9.99999999999999999999999999999923

+dqadd36491 fma  1  -10    77e-33      ->   -9.999999999999999999999999999999923

+dqadd36492 fma  1  -10    77e-34      ->   -9.999999999999999999999999999999992 Inexact Rounded

+dqadd36493 fma  1  -10    77e-35      ->   -9.999999999999999999999999999999999 Inexact Rounded

+dqadd36494 fma  1  -10    77e-36      ->  -10.00000000000000000000000000000000 Inexact Rounded

+dqadd36495 fma  1  -10    77e-37      ->  -10.00000000000000000000000000000000 Inexact Rounded

+dqadd36496 fma  1  -10    77e-99      ->  -10.00000000000000000000000000000000 Inexact Rounded

+

+dqadd36500 fma  1    77e-32      -1   ->  -0.99999999999999999999999999999923

+dqadd36501 fma  1    77e-33      -1   ->  -0.999999999999999999999999999999923

+dqadd36502 fma  1    77e-34      -1   ->  -0.9999999999999999999999999999999923

+dqadd36503 fma  1    77e-35      -1   ->  -0.9999999999999999999999999999999992 Inexact Rounded

+dqadd36504 fma  1    77e-36      -1   ->  -0.9999999999999999999999999999999999 Inexact Rounded

+dqadd36505 fma  1    77e-37      -1   ->  -1.000000000000000000000000000000000 Inexact Rounded

+dqadd36506 fma  1    77e-99      -1   ->  -1.000000000000000000000000000000000 Inexact Rounded

+

+dqadd36510 fma  1    77e-32      -10  ->   -9.99999999999999999999999999999923

+dqadd36511 fma  1    77e-33      -10  ->   -9.999999999999999999999999999999923

+dqadd36512 fma  1    77e-34      -10  ->   -9.999999999999999999999999999999992 Inexact Rounded

+dqadd36513 fma  1    77e-35      -10  ->   -9.999999999999999999999999999999999 Inexact Rounded

+dqadd36514 fma  1    77e-36      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded

+dqadd36515 fma  1    77e-37      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded

+dqadd36516 fma  1    77e-99      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded

+

+-- and some more residue effects and different roundings

+rounding: half_up

+dqadd36540 fma  1  '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'

+dqadd36541 fma  1  '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36542 fma  1  '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36543 fma  1  '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36544 fma  1  '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36545 fma  1  '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36546 fma  1  '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36547 fma  1  '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36548 fma  1  '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36549 fma  1  '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36550 fma  1  '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36551 fma  1  '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36552 fma  1  '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36553 fma  1  '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36554 fma  1  '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36555 fma  1  '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36556 fma  1  '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'

+dqadd36557 fma  1  '9876543219876543216543210123456789' 1.000000001   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36558 fma  1  '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36559 fma  1  '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded

+

+rounding: half_even

+dqadd36560 fma  1  '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'

+dqadd36561 fma  1  '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36562 fma  1  '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36563 fma  1  '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36564 fma  1  '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36565 fma  1  '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36566 fma  1  '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36567 fma  1  '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd36568 fma  1  '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36569 fma  1  '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36570 fma  1  '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36571 fma  1  '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36572 fma  1  '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36573 fma  1  '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36574 fma  1  '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36575 fma  1  '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36576 fma  1  '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'

+dqadd36577 fma  1  '9876543219876543216543210123456789' 1.00000001    -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36578 fma  1  '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd36579 fma  1  '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded

+

+-- critical few with even bottom digit...

+dqadd37540 fma  1  '9876543219876543216543210123456788' 0.499999999   -> '9876543219876543216543210123456788' Inexact Rounded

+dqadd37541 fma  1  '9876543219876543216543210123456788' 0.5           -> '9876543219876543216543210123456788' Inexact Rounded

+dqadd37542 fma  1  '9876543219876543216543210123456788' 0.500000001   -> '9876543219876543216543210123456789' Inexact Rounded

+

+rounding: down

+dqadd37550 fma  1  '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'

+dqadd37551 fma  1  '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37552 fma  1  '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37553 fma  1  '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37554 fma  1  '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37555 fma  1  '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37556 fma  1  '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37557 fma  1  '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37558 fma  1  '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37559 fma  1  '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37560 fma  1  '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37561 fma  1  '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37562 fma  1  '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37563 fma  1  '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37564 fma  1  '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37565 fma  1  '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456789' Inexact Rounded

+dqadd37566 fma  1  '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'

+dqadd37567 fma  1  '9876543219876543216543210123456789' 1.00000001    -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd37568 fma  1  '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded

+dqadd37569 fma  1  '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded

+

+-- more zeros, etc.

+rounding: half_even

+

+dqadd37701 fma  1  5.00 1.00E-3 -> 5.00100

+dqadd37702 fma  1  00.00 0.000  -> 0.000

+dqadd37703 fma  1  00.00 0E-3   -> 0.000

+dqadd37704 fma  1  0E-3  00.00  -> 0.000

+

+dqadd37710 fma  1  0E+3  00.00  -> 0.00

+dqadd37711 fma  1  0E+3  00.0   -> 0.0

+dqadd37712 fma  1  0E+3  00.    -> 0

+dqadd37713 fma  1  0E+3  00.E+1 -> 0E+1

+dqadd37714 fma  1  0E+3  00.E+2 -> 0E+2

+dqadd37715 fma  1  0E+3  00.E+3 -> 0E+3

+dqadd37716 fma  1  0E+3  00.E+4 -> 0E+3

+dqadd37717 fma  1  0E+3  00.E+5 -> 0E+3

+dqadd37718 fma  1  0E+3  -00.0   -> 0.0

+dqadd37719 fma  1  0E+3  -00.    -> 0

+dqadd37731 fma  1  0E+3  -00.E+1 -> 0E+1

+

+dqadd37720 fma  1  00.00  0E+3  -> 0.00

+dqadd37721 fma  1  00.0   0E+3  -> 0.0

+dqadd37722 fma  1  00.    0E+3  -> 0

+dqadd37723 fma  1  00.E+1 0E+3  -> 0E+1

+dqadd37724 fma  1  00.E+2 0E+3  -> 0E+2

+dqadd37725 fma  1  00.E+3 0E+3  -> 0E+3

+dqadd37726 fma  1  00.E+4 0E+3  -> 0E+3

+dqadd37727 fma  1  00.E+5 0E+3  -> 0E+3

+dqadd37728 fma  1  -00.00 0E+3  -> 0.00

+dqadd37729 fma  1  -00.0  0E+3  -> 0.0

+dqadd37730 fma  1  -00.   0E+3  -> 0

+

+dqadd37732 fma  1   0     0     ->  0

+dqadd37733 fma  1   0    -0     ->  0

+dqadd37734 fma  1  -0     0     ->  0

+dqadd37735 fma  1  -0    -0     -> -0     -- IEEE 854 special case

+

+dqadd37736 fma  1   1    -1     ->  0

+dqadd37737 fma  1  -1    -1     -> -2

+dqadd37738 fma  1   1     1     ->  2

+dqadd37739 fma  1  -1     1     ->  0

+

+dqadd37741 fma  1   0    -1     -> -1

+dqadd37742 fma  1  -0    -1     -> -1

+dqadd37743 fma  1   0     1     ->  1

+dqadd37744 fma  1  -0     1     ->  1

+dqadd37745 fma  1  -1     0     -> -1

+dqadd37746 fma  1  -1    -0     -> -1

+dqadd37747 fma  1   1     0     ->  1

+dqadd37748 fma  1   1    -0     ->  1

+

+dqadd37751 fma  1   0.0  -1     -> -1.0

+dqadd37752 fma  1  -0.0  -1     -> -1.0

+dqadd37753 fma  1   0.0   1     ->  1.0

+dqadd37754 fma  1  -0.0   1     ->  1.0

+dqadd37755 fma  1  -1.0   0     -> -1.0

+dqadd37756 fma  1  -1.0  -0     -> -1.0

+dqadd37757 fma  1   1.0   0     ->  1.0

+dqadd37758 fma  1   1.0  -0     ->  1.0

+

+dqadd37761 fma  1   0    -1.0   -> -1.0

+dqadd37762 fma  1  -0    -1.0   -> -1.0

+dqadd37763 fma  1   0     1.0   ->  1.0

+dqadd37764 fma  1  -0     1.0   ->  1.0

+dqadd37765 fma  1  -1     0.0   -> -1.0

+dqadd37766 fma  1  -1    -0.0   -> -1.0

+dqadd37767 fma  1   1     0.0   ->  1.0

+dqadd37768 fma  1   1    -0.0   ->  1.0

+

+dqadd37771 fma  1   0.0  -1.0   -> -1.0

+dqadd37772 fma  1  -0.0  -1.0   -> -1.0

+dqadd37773 fma  1   0.0   1.0   ->  1.0

+dqadd37774 fma  1  -0.0   1.0   ->  1.0

+dqadd37775 fma  1  -1.0   0.0   -> -1.0

+dqadd37776 fma  1  -1.0  -0.0   -> -1.0

+dqadd37777 fma  1   1.0   0.0   ->  1.0

+dqadd37778 fma  1   1.0  -0.0   ->  1.0

+

+-- Specials

+dqadd37780 fma  1  -Inf  -Inf   -> -Infinity

+dqadd37781 fma  1  -Inf  -1000  -> -Infinity

+dqadd37782 fma  1  -Inf  -1     -> -Infinity

+dqadd37783 fma  1  -Inf  -0     -> -Infinity

+dqadd37784 fma  1  -Inf   0     -> -Infinity

+dqadd37785 fma  1  -Inf   1     -> -Infinity

+dqadd37786 fma  1  -Inf   1000  -> -Infinity

+dqadd37787 fma  1  -1000 -Inf   -> -Infinity

+dqadd37788 fma  1  -Inf  -Inf   -> -Infinity

+dqadd37789 fma  1  -1    -Inf   -> -Infinity

+dqadd37790 fma  1  -0    -Inf   -> -Infinity

+dqadd37791 fma  1   0    -Inf   -> -Infinity

+dqadd37792 fma  1   1    -Inf   -> -Infinity

+dqadd37793 fma  1   1000 -Inf   -> -Infinity

+dqadd37794 fma  1   Inf  -Inf   ->  NaN  Invalid_operation

+

+dqadd37800 fma  1   Inf  -Inf   ->  NaN  Invalid_operation

+dqadd37801 fma  1   Inf  -1000  ->  Infinity

+dqadd37802 fma  1   Inf  -1     ->  Infinity

+dqadd37803 fma  1   Inf  -0     ->  Infinity

+dqadd37804 fma  1   Inf   0     ->  Infinity

+dqadd37805 fma  1   Inf   1     ->  Infinity

+dqadd37806 fma  1   Inf   1000  ->  Infinity

+dqadd37807 fma  1   Inf   Inf   ->  Infinity

+dqadd37808 fma  1  -1000  Inf   ->  Infinity

+dqadd37809 fma  1  -Inf   Inf   ->  NaN  Invalid_operation

+dqadd37810 fma  1  -1     Inf   ->  Infinity

+dqadd37811 fma  1  -0     Inf   ->  Infinity

+dqadd37812 fma  1   0     Inf   ->  Infinity

+dqadd37813 fma  1   1     Inf   ->  Infinity

+dqadd37814 fma  1   1000  Inf   ->  Infinity

+dqadd37815 fma  1   Inf   Inf   ->  Infinity

+

+dqadd37821 fma  1   NaN -Inf    ->  NaN

+dqadd37822 fma  1   NaN -1000   ->  NaN

+dqadd37823 fma  1   NaN -1      ->  NaN

+dqadd37824 fma  1   NaN -0      ->  NaN

+dqadd37825 fma  1   NaN  0      ->  NaN

+dqadd37826 fma  1   NaN  1      ->  NaN

+dqadd37827 fma  1   NaN  1000   ->  NaN

+dqadd37828 fma  1   NaN  Inf    ->  NaN

+dqadd37829 fma  1   NaN  NaN    ->  NaN

+dqadd37830 fma  1  -Inf  NaN    ->  NaN

+dqadd37831 fma  1  -1000 NaN    ->  NaN

+dqadd37832 fma  1  -1    NaN    ->  NaN

+dqadd37833 fma  1  -0    NaN    ->  NaN

+dqadd37834 fma  1   0    NaN    ->  NaN

+dqadd37835 fma  1   1    NaN    ->  NaN

+dqadd37836 fma  1   1000 NaN    ->  NaN

+dqadd37837 fma  1   Inf  NaN    ->  NaN

+

+dqadd37841 fma  1   sNaN -Inf   ->  NaN  Invalid_operation

+dqadd37842 fma  1   sNaN -1000  ->  NaN  Invalid_operation

+dqadd37843 fma  1   sNaN -1     ->  NaN  Invalid_operation

+dqadd37844 fma  1   sNaN -0     ->  NaN  Invalid_operation

+dqadd37845 fma  1   sNaN  0     ->  NaN  Invalid_operation

+dqadd37846 fma  1   sNaN  1     ->  NaN  Invalid_operation

+dqadd37847 fma  1   sNaN  1000  ->  NaN  Invalid_operation

+dqadd37848 fma  1   sNaN  NaN   ->  NaN  Invalid_operation

+dqadd37849 fma  1   sNaN sNaN   ->  NaN  Invalid_operation

+dqadd37850 fma  1   NaN  sNaN   ->  NaN  Invalid_operation

+dqadd37851 fma  1  -Inf  sNaN   ->  NaN  Invalid_operation

+dqadd37852 fma  1  -1000 sNaN   ->  NaN  Invalid_operation

+dqadd37853 fma  1  -1    sNaN   ->  NaN  Invalid_operation

+dqadd37854 fma  1  -0    sNaN   ->  NaN  Invalid_operation

+dqadd37855 fma  1   0    sNaN   ->  NaN  Invalid_operation

+dqadd37856 fma  1   1    sNaN   ->  NaN  Invalid_operation

+dqadd37857 fma  1   1000 sNaN   ->  NaN  Invalid_operation

+dqadd37858 fma  1   Inf  sNaN   ->  NaN  Invalid_operation

+dqadd37859 fma  1   NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqadd37861 fma  1   NaN1   -Inf    ->  NaN1

+dqadd37862 fma  1  +NaN2   -1000   ->  NaN2

+dqadd37863 fma  1   NaN3    1000   ->  NaN3

+dqadd37864 fma  1   NaN4    Inf    ->  NaN4

+dqadd37865 fma  1   NaN5   +NaN6   ->  NaN5

+dqadd37866 fma  1  -Inf     NaN7   ->  NaN7

+dqadd37867 fma  1  -1000    NaN8   ->  NaN8

+dqadd37868 fma  1   1000    NaN9   ->  NaN9

+dqadd37869 fma  1   Inf    +NaN10  ->  NaN10

+dqadd37871 fma  1   sNaN11  -Inf   ->  NaN11  Invalid_operation

+dqadd37872 fma  1   sNaN12  -1000  ->  NaN12  Invalid_operation

+dqadd37873 fma  1   sNaN13   1000  ->  NaN13  Invalid_operation

+dqadd37874 fma  1   sNaN14   NaN17 ->  NaN14  Invalid_operation

+dqadd37875 fma  1   sNaN15  sNaN18 ->  NaN15  Invalid_operation

+dqadd37876 fma  1   NaN16   sNaN19 ->  NaN19  Invalid_operation

+dqadd37877 fma  1  -Inf    +sNaN20 ->  NaN20  Invalid_operation

+dqadd37878 fma  1  -1000    sNaN21 ->  NaN21  Invalid_operation

+dqadd37879 fma  1   1000    sNaN22 ->  NaN22  Invalid_operation

+dqadd37880 fma  1   Inf     sNaN23 ->  NaN23  Invalid_operation

+dqadd37881 fma  1  +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+dqadd37882 fma  1  -NaN26    NaN28 -> -NaN26

+dqadd37883 fma  1  -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+dqadd37884 fma  1   1000    -NaN30 -> -NaN30

+dqadd37885 fma  1   1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- Here we explore near the boundary of rounding a subnormal to Nmin

+dqadd37575 fma  1   1E-6143 -1E-6176 ->  9.99999999999999999999999999999999E-6144 Subnormal

+dqadd37576 fma  1  -1E-6143 +1E-6176 -> -9.99999999999999999999999999999999E-6144 Subnormal

+

+-- check overflow edge case

+--               1234567890123456

+dqadd37972 apply       9.999999999999999999999999999999999E+6144         -> 9.999999999999999999999999999999999E+6144

+dqadd37973 fma  1      9.999999999999999999999999999999999E+6144  1      -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37974 fma  1       9999999999999999999999999999999999E+6111  1      -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37975 fma  1       9999999999999999999999999999999999E+6111  1E+6111  -> Infinity Overflow Inexact Rounded

+dqadd37976 fma  1       9999999999999999999999999999999999E+6111  9E+6110  -> Infinity Overflow Inexact Rounded

+dqadd37977 fma  1       9999999999999999999999999999999999E+6111  8E+6110  -> Infinity Overflow Inexact Rounded

+dqadd37978 fma  1       9999999999999999999999999999999999E+6111  7E+6110  -> Infinity Overflow Inexact Rounded

+dqadd37979 fma  1       9999999999999999999999999999999999E+6111  6E+6110  -> Infinity Overflow Inexact Rounded

+dqadd37980 fma  1       9999999999999999999999999999999999E+6111  5E+6110  -> Infinity Overflow Inexact Rounded

+dqadd37981 fma  1       9999999999999999999999999999999999E+6111  4E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37982 fma  1       9999999999999999999999999999999999E+6111  3E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37983 fma  1       9999999999999999999999999999999999E+6111  2E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37984 fma  1       9999999999999999999999999999999999E+6111  1E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded

+

+dqadd37985 apply      -9.999999999999999999999999999999999E+6144         -> -9.999999999999999999999999999999999E+6144

+dqadd37986 fma  1     -9.999999999999999999999999999999999E+6144 -1      -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37987 fma  1      -9999999999999999999999999999999999E+6111 -1      -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37988 fma  1      -9999999999999999999999999999999999E+6111 -1E+6111  -> -Infinity Overflow Inexact Rounded

+dqadd37989 fma  1      -9999999999999999999999999999999999E+6111 -9E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd37990 fma  1      -9999999999999999999999999999999999E+6111 -8E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd37991 fma  1      -9999999999999999999999999999999999E+6111 -7E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd37992 fma  1      -9999999999999999999999999999999999E+6111 -6E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd37993 fma  1      -9999999999999999999999999999999999E+6111 -5E+6110  -> -Infinity Overflow Inexact Rounded

+dqadd37994 fma  1      -9999999999999999999999999999999999E+6111 -4E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37995 fma  1      -9999999999999999999999999999999999E+6111 -3E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37996 fma  1      -9999999999999999999999999999999999E+6111 -2E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+dqadd37997 fma  1      -9999999999999999999999999999999999E+6111 -1E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded

+

+-- And for round down full and subnormal results

+rounding:     down

+dqadd371100 fma  1  1e+2 -1e-6143    -> 99.99999999999999999999999999999999 Rounded Inexact

+dqadd371101 fma  1  1e+1 -1e-6143    -> 9.999999999999999999999999999999999  Rounded Inexact

+dqadd371103 fma  1    +1 -1e-6143    -> 0.9999999999999999999999999999999999  Rounded Inexact

+dqadd371104 fma  1  1e-1 -1e-6143    -> 0.09999999999999999999999999999999999  Rounded Inexact

+dqadd371105 fma  1  1e-2 -1e-6143    -> 0.009999999999999999999999999999999999  Rounded Inexact

+dqadd371106 fma  1  1e-3 -1e-6143    -> 0.0009999999999999999999999999999999999  Rounded Inexact

+dqadd371107 fma  1  1e-4 -1e-6143    -> 0.00009999999999999999999999999999999999  Rounded Inexact

+dqadd371108 fma  1  1e-5 -1e-6143    -> 0.000009999999999999999999999999999999999  Rounded Inexact

+dqadd371109 fma  1  1e-6 -1e-6143    -> 9.999999999999999999999999999999999E-7  Rounded Inexact

+

+rounding:     ceiling

+dqadd371110 fma  1  -1e+2 +1e-6143   -> -99.99999999999999999999999999999999 Rounded Inexact

+dqadd371111 fma  1  -1e+1 +1e-6143   -> -9.999999999999999999999999999999999  Rounded Inexact

+dqadd371113 fma  1     -1 +1e-6143   -> -0.9999999999999999999999999999999999  Rounded Inexact

+dqadd371114 fma  1  -1e-1 +1e-6143   -> -0.09999999999999999999999999999999999  Rounded Inexact

+dqadd371115 fma  1  -1e-2 +1e-6143   -> -0.009999999999999999999999999999999999  Rounded Inexact

+dqadd371116 fma  1  -1e-3 +1e-6143   -> -0.0009999999999999999999999999999999999  Rounded Inexact

+dqadd371117 fma  1  -1e-4 +1e-6143   -> -0.00009999999999999999999999999999999999  Rounded Inexact

+dqadd371118 fma  1  -1e-5 +1e-6143   -> -0.000009999999999999999999999999999999999  Rounded Inexact

+dqadd371119 fma  1  -1e-6 +1e-6143   -> -9.999999999999999999999999999999999E-7  Rounded Inexact

+

+-- tests based on Gunnar Degnbol's edge case

+rounding:     half_even

+

+dqadd371300 fma  1  1E34  -0.5                 ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371310 fma  1  1E34  -0.51                ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371311 fma  1  1E34  -0.501               ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371312 fma  1  1E34  -0.5001              ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371313 fma  1  1E34  -0.50001             ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371314 fma  1  1E34  -0.500001            ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371315 fma  1  1E34  -0.5000001           ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371316 fma  1  1E34  -0.50000001          ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371317 fma  1  1E34  -0.500000001         ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371318 fma  1  1E34  -0.5000000001        ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371319 fma  1  1E34  -0.50000000001       ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371320 fma  1  1E34  -0.500000000001      ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371321 fma  1  1E34  -0.5000000000001     ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371322 fma  1  1E34  -0.50000000000001    ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371323 fma  1  1E34  -0.500000000000001   ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371324 fma  1  1E34  -0.5000000000000001  ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371325 fma  1  1E34  -0.5000000000000000  ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371326 fma  1  1E34  -0.500000000000000   ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371327 fma  1  1E34  -0.50000000000000    ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371328 fma  1  1E34  -0.5000000000000     ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371329 fma  1  1E34  -0.500000000000      ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371330 fma  1  1E34  -0.50000000000       ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371331 fma  1  1E34  -0.5000000000        ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371332 fma  1  1E34  -0.500000000         ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371333 fma  1  1E34  -0.50000000          ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371334 fma  1  1E34  -0.5000000           ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371335 fma  1  1E34  -0.500000            ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371336 fma  1  1E34  -0.50000             ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371337 fma  1  1E34  -0.5000              ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371338 fma  1  1E34  -0.500               ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371339 fma  1  1E34  -0.50                ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+

+dqadd371340 fma  1  1E34  -5000000.000010001   ->  9999999999999999999999999995000000      Inexact Rounded

+dqadd371341 fma  1  1E34  -5000000.000000001   ->  9999999999999999999999999995000000      Inexact Rounded

+

+dqadd371349 fma  1  9999999999999999999999999999999999 0.4                 ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371350 fma  1  9999999999999999999999999999999999 0.49                ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371351 fma  1  9999999999999999999999999999999999 0.499               ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371352 fma  1  9999999999999999999999999999999999 0.4999              ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371353 fma  1  9999999999999999999999999999999999 0.49999             ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371354 fma  1  9999999999999999999999999999999999 0.499999            ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371355 fma  1  9999999999999999999999999999999999 0.4999999           ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371356 fma  1  9999999999999999999999999999999999 0.49999999          ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371357 fma  1  9999999999999999999999999999999999 0.499999999         ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371358 fma  1  9999999999999999999999999999999999 0.4999999999        ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371359 fma  1  9999999999999999999999999999999999 0.49999999999       ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371360 fma  1  9999999999999999999999999999999999 0.499999999999      ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371361 fma  1  9999999999999999999999999999999999 0.4999999999999     ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371362 fma  1  9999999999999999999999999999999999 0.49999999999999    ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371363 fma  1  9999999999999999999999999999999999 0.499999999999999   ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371364 fma  1  9999999999999999999999999999999999 0.4999999999999999  ->  9999999999999999999999999999999999      Inexact Rounded

+dqadd371365 fma  1  9999999999999999999999999999999999 0.5000000000000000  ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371367 fma  1  9999999999999999999999999999999999 0.500000000000000   ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371368 fma  1  9999999999999999999999999999999999 0.50000000000000    ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371369 fma  1  9999999999999999999999999999999999 0.5000000000000     ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371370 fma  1  9999999999999999999999999999999999 0.500000000000      ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371371 fma  1  9999999999999999999999999999999999 0.50000000000       ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371372 fma  1  9999999999999999999999999999999999 0.5000000000        ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371373 fma  1  9999999999999999999999999999999999 0.500000000         ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371374 fma  1  9999999999999999999999999999999999 0.50000000          ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371375 fma  1  9999999999999999999999999999999999 0.5000000           ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371376 fma  1  9999999999999999999999999999999999 0.500000            ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371377 fma  1  9999999999999999999999999999999999 0.50000             ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371378 fma  1  9999999999999999999999999999999999 0.5000              ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371379 fma  1  9999999999999999999999999999999999 0.500               ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371380 fma  1  9999999999999999999999999999999999 0.50                ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371381 fma  1  9999999999999999999999999999999999 0.5                 ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371382 fma  1  9999999999999999999999999999999999 0.5000000000000001  ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371383 fma  1  9999999999999999999999999999999999 0.500000000000001   ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371384 fma  1  9999999999999999999999999999999999 0.50000000000001    ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371385 fma  1  9999999999999999999999999999999999 0.5000000000001     ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371386 fma  1  9999999999999999999999999999999999 0.500000000001      ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371387 fma  1  9999999999999999999999999999999999 0.50000000001       ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371388 fma  1  9999999999999999999999999999999999 0.5000000001        ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371389 fma  1  9999999999999999999999999999999999 0.500000001         ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371390 fma  1  9999999999999999999999999999999999 0.50000001          ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371391 fma  1  9999999999999999999999999999999999 0.5000001           ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371392 fma  1  9999999999999999999999999999999999 0.500001            ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371393 fma  1  9999999999999999999999999999999999 0.50001             ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371394 fma  1  9999999999999999999999999999999999 0.5001              ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371395 fma  1  9999999999999999999999999999999999 0.501               ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+dqadd371396 fma  1  9999999999999999999999999999999999 0.51                ->  1.000000000000000000000000000000000E+34 Inexact Rounded

+

+-- More GD edge cases, where difference between the unadjusted

+-- exponents is larger than the maximum precision and one side is 0

+dqadd371420 fma  1   0 1.123456789987654321123456789012345     -> 1.123456789987654321123456789012345

+dqadd371421 fma  1   0 1.123456789987654321123456789012345E-1  -> 0.1123456789987654321123456789012345

+dqadd371422 fma  1   0 1.123456789987654321123456789012345E-2  -> 0.01123456789987654321123456789012345

+dqadd371423 fma  1   0 1.123456789987654321123456789012345E-3  -> 0.001123456789987654321123456789012345

+dqadd371424 fma  1   0 1.123456789987654321123456789012345E-4  -> 0.0001123456789987654321123456789012345

+dqadd371425 fma  1   0 1.123456789987654321123456789012345E-5  -> 0.00001123456789987654321123456789012345

+dqadd371426 fma  1   0 1.123456789987654321123456789012345E-6  -> 0.000001123456789987654321123456789012345

+dqadd371427 fma  1   0 1.123456789987654321123456789012345E-7  -> 1.123456789987654321123456789012345E-7

+dqadd371428 fma  1   0 1.123456789987654321123456789012345E-8  -> 1.123456789987654321123456789012345E-8

+dqadd371429 fma  1   0 1.123456789987654321123456789012345E-9  -> 1.123456789987654321123456789012345E-9

+dqadd371430 fma  1   0 1.123456789987654321123456789012345E-10 -> 1.123456789987654321123456789012345E-10

+dqadd371431 fma  1   0 1.123456789987654321123456789012345E-11 -> 1.123456789987654321123456789012345E-11

+dqadd371432 fma  1   0 1.123456789987654321123456789012345E-12 -> 1.123456789987654321123456789012345E-12

+dqadd371433 fma  1   0 1.123456789987654321123456789012345E-13 -> 1.123456789987654321123456789012345E-13

+dqadd371434 fma  1   0 1.123456789987654321123456789012345E-14 -> 1.123456789987654321123456789012345E-14

+dqadd371435 fma  1   0 1.123456789987654321123456789012345E-15 -> 1.123456789987654321123456789012345E-15

+dqadd371436 fma  1   0 1.123456789987654321123456789012345E-16 -> 1.123456789987654321123456789012345E-16

+dqadd371437 fma  1   0 1.123456789987654321123456789012345E-17 -> 1.123456789987654321123456789012345E-17

+dqadd371438 fma  1   0 1.123456789987654321123456789012345E-18 -> 1.123456789987654321123456789012345E-18

+dqadd371439 fma  1   0 1.123456789987654321123456789012345E-19 -> 1.123456789987654321123456789012345E-19

+dqadd371440 fma  1   0 1.123456789987654321123456789012345E-20 -> 1.123456789987654321123456789012345E-20

+dqadd371441 fma  1   0 1.123456789987654321123456789012345E-21 -> 1.123456789987654321123456789012345E-21

+dqadd371442 fma  1   0 1.123456789987654321123456789012345E-22 -> 1.123456789987654321123456789012345E-22

+dqadd371443 fma  1   0 1.123456789987654321123456789012345E-23 -> 1.123456789987654321123456789012345E-23

+dqadd371444 fma  1   0 1.123456789987654321123456789012345E-24 -> 1.123456789987654321123456789012345E-24

+dqadd371445 fma  1   0 1.123456789987654321123456789012345E-25 -> 1.123456789987654321123456789012345E-25

+dqadd371446 fma  1   0 1.123456789987654321123456789012345E-26 -> 1.123456789987654321123456789012345E-26

+dqadd371447 fma  1   0 1.123456789987654321123456789012345E-27 -> 1.123456789987654321123456789012345E-27

+dqadd371448 fma  1   0 1.123456789987654321123456789012345E-28 -> 1.123456789987654321123456789012345E-28

+dqadd371449 fma  1   0 1.123456789987654321123456789012345E-29 -> 1.123456789987654321123456789012345E-29

+dqadd371450 fma  1   0 1.123456789987654321123456789012345E-30 -> 1.123456789987654321123456789012345E-30

+dqadd371451 fma  1   0 1.123456789987654321123456789012345E-31 -> 1.123456789987654321123456789012345E-31

+dqadd371452 fma  1   0 1.123456789987654321123456789012345E-32 -> 1.123456789987654321123456789012345E-32

+dqadd371453 fma  1   0 1.123456789987654321123456789012345E-33 -> 1.123456789987654321123456789012345E-33

+dqadd371454 fma  1   0 1.123456789987654321123456789012345E-34 -> 1.123456789987654321123456789012345E-34

+dqadd371455 fma  1   0 1.123456789987654321123456789012345E-35 -> 1.123456789987654321123456789012345E-35

+dqadd371456 fma  1   0 1.123456789987654321123456789012345E-36 -> 1.123456789987654321123456789012345E-36

+

+-- same, reversed 0

+dqadd371460 fma  1  1.123456789987654321123456789012345     0 -> 1.123456789987654321123456789012345

+dqadd371461 fma  1  1.123456789987654321123456789012345E-1  0 -> 0.1123456789987654321123456789012345

+dqadd371462 fma  1  1.123456789987654321123456789012345E-2  0 -> 0.01123456789987654321123456789012345

+dqadd371463 fma  1  1.123456789987654321123456789012345E-3  0 -> 0.001123456789987654321123456789012345

+dqadd371464 fma  1  1.123456789987654321123456789012345E-4  0 -> 0.0001123456789987654321123456789012345

+dqadd371465 fma  1  1.123456789987654321123456789012345E-5  0 -> 0.00001123456789987654321123456789012345

+dqadd371466 fma  1  1.123456789987654321123456789012345E-6  0 -> 0.000001123456789987654321123456789012345

+dqadd371467 fma  1  1.123456789987654321123456789012345E-7  0 -> 1.123456789987654321123456789012345E-7

+dqadd371468 fma  1  1.123456789987654321123456789012345E-8  0 -> 1.123456789987654321123456789012345E-8

+dqadd371469 fma  1  1.123456789987654321123456789012345E-9  0 -> 1.123456789987654321123456789012345E-9

+dqadd371470 fma  1  1.123456789987654321123456789012345E-10 0 -> 1.123456789987654321123456789012345E-10

+dqadd371471 fma  1  1.123456789987654321123456789012345E-11 0 -> 1.123456789987654321123456789012345E-11

+dqadd371472 fma  1  1.123456789987654321123456789012345E-12 0 -> 1.123456789987654321123456789012345E-12

+dqadd371473 fma  1  1.123456789987654321123456789012345E-13 0 -> 1.123456789987654321123456789012345E-13

+dqadd371474 fma  1  1.123456789987654321123456789012345E-14 0 -> 1.123456789987654321123456789012345E-14

+dqadd371475 fma  1  1.123456789987654321123456789012345E-15 0 -> 1.123456789987654321123456789012345E-15

+dqadd371476 fma  1  1.123456789987654321123456789012345E-16 0 -> 1.123456789987654321123456789012345E-16

+dqadd371477 fma  1  1.123456789987654321123456789012345E-17 0 -> 1.123456789987654321123456789012345E-17

+dqadd371478 fma  1  1.123456789987654321123456789012345E-18 0 -> 1.123456789987654321123456789012345E-18

+dqadd371479 fma  1  1.123456789987654321123456789012345E-19 0 -> 1.123456789987654321123456789012345E-19

+dqadd371480 fma  1  1.123456789987654321123456789012345E-20 0 -> 1.123456789987654321123456789012345E-20

+dqadd371481 fma  1  1.123456789987654321123456789012345E-21 0 -> 1.123456789987654321123456789012345E-21

+dqadd371482 fma  1  1.123456789987654321123456789012345E-22 0 -> 1.123456789987654321123456789012345E-22

+dqadd371483 fma  1  1.123456789987654321123456789012345E-23 0 -> 1.123456789987654321123456789012345E-23

+dqadd371484 fma  1  1.123456789987654321123456789012345E-24 0 -> 1.123456789987654321123456789012345E-24

+dqadd371485 fma  1  1.123456789987654321123456789012345E-25 0 -> 1.123456789987654321123456789012345E-25

+dqadd371486 fma  1  1.123456789987654321123456789012345E-26 0 -> 1.123456789987654321123456789012345E-26

+dqadd371487 fma  1  1.123456789987654321123456789012345E-27 0 -> 1.123456789987654321123456789012345E-27

+dqadd371488 fma  1  1.123456789987654321123456789012345E-28 0 -> 1.123456789987654321123456789012345E-28

+dqadd371489 fma  1  1.123456789987654321123456789012345E-29 0 -> 1.123456789987654321123456789012345E-29

+dqadd371490 fma  1  1.123456789987654321123456789012345E-30 0 -> 1.123456789987654321123456789012345E-30

+dqadd371491 fma  1  1.123456789987654321123456789012345E-31 0 -> 1.123456789987654321123456789012345E-31

+dqadd371492 fma  1  1.123456789987654321123456789012345E-32 0 -> 1.123456789987654321123456789012345E-32

+dqadd371493 fma  1  1.123456789987654321123456789012345E-33 0 -> 1.123456789987654321123456789012345E-33

+dqadd371494 fma  1  1.123456789987654321123456789012345E-34 0 -> 1.123456789987654321123456789012345E-34

+dqadd371495 fma  1  1.123456789987654321123456789012345E-35 0 -> 1.123456789987654321123456789012345E-35

+dqadd371496 fma  1  1.123456789987654321123456789012345E-36 0 -> 1.123456789987654321123456789012345E-36

+

+-- same, Es on the 0

+dqadd371500 fma  1  1.123456789987654321123456789012345  0E-0   -> 1.123456789987654321123456789012345

+dqadd371501 fma  1  1.123456789987654321123456789012345  0E-1   -> 1.123456789987654321123456789012345

+dqadd371502 fma  1  1.123456789987654321123456789012345  0E-2   -> 1.123456789987654321123456789012345

+dqadd371503 fma  1  1.123456789987654321123456789012345  0E-3   -> 1.123456789987654321123456789012345

+dqadd371504 fma  1  1.123456789987654321123456789012345  0E-4   -> 1.123456789987654321123456789012345

+dqadd371505 fma  1  1.123456789987654321123456789012345  0E-5   -> 1.123456789987654321123456789012345

+dqadd371506 fma  1  1.123456789987654321123456789012345  0E-6   -> 1.123456789987654321123456789012345

+dqadd371507 fma  1  1.123456789987654321123456789012345  0E-7   -> 1.123456789987654321123456789012345

+dqadd371508 fma  1  1.123456789987654321123456789012345  0E-8   -> 1.123456789987654321123456789012345

+dqadd371509 fma  1  1.123456789987654321123456789012345  0E-9   -> 1.123456789987654321123456789012345

+dqadd371510 fma  1  1.123456789987654321123456789012345  0E-10  -> 1.123456789987654321123456789012345

+dqadd371511 fma  1  1.123456789987654321123456789012345  0E-11  -> 1.123456789987654321123456789012345

+dqadd371512 fma  1  1.123456789987654321123456789012345  0E-12  -> 1.123456789987654321123456789012345

+dqadd371513 fma  1  1.123456789987654321123456789012345  0E-13  -> 1.123456789987654321123456789012345

+dqadd371514 fma  1  1.123456789987654321123456789012345  0E-14  -> 1.123456789987654321123456789012345

+dqadd371515 fma  1  1.123456789987654321123456789012345  0E-15  -> 1.123456789987654321123456789012345

+dqadd371516 fma  1  1.123456789987654321123456789012345  0E-16  -> 1.123456789987654321123456789012345

+dqadd371517 fma  1  1.123456789987654321123456789012345  0E-17  -> 1.123456789987654321123456789012345

+dqadd371518 fma  1  1.123456789987654321123456789012345  0E-18  -> 1.123456789987654321123456789012345

+dqadd371519 fma  1  1.123456789987654321123456789012345  0E-19  -> 1.123456789987654321123456789012345

+dqadd371520 fma  1  1.123456789987654321123456789012345  0E-20  -> 1.123456789987654321123456789012345

+dqadd371521 fma  1  1.123456789987654321123456789012345  0E-21  -> 1.123456789987654321123456789012345

+dqadd371522 fma  1  1.123456789987654321123456789012345  0E-22  -> 1.123456789987654321123456789012345

+dqadd371523 fma  1  1.123456789987654321123456789012345  0E-23  -> 1.123456789987654321123456789012345

+dqadd371524 fma  1  1.123456789987654321123456789012345  0E-24  -> 1.123456789987654321123456789012345

+dqadd371525 fma  1  1.123456789987654321123456789012345  0E-25  -> 1.123456789987654321123456789012345

+dqadd371526 fma  1  1.123456789987654321123456789012345  0E-26  -> 1.123456789987654321123456789012345

+dqadd371527 fma  1  1.123456789987654321123456789012345  0E-27  -> 1.123456789987654321123456789012345

+dqadd371528 fma  1  1.123456789987654321123456789012345  0E-28  -> 1.123456789987654321123456789012345

+dqadd371529 fma  1  1.123456789987654321123456789012345  0E-29  -> 1.123456789987654321123456789012345

+dqadd371530 fma  1  1.123456789987654321123456789012345  0E-30  -> 1.123456789987654321123456789012345

+dqadd371531 fma  1  1.123456789987654321123456789012345  0E-31  -> 1.123456789987654321123456789012345

+dqadd371532 fma  1  1.123456789987654321123456789012345  0E-32  -> 1.123456789987654321123456789012345

+dqadd371533 fma  1  1.123456789987654321123456789012345  0E-33  -> 1.123456789987654321123456789012345

+-- next four flag Rounded because the 0 extends the result

+dqadd371534 fma  1  1.123456789987654321123456789012345  0E-34  -> 1.123456789987654321123456789012345 Rounded

+dqadd371535 fma  1  1.123456789987654321123456789012345  0E-35  -> 1.123456789987654321123456789012345 Rounded

+dqadd371536 fma  1  1.123456789987654321123456789012345  0E-36  -> 1.123456789987654321123456789012345 Rounded

+dqadd371537 fma  1  1.123456789987654321123456789012345  0E-37  -> 1.123456789987654321123456789012345 Rounded

+

+-- sum of two opposite-sign operands is exactly 0 and floor => -0

+rounding:    half_up

+-- exact zeros from zeros

+dqadd371600 fma  1   0        0E-19  ->  0E-19

+dqadd371601 fma  1  -0        0E-19  ->  0E-19

+dqadd371602 fma  1   0       -0E-19  ->  0E-19

+dqadd371603 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd371611 fma  1  -11      11    ->  0

+dqadd371612 fma  1   11     -11    ->  0

+-- overflow

+dqadd371613 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded

+dqadd371614 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded

+

+rounding:    half_down

+-- exact zeros from zeros

+dqadd371620 fma  1   0        0E-19  ->  0E-19

+dqadd371621 fma  1  -0        0E-19  ->  0E-19

+dqadd371622 fma  1   0       -0E-19  ->  0E-19

+dqadd371623 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd371631 fma  1  -11      11    ->  0

+dqadd371632 fma  1   11     -11    ->  0

+-- overflow

+dqadd371633 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded

+dqadd371634 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded

+

+rounding:    half_even

+-- exact zeros from zeros

+dqadd371640 fma  1   0        0E-19  ->  0E-19

+dqadd371641 fma  1  -0        0E-19  ->  0E-19

+dqadd371642 fma  1   0       -0E-19  ->  0E-19

+dqadd371643 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd371651 fma  1  -11      11    ->  0

+dqadd371652 fma  1   11     -11    ->  0

+-- overflow

+dqadd371653 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded

+dqadd371654 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded

+

+rounding:    up

+-- exact zeros from zeros

+dqadd371660 fma  1   0        0E-19  ->  0E-19

+dqadd371661 fma  1  -0        0E-19  ->  0E-19

+dqadd371662 fma  1   0       -0E-19  ->  0E-19

+dqadd371663 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd371671 fma  1  -11      11    ->  0

+dqadd371672 fma  1   11     -11    ->  0

+-- overflow

+dqadd371673 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded

+dqadd371674 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded

+

+rounding:    down

+-- exact zeros from zeros

+dqadd371680 fma  1   0        0E-19  ->  0E-19

+dqadd371681 fma  1  -0        0E-19  ->  0E-19

+dqadd371682 fma  1   0       -0E-19  ->  0E-19

+dqadd371683 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd371691 fma  1  -11      11    ->  0

+dqadd371692 fma  1   11     -11    ->  0

+-- overflow

+dqadd371693 fma  9E6144 10   1     ->  9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded

+dqadd371694 fma -9E6144 10   1     -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded

+

+rounding:    ceiling

+-- exact zeros from zeros

+dqadd371700 fma  1   0        0E-19  ->  0E-19

+dqadd371701 fma  1  -0        0E-19  ->  0E-19

+dqadd371702 fma  1   0       -0E-19  ->  0E-19

+dqadd371703 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd371711 fma  1  -11      11    ->  0

+dqadd371712 fma  1   11     -11    ->  0

+-- overflow

+dqadd371713 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded

+dqadd371714 fma -9E6144 10   1     -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded

+

+-- and the extra-special ugly case; unusual minuses marked by -- *

+rounding:    floor

+-- exact zeros from zeros

+dqadd371720 fma  1   0        0E-19  ->  0E-19

+dqadd371721 fma  1  -0        0E-19  -> -0E-19           -- *

+dqadd371722 fma  1   0       -0E-19  -> -0E-19           -- *

+dqadd371723 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd371731 fma  1  -11      11    ->  -0                -- *

+dqadd371732 fma  1   11     -11    ->  -0                -- *

+-- overflow

+dqadd371733 fma  9E6144 10   1     ->  9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded

+dqadd371734 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded

+

+rounding:    05up

+-- exact zeros from zeros

+dqadd371740 fma  1   0        0E-19  ->  0E-19

+dqadd371741 fma  1  -0        0E-19  ->  0E-19

+dqadd371742 fma  1   0       -0E-19  ->  0E-19

+dqadd371743 fma  1  -0       -0E-19  -> -0E-19

+-- exact zeros from non-zeros

+dqadd371751 fma  1  -11      11    ->  0

+dqadd371752 fma  1   11     -11    ->  0

+-- overflow

+dqadd371753 fma  9E6144 10   1     ->  9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded

+dqadd371754 fma -9E6144 10   1     -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+dqadd371761 fma  1  130E-2    120E-2    -> 2.50

+dqadd371762 fma  1  130E-2    12E-1     -> 2.50

+dqadd371763 fma  1  130E-2    1E0       -> 2.30

+dqadd371764 fma  1  1E2       1E4       -> 1.01E+4

+dqadd371765 fma  1  130E-2   -120E-2 -> 0.10

+dqadd371766 fma  1  130E-2   -12E-1  -> 0.10

+dqadd371767 fma  1  130E-2   -1E0    -> 0.30

+dqadd371768 fma  1  1E2      -1E4    -> -9.9E+3

+

+-- Gappy coefficients; check residue handling even with full coefficient gap

+rounding: half_even

+

+dqadd375001 fma  1  1239876543211234567894567890123456 1      -> 1239876543211234567894567890123457

+dqadd375002 fma  1  1239876543211234567894567890123456 0.6    -> 1239876543211234567894567890123457  Inexact Rounded

+dqadd375003 fma  1  1239876543211234567894567890123456 0.06   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375004 fma  1  1239876543211234567894567890123456 6E-3   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375005 fma  1  1239876543211234567894567890123456 6E-4   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375006 fma  1  1239876543211234567894567890123456 6E-5   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375007 fma  1  1239876543211234567894567890123456 6E-6   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375008 fma  1  1239876543211234567894567890123456 6E-7   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375009 fma  1  1239876543211234567894567890123456 6E-8   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375010 fma  1  1239876543211234567894567890123456 6E-9   -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375011 fma  1  1239876543211234567894567890123456 6E-10  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375012 fma  1  1239876543211234567894567890123456 6E-11  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375013 fma  1  1239876543211234567894567890123456 6E-12  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375014 fma  1  1239876543211234567894567890123456 6E-13  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375015 fma  1  1239876543211234567894567890123456 6E-14  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375016 fma  1  1239876543211234567894567890123456 6E-15  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375017 fma  1  1239876543211234567894567890123456 6E-16  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375018 fma  1  1239876543211234567894567890123456 6E-17  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375019 fma  1  1239876543211234567894567890123456 6E-18  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375020 fma  1  1239876543211234567894567890123456 6E-19  -> 1239876543211234567894567890123456  Inexact Rounded

+dqadd375021 fma  1  1239876543211234567894567890123456 6E-20  -> 1239876543211234567894567890123456  Inexact Rounded

+

+-- widening second argument at gap

+dqadd375030 fma  1  12398765432112345678945678 1                       -> 12398765432112345678945679

+dqadd375031 fma  1  12398765432112345678945678 0.1                     -> 12398765432112345678945678.1

+dqadd375032 fma  1  12398765432112345678945678 0.12                    -> 12398765432112345678945678.12

+dqadd375033 fma  1  12398765432112345678945678 0.123                   -> 12398765432112345678945678.123

+dqadd375034 fma  1  12398765432112345678945678 0.1234                  -> 12398765432112345678945678.1234

+dqadd375035 fma  1  12398765432112345678945678 0.12345                 -> 12398765432112345678945678.12345

+dqadd375036 fma  1  12398765432112345678945678 0.123456                -> 12398765432112345678945678.123456

+dqadd375037 fma  1  12398765432112345678945678 0.1234567               -> 12398765432112345678945678.1234567

+dqadd375038 fma  1  12398765432112345678945678 0.12345678              -> 12398765432112345678945678.12345678

+dqadd375039 fma  1  12398765432112345678945678 0.123456789             -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd375040 fma  1  12398765432112345678945678 0.123456785             -> 12398765432112345678945678.12345678 Inexact Rounded

+dqadd375041 fma  1  12398765432112345678945678 0.1234567850            -> 12398765432112345678945678.12345678 Inexact Rounded

+dqadd375042 fma  1  12398765432112345678945678 0.1234567851            -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd375043 fma  1  12398765432112345678945678 0.12345678501           -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd375044 fma  1  12398765432112345678945678 0.123456785001          -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd375045 fma  1  12398765432112345678945678 0.1234567850001         -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd375046 fma  1  12398765432112345678945678 0.12345678500001        -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd375047 fma  1  12398765432112345678945678 0.123456785000001       -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd375048 fma  1  12398765432112345678945678 0.1234567850000001      -> 12398765432112345678945678.12345679 Inexact Rounded

+dqadd375049 fma  1  12398765432112345678945678 0.1234567850000000      -> 12398765432112345678945678.12345678 Inexact Rounded

+--                               90123456

+rounding: half_even

+dqadd375050 fma  1  12398765432112345678945678 0.0234567750000000      -> 12398765432112345678945678.02345678 Inexact Rounded

+dqadd375051 fma  1  12398765432112345678945678 0.0034567750000000      -> 12398765432112345678945678.00345678 Inexact Rounded

+dqadd375052 fma  1  12398765432112345678945678 0.0004567750000000      -> 12398765432112345678945678.00045678 Inexact Rounded

+dqadd375053 fma  1  12398765432112345678945678 0.0000567750000000      -> 12398765432112345678945678.00005678 Inexact Rounded

+dqadd375054 fma  1  12398765432112345678945678 0.0000067750000000      -> 12398765432112345678945678.00000678 Inexact Rounded

+dqadd375055 fma  1  12398765432112345678945678 0.0000007750000000      -> 12398765432112345678945678.00000078 Inexact Rounded

+dqadd375056 fma  1  12398765432112345678945678 0.0000000750000000      -> 12398765432112345678945678.00000008 Inexact Rounded

+dqadd375057 fma  1  12398765432112345678945678 0.0000000050000000      -> 12398765432112345678945678.00000000 Inexact Rounded

+dqadd375060 fma  1  12398765432112345678945678 0.0234567750000001      -> 12398765432112345678945678.02345678 Inexact Rounded

+dqadd375061 fma  1  12398765432112345678945678 0.0034567750000001      -> 12398765432112345678945678.00345678 Inexact Rounded

+dqadd375062 fma  1  12398765432112345678945678 0.0004567750000001      -> 12398765432112345678945678.00045678 Inexact Rounded

+dqadd375063 fma  1  12398765432112345678945678 0.0000567750000001      -> 12398765432112345678945678.00005678 Inexact Rounded

+dqadd375064 fma  1  12398765432112345678945678 0.0000067750000001      -> 12398765432112345678945678.00000678 Inexact Rounded

+dqadd375065 fma  1  12398765432112345678945678 0.0000007750000001      -> 12398765432112345678945678.00000078 Inexact Rounded

+dqadd375066 fma  1  12398765432112345678945678 0.0000000750000001      -> 12398765432112345678945678.00000008 Inexact Rounded

+dqadd375067 fma  1  12398765432112345678945678 0.0000000050000001      -> 12398765432112345678945678.00000001 Inexact Rounded

+-- far-out residues (full coefficient gap is 16+15 digits)

+rounding: up

+dqadd375070 fma  1  12398765432112345678945678 1E-8                    -> 12398765432112345678945678.00000001

+dqadd375071 fma  1  12398765432112345678945678 1E-9                    -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375072 fma  1  12398765432112345678945678 1E-10                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375073 fma  1  12398765432112345678945678 1E-11                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375074 fma  1  12398765432112345678945678 1E-12                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375075 fma  1  12398765432112345678945678 1E-13                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375076 fma  1  12398765432112345678945678 1E-14                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375077 fma  1  12398765432112345678945678 1E-15                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375078 fma  1  12398765432112345678945678 1E-16                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375079 fma  1  12398765432112345678945678 1E-17                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375080 fma  1  12398765432112345678945678 1E-18                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375081 fma  1  12398765432112345678945678 1E-19                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375082 fma  1  12398765432112345678945678 1E-20                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375083 fma  1  12398765432112345678945678 1E-25                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375084 fma  1  12398765432112345678945678 1E-30                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375085 fma  1  12398765432112345678945678 1E-31                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375086 fma  1  12398765432112345678945678 1E-32                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375087 fma  1  12398765432112345678945678 1E-33                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375088 fma  1  12398765432112345678945678 1E-34                   -> 12398765432112345678945678.00000001 Inexact Rounded

+dqadd375089 fma  1  12398765432112345678945678 1E-35                   -> 12398765432112345678945678.00000001 Inexact Rounded

+

+-- Destructive subtract (from remainder tests)

+

+-- +++ some of these will be off-by-one remainder vs remainderNear

+

+dqfma4000  fma  -1234567890123456789012345678901233   1.000000000000000000000000000000001    1234567890123456789012345678901234  ->  -0.234567890123456789012345678901233

+dqfma4001  fma  -1234567890123456789012345678901222    1.00000000000000000000000000000001    1234567890123456789012345678901234  ->  -0.34567890123456789012345678901222

+dqfma4002  fma  -1234567890123456789012345678901111     1.0000000000000000000000000000001    1234567890123456789012345678901234  ->  -0.4567890123456789012345678901111

+dqfma4003  fma   -308641972530864197253086419725314   4.000000000000000000000000000000001    1234567890123456789012345678901255  ->  -1.308641972530864197253086419725314

+dqfma4004  fma   -308641972530864197253086419725308   4.000000000000000000000000000000001    1234567890123456789012345678901234  ->  1.691358027469135802746913580274692

+dqfma4005  fma   -246913578024691357802469135780252     4.9999999999999999999999999999999    1234567890123456789012345678901234  ->  -1.3086421975308642197530864219748

+dqfma4006  fma   -246913578024691357802469135780247    4.99999999999999999999999999999999    1234567890123456789012345678901234  ->  1.46913578024691357802469135780247

+dqfma4007  fma   -246913578024691357802469135780247   4.999999999999999999999999999999999    1234567890123456789012345678901234  ->  -0.753086421975308642197530864219753

+dqfma4008  fma   -246913578024691357802469135780247   5.000000000000000000000000000000001    1234567890123456789012345678901234  ->  -1.246913578024691357802469135780247

+dqfma4009  fma   -246913578024691357802469135780246    5.00000000000000000000000000000001    1234567890123456789012345678901234  ->  1.53086421975308642197530864219754

+dqfma4010  fma   -246913578024691357802469135780242     5.0000000000000000000000000000001    1234567890123456789012345678901234  ->  -0.6913578024691357802469135780242

+dqfma4011  fma  -1234567890123456789012345678901232   1.000000000000000000000000000000001    1234567890123456789012345678901234  ->  0.765432109876543210987654321098768

+dqfma4012  fma  -1234567890123456789012345678901221    1.00000000000000000000000000000001    1234567890123456789012345678901234  ->  0.65432109876543210987654321098779

+dqfma4013  fma  -1234567890123456789012345678901110     1.0000000000000000000000000000001    1234567890123456789012345678901234  ->  0.5432109876543210987654321098890

+dqfma4014  fma   -308641972530864197253086419725313   4.000000000000000000000000000000001    1234567890123456789012345678901255  ->  2.691358027469135802746913580274687

+dqfma4015  fma   -308641972530864197253086419725308   4.000000000000000000000000000000001    1234567890123456789012345678901234  ->  1.691358027469135802746913580274692

+dqfma4016  fma   -246913578024691357802469135780251     4.9999999999999999999999999999999    1234567890123456789012345678901234  ->  3.6913578024691357802469135780251

+dqfma4017  fma   -246913578024691357802469135780247    4.99999999999999999999999999999999    1234567890123456789012345678901234  ->  1.46913578024691357802469135780247

+dqfma4018  fma   -246913578024691357802469135780246   4.999999999999999999999999999999999    1234567890123456789012345678901234  ->  4.246913578024691357802469135780246

+dqfma4019  fma   -246913578024691357802469135780241     5.0000000000000000000000000000001    1234567890123456789012345678901234  ->  4.3086421975308642197530864219759

+

+-- Null tests

+dqadd39990 fma  1  10  # -> NaN Invalid_operation

+dqadd39991 fma  1   # 10 -> NaN Invalid_operation

+

+

diff --git a/Lib/test/decimaltestdata/dqInvert.decTest b/Lib/test/decimaltestdata/dqInvert.decTest
new file mode 100644
index 0000000..19161c2
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqInvert.decTest
@@ -0,0 +1,245 @@
+------------------------------------------------------------------------

+-- dqInvert.decTest -- digitwise logical INVERT for decQuads          --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check (truth table)

+dqinv001 invert             0 -> 1111111111111111111111111111111111

+dqinv002 invert             1 -> 1111111111111111111111111111111110

+dqinv003 invert            10 -> 1111111111111111111111111111111101

+dqinv004 invert     111111111 -> 1111111111111111111111111000000000

+dqinv005 invert     000000000 -> 1111111111111111111111111111111111

+-- and at msd and msd-1

+dqinv007 invert 0000000000000000000000000000000000 ->   1111111111111111111111111111111111

+dqinv008 invert 1000000000000000000000000000000000 ->    111111111111111111111111111111111

+dqinv009 invert 0000000000000000000000000000000000 ->   1111111111111111111111111111111111

+dqinv010 invert 0100000000000000000000000000000000 ->   1011111111111111111111111111111111

+dqinv011 invert 0111111111111111111111111111111111 ->   1000000000000000000000000000000000

+dqinv012 invert 1111111111111111111111111111111111 ->                  0

+dqinv013 invert 0011111111111111111111111111111111 ->   1100000000000000000000000000000000

+dqinv014 invert 0111111111111111111111111111111111 ->   1000000000000000000000000000000000

+

+-- Various lengths

+dqinv600 invert 0111111111111111111011111111111111 ->   1000000000000000000100000000000000

+dqinv601 invert 0011111111111111110101111111111111 ->   1100000000000000001010000000000000

+dqinv602 invert 0101111111111111101110111111111111 ->   1010000000000000010001000000000000

+dqinv603 invert 0110111111111111011111011111111111 ->   1001000000000000100000100000000000

+dqinv604 invert 0111011111111110111111101111111111 ->   1000100000000001000000010000000000

+dqinv605 invert 0111101111111101111111110111111111 ->   1000010000000010000000001000000000

+dqinv606 invert 0111110111111011111111111011111111 ->   1000001000000100000000000100000000

+dqinv607 invert 0111111011110111111111111101111111 ->   1000000100001000000000000010000000

+dqinv608 invert 0111111101101111111111111110111111 ->   1000000010010000000000000001000000

+dqinv609 invert 0111111110011111111111111111011111 ->   1000000001100000000000000000100000

+dqinv610 invert 0111111110011111111111111111101111 ->   1000000001100000000000000000010000

+dqinv611 invert 0111111101101111111111111111110111 ->   1000000010010000000000000000001000

+dqinv612 invert 0111111011110111111111111111111011 ->   1000000100001000000000000000000100

+dqinv613 invert 0111110111111011111111111111111101 ->   1000001000000100000000000000000010

+dqinv614 invert 0111101111111101111111111111111110 ->   1000010000000010000000000000000001

+dqinv615 invert 0111011111111110111111111111111111 ->   1000100000000001000000000000000000

+dqinv616 invert 0110111111111111011111111111111110 ->   1001000000000000100000000000000001

+dqinv617 invert 0101111111111111101111111111111101 ->   1010000000000000010000000000000010

+dqinv618 invert 0011111111111111110111111111111011 ->   1100000000000000001000000000000100

+dqinv619 invert 0101111111111111111011111111110111 ->   1010000000000000000100000000001000

+dqinv620 invert 0110111111111111111101111111101111 ->   1001000000000000000010000000010000

+dqinv621 invert 0111011111111111111110111111011111 ->   1000100000000000000001000000100000

+dqinv622 invert 0111101111111111111111011110111111 ->   1000010000000000000000100001000000

+dqinv623 invert 0111110111111111111111101101111111 ->   1000001000000000000000010010000000

+dqinv624 invert 0111111011111111111111110011111111 ->   1000000100000000000000001100000000

+dqinv625 invert 0111111101111111111111110011111111 ->   1000000010000000000000001100000000

+dqinv626 invert 0111111110111111111111101101111111 ->   1000000001000000000000010010000000

+dqinv627 invert 0111111111011111111111011110111111 ->   1000000000100000000000100001000000

+dqinv628 invert 0111111111101111111110111111011111 ->   1000000000010000000001000000100000

+dqinv629 invert 0111111111110111111101111111101111 ->   1000000000001000000010000000010000

+dqinv630 invert 0111111111111011111011111111110111 ->   1000000000000100000100000000001000

+dqinv631 invert 0111111111111101110111111111111011 ->   1000000000000010001000000000000100

+dqinv632 invert 0111111111111110101111111111111101 ->   1000000000000001010000000000000010

+dqinv633 invert 0111111111111111011111111111111110 ->   1000000000000000100000000000000001

+

+dqinv021 invert 111111111     -> 1111111111111111111111111000000000

+dqinv022 invert 111111111111  -> 1111111111111111111111000000000000

+dqinv023 invert  11111111     -> 1111111111111111111111111100000000

+dqinv025 invert   1111111     -> 1111111111111111111111111110000000

+dqinv026 invert    111111     -> 1111111111111111111111111111000000

+dqinv027 invert     11111     -> 1111111111111111111111111111100000

+dqinv028 invert      1111     -> 1111111111111111111111111111110000

+dqinv029 invert       111     -> 1111111111111111111111111111111000

+dqinv031 invert        11     -> 1111111111111111111111111111111100

+dqinv032 invert         1     -> 1111111111111111111111111111111110

+dqinv033 invert 111111111111  -> 1111111111111111111111000000000000

+dqinv034 invert 11111111111   -> 1111111111111111111111100000000000

+dqinv035 invert 1111111111    -> 1111111111111111111111110000000000

+dqinv036 invert 111111111     -> 1111111111111111111111111000000000

+

+dqinv040 invert 011111111   -> 1111111111111111111111111100000000

+dqinv041 invert 101111111   -> 1111111111111111111111111010000000

+dqinv042 invert 110111111   -> 1111111111111111111111111001000000

+dqinv043 invert 111011111   -> 1111111111111111111111111000100000

+dqinv044 invert 111101111   -> 1111111111111111111111111000010000

+dqinv045 invert 111110111   -> 1111111111111111111111111000001000

+dqinv046 invert 111111011   -> 1111111111111111111111111000000100

+dqinv047 invert 111111101   -> 1111111111111111111111111000000010

+dqinv048 invert 111111110   -> 1111111111111111111111111000000001

+dqinv049 invert 011111011   -> 1111111111111111111111111100000100

+dqinv050 invert 101111101   -> 1111111111111111111111111010000010

+dqinv051 invert 110111110   -> 1111111111111111111111111001000001

+dqinv052 invert 111011101   -> 1111111111111111111111111000100010

+dqinv053 invert 111101011   -> 1111111111111111111111111000010100

+dqinv054 invert 111110111   -> 1111111111111111111111111000001000

+dqinv055 invert 111101011   -> 1111111111111111111111111000010100

+dqinv056 invert 111011101   -> 1111111111111111111111111000100010

+dqinv057 invert 110111110   -> 1111111111111111111111111001000001

+dqinv058 invert 101111101   -> 1111111111111111111111111010000010

+dqinv059 invert 011111011   -> 1111111111111111111111111100000100

+

+dqinv080 invert 1000000011111111   -> 1111111111111111110111111100000000

+dqinv081 invert 0100000101111111   -> 1111111111111111111011111010000000

+dqinv082 invert 0010000110111111   -> 1111111111111111111101111001000000

+dqinv083 invert 0001000111011111   -> 1111111111111111111110111000100000

+dqinv084 invert 0000100111101111   -> 1111111111111111111111011000010000

+dqinv085 invert 0000010111110111   -> 1111111111111111111111101000001000

+dqinv086 invert 0000001111111011   -> 1111111111111111111111110000000100

+dqinv087 invert 0000010111111101   -> 1111111111111111111111101000000010

+dqinv088 invert 0000100111111110   -> 1111111111111111111111011000000001

+dqinv089 invert 0001000011111011   -> 1111111111111111111110111100000100

+dqinv090 invert 0010000101111101   -> 1111111111111111111101111010000010

+dqinv091 invert 0100000110111110   -> 1111111111111111111011111001000001

+dqinv092 invert 1000000111011101   -> 1111111111111111110111111000100010

+dqinv093 invert 0100000111101011   -> 1111111111111111111011111000010100

+dqinv094 invert 0010000111110111   -> 1111111111111111111101111000001000

+dqinv095 invert 0001000111101011   -> 1111111111111111111110111000010100

+dqinv096 invert 0000100111011101   -> 1111111111111111111111011000100010

+dqinv097 invert 0000010110111110   -> 1111111111111111111111101001000001

+dqinv098 invert 0000001101111101   -> 1111111111111111111111110010000010

+dqinv099 invert 0000010011111011   -> 1111111111111111111111101100000100

+

+-- and more thorough MSD/LSD tests [8 and 9 mght be encoded differently...]

+dqinv151 invert 1111111111111111111111111111111110 ->                                   1

+dqinv152 invert 1111111111111111110000000000000000 ->                    1111111111111111

+dqinv153 invert 1000000000000000001111111111111111 ->   111111111111111110000000000000000

+dqinv154 invert 1111111111111111111000000000000000 ->                     111111111111111

+dqinv155 invert 0100000000000000000111111111111111 ->  1011111111111111111000000000000000

+dqinv156 invert 1011111111111111110100000000000000 ->   100000000000000001011111111111111

+dqinv157 invert 1101111111111111110111111111111111 ->    10000000000000001000000000000000

+dqinv158 invert 1110111111111111110011111111111111 ->     1000000000000001100000000000000

+

+-- non-0/1 should not be accepted, nor should signs

+dqinv220 invert 111111112   ->  NaN Invalid_operation

+dqinv221 invert 333333333   ->  NaN Invalid_operation

+dqinv222 invert 555555555   ->  NaN Invalid_operation

+dqinv223 invert 777777777   ->  NaN Invalid_operation

+dqinv224 invert 999999999   ->  NaN Invalid_operation

+dqinv225 invert 222222222   ->  NaN Invalid_operation

+dqinv226 invert 444444444   ->  NaN Invalid_operation

+dqinv227 invert 666666666   ->  NaN Invalid_operation

+dqinv228 invert 888888888   ->  NaN Invalid_operation

+dqinv229 invert 999999999   ->  NaN Invalid_operation

+dqinv230 invert 999999999   ->  NaN Invalid_operation

+dqinv231 invert 999999999   ->  NaN Invalid_operation

+dqinv232 invert 999999999   ->  NaN Invalid_operation

+-- a few randoms

+dqinv240 invert  567468689  ->  NaN Invalid_operation

+dqinv241 invert  567367689  ->  NaN Invalid_operation

+dqinv242 invert -631917772  ->  NaN Invalid_operation

+dqinv243 invert -756253257  ->  NaN Invalid_operation

+dqinv244 invert  835590149  ->  NaN Invalid_operation

+-- test MSD

+dqinv250 invert  2000000111000111000111000000000000 ->  NaN Invalid_operation

+dqinv251 invert  3000000111000111000111000000000000 ->  NaN Invalid_operation

+dqinv252 invert  4000000111000111000111000000000000 ->  NaN Invalid_operation

+dqinv253 invert  5000000111000111000111000000000000 ->  NaN Invalid_operation

+dqinv254 invert  6000000111000111000111000000000000 ->  NaN Invalid_operation

+dqinv255 invert  7000000111000111000111000000000000 ->  NaN Invalid_operation

+dqinv256 invert  8000000111000111000111000000000000 ->  NaN Invalid_operation

+dqinv257 invert  9000000111000111000111000000000000 ->  NaN Invalid_operation

+-- test MSD-1

+dqinv270 invert  0200000111000111000111001000000000 ->  NaN Invalid_operation

+dqinv271 invert  0300000111000111000111000100000000 ->  NaN Invalid_operation

+dqinv272 invert  0400000111000111000111000010000000 ->  NaN Invalid_operation

+dqinv273 invert  0500000111000111000111000001000000 ->  NaN Invalid_operation

+dqinv274 invert  1600000111000111000111000000100000 ->  NaN Invalid_operation

+dqinv275 invert  1700000111000111000111000000010000 ->  NaN Invalid_operation

+dqinv276 invert  1800000111000111000111000000001000 ->  NaN Invalid_operation

+dqinv277 invert  1900000111000111000111000000000100 ->  NaN Invalid_operation

+-- test LSD

+dqinv280 invert  0010000111000111000111000000000002 ->  NaN Invalid_operation

+dqinv281 invert  0001000111000111000111000000000003 ->  NaN Invalid_operation

+dqinv282 invert  0000000111000111000111100000000004 ->  NaN Invalid_operation

+dqinv283 invert  0000000111000111000111010000000005 ->  NaN Invalid_operation

+dqinv284 invert  1000000111000111000111001000000006 ->  NaN Invalid_operation

+dqinv285 invert  1000000111000111000111000100000007 ->  NaN Invalid_operation

+dqinv286 invert  1000000111000111000111000010000008 ->  NaN Invalid_operation

+dqinv287 invert  1000000111000111000111000001000009 ->  NaN Invalid_operation

+-- test Middie

+dqinv288 invert  0010000111000111000111000020000000 ->  NaN Invalid_operation

+dqinv289 invert  0001000111000111000111000030000001 ->  NaN Invalid_operation

+dqinv290 invert  0000000111000111000111100040000010 ->  NaN Invalid_operation

+dqinv291 invert  0000000111000111000111010050000100 ->  NaN Invalid_operation

+dqinv292 invert  1000000111000111000111001060001000 ->  NaN Invalid_operation

+dqinv293 invert  1000000111000111000111000170010000 ->  NaN Invalid_operation

+dqinv294 invert  1000000111000111000111000080100000 ->  NaN Invalid_operation

+dqinv295 invert  1000000111000111000111000091000000 ->  NaN Invalid_operation

+-- signs

+dqinv296 invert -1000000111000111000111000001000000  ->  NaN Invalid_operation

+dqinv299 invert  1000000111000111000111000001000000  ->  111111000111000111000111110111111

+

+-- Nmax, Nmin, Ntiny-like

+dqinv341 invert  9.99999999E+2998  -> NaN Invalid_operation

+dqinv342 invert  1E-2998           -> NaN Invalid_operation

+dqinv343 invert  1.00000000E-2998  -> NaN Invalid_operation

+dqinv344 invert  1E-2078           -> NaN Invalid_operation

+dqinv345 invert  -1E-2078          -> NaN Invalid_operation

+dqinv346 invert  -1.00000000E-2998 -> NaN Invalid_operation

+dqinv347 invert  -1E-2998          -> NaN Invalid_operation

+dqinv348 invert  -9.99999999E+2998 -> NaN Invalid_operation

+

+-- A few other non-integers

+dqinv361 invert  1.0               -> NaN Invalid_operation

+dqinv362 invert  1E+1              -> NaN Invalid_operation

+dqinv363 invert  0.0               -> NaN Invalid_operation

+dqinv364 invert  0E+1              -> NaN Invalid_operation

+dqinv365 invert  9.9               -> NaN Invalid_operation

+dqinv366 invert  9E+1              -> NaN Invalid_operation

+

+-- All Specials are in error

+dqinv788 invert -Inf     -> NaN  Invalid_operation

+dqinv794 invert  Inf     -> NaN  Invalid_operation

+dqinv821 invert  NaN     -> NaN  Invalid_operation

+dqinv841 invert  sNaN    -> NaN  Invalid_operation

+-- propagating NaNs

+dqinv861 invert  NaN1    -> NaN Invalid_operation

+dqinv862 invert +NaN2    -> NaN Invalid_operation

+dqinv863 invert  NaN3    -> NaN Invalid_operation

+dqinv864 invert  NaN4    -> NaN Invalid_operation

+dqinv865 invert  NaN5    -> NaN Invalid_operation

+dqinv871 invert  sNaN11  -> NaN Invalid_operation

+dqinv872 invert  sNaN12  -> NaN Invalid_operation

+dqinv873 invert  sNaN13  -> NaN Invalid_operation

+dqinv874 invert  sNaN14  -> NaN Invalid_operation

+dqinv875 invert  sNaN15  -> NaN Invalid_operation

+dqinv876 invert  NaN16   -> NaN Invalid_operation

+dqinv881 invert +NaN25   -> NaN Invalid_operation

+dqinv882 invert -NaN26   -> NaN Invalid_operation

+dqinv883 invert -sNaN27  -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqLogB.decTest b/Lib/test/decimaltestdata/dqLogB.decTest
new file mode 100644
index 0000000..d6cf831
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqLogB.decTest
@@ -0,0 +1,160 @@
+------------------------------------------------------------------------

+-- dqLogB.decTest -- integral 754r adjusted exponent, for decQuads    --

+-- Copyright (c) IBM Corporation, 2005, 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.57

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- basics

+dqlogb000 logb  0                 -> -Infinity  Division_by_zero

+dqlogb001 logb  1E-6176           -> -6176

+dqlogb002 logb  1E-6143           -> -6143

+dqlogb003 logb  0.001             -> -3

+dqlogb004 logb  0.03              -> -2

+dqlogb005 logb  1                 ->  0

+dqlogb006 logb  2                 ->  0

+dqlogb007 logb  2.5               ->  0

+dqlogb008 logb  2.50              ->  0

+dqlogb009 logb  2.500             ->  0

+dqlogb010 logb  10                ->  1

+dqlogb011 logb  70                ->  1

+dqlogb012 logb  100               ->  2

+dqlogb013 logb  250               ->  2

+dqlogb014 logb  9E+6144           ->  6144

+dqlogb015 logb +Infinity          ->  Infinity

+

+-- negatives appear to be treated as positives

+dqlogb021 logb -0                 -> -Infinity  Division_by_zero

+dqlogb022 logb -1E-6176           -> -6176

+dqlogb023 logb -9E-6143           -> -6143

+dqlogb024 logb -0.001             -> -3

+dqlogb025 logb -1                 ->  0

+dqlogb026 logb -2                 ->  0

+dqlogb027 logb -10                ->  1

+dqlogb028 logb -70                ->  1

+dqlogb029 logb -100               ->  2

+dqlogb030 logb -9E+6144           ->  6144

+dqlogb031 logb -Infinity          ->  Infinity

+

+-- zeros

+dqlogb111 logb          0   -> -Infinity  Division_by_zero

+dqlogb112 logb         -0   -> -Infinity  Division_by_zero

+dqlogb113 logb       0E+4   -> -Infinity  Division_by_zero

+dqlogb114 logb      -0E+4   -> -Infinity  Division_by_zero

+dqlogb115 logb     0.0000   -> -Infinity  Division_by_zero

+dqlogb116 logb    -0.0000   -> -Infinity  Division_by_zero

+dqlogb117 logb      0E-141  -> -Infinity  Division_by_zero

+dqlogb118 logb     -0E-141  -> -Infinity  Division_by_zero

+

+-- full coefficients, alternating bits

+dqlogb121 logb   268268268        -> 8

+dqlogb122 logb  -268268268        -> 8

+dqlogb123 logb   134134134        -> 8

+dqlogb124 logb  -134134134        -> 8

+

+-- Nmax, Nmin, Ntiny

+dqlogb131 logb  9.999999999999999999999999999999999E+6144   ->  6144

+dqlogb132 logb  1E-6143                   -> -6143

+dqlogb133 logb  1.000000000000000000000000000000000E-6143   -> -6143

+dqlogb134 logb  1E-6176                   -> -6176

+

+dqlogb135 logb  -1E-6176                  -> -6176

+dqlogb136 logb  -1.000000000000000000000000000000000E-6143  -> -6143

+dqlogb137 logb  -1E-6143                  -> -6143

+dqlogb1614 logb  -9.999999999999999999999999999999999E+6144  ->  6144

+

+-- ones

+dqlogb0061 logb  1                 ->   0

+dqlogb0062 logb  1.0               ->   0

+dqlogb0063 logb  1.000000000000000 ->   0

+

+-- notable cases -- exact powers of 10

+dqlogb1100 logb 1             -> 0

+dqlogb1101 logb 10            -> 1

+dqlogb1102 logb 100           -> 2

+dqlogb1103 logb 1000          -> 3

+dqlogb1104 logb 10000         -> 4

+dqlogb1105 logb 100000        -> 5

+dqlogb1106 logb 1000000       -> 6

+dqlogb1107 logb 10000000      -> 7

+dqlogb1108 logb 100000000     -> 8

+dqlogb1109 logb 1000000000    -> 9

+dqlogb1110 logb 10000000000   -> 10

+dqlogb1111 logb 100000000000  -> 11

+dqlogb1112 logb 1000000000000 -> 12

+dqlogb1113 logb 0.00000000001 -> -11

+dqlogb1114 logb 0.0000000001 -> -10

+dqlogb1115 logb 0.000000001 -> -9

+dqlogb1116 logb 0.00000001 -> -8

+dqlogb1117 logb 0.0000001 -> -7

+dqlogb1118 logb 0.000001 -> -6

+dqlogb1119 logb 0.00001 -> -5

+dqlogb1120 logb 0.0001 -> -4

+dqlogb1121 logb 0.001 -> -3

+dqlogb1122 logb 0.01 -> -2

+dqlogb1123 logb 0.1 -> -1

+dqlogb1124 logb 1E-99  -> -99

+dqlogb1125 logb 1E-100 -> -100

+dqlogb1127 logb 1E-299 -> -299

+dqlogb1126 logb 1E-6143 -> -6143

+

+-- suggestions from Ilan Nehama

+dqlogb1400 logb 10E-3    -> -2

+dqlogb1401 logb 10E-2    -> -1

+dqlogb1402 logb 100E-2   ->  0

+dqlogb1403 logb 1000E-2  ->  1

+dqlogb1404 logb 10000E-2 ->  2

+dqlogb1405 logb 10E-1    ->  0

+dqlogb1406 logb 100E-1   ->  1

+dqlogb1407 logb 1000E-1  ->  2

+dqlogb1408 logb 10000E-1 ->  3

+dqlogb1409 logb 10E0     ->  1

+dqlogb1410 logb 100E0    ->  2

+dqlogb1411 logb 1000E0   ->  3

+dqlogb1412 logb 10000E0  ->  4

+dqlogb1413 logb 10E1     ->  2

+dqlogb1414 logb 100E1    ->  3

+dqlogb1415 logb 1000E1   ->  4

+dqlogb1416 logb 10000E1  ->  5

+dqlogb1417 logb 10E2     ->  3

+dqlogb1418 logb 100E2    ->  4

+dqlogb1419 logb 1000E2   ->  5

+dqlogb1420 logb 10000E2  ->  6

+

+-- special values

+dqlogb820  logb   Infinity ->   Infinity

+dqlogb821  logb   0        ->  -Infinity Division_by_zero

+dqlogb822  logb   NaN      ->   NaN

+dqlogb823  logb   sNaN     ->   NaN     Invalid_operation

+-- propagating NaNs

+dqlogb824  logb   sNaN123  ->   NaN123  Invalid_operation

+dqlogb825  logb   -sNaN321 ->  -NaN321  Invalid_operation

+dqlogb826  logb   NaN456   ->   NaN456

+dqlogb827  logb   -NaN654  ->  -NaN654

+dqlogb828  logb   NaN1     ->   NaN1

+

+-- Null test

+dqlogb900  logb #   -> NaN Invalid_operation

+

+

diff --git a/Lib/test/decimaltestdata/dqMax.decTest b/Lib/test/decimaltestdata/dqMax.decTest
new file mode 100644
index 0000000..a3ba64c
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqMax.decTest
@@ -0,0 +1,322 @@
+------------------------------------------------------------------------

+-- dqMax.decTest -- decQuad maxnum                                    --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqmax001 max  -2  -2  -> -2

+dqmax002 max  -2  -1  -> -1

+dqmax003 max  -2   0  ->  0

+dqmax004 max  -2   1  ->  1

+dqmax005 max  -2   2  ->  2

+dqmax006 max  -1  -2  -> -1

+dqmax007 max  -1  -1  -> -1

+dqmax008 max  -1   0  ->  0

+dqmax009 max  -1   1  ->  1

+dqmax010 max  -1   2  ->  2

+dqmax011 max   0  -2  ->  0

+dqmax012 max   0  -1  ->  0

+dqmax013 max   0   0  ->  0

+dqmax014 max   0   1  ->  1

+dqmax015 max   0   2  ->  2

+dqmax016 max   1  -2  ->  1

+dqmax017 max   1  -1  ->  1

+dqmax018 max   1   0  ->  1

+dqmax019 max   1   1  ->  1

+dqmax020 max   1   2  ->  2

+dqmax021 max   2  -2  ->  2

+dqmax022 max   2  -1  ->  2

+dqmax023 max   2   0  ->  2

+dqmax025 max   2   1  ->  2

+dqmax026 max   2   2  ->  2

+

+-- extended zeros

+dqmax030 max   0     0   ->  0

+dqmax031 max   0    -0   ->  0

+dqmax032 max   0    -0.0 ->  0

+dqmax033 max   0     0.0 ->  0

+dqmax034 max  -0     0   ->  0    -- note: -0 = 0, but 0 chosen

+dqmax035 max  -0    -0   -> -0

+dqmax036 max  -0    -0.0 -> -0.0

+dqmax037 max  -0     0.0 ->  0.0

+dqmax038 max   0.0   0   ->  0

+dqmax039 max   0.0  -0   ->  0.0

+dqmax040 max   0.0  -0.0 ->  0.0

+dqmax041 max   0.0   0.0 ->  0.0

+dqmax042 max  -0.0   0   ->  0

+dqmax043 max  -0.0  -0   -> -0.0

+dqmax044 max  -0.0  -0.0 -> -0.0

+dqmax045 max  -0.0   0.0 ->  0.0

+

+dqmax050 max  -0E1   0E1 ->  0E+1

+dqmax051 max  -0E2   0E2 ->  0E+2

+dqmax052 max  -0E2   0E1 ->  0E+1

+dqmax053 max  -0E1   0E2 ->  0E+2

+dqmax054 max   0E1  -0E1 ->  0E+1

+dqmax055 max   0E2  -0E2 ->  0E+2

+dqmax056 max   0E2  -0E1 ->  0E+2

+dqmax057 max   0E1  -0E2 ->  0E+1

+

+dqmax058 max   0E1   0E1 ->  0E+1

+dqmax059 max   0E2   0E2 ->  0E+2

+dqmax060 max   0E2   0E1 ->  0E+2

+dqmax061 max   0E1   0E2 ->  0E+2

+dqmax062 max  -0E1  -0E1 -> -0E+1

+dqmax063 max  -0E2  -0E2 -> -0E+2

+dqmax064 max  -0E2  -0E1 -> -0E+1

+dqmax065 max  -0E1  -0E2 -> -0E+1

+

+-- Specials

+dqmax090 max  Inf  -Inf   ->  Infinity

+dqmax091 max  Inf  -1000  ->  Infinity

+dqmax092 max  Inf  -1     ->  Infinity

+dqmax093 max  Inf  -0     ->  Infinity

+dqmax094 max  Inf   0     ->  Infinity

+dqmax095 max  Inf   1     ->  Infinity

+dqmax096 max  Inf   1000  ->  Infinity

+dqmax097 max  Inf   Inf   ->  Infinity

+dqmax098 max -1000  Inf   ->  Infinity

+dqmax099 max -Inf   Inf   ->  Infinity

+dqmax100 max -1     Inf   ->  Infinity

+dqmax101 max -0     Inf   ->  Infinity

+dqmax102 max  0     Inf   ->  Infinity

+dqmax103 max  1     Inf   ->  Infinity

+dqmax104 max  1000  Inf   ->  Infinity

+dqmax105 max  Inf   Inf   ->  Infinity

+

+dqmax120 max -Inf  -Inf   -> -Infinity

+dqmax121 max -Inf  -1000  -> -1000

+dqmax122 max -Inf  -1     -> -1

+dqmax123 max -Inf  -0     -> -0

+dqmax124 max -Inf   0     ->  0

+dqmax125 max -Inf   1     ->  1

+dqmax126 max -Inf   1000  ->  1000

+dqmax127 max -Inf   Inf   ->  Infinity

+dqmax128 max -Inf  -Inf   ->  -Infinity

+dqmax129 max -1000 -Inf   ->  -1000

+dqmax130 max -1    -Inf   ->  -1

+dqmax131 max -0    -Inf   ->  -0

+dqmax132 max  0    -Inf   ->  0

+dqmax133 max  1    -Inf   ->  1

+dqmax134 max  1000 -Inf   ->  1000

+dqmax135 max  Inf  -Inf   ->  Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+dqmax141 max  NaN -Inf    -> -Infinity

+dqmax142 max  NaN -1000   -> -1000

+dqmax143 max  NaN -1      -> -1

+dqmax144 max  NaN -0      -> -0

+dqmax145 max  NaN  0      ->  0

+dqmax146 max  NaN  1      ->  1

+dqmax147 max  NaN  1000   ->  1000

+dqmax148 max  NaN  Inf    ->  Infinity

+dqmax149 max  NaN  NaN    ->  NaN

+dqmax150 max -Inf  NaN    -> -Infinity

+dqmax151 max -1000 NaN    -> -1000

+dqmax152 max -1    NaN    -> -1

+dqmax153 max -0    NaN    -> -0

+dqmax154 max  0    NaN    ->  0

+dqmax155 max  1    NaN    ->  1

+dqmax156 max  1000 NaN    ->  1000

+dqmax157 max  Inf  NaN    ->  Infinity

+

+dqmax161 max  sNaN -Inf   ->  NaN  Invalid_operation

+dqmax162 max  sNaN -1000  ->  NaN  Invalid_operation

+dqmax163 max  sNaN -1     ->  NaN  Invalid_operation

+dqmax164 max  sNaN -0     ->  NaN  Invalid_operation

+dqmax165 max  sNaN  0     ->  NaN  Invalid_operation

+dqmax166 max  sNaN  1     ->  NaN  Invalid_operation

+dqmax167 max  sNaN  1000  ->  NaN  Invalid_operation

+dqmax168 max  sNaN  NaN   ->  NaN  Invalid_operation

+dqmax169 max  sNaN sNaN   ->  NaN  Invalid_operation

+dqmax170 max  NaN  sNaN   ->  NaN  Invalid_operation

+dqmax171 max -Inf  sNaN   ->  NaN  Invalid_operation

+dqmax172 max -1000 sNaN   ->  NaN  Invalid_operation

+dqmax173 max -1    sNaN   ->  NaN  Invalid_operation

+dqmax174 max -0    sNaN   ->  NaN  Invalid_operation

+dqmax175 max  0    sNaN   ->  NaN  Invalid_operation

+dqmax176 max  1    sNaN   ->  NaN  Invalid_operation

+dqmax177 max  1000 sNaN   ->  NaN  Invalid_operation

+dqmax178 max  Inf  sNaN   ->  NaN  Invalid_operation

+dqmax179 max  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqmax181 max  NaN9  -Inf   -> -Infinity

+dqmax182 max  NaN8     9   ->  9

+dqmax183 max -NaN7   Inf   ->  Infinity

+

+dqmax184 max -NaN1   NaN11 -> -NaN1

+dqmax185 max  NaN2   NaN12 ->  NaN2

+dqmax186 max -NaN13 -NaN7  -> -NaN13

+dqmax187 max  NaN14 -NaN5  ->  NaN14

+

+dqmax188 max -Inf    NaN4  -> -Infinity

+dqmax189 max -9     -NaN3  -> -9

+dqmax190 max  Inf    NaN2  ->  Infinity

+

+dqmax191 max  sNaN99 -Inf    ->  NaN99 Invalid_operation

+dqmax192 max  sNaN98 -1      ->  NaN98 Invalid_operation

+dqmax193 max -sNaN97  NaN    -> -NaN97 Invalid_operation

+dqmax194 max  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+dqmax195 max  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dqmax196 max -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqmax197 max  0      sNaN91  ->  NaN91 Invalid_operation

+dqmax198 max  Inf   -sNaN90  -> -NaN90 Invalid_operation

+dqmax199 max  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+-- old rounding checks

+dqmax221 max 12345678000 1  -> 12345678000

+dqmax222 max 1 12345678000  -> 12345678000

+dqmax223 max 1234567800  1  -> 1234567800

+dqmax224 max 1 1234567800   -> 1234567800

+dqmax225 max 1234567890  1  -> 1234567890

+dqmax226 max 1 1234567890   -> 1234567890

+dqmax227 max 1234567891  1  -> 1234567891

+dqmax228 max 1 1234567891   -> 1234567891

+dqmax229 max 12345678901 1  -> 12345678901

+dqmax230 max 1 12345678901  -> 12345678901

+dqmax231 max 1234567896  1  -> 1234567896

+dqmax232 max 1 1234567896   -> 1234567896

+dqmax233 max -1234567891  1 -> 1

+dqmax234 max 1 -1234567891  -> 1

+dqmax235 max -12345678901 1 -> 1

+dqmax236 max 1 -12345678901 -> 1

+dqmax237 max -1234567896  1 -> 1

+dqmax238 max 1 -1234567896  -> 1

+

+-- from examples

+dqmax280 max '3'   '2'  ->  '3'

+dqmax281 max '-10' '3'  ->  '3'

+dqmax282 max '1.0' '1'  ->  '1'

+dqmax283 max '1' '1.0'  ->  '1'

+dqmax284 max '7' 'NaN'  ->  '7'

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+dqmax401 max  Inf    1.1     ->  Infinity

+dqmax402 max  1.1    1       ->  1.1

+dqmax403 max  1      1.0     ->  1

+dqmax404 max  1.0    0.1     ->  1.0

+dqmax405 max  0.1    0.10    ->  0.1

+dqmax406 max  0.10   0.100   ->  0.10

+dqmax407 max  0.10   0       ->  0.10

+dqmax408 max  0      0.0     ->  0

+dqmax409 max  0.0   -0       ->  0.0

+dqmax410 max  0.0   -0.0     ->  0.0

+dqmax411 max  0.00  -0.0     ->  0.00

+dqmax412 max  0.0   -0.00    ->  0.0

+dqmax413 max  0     -0.0     ->  0

+dqmax414 max  0     -0       ->  0

+dqmax415 max -0.0   -0       -> -0.0

+dqmax416 max -0     -0.100   -> -0

+dqmax417 max -0.100 -0.10    -> -0.100

+dqmax418 max -0.10  -0.1     -> -0.10

+dqmax419 max -0.1   -1.0     -> -0.1

+dqmax420 max -1.0   -1       -> -1.0

+dqmax421 max -1     -1.1     -> -1

+dqmax423 max -1.1   -Inf     -> -1.1

+-- same with operands reversed

+dqmax431 max  1.1    Inf     ->  Infinity

+dqmax432 max  1      1.1     ->  1.1

+dqmax433 max  1.0    1       ->  1

+dqmax434 max  0.1    1.0     ->  1.0

+dqmax435 max  0.10   0.1     ->  0.1

+dqmax436 max  0.100  0.10    ->  0.10

+dqmax437 max  0      0.10    ->  0.10

+dqmax438 max  0.0    0       ->  0

+dqmax439 max -0      0.0     ->  0.0

+dqmax440 max -0.0    0.0     ->  0.0

+dqmax441 max -0.0    0.00    ->  0.00

+dqmax442 max -0.00   0.0     ->  0.0

+dqmax443 max -0.0    0       ->  0

+dqmax444 max -0      0       ->  0

+dqmax445 max -0     -0.0     -> -0.0

+dqmax446 max -0.100 -0       -> -0

+dqmax447 max -0.10  -0.100   -> -0.100

+dqmax448 max -0.1   -0.10    -> -0.10

+dqmax449 max -1.0   -0.1     -> -0.1

+dqmax450 max -1     -1.0     -> -1.0

+dqmax451 max -1.1   -1       -> -1

+dqmax453 max -Inf   -1.1     -> -1.1

+-- largies

+dqmax460 max  1000   1E+3    ->  1E+3

+dqmax461 max  1E+3   1000    ->  1E+3

+dqmax462 max  1000  -1E+3    ->  1000

+dqmax463 max  1E+3  -1000    ->  1E+3

+dqmax464 max -1000   1E+3    ->  1E+3

+dqmax465 max -1E+3   1000    ->  1000

+dqmax466 max -1000  -1E+3    -> -1000

+dqmax467 max -1E+3  -1000    -> -1000

+

+-- misalignment traps for little-endian

+dqmax471 max      1.0       0.1  -> 1.0

+dqmax472 max      0.1       1.0  -> 1.0

+dqmax473 max     10.0       0.1  -> 10.0

+dqmax474 max      0.1      10.0  -> 10.0

+dqmax475 max      100       1.0  -> 100

+dqmax476 max      1.0       100  -> 100

+dqmax477 max     1000      10.0  -> 1000

+dqmax478 max     10.0      1000  -> 1000

+dqmax479 max    10000     100.0  -> 10000

+dqmax480 max    100.0     10000  -> 10000

+dqmax481 max   100000    1000.0  -> 100000

+dqmax482 max   1000.0    100000  -> 100000

+dqmax483 max  1000000   10000.0  -> 1000000

+dqmax484 max  10000.0   1000000  -> 1000000

+

+-- subnormals

+dqmax510 max  1.00E-6143       0  ->   1.00E-6143

+dqmax511 max  0.1E-6143        0  ->   1E-6144    Subnormal

+dqmax512 max  0.10E-6143       0  ->   1.0E-6144  Subnormal

+dqmax513 max  0.100E-6143      0  ->   1.00E-6144 Subnormal

+dqmax514 max  0.01E-6143       0  ->   1E-6145    Subnormal

+dqmax515 max  0.999E-6143      0  ->   9.99E-6144 Subnormal

+dqmax516 max  0.099E-6143      0  ->   9.9E-6145  Subnormal

+dqmax517 max  0.009E-6143      0  ->   9E-6146    Subnormal

+dqmax518 max  0.001E-6143      0  ->   1E-6146    Subnormal

+dqmax519 max  0.0009E-6143     0  ->   9E-6147    Subnormal

+dqmax520 max  0.0001E-6143     0  ->   1E-6147    Subnormal

+

+dqmax530 max -1.00E-6143       0  ->   0

+dqmax531 max -0.1E-6143        0  ->   0

+dqmax532 max -0.10E-6143       0  ->   0

+dqmax533 max -0.100E-6143      0  ->   0

+dqmax534 max -0.01E-6143       0  ->   0

+dqmax535 max -0.999E-6143      0  ->   0

+dqmax536 max -0.099E-6143      0  ->   0

+dqmax537 max -0.009E-6143      0  ->   0

+dqmax538 max -0.001E-6143      0  ->   0

+dqmax539 max -0.0009E-6143     0  ->   0

+dqmax540 max -0.0001E-6143     0  ->   0

+

+-- Null tests

+dqmax900 max 10  #  -> NaN Invalid_operation

+dqmax901 max  # 10  -> NaN Invalid_operation

+

+

+

diff --git a/Lib/test/decimaltestdata/dqMaxMag.decTest b/Lib/test/decimaltestdata/dqMaxMag.decTest
new file mode 100644
index 0000000..01b2793
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqMaxMag.decTest
@@ -0,0 +1,304 @@
+------------------------------------------------------------------------

+-- dqMaxMag.decTest -- decQuad maxnummag                              --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqmxg001 maxmag  -2  -2  -> -2

+dqmxg002 maxmag  -2  -1  -> -2

+dqmxg003 maxmag  -2   0  -> -2

+dqmxg004 maxmag  -2   1  -> -2

+dqmxg005 maxmag  -2   2  ->  2

+dqmxg006 maxmag  -1  -2  -> -2

+dqmxg007 maxmag  -1  -1  -> -1

+dqmxg008 maxmag  -1   0  -> -1

+dqmxg009 maxmag  -1   1  ->  1

+dqmxg010 maxmag  -1   2  ->  2

+dqmxg011 maxmag   0  -2  -> -2

+dqmxg012 maxmag   0  -1  -> -1

+dqmxg013 maxmag   0   0  ->  0

+dqmxg014 maxmag   0   1  ->  1

+dqmxg015 maxmag   0   2  ->  2

+dqmxg016 maxmag   1  -2  -> -2

+dqmxg017 maxmag   1  -1  ->  1

+dqmxg018 maxmag   1   0  ->  1

+dqmxg019 maxmag   1   1  ->  1

+dqmxg020 maxmag   1   2  ->  2

+dqmxg021 maxmag   2  -2  ->  2

+dqmxg022 maxmag   2  -1  ->  2

+dqmxg023 maxmag   2   0  ->  2

+dqmxg025 maxmag   2   1  ->  2

+dqmxg026 maxmag   2   2  ->  2

+

+-- extended zeros

+dqmxg030 maxmag   0     0   ->  0

+dqmxg031 maxmag   0    -0   ->  0

+dqmxg032 maxmag   0    -0.0 ->  0

+dqmxg033 maxmag   0     0.0 ->  0

+dqmxg034 maxmag  -0     0   ->  0    -- note: -0 = 0, but 0 chosen

+dqmxg035 maxmag  -0    -0   -> -0

+dqmxg036 maxmag  -0    -0.0 -> -0.0

+dqmxg037 maxmag  -0     0.0 ->  0.0

+dqmxg038 maxmag   0.0   0   ->  0

+dqmxg039 maxmag   0.0  -0   ->  0.0

+dqmxg040 maxmag   0.0  -0.0 ->  0.0

+dqmxg041 maxmag   0.0   0.0 ->  0.0

+dqmxg042 maxmag  -0.0   0   ->  0

+dqmxg043 maxmag  -0.0  -0   -> -0.0

+dqmxg044 maxmag  -0.0  -0.0 -> -0.0

+dqmxg045 maxmag  -0.0   0.0 ->  0.0

+

+dqmxg050 maxmag  -0E1   0E1 ->  0E+1

+dqmxg051 maxmag  -0E2   0E2 ->  0E+2

+dqmxg052 maxmag  -0E2   0E1 ->  0E+1

+dqmxg053 maxmag  -0E1   0E2 ->  0E+2

+dqmxg054 maxmag   0E1  -0E1 ->  0E+1

+dqmxg055 maxmag   0E2  -0E2 ->  0E+2

+dqmxg056 maxmag   0E2  -0E1 ->  0E+2

+dqmxg057 maxmag   0E1  -0E2 ->  0E+1

+

+dqmxg058 maxmag   0E1   0E1 ->  0E+1

+dqmxg059 maxmag   0E2   0E2 ->  0E+2

+dqmxg060 maxmag   0E2   0E1 ->  0E+2

+dqmxg061 maxmag   0E1   0E2 ->  0E+2

+dqmxg062 maxmag  -0E1  -0E1 -> -0E+1

+dqmxg063 maxmag  -0E2  -0E2 -> -0E+2

+dqmxg064 maxmag  -0E2  -0E1 -> -0E+1

+dqmxg065 maxmag  -0E1  -0E2 -> -0E+1

+

+-- Specials

+dqmxg090 maxmag  Inf  -Inf   ->  Infinity

+dqmxg091 maxmag  Inf  -1000  ->  Infinity

+dqmxg092 maxmag  Inf  -1     ->  Infinity

+dqmxg093 maxmag  Inf  -0     ->  Infinity

+dqmxg094 maxmag  Inf   0     ->  Infinity

+dqmxg095 maxmag  Inf   1     ->  Infinity

+dqmxg096 maxmag  Inf   1000  ->  Infinity

+dqmxg097 maxmag  Inf   Inf   ->  Infinity

+dqmxg098 maxmag -1000  Inf   ->  Infinity

+dqmxg099 maxmag -Inf   Inf   ->  Infinity

+dqmxg100 maxmag -1     Inf   ->  Infinity

+dqmxg101 maxmag -0     Inf   ->  Infinity

+dqmxg102 maxmag  0     Inf   ->  Infinity

+dqmxg103 maxmag  1     Inf   ->  Infinity

+dqmxg104 maxmag  1000  Inf   ->  Infinity

+dqmxg105 maxmag  Inf   Inf   ->  Infinity

+

+dqmxg120 maxmag -Inf  -Inf   -> -Infinity

+dqmxg121 maxmag -Inf  -1000  -> -Infinity

+dqmxg122 maxmag -Inf  -1     -> -Infinity

+dqmxg123 maxmag -Inf  -0     -> -Infinity

+dqmxg124 maxmag -Inf   0     -> -Infinity

+dqmxg125 maxmag -Inf   1     -> -Infinity

+dqmxg126 maxmag -Inf   1000  -> -Infinity

+dqmxg127 maxmag -Inf   Inf   ->  Infinity

+dqmxg128 maxmag -Inf  -Inf   ->  -Infinity

+dqmxg129 maxmag -1000 -Inf   -> -Infinity

+dqmxg130 maxmag -1    -Inf   -> -Infinity

+dqmxg131 maxmag -0    -Inf   -> -Infinity

+dqmxg132 maxmag  0    -Inf   -> -Infinity

+dqmxg133 maxmag  1    -Inf   -> -Infinity

+dqmxg134 maxmag  1000 -Inf   -> -Infinity

+dqmxg135 maxmag  Inf  -Inf   ->  Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+dqmxg141 maxmag  NaN -Inf    -> -Infinity

+dqmxg142 maxmag  NaN -1000   -> -1000

+dqmxg143 maxmag  NaN -1      -> -1

+dqmxg144 maxmag  NaN -0      -> -0

+dqmxg145 maxmag  NaN  0      ->  0

+dqmxg146 maxmag  NaN  1      ->  1

+dqmxg147 maxmag  NaN  1000   ->  1000

+dqmxg148 maxmag  NaN  Inf    ->  Infinity

+dqmxg149 maxmag  NaN  NaN    ->  NaN

+dqmxg150 maxmag -Inf  NaN    -> -Infinity

+dqmxg151 maxmag -1000 NaN    -> -1000

+dqmxg152 maxmag -1    NaN    -> -1

+dqmxg153 maxmag -0    NaN    -> -0

+dqmxg154 maxmag  0    NaN    ->  0

+dqmxg155 maxmag  1    NaN    ->  1

+dqmxg156 maxmag  1000 NaN    ->  1000

+dqmxg157 maxmag  Inf  NaN    ->  Infinity

+

+dqmxg161 maxmag  sNaN -Inf   ->  NaN  Invalid_operation

+dqmxg162 maxmag  sNaN -1000  ->  NaN  Invalid_operation

+dqmxg163 maxmag  sNaN -1     ->  NaN  Invalid_operation

+dqmxg164 maxmag  sNaN -0     ->  NaN  Invalid_operation

+dqmxg165 maxmag  sNaN  0     ->  NaN  Invalid_operation

+dqmxg166 maxmag  sNaN  1     ->  NaN  Invalid_operation

+dqmxg167 maxmag  sNaN  1000  ->  NaN  Invalid_operation

+dqmxg168 maxmag  sNaN  NaN   ->  NaN  Invalid_operation

+dqmxg169 maxmag  sNaN sNaN   ->  NaN  Invalid_operation

+dqmxg170 maxmag  NaN  sNaN   ->  NaN  Invalid_operation

+dqmxg171 maxmag -Inf  sNaN   ->  NaN  Invalid_operation

+dqmxg172 maxmag -1000 sNaN   ->  NaN  Invalid_operation

+dqmxg173 maxmag -1    sNaN   ->  NaN  Invalid_operation

+dqmxg174 maxmag -0    sNaN   ->  NaN  Invalid_operation

+dqmxg175 maxmag  0    sNaN   ->  NaN  Invalid_operation

+dqmxg176 maxmag  1    sNaN   ->  NaN  Invalid_operation

+dqmxg177 maxmag  1000 sNaN   ->  NaN  Invalid_operation

+dqmxg178 maxmag  Inf  sNaN   ->  NaN  Invalid_operation

+dqmxg179 maxmag  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqmxg181 maxmag  NaN9  -Inf   -> -Infinity

+dqmxg182 maxmag  NaN8     9   ->  9

+dqmxg183 maxmag -NaN7   Inf   ->  Infinity

+

+dqmxg184 maxmag -NaN1   NaN11 -> -NaN1

+dqmxg185 maxmag  NaN2   NaN12 ->  NaN2

+dqmxg186 maxmag -NaN13 -NaN7  -> -NaN13

+dqmxg187 maxmag  NaN14 -NaN5  ->  NaN14

+

+dqmxg188 maxmag -Inf    NaN4  -> -Infinity

+dqmxg189 maxmag -9     -NaN3  -> -9

+dqmxg190 maxmag  Inf    NaN2  ->  Infinity

+

+dqmxg191 maxmag  sNaN99 -Inf    ->  NaN99 Invalid_operation

+dqmxg192 maxmag  sNaN98 -1      ->  NaN98 Invalid_operation

+dqmxg193 maxmag -sNaN97  NaN    -> -NaN97 Invalid_operation

+dqmxg194 maxmag  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+dqmxg195 maxmag  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dqmxg196 maxmag -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqmxg197 maxmag  0      sNaN91  ->  NaN91 Invalid_operation

+dqmxg198 maxmag  Inf   -sNaN90  -> -NaN90 Invalid_operation

+dqmxg199 maxmag  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+-- old rounding checks

+dqmxg221 maxmag 12345678000 1  -> 12345678000

+dqmxg222 maxmag 1 12345678000  -> 12345678000

+dqmxg223 maxmag 1234567800  1  -> 1234567800

+dqmxg224 maxmag 1 1234567800   -> 1234567800

+dqmxg225 maxmag 1234567890  1  -> 1234567890

+dqmxg226 maxmag 1 1234567890   -> 1234567890

+dqmxg227 maxmag 1234567891  1  -> 1234567891

+dqmxg228 maxmag 1 1234567891   -> 1234567891

+dqmxg229 maxmag 12345678901 1  -> 12345678901

+dqmxg230 maxmag 1 12345678901  -> 12345678901

+dqmxg231 maxmag 1234567896  1  -> 1234567896

+dqmxg232 maxmag 1 1234567896   -> 1234567896

+dqmxg233 maxmag -1234567891  1 -> -1234567891

+dqmxg234 maxmag 1 -1234567891  -> -1234567891

+dqmxg235 maxmag -12345678901 1 -> -12345678901

+dqmxg236 maxmag 1 -12345678901 -> -12345678901

+dqmxg237 maxmag -1234567896  1 -> -1234567896

+dqmxg238 maxmag 1 -1234567896  -> -1234567896

+

+-- from examples

+dqmxg280 maxmag '3'   '2'  ->  '3'

+dqmxg281 maxmag '-10' '3'  ->  '-10'

+dqmxg282 maxmag '1.0' '1'  ->  '1'

+dqmxg283 maxmag '1' '1.0'  ->  '1'

+dqmxg284 maxmag '7' 'NaN'  ->  '7'

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+dqmxg401 maxmag  Inf    1.1     ->  Infinity

+dqmxg402 maxmag  1.1    1       ->  1.1

+dqmxg403 maxmag  1      1.0     ->  1

+dqmxg404 maxmag  1.0    0.1     ->  1.0

+dqmxg405 maxmag  0.1    0.10    ->  0.1

+dqmxg406 maxmag  0.10   0.100   ->  0.10

+dqmxg407 maxmag  0.10   0       ->  0.10

+dqmxg408 maxmag  0      0.0     ->  0

+dqmxg409 maxmag  0.0   -0       ->  0.0

+dqmxg410 maxmag  0.0   -0.0     ->  0.0

+dqmxg411 maxmag  0.00  -0.0     ->  0.00

+dqmxg412 maxmag  0.0   -0.00    ->  0.0

+dqmxg413 maxmag  0     -0.0     ->  0

+dqmxg414 maxmag  0     -0       ->  0

+dqmxg415 maxmag -0.0   -0       -> -0.0

+dqmxg416 maxmag -0     -0.100   -> -0.100

+dqmxg417 maxmag -0.100 -0.10    -> -0.100

+dqmxg418 maxmag -0.10  -0.1     -> -0.10

+dqmxg419 maxmag -0.1   -1.0     -> -1.0

+dqmxg420 maxmag -1.0   -1       -> -1.0

+dqmxg421 maxmag -1     -1.1     -> -1.1

+dqmxg423 maxmag -1.1   -Inf     -> -Infinity

+-- same with operands reversed

+dqmxg431 maxmag  1.1    Inf     ->  Infinity

+dqmxg432 maxmag  1      1.1     ->  1.1

+dqmxg433 maxmag  1.0    1       ->  1

+dqmxg434 maxmag  0.1    1.0     ->  1.0

+dqmxg435 maxmag  0.10   0.1     ->  0.1

+dqmxg436 maxmag  0.100  0.10    ->  0.10

+dqmxg437 maxmag  0      0.10    ->  0.10

+dqmxg438 maxmag  0.0    0       ->  0

+dqmxg439 maxmag -0      0.0     ->  0.0

+dqmxg440 maxmag -0.0    0.0     ->  0.0

+dqmxg441 maxmag -0.0    0.00    ->  0.00

+dqmxg442 maxmag -0.00   0.0     ->  0.0

+dqmxg443 maxmag -0.0    0       ->  0

+dqmxg444 maxmag -0      0       ->  0

+dqmxg445 maxmag -0     -0.0     -> -0.0

+dqmxg446 maxmag -0.100 -0       -> -0.100

+dqmxg447 maxmag -0.10  -0.100   -> -0.100

+dqmxg448 maxmag -0.1   -0.10    -> -0.10

+dqmxg449 maxmag -1.0   -0.1     -> -1.0

+dqmxg450 maxmag -1     -1.0     -> -1.0

+dqmxg451 maxmag -1.1   -1       -> -1.1

+dqmxg453 maxmag -Inf   -1.1     -> -Infinity

+-- largies

+dqmxg460 maxmag  1000   1E+3    ->  1E+3

+dqmxg461 maxmag  1E+3   1000    ->  1E+3

+dqmxg462 maxmag  1000  -1E+3    ->  1000

+dqmxg463 maxmag  1E+3  -1000    ->  1E+3

+dqmxg464 maxmag -1000   1E+3    ->  1E+3

+dqmxg465 maxmag -1E+3   1000    ->  1000

+dqmxg466 maxmag -1000  -1E+3    -> -1000

+dqmxg467 maxmag -1E+3  -1000    -> -1000

+

+-- subnormals

+dqmxg510 maxmag  1.00E-6143       0  ->   1.00E-6143

+dqmxg511 maxmag  0.1E-6143        0  ->   1E-6144    Subnormal

+dqmxg512 maxmag  0.10E-6143       0  ->   1.0E-6144  Subnormal

+dqmxg513 maxmag  0.100E-6143      0  ->   1.00E-6144 Subnormal

+dqmxg514 maxmag  0.01E-6143       0  ->   1E-6145    Subnormal

+dqmxg515 maxmag  0.999E-6143      0  ->   9.99E-6144 Subnormal

+dqmxg516 maxmag  0.099E-6143      0  ->   9.9E-6145  Subnormal

+dqmxg517 maxmag  0.009E-6143      0  ->   9E-6146    Subnormal

+dqmxg518 maxmag  0.001E-6143      0  ->   1E-6146    Subnormal

+dqmxg519 maxmag  0.0009E-6143     0  ->   9E-6147    Subnormal

+dqmxg520 maxmag  0.0001E-6143     0  ->   1E-6147    Subnormal

+

+dqmxg530 maxmag -1.00E-6143       0  ->  -1.00E-6143

+dqmxg531 maxmag -0.1E-6143        0  ->  -1E-6144    Subnormal

+dqmxg532 maxmag -0.10E-6143       0  ->  -1.0E-6144  Subnormal

+dqmxg533 maxmag -0.100E-6143      0  ->  -1.00E-6144 Subnormal

+dqmxg534 maxmag -0.01E-6143       0  ->  -1E-6145    Subnormal

+dqmxg535 maxmag -0.999E-6143      0  ->  -9.99E-6144 Subnormal

+dqmxg536 maxmag -0.099E-6143      0  ->  -9.9E-6145  Subnormal

+dqmxg537 maxmag -0.009E-6143      0  ->  -9E-6146    Subnormal

+dqmxg538 maxmag -0.001E-6143      0  ->  -1E-6146    Subnormal

+dqmxg539 maxmag -0.0009E-6143     0  ->  -9E-6147    Subnormal

+dqmxg540 maxmag -0.0001E-6143     0  ->  -1E-6147    Subnormal

+

+-- Null tests

+dqmxg900 maxmag 10  #  -> NaN Invalid_operation

+dqmxg901 maxmag  # 10  -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqMin.decTest b/Lib/test/decimaltestdata/dqMin.decTest
new file mode 100644
index 0000000..1b82be2
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqMin.decTest
@@ -0,0 +1,309 @@
+------------------------------------------------------------------------

+-- dqMin.decTest -- decQuad minnum                                    --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqmin001 min  -2  -2  -> -2

+dqmin002 min  -2  -1  -> -2

+dqmin003 min  -2   0  -> -2

+dqmin004 min  -2   1  -> -2

+dqmin005 min  -2   2  -> -2

+dqmin006 min  -1  -2  -> -2

+dqmin007 min  -1  -1  -> -1

+dqmin008 min  -1   0  -> -1

+dqmin009 min  -1   1  -> -1

+dqmin010 min  -1   2  -> -1

+dqmin011 min   0  -2  -> -2

+dqmin012 min   0  -1  -> -1

+dqmin013 min   0   0  ->  0

+dqmin014 min   0   1  ->  0

+dqmin015 min   0   2  ->  0

+dqmin016 min   1  -2  -> -2

+dqmin017 min   1  -1  -> -1

+dqmin018 min   1   0  ->  0

+dqmin019 min   1   1  ->  1

+dqmin020 min   1   2  ->  1

+dqmin021 min   2  -2  -> -2

+dqmin022 min   2  -1  -> -1

+dqmin023 min   2   0  ->  0

+dqmin025 min   2   1  ->  1

+dqmin026 min   2   2  ->  2

+

+-- extended zeros

+dqmin030 min   0     0   ->  0

+dqmin031 min   0    -0   -> -0

+dqmin032 min   0    -0.0 -> -0.0

+dqmin033 min   0     0.0 ->  0.0

+dqmin034 min  -0     0   -> -0

+dqmin035 min  -0    -0   -> -0

+dqmin036 min  -0    -0.0 -> -0

+dqmin037 min  -0     0.0 -> -0

+dqmin038 min   0.0   0   ->  0.0

+dqmin039 min   0.0  -0   -> -0

+dqmin040 min   0.0  -0.0 -> -0.0

+dqmin041 min   0.0   0.0 ->  0.0

+dqmin042 min  -0.0   0   -> -0.0

+dqmin043 min  -0.0  -0   -> -0

+dqmin044 min  -0.0  -0.0 -> -0.0

+dqmin045 min  -0.0   0.0 -> -0.0

+

+dqmin046 min   0E1  -0E1 -> -0E+1

+dqmin047 min  -0E1   0E2 -> -0E+1

+dqmin048 min   0E2   0E1 ->  0E+1

+dqmin049 min   0E1   0E2 ->  0E+1

+dqmin050 min  -0E3  -0E2 -> -0E+3

+dqmin051 min  -0E2  -0E3 -> -0E+3

+

+-- Specials

+dqmin090 min  Inf  -Inf   -> -Infinity

+dqmin091 min  Inf  -1000  -> -1000

+dqmin092 min  Inf  -1     -> -1

+dqmin093 min  Inf  -0     -> -0

+dqmin094 min  Inf   0     ->  0

+dqmin095 min  Inf   1     ->  1

+dqmin096 min  Inf   1000  ->  1000

+dqmin097 min  Inf   Inf   ->  Infinity

+dqmin098 min -1000  Inf   -> -1000

+dqmin099 min -Inf   Inf   -> -Infinity

+dqmin100 min -1     Inf   -> -1

+dqmin101 min -0     Inf   -> -0

+dqmin102 min  0     Inf   ->  0

+dqmin103 min  1     Inf   ->  1

+dqmin104 min  1000  Inf   ->  1000

+dqmin105 min  Inf   Inf   ->  Infinity

+

+dqmin120 min -Inf  -Inf   -> -Infinity

+dqmin121 min -Inf  -1000  -> -Infinity

+dqmin122 min -Inf  -1     -> -Infinity

+dqmin123 min -Inf  -0     -> -Infinity

+dqmin124 min -Inf   0     -> -Infinity

+dqmin125 min -Inf   1     -> -Infinity

+dqmin126 min -Inf   1000  -> -Infinity

+dqmin127 min -Inf   Inf   -> -Infinity

+dqmin128 min -Inf  -Inf   -> -Infinity

+dqmin129 min -1000 -Inf   -> -Infinity

+dqmin130 min -1    -Inf   -> -Infinity

+dqmin131 min -0    -Inf   -> -Infinity

+dqmin132 min  0    -Inf   -> -Infinity

+dqmin133 min  1    -Inf   -> -Infinity

+dqmin134 min  1000 -Inf   -> -Infinity

+dqmin135 min  Inf  -Inf   -> -Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+dqmin141 min  NaN -Inf    ->  -Infinity

+dqmin142 min  NaN -1000   ->  -1000

+dqmin143 min  NaN -1      ->  -1

+dqmin144 min  NaN -0      ->  -0

+dqmin145 min  NaN  0      ->  0

+dqmin146 min  NaN  1      ->  1

+dqmin147 min  NaN  1000   ->  1000

+dqmin148 min  NaN  Inf    ->  Infinity

+dqmin149 min  NaN  NaN    ->  NaN

+dqmin150 min -Inf  NaN    -> -Infinity

+dqmin151 min -1000 NaN    -> -1000

+dqmin152 min -1   -NaN    -> -1

+dqmin153 min -0    NaN    -> -0

+dqmin154 min  0   -NaN    ->  0

+dqmin155 min  1    NaN    ->  1

+dqmin156 min  1000 NaN    ->  1000

+dqmin157 min  Inf  NaN    ->  Infinity

+

+dqmin161 min  sNaN -Inf   ->  NaN  Invalid_operation

+dqmin162 min  sNaN -1000  ->  NaN  Invalid_operation

+dqmin163 min  sNaN -1     ->  NaN  Invalid_operation

+dqmin164 min  sNaN -0     ->  NaN  Invalid_operation

+dqmin165 min -sNaN  0     -> -NaN  Invalid_operation

+dqmin166 min -sNaN  1     -> -NaN  Invalid_operation

+dqmin167 min  sNaN  1000  ->  NaN  Invalid_operation

+dqmin168 min  sNaN  NaN   ->  NaN  Invalid_operation

+dqmin169 min  sNaN sNaN   ->  NaN  Invalid_operation

+dqmin170 min  NaN  sNaN   ->  NaN  Invalid_operation

+dqmin171 min -Inf  sNaN   ->  NaN  Invalid_operation

+dqmin172 min -1000 sNaN   ->  NaN  Invalid_operation

+dqmin173 min -1    sNaN   ->  NaN  Invalid_operation

+dqmin174 min -0    sNaN   ->  NaN  Invalid_operation

+dqmin175 min  0    sNaN   ->  NaN  Invalid_operation

+dqmin176 min  1    sNaN   ->  NaN  Invalid_operation

+dqmin177 min  1000 sNaN   ->  NaN  Invalid_operation

+dqmin178 min  Inf  sNaN   ->  NaN  Invalid_operation

+dqmin179 min  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqmin181 min  NaN9   -Inf   -> -Infinity

+dqmin182 min -NaN8    9990  ->  9990

+dqmin183 min  NaN71   Inf   ->  Infinity

+

+dqmin184 min  NaN1    NaN54 ->  NaN1

+dqmin185 min  NaN22  -NaN53 ->  NaN22

+dqmin186 min -NaN3    NaN6  -> -NaN3

+dqmin187 min -NaN44   NaN7  -> -NaN44

+

+dqmin188 min -Inf     NaN41 -> -Infinity

+dqmin189 min -9999   -NaN33 -> -9999

+dqmin190 min  Inf     NaN2  ->  Infinity

+

+dqmin191 min  sNaN99 -Inf    ->  NaN99 Invalid_operation

+dqmin192 min  sNaN98 -11     ->  NaN98 Invalid_operation

+dqmin193 min -sNaN97  NaN8   -> -NaN97 Invalid_operation

+dqmin194 min  sNaN69 sNaN94  ->  NaN69 Invalid_operation

+dqmin195 min  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dqmin196 min -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqmin197 min  088    sNaN91  ->  NaN91 Invalid_operation

+dqmin198 min  Inf   -sNaN90  -> -NaN90 Invalid_operation

+dqmin199 min  NaN    sNaN86  ->  NaN86 Invalid_operation

+

+-- old rounding checks

+dqmin221 min -12345678000 1  -> -12345678000

+dqmin222 min 1 -12345678000  -> -12345678000

+dqmin223 min -1234567800  1  -> -1234567800

+dqmin224 min 1 -1234567800   -> -1234567800

+dqmin225 min -1234567890  1  -> -1234567890

+dqmin226 min 1 -1234567890   -> -1234567890

+dqmin227 min -1234567891  1  -> -1234567891

+dqmin228 min 1 -1234567891   -> -1234567891

+dqmin229 min -12345678901 1  -> -12345678901

+dqmin230 min 1 -12345678901  -> -12345678901

+dqmin231 min -1234567896  1  -> -1234567896

+dqmin232 min 1 -1234567896   -> -1234567896

+dqmin233 min 1234567891  1   -> 1

+dqmin234 min 1 1234567891    -> 1

+dqmin235 min 12345678901 1   -> 1

+dqmin236 min 1 12345678901   -> 1

+dqmin237 min 1234567896  1   -> 1

+dqmin238 min 1 1234567896    -> 1

+

+-- from examples

+dqmin280 min '3'   '2'  ->  '2'

+dqmin281 min '-10' '3'  ->  '-10'

+dqmin282 min '1.0' '1'  ->  '1.0'

+dqmin283 min '1' '1.0'  ->  '1.0'

+dqmin284 min '7' 'NaN'  ->  '7'

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+dqmin401 min  Inf    1.1     ->  1.1

+dqmin402 min  1.1    1       ->  1

+dqmin403 min  1      1.0     ->  1.0

+dqmin404 min  1.0    0.1     ->  0.1

+dqmin405 min  0.1    0.10    ->  0.10

+dqmin406 min  0.10   0.100   ->  0.100

+dqmin407 min  0.10   0       ->  0

+dqmin408 min  0      0.0     ->  0.0

+dqmin409 min  0.0   -0       -> -0

+dqmin410 min  0.0   -0.0     -> -0.0

+dqmin411 min  0.00  -0.0     -> -0.0

+dqmin412 min  0.0   -0.00    -> -0.00

+dqmin413 min  0     -0.0     -> -0.0

+dqmin414 min  0     -0       -> -0

+dqmin415 min -0.0   -0       -> -0

+dqmin416 min -0     -0.100   -> -0.100

+dqmin417 min -0.100 -0.10    -> -0.10

+dqmin418 min -0.10  -0.1     -> -0.1

+dqmin419 min -0.1   -1.0     -> -1.0

+dqmin420 min -1.0   -1       -> -1

+dqmin421 min -1     -1.1     -> -1.1

+dqmin423 min -1.1   -Inf     -> -Infinity

+-- same with operands reversed

+dqmin431 min  1.1    Inf     ->  1.1

+dqmin432 min  1      1.1     ->  1

+dqmin433 min  1.0    1       ->  1.0

+dqmin434 min  0.1    1.0     ->  0.1

+dqmin435 min  0.10   0.1     ->  0.10

+dqmin436 min  0.100  0.10    ->  0.100

+dqmin437 min  0      0.10    ->  0

+dqmin438 min  0.0    0       ->  0.0

+dqmin439 min -0      0.0     -> -0

+dqmin440 min -0.0    0.0     -> -0.0

+dqmin441 min -0.0    0.00    -> -0.0

+dqmin442 min -0.00   0.0     -> -0.00

+dqmin443 min -0.0    0       -> -0.0

+dqmin444 min -0      0       -> -0

+dqmin445 min -0     -0.0     -> -0

+dqmin446 min -0.100 -0       -> -0.100

+dqmin447 min -0.10  -0.100   -> -0.10

+dqmin448 min -0.1   -0.10    -> -0.1

+dqmin449 min -1.0   -0.1     -> -1.0

+dqmin450 min -1     -1.0     -> -1

+dqmin451 min -1.1   -1       -> -1.1

+dqmin453 min -Inf   -1.1     -> -Infinity

+-- largies

+dqmin460 min  1000   1E+3    ->  1000

+dqmin461 min  1E+3   1000    ->  1000

+dqmin462 min  1000  -1E+3    -> -1E+3

+dqmin463 min  1E+3  -384    -> -384

+dqmin464 min -384   1E+3    -> -384

+dqmin465 min -1E+3   1000    -> -1E+3

+dqmin466 min -384  -1E+3    -> -1E+3

+dqmin467 min -1E+3  -384    -> -1E+3

+

+-- misalignment traps for little-endian

+dqmin471 min      1.0       0.1  -> 0.1

+dqmin472 min      0.1       1.0  -> 0.1

+dqmin473 min     10.0       0.1  -> 0.1

+dqmin474 min      0.1      10.0  -> 0.1

+dqmin475 min      100       1.0  -> 1.0

+dqmin476 min      1.0       100  -> 1.0

+dqmin477 min     1000      10.0  -> 10.0

+dqmin478 min     10.0      1000  -> 10.0

+dqmin479 min    10000     100.0  -> 100.0

+dqmin480 min    100.0     10000  -> 100.0

+dqmin481 min   100000    1000.0  -> 1000.0

+dqmin482 min   1000.0    100000  -> 1000.0

+dqmin483 min  1000000   10000.0  -> 10000.0

+dqmin484 min  10000.0   1000000  -> 10000.0

+

+-- subnormals

+dqmin510 min  1.00E-6143       0  ->   0

+dqmin511 min  0.1E-6143        0  ->   0

+dqmin512 min  0.10E-6143       0  ->   0

+dqmin513 min  0.100E-6143      0  ->   0

+dqmin514 min  0.01E-6143       0  ->   0

+dqmin515 min  0.999E-6143      0  ->   0

+dqmin516 min  0.099E-6143      0  ->   0

+dqmin517 min  0.009E-6143      0  ->   0

+dqmin518 min  0.001E-6143      0  ->   0

+dqmin519 min  0.0009E-6143     0  ->   0

+dqmin520 min  0.0001E-6143     0  ->   0

+

+dqmin530 min -1.00E-6143       0  ->  -1.00E-6143

+dqmin531 min -0.1E-6143        0  ->  -1E-6144    Subnormal

+dqmin532 min -0.10E-6143       0  ->  -1.0E-6144  Subnormal

+dqmin533 min -0.100E-6143      0  ->  -1.00E-6144 Subnormal

+dqmin534 min -0.01E-6143       0  ->  -1E-6145    Subnormal

+dqmin535 min -0.999E-6143      0  ->  -9.99E-6144 Subnormal

+dqmin536 min -0.099E-6143      0  ->  -9.9E-6145  Subnormal

+dqmin537 min -0.009E-6143      0  ->  -9E-6146    Subnormal

+dqmin538 min -0.001E-6143      0  ->  -1E-6146    Subnormal

+dqmin539 min -0.0009E-6143     0  ->  -9E-6147    Subnormal

+dqmin540 min -0.0001E-6143     0  ->  -1E-6147    Subnormal

+

+

+-- Null tests

+dqmin900 min 10  # -> NaN Invalid_operation

+dqmin901 min  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqMinMag.decTest b/Lib/test/decimaltestdata/dqMinMag.decTest
new file mode 100644
index 0000000..6d5e4b5
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqMinMag.decTest
@@ -0,0 +1,293 @@
+------------------------------------------------------------------------

+-- dqMinMag.decTest -- decQuad minnummag                              --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqmng001 minmag  -2  -2  -> -2

+dqmng002 minmag  -2  -1  -> -1

+dqmng003 minmag  -2   0  ->  0

+dqmng004 minmag  -2   1  ->  1

+dqmng005 minmag  -2   2  -> -2

+dqmng006 minmag  -1  -2  -> -1

+dqmng007 minmag  -1  -1  -> -1

+dqmng008 minmag  -1   0  ->  0

+dqmng009 minmag  -1   1  -> -1

+dqmng010 minmag  -1   2  -> -1

+dqmng011 minmag   0  -2  ->  0

+dqmng012 minmag   0  -1  ->  0

+dqmng013 minmag   0   0  ->  0

+dqmng014 minmag   0   1  ->  0

+dqmng015 minmag   0   2  ->  0

+dqmng016 minmag   1  -2  ->  1

+dqmng017 minmag   1  -1  -> -1

+dqmng018 minmag   1   0  ->  0

+dqmng019 minmag   1   1  ->  1

+dqmng020 minmag   1   2  ->  1

+dqmng021 minmag   2  -2  -> -2

+dqmng022 minmag   2  -1  -> -1

+dqmng023 minmag   2   0  ->  0

+dqmng025 minmag   2   1  ->  1

+dqmng026 minmag   2   2  ->  2

+

+-- extended zeros

+dqmng030 minmag   0     0   ->  0

+dqmng031 minmag   0    -0   -> -0

+dqmng032 minmag   0    -0.0 -> -0.0

+dqmng033 minmag   0     0.0 ->  0.0

+dqmng034 minmag  -0     0   -> -0

+dqmng035 minmag  -0    -0   -> -0

+dqmng036 minmag  -0    -0.0 -> -0

+dqmng037 minmag  -0     0.0 -> -0

+dqmng038 minmag   0.0   0   ->  0.0

+dqmng039 minmag   0.0  -0   -> -0

+dqmng040 minmag   0.0  -0.0 -> -0.0

+dqmng041 minmag   0.0   0.0 ->  0.0

+dqmng042 minmag  -0.0   0   -> -0.0

+dqmng043 minmag  -0.0  -0   -> -0

+dqmng044 minmag  -0.0  -0.0 -> -0.0

+dqmng045 minmag  -0.0   0.0 -> -0.0

+

+dqmng046 minmag   0E1  -0E1 -> -0E+1

+dqmng047 minmag  -0E1   0E2 -> -0E+1

+dqmng048 minmag   0E2   0E1 ->  0E+1

+dqmng049 minmag   0E1   0E2 ->  0E+1

+dqmng050 minmag  -0E3  -0E2 -> -0E+3

+dqmng051 minmag  -0E2  -0E3 -> -0E+3

+

+-- Specials

+dqmng090 minmag  Inf  -Inf   -> -Infinity

+dqmng091 minmag  Inf  -1000  -> -1000

+dqmng092 minmag  Inf  -1     -> -1

+dqmng093 minmag  Inf  -0     -> -0

+dqmng094 minmag  Inf   0     ->  0

+dqmng095 minmag  Inf   1     ->  1

+dqmng096 minmag  Inf   1000  ->  1000

+dqmng097 minmag  Inf   Inf   ->  Infinity

+dqmng098 minmag -1000  Inf   -> -1000

+dqmng099 minmag -Inf   Inf   -> -Infinity

+dqmng100 minmag -1     Inf   -> -1

+dqmng101 minmag -0     Inf   -> -0

+dqmng102 minmag  0     Inf   ->  0

+dqmng103 minmag  1     Inf   ->  1

+dqmng104 minmag  1000  Inf   ->  1000

+dqmng105 minmag  Inf   Inf   ->  Infinity

+

+dqmng120 minmag -Inf  -Inf   -> -Infinity

+dqmng121 minmag -Inf  -1000  -> -1000

+dqmng122 minmag -Inf  -1     -> -1

+dqmng123 minmag -Inf  -0     -> -0

+dqmng124 minmag -Inf   0     ->  0

+dqmng125 minmag -Inf   1     ->  1

+dqmng126 minmag -Inf   1000  ->  1000

+dqmng127 minmag -Inf   Inf   -> -Infinity

+dqmng128 minmag -Inf  -Inf   -> -Infinity

+dqmng129 minmag -1000 -Inf   -> -1000

+dqmng130 minmag -1    -Inf   -> -1

+dqmng131 minmag -0    -Inf   -> -0

+dqmng132 minmag  0    -Inf   ->  0

+dqmng133 minmag  1    -Inf   ->  1

+dqmng134 minmag  1000 -Inf   ->  1000

+dqmng135 minmag  Inf  -Inf   -> -Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+dqmng141 minmag  NaN -Inf    ->  -Infinity

+dqmng142 minmag  NaN -1000   ->  -1000

+dqmng143 minmag  NaN -1      ->  -1

+dqmng144 minmag  NaN -0      ->  -0

+dqmng145 minmag  NaN  0      ->  0

+dqmng146 minmag  NaN  1      ->  1

+dqmng147 minmag  NaN  1000   ->  1000

+dqmng148 minmag  NaN  Inf    ->  Infinity

+dqmng149 minmag  NaN  NaN    ->  NaN

+dqmng150 minmag -Inf  NaN    -> -Infinity

+dqmng151 minmag -1000 NaN    -> -1000

+dqmng152 minmag -1   -NaN    -> -1

+dqmng153 minmag -0    NaN    -> -0

+dqmng154 minmag  0   -NaN    ->  0

+dqmng155 minmag  1    NaN    ->  1

+dqmng156 minmag  1000 NaN    ->  1000

+dqmng157 minmag  Inf  NaN    ->  Infinity

+

+dqmng161 minmag  sNaN -Inf   ->  NaN  Invalid_operation

+dqmng162 minmag  sNaN -1000  ->  NaN  Invalid_operation

+dqmng163 minmag  sNaN -1     ->  NaN  Invalid_operation

+dqmng164 minmag  sNaN -0     ->  NaN  Invalid_operation

+dqmng165 minmag -sNaN  0     -> -NaN  Invalid_operation

+dqmng166 minmag -sNaN  1     -> -NaN  Invalid_operation

+dqmng167 minmag  sNaN  1000  ->  NaN  Invalid_operation

+dqmng168 minmag  sNaN  NaN   ->  NaN  Invalid_operation

+dqmng169 minmag  sNaN sNaN   ->  NaN  Invalid_operation

+dqmng170 minmag  NaN  sNaN   ->  NaN  Invalid_operation

+dqmng171 minmag -Inf  sNaN   ->  NaN  Invalid_operation

+dqmng172 minmag -1000 sNaN   ->  NaN  Invalid_operation

+dqmng173 minmag -1    sNaN   ->  NaN  Invalid_operation

+dqmng174 minmag -0    sNaN   ->  NaN  Invalid_operation

+dqmng175 minmag  0    sNaN   ->  NaN  Invalid_operation

+dqmng176 minmag  1    sNaN   ->  NaN  Invalid_operation

+dqmng177 minmag  1000 sNaN   ->  NaN  Invalid_operation

+dqmng178 minmag  Inf  sNaN   ->  NaN  Invalid_operation

+dqmng179 minmag  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqmng181 minmag  NaN9   -Inf   -> -Infinity

+dqmng182 minmag -NaN8    9990  ->  9990

+dqmng183 minmag  NaN71   Inf   ->  Infinity

+

+dqmng184 minmag  NaN1    NaN54 ->  NaN1

+dqmng185 minmag  NaN22  -NaN53 ->  NaN22

+dqmng186 minmag -NaN3    NaN6  -> -NaN3

+dqmng187 minmag -NaN44   NaN7  -> -NaN44

+

+dqmng188 minmag -Inf     NaN41 -> -Infinity

+dqmng189 minmag -9999   -NaN33 -> -9999

+dqmng190 minmag  Inf     NaN2  ->  Infinity

+

+dqmng191 minmag  sNaN99 -Inf    ->  NaN99 Invalid_operation

+dqmng192 minmag  sNaN98 -11     ->  NaN98 Invalid_operation

+dqmng193 minmag -sNaN97  NaN8   -> -NaN97 Invalid_operation

+dqmng194 minmag  sNaN69 sNaN94  ->  NaN69 Invalid_operation

+dqmng195 minmag  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dqmng196 minmag -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqmng197 minmag  088    sNaN91  ->  NaN91 Invalid_operation

+dqmng198 minmag  Inf   -sNaN90  -> -NaN90 Invalid_operation

+dqmng199 minmag  NaN    sNaN86  ->  NaN86 Invalid_operation

+

+-- old rounding checks

+dqmng221 minmag -12345678000 1  -> 1

+dqmng222 minmag 1 -12345678000  -> 1

+dqmng223 minmag -1234567800  1  -> 1

+dqmng224 minmag 1 -1234567800   -> 1

+dqmng225 minmag -1234567890  1  -> 1

+dqmng226 minmag 1 -1234567890   -> 1

+dqmng227 minmag -1234567891  1  -> 1

+dqmng228 minmag 1 -1234567891   -> 1

+dqmng229 minmag -12345678901 1  -> 1

+dqmng230 minmag 1 -12345678901  -> 1

+dqmng231 minmag -1234567896  1  -> 1

+dqmng232 minmag 1 -1234567896   -> 1

+dqmng233 minmag 1234567891  1   -> 1

+dqmng234 minmag 1 1234567891    -> 1

+dqmng235 minmag 12345678901 1   -> 1

+dqmng236 minmag 1 12345678901   -> 1

+dqmng237 minmag 1234567896  1   -> 1

+dqmng238 minmag 1 1234567896    -> 1

+

+-- from examples

+dqmng280 minmag '3'   '2'  ->  '2'

+dqmng281 minmag '-10' '3'  ->  '3'

+dqmng282 minmag '1.0' '1'  ->  '1.0'

+dqmng283 minmag '1' '1.0'  ->  '1.0'

+dqmng284 minmag '7' 'NaN'  ->  '7'

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+dqmng401 minmag  Inf    1.1     ->  1.1

+dqmng402 minmag  1.1    1       ->  1

+dqmng403 minmag  1      1.0     ->  1.0

+dqmng404 minmag  1.0    0.1     ->  0.1

+dqmng405 minmag  0.1    0.10    ->  0.10

+dqmng406 minmag  0.10   0.100   ->  0.100

+dqmng407 minmag  0.10   0       ->  0

+dqmng408 minmag  0      0.0     ->  0.0

+dqmng409 minmag  0.0   -0       -> -0

+dqmng410 minmag  0.0   -0.0     -> -0.0

+dqmng411 minmag  0.00  -0.0     -> -0.0

+dqmng412 minmag  0.0   -0.00    -> -0.00

+dqmng413 minmag  0     -0.0     -> -0.0

+dqmng414 minmag  0     -0       -> -0

+dqmng415 minmag -0.0   -0       -> -0

+dqmng416 minmag -0     -0.100   -> -0

+dqmng417 minmag -0.100 -0.10    -> -0.10

+dqmng418 minmag -0.10  -0.1     -> -0.1

+dqmng419 minmag -0.1   -1.0     -> -0.1

+dqmng420 minmag -1.0   -1       -> -1

+dqmng421 minmag -1     -1.1     -> -1

+dqmng423 minmag -1.1   -Inf     -> -1.1

+-- same with operands reversed

+dqmng431 minmag  1.1    Inf     ->  1.1

+dqmng432 minmag  1      1.1     ->  1

+dqmng433 minmag  1.0    1       ->  1.0

+dqmng434 minmag  0.1    1.0     ->  0.1

+dqmng435 minmag  0.10   0.1     ->  0.10

+dqmng436 minmag  0.100  0.10    ->  0.100

+dqmng437 minmag  0      0.10    ->  0

+dqmng438 minmag  0.0    0       ->  0.0

+dqmng439 minmag -0      0.0     -> -0

+dqmng440 minmag -0.0    0.0     -> -0.0

+dqmng441 minmag -0.0    0.00    -> -0.0

+dqmng442 minmag -0.00   0.0     -> -0.00

+dqmng443 minmag -0.0    0       -> -0.0

+dqmng444 minmag -0      0       -> -0

+dqmng445 minmag -0     -0.0     -> -0

+dqmng446 minmag -0.100 -0       -> -0

+dqmng447 minmag -0.10  -0.100   -> -0.10

+dqmng448 minmag -0.1   -0.10    -> -0.1

+dqmng449 minmag -1.0   -0.1     -> -0.1

+dqmng450 minmag -1     -1.0     -> -1

+dqmng451 minmag -1.1   -1       -> -1

+dqmng453 minmag -Inf   -1.1     -> -1.1

+-- largies

+dqmng460 minmag  1000   1E+3    ->  1000

+dqmng461 minmag  1E+3   1000    ->  1000

+dqmng462 minmag  1000  -1E+3    -> -1E+3

+dqmng463 minmag  1E+3   -384    -> -384

+dqmng464 minmag -384    1E+3    -> -384

+dqmng465 minmag -1E+3   1000    -> -1E+3

+dqmng466 minmag -384   -1E+3    -> -384

+dqmng467 minmag -1E+3   -384    -> -384

+

+-- subnormals

+dqmng510 minmag  1.00E-6143       0  ->   0

+dqmng511 minmag  0.1E-6143        0  ->   0

+dqmng512 minmag  0.10E-6143       0  ->   0

+dqmng513 minmag  0.100E-6143      0  ->   0

+dqmng514 minmag  0.01E-6143       0  ->   0

+dqmng515 minmag  0.999E-6143      0  ->   0

+dqmng516 minmag  0.099E-6143      0  ->   0

+dqmng517 minmag  0.009E-6143      0  ->   0

+dqmng518 minmag  0.001E-6143      0  ->   0

+dqmng519 minmag  0.0009E-6143     0  ->   0

+dqmng520 minmag  0.0001E-6143     0  ->   0

+

+dqmng530 minmag -1.00E-6143       0  ->   0

+dqmng531 minmag -0.1E-6143        0  ->   0

+dqmng532 minmag -0.10E-6143       0  ->   0

+dqmng533 minmag -0.100E-6143      0  ->   0

+dqmng534 minmag -0.01E-6143       0  ->   0

+dqmng535 minmag -0.999E-6143      0  ->   0

+dqmng536 minmag -0.099E-6143      0  ->   0

+dqmng537 minmag -0.009E-6143      0  ->   0

+dqmng538 minmag -0.001E-6143      0  ->   0

+dqmng539 minmag -0.0009E-6143     0  ->   0

+dqmng540 minmag -0.0001E-6143     0  ->   0

+

+

+-- Null tests

+dqmng900 minmag 10  # -> NaN Invalid_operation

+dqmng901 minmag  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqMinus.decTest b/Lib/test/decimaltestdata/dqMinus.decTest
new file mode 100644
index 0000000..bf69938
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqMinus.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- dqMinus.decTest -- decQuad 0-x                                     --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check

+dqmns001 minus       +7.50  -> -7.50

+

+-- Infinities

+dqmns011 minus  Infinity    -> -Infinity

+dqmns012 minus  -Infinity   -> Infinity

+

+-- NaNs, 0 payload

+dqmns021 minus         NaN  -> NaN

+dqmns022 minus        -NaN  -> -NaN

+dqmns023 minus        sNaN  -> NaN  Invalid_operation

+dqmns024 minus       -sNaN  -> -NaN Invalid_operation

+

+-- NaNs, non-0 payload

+dqmns031 minus       NaN13  -> NaN13

+dqmns032 minus      -NaN13  -> -NaN13

+dqmns033 minus      sNaN13  -> NaN13   Invalid_operation

+dqmns034 minus     -sNaN13  -> -NaN13  Invalid_operation

+dqmns035 minus       NaN70  -> NaN70

+dqmns036 minus      -NaN70  -> -NaN70

+dqmns037 minus      sNaN101 -> NaN101  Invalid_operation

+dqmns038 minus     -sNaN101 -> -NaN101 Invalid_operation

+

+-- finites

+dqmns101 minus          7   -> -7

+dqmns102 minus         -7   -> 7

+dqmns103 minus         75   -> -75

+dqmns104 minus        -75   -> 75

+dqmns105 minus       7.50   -> -7.50

+dqmns106 minus      -7.50   -> 7.50

+dqmns107 minus       7.500  -> -7.500

+dqmns108 minus      -7.500  -> 7.500

+

+-- zeros

+dqmns111 minus          0   -> 0

+dqmns112 minus         -0   -> 0

+dqmns113 minus       0E+4   -> 0E+4

+dqmns114 minus      -0E+4   -> 0E+4

+dqmns115 minus     0.0000   -> 0.0000

+dqmns116 minus    -0.0000   -> 0.0000

+dqmns117 minus      0E-141  -> 0E-141

+dqmns118 minus     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+dqmns121 minus   2682682682682682682682682682682682    -> -2682682682682682682682682682682682

+dqmns122 minus  -2682682682682682682682682682682682    ->  2682682682682682682682682682682682

+dqmns123 minus   1341341341341341341341341341341341    -> -1341341341341341341341341341341341

+dqmns124 minus  -1341341341341341341341341341341341    ->  1341341341341341341341341341341341

+

+-- Nmax, Nmin, Ntiny

+dqmns131 minus  9.999999999999999999999999999999999E+6144   -> -9.999999999999999999999999999999999E+6144

+dqmns132 minus  1E-6143                                     -> -1E-6143

+dqmns133 minus  1.000000000000000000000000000000000E-6143   -> -1.000000000000000000000000000000000E-6143

+dqmns134 minus  1E-6176                                     -> -1E-6176 Subnormal

+

+dqmns135 minus  -1E-6176                                    ->  1E-6176 Subnormal

+dqmns136 minus  -1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000000E-6143

+dqmns137 minus  -1E-6143                                    ->  1E-6143

+dqmns138 minus  -9.999999999999999999999999999999999E+6144  ->  9.999999999999999999999999999999999E+6144

diff --git a/Lib/test/decimaltestdata/dqMultiply.decTest b/Lib/test/decimaltestdata/dqMultiply.decTest
new file mode 100644
index 0000000..c87cc8f
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqMultiply.decTest
@@ -0,0 +1,589 @@
+------------------------------------------------------------------------

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

+

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

+-- VG case

+dqmul910 multiply 8.81125000000001349436E-1548 8.000000000000000000E-1550 -> 7.049000000000010795488000000000000E-3097 Rounded

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+precision:   34

+rounding:    half_up

+maxExponent: 6144

+minExponent: -6143

+dqmul911  multiply 130E-2  120E-2 -> 1.5600

+dqmul912  multiply 130E-2  12E-1  -> 1.560

+dqmul913  multiply 130E-2  1E0    -> 1.30

+dqmul914  multiply 1E2     1E4    -> 1E+6

+

+-- power-of-ten edge cases

+dqmul1001 multiply  1      10               -> 10

+dqmul1002 multiply  1      100              -> 100

+dqmul1003 multiply  1      1000             -> 1000

+dqmul1004 multiply  1      10000            -> 10000

+dqmul1005 multiply  1      100000           -> 100000

+dqmul1006 multiply  1      1000000          -> 1000000

+dqmul1007 multiply  1      10000000         -> 10000000

+dqmul1008 multiply  1      100000000        -> 100000000

+dqmul1009 multiply  1      1000000000       -> 1000000000

+dqmul1010 multiply  1      10000000000      -> 10000000000

+dqmul1011 multiply  1      100000000000     -> 100000000000

+dqmul1012 multiply  1      1000000000000    -> 1000000000000

+dqmul1013 multiply  1      10000000000000   -> 10000000000000

+dqmul1014 multiply  1      100000000000000  -> 100000000000000

+dqmul1015 multiply  1      1000000000000000 -> 1000000000000000

+

+dqmul1016 multiply  1      1000000000000000000 -> 1000000000000000000

+dqmul1017 multiply  1      100000000000000000000000000 -> 100000000000000000000000000

+dqmul1018 multiply  1      1000000000000000000000000000 -> 1000000000000000000000000000

+dqmul1019 multiply  1      10000000000000000000000000000 -> 10000000000000000000000000000

+dqmul1020 multiply  1      1000000000000000000000000000000000 -> 1000000000000000000000000000000000

+

+dqmul1021 multiply  10     1                -> 10

+dqmul1022 multiply  10     10               -> 100

+dqmul1023 multiply  10     100              -> 1000

+dqmul1024 multiply  10     1000             -> 10000

+dqmul1025 multiply  10     10000            -> 100000

+dqmul1026 multiply  10     100000           -> 1000000

+dqmul1027 multiply  10     1000000          -> 10000000

+dqmul1028 multiply  10     10000000         -> 100000000

+dqmul1029 multiply  10     100000000        -> 1000000000

+dqmul1030 multiply  10     1000000000       -> 10000000000

+dqmul1031 multiply  10     10000000000      -> 100000000000

+dqmul1032 multiply  10     100000000000     -> 1000000000000

+dqmul1033 multiply  10     1000000000000    -> 10000000000000

+dqmul1034 multiply  10     10000000000000   -> 100000000000000

+dqmul1035 multiply  10     100000000000000  -> 1000000000000000

+

+dqmul1036 multiply  10     100000000000000000 -> 1000000000000000000

+dqmul1037 multiply  10     10000000000000000000000000 -> 100000000000000000000000000

+dqmul1038 multiply  10     100000000000000000000000000 -> 1000000000000000000000000000

+dqmul1039 multiply  10     1000000000000000000000000000 -> 10000000000000000000000000000

+dqmul1040 multiply  10     100000000000000000000000000000000 -> 1000000000000000000000000000000000

+

+dqmul1041 multiply  100    0.1              -> 10.0

+dqmul1042 multiply  100    1                -> 100

+dqmul1043 multiply  100    10               -> 1000

+dqmul1044 multiply  100    100              -> 10000

+dqmul1045 multiply  100    1000             -> 100000

+dqmul1046 multiply  100    10000            -> 1000000

+dqmul1047 multiply  100    100000           -> 10000000

+dqmul1048 multiply  100    1000000          -> 100000000

+dqmul1049 multiply  100    10000000         -> 1000000000

+dqmul1050 multiply  100    100000000        -> 10000000000

+dqmul1051 multiply  100    1000000000       -> 100000000000

+dqmul1052 multiply  100    10000000000      -> 1000000000000

+dqmul1053 multiply  100    100000000000     -> 10000000000000

+dqmul1054 multiply  100    1000000000000    -> 100000000000000

+dqmul1055 multiply  100    10000000000000   -> 1000000000000000

+

+dqmul1056 multiply  100    10000000000000000 -> 1000000000000000000

+dqmul1057 multiply  100    1000000000000000000000000 -> 100000000000000000000000000

+dqmul1058 multiply  100    10000000000000000000000000 -> 1000000000000000000000000000

+dqmul1059 multiply  100    100000000000000000000000000 -> 10000000000000000000000000000

+dqmul1060 multiply  100    10000000000000000000000000000000 -> 1000000000000000000000000000000000

+

+dqmul1061 multiply  1000   0.01             -> 10.00

+dqmul1062 multiply  1000   0.1              -> 100.0

+dqmul1063 multiply  1000   1                -> 1000

+dqmul1064 multiply  1000   10               -> 10000

+dqmul1065 multiply  1000   100              -> 100000

+dqmul1066 multiply  1000   1000             -> 1000000

+dqmul1067 multiply  1000   10000            -> 10000000

+dqmul1068 multiply  1000   100000           -> 100000000

+dqmul1069 multiply  1000   1000000          -> 1000000000

+dqmul1070 multiply  1000   10000000         -> 10000000000

+dqmul1071 multiply  1000   100000000        -> 100000000000

+dqmul1072 multiply  1000   1000000000       -> 1000000000000

+dqmul1073 multiply  1000   10000000000      -> 10000000000000

+dqmul1074 multiply  1000   100000000000     -> 100000000000000

+dqmul1075 multiply  1000   1000000000000    -> 1000000000000000

+

+dqmul1076 multiply  1000   1000000000000000 -> 1000000000000000000

+dqmul1077 multiply  1000   100000000000000000000000 -> 100000000000000000000000000

+dqmul1078 multiply  1000   1000000000000000000000000 -> 1000000000000000000000000000

+dqmul1079 multiply  1000   10000000000000000000000000 -> 10000000000000000000000000000

+dqmul1080 multiply  1000   1000000000000000000000000000000 -> 1000000000000000000000000000000000

+

+dqmul1081 multiply  10000  0.001            -> 10.000

+dqmul1082 multiply  10000  0.01             -> 100.00

+dqmul1083 multiply  10000  0.1              -> 1000.0

+dqmul1084 multiply  10000  1                -> 10000

+dqmul1085 multiply  10000  10               -> 100000

+dqmul1086 multiply  10000  100              -> 1000000

+dqmul1087 multiply  10000  1000             -> 10000000

+dqmul1088 multiply  10000  10000            -> 100000000

+dqmul1089 multiply  10000  100000           -> 1000000000

+dqmul1090 multiply  10000  1000000          -> 10000000000

+dqmul1091 multiply  10000  10000000         -> 100000000000

+dqmul1092 multiply  10000  100000000        -> 1000000000000

+dqmul1093 multiply  10000  1000000000       -> 10000000000000

+dqmul1094 multiply  10000  10000000000      -> 100000000000000

+dqmul1095 multiply  10000  100000000000     -> 1000000000000000

+

+dqmul1096 multiply  10000  100000000000000 -> 1000000000000000000

+dqmul1097 multiply  10000  10000000000000000000000 -> 100000000000000000000000000

+dqmul1098 multiply  10000  100000000000000000000000 -> 1000000000000000000000000000

+dqmul1099 multiply  10000  1000000000000000000000000 -> 10000000000000000000000000000

+dqmul1100 multiply  10000  100000000000000000000000000000 -> 1000000000000000000000000000000000

+

+dqmul1107 multiply  10000   99999999999     ->  999999999990000

+dqmul1108 multiply  10000   99999999999     ->  999999999990000

+

+-- Null tests

+dqmul9990 multiply 10  # -> NaN Invalid_operation

+dqmul9991 multiply  # 10 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqNextMinus.decTest b/Lib/test/decimaltestdata/dqNextMinus.decTest
new file mode 100644
index 0000000..e1e3b06
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqNextMinus.decTest
@@ -0,0 +1,126 @@
+------------------------------------------------------------------------

+-- dqNextMinus.decTest -- decQuad next that is less [754r nextdown]   --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+dqnextm001 nextminus  0.9999999999999999999999999999999995 ->   0.9999999999999999999999999999999994

+dqnextm002 nextminus  0.9999999999999999999999999999999996 ->   0.9999999999999999999999999999999995

+dqnextm003 nextminus  0.9999999999999999999999999999999997 ->   0.9999999999999999999999999999999996

+dqnextm004 nextminus  0.9999999999999999999999999999999998 ->   0.9999999999999999999999999999999997

+dqnextm005 nextminus  0.9999999999999999999999999999999999 ->   0.9999999999999999999999999999999998

+dqnextm006 nextminus  1.000000000000000000000000000000000  ->   0.9999999999999999999999999999999999

+dqnextm007 nextminus  1.0         ->   0.9999999999999999999999999999999999

+dqnextm008 nextminus  1           ->   0.9999999999999999999999999999999999

+dqnextm009 nextminus  1.000000000000000000000000000000001  ->   1.000000000000000000000000000000000

+dqnextm010 nextminus  1.000000000000000000000000000000002  ->   1.000000000000000000000000000000001

+dqnextm011 nextminus  1.000000000000000000000000000000003  ->   1.000000000000000000000000000000002

+dqnextm012 nextminus  1.000000000000000000000000000000004  ->   1.000000000000000000000000000000003

+dqnextm013 nextminus  1.000000000000000000000000000000005  ->   1.000000000000000000000000000000004

+dqnextm014 nextminus  1.000000000000000000000000000000006  ->   1.000000000000000000000000000000005

+dqnextm015 nextminus  1.000000000000000000000000000000007  ->   1.000000000000000000000000000000006

+dqnextm016 nextminus  1.000000000000000000000000000000008  ->   1.000000000000000000000000000000007

+dqnextm017 nextminus  1.000000000000000000000000000000009  ->   1.000000000000000000000000000000008

+dqnextm018 nextminus  1.000000000000000000000000000000010  ->   1.000000000000000000000000000000009

+dqnextm019 nextminus  1.000000000000000000000000000000011  ->   1.000000000000000000000000000000010

+dqnextm020 nextminus  1.000000000000000000000000000000012  ->   1.000000000000000000000000000000011

+

+dqnextm021 nextminus -0.9999999999999999999999999999999995 ->  -0.9999999999999999999999999999999996

+dqnextm022 nextminus -0.9999999999999999999999999999999996 ->  -0.9999999999999999999999999999999997

+dqnextm023 nextminus -0.9999999999999999999999999999999997 ->  -0.9999999999999999999999999999999998

+dqnextm024 nextminus -0.9999999999999999999999999999999998 ->  -0.9999999999999999999999999999999999

+dqnextm025 nextminus -0.9999999999999999999999999999999999 ->  -1.000000000000000000000000000000000

+dqnextm026 nextminus -1.000000000000000000000000000000000  ->  -1.000000000000000000000000000000001

+dqnextm027 nextminus -1.0         ->  -1.000000000000000000000000000000001

+dqnextm028 nextminus -1           ->  -1.000000000000000000000000000000001

+dqnextm029 nextminus -1.000000000000000000000000000000001  ->  -1.000000000000000000000000000000002

+dqnextm030 nextminus -1.000000000000000000000000000000002  ->  -1.000000000000000000000000000000003

+dqnextm031 nextminus -1.000000000000000000000000000000003  ->  -1.000000000000000000000000000000004

+dqnextm032 nextminus -1.000000000000000000000000000000004  ->  -1.000000000000000000000000000000005

+dqnextm033 nextminus -1.000000000000000000000000000000005  ->  -1.000000000000000000000000000000006

+dqnextm034 nextminus -1.000000000000000000000000000000006  ->  -1.000000000000000000000000000000007

+dqnextm035 nextminus -1.000000000000000000000000000000007  ->  -1.000000000000000000000000000000008

+dqnextm036 nextminus -1.000000000000000000000000000000008  ->  -1.000000000000000000000000000000009

+dqnextm037 nextminus -1.000000000000000000000000000000009  ->  -1.000000000000000000000000000000010

+dqnextm038 nextminus -1.000000000000000000000000000000010  ->  -1.000000000000000000000000000000011

+dqnextm039 nextminus -1.000000000000000000000000000000011  ->  -1.000000000000000000000000000000012

+

+-- ultra-tiny inputs

+dqnextm062 nextminus  1E-6176         ->   0E-6176

+dqnextm065 nextminus -1E-6176         ->  -2E-6176

+

+-- Zeros

+dqnextm100 nextminus -0           -> -1E-6176

+dqnextm101 nextminus  0           -> -1E-6176

+dqnextm102 nextminus  0.00        -> -1E-6176

+dqnextm103 nextminus -0.00        -> -1E-6176

+dqnextm104 nextminus  0E-300      -> -1E-6176

+dqnextm105 nextminus  0E+300      -> -1E-6176

+dqnextm106 nextminus  0E+30000    -> -1E-6176

+dqnextm107 nextminus -0E+30000    -> -1E-6176

+

+-- specials

+dqnextm150 nextminus   Inf    ->  9.999999999999999999999999999999999E+6144

+dqnextm151 nextminus  -Inf    -> -Infinity

+dqnextm152 nextminus   NaN    ->  NaN

+dqnextm153 nextminus  sNaN    ->  NaN   Invalid_operation

+dqnextm154 nextminus   NaN77  ->  NaN77

+dqnextm155 nextminus  sNaN88  ->  NaN88 Invalid_operation

+dqnextm156 nextminus  -NaN    -> -NaN

+dqnextm157 nextminus -sNaN    -> -NaN   Invalid_operation

+dqnextm158 nextminus  -NaN77  -> -NaN77

+dqnextm159 nextminus -sNaN88  -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+dqnextm170 nextminus  9.999999999999999999999999999999999E+6144   -> 9.999999999999999999999999999999998E+6144

+dqnextm171 nextminus  9.999999999999999999999999999999998E+6144   -> 9.999999999999999999999999999999997E+6144

+dqnextm172 nextminus  1E-6143                   -> 9.99999999999999999999999999999999E-6144

+dqnextm173 nextminus  1.000000000000000000000000000000000E-6143   -> 9.99999999999999999999999999999999E-6144

+dqnextm174 nextminus  9E-6176                   -> 8E-6176

+dqnextm175 nextminus  9.9E-6175                 -> 9.8E-6175

+dqnextm176 nextminus  9.99999999999999999999999999999E-6147       -> 9.99999999999999999999999999998E-6147

+dqnextm177 nextminus  9.99999999999999999999999999999999E-6144    -> 9.99999999999999999999999999999998E-6144

+dqnextm178 nextminus  9.99999999999999999999999999999998E-6144    -> 9.99999999999999999999999999999997E-6144

+dqnextm179 nextminus  9.99999999999999999999999999999997E-6144    -> 9.99999999999999999999999999999996E-6144

+dqnextm180 nextminus  0E-6176                   -> -1E-6176

+dqnextm181 nextminus  1E-6176                   -> 0E-6176

+dqnextm182 nextminus  2E-6176                   -> 1E-6176

+

+dqnextm183 nextminus  -0E-6176                  -> -1E-6176

+dqnextm184 nextminus  -1E-6176                  -> -2E-6176

+dqnextm185 nextminus  -2E-6176                  -> -3E-6176

+dqnextm186 nextminus  -10E-6176                 -> -1.1E-6175

+dqnextm187 nextminus  -100E-6176                -> -1.01E-6174

+dqnextm188 nextminus  -100000E-6176             -> -1.00001E-6171

+dqnextm189 nextminus  -1.00000000000000000000000000000E-6143      -> -1.000000000000000000000000000000001E-6143

+dqnextm190 nextminus  -1.000000000000000000000000000000000E-6143  -> -1.000000000000000000000000000000001E-6143

+dqnextm191 nextminus  -1E-6143                  -> -1.000000000000000000000000000000001E-6143

+dqnextm192 nextminus  -9.999999999999999999999999999999998E+6144  -> -9.999999999999999999999999999999999E+6144

+dqnextm193 nextminus  -9.999999999999999999999999999999999E+6144  -> -Infinity

+

+-- Null tests

+dqnextm900 nextminus  # -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqNextPlus.decTest b/Lib/test/decimaltestdata/dqNextPlus.decTest
new file mode 100644
index 0000000..973c8eb
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqNextPlus.decTest
@@ -0,0 +1,124 @@
+------------------------------------------------------------------------

+-- dqNextPlus.decTest -- decQuad next that is greater [754r nextup]   --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+dqnextp001 nextplus  0.9999999999999999999999999999999995 ->   0.9999999999999999999999999999999996

+dqnextp002 nextplus  0.9999999999999999999999999999999996 ->   0.9999999999999999999999999999999997

+dqnextp003 nextplus  0.9999999999999999999999999999999997 ->   0.9999999999999999999999999999999998

+dqnextp004 nextplus  0.9999999999999999999999999999999998 ->   0.9999999999999999999999999999999999

+dqnextp005 nextplus  0.9999999999999999999999999999999999 ->   1.000000000000000000000000000000000

+dqnextp006 nextplus  1.000000000000000000000000000000000  ->   1.000000000000000000000000000000001

+dqnextp007 nextplus  1.0         ->   1.000000000000000000000000000000001

+dqnextp008 nextplus  1           ->   1.000000000000000000000000000000001

+dqnextp009 nextplus  1.000000000000000000000000000000001  ->   1.000000000000000000000000000000002

+dqnextp010 nextplus  1.000000000000000000000000000000002  ->   1.000000000000000000000000000000003

+dqnextp011 nextplus  1.000000000000000000000000000000003  ->   1.000000000000000000000000000000004

+dqnextp012 nextplus  1.000000000000000000000000000000004  ->   1.000000000000000000000000000000005

+dqnextp013 nextplus  1.000000000000000000000000000000005  ->   1.000000000000000000000000000000006

+dqnextp014 nextplus  1.000000000000000000000000000000006  ->   1.000000000000000000000000000000007

+dqnextp015 nextplus  1.000000000000000000000000000000007  ->   1.000000000000000000000000000000008

+dqnextp016 nextplus  1.000000000000000000000000000000008  ->   1.000000000000000000000000000000009

+dqnextp017 nextplus  1.000000000000000000000000000000009  ->   1.000000000000000000000000000000010

+dqnextp018 nextplus  1.000000000000000000000000000000010  ->   1.000000000000000000000000000000011

+dqnextp019 nextplus  1.000000000000000000000000000000011  ->   1.000000000000000000000000000000012

+

+dqnextp021 nextplus -0.9999999999999999999999999999999995 ->  -0.9999999999999999999999999999999994

+dqnextp022 nextplus -0.9999999999999999999999999999999996 ->  -0.9999999999999999999999999999999995

+dqnextp023 nextplus -0.9999999999999999999999999999999997 ->  -0.9999999999999999999999999999999996

+dqnextp024 nextplus -0.9999999999999999999999999999999998 ->  -0.9999999999999999999999999999999997

+dqnextp025 nextplus -0.9999999999999999999999999999999999 ->  -0.9999999999999999999999999999999998

+dqnextp026 nextplus -1.000000000000000000000000000000000  ->  -0.9999999999999999999999999999999999

+dqnextp027 nextplus -1.0         ->  -0.9999999999999999999999999999999999

+dqnextp028 nextplus -1           ->  -0.9999999999999999999999999999999999

+dqnextp029 nextplus -1.000000000000000000000000000000001  ->  -1.000000000000000000000000000000000

+dqnextp030 nextplus -1.000000000000000000000000000000002  ->  -1.000000000000000000000000000000001

+dqnextp031 nextplus -1.000000000000000000000000000000003  ->  -1.000000000000000000000000000000002

+dqnextp032 nextplus -1.000000000000000000000000000000004  ->  -1.000000000000000000000000000000003

+dqnextp033 nextplus -1.000000000000000000000000000000005  ->  -1.000000000000000000000000000000004

+dqnextp034 nextplus -1.000000000000000000000000000000006  ->  -1.000000000000000000000000000000005

+dqnextp035 nextplus -1.000000000000000000000000000000007  ->  -1.000000000000000000000000000000006

+dqnextp036 nextplus -1.000000000000000000000000000000008  ->  -1.000000000000000000000000000000007

+dqnextp037 nextplus -1.000000000000000000000000000000009  ->  -1.000000000000000000000000000000008

+dqnextp038 nextplus -1.000000000000000000000000000000010  ->  -1.000000000000000000000000000000009

+dqnextp039 nextplus -1.000000000000000000000000000000011  ->  -1.000000000000000000000000000000010

+dqnextp040 nextplus -1.000000000000000000000000000000012  ->  -1.000000000000000000000000000000011

+

+-- Zeros

+dqnextp100 nextplus  0           ->  1E-6176

+dqnextp101 nextplus  0.00        ->  1E-6176

+dqnextp102 nextplus  0E-300      ->  1E-6176

+dqnextp103 nextplus  0E+300      ->  1E-6176

+dqnextp104 nextplus  0E+30000    ->  1E-6176

+dqnextp105 nextplus -0           ->  1E-6176

+dqnextp106 nextplus -0.00        ->  1E-6176

+dqnextp107 nextplus -0E-300      ->  1E-6176

+dqnextp108 nextplus -0E+300      ->  1E-6176

+dqnextp109 nextplus -0E+30000    ->  1E-6176

+

+-- specials

+dqnextp150 nextplus   Inf    ->  Infinity

+dqnextp151 nextplus  -Inf    -> -9.999999999999999999999999999999999E+6144

+dqnextp152 nextplus   NaN    ->  NaN

+dqnextp153 nextplus  sNaN    ->  NaN   Invalid_operation

+dqnextp154 nextplus   NaN77  ->  NaN77

+dqnextp155 nextplus  sNaN88  ->  NaN88 Invalid_operation

+dqnextp156 nextplus  -NaN    -> -NaN

+dqnextp157 nextplus -sNaN    -> -NaN   Invalid_operation

+dqnextp158 nextplus  -NaN77  -> -NaN77

+dqnextp159 nextplus -sNaN88  -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+dqnextp170 nextplus  -9.999999999999999999999999999999999E+6144  -> -9.999999999999999999999999999999998E+6144

+dqnextp171 nextplus  -9.999999999999999999999999999999998E+6144  -> -9.999999999999999999999999999999997E+6144

+dqnextp172 nextplus  -1E-6143                  -> -9.99999999999999999999999999999999E-6144

+dqnextp173 nextplus  -1.000000000000000E-6143  -> -9.99999999999999999999999999999999E-6144

+dqnextp174 nextplus  -9E-6176                  -> -8E-6176

+dqnextp175 nextplus  -9.9E-6175                -> -9.8E-6175

+dqnextp176 nextplus  -9.99999999999999999999999999999E-6147      -> -9.99999999999999999999999999998E-6147

+dqnextp177 nextplus  -9.99999999999999999999999999999999E-6144   -> -9.99999999999999999999999999999998E-6144

+dqnextp178 nextplus  -9.99999999999999999999999999999998E-6144   -> -9.99999999999999999999999999999997E-6144

+dqnextp179 nextplus  -9.99999999999999999999999999999997E-6144   -> -9.99999999999999999999999999999996E-6144

+dqnextp180 nextplus  -0E-6176                  ->  1E-6176

+dqnextp181 nextplus  -1E-6176                  -> -0E-6176

+dqnextp182 nextplus  -2E-6176                  -> -1E-6176

+

+dqnextp183 nextplus   0E-6176                  ->  1E-6176

+dqnextp184 nextplus   1E-6176                  ->  2E-6176

+dqnextp185 nextplus   2E-6176                  ->  3E-6176

+dqnextp186 nextplus   10E-6176                 ->  1.1E-6175

+dqnextp187 nextplus   100E-6176                ->  1.01E-6174

+dqnextp188 nextplus   100000E-6176             ->  1.00001E-6171

+dqnextp189 nextplus   1.00000000000000000000000000000E-6143      ->  1.000000000000000000000000000000001E-6143

+dqnextp190 nextplus   1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000001E-6143

+dqnextp191 nextplus   1E-6143                  ->  1.000000000000000000000000000000001E-6143

+dqnextp192 nextplus   9.999999999999999999999999999999998E+6144  ->  9.999999999999999999999999999999999E+6144

+dqnextp193 nextplus   9.999999999999999999999999999999999E+6144  ->  Infinity

+

+-- Null tests

+dqnextp900 nextplus  # -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqNextToward.decTest b/Lib/test/decimaltestdata/dqNextToward.decTest
new file mode 100644
index 0000000..0eb6770
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqNextToward.decTest
@@ -0,0 +1,375 @@
+------------------------------------------------------------------------

+-- dqNextToward.decTest -- decQuad next toward rhs [754r nextafter]   --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+

+-- Sanity check with a scattering of numerics

+dqnextt001 nexttoward   10    10   ->  10

+dqnextt002 nexttoward  -10   -10   -> -10

+dqnextt003 nexttoward   1     10   ->  1.000000000000000000000000000000001

+dqnextt004 nexttoward   1    -10   ->  0.9999999999999999999999999999999999

+dqnextt005 nexttoward  -1     10   -> -0.9999999999999999999999999999999999

+dqnextt006 nexttoward  -1    -10   -> -1.000000000000000000000000000000001

+dqnextt007 nexttoward   0     10   ->  1E-6176       Underflow Subnormal Inexact Rounded

+dqnextt008 nexttoward   0    -10   -> -1E-6176       Underflow Subnormal Inexact Rounded

+dqnextt009 nexttoward   9.999999999999999999999999999999999E+6144 +Infinity ->  Infinity Overflow Inexact Rounded

+dqnextt010 nexttoward  -9.999999999999999999999999999999999E+6144 -Infinity -> -Infinity Overflow Inexact Rounded

+dqnextt011 nexttoward       9.999999999999999999999999999999999  10  ->  10.00000000000000000000000000000000

+dqnextt012 nexttoward   10  9.999999999999999999999999999999999      ->  9.999999999999999999999999999999999

+dqnextt013 nexttoward      -9.999999999999999999999999999999999 -10  -> -10.00000000000000000000000000000000

+dqnextt014 nexttoward  -10 -9.999999999999999999999999999999999      -> -9.999999999999999999999999999999999

+dqnextt015 nexttoward       9.999999999999999999999999999999998  10  ->  9.999999999999999999999999999999999

+dqnextt016 nexttoward   10  9.999999999999999999999999999999998      ->  9.999999999999999999999999999999999

+dqnextt017 nexttoward      -9.999999999999999999999999999999998 -10  -> -9.999999999999999999999999999999999

+dqnextt018 nexttoward  -10 -9.999999999999999999999999999999998      -> -9.999999999999999999999999999999999

+

+------- lhs=rhs

+-- finites

+dqnextt101 nexttoward          7       7 ->  7

+dqnextt102 nexttoward         -7      -7 -> -7

+dqnextt103 nexttoward         75      75 ->  75

+dqnextt104 nexttoward        -75     -75 -> -75

+dqnextt105 nexttoward       7.50     7.5 ->  7.50

+dqnextt106 nexttoward      -7.50   -7.50 -> -7.50

+dqnextt107 nexttoward       7.500 7.5000 ->  7.500

+dqnextt108 nexttoward      -7.500   -7.5 -> -7.500

+

+-- zeros

+dqnextt111 nexttoward          0       0 ->  0

+dqnextt112 nexttoward         -0      -0 -> -0

+dqnextt113 nexttoward       0E+4       0 ->  0E+4

+dqnextt114 nexttoward      -0E+4      -0 -> -0E+4

+dqnextt115 nexttoward     0.00000000000   0.000000000000 ->  0E-11

+dqnextt116 nexttoward    -0.00000000000  -0.00           -> -0E-11

+dqnextt117 nexttoward      0E-141      0 ->  0E-141

+dqnextt118 nexttoward     -0E-141   -000 -> -0E-141

+

+-- full coefficients, alternating bits

+dqnextt121 nexttoward   268268268    268268268 ->   268268268

+dqnextt122 nexttoward  -268268268   -268268268 ->  -268268268

+dqnextt123 nexttoward   134134134    134134134 ->   134134134

+dqnextt124 nexttoward  -134134134   -134134134 ->  -134134134

+

+-- Nmax, Nmin, Ntiny

+dqnextt131 nexttoward  9.999999999999999999999999999999999E+6144  9.999999999999999999999999999999999E+6144   ->   9.999999999999999999999999999999999E+6144

+dqnextt132 nexttoward  1E-6143           1E-6143            ->   1E-6143

+dqnextt133 nexttoward  1.000000000000000000000000000000000E-6143  1.000000000000000000000000000000000E-6143   ->   1.000000000000000000000000000000000E-6143

+dqnextt134 nexttoward  1E-6176           1E-6176            ->   1E-6176

+

+dqnextt135 nexttoward  -1E-6176          -1E-6176           ->  -1E-6176

+dqnextt136 nexttoward  -1.000000000000000000000000000000000E-6143 -1.000000000000000000000000000000000E-6143  ->  -1.000000000000000000000000000000000E-6143

+dqnextt137 nexttoward  -1E-6143          -1E-6143           ->  -1E-6143

+dqnextt138 nexttoward  -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144  ->  -9.999999999999999999999999999999999E+6144

+

+------- lhs<rhs

+dqnextt201 nexttoward  0.9999999999999999999999999999999995 Infinity ->   0.9999999999999999999999999999999996

+dqnextt202 nexttoward  0.9999999999999999999999999999999996 Infinity ->   0.9999999999999999999999999999999997

+dqnextt203 nexttoward  0.9999999999999999999999999999999997 Infinity ->   0.9999999999999999999999999999999998

+dqnextt204 nexttoward  0.9999999999999999999999999999999998 Infinity ->   0.9999999999999999999999999999999999

+dqnextt205 nexttoward  0.9999999999999999999999999999999999 Infinity ->   1.000000000000000000000000000000000

+dqnextt206 nexttoward  1.000000000000000000000000000000000  Infinity ->   1.000000000000000000000000000000001

+dqnextt207 nexttoward  1.0         Infinity ->   1.000000000000000000000000000000001

+dqnextt208 nexttoward  1           Infinity ->   1.000000000000000000000000000000001

+dqnextt209 nexttoward  1.000000000000000000000000000000001  Infinity ->   1.000000000000000000000000000000002

+dqnextt210 nexttoward  1.000000000000000000000000000000002  Infinity ->   1.000000000000000000000000000000003

+dqnextt211 nexttoward  1.000000000000000000000000000000003  Infinity ->   1.000000000000000000000000000000004

+dqnextt212 nexttoward  1.000000000000000000000000000000004  Infinity ->   1.000000000000000000000000000000005

+dqnextt213 nexttoward  1.000000000000000000000000000000005  Infinity ->   1.000000000000000000000000000000006

+dqnextt214 nexttoward  1.000000000000000000000000000000006  Infinity ->   1.000000000000000000000000000000007

+dqnextt215 nexttoward  1.000000000000000000000000000000007  Infinity ->   1.000000000000000000000000000000008

+dqnextt216 nexttoward  1.000000000000000000000000000000008  Infinity ->   1.000000000000000000000000000000009

+dqnextt217 nexttoward  1.000000000000000000000000000000009  Infinity ->   1.000000000000000000000000000000010

+dqnextt218 nexttoward  1.000000000000000000000000000000010  Infinity ->   1.000000000000000000000000000000011

+dqnextt219 nexttoward  1.000000000000000000000000000000011  Infinity ->   1.000000000000000000000000000000012

+

+dqnextt221 nexttoward -0.9999999999999999999999999999999995 Infinity ->  -0.9999999999999999999999999999999994

+dqnextt222 nexttoward -0.9999999999999999999999999999999996 Infinity -> -0.9999999999999999999999999999999995

+dqnextt223 nexttoward -0.9999999999999999999999999999999997 Infinity ->  -0.9999999999999999999999999999999996

+dqnextt224 nexttoward -0.9999999999999999999999999999999998 Infinity ->  -0.9999999999999999999999999999999997

+dqnextt225 nexttoward -0.9999999999999999999999999999999999 Infinity ->  -0.9999999999999999999999999999999998

+dqnextt226 nexttoward -1.000000000000000000000000000000000  Infinity ->  -0.9999999999999999999999999999999999

+dqnextt227 nexttoward -1.0         Infinity ->  -0.9999999999999999999999999999999999

+dqnextt228 nexttoward -1           Infinity ->  -0.9999999999999999999999999999999999

+dqnextt229 nexttoward -1.000000000000000000000000000000001  Infinity ->  -1.000000000000000000000000000000000

+dqnextt230 nexttoward -1.000000000000000000000000000000002  Infinity ->  -1.000000000000000000000000000000001

+dqnextt231 nexttoward -1.000000000000000000000000000000003  Infinity ->  -1.000000000000000000000000000000002

+dqnextt232 nexttoward -1.000000000000000000000000000000004  Infinity ->  -1.000000000000000000000000000000003

+dqnextt233 nexttoward -1.000000000000000000000000000000005  Infinity ->  -1.000000000000000000000000000000004

+dqnextt234 nexttoward -1.000000000000000000000000000000006  Infinity ->  -1.000000000000000000000000000000005

+dqnextt235 nexttoward -1.000000000000000000000000000000007  Infinity ->  -1.000000000000000000000000000000006

+dqnextt236 nexttoward -1.000000000000000000000000000000008  Infinity ->  -1.000000000000000000000000000000007

+dqnextt237 nexttoward -1.000000000000000000000000000000009  Infinity ->  -1.000000000000000000000000000000008

+dqnextt238 nexttoward -1.000000000000000000000000000000010  Infinity ->  -1.000000000000000000000000000000009

+dqnextt239 nexttoward -1.000000000000000000000000000000011  Infinity ->  -1.000000000000000000000000000000010

+dqnextt240 nexttoward -1.000000000000000000000000000000012  Infinity ->  -1.000000000000000000000000000000011

+

+-- Zeros

+dqnextt300 nexttoward  0           Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt301 nexttoward  0.00        Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt302 nexttoward  0E-300      Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt303 nexttoward  0E+300      Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt304 nexttoward  0E+30000    Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt305 nexttoward -0           Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt306 nexttoward -0.00        Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt307 nexttoward -0E-300      Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt308 nexttoward -0E+300      Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+dqnextt309 nexttoward -0E+30000    Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded

+

+-- specials

+dqnextt350 nexttoward   Inf    Infinity ->  Infinity

+dqnextt351 nexttoward  -Inf    Infinity -> -9.999999999999999999999999999999999E+6144

+dqnextt352 nexttoward   NaN    Infinity ->  NaN

+dqnextt353 nexttoward  sNaN    Infinity ->  NaN   Invalid_operation

+dqnextt354 nexttoward   NaN77  Infinity ->  NaN77

+dqnextt355 nexttoward  sNaN88  Infinity ->  NaN88 Invalid_operation

+dqnextt356 nexttoward  -NaN    Infinity -> -NaN

+dqnextt357 nexttoward -sNaN    Infinity -> -NaN   Invalid_operation

+dqnextt358 nexttoward  -NaN77  Infinity -> -NaN77

+dqnextt359 nexttoward -sNaN88  Infinity -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+dqnextt370 nexttoward  -9.999999999999999999999999999999999E+6144  Infinity  -> -9.999999999999999999999999999999998E+6144

+dqnextt371 nexttoward  -9.999999999999999999999999999999998E+6144  Infinity  -> -9.999999999999999999999999999999997E+6144

+dqnextt372 nexttoward  -1E-6143                  Infinity  -> -9.99999999999999999999999999999999E-6144  Underflow Subnormal Inexact Rounded

+dqnextt373 nexttoward  -1.000000000000000E-6143  Infinity  -> -9.99999999999999999999999999999999E-6144  Underflow Subnormal Inexact Rounded

+dqnextt374 nexttoward  -9E-6176                  Infinity  -> -8E-6176                 Underflow Subnormal Inexact Rounded

+dqnextt375 nexttoward  -9.9E-6175                Infinity  -> -9.8E-6175               Underflow Subnormal Inexact Rounded

+dqnextt376 nexttoward  -9.99999999999999999999999999999E-6147      Infinity  -> -9.99999999999999999999999999998E-6147     Underflow Subnormal Inexact Rounded

+dqnextt377 nexttoward  -9.99999999999999999999999999999999E-6144   Infinity  -> -9.99999999999999999999999999999998E-6144  Underflow Subnormal Inexact Rounded

+dqnextt378 nexttoward  -9.99999999999999999999999999999998E-6144   Infinity  -> -9.99999999999999999999999999999997E-6144  Underflow Subnormal Inexact Rounded

+dqnextt379 nexttoward  -9.99999999999999999999999999999997E-6144   Infinity  -> -9.99999999999999999999999999999996E-6144  Underflow Subnormal Inexact Rounded

+dqnextt380 nexttoward  -0E-6176                  Infinity  ->  1E-6176                 Underflow Subnormal Inexact Rounded

+dqnextt381 nexttoward  -1E-6176                  Infinity  -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqnextt382 nexttoward  -2E-6176                  Infinity  -> -1E-6176                 Underflow Subnormal Inexact Rounded

+

+dqnextt383 nexttoward   0E-6176                  Infinity  ->  1E-6176                 Underflow Subnormal Inexact Rounded

+dqnextt384 nexttoward   1E-6176                  Infinity  ->  2E-6176                 Underflow Subnormal Inexact Rounded

+dqnextt385 nexttoward   2E-6176                  Infinity  ->  3E-6176                 Underflow Subnormal Inexact Rounded

+dqnextt386 nexttoward   10E-6176                 Infinity  ->  1.1E-6175               Underflow Subnormal Inexact Rounded

+dqnextt387 nexttoward   100E-6176                Infinity  ->  1.01E-6174              Underflow Subnormal Inexact Rounded

+dqnextt388 nexttoward   100000E-6176             Infinity  ->  1.00001E-6171           Underflow Subnormal Inexact Rounded

+dqnextt389 nexttoward   1.00000000000000000000000000000E-6143      Infinity  ->  1.000000000000000000000000000000001E-6143

+dqnextt390 nexttoward   1.000000000000000000000000000000000E-6143  Infinity  ->  1.000000000000000000000000000000001E-6143

+dqnextt391 nexttoward   1E-6143                  Infinity  ->  1.000000000000000000000000000000001E-6143

+dqnextt392 nexttoward   9.999999999999999999999999999999997E+6144  Infinity  ->  9.999999999999999999999999999999998E+6144

+dqnextt393 nexttoward   9.999999999999999999999999999999998E+6144  Infinity  ->  9.999999999999999999999999999999999E+6144

+dqnextt394 nexttoward   9.999999999999999999999999999999999E+6144  Infinity  ->  Infinity               Overflow Inexact Rounded

+

+------- lhs>rhs

+dqnextt401 nexttoward  0.9999999999999999999999999999999995  -Infinity ->   0.9999999999999999999999999999999994

+dqnextt402 nexttoward  0.9999999999999999999999999999999996  -Infinity ->   0.9999999999999999999999999999999995

+dqnextt403 nexttoward  0.9999999999999999999999999999999997  -Infinity ->   0.9999999999999999999999999999999996

+dqnextt404 nexttoward  0.9999999999999999999999999999999998  -Infinity ->   0.9999999999999999999999999999999997

+dqnextt405 nexttoward  0.9999999999999999999999999999999999  -Infinity ->   0.9999999999999999999999999999999998

+dqnextt406 nexttoward  1.000000000000000000000000000000000   -Infinity ->   0.9999999999999999999999999999999999

+dqnextt407 nexttoward  1.0          -Infinity ->   0.9999999999999999999999999999999999

+dqnextt408 nexttoward  1            -Infinity ->   0.9999999999999999999999999999999999

+dqnextt409 nexttoward  1.000000000000000000000000000000001   -Infinity ->   1.000000000000000000000000000000000

+dqnextt410 nexttoward  1.000000000000000000000000000000002   -Infinity ->   1.000000000000000000000000000000001

+dqnextt411 nexttoward  1.000000000000000000000000000000003   -Infinity ->   1.000000000000000000000000000000002

+dqnextt412 nexttoward  1.000000000000000000000000000000004   -Infinity ->   1.000000000000000000000000000000003

+dqnextt413 nexttoward  1.000000000000000000000000000000005   -Infinity ->   1.000000000000000000000000000000004

+dqnextt414 nexttoward  1.000000000000000000000000000000006   -Infinity ->   1.000000000000000000000000000000005

+dqnextt415 nexttoward  1.000000000000000000000000000000007   -Infinity ->   1.000000000000000000000000000000006

+dqnextt416 nexttoward  1.000000000000000000000000000000008   -Infinity ->   1.000000000000000000000000000000007

+dqnextt417 nexttoward  1.000000000000000000000000000000009   -Infinity ->   1.000000000000000000000000000000008

+dqnextt418 nexttoward  1.000000000000000000000000000000010   -Infinity ->   1.000000000000000000000000000000009

+dqnextt419 nexttoward  1.000000000000000000000000000000011   -Infinity ->   1.000000000000000000000000000000010

+dqnextt420 nexttoward  1.000000000000000000000000000000012   -Infinity ->   1.000000000000000000000000000000011

+

+dqnextt421 nexttoward -0.9999999999999999999999999999999995  -Infinity ->  -0.9999999999999999999999999999999996

+dqnextt422 nexttoward -0.9999999999999999999999999999999996  -Infinity ->  -0.9999999999999999999999999999999997

+dqnextt423 nexttoward -0.9999999999999999999999999999999997  -Infinity ->  -0.9999999999999999999999999999999998

+dqnextt424 nexttoward -0.9999999999999999999999999999999998  -Infinity ->  -0.9999999999999999999999999999999999

+dqnextt425 nexttoward -0.9999999999999999999999999999999999  -Infinity ->  -1.000000000000000000000000000000000

+dqnextt426 nexttoward -1.000000000000000000000000000000000   -Infinity ->  -1.000000000000000000000000000000001

+dqnextt427 nexttoward -1.0          -Infinity ->  -1.000000000000000000000000000000001

+dqnextt428 nexttoward -1            -Infinity ->  -1.000000000000000000000000000000001

+dqnextt429 nexttoward -1.000000000000000000000000000000001   -Infinity ->  -1.000000000000000000000000000000002

+dqnextt430 nexttoward -1.000000000000000000000000000000002   -Infinity ->  -1.000000000000000000000000000000003

+dqnextt431 nexttoward -1.000000000000000000000000000000003   -Infinity ->  -1.000000000000000000000000000000004

+dqnextt432 nexttoward -1.000000000000000000000000000000004   -Infinity ->  -1.000000000000000000000000000000005

+dqnextt433 nexttoward -1.000000000000000000000000000000005   -Infinity ->  -1.000000000000000000000000000000006

+dqnextt434 nexttoward -1.000000000000000000000000000000006   -Infinity ->  -1.000000000000000000000000000000007

+dqnextt435 nexttoward -1.000000000000000000000000000000007   -Infinity ->  -1.000000000000000000000000000000008

+dqnextt436 nexttoward -1.000000000000000000000000000000008   -Infinity ->  -1.000000000000000000000000000000009

+dqnextt437 nexttoward -1.000000000000000000000000000000009   -Infinity ->  -1.000000000000000000000000000000010

+dqnextt438 nexttoward -1.000000000000000000000000000000010   -Infinity ->  -1.000000000000000000000000000000011

+dqnextt439 nexttoward -1.000000000000000000000000000000011   -Infinity ->  -1.000000000000000000000000000000012

+

+-- Zeros

+dqnextt500 nexttoward -0            -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded

+dqnextt501 nexttoward  0            -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded

+dqnextt502 nexttoward  0.00         -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded

+dqnextt503 nexttoward -0.00         -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded

+dqnextt504 nexttoward  0E-300       -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded

+dqnextt505 nexttoward  0E+300       -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded

+dqnextt506 nexttoward  0E+30000     -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded

+dqnextt507 nexttoward -0E+30000     -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded

+

+-- specials

+dqnextt550 nexttoward   Inf     -Infinity ->  9.999999999999999999999999999999999E+6144

+dqnextt551 nexttoward  -Inf     -Infinity -> -Infinity

+dqnextt552 nexttoward   NaN     -Infinity ->  NaN

+dqnextt553 nexttoward  sNaN     -Infinity ->  NaN   Invalid_operation

+dqnextt554 nexttoward   NaN77   -Infinity ->  NaN77

+dqnextt555 nexttoward  sNaN88   -Infinity ->  NaN88 Invalid_operation

+dqnextt556 nexttoward  -NaN     -Infinity -> -NaN

+dqnextt557 nexttoward -sNaN     -Infinity -> -NaN   Invalid_operation

+dqnextt558 nexttoward  -NaN77   -Infinity -> -NaN77

+dqnextt559 nexttoward -sNaN88   -Infinity -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+dqnextt670 nexttoward  9.999999999999999999999999999999999E+6144   -Infinity  -> 9.999999999999999999999999999999998E+6144

+dqnextt671 nexttoward  9.999999999999999999999999999999998E+6144   -Infinity  -> 9.999999999999999999999999999999997E+6144

+dqnextt672 nexttoward  1E-6143                   -Infinity  -> 9.99999999999999999999999999999999E-6144   Underflow Subnormal  Inexact Rounded

+dqnextt673 nexttoward  1.000000000000000000000000000000000E-6143   -Infinity  -> 9.99999999999999999999999999999999E-6144   Underflow Subnormal  Inexact Rounded

+dqnextt674 nexttoward  9E-6176                   -Infinity  -> 8E-6176                  Underflow Subnormal  Inexact Rounded

+dqnextt675 nexttoward  9.9E-6175                 -Infinity  -> 9.8E-6175                Underflow Subnormal  Inexact Rounded

+dqnextt676 nexttoward  9.99999999999999999999999999999E-6147       -Infinity  -> 9.99999999999999999999999999998E-6147      Underflow Subnormal  Inexact Rounded

+dqnextt677 nexttoward  9.99999999999999999999999999999999E-6144    -Infinity  -> 9.99999999999999999999999999999998E-6144   Underflow Subnormal  Inexact Rounded

+dqnextt678 nexttoward  9.99999999999999999999999999999998E-6144    -Infinity  -> 9.99999999999999999999999999999997E-6144   Underflow Subnormal  Inexact Rounded

+dqnextt679 nexttoward  9.99999999999999999999999999999997E-6144    -Infinity  -> 9.99999999999999999999999999999996E-6144   Underflow Subnormal  Inexact Rounded

+dqnextt680 nexttoward  0E-6176                   -Infinity  -> -1E-6176                 Underflow Subnormal  Inexact Rounded

+dqnextt681 nexttoward  1E-6176                   -Infinity  -> 0E-6176                  Underflow Subnormal  Inexact Rounded Clamped

+dqnextt682 nexttoward  2E-6176                   -Infinity  -> 1E-6176                  Underflow Subnormal  Inexact Rounded

+

+dqnextt683 nexttoward  -0E-6176                  -Infinity  -> -1E-6176                 Underflow Subnormal  Inexact Rounded

+dqnextt684 nexttoward  -1E-6176                  -Infinity  -> -2E-6176                 Underflow Subnormal  Inexact Rounded

+dqnextt685 nexttoward  -2E-6176                  -Infinity  -> -3E-6176                 Underflow Subnormal  Inexact Rounded

+dqnextt686 nexttoward  -10E-6176                 -Infinity  -> -1.1E-6175               Underflow Subnormal  Inexact Rounded

+dqnextt687 nexttoward  -100E-6176                -Infinity  -> -1.01E-6174              Underflow Subnormal  Inexact Rounded

+dqnextt688 nexttoward  -100000E-6176             -Infinity  -> -1.00001E-6171           Underflow Subnormal  Inexact Rounded

+dqnextt689 nexttoward  -1.00000000000000000000000000000E-6143      -Infinity  -> -1.000000000000000000000000000000001E-6143

+dqnextt690 nexttoward  -1.000000000000000000000000000000000E-6143  -Infinity  -> -1.000000000000000000000000000000001E-6143

+dqnextt691 nexttoward  -1E-6143                  -Infinity  -> -1.000000000000000000000000000000001E-6143

+dqnextt692 nexttoward  -9.999999999999999999999999999999998E+6144  -Infinity  -> -9.999999999999999999999999999999999E+6144

+dqnextt693 nexttoward  -9.999999999999999999999999999999999E+6144  -Infinity  -> -Infinity               Overflow Inexact Rounded

+

+------- Specials

+dqnextt780 nexttoward -Inf  -Inf   -> -Infinity

+dqnextt781 nexttoward -Inf  -1000  -> -9.999999999999999999999999999999999E+6144

+dqnextt782 nexttoward -Inf  -1     -> -9.999999999999999999999999999999999E+6144

+dqnextt783 nexttoward -Inf  -0     -> -9.999999999999999999999999999999999E+6144

+dqnextt784 nexttoward -Inf   0     -> -9.999999999999999999999999999999999E+6144

+dqnextt785 nexttoward -Inf   1     -> -9.999999999999999999999999999999999E+6144

+dqnextt786 nexttoward -Inf   1000  -> -9.999999999999999999999999999999999E+6144

+dqnextt787 nexttoward -1000 -Inf   -> -1000.000000000000000000000000000001

+dqnextt788 nexttoward -Inf  -Inf   -> -Infinity

+dqnextt789 nexttoward -1    -Inf   -> -1.000000000000000000000000000000001

+dqnextt790 nexttoward -0    -Inf   -> -1E-6176           Underflow Subnormal Inexact Rounded

+dqnextt791 nexttoward  0    -Inf   -> -1E-6176           Underflow Subnormal Inexact Rounded

+dqnextt792 nexttoward  1    -Inf   ->  0.9999999999999999999999999999999999

+dqnextt793 nexttoward  1000 -Inf   ->  999.9999999999999999999999999999999

+dqnextt794 nexttoward  Inf  -Inf   ->  9.999999999999999999999999999999999E+6144

+

+dqnextt800 nexttoward  Inf  -Inf   ->  9.999999999999999999999999999999999E+6144

+dqnextt801 nexttoward  Inf  -1000  ->  9.999999999999999999999999999999999E+6144

+dqnextt802 nexttoward  Inf  -1     ->  9.999999999999999999999999999999999E+6144

+dqnextt803 nexttoward  Inf  -0     ->  9.999999999999999999999999999999999E+6144

+dqnextt804 nexttoward  Inf   0     ->  9.999999999999999999999999999999999E+6144

+dqnextt805 nexttoward  Inf   1     ->  9.999999999999999999999999999999999E+6144

+dqnextt806 nexttoward  Inf   1000  ->  9.999999999999999999999999999999999E+6144

+dqnextt807 nexttoward  Inf   Inf   ->  Infinity

+dqnextt808 nexttoward -1000  Inf   -> -999.9999999999999999999999999999999

+dqnextt809 nexttoward -Inf   Inf   -> -9.999999999999999999999999999999999E+6144

+dqnextt810 nexttoward -1     Inf   -> -0.9999999999999999999999999999999999

+dqnextt811 nexttoward -0     Inf   ->  1E-6176           Underflow Subnormal Inexact Rounded

+dqnextt812 nexttoward  0     Inf   ->  1E-6176           Underflow Subnormal Inexact Rounded

+dqnextt813 nexttoward  1     Inf   ->  1.000000000000000000000000000000001

+dqnextt814 nexttoward  1000  Inf   ->  1000.000000000000000000000000000001

+dqnextt815 nexttoward  Inf   Inf   ->  Infinity

+

+dqnextt821 nexttoward  NaN -Inf    ->  NaN

+dqnextt822 nexttoward  NaN -1000   ->  NaN

+dqnextt823 nexttoward  NaN -1      ->  NaN

+dqnextt824 nexttoward  NaN -0      ->  NaN

+dqnextt825 nexttoward  NaN  0      ->  NaN

+dqnextt826 nexttoward  NaN  1      ->  NaN

+dqnextt827 nexttoward  NaN  1000   ->  NaN

+dqnextt828 nexttoward  NaN  Inf    ->  NaN

+dqnextt829 nexttoward  NaN  NaN    ->  NaN

+dqnextt830 nexttoward -Inf  NaN    ->  NaN

+dqnextt831 nexttoward -1000 NaN    ->  NaN

+dqnextt832 nexttoward -1    NaN    ->  NaN

+dqnextt833 nexttoward -0    NaN    ->  NaN

+dqnextt834 nexttoward  0    NaN    ->  NaN

+dqnextt835 nexttoward  1    NaN    ->  NaN

+dqnextt836 nexttoward  1000 NaN    ->  NaN

+dqnextt837 nexttoward  Inf  NaN    ->  NaN

+

+dqnextt841 nexttoward  sNaN -Inf   ->  NaN  Invalid_operation

+dqnextt842 nexttoward  sNaN -1000  ->  NaN  Invalid_operation

+dqnextt843 nexttoward  sNaN -1     ->  NaN  Invalid_operation

+dqnextt844 nexttoward  sNaN -0     ->  NaN  Invalid_operation

+dqnextt845 nexttoward  sNaN  0     ->  NaN  Invalid_operation

+dqnextt846 nexttoward  sNaN  1     ->  NaN  Invalid_operation

+dqnextt847 nexttoward  sNaN  1000  ->  NaN  Invalid_operation

+dqnextt848 nexttoward  sNaN  NaN   ->  NaN  Invalid_operation

+dqnextt849 nexttoward  sNaN sNaN   ->  NaN  Invalid_operation

+dqnextt850 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation

+dqnextt851 nexttoward -Inf  sNaN   ->  NaN  Invalid_operation

+dqnextt852 nexttoward -1000 sNaN   ->  NaN  Invalid_operation

+dqnextt853 nexttoward -1    sNaN   ->  NaN  Invalid_operation

+dqnextt854 nexttoward -0    sNaN   ->  NaN  Invalid_operation

+dqnextt855 nexttoward  0    sNaN   ->  NaN  Invalid_operation

+dqnextt856 nexttoward  1    sNaN   ->  NaN  Invalid_operation

+dqnextt857 nexttoward  1000 sNaN   ->  NaN  Invalid_operation

+dqnextt858 nexttoward  Inf  sNaN   ->  NaN  Invalid_operation

+dqnextt859 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqnextt861 nexttoward  NaN1   -Inf    ->  NaN1

+dqnextt862 nexttoward +NaN2   -1000   ->  NaN2

+dqnextt863 nexttoward  NaN3    1000   ->  NaN3

+dqnextt864 nexttoward  NaN4    Inf    ->  NaN4

+dqnextt865 nexttoward  NaN5   +NaN6   ->  NaN5

+dqnextt866 nexttoward -Inf     NaN7   ->  NaN7

+dqnextt867 nexttoward -1000    NaN8   ->  NaN8

+dqnextt868 nexttoward  1000    NaN9   ->  NaN9

+dqnextt869 nexttoward  Inf    +NaN10  ->  NaN10

+dqnextt871 nexttoward  sNaN11  -Inf   ->  NaN11  Invalid_operation

+dqnextt872 nexttoward  sNaN12  -1000  ->  NaN12  Invalid_operation

+dqnextt873 nexttoward  sNaN13   1000  ->  NaN13  Invalid_operation

+dqnextt874 nexttoward  sNaN14   NaN17 ->  NaN14  Invalid_operation

+dqnextt875 nexttoward  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+dqnextt876 nexttoward  NaN16   sNaN19 ->  NaN19  Invalid_operation

+dqnextt877 nexttoward -Inf    +sNaN20 ->  NaN20  Invalid_operation

+dqnextt878 nexttoward -1000    sNaN21 ->  NaN21  Invalid_operation

+dqnextt879 nexttoward  1000    sNaN22 ->  NaN22  Invalid_operation

+dqnextt880 nexttoward  Inf     sNaN23 ->  NaN23  Invalid_operation

+dqnextt881 nexttoward +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+dqnextt882 nexttoward -NaN26    NaN28 -> -NaN26

+dqnextt883 nexttoward -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+dqnextt884 nexttoward  1000    -NaN30 -> -NaN30

+dqnextt885 nexttoward  1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- Null tests

+dqnextt900 nexttoward 1  # -> NaN Invalid_operation

+dqnextt901 nexttoward #  1 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqOr.decTest b/Lib/test/decimaltestdata/dqOr.decTest
new file mode 100644
index 0000000..093edcb
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqOr.decTest
@@ -0,0 +1,401 @@
+------------------------------------------------------------------------

+-- dqOr.decTest -- digitwise logical OR for decQuads                  --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check (truth table)

+dqor001 or             0    0 ->    0

+dqor002 or             0    1 ->    1

+dqor003 or             1    0 ->    1

+dqor004 or             1    1 ->    1

+dqor005 or          1100 1010 -> 1110

+-- and at msd and msd-1

+dqor006 or 0000000000000000000000000000000000 0000000000000000000000000000000000 ->           0

+dqor007 or 0000000000000000000000000000000000 1000000000000000000000000000000000 ->   1000000000000000000000000000000000

+dqor008 or 1000000000000000000000000000000000 0000000000000000000000000000000000 ->   1000000000000000000000000000000000

+dqor009 or 1000000000000000000000000000000000 1000000000000000000000000000000000 ->   1000000000000000000000000000000000

+dqor010 or 0000000000000000000000000000000000 0000000000000000000000000000000000 ->           0

+dqor011 or 0000000000000000000000000000000000 0100000000000000000000000000000000 ->    100000000000000000000000000000000

+dqor012 or 0100000000000000000000000000000000 0000000000000000000000000000000000 ->    100000000000000000000000000000000

+dqor013 or 0100000000000000000000000000000000 0100000000000000000000000000000000 ->    100000000000000000000000000000000

+

+-- Various lengths

+dqor601 or 0111111111111111111111111111111111 1111111111111111111111111111111110  -> 1111111111111111111111111111111111

+dqor602 or 1011111111111111111111111111111111 1111111111111111111111111111111101  -> 1111111111111111111111111111111111

+dqor603 or 1101111111111111111111111111111111 1111111111111111111111111111111011  -> 1111111111111111111111111111111111

+dqor604 or 1110111111111111111111111111111111 1111111111111111111111111111110111  -> 1111111111111111111111111111111111

+dqor605 or 1111011111111111111111111111111111 1111111111111111111111111111101111  -> 1111111111111111111111111111111111

+dqor606 or 1111101111111111111111111111111111 1111111111111111111111111111011111  -> 1111111111111111111111111111111111

+dqor607 or 1111110111111111111111111111111111 1111111111111111111111111110111111  -> 1111111111111111111111111111111111

+dqor608 or 1111111011111111111111111111111111 1111111111111111111111111101111111  -> 1111111111111111111111111111111111

+dqor609 or 1111111101111111111111111111111111 1111111111111111111111111011111111  -> 1111111111111111111111111111111111

+dqor610 or 1111111110111111111111111111111111 1111111111111111111111110111111111  -> 1111111111111111111111111111111111

+dqor611 or 1111111111011111111111111111111111 1111111111111111111111101111111111  -> 1111111111111111111111111111111111

+dqor612 or 1111111111101111111111111111111111 1111111111111111111111011111111111  -> 1111111111111111111111111111111111

+dqor613 or 1111111111110111111111111111111111 1111111111111111111110111111111111  -> 1111111111111111111111111111111111

+dqor614 or 1111111111111011111111111111111111 1111111111111111111101111111111111  -> 1111111111111111111111111111111111

+dqor615 or 1111111111111101111111111111111111 1111111111111111111011111111111111  -> 1111111111111111111111111111111111

+dqor616 or 1111111111111110111111111111111111 1111111111111111110111111111111111  -> 1111111111111111111111111111111111

+dqor617 or 1111111111111111011111111111111111 1111111111111111101111111111111111  -> 1111111111111111111111111111111111

+dqor618 or 1111111111111111101111111111111111 1111111111111111011111111111111111  -> 1111111111111111111111111111111111

+dqor619 or 1111111111111111110111111111111111 1111111111111110111111111111111111  -> 1111111111111111111111111111111111

+dqor620 or 1111111111111111111011111111111111 1111111111111101111111111111111111  -> 1111111111111111111111111111111111

+dqor621 or 1111111111111111111101111111111111 1111111111111011111111111111111111  -> 1111111111111111111111111111111111

+dqor622 or 1111111111111111111110111111111111 1111111111110111111111111111111111  -> 1111111111111111111111111111111111

+dqor623 or 1111111111111111111111011111111111 1111111111101111111111111111111111  -> 1111111111111111111111111111111111

+dqor624 or 1111111111111111111111101111111111 1111111111011111111111111111111111  -> 1111111111111111111111111111111111

+dqor625 or 1111111111111111111111110111111111 1111111110111111111111111111111111  -> 1111111111111111111111111111111111

+dqor626 or 1111111111111111111111111011111111 1111111101111111111111111111111111  -> 1111111111111111111111111111111111

+dqor627 or 1111111111111111111111111101111111 1111111011111111111111111111111111  -> 1111111111111111111111111111111111

+dqor628 or 1111111111111111111111111110111111 1111110111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor629 or 1111111111111111111111111111011111 1111101111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor630 or 1111111111111111111111111111101111 1111011111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor631 or 1111111111111111111111111111110111 1110111111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor632 or 1111111111111111111111111111111011 1101111111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor633 or 1111111111111111111111111111111101 1011111111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor634 or 1111111111111111111111111111111110 0111111111111111111111111111111111  -> 1111111111111111111111111111111111

+

+dqor641 or 1111111111111111111111111111111110 0111111111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor642 or 1111111111111111111111111111111101 1011111111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor643 or 1111111111111111111111111111111011 1101111111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor644 or 1111111111111111111111111111110111 1110111111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor645 or 1111111111111111111111111111101111 1111011111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor646 or 1111111111111111111111111111011111 1111101111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor647 or 1111111111111111111111111110111111 1111110111111111111111111111111111  -> 1111111111111111111111111111111111

+dqor648 or 1111111111111111111111111101111111 1111111011111111111111111111111111  -> 1111111111111111111111111111111111

+dqor649 or 1111111111111111111111111011111111 1111111101111111111111111111111111  -> 1111111111111111111111111111111111

+dqor650 or 1111111111111111111111110111111111 1111111110111111111111111111111111  -> 1111111111111111111111111111111111

+dqor651 or 1111111111111111111111101111111111 1111111111011111111111111111111111  -> 1111111111111111111111111111111111

+dqor652 or 1111111111111111111111011111111111 1111111111101111111111111111111111  -> 1111111111111111111111111111111111

+dqor653 or 1111111111111111111110111111111111 1111111111110111111111111111111111  -> 1111111111111111111111111111111111

+dqor654 or 1111111111111111111101111111111111 1111111111111011111111111111111111  -> 1111111111111111111111111111111111

+dqor655 or 1111111111111111111011111111111111 1111111111111101111111111111111111  -> 1111111111111111111111111111111111

+dqor656 or 1111111111111111110111111111111111 1111111111111110111111111111111111  -> 1111111111111111111111111111111111

+dqor657 or 1010101010101010101010101010101010 1010101010101010001010101010101010  -> 1010101010101010101010101010101010

+dqor658 or 1111111111111111011111111111111111 1111111111111111101111111111111111  -> 1111111111111111111111111111111111

+dqor659 or 1111111111111110111111111111111111 1111111111111111110111111111111111  -> 1111111111111111111111111111111111

+dqor660 or 1111111111111101111111111111111111 1111111111111111111011111111111111  -> 1111111111111111111111111111111111

+dqor661 or 1111111111111011111111111111111111 1111111111111111111101111111111111  -> 1111111111111111111111111111111111

+dqor662 or 1111111111110111111111111111111111 1111111111111111111110111111111111  -> 1111111111111111111111111111111111

+dqor663 or 1111111111101111111111111111111111 1111111111111111111111011111111111  -> 1111111111111111111111111111111111

+dqor664 or 1111111111011111111111111111111111 1111111111111111111111101111111111  -> 1111111111111111111111111111111111

+dqor665 or 1111111110111111111111111111111111 1111111111111111111111110111111111  -> 1111111111111111111111111111111111

+dqor666 or 0101010101010101010101010101010101 0101010101010101010101010001010101  ->  101010101010101010101010101010101

+dqor667 or 1111111011111111111111111111111111 1111111111111111111111111101111111  -> 1111111111111111111111111111111111

+dqor668 or 1111110111111111111111111111111111 1111111111111111111111111110111111  -> 1111111111111111111111111111111111

+dqor669 or 1111101111111111111111111111111111 1111111111111111111111111111011111  -> 1111111111111111111111111111111111

+dqor670 or 1111011111111111111111111111111111 1111111111111111111111111111101111  -> 1111111111111111111111111111111111

+dqor671 or 1110111111111111111111111111111111 1111111111111111111111111111110111  -> 1111111111111111111111111111111111

+dqor672 or 1101111111111111111111111111111111 1111111111111111111111111111111011  -> 1111111111111111111111111111111111

+dqor673 or 1011111111111111111111111111111111 1111111111111111111111111111111101  -> 1111111111111111111111111111111111

+dqor674 or 0111111111111111111111111111111111 1111111111111111111111111111111110  -> 1111111111111111111111111111111111

+dqor675 or 0111111111111111111111111111111110 1111111111111111111111111111111110  -> 1111111111111111111111111111111110

+dqor676 or 1111111111111111111111111111111110 1111111111111111111111111111111110  -> 1111111111111111111111111111111110

+

+dqor681 or 0111111111111111111111111111111111 0111111111011111111111111111111110  ->  111111111111111111111111111111111

+dqor682 or 1011111111111111111111111111111111 1011111110101111111111111111111101  -> 1011111111111111111111111111111111

+dqor683 or 1101111111111111111111111111111111 1101111101110111111111111111111011  -> 1101111111111111111111111111111111

+dqor684 or 1110111111111111111111111111111111 1110111011111011111111111111110111  -> 1110111111111111111111111111111111

+dqor685 or 1111011111111111111111111111111111 1111010111111101111111111111101111  -> 1111011111111111111111111111111111

+dqor686 or 1111101111111111111111111111111111 1111101111111110111111111111011111  -> 1111101111111111111111111111111111

+dqor687 or 1111110111111111111111111111111111 1111010111111111011111111110111111  -> 1111110111111111111111111111111111

+dqor688 or 1111111011111111111111111111111111 1110111011111111101111111101111111  -> 1111111011111111111111111111111111

+dqor689 or 1111111101111111111111111111111111 1101111101111111110111111011111111  -> 1111111101111111111111111111111111

+dqor690 or 1111111110111111111111111111111111 1011111110111111111011110111111110  -> 1111111110111111111111111111111111

+dqor691 or 1111111111011111111111111111111111 0111111111011111111101101111111101  -> 1111111111011111111111111111111111

+dqor692 or 1111111111101111111111111111111111 1111111111101111111110011111111011  -> 1111111111101111111111111111111111

+dqor693 or 1111111111110111111111111111111111 1111111111110111111110011111110111  -> 1111111111110111111111111111111111

+dqor694 or 1111111111111011111111111111111111 1111111111111011111101101111101111  -> 1111111111111011111111111111111111

+dqor695 or 1111111111111101111111111111111111 1111111111111101111011110111011111  -> 1111111111111101111111111111111111

+dqor696 or 1111111111111110111111111111111111 1111111111111110110111111010111111  -> 1111111111111110111111111111111111

+dqor697 or 1111111111111111011111111111111111 1111111111111111001111111101111111  -> 1111111111111111011111111111111111

+dqor698 or 1111111111111111101111111111111111 1111111111111111001111111010111111  -> 1111111111111111101111111111111111

+dqor699 or 1111111111111111110111111111111111 1111111111111110110111110111011111  -> 1111111111111111110111111111111111

+dqor700 or 1111111111111111111011111111111111 1111111111111101111011101111101111  -> 1111111111111111111011111111111111

+dqor701 or 1111111111111111111101111111111111 1111111111111011111101011111110111  -> 1111111111111111111101111111111111

+dqor702 or 1111111111111111111110111111111111 1111111111110111111110111111111011  -> 1111111111111111111110111111111111

+dqor703 or 1111111111111111111111011111111111 1111111111101111111101011111111101  -> 1111111111111111111111011111111111

+dqor704 or 1111111111111111111111101111111111 1111111111011111111011101111111110  -> 1111111111111111111111101111111111

+dqor705 or 1111111111111111111111110111111111 0111111110111111110111110111111111  -> 1111111111111111111111110111111111

+dqor706 or 1111111111111111111111111011111111 1011111101111111101111111011111111  -> 1111111111111111111111111011111111

+dqor707 or 1111111111111111111111111101111111 1101111011111111011111111101111111  -> 1111111111111111111111111101111111

+dqor708 or 1111111111111111111111111110111111 1110110111111110111111111110111111  -> 1111111111111111111111111110111111

+dqor709 or 1111111111111111111111111111011111 1111001111111101111111111111011111  -> 1111111111111111111111111111011111

+dqor710 or 1111111111111111111111111111101111 1111001111111011111111111111101111  -> 1111111111111111111111111111101111

+dqor711 or 1111111111111111111111111111110111 1110110111110111111111111111110111  -> 1111111111111111111111111111110111

+dqor712 or 1111111111111111111111111111111011 1101111011101111111111111111111011  -> 1111111111111111111111111111111011

+dqor713 or 1111111111111111111111111111111101 1011111101011111111111111111111101  -> 1111111111111111111111111111111101

+dqor714 or 1111111111111111111111111111111110 0111111110111111111111111111111110  -> 1111111111111111111111111111111110

+

+

+

+--         1234567890123456     1234567890123456 1234567890123456

+dqor020 or 1111111111111111     1111111111111111  ->  1111111111111111

+dqor021 or  111111111111111      111111111111111  ->   111111111111111

+dqor022 or   11111111111111       11111111111111  ->    11111111111111

+dqor023 or    1111111111111        1111111111111  ->     1111111111111

+dqor024 or     111111111111         111111111111  ->      111111111111

+dqor025 or      11111111111          11111111111  ->       11111111111

+dqor026 or       1111111111           1111111111  ->        1111111111

+dqor027 or        111111111            111111111  ->         111111111

+dqor028 or         11111111             11111111  ->          11111111

+dqor029 or          1111111              1111111  ->           1111111

+dqor030 or           111111               111111  ->            111111

+dqor031 or            11111                11111  ->             11111

+dqor032 or             1111                 1111  ->              1111

+dqor033 or              111                  111  ->               111

+dqor034 or               11                   11  ->                11

+dqor035 or                1                    1  ->                 1

+dqor036 or                0                    0  ->                 0

+

+dqor042 or  111111110000000     1111111110000000  ->  1111111110000000

+dqor043 or   11111110000000     1000000100000000  ->  1011111110000000

+dqor044 or    1111110000000     1000001000000000  ->  1001111110000000

+dqor045 or     111110000000     1000010000000000  ->  1000111110000000

+dqor046 or      11110000000     1000100000000000  ->  1000111110000000

+dqor047 or       1110000000     1001000000000000  ->  1001001110000000

+dqor048 or        110000000     1010000000000000  ->  1010000110000000

+dqor049 or         10000000     1100000000000000  ->  1100000010000000

+

+dqor090 or 011111111  111101111  ->  111111111

+dqor091 or 101111111  111101111  ->  111111111

+dqor092 or 110111111  111101111  ->  111111111

+dqor093 or 111011111  111101111  ->  111111111

+dqor094 or 111101111  111101111  ->  111101111

+dqor095 or 111110111  111101111  ->  111111111

+dqor096 or 111111011  111101111  ->  111111111

+dqor097 or 111111101  111101111  ->  111111111

+dqor098 or 111111110  111101111  ->  111111111

+

+dqor100 or 111101111  011111111  ->  111111111

+dqor101 or 111101111  101111111  ->  111111111

+dqor102 or 111101111  110111111  ->  111111111

+dqor103 or 111101111  111011111  ->  111111111

+dqor104 or 111101111  111101111  ->  111101111

+dqor105 or 111101111  111110111  ->  111111111

+dqor106 or 111101111  111111011  ->  111111111

+dqor107 or 111101111  111111101  ->  111111111

+dqor108 or 111101111  111111110  ->  111111111

+

+-- non-0/1 should not be accepted, nor should signs

+dqor220 or 111111112  111111111  ->  NaN Invalid_operation

+dqor221 or 333333333  333333333  ->  NaN Invalid_operation

+dqor222 or 555555555  555555555  ->  NaN Invalid_operation

+dqor223 or 777777777  777777777  ->  NaN Invalid_operation

+dqor224 or 999999999  999999999  ->  NaN Invalid_operation

+dqor225 or 222222222  999999999  ->  NaN Invalid_operation

+dqor226 or 444444444  999999999  ->  NaN Invalid_operation

+dqor227 or 666666666  999999999  ->  NaN Invalid_operation

+dqor228 or 888888888  999999999  ->  NaN Invalid_operation

+dqor229 or 999999999  222222222  ->  NaN Invalid_operation

+dqor230 or 999999999  444444444  ->  NaN Invalid_operation

+dqor231 or 999999999  666666666  ->  NaN Invalid_operation

+dqor232 or 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+dqor240 or  567468689 -934981942 ->  NaN Invalid_operation

+dqor241 or  567367689  934981942 ->  NaN Invalid_operation

+dqor242 or -631917772 -706014634 ->  NaN Invalid_operation

+dqor243 or -756253257  138579234 ->  NaN Invalid_operation

+dqor244 or  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+dqor250 or  2000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor251 or  7000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor252 or  8000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor253 or  9000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor254 or  2000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor255 or  7000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor256 or  8000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor257 or  9000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor258 or  1000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor259 or  1000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor260 or  1000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor261 or  1000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor262 or  0000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor263 or  0000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor264 or  0000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation

+dqor265 or  0000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation

+-- test MSD-1

+dqor270 or  0200000111000111000111001000000000 1000000111000111000111100000000010 ->  NaN Invalid_operation

+dqor271 or  0700000111000111000111000100000000 1000000111000111000111010000000100 ->  NaN Invalid_operation

+dqor272 or  0800000111000111000111000010000000 1000000111000111000111001000001000 ->  NaN Invalid_operation

+dqor273 or  0900000111000111000111000001000000 1000000111000111000111000100010000 ->  NaN Invalid_operation

+dqor274 or  1000000111000111000111000000100000 0200000111000111000111000010100000 ->  NaN Invalid_operation

+dqor275 or  1000000111000111000111000000010000 0700000111000111000111000001000000 ->  NaN Invalid_operation

+dqor276 or  1000000111000111000111000000001000 0800000111000111000111000010100000 ->  NaN Invalid_operation

+dqor277 or  1000000111000111000111000000000100 0900000111000111000111000000010000 ->  NaN Invalid_operation

+-- test LSD

+dqor280 or  0010000111000111000111000000000002 1000000111000111000111000100000001 ->  NaN Invalid_operation

+dqor281 or  0001000111000111000111000000000007 1000000111000111000111001000000011 ->  NaN Invalid_operation

+dqor282 or  0000000111000111000111100000000008 1000000111000111000111010000000001 ->  NaN Invalid_operation

+dqor283 or  0000000111000111000111010000000009 1000000111000111000111100000000001 ->  NaN Invalid_operation

+dqor284 or  1000000111000111000111001000000000 0001000111000111000111000000000002 ->  NaN Invalid_operation

+dqor285 or  1000000111000111000111000100000000 0010000111000111000111000000000007 ->  NaN Invalid_operation

+dqor286 or  1000000111000111000111000010000000 0100000111000111000111000000000008 ->  NaN Invalid_operation

+dqor287 or  1000000111000111000111000001000000 1000000111000111000111000000000009 ->  NaN Invalid_operation

+-- test Middie

+dqor288 or  0010000111000111000111000020000000 1000000111000111000111001000000000 ->  NaN Invalid_operation

+dqor289 or  0001000111000111000111000070000001 1000000111000111000111000100000000 ->  NaN Invalid_operation

+dqor290 or  0000000111000111000111100080000010 1000000111000111000111000010000000 ->  NaN Invalid_operation

+dqor291 or  0000000111000111000111010090000100 1000000111000111000111000001000000 ->  NaN Invalid_operation

+dqor292 or  1000000111000111000111001000001000 0000000111000111000111000020100000 ->  NaN Invalid_operation

+dqor293 or  1000000111000111000111000100010000 0000000111000111000111000070010000 ->  NaN Invalid_operation

+dqor294 or  1000000111000111000111000010100000 0000000111000111000111000080001000 ->  NaN Invalid_operation

+dqor295 or  1000000111000111000111000001000000 0000000111000111000111000090000100 ->  NaN Invalid_operation

+-- signs

+dqor296 or -1000000111000111000111000001000000 -0000001110001110001110010000000100 ->  NaN Invalid_operation

+dqor297 or -1000000111000111000111000001000000  0000001110001110001110000010000100 ->  NaN Invalid_operation

+dqor298 or  1000000111000111000111000001000000 -0000001110001110001110001000000100 ->  NaN Invalid_operation

+dqor299 or  1000000111000111000111000001000000  0000001110001110001110000011000100 ->  1000001111001111001111000011000100

+

+-- Nmax, Nmin, Ntiny-like

+dqor331 or  2   9.99999999E+1999    -> NaN Invalid_operation

+dqor332 or  3   1E-1999             -> NaN Invalid_operation

+dqor333 or  4   1.00000000E-1999    -> NaN Invalid_operation

+dqor334 or  5   1E-1009             -> NaN Invalid_operation

+dqor335 or  6   -1E-1009            -> NaN Invalid_operation

+dqor336 or  7   -1.00000000E-1999   -> NaN Invalid_operation

+dqor337 or  8   -1E-1999            -> NaN Invalid_operation

+dqor338 or  9   -9.99999999E+1999   -> NaN Invalid_operation

+dqor341 or  9.99999999E+2999    -18 -> NaN Invalid_operation

+dqor342 or  1E-2999              01 -> NaN Invalid_operation

+dqor343 or  1.00000000E-2999    -18 -> NaN Invalid_operation

+dqor344 or  1E-1009              18 -> NaN Invalid_operation

+dqor345 or  -1E-1009            -10 -> NaN Invalid_operation

+dqor346 or  -1.00000000E-2999    18 -> NaN Invalid_operation

+dqor347 or  -1E-2999             10 -> NaN Invalid_operation

+dqor348 or  -9.99999999E+2999   -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+dqor361 or  1.0                  1  -> NaN Invalid_operation

+dqor362 or  1E+1                 1  -> NaN Invalid_operation

+dqor363 or  0.0                  1  -> NaN Invalid_operation

+dqor364 or  0E+1                 1  -> NaN Invalid_operation

+dqor365 or  9.9                  1  -> NaN Invalid_operation

+dqor366 or  9E+1                 1  -> NaN Invalid_operation

+dqor371 or  0 1.0                   -> NaN Invalid_operation

+dqor372 or  0 1E+1                  -> NaN Invalid_operation

+dqor373 or  0 0.0                   -> NaN Invalid_operation

+dqor374 or  0 0E+1                  -> NaN Invalid_operation

+dqor375 or  0 9.9                   -> NaN Invalid_operation

+dqor376 or  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+dqor780 or -Inf  -Inf   -> NaN Invalid_operation

+dqor781 or -Inf  -1000  -> NaN Invalid_operation

+dqor782 or -Inf  -1     -> NaN Invalid_operation

+dqor783 or -Inf  -0     -> NaN Invalid_operation

+dqor784 or -Inf   0     -> NaN Invalid_operation

+dqor785 or -Inf   1     -> NaN Invalid_operation

+dqor786 or -Inf   1000  -> NaN Invalid_operation

+dqor787 or -1000 -Inf   -> NaN Invalid_operation

+dqor788 or -Inf  -Inf   -> NaN Invalid_operation

+dqor789 or -1    -Inf   -> NaN Invalid_operation

+dqor790 or -0    -Inf   -> NaN Invalid_operation

+dqor791 or  0    -Inf   -> NaN Invalid_operation

+dqor792 or  1    -Inf   -> NaN Invalid_operation

+dqor793 or  1000 -Inf   -> NaN Invalid_operation

+dqor794 or  Inf  -Inf   -> NaN Invalid_operation

+

+dqor800 or  Inf  -Inf   -> NaN Invalid_operation

+dqor801 or  Inf  -1000  -> NaN Invalid_operation

+dqor802 or  Inf  -1     -> NaN Invalid_operation

+dqor803 or  Inf  -0     -> NaN Invalid_operation

+dqor804 or  Inf   0     -> NaN Invalid_operation

+dqor805 or  Inf   1     -> NaN Invalid_operation

+dqor806 or  Inf   1000  -> NaN Invalid_operation

+dqor807 or  Inf   Inf   -> NaN Invalid_operation

+dqor808 or -1000  Inf   -> NaN Invalid_operation

+dqor809 or -Inf   Inf   -> NaN Invalid_operation

+dqor810 or -1     Inf   -> NaN Invalid_operation

+dqor811 or -0     Inf   -> NaN Invalid_operation

+dqor812 or  0     Inf   -> NaN Invalid_operation

+dqor813 or  1     Inf   -> NaN Invalid_operation

+dqor814 or  1000  Inf   -> NaN Invalid_operation

+dqor815 or  Inf   Inf   -> NaN Invalid_operation

+

+dqor821 or  NaN -Inf    -> NaN Invalid_operation

+dqor822 or  NaN -1000   -> NaN Invalid_operation

+dqor823 or  NaN -1      -> NaN Invalid_operation

+dqor824 or  NaN -0      -> NaN Invalid_operation

+dqor825 or  NaN  0      -> NaN Invalid_operation

+dqor826 or  NaN  1      -> NaN Invalid_operation

+dqor827 or  NaN  1000   -> NaN Invalid_operation

+dqor828 or  NaN  Inf    -> NaN Invalid_operation

+dqor829 or  NaN  NaN    -> NaN Invalid_operation

+dqor830 or -Inf  NaN    -> NaN Invalid_operation

+dqor831 or -1000 NaN    -> NaN Invalid_operation

+dqor832 or -1    NaN    -> NaN Invalid_operation

+dqor833 or -0    NaN    -> NaN Invalid_operation

+dqor834 or  0    NaN    -> NaN Invalid_operation

+dqor835 or  1    NaN    -> NaN Invalid_operation

+dqor836 or  1000 NaN    -> NaN Invalid_operation

+dqor837 or  Inf  NaN    -> NaN Invalid_operation

+

+dqor841 or  sNaN -Inf   ->  NaN  Invalid_operation

+dqor842 or  sNaN -1000  ->  NaN  Invalid_operation

+dqor843 or  sNaN -1     ->  NaN  Invalid_operation

+dqor844 or  sNaN -0     ->  NaN  Invalid_operation

+dqor845 or  sNaN  0     ->  NaN  Invalid_operation

+dqor846 or  sNaN  1     ->  NaN  Invalid_operation

+dqor847 or  sNaN  1000  ->  NaN  Invalid_operation

+dqor848 or  sNaN  NaN   ->  NaN  Invalid_operation

+dqor849 or  sNaN sNaN   ->  NaN  Invalid_operation

+dqor850 or  NaN  sNaN   ->  NaN  Invalid_operation

+dqor851 or -Inf  sNaN   ->  NaN  Invalid_operation

+dqor852 or -1000 sNaN   ->  NaN  Invalid_operation

+dqor853 or -1    sNaN   ->  NaN  Invalid_operation

+dqor854 or -0    sNaN   ->  NaN  Invalid_operation

+dqor855 or  0    sNaN   ->  NaN  Invalid_operation

+dqor856 or  1    sNaN   ->  NaN  Invalid_operation

+dqor857 or  1000 sNaN   ->  NaN  Invalid_operation

+dqor858 or  Inf  sNaN   ->  NaN  Invalid_operation

+dqor859 or  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqor861 or  NaN1   -Inf    -> NaN Invalid_operation

+dqor862 or +NaN2   -1000   -> NaN Invalid_operation

+dqor863 or  NaN3    1000   -> NaN Invalid_operation

+dqor864 or  NaN4    Inf    -> NaN Invalid_operation

+dqor865 or  NaN5   +NaN6   -> NaN Invalid_operation

+dqor866 or -Inf     NaN7   -> NaN Invalid_operation

+dqor867 or -1000    NaN8   -> NaN Invalid_operation

+dqor868 or  1000    NaN9   -> NaN Invalid_operation

+dqor869 or  Inf    +NaN10  -> NaN Invalid_operation

+dqor871 or  sNaN11  -Inf   -> NaN Invalid_operation

+dqor872 or  sNaN12  -1000  -> NaN Invalid_operation

+dqor873 or  sNaN13   1000  -> NaN Invalid_operation

+dqor874 or  sNaN14   NaN17 -> NaN Invalid_operation

+dqor875 or  sNaN15  sNaN18 -> NaN Invalid_operation

+dqor876 or  NaN16   sNaN19 -> NaN Invalid_operation

+dqor877 or -Inf    +sNaN20 -> NaN Invalid_operation

+dqor878 or -1000    sNaN21 -> NaN Invalid_operation

+dqor879 or  1000    sNaN22 -> NaN Invalid_operation

+dqor880 or  Inf     sNaN23 -> NaN Invalid_operation

+dqor881 or +NaN25  +sNaN24 -> NaN Invalid_operation

+dqor882 or -NaN26    NaN28 -> NaN Invalid_operation

+dqor883 or -sNaN27  sNaN29 -> NaN Invalid_operation

+dqor884 or  1000    -NaN30 -> NaN Invalid_operation

+dqor885 or  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqPlus.decTest b/Lib/test/decimaltestdata/dqPlus.decTest
new file mode 100644
index 0000000..ad5b7be
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqPlus.decTest
@@ -0,0 +1,88 @@
+------------------------------------------------------------------------

+-- dqPlus.decTest -- decQuad 0+x                                      --

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

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check

+dqpls001 plus       +7.50  -> 7.50

+

+-- Infinities

+dqpls011 plus  Infinity    -> Infinity

+dqpls012 plus  -Infinity   -> -Infinity

+

+-- NaNs, 0 payload

+ddqls021 plus         NaN  -> NaN

+ddqls022 plus        -NaN  -> -NaN

+ddqls023 plus        sNaN  -> NaN  Invalid_operation

+ddqls024 plus       -sNaN  -> -NaN Invalid_operation

+

+-- NaNs, non-0 payload

+ddqls031 plus       NaN13  -> NaN13

+ddqls032 plus      -NaN13  -> -NaN13

+ddqls033 plus      sNaN13  -> NaN13   Invalid_operation

+ddqls034 plus     -sNaN13  -> -NaN13  Invalid_operation

+ddqls035 plus       NaN70  -> NaN70

+ddqls036 plus      -NaN70  -> -NaN70

+ddqls037 plus      sNaN101 -> NaN101  Invalid_operation

+ddqls038 plus     -sNaN101 -> -NaN101 Invalid_operation

+

+-- finites

+dqpls101 plus          7   -> 7

+dqpls102 plus         -7   -> -7

+dqpls103 plus         75   -> 75

+dqpls104 plus        -75   -> -75

+dqpls105 plus       7.50   -> 7.50

+dqpls106 plus      -7.50   -> -7.50

+dqpls107 plus       7.500  -> 7.500

+dqpls108 plus      -7.500  -> -7.500

+

+-- zeros

+dqpls111 plus          0   -> 0

+dqpls112 plus         -0   -> 0

+dqpls113 plus       0E+4   -> 0E+4

+dqpls114 plus      -0E+4   -> 0E+4

+dqpls115 plus     0.0000   -> 0.0000

+dqpls116 plus    -0.0000   -> 0.0000

+dqpls117 plus      0E-141  -> 0E-141

+dqpls118 plus     -0E-141  -> 0E-141

+

+-- full coefficients, alternating bits

+dqpls121 plus   2682682682682682682682682682682682    ->  2682682682682682682682682682682682

+dqpls122 plus  -2682682682682682682682682682682682    -> -2682682682682682682682682682682682

+dqpls123 plus   1341341341341341341341341341341341    ->  1341341341341341341341341341341341

+dqpls124 plus  -1341341341341341341341341341341341    -> -1341341341341341341341341341341341

+

+-- Nmax, Nmin, Ntiny

+dqpls131 plus  9.999999999999999999999999999999999E+6144   ->  9.999999999999999999999999999999999E+6144

+dqpls132 plus  1E-6143                                     ->  1E-6143

+dqpls133 plus  1.000000000000000000000000000000000E-6143   ->  1.000000000000000000000000000000000E-6143

+dqpls134 plus  1E-6176                                     ->  1E-6176 Subnormal

+

+dqpls135 plus  -1E-6176                                    -> -1E-6176 Subnormal

+dqpls136 plus  -1.000000000000000000000000000000000E-6143  -> -1.000000000000000000000000000000000E-6143

+dqpls137 plus  -1E-6143                                    -> -1E-6143

+dqpls138 plus  -9.999999999999999999999999999999999E+6144  -> -9.999999999999999999999999999999999E+6144

diff --git a/Lib/test/decimaltestdata/dqQuantize.decTest b/Lib/test/decimaltestdata/dqQuantize.decTest
new file mode 100644
index 0000000..4c3e1ea
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqQuantize.decTest
@@ -0,0 +1,823 @@
+------------------------------------------------------------------------

+-- dqQuantize.decTest -- decQuad quantize operation                   --

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

+

+-- Most of the tests here assume a "regular pattern", where the

+-- sign and coefficient are +1.

+-- 2004.03.15 Underflow for quantize is suppressed

+-- 2005.06.08 More extensive tests for 'does not fit'

+-- [Forked from quantize.decTest 2006.11.25]

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks

+dqqua001 quantize 0       1e0   -> 0

+dqqua002 quantize 1       1e0   -> 1

+dqqua003 quantize 0.1    1e+2   -> 0E+2 Inexact Rounded

+dqqua005 quantize 0.1    1e+1   -> 0E+1 Inexact Rounded

+dqqua006 quantize 0.1     1e0   -> 0 Inexact Rounded

+dqqua007 quantize 0.1    1e-1   -> 0.1

+dqqua008 quantize 0.1    1e-2   -> 0.10

+dqqua009 quantize 0.1    1e-3   -> 0.100

+dqqua010 quantize 0.9    1e+2   -> 0E+2 Inexact Rounded

+dqqua011 quantize 0.9    1e+1   -> 0E+1 Inexact Rounded

+dqqua012 quantize 0.9    1e+0   -> 1 Inexact Rounded

+dqqua013 quantize 0.9    1e-1   -> 0.9

+dqqua014 quantize 0.9    1e-2   -> 0.90

+dqqua015 quantize 0.9    1e-3   -> 0.900

+-- negatives

+dqqua021 quantize -0      1e0   -> -0

+dqqua022 quantize -1      1e0   -> -1

+dqqua023 quantize -0.1   1e+2   -> -0E+2 Inexact Rounded

+dqqua025 quantize -0.1   1e+1   -> -0E+1 Inexact Rounded

+dqqua026 quantize -0.1    1e0   -> -0 Inexact Rounded

+dqqua027 quantize -0.1   1e-1   -> -0.1

+dqqua028 quantize -0.1   1e-2   -> -0.10

+dqqua029 quantize -0.1   1e-3   -> -0.100

+dqqua030 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded

+dqqua031 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded

+dqqua032 quantize -0.9   1e+0   -> -1 Inexact Rounded

+dqqua033 quantize -0.9   1e-1   -> -0.9

+dqqua034 quantize -0.9   1e-2   -> -0.90

+dqqua035 quantize -0.9   1e-3   -> -0.900

+dqqua036 quantize -0.5   1e+2   -> -0E+2 Inexact Rounded

+dqqua037 quantize -0.5   1e+1   -> -0E+1 Inexact Rounded

+dqqua038 quantize -0.5   1e+0   -> -0 Inexact Rounded

+dqqua039 quantize -0.5   1e-1   -> -0.5

+dqqua040 quantize -0.5   1e-2   -> -0.50

+dqqua041 quantize -0.5   1e-3   -> -0.500

+dqqua042 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded

+dqqua043 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded

+dqqua044 quantize -0.9   1e+0   -> -1 Inexact Rounded

+dqqua045 quantize -0.9   1e-1   -> -0.9

+dqqua046 quantize -0.9   1e-2   -> -0.90

+dqqua047 quantize -0.9   1e-3   -> -0.900

+

+-- examples from Specification

+dqqua060 quantize 2.17   0.001  -> 2.170

+dqqua061 quantize 2.17   0.01   -> 2.17

+dqqua062 quantize 2.17   0.1    -> 2.2 Inexact Rounded

+dqqua063 quantize 2.17   1e+0   -> 2 Inexact Rounded

+dqqua064 quantize 2.17   1e+1   -> 0E+1 Inexact Rounded

+dqqua065 quantize -Inf    Inf   -> -Infinity

+dqqua066 quantize 2       Inf   -> NaN Invalid_operation

+dqqua067 quantize -0.1    1     -> -0 Inexact Rounded

+dqqua068 quantize -0      1e+5     -> -0E+5

+dqqua069 quantize +123451234567899876543216789012345.6 1e-2 -> NaN Invalid_operation

+dqqua070 quantize -987651234567899876543214335236450.6 1e-2 -> NaN Invalid_operation

+dqqua071 quantize 217    1e-1   -> 217.0

+dqqua072 quantize 217    1e+0   -> 217

+dqqua073 quantize 217    1e+1   -> 2.2E+2 Inexact Rounded

+dqqua074 quantize 217    1e+2   -> 2E+2 Inexact Rounded

+

+-- general tests ..

+dqqua089 quantize 12     1e+4   -> 0E+4 Inexact Rounded

+dqqua090 quantize 12     1e+3   -> 0E+3 Inexact Rounded

+dqqua091 quantize 12     1e+2   -> 0E+2 Inexact Rounded

+dqqua092 quantize 12     1e+1   -> 1E+1 Inexact Rounded

+dqqua093 quantize 1.2345 1e-2   -> 1.23 Inexact Rounded

+dqqua094 quantize 1.2355 1e-2   -> 1.24 Inexact Rounded

+dqqua095 quantize 1.2345 1e-6   -> 1.234500

+dqqua096 quantize 9.9999 1e-2   -> 10.00 Inexact Rounded

+dqqua097 quantize 0.0001 1e-2   -> 0.00 Inexact Rounded

+dqqua098 quantize 0.001  1e-2   -> 0.00 Inexact Rounded

+dqqua099 quantize 0.009  1e-2   -> 0.01 Inexact Rounded

+dqqua100 quantize 92     1e+2   -> 1E+2 Inexact Rounded

+

+dqqua101 quantize -1      1e0   ->  -1

+dqqua102 quantize -1     1e-1   ->  -1.0

+dqqua103 quantize -1     1e-2   ->  -1.00

+dqqua104 quantize  0      1e0   ->  0

+dqqua105 quantize  0     1e-1   ->  0.0

+dqqua106 quantize  0     1e-2   ->  0.00

+dqqua107 quantize  0.00   1e0   ->  0

+dqqua108 quantize  0     1e+1   ->  0E+1

+dqqua109 quantize  0     1e+2   ->  0E+2

+dqqua110 quantize +1      1e0   ->  1

+dqqua111 quantize +1     1e-1   ->  1.0

+dqqua112 quantize +1     1e-2   ->  1.00

+

+dqqua120 quantize   1.04  1e-3 ->  1.040

+dqqua121 quantize   1.04  1e-2 ->  1.04

+dqqua122 quantize   1.04  1e-1 ->  1.0 Inexact Rounded

+dqqua123 quantize   1.04   1e0 ->  1 Inexact Rounded

+dqqua124 quantize   1.05  1e-3 ->  1.050

+dqqua125 quantize   1.05  1e-2 ->  1.05

+dqqua126 quantize   1.05  1e-1 ->  1.0 Inexact Rounded

+dqqua131 quantize   1.05   1e0 ->  1 Inexact Rounded

+dqqua132 quantize   1.06  1e-3 ->  1.060

+dqqua133 quantize   1.06  1e-2 ->  1.06

+dqqua134 quantize   1.06  1e-1 ->  1.1 Inexact Rounded

+dqqua135 quantize   1.06   1e0 ->  1 Inexact Rounded

+

+dqqua140 quantize   -10    1e-2  ->  -10.00

+dqqua141 quantize   +1     1e-2  ->  1.00

+dqqua142 quantize   +10    1e-2  ->  10.00

+dqqua143 quantize   1E+37  1e-2  ->  NaN Invalid_operation

+dqqua144 quantize   1E-37  1e-2  ->  0.00 Inexact Rounded

+dqqua145 quantize   1E-3   1e-2  ->  0.00 Inexact Rounded

+dqqua146 quantize   1E-2   1e-2  ->  0.01

+dqqua147 quantize   1E-1   1e-2  ->  0.10

+dqqua148 quantize   0E-37  1e-2  ->  0.00

+

+dqqua150 quantize   1.0600 1e-5 ->  1.06000

+dqqua151 quantize   1.0600 1e-4 ->  1.0600

+dqqua152 quantize   1.0600 1e-3 ->  1.060 Rounded

+dqqua153 quantize   1.0600 1e-2 ->  1.06 Rounded

+dqqua154 quantize   1.0600 1e-1 ->  1.1 Inexact Rounded

+dqqua155 quantize   1.0600  1e0 ->  1 Inexact Rounded

+

+-- a couple where rounding was different in base tests

+rounding:    half_up

+dqqua157 quantize -0.5   1e+0   -> -1 Inexact Rounded

+dqqua158 quantize   1.05  1e-1 ->  1.1 Inexact Rounded

+dqqua159 quantize   1.06   1e0 ->  1 Inexact Rounded

+rounding:    half_even

+

+-- base tests with non-1 coefficients

+dqqua161 quantize 0      -9e0   -> 0

+dqqua162 quantize 1      -7e0   -> 1

+dqqua163 quantize 0.1   -1e+2   -> 0E+2 Inexact Rounded

+dqqua165 quantize 0.1    0e+1   -> 0E+1 Inexact Rounded

+dqqua166 quantize 0.1     2e0   -> 0 Inexact Rounded

+dqqua167 quantize 0.1    3e-1   -> 0.1

+dqqua168 quantize 0.1   44e-2   -> 0.10

+dqqua169 quantize 0.1  555e-3   -> 0.100

+dqqua170 quantize 0.9 6666e+2   -> 0E+2 Inexact Rounded

+dqqua171 quantize 0.9 -777e+1   -> 0E+1 Inexact Rounded

+dqqua172 quantize 0.9  -88e+0   -> 1 Inexact Rounded

+dqqua173 quantize 0.9   -9e-1   -> 0.9

+dqqua174 quantize 0.9    0e-2   -> 0.90

+dqqua175 quantize 0.9  1.1e-3   -> 0.9000

+-- negatives

+dqqua181 quantize -0    1.1e0   -> -0.0

+dqqua182 quantize -1     -1e0   -> -1

+dqqua183 quantize -0.1  11e+2   -> -0E+2 Inexact Rounded

+dqqua185 quantize -0.1 111e+1   -> -0E+1 Inexact Rounded

+dqqua186 quantize -0.1   71e0   -> -0 Inexact Rounded

+dqqua187 quantize -0.1 -91e-1   -> -0.1

+dqqua188 quantize -0.1 -.1e-2   -> -0.100

+dqqua189 quantize -0.1  -1e-3   -> -0.100

+dqqua190 quantize -0.9   0e+2   -> -0E+2 Inexact Rounded

+dqqua191 quantize -0.9  -0e+1   -> -0E+1 Inexact Rounded

+dqqua192 quantize -0.9 -10e+0   -> -1 Inexact Rounded

+dqqua193 quantize -0.9 100e-1   -> -0.9

+dqqua194 quantize -0.9 999e-2   -> -0.90

+

+-- +ve exponents ..

+dqqua201 quantize   -1   1e+0 ->  -1

+dqqua202 quantize   -1   1e+1 ->  -0E+1 Inexact Rounded

+dqqua203 quantize   -1   1e+2 ->  -0E+2 Inexact Rounded

+dqqua204 quantize    0   1e+0 ->  0

+dqqua205 quantize    0   1e+1 ->  0E+1

+dqqua206 quantize    0   1e+2 ->  0E+2

+dqqua207 quantize   +1   1e+0 ->  1

+dqqua208 quantize   +1   1e+1 ->  0E+1 Inexact Rounded

+dqqua209 quantize   +1   1e+2 ->  0E+2 Inexact Rounded

+

+dqqua220 quantize   1.04 1e+3 ->  0E+3 Inexact Rounded

+dqqua221 quantize   1.04 1e+2 ->  0E+2 Inexact Rounded

+dqqua222 quantize   1.04 1e+1 ->  0E+1 Inexact Rounded

+dqqua223 quantize   1.04 1e+0 ->  1 Inexact Rounded

+dqqua224 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded

+dqqua225 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded

+dqqua226 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded

+dqqua227 quantize   1.05 1e+0 ->  1 Inexact Rounded

+dqqua228 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded

+dqqua229 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded

+dqqua230 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded

+dqqua231 quantize   1.05 1e+0 ->  1 Inexact Rounded

+dqqua232 quantize   1.06 1e+3 ->  0E+3 Inexact Rounded

+dqqua233 quantize   1.06 1e+2 ->  0E+2 Inexact Rounded

+dqqua234 quantize   1.06 1e+1 ->  0E+1 Inexact Rounded

+dqqua235 quantize   1.06 1e+0 ->  1 Inexact Rounded

+

+dqqua240 quantize   -10   1e+1  ->  -1E+1 Rounded

+dqqua241 quantize   +1    1e+1  ->  0E+1 Inexact Rounded

+dqqua242 quantize   +10   1e+1  ->  1E+1 Rounded

+dqqua243 quantize   1E+1  1e+1  ->  1E+1          -- underneath this is E+1

+dqqua244 quantize   1E+2  1e+1  ->  1.0E+2        -- underneath this is E+1

+dqqua245 quantize   1E+3  1e+1  ->  1.00E+3       -- underneath this is E+1

+dqqua246 quantize   1E+4  1e+1  ->  1.000E+4      -- underneath this is E+1

+dqqua247 quantize   1E+5  1e+1  ->  1.0000E+5     -- underneath this is E+1

+dqqua248 quantize   1E+6  1e+1  ->  1.00000E+6    -- underneath this is E+1

+dqqua249 quantize   1E+7  1e+1  ->  1.000000E+7   -- underneath this is E+1

+dqqua250 quantize   1E+8  1e+1  ->  1.0000000E+8  -- underneath this is E+1

+dqqua251 quantize   1E+9  1e+1  ->  1.00000000E+9 -- underneath this is E+1

+-- next one tries to add 9 zeros

+dqqua252 quantize   1E+37 1e+1  ->  NaN Invalid_operation

+dqqua253 quantize   1E-37 1e+1  ->  0E+1 Inexact Rounded

+dqqua254 quantize   1E-2  1e+1  ->  0E+1 Inexact Rounded

+dqqua255 quantize   0E-37 1e+1  ->  0E+1

+dqqua256 quantize  -0E-37 1e+1  -> -0E+1

+dqqua257 quantize  -0E-1  1e+1  -> -0E+1

+dqqua258 quantize  -0     1e+1  -> -0E+1

+dqqua259 quantize  -0E+1  1e+1  -> -0E+1

+

+dqqua260 quantize   -10   1e+2  ->  -0E+2 Inexact Rounded

+dqqua261 quantize   +1    1e+2  ->  0E+2 Inexact Rounded

+dqqua262 quantize   +10   1e+2  ->  0E+2 Inexact Rounded

+dqqua263 quantize   1E+1  1e+2  ->  0E+2 Inexact Rounded

+dqqua264 quantize   1E+2  1e+2  ->  1E+2

+dqqua265 quantize   1E+3  1e+2  ->  1.0E+3

+dqqua266 quantize   1E+4  1e+2  ->  1.00E+4

+dqqua267 quantize   1E+5  1e+2  ->  1.000E+5

+dqqua268 quantize   1E+6  1e+2  ->  1.0000E+6

+dqqua269 quantize   1E+7  1e+2  ->  1.00000E+7

+dqqua270 quantize   1E+8  1e+2  ->  1.000000E+8

+dqqua271 quantize   1E+9  1e+2  ->  1.0000000E+9

+dqqua272 quantize   1E+10 1e+2  ->  1.00000000E+10

+dqqua273 quantize   1E-10 1e+2  ->  0E+2 Inexact Rounded

+dqqua274 quantize   1E-2  1e+2  ->  0E+2 Inexact Rounded

+dqqua275 quantize   0E-10 1e+2  ->  0E+2

+

+dqqua280 quantize   -10   1e+3  ->  -0E+3 Inexact Rounded

+dqqua281 quantize   +1    1e+3  ->  0E+3 Inexact Rounded

+dqqua282 quantize   +10   1e+3  ->  0E+3 Inexact Rounded

+dqqua283 quantize   1E+1  1e+3  ->  0E+3 Inexact Rounded

+dqqua284 quantize   1E+2  1e+3  ->  0E+3 Inexact Rounded

+dqqua285 quantize   1E+3  1e+3  ->  1E+3

+dqqua286 quantize   1E+4  1e+3  ->  1.0E+4

+dqqua287 quantize   1E+5  1e+3  ->  1.00E+5

+dqqua288 quantize   1E+6  1e+3  ->  1.000E+6

+dqqua289 quantize   1E+7  1e+3  ->  1.0000E+7

+dqqua290 quantize   1E+8  1e+3  ->  1.00000E+8

+dqqua291 quantize   1E+9  1e+3  ->  1.000000E+9

+dqqua292 quantize   1E+10 1e+3  ->  1.0000000E+10

+dqqua293 quantize   1E-10 1e+3  ->  0E+3 Inexact Rounded

+dqqua294 quantize   1E-2  1e+3  ->  0E+3 Inexact Rounded

+dqqua295 quantize   0E-10 1e+3  ->  0E+3

+

+-- round up from below [sign wrong in JIT compiler once]

+dqqua300 quantize   0.0078 1e-5 ->  0.00780

+dqqua301 quantize   0.0078 1e-4 ->  0.0078

+dqqua302 quantize   0.0078 1e-3 ->  0.008 Inexact Rounded

+dqqua303 quantize   0.0078 1e-2 ->  0.01 Inexact Rounded

+dqqua304 quantize   0.0078 1e-1 ->  0.0 Inexact Rounded

+dqqua305 quantize   0.0078  1e0 ->  0 Inexact Rounded

+dqqua306 quantize   0.0078 1e+1 ->  0E+1 Inexact Rounded

+dqqua307 quantize   0.0078 1e+2 ->  0E+2 Inexact Rounded

+

+dqqua310 quantize  -0.0078 1e-5 -> -0.00780

+dqqua311 quantize  -0.0078 1e-4 -> -0.0078

+dqqua312 quantize  -0.0078 1e-3 -> -0.008 Inexact Rounded

+dqqua313 quantize  -0.0078 1e-2 -> -0.01 Inexact Rounded

+dqqua314 quantize  -0.0078 1e-1 -> -0.0 Inexact Rounded

+dqqua315 quantize  -0.0078  1e0 -> -0 Inexact Rounded

+dqqua316 quantize  -0.0078 1e+1 -> -0E+1 Inexact Rounded

+dqqua317 quantize  -0.0078 1e+2 -> -0E+2 Inexact Rounded

+

+dqqua320 quantize   0.078 1e-5 ->  0.07800

+dqqua321 quantize   0.078 1e-4 ->  0.0780

+dqqua322 quantize   0.078 1e-3 ->  0.078

+dqqua323 quantize   0.078 1e-2 ->  0.08 Inexact Rounded

+dqqua324 quantize   0.078 1e-1 ->  0.1 Inexact Rounded

+dqqua325 quantize   0.078  1e0 ->  0 Inexact Rounded

+dqqua326 quantize   0.078 1e+1 ->  0E+1 Inexact Rounded

+dqqua327 quantize   0.078 1e+2 ->  0E+2 Inexact Rounded

+

+dqqua330 quantize  -0.078 1e-5 -> -0.07800

+dqqua331 quantize  -0.078 1e-4 -> -0.0780

+dqqua332 quantize  -0.078 1e-3 -> -0.078

+dqqua333 quantize  -0.078 1e-2 -> -0.08 Inexact Rounded

+dqqua334 quantize  -0.078 1e-1 -> -0.1 Inexact Rounded

+dqqua335 quantize  -0.078  1e0 -> -0 Inexact Rounded

+dqqua336 quantize  -0.078 1e+1 -> -0E+1 Inexact Rounded

+dqqua337 quantize  -0.078 1e+2 -> -0E+2 Inexact Rounded

+

+dqqua340 quantize   0.78 1e-5 ->  0.78000

+dqqua341 quantize   0.78 1e-4 ->  0.7800

+dqqua342 quantize   0.78 1e-3 ->  0.780

+dqqua343 quantize   0.78 1e-2 ->  0.78

+dqqua344 quantize   0.78 1e-1 ->  0.8 Inexact Rounded

+dqqua345 quantize   0.78  1e0 ->  1 Inexact Rounded

+dqqua346 quantize   0.78 1e+1 ->  0E+1 Inexact Rounded

+dqqua347 quantize   0.78 1e+2 ->  0E+2 Inexact Rounded

+

+dqqua350 quantize  -0.78 1e-5 -> -0.78000

+dqqua351 quantize  -0.78 1e-4 -> -0.7800

+dqqua352 quantize  -0.78 1e-3 -> -0.780

+dqqua353 quantize  -0.78 1e-2 -> -0.78

+dqqua354 quantize  -0.78 1e-1 -> -0.8 Inexact Rounded

+dqqua355 quantize  -0.78  1e0 -> -1 Inexact Rounded

+dqqua356 quantize  -0.78 1e+1 -> -0E+1 Inexact Rounded

+dqqua357 quantize  -0.78 1e+2 -> -0E+2 Inexact Rounded

+

+dqqua360 quantize   7.8 1e-5 ->  7.80000

+dqqua361 quantize   7.8 1e-4 ->  7.8000

+dqqua362 quantize   7.8 1e-3 ->  7.800

+dqqua363 quantize   7.8 1e-2 ->  7.80

+dqqua364 quantize   7.8 1e-1 ->  7.8

+dqqua365 quantize   7.8  1e0 ->  8 Inexact Rounded

+dqqua366 quantize   7.8 1e+1 ->  1E+1 Inexact Rounded

+dqqua367 quantize   7.8 1e+2 ->  0E+2 Inexact Rounded

+dqqua368 quantize   7.8 1e+3 ->  0E+3 Inexact Rounded

+

+dqqua370 quantize  -7.8 1e-5 -> -7.80000

+dqqua371 quantize  -7.8 1e-4 -> -7.8000

+dqqua372 quantize  -7.8 1e-3 -> -7.800

+dqqua373 quantize  -7.8 1e-2 -> -7.80

+dqqua374 quantize  -7.8 1e-1 -> -7.8

+dqqua375 quantize  -7.8  1e0 -> -8 Inexact Rounded

+dqqua376 quantize  -7.8 1e+1 -> -1E+1 Inexact Rounded

+dqqua377 quantize  -7.8 1e+2 -> -0E+2 Inexact Rounded

+dqqua378 quantize  -7.8 1e+3 -> -0E+3 Inexact Rounded

+

+-- some individuals

+dqqua380 quantize   1122334455667788991234567352364.506 1e-2 -> 1122334455667788991234567352364.51 Inexact Rounded

+dqqua381 quantize   11223344556677889912345673523645.06 1e-2 -> 11223344556677889912345673523645.06

+dqqua382 quantize   112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation

+dqqua383 quantize   1122334455667788991234567352364506  1e-2 -> NaN Invalid_operation

+dqqua384 quantize  -1122334455667788991234567352364.506 1e-2 -> -1122334455667788991234567352364.51 Inexact Rounded

+dqqua385 quantize  -11223344556677889912345673523645.06 1e-2 -> -11223344556677889912345673523645.06

+dqqua386 quantize  -112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation

+dqqua387 quantize  -1122334455667788991234567352364506  1e-2 -> NaN Invalid_operation

+

+rounding: down

+dqqua389 quantize   112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation

+-- ? should that one instead have been:

+-- dqqua389 quantize   112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation

+rounding: half_up

+

+-- and a few more from e-mail discussions

+dqqua391 quantize  11223344556677889912345678912.34567  1e-3 -> 11223344556677889912345678912.346   Inexact Rounded

+dqqua392 quantize  112233445566778899123456789123.4567  1e-3 -> 112233445566778899123456789123.457  Inexact Rounded

+dqqua393 quantize  1122334455667788991234567891234567.  1e-3 -> NaN Invalid_operation

+

+-- some 9999 round-up cases

+dqqua400 quantize   9.999        1e-5  ->  9.99900

+dqqua401 quantize   9.999        1e-4  ->  9.9990

+dqqua402 quantize   9.999        1e-3  ->  9.999

+dqqua403 quantize   9.999        1e-2  -> 10.00     Inexact Rounded

+dqqua404 quantize   9.999        1e-1  -> 10.0      Inexact Rounded

+dqqua405 quantize   9.999         1e0  -> 10        Inexact Rounded

+dqqua406 quantize   9.999         1e1  -> 1E+1      Inexact Rounded

+dqqua407 quantize   9.999         1e2  -> 0E+2      Inexact Rounded

+

+dqqua410 quantize   0.999        1e-5  ->  0.99900

+dqqua411 quantize   0.999        1e-4  ->  0.9990

+dqqua412 quantize   0.999        1e-3  ->  0.999

+dqqua413 quantize   0.999        1e-2  ->  1.00     Inexact Rounded

+dqqua414 quantize   0.999        1e-1  ->  1.0      Inexact Rounded

+dqqua415 quantize   0.999         1e0  ->  1        Inexact Rounded

+dqqua416 quantize   0.999         1e1  -> 0E+1      Inexact Rounded

+

+dqqua420 quantize   0.0999       1e-5  ->  0.09990

+dqqua421 quantize   0.0999       1e-4  ->  0.0999

+dqqua422 quantize   0.0999       1e-3  ->  0.100    Inexact Rounded

+dqqua423 quantize   0.0999       1e-2  ->  0.10     Inexact Rounded

+dqqua424 quantize   0.0999       1e-1  ->  0.1      Inexact Rounded

+dqqua425 quantize   0.0999        1e0  ->  0        Inexact Rounded

+dqqua426 quantize   0.0999        1e1  -> 0E+1      Inexact Rounded

+

+dqqua430 quantize   0.00999      1e-5  ->  0.00999

+dqqua431 quantize   0.00999      1e-4  ->  0.0100   Inexact Rounded

+dqqua432 quantize   0.00999      1e-3  ->  0.010    Inexact Rounded

+dqqua433 quantize   0.00999      1e-2  ->  0.01     Inexact Rounded

+dqqua434 quantize   0.00999      1e-1  ->  0.0      Inexact Rounded

+dqqua435 quantize   0.00999       1e0  ->  0        Inexact Rounded

+dqqua436 quantize   0.00999       1e1  -> 0E+1      Inexact Rounded

+

+dqqua440 quantize   0.000999     1e-5  ->  0.00100  Inexact Rounded

+dqqua441 quantize   0.000999     1e-4  ->  0.0010   Inexact Rounded

+dqqua442 quantize   0.000999     1e-3  ->  0.001    Inexact Rounded

+dqqua443 quantize   0.000999     1e-2  ->  0.00     Inexact Rounded

+dqqua444 quantize   0.000999     1e-1  ->  0.0      Inexact Rounded

+dqqua445 quantize   0.000999      1e0  ->  0        Inexact Rounded

+dqqua446 quantize   0.000999      1e1  -> 0E+1      Inexact Rounded

+

+dqqua1001 quantize  0.000        0.001 ->  0.000

+dqqua1002 quantize  0.001        0.001 ->  0.001

+dqqua1003 quantize  0.0012       0.001 ->  0.001     Inexact Rounded

+dqqua1004 quantize  0.0018       0.001 ->  0.002     Inexact Rounded

+dqqua1005 quantize  0.501        0.001 ->  0.501

+dqqua1006 quantize  0.5012       0.001 ->  0.501     Inexact Rounded

+dqqua1007 quantize  0.5018       0.001 ->  0.502     Inexact Rounded

+dqqua1008 quantize  0.999        0.001 ->  0.999

+

+dqqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded

+dqqua482 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded

+dqqua483 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded

+dqqua484 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded

+dqqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded

+dqqua486 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded

+-- a potential double-round

+dqqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded

+dqqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded

+

+dqqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded

+dqqua492 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded

+dqqua493 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded

+dqqua494 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded

+dqqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded

+dqqua496 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded

+dqqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded

+dqqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded

+

+-- Zeros

+dqqua500 quantize   0     1e1 ->  0E+1

+dqqua501 quantize   0     1e0 ->  0

+dqqua502 quantize   0    1e-1 ->  0.0

+dqqua503 quantize   0.0  1e-1 ->  0.0

+dqqua504 quantize   0.0   1e0 ->  0

+dqqua505 quantize   0.0  1e+1 ->  0E+1

+dqqua506 quantize   0E+1 1e-1 ->  0.0

+dqqua507 quantize   0E+1  1e0 ->  0

+dqqua508 quantize   0E+1 1e+1 ->  0E+1

+dqqua509 quantize  -0     1e1 -> -0E+1

+dqqua510 quantize  -0     1e0 -> -0

+dqqua511 quantize  -0    1e-1 -> -0.0

+dqqua512 quantize  -0.0  1e-1 -> -0.0

+dqqua513 quantize  -0.0   1e0 -> -0

+dqqua514 quantize  -0.0  1e+1 -> -0E+1

+dqqua515 quantize  -0E+1 1e-1 -> -0.0

+dqqua516 quantize  -0E+1  1e0 -> -0

+dqqua517 quantize  -0E+1 1e+1 -> -0E+1

+

+-- Suspicious RHS values

+dqqua520 quantize   1.234    1e359 -> 0E+359 Inexact Rounded

+dqqua521 quantize 123.456    1e359 -> 0E+359 Inexact Rounded

+dqqua522 quantize   1.234    1e359 -> 0E+359 Inexact Rounded

+dqqua523 quantize 123.456    1e359 -> 0E+359 Inexact Rounded

+-- next four are "won't fit" overfl

+dqqua526 quantize   1.234   1e-299 -> NaN Invalid_operation

+dqqua527 quantize 123.456   1e-299 -> NaN Invalid_operation

+dqqua528 quantize   1.234   1e-299 -> NaN Invalid_operation

+dqqua529 quantize 123.456   1e-299 -> NaN Invalid_operation

+

+dqqua532 quantize   1.234E+299    1e299 -> 1E+299    Inexact Rounded

+dqqua533 quantize   1.234E+298    1e299 -> 0E+299    Inexact Rounded

+dqqua534 quantize   1.234         1e299 -> 0E+299    Inexact Rounded

+dqqua537 quantize   0            1e-299 -> 0E-299

+-- next two are "won't fit" overflows

+dqqua538 quantize   1.234        1e-299 -> NaN Invalid_operation

+dqqua539 quantize   1.234        1e-300 -> NaN Invalid_operation

+-- [more below]

+

+-- Specials

+dqqua580 quantize  Inf    -Inf   ->  Infinity

+dqqua581 quantize  Inf  1e-299   ->  NaN  Invalid_operation

+dqqua582 quantize  Inf  1e-1     ->  NaN  Invalid_operation

+dqqua583 quantize  Inf   1e0     ->  NaN  Invalid_operation

+dqqua584 quantize  Inf   1e1     ->  NaN  Invalid_operation

+dqqua585 quantize  Inf   1e299   ->  NaN  Invalid_operation

+dqqua586 quantize  Inf     Inf   ->  Infinity

+dqqua587 quantize -1000    Inf   ->  NaN  Invalid_operation

+dqqua588 quantize -Inf     Inf   ->  -Infinity

+dqqua589 quantize -1       Inf   ->  NaN  Invalid_operation

+dqqua590 quantize  0       Inf   ->  NaN  Invalid_operation

+dqqua591 quantize  1       Inf   ->  NaN  Invalid_operation

+dqqua592 quantize  1000    Inf   ->  NaN  Invalid_operation

+dqqua593 quantize  Inf     Inf   ->  Infinity

+dqqua594 quantize  Inf  1e-0     ->  NaN  Invalid_operation

+dqqua595 quantize -0       Inf   ->  NaN  Invalid_operation

+

+dqqua600 quantize -Inf    -Inf   ->  -Infinity

+dqqua601 quantize -Inf  1e-299   ->  NaN  Invalid_operation

+dqqua602 quantize -Inf  1e-1     ->  NaN  Invalid_operation

+dqqua603 quantize -Inf   1e0     ->  NaN  Invalid_operation

+dqqua604 quantize -Inf   1e1     ->  NaN  Invalid_operation

+dqqua605 quantize -Inf   1e299   ->  NaN  Invalid_operation

+dqqua606 quantize -Inf     Inf   ->  -Infinity

+dqqua607 quantize -1000    Inf   ->  NaN  Invalid_operation

+dqqua608 quantize -Inf    -Inf   ->  -Infinity

+dqqua609 quantize -1      -Inf   ->  NaN  Invalid_operation

+dqqua610 quantize  0      -Inf   ->  NaN  Invalid_operation

+dqqua611 quantize  1      -Inf   ->  NaN  Invalid_operation

+dqqua612 quantize  1000   -Inf   ->  NaN  Invalid_operation

+dqqua613 quantize  Inf    -Inf   ->  Infinity

+dqqua614 quantize -Inf  1e-0     ->  NaN  Invalid_operation

+dqqua615 quantize -0      -Inf   ->  NaN  Invalid_operation

+

+dqqua621 quantize  NaN   -Inf    ->  NaN

+dqqua622 quantize  NaN 1e-299    ->  NaN

+dqqua623 quantize  NaN 1e-1      ->  NaN

+dqqua624 quantize  NaN  1e0      ->  NaN

+dqqua625 quantize  NaN  1e1      ->  NaN

+dqqua626 quantize  NaN  1e299    ->  NaN

+dqqua627 quantize  NaN    Inf    ->  NaN

+dqqua628 quantize  NaN    NaN    ->  NaN

+dqqua629 quantize -Inf    NaN    ->  NaN

+dqqua630 quantize -1000   NaN    ->  NaN

+dqqua631 quantize -1      NaN    ->  NaN

+dqqua632 quantize  0      NaN    ->  NaN

+dqqua633 quantize  1      NaN    ->  NaN

+dqqua634 quantize  1000   NaN    ->  NaN

+dqqua635 quantize  Inf    NaN    ->  NaN

+dqqua636 quantize  NaN 1e-0      ->  NaN

+dqqua637 quantize -0      NaN    ->  NaN

+

+dqqua641 quantize  sNaN   -Inf   ->  NaN  Invalid_operation

+dqqua642 quantize  sNaN 1e-299   ->  NaN  Invalid_operation

+dqqua643 quantize  sNaN 1e-1     ->  NaN  Invalid_operation

+dqqua644 quantize  sNaN  1e0     ->  NaN  Invalid_operation

+dqqua645 quantize  sNaN  1e1     ->  NaN  Invalid_operation

+dqqua646 quantize  sNaN  1e299   ->  NaN  Invalid_operation

+dqqua647 quantize  sNaN    NaN   ->  NaN  Invalid_operation

+dqqua648 quantize  sNaN   sNaN   ->  NaN  Invalid_operation

+dqqua649 quantize  NaN    sNaN   ->  NaN  Invalid_operation

+dqqua650 quantize -Inf    sNaN   ->  NaN  Invalid_operation

+dqqua651 quantize -1000   sNaN   ->  NaN  Invalid_operation

+dqqua652 quantize -1      sNaN   ->  NaN  Invalid_operation

+dqqua653 quantize  0      sNaN   ->  NaN  Invalid_operation

+dqqua654 quantize  1      sNaN   ->  NaN  Invalid_operation

+dqqua655 quantize  1000   sNaN   ->  NaN  Invalid_operation

+dqqua656 quantize  Inf    sNaN   ->  NaN  Invalid_operation

+dqqua657 quantize  NaN    sNaN   ->  NaN  Invalid_operation

+dqqua658 quantize  sNaN 1e-0     ->  NaN  Invalid_operation

+dqqua659 quantize -0      sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqqua661 quantize  NaN9 -Inf   ->  NaN9

+dqqua662 quantize  NaN8  919   ->  NaN8

+dqqua663 quantize  NaN71 Inf   ->  NaN71

+dqqua664 quantize  NaN6  NaN5  ->  NaN6

+dqqua665 quantize -Inf   NaN4  ->  NaN4

+dqqua666 quantize -919   NaN31 ->  NaN31

+dqqua667 quantize  Inf   NaN2  ->  NaN2

+

+dqqua671 quantize  sNaN99 -Inf    ->  NaN99 Invalid_operation

+dqqua672 quantize  sNaN98 -11     ->  NaN98 Invalid_operation

+dqqua673 quantize  sNaN97  NaN    ->  NaN97 Invalid_operation

+dqqua674 quantize  sNaN16 sNaN94  ->  NaN16 Invalid_operation

+dqqua675 quantize  NaN95  sNaN93  ->  NaN93 Invalid_operation

+dqqua676 quantize -Inf    sNaN92  ->  NaN92 Invalid_operation

+dqqua677 quantize  088    sNaN91  ->  NaN91 Invalid_operation

+dqqua678 quantize  Inf    sNaN90  ->  NaN90 Invalid_operation

+dqqua679 quantize  NaN    sNaN88  ->  NaN88 Invalid_operation

+

+dqqua681 quantize -NaN9 -Inf   -> -NaN9

+dqqua682 quantize -NaN8  919   -> -NaN8

+dqqua683 quantize -NaN71 Inf   -> -NaN71

+dqqua684 quantize -NaN6 -NaN5  -> -NaN6

+dqqua685 quantize -Inf  -NaN4  -> -NaN4

+dqqua686 quantize -919  -NaN31 -> -NaN31

+dqqua687 quantize  Inf  -NaN2  -> -NaN2

+

+dqqua691 quantize -sNaN99 -Inf    -> -NaN99 Invalid_operation

+dqqua692 quantize -sNaN98 -11     -> -NaN98 Invalid_operation

+dqqua693 quantize -sNaN97  NaN    -> -NaN97 Invalid_operation

+dqqua694 quantize -sNaN16 sNaN94  -> -NaN16 Invalid_operation

+dqqua695 quantize -NaN95 -sNaN93  -> -NaN93 Invalid_operation

+dqqua696 quantize -Inf   -sNaN92  -> -NaN92 Invalid_operation

+dqqua697 quantize  088   -sNaN91  -> -NaN91 Invalid_operation

+dqqua698 quantize  Inf   -sNaN90  -> -NaN90 Invalid_operation

+dqqua699 quantize  NaN   -sNaN88  -> -NaN88 Invalid_operation

+

+-- subnormals and underflow

+dqqua710 quantize  1.00E-6143    1e-6143  ->   1E-6143    Rounded

+dqqua711 quantize  0.1E-6143    2e-6144  ->   1E-6144   Subnormal

+dqqua712 quantize  0.10E-6143   3e-6144  ->   1E-6144   Subnormal Rounded

+dqqua713 quantize  0.100E-6143  4e-6144  ->   1E-6144   Subnormal Rounded

+dqqua714 quantize  0.01E-6143   5e-6145  ->   1E-6145   Subnormal

+-- next is rounded to Emin

+dqqua715 quantize  0.999E-6143   1e-6143  ->   1E-6143    Inexact Rounded

+dqqua716 quantize  0.099E-6143 10e-6144  ->   1E-6144   Inexact Rounded Subnormal

+

+dqqua717 quantize  0.009E-6143  1e-6145  ->   1E-6145   Inexact Rounded Subnormal

+dqqua718 quantize  0.001E-6143  1e-6145  ->   0E-6145   Inexact Rounded

+dqqua719 quantize  0.0009E-6143 1e-6145  ->   0E-6145   Inexact Rounded

+dqqua720 quantize  0.0001E-6143 1e-6145  ->   0E-6145   Inexact Rounded

+

+dqqua730 quantize -1.00E-6143   1e-6143  ->  -1E-6143     Rounded

+dqqua731 quantize -0.1E-6143    1e-6143  ->  -0E-6143     Rounded Inexact

+dqqua732 quantize -0.10E-6143   1e-6143  ->  -0E-6143     Rounded Inexact

+dqqua733 quantize -0.100E-6143  1e-6143  ->  -0E-6143     Rounded Inexact

+dqqua734 quantize -0.01E-6143   1e-6143  ->  -0E-6143     Inexact Rounded

+-- next is rounded to Emin

+dqqua735 quantize -0.999E-6143 90e-6143  ->  -1E-6143     Inexact Rounded

+dqqua736 quantize -0.099E-6143 -1e-6143  ->  -0E-6143     Inexact Rounded

+dqqua737 quantize -0.009E-6143 -1e-6143  ->  -0E-6143     Inexact Rounded

+dqqua738 quantize -0.001E-6143 -0e-6143  ->  -0E-6143     Inexact Rounded

+dqqua739 quantize -0.0001E-6143 0e-6143  ->  -0E-6143     Inexact Rounded

+

+dqqua740 quantize -1.00E-6143   1e-6144 ->  -1.0E-6143   Rounded

+dqqua741 quantize -0.1E-6143    1e-6144 ->  -1E-6144    Subnormal

+dqqua742 quantize -0.10E-6143   1e-6144 ->  -1E-6144    Subnormal Rounded

+dqqua743 quantize -0.100E-6143  1e-6144 ->  -1E-6144    Subnormal Rounded

+dqqua744 quantize -0.01E-6143   1e-6144 ->  -0E-6144    Inexact Rounded

+-- next is rounded to Emin

+dqqua745 quantize -0.999E-6143  1e-6144 ->  -1.0E-6143   Inexact Rounded

+dqqua746 quantize -0.099E-6143  1e-6144 ->  -1E-6144    Inexact Rounded Subnormal

+dqqua747 quantize -0.009E-6143  1e-6144 ->  -0E-6144    Inexact Rounded

+dqqua748 quantize -0.001E-6143  1e-6144 ->  -0E-6144    Inexact Rounded

+dqqua749 quantize -0.0001E-6143 1e-6144 ->  -0E-6144    Inexact Rounded

+

+dqqua750 quantize -1.00E-6143   1e-6145 ->  -1.00E-6143

+dqqua751 quantize -0.1E-6143    1e-6145 ->  -1.0E-6144  Subnormal

+dqqua752 quantize -0.10E-6143   1e-6145 ->  -1.0E-6144  Subnormal

+dqqua753 quantize -0.100E-6143  1e-6145 ->  -1.0E-6144  Subnormal Rounded

+dqqua754 quantize -0.01E-6143   1e-6145 ->  -1E-6145    Subnormal

+-- next is rounded to Emin

+dqqua755 quantize -0.999E-6143  1e-6145 ->  -1.00E-6143  Inexact Rounded

+dqqua756 quantize -0.099E-6143  1e-6145 ->  -1.0E-6144  Inexact Rounded Subnormal

+dqqua757 quantize -0.009E-6143  1e-6145 ->  -1E-6145    Inexact Rounded Subnormal

+dqqua758 quantize -0.001E-6143  1e-6145 ->  -0E-6145    Inexact Rounded

+dqqua759 quantize -0.0001E-6143 1e-6145 ->  -0E-6145    Inexact Rounded

+

+dqqua760 quantize -1.00E-6143   1e-6146 ->  -1.000E-6143

+dqqua761 quantize -0.1E-6143    1e-6146 ->  -1.00E-6144  Subnormal

+dqqua762 quantize -0.10E-6143   1e-6146 ->  -1.00E-6144  Subnormal

+dqqua763 quantize -0.100E-6143  1e-6146 ->  -1.00E-6144  Subnormal

+dqqua764 quantize -0.01E-6143   1e-6146 ->  -1.0E-6145   Subnormal

+dqqua765 quantize -0.999E-6143  1e-6146 ->  -9.99E-6144  Subnormal

+dqqua766 quantize -0.099E-6143  1e-6146 ->  -9.9E-6145   Subnormal

+dqqua767 quantize -0.009E-6143  1e-6146 ->  -9E-6146     Subnormal

+dqqua768 quantize -0.001E-6143  1e-6146 ->  -1E-6146     Subnormal

+dqqua769 quantize -0.0001E-6143 1e-6146 ->  -0E-6146     Inexact Rounded

+

+-- More from Fung Lee

+dqqua1021 quantize  8.666666666666000E+6144  1.000000000000000E+6144 ->  8.666666666666000000000000000000000E+6144  Clamped

+dqqua1022 quantize -8.666666666666000E+6144  1.000000000000000E+6144 -> -8.666666666666000000000000000000000E+6144  Clamped

+dqqua1027 quantize 8.666666666666000E+323  1E+31    -> NaN Invalid_operation

+dqqua1030 quantize 8.66666666E+3           1E+3     -> 9E+3 Inexact Rounded

+

+-- Int and uInt32 edge values for testing conversions

+dqqua1040 quantize -2147483646     0 -> -2147483646

+dqqua1041 quantize -2147483647     0 -> -2147483647

+dqqua1042 quantize -2147483648     0 -> -2147483648

+dqqua1043 quantize -2147483649     0 -> -2147483649

+dqqua1044 quantize  2147483646     0 ->  2147483646

+dqqua1045 quantize  2147483647     0 ->  2147483647

+dqqua1046 quantize  2147483648     0 ->  2147483648

+dqqua1047 quantize  2147483649     0 ->  2147483649

+dqqua1048 quantize  4294967294     0 ->  4294967294

+dqqua1049 quantize  4294967295     0 ->  4294967295

+dqqua1050 quantize  4294967296     0 ->  4294967296

+dqqua1051 quantize  4294967297     0 ->  4294967297

+

+-- Rounding swathe

+rounding: half_even

+dqqua1100 quantize  1.2300    1.00    ->  1.23  Rounded

+dqqua1101 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+dqqua1102 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+dqqua1103 quantize  1.2350    1.00    ->  1.24  Inexact Rounded

+dqqua1104 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+dqqua1105 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+dqqua1106 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+dqqua1107 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+dqqua1108 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+dqqua1109 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+

+rounding: half_up

+dqqua1200 quantize  1.2300    1.00    ->  1.23  Rounded

+dqqua1201 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+dqqua1202 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+dqqua1203 quantize  1.2350    1.00    ->  1.24  Inexact Rounded

+dqqua1204 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+dqqua1205 quantize  1.2450    1.00    ->  1.25  Inexact Rounded

+dqqua1206 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+dqqua1207 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+dqqua1208 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+dqqua1209 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+

+rounding: half_down

+dqqua1300 quantize  1.2300    1.00    ->  1.23  Rounded

+dqqua1301 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+dqqua1302 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+dqqua1303 quantize  1.2350    1.00    ->  1.23  Inexact Rounded

+dqqua1304 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+dqqua1305 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+dqqua1306 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+dqqua1307 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+dqqua1308 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+dqqua1309 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+

+rounding: up

+dqqua1400 quantize  1.2300    1.00    ->  1.23  Rounded

+dqqua1401 quantize  1.2301    1.00    ->  1.24  Inexact Rounded

+dqqua1402 quantize  1.2310    1.00    ->  1.24  Inexact Rounded

+dqqua1403 quantize  1.2350    1.00    ->  1.24  Inexact Rounded

+dqqua1404 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+dqqua1405 quantize  1.2450    1.00    ->  1.25  Inexact Rounded

+dqqua1406 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+dqqua1407 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+dqqua1408 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+dqqua1409 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+dqqua1411 quantize -1.2399    1.00    -> -1.24  Inexact Rounded

+

+rounding: down

+dqqua1500 quantize  1.2300    1.00    ->  1.23  Rounded

+dqqua1501 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+dqqua1502 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+dqqua1503 quantize  1.2350    1.00    ->  1.23  Inexact Rounded

+dqqua1504 quantize  1.2351    1.00    ->  1.23  Inexact Rounded

+dqqua1505 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+dqqua1506 quantize  1.2451    1.00    ->  1.24  Inexact Rounded

+dqqua1507 quantize  1.2360    1.00    ->  1.23  Inexact Rounded

+dqqua1508 quantize  1.2370    1.00    ->  1.23  Inexact Rounded

+dqqua1509 quantize  1.2399    1.00    ->  1.23  Inexact Rounded

+dqqua1511 quantize -1.2399    1.00    -> -1.23  Inexact Rounded

+

+rounding: ceiling

+dqqua1600 quantize  1.2300    1.00    ->  1.23  Rounded

+dqqua1601 quantize  1.2301    1.00    ->  1.24  Inexact Rounded

+dqqua1602 quantize  1.2310    1.00    ->  1.24  Inexact Rounded

+dqqua1603 quantize  1.2350    1.00    ->  1.24  Inexact Rounded

+dqqua1604 quantize  1.2351    1.00    ->  1.24  Inexact Rounded

+dqqua1605 quantize  1.2450    1.00    ->  1.25  Inexact Rounded

+dqqua1606 quantize  1.2451    1.00    ->  1.25  Inexact Rounded

+dqqua1607 quantize  1.2360    1.00    ->  1.24  Inexact Rounded

+dqqua1608 quantize  1.2370    1.00    ->  1.24  Inexact Rounded

+dqqua1609 quantize  1.2399    1.00    ->  1.24  Inexact Rounded

+dqqua1611 quantize -1.2399    1.00    -> -1.23  Inexact Rounded

+

+rounding: floor

+dqqua1700 quantize  1.2300    1.00    ->  1.23  Rounded

+dqqua1701 quantize  1.2301    1.00    ->  1.23  Inexact Rounded

+dqqua1702 quantize  1.2310    1.00    ->  1.23  Inexact Rounded

+dqqua1703 quantize  1.2350    1.00    ->  1.23  Inexact Rounded

+dqqua1704 quantize  1.2351    1.00    ->  1.23  Inexact Rounded

+dqqua1705 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+dqqua1706 quantize  1.2451    1.00    ->  1.24  Inexact Rounded

+dqqua1707 quantize  1.2360    1.00    ->  1.23  Inexact Rounded

+dqqua1708 quantize  1.2370    1.00    ->  1.23  Inexact Rounded

+dqqua1709 quantize  1.2399    1.00    ->  1.23  Inexact Rounded

+dqqua1711 quantize -1.2399    1.00    -> -1.24  Inexact Rounded

+

+rounding: 05up

+dqqua1800 quantize  1.2000    1.00    ->  1.20  Rounded

+dqqua1801 quantize  1.2001    1.00    ->  1.21  Inexact Rounded

+dqqua1802 quantize  1.2010    1.00    ->  1.21  Inexact Rounded

+dqqua1803 quantize  1.2050    1.00    ->  1.21  Inexact Rounded

+dqqua1804 quantize  1.2051    1.00    ->  1.21  Inexact Rounded

+dqqua1807 quantize  1.2060    1.00    ->  1.21  Inexact Rounded

+dqqua1808 quantize  1.2070    1.00    ->  1.21  Inexact Rounded

+dqqua1809 quantize  1.2099    1.00    ->  1.21  Inexact Rounded

+dqqua1811 quantize -1.2099    1.00    -> -1.21  Inexact Rounded

+

+dqqua1900 quantize  1.2100    1.00    ->  1.21  Rounded

+dqqua1901 quantize  1.2101    1.00    ->  1.21  Inexact Rounded

+dqqua1902 quantize  1.2110    1.00    ->  1.21  Inexact Rounded

+dqqua1903 quantize  1.2150    1.00    ->  1.21  Inexact Rounded

+dqqua1904 quantize  1.2151    1.00    ->  1.21  Inexact Rounded

+dqqua1907 quantize  1.2160    1.00    ->  1.21  Inexact Rounded

+dqqua1908 quantize  1.2170    1.00    ->  1.21  Inexact Rounded

+dqqua1909 quantize  1.2199    1.00    ->  1.21  Inexact Rounded

+dqqua1911 quantize -1.2199    1.00    -> -1.21  Inexact Rounded

+

+dqqua2000 quantize  1.2400    1.00    ->  1.24  Rounded

+dqqua2001 quantize  1.2401    1.00    ->  1.24  Inexact Rounded

+dqqua2002 quantize  1.2410    1.00    ->  1.24  Inexact Rounded

+dqqua2003 quantize  1.2450    1.00    ->  1.24  Inexact Rounded

+dqqua2004 quantize  1.2451    1.00    ->  1.24  Inexact Rounded

+dqqua2007 quantize  1.2460    1.00    ->  1.24  Inexact Rounded

+dqqua2008 quantize  1.2470    1.00    ->  1.24  Inexact Rounded

+dqqua2009 quantize  1.2499    1.00    ->  1.24  Inexact Rounded

+dqqua2011 quantize -1.2499    1.00    -> -1.24  Inexact Rounded

+

+dqqua2100 quantize  1.2500    1.00    ->  1.25  Rounded

+dqqua2101 quantize  1.2501    1.00    ->  1.26  Inexact Rounded

+dqqua2102 quantize  1.2510    1.00    ->  1.26  Inexact Rounded

+dqqua2103 quantize  1.2550    1.00    ->  1.26  Inexact Rounded

+dqqua2104 quantize  1.2551    1.00    ->  1.26  Inexact Rounded

+dqqua2107 quantize  1.2560    1.00    ->  1.26  Inexact Rounded

+dqqua2108 quantize  1.2570    1.00    ->  1.26  Inexact Rounded

+dqqua2109 quantize  1.2599    1.00    ->  1.26  Inexact Rounded

+dqqua2111 quantize -1.2599    1.00    -> -1.26  Inexact Rounded

+

+dqqua2200 quantize  1.2600    1.00    ->  1.26  Rounded

+dqqua2201 quantize  1.2601    1.00    ->  1.26  Inexact Rounded

+dqqua2202 quantize  1.2610    1.00    ->  1.26  Inexact Rounded

+dqqua2203 quantize  1.2650    1.00    ->  1.26  Inexact Rounded

+dqqua2204 quantize  1.2651    1.00    ->  1.26  Inexact Rounded

+dqqua2207 quantize  1.2660    1.00    ->  1.26  Inexact Rounded

+dqqua2208 quantize  1.2670    1.00    ->  1.26  Inexact Rounded

+dqqua2209 quantize  1.2699    1.00    ->  1.26  Inexact Rounded

+dqqua2211 quantize -1.2699    1.00    -> -1.26  Inexact Rounded

+

+dqqua2300 quantize  1.2900    1.00    ->  1.29  Rounded

+dqqua2301 quantize  1.2901    1.00    ->  1.29  Inexact Rounded

+dqqua2302 quantize  1.2910    1.00    ->  1.29  Inexact Rounded

+dqqua2303 quantize  1.2950    1.00    ->  1.29  Inexact Rounded

+dqqua2304 quantize  1.2951    1.00    ->  1.29  Inexact Rounded

+dqqua2307 quantize  1.2960    1.00    ->  1.29  Inexact Rounded

+dqqua2308 quantize  1.2970    1.00    ->  1.29  Inexact Rounded

+dqqua2309 quantize  1.2999    1.00    ->  1.29  Inexact Rounded

+dqqua2311 quantize -1.2999    1.00    -> -1.29  Inexact Rounded

+

+-- Null tests

+dqqua998 quantize 10    # -> NaN Invalid_operation

+dqqua999 quantize  # 1e10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqReduce.decTest b/Lib/test/decimaltestdata/dqReduce.decTest
new file mode 100644
index 0000000..c069040
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqReduce.decTest
@@ -0,0 +1,183 @@
+------------------------------------------------------------------------

+-- dqReduce.decTest -- remove trailing zeros from a decQuad           --

+-- Copyright (c) IBM Corporation, 2003, 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.57

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+dqred001 reduce '1'      -> '1'

+dqred002 reduce '-1'     -> '-1'

+dqred003 reduce '1.00'   -> '1'

+dqred004 reduce '-1.00'  -> '-1'

+dqred005 reduce '0'      -> '0'

+dqred006 reduce '0.00'   -> '0'

+dqred007 reduce '00.0'   -> '0'

+dqred008 reduce '00.00'  -> '0'

+dqred009 reduce '00'     -> '0'

+dqred010 reduce '0E+1'   -> '0'

+dqred011 reduce '0E+5'   -> '0'

+

+dqred012 reduce '-2'     -> '-2'

+dqred013 reduce '2'      -> '2'

+dqred014 reduce '-2.00'  -> '-2'

+dqred015 reduce '2.00'   -> '2'

+dqred016 reduce '-0'     -> '-0'

+dqred017 reduce '-0.00'  -> '-0'

+dqred018 reduce '-00.0'  -> '-0'

+dqred019 reduce '-00.00' -> '-0'

+dqred020 reduce '-00'    -> '-0'

+dqred021 reduce '-0E+5'   -> '-0'

+dqred022 reduce '-0E+1'  -> '-0'

+

+dqred030 reduce '+0.1'            -> '0.1'

+dqred031 reduce '-0.1'            -> '-0.1'

+dqred032 reduce '+0.01'           -> '0.01'

+dqred033 reduce '-0.01'           -> '-0.01'

+dqred034 reduce '+0.001'          -> '0.001'

+dqred035 reduce '-0.001'          -> '-0.001'

+dqred036 reduce '+0.000001'       -> '0.000001'

+dqred037 reduce '-0.000001'       -> '-0.000001'

+dqred038 reduce '+0.000000000001' -> '1E-12'

+dqred039 reduce '-0.000000000001' -> '-1E-12'

+

+dqred041 reduce 1.1        -> 1.1

+dqred042 reduce 1.10       -> 1.1

+dqred043 reduce 1.100      -> 1.1

+dqred044 reduce 1.110      -> 1.11

+dqred045 reduce -1.1       -> -1.1

+dqred046 reduce -1.10      -> -1.1

+dqred047 reduce -1.100     -> -1.1

+dqred048 reduce -1.110     -> -1.11

+dqred049 reduce 9.9        -> 9.9

+dqred050 reduce 9.90       -> 9.9

+dqred051 reduce 9.900      -> 9.9

+dqred052 reduce 9.990      -> 9.99

+dqred053 reduce -9.9       -> -9.9

+dqred054 reduce -9.90      -> -9.9

+dqred055 reduce -9.900     -> -9.9

+dqred056 reduce -9.990     -> -9.99

+

+-- some trailing fractional zeros with zeros in units

+dqred060 reduce  10.0        -> 1E+1

+dqred061 reduce  10.00       -> 1E+1

+dqred062 reduce  100.0       -> 1E+2

+dqred063 reduce  100.00      -> 1E+2

+dqred064 reduce  1.1000E+3   -> 1.1E+3

+dqred065 reduce  1.10000E+3  -> 1.1E+3

+dqred066 reduce -10.0        -> -1E+1

+dqred067 reduce -10.00       -> -1E+1

+dqred068 reduce -100.0       -> -1E+2

+dqred069 reduce -100.00      -> -1E+2

+dqred070 reduce -1.1000E+3   -> -1.1E+3

+dqred071 reduce -1.10000E+3  -> -1.1E+3

+

+-- some insignificant trailing zeros with positive exponent

+dqred080 reduce  10E+1       -> 1E+2

+dqred081 reduce  100E+1      -> 1E+3

+dqred082 reduce  1.0E+2      -> 1E+2

+dqred083 reduce  1.0E+3      -> 1E+3

+dqred084 reduce  1.1E+3      -> 1.1E+3

+dqred085 reduce  1.00E+3     -> 1E+3

+dqred086 reduce  1.10E+3     -> 1.1E+3

+dqred087 reduce -10E+1       -> -1E+2

+dqred088 reduce -100E+1      -> -1E+3

+dqred089 reduce -1.0E+2      -> -1E+2

+dqred090 reduce -1.0E+3      -> -1E+3

+dqred091 reduce -1.1E+3      -> -1.1E+3

+dqred092 reduce -1.00E+3     -> -1E+3

+dqred093 reduce -1.10E+3     -> -1.1E+3

+

+-- some significant trailing zeros, were we to be trimming

+dqred100 reduce  11          -> 11

+dqred101 reduce  10          -> 1E+1

+dqred102 reduce  10.         -> 1E+1

+dqred103 reduce  1.1E+1      -> 11

+dqred104 reduce  1.0E+1      -> 1E+1

+dqred105 reduce  1.10E+2     -> 1.1E+2

+dqred106 reduce  1.00E+2     -> 1E+2

+dqred107 reduce  1.100E+3    -> 1.1E+3

+dqred108 reduce  1.000E+3    -> 1E+3

+dqred109 reduce  1.000000E+6 -> 1E+6

+dqred110 reduce -11          -> -11

+dqred111 reduce -10          -> -1E+1

+dqred112 reduce -10.         -> -1E+1

+dqred113 reduce -1.1E+1      -> -11

+dqred114 reduce -1.0E+1      -> -1E+1

+dqred115 reduce -1.10E+2     -> -1.1E+2

+dqred116 reduce -1.00E+2     -> -1E+2

+dqred117 reduce -1.100E+3    -> -1.1E+3

+dqred118 reduce -1.000E+3    -> -1E+3

+dqred119 reduce -1.00000E+5  -> -1E+5

+dqred120 reduce -1.000000E+6 -> -1E+6

+dqred121 reduce -10.00000E+6 -> -1E+7

+dqred122 reduce -100.0000E+6 -> -1E+8

+dqred123 reduce -1000.000E+6 -> -1E+9

+dqred124 reduce -10000.00E+6 -> -1E+10

+dqred125 reduce -100000.0E+6 -> -1E+11

+dqred126 reduce -1000000.E+6 -> -1E+12

+

+-- examples from decArith

+dqred140 reduce '2.1'     ->  '2.1'

+dqred141 reduce '-2.0'    ->  '-2'

+dqred142 reduce '1.200'   ->  '1.2'

+dqred143 reduce '-120'    ->  '-1.2E+2'

+dqred144 reduce '120.00'  ->  '1.2E+2'

+dqred145 reduce '0.00'    ->  '0'

+

+-- Nmax, Nmin, Ntiny

+-- note origami effect on some of these

+dqred151 reduce  9.999999999999999999999999999999999E+6144   -> 9.999999999999999999999999999999999E+6144

+dqred152 reduce  9.999999999999999999999999000000000E+6140   -> 9.99999999999999999999999900000E+6140

+dqred153 reduce  9.999999999999999999999999999990000E+6144   -> 9.999999999999999999999999999990000E+6144

+dqred154 reduce  1E-6143                   -> 1E-6143

+dqred155 reduce  1.000000000000000000000000000000000E-6143   -> 1E-6143

+dqred156 reduce  2.000E-6173               -> 2E-6173   Subnormal

+dqred157 reduce  1E-6176                   -> 1E-6176   Subnormal

+

+dqred161 reduce  -1E-6176                  -> -1E-6176  Subnormal

+dqred162 reduce  -2.000E-6173              -> -2E-6173  Subnormal

+dqred163 reduce  -1.000000000000000000000000000000000E-6143  -> -1E-6143

+dqred164 reduce  -1E-6143                  -> -1E-6143

+dqred165 reduce  -9.999999999999999999999999000000000E+6140  -> -9.99999999999999999999999900000E+6140

+dqred166 reduce  -9.999999999999999999999999999990000E+6144  -> -9.999999999999999999999999999990000E+6144

+dqred167 reduce  -9.999999999999999999999999999999990E+6144  -> -9.999999999999999999999999999999990E+6144

+dqred168 reduce  -9.999999999999999999999999999999999E+6144  -> -9.999999999999999999999999999999999E+6144

+dqred169 reduce  -9.999999999999999999999999999999990E+6144  -> -9.999999999999999999999999999999990E+6144

+

+

+-- specials (reduce does not affect payload)

+dqred820 reduce 'Inf'    -> 'Infinity'

+dqred821 reduce '-Inf'   -> '-Infinity'

+dqred822 reduce   NaN    ->  NaN

+dqred823 reduce  sNaN    ->  NaN    Invalid_operation

+dqred824 reduce   NaN101 ->  NaN101

+dqred825 reduce  sNaN010 ->  NaN10  Invalid_operation

+dqred827 reduce  -NaN    -> -NaN

+dqred828 reduce -sNaN    -> -NaN    Invalid_operation

+dqred829 reduce  -NaN101 -> -NaN101

+dqred830 reduce -sNaN010 -> -NaN10  Invalid_operation

+

+-- Null test

+dqred900 reduce  # -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqRemainder.decTest b/Lib/test/decimaltestdata/dqRemainder.decTest
new file mode 100644
index 0000000..14c358c
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqRemainder.decTest
@@ -0,0 +1,597 @@
+------------------------------------------------------------------------

+-- dqRemainder.decTest -- decQuad 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.57

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks (as base, above)

+dqrem001 remainder  1     1    ->  0

+dqrem002 remainder  2     1    ->  0

+dqrem003 remainder  1     2    ->  1

+dqrem004 remainder  2     2    ->  0

+dqrem005 remainder  0     1    ->  0

+dqrem006 remainder  0     2    ->  0

+dqrem007 remainder  1     3    ->  1

+dqrem008 remainder  2     3    ->  2

+dqrem009 remainder  3     3    ->  0

+

+dqrem010 remainder  2.4   1    ->  0.4

+dqrem011 remainder  2.4   -1   ->  0.4

+dqrem012 remainder  -2.4  1    ->  -0.4

+dqrem013 remainder  -2.4  -1   ->  -0.4

+dqrem014 remainder  2.40  1    ->  0.40

+dqrem015 remainder  2.400 1    ->  0.400

+dqrem016 remainder  2.4   2    ->  0.4

+dqrem017 remainder  2.400 2    ->  0.400

+dqrem018 remainder  2.    2    ->  0

+dqrem019 remainder  20    20   ->  0

+

+dqrem020 remainder  187   187    ->  0

+dqrem021 remainder  5     2      ->  1

+dqrem022 remainder  5     2.0    ->  1.0

+dqrem023 remainder  5     2.000  ->  1.000

+dqrem024 remainder  5     0.200  ->  0.000

+dqrem025 remainder  5     0.200  ->  0.000

+

+dqrem030 remainder  1     2      ->  1

+dqrem031 remainder  1     4      ->  1

+dqrem032 remainder  1     8      ->  1

+

+dqrem033 remainder  1     16     ->  1

+dqrem034 remainder  1     32     ->  1

+dqrem035 remainder  1     64     ->  1

+dqrem040 remainder  1    -2      ->  1

+dqrem041 remainder  1    -4      ->  1

+dqrem042 remainder  1    -8      ->  1

+dqrem043 remainder  1    -16     ->  1

+dqrem044 remainder  1    -32     ->  1

+dqrem045 remainder  1    -64     ->  1

+dqrem050 remainder -1     2      ->  -1

+dqrem051 remainder -1     4      ->  -1

+dqrem052 remainder -1     8      ->  -1

+dqrem053 remainder -1     16     ->  -1

+dqrem054 remainder -1     32     ->  -1

+dqrem055 remainder -1     64     ->  -1

+dqrem060 remainder -1    -2      ->  -1

+dqrem061 remainder -1    -4      ->  -1

+dqrem062 remainder -1    -8      ->  -1

+dqrem063 remainder -1    -16     ->  -1

+dqrem064 remainder -1    -32     ->  -1

+dqrem065 remainder -1    -64     ->  -1

+

+dqrem066 remainder  999999999     1  -> 0

+dqrem067 remainder  999999999.4   1  -> 0.4

+dqrem068 remainder  999999999.5   1  -> 0.5

+dqrem069 remainder  999999999.9   1  -> 0.9

+dqrem070 remainder  999999999.999 1  -> 0.999

+dqrem071 remainder  999999.999999 1  -> 0.999999

+dqrem072 remainder  9             1  -> 0

+

+dqrem080 remainder  0.            1  -> 0

+dqrem081 remainder  .0            1  -> 0.0

+dqrem082 remainder  0.00          1  -> 0.00

+dqrem083 remainder  0.00E+9       1  -> 0

+dqrem084 remainder  0.00E+3       1  -> 0

+dqrem085 remainder  0.00E+2       1  -> 0

+dqrem086 remainder  0.00E+1       1  -> 0.0

+dqrem087 remainder  0.00E+0       1  -> 0.00

+dqrem088 remainder  0.00E-0       1  -> 0.00

+dqrem089 remainder  0.00E-1       1  -> 0.000

+dqrem090 remainder  0.00E-2       1  -> 0.0000

+dqrem091 remainder  0.00E-3       1  -> 0.00000

+dqrem092 remainder  0.00E-4       1  -> 0.000000

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

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

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

+

+-- Various flavours of remainder by 0

+dqrem101 remainder  0       0   -> NaN Division_undefined

+dqrem102 remainder  0      -0   -> NaN Division_undefined

+dqrem103 remainder -0       0   -> NaN Division_undefined

+dqrem104 remainder -0      -0   -> NaN Division_undefined

+dqrem105 remainder  0.0E5   0   -> NaN Division_undefined

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

+dqrem107 remainder  0.0001  0   -> NaN Invalid_operation

+dqrem108 remainder  0.01    0   -> NaN Invalid_operation

+dqrem109 remainder  0.1     0   -> NaN Invalid_operation

+dqrem110 remainder  1       0   -> NaN Invalid_operation

+dqrem111 remainder  1       0.0 -> NaN Invalid_operation

+dqrem112 remainder 10       0.0 -> NaN Invalid_operation

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

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

+dqrem115 remainder  0.0001 -0   -> NaN Invalid_operation

+dqrem116 remainder  0.01   -0   -> NaN Invalid_operation

+dqrem119 remainder  0.1    -0   -> NaN Invalid_operation

+dqrem120 remainder  1      -0   -> NaN Invalid_operation

+dqrem121 remainder  1      -0.0 -> NaN Invalid_operation

+dqrem122 remainder 10      -0.0 -> NaN Invalid_operation

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

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

+-- and zeros on left

+dqrem130 remainder  0      1   ->  0

+dqrem131 remainder  0     -1   ->  0

+dqrem132 remainder  0.0    1   ->  0.0

+dqrem133 remainder  0.0   -1   ->  0.0

+dqrem134 remainder -0      1   -> -0

+dqrem135 remainder -0     -1   -> -0

+dqrem136 remainder -0.0    1   -> -0.0

+dqrem137 remainder -0.0   -1   -> -0.0

+

+-- 0.5ers

+dqrem143 remainder   0.5  2     ->  0.5

+dqrem144 remainder   0.5  2.1   ->  0.5

+dqrem145 remainder   0.5  2.01  ->  0.50

+dqrem146 remainder   0.5  2.001 ->  0.500

+dqrem147 remainder   0.50 2     ->  0.50

+dqrem148 remainder   0.50 2.01  ->  0.50

+dqrem149 remainder   0.50 2.001 ->  0.500

+

+-- steadies

+dqrem150 remainder  1  1   -> 0

+dqrem151 remainder  1  2   -> 1

+dqrem152 remainder  1  3   -> 1

+dqrem153 remainder  1  4   -> 1

+dqrem154 remainder  1  5   -> 1

+dqrem155 remainder  1  6   -> 1

+dqrem156 remainder  1  7   -> 1

+dqrem157 remainder  1  8   -> 1

+dqrem158 remainder  1  9   -> 1

+dqrem159 remainder  1  10  -> 1

+dqrem160 remainder  1  1   -> 0

+dqrem161 remainder  2  1   -> 0

+dqrem162 remainder  3  1   -> 0

+dqrem163 remainder  4  1   -> 0

+dqrem164 remainder  5  1   -> 0

+dqrem165 remainder  6  1   -> 0

+dqrem166 remainder  7  1   -> 0

+dqrem167 remainder  8  1   -> 0

+dqrem168 remainder  9  1   -> 0

+dqrem169 remainder  10 1   -> 0

+

+-- some differences from remainderNear

+dqrem171 remainder   0.4  1.020 ->  0.400

+dqrem172 remainder   0.50 1.020 ->  0.500

+dqrem173 remainder   0.51 1.020 ->  0.510

+dqrem174 remainder   0.52 1.020 ->  0.520

+dqrem175 remainder   0.6  1.020 ->  0.600

+

+-- More flavours of remainder by 0

+dqrem201 remainder  0      0   -> NaN Division_undefined

+dqrem202 remainder  0.0E5  0   -> NaN Division_undefined

+dqrem203 remainder  0.000  0   -> NaN Division_undefined

+dqrem204 remainder  0.0001 0   -> NaN Invalid_operation

+dqrem205 remainder  0.01   0   -> NaN Invalid_operation

+dqrem206 remainder  0.1    0   -> NaN Invalid_operation

+dqrem207 remainder  1      0   -> NaN Invalid_operation

+dqrem208 remainder  1      0.0 -> NaN Invalid_operation

+dqrem209 remainder 10      0.0 -> NaN Invalid_operation

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

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

+

+-- some differences from remainderNear

+dqrem231 remainder  -0.4  1.020 -> -0.400

+dqrem232 remainder  -0.50 1.020 -> -0.500

+dqrem233 remainder  -0.51 1.020 -> -0.510

+dqrem234 remainder  -0.52 1.020 -> -0.520

+dqrem235 remainder  -0.6  1.020 -> -0.600

+

+-- high Xs

+dqrem240 remainder  1E+2  1.00  ->  0.00

+

+-- dqrem3xx are from DiagBigDecimal

+dqrem301 remainder   1    3     ->  1

+dqrem302 remainder   5    5     ->  0

+dqrem303 remainder   13   10    ->  3

+dqrem304 remainder   13   50    ->  13

+dqrem305 remainder   13   100   ->  13

+dqrem306 remainder   13   1000  ->  13

+dqrem307 remainder   .13    1   ->  0.13

+dqrem308 remainder   0.133  1   ->  0.133

+dqrem309 remainder   0.1033 1   ->  0.1033

+dqrem310 remainder   1.033  1   ->  0.033

+dqrem311 remainder   10.33  1   ->  0.33

+dqrem312 remainder   10.33 10   ->  0.33

+dqrem313 remainder   103.3  1   ->  0.3

+dqrem314 remainder   133   10   ->  3

+dqrem315 remainder   1033  10   ->  3

+dqrem316 remainder   1033  50   ->  33

+dqrem317 remainder   101.0  3   ->  2.0

+dqrem318 remainder   102.0  3   ->  0.0

+dqrem319 remainder   103.0  3   ->  1.0

+dqrem320 remainder   2.40   1   ->  0.40

+dqrem321 remainder   2.400  1   ->  0.400

+dqrem322 remainder   2.4    1   ->  0.4

+dqrem323 remainder   2.4    2   ->  0.4

+dqrem324 remainder   2.400  2   ->  0.400

+dqrem325 remainder   1   0.3    ->  0.1

+dqrem326 remainder   1   0.30   ->  0.10

+dqrem327 remainder   1   0.300  ->  0.100

+dqrem328 remainder   1   0.3000 ->  0.1000

+dqrem329 remainder   1.0    0.3 ->  0.1

+dqrem330 remainder   1.00   0.3 ->  0.10

+dqrem331 remainder   1.000  0.3 ->  0.100

+dqrem332 remainder   1.0000 0.3 ->  0.1000

+dqrem333 remainder   0.5  2     ->  0.5

+dqrem334 remainder   0.5  2.1   ->  0.5

+dqrem335 remainder   0.5  2.01  ->  0.50

+dqrem336 remainder   0.5  2.001 ->  0.500

+dqrem337 remainder   0.50 2     ->  0.50

+dqrem338 remainder   0.50 2.01  ->  0.50

+dqrem339 remainder   0.50 2.001 ->  0.500

+

+dqrem340 remainder   0.5   0.5000001    ->  0.5000000

+dqrem341 remainder   0.5   0.50000001    ->  0.50000000

+dqrem342 remainder   0.5   0.500000001    ->  0.500000000

+dqrem343 remainder   0.5   0.5000000001    ->  0.5000000000

+dqrem344 remainder   0.5   0.50000000001    ->  0.50000000000

+dqrem345 remainder   0.5   0.4999999    ->  1E-7

+dqrem346 remainder   0.5   0.49999999    ->  1E-8

+dqrem347 remainder   0.5   0.499999999    ->  1E-9

+dqrem348 remainder   0.5   0.4999999999    ->  1E-10

+dqrem349 remainder   0.5   0.49999999999    ->  1E-11

+dqrem350 remainder   0.5   0.499999999999    ->  1E-12

+

+dqrem351 remainder   0.03  7  ->  0.03

+dqrem352 remainder   5   2    ->  1

+dqrem353 remainder   4.1   2    ->  0.1

+dqrem354 remainder   4.01   2    ->  0.01

+dqrem355 remainder   4.001   2    ->  0.001

+dqrem356 remainder   4.0001   2    ->  0.0001

+dqrem357 remainder   4.00001   2    ->  0.00001

+dqrem358 remainder   4.000001   2    ->  0.000001

+dqrem359 remainder   4.0000001   2    ->  1E-7

+

+dqrem360 remainder   1.2   0.7345 ->  0.4655

+dqrem361 remainder   0.8   12     ->  0.8

+dqrem362 remainder   0.8   0.2    ->  0.0

+dqrem363 remainder   0.8   0.3    ->  0.2

+dqrem364 remainder   0.800   12   ->  0.800

+dqrem365 remainder   0.800   1.7  ->  0.800

+dqrem366 remainder   2.400   2    ->  0.400

+

+dqrem371 remainder   2.400  2        ->  0.400

+

+dqrem381 remainder 12345  1         ->  0

+dqrem382 remainder 12345  1.0001    ->  0.7657

+dqrem383 remainder 12345  1.001     ->  0.668

+dqrem384 remainder 12345  1.01      ->  0.78

+dqrem385 remainder 12345  1.1       ->  0.8

+dqrem386 remainder 12355  4         ->  3

+dqrem387 remainder 12345  4         ->  1

+dqrem388 remainder 12355  4.0001    ->  2.6912

+dqrem389 remainder 12345  4.0001    ->  0.6914

+dqrem390 remainder 12345  4.9       ->  1.9

+dqrem391 remainder 12345  4.99      ->  4.73

+dqrem392 remainder 12345  4.999     ->  2.469

+dqrem393 remainder 12345  4.9999    ->  0.2469

+dqrem394 remainder 12345  5         ->  0

+dqrem395 remainder 12345  5.0001    ->  4.7532

+dqrem396 remainder 12345  5.001     ->  2.532

+dqrem397 remainder 12345  5.01      ->  0.36

+dqrem398 remainder 12345  5.1       ->  3.0

+

+-- the nasty division-by-1 cases

+dqrem401 remainder   0.5         1   ->  0.5

+dqrem402 remainder   0.55        1   ->  0.55

+dqrem403 remainder   0.555       1   ->  0.555

+dqrem404 remainder   0.5555      1   ->  0.5555

+dqrem405 remainder   0.55555     1   ->  0.55555

+dqrem406 remainder   0.555555    1   ->  0.555555

+dqrem407 remainder   0.5555555   1   ->  0.5555555

+dqrem408 remainder   0.55555555  1   ->  0.55555555

+dqrem409 remainder   0.555555555 1   ->  0.555555555

+

+-- folddowns

+dqrem421 remainder   1E+6144        1  ->   NaN Division_impossible

+dqrem422 remainder   1E+6144  1E+6143  ->   0E+6111 Clamped

+dqrem423 remainder   1E+6144  2E+6143  ->   0E+6111 Clamped

+dqrem424 remainder   1E+6144  3E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped

+dqrem425 remainder   1E+6144  4E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped

+dqrem426 remainder   1E+6144  5E+6143  ->   0E+6111 Clamped

+dqrem427 remainder   1E+6144  6E+6143  ->   4.00000000000000000000000000000000E+6143 Clamped

+dqrem428 remainder   1E+6144  7E+6143  ->   3.00000000000000000000000000000000E+6143 Clamped

+dqrem429 remainder   1E+6144  8E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped

+dqrem430 remainder   1E+6144  9E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped

+-- tinies

+dqrem431 remainder   1E-6175  1E-6176  ->   0E-6176

+dqrem432 remainder   1E-6175  2E-6176  ->   0E-6176

+dqrem433 remainder   1E-6175  3E-6176  ->   1E-6176 Subnormal

+dqrem434 remainder   1E-6175  4E-6176  ->   2E-6176 Subnormal

+dqrem435 remainder   1E-6175  5E-6176  ->   0E-6176

+dqrem436 remainder   1E-6175  6E-6176  ->   4E-6176 Subnormal

+dqrem437 remainder   1E-6175  7E-6176  ->   3E-6176 Subnormal

+dqrem438 remainder   1E-6175  8E-6176  ->   2E-6176 Subnormal

+dqrem439 remainder   1E-6175  9E-6176  ->   1E-6176 Subnormal

+dqrem440 remainder   1E-6175 10E-6176  ->   0E-6176

+dqrem441 remainder   1E-6175 11E-6176  -> 1.0E-6175 Subnormal

+dqrem442 remainder 100E-6175 11E-6176  -> 1.0E-6175 Subnormal

+dqrem443 remainder 100E-6175 20E-6176  ->   0E-6176

+dqrem444 remainder 100E-6175 21E-6176  -> 1.3E-6175 Subnormal

+dqrem445 remainder 100E-6175 30E-6176  -> 1.0E-6175 Subnormal

+

+-- zero signs

+dqrem650 remainder  1  1 ->  0

+dqrem651 remainder -1  1 -> -0

+dqrem652 remainder  1 -1 ->  0

+dqrem653 remainder -1 -1 -> -0

+dqrem654 remainder  0  1 ->  0

+dqrem655 remainder -0  1 -> -0

+dqrem656 remainder  0 -1 ->  0

+dqrem657 remainder -0 -1 -> -0

+dqrem658 remainder  0.00  1  ->  0.00

+dqrem659 remainder -0.00  1  -> -0.00

+

+-- Specials

+dqrem680 remainder  Inf  -Inf   ->  NaN Invalid_operation

+dqrem681 remainder  Inf  -1000  ->  NaN Invalid_operation

+dqrem682 remainder  Inf  -1     ->  NaN Invalid_operation

+dqrem683 remainder  Inf   0     ->  NaN Invalid_operation

+dqrem684 remainder  Inf  -0     ->  NaN Invalid_operation

+dqrem685 remainder  Inf   1     ->  NaN Invalid_operation

+dqrem686 remainder  Inf   1000  ->  NaN Invalid_operation

+dqrem687 remainder  Inf   Inf   ->  NaN Invalid_operation

+dqrem688 remainder -1000  Inf   -> -1000

+dqrem689 remainder -Inf   Inf   ->  NaN Invalid_operation

+dqrem691 remainder -1     Inf   -> -1

+dqrem692 remainder  0     Inf   ->  0

+dqrem693 remainder -0     Inf   -> -0

+dqrem694 remainder  1     Inf   ->  1

+dqrem695 remainder  1000  Inf   ->  1000

+dqrem696 remainder  Inf   Inf   ->  NaN Invalid_operation

+

+dqrem700 remainder -Inf  -Inf   ->  NaN Invalid_operation

+dqrem701 remainder -Inf  -1000  ->  NaN Invalid_operation

+dqrem702 remainder -Inf  -1     ->  NaN Invalid_operation

+dqrem703 remainder -Inf  -0     ->  NaN Invalid_operation

+dqrem704 remainder -Inf   0     ->  NaN Invalid_operation

+dqrem705 remainder -Inf   1     ->  NaN Invalid_operation

+dqrem706 remainder -Inf   1000  ->  NaN Invalid_operation

+dqrem707 remainder -Inf   Inf   ->  NaN Invalid_operation

+dqrem708 remainder -Inf  -Inf   ->  NaN Invalid_operation

+dqrem709 remainder -1000  Inf   -> -1000

+dqrem710 remainder -1    -Inf   -> -1

+dqrem711 remainder -0    -Inf   -> -0

+dqrem712 remainder  0    -Inf   ->  0

+dqrem713 remainder  1    -Inf   ->  1

+dqrem714 remainder  1000 -Inf   ->  1000

+dqrem715 remainder  Inf  -Inf   ->  NaN Invalid_operation

+

+dqrem721 remainder  NaN -Inf    ->  NaN

+dqrem722 remainder  NaN -1000   ->  NaN

+dqrem723 remainder  NaN -1      ->  NaN

+dqrem724 remainder  NaN -0      ->  NaN

+dqrem725 remainder -NaN  0      -> -NaN

+dqrem726 remainder  NaN  1      ->  NaN

+dqrem727 remainder  NaN  1000   ->  NaN

+dqrem728 remainder  NaN  Inf    ->  NaN

+dqrem729 remainder  NaN -NaN    ->  NaN

+dqrem730 remainder -Inf  NaN    ->  NaN

+dqrem731 remainder -1000 NaN    ->  NaN

+dqrem732 remainder -1    NaN    ->  NaN

+dqrem733 remainder -0   -NaN    -> -NaN

+dqrem734 remainder  0    NaN    ->  NaN

+dqrem735 remainder  1   -NaN    -> -NaN

+dqrem736 remainder  1000 NaN    ->  NaN

+dqrem737 remainder  Inf  NaN    ->  NaN

+

+dqrem741 remainder  sNaN -Inf   ->  NaN  Invalid_operation

+dqrem742 remainder  sNaN -1000  ->  NaN  Invalid_operation

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

+dqrem744 remainder  sNaN -0     ->  NaN  Invalid_operation

+dqrem745 remainder  sNaN  0     ->  NaN  Invalid_operation

+dqrem746 remainder  sNaN  1     ->  NaN  Invalid_operation

+dqrem747 remainder  sNaN  1000  ->  NaN  Invalid_operation

+dqrem749 remainder  sNaN  NaN   ->  NaN  Invalid_operation

+dqrem750 remainder  sNaN sNaN   ->  NaN  Invalid_operation

+dqrem751 remainder  NaN  sNaN   ->  NaN  Invalid_operation

+dqrem752 remainder -Inf  sNaN   ->  NaN  Invalid_operation

+dqrem753 remainder -1000 sNaN   ->  NaN  Invalid_operation

+dqrem754 remainder -1    sNaN   ->  NaN  Invalid_operation

+dqrem755 remainder -0    sNaN   ->  NaN  Invalid_operation

+dqrem756 remainder  0    sNaN   ->  NaN  Invalid_operation

+dqrem757 remainder  1    sNaN   ->  NaN  Invalid_operation

+dqrem758 remainder  1000 sNaN   ->  NaN  Invalid_operation

+dqrem759 remainder  Inf -sNaN   -> -NaN  Invalid_operation

+

+-- propaging NaNs

+dqrem760 remainder  NaN1   NaN7   ->  NaN1

+dqrem761 remainder sNaN2   NaN8   ->  NaN2 Invalid_operation

+dqrem762 remainder  NaN3  sNaN9   ->  NaN9 Invalid_operation

+dqrem763 remainder sNaN4  sNaN10  ->  NaN4 Invalid_operation

+dqrem764 remainder    15   NaN11  ->  NaN11

+dqrem765 remainder  NaN6   NaN12  ->  NaN6

+dqrem766 remainder  Inf    NaN13  ->  NaN13

+dqrem767 remainder  NaN14  -Inf   ->  NaN14

+dqrem768 remainder    0    NaN15  ->  NaN15

+dqrem769 remainder  NaN16   -0    ->  NaN16

+

+-- edge cases of impossible

+dqrem770  remainder  1234568888888887777777777890123456  10    ->  6

+dqrem771  remainder  1234568888888887777777777890123456   1    ->  0

+dqrem772  remainder  1234568888888887777777777890123456   0.1  ->  NaN Division_impossible

+dqrem773  remainder  1234568888888887777777777890123456   0.01 ->  NaN Division_impossible

+

+-- long operand checks

+dqrem801 remainder 12345678000 100 -> 0

+dqrem802 remainder 1 12345678000   -> 1

+dqrem803 remainder 1234567800  10  -> 0

+dqrem804 remainder 1 1234567800    -> 1

+dqrem805 remainder 1234567890  10  -> 0

+dqrem806 remainder 1 1234567890    -> 1

+dqrem807 remainder 1234567891  10  -> 1

+dqrem808 remainder 1 1234567891    -> 1

+dqrem809 remainder 12345678901 100 -> 1

+dqrem810 remainder 1 12345678901   -> 1

+dqrem811 remainder 1234567896  10  -> 6

+dqrem812 remainder 1 1234567896    -> 1

+

+dqrem821 remainder 12345678000 100 -> 0

+dqrem822 remainder 1 12345678000   -> 1

+dqrem823 remainder 1234567800  10  -> 0

+dqrem824 remainder 1 1234567800    -> 1

+dqrem825 remainder 1234567890  10  -> 0

+dqrem826 remainder 1 1234567890    -> 1

+dqrem827 remainder 1234567891  10  -> 1

+dqrem828 remainder 1 1234567891    -> 1

+dqrem829 remainder 12345678901 100 -> 1

+dqrem830 remainder 1 12345678901   -> 1

+dqrem831 remainder 1234567896  10  -> 6

+dqrem832 remainder 1 1234567896    -> 1

+

+-- from divideint

+dqrem840 remainder  100000000.0   1  ->  0.0

+dqrem841 remainder  100000000.4   1  ->  0.4

+dqrem842 remainder  100000000.5   1  ->  0.5

+dqrem843 remainder  100000000.9   1  ->  0.9

+dqrem844 remainder  100000000.999 1  ->  0.999

+dqrem850 remainder  100000003     5  ->  3

+dqrem851 remainder  10000003      5  ->  3

+dqrem852 remainder  1000003       5  ->  3

+dqrem853 remainder  100003        5  ->  3

+dqrem854 remainder  10003         5  ->  3

+dqrem855 remainder  1003          5  ->  3

+dqrem856 remainder  103           5  ->  3

+dqrem857 remainder  13            5  ->  3

+dqrem858 remainder  1             5  ->  1

+

+-- Vladimir's cases         1234567890123456

+dqrem860 remainder 123.0e1 1000000000000000  -> 1230

+dqrem861 remainder 1230    1000000000000000  -> 1230

+dqrem862 remainder 12.3e2  1000000000000000  -> 1230

+dqrem863 remainder 1.23e3  1000000000000000  -> 1230

+dqrem864 remainder 123e1   1000000000000000  -> 1230

+dqrem870 remainder 123e1    1000000000000000 -> 1230

+dqrem871 remainder 123e1     100000000000000 -> 1230

+dqrem872 remainder 123e1      10000000000000 -> 1230

+dqrem873 remainder 123e1       1000000000000 -> 1230

+dqrem874 remainder 123e1        100000000000 -> 1230

+dqrem875 remainder 123e1         10000000000 -> 1230

+dqrem876 remainder 123e1          1000000000 -> 1230

+dqrem877 remainder 123e1           100000000 -> 1230

+dqrem878 remainder 1230            100000000 -> 1230

+dqrem879 remainder 123e1            10000000 -> 1230

+dqrem880 remainder 123e1             1000000 -> 1230

+dqrem881 remainder 123e1              100000 -> 1230

+dqrem882 remainder 123e1               10000 -> 1230

+dqrem883 remainder 123e1                1000 ->  230

+dqrem884 remainder 123e1                 100 ->   30

+dqrem885 remainder 123e1                  10 ->    0

+dqrem886 remainder 123e1                   1 ->    0

+

+dqrem890 remainder 123e1    2000000000000000 -> 1230

+dqrem891 remainder 123e1     200000000000000 -> 1230

+dqrem892 remainder 123e1      20000000000000 -> 1230

+dqrem893 remainder 123e1       2000000000000 -> 1230

+dqrem894 remainder 123e1        200000000000 -> 1230

+dqrem895 remainder 123e1         20000000000 -> 1230

+dqrem896 remainder 123e1          2000000000 -> 1230

+dqrem897 remainder 123e1           200000000 -> 1230

+dqrem899 remainder 123e1            20000000 -> 1230

+dqrem900 remainder 123e1             2000000 -> 1230

+dqrem901 remainder 123e1              200000 -> 1230

+dqrem902 remainder 123e1               20000 -> 1230

+dqrem903 remainder 123e1                2000 -> 1230

+dqrem904 remainder 123e1                 200 ->   30

+dqrem905 remainder 123e1                  20 ->   10

+dqrem906 remainder 123e1                   2 ->    0

+

+dqrem910 remainder 123e1    5000000000000000 -> 1230

+dqrem911 remainder 123e1     500000000000000 -> 1230

+dqrem912 remainder 123e1      50000000000000 -> 1230

+dqrem913 remainder 123e1       5000000000000 -> 1230

+dqrem914 remainder 123e1        500000000000 -> 1230

+dqrem915 remainder 123e1         50000000000 -> 1230

+dqrem916 remainder 123e1          5000000000 -> 1230

+dqrem917 remainder 123e1           500000000 -> 1230

+dqrem919 remainder 123e1            50000000 -> 1230

+dqrem920 remainder 123e1             5000000 -> 1230

+dqrem921 remainder 123e1              500000 -> 1230

+dqrem922 remainder 123e1               50000 -> 1230

+dqrem923 remainder 123e1                5000 -> 1230

+dqrem924 remainder 123e1                 500 ->  230

+dqrem925 remainder 123e1                  50 ->   30

+dqrem926 remainder 123e1                   5 ->    0

+

+dqrem930 remainder 123e1    9000000000000000 -> 1230

+dqrem931 remainder 123e1     900000000000000 -> 1230

+dqrem932 remainder 123e1      90000000000000 -> 1230

+dqrem933 remainder 123e1       9000000000000 -> 1230

+dqrem934 remainder 123e1        900000000000 -> 1230

+dqrem935 remainder 123e1         90000000000 -> 1230

+dqrem936 remainder 123e1          9000000000 -> 1230

+dqrem937 remainder 123e1           900000000 -> 1230

+dqrem939 remainder 123e1            90000000 -> 1230

+dqrem940 remainder 123e1             9000000 -> 1230

+dqrem941 remainder 123e1              900000 -> 1230

+dqrem942 remainder 123e1               90000 -> 1230

+dqrem943 remainder 123e1                9000 -> 1230

+dqrem944 remainder 123e1                 900 ->  330

+dqrem945 remainder 123e1                  90 ->   60

+dqrem946 remainder 123e1                   9 ->    6

+

+dqrem950 remainder 123e1   1000000000000000 -> 1230

+dqrem961 remainder 123e1   2999999999999999 -> 1230

+dqrem962 remainder 123e1   3999999999999999 -> 1230

+dqrem963 remainder 123e1   4999999999999999 -> 1230

+dqrem964 remainder 123e1   5999999999999999 -> 1230

+dqrem965 remainder 123e1   6999999999999999 -> 1230

+dqrem966 remainder 123e1   7999999999999999 -> 1230

+dqrem967 remainder 123e1   8999999999999999 -> 1230

+dqrem968 remainder 123e1   9999999999999999 -> 1230

+dqrem969 remainder 123e1   9876543210987654 -> 1230

+

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

+

+-- overflow and underflow tests [from divide]

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

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

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

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

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

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

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

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

+

+-- Gyuris example

+dqrem1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143

+

+-- destructive subtract

+dqrem1120  remainder  1234567890123456789012345678901234  1.000000000000000000000000000000001  ->  0.765432109876543210987654321098768

+dqrem1121  remainder  1234567890123456789012345678901234   1.00000000000000000000000000000001  ->   0.65432109876543210987654321098779

+dqrem1122  remainder  1234567890123456789012345678901234    1.0000000000000000000000000000001  ->    0.5432109876543210987654321098890

+dqrem1123  remainder  1234567890123456789012345678901255  4.000000000000000000000000000000001  ->  2.691358027469135802746913580274687

+dqrem1124  remainder  1234567890123456789012345678901234  4.000000000000000000000000000000001  ->  1.691358027469135802746913580274692

+dqrem1125  remainder  1234567890123456789012345678901234    4.9999999999999999999999999999999  ->    3.6913578024691357802469135780251

+dqrem1126  remainder  1234567890123456789012345678901234   4.99999999999999999999999999999999  ->   1.46913578024691357802469135780247

+dqrem1127  remainder  1234567890123456789012345678901234  4.999999999999999999999999999999999  ->  4.246913578024691357802469135780246

+dqrem1128  remainder  1234567890123456789012345678901234    5.0000000000000000000000000000001  ->    4.3086421975308642197530864219759

+

+-- Null tests

+dqrem1000 remainder 10  # -> NaN Invalid_operation

+dqrem1001 remainder  # 10 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqRemainderNear.decTest b/Lib/test/decimaltestdata/dqRemainderNear.decTest
new file mode 100644
index 0000000..9074ec4
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqRemainderNear.decTest
@@ -0,0 +1,631 @@
+------------------------------------------------------------------------

+-- dqRemainderNear.decTest -- decQuad remainder-near                  --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- sanity checks (as base, above)

+dqrmn001 remaindernear  1     1    ->  0

+dqrmn002 remaindernear  2     1    ->  0

+dqrmn003 remaindernear  1     2    ->  1

+dqrmn004 remaindernear  2     2    ->  0

+dqrmn005 remaindernear  0     1    ->  0

+dqrmn006 remaindernear  0     2    ->  0

+dqrmn007 remaindernear  1     3    ->  1

+dqrmn008 remaindernear  2     3    -> -1

+dqrmn009 remaindernear  3     3    ->  0

+

+dqrmn010 remaindernear  2.4   1    ->  0.4

+dqrmn011 remaindernear  2.4   -1   ->  0.4

+dqrmn012 remaindernear  -2.4  1    ->  -0.4

+dqrmn013 remaindernear  -2.4  -1   ->  -0.4

+dqrmn014 remaindernear  2.40  1    ->  0.40

+dqrmn015 remaindernear  2.400 1    ->  0.400

+dqrmn016 remaindernear  2.4   2    ->  0.4

+dqrmn017 remaindernear  2.400 2    ->  0.400

+dqrmn018 remaindernear  2.    2    ->  0

+dqrmn019 remaindernear  20    20   ->  0

+

+dqrmn020 remaindernear  187   187    ->  0

+dqrmn021 remaindernear  5     2      ->  1

+dqrmn022 remaindernear  5     2.0    ->  1.0

+dqrmn023 remaindernear  5     2.000  ->  1.000

+dqrmn024 remaindernear  5     0.200  ->  0.000

+dqrmn025 remaindernear  5     0.200  ->  0.000

+

+dqrmn030 remaindernear  1     2      ->  1

+dqrmn031 remaindernear  1     4      ->  1

+dqrmn032 remaindernear  1     8      ->  1

+

+dqrmn033 remaindernear  1     16     ->  1

+dqrmn034 remaindernear  1     32     ->  1

+dqrmn035 remaindernear  1     64     ->  1

+dqrmn040 remaindernear  1    -2      ->  1

+dqrmn041 remaindernear  1    -4      ->  1

+dqrmn042 remaindernear  1    -8      ->  1

+dqrmn043 remaindernear  1    -16     ->  1

+dqrmn044 remaindernear  1    -32     ->  1

+dqrmn045 remaindernear  1    -64     ->  1

+dqrmn050 remaindernear -1     2      ->  -1

+dqrmn051 remaindernear -1     4      ->  -1

+dqrmn052 remaindernear -1     8      ->  -1

+dqrmn053 remaindernear -1     16     ->  -1

+dqrmn054 remaindernear -1     32     ->  -1

+dqrmn055 remaindernear -1     64     ->  -1

+dqrmn060 remaindernear -1    -2      ->  -1

+dqrmn061 remaindernear -1    -4      ->  -1

+dqrmn062 remaindernear -1    -8      ->  -1

+dqrmn063 remaindernear -1    -16     ->  -1

+dqrmn064 remaindernear -1    -32     ->  -1

+dqrmn065 remaindernear -1    -64     ->  -1

+

+dqrmn066 remaindernear          9.9   1  -> -0.1

+dqrmn067 remaindernear         99.7   1  -> -0.3

+dqrmn068 remaindernear  999999999     1  -> 0

+dqrmn069 remaindernear  999999999.4   1  -> 0.4

+dqrmn070 remaindernear  999999999.5   1  -> -0.5

+dqrmn071 remaindernear  999999999.9   1  -> -0.1

+dqrmn072 remaindernear  999999999.999 1  -> -0.001

+dqrmn073 remaindernear  999999.999999 1  -> -0.000001

+dqrmn074 remaindernear  9             1  -> 0

+dqrmn075 remaindernear  9999999999999999 1  -> 0

+dqrmn076 remaindernear  9999999999999999 2  -> -1

+dqrmn077 remaindernear  9999999999999999 3  -> 0

+dqrmn078 remaindernear  9999999999999999 4  -> -1

+

+dqrmn080 remaindernear  0.            1  -> 0

+dqrmn081 remaindernear  .0            1  -> 0.0

+dqrmn082 remaindernear  0.00          1  -> 0.00

+dqrmn083 remaindernear  0.00E+9       1  -> 0

+dqrmn084 remaindernear  0.00E+3       1  -> 0

+dqrmn085 remaindernear  0.00E+2       1  -> 0

+dqrmn086 remaindernear  0.00E+1       1  -> 0.0

+dqrmn087 remaindernear  0.00E+0       1  -> 0.00

+dqrmn088 remaindernear  0.00E-0       1  -> 0.00

+dqrmn089 remaindernear  0.00E-1       1  -> 0.000

+dqrmn090 remaindernear  0.00E-2       1  -> 0.0000

+dqrmn091 remaindernear  0.00E-3       1  -> 0.00000

+dqrmn092 remaindernear  0.00E-4       1  -> 0.000000

+dqrmn093 remaindernear  0.00E-5       1  -> 0E-7

+dqrmn094 remaindernear  0.00E-6       1  -> 0E-8

+dqrmn095 remaindernear  0.0000E-50    1  -> 0E-54

+

+-- Various flavours of remaindernear by 0

+dqrmn101 remaindernear  0       0   -> NaN Division_undefined

+dqrmn102 remaindernear  0      -0   -> NaN Division_undefined

+dqrmn103 remaindernear -0       0   -> NaN Division_undefined

+dqrmn104 remaindernear -0      -0   -> NaN Division_undefined

+dqrmn105 remaindernear  0.0E5   0   -> NaN Division_undefined

+dqrmn106 remaindernear  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]

+dqrmn107 remaindernear  0.0001  0   -> NaN Invalid_operation

+dqrmn108 remaindernear  0.01    0   -> NaN Invalid_operation

+dqrmn109 remaindernear  0.1     0   -> NaN Invalid_operation

+dqrmn110 remaindernear  1       0   -> NaN Invalid_operation

+dqrmn111 remaindernear  1       0.0 -> NaN Invalid_operation

+dqrmn112 remaindernear 10       0.0 -> NaN Invalid_operation

+dqrmn113 remaindernear 1E+100   0.0 -> NaN Invalid_operation

+dqrmn114 remaindernear 1E+380   0   -> NaN Invalid_operation

+dqrmn115 remaindernear  0.0001 -0   -> NaN Invalid_operation

+dqrmn116 remaindernear  0.01   -0   -> NaN Invalid_operation

+dqrmn119 remaindernear  0.1    -0   -> NaN Invalid_operation

+dqrmn120 remaindernear  1      -0   -> NaN Invalid_operation

+dqrmn121 remaindernear  1      -0.0 -> NaN Invalid_operation

+dqrmn122 remaindernear 10      -0.0 -> NaN Invalid_operation

+dqrmn123 remaindernear 1E+100  -0.0 -> NaN Invalid_operation

+dqrmn124 remaindernear 1E+384  -0   -> NaN Invalid_operation

+-- and zeros on left

+dqrmn130 remaindernear  0      1   ->  0

+dqrmn131 remaindernear  0     -1   ->  0

+dqrmn132 remaindernear  0.0    1   ->  0.0

+dqrmn133 remaindernear  0.0   -1   ->  0.0

+dqrmn134 remaindernear -0      1   -> -0

+dqrmn135 remaindernear -0     -1   -> -0

+dqrmn136 remaindernear -0.0    1   -> -0.0

+dqrmn137 remaindernear -0.0   -1   -> -0.0

+

+-- 0.5ers

+dqrmn143 remaindernear   0.5  2     ->  0.5

+dqrmn144 remaindernear   0.5  2.1   ->  0.5

+dqrmn145 remaindernear   0.5  2.01  ->  0.50

+dqrmn146 remaindernear   0.5  2.001 ->  0.500

+dqrmn147 remaindernear   0.50 2     ->  0.50

+dqrmn148 remaindernear   0.50 2.01  ->  0.50

+dqrmn149 remaindernear   0.50 2.001 ->  0.500

+

+-- steadies

+dqrmn150 remaindernear  1  1   -> 0

+dqrmn151 remaindernear  1  2   -> 1

+dqrmn152 remaindernear  1  3   -> 1

+dqrmn153 remaindernear  1  4   -> 1

+dqrmn154 remaindernear  1  5   -> 1

+dqrmn155 remaindernear  1  6   -> 1

+dqrmn156 remaindernear  1  7   -> 1

+dqrmn157 remaindernear  1  8   -> 1

+dqrmn158 remaindernear  1  9   -> 1

+dqrmn159 remaindernear  1  10  -> 1

+dqrmn160 remaindernear  1  1   -> 0

+dqrmn161 remaindernear  2  1   -> 0

+dqrmn162 remaindernear  3  1   -> 0

+dqrmn163 remaindernear  4  1   -> 0

+dqrmn164 remaindernear  5  1   -> 0

+dqrmn165 remaindernear  6  1   -> 0

+dqrmn166 remaindernear  7  1   -> 0

+dqrmn167 remaindernear  8  1   -> 0

+dqrmn168 remaindernear  9  1   -> 0

+dqrmn169 remaindernear  10 1   -> 0

+

+-- some differences from remainder

+dqrmn171 remaindernear   0.4  1.020 ->  0.400

+dqrmn172 remaindernear   0.50 1.020 ->  0.500

+dqrmn173 remaindernear   0.51 1.020 ->  0.510

+dqrmn174 remaindernear   0.52 1.020 -> -0.500

+dqrmn175 remaindernear   0.6  1.020 -> -0.420

+

+-- More flavours of remaindernear by 0

+dqrmn201 remaindernear  0      0   -> NaN Division_undefined

+dqrmn202 remaindernear  0.0E5  0   -> NaN Division_undefined

+dqrmn203 remaindernear  0.000  0   -> NaN Division_undefined

+dqrmn204 remaindernear  0.0001 0   -> NaN Invalid_operation

+dqrmn205 remaindernear  0.01   0   -> NaN Invalid_operation

+dqrmn206 remaindernear  0.1    0   -> NaN Invalid_operation

+dqrmn207 remaindernear  1      0   -> NaN Invalid_operation

+dqrmn208 remaindernear  1      0.0 -> NaN Invalid_operation

+dqrmn209 remaindernear 10      0.0 -> NaN Invalid_operation

+dqrmn210 remaindernear 1E+100  0.0 -> NaN Invalid_operation

+dqrmn211 remaindernear 1E+380  0   -> NaN Invalid_operation

+

+-- tests from the extended specification

+dqrmn221 remaindernear 2.1     3   -> -0.9

+dqrmn222 remaindernear  10     6   -> -2

+dqrmn223 remaindernear  10     3   ->  1

+dqrmn224 remaindernear -10     3   -> -1

+dqrmn225 remaindernear  10.2   1   -> 0.2

+dqrmn226 remaindernear  10     0.3 -> 0.1

+dqrmn227 remaindernear   3.6   1.3 -> -0.3

+

+-- some differences from remainder

+dqrmn231 remaindernear  -0.4  1.020 -> -0.400

+dqrmn232 remaindernear  -0.50 1.020 -> -0.500

+dqrmn233 remaindernear  -0.51 1.020 -> -0.510

+dqrmn234 remaindernear  -0.52 1.020 ->  0.500

+dqrmn235 remaindernear  -0.6  1.020 ->  0.420

+

+-- high Xs

+dqrmn240 remaindernear  1E+2  1.00  ->  0.00

+

+-- dqrmn3xx are from DiagBigDecimal

+dqrmn301 remaindernear   1    3     ->  1

+dqrmn302 remaindernear   5    5     ->  0

+dqrmn303 remaindernear   13   10    ->  3

+dqrmn304 remaindernear   13   50    ->  13

+dqrmn305 remaindernear   13   100   ->  13

+dqrmn306 remaindernear   13   1000  ->  13

+dqrmn307 remaindernear   .13    1   ->  0.13

+dqrmn308 remaindernear   0.133  1   ->  0.133

+dqrmn309 remaindernear   0.1033 1   ->  0.1033

+dqrmn310 remaindernear   1.033  1   ->  0.033

+dqrmn311 remaindernear   10.33  1   ->  0.33

+dqrmn312 remaindernear   10.33 10   ->  0.33

+dqrmn313 remaindernear   103.3  1   ->  0.3

+dqrmn314 remaindernear   133   10   ->  3

+dqrmn315 remaindernear   1033  10   ->  3

+dqrmn316 remaindernear   1033  50   -> -17

+dqrmn317 remaindernear   101.0  3   -> -1.0

+dqrmn318 remaindernear   102.0  3   ->  0.0

+dqrmn319 remaindernear   103.0  3   ->  1.0

+dqrmn320 remaindernear   2.40   1   ->  0.40

+dqrmn321 remaindernear   2.400  1   ->  0.400

+dqrmn322 remaindernear   2.4    1   ->  0.4

+dqrmn323 remaindernear   2.4    2   ->  0.4

+dqrmn324 remaindernear   2.400  2   ->  0.400

+dqrmn325 remaindernear   1   0.3    ->  0.1

+dqrmn326 remaindernear   1   0.30   ->  0.10

+dqrmn327 remaindernear   1   0.300  ->  0.100

+dqrmn328 remaindernear   1   0.3000 ->  0.1000

+dqrmn329 remaindernear   1.0    0.3 ->  0.1

+dqrmn330 remaindernear   1.00   0.3 ->  0.10

+dqrmn331 remaindernear   1.000  0.3 ->  0.100

+dqrmn332 remaindernear   1.0000 0.3 ->  0.1000

+dqrmn333 remaindernear   0.5  2     ->  0.5

+dqrmn334 remaindernear   0.5  2.1   ->  0.5

+dqrmn335 remaindernear   0.5  2.01  ->  0.50

+dqrmn336 remaindernear   0.5  2.001 ->  0.500

+dqrmn337 remaindernear   0.50 2     ->  0.50

+dqrmn338 remaindernear   0.50 2.01  ->  0.50

+dqrmn339 remaindernear   0.50 2.001 ->  0.500

+

+dqrmn340 remaindernear   0.5   0.5000001    ->  -1E-7

+dqrmn341 remaindernear   0.5   0.50000001    ->  -1E-8

+dqrmn342 remaindernear   0.5   0.500000001    ->  -1E-9

+dqrmn343 remaindernear   0.5   0.5000000001    ->  -1E-10

+dqrmn344 remaindernear   0.5   0.50000000001    ->  -1E-11

+dqrmn345 remaindernear   0.5   0.4999999    ->  1E-7

+dqrmn346 remaindernear   0.5   0.49999999    ->  1E-8

+dqrmn347 remaindernear   0.5   0.499999999    ->  1E-9

+dqrmn348 remaindernear   0.5   0.4999999999    ->  1E-10

+dqrmn349 remaindernear   0.5   0.49999999999    ->  1E-11

+dqrmn350 remaindernear   0.5   0.499999999999    ->  1E-12

+

+dqrmn351 remaindernear   0.03  7  ->  0.03

+dqrmn352 remaindernear   5   2    ->  1

+dqrmn353 remaindernear   4.1   2    ->  0.1

+dqrmn354 remaindernear   4.01   2    ->  0.01

+dqrmn355 remaindernear   4.001   2    ->  0.001

+dqrmn356 remaindernear   4.0001   2    ->  0.0001

+dqrmn357 remaindernear   4.00001   2    ->  0.00001

+dqrmn358 remaindernear   4.000001   2    ->  0.000001

+dqrmn359 remaindernear   4.0000001   2    ->  1E-7

+

+dqrmn360 remaindernear   1.2   0.7345 -> -0.2690

+dqrmn361 remaindernear   0.8   12     ->  0.8

+dqrmn362 remaindernear   0.8   0.2    ->  0.0

+dqrmn363 remaindernear   0.8   0.3    -> -0.1

+dqrmn364 remaindernear   0.800   12   ->  0.800

+dqrmn365 remaindernear   0.800   1.7  ->  0.800

+dqrmn366 remaindernear   2.400   2    ->  0.400

+

+-- round to even

+dqrmn371 remaindernear   121     2    ->  1

+dqrmn372 remaindernear   122     2    ->  0

+dqrmn373 remaindernear   123     2    -> -1

+dqrmn374 remaindernear   124     2    ->  0

+dqrmn375 remaindernear   125     2    ->  1

+dqrmn376 remaindernear   126     2    ->  0

+dqrmn377 remaindernear   127     2    -> -1

+

+dqrmn381 remaindernear 12345  1         ->  0

+dqrmn382 remaindernear 12345  1.0001    -> -0.2344

+dqrmn383 remaindernear 12345  1.001     -> -0.333

+dqrmn384 remaindernear 12345  1.01      -> -0.23

+dqrmn385 remaindernear 12345  1.1       -> -0.3

+dqrmn386 remaindernear 12355  4         -> -1

+dqrmn387 remaindernear 12345  4         ->  1

+dqrmn388 remaindernear 12355  4.0001    -> -1.3089

+dqrmn389 remaindernear 12345  4.0001    ->  0.6914

+dqrmn390 remaindernear 12345  4.9       ->  1.9

+dqrmn391 remaindernear 12345  4.99      -> -0.26

+dqrmn392 remaindernear 12345  4.999     ->  2.469

+dqrmn393 remaindernear 12345  4.9999    ->  0.2469

+dqrmn394 remaindernear 12345  5         ->  0

+dqrmn395 remaindernear 12345  5.0001    -> -0.2469

+dqrmn396 remaindernear 12345  5.001     -> -2.469

+dqrmn397 remaindernear 12345  5.01      ->  0.36

+dqrmn398 remaindernear 12345  5.1       -> -2.1

+

+-- the nasty division-by-1 cases

+dqrmn401 remaindernear   0.4         1   ->  0.4

+dqrmn402 remaindernear   0.45        1   ->  0.45

+dqrmn403 remaindernear   0.455       1   ->  0.455

+dqrmn404 remaindernear   0.4555      1   ->  0.4555

+dqrmn405 remaindernear   0.45555     1   ->  0.45555

+dqrmn406 remaindernear   0.455555    1   ->  0.455555

+dqrmn407 remaindernear   0.4555555   1   ->  0.4555555

+dqrmn408 remaindernear   0.45555555  1   ->  0.45555555

+dqrmn409 remaindernear   0.455555555 1   ->  0.455555555

+-- with spill... [412 exercises sticktab loop]

+dqrmn411 remaindernear   0.5         1   ->  0.5

+dqrmn412 remaindernear   0.55        1   -> -0.45

+dqrmn413 remaindernear   0.555       1   -> -0.445

+dqrmn414 remaindernear   0.5555      1   -> -0.4445

+dqrmn415 remaindernear   0.55555     1   -> -0.44445

+dqrmn416 remaindernear   0.555555    1   -> -0.444445

+dqrmn417 remaindernear   0.5555555   1   -> -0.4444445

+dqrmn418 remaindernear   0.55555555  1   -> -0.44444445

+dqrmn419 remaindernear   0.555555555 1   -> -0.444444445

+

+-- folddowns

+dqrmn421 remaindernear   1E+6144        1  ->   NaN Division_impossible

+dqrmn422 remaindernear   1E+6144  1E+6143  ->   0E+6111 Clamped

+dqrmn423 remaindernear   1E+6144  2E+6143  ->   0E+6111 Clamped

+dqrmn424 remaindernear   1E+6144  3E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped

+dqrmn425 remaindernear   1E+6144  4E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped

+dqrmn426 remaindernear   1E+6144  5E+6143  ->   0E+6111 Clamped

+dqrmn427 remaindernear   1E+6144  6E+6143  ->  -2.00000000000000000000000000000000E+6143 Clamped

+dqrmn428 remaindernear   1E+6144  7E+6143  ->   3.00000000000000000000000000000000E+6143 Clamped

+dqrmn429 remaindernear   1E+6144  8E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped

+dqrmn430 remaindernear   1E+6144  9E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped

+-- tinies

+dqrmn431 remaindernear   1E-6175  1E-6176  ->   0E-6176

+dqrmn432 remaindernear   1E-6175  2E-6176  ->   0E-6176

+dqrmn433 remaindernear   1E-6175  3E-6176  ->   1E-6176 Subnormal

+dqrmn434 remaindernear   1E-6175  4E-6176  ->   2E-6176 Subnormal

+dqrmn435 remaindernear   1E-6175  5E-6176  ->   0E-6176

+dqrmn436 remaindernear   1E-6175  6E-6176  ->  -2E-6176 Subnormal

+dqrmn437 remaindernear   1E-6175  7E-6176  ->   3E-6176 Subnormal

+dqrmn438 remaindernear   1E-6175  8E-6176  ->   2E-6176 Subnormal

+dqrmn439 remaindernear   1E-6175  9E-6176  ->   1E-6176 Subnormal

+dqrmn440 remaindernear   1E-6175 10E-6176  ->   0E-6176

+dqrmn441 remaindernear   1E-6175 11E-6176  ->  -1E-6176 Subnormal

+dqrmn442 remaindernear 100E-6175 11E-6176  ->  -1E-6176 Subnormal

+dqrmn443 remaindernear 100E-6175 20E-6176  ->   0E-6176

+dqrmn444 remaindernear 100E-6175 21E-6176  ->  -8E-6176 Subnormal

+dqrmn445 remaindernear 100E-6175 30E-6176  -> 1.0E-6175 Subnormal

+

+-- zero signs

+dqrmn650 remaindernear  1  1 ->  0

+dqrmn651 remaindernear -1  1 -> -0

+dqrmn652 remaindernear  1 -1 ->  0

+dqrmn653 remaindernear -1 -1 -> -0

+dqrmn654 remaindernear  0  1 ->  0

+dqrmn655 remaindernear -0  1 -> -0

+dqrmn656 remaindernear  0 -1 ->  0

+dqrmn657 remaindernear -0 -1 -> -0

+dqrmn658 remaindernear  0.00  1  ->  0.00

+dqrmn659 remaindernear -0.00  1  -> -0.00

+

+-- Specials

+dqrmn680 remaindernear  Inf  -Inf   ->  NaN Invalid_operation

+dqrmn681 remaindernear  Inf  -1000  ->  NaN Invalid_operation

+dqrmn682 remaindernear  Inf  -1     ->  NaN Invalid_operation

+dqrmn683 remaindernear  Inf   0     ->  NaN Invalid_operation

+dqrmn684 remaindernear  Inf  -0     ->  NaN Invalid_operation

+dqrmn685 remaindernear  Inf   1     ->  NaN Invalid_operation

+dqrmn686 remaindernear  Inf   1000  ->  NaN Invalid_operation

+dqrmn687 remaindernear  Inf   Inf   ->  NaN Invalid_operation

+dqrmn688 remaindernear -1000  Inf   -> -1000

+dqrmn689 remaindernear -Inf   Inf   ->  NaN Invalid_operation

+dqrmn691 remaindernear -1     Inf   -> -1

+dqrmn692 remaindernear  0     Inf   ->  0

+dqrmn693 remaindernear -0     Inf   -> -0

+dqrmn694 remaindernear  1     Inf   ->  1

+dqrmn695 remaindernear  1000  Inf   ->  1000

+dqrmn696 remaindernear  Inf   Inf   ->  NaN Invalid_operation

+

+dqrmn700 remaindernear -Inf  -Inf   ->  NaN Invalid_operation

+dqrmn701 remaindernear -Inf  -1000  ->  NaN Invalid_operation

+dqrmn702 remaindernear -Inf  -1     ->  NaN Invalid_operation

+dqrmn703 remaindernear -Inf  -0     ->  NaN Invalid_operation

+dqrmn704 remaindernear -Inf   0     ->  NaN Invalid_operation

+dqrmn705 remaindernear -Inf   1     ->  NaN Invalid_operation

+dqrmn706 remaindernear -Inf   1000  ->  NaN Invalid_operation

+dqrmn707 remaindernear -Inf   Inf   ->  NaN Invalid_operation

+dqrmn708 remaindernear -Inf  -Inf   ->  NaN Invalid_operation

+dqrmn709 remaindernear -1000  Inf   -> -1000

+dqrmn710 remaindernear -1    -Inf   -> -1

+dqrmn711 remaindernear -0    -Inf   -> -0

+dqrmn712 remaindernear  0    -Inf   ->  0

+dqrmn713 remaindernear  1    -Inf   ->  1

+dqrmn714 remaindernear  1000 -Inf   ->  1000

+dqrmn715 remaindernear  Inf  -Inf   ->  NaN Invalid_operation

+

+dqrmn721 remaindernear  NaN -Inf    ->  NaN

+dqrmn722 remaindernear  NaN -1000   ->  NaN

+dqrmn723 remaindernear  NaN -1      ->  NaN

+dqrmn724 remaindernear  NaN -0      ->  NaN

+dqrmn725 remaindernear -NaN  0      -> -NaN

+dqrmn726 remaindernear  NaN  1      ->  NaN

+dqrmn727 remaindernear  NaN  1000   ->  NaN

+dqrmn728 remaindernear  NaN  Inf    ->  NaN

+dqrmn729 remaindernear  NaN -NaN    ->  NaN

+dqrmn730 remaindernear -Inf  NaN    ->  NaN

+dqrmn731 remaindernear -1000 NaN    ->  NaN

+dqrmn732 remaindernear -1    NaN    ->  NaN

+dqrmn733 remaindernear -0   -NaN    -> -NaN

+dqrmn734 remaindernear  0    NaN    ->  NaN

+dqrmn735 remaindernear  1   -NaN    -> -NaN

+dqrmn736 remaindernear  1000 NaN    ->  NaN

+dqrmn737 remaindernear  Inf  NaN    ->  NaN

+

+dqrmn741 remaindernear  sNaN -Inf   ->  NaN  Invalid_operation

+dqrmn742 remaindernear  sNaN -1000  ->  NaN  Invalid_operation

+dqrmn743 remaindernear -sNaN -1     -> -NaN  Invalid_operation

+dqrmn744 remaindernear  sNaN -0     ->  NaN  Invalid_operation

+dqrmn745 remaindernear  sNaN  0     ->  NaN  Invalid_operation

+dqrmn746 remaindernear  sNaN  1     ->  NaN  Invalid_operation

+dqrmn747 remaindernear  sNaN  1000  ->  NaN  Invalid_operation

+dqrmn749 remaindernear  sNaN  NaN   ->  NaN  Invalid_operation

+dqrmn750 remaindernear  sNaN sNaN   ->  NaN  Invalid_operation

+dqrmn751 remaindernear  NaN  sNaN   ->  NaN  Invalid_operation

+dqrmn752 remaindernear -Inf  sNaN   ->  NaN  Invalid_operation

+dqrmn753 remaindernear -1000 sNaN   ->  NaN  Invalid_operation

+dqrmn754 remaindernear -1    sNaN   ->  NaN  Invalid_operation

+dqrmn755 remaindernear -0    sNaN   ->  NaN  Invalid_operation

+dqrmn756 remaindernear  0    sNaN   ->  NaN  Invalid_operation

+dqrmn757 remaindernear  1    sNaN   ->  NaN  Invalid_operation

+dqrmn758 remaindernear  1000 sNaN   ->  NaN  Invalid_operation

+dqrmn759 remaindernear  Inf -sNaN   -> -NaN  Invalid_operation

+

+-- propaging NaNs

+dqrmn760 remaindernear  NaN1   NaN7   ->  NaN1

+dqrmn761 remaindernear sNaN2   NaN8   ->  NaN2 Invalid_operation

+dqrmn762 remaindernear  NaN3  sNaN9   ->  NaN9 Invalid_operation

+dqrmn763 remaindernear sNaN4  sNaN10  ->  NaN4 Invalid_operation

+dqrmn764 remaindernear    15   NaN11  ->  NaN11

+dqrmn765 remaindernear  NaN6   NaN12  ->  NaN6

+dqrmn766 remaindernear  Inf    NaN13  ->  NaN13

+dqrmn767 remaindernear  NaN14  -Inf   ->  NaN14

+dqrmn768 remaindernear    0    NaN15  ->  NaN15

+dqrmn769 remaindernear  NaN16   -0    ->  NaN16

+

+-- edge cases of impossible

+dqrmn770  remaindernear  1234500000000000000000067890123456  10    -> -4

+dqrmn771  remaindernear  1234500000000000000000067890123456   1    ->  0

+dqrmn772  remaindernear  1234500000000000000000067890123456   0.1  ->  NaN Division_impossible

+dqrmn773  remaindernear  1234500000000000000000067890123456   0.01 ->  NaN Division_impossible

+

+-- long operand checks

+dqrmn801 remaindernear 12345678000 100 -> 0

+dqrmn802 remaindernear 1 12345678000   -> 1

+dqrmn803 remaindernear 1234567800  10  -> 0

+dqrmn804 remaindernear 1 1234567800    -> 1

+dqrmn805 remaindernear 1234567890  10  -> 0

+dqrmn806 remaindernear 1 1234567890    -> 1

+dqrmn807 remaindernear 1234567891  10  -> 1

+dqrmn808 remaindernear 1 1234567891    -> 1

+dqrmn809 remaindernear 12345678901 100 -> 1

+dqrmn810 remaindernear 1 12345678901   -> 1

+dqrmn811 remaindernear 1234567896  10  -> -4

+dqrmn812 remaindernear 1 1234567896    -> 1

+

+dqrmn821 remaindernear 12345678000 100 -> 0

+dqrmn822 remaindernear 1 12345678000   -> 1

+dqrmn823 remaindernear 1234567800  10  -> 0

+dqrmn824 remaindernear 1 1234567800    -> 1

+dqrmn825 remaindernear 1234567890  10  -> 0

+dqrmn826 remaindernear 1 1234567890    -> 1

+dqrmn827 remaindernear 1234567891  10  -> 1

+dqrmn828 remaindernear 1 1234567891    -> 1

+dqrmn829 remaindernear 12345678901 100 -> 1

+dqrmn830 remaindernear 1 12345678901   -> 1

+dqrmn831 remaindernear 1234567896  10  -> -4

+dqrmn832 remaindernear 1 1234567896    -> 1

+

+-- from divideint

+dqrmn840 remaindernear  100000000.0   1  ->  0.0

+dqrmn841 remaindernear  100000000.4   1  ->  0.4

+dqrmn842 remaindernear  100000000.5   1  ->  0.5

+dqrmn843 remaindernear  100000000.9   1  -> -0.1

+dqrmn844 remaindernear  100000000.999 1  -> -0.001

+dqrmn850 remaindernear  100000003     5  -> -2

+dqrmn851 remaindernear  10000003      5  -> -2

+dqrmn852 remaindernear  1000003       5  -> -2

+dqrmn853 remaindernear  100003        5  -> -2

+dqrmn854 remaindernear  10003         5  -> -2

+dqrmn855 remaindernear  1003          5  -> -2

+dqrmn856 remaindernear  103           5  -> -2

+dqrmn857 remaindernear  13            5  -> -2

+dqrmn858 remaindernear  1             5  ->  1

+

+-- Vladimir's cases         1234567890123456

+dqrmn860 remaindernear 123.0e1 1000000000000000  -> 1230

+dqrmn861 remaindernear 1230    1000000000000000  -> 1230

+dqrmn862 remaindernear 12.3e2  1000000000000000  -> 1230

+dqrmn863 remaindernear 1.23e3  1000000000000000  -> 1230

+dqrmn864 remaindernear 123e1   1000000000000000  -> 1230

+dqrmn870 remaindernear 123e1    1000000000000000 -> 1230

+dqrmn871 remaindernear 123e1     100000000000000 -> 1230

+dqrmn872 remaindernear 123e1      10000000000000 -> 1230

+dqrmn873 remaindernear 123e1       1000000000000 -> 1230

+dqrmn874 remaindernear 123e1        100000000000 -> 1230

+dqrmn875 remaindernear 123e1         10000000000 -> 1230

+dqrmn876 remaindernear 123e1          1000000000 -> 1230

+dqrmn877 remaindernear 123e1           100000000 -> 1230

+dqrmn878 remaindernear 1230            100000000 -> 1230

+dqrmn879 remaindernear 123e1            10000000 -> 1230

+dqrmn880 remaindernear 123e1             1000000 -> 1230

+dqrmn881 remaindernear 123e1              100000 -> 1230

+dqrmn882 remaindernear 123e1               10000 -> 1230

+dqrmn883 remaindernear 123e1                1000 ->  230

+dqrmn884 remaindernear 123e1                 100 ->   30

+dqrmn885 remaindernear 123e1                  10 ->    0

+dqrmn886 remaindernear 123e1                   1 ->    0

+

+dqrmn890 remaindernear 123e1    2000000000000000 -> 1230

+dqrmn891 remaindernear 123e1     200000000000000 -> 1230

+dqrmn892 remaindernear 123e1      20000000000000 -> 1230

+dqrmn893 remaindernear 123e1       2000000000000 -> 1230

+dqrmn894 remaindernear 123e1        200000000000 -> 1230

+dqrmn895 remaindernear 123e1         20000000000 -> 1230

+dqrmn896 remaindernear 123e1          2000000000 -> 1230

+dqrmn897 remaindernear 123e1           200000000 -> 1230

+dqrmn899 remaindernear 123e1            20000000 -> 1230

+dqrmn900 remaindernear 123e1             2000000 -> 1230

+dqrmn901 remaindernear 123e1              200000 -> 1230

+dqrmn902 remaindernear 123e1               20000 -> 1230

+dqrmn903 remaindernear 123e1                2000 -> -770

+dqrmn904 remaindernear 123e1                 200 ->   30

+dqrmn905 remaindernear 123e1                  20 ->  -10

+dqrmn906 remaindernear 123e1                   2 ->    0

+

+dqrmn910 remaindernear 123e1    5000000000000000 -> 1230

+dqrmn911 remaindernear 123e1     500000000000000 -> 1230

+dqrmn912 remaindernear 123e1      50000000000000 -> 1230

+dqrmn913 remaindernear 123e1       5000000000000 -> 1230

+dqrmn914 remaindernear 123e1        500000000000 -> 1230

+dqrmn915 remaindernear 123e1         50000000000 -> 1230

+dqrmn916 remaindernear 123e1          5000000000 -> 1230

+dqrmn917 remaindernear 123e1           500000000 -> 1230

+dqrmn919 remaindernear 123e1            50000000 -> 1230

+dqrmn920 remaindernear 123e1             5000000 -> 1230

+dqrmn921 remaindernear 123e1              500000 -> 1230

+dqrmn922 remaindernear 123e1               50000 -> 1230

+dqrmn923 remaindernear 123e1                5000 -> 1230

+dqrmn924 remaindernear 123e1                 500 ->  230

+dqrmn925 remaindernear 123e1                  50 ->  -20

+dqrmn926 remaindernear 123e1                   5 ->    0

+

+dqrmn930 remaindernear 123e1    9000000000000000 -> 1230

+dqrmn931 remaindernear 123e1     900000000000000 -> 1230

+dqrmn932 remaindernear 123e1      90000000000000 -> 1230

+dqrmn933 remaindernear 123e1       9000000000000 -> 1230

+dqrmn934 remaindernear 123e1        900000000000 -> 1230

+dqrmn935 remaindernear 123e1         90000000000 -> 1230

+dqrmn936 remaindernear 123e1          9000000000 -> 1230

+dqrmn937 remaindernear 123e1           900000000 -> 1230

+dqrmn939 remaindernear 123e1            90000000 -> 1230

+dqrmn940 remaindernear 123e1             9000000 -> 1230

+dqrmn941 remaindernear 123e1              900000 -> 1230

+dqrmn942 remaindernear 123e1               90000 -> 1230

+dqrmn943 remaindernear 123e1                9000 -> 1230

+dqrmn944 remaindernear 123e1                 900 ->  330

+dqrmn945 remaindernear 123e1                  90 ->  -30

+dqrmn946 remaindernear 123e1                   9 ->   -3

+

+dqrmn950 remaindernear 123e1   1000000000000000 -> 1230

+dqrmn961 remaindernear 123e1   2999999999999999 -> 1230

+dqrmn962 remaindernear 123e1   3999999999999999 -> 1230

+dqrmn963 remaindernear 123e1   4999999999999999 -> 1230

+dqrmn964 remaindernear 123e1   5999999999999999 -> 1230

+dqrmn965 remaindernear 123e1   6999999999999999 -> 1230

+dqrmn966 remaindernear 123e1   7999999999999999 -> 1230

+dqrmn967 remaindernear 123e1   8999999999999999 -> 1230

+dqrmn968 remaindernear 123e1   9999999999999999 -> 1230

+dqrmn969 remaindernear 123e1   9876543210987654 -> 1230

+

+dqrmn980 remaindernear 123e1 1000E299 -> 1.23E+3  -- 123E+1 internally

+

+-- overflow and underflow tests [from divide]

+dqrmn1051 remaindernear  1e+277  1e-311 ->  NaN Division_impossible

+dqrmn1052 remaindernear  1e+277 -1e-311 ->  NaN Division_impossible

+dqrmn1053 remaindernear -1e+277  1e-311 ->  NaN Division_impossible

+dqrmn1054 remaindernear -1e+277 -1e-311 ->  NaN Division_impossible

+dqrmn1055 remaindernear  1e-277  1e+311 ->  1E-277

+dqrmn1056 remaindernear  1e-277 -1e+311 ->  1E-277

+dqrmn1057 remaindernear -1e-277  1e+311 -> -1E-277

+dqrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277

+

+-- Gyuris example

+dqrmn1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143

+

+-- destructive subtract

+dqrmn1101  remaindernear  1234567890123456789012345678901234  1.000000000000000000000000000000001  ->  -0.234567890123456789012345678901233

+dqrmn1102  remaindernear  1234567890123456789012345678901234   1.00000000000000000000000000000001  ->   -0.34567890123456789012345678901222

+dqrmn1103  remaindernear  1234567890123456789012345678901234    1.0000000000000000000000000000001  ->    -0.4567890123456789012345678901111

+dqrmn1104  remaindernear  1234567890123456789012345678901255  4.000000000000000000000000000000001  ->  -1.308641972530864197253086419725314

+dqrmn1105  remaindernear  1234567890123456789012345678901234  4.000000000000000000000000000000001  ->   1.691358027469135802746913580274692

+dqrmn1106  remaindernear  1234567890123456789012345678901234    4.9999999999999999999999999999999  ->    -1.3086421975308642197530864219748

+dqrmn1107  remaindernear  1234567890123456789012345678901234   4.99999999999999999999999999999999  ->    1.46913578024691357802469135780247

+dqrmn1108  remaindernear  1234567890123456789012345678901234  4.999999999999999999999999999999999  ->  -0.753086421975308642197530864219753

+dqrmn1109  remaindernear  1234567890123456789012345678901234  5.000000000000000000000000000000001  ->  -1.246913578024691357802469135780247

+dqrmn1110  remaindernear  1234567890123456789012345678901234   5.00000000000000000000000000000001  ->    1.53086421975308642197530864219754

+dqrmn1111  remaindernear  1234567890123456789012345678901234    5.0000000000000000000000000000001  ->    -0.6913578024691357802469135780242

+

+-- Null tests

+dqrmn1000 remaindernear 10  # -> NaN Invalid_operation

+dqrmn1001 remaindernear  # 10 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/dqRotate.decTest b/Lib/test/decimaltestdata/dqRotate.decTest
new file mode 100644
index 0000000..671cd95
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqRotate.decTest
@@ -0,0 +1,298 @@
+------------------------------------------------------------------------

+-- dqRotate.decTest -- rotate decQuad coefficient left or right       --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check

+dqrot001 rotate                                   0    0  ->  0

+dqrot002 rotate                                   0    2  ->  0

+dqrot003 rotate                                   1    2  ->  100

+dqrot004 rotate                                   1   33  ->  1000000000000000000000000000000000

+dqrot005 rotate                                   1   34  ->  1

+dqrot006 rotate                                   1   -1  ->  1000000000000000000000000000000000

+dqrot007 rotate                                   0   -2  ->  0

+dqrot008 rotate  1234567890123456789012345678901234   -1  ->  4123456789012345678901234567890123

+dqrot009 rotate  1234567890123456789012345678901234   -33 ->  2345678901234567890123456789012341

+dqrot010 rotate  1234567890123456789012345678901234   -34 ->  1234567890123456789012345678901234

+dqrot011 rotate  9934567890123456789012345678901234   -33 ->  9345678901234567890123456789012349

+dqrot012 rotate  9934567890123456789012345678901234   -34 ->  9934567890123456789012345678901234

+

+-- rhs must be an integer

+dqrot015 rotate        1    1.5    -> NaN Invalid_operation

+dqrot016 rotate        1    1.0    -> NaN Invalid_operation

+dqrot017 rotate        1    0.1    -> NaN Invalid_operation

+dqrot018 rotate        1    0.0    -> NaN Invalid_operation

+dqrot019 rotate        1    1E+1   -> NaN Invalid_operation

+dqrot020 rotate        1    1E+99  -> NaN Invalid_operation

+dqrot021 rotate        1    Inf    -> NaN Invalid_operation

+dqrot022 rotate        1    -Inf   -> NaN Invalid_operation

+-- and |rhs| <= precision

+dqrot025 rotate        1    -1000  -> NaN Invalid_operation

+dqrot026 rotate        1    -35    -> NaN Invalid_operation

+dqrot027 rotate        1     35    -> NaN Invalid_operation

+dqrot028 rotate        1     1000  -> NaN Invalid_operation

+

+-- full pattern

+dqrot030 rotate  1234567890123456789012345678901234         -34  -> 1234567890123456789012345678901234

+dqrot031 rotate  1234567890123456789012345678901234         -33  -> 2345678901234567890123456789012341

+dqrot032 rotate  1234567890123456789012345678901234         -32  -> 3456789012345678901234567890123412

+dqrot033 rotate  1234567890123456789012345678901234         -31  -> 4567890123456789012345678901234123

+dqrot034 rotate  1234567890123456789012345678901234         -30  -> 5678901234567890123456789012341234

+dqrot035 rotate  1234567890123456789012345678901234         -29  -> 6789012345678901234567890123412345

+dqrot036 rotate  1234567890123456789012345678901234         -28  -> 7890123456789012345678901234123456

+dqrot037 rotate  1234567890123456789012345678901234         -27  -> 8901234567890123456789012341234567

+dqrot038 rotate  1234567890123456789012345678901234         -26  -> 9012345678901234567890123412345678

+dqrot039 rotate  1234567890123456789012345678901234         -25  ->  123456789012345678901234123456789

+dqrot040 rotate  1234567890123456789012345678901234         -24  -> 1234567890123456789012341234567890

+dqrot041 rotate  1234567890123456789012345678901234         -23  -> 2345678901234567890123412345678901

+dqrot042 rotate  1234567890123456789012345678901234         -22  -> 3456789012345678901234123456789012

+dqrot043 rotate  1234567890123456789012345678901234         -21  -> 4567890123456789012341234567890123

+dqrot044 rotate  1234567890123456789012345678901234         -20  -> 5678901234567890123412345678901234

+dqrot045 rotate  1234567890123456789012345678901234         -19  -> 6789012345678901234123456789012345

+dqrot047 rotate  1234567890123456789012345678901234         -18  -> 7890123456789012341234567890123456

+dqrot048 rotate  1234567890123456789012345678901234         -17  -> 8901234567890123412345678901234567

+dqrot049 rotate  1234567890123456789012345678901234         -16  -> 9012345678901234123456789012345678

+dqrot050 rotate  1234567890123456789012345678901234         -15  ->  123456789012341234567890123456789

+dqrot051 rotate  1234567890123456789012345678901234         -14  -> 1234567890123412345678901234567890

+dqrot052 rotate  1234567890123456789012345678901234         -13  -> 2345678901234123456789012345678901

+dqrot053 rotate  1234567890123456789012345678901234         -12  -> 3456789012341234567890123456789012

+dqrot054 rotate  1234567890123456789012345678901234         -11  -> 4567890123412345678901234567890123

+dqrot055 rotate  1234567890123456789012345678901234         -10  -> 5678901234123456789012345678901234

+dqrot056 rotate  1234567890123456789012345678901234         -9   -> 6789012341234567890123456789012345

+dqrot057 rotate  1234567890123456789012345678901234         -8   -> 7890123412345678901234567890123456

+dqrot058 rotate  1234567890123456789012345678901234         -7   -> 8901234123456789012345678901234567

+dqrot059 rotate  1234567890123456789012345678901234         -6   -> 9012341234567890123456789012345678

+dqrot060 rotate  1234567890123456789012345678901234         -5   ->  123412345678901234567890123456789

+dqrot061 rotate  1234567890123456789012345678901234         -4   -> 1234123456789012345678901234567890

+dqrot062 rotate  1234567890123456789012345678901234         -3   -> 2341234567890123456789012345678901

+dqrot063 rotate  1234567890123456789012345678901234         -2   -> 3412345678901234567890123456789012

+dqrot064 rotate  1234567890123456789012345678901234         -1   -> 4123456789012345678901234567890123

+dqrot065 rotate  1234567890123456789012345678901234         -0   -> 1234567890123456789012345678901234

+

+dqrot066 rotate  1234567890123456789012345678901234         +0   -> 1234567890123456789012345678901234

+dqrot067 rotate  1234567890123456789012345678901234         +1   -> 2345678901234567890123456789012341

+dqrot068 rotate  1234567890123456789012345678901234         +2   -> 3456789012345678901234567890123412

+dqrot069 rotate  1234567890123456789012345678901234         +3   -> 4567890123456789012345678901234123

+dqrot070 rotate  1234567890123456789012345678901234         +4   -> 5678901234567890123456789012341234

+dqrot071 rotate  1234567890123456789012345678901234         +5   -> 6789012345678901234567890123412345

+dqrot072 rotate  1234567890123456789012345678901234         +6   -> 7890123456789012345678901234123456

+dqrot073 rotate  1234567890123456789012345678901234         +7   -> 8901234567890123456789012341234567

+dqrot074 rotate  1234567890123456789012345678901234         +8   -> 9012345678901234567890123412345678

+dqrot075 rotate  1234567890123456789012345678901234         +9   ->  123456789012345678901234123456789

+dqrot076 rotate  1234567890123456789012345678901234         +10  -> 1234567890123456789012341234567890

+dqrot077 rotate  1234567890123456789012345678901234         +11  -> 2345678901234567890123412345678901

+dqrot078 rotate  1234567890123456789012345678901234         +12  -> 3456789012345678901234123456789012

+dqrot079 rotate  1234567890123456789012345678901234         +13  -> 4567890123456789012341234567890123

+dqrot080 rotate  1234567890123456789012345678901234         +14  -> 5678901234567890123412345678901234

+dqrot081 rotate  1234567890123456789012345678901234         +15  -> 6789012345678901234123456789012345

+dqrot082 rotate  1234567890123456789012345678901234         +16  -> 7890123456789012341234567890123456

+dqrot083 rotate  1234567890123456789012345678901234         +17  -> 8901234567890123412345678901234567

+dqrot084 rotate  1234567890123456789012345678901234         +18  -> 9012345678901234123456789012345678

+dqrot085 rotate  1234567890123456789012345678901234         +19  ->  123456789012341234567890123456789

+dqrot086 rotate  1234567890123456789012345678901234         +20  -> 1234567890123412345678901234567890

+dqrot087 rotate  1234567890123456789012345678901234         +21  -> 2345678901234123456789012345678901

+dqrot088 rotate  1234567890123456789012345678901234         +22  -> 3456789012341234567890123456789012

+dqrot089 rotate  1234567890123456789012345678901234         +23  -> 4567890123412345678901234567890123

+dqrot090 rotate  1234567890123456789012345678901234         +24  -> 5678901234123456789012345678901234

+dqrot091 rotate  1234567890123456789012345678901234         +25  -> 6789012341234567890123456789012345

+dqrot092 rotate  1234567890123456789012345678901234         +26  -> 7890123412345678901234567890123456

+dqrot093 rotate  1234567890123456789012345678901234         +27  -> 8901234123456789012345678901234567

+dqrot094 rotate  1234567890123456789012345678901234         +28  -> 9012341234567890123456789012345678

+dqrot095 rotate  1234567890123456789012345678901234         +29  ->  123412345678901234567890123456789

+dqrot096 rotate  1234567890123456789012345678901234         +30  -> 1234123456789012345678901234567890

+dqrot097 rotate  1234567890123456789012345678901234         +31  -> 2341234567890123456789012345678901

+dqrot098 rotate  1234567890123456789012345678901234         +32  -> 3412345678901234567890123456789012

+dqrot099 rotate  1234567890123456789012345678901234         +33  -> 4123456789012345678901234567890123

+dqrot100 rotate  1234567890123456789012345678901234         +34  -> 1234567890123456789012345678901234

+

+-- zeros

+dqrot270 rotate  0E-10              +29   ->   0E-10

+dqrot271 rotate  0E-10              -29   ->   0E-10

+dqrot272 rotate  0.000              +29   ->   0.000

+dqrot273 rotate  0.000              -29   ->   0.000

+dqrot274 rotate  0E+10              +29   ->   0E+10

+dqrot275 rotate  0E+10              -29   ->   0E+10

+dqrot276 rotate -0E-10              +29   ->  -0E-10

+dqrot277 rotate -0E-10              -29   ->  -0E-10

+dqrot278 rotate -0.000              +29   ->  -0.000

+dqrot279 rotate -0.000              -29   ->  -0.000

+dqrot280 rotate -0E+10              +29   ->  -0E+10

+dqrot281 rotate -0E+10              -29   ->  -0E+10

+

+-- Nmax, Nmin, Ntiny

+dqrot141 rotate  9.999999999999999999999999999999999E+6144     -1  -> 9.999999999999999999999999999999999E+6144

+dqrot142 rotate  9.999999999999999999999999999999999E+6144     -33 -> 9.999999999999999999999999999999999E+6144

+dqrot143 rotate  9.999999999999999999999999999999999E+6144      1  -> 9.999999999999999999999999999999999E+6144

+dqrot144 rotate  9.999999999999999999999999999999999E+6144      33 -> 9.999999999999999999999999999999999E+6144

+dqrot145 rotate  1E-6143                                       -1  -> 1.000000000000000000000000000000000E-6110

+dqrot146 rotate  1E-6143                                       -33 -> 1.0E-6142

+dqrot147 rotate  1E-6143                                        1  -> 1.0E-6142

+dqrot148 rotate  1E-6143                                        33 -> 1.000000000000000000000000000000000E-6110

+dqrot151 rotate  1.000000000000000000000000000000000E-6143     -1  -> 1.00000000000000000000000000000000E-6144

+dqrot152 rotate  1.000000000000000000000000000000000E-6143     -33 -> 1E-6176

+dqrot153 rotate  1.000000000000000000000000000000000E-6143      1  -> 1E-6176

+dqrot154 rotate  1.000000000000000000000000000000000E-6143      33 -> 1.00000000000000000000000000000000E-6144

+dqrot155 rotate  9.000000000000000000000000000000000E-6143     -1  -> 9.00000000000000000000000000000000E-6144

+dqrot156 rotate  9.000000000000000000000000000000000E-6143     -33 -> 9E-6176

+dqrot157 rotate  9.000000000000000000000000000000000E-6143      1  -> 9E-6176

+dqrot158 rotate  9.000000000000000000000000000000000E-6143      33 -> 9.00000000000000000000000000000000E-6144

+dqrot160 rotate  1E-6176                                       -1  -> 1.000000000000000000000000000000000E-6143

+dqrot161 rotate  1E-6176                                       -33 -> 1.0E-6175

+dqrot162 rotate  1E-6176                                        1  -> 1.0E-6175

+dqrot163 rotate  1E-6176                                        33 -> 1.000000000000000000000000000000000E-6143

+--  negatives

+dqrot171 rotate -9.999999999999999999999999999999999E+6144     -1  -> -9.999999999999999999999999999999999E+6144

+dqrot172 rotate -9.999999999999999999999999999999999E+6144     -33 -> -9.999999999999999999999999999999999E+6144

+dqrot173 rotate -9.999999999999999999999999999999999E+6144      1  -> -9.999999999999999999999999999999999E+6144

+dqrot174 rotate -9.999999999999999999999999999999999E+6144      33 -> -9.999999999999999999999999999999999E+6144

+dqrot175 rotate -1E-6143                                       -1  -> -1.000000000000000000000000000000000E-6110

+dqrot176 rotate -1E-6143                                       -33 -> -1.0E-6142

+dqrot177 rotate -1E-6143                                        1  -> -1.0E-6142

+dqrot178 rotate -1E-6143                                        33 -> -1.000000000000000000000000000000000E-6110

+dqrot181 rotate -1.000000000000000000000000000000000E-6143     -1  -> -1.00000000000000000000000000000000E-6144

+dqrot182 rotate -1.000000000000000000000000000000000E-6143     -33 -> -1E-6176

+dqrot183 rotate -1.000000000000000000000000000000000E-6143      1  -> -1E-6176

+dqrot184 rotate -1.000000000000000000000000000000000E-6143      33 -> -1.00000000000000000000000000000000E-6144

+dqrot185 rotate -9.000000000000000000000000000000000E-6143     -1  -> -9.00000000000000000000000000000000E-6144

+dqrot186 rotate -9.000000000000000000000000000000000E-6143     -33 -> -9E-6176

+dqrot187 rotate -9.000000000000000000000000000000000E-6143      1  -> -9E-6176

+dqrot188 rotate -9.000000000000000000000000000000000E-6143      33 -> -9.00000000000000000000000000000000E-6144

+dqrot190 rotate -1E-6176                                       -1  -> -1.000000000000000000000000000000000E-6143

+dqrot191 rotate -1E-6176                                       -33 -> -1.0E-6175

+dqrot192 rotate -1E-6176                                        1  -> -1.0E-6175

+dqrot193 rotate -1E-6176                                        33 -> -1.000000000000000000000000000000000E-6143

+

+-- more negatives (of sanities)

+dqrot201 rotate                                  -0    0  -> -0

+dqrot202 rotate                                  -0    2  -> -0

+dqrot203 rotate                                  -1    2  -> -100

+dqrot204 rotate                                  -1   33  -> -1000000000000000000000000000000000

+dqrot205 rotate                                  -1   34  -> -1

+dqrot206 rotate                                  -1   -1  -> -1000000000000000000000000000000000

+dqrot207 rotate                                  -0   -2  -> -0

+dqrot208 rotate -1234567890123456789012345678901234   -1  -> -4123456789012345678901234567890123

+dqrot209 rotate -1234567890123456789012345678901234   -33 -> -2345678901234567890123456789012341

+dqrot210 rotate -1234567890123456789012345678901234   -34 -> -1234567890123456789012345678901234

+dqrot211 rotate -9934567890123456789012345678901234   -33 -> -9345678901234567890123456789012349

+dqrot212 rotate -9934567890123456789012345678901234   -34 -> -9934567890123456789012345678901234

+

+

+-- Specials; NaNs are handled as usual

+dqrot781 rotate -Inf  -8     -> -Infinity

+dqrot782 rotate -Inf  -1     -> -Infinity

+dqrot783 rotate -Inf  -0     -> -Infinity

+dqrot784 rotate -Inf   0     -> -Infinity

+dqrot785 rotate -Inf   1     -> -Infinity

+dqrot786 rotate -Inf   8     -> -Infinity

+dqrot787 rotate -1000 -Inf   -> NaN Invalid_operation

+dqrot788 rotate -Inf  -Inf   -> NaN Invalid_operation

+dqrot789 rotate -1    -Inf   -> NaN Invalid_operation

+dqrot790 rotate -0    -Inf   -> NaN Invalid_operation

+dqrot791 rotate  0    -Inf   -> NaN Invalid_operation

+dqrot792 rotate  1    -Inf   -> NaN Invalid_operation

+dqrot793 rotate  1000 -Inf   -> NaN Invalid_operation

+dqrot794 rotate  Inf  -Inf   -> NaN Invalid_operation

+

+dqrot800 rotate  Inf  -Inf   -> NaN Invalid_operation

+dqrot801 rotate  Inf  -8     -> Infinity

+dqrot802 rotate  Inf  -1     -> Infinity

+dqrot803 rotate  Inf  -0     -> Infinity

+dqrot804 rotate  Inf   0     -> Infinity

+dqrot805 rotate  Inf   1     -> Infinity

+dqrot806 rotate  Inf   8     -> Infinity

+dqrot807 rotate  Inf   Inf   -> NaN Invalid_operation

+dqrot808 rotate -1000  Inf   -> NaN Invalid_operation

+dqrot809 rotate -Inf   Inf   -> NaN Invalid_operation

+dqrot810 rotate -1     Inf   -> NaN Invalid_operation

+dqrot811 rotate -0     Inf   -> NaN Invalid_operation

+dqrot812 rotate  0     Inf   -> NaN Invalid_operation

+dqrot813 rotate  1     Inf   -> NaN Invalid_operation

+dqrot814 rotate  1000  Inf   -> NaN Invalid_operation

+dqrot815 rotate  Inf   Inf   -> NaN Invalid_operation

+

+dqrot821 rotate  NaN -Inf    ->  NaN

+dqrot822 rotate  NaN -1000   ->  NaN

+dqrot823 rotate  NaN -1      ->  NaN

+dqrot824 rotate  NaN -0      ->  NaN

+dqrot825 rotate  NaN  0      ->  NaN

+dqrot826 rotate  NaN  1      ->  NaN

+dqrot827 rotate  NaN  1000   ->  NaN

+dqrot828 rotate  NaN  Inf    ->  NaN

+dqrot829 rotate  NaN  NaN    ->  NaN

+dqrot830 rotate -Inf  NaN    ->  NaN

+dqrot831 rotate -1000 NaN    ->  NaN

+dqrot832 rotate -1    NaN    ->  NaN

+dqrot833 rotate -0    NaN    ->  NaN

+dqrot834 rotate  0    NaN    ->  NaN

+dqrot835 rotate  1    NaN    ->  NaN

+dqrot836 rotate  1000 NaN    ->  NaN

+dqrot837 rotate  Inf  NaN    ->  NaN

+

+dqrot841 rotate  sNaN -Inf   ->  NaN  Invalid_operation

+dqrot842 rotate  sNaN -1000  ->  NaN  Invalid_operation

+dqrot843 rotate  sNaN -1     ->  NaN  Invalid_operation

+dqrot844 rotate  sNaN -0     ->  NaN  Invalid_operation

+dqrot845 rotate  sNaN  0     ->  NaN  Invalid_operation

+dqrot846 rotate  sNaN  1     ->  NaN  Invalid_operation

+dqrot847 rotate  sNaN  1000  ->  NaN  Invalid_operation

+dqrot848 rotate  sNaN  NaN   ->  NaN  Invalid_operation

+dqrot849 rotate  sNaN sNaN   ->  NaN  Invalid_operation

+dqrot850 rotate  NaN  sNaN   ->  NaN  Invalid_operation

+dqrot851 rotate -Inf  sNaN   ->  NaN  Invalid_operation

+dqrot852 rotate -1000 sNaN   ->  NaN  Invalid_operation

+dqrot853 rotate -1    sNaN   ->  NaN  Invalid_operation

+dqrot854 rotate -0    sNaN   ->  NaN  Invalid_operation

+dqrot855 rotate  0    sNaN   ->  NaN  Invalid_operation

+dqrot856 rotate  1    sNaN   ->  NaN  Invalid_operation

+dqrot857 rotate  1000 sNaN   ->  NaN  Invalid_operation

+dqrot858 rotate  Inf  sNaN   ->  NaN  Invalid_operation

+dqrot859 rotate  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqrot861 rotate  NaN1   -Inf    ->  NaN1

+dqrot862 rotate +NaN2   -1000   ->  NaN2

+dqrot863 rotate  NaN3    1000   ->  NaN3

+dqrot864 rotate  NaN4    Inf    ->  NaN4

+dqrot865 rotate  NaN5   +NaN6   ->  NaN5

+dqrot866 rotate -Inf     NaN7   ->  NaN7

+dqrot867 rotate -1000    NaN8   ->  NaN8

+dqrot868 rotate  1000    NaN9   ->  NaN9

+dqrot869 rotate  Inf    +NaN10  ->  NaN10

+dqrot871 rotate  sNaN11  -Inf   ->  NaN11  Invalid_operation

+dqrot872 rotate  sNaN12  -1000  ->  NaN12  Invalid_operation

+dqrot873 rotate  sNaN13   1000  ->  NaN13  Invalid_operation

+dqrot874 rotate  sNaN14   NaN17 ->  NaN14  Invalid_operation

+dqrot875 rotate  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+dqrot876 rotate  NaN16   sNaN19 ->  NaN19  Invalid_operation

+dqrot877 rotate -Inf    +sNaN20 ->  NaN20  Invalid_operation

+dqrot878 rotate -1000    sNaN21 ->  NaN21  Invalid_operation

+dqrot879 rotate  1000    sNaN22 ->  NaN22  Invalid_operation

+dqrot880 rotate  Inf     sNaN23 ->  NaN23  Invalid_operation

+dqrot881 rotate +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+dqrot882 rotate -NaN26    NaN28 -> -NaN26

+dqrot883 rotate -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+dqrot884 rotate  1000    -NaN30 -> -NaN30

+dqrot885 rotate  1000   -sNaN31 -> -NaN31  Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqSameQuantum.decTest b/Lib/test/decimaltestdata/dqSameQuantum.decTest
new file mode 100644
index 0000000..acf7266
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqSameQuantum.decTest
@@ -0,0 +1,389 @@
+------------------------------------------------------------------------

+-- dqSameQuantum.decTest -- check decQuad quantums match              --

+-- Copyright (c) IBM Corporation, 2001, 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.57

+

+-- All operands and results are decQuads.

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+dqsamq001 samequantum  0      0      ->  1

+dqsamq002 samequantum  0      1      ->  1

+dqsamq003 samequantum  1      0      ->  1

+dqsamq004 samequantum  1      1      ->  1

+

+dqsamq011 samequantum  10     1E+1   -> 0

+dqsamq012 samequantum  10E+1  10E+1  -> 1

+dqsamq013 samequantum  100    10E+1  -> 0

+dqsamq014 samequantum  100    1E+2   -> 0

+dqsamq015 samequantum  0.1    1E-2   -> 0

+dqsamq016 samequantum  0.1    1E-1   -> 1

+dqsamq017 samequantum  0.1    1E-0   -> 0

+dqsamq018 samequantum  999    999    -> 1

+dqsamq019 samequantum  999E-1 99.9   -> 1

+dqsamq020 samequantum  111E-1 22.2   -> 1

+dqsamq021 samequantum  111E-1 1234.2 -> 1

+

+-- zeros

+dqsamq030 samequantum  0.0    1.1    -> 1

+dqsamq031 samequantum  0.0    1.11   -> 0

+dqsamq032 samequantum  0.0    0      -> 0

+dqsamq033 samequantum  0.0    0.0    -> 1

+dqsamq034 samequantum  0.0    0.00   -> 0

+dqsamq035 samequantum  0E+1   0E+0   -> 0

+dqsamq036 samequantum  0E+1   0E+1   -> 1

+dqsamq037 samequantum  0E+1   0E+2   -> 0

+dqsamq038 samequantum  0E-17  0E-16  -> 0

+dqsamq039 samequantum  0E-17  0E-17  -> 1

+dqsamq040 samequantum  0E-17  0E-18  -> 0

+dqsamq041 samequantum  0E-17  0.0E-15 -> 0

+dqsamq042 samequantum  0E-17  0.0E-16 -> 1

+dqsamq043 samequantum  0E-17  0.0E-17 -> 0

+dqsamq044 samequantum -0E-17  0.0E-16 -> 1

+dqsamq045 samequantum  0E-17 -0.0E-17 -> 0

+dqsamq046 samequantum  0E-17 -0.0E-16 -> 1

+dqsamq047 samequantum -0E-17  0.0E-17 -> 0

+dqsamq048 samequantum -0E-17 -0.0E-16 -> 1

+dqsamq049 samequantum -0E-17 -0.0E-17 -> 0

+

+-- Nmax, Nmin, Ntiny

+dqsamq051 samequantum  9.99999999999999999999999999999999E+6144    9.99999999999999999999999999999999E+6144  -> 1

+dqsamq052 samequantum  1E-6143             1E-6143           -> 1

+dqsamq053 samequantum  1.00000000000000000000000000000000E-6143    1.00000000000000000000000000000000E-6143  -> 1

+dqsamq054 samequantum  1E-6176             1E-6176           -> 1

+dqsamq055 samequantum  9.99999999999999999999999999999999E+6144    9.99999999999999999999999999999999E+6144  -> 1

+dqsamq056 samequantum  1E-6143             1E-6143           -> 1

+dqsamq057 samequantum  1.00000000000000000000000000000000E-6143    1.00000000000000000000000000000000E-6143  -> 1

+dqsamq058 samequantum  1E-6176             1E-6176           -> 1

+

+dqsamq061 samequantum  -1E-6176            -1E-6176          -> 1

+dqsamq062 samequantum  -1.00000000000000000000000000000000E-6143   -1.00000000000000000000000000000000E-6143 -> 1

+dqsamq063 samequantum  -1E-6143            -1E-6143          -> 1

+dqsamq064 samequantum  -9.99999999999999999999999999999999E+6144   -9.99999999999999999999999999999999E+6144 -> 1

+dqsamq065 samequantum  -1E-6176            -1E-6176          -> 1

+dqsamq066 samequantum  -1.00000000000000000000000000000000E-6143   -1.00000000000000000000000000000000E-6143 -> 1

+dqsamq067 samequantum  -1E-6143            -1E-6143          -> 1

+dqsamq068 samequantum  -9.99999999999999999999999999999999E+6144   -9.99999999999999999999999999999999E+6144 -> 1

+

+dqsamq071 samequantum  -4E-6176            -1E-6176          -> 1

+dqsamq072 samequantum  -4.00000000000000000000000000000000E-6143   -1.00000000000000000000000000004000E-6143 -> 1

+dqsamq073 samequantum  -4E-6143            -1E-6143          -> 1

+dqsamq074 samequantum  -4.99999999999999999999999999999999E+6144   -9.99949999999999999999999999999999E+6144 -> 1

+dqsamq075 samequantum  -4E-6176            -1E-6176          -> 1

+dqsamq076 samequantum  -4.00000000000000000000000000000000E-6143   -1.00400000000000000000000000000000E-6143 -> 1

+dqsamq077 samequantum  -4E-6143            -1E-6143          -> 1

+dqsamq078 samequantum  -4.99999999999999999999999999999999E+6144   -9.94999999999999999999999999999999E+6144 -> 1

+

+dqsamq081 samequantum  -4E-1006           -1E-6176          -> 0

+dqsamq082 samequantum  -4.00000000000000000000000000000000E-6143   -1.00004000000000000000000000000000E-6136 -> 0

+dqsamq083 samequantum  -4E-6140           -1E-6143          -> 0

+dqsamq084 samequantum  -4.99999999999999999999999999999999E+6144   -9.99949999999999999999999999999999E+6136 -> 0

+dqsamq085 samequantum  -4E-1006           -1E-6176          -> 0

+dqsamq086 samequantum  -4.00000000000000000000000000000000E-6143   -1.00400000000000000000000000000000E-6136 -> 0

+dqsamq087 samequantum  -4E-6133           -1E-6143          -> 0

+dqsamq088 samequantum  -4.99999999999999999999999999999999E+6144   -9.94999999999999999999999999999999E+6136 -> 0

+

+-- specials & combinations

+dqsamq0110 samequantum  -Inf    -Inf   -> 1

+dqsamq0111 samequantum  -Inf     Inf   -> 1

+dqsamq0112 samequantum  -Inf     NaN   -> 0

+dqsamq0113 samequantum  -Inf    -7E+3  -> 0

+dqsamq0114 samequantum  -Inf    -7     -> 0

+dqsamq0115 samequantum  -Inf    -7E-3  -> 0

+dqsamq0116 samequantum  -Inf    -0E-3  -> 0

+dqsamq0117 samequantum  -Inf    -0     -> 0

+dqsamq0118 samequantum  -Inf    -0E+3  -> 0

+dqsamq0119 samequantum  -Inf     0E-3  -> 0

+dqsamq0120 samequantum  -Inf     0     -> 0

+dqsamq0121 samequantum  -Inf     0E+3  -> 0

+dqsamq0122 samequantum  -Inf     7E-3  -> 0

+dqsamq0123 samequantum  -Inf     7     -> 0

+dqsamq0124 samequantum  -Inf     7E+3  -> 0

+dqsamq0125 samequantum  -Inf     sNaN  -> 0

+

+dqsamq0210 samequantum   Inf    -Inf   -> 1

+dqsamq0211 samequantum   Inf     Inf   -> 1

+dqsamq0212 samequantum   Inf     NaN   -> 0

+dqsamq0213 samequantum   Inf    -7E+3  -> 0

+dqsamq0214 samequantum   Inf    -7     -> 0

+dqsamq0215 samequantum   Inf    -7E-3  -> 0

+dqsamq0216 samequantum   Inf    -0E-3  -> 0

+dqsamq0217 samequantum   Inf    -0     -> 0

+dqsamq0218 samequantum   Inf    -0E+3  -> 0

+dqsamq0219 samequantum   Inf     0E-3  -> 0

+dqsamq0220 samequantum   Inf     0     -> 0

+dqsamq0221 samequantum   Inf     0E+3  -> 0

+dqsamq0222 samequantum   Inf     7E-3  -> 0

+dqsamq0223 samequantum   Inf     7     -> 0

+dqsamq0224 samequantum   Inf     7E+3  -> 0

+dqsamq0225 samequantum   Inf     sNaN  -> 0

+

+dqsamq0310 samequantum   NaN    -Inf   -> 0

+dqsamq0311 samequantum   NaN     Inf   -> 0

+dqsamq0312 samequantum   NaN     NaN   -> 1

+dqsamq0313 samequantum   NaN    -7E+3  -> 0

+dqsamq0314 samequantum   NaN    -7     -> 0

+dqsamq0315 samequantum   NaN    -7E-3  -> 0

+dqsamq0316 samequantum   NaN    -0E-3  -> 0

+dqsamq0317 samequantum   NaN    -0     -> 0

+dqsamq0318 samequantum   NaN    -0E+3  -> 0

+dqsamq0319 samequantum   NaN     0E-3  -> 0

+dqsamq0320 samequantum   NaN     0     -> 0

+dqsamq0321 samequantum   NaN     0E+3  -> 0

+dqsamq0322 samequantum   NaN     7E-3  -> 0

+dqsamq0323 samequantum   NaN     7     -> 0

+dqsamq0324 samequantum   NaN     7E+3  -> 0

+dqsamq0325 samequantum   NaN     sNaN  -> 1

+

+dqsamq0410 samequantum  -7E+3    -Inf   -> 0

+dqsamq0411 samequantum  -7E+3     Inf   -> 0

+dqsamq0412 samequantum  -7E+3     NaN   -> 0

+dqsamq0413 samequantum  -7E+3    -7E+3  -> 1

+dqsamq0414 samequantum  -7E+3    -7     -> 0

+dqsamq0415 samequantum  -7E+3    -7E-3  -> 0

+dqsamq0416 samequantum  -7E+3    -0E-3  -> 0

+dqsamq0417 samequantum  -7E+3    -0     -> 0

+dqsamq0418 samequantum  -7E+3    -0E+3  -> 1

+dqsamq0419 samequantum  -7E+3     0E-3  -> 0

+dqsamq0420 samequantum  -7E+3     0     -> 0

+dqsamq0421 samequantum  -7E+3     0E+3  -> 1

+dqsamq0422 samequantum  -7E+3     7E-3  -> 0

+dqsamq0423 samequantum  -7E+3     7     -> 0

+dqsamq0424 samequantum  -7E+3     7E+3  -> 1

+dqsamq0425 samequantum  -7E+3     sNaN  -> 0

+

+dqsamq0510 samequantum  -7      -Inf   -> 0

+dqsamq0511 samequantum  -7       Inf   -> 0

+dqsamq0512 samequantum  -7       NaN   -> 0

+dqsamq0513 samequantum  -7      -7E+3  -> 0

+dqsamq0514 samequantum  -7      -7     -> 1

+dqsamq0515 samequantum  -7      -7E-3  -> 0

+dqsamq0516 samequantum  -7      -0E-3  -> 0

+dqsamq0517 samequantum  -7      -0     -> 1

+dqsamq0518 samequantum  -7      -0E+3  -> 0

+dqsamq0519 samequantum  -7       0E-3  -> 0

+dqsamq0520 samequantum  -7       0     -> 1

+dqsamq0521 samequantum  -7       0E+3  -> 0

+dqsamq0522 samequantum  -7       7E-3  -> 0

+dqsamq0523 samequantum  -7       7     -> 1

+dqsamq0524 samequantum  -7       7E+3  -> 0

+dqsamq0525 samequantum  -7       sNaN  -> 0

+

+dqsamq0610 samequantum  -7E-3    -Inf   -> 0

+dqsamq0611 samequantum  -7E-3     Inf   -> 0

+dqsamq0612 samequantum  -7E-3     NaN   -> 0

+dqsamq0613 samequantum  -7E-3    -7E+3  -> 0

+dqsamq0614 samequantum  -7E-3    -7     -> 0

+dqsamq0615 samequantum  -7E-3    -7E-3  -> 1

+dqsamq0616 samequantum  -7E-3    -0E-3  -> 1

+dqsamq0617 samequantum  -7E-3    -0     -> 0

+dqsamq0618 samequantum  -7E-3    -0E+3  -> 0

+dqsamq0619 samequantum  -7E-3     0E-3  -> 1

+dqsamq0620 samequantum  -7E-3     0     -> 0

+dqsamq0621 samequantum  -7E-3     0E+3  -> 0

+dqsamq0622 samequantum  -7E-3     7E-3  -> 1

+dqsamq0623 samequantum  -7E-3     7     -> 0

+dqsamq0624 samequantum  -7E-3     7E+3  -> 0

+dqsamq0625 samequantum  -7E-3     sNaN  -> 0

+

+dqsamq0710 samequantum  -0E-3    -Inf   -> 0

+dqsamq0711 samequantum  -0E-3     Inf   -> 0

+dqsamq0712 samequantum  -0E-3     NaN   -> 0

+dqsamq0713 samequantum  -0E-3    -7E+3  -> 0

+dqsamq0714 samequantum  -0E-3    -7     -> 0

+dqsamq0715 samequantum  -0E-3    -7E-3  -> 1

+dqsamq0716 samequantum  -0E-3    -0E-3  -> 1

+dqsamq0717 samequantum  -0E-3    -0     -> 0

+dqsamq0718 samequantum  -0E-3    -0E+3  -> 0

+dqsamq0719 samequantum  -0E-3     0E-3  -> 1

+dqsamq0720 samequantum  -0E-3     0     -> 0

+dqsamq0721 samequantum  -0E-3     0E+3  -> 0

+dqsamq0722 samequantum  -0E-3     7E-3  -> 1

+dqsamq0723 samequantum  -0E-3     7     -> 0

+dqsamq0724 samequantum  -0E-3     7E+3  -> 0

+dqsamq0725 samequantum  -0E-3     sNaN  -> 0

+

+dqsamq0810 samequantum  -0      -Inf   -> 0

+dqsamq0811 samequantum  -0       Inf   -> 0

+dqsamq0812 samequantum  -0       NaN   -> 0

+dqsamq0813 samequantum  -0      -7E+3  -> 0

+dqsamq0814 samequantum  -0      -7     -> 1

+dqsamq0815 samequantum  -0      -7E-3  -> 0

+dqsamq0816 samequantum  -0      -0E-3  -> 0

+dqsamq0817 samequantum  -0      -0     -> 1

+dqsamq0818 samequantum  -0      -0E+3  -> 0

+dqsamq0819 samequantum  -0       0E-3  -> 0

+dqsamq0820 samequantum  -0       0     -> 1

+dqsamq0821 samequantum  -0       0E+3  -> 0

+dqsamq0822 samequantum  -0       7E-3  -> 0

+dqsamq0823 samequantum  -0       7     -> 1

+dqsamq0824 samequantum  -0       7E+3  -> 0

+dqsamq0825 samequantum  -0       sNaN  -> 0

+

+dqsamq0910 samequantum  -0E+3    -Inf   -> 0

+dqsamq0911 samequantum  -0E+3     Inf   -> 0

+dqsamq0912 samequantum  -0E+3     NaN   -> 0

+dqsamq0913 samequantum  -0E+3    -7E+3  -> 1

+dqsamq0914 samequantum  -0E+3    -7     -> 0

+dqsamq0915 samequantum  -0E+3    -7E-3  -> 0

+dqsamq0916 samequantum  -0E+3    -0E-3  -> 0

+dqsamq0917 samequantum  -0E+3    -0     -> 0

+dqsamq0918 samequantum  -0E+3    -0E+3  -> 1

+dqsamq0919 samequantum  -0E+3     0E-3  -> 0

+dqsamq0920 samequantum  -0E+3     0     -> 0

+dqsamq0921 samequantum  -0E+3     0E+3  -> 1

+dqsamq0922 samequantum  -0E+3     7E-3  -> 0

+dqsamq0923 samequantum  -0E+3     7     -> 0

+dqsamq0924 samequantum  -0E+3     7E+3  -> 1

+dqsamq0925 samequantum  -0E+3     sNaN  -> 0

+

+dqsamq1110 samequantum  0E-3    -Inf   -> 0

+dqsamq1111 samequantum  0E-3     Inf   -> 0

+dqsamq1112 samequantum  0E-3     NaN   -> 0

+dqsamq1113 samequantum  0E-3    -7E+3  -> 0

+dqsamq1114 samequantum  0E-3    -7     -> 0

+dqsamq1115 samequantum  0E-3    -7E-3  -> 1

+dqsamq1116 samequantum  0E-3    -0E-3  -> 1

+dqsamq1117 samequantum  0E-3    -0     -> 0

+dqsamq1118 samequantum  0E-3    -0E+3  -> 0

+dqsamq1119 samequantum  0E-3     0E-3  -> 1

+dqsamq1120 samequantum  0E-3     0     -> 0

+dqsamq1121 samequantum  0E-3     0E+3  -> 0

+dqsamq1122 samequantum  0E-3     7E-3  -> 1

+dqsamq1123 samequantum  0E-3     7     -> 0

+dqsamq1124 samequantum  0E-3     7E+3  -> 0

+dqsamq1125 samequantum  0E-3     sNaN  -> 0

+

+dqsamq1210 samequantum  0       -Inf   -> 0

+dqsamq1211 samequantum  0        Inf   -> 0

+dqsamq1212 samequantum  0        NaN   -> 0

+dqsamq1213 samequantum  0       -7E+3  -> 0

+dqsamq1214 samequantum  0       -7     -> 1

+dqsamq1215 samequantum  0       -7E-3  -> 0

+dqsamq1216 samequantum  0       -0E-3  -> 0

+dqsamq1217 samequantum  0       -0     -> 1

+dqsamq1218 samequantum  0       -0E+3  -> 0

+dqsamq1219 samequantum  0        0E-3  -> 0

+dqsamq1220 samequantum  0        0     -> 1

+dqsamq1221 samequantum  0        0E+3  -> 0

+dqsamq1222 samequantum  0        7E-3  -> 0

+dqsamq1223 samequantum  0        7     -> 1

+dqsamq1224 samequantum  0        7E+3  -> 0

+dqsamq1225 samequantum  0        sNaN  -> 0

+

+dqsamq1310 samequantum  0E+3    -Inf   -> 0

+dqsamq1311 samequantum  0E+3     Inf   -> 0

+dqsamq1312 samequantum  0E+3     NaN   -> 0

+dqsamq1313 samequantum  0E+3    -7E+3  -> 1

+dqsamq1314 samequantum  0E+3    -7     -> 0

+dqsamq1315 samequantum  0E+3    -7E-3  -> 0

+dqsamq1316 samequantum  0E+3    -0E-3  -> 0

+dqsamq1317 samequantum  0E+3    -0     -> 0

+dqsamq1318 samequantum  0E+3    -0E+3  -> 1

+dqsamq1319 samequantum  0E+3     0E-3  -> 0

+dqsamq1320 samequantum  0E+3     0     -> 0

+dqsamq1321 samequantum  0E+3     0E+3  -> 1

+dqsamq1322 samequantum  0E+3     7E-3  -> 0

+dqsamq1323 samequantum  0E+3     7     -> 0

+dqsamq1324 samequantum  0E+3     7E+3  -> 1

+dqsamq1325 samequantum  0E+3     sNaN  -> 0

+

+dqsamq1410 samequantum  7E-3    -Inf   -> 0

+dqsamq1411 samequantum  7E-3     Inf   -> 0

+dqsamq1412 samequantum  7E-3     NaN   -> 0

+dqsamq1413 samequantum  7E-3    -7E+3  -> 0

+dqsamq1414 samequantum  7E-3    -7     -> 0

+dqsamq1415 samequantum  7E-3    -7E-3  -> 1

+dqsamq1416 samequantum  7E-3    -0E-3  -> 1

+dqsamq1417 samequantum  7E-3    -0     -> 0

+dqsamq1418 samequantum  7E-3    -0E+3  -> 0

+dqsamq1419 samequantum  7E-3     0E-3  -> 1

+dqsamq1420 samequantum  7E-3     0     -> 0

+dqsamq1421 samequantum  7E-3     0E+3  -> 0

+dqsamq1422 samequantum  7E-3     7E-3  -> 1

+dqsamq1423 samequantum  7E-3     7     -> 0

+dqsamq1424 samequantum  7E-3     7E+3  -> 0

+dqsamq1425 samequantum  7E-3     sNaN  -> 0

+

+dqsamq1510 samequantum  7      -Inf   -> 0

+dqsamq1511 samequantum  7       Inf   -> 0

+dqsamq1512 samequantum  7       NaN   -> 0

+dqsamq1513 samequantum  7      -7E+3  -> 0

+dqsamq1514 samequantum  7      -7     -> 1

+dqsamq1515 samequantum  7      -7E-3  -> 0

+dqsamq1516 samequantum  7      -0E-3  -> 0

+dqsamq1517 samequantum  7      -0     -> 1

+dqsamq1518 samequantum  7      -0E+3  -> 0

+dqsamq1519 samequantum  7       0E-3  -> 0

+dqsamq1520 samequantum  7       0     -> 1

+dqsamq1521 samequantum  7       0E+3  -> 0

+dqsamq1522 samequantum  7       7E-3  -> 0

+dqsamq1523 samequantum  7       7     -> 1

+dqsamq1524 samequantum  7       7E+3  -> 0

+dqsamq1525 samequantum  7       sNaN  -> 0

+

+dqsamq1610 samequantum  7E+3    -Inf   -> 0

+dqsamq1611 samequantum  7E+3     Inf   -> 0

+dqsamq1612 samequantum  7E+3     NaN   -> 0

+dqsamq1613 samequantum  7E+3    -7E+3  -> 1

+dqsamq1614 samequantum  7E+3    -7     -> 0

+dqsamq1615 samequantum  7E+3    -7E-3  -> 0

+dqsamq1616 samequantum  7E+3    -0E-3  -> 0

+dqsamq1617 samequantum  7E+3    -0     -> 0

+dqsamq1618 samequantum  7E+3    -0E+3  -> 1

+dqsamq1619 samequantum  7E+3     0E-3  -> 0

+dqsamq1620 samequantum  7E+3     0     -> 0

+dqsamq1621 samequantum  7E+3     0E+3  -> 1

+dqsamq1622 samequantum  7E+3     7E-3  -> 0

+dqsamq1623 samequantum  7E+3     7     -> 0

+dqsamq1624 samequantum  7E+3     7E+3  -> 1

+dqsamq1625 samequantum  7E+3     sNaN  -> 0

+

+dqsamq1710 samequantum  sNaN    -Inf   -> 0

+dqsamq1711 samequantum  sNaN     Inf   -> 0

+dqsamq1712 samequantum  sNaN     NaN   -> 1

+dqsamq1713 samequantum  sNaN    -7E+3  -> 0

+dqsamq1714 samequantum  sNaN    -7     -> 0

+dqsamq1715 samequantum  sNaN    -7E-3  -> 0

+dqsamq1716 samequantum  sNaN    -0E-3  -> 0

+dqsamq1717 samequantum  sNaN    -0     -> 0

+dqsamq1718 samequantum  sNaN    -0E+3  -> 0

+dqsamq1719 samequantum  sNaN     0E-3  -> 0

+dqsamq1720 samequantum  sNaN     0     -> 0

+dqsamq1721 samequantum  sNaN     0E+3  -> 0

+dqsamq1722 samequantum  sNaN     7E-3  -> 0

+dqsamq1723 samequantum  sNaN     7     -> 0

+dqsamq1724 samequantum  sNaN     7E+3  -> 0

+dqsamq1725 samequantum  sNaN     sNaN  -> 1

+-- noisy NaNs

+dqsamq1730 samequantum  sNaN3    sNaN3 -> 1

+dqsamq1731 samequantum  sNaN3    sNaN4 -> 1

+dqsamq1732 samequantum   NaN3     NaN3 -> 1

+dqsamq1733 samequantum   NaN3     NaN4 -> 1

+dqsamq1734 samequantum  sNaN3     3    -> 0

+dqsamq1735 samequantum   NaN3     3    -> 0

+dqsamq1736 samequantum      4    sNaN4 -> 0

+dqsamq1737 samequantum      3     NaN3 -> 0

+dqsamq1738 samequantum    Inf    sNaN4 -> 0

+dqsamq1739 samequantum   -Inf     NaN3 -> 0

+

diff --git a/Lib/test/decimaltestdata/dqScaleB.decTest b/Lib/test/decimaltestdata/dqScaleB.decTest
new file mode 100644
index 0000000..7355cf0
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqScaleB.decTest
@@ -0,0 +1,260 @@
+------------------------------------------------------------------------

+-- dqScalebB.decTest -- scale a decQuad by powers of 10               --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Max |rhs| is 2*(6144+34) = 12356

+

+-- Sanity checks

+dqscb001 scaleb       7.50   10 -> 7.50E+10

+dqscb002 scaleb       7.50    3 -> 7.50E+3

+dqscb003 scaleb       7.50    2 -> 750

+dqscb004 scaleb       7.50    1 -> 75.0

+dqscb005 scaleb       7.50    0 -> 7.50

+dqscb006 scaleb       7.50   -1 -> 0.750

+dqscb007 scaleb       7.50   -2 -> 0.0750

+dqscb008 scaleb       7.50  -10 -> 7.50E-10

+dqscb009 scaleb      -7.50    3 -> -7.50E+3

+dqscb010 scaleb      -7.50    2 -> -750

+dqscb011 scaleb      -7.50    1 -> -75.0

+dqscb012 scaleb      -7.50    0 -> -7.50

+dqscb013 scaleb      -7.50   -1 -> -0.750

+

+-- Infinities

+dqscb014 scaleb  Infinity   1 -> Infinity

+dqscb015 scaleb  -Infinity  2 -> -Infinity

+dqscb016 scaleb  Infinity  -1 -> Infinity

+dqscb017 scaleb  -Infinity -2 -> -Infinity

+

+-- Next two are somewhat undefined in 754r; treat as non-integer

+dqscb018 scaleb  10  Infinity -> NaN Invalid_operation

+dqscb019 scaleb  10 -Infinity -> NaN Invalid_operation

+

+-- NaNs are undefined in 754r; assume usual processing

+-- NaNs, 0 payload

+dqscb021 scaleb         NaN  1 -> NaN

+dqscb022 scaleb        -NaN -1 -> -NaN

+dqscb023 scaleb        sNaN  1 -> NaN Invalid_operation

+dqscb024 scaleb       -sNaN  1 -> -NaN Invalid_operation

+dqscb025 scaleb    4    NaN    -> NaN

+dqscb026 scaleb -Inf   -NaN    -> -NaN

+dqscb027 scaleb    4   sNaN    -> NaN Invalid_operation

+dqscb028 scaleb  Inf  -sNaN    -> -NaN Invalid_operation

+

+-- non-integer RHS

+dqscb030 scaleb  1.23    1    ->  12.3

+dqscb031 scaleb  1.23    1.00 ->  NaN Invalid_operation

+dqscb032 scaleb  1.23    1.1  ->  NaN Invalid_operation

+dqscb033 scaleb  1.23    1.01 ->  NaN Invalid_operation

+dqscb034 scaleb  1.23    0.01 ->  NaN Invalid_operation

+dqscb035 scaleb  1.23    0.11 ->  NaN Invalid_operation

+dqscb036 scaleb  1.23    0.999999999 ->  NaN Invalid_operation

+dqscb037 scaleb  1.23   -1    ->  0.123

+dqscb0614 scaleb  1.23   -1.00 ->  NaN Invalid_operation

+dqscb039 scaleb  1.23   -1.1  ->  NaN Invalid_operation

+dqscb040 scaleb  1.23   -1.01 ->  NaN Invalid_operation

+dqscb041 scaleb  1.23   -0.01 ->  NaN Invalid_operation

+dqscb042 scaleb  1.23   -0.11 ->  NaN Invalid_operation

+dqscb043 scaleb  1.23   -0.999999999 ->  NaN Invalid_operation

+dqscb044 scaleb  1.23    0.1         ->  NaN Invalid_operation

+dqscb045 scaleb  1.23    1E+1        ->  NaN Invalid_operation

+dqscb046 scaleb  1.23    1.1234E+6   ->  NaN Invalid_operation

+dqscb047 scaleb  1.23    1.123E+4    ->  NaN Invalid_operation

+

+-- out-of range RHS

+dqscb120 scaleb  1.23    12355       ->  Infinity Overflow Inexact Rounded

+dqscb121 scaleb  1.23    12356       ->  Infinity Overflow Inexact Rounded

+dqscb122 scaleb  1.23    12357       ->  NaN Invalid_operation

+dqscb123 scaleb  1.23    12358       ->  NaN Invalid_operation

+dqscb124 scaleb  1.23   -12355       ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqscb125 scaleb  1.23   -12356       ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqscb126 scaleb  1.23   -12357       ->  NaN Invalid_operation

+dqscb127 scaleb  1.23   -12358       ->  NaN Invalid_operation

+

+-- NaNs, non-0 payload

+-- propagating NaNs

+dqscb861 scaleb  NaN01   -Inf     ->  NaN1

+dqscb862 scaleb -NaN02   -1000    -> -NaN2

+dqscb863 scaleb  NaN03    1000    ->  NaN3

+dqscb864 scaleb  NaN04    Inf     ->  NaN4

+dqscb865 scaleb  NaN05    NaN61   ->  NaN5

+dqscb866 scaleb -Inf     -NaN71   -> -NaN71

+dqscb867 scaleb -1000     NaN81   ->  NaN81

+dqscb868 scaleb  1000     NaN91   ->  NaN91

+dqscb869 scaleb  Inf      NaN101  ->  NaN101

+dqscb871 scaleb  sNaN011  -Inf    ->  NaN11  Invalid_operation

+dqscb872 scaleb  sNaN012  -1000   ->  NaN12  Invalid_operation

+dqscb873 scaleb -sNaN013   1000   -> -NaN13  Invalid_operation

+dqscb874 scaleb  sNaN014   NaN171 ->  NaN14  Invalid_operation

+dqscb875 scaleb  sNaN015  sNaN181 ->  NaN15  Invalid_operation

+dqscb876 scaleb  NaN016   sNaN191 ->  NaN191 Invalid_operation

+dqscb877 scaleb -Inf      sNaN201 ->  NaN201 Invalid_operation

+dqscb878 scaleb -1000     sNaN211 ->  NaN211 Invalid_operation

+dqscb879 scaleb  1000    -sNaN221 -> -NaN221 Invalid_operation

+dqscb880 scaleb  Inf      sNaN231 ->  NaN231 Invalid_operation

+dqscb881 scaleb  NaN025   sNaN241 ->  NaN241 Invalid_operation

+

+-- finites

+dqscb051 scaleb          7   -2  -> 0.07

+dqscb052 scaleb         -7   -2  -> -0.07

+dqscb053 scaleb         75   -2  -> 0.75

+dqscb054 scaleb        -75   -2  -> -0.75

+dqscb055 scaleb       7.50   -2  -> 0.0750

+dqscb056 scaleb      -7.50   -2  -> -0.0750

+dqscb057 scaleb       7.500  -2  -> 0.07500

+dqscb058 scaleb      -7.500  -2  -> -0.07500

+dqscb061 scaleb          7   -1  -> 0.7

+dqscb062 scaleb         -7   -1  -> -0.7

+dqscb063 scaleb         75   -1  -> 7.5

+dqscb064 scaleb        -75   -1  -> -7.5

+dqscb065 scaleb       7.50   -1  -> 0.750

+dqscb066 scaleb      -7.50   -1  -> -0.750

+dqscb067 scaleb       7.500  -1  -> 0.7500

+dqscb068 scaleb      -7.500  -1  -> -0.7500

+dqscb071 scaleb          7    0  -> 7

+dqscb072 scaleb         -7    0  -> -7

+dqscb073 scaleb         75    0  -> 75

+dqscb074 scaleb        -75    0  -> -75

+dqscb075 scaleb       7.50    0  -> 7.50

+dqscb076 scaleb      -7.50    0  -> -7.50

+dqscb077 scaleb       7.500   0  -> 7.500

+dqscb078 scaleb      -7.500   0  -> -7.500

+dqscb081 scaleb          7    1  -> 7E+1

+dqscb082 scaleb         -7    1  -> -7E+1

+dqscb083 scaleb         75    1  -> 7.5E+2

+dqscb084 scaleb        -75    1  -> -7.5E+2

+dqscb085 scaleb       7.50    1  -> 75.0

+dqscb086 scaleb      -7.50    1  -> -75.0

+dqscb087 scaleb       7.500   1  -> 75.00

+dqscb088 scaleb      -7.500   1  -> -75.00

+dqscb091 scaleb          7    2  -> 7E+2

+dqscb092 scaleb         -7    2  -> -7E+2

+dqscb093 scaleb         75    2  -> 7.5E+3

+dqscb094 scaleb        -75    2  -> -7.5E+3

+dqscb095 scaleb       7.50    2  -> 750

+dqscb096 scaleb      -7.50    2  -> -750

+dqscb097 scaleb       7.500   2  -> 750.0

+dqscb098 scaleb      -7.500   2  -> -750.0

+

+-- zeros

+dqscb111 scaleb          0  1 -> 0E+1

+dqscb112 scaleb         -0  2 -> -0E+2

+dqscb113 scaleb       0E+4  3 -> 0E+7

+dqscb114 scaleb      -0E+4  4 -> -0E+8

+dqscb115 scaleb     0.0000  5 -> 0E+1

+dqscb116 scaleb    -0.0000  6 -> -0E+2

+dqscb117 scaleb      0E-141 7 -> 0E-134

+dqscb118 scaleb     -0E-141 8 -> -0E-133

+

+-- Nmax, Nmin, Ntiny

+dqscb132 scaleb  9.999999999999999999999999999999999E+6144  +6144 -> Infinity    Overflow Inexact Rounded

+dqscb133 scaleb  9.999999999999999999999999999999999E+6144  +10 -> Infinity     Overflow Inexact Rounded

+dqscb134 scaleb  9.999999999999999999999999999999999E+6144  +1  -> Infinity     Overflow Inexact Rounded

+dqscb135 scaleb  9.999999999999999999999999999999999E+6144   0  -> 9.999999999999999999999999999999999E+6144

+dqscb136 scaleb  9.999999999999999999999999999999999E+6144  -1  -> 9.999999999999999999999999999999999E+6143

+dqscb137 scaleb  1E-6143           +1  -> 1E-6142

+dqscb1614 scaleb  1E-6143           -0  -> 1E-6143

+dqscb139 scaleb  1E-6143           -1  -> 1E-6144          Subnormal

+dqscb140 scaleb  1.000000000000000000000000000000000E-6143  +1  -> 1.000000000000000000000000000000000E-6142

+dqscb141 scaleb  1.000000000000000000000000000000000E-6143   0  -> 1.000000000000000000000000000000000E-6143

+dqscb142 scaleb  1.000000000000000000000000000000000E-6143  -1  -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded

+dqscb143 scaleb  1E-6176          +1  -> 1E-6175         Subnormal

+dqscb144 scaleb  1E-6176          -0  -> 1E-6176         Subnormal

+dqscb145 scaleb  1E-6176          -1  -> 0E-6176         Underflow Subnormal Inexact Rounded Clamped

+

+dqscb150 scaleb  -1E-6176         +1  -> -1E-6175        Subnormal

+dqscb151 scaleb  -1E-6176         -0  -> -1E-6176        Subnormal

+dqscb152 scaleb  -1E-6176         -1  -> -0E-6176        Underflow Subnormal Inexact Rounded Clamped

+dqscb153 scaleb  -1.000000000000000000000000000000000E-6143 +1  -> -1.000000000000000000000000000000000E-6142

+dqscb154 scaleb  -1.000000000000000000000000000000000E-6143 +0  -> -1.000000000000000000000000000000000E-6143

+dqscb155 scaleb  -1.000000000000000000000000000000000E-6143 -1  -> -1.00000000000000000000000000000000E-6144 Subnormal Rounded

+dqscb156 scaleb  -1E-6143          +1  -> -1E-6142

+dqscb157 scaleb  -1E-6143          -0  -> -1E-6143

+dqscb158 scaleb  -1E-6143          -1  -> -1E-6144          Subnormal

+dqscb159 scaleb  -9.999999999999999999999999999999999E+6144 +1  -> -Infinity        Overflow Inexact Rounded

+dqscb160 scaleb  -9.999999999999999999999999999999999E+6144 +0  -> -9.999999999999999999999999999999999E+6144

+dqscb161 scaleb  -9.999999999999999999999999999999999E+6144 -1  -> -9.999999999999999999999999999999999E+6143

+dqscb162 scaleb  -9E+6144          +1  -> -Infinity        Overflow Inexact Rounded

+dqscb163 scaleb  -1E+6144          +1  -> -Infinity        Overflow Inexact Rounded

+

+-- some Origami

+-- (these check that overflow is being done correctly)

+dqscb171 scaleb   1000E+6109  +1 -> 1.000E+6113

+dqscb172 scaleb   1000E+6110  +1 -> 1.000E+6114

+dqscb173 scaleb   1000E+6111  +1 -> 1.0000E+6115                    Clamped

+dqscb174 scaleb   1000E+6112  +1 -> 1.00000E+6116                   Clamped

+dqscb175 scaleb   1000E+6113  +1 -> 1.000000E+6117                  Clamped

+dqscb176 scaleb   1000E+6114  +1 -> 1.0000000E+6118                 Clamped

+dqscb177 scaleb   1000E+6131  +1 -> 1.000000000000000000000000E+6135                Clamped

+dqscb178 scaleb   1000E+6132  +1 -> 1.0000000000000000000000000E+6136               Clamped

+dqscb179 scaleb   1000E+6133  +1 -> 1.00000000000000000000000000E+6137              Clamped

+dqscb180 scaleb   1000E+6134  +1 -> 1.000000000000000000000000000E+6138             Clamped

+dqscb181 scaleb   1000E+6135  +1 -> 1.0000000000000000000000000000E+6139            Clamped

+dqscb182 scaleb   1000E+6136  +1 -> 1.00000000000000000000000000000E+6140           Clamped

+dqscb183 scaleb   1000E+6137  +1 -> 1.000000000000000000000000000000E+6141          Clamped

+dqscb184 scaleb   1000E+6138  +1 -> 1.0000000000000000000000000000000E+6142         Clamped

+dqscb185 scaleb   1000E+6139  +1 -> 1.00000000000000000000000000000000E+6143        Clamped

+dqscb186 scaleb   1000E+6140  +1 -> 1.000000000000000000000000000000000E+6144       Clamped

+dqscb187 scaleb   1000E+6141  +1 -> Infinity    Overflow Inexact Rounded

+

+-- and a few more subnormal truncations

+-- (these check that underflow is being done correctly)

+dqscb221 scaleb  1.000000000000000000000000000000000E-6143   0  -> 1.000000000000000000000000000000000E-6143

+dqscb222 scaleb  1.000000000000000000000000000000000E-6143  -1  -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded

+dqscb223 scaleb  1.000000000000000000000000000000000E-6143  -2  -> 1.0000000000000000000000000000000E-6145 Subnormal Rounded

+dqscb224 scaleb  1.000000000000000000000000000000000E-6143  -3  -> 1.000000000000000000000000000000E-6146 Subnormal Rounded

+dqscb225 scaleb  1.000000000000000000000000000000000E-6143  -4  -> 1.00000000000000000000000000000E-6147 Subnormal Rounded

+dqscb226 scaleb  1.000000000000000000000000000000000E-6143  -5  -> 1.0000000000000000000000000000E-6148 Subnormal Rounded

+dqscb227 scaleb  1.000000000000000000000000000000000E-6143  -6  -> 1.000000000000000000000000000E-6149 Subnormal Rounded

+dqscb228 scaleb  1.000000000000000000000000000000000E-6143  -7  -> 1.00000000000000000000000000E-6150 Subnormal Rounded

+dqscb229 scaleb  1.000000000000000000000000000000000E-6143  -8  -> 1.0000000000000000000000000E-6151 Subnormal Rounded

+dqscb230 scaleb  1.000000000000000000000000000000000E-6143  -9  -> 1.000000000000000000000000E-6152 Subnormal Rounded

+dqscb231 scaleb  1.000000000000000000000000000000000E-6143  -10 -> 1.00000000000000000000000E-6153 Subnormal Rounded

+dqscb232 scaleb  1.000000000000000000000000000000000E-6143  -11 -> 1.0000000000000000000000E-6154 Subnormal Rounded

+dqscb233 scaleb  1.000000000000000000000000000000000E-6143  -12 -> 1.000000000000000000000E-6155 Subnormal Rounded

+dqscb234 scaleb  1.000000000000000000000000000000000E-6143  -13 -> 1.00000000000000000000E-6156 Subnormal Rounded

+dqscb235 scaleb  1.000000000000000000000000000000000E-6143  -14 -> 1.0000000000000000000E-6157 Subnormal Rounded

+dqscb236 scaleb  1.000000000000000000000000000000000E-6143  -15 -> 1.000000000000000000E-6158 Subnormal Rounded

+dqscb237 scaleb  1.000000000000000000000000000000000E-6143  -16 -> 1.00000000000000000E-6159 Subnormal Rounded

+dqscb238 scaleb  1.000000000000000000000000000000000E-6143  -17 -> 1.0000000000000000E-6160 Subnormal Rounded

+dqscb239 scaleb  1.000000000000000000000000000000000E-6143  -18 -> 1.000000000000000E-6161 Subnormal Rounded

+dqscb202 scaleb  1.000000000000000000000000000000000E-6143  -19 -> 1.00000000000000E-6162 Subnormal Rounded

+dqscb203 scaleb  1.000000000000000000000000000000000E-6143  -20 -> 1.0000000000000E-6163 Subnormal Rounded

+dqscb204 scaleb  1.000000000000000000000000000000000E-6143  -21 -> 1.000000000000E-6164 Subnormal Rounded

+dqscb205 scaleb  1.000000000000000000000000000000000E-6143  -22 -> 1.00000000000E-6165 Subnormal Rounded

+dqscb206 scaleb  1.000000000000000000000000000000000E-6143  -23 -> 1.0000000000E-6166 Subnormal Rounded

+dqscb207 scaleb  1.000000000000000000000000000000000E-6143  -24 -> 1.000000000E-6167 Subnormal Rounded

+dqscb208 scaleb  1.000000000000000000000000000000000E-6143  -25 -> 1.00000000E-6168 Subnormal Rounded

+dqscb209 scaleb  1.000000000000000000000000000000000E-6143  -26 -> 1.0000000E-6169 Subnormal Rounded

+dqscb210 scaleb  1.000000000000000000000000000000000E-6143  -27 -> 1.000000E-6170 Subnormal Rounded

+dqscb211 scaleb  1.000000000000000000000000000000000E-6143  -28 -> 1.00000E-6171 Subnormal Rounded

+dqscb212 scaleb  1.000000000000000000000000000000000E-6143  -29 -> 1.0000E-6172 Subnormal Rounded

+dqscb213 scaleb  1.000000000000000000000000000000000E-6143  -30 -> 1.000E-6173 Subnormal Rounded

+dqscb214 scaleb  1.000000000000000000000000000000000E-6143  -31 -> 1.00E-6174 Subnormal Rounded

+dqscb215 scaleb  1.000000000000000000000000000000000E-6143  -32 -> 1.0E-6175 Subnormal Rounded

+dqscb216 scaleb  1.000000000000000000000000000000000E-6143  -33 -> 1E-6176 Subnormal Rounded

+dqscb217 scaleb  1.000000000000000000000000000000000E-6143  -34 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

+dqscb218 scaleb  1.000000000000000000000000000000000E-6143  -35 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped

diff --git a/Lib/test/decimaltestdata/dqShift.decTest b/Lib/test/decimaltestdata/dqShift.decTest
new file mode 100644
index 0000000..33df91f
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqShift.decTest
@@ -0,0 +1,298 @@
+------------------------------------------------------------------------

+-- dqShift.decTest -- shift decQuad coefficient left or right         --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check

+dqshi001 shift                                   0    0  ->  0

+dqshi002 shift                                   0    2  ->  0

+dqshi003 shift                                   1    2  ->  100

+dqshi004 shift                                   1   33  ->  1000000000000000000000000000000000

+dqshi005 shift                                   1   34  ->  0

+dqshi006 shift                                   1   -1  ->  0

+dqshi007 shift                                   0   -2  ->  0

+dqshi008 shift  1234567890123456789012345678901234   -1  ->  123456789012345678901234567890123

+dqshi009 shift  1234567890123456789012345678901234   -33 ->  1

+dqshi010 shift  1234567890123456789012345678901234   -34 ->  0

+dqshi011 shift  9934567890123456789012345678901234   -33 ->  9

+dqshi012 shift  9934567890123456789012345678901234   -34 ->  0

+

+-- rhs must be an integer

+dqshi015 shift        1    1.5    -> NaN Invalid_operation

+dqshi016 shift        1    1.0    -> NaN Invalid_operation

+dqshi017 shift        1    0.1    -> NaN Invalid_operation

+dqshi018 shift        1    0.0    -> NaN Invalid_operation

+dqshi019 shift        1    1E+1   -> NaN Invalid_operation

+dqshi020 shift        1    1E+99  -> NaN Invalid_operation

+dqshi021 shift        1    Inf    -> NaN Invalid_operation

+dqshi022 shift        1    -Inf   -> NaN Invalid_operation

+-- and |rhs| <= precision

+dqshi025 shift        1    -1000  -> NaN Invalid_operation

+dqshi026 shift        1    -35    -> NaN Invalid_operation

+dqshi027 shift        1     35    -> NaN Invalid_operation

+dqshi028 shift        1     1000  -> NaN Invalid_operation

+

+-- full shifting pattern

+dqshi030 shift  1234567890123456789012345678901234         -34  -> 0

+dqshi031 shift  1234567890123456789012345678901234         -33  -> 1

+dqshi032 shift  1234567890123456789012345678901234         -32  -> 12

+dqshi033 shift  1234567890123456789012345678901234         -31  -> 123

+dqshi034 shift  1234567890123456789012345678901234         -30  -> 1234

+dqshi035 shift  1234567890123456789012345678901234         -29  -> 12345

+dqshi036 shift  1234567890123456789012345678901234         -28  -> 123456

+dqshi037 shift  1234567890123456789012345678901234         -27  -> 1234567

+dqshi038 shift  1234567890123456789012345678901234         -26  -> 12345678

+dqshi039 shift  1234567890123456789012345678901234         -25  -> 123456789

+dqshi040 shift  1234567890123456789012345678901234         -24  -> 1234567890

+dqshi041 shift  1234567890123456789012345678901234         -23  -> 12345678901

+dqshi042 shift  1234567890123456789012345678901234         -22  -> 123456789012

+dqshi043 shift  1234567890123456789012345678901234         -21  -> 1234567890123

+dqshi044 shift  1234567890123456789012345678901234         -20  -> 12345678901234

+dqshi045 shift  1234567890123456789012345678901234         -19  -> 123456789012345

+dqshi047 shift  1234567890123456789012345678901234         -18  -> 1234567890123456

+dqshi048 shift  1234567890123456789012345678901234         -17  -> 12345678901234567

+dqshi049 shift  1234567890123456789012345678901234         -16  -> 123456789012345678

+dqshi050 shift  1234567890123456789012345678901234         -15  -> 1234567890123456789

+dqshi051 shift  1234567890123456789012345678901234         -14  -> 12345678901234567890

+dqshi052 shift  1234567890123456789012345678901234         -13  -> 123456789012345678901

+dqshi053 shift  1234567890123456789012345678901234         -12  -> 1234567890123456789012

+dqshi054 shift  1234567890123456789012345678901234         -11  -> 12345678901234567890123

+dqshi055 shift  1234567890123456789012345678901234         -10  -> 123456789012345678901234

+dqshi056 shift  1234567890123456789012345678901234         -9   -> 1234567890123456789012345

+dqshi057 shift  1234567890123456789012345678901234         -8   -> 12345678901234567890123456

+dqshi058 shift  1234567890123456789012345678901234         -7   -> 123456789012345678901234567

+dqshi059 shift  1234567890123456789012345678901234         -6   -> 1234567890123456789012345678

+dqshi060 shift  1234567890123456789012345678901234         -5   -> 12345678901234567890123456789

+dqshi061 shift  1234567890123456789012345678901234         -4   -> 123456789012345678901234567890

+dqshi062 shift  1234567890123456789012345678901234         -3   -> 1234567890123456789012345678901

+dqshi063 shift  1234567890123456789012345678901234         -2   -> 12345678901234567890123456789012

+dqshi064 shift  1234567890123456789012345678901234         -1   -> 123456789012345678901234567890123

+dqshi065 shift  1234567890123456789012345678901234         -0   -> 1234567890123456789012345678901234

+

+dqshi066 shift  1234567890123456789012345678901234         +0   -> 1234567890123456789012345678901234

+dqshi067 shift  1234567890123456789012345678901234         +1   -> 2345678901234567890123456789012340

+dqshi068 shift  1234567890123456789012345678901234         +2   -> 3456789012345678901234567890123400

+dqshi069 shift  1234567890123456789012345678901234         +3   -> 4567890123456789012345678901234000

+dqshi070 shift  1234567890123456789012345678901234         +4   -> 5678901234567890123456789012340000

+dqshi071 shift  1234567890123456789012345678901234         +5   -> 6789012345678901234567890123400000

+dqshi072 shift  1234567890123456789012345678901234         +6   -> 7890123456789012345678901234000000

+dqshi073 shift  1234567890123456789012345678901234         +7   -> 8901234567890123456789012340000000

+dqshi074 shift  1234567890123456789012345678901234         +8   -> 9012345678901234567890123400000000

+dqshi075 shift  1234567890123456789012345678901234         +9   ->  123456789012345678901234000000000

+dqshi076 shift  1234567890123456789012345678901234         +10  -> 1234567890123456789012340000000000

+dqshi077 shift  1234567890123456789012345678901234         +11  -> 2345678901234567890123400000000000

+dqshi078 shift  1234567890123456789012345678901234         +12  -> 3456789012345678901234000000000000

+dqshi079 shift  1234567890123456789012345678901234         +13  -> 4567890123456789012340000000000000

+dqshi080 shift  1234567890123456789012345678901234         +14  -> 5678901234567890123400000000000000

+dqshi081 shift  1234567890123456789012345678901234         +15  -> 6789012345678901234000000000000000

+dqshi082 shift  1234567890123456789012345678901234         +16  -> 7890123456789012340000000000000000

+dqshi083 shift  1234567890123456789012345678901234         +17  -> 8901234567890123400000000000000000

+dqshi084 shift  1234567890123456789012345678901234         +18  -> 9012345678901234000000000000000000

+dqshi085 shift  1234567890123456789012345678901234         +19  ->  123456789012340000000000000000000

+dqshi086 shift  1234567890123456789012345678901234         +20  -> 1234567890123400000000000000000000

+dqshi087 shift  1234567890123456789012345678901234         +21  -> 2345678901234000000000000000000000

+dqshi088 shift  1234567890123456789012345678901234         +22  -> 3456789012340000000000000000000000

+dqshi089 shift  1234567890123456789012345678901234         +23  -> 4567890123400000000000000000000000

+dqshi090 shift  1234567890123456789012345678901234         +24  -> 5678901234000000000000000000000000

+dqshi091 shift  1234567890123456789012345678901234         +25  -> 6789012340000000000000000000000000

+dqshi092 shift  1234567890123456789012345678901234         +26  -> 7890123400000000000000000000000000

+dqshi093 shift  1234567890123456789012345678901234         +27  -> 8901234000000000000000000000000000

+dqshi094 shift  1234567890123456789012345678901234         +28  -> 9012340000000000000000000000000000

+dqshi095 shift  1234567890123456789012345678901234         +29  ->  123400000000000000000000000000000

+dqshi096 shift  1234567890123456789012345678901234         +30  -> 1234000000000000000000000000000000

+dqshi097 shift  1234567890123456789012345678901234         +31  -> 2340000000000000000000000000000000

+dqshi098 shift  1234567890123456789012345678901234         +32  -> 3400000000000000000000000000000000

+dqshi099 shift  1234567890123456789012345678901234         +33  -> 4000000000000000000000000000000000

+dqshi100 shift  1234567890123456789012345678901234         +34  -> 0

+

+-- zeros

+dqshi270 shift  0E-10              +29   ->   0E-10

+dqshi271 shift  0E-10              -29   ->   0E-10

+dqshi272 shift  0.000              +29   ->   0.000

+dqshi273 shift  0.000              -29   ->   0.000

+dqshi274 shift  0E+10              +29   ->   0E+10

+dqshi275 shift  0E+10              -29   ->   0E+10

+dqshi276 shift -0E-10              +29   ->  -0E-10

+dqshi277 shift -0E-10              -29   ->  -0E-10

+dqshi278 shift -0.000              +29   ->  -0.000

+dqshi279 shift -0.000              -29   ->  -0.000

+dqshi280 shift -0E+10              +29   ->  -0E+10

+dqshi281 shift -0E+10              -29   ->  -0E+10

+

+-- Nmax, Nmin, Ntiny

+dqshi141 shift  9.999999999999999999999999999999999E+6144     -1  -> 9.99999999999999999999999999999999E+6143

+dqshi142 shift  9.999999999999999999999999999999999E+6144     -33 -> 9E+6111

+dqshi143 shift  9.999999999999999999999999999999999E+6144      1  -> 9.999999999999999999999999999999990E+6144

+dqshi144 shift  9.999999999999999999999999999999999E+6144      33 -> 9.000000000000000000000000000000000E+6144

+dqshi145 shift  1E-6143                                       -1  -> 0E-6143

+dqshi146 shift  1E-6143                                       -33 -> 0E-6143

+dqshi147 shift  1E-6143                                        1  -> 1.0E-6142

+dqshi148 shift  1E-6143                                        33 -> 1.000000000000000000000000000000000E-6110

+dqshi151 shift  1.000000000000000000000000000000000E-6143     -1  -> 1.00000000000000000000000000000000E-6144

+dqshi152 shift  1.000000000000000000000000000000000E-6143     -33 -> 1E-6176

+dqshi153 shift  1.000000000000000000000000000000000E-6143      1  -> 0E-6176

+dqshi154 shift  1.000000000000000000000000000000000E-6143      33 -> 0E-6176

+dqshi155 shift  9.000000000000000000000000000000000E-6143     -1  -> 9.00000000000000000000000000000000E-6144

+dqshi156 shift  9.000000000000000000000000000000000E-6143     -33 -> 9E-6176

+dqshi157 shift  9.000000000000000000000000000000000E-6143      1  -> 0E-6176

+dqshi158 shift  9.000000000000000000000000000000000E-6143      33 -> 0E-6176

+dqshi160 shift  1E-6176                                       -1  -> 0E-6176

+dqshi161 shift  1E-6176                                       -33 -> 0E-6176

+dqshi162 shift  1E-6176                                        1  -> 1.0E-6175

+dqshi163 shift  1E-6176                                        33 -> 1.000000000000000000000000000000000E-6143

+--  negatives

+dqshi171 shift -9.999999999999999999999999999999999E+6144     -1  -> -9.99999999999999999999999999999999E+6143

+dqshi172 shift -9.999999999999999999999999999999999E+6144     -33 -> -9E+6111

+dqshi173 shift -9.999999999999999999999999999999999E+6144      1  -> -9.999999999999999999999999999999990E+6144

+dqshi174 shift -9.999999999999999999999999999999999E+6144      33 -> -9.000000000000000000000000000000000E+6144

+dqshi175 shift -1E-6143                                       -1  -> -0E-6143

+dqshi176 shift -1E-6143                                       -33 -> -0E-6143

+dqshi177 shift -1E-6143                                        1  -> -1.0E-6142

+dqshi178 shift -1E-6143                                        33 -> -1.000000000000000000000000000000000E-6110

+dqshi181 shift -1.000000000000000000000000000000000E-6143     -1  -> -1.00000000000000000000000000000000E-6144

+dqshi182 shift -1.000000000000000000000000000000000E-6143     -33 -> -1E-6176

+dqshi183 shift -1.000000000000000000000000000000000E-6143      1  -> -0E-6176

+dqshi184 shift -1.000000000000000000000000000000000E-6143      33 -> -0E-6176

+dqshi185 shift -9.000000000000000000000000000000000E-6143     -1  -> -9.00000000000000000000000000000000E-6144

+dqshi186 shift -9.000000000000000000000000000000000E-6143     -33 -> -9E-6176

+dqshi187 shift -9.000000000000000000000000000000000E-6143      1  -> -0E-6176

+dqshi188 shift -9.000000000000000000000000000000000E-6143      33 -> -0E-6176

+dqshi190 shift -1E-6176                                       -1  -> -0E-6176

+dqshi191 shift -1E-6176                                       -33 -> -0E-6176

+dqshi192 shift -1E-6176                                        1  -> -1.0E-6175

+dqshi193 shift -1E-6176                                        33 -> -1.000000000000000000000000000000000E-6143

+

+-- more negatives (of sanities)

+dqshi201 shift                                  -0    0  -> -0

+dqshi202 shift                                  -0    2  -> -0

+dqshi203 shift                                  -1    2  -> -100

+dqshi204 shift                                  -1   33  -> -1000000000000000000000000000000000

+dqshi205 shift                                  -1   34  -> -0

+dqshi206 shift                                  -1   -1  -> -0

+dqshi207 shift                                  -0   -2  -> -0

+dqshi208 shift -1234567890123456789012345678901234   -1  -> -123456789012345678901234567890123

+dqshi209 shift -1234567890123456789012345678901234   -33 -> -1

+dqshi210 shift -1234567890123456789012345678901234   -34 -> -0

+dqshi211 shift -9934567890123456789012345678901234   -33 -> -9

+dqshi212 shift -9934567890123456789012345678901234   -34 -> -0

+

+

+-- Specials; NaNs are handled as usual

+dqshi781 shift -Inf  -8     -> -Infinity

+dqshi782 shift -Inf  -1     -> -Infinity

+dqshi783 shift -Inf  -0     -> -Infinity

+dqshi784 shift -Inf   0     -> -Infinity

+dqshi785 shift -Inf   1     -> -Infinity

+dqshi786 shift -Inf   8     -> -Infinity

+dqshi787 shift -1000 -Inf   -> NaN Invalid_operation

+dqshi788 shift -Inf  -Inf   -> NaN Invalid_operation

+dqshi789 shift -1    -Inf   -> NaN Invalid_operation

+dqshi790 shift -0    -Inf   -> NaN Invalid_operation

+dqshi791 shift  0    -Inf   -> NaN Invalid_operation

+dqshi792 shift  1    -Inf   -> NaN Invalid_operation

+dqshi793 shift  1000 -Inf   -> NaN Invalid_operation

+dqshi794 shift  Inf  -Inf   -> NaN Invalid_operation

+

+dqshi800 shift  Inf  -Inf   -> NaN Invalid_operation

+dqshi801 shift  Inf  -8     -> Infinity

+dqshi802 shift  Inf  -1     -> Infinity

+dqshi803 shift  Inf  -0     -> Infinity

+dqshi804 shift  Inf   0     -> Infinity

+dqshi805 shift  Inf   1     -> Infinity

+dqshi806 shift  Inf   8     -> Infinity

+dqshi807 shift  Inf   Inf   -> NaN Invalid_operation

+dqshi808 shift -1000  Inf   -> NaN Invalid_operation

+dqshi809 shift -Inf   Inf   -> NaN Invalid_operation

+dqshi810 shift -1     Inf   -> NaN Invalid_operation

+dqshi811 shift -0     Inf   -> NaN Invalid_operation

+dqshi812 shift  0     Inf   -> NaN Invalid_operation

+dqshi813 shift  1     Inf   -> NaN Invalid_operation

+dqshi814 shift  1000  Inf   -> NaN Invalid_operation

+dqshi815 shift  Inf   Inf   -> NaN Invalid_operation

+

+dqshi821 shift  NaN -Inf    ->  NaN

+dqshi822 shift  NaN -1000   ->  NaN

+dqshi823 shift  NaN -1      ->  NaN

+dqshi824 shift  NaN -0      ->  NaN

+dqshi825 shift  NaN  0      ->  NaN

+dqshi826 shift  NaN  1      ->  NaN

+dqshi827 shift  NaN  1000   ->  NaN

+dqshi828 shift  NaN  Inf    ->  NaN

+dqshi829 shift  NaN  NaN    ->  NaN

+dqshi830 shift -Inf  NaN    ->  NaN

+dqshi831 shift -1000 NaN    ->  NaN

+dqshi832 shift -1    NaN    ->  NaN

+dqshi833 shift -0    NaN    ->  NaN

+dqshi834 shift  0    NaN    ->  NaN

+dqshi835 shift  1    NaN    ->  NaN

+dqshi836 shift  1000 NaN    ->  NaN

+dqshi837 shift  Inf  NaN    ->  NaN

+

+dqshi841 shift  sNaN -Inf   ->  NaN  Invalid_operation

+dqshi842 shift  sNaN -1000  ->  NaN  Invalid_operation

+dqshi843 shift  sNaN -1     ->  NaN  Invalid_operation

+dqshi844 shift  sNaN -0     ->  NaN  Invalid_operation

+dqshi845 shift  sNaN  0     ->  NaN  Invalid_operation

+dqshi846 shift  sNaN  1     ->  NaN  Invalid_operation

+dqshi847 shift  sNaN  1000  ->  NaN  Invalid_operation

+dqshi848 shift  sNaN  NaN   ->  NaN  Invalid_operation

+dqshi849 shift  sNaN sNaN   ->  NaN  Invalid_operation

+dqshi850 shift  NaN  sNaN   ->  NaN  Invalid_operation

+dqshi851 shift -Inf  sNaN   ->  NaN  Invalid_operation

+dqshi852 shift -1000 sNaN   ->  NaN  Invalid_operation

+dqshi853 shift -1    sNaN   ->  NaN  Invalid_operation

+dqshi854 shift -0    sNaN   ->  NaN  Invalid_operation

+dqshi855 shift  0    sNaN   ->  NaN  Invalid_operation

+dqshi856 shift  1    sNaN   ->  NaN  Invalid_operation

+dqshi857 shift  1000 sNaN   ->  NaN  Invalid_operation

+dqshi858 shift  Inf  sNaN   ->  NaN  Invalid_operation

+dqshi859 shift  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqshi861 shift  NaN1   -Inf    ->  NaN1

+dqshi862 shift +NaN2   -1000   ->  NaN2

+dqshi863 shift  NaN3    1000   ->  NaN3

+dqshi864 shift  NaN4    Inf    ->  NaN4

+dqshi865 shift  NaN5   +NaN6   ->  NaN5

+dqshi866 shift -Inf     NaN7   ->  NaN7

+dqshi867 shift -1000    NaN8   ->  NaN8

+dqshi868 shift  1000    NaN9   ->  NaN9

+dqshi869 shift  Inf    +NaN10  ->  NaN10

+dqshi871 shift  sNaN11  -Inf   ->  NaN11  Invalid_operation

+dqshi872 shift  sNaN12  -1000  ->  NaN12  Invalid_operation

+dqshi873 shift  sNaN13   1000  ->  NaN13  Invalid_operation

+dqshi874 shift  sNaN14   NaN17 ->  NaN14  Invalid_operation

+dqshi875 shift  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+dqshi876 shift  NaN16   sNaN19 ->  NaN19  Invalid_operation

+dqshi877 shift -Inf    +sNaN20 ->  NaN20  Invalid_operation

+dqshi878 shift -1000    sNaN21 ->  NaN21  Invalid_operation

+dqshi879 shift  1000    sNaN22 ->  NaN22  Invalid_operation

+dqshi880 shift  Inf     sNaN23 ->  NaN23  Invalid_operation

+dqshi881 shift +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+dqshi882 shift -NaN26    NaN28 -> -NaN26

+dqshi883 shift -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+dqshi884 shift  1000    -NaN30 -> -NaN30

+dqshi885 shift  1000   -sNaN31 -> -NaN31  Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqSubtract.decTest b/Lib/test/decimaltestdata/dqSubtract.decTest
new file mode 100644
index 0000000..d2df184
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqSubtract.decTest
@@ -0,0 +1,635 @@
+------------------------------------------------------------------------

+-- dqSubtract.decTest -- decQuad subtraction                          --

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

+

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

+

+-- [first group are 'quick confidence check']

+dqsub001 subtract  0   0  -> '0'

+dqsub002 subtract  1   1  -> '0'

+dqsub003 subtract  1   2  -> '-1'

+dqsub004 subtract  2   1  -> '1'

+dqsub005 subtract  2   2  -> '0'

+dqsub006 subtract  3   2  -> '1'

+dqsub007 subtract  2   3  -> '-1'

+

+dqsub011 subtract -0   0  -> '-0'

+dqsub012 subtract -1   1  -> '-2'

+dqsub013 subtract -1   2  -> '-3'

+dqsub014 subtract -2   1  -> '-3'

+dqsub015 subtract -2   2  -> '-4'

+dqsub016 subtract -3   2  -> '-5'

+dqsub017 subtract -2   3  -> '-5'

+

+dqsub021 subtract  0  -0  -> '0'

+dqsub022 subtract  1  -1  -> '2'

+dqsub023 subtract  1  -2  -> '3'

+dqsub024 subtract  2  -1  -> '3'

+dqsub025 subtract  2  -2  -> '4'

+dqsub026 subtract  3  -2  -> '5'

+dqsub027 subtract  2  -3  -> '5'

+

+dqsub030 subtract  11  1  -> 10

+dqsub031 subtract  10  1  ->  9

+dqsub032 subtract  9   1  ->  8

+dqsub033 subtract  1   1  ->  0

+dqsub034 subtract  0   1  -> -1

+dqsub035 subtract -1   1  -> -2

+dqsub036 subtract -9   1  -> -10

+dqsub037 subtract -10  1  -> -11

+dqsub038 subtract -11  1  -> -12

+

+dqsub040 subtract '5.75' '3.3'  -> '2.45'

+dqsub041 subtract '5'    '-3'   -> '8'

+dqsub042 subtract '-5'   '-3'   -> '-2'

+dqsub043 subtract '-7'   '2.5'  -> '-9.5'

+dqsub044 subtract '0.7'  '0.3'  -> '0.4'

+dqsub045 subtract '1.3'  '0.3'  -> '1.0'

+dqsub046 subtract '1.25' '1.25' -> '0.00'

+

+dqsub050 subtract '1.23456789'    '1.00000000' -> '0.23456789'

+dqsub051 subtract '1.23456789'    '1.00000089' -> '0.23456700'

+

+dqsub060 subtract '70'    '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded

+dqsub061 subtract '700'    '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded

+dqsub062 subtract '7000'    '10000e+34' -> '-9.999999999999999999999999999999999E+37' Inexact Rounded

+dqsub063 subtract '70000'    '10000e+34' -> '-9.999999999999999999999999999999993E+37' Rounded

+dqsub064 subtract '700000'    '10000e+34' -> '-9.999999999999999999999999999999930E+37' Rounded

+  -- symmetry:

+dqsub065 subtract '10000e+34'    '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqsub066 subtract '10000e+34'    '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded

+dqsub067 subtract '10000e+34'    '7000' -> '9.999999999999999999999999999999999E+37' Inexact Rounded

+dqsub068 subtract '10000e+34'    '70000' -> '9.999999999999999999999999999999993E+37' Rounded

+dqsub069 subtract '10000e+34'    '700000' -> '9.999999999999999999999999999999930E+37' Rounded

+

+  -- some of the next group are really constructor tests

+dqsub090 subtract '00.0'    '0.0'  -> '0.0'

+dqsub091 subtract '00.0'    '0.00' -> '0.00'

+dqsub092 subtract '0.00'    '00.0' -> '0.00'

+dqsub093 subtract '00.0'    '0.00' -> '0.00'

+dqsub094 subtract '0.00'    '00.0' -> '0.00'

+dqsub095 subtract '3'    '.3'   -> '2.7'

+dqsub096 subtract '3.'   '.3'   -> '2.7'

+dqsub097 subtract '3.0'  '.3'   -> '2.7'

+dqsub098 subtract '3.00' '.3'   -> '2.70'

+dqsub099 subtract '3'    '3'    -> '0'

+dqsub100 subtract '3'    '+3'   -> '0'

+dqsub101 subtract '3'    '-3'   -> '6'

+dqsub102 subtract '3'    '0.3'  -> '2.7'

+dqsub103 subtract '3.'   '0.3'  -> '2.7'

+dqsub104 subtract '3.0'  '0.3'  -> '2.7'

+dqsub105 subtract '3.00' '0.3'  -> '2.70'

+dqsub106 subtract '3'    '3.0'  -> '0.0'

+dqsub107 subtract '3'    '+3.0' -> '0.0'

+dqsub108 subtract '3'    '-3.0' -> '6.0'

+

+-- the above all from add; massaged and extended.  Now some new ones...

+-- [particularly important for comparisons]

+-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7

+-- with input rounding.

+dqsub120 subtract  '10.23456784'    '10.23456789'  -> '-5E-8'

+dqsub121 subtract  '10.23456785'    '10.23456789'  -> '-4E-8'

+dqsub122 subtract  '10.23456786'    '10.23456789'  -> '-3E-8'

+dqsub123 subtract  '10.23456787'    '10.23456789'  -> '-2E-8'

+dqsub124 subtract  '10.23456788'    '10.23456789'  -> '-1E-8'

+dqsub125 subtract  '10.23456789'    '10.23456789'  -> '0E-8'

+dqsub126 subtract  '10.23456790'    '10.23456789'  -> '1E-8'

+dqsub127 subtract  '10.23456791'    '10.23456789'  -> '2E-8'

+dqsub128 subtract  '10.23456792'    '10.23456789'  -> '3E-8'

+dqsub129 subtract  '10.23456793'    '10.23456789'  -> '4E-8'

+dqsub130 subtract  '10.23456794'    '10.23456789'  -> '5E-8'

+dqsub131 subtract  '10.23456781'    '10.23456786'  -> '-5E-8'

+dqsub132 subtract  '10.23456782'    '10.23456786'  -> '-4E-8'

+dqsub133 subtract  '10.23456783'    '10.23456786'  -> '-3E-8'

+dqsub134 subtract  '10.23456784'    '10.23456786'  -> '-2E-8'

+dqsub135 subtract  '10.23456785'    '10.23456786'  -> '-1E-8'

+dqsub136 subtract  '10.23456786'    '10.23456786'  -> '0E-8'

+dqsub137 subtract  '10.23456787'    '10.23456786'  -> '1E-8'

+dqsub138 subtract  '10.23456788'    '10.23456786'  -> '2E-8'

+dqsub139 subtract  '10.23456789'    '10.23456786'  -> '3E-8'

+dqsub140 subtract  '10.23456790'    '10.23456786'  -> '4E-8'

+dqsub141 subtract  '10.23456791'    '10.23456786'  -> '5E-8'

+dqsub142 subtract  '1'              '0.999999999'  -> '1E-9'

+dqsub143 subtract  '0.999999999'    '1'            -> '-1E-9'

+dqsub144 subtract  '-10.23456780'   '-10.23456786' -> '6E-8'

+dqsub145 subtract  '-10.23456790'   '-10.23456786' -> '-4E-8'

+dqsub146 subtract  '-10.23456791'   '-10.23456786' -> '-5E-8'

+

+-- additional scaled arithmetic tests [0.97 problem]

+dqsub160 subtract '0'     '.1'      -> '-0.1'

+dqsub161 subtract '00'    '.97983'  -> '-0.97983'

+dqsub162 subtract '0'     '.9'      -> '-0.9'

+dqsub163 subtract '0'     '0.102'   -> '-0.102'

+dqsub164 subtract '0'     '.4'      -> '-0.4'

+dqsub165 subtract '0'     '.307'    -> '-0.307'

+dqsub166 subtract '0'     '.43822'  -> '-0.43822'

+dqsub167 subtract '0'     '.911'    -> '-0.911'

+dqsub168 subtract '.0'    '.02'     -> '-0.02'

+dqsub169 subtract '00'    '.392'    -> '-0.392'

+dqsub170 subtract '0'     '.26'     -> '-0.26'

+dqsub171 subtract '0'     '0.51'    -> '-0.51'

+dqsub172 subtract '0'     '.2234'   -> '-0.2234'

+dqsub173 subtract '0'     '.2'      -> '-0.2'

+dqsub174 subtract '.0'    '.0008'   -> '-0.0008'

+-- 0. on left

+dqsub180 subtract '0.0'     '-.1'      -> '0.1'

+dqsub181 subtract '0.00'    '-.97983'  -> '0.97983'

+dqsub182 subtract '0.0'     '-.9'      -> '0.9'

+dqsub183 subtract '0.0'     '-0.102'   -> '0.102'

+dqsub184 subtract '0.0'     '-.4'      -> '0.4'

+dqsub185 subtract '0.0'     '-.307'    -> '0.307'

+dqsub186 subtract '0.0'     '-.43822'  -> '0.43822'

+dqsub187 subtract '0.0'     '-.911'    -> '0.911'

+dqsub188 subtract '0.0'     '-.02'     -> '0.02'

+dqsub189 subtract '0.00'    '-.392'    -> '0.392'

+dqsub190 subtract '0.0'     '-.26'     -> '0.26'

+dqsub191 subtract '0.0'     '-0.51'    -> '0.51'

+dqsub192 subtract '0.0'     '-.2234'   -> '0.2234'

+dqsub193 subtract '0.0'     '-.2'      -> '0.2'

+dqsub194 subtract '0.0'     '-.0008'   -> '0.0008'

+-- negatives of same

+dqsub200 subtract '0'     '-.1'      -> '0.1'

+dqsub201 subtract '00'    '-.97983'  -> '0.97983'

+dqsub202 subtract '0'     '-.9'      -> '0.9'

+dqsub203 subtract '0'     '-0.102'   -> '0.102'

+dqsub204 subtract '0'     '-.4'      -> '0.4'

+dqsub205 subtract '0'     '-.307'    -> '0.307'

+dqsub206 subtract '0'     '-.43822'  -> '0.43822'

+dqsub207 subtract '0'     '-.911'    -> '0.911'

+dqsub208 subtract '.0'    '-.02'     -> '0.02'

+dqsub209 subtract '00'    '-.392'    -> '0.392'

+dqsub210 subtract '0'     '-.26'     -> '0.26'

+dqsub211 subtract '0'     '-0.51'    -> '0.51'

+dqsub212 subtract '0'     '-.2234'   -> '0.2234'

+dqsub213 subtract '0'     '-.2'      -> '0.2'

+dqsub214 subtract '.0'    '-.0008'   -> '0.0008'

+

+-- more fixed, LHS swaps [really the same as testcases under add]

+dqsub220 subtract '-56267E-12' 0  -> '-5.6267E-8'

+dqsub221 subtract '-56267E-11' 0  -> '-5.6267E-7'

+dqsub222 subtract '-56267E-10' 0  -> '-0.0000056267'

+dqsub223 subtract '-56267E-9'  0  -> '-0.000056267'

+dqsub224 subtract '-56267E-8'  0  -> '-0.00056267'

+dqsub225 subtract '-56267E-7'  0  -> '-0.0056267'

+dqsub226 subtract '-56267E-6'  0  -> '-0.056267'

+dqsub227 subtract '-56267E-5'  0  -> '-0.56267'

+dqsub228 subtract '-56267E-2'  0  -> '-562.67'

+dqsub229 subtract '-56267E-1'  0  -> '-5626.7'

+dqsub230 subtract '-56267E-0'  0  -> '-56267'

+-- symmetry ...

+dqsub240 subtract 0 '-56267E-12'  -> '5.6267E-8'

+dqsub241 subtract 0 '-56267E-11'  -> '5.6267E-7'

+dqsub242 subtract 0 '-56267E-10'  -> '0.0000056267'

+dqsub243 subtract 0 '-56267E-9'   -> '0.000056267'

+dqsub244 subtract 0 '-56267E-8'   -> '0.00056267'

+dqsub245 subtract 0 '-56267E-7'   -> '0.0056267'

+dqsub246 subtract 0 '-56267E-6'   -> '0.056267'

+dqsub247 subtract 0 '-56267E-5'   -> '0.56267'

+dqsub248 subtract 0 '-56267E-2'   -> '562.67'

+dqsub249 subtract 0 '-56267E-1'   -> '5626.7'

+dqsub250 subtract 0 '-56267E-0'   -> '56267'

+

+-- now some more from the 'new' add

+dqsub301 subtract '1.23456789'  '1.00000000' -> '0.23456789'

+dqsub302 subtract '1.23456789'  '1.00000011' -> '0.23456778'

+

+-- some carrying effects

+dqsub321 subtract '0.9998'  '0.0000' -> '0.9998'

+dqsub322 subtract '0.9998'  '0.0001' -> '0.9997'

+dqsub323 subtract '0.9998'  '0.0002' -> '0.9996'

+dqsub324 subtract '0.9998'  '0.0003' -> '0.9995'

+dqsub325 subtract '0.9998'  '-0.0000' -> '0.9998'

+dqsub326 subtract '0.9998'  '-0.0001' -> '0.9999'

+dqsub327 subtract '0.9998'  '-0.0002' -> '1.0000'

+dqsub328 subtract '0.9998'  '-0.0003' -> '1.0001'

+

+-- internal boundaries

+dqsub346 subtract '10000e+9'  '7'   -> '9999999999993'

+dqsub347 subtract '10000e+9'  '70'   -> '9999999999930'

+dqsub348 subtract '10000e+9'  '700'   -> '9999999999300'

+dqsub349 subtract '10000e+9'  '7000'   -> '9999999993000'

+dqsub350 subtract '10000e+9'  '70000'   -> '9999999930000'

+dqsub351 subtract '10000e+9'  '700000'   -> '9999999300000'

+dqsub352 subtract '7' '10000e+9'   -> '-9999999999993'

+dqsub353 subtract '70' '10000e+9'   -> '-9999999999930'

+dqsub354 subtract '700' '10000e+9'   -> '-9999999999300'

+dqsub355 subtract '7000' '10000e+9'   -> '-9999999993000'

+dqsub356 subtract '70000' '10000e+9'   -> '-9999999930000'

+dqsub357 subtract '700000' '10000e+9'   -> '-9999999300000'

+

+-- zero preservation

+dqsub361 subtract 1 '0.0001' -> '0.9999'

+dqsub362 subtract 1 '0.00001' -> '0.99999'

+dqsub363 subtract 1 '0.000001' -> '0.999999'

+dqsub364 subtract 1 '0.0000000000000000000000000000000001' -> '0.9999999999999999999999999999999999'

+dqsub365 subtract 1 '0.00000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded

+dqsub366 subtract 1 '0.000000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded

+

+-- some funny zeros [in case of bad signum]

+dqsub370 subtract 1  0  -> 1

+dqsub371 subtract 1 0.  -> 1

+dqsub372 subtract 1  .0 -> 1.0

+dqsub373 subtract 1 0.0 -> 1.0

+dqsub374 subtract  0  1 -> -1

+dqsub375 subtract 0.  1 -> -1

+dqsub376 subtract  .0 1 -> -1.0

+dqsub377 subtract 0.0 1 -> -1.0

+

+-- leading 0 digit before round

+dqsub910 subtract -103519362 -51897955.3 -> -51621406.7

+dqsub911 subtract 159579.444 89827.5229 -> 69751.9211

+

+dqsub920 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234566 -> 299.9999999999999999999999999999999 Inexact Rounded

+dqsub921 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234565 -> 300.0000000000000000000000000000000 Inexact Rounded

+dqsub922 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234565 ->  99.99999999999999999999999999999995

+dqsub923 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234564 ->  99.99999999999999999999999999999996

+dqsub924 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234540 -> 100.0000000000000000000000000000002 Rounded

+dqsub925 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234560 ->  90.00000000000000000000000000000000

+dqsub926 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234561 ->  89.99999999999999999999999999999999

+dqsub927 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234566 ->  89.99999999999999999999999999999994

+dqsub928 subtract 101.0000000000000000000000000123456 91.00000000000000000000000001234566 ->   9.99999999999999999999999999999994

+dqsub929 subtract 101.0000000000000000000000000123456 99.00000000000000000000000001234566 ->   1.99999999999999999999999999999994

+

+-- more LHS swaps [were fixed]

+dqsub390 subtract '-56267E-10'   0 ->  '-0.0000056267'

+dqsub391 subtract '-56267E-6'    0 ->  '-0.056267'

+dqsub392 subtract '-56267E-5'    0 ->  '-0.56267'

+dqsub393 subtract '-56267E-4'    0 ->  '-5.6267'

+dqsub394 subtract '-56267E-3'    0 ->  '-56.267'

+dqsub395 subtract '-56267E-2'    0 ->  '-562.67'

+dqsub396 subtract '-56267E-1'    0 ->  '-5626.7'

+dqsub397 subtract '-56267E-0'    0 ->  '-56267'

+dqsub398 subtract '-5E-10'       0 ->  '-5E-10'

+dqsub399 subtract '-5E-7'        0 ->  '-5E-7'

+dqsub400 subtract '-5E-6'        0 ->  '-0.000005'

+dqsub401 subtract '-5E-5'        0 ->  '-0.00005'

+dqsub402 subtract '-5E-4'        0 ->  '-0.0005'

+dqsub403 subtract '-5E-1'        0 ->  '-0.5'

+dqsub404 subtract '-5E0'         0 ->  '-5'

+dqsub405 subtract '-5E1'         0 ->  '-50'

+dqsub406 subtract '-5E5'         0 ->  '-500000'

+dqsub407 subtract '-5E33'        0 ->  '-5000000000000000000000000000000000'

+dqsub408 subtract '-5E34'        0 ->  '-5.000000000000000000000000000000000E+34'  Rounded

+dqsub409 subtract '-5E35'        0 ->  '-5.000000000000000000000000000000000E+35'  Rounded

+dqsub410 subtract '-5E36'        0 ->  '-5.000000000000000000000000000000000E+36'  Rounded

+dqsub411 subtract '-5E100'       0 ->  '-5.000000000000000000000000000000000E+100' Rounded

+

+-- more RHS swaps [were fixed]

+dqsub420 subtract 0  '-56267E-10' ->  '0.0000056267'

+dqsub421 subtract 0  '-56267E-6'  ->  '0.056267'

+dqsub422 subtract 0  '-56267E-5'  ->  '0.56267'

+dqsub423 subtract 0  '-56267E-4'  ->  '5.6267'

+dqsub424 subtract 0  '-56267E-3'  ->  '56.267'

+dqsub425 subtract 0  '-56267E-2'  ->  '562.67'

+dqsub426 subtract 0  '-56267E-1'  ->  '5626.7'

+dqsub427 subtract 0  '-56267E-0'  ->  '56267'

+dqsub428 subtract 0  '-5E-10'     ->  '5E-10'

+dqsub429 subtract 0  '-5E-7'      ->  '5E-7'

+dqsub430 subtract 0  '-5E-6'      ->  '0.000005'

+dqsub431 subtract 0  '-5E-5'      ->  '0.00005'

+dqsub432 subtract 0  '-5E-4'      ->  '0.0005'

+dqsub433 subtract 0  '-5E-1'      ->  '0.5'

+dqsub434 subtract 0  '-5E0'       ->  '5'

+dqsub435 subtract 0  '-5E1'       ->  '50'

+dqsub436 subtract 0  '-5E5'       ->  '500000'

+dqsub437 subtract 0  '-5E33'      ->  '5000000000000000000000000000000000'

+dqsub438 subtract 0  '-5E34'      ->  '5.000000000000000000000000000000000E+34'   Rounded

+dqsub439 subtract 0  '-5E35'      ->  '5.000000000000000000000000000000000E+35'   Rounded

+dqsub440 subtract 0  '-5E36'      ->  '5.000000000000000000000000000000000E+36'   Rounded

+dqsub441 subtract 0  '-5E100'     ->  '5.000000000000000000000000000000000E+100'  Rounded

+

+

+-- try borderline precision, with carries, etc.

+dqsub461 subtract '1E+16' '1'        -> '9999999999999999'

+dqsub462 subtract '1E+12' '-1.111'   -> '1000000000001.111'

+dqsub463 subtract '1.111'  '-1E+12'  -> '1000000000001.111'

+dqsub464 subtract '-1'    '-1E+16'   -> '9999999999999999'

+dqsub465 subtract '7E+15' '1'        -> '6999999999999999'

+dqsub466 subtract '7E+12' '-1.111'   -> '7000000000001.111'

+dqsub467 subtract '1.111'  '-7E+12'  -> '7000000000001.111'

+dqsub468 subtract '-1'    '-7E+15'   -> '6999999999999999'

+

+--                   1234567890123456       1234567890123456      1 23456789012345

+dqsub470 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555563' -> '1.000000000000000000000000000000001' Inexact Rounded

+dqsub471 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555562' -> '1.000000000000000000000000000000001' Inexact Rounded

+dqsub472 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555561' -> '1.000000000000000000000000000000000' Inexact Rounded

+dqsub473 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555560' -> '1.000000000000000000000000000000000' Inexact Rounded

+dqsub474 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555559' -> '1.000000000000000000000000000000000' Inexact Rounded

+dqsub475 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555558' -> '1.000000000000000000000000000000000' Inexact Rounded

+dqsub476 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555557' -> '1.000000000000000000000000000000000' Inexact Rounded

+dqsub477 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555556' -> '1.000000000000000000000000000000000' Rounded

+dqsub478 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999'

+dqsub479 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555554' -> '0.9999999999999999999999999999999998'

+dqsub480 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555553' -> '0.9999999999999999999999999999999997'

+dqsub481 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555552' -> '0.9999999999999999999999999999999996'

+dqsub482 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555551' -> '0.9999999999999999999999999999999995'

+dqsub483 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555550' -> '0.9999999999999999999999999999999994'

+

+-- and some more, including residue effects and different roundings

+rounding: half_up

+dqsub500 subtract '1231234555555555555555555567456789' 0             -> '1231234555555555555555555567456789'

+dqsub501 subtract '1231234555555555555555555567456789' 0.000000001   -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub502 subtract '1231234555555555555555555567456789' 0.000001      -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub503 subtract '1231234555555555555555555567456789' 0.1           -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub504 subtract '1231234555555555555555555567456789' 0.4           -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub505 subtract '1231234555555555555555555567456789' 0.49          -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub506 subtract '1231234555555555555555555567456789' 0.499999      -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub507 subtract '1231234555555555555555555567456789' 0.499999999   -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub508 subtract '1231234555555555555555555567456789' 0.5           -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub509 subtract '1231234555555555555555555567456789' 0.500000001   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub510 subtract '1231234555555555555555555567456789' 0.500001      -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub511 subtract '1231234555555555555555555567456789' 0.51          -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub512 subtract '1231234555555555555555555567456789' 0.6           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub513 subtract '1231234555555555555555555567456789' 0.9           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub514 subtract '1231234555555555555555555567456789' 0.99999       -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub515 subtract '1231234555555555555555555567456789' 0.999999999   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub516 subtract '1231234555555555555555555567456789' 1             -> '1231234555555555555555555567456788'

+dqsub517 subtract '1231234555555555555555555567456789' 1.000000001   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub518 subtract '1231234555555555555555555567456789' 1.00001       -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub519 subtract '1231234555555555555555555567456789' 1.1           -> '1231234555555555555555555567456788' Inexact Rounded

+

+rounding: half_even

+dqsub520 subtract '1231234555555555555555555567456789' 0             -> '1231234555555555555555555567456789'

+dqsub521 subtract '1231234555555555555555555567456789' 0.000000001   -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub522 subtract '1231234555555555555555555567456789' 0.000001      -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub523 subtract '1231234555555555555555555567456789' 0.1           -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub524 subtract '1231234555555555555555555567456789' 0.4           -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub525 subtract '1231234555555555555555555567456789' 0.49          -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub526 subtract '1231234555555555555555555567456789' 0.499999      -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub527 subtract '1231234555555555555555555567456789' 0.499999999   -> '1231234555555555555555555567456789' Inexact Rounded

+dqsub528 subtract '1231234555555555555555555567456789' 0.5           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub529 subtract '1231234555555555555555555567456789' 0.500000001   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub530 subtract '1231234555555555555555555567456789' 0.500001      -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub531 subtract '1231234555555555555555555567456789' 0.51          -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub532 subtract '1231234555555555555555555567456789' 0.6           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub533 subtract '1231234555555555555555555567456789' 0.9           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub534 subtract '1231234555555555555555555567456789' 0.99999       -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub535 subtract '1231234555555555555555555567456789' 0.999999999   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub536 subtract '1231234555555555555555555567456789' 1             -> '1231234555555555555555555567456788'

+dqsub537 subtract '1231234555555555555555555567456789' 1.00000001    -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub538 subtract '1231234555555555555555555567456789' 1.00001       -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub539 subtract '1231234555555555555555555567456789' 1.1           -> '1231234555555555555555555567456788' Inexact Rounded

+-- critical few with even bottom digit...

+dqsub540 subtract '1231234555555555555555555567456788' 0.499999999   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub541 subtract '1231234555555555555555555567456788' 0.5           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub542 subtract '1231234555555555555555555567456788' 0.500000001   -> '1231234555555555555555555567456787' Inexact Rounded

+

+rounding: down

+dqsub550 subtract '1231234555555555555555555567456789' 0             -> '1231234555555555555555555567456789'

+dqsub551 subtract '1231234555555555555555555567456789' 0.000000001   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub552 subtract '1231234555555555555555555567456789' 0.000001      -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub553 subtract '1231234555555555555555555567456789' 0.1           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub554 subtract '1231234555555555555555555567456789' 0.4           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub555 subtract '1231234555555555555555555567456789' 0.49          -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub556 subtract '1231234555555555555555555567456789' 0.499999      -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub557 subtract '1231234555555555555555555567456789' 0.499999999   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub558 subtract '1231234555555555555555555567456789' 0.5           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub559 subtract '1231234555555555555555555567456789' 0.500000001   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub560 subtract '1231234555555555555555555567456789' 0.500001      -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub561 subtract '1231234555555555555555555567456789' 0.51          -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub562 subtract '1231234555555555555555555567456789' 0.6           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub563 subtract '1231234555555555555555555567456789' 0.9           -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub564 subtract '1231234555555555555555555567456789' 0.99999       -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub565 subtract '1231234555555555555555555567456789' 0.999999999   -> '1231234555555555555555555567456788' Inexact Rounded

+dqsub566 subtract '1231234555555555555555555567456789' 1             -> '1231234555555555555555555567456788'

+dqsub567 subtract '1231234555555555555555555567456789' 1.00000001    -> '1231234555555555555555555567456787' Inexact Rounded

+dqsub568 subtract '1231234555555555555555555567456789' 1.00001       -> '1231234555555555555555555567456787' Inexact Rounded

+dqsub569 subtract '1231234555555555555555555567456789' 1.1           -> '1231234555555555555555555567456787' Inexact Rounded

+

+-- symmetry...

+rounding: half_up

+dqsub600 subtract 0             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'

+dqsub601 subtract 0.000000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub602 subtract 0.000001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub603 subtract 0.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub604 subtract 0.4           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub605 subtract 0.49          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub606 subtract 0.499999      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub607 subtract 0.499999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub608 subtract 0.5           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub609 subtract 0.500000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub610 subtract 0.500001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub611 subtract 0.51          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub612 subtract 0.6           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub613 subtract 0.9           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub614 subtract 0.99999       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub615 subtract 0.999999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub616 subtract 1             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'

+dqsub617 subtract 1.000000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub618 subtract 1.00001       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub619 subtract 1.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+

+rounding: half_even

+dqsub620 subtract 0             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'

+dqsub621 subtract 0.000000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub622 subtract 0.000001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub623 subtract 0.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub624 subtract 0.4           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub625 subtract 0.49          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub626 subtract 0.499999      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub627 subtract 0.499999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded

+dqsub628 subtract 0.5           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub629 subtract 0.500000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub630 subtract 0.500001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub631 subtract 0.51          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub632 subtract 0.6           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub633 subtract 0.9           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub634 subtract 0.99999       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub635 subtract 0.999999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub636 subtract 1             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'

+dqsub637 subtract 1.00000001    '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub638 subtract 1.00001       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub639 subtract 1.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+-- critical few with even bottom digit...

+dqsub640 subtract 0.499999999   '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub641 subtract 0.5           '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub642 subtract 0.500000001   '1231234555555555555555555567456788' -> '-1231234555555555555555555567456787' Inexact Rounded

+

+rounding: down

+dqsub650 subtract 0             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'

+dqsub651 subtract 0.000000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub652 subtract 0.000001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub653 subtract 0.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub654 subtract 0.4           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub655 subtract 0.49          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub656 subtract 0.499999      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub657 subtract 0.499999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub658 subtract 0.5           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub659 subtract 0.500000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub660 subtract 0.500001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub661 subtract 0.51          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub662 subtract 0.6           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub663 subtract 0.9           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub664 subtract 0.99999       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub665 subtract 0.999999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded

+dqsub666 subtract 1             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'

+dqsub667 subtract 1.00000001    '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded

+dqsub668 subtract 1.00001       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded

+dqsub669 subtract 1.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded

+

+

+-- lots of leading zeros in intermediate result, and showing effects of

+-- input rounding would have affected the following

+rounding: half_up

+dqsub670 subtract '1234567456789' '1234567456788.1' -> 0.9

+dqsub671 subtract '1234567456789' '1234567456788.9' -> 0.1

+dqsub672 subtract '1234567456789' '1234567456789.1' -> -0.1

+dqsub673 subtract '1234567456789' '1234567456789.5' -> -0.5

+dqsub674 subtract '1234567456789' '1234567456789.9' -> -0.9

+

+rounding: half_even

+dqsub680 subtract '1234567456789' '1234567456788.1' -> 0.9

+dqsub681 subtract '1234567456789' '1234567456788.9' -> 0.1

+dqsub682 subtract '1234567456789' '1234567456789.1' -> -0.1

+dqsub683 subtract '1234567456789' '1234567456789.5' -> -0.5

+dqsub684 subtract '1234567456789' '1234567456789.9' -> -0.9

+

+dqsub685 subtract '1234567456788' '1234567456787.1' -> 0.9

+dqsub686 subtract '1234567456788' '1234567456787.9' -> 0.1

+dqsub687 subtract '1234567456788' '1234567456788.1' -> -0.1

+dqsub688 subtract '1234567456788' '1234567456788.5' -> -0.5

+dqsub689 subtract '1234567456788' '1234567456788.9' -> -0.9

+

+rounding: down

+dqsub690 subtract '1234567456789' '1234567456788.1' -> 0.9

+dqsub691 subtract '1234567456789' '1234567456788.9' -> 0.1

+dqsub692 subtract '1234567456789' '1234567456789.1' -> -0.1

+dqsub693 subtract '1234567456789' '1234567456789.5' -> -0.5

+dqsub694 subtract '1234567456789' '1234567456789.9' -> -0.9

+

+-- Specials

+dqsub780 subtract -Inf   Inf   -> -Infinity

+dqsub781 subtract -Inf   1000  -> -Infinity

+dqsub782 subtract -Inf   1     -> -Infinity

+dqsub783 subtract -Inf  -0     -> -Infinity

+dqsub784 subtract -Inf  -1     -> -Infinity

+dqsub785 subtract -Inf  -1000  -> -Infinity

+dqsub787 subtract -1000  Inf   -> -Infinity

+dqsub788 subtract -Inf   Inf   -> -Infinity

+dqsub789 subtract -1     Inf   -> -Infinity

+dqsub790 subtract  0     Inf   -> -Infinity

+dqsub791 subtract  1     Inf   -> -Infinity

+dqsub792 subtract  1000  Inf   -> -Infinity

+

+dqsub800 subtract  Inf   Inf   ->  NaN  Invalid_operation

+dqsub801 subtract  Inf   1000  ->  Infinity

+dqsub802 subtract  Inf   1     ->  Infinity

+dqsub803 subtract  Inf   0     ->  Infinity

+dqsub804 subtract  Inf  -0     ->  Infinity

+dqsub805 subtract  Inf  -1     ->  Infinity

+dqsub806 subtract  Inf  -1000  ->  Infinity

+dqsub807 subtract  Inf  -Inf   ->  Infinity

+dqsub808 subtract -1000 -Inf   ->  Infinity

+dqsub809 subtract -Inf  -Inf   ->  NaN  Invalid_operation

+dqsub810 subtract -1    -Inf   ->  Infinity

+dqsub811 subtract -0    -Inf   ->  Infinity

+dqsub812 subtract  0    -Inf   ->  Infinity

+dqsub813 subtract  1    -Inf   ->  Infinity

+dqsub814 subtract  1000 -Inf   ->  Infinity

+dqsub815 subtract  Inf  -Inf   ->  Infinity

+

+dqsub821 subtract  NaN   Inf   ->  NaN

+dqsub822 subtract -NaN   1000  -> -NaN

+dqsub823 subtract  NaN   1     ->  NaN

+dqsub824 subtract  NaN   0     ->  NaN

+dqsub825 subtract  NaN  -0     ->  NaN

+dqsub826 subtract  NaN  -1     ->  NaN

+dqsub827 subtract  NaN  -1000  ->  NaN

+dqsub828 subtract  NaN  -Inf   ->  NaN

+dqsub829 subtract -NaN   NaN   -> -NaN

+dqsub830 subtract -Inf   NaN   ->  NaN

+dqsub831 subtract -1000  NaN   ->  NaN

+dqsub832 subtract -1     NaN   ->  NaN

+dqsub833 subtract -0     NaN   ->  NaN

+dqsub834 subtract  0     NaN   ->  NaN

+dqsub835 subtract  1     NaN   ->  NaN

+dqsub836 subtract  1000 -NaN   -> -NaN

+dqsub837 subtract  Inf   NaN   ->  NaN

+

+dqsub841 subtract  sNaN  Inf   ->  NaN  Invalid_operation

+dqsub842 subtract -sNaN  1000  -> -NaN  Invalid_operation

+dqsub843 subtract  sNaN  1     ->  NaN  Invalid_operation

+dqsub844 subtract  sNaN  0     ->  NaN  Invalid_operation

+dqsub845 subtract  sNaN -0     ->  NaN  Invalid_operation

+dqsub846 subtract  sNaN -1     ->  NaN  Invalid_operation

+dqsub847 subtract  sNaN -1000  ->  NaN  Invalid_operation

+dqsub848 subtract  sNaN  NaN   ->  NaN  Invalid_operation

+dqsub849 subtract  sNaN sNaN   ->  NaN  Invalid_operation

+dqsub850 subtract  NaN  sNaN   ->  NaN  Invalid_operation

+dqsub851 subtract -Inf -sNaN   -> -NaN  Invalid_operation

+dqsub852 subtract -1000 sNaN   ->  NaN  Invalid_operation

+dqsub853 subtract -1    sNaN   ->  NaN  Invalid_operation

+dqsub854 subtract -0    sNaN   ->  NaN  Invalid_operation

+dqsub855 subtract  0    sNaN   ->  NaN  Invalid_operation

+dqsub856 subtract  1    sNaN   ->  NaN  Invalid_operation

+dqsub857 subtract  1000 sNaN   ->  NaN  Invalid_operation

+dqsub858 subtract  Inf  sNaN   ->  NaN  Invalid_operation

+dqsub859 subtract  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqsub861 subtract  NaN01   -Inf     ->  NaN1

+dqsub862 subtract -NaN02   -1000    -> -NaN2

+dqsub863 subtract  NaN03    1000    ->  NaN3

+dqsub864 subtract  NaN04    Inf     ->  NaN4

+dqsub865 subtract  NaN05    NaN61   ->  NaN5

+dqsub866 subtract -Inf     -NaN71   -> -NaN71

+dqsub867 subtract -1000     NaN81   ->  NaN81

+dqsub868 subtract  1000     NaN91   ->  NaN91

+dqsub869 subtract  Inf      NaN101  ->  NaN101

+dqsub871 subtract  sNaN011  -Inf    ->  NaN11  Invalid_operation

+dqsub872 subtract  sNaN012  -1000   ->  NaN12  Invalid_operation

+dqsub873 subtract -sNaN013   1000   -> -NaN13  Invalid_operation

+dqsub874 subtract  sNaN014   NaN171 ->  NaN14  Invalid_operation

+dqsub875 subtract  sNaN015  sNaN181 ->  NaN15  Invalid_operation

+dqsub876 subtract  NaN016   sNaN191 ->  NaN191 Invalid_operation

+dqsub877 subtract -Inf      sNaN201 ->  NaN201 Invalid_operation

+dqsub878 subtract -1000     sNaN211 ->  NaN211 Invalid_operation

+dqsub879 subtract  1000    -sNaN221 -> -NaN221 Invalid_operation

+dqsub880 subtract  Inf      sNaN231 ->  NaN231 Invalid_operation

+dqsub881 subtract  NaN025   sNaN241 ->  NaN241 Invalid_operation

+

+-- edge case spills

+dqsub901 subtract  2.E-3  1.002  -> -1.000

+dqsub902 subtract  2.0E-3  1.002  -> -1.0000

+dqsub903 subtract  2.00E-3  1.0020  -> -1.00000

+dqsub904 subtract  2.000E-3  1.00200  -> -1.000000

+dqsub905 subtract  2.0000E-3  1.002000  -> -1.0000000

+dqsub906 subtract  2.00000E-3  1.0020000  -> -1.00000000

+dqsub907 subtract  2.000000E-3  1.00200000  -> -1.000000000

+dqsub908 subtract  2.0000000E-3  1.002000000  -> -1.0000000000

+

+-- subnormals and overflows covered under Add

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+dqsub1125  subtract 130E-2  120E-2 -> 0.10

+dqsub1126  subtract 130E-2  12E-1  -> 0.10

+dqsub1127  subtract 130E-2  1E0    -> 0.30

+dqsub1128  subtract 1E2     1E4    -> -9.9E+3

+

+-- Null tests

+dqsub9990 subtract 10  # -> NaN Invalid_operation

+dqsub9991 subtract  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dqToIntegral.decTest b/Lib/test/decimaltestdata/dqToIntegral.decTest
new file mode 100644
index 0000000..449dead
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqToIntegral.decTest
@@ -0,0 +1,257 @@
+------------------------------------------------------------------------

+-- dqToIntegral.decTest -- round Quad to integral value               --

+-- Copyright (c) IBM Corporation, 2001, 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.57

+

+-- This set of tests tests the extended specification 'round-to-integral

+-- value-exact' operations (from IEEE 854, later modified in 754r).

+-- All non-zero results are defined as being those from either copy or

+-- quantize, so those are assumed to have been tested extensively

+-- elsewhere; the tests here are for integrity, rounding mode, etc.

+-- Also, it is assumed the test harness will use these tests for both

+-- ToIntegralExact (which does set Inexact) and the fixed-name

+-- functions (which do not set Inexact).

+

+-- Note that decNumber implements an earlier definition of toIntegral

+-- which never sets Inexact; the decTest operator for that is called

+-- 'tointegral' instead of 'tointegralx'.

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+dqintx001 tointegralx      0     ->  0

+dqintx002 tointegralx      0.0   ->  0

+dqintx003 tointegralx      0.1   ->  0  Inexact Rounded

+dqintx004 tointegralx      0.2   ->  0  Inexact Rounded

+dqintx005 tointegralx      0.3   ->  0  Inexact Rounded

+dqintx006 tointegralx      0.4   ->  0  Inexact Rounded

+dqintx007 tointegralx      0.5   ->  0  Inexact Rounded

+dqintx008 tointegralx      0.6   ->  1  Inexact Rounded

+dqintx009 tointegralx      0.7   ->  1  Inexact Rounded

+dqintx010 tointegralx      0.8   ->  1  Inexact Rounded

+dqintx011 tointegralx      0.9   ->  1  Inexact Rounded

+dqintx012 tointegralx      1     ->  1

+dqintx013 tointegralx      1.0   ->  1  Rounded

+dqintx014 tointegralx      1.1   ->  1  Inexact Rounded

+dqintx015 tointegralx      1.2   ->  1  Inexact Rounded

+dqintx016 tointegralx      1.3   ->  1  Inexact Rounded

+dqintx017 tointegralx      1.4   ->  1  Inexact Rounded

+dqintx018 tointegralx      1.5   ->  2  Inexact Rounded

+dqintx019 tointegralx      1.6   ->  2  Inexact Rounded

+dqintx020 tointegralx      1.7   ->  2  Inexact Rounded

+dqintx021 tointegralx      1.8   ->  2  Inexact Rounded

+dqintx022 tointegralx      1.9   ->  2  Inexact Rounded

+-- negatives

+dqintx031 tointegralx     -0     -> -0

+dqintx032 tointegralx     -0.0   -> -0

+dqintx033 tointegralx     -0.1   -> -0  Inexact Rounded

+dqintx034 tointegralx     -0.2   -> -0  Inexact Rounded

+dqintx035 tointegralx     -0.3   -> -0  Inexact Rounded

+dqintx036 tointegralx     -0.4   -> -0  Inexact Rounded

+dqintx037 tointegralx     -0.5   -> -0  Inexact Rounded

+dqintx038 tointegralx     -0.6   -> -1  Inexact Rounded

+dqintx039 tointegralx     -0.7   -> -1  Inexact Rounded

+dqintx040 tointegralx     -0.8   -> -1  Inexact Rounded

+dqintx041 tointegralx     -0.9   -> -1  Inexact Rounded

+dqintx042 tointegralx     -1     -> -1

+dqintx043 tointegralx     -1.0   -> -1  Rounded

+dqintx044 tointegralx     -1.1   -> -1  Inexact Rounded

+dqintx045 tointegralx     -1.2   -> -1  Inexact Rounded

+dqintx046 tointegralx     -1.3   -> -1  Inexact Rounded

+dqintx047 tointegralx     -1.4   -> -1  Inexact Rounded

+dqintx048 tointegralx     -1.5   -> -2  Inexact Rounded

+dqintx049 tointegralx     -1.6   -> -2  Inexact Rounded

+dqintx050 tointegralx     -1.7   -> -2  Inexact Rounded

+dqintx051 tointegralx     -1.8   -> -2  Inexact Rounded

+dqintx052 tointegralx     -1.9   -> -2  Inexact Rounded

+-- next two would be NaN using quantize(x, 0)

+dqintx053 tointegralx    10E+60  -> 1.0E+61

+dqintx054 tointegralx   -10E+60  -> -1.0E+61

+

+-- numbers around precision

+dqintx060 tointegralx '56267E-17'   -> '0'      Inexact Rounded

+dqintx061 tointegralx '56267E-5'    -> '1'      Inexact Rounded

+dqintx062 tointegralx '56267E-2'    -> '563'    Inexact Rounded

+dqintx063 tointegralx '56267E-1'    -> '5627'   Inexact Rounded

+dqintx065 tointegralx '56267E-0'    -> '56267'

+dqintx066 tointegralx '56267E+0'    -> '56267'

+dqintx067 tointegralx '56267E+1'    -> '5.6267E+5'

+dqintx068 tointegralx '56267E+9'    -> '5.6267E+13'

+dqintx069 tointegralx '56267E+10'   -> '5.6267E+14'

+dqintx070 tointegralx '56267E+11'   -> '5.6267E+15'

+dqintx071 tointegralx '56267E+12'   -> '5.6267E+16'

+dqintx072 tointegralx '56267E+13'   -> '5.6267E+17'

+dqintx073 tointegralx '1.23E+96'    -> '1.23E+96'

+dqintx074 tointegralx '1.23E+6144'  -> #47ffd300000000000000000000000000 Clamped

+

+dqintx080 tointegralx '-56267E-10'  -> '-0'      Inexact Rounded

+dqintx081 tointegralx '-56267E-5'   -> '-1'      Inexact Rounded

+dqintx082 tointegralx '-56267E-2'   -> '-563'    Inexact Rounded

+dqintx083 tointegralx '-56267E-1'   -> '-5627'   Inexact Rounded

+dqintx085 tointegralx '-56267E-0'   -> '-56267'

+dqintx086 tointegralx '-56267E+0'   -> '-56267'

+dqintx087 tointegralx '-56267E+1'   -> '-5.6267E+5'

+dqintx088 tointegralx '-56267E+9'   -> '-5.6267E+13'

+dqintx089 tointegralx '-56267E+10'  -> '-5.6267E+14'

+dqintx090 tointegralx '-56267E+11'  -> '-5.6267E+15'

+dqintx091 tointegralx '-56267E+12'  -> '-5.6267E+16'

+dqintx092 tointegralx '-56267E+13'  -> '-5.6267E+17'

+dqintx093 tointegralx '-1.23E+96'   -> '-1.23E+96'

+dqintx094 tointegralx '-1.23E+6144' -> #c7ffd300000000000000000000000000 Clamped

+

+-- subnormal inputs

+dqintx100 tointegralx        1E-299 -> 0  Inexact Rounded

+dqintx101 tointegralx      0.1E-299 -> 0  Inexact Rounded

+dqintx102 tointegralx     0.01E-299 -> 0  Inexact Rounded

+dqintx103 tointegralx        0E-299 -> 0

+

+-- specials and zeros

+dqintx120 tointegralx 'Inf'       ->  Infinity

+dqintx121 tointegralx '-Inf'      -> -Infinity

+dqintx122 tointegralx   NaN       ->  NaN

+dqintx123 tointegralx  sNaN       ->  NaN  Invalid_operation

+dqintx124 tointegralx     0       ->  0

+dqintx125 tointegralx    -0       -> -0

+dqintx126 tointegralx     0.000   ->  0

+dqintx127 tointegralx     0.00    ->  0

+dqintx128 tointegralx     0.0     ->  0

+dqintx129 tointegralx     0       ->  0

+dqintx130 tointegralx     0E-3    ->  0

+dqintx131 tointegralx     0E-2    ->  0

+dqintx132 tointegralx     0E-1    ->  0

+dqintx133 tointegralx     0E-0    ->  0

+dqintx134 tointegralx     0E+1    ->  0E+1

+dqintx135 tointegralx     0E+2    ->  0E+2

+dqintx136 tointegralx     0E+3    ->  0E+3

+dqintx137 tointegralx     0E+4    ->  0E+4

+dqintx138 tointegralx     0E+5    ->  0E+5

+dqintx139 tointegralx    -0.000   -> -0

+dqintx140 tointegralx    -0.00    -> -0

+dqintx141 tointegralx    -0.0     -> -0

+dqintx142 tointegralx    -0       -> -0

+dqintx143 tointegralx    -0E-3    -> -0

+dqintx144 tointegralx    -0E-2    -> -0

+dqintx145 tointegralx    -0E-1    -> -0

+dqintx146 tointegralx    -0E-0    -> -0

+dqintx147 tointegralx    -0E+1    -> -0E+1

+dqintx148 tointegralx    -0E+2    -> -0E+2

+dqintx149 tointegralx    -0E+3    -> -0E+3

+dqintx150 tointegralx    -0E+4    -> -0E+4

+dqintx151 tointegralx    -0E+5    -> -0E+5

+-- propagating NaNs

+dqintx152 tointegralx   NaN808    ->  NaN808

+dqintx153 tointegralx  sNaN080    ->  NaN80  Invalid_operation

+dqintx154 tointegralx  -NaN808    -> -NaN808

+dqintx155 tointegralx -sNaN080    -> -NaN80  Invalid_operation

+dqintx156 tointegralx  -NaN       -> -NaN

+dqintx157 tointegralx -sNaN       -> -NaN    Invalid_operation

+

+-- examples

+rounding:    half_up

+dqintx200 tointegralx     2.1    -> 2            Inexact Rounded

+dqintx201 tointegralx   100      -> 100

+dqintx202 tointegralx   100.0    -> 100          Rounded

+dqintx203 tointegralx   101.5    -> 102          Inexact Rounded

+dqintx204 tointegralx  -101.5    -> -102         Inexact Rounded

+dqintx205 tointegralx   10E+5    -> 1.0E+6

+dqintx206 tointegralx  7.89E+77  -> 7.89E+77

+dqintx207 tointegralx   -Inf     -> -Infinity

+

+

+-- all rounding modes

+rounding:    half_even

+dqintx210 tointegralx     55.5   ->  56  Inexact Rounded

+dqintx211 tointegralx     56.5   ->  56  Inexact Rounded

+dqintx212 tointegralx     57.5   ->  58  Inexact Rounded

+dqintx213 tointegralx    -55.5   -> -56  Inexact Rounded

+dqintx214 tointegralx    -56.5   -> -56  Inexact Rounded

+dqintx215 tointegralx    -57.5   -> -58  Inexact Rounded

+

+rounding:    half_up

+

+dqintx220 tointegralx     55.5   ->  56  Inexact Rounded

+dqintx221 tointegralx     56.5   ->  57  Inexact Rounded

+dqintx222 tointegralx     57.5   ->  58  Inexact Rounded

+dqintx223 tointegralx    -55.5   -> -56  Inexact Rounded

+dqintx224 tointegralx    -56.5   -> -57  Inexact Rounded

+dqintx225 tointegralx    -57.5   -> -58  Inexact Rounded

+

+rounding:    half_down

+

+dqintx230 tointegralx     55.5   ->  55  Inexact Rounded

+dqintx231 tointegralx     56.5   ->  56  Inexact Rounded

+dqintx232 tointegralx     57.5   ->  57  Inexact Rounded

+dqintx233 tointegralx    -55.5   -> -55  Inexact Rounded

+dqintx234 tointegralx    -56.5   -> -56  Inexact Rounded

+dqintx235 tointegralx    -57.5   -> -57  Inexact Rounded

+

+rounding:    up

+

+dqintx240 tointegralx     55.3   ->  56  Inexact Rounded

+dqintx241 tointegralx     56.3   ->  57  Inexact Rounded

+dqintx242 tointegralx     57.3   ->  58  Inexact Rounded

+dqintx243 tointegralx    -55.3   -> -56  Inexact Rounded

+dqintx244 tointegralx    -56.3   -> -57  Inexact Rounded

+dqintx245 tointegralx    -57.3   -> -58  Inexact Rounded

+

+rounding:    down

+

+dqintx250 tointegralx     55.7   ->  55  Inexact Rounded

+dqintx251 tointegralx     56.7   ->  56  Inexact Rounded

+dqintx252 tointegralx     57.7   ->  57  Inexact Rounded

+dqintx253 tointegralx    -55.7   -> -55  Inexact Rounded

+dqintx254 tointegralx    -56.7   -> -56  Inexact Rounded

+dqintx255 tointegralx    -57.7   -> -57  Inexact Rounded

+

+rounding:    ceiling

+

+dqintx260 tointegralx     55.3   ->  56  Inexact Rounded

+dqintx261 tointegralx     56.3   ->  57  Inexact Rounded

+dqintx262 tointegralx     57.3   ->  58  Inexact Rounded

+dqintx263 tointegralx    -55.3   -> -55  Inexact Rounded

+dqintx264 tointegralx    -56.3   -> -56  Inexact Rounded

+dqintx265 tointegralx    -57.3   -> -57  Inexact Rounded

+

+rounding:    floor

+

+dqintx270 tointegralx     55.7   ->  55  Inexact Rounded

+dqintx271 tointegralx     56.7   ->  56  Inexact Rounded

+dqintx272 tointegralx     57.7   ->  57  Inexact Rounded

+dqintx273 tointegralx    -55.7   -> -56  Inexact Rounded

+dqintx274 tointegralx    -56.7   -> -57  Inexact Rounded

+dqintx275 tointegralx    -57.7   -> -58  Inexact Rounded

+

+-- Int and uInt32 edge values for testing conversions

+dqintx300 tointegralx -2147483646  -> -2147483646

+dqintx301 tointegralx -2147483647  -> -2147483647

+dqintx302 tointegralx -2147483648  -> -2147483648

+dqintx303 tointegralx -2147483649  -> -2147483649

+dqintx304 tointegralx  2147483646  ->  2147483646

+dqintx305 tointegralx  2147483647  ->  2147483647

+dqintx306 tointegralx  2147483648  ->  2147483648

+dqintx307 tointegralx  2147483649  ->  2147483649

+dqintx308 tointegralx  4294967294  ->  4294967294

+dqintx309 tointegralx  4294967295  ->  4294967295

+dqintx310 tointegralx  4294967296  ->  4294967296

+dqintx311 tointegralx  4294967297  ->  4294967297

+

diff --git a/Lib/test/decimaltestdata/dqXor.decTest b/Lib/test/decimaltestdata/dqXor.decTest
new file mode 100644
index 0000000..d9e9af6
--- /dev/null
+++ b/Lib/test/decimaltestdata/dqXor.decTest
@@ -0,0 +1,410 @@
+------------------------------------------------------------------------

+-- dqXor.decTest -- digitwise logical XOR for decQuads                --

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

+

+extended:    1

+clamp:       1

+precision:   34

+maxExponent: 6144

+minExponent: -6143

+rounding:    half_even

+

+-- Sanity check (truth table)

+dqxor001 xor             0    0 ->    0

+dqxor002 xor             0    1 ->    1

+dqxor003 xor             1    0 ->    1

+dqxor004 xor             1    1 ->    0

+dqxor005 xor          1100 1010 ->  110

+-- and at msd and msd-1

+dqxor006 xor 0000000000000000000000000000000000 0000000000000000000000000000000000 ->           0

+dqxor007 xor 0000000000000000000000000000000000 1000000000000000000000000000000000 ->   1000000000000000000000000000000000

+dqxor008 xor 1000000000000000000000000000000000 0000000000000000000000000000000000 ->   1000000000000000000000000000000000

+dqxor009 xor 1000000000000000000000000000000000 1000000000000000000000000000000000 ->           0

+dqxor010 xor 0000000000000000000000000000000000 0000000000000000000000000000000000 ->           0

+dqxor011 xor 0000000000000000000000000000000000 0100000000000000000000000000000000 ->    100000000000000000000000000000000

+dqxor012 xor 0100000000000000000000000000000000 0000000000000000000000000000000000 ->    100000000000000000000000000000000

+dqxor013 xor 0100000000000000000000000000000000 0100000000000000000000000000000000 ->           0

+

+-- Various lengths

+--           1234567890123456789012345678901234

+dqxor601 xor 0111111111111111111111111111111111 1111111111111111111111111111111111  -> 1000000000000000000000000000000000

+dqxor602 xor 1011111111111111111111111111111111 1111111111111111111111111111111111  ->  100000000000000000000000000000000

+dqxor603 xor 1101111111111111111111111111111111 1111111111111111111111111111111111  ->   10000000000000000000000000000000

+dqxor604 xor 1110111111111111111111111111111111 1111111111111111111111111111111111  ->    1000000000000000000000000000000

+dqxor605 xor 1111011111111111111111111111111111 1111111111111111111111111111111111  ->     100000000000000000000000000000

+dqxor606 xor 1111101111111111111111111111111111 1111111111111111111111111111111111  ->      10000000000000000000000000000

+dqxor607 xor 1111110111111111111111111111111111 1111111111111111111111111111111111  ->       1000000000000000000000000000

+dqxor608 xor 1111111011111111111111111111111111 1111111111111111111111111111111111  ->        100000000000000000000000000

+dqxor609 xor 1111111101111111111111111111111111 1111111111111111111111111111111111  ->         10000000000000000000000000

+dqxor610 xor 1111111110111111111111111111111111 1111111111111111111111111111111111  ->          1000000000000000000000000

+dqxor611 xor 1111111111011111111111111111111111 1111111111111111111111111111111111  ->           100000000000000000000000

+dqxor612 xor 1111111111101111111111111111111111 1111111111111111111111111111111111  ->            10000000000000000000000

+dqxor613 xor 1111111111110111111111111111111111 1111111111111111111111111111111111  ->             1000000000000000000000

+dqxor614 xor 1111111111111011111111111111111111 1111111111111111111111111111111111  ->              100000000000000000000

+dqxor615 xor 1111111111111101111111111111111111 1111111111111111111111111111111111  ->               10000000000000000000

+dqxor616 xor 1111111111111110111111111111111111 1111111111111111111111111111111111  ->                1000000000000000000

+dqxor617 xor 1111111111111111011111111111111111 1111111111111111111111111111111111  ->                 100000000000000000

+dqxor618 xor 1111111111111111101111111111111111 1111111111111111111111111111111111  ->                  10000000000000000

+dqxor619 xor 1111111111111111110111111111111111 1111111111111111111111111111111111  ->                   1000000000000000

+dqxor620 xor 1111111111111111111011111111111111 1111111111111111111111111111111111  ->                    100000000000000

+dqxor621 xor 1111111111111111111101111111111111 1111111111111111111111111111111111  ->                     10000000000000

+dqxor622 xor 1111111111111111111110111111111111 1111111111111111111111111111111111  ->                      1000000000000

+dqxor623 xor 1111111111111111111111011111111111 1111111111111111111111111111111111  ->                       100000000000

+dqxor624 xor 1111111111111111111111101111111111 1111111111111111111111111111111111  ->                        10000000000

+dqxor625 xor 1111111111111111111111110111111111 1111111111111111111111111111111111  ->                         1000000000

+dqxor626 xor 1111111111111111111111111011111111 1111111111111111111111111111111111  ->                          100000000

+dqxor627 xor 1111111111111111111111111101111111 1111111111111111111111111111111111  ->                           10000000

+dqxor628 xor 1111111111111111111111111110111111 1111111111111111111111111111111111  ->                            1000000

+dqxor629 xor 1111111111111111111111111111011111 1111111111111111111111111111111111  ->                             100000

+dqxor630 xor 1111111111111111111111111111101111 1111111111111111111111111111111111  ->                              10000

+dqxor631 xor 1111111111111111111111111111110111 1111111111111111111111111111111111  ->                               1000

+dqxor632 xor 1111111111111111111111111111111011 1111111111111111111111111111111111  ->                                100

+dqxor633 xor 1111111111111111111111111111111101 1111111111111111111111111111111111  ->                                 10

+dqxor634 xor 1111111111111111111111111111111110 1111111111111111111111111111111111  ->                                  1

+

+dqxor641 xor 1111111111111111111111111111111111 0111111111111111111111111111111111  -> 1000000000000000000000000000000000

+dqxor642 xor 1111111111111111111111111111111111 1011111111111111111111111111111111  ->  100000000000000000000000000000000

+dqxor643 xor 1111111111111111111111111111111111 1101111111111111111111111111111111  ->   10000000000000000000000000000000

+dqxor644 xor 1111111111111111111111111111111111 1110111111111111111111111111111111  ->    1000000000000000000000000000000

+dqxor645 xor 1111111111111111111111111111111111 1111011111111111111111111111111111  ->     100000000000000000000000000000

+dqxor646 xor 1111111111111111111111111111111111 1111101111111111111111111111111111  ->      10000000000000000000000000000

+dqxor647 xor 1111111111111111111111111111111111 1111110111111111111111111111111111  ->       1000000000000000000000000000

+dqxor648 xor 1111111111111111111111111111111111 1111111011111111111111111111111111  ->        100000000000000000000000000

+dqxor649 xor 1111111111111111111111111111111111 1111111101111111111111111111111111  ->         10000000000000000000000000

+dqxor650 xor 1111111111111111111111111111111111 1111111110111111111111111111111111  ->          1000000000000000000000000

+dqxor651 xor 1111111111111111111111111111111111 1111111111011111111111111111111111  ->           100000000000000000000000

+dqxor652 xor 1111111111111111111111111111111111 1111111111101111111111111111111111  ->            10000000000000000000000

+dqxor653 xor 1111111111111111111111111111111111 1111111111110111111111111111111111  ->             1000000000000000000000

+dqxor654 xor 1111111111111111111111111111111111 1111111111111011111111111111111111  ->              100000000000000000000

+dqxor655 xor 1111111111111111111111111111111111 1111111111111101111111111111111111  ->               10000000000000000000

+dqxor656 xor 1111111111111111111111111111111111 1111111111111110111111111111111111  ->                1000000000000000000

+dqxor657 xor 1111111111111111111111111111111111 1111111111111111011111111111111111  ->                 100000000000000000

+dqxor658 xor 1111111111111111111111111111111111 1111111111111111101111111111111111  ->                  10000000000000000

+dqxor659 xor 1111111111111111111111111111111111 1111111111111111110111111111111111  ->                   1000000000000000

+dqxor660 xor 1111111111111111111111111111111111 1111111111111111111011111111111111  ->                    100000000000000

+dqxor661 xor 1111111111111111111111111111111111 1111111111111111111101111111111111  ->                     10000000000000

+dqxor662 xor 1111111111111111111111111111111111 1111111111111111111110111111111111  ->                      1000000000000

+dqxor663 xor 1111111111111111111111111111111111 1111111111111111111111011111111111  ->                       100000000000

+dqxor664 xor 1111111111111111111111111111111111 1111111111111111111111101111111111  ->                        10000000000

+dqxor665 xor 1111111111111111111111111111111111 1111111111111111111111110111111111  ->                         1000000000

+dqxor666 xor 1111111111111111111111111111111111 1111111111111111111111111011111111  ->                          100000000

+dqxor667 xor 1111111111111111111111111111111111 1111111111111111111111111101111111  ->                           10000000

+dqxor668 xor 1111111111111111111111111111111111 1111111111111111111111111110111111  ->                            1000000

+dqxor669 xor 1111111111111111111111111111111111 1111111111111111111111111111011111  ->                             100000

+dqxor670 xor 1111111111111111111111111111111111 1111111111111111111111111111101111  ->                              10000

+dqxor671 xor 1111111111111111111111111111111111 1111111111111111111111111111110111  ->                               1000

+dqxor672 xor 1111111111111111111111111111111111 1111111111111111111111111111111011  ->                                100

+dqxor673 xor 1111111111111111111111111111111111 1111111111111111111111111111111101  ->                                 10

+dqxor674 xor 1111111111111111111111111111111111 1111111111111111111111111111111110  ->                                  1

+dqxor675 xor 0111111111111111111111111111111111 1111111111111111111111111111111110  -> 1000000000000000000000000000000001

+dqxor676 xor 1111111111111111111111111111111111 1111111111111111111111111111111110  ->                                  1

+

+

+dqxor021 xor 1111111110000000     1111111110000000  ->  0

+dqxor022 xor  111111110000000      111111110000000  ->  0

+dqxor023 xor   11111110000000       11111110000000  ->  0

+dqxor024 xor    1111110000000        1111110000000  ->  0

+dqxor025 xor     111110000000         111110000000  ->  0

+dqxor026 xor      11110000000          11110000000  ->  0

+dqxor027 xor       1110000000           1110000000  ->  0

+dqxor028 xor        110000000            110000000  ->  0

+dqxor029 xor         10000000             10000000  ->  0

+dqxor030 xor          1000000              1000000  ->  0

+dqxor031 xor           100000               100000  ->  0

+dqxor032 xor            10000                10000  ->  0

+dqxor033 xor             1000                 1000  ->  0

+dqxor034 xor              100                  100  ->  0

+dqxor035 xor               10                   10  ->  0

+dqxor036 xor                1                    1  ->  0

+

+dqxor040 xor 111111111  111111111111  ->  111000000000

+dqxor041 xor  11111111  111111111111  ->  111100000000

+dqxor042 xor  11111111     111111111  ->  100000000

+dqxor043 xor   1111111     100000010  ->  101111101

+dqxor044 xor    111111     100000100  ->  100111011

+dqxor045 xor     11111     100001000  ->  100010111

+dqxor046 xor      1111     100010000  ->  100011111

+dqxor047 xor       111     100100000  ->  100100111

+dqxor048 xor        11     101000000  ->  101000011

+dqxor049 xor         1     110000000  ->  110000001

+

+dqxor050 xor 1111111111  1  ->  1111111110

+dqxor051 xor  111111111  1  ->  111111110

+dqxor052 xor   11111111  1  ->  11111110

+dqxor053 xor    1111111  1  ->  1111110

+dqxor054 xor     111111  1  ->  111110

+dqxor055 xor      11111  1  ->  11110

+dqxor056 xor       1111  1  ->  1110

+dqxor057 xor        111  1  ->  110

+dqxor058 xor         11  1  ->  10

+dqxor059 xor          1  1  ->  0

+

+dqxor060 xor 1111111111  0  ->  1111111111

+dqxor061 xor  111111111  0  ->  111111111

+dqxor062 xor   11111111  0  ->  11111111

+dqxor063 xor    1111111  0  ->  1111111

+dqxor064 xor     111111  0  ->  111111

+dqxor065 xor      11111  0  ->  11111

+dqxor066 xor       1111  0  ->  1111

+dqxor067 xor        111  0  ->  111

+dqxor068 xor         11  0  ->  11

+dqxor069 xor          1  0  ->  1

+

+dqxor070 xor 1  1111111111  ->  1111111110

+dqxor071 xor 1   111111111  ->  111111110

+dqxor072 xor 1    11111111  ->  11111110

+dqxor073 xor 1     1111111  ->  1111110

+dqxor074 xor 1      111111  ->  111110

+dqxor075 xor 1       11111  ->  11110

+dqxor076 xor 1        1111  ->  1110

+dqxor077 xor 1         111  ->  110

+dqxor078 xor 1          11  ->  10

+dqxor079 xor 1           1  ->  0

+

+dqxor080 xor 0  1111111111  ->  1111111111

+dqxor081 xor 0   111111111  ->  111111111

+dqxor082 xor 0    11111111  ->  11111111

+dqxor083 xor 0     1111111  ->  1111111

+dqxor084 xor 0      111111  ->  111111

+dqxor085 xor 0       11111  ->  11111

+dqxor086 xor 0        1111  ->  1111

+dqxor087 xor 0         111  ->  111

+dqxor088 xor 0          11  ->  11

+dqxor089 xor 0           1  ->  1

+

+dqxor090 xor 011111111  111101111  ->  100010000

+dqxor091 xor 101111111  111101111  ->   10010000

+dqxor092 xor 110111111  111101111  ->    1010000

+dqxor093 xor 111011111  111101111  ->     110000

+dqxor094 xor 111101111  111101111  ->          0

+dqxor095 xor 111110111  111101111  ->      11000

+dqxor096 xor 111111011  111101111  ->      10100

+dqxor097 xor 111111101  111101111  ->      10010

+dqxor098 xor 111111110  111101111  ->      10001

+

+dqxor100 xor 111101111  011111111  ->  100010000

+dqxor101 xor 111101111  101111111  ->   10010000

+dqxor102 xor 111101111  110111111  ->    1010000

+dqxor103 xor 111101111  111011111  ->     110000

+dqxor104 xor 111101111  111101111  ->          0

+dqxor105 xor 111101111  111110111  ->      11000

+dqxor106 xor 111101111  111111011  ->      10100

+dqxor107 xor 111101111  111111101  ->      10010

+dqxor108 xor 111101111  111111110  ->      10001

+

+-- non-0/1 should not be accepted, nor should signs

+dqxor220 xor 111111112  111111111  ->  NaN Invalid_operation

+dqxor221 xor 333333333  333333333  ->  NaN Invalid_operation

+dqxor222 xor 555555555  555555555  ->  NaN Invalid_operation

+dqxor223 xor 777777777  777777777  ->  NaN Invalid_operation

+dqxor224 xor 999999999  999999999  ->  NaN Invalid_operation

+dqxor225 xor 222222222  999999999  ->  NaN Invalid_operation

+dqxor226 xor 444444444  999999999  ->  NaN Invalid_operation

+dqxor227 xor 666666666  999999999  ->  NaN Invalid_operation

+dqxor228 xor 888888888  999999999  ->  NaN Invalid_operation

+dqxor229 xor 999999999  222222222  ->  NaN Invalid_operation

+dqxor230 xor 999999999  444444444  ->  NaN Invalid_operation

+dqxor231 xor 999999999  666666666  ->  NaN Invalid_operation

+dqxor232 xor 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+dqxor240 xor  567468689 -934981942 ->  NaN Invalid_operation

+dqxor241 xor  567367689  934981942 ->  NaN Invalid_operation

+dqxor242 xor -631917772 -706014634 ->  NaN Invalid_operation

+dqxor243 xor -756253257  138579234 ->  NaN Invalid_operation

+dqxor244 xor  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+dqxor250 xor  2000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor251 xor  7000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor252 xor  8000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor253 xor  9000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor254 xor  2000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor255 xor  7000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor256 xor  8000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor257 xor  9000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor258 xor  1000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor259 xor  1000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor260 xor  1000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor261 xor  1000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor262 xor  0000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor263 xor  0000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor264 xor  0000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation

+dqxor265 xor  0000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation

+-- test MSD-1

+dqxor270 xor  0200000111000111000111001000000000 1000000111000111000111100000000010 ->  NaN Invalid_operation

+dqxor271 xor  0700000111000111000111000100000000 1000000111000111000111010000000100 ->  NaN Invalid_operation

+dqxor272 xor  0800000111000111000111000010000000 1000000111000111000111001000001000 ->  NaN Invalid_operation

+dqxor273 xor  0900000111000111000111000001000000 1000000111000111000111000100010000 ->  NaN Invalid_operation

+dqxor274 xor  1000000111000111000111000000100000 0200000111000111000111000010100000 ->  NaN Invalid_operation

+dqxor275 xor  1000000111000111000111000000010000 0700000111000111000111000001000000 ->  NaN Invalid_operation

+dqxor276 xor  1000000111000111000111000000001000 0800000111000111000111000010100000 ->  NaN Invalid_operation

+dqxor277 xor  1000000111000111000111000000000100 0900000111000111000111000000010000 ->  NaN Invalid_operation

+-- test LSD

+dqxor280 xor  0010000111000111000111000000000002 1000000111000111000111000100000001 ->  NaN Invalid_operation

+dqxor281 xor  0001000111000111000111000000000007 1000000111000111000111001000000011 ->  NaN Invalid_operation

+dqxor282 xor  0000000111000111000111100000000008 1000000111000111000111010000000001 ->  NaN Invalid_operation

+dqxor283 xor  0000000111000111000111010000000009 1000000111000111000111100000000001 ->  NaN Invalid_operation

+dqxor284 xor  1000000111000111000111001000000000 0001000111000111000111000000000002 ->  NaN Invalid_operation

+dqxor285 xor  1000000111000111000111000100000000 0010000111000111000111000000000007 ->  NaN Invalid_operation

+dqxor286 xor  1000000111000111000111000010000000 0100000111000111000111000000000008 ->  NaN Invalid_operation

+dqxor287 xor  1000000111000111000111000001000000 1000000111000111000111000000000009 ->  NaN Invalid_operation

+-- test Middie

+dqxor288 xor  0010000111000111000111000020000000 1000000111000111000111001000000000 ->  NaN Invalid_operation

+dqxor289 xor  0001000111000111000111000070000001 1000000111000111000111000100000000 ->  NaN Invalid_operation

+dqxor290 xor  0000000111000111000111100080000010 1000000111000111000111000010000000 ->  NaN Invalid_operation

+dqxor291 xor  0000000111000111000111010090000100 1000000111000111000111000001000000 ->  NaN Invalid_operation

+dqxor292 xor  1000000111000111000111001000001000 0000000111000111000111000020100000 ->  NaN Invalid_operation

+dqxor293 xor  1000000111000111000111000100010000 0000000111000111000111000070010000 ->  NaN Invalid_operation

+dqxor294 xor  1000000111000111000111000010100000 0000000111000111000111000080001000 ->  NaN Invalid_operation

+dqxor295 xor  1000000111000111000111000001000000 0000000111000111000111000090000100 ->  NaN Invalid_operation

+-- signs

+dqxor296 xor -1000000111000111000111000001000000 -0000001110001110001110010000000100 ->  NaN Invalid_operation

+dqxor297 xor -1000000111000111000111000001000000  0000001110001110001110000010000100 ->  NaN Invalid_operation

+dqxor298 xor  1000000111000111000111000001000000 -0000001110001110001110001000000100 ->  NaN Invalid_operation

+dqxor299 xor  1000000111000111000111000001000000  0000001110001110001110000011000100 ->  1000001001001001001001000010000100

+

+-- Nmax, Nmin, Ntiny-like

+dqxor331 xor  2   9.99999999E+999     -> NaN Invalid_operation

+dqxor332 xor  3   1E-999              -> NaN Invalid_operation

+dqxor333 xor  4   1.00000000E-2821    -> NaN Invalid_operation

+dqxor334 xor  5   1E-900              -> NaN Invalid_operation

+dqxor335 xor  6   -1E-900             -> NaN Invalid_operation

+dqxor336 xor  7   -1.00000000E-999    -> NaN Invalid_operation

+dqxor337 xor  8   -1E-999             -> NaN Invalid_operation

+dqxor338 xor  9   -9.99999999E+999    -> NaN Invalid_operation

+dqxor341 xor  9.99999999E+999     -18 -> NaN Invalid_operation

+dqxor342 xor  1E-999               01 -> NaN Invalid_operation

+dqxor343 xor  1.00000000E-999     -18 -> NaN Invalid_operation

+dqxor344 xor  1E-908               18 -> NaN Invalid_operation

+dqxor345 xor  -1E-907             -10 -> NaN Invalid_operation

+dqxor346 xor  -1.00000000E-999     18 -> NaN Invalid_operation

+dqxor347 xor  -1E-999              10 -> NaN Invalid_operation

+dqxor348 xor  -9.99999999E+2991   -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+dqxor361 xor  1.0                  1  -> NaN Invalid_operation

+dqxor362 xor  1E+1                 1  -> NaN Invalid_operation

+dqxor363 xor  0.0                  1  -> NaN Invalid_operation

+dqxor364 xor  0E+1                 1  -> NaN Invalid_operation

+dqxor365 xor  9.9                  1  -> NaN Invalid_operation

+dqxor366 xor  9E+1                 1  -> NaN Invalid_operation

+dqxor371 xor  0 1.0                   -> NaN Invalid_operation

+dqxor372 xor  0 1E+1                  -> NaN Invalid_operation

+dqxor373 xor  0 0.0                   -> NaN Invalid_operation

+dqxor374 xor  0 0E+1                  -> NaN Invalid_operation

+dqxor375 xor  0 9.9                   -> NaN Invalid_operation

+dqxor376 xor  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+dqxor780 xor -Inf  -Inf   -> NaN Invalid_operation

+dqxor781 xor -Inf  -1000  -> NaN Invalid_operation

+dqxor782 xor -Inf  -1     -> NaN Invalid_operation

+dqxor783 xor -Inf  -0     -> NaN Invalid_operation

+dqxor784 xor -Inf   0     -> NaN Invalid_operation

+dqxor785 xor -Inf   1     -> NaN Invalid_operation

+dqxor786 xor -Inf   1000  -> NaN Invalid_operation

+dqxor787 xor -1000 -Inf   -> NaN Invalid_operation

+dqxor788 xor -Inf  -Inf   -> NaN Invalid_operation

+dqxor789 xor -1    -Inf   -> NaN Invalid_operation

+dqxor790 xor -0    -Inf   -> NaN Invalid_operation

+dqxor791 xor  0    -Inf   -> NaN Invalid_operation

+dqxor792 xor  1    -Inf   -> NaN Invalid_operation

+dqxor793 xor  1000 -Inf   -> NaN Invalid_operation

+dqxor794 xor  Inf  -Inf   -> NaN Invalid_operation

+

+dqxor800 xor  Inf  -Inf   -> NaN Invalid_operation

+dqxor801 xor  Inf  -1000  -> NaN Invalid_operation

+dqxor802 xor  Inf  -1     -> NaN Invalid_operation

+dqxor803 xor  Inf  -0     -> NaN Invalid_operation

+dqxor804 xor  Inf   0     -> NaN Invalid_operation

+dqxor805 xor  Inf   1     -> NaN Invalid_operation

+dqxor806 xor  Inf   1000  -> NaN Invalid_operation

+dqxor807 xor  Inf   Inf   -> NaN Invalid_operation

+dqxor808 xor -1000  Inf   -> NaN Invalid_operation

+dqxor809 xor -Inf   Inf   -> NaN Invalid_operation

+dqxor810 xor -1     Inf   -> NaN Invalid_operation

+dqxor811 xor -0     Inf   -> NaN Invalid_operation

+dqxor812 xor  0     Inf   -> NaN Invalid_operation

+dqxor813 xor  1     Inf   -> NaN Invalid_operation

+dqxor814 xor  1000  Inf   -> NaN Invalid_operation

+dqxor815 xor  Inf   Inf   -> NaN Invalid_operation

+

+dqxor821 xor  NaN -Inf    -> NaN Invalid_operation

+dqxor822 xor  NaN -1000   -> NaN Invalid_operation

+dqxor823 xor  NaN -1      -> NaN Invalid_operation

+dqxor824 xor  NaN -0      -> NaN Invalid_operation

+dqxor825 xor  NaN  0      -> NaN Invalid_operation

+dqxor826 xor  NaN  1      -> NaN Invalid_operation

+dqxor827 xor  NaN  1000   -> NaN Invalid_operation

+dqxor828 xor  NaN  Inf    -> NaN Invalid_operation

+dqxor829 xor  NaN  NaN    -> NaN Invalid_operation

+dqxor830 xor -Inf  NaN    -> NaN Invalid_operation

+dqxor831 xor -1000 NaN    -> NaN Invalid_operation

+dqxor832 xor -1    NaN    -> NaN Invalid_operation

+dqxor833 xor -0    NaN    -> NaN Invalid_operation

+dqxor834 xor  0    NaN    -> NaN Invalid_operation

+dqxor835 xor  1    NaN    -> NaN Invalid_operation

+dqxor836 xor  1000 NaN    -> NaN Invalid_operation

+dqxor837 xor  Inf  NaN    -> NaN Invalid_operation

+

+dqxor841 xor  sNaN -Inf   ->  NaN  Invalid_operation

+dqxor842 xor  sNaN -1000  ->  NaN  Invalid_operation

+dqxor843 xor  sNaN -1     ->  NaN  Invalid_operation

+dqxor844 xor  sNaN -0     ->  NaN  Invalid_operation

+dqxor845 xor  sNaN  0     ->  NaN  Invalid_operation

+dqxor846 xor  sNaN  1     ->  NaN  Invalid_operation

+dqxor847 xor  sNaN  1000  ->  NaN  Invalid_operation

+dqxor848 xor  sNaN  NaN   ->  NaN  Invalid_operation

+dqxor849 xor  sNaN sNaN   ->  NaN  Invalid_operation

+dqxor850 xor  NaN  sNaN   ->  NaN  Invalid_operation

+dqxor851 xor -Inf  sNaN   ->  NaN  Invalid_operation

+dqxor852 xor -1000 sNaN   ->  NaN  Invalid_operation

+dqxor853 xor -1    sNaN   ->  NaN  Invalid_operation

+dqxor854 xor -0    sNaN   ->  NaN  Invalid_operation

+dqxor855 xor  0    sNaN   ->  NaN  Invalid_operation

+dqxor856 xor  1    sNaN   ->  NaN  Invalid_operation

+dqxor857 xor  1000 sNaN   ->  NaN  Invalid_operation

+dqxor858 xor  Inf  sNaN   ->  NaN  Invalid_operation

+dqxor859 xor  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+dqxor861 xor  NaN1   -Inf    -> NaN Invalid_operation

+dqxor862 xor +NaN2   -1000   -> NaN Invalid_operation

+dqxor863 xor  NaN3    1000   -> NaN Invalid_operation

+dqxor864 xor  NaN4    Inf    -> NaN Invalid_operation

+dqxor865 xor  NaN5   +NaN6   -> NaN Invalid_operation

+dqxor866 xor -Inf     NaN7   -> NaN Invalid_operation

+dqxor867 xor -1000    NaN8   -> NaN Invalid_operation

+dqxor868 xor  1000    NaN9   -> NaN Invalid_operation

+dqxor869 xor  Inf    +NaN10  -> NaN Invalid_operation

+dqxor871 xor  sNaN11  -Inf   -> NaN Invalid_operation

+dqxor872 xor  sNaN12  -1000  -> NaN Invalid_operation

+dqxor873 xor  sNaN13   1000  -> NaN Invalid_operation

+dqxor874 xor  sNaN14   NaN17 -> NaN Invalid_operation

+dqxor875 xor  sNaN15  sNaN18 -> NaN Invalid_operation

+dqxor876 xor  NaN16   sNaN19 -> NaN Invalid_operation

+dqxor877 xor -Inf    +sNaN20 -> NaN Invalid_operation

+dqxor878 xor -1000    sNaN21 -> NaN Invalid_operation

+dqxor879 xor  1000    sNaN22 -> NaN Invalid_operation

+dqxor880 xor  Inf     sNaN23 -> NaN Invalid_operation

+dqxor881 xor +NaN25  +sNaN24 -> NaN Invalid_operation

+dqxor882 xor -NaN26    NaN28 -> NaN Invalid_operation

+dqxor883 xor -sNaN27  sNaN29 -> NaN Invalid_operation

+dqxor884 xor  1000    -NaN30 -> NaN Invalid_operation

+dqxor885 xor  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/dsBase.decTest b/Lib/test/decimaltestdata/dsBase.decTest
new file mode 100644
index 0000000..e2fb4ba
--- /dev/null
+++ b/Lib/test/decimaltestdata/dsBase.decTest
@@ -0,0 +1,1062 @@
+------------------------------------------------------------------------

+-- dsBase.decTest -- base decSingle <--> string conversions           --

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

+

+-- This file tests base conversions from string to a decimal number

+-- and back to a string (in Scientific form)

+

+-- Note that unlike other operations the operand is subject to rounding

+-- to conform to emax and precision settings (that is, numbers will

+-- conform to rules and exponent will be in permitted range).  The

+-- 'left hand side', therefore, may have numbers that cannot be

+-- represented in a decSingle.  Some testcases go to the limit of the

+-- next-wider format, and hence these testcases may also be used to

+-- test narrowing and widening operations.

+

+extended:    1

+clamp:       1

+precision:   7

+maxExponent: 96

+minExponent: -95

+rounding:    half_even

+

+dsbas001 toSci       0 -> 0

+dsbas002 toSci       1 -> 1

+dsbas003 toSci     1.0 -> 1.0

+dsbas004 toSci    1.00 -> 1.00

+dsbas005 toSci      10 -> 10

+dsbas006 toSci    1000 -> 1000

+dsbas007 toSci    10.0 -> 10.0

+dsbas008 toSci    10.1 -> 10.1

+dsbas009 toSci    10.4 -> 10.4

+dsbas010 toSci    10.5 -> 10.5

+dsbas011 toSci    10.6 -> 10.6

+dsbas012 toSci    10.9 -> 10.9

+dsbas013 toSci    11.0 -> 11.0

+dsbas014 toSci  1.234 -> 1.234

+dsbas015 toSci  0.123 -> 0.123

+dsbas016 toSci  0.012 -> 0.012

+dsbas017 toSci  -0    -> -0

+dsbas018 toSci  -0.0  -> -0.0

+dsbas019 toSci -00.00 -> -0.00

+

+dsbas021 toSci     -1 -> -1

+dsbas022 toSci   -1.0 -> -1.0

+dsbas023 toSci   -0.1 -> -0.1

+dsbas024 toSci   -9.1 -> -9.1

+dsbas025 toSci   -9.11 -> -9.11

+dsbas026 toSci   -9.119 -> -9.119

+dsbas027 toSci   -9.999 -> -9.999

+

+dsbas030 toSci  '1234.567'   -> '1234.567'

+dsbas031 toSci  '1234.000'   -> '1234.000'

+dsbas032 toSci   '1234912'   -> '1234912'

+dsbas033 toSci   '0.00001234567'   -> '0.00001234567'

+dsbas034 toSci  '0.000001234567'   -> '0.000001234567'

+dsbas035 toSci '0.0000001234567'   -> '1.234567E-7'

+dsbas036 toSci '0.00000001234567'  -> '1.234567E-8'

+

+dsbas037 toSci '0.1234564'   -> '0.1234564'

+dsbas038 toSci '0.1234565'   -> '0.1234565'

+

+-- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax)

+dsbsn001 toSci -9.999999E+96 -> -9.999999E+96

+dsbsn002 toSci -1E-95 -> -1E-95

+dsbsn003 toSci -1E-101 -> -1E-101 Subnormal

+dsbsn004 toSci -0 -> -0

+dsbsn005 toSci +0 ->  0

+dsbsn006 toSci +1E-101 ->  1E-101 Subnormal

+dsbsn007 toSci +1E-95 ->  1E-95

+dsbsn008 toSci +9.999999E+96 ->  9.999999E+96

+

+-- String [many more examples are implicitly tested elsewhere]

+-- strings without E cannot generate E in result

+dsbas040 toSci "12"        -> '12'

+dsbas041 toSci "-76"       -> '-76'

+dsbas042 toSci "12.76"     -> '12.76'

+dsbas043 toSci "+12.76"    -> '12.76'

+dsbas044 toSci "012.76"    -> '12.76'

+dsbas045 toSci "+0.003"    -> '0.003'

+dsbas046 toSci "17."       -> '17'

+dsbas047 toSci ".5"        -> '0.5'

+dsbas048 toSci "044"       -> '44'

+dsbas049 toSci "0044"      -> '44'

+dsbas050 toSci "0.0005"      -> '0.0005'

+dsbas051 toSci "00.00005"    -> '0.00005'

+dsbas052 toSci "0.000005"    -> '0.000005'

+dsbas053 toSci "0.0000050"   -> '0.0000050'

+dsbas054 toSci "0.0000005"   -> '5E-7'

+dsbas055 toSci "0.00000005"  -> '5E-8'

+dsbas056 toSci "12678.54" -> '12678.54'

+dsbas057 toSci "2678.543" -> '2678.543'

+dsbas058 toSci "345678.5" -> '345678.5'

+dsbas059 toSci "0678.5432" -> '678.5432'

+dsbas060 toSci "678.5432" -> '678.5432'

+dsbas061 toSci "+678.5432" -> '678.5432'

+dsbas062 toSci "+0678.5432" -> '678.5432'

+dsbas063 toSci "+00678.5432" -> '678.5432'

+dsbas064 toSci "-678.5432"  -> '-678.5432'

+dsbas065 toSci "-0678.5432"  -> '-678.5432'

+dsbas066 toSci "-00678.5432"  -> '-678.5432'

+-- examples

+dsbas067 toSci "5E-6"        -> '0.000005'

+dsbas068 toSci "50E-7"       -> '0.0000050'

+dsbas069 toSci "5E-7"        -> '5E-7'

+

+-- [No exotics as no Unicode]

+

+-- rounded with dots in all (including edge) places

+dsbas071 toSci  .1234567890123456  -> 0.1234568 Inexact Rounded

+dsbas072 toSci  1.234567890123456  -> 1.234568 Inexact Rounded

+dsbas073 toSci  12.34567890123456  -> 12.34568 Inexact Rounded

+dsbas074 toSci  123.4567890123456  -> 123.4568 Inexact Rounded

+dsbas075 toSci  1234.567890123456  -> 1234.568 Inexact Rounded

+dsbas076 toSci  12345.67890123456  -> 12345.68 Inexact Rounded

+dsbas077 toSci  123456.7890123456  -> 123456.8 Inexact Rounded

+dsbas078 toSci  1234567.890123456  -> 1234568  Inexact Rounded

+dsbas079 toSci  12345678.90123456  -> 1.234568E+7 Inexact Rounded

+dsbas080 toSci  123456789.0123456  -> 1.234568E+8 Inexact Rounded

+dsbas081 toSci  1234567890.123456  -> 1.234568E+9 Inexact Rounded

+dsbas082 toSci  12345678901.23456  -> 1.234568E+10 Inexact Rounded

+dsbas083 toSci  123456789012.3456  -> 1.234568E+11 Inexact Rounded

+dsbas084 toSci  1234567890123.456  -> 1.234568E+12 Inexact Rounded

+dsbas085 toSci  12345678901234.56  -> 1.234568E+13 Inexact Rounded

+dsbas086 toSci  123456789012345.6  -> 1.234568E+14 Inexact Rounded

+dsbas087 toSci  1234567890123456.  -> 1.234568E+15 Inexact Rounded

+dsbas088 toSci  1234567890123456   -> 1.234568E+15 Inexact Rounded

+

+-- Numbers with E

+dsbas130 toSci "0.000E-1"  -> '0.0000'

+dsbas131 toSci "0.000E-2"  -> '0.00000'

+dsbas132 toSci "0.000E-3"  -> '0.000000'

+dsbas133 toSci "0.000E-4"  -> '0E-7'

+dsbas134 toSci "0.00E-2"   -> '0.0000'

+dsbas135 toSci "0.00E-3"   -> '0.00000'

+dsbas136 toSci "0.00E-4"   -> '0.000000'

+dsbas137 toSci "0.00E-5"   -> '0E-7'

+dsbas138 toSci "+0E+9"     -> '0E+9'

+dsbas139 toSci "-0E+9"     -> '-0E+9'

+dsbas140 toSci "1E+9"      -> '1E+9'

+dsbas141 toSci "1e+09"     -> '1E+9'

+dsbas142 toSci "1E+90"     -> '1E+90'

+dsbas143 toSci "+1E+009"   -> '1E+9'

+dsbas144 toSci "0E+9"      -> '0E+9'

+dsbas145 toSci "1E+9"      -> '1E+9'

+dsbas146 toSci "1E+09"     -> '1E+9'

+dsbas147 toSci "1e+90"     -> '1E+90'

+dsbas148 toSci "1E+009"    -> '1E+9'

+dsbas149 toSci "000E+9"    -> '0E+9'

+dsbas150 toSci "1E9"       -> '1E+9'

+dsbas151 toSci "1e09"      -> '1E+9'

+dsbas152 toSci "1E90"      -> '1E+90'

+dsbas153 toSci "1E009"     -> '1E+9'

+dsbas154 toSci "0E9"       -> '0E+9'

+dsbas155 toSci "0.000e+0"  -> '0.000'

+dsbas156 toSci "0.000E-1"  -> '0.0000'

+dsbas157 toSci "4E+9"      -> '4E+9'

+dsbas158 toSci "44E+9"     -> '4.4E+10'

+dsbas159 toSci "0.73e-7"   -> '7.3E-8'

+dsbas160 toSci "00E+9"     -> '0E+9'

+dsbas161 toSci "00E-9"     -> '0E-9'

+dsbas162 toSci "10E+9"     -> '1.0E+10'

+dsbas163 toSci "10E+09"    -> '1.0E+10'

+dsbas164 toSci "10e+90"    -> '1.0E+91'

+dsbas165 toSci "10E+009"   -> '1.0E+10'

+dsbas166 toSci "100e+9"    -> '1.00E+11'

+dsbas167 toSci "100e+09"   -> '1.00E+11'

+dsbas168 toSci "100E+90"   -> '1.00E+92'

+dsbas169 toSci "100e+009"  -> '1.00E+11'

+

+dsbas170 toSci "1.265"     -> '1.265'

+dsbas171 toSci "1.265E-20" -> '1.265E-20'

+dsbas172 toSci "1.265E-8"  -> '1.265E-8'

+dsbas173 toSci "1.265E-4"  -> '0.0001265'

+dsbas174 toSci "1.265E-3"  -> '0.001265'

+dsbas175 toSci "1.265E-2"  -> '0.01265'

+dsbas176 toSci "1.265E-1"  -> '0.1265'

+dsbas177 toSci "1.265E-0"  -> '1.265'

+dsbas178 toSci "1.265E+1"  -> '12.65'

+dsbas179 toSci "1.265E+2"  -> '126.5'

+dsbas180 toSci "1.265E+3"  -> '1265'

+dsbas181 toSci "1.265E+4"  -> '1.265E+4'

+dsbas182 toSci "1.265E+8"  -> '1.265E+8'

+dsbas183 toSci "1.265E+20" -> '1.265E+20'

+

+dsbas190 toSci "12.65"     -> '12.65'

+dsbas191 toSci "12.65E-20" -> '1.265E-19'

+dsbas192 toSci "12.65E-8"  -> '1.265E-7'

+dsbas193 toSci "12.65E-4"  -> '0.001265'

+dsbas194 toSci "12.65E-3"  -> '0.01265'

+dsbas195 toSci "12.65E-2"  -> '0.1265'

+dsbas196 toSci "12.65E-1"  -> '1.265'

+dsbas197 toSci "12.65E-0"  -> '12.65'

+dsbas198 toSci "12.65E+1"  -> '126.5'

+dsbas199 toSci "12.65E+2"  -> '1265'

+dsbas200 toSci "12.65E+3"  -> '1.265E+4'

+dsbas201 toSci "12.65E+4"  -> '1.265E+5'

+dsbas202 toSci "12.65E+8"  -> '1.265E+9'

+dsbas203 toSci "12.65E+20" -> '1.265E+21'

+

+dsbas210 toSci "126.5"     -> '126.5'

+dsbas211 toSci "126.5E-20" -> '1.265E-18'

+dsbas212 toSci "126.5E-8"  -> '0.000001265'

+dsbas213 toSci "126.5E-4"  -> '0.01265'

+dsbas214 toSci "126.5E-3"  -> '0.1265'

+dsbas215 toSci "126.5E-2"  -> '1.265'

+dsbas216 toSci "126.5E-1"  -> '12.65'

+dsbas217 toSci "126.5E-0"  -> '126.5'

+dsbas218 toSci "126.5E+1"  -> '1265'

+dsbas219 toSci "126.5E+2"  -> '1.265E+4'

+dsbas220 toSci "126.5E+3"  -> '1.265E+5'

+dsbas221 toSci "126.5E+4"  -> '1.265E+6'

+dsbas222 toSci "126.5E+8"  -> '1.265E+10'

+dsbas223 toSci "126.5E+20" -> '1.265E+22'

+

+dsbas230 toSci "1265"     -> '1265'

+dsbas231 toSci "1265E-20" -> '1.265E-17'

+dsbas232 toSci "1265E-8"  -> '0.00001265'

+dsbas233 toSci "1265E-4"  -> '0.1265'

+dsbas234 toSci "1265E-3"  -> '1.265'

+dsbas235 toSci "1265E-2"  -> '12.65'

+dsbas236 toSci "1265E-1"  -> '126.5'

+dsbas237 toSci "1265E-0"  -> '1265'

+dsbas238 toSci "1265E+1"  -> '1.265E+4'

+dsbas239 toSci "1265E+2"  -> '1.265E+5'

+dsbas240 toSci "1265E+3"  -> '1.265E+6'

+dsbas241 toSci "1265E+4"  -> '1.265E+7'

+dsbas242 toSci "1265E+8"  -> '1.265E+11'

+dsbas243 toSci "1265E+20" -> '1.265E+23'

+

+dsbas250 toSci "0.1265"     -> '0.1265'

+dsbas251 toSci "0.1265E-20" -> '1.265E-21'

+dsbas252 toSci "0.1265E-8"  -> '1.265E-9'

+dsbas253 toSci "0.1265E-4"  -> '0.00001265'

+dsbas254 toSci "0.1265E-3"  -> '0.0001265'

+dsbas255 toSci "0.1265E-2"  -> '0.001265'

+dsbas256 toSci "0.1265E-1"  -> '0.01265'

+dsbas257 toSci "0.1265E-0"  -> '0.1265'

+dsbas258 toSci "0.1265E+1"  -> '1.265'

+dsbas259 toSci "0.1265E+2"  -> '12.65'

+dsbas260 toSci "0.1265E+3"  -> '126.5'

+dsbas261 toSci "0.1265E+4"  -> '1265'

+dsbas262 toSci "0.1265E+8"  -> '1.265E+7'

+dsbas263 toSci "0.1265E+20" -> '1.265E+19'

+

+-- some more negative zeros [systematic tests below]

+dsbas290 toSci "-0.000E-1"  -> '-0.0000'

+dsbas291 toSci "-0.000E-2"  -> '-0.00000'

+dsbas292 toSci "-0.000E-3"  -> '-0.000000'

+dsbas293 toSci "-0.000E-4"  -> '-0E-7'

+dsbas294 toSci "-0.00E-2"   -> '-0.0000'

+dsbas295 toSci "-0.00E-3"   -> '-0.00000'

+dsbas296 toSci "-0.0E-2"    -> '-0.000'

+dsbas297 toSci "-0.0E-3"    -> '-0.0000'

+dsbas298 toSci "-0E-2"      -> '-0.00'

+dsbas299 toSci "-0E-3"      -> '-0.000'

+

+-- Engineering notation tests

+dsbas301  toSci 10e12  -> 1.0E+13

+dsbas302  toEng 10e12  -> 10E+12

+dsbas303  toSci 10e11  -> 1.0E+12

+dsbas304  toEng 10e11  -> 1.0E+12

+dsbas305  toSci 10e10  -> 1.0E+11

+dsbas306  toEng 10e10  -> 100E+9

+dsbas307  toSci 10e9   -> 1.0E+10

+dsbas308  toEng 10e9   -> 10E+9

+dsbas309  toSci 10e8   -> 1.0E+9

+dsbas310  toEng 10e8   -> 1.0E+9

+dsbas311  toSci 10e7   -> 1.0E+8

+dsbas312  toEng 10e7   -> 100E+6

+dsbas313  toSci 10e6   -> 1.0E+7

+dsbas314  toEng 10e6   -> 10E+6

+dsbas315  toSci 10e5   -> 1.0E+6

+dsbas316  toEng 10e5   -> 1.0E+6

+dsbas317  toSci 10e4   -> 1.0E+5

+dsbas318  toEng 10e4   -> 100E+3

+dsbas319  toSci 10e3   -> 1.0E+4

+dsbas320  toEng 10e3   -> 10E+3

+dsbas321  toSci 10e2   -> 1.0E+3

+dsbas322  toEng 10e2   -> 1.0E+3

+dsbas323  toSci 10e1   -> 1.0E+2

+dsbas324  toEng 10e1   -> 100

+dsbas325  toSci 10e0   -> 10

+dsbas326  toEng 10e0   -> 10

+dsbas327  toSci 10e-1  -> 1.0

+dsbas328  toEng 10e-1  -> 1.0

+dsbas329  toSci 10e-2  -> 0.10

+dsbas330  toEng 10e-2  -> 0.10

+dsbas331  toSci 10e-3  -> 0.010

+dsbas332  toEng 10e-3  -> 0.010

+dsbas333  toSci 10e-4  -> 0.0010

+dsbas334  toEng 10e-4  -> 0.0010

+dsbas335  toSci 10e-5  -> 0.00010

+dsbas336  toEng 10e-5  -> 0.00010

+dsbas337  toSci 10e-6  -> 0.000010

+dsbas338  toEng 10e-6  -> 0.000010

+dsbas339  toSci 10e-7  -> 0.0000010

+dsbas340  toEng 10e-7  -> 0.0000010

+dsbas341  toSci 10e-8  -> 1.0E-7

+dsbas342  toEng 10e-8  -> 100E-9

+dsbas343  toSci 10e-9  -> 1.0E-8

+dsbas344  toEng 10e-9  -> 10E-9

+dsbas345  toSci 10e-10 -> 1.0E-9

+dsbas346  toEng 10e-10 -> 1.0E-9

+dsbas347  toSci 10e-11 -> 1.0E-10

+dsbas348  toEng 10e-11 -> 100E-12

+dsbas349  toSci 10e-12 -> 1.0E-11

+dsbas350  toEng 10e-12 -> 10E-12

+dsbas351  toSci 10e-13 -> 1.0E-12

+dsbas352  toEng 10e-13 -> 1.0E-12

+

+dsbas361  toSci 7E12  -> 7E+12

+dsbas362  toEng 7E12  -> 7E+12

+dsbas363  toSci 7E11  -> 7E+11

+dsbas364  toEng 7E11  -> 700E+9

+dsbas365  toSci 7E10  -> 7E+10

+dsbas366  toEng 7E10  -> 70E+9

+dsbas367  toSci 7E9   -> 7E+9

+dsbas368  toEng 7E9   -> 7E+9

+dsbas369  toSci 7E8   -> 7E+8

+dsbas370  toEng 7E8   -> 700E+6

+dsbas371  toSci 7E7   -> 7E+7

+dsbas372  toEng 7E7   -> 70E+6

+dsbas373  toSci 7E6   -> 7E+6

+dsbas374  toEng 7E6   -> 7E+6

+dsbas375  toSci 7E5   -> 7E+5

+dsbas376  toEng 7E5   -> 700E+3

+dsbas377  toSci 7E4   -> 7E+4

+dsbas378  toEng 7E4   -> 70E+3

+dsbas379  toSci 7E3   -> 7E+3

+dsbas380  toEng 7E3   -> 7E+3

+dsbas381  toSci 7E2   -> 7E+2

+dsbas382  toEng 7E2   -> 700

+dsbas383  toSci 7E1   -> 7E+1

+dsbas384  toEng 7E1   -> 70

+dsbas385  toSci 7E0   -> 7

+dsbas386  toEng 7E0   -> 7

+dsbas387  toSci 7E-1  -> 0.7

+dsbas388  toEng 7E-1  -> 0.7

+dsbas389  toSci 7E-2  -> 0.07

+dsbas390  toEng 7E-2  -> 0.07

+dsbas391  toSci 7E-3  -> 0.007

+dsbas392  toEng 7E-3  -> 0.007

+dsbas393  toSci 7E-4  -> 0.0007

+dsbas394  toEng 7E-4  -> 0.0007

+dsbas395  toSci 7E-5  -> 0.00007

+dsbas396  toEng 7E-5  -> 0.00007

+dsbas397  toSci 7E-6  -> 0.000007

+dsbas398  toEng 7E-6  -> 0.000007

+dsbas399  toSci 7E-7  -> 7E-7

+dsbas400  toEng 7E-7  -> 700E-9

+dsbas401  toSci 7E-8  -> 7E-8

+dsbas402  toEng 7E-8  -> 70E-9

+dsbas403  toSci 7E-9  -> 7E-9

+dsbas404  toEng 7E-9  -> 7E-9

+dsbas405  toSci 7E-10 -> 7E-10

+dsbas406  toEng 7E-10 -> 700E-12

+dsbas407  toSci 7E-11 -> 7E-11

+dsbas408  toEng 7E-11 -> 70E-12

+dsbas409  toSci 7E-12 -> 7E-12

+dsbas410  toEng 7E-12 -> 7E-12

+dsbas411  toSci 7E-13 -> 7E-13

+dsbas412  toEng 7E-13 -> 700E-15

+

+-- Exacts remain exact up to precision ..

+dsbas420  toSci    100 -> 100

+dsbas422  toSci   1000 -> 1000

+dsbas424  toSci  999.9 ->  999.9

+dsbas426  toSci 1000.0 -> 1000.0

+dsbas428  toSci 1000.1 -> 1000.1

+dsbas430  toSci 10000 -> 10000

+dsbas432  toSci 1000        -> 1000

+dsbas434  toSci 10000       -> 10000

+dsbas436  toSci 100000      -> 100000

+dsbas438  toSci 1000000     -> 1000000

+dsbas440  toSci 10000000    -> 1.000000E+7   Rounded

+dsbas442  toSci 10000000    -> 1.000000E+7   Rounded

+dsbas444  toSci 10000003    -> 1.000000E+7   Rounded Inexact

+dsbas446  toSci 10000005    -> 1.000000E+7   Rounded Inexact

+dsbas448  toSci 100000050   -> 1.000000E+8   Rounded Inexact

+dsbas450  toSci 10000009    -> 1.000001E+7   Rounded Inexact

+dsbas452  toSci 100000000   -> 1.000000E+8   Rounded

+dsbas454  toSci 100000003   -> 1.000000E+8   Rounded Inexact

+dsbas456  toSci 100000005   -> 1.000000E+8   Rounded Inexact

+dsbas458  toSci 100000009   -> 1.000000E+8   Rounded Inexact

+dsbas460  toSci 1000000000  -> 1.000000E+9   Rounded

+dsbas462  toSci 1000000300  -> 1.000000E+9   Rounded Inexact

+dsbas464  toSci 1000000500  -> 1.000000E+9   Rounded Inexact

+dsbas466  toSci 1000000900  -> 1.000001E+9   Rounded Inexact

+dsbas468  toSci 10000000000 -> 1.000000E+10  Rounded

+dsbas470  toSci 10000003000 -> 1.000000E+10  Rounded Inexact

+dsbas472  toSci 10000005000 -> 1.000000E+10  Rounded Inexact

+dsbas474  toSci 10000009000 -> 1.000001E+10  Rounded Inexact

+

+-- check rounding modes heeded

+rounding:  ceiling

+dsbsr401  toSci  1.1123450    ->  1.112345  Rounded

+dsbsr402  toSci  1.11234549   ->  1.112346  Rounded Inexact

+dsbsr403  toSci  1.11234550   ->  1.112346  Rounded Inexact

+dsbsr404  toSci  1.11234551   ->  1.112346  Rounded Inexact

+rounding:  up

+dsbsr405  toSci  1.1123450    ->  1.112345  Rounded

+dsbsr406  toSci  1.11234549   ->  1.112346  Rounded Inexact

+dsbsr407  toSci  1.11234550   ->  1.112346  Rounded Inexact

+dsbsr408  toSci  1.11234551   ->  1.112346  Rounded Inexact

+rounding:  floor

+dsbsr410  toSci  1.1123450    ->  1.112345  Rounded

+dsbsr411  toSci  1.11234549   ->  1.112345  Rounded Inexact

+dsbsr412  toSci  1.11234550   ->  1.112345  Rounded Inexact

+dsbsr413  toSci  1.11234551   ->  1.112345  Rounded Inexact

+rounding:  half_down

+dsbsr415  toSci  1.1123450    ->  1.112345  Rounded

+dsbsr416  toSci  1.11234549   ->  1.112345  Rounded Inexact

+dsbsr417  toSci  1.11234550   ->  1.112345  Rounded Inexact

+dsbsr418  toSci  1.11234650   ->  1.112346  Rounded Inexact

+dsbsr419  toSci  1.11234551   ->  1.112346  Rounded Inexact

+rounding:  half_even

+dsbsr421  toSci  1.1123450    ->  1.112345  Rounded

+dsbsr422  toSci  1.11234549   ->  1.112345  Rounded Inexact

+dsbsr423  toSci  1.11234550   ->  1.112346  Rounded Inexact

+dsbsr424  toSci  1.11234650   ->  1.112346  Rounded Inexact

+dsbsr425  toSci  1.11234551   ->  1.112346  Rounded Inexact

+rounding:  down

+dsbsr426  toSci  1.1123450    ->  1.112345  Rounded

+dsbsr427  toSci  1.11234549   ->  1.112345  Rounded Inexact

+dsbsr428  toSci  1.11234550   ->  1.112345  Rounded Inexact

+dsbsr429  toSci  1.11234551   ->  1.112345  Rounded Inexact

+rounding:  half_up

+dsbsr431  toSci  1.1123450    ->  1.112345  Rounded

+dsbsr432  toSci  1.11234549   ->  1.112345  Rounded Inexact

+dsbsr433  toSci  1.11234550   ->  1.112346  Rounded Inexact

+dsbsr434  toSci  1.11234650   ->  1.112347  Rounded Inexact

+dsbsr435  toSci  1.11234551   ->  1.112346  Rounded Inexact

+-- negatives

+rounding:  ceiling

+dsbsr501  toSci -1.1123450    -> -1.112345  Rounded

+dsbsr502  toSci -1.11234549   -> -1.112345  Rounded Inexact

+dsbsr503  toSci -1.11234550   -> -1.112345  Rounded Inexact

+dsbsr504  toSci -1.11234551   -> -1.112345  Rounded Inexact

+rounding:  up

+dsbsr505  toSci -1.1123450    -> -1.112345  Rounded

+dsbsr506  toSci -1.11234549   -> -1.112346  Rounded Inexact

+dsbsr507  toSci -1.11234550   -> -1.112346  Rounded Inexact

+dsbsr508  toSci -1.11234551   -> -1.112346  Rounded Inexact

+rounding:  floor

+dsbsr510  toSci -1.1123450    -> -1.112345  Rounded

+dsbsr511  toSci -1.11234549   -> -1.112346  Rounded Inexact

+dsbsr512  toSci -1.11234550   -> -1.112346  Rounded Inexact

+dsbsr513  toSci -1.11234551   -> -1.112346  Rounded Inexact

+rounding:  half_down

+dsbsr515  toSci -1.1123450    -> -1.112345  Rounded

+dsbsr516  toSci -1.11234549   -> -1.112345  Rounded Inexact

+dsbsr517  toSci -1.11234550   -> -1.112345  Rounded Inexact

+dsbsr518  toSci -1.11234650   -> -1.112346  Rounded Inexact

+dsbsr519  toSci -1.11234551   -> -1.112346  Rounded Inexact

+rounding:  half_even

+dsbsr521  toSci -1.1123450    -> -1.112345  Rounded

+dsbsr522  toSci -1.11234549   -> -1.112345  Rounded Inexact

+dsbsr523  toSci -1.11234550   -> -1.112346  Rounded Inexact

+dsbsr524  toSci -1.11234650   -> -1.112346  Rounded Inexact

+dsbsr525  toSci -1.11234551   -> -1.112346  Rounded Inexact

+rounding:  down

+dsbsr526  toSci -1.1123450    -> -1.112345  Rounded

+dsbsr527  toSci -1.11234549   -> -1.112345  Rounded Inexact

+dsbsr528  toSci -1.11234550   -> -1.112345  Rounded Inexact

+dsbsr529  toSci -1.11234551   -> -1.112345  Rounded Inexact

+rounding:  half_up

+dsbsr531  toSci -1.1123450    -> -1.112345  Rounded

+dsbsr532  toSci -1.11234549   -> -1.112345  Rounded Inexact

+dsbsr533  toSci -1.11234550   -> -1.112346  Rounded Inexact

+dsbsr534  toSci -1.11234650   -> -1.112347  Rounded Inexact

+dsbsr535  toSci -1.11234551   -> -1.112346  Rounded Inexact

+

+rounding:    half_even

+

+-- The 'baddies' tests from DiagBigDecimal, plus some new ones

+dsbas500 toSci '1..2'            -> NaN Conversion_syntax

+dsbas501 toSci '.'               -> NaN Conversion_syntax

+dsbas502 toSci '..'              -> NaN Conversion_syntax

+dsbas503 toSci '++1'             -> NaN Conversion_syntax

+dsbas504 toSci '--1'             -> NaN Conversion_syntax

+dsbas505 toSci '-+1'             -> NaN Conversion_syntax

+dsbas506 toSci '+-1'             -> NaN Conversion_syntax

+dsbas507 toSci '12e'             -> NaN Conversion_syntax

+dsbas508 toSci '12e++'           -> NaN Conversion_syntax

+dsbas509 toSci '12f4'            -> NaN Conversion_syntax

+dsbas510 toSci ' +1'             -> NaN Conversion_syntax

+dsbas511 toSci '+ 1'             -> NaN Conversion_syntax

+dsbas512 toSci '12 '             -> NaN Conversion_syntax

+dsbas513 toSci ' + 1'            -> NaN Conversion_syntax

+dsbas514 toSci ' - 1 '           -> NaN Conversion_syntax

+dsbas515 toSci 'x'               -> NaN Conversion_syntax

+dsbas516 toSci '-1-'             -> NaN Conversion_syntax

+dsbas517 toSci '12-'             -> NaN Conversion_syntax

+dsbas518 toSci '3+'              -> NaN Conversion_syntax

+dsbas519 toSci ''                -> NaN Conversion_syntax

+dsbas520 toSci '1e-'             -> NaN Conversion_syntax

+dsbas521 toSci '7e99999a'        -> NaN Conversion_syntax

+dsbas522 toSci '7e123567890x'    -> NaN Conversion_syntax

+dsbas523 toSci '7e12356789012x'  -> NaN Conversion_syntax

+dsbas524 toSci ''                -> NaN Conversion_syntax

+dsbas525 toSci 'e100'            -> NaN Conversion_syntax

+dsbas526 toSci '\u0e5a'          -> NaN Conversion_syntax

+dsbas527 toSci '\u0b65'          -> NaN Conversion_syntax

+dsbas528 toSci '123,65'          -> NaN Conversion_syntax

+dsbas529 toSci '1.34.5'          -> NaN Conversion_syntax

+dsbas530 toSci '.123.5'          -> NaN Conversion_syntax

+dsbas531 toSci '01.35.'          -> NaN Conversion_syntax

+dsbas532 toSci '01.35-'          -> NaN Conversion_syntax

+dsbas533 toSci '0000..'          -> NaN Conversion_syntax

+dsbas534 toSci '.0000.'          -> NaN Conversion_syntax

+dsbas535 toSci '00..00'          -> NaN Conversion_syntax

+dsbas536 toSci '111e*123'        -> NaN Conversion_syntax

+dsbas537 toSci '111e123-'        -> NaN Conversion_syntax

+dsbas538 toSci '111e+12+'        -> NaN Conversion_syntax

+dsbas539 toSci '111e1-3-'        -> NaN Conversion_syntax

+dsbas540 toSci '111e1*23'        -> NaN Conversion_syntax

+dsbas541 toSci '111e1e+3'        -> NaN Conversion_syntax

+dsbas542 toSci '1e1.0'           -> NaN Conversion_syntax

+dsbas543 toSci '1e123e'          -> NaN Conversion_syntax

+dsbas544 toSci 'ten'             -> NaN Conversion_syntax

+dsbas545 toSci 'ONE'             -> NaN Conversion_syntax

+dsbas546 toSci '1e.1'            -> NaN Conversion_syntax

+dsbas547 toSci '1e1.'            -> NaN Conversion_syntax

+dsbas548 toSci '1ee'             -> NaN Conversion_syntax

+dsbas549 toSci 'e+1'             -> NaN Conversion_syntax

+dsbas550 toSci '1.23.4'          -> NaN Conversion_syntax

+dsbas551 toSci '1.2.1'           -> NaN Conversion_syntax

+dsbas552 toSci '1E+1.2'          -> NaN Conversion_syntax

+dsbas553 toSci '1E+1.2.3'        -> NaN Conversion_syntax

+dsbas554 toSci '1E++1'           -> NaN Conversion_syntax

+dsbas555 toSci '1E--1'           -> NaN Conversion_syntax

+dsbas556 toSci '1E+-1'           -> NaN Conversion_syntax

+dsbas557 toSci '1E-+1'           -> NaN Conversion_syntax

+dsbas558 toSci '1E''1'           -> NaN Conversion_syntax

+dsbas559 toSci "1E""1"           -> NaN Conversion_syntax

+dsbas560 toSci "1E"""""          -> NaN Conversion_syntax

+-- Near-specials

+dsbas561 toSci "qNaN"            -> NaN Conversion_syntax

+dsbas562 toSci "NaNq"            -> NaN Conversion_syntax

+dsbas563 toSci "NaNs"            -> NaN Conversion_syntax

+dsbas564 toSci "Infi"            -> NaN Conversion_syntax

+dsbas565 toSci "Infin"           -> NaN Conversion_syntax

+dsbas566 toSci "Infini"          -> NaN Conversion_syntax

+dsbas567 toSci "Infinit"         -> NaN Conversion_syntax

+dsbas568 toSci "-Infinit"        -> NaN Conversion_syntax

+dsbas569 toSci "0Inf"            -> NaN Conversion_syntax

+dsbas570 toSci "9Inf"            -> NaN Conversion_syntax

+dsbas571 toSci "-0Inf"           -> NaN Conversion_syntax

+dsbas572 toSci "-9Inf"           -> NaN Conversion_syntax

+dsbas573 toSci "-sNa"            -> NaN Conversion_syntax

+dsbas574 toSci "xNaN"            -> NaN Conversion_syntax

+dsbas575 toSci "0sNaN"           -> NaN Conversion_syntax

+

+-- some baddies with dots and Es and dots and specials

+dsbas576 toSci  'e+1'            ->  NaN Conversion_syntax

+dsbas577 toSci  '.e+1'           ->  NaN Conversion_syntax

+dsbas578 toSci  '+.e+1'          ->  NaN Conversion_syntax

+dsbas579 toSci  '-.e+'           ->  NaN Conversion_syntax

+dsbas580 toSci  '-.e'            ->  NaN Conversion_syntax

+dsbas581 toSci  'E+1'            ->  NaN Conversion_syntax

+dsbas582 toSci  '.E+1'           ->  NaN Conversion_syntax

+dsbas583 toSci  '+.E+1'          ->  NaN Conversion_syntax

+dsbas584 toSci  '-.E+'           ->  NaN Conversion_syntax

+dsbas585 toSci  '-.E'            ->  NaN Conversion_syntax

+

+dsbas586 toSci  '.NaN'           ->  NaN Conversion_syntax

+dsbas587 toSci  '-.NaN'          ->  NaN Conversion_syntax

+dsbas588 toSci  '+.sNaN'         ->  NaN Conversion_syntax

+dsbas589 toSci  '+.Inf'          ->  NaN Conversion_syntax

+dsbas590 toSci  '.Infinity'      ->  NaN Conversion_syntax

+

+-- Zeros

+dsbas601 toSci 0.000000000       -> 0E-9

+dsbas602 toSci 0.00000000        -> 0E-8

+dsbas603 toSci 0.0000000         -> 0E-7

+dsbas604 toSci 0.000000          -> 0.000000

+dsbas605 toSci 0.00000           -> 0.00000

+dsbas606 toSci 0.0000            -> 0.0000

+dsbas607 toSci 0.000             -> 0.000

+dsbas608 toSci 0.00              -> 0.00

+dsbas609 toSci 0.0               -> 0.0

+dsbas610 toSci  .0               -> 0.0

+dsbas611 toSci 0.                -> 0

+dsbas612 toSci -.0               -> -0.0

+dsbas613 toSci -0.               -> -0

+dsbas614 toSci -0.0              -> -0.0

+dsbas615 toSci -0.00             -> -0.00

+dsbas616 toSci -0.000            -> -0.000

+dsbas617 toSci -0.0000           -> -0.0000

+dsbas618 toSci -0.00000          -> -0.00000

+dsbas619 toSci -0.000000         -> -0.000000

+dsbas620 toSci -0.0000000        -> -0E-7

+dsbas621 toSci -0.00000000       -> -0E-8

+dsbas622 toSci -0.000000000      -> -0E-9

+

+dsbas630 toSci  0.00E+0          -> 0.00

+dsbas631 toSci  0.00E+1          -> 0.0

+dsbas632 toSci  0.00E+2          -> 0

+dsbas633 toSci  0.00E+3          -> 0E+1

+dsbas634 toSci  0.00E+4          -> 0E+2

+dsbas635 toSci  0.00E+5          -> 0E+3

+dsbas636 toSci  0.00E+6          -> 0E+4

+dsbas637 toSci  0.00E+7          -> 0E+5

+dsbas638 toSci  0.00E+8          -> 0E+6

+dsbas639 toSci  0.00E+9          -> 0E+7

+

+dsbas640 toSci  0.0E+0           -> 0.0

+dsbas641 toSci  0.0E+1           -> 0

+dsbas642 toSci  0.0E+2           -> 0E+1

+dsbas643 toSci  0.0E+3           -> 0E+2

+dsbas644 toSci  0.0E+4           -> 0E+3

+dsbas645 toSci  0.0E+5           -> 0E+4

+dsbas646 toSci  0.0E+6           -> 0E+5

+dsbas647 toSci  0.0E+7           -> 0E+6

+dsbas648 toSci  0.0E+8           -> 0E+7

+dsbas649 toSci  0.0E+9           -> 0E+8

+

+dsbas650 toSci  0E+0             -> 0

+dsbas651 toSci  0E+1             -> 0E+1

+dsbas652 toSci  0E+2             -> 0E+2

+dsbas653 toSci  0E+3             -> 0E+3

+dsbas654 toSci  0E+4             -> 0E+4

+dsbas655 toSci  0E+5             -> 0E+5

+dsbas656 toSci  0E+6             -> 0E+6

+dsbas657 toSci  0E+7             -> 0E+7

+dsbas658 toSci  0E+8             -> 0E+8

+dsbas659 toSci  0E+9             -> 0E+9

+

+dsbas660 toSci  0.0E-0           -> 0.0

+dsbas661 toSci  0.0E-1           -> 0.00

+dsbas662 toSci  0.0E-2           -> 0.000

+dsbas663 toSci  0.0E-3           -> 0.0000

+dsbas664 toSci  0.0E-4           -> 0.00000

+dsbas665 toSci  0.0E-5           -> 0.000000

+dsbas666 toSci  0.0E-6           -> 0E-7

+dsbas667 toSci  0.0E-7           -> 0E-8

+dsbas668 toSci  0.0E-8           -> 0E-9

+dsbas669 toSci  0.0E-9           -> 0E-10

+

+dsbas670 toSci  0.00E-0          -> 0.00

+dsbas671 toSci  0.00E-1          -> 0.000

+dsbas672 toSci  0.00E-2          -> 0.0000

+dsbas673 toSci  0.00E-3          -> 0.00000

+dsbas674 toSci  0.00E-4          -> 0.000000

+dsbas675 toSci  0.00E-5          -> 0E-7

+dsbas676 toSci  0.00E-6          -> 0E-8

+dsbas677 toSci  0.00E-7          -> 0E-9

+dsbas678 toSci  0.00E-8          -> 0E-10

+dsbas679 toSci  0.00E-9          -> 0E-11

+

+dsbas680 toSci  000000.          ->  0

+dsbas681 toSci   00000.          ->  0

+dsbas682 toSci    0000.          ->  0

+dsbas683 toSci     000.          ->  0

+dsbas684 toSci      00.          ->  0

+dsbas685 toSci       0.          ->  0

+dsbas686 toSci  +00000.          ->  0

+dsbas687 toSci  -00000.          -> -0

+dsbas688 toSci  +0.              ->  0

+dsbas689 toSci  -0.              -> -0

+

+-- Specials

+dsbas700 toSci "NaN"             -> NaN

+dsbas701 toSci "nan"             -> NaN

+dsbas702 toSci "nAn"             -> NaN

+dsbas703 toSci "NAN"             -> NaN

+dsbas704 toSci "+NaN"            -> NaN

+dsbas705 toSci "+nan"            -> NaN

+dsbas706 toSci "+nAn"            -> NaN

+dsbas707 toSci "+NAN"            -> NaN

+dsbas708 toSci "-NaN"            -> -NaN

+dsbas709 toSci "-nan"            -> -NaN

+dsbas710 toSci "-nAn"            -> -NaN

+dsbas711 toSci "-NAN"            -> -NaN

+dsbas712 toSci 'NaN0'            -> NaN

+dsbas713 toSci 'NaN1'            -> NaN1

+dsbas714 toSci 'NaN12'           -> NaN12

+dsbas715 toSci 'NaN123'          -> NaN123

+dsbas716 toSci 'NaN1234'         -> NaN1234

+dsbas717 toSci 'NaN01'           -> NaN1

+dsbas718 toSci 'NaN012'          -> NaN12

+dsbas719 toSci 'NaN0123'         -> NaN123

+dsbas720 toSci 'NaN01234'        -> NaN1234

+dsbas721 toSci 'NaN001'          -> NaN1

+dsbas722 toSci 'NaN0012'         -> NaN12

+dsbas723 toSci 'NaN00123'        -> NaN123

+dsbas724 toSci 'NaN001234'       -> NaN1234

+dsbas725 toSci 'NaN1234567890123456' -> NaN Conversion_syntax

+dsbas726 toSci 'NaN123e+1'       -> NaN Conversion_syntax

+dsbas727 toSci 'NaN12.45'        -> NaN Conversion_syntax

+dsbas728 toSci 'NaN-12'          -> NaN Conversion_syntax

+dsbas729 toSci 'NaN+12'          -> NaN Conversion_syntax

+

+dsbas730 toSci "sNaN"            -> sNaN

+dsbas731 toSci "snan"            -> sNaN

+dsbas732 toSci "SnAn"            -> sNaN

+dsbas733 toSci "SNAN"            -> sNaN

+dsbas734 toSci "+sNaN"           -> sNaN

+dsbas735 toSci "+snan"           -> sNaN

+dsbas736 toSci "+SnAn"           -> sNaN

+dsbas737 toSci "+SNAN"           -> sNaN

+dsbas738 toSci "-sNaN"           -> -sNaN

+dsbas739 toSci "-snan"           -> -sNaN

+dsbas740 toSci "-SnAn"           -> -sNaN

+dsbas741 toSci "-SNAN"           -> -sNaN

+dsbas742 toSci 'sNaN0000'        -> sNaN

+dsbas743 toSci 'sNaN7'           -> sNaN7

+dsbas744 toSci 'sNaN007234'      -> sNaN7234

+dsbas745 toSci 'sNaN7234561234567890' -> NaN Conversion_syntax

+dsbas746 toSci 'sNaN72.45'       -> NaN Conversion_syntax

+dsbas747 toSci 'sNaN-72'         -> NaN Conversion_syntax

+

+dsbas748 toSci "Inf"             -> Infinity

+dsbas749 toSci "inf"             -> Infinity

+dsbas750 toSci "iNf"             -> Infinity

+dsbas751 toSci "INF"             -> Infinity

+dsbas752 toSci "+Inf"            -> Infinity

+dsbas753 toSci "+inf"            -> Infinity

+dsbas754 toSci "+iNf"            -> Infinity

+dsbas755 toSci "+INF"            -> Infinity

+dsbas756 toSci "-Inf"            -> -Infinity

+dsbas757 toSci "-inf"            -> -Infinity

+dsbas758 toSci "-iNf"            -> -Infinity

+dsbas759 toSci "-INF"            -> -Infinity

+

+dsbas760 toSci "Infinity"        -> Infinity

+dsbas761 toSci "infinity"        -> Infinity

+dsbas762 toSci "iNfInItY"        -> Infinity

+dsbas763 toSci "INFINITY"        -> Infinity

+dsbas764 toSci "+Infinity"       -> Infinity

+dsbas765 toSci "+infinity"       -> Infinity

+dsbas766 toSci "+iNfInItY"       -> Infinity

+dsbas767 toSci "+INFINITY"       -> Infinity

+dsbas768 toSci "-Infinity"       -> -Infinity

+dsbas769 toSci "-infinity"       -> -Infinity

+dsbas770 toSci "-iNfInItY"       -> -Infinity

+dsbas771 toSci "-INFINITY"       -> -Infinity

+

+-- Specials and zeros for toEng

+dsbast772 toEng "NaN"              -> NaN

+dsbast773 toEng "-Infinity"        -> -Infinity

+dsbast774 toEng "-sNaN"            -> -sNaN

+dsbast775 toEng "-NaN"             -> -NaN

+dsbast776 toEng "+Infinity"        -> Infinity

+dsbast778 toEng "+sNaN"            -> sNaN

+dsbast779 toEng "+NaN"             -> NaN

+dsbast780 toEng "INFINITY"         -> Infinity

+dsbast781 toEng "SNAN"             -> sNaN

+dsbast782 toEng "NAN"              -> NaN

+dsbast783 toEng "infinity"         -> Infinity

+dsbast784 toEng "snan"             -> sNaN

+dsbast785 toEng "nan"              -> NaN

+dsbast786 toEng "InFINITY"         -> Infinity

+dsbast787 toEng "SnAN"             -> sNaN

+dsbast788 toEng "nAN"              -> NaN

+dsbast789 toEng "iNfinity"         -> Infinity

+dsbast790 toEng "sNan"             -> sNaN

+dsbast791 toEng "Nan"              -> NaN

+dsbast792 toEng "Infinity"         -> Infinity

+dsbast793 toEng "sNaN"             -> sNaN

+

+-- Zero toEng, etc.

+dsbast800 toEng 0e+1              -> "0.00E+3"  -- doc example

+

+dsbast801 toEng 0.000000000       -> 0E-9

+dsbast802 toEng 0.00000000        -> 0.00E-6

+dsbast803 toEng 0.0000000         -> 0.0E-6

+dsbast804 toEng 0.000000          -> 0.000000

+dsbast805 toEng 0.00000           -> 0.00000

+dsbast806 toEng 0.0000            -> 0.0000

+dsbast807 toEng 0.000             -> 0.000

+dsbast808 toEng 0.00              -> 0.00

+dsbast809 toEng 0.0               -> 0.0

+dsbast810 toEng  .0               -> 0.0

+dsbast811 toEng 0.                -> 0

+dsbast812 toEng -.0               -> -0.0

+dsbast813 toEng -0.               -> -0

+dsbast814 toEng -0.0              -> -0.0

+dsbast815 toEng -0.00             -> -0.00

+dsbast816 toEng -0.000            -> -0.000

+dsbast817 toEng -0.0000           -> -0.0000

+dsbast818 toEng -0.00000          -> -0.00000

+dsbast819 toEng -0.000000         -> -0.000000

+dsbast820 toEng -0.0000000        -> -0.0E-6

+dsbast821 toEng -0.00000000       -> -0.00E-6

+dsbast822 toEng -0.000000000      -> -0E-9

+

+dsbast830 toEng  0.00E+0          -> 0.00

+dsbast831 toEng  0.00E+1          -> 0.0

+dsbast832 toEng  0.00E+2          -> 0

+dsbast833 toEng  0.00E+3          -> 0.00E+3

+dsbast834 toEng  0.00E+4          -> 0.0E+3

+dsbast835 toEng  0.00E+5          -> 0E+3

+dsbast836 toEng  0.00E+6          -> 0.00E+6

+dsbast837 toEng  0.00E+7          -> 0.0E+6

+dsbast838 toEng  0.00E+8          -> 0E+6

+dsbast839 toEng  0.00E+9          -> 0.00E+9

+

+dsbast840 toEng  0.0E+0           -> 0.0

+dsbast841 toEng  0.0E+1           -> 0

+dsbast842 toEng  0.0E+2           -> 0.00E+3

+dsbast843 toEng  0.0E+3           -> 0.0E+3

+dsbast844 toEng  0.0E+4           -> 0E+3

+dsbast845 toEng  0.0E+5           -> 0.00E+6

+dsbast846 toEng  0.0E+6           -> 0.0E+6

+dsbast847 toEng  0.0E+7           -> 0E+6

+dsbast848 toEng  0.0E+8           -> 0.00E+9

+dsbast849 toEng  0.0E+9           -> 0.0E+9

+

+dsbast850 toEng  0E+0             -> 0

+dsbast851 toEng  0E+1             -> 0.00E+3

+dsbast852 toEng  0E+2             -> 0.0E+3

+dsbast853 toEng  0E+3             -> 0E+3

+dsbast854 toEng  0E+4             -> 0.00E+6

+dsbast855 toEng  0E+5             -> 0.0E+6

+dsbast856 toEng  0E+6             -> 0E+6

+dsbast857 toEng  0E+7             -> 0.00E+9

+dsbast858 toEng  0E+8             -> 0.0E+9

+dsbast859 toEng  0E+9             -> 0E+9

+

+dsbast860 toEng  0.0E-0           -> 0.0

+dsbast861 toEng  0.0E-1           -> 0.00

+dsbast862 toEng  0.0E-2           -> 0.000

+dsbast863 toEng  0.0E-3           -> 0.0000

+dsbast864 toEng  0.0E-4           -> 0.00000

+dsbast865 toEng  0.0E-5           -> 0.000000

+dsbast866 toEng  0.0E-6           -> 0.0E-6

+dsbast867 toEng  0.0E-7           -> 0.00E-6

+dsbast868 toEng  0.0E-8           -> 0E-9

+dsbast869 toEng  0.0E-9           -> 0.0E-9

+

+dsbast870 toEng  0.00E-0          -> 0.00

+dsbast871 toEng  0.00E-1          -> 0.000

+dsbast872 toEng  0.00E-2          -> 0.0000

+dsbast873 toEng  0.00E-3          -> 0.00000

+dsbast874 toEng  0.00E-4          -> 0.000000

+dsbast875 toEng  0.00E-5          -> 0.0E-6

+dsbast876 toEng  0.00E-6          -> 0.00E-6

+dsbast877 toEng  0.00E-7          -> 0E-9

+dsbast878 toEng  0.00E-8          -> 0.0E-9

+dsbast879 toEng  0.00E-9          -> 0.00E-9

+

+-- long input strings

+dsbas801 tosci          '01234567' -> 1234567

+dsbas802 tosci         '001234567' -> 1234567

+dsbas803 tosci        '0001234567' -> 1234567

+dsbas804 tosci       '00001234567' -> 1234567

+dsbas805 tosci      '000001234567' -> 1234567

+dsbas806 tosci     '0000001234567' -> 1234567

+dsbas807 tosci    '00000001234567' -> 1234567

+dsbas808 tosci   '000000001234567' -> 1234567

+dsbas809 tosci  '0000000001234567' -> 1234567

+dsbas810 tosci '00000000001234567' -> 1234567

+

+dsbas811 tosci          '0.1234567' ->      0.1234567

+dsbas812 tosci         '0.01234567' ->     0.01234567

+dsbas813 tosci        '0.001234567' ->    0.001234567

+dsbas814 tosci       '0.0001234567' ->   0.0001234567

+dsbas815 tosci      '0.00001234567' ->  0.00001234567

+dsbas816 tosci     '0.000001234567' -> 0.000001234567

+dsbas817 tosci    '0.0000001234567' ->       1.234567E-7

+dsbas818 tosci   '0.00000001234567' ->       1.234567E-8

+dsbas819 tosci  '0.000000001234567' ->       1.234567E-9

+dsbas820 tosci '0.0000000001234567' ->       1.234567E-10

+

+dsbas821 tosci '123456790'         -> 1.234568E+8 Inexact Rounded

+dsbas822 tosci '1234567901'        -> 1.234568E+9  Inexact Rounded

+dsbas823 tosci '12345679012'       -> 1.234568E+10 Inexact Rounded

+dsbas824 tosci '123456790123'      -> 1.234568E+11 Inexact Rounded

+dsbas825 tosci '1234567901234'     -> 1.234568E+12 Inexact Rounded

+dsbas826 tosci '12345679012345'    -> 1.234568E+13 Inexact Rounded

+dsbas827 tosci '123456790123456'   -> 1.234568E+14 Inexact Rounded

+dsbas828 tosci '1234567901234567'  -> 1.234568E+15 Inexact Rounded

+dsbas829 tosci '1234567890123456'  -> 1.234568E+15 Inexact Rounded

+

+-- subnormals and overflows

+dsbas906 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded

+dsbas907 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded

+dsbas908 toSci '0.9e-999999999'     -> 0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas909 toSci '0.09e-999999999'    -> 0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas910 toSci '0.1e1000000000'     -> Infinity Overflow  Inexact Rounded

+dsbas911 toSci '10e-1000000000'     -> 0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas912 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded

+dsbas913 toSci '99e-9999999999'     -> 0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas914 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded

+dsbas915 toSci '1111e-9999999999'   -> 0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas916 toSci '1111e-99999999999'  -> 0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas917 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded

+-- negatives the same

+dsbas918 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded

+dsbas919 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded

+dsbas920 toSci '-0.9e-999999999'    -> -0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas921 toSci '-0.09e-999999999'   -> -0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas922 toSci '-0.1e1000000000'    -> -Infinity Overflow  Inexact Rounded

+dsbas923 toSci '-10e-1000000000'    -> -0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas924 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded

+dsbas925 toSci '-99e-9999999999'    -> -0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas926 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded

+dsbas927 toSci '-1111e-9999999999'  -> -0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas928 toSci '-1111e-99999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas929 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded

+

+-- overflow results at different rounding modes

+rounding:  ceiling

+dsbas930 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dsbas931 toSci '-7e10000'  -> -9.999999E+96 Overflow  Inexact Rounded

+rounding:  up

+dsbas932 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dsbas933 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  down

+dsbas934 toSci  '7e10000'  ->  9.999999E+96 Overflow  Inexact Rounded

+dsbas935 toSci '-7e10000'  -> -9.999999E+96 Overflow  Inexact Rounded

+rounding:  floor

+dsbas936 toSci  '7e10000'  ->  9.999999E+96 Overflow  Inexact Rounded

+dsbas937 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+

+rounding:  half_up

+dsbas938 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dsbas939 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  half_even

+dsbas940 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dsbas941 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+rounding:  half_down

+dsbas942 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded

+dsbas943 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded

+

+rounding:  half_even

+

+-- Now check 854/754r some subnormals and underflow to 0

+dsbem400 toSci  1.0000E-86     -> 1.0000E-86

+dsbem401 toSci  0.1E-97        -> 1E-98       Subnormal

+dsbem402 toSci  0.1000E-97     -> 1.000E-98   Subnormal

+dsbem403 toSci  0.0100E-97     -> 1.00E-99    Subnormal

+dsbem404 toSci  0.0010E-97     -> 1.0E-100     Subnormal

+dsbem405 toSci  0.0001E-97     -> 1E-101       Subnormal

+dsbem406 toSci  0.00010E-97    -> 1E-101     Subnormal Rounded

+dsbem407 toSci  0.00013E-97    -> 1E-101     Underflow Subnormal Inexact Rounded

+dsbem408 toSci  0.00015E-97    -> 2E-101     Underflow Subnormal Inexact Rounded

+dsbem409 toSci  0.00017E-97    -> 2E-101     Underflow Subnormal Inexact Rounded

+dsbem410 toSci  0.00023E-97    -> 2E-101     Underflow Subnormal Inexact Rounded

+dsbem411 toSci  0.00025E-97    -> 2E-101     Underflow Subnormal Inexact Rounded

+dsbem412 toSci  0.00027E-97    -> 3E-101     Underflow Subnormal Inexact Rounded

+dsbem413 toSci  0.000149E-97   -> 1E-101     Underflow Subnormal Inexact Rounded

+dsbem414 toSci  0.000150E-97   -> 2E-101     Underflow Subnormal Inexact Rounded

+dsbem415 toSci  0.000151E-97   -> 2E-101     Underflow Subnormal Inexact Rounded

+dsbem416 toSci  0.000249E-97   -> 2E-101     Underflow Subnormal Inexact Rounded

+dsbem417 toSci  0.000250E-97   -> 2E-101     Underflow Subnormal Inexact Rounded

+dsbem418 toSci  0.000251E-97   -> 3E-101     Underflow Subnormal Inexact Rounded

+dsbem419 toSci  0.00009E-97    -> 1E-101     Underflow Subnormal Inexact Rounded

+dsbem420 toSci  0.00005E-97    -> 0E-101     Underflow Subnormal Inexact Rounded Clamped

+dsbem421 toSci  0.00003E-97    -> 0E-101     Underflow Subnormal Inexact Rounded Clamped

+dsbem422 toSci  0.000009E-97   -> 0E-101     Underflow Subnormal Inexact Rounded Clamped

+dsbem423 toSci  0.000005E-97   -> 0E-101     Underflow Subnormal Inexact Rounded Clamped

+dsbem424 toSci  0.000003E-97   -> 0E-101     Underflow Subnormal Inexact Rounded Clamped

+

+dsbem425 toSci  0.001049E-97   -> 1.0E-100   Underflow Subnormal Inexact Rounded

+dsbem426 toSci  0.001050E-97   -> 1.0E-100   Underflow Subnormal Inexact Rounded

+dsbem427 toSci  0.001051E-97   -> 1.1E-100   Underflow Subnormal Inexact Rounded

+dsbem428 toSci  0.001149E-97   -> 1.1E-100   Underflow Subnormal Inexact Rounded

+dsbem429 toSci  0.001150E-97   -> 1.2E-100   Underflow Subnormal Inexact Rounded

+dsbem430 toSci  0.001151E-97   -> 1.2E-100   Underflow Subnormal Inexact Rounded

+

+dsbem432 toSci  0.010049E-97   -> 1.00E-99  Underflow Subnormal Inexact Rounded

+dsbem433 toSci  0.010050E-97   -> 1.00E-99  Underflow Subnormal Inexact Rounded

+dsbem434 toSci  0.010051E-97   -> 1.01E-99  Underflow Subnormal Inexact Rounded

+dsbem435 toSci  0.010149E-97   -> 1.01E-99  Underflow Subnormal Inexact Rounded

+dsbem436 toSci  0.010150E-97   -> 1.02E-99  Underflow Subnormal Inexact Rounded

+dsbem437 toSci  0.010151E-97   -> 1.02E-99  Underflow Subnormal Inexact Rounded

+

+dsbem440 toSci  0.10103E-97    -> 1.010E-98 Underflow Subnormal Inexact Rounded

+dsbem441 toSci  0.10105E-97    -> 1.010E-98 Underflow Subnormal Inexact Rounded

+dsbem442 toSci  0.10107E-97    -> 1.011E-98 Underflow Subnormal Inexact Rounded

+dsbem443 toSci  0.10113E-97    -> 1.011E-98 Underflow Subnormal Inexact Rounded

+dsbem444 toSci  0.10115E-97    -> 1.012E-98 Underflow Subnormal Inexact Rounded

+dsbem445 toSci  0.10117E-97    -> 1.012E-98 Underflow Subnormal Inexact Rounded

+

+dsbem450 toSci  1.10730E-98    -> 1.107E-98 Underflow Subnormal Inexact Rounded

+dsbem451 toSci  1.10750E-98    -> 1.108E-98 Underflow Subnormal Inexact Rounded

+dsbem452 toSci  1.10770E-98    -> 1.108E-98 Underflow Subnormal Inexact Rounded

+dsbem453 toSci  1.10830E-98    -> 1.108E-98 Underflow Subnormal Inexact Rounded

+dsbem454 toSci  1.10850E-98    -> 1.108E-98 Underflow Subnormal Inexact Rounded

+dsbem455 toSci  1.10870E-98    -> 1.109E-98 Underflow Subnormal Inexact Rounded

+

+-- make sure sign OK

+dsbem456 toSci  -0.10103E-97   -> -1.010E-98 Underflow Subnormal Inexact Rounded

+dsbem457 toSci  -0.10105E-97   -> -1.010E-98 Underflow Subnormal Inexact Rounded

+dsbem458 toSci  -0.10107E-97   -> -1.011E-98 Underflow Subnormal Inexact Rounded

+dsbem459 toSci  -0.10113E-97   -> -1.011E-98 Underflow Subnormal Inexact Rounded

+dsbem460 toSci  -0.10115E-97   -> -1.012E-98 Underflow Subnormal Inexact Rounded

+dsbem461 toSci  -0.10117E-97   -> -1.012E-98 Underflow Subnormal Inexact Rounded

+

+-- '999s' cases

+dsbem464 toSci  999999E-98         -> 9.99999E-93

+dsbem465 toSci  99999.0E-97        -> 9.99990E-93

+dsbem466 toSci  99999.E-97         -> 9.9999E-93

+dsbem467 toSci  9999.9E-97         -> 9.9999E-94

+dsbem468 toSci  999.99E-97         -> 9.9999E-95

+dsbem469 toSci  99.999E-97         -> 9.9999E-96 Subnormal

+dsbem470 toSci  9.9999E-97         -> 9.9999E-97 Subnormal

+dsbem471 toSci  0.99999E-97        -> 1.0000E-97 Underflow Subnormal Inexact Rounded

+dsbem472 toSci  0.099999E-97       -> 1.000E-98  Underflow Subnormal Inexact Rounded

+dsbem473 toSci  0.0099999E-97      -> 1.00E-99   Underflow Subnormal Inexact Rounded

+dsbem474 toSci  0.00099999E-97     -> 1.0E-100   Underflow Subnormal Inexact Rounded

+dsbem475 toSci  0.000099999E-97    -> 1E-101     Underflow Subnormal Inexact Rounded

+dsbem476 toSci  0.0000099999E-97   -> 0E-101     Underflow Subnormal Inexact Rounded Clamped

+dsbem477 toSci  0.00000099999E-97  -> 0E-101     Underflow Subnormal Inexact Rounded Clamped

+dsbem478 toSci  0.000000099999E-97 -> 0E-101     Underflow Subnormal Inexact Rounded Clamped

+

+-- Exponents with insignificant leading zeros

+dsbas1001 toSci  1e999999999 -> Infinity Overflow Inexact Rounded

+dsbas1002 toSci  1e0999999999 -> Infinity Overflow Inexact Rounded

+dsbas1003 toSci  1e00999999999 -> Infinity Overflow Inexact Rounded

+dsbas1004 toSci  1e000999999999 -> Infinity Overflow Inexact Rounded

+dsbas1005 toSci  1e000000000000999999999 -> Infinity Overflow Inexact Rounded

+dsbas1006 toSci  1e000000000001000000007 -> Infinity Overflow Inexact Rounded

+dsbas1007 toSci  1e-999999999 -> 0E-101             Underflow Subnormal Inexact Rounded Clamped

+dsbas1008 toSci  1e-0999999999 -> 0E-101            Underflow Subnormal Inexact Rounded Clamped

+dsbas1009 toSci  1e-00999999999 -> 0E-101           Underflow Subnormal Inexact Rounded Clamped

+dsbas1010 toSci  1e-000999999999 -> 0E-101          Underflow Subnormal Inexact Rounded Clamped

+dsbas1011 toSci  1e-000000000000999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped

+dsbas1012 toSci  1e-000000000001000000007 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped

+

+-- check for double-rounded subnormals

+dsbas1041 toSci     1.1152444E-96 ->  1.11524E-96 Inexact Rounded Subnormal Underflow

+dsbas1042 toSci     1.1152445E-96 ->  1.11524E-96 Inexact Rounded Subnormal Underflow

+dsbas1043 toSci     1.1152446E-96 ->  1.11524E-96 Inexact Rounded Subnormal Underflow

+

+-- clamped zeros [see also clamp.decTest]

+dsbas1075 toSci   0e+10000  ->  0E+90   Clamped

+dsbas1076 toSci   0e-10000  ->  0E-101  Clamped

+dsbas1077 toSci  -0e+10000  -> -0E+90   Clamped

+dsbas1078 toSci  -0e-10000  -> -0E-101  Clamped

+

+-- extreme values from next-wider

+dsbas1101 toSci -9.999999999999999E+384 -> -Infinity Overflow Inexact Rounded

+dsbas1102 toSci -1E-383 -> -0E-101 Inexact Rounded Subnormal Underflow Clamped

+dsbas1103 toSci -1E-398 -> -0E-101 Inexact Rounded Subnormal Underflow Clamped

+dsbas1104 toSci -0 -> -0

+dsbas1105 toSci +0 ->  0

+dsbas1106 toSci +1E-398 ->  0E-101 Inexact Rounded Subnormal Underflow Clamped

+dsbas1107 toSci +1E-383 ->  0E-101 Inexact Rounded Subnormal Underflow Clamped

+dsbas1108 toSci +9.999999999999999E+384 ->  Infinity Overflow Inexact Rounded

+

+-- narrowing case

+dsbas1110 toSci 2.000000000000000E-99 -> 2.00E-99 Rounded Subnormal

diff --git a/Lib/test/decimaltestdata/dsEncode.decTest b/Lib/test/decimaltestdata/dsEncode.decTest
new file mode 100644
index 0000000..7e72d4b
--- /dev/null
+++ b/Lib/test/decimaltestdata/dsEncode.decTest
@@ -0,0 +1,372 @@
+------------------------------------------------------------------------

+-- dsEncode.decTest -- decimal four-byte format testcases             --

+-- Copyright (c) IBM Corporation, 2000, 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                                                   --

+------------------------------------------------------------------------

+-- [Previously called decimal32.decTest]

+version: 2.57

+

+-- This set of tests is for the four-byte concrete representation.

+-- Its characteristics are:

+--

+--  1 bit  sign

+--  5 bits combination field

+--  6 bits exponent continuation

+-- 20 bits coefficient continuation

+--

+-- Total exponent length 8 bits

+-- Total coefficient length 24 bits (7 digits)

+--

+-- Elimit =  191 (maximum encoded exponent)

+-- Emax   =   96 (largest exponent value)

+-- Emin   =  -95 (smallest exponent value)

+-- bias   =  101 (subtracted from encoded exponent) = -Etiny

+

+-- The testcases here have only exactly representable data on the

+-- 'left-hand-side'; rounding from strings is tested in 'base'

+-- testcase groups.

+

+extended:    1

+clamp:       1

+precision:   7

+rounding:    half_up

+maxExponent: 96

+minExponent: -95

+

+-- General testcases

+-- (mostly derived from the Strawman 4 document and examples)

+decs001 apply   #A23003D0          -> -7.50

+decs002 apply   -7.50              -> #A23003D0

+-- derivative canonical plain strings

+decs003 apply   #A26003D0         -> -7.50E+3

+decs004 apply   -7.50E+3          -> #A26003D0

+decs005 apply   #A25003D0         -> -750

+decs006 apply   -750              -> #A25003D0

+decs007 apply   #A24003D0         -> -75.0

+decs008 apply   -75.0             -> #A24003D0

+decs009 apply   #A22003D0         -> -0.750

+decs010 apply   -0.750            -> #A22003D0

+decs011 apply   #A21003D0         -> -0.0750

+decs012 apply   -0.0750           -> #A21003D0

+decs013 apply   #A1f003D0         -> -0.000750

+decs014 apply   -0.000750         -> #A1f003D0

+decs015 apply   #A1d003D0         -> -0.00000750

+decs016 apply   -0.00000750       -> #A1d003D0

+decs017 apply   #A1c003D0         -> -7.50E-7

+decs018 apply   -7.50E-7          -> #A1c003D0

+

+-- Normality

+decs020 apply   1234567            -> #2654d2e7

+decs021 apply  -1234567            -> #a654d2e7

+decs022 apply   1111111            -> #26524491

+

+-- Nmax and similar

+decs031 apply   9.999999E+96            -> #77f3fcff

+decs032 apply   #77f3fcff               -> 9.999999E+96

+decs033 apply   1.234567E+96            -> #47f4d2e7

+decs034 apply   #47f4d2e7               -> 1.234567E+96

+-- fold-downs (more below)

+decs035 apply   1.23E+96                -> #47f4c000 Clamped

+decs036 apply   #47f4c000               -> 1.230000E+96

+decs037 apply   1E+96                   -> #47f00000 Clamped

+decs038 apply   #47f00000               -> 1.000000E+96

+

+decs051 apply   12345                   -> #225049c5

+decs052 apply   #225049c5               -> 12345

+decs053 apply   1234                    -> #22500534

+decs054 apply   #22500534               -> 1234

+decs055 apply   123                     -> #225000a3

+decs056 apply   #225000a3               -> 123

+decs057 apply   12                      -> #22500012

+decs058 apply   #22500012               -> 12

+decs059 apply   1                       -> #22500001

+decs060 apply   #22500001               -> 1

+decs061 apply   1.23                    -> #223000a3

+decs062 apply   #223000a3               -> 1.23

+decs063 apply   123.45                  -> #223049c5

+decs064 apply   #223049c5               -> 123.45

+

+-- Nmin and below

+decs071 apply   1E-95                   -> #00600001

+decs072 apply   #00600001               -> 1E-95

+decs073 apply   1.000000E-95            -> #04000000

+decs074 apply   #04000000               -> 1.000000E-95

+decs075 apply   1.000001E-95            -> #04000001

+decs076 apply   #04000001               -> 1.000001E-95

+

+decs077 apply   0.100000E-95            -> #00020000     Subnormal

+decs07x apply   1.00000E-96             -> 1.00000E-96   Subnormal

+decs078 apply   #00020000               -> 1.00000E-96   Subnormal

+decs079 apply   0.000010E-95            -> #00000010     Subnormal

+decs080 apply   #00000010               -> 1.0E-100      Subnormal

+decs081 apply   0.000001E-95            -> #00000001     Subnormal

+decs082 apply   #00000001               -> 1E-101        Subnormal

+decs083 apply   1e-101                  -> #00000001     Subnormal

+decs084 apply   #00000001               -> 1E-101        Subnormal

+decs08x apply   1e-101                  -> 1E-101        Subnormal

+

+-- underflows cannot be tested; just check edge case

+decs090 apply   1e-101                  -> #00000001  Subnormal

+

+-- same again, negatives --

+

+-- Nmax and similar

+decs122 apply  -9.999999E+96            -> #f7f3fcff

+decs123 apply   #f7f3fcff               -> -9.999999E+96

+decs124 apply  -1.234567E+96            -> #c7f4d2e7

+decs125 apply   #c7f4d2e7               -> -1.234567E+96

+-- fold-downs (more below)

+decs130 apply  -1.23E+96                -> #c7f4c000 Clamped

+decs131 apply   #c7f4c000               -> -1.230000E+96

+decs132 apply  -1E+96                   -> #c7f00000 Clamped

+decs133 apply   #c7f00000               -> -1.000000E+96

+

+decs151 apply  -12345                   -> #a25049c5

+decs152 apply   #a25049c5               -> -12345

+decs153 apply  -1234                    -> #a2500534

+decs154 apply   #a2500534               -> -1234

+decs155 apply  -123                     -> #a25000a3

+decs156 apply   #a25000a3               -> -123

+decs157 apply  -12                      -> #a2500012

+decs158 apply   #a2500012               -> -12

+decs159 apply  -1                       -> #a2500001

+decs160 apply   #a2500001               -> -1

+decs161 apply  -1.23                    -> #a23000a3

+decs162 apply   #a23000a3               -> -1.23

+decs163 apply  -123.45                  -> #a23049c5

+decs164 apply   #a23049c5               -> -123.45

+

+-- Nmin and below

+decs171 apply  -1E-95                   -> #80600001

+decs172 apply   #80600001               -> -1E-95

+decs173 apply  -1.000000E-95            -> #84000000

+decs174 apply   #84000000               -> -1.000000E-95

+decs175 apply  -1.000001E-95            -> #84000001

+decs176 apply   #84000001               -> -1.000001E-95

+

+decs177 apply  -0.100000E-95            -> #80020000     Subnormal

+decs178 apply   #80020000               -> -1.00000E-96  Subnormal

+decs179 apply  -0.000010E-95            -> #80000010     Subnormal

+decs180 apply   #80000010               -> -1.0E-100     Subnormal

+decs181 apply  -0.000001E-95            -> #80000001     Subnormal

+decs182 apply   #80000001               -> -1E-101       Subnormal

+decs183 apply  -1e-101                  -> #80000001     Subnormal

+decs184 apply   #80000001               -> -1E-101       Subnormal

+

+-- underflow edge case

+decs190 apply  -1e-101                  -> #80000001  Subnormal

+

+-- zeros

+decs400 apply   0E-400                  -> #00000000  Clamped

+decs401 apply   0E-101                  -> #00000000

+decs402 apply   #00000000               -> 0E-101

+decs403 apply   0.000000E-95            -> #00000000

+decs404 apply   #00000000               -> 0E-101

+decs405 apply   0E-2                    -> #22300000

+decs406 apply   #22300000               -> 0.00

+decs407 apply   0                       -> #22500000

+decs408 apply   #22500000               -> 0

+decs409 apply   0E+3                    -> #22800000

+decs410 apply   #22800000               -> 0E+3

+decs411 apply   0E+90                   -> #43f00000

+decs412 apply   #43f00000               -> 0E+90

+-- clamped zeros...

+decs413 apply   0E+91                   -> #43f00000  Clamped

+decs414 apply   #43f00000               -> 0E+90

+decs415 apply   0E+96                   -> #43f00000  Clamped

+decs416 apply   #43f00000               -> 0E+90

+decs417 apply   0E+400                  -> #43f00000  Clamped

+decs418 apply   #43f00000               -> 0E+90

+

+-- negative zeros

+decs420 apply   -0E-400                 -> #80000000  Clamped

+decs421 apply   -0E-101                 -> #80000000

+decs422 apply   #80000000               -> -0E-101

+decs423 apply   -0.000000E-95           -> #80000000

+decs424 apply   #80000000               -> -0E-101

+decs425 apply   -0E-2                   -> #a2300000

+decs426 apply   #a2300000               -> -0.00

+decs427 apply   -0                      -> #a2500000

+decs428 apply   #a2500000               -> -0

+decs429 apply   -0E+3                   -> #a2800000

+decs430 apply   #a2800000               -> -0E+3

+decs431 apply   -0E+90                  -> #c3f00000

+decs432 apply   #c3f00000               -> -0E+90

+-- clamped zeros...

+decs433 apply   -0E+91                  -> #c3f00000  Clamped

+decs434 apply   #c3f00000               -> -0E+90

+decs435 apply   -0E+96                  -> #c3f00000  Clamped

+decs436 apply   #c3f00000               -> -0E+90

+decs437 apply   -0E+400                 -> #c3f00000  Clamped

+decs438 apply   #c3f00000               -> -0E+90

+

+-- Specials

+decs500 apply   Infinity  -> #78000000

+decs501 apply   #78787878 -> #78000000

+decs502 apply   #78000000 -> Infinity

+decs503 apply   #79797979 -> #78000000

+decs504 apply   #79000000 -> Infinity

+decs505 apply   #7a7a7a7a -> #78000000

+decs506 apply   #7a000000 -> Infinity

+decs507 apply   #7b7b7b7b -> #78000000

+decs508 apply   #7b000000 -> Infinity

+decs509 apply   #7c7c7c7c -> #7c0c7c7c

+

+decs510 apply   NaN       -> #7c000000

+decs511 apply   #7c000000 -> NaN

+decs512 apply   #7d7d7d7d -> #7c0d7d7d

+decs513 apply   #7d000000 -> NaN

+decs514 apply   #7e7e7e7e -> #7e0e7c7e

+decs515 apply   #7e000000 -> sNaN

+decs516 apply   #7f7f7f7f -> #7e0f7c7f

+decs517 apply   #7f000000 -> sNaN

+decs518 apply   #7fffffff -> sNaN999999

+decs519 apply   #7fffffff -> #7e03fcff

+

+decs520 apply   -Infinity -> #f8000000

+decs521 apply   #f8787878 -> #f8000000

+decs522 apply   #f8000000 -> -Infinity

+decs523 apply   #f9797979 -> #f8000000

+decs524 apply   #f9000000 -> -Infinity

+decs525 apply   #fa7a7a7a -> #f8000000

+decs526 apply   #fa000000 -> -Infinity

+decs527 apply   #fb7b7b7b -> #f8000000

+decs528 apply   #fb000000 -> -Infinity

+

+decs529 apply   -NaN      -> #fc000000

+decs530 apply   #fc7c7c7c -> #fc0c7c7c

+decs531 apply   #fc000000 -> -NaN

+decs532 apply   #fd7d7d7d -> #fc0d7d7d

+decs533 apply   #fd000000 -> -NaN

+decs534 apply   #fe7e7e7e -> #fe0e7c7e

+decs535 apply   #fe000000 -> -sNaN

+decs536 apply   #ff7f7f7f -> #fe0f7c7f

+decs537 apply   #ff000000 -> -sNaN

+decs538 apply   #ffffffff -> -sNaN999999

+decs539 apply   #ffffffff -> #fe03fcff

+

+-- diagnostic NaNs

+decs540 apply   NaN       -> #7c000000

+decs541 apply   NaN0      -> #7c000000

+decs542 apply   NaN1      -> #7c000001

+decs543 apply   NaN12     -> #7c000012

+decs544 apply   NaN79     -> #7c000079

+decs545 apply   NaN12345   -> #7c0049c5

+decs546 apply   NaN123456  -> #7c028e56

+decs547 apply   NaN799799  -> #7c0f7fdf

+decs548 apply   NaN999999  -> #7c03fcff

+

+

+-- fold-down full sequence

+decs601 apply   1E+96                   -> #47f00000 Clamped

+decs602 apply   #47f00000               -> 1.000000E+96

+decs603 apply   1E+95                   -> #43f20000 Clamped

+decs604 apply   #43f20000               -> 1.00000E+95

+decs605 apply   1E+94                   -> #43f04000 Clamped

+decs606 apply   #43f04000               -> 1.0000E+94

+decs607 apply   1E+93                   -> #43f00400 Clamped

+decs608 apply   #43f00400               -> 1.000E+93

+decs609 apply   1E+92                   -> #43f00080 Clamped

+decs610 apply   #43f00080               -> 1.00E+92

+decs611 apply   1E+91                   -> #43f00010 Clamped

+decs612 apply   #43f00010               -> 1.0E+91

+decs613 apply   1E+90                   -> #43f00001

+decs614 apply   #43f00001               -> 1E+90

+

+

+-- Selected DPD codes

+decs700 apply   #22500000       -> 0

+decs701 apply   #22500009       -> 9

+decs702 apply   #22500010       -> 10

+decs703 apply   #22500019       -> 19

+decs704 apply   #22500020       -> 20

+decs705 apply   #22500029       -> 29

+decs706 apply   #22500030       -> 30

+decs707 apply   #22500039       -> 39

+decs708 apply   #22500040       -> 40

+decs709 apply   #22500049       -> 49

+decs710 apply   #22500050       -> 50

+decs711 apply   #22500059       -> 59

+decs712 apply   #22500060       -> 60

+decs713 apply   #22500069       -> 69

+decs714 apply   #22500070       -> 70

+decs715 apply   #22500071       -> 71

+decs716 apply   #22500072       -> 72

+decs717 apply   #22500073       -> 73

+decs718 apply   #22500074       -> 74

+decs719 apply   #22500075       -> 75

+decs720 apply   #22500076       -> 76

+decs721 apply   #22500077       -> 77

+decs722 apply   #22500078       -> 78

+decs723 apply   #22500079       -> 79

+

+decs730 apply   #2250029e       -> 994

+decs731 apply   #2250029f       -> 995

+decs732 apply   #225002a0       -> 520

+decs733 apply   #225002a1       -> 521

+

+-- DPD: one of each of the huffman groups

+decs740 apply   #225003f7       -> 777

+decs741 apply   #225003f8       -> 778

+decs742 apply   #225003eb       -> 787

+decs743 apply   #2250037d       -> 877

+decs744 apply   #2250039f       -> 997

+decs745 apply   #225003bf       -> 979

+decs746 apply   #225003df       -> 799

+decs747 apply   #2250006e       -> 888

+

+

+-- DPD all-highs cases (includes the 24 redundant codes)

+decs750 apply   #2250006e       -> 888

+decs751 apply   #2250016e       -> 888

+decs752 apply   #2250026e       -> 888

+decs753 apply   #2250036e       -> 888

+decs754 apply   #2250006f       -> 889

+decs755 apply   #2250016f       -> 889

+decs756 apply   #2250026f       -> 889

+decs757 apply   #2250036f       -> 889

+

+decs760 apply   #2250007e       -> 898

+decs761 apply   #2250017e       -> 898

+decs762 apply   #2250027e       -> 898

+decs763 apply   #2250037e       -> 898

+decs764 apply   #2250007f       -> 899

+decs765 apply   #2250017f       -> 899

+decs766 apply   #2250027f       -> 899

+decs767 apply   #2250037f       -> 899

+

+decs770 apply   #225000ee       -> 988

+decs771 apply   #225001ee       -> 988

+decs772 apply   #225002ee       -> 988

+decs773 apply   #225003ee       -> 988

+decs774 apply   #225000ef       -> 989

+decs775 apply   #225001ef       -> 989

+decs776 apply   #225002ef       -> 989

+decs777 apply   #225003ef       -> 989

+

+decs780 apply   #225000fe       -> 998

+decs781 apply   #225001fe       -> 998

+decs782 apply   #225002fe       -> 998

+decs783 apply   #225003fe       -> 998

+decs784 apply   #225000ff       -> 999

+decs785 apply   #225001ff       -> 999

+decs786 apply   #225002ff       -> 999

+decs787 apply   #225003ff       -> 999

+

+-- narrowing case

+decs790 apply 2.00E-99 -> #00000100 Subnormal

+decs791 apply #00000100 -> 2.00E-99 Subnormal

diff --git a/Lib/test/decimaltestdata/exp.decTest b/Lib/test/decimaltestdata/exp.decTest
new file mode 100644
index 0000000..97256e4
--- /dev/null
+++ b/Lib/test/decimaltestdata/exp.decTest
@@ -0,0 +1,674 @@
+------------------------------------------------------------------------

+-- exp.decTest -- decimal natural exponentiation                      --

+-- Copyright (c) IBM Corporation, 2005, 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.57

+

+-- Tests of the exponential funtion.  Currently all testcases here

+-- show results which are correctly rounded (within <= 0.5 ulp).

+

+extended:    1

+precision:   9

+rounding:    half_even

+maxExponent: 384

+minexponent: -383

+

+-- basics (examples in specificiation, etc.)

+expx001 exp  -Infinity     -> 0

+expx002 exp  -10           -> 0.0000453999298 Inexact Rounded

+expx003 exp  -1            -> 0.367879441 Inexact Rounded

+expx004 exp   0            -> 1

+expx005 exp  -0            -> 1

+expx006 exp   1            -> 2.71828183  Inexact Rounded

+expx007 exp   0.693147181  -> 2.00000000  Inexact Rounded

+expx008 exp   10           -> 22026.4658  Inexact Rounded

+expx009 exp  +Infinity     -> Infinity

+

+-- tiny edge cases

+precision:   7

+expx011 exp  0.1          ->  1.105171  Inexact Rounded

+expx012 exp  0.01         ->  1.010050  Inexact Rounded

+expx013 exp  0.001        ->  1.001001  Inexact Rounded

+expx014 exp  0.0001       ->  1.000100  Inexact Rounded

+expx015 exp  0.00001      ->  1.000010  Inexact Rounded

+expx016 exp  0.000001     ->  1.000001  Inexact Rounded

+expx017 exp  0.0000001    ->  1.000000  Inexact Rounded

+expx018 exp  0.0000003    ->  1.000000  Inexact Rounded

+expx019 exp  0.0000004    ->  1.000000  Inexact Rounded

+expx020 exp  0.0000005    ->  1.000001  Inexact Rounded

+expx021 exp  0.0000008    ->  1.000001  Inexact Rounded

+expx022 exp  0.0000009    ->  1.000001  Inexact Rounded

+expx023 exp  0.0000010    ->  1.000001  Inexact Rounded

+expx024 exp  0.0000011    ->  1.000001  Inexact Rounded

+expx025 exp  0.00000009   ->  1.000000  Inexact Rounded

+expx026 exp  0.00000005   ->  1.000000  Inexact Rounded

+expx027 exp  0.00000004   ->  1.000000  Inexact Rounded

+expx028 exp  0.00000001   ->  1.000000  Inexact Rounded

+

+-- and some more zeros

+expx030 exp  0.00000000   ->  1

+expx031 exp  0E+100       ->  1

+expx032 exp  0E-100       ->  1

+expx033 exp -0.00000000   ->  1

+expx034 exp -0E+100       ->  1

+expx035 exp -0E-100       ->  1

+

+-- basic e=0, e=1, e=2, e=4, e>=8 cases

+precision:   7

+expx041 exp  1          ->  2.718282  Inexact Rounded

+expx042 exp -1          ->  0.3678794 Inexact Rounded

+expx043 exp  10         ->  22026.47  Inexact Rounded

+expx044 exp -10         ->  0.00004539993 Inexact Rounded

+expx045 exp  100        ->  2.688117E+43  Inexact Rounded

+expx046 exp -100        ->  3.720076E-44  Inexact Rounded

+expx047 exp  1000       ->  Infinity Overflow Inexact Rounded

+expx048 exp -1000       ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+expx049 exp  100000000  ->  Infinity Overflow Inexact Rounded

+expx050 exp -100000000  ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+

+-- miscellanea

+-- similar to 'VF bug' test, at 17, but with last digit corrected for decimal

+precision: 16

+expx055 exp -5.42410311287441459172E+2 -> 2.717658486884572E-236 Inexact Rounded

+--  result from NetRexx/Java prototype -> 2.7176584868845721117677929628617246054459644711108E-236

+--   result from Rexx (series) version -> 2.717658486884572111767792962861724605446E-236

+precision: 17

+expx056 exp -5.42410311287441459172E+2 -> 2.7176584868845721E-236 Inexact Rounded

+precision: 18

+expx057 exp -5.42410311287441459172E+2 -> 2.71765848688457211E-236 Inexact Rounded

+precision: 19

+expx058 exp -5.42410311287441459172E+2 -> 2.717658486884572112E-236 Inexact Rounded

+precision: 20

+expx059 exp -5.42410311287441459172E+2 -> 2.7176584868845721118E-236 Inexact Rounded

+

+-- rounding in areas of ..500.., ..499.., ..100.., ..999.. sequences

+precision:   50

+expx101 exp -9E-8 -> 0.99999991000000404999987850000273374995079250073811 Inexact Rounded

+precision:   31

+expx102 exp -9E-8 -> 0.9999999100000040499998785000027 Inexact Rounded

+precision:   30

+expx103 exp -9E-8 -> 0.999999910000004049999878500003  Inexact Rounded

+precision:   29

+expx104 exp -9E-8 -> 0.99999991000000404999987850000   Inexact Rounded

+precision:   28

+expx105 exp -9E-8 -> 0.9999999100000040499998785000    Inexact Rounded

+precision:   27

+expx106 exp -9E-8 -> 0.999999910000004049999878500     Inexact Rounded

+precision:   26

+expx107 exp -9E-8 -> 0.99999991000000404999987850      Inexact Rounded

+precision:   25

+expx108 exp -9E-8 -> 0.9999999100000040499998785       Inexact Rounded

+precision:   24

+expx109 exp -9E-8 -> 0.999999910000004049999879        Inexact Rounded

+precision:   23

+expx110 exp -9E-8 -> 0.99999991000000404999988         Inexact Rounded

+precision:   22

+expx111 exp -9E-8 -> 0.9999999100000040499999          Inexact Rounded

+precision:   21

+expx112 exp -9E-8 -> 0.999999910000004050000           Inexact Rounded

+precision:   20

+expx113 exp -9E-8 -> 0.99999991000000405000            Inexact Rounded

+precision:   19

+expx114 exp -9E-8 -> 0.9999999100000040500             Inexact Rounded

+precision:   18

+expx115 exp -9E-8 -> 0.999999910000004050              Inexact Rounded

+precision:   17

+expx116 exp -9E-8 -> 0.99999991000000405               Inexact Rounded

+precision:   16

+expx117 exp -9E-8 -> 0.9999999100000040                Inexact Rounded

+precision:   15

+expx118 exp -9E-8 -> 0.999999910000004                 Inexact Rounded

+precision:   14

+expx119 exp -9E-8 -> 0.99999991000000                  Inexact Rounded

+precision:   13

+expx120 exp -9E-8 -> 0.9999999100000                   Inexact Rounded

+precision:   12

+expx121 exp -9E-8 -> 0.999999910000                    Inexact Rounded

+precision:   11

+expx122 exp -9E-8 -> 0.99999991000                     Inexact Rounded

+precision:   10

+expx123 exp -9E-8 -> 0.9999999100                      Inexact Rounded

+precision:    9

+expx124 exp -9E-8 -> 0.999999910                       Inexact Rounded

+precision:    8

+expx125 exp -9E-8 -> 0.99999991                        Inexact Rounded

+precision:    7

+expx126 exp -9E-8 -> 0.9999999                         Inexact Rounded

+precision:    6

+expx127 exp -9E-8 -> 1.00000                           Inexact Rounded

+precision:    5

+expx128 exp -9E-8 -> 1.0000                            Inexact Rounded

+precision:    4

+expx129 exp -9E-8 -> 1.000                             Inexact Rounded

+precision:    3

+expx130 exp -9E-8 -> 1.00                              Inexact Rounded

+precision:    2

+expx131 exp -9E-8 -> 1.0                               Inexact Rounded

+precision:    1

+expx132 exp -9E-8 -> 1                                 Inexact Rounded

+

+

+-- sanity checks, with iteration counts [normalized so 0<=|x|<1]

+precision:   50

+

+expx210 exp 0 -> 1

+-- iterations: 2

+expx211 exp -1E-40 -> 0.99999999999999999999999999999999999999990000000000 Inexact Rounded

+-- iterations: 8

+expx212 exp -9E-7 -> 0.99999910000040499987850002733749507925073811240510 Inexact Rounded

+-- iterations: 6

+expx213 exp -9E-8 -> 0.99999991000000404999987850000273374995079250073811 Inexact Rounded

+-- iterations: 15

+expx214 exp -0.003 -> 0.99700449550337297601206623409756091074177480489845 Inexact Rounded

+-- iterations: 14

+expx215 exp -0.001 -> 0.99900049983337499166805535716765597470235590236008 Inexact Rounded

+-- iterations: 26

+expx216 exp -0.1 -> 0.90483741803595957316424905944643662119470536098040 Inexact Rounded

+-- iterations: 39

+expx217 exp -0.7 -> 0.49658530379140951470480009339752896170766716571182 Inexact Rounded

+-- iterations: 41

+expx218 exp -0.9 -> 0.40656965974059911188345423964562598783370337617038 Inexact Rounded

+-- iterations: 43

+expx219 exp -0.99 -> 0.37157669102204569053152411990820138691802885490501 Inexact Rounded

+-- iterations: 26

+expx220 exp -1 -> 0.36787944117144232159552377016146086744581113103177 Inexact Rounded

+-- iterations: 26

+expx221 exp -1.01 -> 0.36421897957152331975704629563734548959589139192482 Inexact Rounded

+-- iterations: 27

+expx222 exp -1.1 -> 0.33287108369807955328884690643131552161247952156921 Inexact Rounded

+-- iterations: 28

+expx223 exp -1.5 -> 0.22313016014842982893328047076401252134217162936108 Inexact Rounded

+-- iterations: 30

+expx224 exp -2 -> 0.13533528323661269189399949497248440340763154590958 Inexact Rounded

+-- iterations: 36

+expx225 exp -5 -> 0.0067379469990854670966360484231484242488495850273551 Inexact Rounded

+-- iterations: 26

+expx226 exp -10 -> 0.000045399929762484851535591515560550610237918088866565 Inexact Rounded

+-- iterations: 28

+expx227 exp -14 -> 8.3152871910356788406398514256526229460765836498457E-7 Inexact Rounded

+-- iterations: 29

+expx228 exp -15 -> 3.0590232050182578837147949770228963937082078081856E-7 Inexact Rounded

+-- iterations: 30

+expx233 exp 0 -> 1

+-- iterations: 2

+expx234 exp 1E-40 -> 1.0000000000000000000000000000000000000001000000000 Inexact Rounded

+-- iterations: 7

+expx235 exp 9E-7 -> 1.0000009000004050001215000273375049207507381125949 Inexact Rounded

+-- iterations: 6

+expx236 exp 9E-8 -> 1.0000000900000040500001215000027337500492075007381 Inexact Rounded

+-- iterations: 15

+expx237 exp 0.003 -> 1.0030045045033770260129340913489002053318727195619 Inexact Rounded

+-- iterations: 13

+expx238 exp 0.001 -> 1.0010005001667083416680557539930583115630762005807 Inexact Rounded

+-- iterations: 25

+expx239 exp 0.1 -> 1.1051709180756476248117078264902466682245471947375 Inexact Rounded

+-- iterations: 38

+expx240 exp 0.7 -> 2.0137527074704765216245493885830652700175423941459 Inexact Rounded

+-- iterations: 41

+expx241 exp 0.9 -> 2.4596031111569496638001265636024706954217723064401 Inexact Rounded

+-- iterations: 42

+expx242 exp 0.99 -> 2.6912344723492622890998794040710139721802931841030 Inexact Rounded

+-- iterations: 26

+expx243 exp 1 -> 2.7182818284590452353602874713526624977572470937000 Inexact Rounded

+-- iterations: 26

+expx244 exp 1.01 -> 2.7456010150169164939897763166603876240737508195960 Inexact Rounded

+-- iterations: 26

+expx245 exp 1.1 -> 3.0041660239464331120584079535886723932826810260163 Inexact Rounded

+-- iterations: 28

+expx246 exp 1.5 -> 4.4816890703380648226020554601192758190057498683697 Inexact Rounded

+-- iterations: 29

+expx247 exp 2 -> 7.3890560989306502272304274605750078131803155705518 Inexact Rounded

+-- iterations: 36

+expx248 exp 5 -> 148.41315910257660342111558004055227962348766759388 Inexact Rounded

+-- iterations: 26

+expx249 exp 10 -> 22026.465794806716516957900645284244366353512618557 Inexact Rounded

+-- iterations: 28

+expx250 exp 14 -> 1202604.2841647767777492367707678594494124865433761 Inexact Rounded

+-- iterations: 28

+expx251 exp 15 -> 3269017.3724721106393018550460917213155057385438200 Inexact Rounded

+-- iterations: 29

+

+-- a biggie [result verified 3 ways]

+precision: 250

+expx260 exp 1 -> 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668 Inexact Rounded

+

+-- extreme range boundaries

+precision:   16

+maxExponent: 999999

+minExponent: -999999

+-- Ntiny boundary

+expx290 exp  -2302618.022332529 -> 0E-1000014 Underflow Subnormal Inexact Rounded Clamped

+expx291 exp  -2302618.022332528 -> 1E-1000014 Underflow Subnormal Inexact Rounded

+-- Nmax/10 and Nmax boundary

+expx292 exp  2302582.790408952 -> 9.999999993100277E+999998  Inexact Rounded

+expx293 exp  2302582.790408953 -> 1.000000000310028E+999999  Inexact Rounded

+expx294 exp  2302585.092993946 -> 9.999999003159870E+999999 Inexact Rounded

+expx295 exp  2302585.092994036 -> 9.999999903159821E+999999 Inexact Rounded

+expx296 exp  2302585.092994045 -> 9.999999993159820E+999999 Inexact Rounded

+expx297 exp  2302585.092994046 -> Infinity Overflow         Inexact Rounded

+

+-- 0<-x<<1 effects

+precision:    30

+expx320 exp -4.9999999999999E-8 -> 0.999999950000001250000979166617 Inexact Rounded

+expx321 exp -5.0000000000000E-8 -> 0.999999950000001249999979166667 Inexact Rounded

+expx322 exp -5.0000000000001E-8 -> 0.999999950000001249998979166717 Inexact Rounded

+precision:    20

+expx323 exp -4.9999999999999E-8 -> 0.99999995000000125000 Inexact Rounded

+expx324 exp -5.0000000000000E-8 -> 0.99999995000000125000 Inexact Rounded

+expx325 exp -5.0000000000001E-8 -> 0.99999995000000125000 Inexact Rounded

+precision:    14

+expx326 exp -4.9999999999999E-8 -> 0.99999995000000 Inexact Rounded

+expx327 exp -5.0000000000000E-8 -> 0.99999995000000 Inexact Rounded

+expx328 exp -5.0000000000001E-8 -> 0.99999995000000 Inexact Rounded

+-- overprecise and 0<-x<<1

+precision:    8

+expx330 exp -4.9999999999999E-8 -> 0.99999995       Inexact Rounded

+expx331 exp -5.0000000000000E-8 -> 0.99999995       Inexact Rounded

+expx332 exp -5.0000000000001E-8 -> 0.99999995       Inexact Rounded

+precision:    7

+expx333 exp -4.9999999999999E-8 -> 1.000000         Inexact Rounded

+expx334 exp -5.0000000000000E-8 -> 1.000000         Inexact Rounded

+expx335 exp -5.0000000000001E-8 -> 1.000000         Inexact Rounded

+precision:    3

+expx336 exp -4.9999999999999E-8 -> 1.00             Inexact Rounded

+expx337 exp -5.0000000000000E-8 -> 1.00             Inexact Rounded

+expx338 exp -5.0000000000001E-8 -> 1.00             Inexact Rounded

+

+-- 0<x<<1 effects

+precision:    30

+expx340 exp  4.9999999999999E-8 -> 1.00000005000000124999902083328  Inexact Rounded

+expx341 exp  5.0000000000000E-8 -> 1.00000005000000125000002083333  Inexact Rounded

+expx342 exp  5.0000000000001E-8 -> 1.00000005000000125000102083338  Inexact Rounded

+precision:    20

+expx343 exp  4.9999999999999E-8 -> 1.0000000500000012500  Inexact Rounded

+expx344 exp  5.0000000000000E-8 -> 1.0000000500000012500  Inexact Rounded

+expx345 exp  5.0000000000001E-8 -> 1.0000000500000012500  Inexact Rounded

+precision:    14

+expx346 exp  4.9999999999999E-8 -> 1.0000000500000  Inexact Rounded

+expx347 exp  5.0000000000000E-8 -> 1.0000000500000  Inexact Rounded

+expx348 exp  5.0000000000001E-8 -> 1.0000000500000  Inexact Rounded

+-- overprecise and 0<x<<1

+precision:    8

+expx350 exp  4.9999999999999E-8 -> 1.0000001        Inexact Rounded

+expx351 exp  5.0000000000000E-8 -> 1.0000001        Inexact Rounded

+expx352 exp  5.0000000000001E-8 -> 1.0000001        Inexact Rounded

+precision:    7

+expx353 exp  4.9999999999999E-8 -> 1.000000         Inexact Rounded

+expx354 exp  5.0000000000000E-8 -> 1.000000         Inexact Rounded

+expx355 exp  5.0000000000001E-8 -> 1.000000         Inexact Rounded

+precision:    3

+expx356 exp  4.9999999999999E-8 -> 1.00             Inexact Rounded

+expx357 exp  5.0000000000000E-8 -> 1.00             Inexact Rounded

+expx358 exp  5.0000000000001E-8 -> 1.00             Inexact Rounded

+

+-- cases near 1              --  1 2345678901234567890

+precision:    20

+expx401 exp 0.99999999999996  -> 2.7182818284589365041  Inexact Rounded

+expx402 exp 0.99999999999997  -> 2.7182818284589636869  Inexact Rounded

+expx403 exp 0.99999999999998  -> 2.7182818284589908697  Inexact Rounded

+expx404 exp 0.99999999999999  -> 2.7182818284590180525  Inexact Rounded

+expx405 exp 1.0000000000000   -> 2.7182818284590452354  Inexact Rounded

+expx406 exp 1.0000000000001   -> 2.7182818284593170635  Inexact Rounded

+expx407 exp 1.0000000000002   -> 2.7182818284595888917  Inexact Rounded

+precision:    14

+expx411 exp 0.99999999999996  -> 2.7182818284589  Inexact Rounded

+expx412 exp 0.99999999999997  -> 2.7182818284590  Inexact Rounded

+expx413 exp 0.99999999999998  -> 2.7182818284590  Inexact Rounded

+expx414 exp 0.99999999999999  -> 2.7182818284590  Inexact Rounded

+expx415 exp 1.0000000000000   -> 2.7182818284590  Inexact Rounded

+expx416 exp 1.0000000000001   -> 2.7182818284593  Inexact Rounded

+expx417 exp 1.0000000000002   -> 2.7182818284596  Inexact Rounded

+-- overprecise...

+precision:    7

+expx421 exp 0.99999999999996  -> 2.718282         Inexact Rounded

+expx422 exp 0.99999999999997  -> 2.718282         Inexact Rounded

+expx423 exp 0.99999999999998  -> 2.718282         Inexact Rounded

+expx424 exp 0.99999999999999  -> 2.718282         Inexact Rounded

+expx425 exp 1.0000000000001   -> 2.718282         Inexact Rounded

+expx426 exp 1.0000000000002   -> 2.718282         Inexact Rounded

+expx427 exp 1.0000000000003   -> 2.718282         Inexact Rounded

+precision:    2

+expx431 exp 0.99999999999996  -> 2.7              Inexact Rounded

+expx432 exp 0.99999999999997  -> 2.7              Inexact Rounded

+expx433 exp 0.99999999999998  -> 2.7              Inexact Rounded

+expx434 exp 0.99999999999999  -> 2.7              Inexact Rounded

+expx435 exp 1.0000000000001   -> 2.7              Inexact Rounded

+expx436 exp 1.0000000000002   -> 2.7              Inexact Rounded

+expx437 exp 1.0000000000003   -> 2.7              Inexact Rounded

+

+-- basics at low precisions

+precision: 3

+expx501 exp  -Infinity     -> 0

+expx502 exp  -10           -> 0.0000454   Inexact Rounded

+expx503 exp  -1            -> 0.368       Inexact Rounded

+expx504 exp   0            -> 1

+expx505 exp  -0            -> 1

+expx506 exp   1            -> 2.72        Inexact Rounded

+expx507 exp   0.693147181  -> 2.00        Inexact Rounded

+expx508 exp   10           -> 2.20E+4     Inexact Rounded

+expx509 exp  +Infinity     -> Infinity

+precision: 2

+expx511 exp  -Infinity     -> 0

+expx512 exp  -10           -> 0.000045    Inexact Rounded

+expx513 exp  -1            -> 0.37        Inexact Rounded

+expx514 exp   0            -> 1

+expx515 exp  -0            -> 1

+expx516 exp   1            -> 2.7         Inexact Rounded

+expx517 exp   0.693147181  -> 2.0         Inexact Rounded

+expx518 exp   10           -> 2.2E+4      Inexact Rounded

+expx519 exp  +Infinity     -> Infinity

+precision: 1

+expx521 exp  -Infinity     -> 0

+expx522 exp  -10           -> 0.00005     Inexact Rounded

+expx523 exp  -1            -> 0.4         Inexact Rounded

+expx524 exp   0            -> 1

+expx525 exp  -0            -> 1

+expx526 exp   1            -> 3           Inexact Rounded

+expx527 exp   0.693147181  -> 2           Inexact Rounded

+expx528 exp   10           -> 2E+4        Inexact Rounded

+expx529 exp  +Infinity     -> Infinity

+

+-- overflows, including some overprecise borderlines

+precision:   7

+maxExponent: 384

+minExponent: -383

+expx701 exp  1000000000  -> Infinity Overflow Inexact Rounded

+expx702 exp  100000000   -> Infinity Overflow Inexact Rounded

+expx703 exp  10000000    -> Infinity Overflow Inexact Rounded

+expx704 exp  1000000     -> Infinity Overflow Inexact Rounded

+expx705 exp  100000      -> Infinity Overflow Inexact Rounded

+expx706 exp  10000       -> Infinity Overflow Inexact Rounded

+expx707 exp  1000        -> Infinity Overflow Inexact Rounded

+expx708 exp  886.4952608 -> Infinity Overflow Inexact Rounded

+expx709 exp  886.4952607 -> 9.999999E+384 Inexact Rounded

+expx710 exp  886.49527   -> Infinity Overflow Inexact Rounded

+expx711 exp  886.49526   -> 9.999992E+384 Inexact Rounded

+precision:   16

+expx721 exp  886.4952608027075883 -> Infinity Overflow Inexact Rounded

+expx722 exp  886.4952608027075882 -> 9.999999999999999E+384 Inexact Rounded

+expx723 exp  886.49526080270759   -> Infinity Overflow Inexact Rounded

+expx724 exp  886.49526080270758   -> 9.999999999999917E+384 Inexact Rounded

+expx725 exp  886.4952608027076    -> Infinity Overflow Inexact Rounded

+expx726 exp  886.4952608027075    -> 9.999999999999117E+384 Inexact Rounded

+-- and by special request ...

+precision:   15

+expx731 exp  886.495260802708     -> Infinity Overflow Inexact Rounded

+expx732 exp  886.495260802707     -> 9.99999999999412E+384 Inexact Rounded

+expx733 exp  886.495260802706     -> 9.99999999998412E+384 Inexact Rounded

+maxExponent: 999

+minExponent: -999

+expx735 exp  2302.58509299405    -> Infinity Overflow Inexact Rounded

+expx736 exp  2302.58509299404    -> 9.99999999994316E+999 Inexact Rounded

+expx737 exp  2302.58509299403    -> 9.99999999984316E+999 Inexact Rounded

+

+-- subnormals and underflows, including underflow-to-zero edge point

+precision:   7

+maxExponent: 384

+minExponent: -383

+expx751 exp -1000000000   ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+expx752 exp -100000000    ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+expx753 exp -10000000     ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+expx754 exp -1000000      ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+expx755 exp -100000       ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+expx756 exp -10000        ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+expx757 exp -1000         ->  0E-389 Underflow Inexact Rounded Clamped Subnormal

+expx758 exp -881.89009    ->  1.000001E-383 Inexact Rounded

+expx759 exp -881.8901     ->  9.99991E-384  Inexact Rounded Underflow Subnormal

+expx760 exp -885          ->  4.4605E-385   Inexact Rounded Underflow Subnormal

+expx761 exp -888          ->  2.221E-386    Inexact Rounded Underflow Subnormal

+expx762 exp -890          ->  3.01E-387     Inexact Rounded Underflow Subnormal

+expx763 exp -892.9        ->  1.7E-388      Inexact Rounded Underflow Subnormal

+expx764 exp -893          ->  1.5E-388      Inexact Rounded Underflow Subnormal

+expx765 exp -893.5        ->  9E-389        Inexact Rounded Underflow Subnormal

+expx766 exp -895.7056     ->  1E-389        Inexact Rounded Underflow Subnormal

+expx769 exp -895.8        ->  1E-389        Inexact Rounded Underflow Subnormal

+expx770 exp -895.73       ->  1E-389        Inexact Rounded Underflow Subnormal

+expx771 exp -896.3987     ->  1E-389        Inexact Rounded Underflow Subnormal

+expx772 exp -896.3988     ->  0E-389        Inexact Rounded Underflow Subnormal Clamped

+expx773 exp -898.0081     ->  0E-389        Inexact Rounded Underflow Subnormal Clamped

+expx774 exp -898.0082     ->  0E-389        Inexact Rounded Underflow Subnormal Clamped

+

+-- special values

+maxexponent: 999

+minexponent: -999

+expx820 exp   Inf    -> Infinity

+expx821 exp  -Inf    -> 0

+expx822 exp   NaN    -> NaN

+expx823 exp  sNaN    -> NaN Invalid_operation

+-- propagating NaNs

+expx824 exp  sNaN123 ->  NaN123 Invalid_operation

+expx825 exp -sNaN321 -> -NaN321 Invalid_operation

+expx826 exp   NaN456 ->  NaN456

+expx827 exp  -NaN654 -> -NaN654

+expx828 exp   NaN1   ->  NaN1

+

+-- Invalid operations due to restrictions

+-- [next two probably skipped by most test harnesses]

+precision: 100000000

+expx901 exp  -Infinity     -> NaN Invalid_context

+precision:  99999999

+expx902 exp  -Infinity     -> NaN Invalid_context

+

+precision: 9

+maxExponent:   1000000

+minExponent:   -999999

+expx903 exp  -Infinity     -> NaN Invalid_context

+maxExponent:    999999

+minExponent:   -999999

+expx904 exp  -Infinity     -> 0

+maxExponent:    999999

+minExponent:  -1000000

+expx905 exp  -Infinity     -> NaN Invalid_context

+maxExponent:    999999

+minExponent:   -999998

+expx906 exp  -Infinity     -> 0

+

+--

+maxExponent: 384

+minExponent: -383

+precision:   16

+rounding:    half_even

+

+-- Null test

+expx900 exp  # -> NaN Invalid_operation

+

+

+-- Randoms P=50, within 0-999

+Precision: 50

+maxExponent: 384

+minExponent: -383

+expx1501 exp 656.35397950590285612266095596539934213943872885728  -> 1.1243757610640319783611178528839652672062820040314E+285 Inexact Rounded

+expx1502 exp 0.93620571093652800225038550600780322831236082781471 -> 2.5502865130986176689199711857825771311178046842009 Inexact Rounded

+expx1503 exp 0.00000000000000008340785856601514714183373874105791 -> 1.0000000000000000834078585660151506202691740252512 Inexact Rounded

+expx1504 exp 0.00009174057262887789625745574686545163168788456203 -> 1.0000917447809239005146722341251524081006051473273 Inexact Rounded

+expx1505 exp 33.909116897973797735657751591014926629051117541243  -> 532773181025002.03543618901306726495870476617232229 Inexact Rounded

+expx1506 exp 0.00000740470413004406592124575295278456936809587311 -> 1.0000074047315449333590066395670306135567889210814 Inexact Rounded

+expx1507 exp 0.00000000000124854922222108802453746922483071445492 -> 1.0000000000012485492222218674621176239911424968263 Inexact Rounded

+expx1508 exp 4.1793280674155659794286951159430651258356014391382  -> 65.321946520147199404199787811336860087975118278185 Inexact Rounded

+expx1509 exp 485.43595745460655893746179890255529919221550201686  -> 6.6398403920459617255950476953129377459845366585463E+210 Inexact Rounded

+expx1510 exp 0.00000000003547259806590856032527875157830328156597 -> 1.0000000000354725980665377129320589406715000685515 Inexact Rounded

+expx1511 exp 0.00000000000000759621497339104047930616478635042678 -> 1.0000000000000075962149733910693305471257715463887 Inexact Rounded

+expx1512 exp 9.7959168821760339304571595474480640286072720233796  -> 17960.261146042955179164303653412650751681436352437 Inexact Rounded

+expx1513 exp 0.00000000566642006258290526783901451194943164535581 -> 1.0000000056664200786370634609832438815665249347650 Inexact Rounded

+expx1514 exp 741.29888791134298194088827572374718940925820027354  -> 8.7501694006317332808128946666402622432064923198731E+321 Inexact Rounded

+expx1515 exp 032.75573003552517668808529099897153710887014947935  -> 168125196578678.17725841108617955904425345631092339 Inexact Rounded

+expx1516 exp 42.333700726429333308594265553422902463737399437644  -> 2428245675864172475.4681119493045657797309369672012 Inexact Rounded

+expx1517 exp 0.00000000000000559682616876491888197609158802835798 -> 1.0000000000000055968261687649345442076732739577049 Inexact Rounded

+expx1518 exp 0.00000000000080703688668280193584758300973549486312 -> 1.0000000000008070368866831275901158164321867914342 Inexact Rounded

+expx1519 exp 640.72396012796509482382712891709072570653606838251  -> 1.8318094990683394229304133068983914236995326891045E+278 Inexact Rounded

+expx1520 exp 0.00000000000000509458922167631071416948112219512224 -> 1.0000000000000050945892216763236915891499324358556 Inexact Rounded

+expx1521 exp 6.7670394314315206378625221583973414660727960241395  -> 868.73613012822031367806248697092884415119568271315 Inexact Rounded

+expx1522 exp 04.823217407412963506638267226891024138054783122548  -> 124.36457929588837129731821077586705505565904205366 Inexact Rounded

+expx1523 exp 193.51307878701196403991208482520115359690106143615  -> 1.1006830872854715677390914655452261550768957576034E+84 Inexact Rounded

+expx1524 exp 5.7307749038303650539200345901210497015617393970463  -> 308.20800743106843083522721523715645950574866495196 Inexact Rounded

+expx1525 exp 0.00000000000095217825199797965200541169123743500267 -> 1.0000000000009521782519984329737172007991390381273 Inexact Rounded

+expx1526 exp 0.00027131440949183370966393682617930153495028919140 -> 1.0002713512185751022906058160480606598754913607364 Inexact Rounded

+expx1527 exp 0.00000000064503059114680682343002315662069272707123 -> 1.0000000006450305913548390552323517403613135496633 Inexact Rounded

+expx1528 exp 0.00000000000000095616643506527288866235238548440593 -> 1.0000000000000009561664350652733457894781582009094 Inexact Rounded

+expx1529 exp 0.00000000000000086449942811678650244459550252743433 -> 1.0000000000000008644994281167868761242261096529986 Inexact Rounded

+expx1530 exp 0.06223488355635359965683053157729204988381887621850 -> 1.0642122813392406657789688931838919323826250630831 Inexact Rounded

+expx1531 exp 0.00000400710807804429435502657131912308680674057053 -> 1.0000040071161065125925620890019319832127863559260 Inexact Rounded

+expx1532 exp 85.522796894744576211573232055494551429297878413017  -> 13870073686404228452757799770251085177.853337368935 Inexact Rounded

+expx1533 exp 9.1496720811363678696938036379756663548353399954363  -> 9411.3537122832743386783597629161763057370034495157 Inexact Rounded

+expx1534 exp 8.2215705240788294472944382056330516738577785177942  -> 3720.3406813383076953899654701615084425598377758189 Inexact Rounded

+expx1535 exp 0.00000000015772064569640613142823203726821076239561 -> 1.0000000001577206457088440324683315788358926129830 Inexact Rounded

+expx1536 exp 0.58179346473959531432624153576883440625538017532480 -> 1.7892445018275360163797022372655837188423194863605 Inexact Rounded

+expx1537 exp 33.555726197149525061455517784870570470833498096559  -> 374168069896324.62578073148993526626307095854407952 Inexact Rounded

+expx1538 exp 9.7898079803906215094140010009583375537259810398659  -> 17850.878119912208888217100998019986634620368538426 Inexact Rounded

+expx1539 exp 89.157697327174521542502447953032536541038636966347  -> 525649152320166503771224149330448089550.67293829227 Inexact Rounded

+expx1540 exp 25.022947600123328912029051897171319573322888514885  -> 73676343442.952517824345431437683153304645851960524 Inexact Rounded

+

+-- exp(1) at 34

+Precision: 34

+expx1200 exp 1 -> 2.718281828459045235360287471352662 Inexact Rounded

+

+-- Randoms P=34, within 0-999

+Precision: 34

+maxExponent: 6144

+minExponent: -6143

+expx1201 exp 309.5948855821510212996700645087188  -> 2.853319692901387521201738015050724E+134 Inexact Rounded

+expx1202 exp 9.936543068706211420422803962680164  -> 20672.15839203171877476511093276022 Inexact Rounded

+expx1203 exp 6.307870323881505684429839491707908  -> 548.8747777054637296137277391754665 Inexact Rounded

+expx1204 exp 0.0003543281389438420535201308282503 -> 1.000354390920573746164733350843155 Inexact Rounded

+expx1205 exp 0.0000037087453363918375598394920229 -> 1.000003708752213796324841920189323 Inexact Rounded

+expx1206 exp 0.0020432312687512438040222444116585 -> 1.002045320088164826013561630975308 Inexact Rounded

+expx1207 exp 6.856313340032177672550343216129586  -> 949.8587981604144147983589660524396 Inexact Rounded

+expx1208 exp 0.0000000000402094928333815643326418 -> 1.000000000040209492834189965989612 Inexact Rounded

+expx1209 exp 0.0049610784722412117632647003545839 -> 1.004973404997901987039589029277833 Inexact Rounded

+expx1210 exp 0.0000891471883724066909746786702686 -> 1.000089151162101085412780088266699 Inexact Rounded

+expx1211 exp 08.59979170376061890684723211112566  -> 5430.528314920905714615339273738097 Inexact Rounded

+expx1212 exp 9.473117039341003854872778112752590  -> 13005.36234331224953460055897913917 Inexact Rounded

+expx1213 exp 0.0999060724692207648429969999310118 -> 1.105067116975190602296052700726802 Inexact Rounded

+expx1214 exp 0.0000000927804533555877884082269247 -> 1.000000092780457659694183954740772 Inexact Rounded

+expx1215 exp 0.0376578583872889916298772818265677 -> 1.038375900489771946477857818447556 Inexact Rounded

+expx1216 exp 261.6896411697539524911536116712307  -> 4.470613562127465095241600174941460E+113 Inexact Rounded

+expx1217 exp 0.0709997423269162980875824213889626 -> 1.073580949235407949417814485533172 Inexact Rounded

+expx1218 exp 0.0000000444605583295169895235658731 -> 1.000000044460559317887627657593900 Inexact Rounded

+expx1219 exp 0.0000021224072854777512281369815185 -> 1.000002122409537785687390631070906 Inexact Rounded

+expx1220 exp 547.5174462574156885473558485475052  -> 6.078629247383807942612114579728672E+237 Inexact Rounded

+expx1221 exp 0.0000009067598041615192002339844670 -> 1.000000906760215268314680115374387 Inexact Rounded

+expx1222 exp 0.0316476500308065365803455533244603 -> 1.032153761880187977658387961769034 Inexact Rounded

+expx1223 exp 84.46160530377645101833996706384473  -> 4.799644995897968383503269871697856E+36 Inexact Rounded

+expx1224 exp 0.0000000000520599740290848018904145 -> 1.000000000052059974030439922338393 Inexact Rounded

+expx1225 exp 0.0000006748530640093620665651726708 -> 1.000000674853291722742292331812997 Inexact Rounded

+expx1226 exp 0.0000000116853119761042020507916169 -> 1.000000011685312044377460306165203 Inexact Rounded

+expx1227 exp 0.0022593818094258636727616886693280 -> 1.002261936135876893707094845543461 Inexact Rounded

+expx1228 exp 0.0029398857673478912249856509667517 -> 1.002944211469495086813087651287012 Inexact Rounded

+expx1229 exp 0.7511480029928802775376270557636963 -> 2.119431734510320169806976569366789 Inexact Rounded

+expx1230 exp 174.9431952176750671150886423048447  -> 9.481222305374955011464619468044051E+75 Inexact Rounded

+expx1231 exp 0.0000810612451694136129199895164424 -> 1.000081064530720924186615149646920 Inexact Rounded

+expx1232 exp 51.06888989702669288180946272499035  -> 15098613888619165073959.89896018749 Inexact Rounded

+expx1233 exp 0.0000000005992887599437093651494510 -> 1.000000000599288760123282874082758 Inexact Rounded

+expx1234 exp 714.8549046761054856311108828903972  -> 2.867744544891081117381595080480784E+310 Inexact Rounded

+expx1235 exp 0.0000000004468247802990643645607110 -> 1.000000000446824780398890556720233 Inexact Rounded

+expx1236 exp 831.5818151589890366323551672043709  -> 1.417077409182624969435938062261655E+361 Inexact Rounded

+expx1237 exp 0.0000000006868323825179605747108044 -> 1.000000000686832382753829935602454 Inexact Rounded

+expx1238 exp 0.0000001306740266408976840228440255 -> 1.000000130674035178748675187648098 Inexact Rounded

+expx1239 exp 0.3182210609022267704811502412335163 -> 1.374680115667798185758927247894859 Inexact Rounded

+expx1240 exp 0.0147741234179104437440264644295501 -> 1.014883800239950682628277534839222 Inexact Rounded

+

+-- Randoms P=16, within 0-99

+Precision: 16

+maxExponent: 384

+minExponent: -383

+expx1101 exp 8.473011527013724  -> 4783.900643969246 Inexact Rounded

+expx1102 exp 0.0000055753022764 -> 1.000005575317818 Inexact Rounded

+expx1103 exp 0.0000323474114482 -> 1.000032347934631 Inexact Rounded

+expx1104 exp 64.54374138544166  -> 1.073966476173531E+28 Inexact Rounded

+expx1105 exp 90.47203246416569  -> 1.956610887250643E+39 Inexact Rounded

+expx1106 exp 9.299931532342757  -> 10937.27033325227 Inexact Rounded

+expx1107 exp 8.759678437852203  -> 6372.062234495381 Inexact Rounded

+expx1108 exp 0.0000931755127172 -> 1.000093179853690 Inexact Rounded

+expx1109 exp 0.0000028101158373 -> 1.000002810119786 Inexact Rounded

+expx1110 exp 0.0000008008130919 -> 1.000000800813413 Inexact Rounded

+expx1111 exp 8.339771722299049  -> 4187.133803081878 Inexact Rounded

+expx1112 exp 0.0026140497995474 -> 1.002617469406750 Inexact Rounded

+expx1113 exp 0.7478033356261771 -> 2.112354781975418 Inexact Rounded

+expx1114 exp 51.77663761827966  -> 3.064135801120365E+22 Inexact Rounded

+expx1115 exp 0.1524989783061012 -> 1.164741272084955 Inexact Rounded

+expx1116 exp 0.0066298798669219 -> 1.006651906170791 Inexact Rounded

+expx1117 exp 9.955141865534960  -> 21060.23334287038 Inexact Rounded

+expx1118 exp 92.34503059198483  -> 1.273318993481226E+40 Inexact Rounded

+expx1119 exp 0.0000709388677346 -> 1.000070941383956 Inexact Rounded

+expx1120 exp 79.12883036433204  -> 2.318538899389243E+34 Inexact Rounded

+expx1121 exp 0.0000090881548873 -> 1.000009088196185 Inexact Rounded

+expx1122 exp 0.0424828809603411 -> 1.043398194245720 Inexact Rounded

+expx1123 exp 0.8009035891427416 -> 2.227552811933310 Inexact Rounded

+expx1124 exp 8.825786167283102  -> 6807.540455289995 Inexact Rounded

+expx1125 exp 1.535457249746275  -> 4.643448260146849 Inexact Rounded

+expx1126 exp 69.02254254355800  -> 9.464754500670653E+29 Inexact Rounded

+expx1127 exp 0.0007050554368713 -> 1.000705304046880 Inexact Rounded

+expx1128 exp 0.0000081206549504 -> 1.000008120687923 Inexact Rounded

+expx1129 exp 0.621774854641137  -> 1.862230298554903 Inexact Rounded

+expx1130 exp 3.847629031404354  -> 46.88177613568203 Inexact Rounded

+expx1131 exp 24.81250184697732  -> 59694268456.19966 Inexact Rounded

+expx1132 exp 5.107546500516044  -> 165.2643809755670 Inexact Rounded

+expx1133 exp 79.17810943951986  -> 2.435656372541360E+34 Inexact Rounded

+expx1134 exp 0.0051394695667015 -> 1.005152699295301 Inexact Rounded

+expx1135 exp 57.44504488501725  -> 8.872908566929688E+24 Inexact Rounded

+expx1136 exp 0.0000508388968036 -> 1.000050840189122 Inexact Rounded

+expx1137 exp 69.71309932148997  -> 1.888053740693541E+30 Inexact Rounded

+expx1138 exp 0.0064183412981502 -> 1.006438982988835 Inexact Rounded

+expx1139 exp 9.346991220814677  -> 11464.27802035082 Inexact Rounded

+expx1140 exp 33.09087139999152  -> 235062229168763.5 Inexact Rounded

+

+-- Randoms P=7, within 0-9

+Precision: 7

+maxExponent: 96

+minExponent: -95

+expx1001 exp 2.395441  -> 10.97304 Inexact Rounded

+expx1002 exp 0.6406779 -> 1.897767 Inexact Rounded

+expx1003 exp 0.5618218 -> 1.753865 Inexact Rounded

+expx1004 exp 3.055120  -> 21.22373 Inexact Rounded

+expx1005 exp 1.536792  -> 4.649650 Inexact Rounded

+expx1006 exp 0.0801591 -> 1.083459 Inexact Rounded

+expx1007 exp 0.0966875 -> 1.101516 Inexact Rounded

+expx1008 exp 0.0646761 -> 1.066813 Inexact Rounded

+expx1009 exp 0.0095670 -> 1.009613 Inexact Rounded

+expx1010 exp 2.956859  -> 19.23745 Inexact Rounded

+expx1011 exp 7.504679  -> 1816.522 Inexact Rounded

+expx1012 exp 0.0045259 -> 1.004536 Inexact Rounded

+expx1013 exp 3.810071  -> 45.15364 Inexact Rounded

+expx1014 exp 1.502390  -> 4.492413 Inexact Rounded

+expx1015 exp 0.0321523 -> 1.032675 Inexact Rounded

+expx1016 exp 0.0057214 -> 1.005738 Inexact Rounded

+expx1017 exp 9.811445  -> 18241.33 Inexact Rounded

+expx1018 exp 3.245249  -> 25.66810 Inexact Rounded

+expx1019 exp 0.3189742 -> 1.375716 Inexact Rounded

+expx1020 exp 0.8621610 -> 2.368273 Inexact Rounded

+expx1021 exp 0.0122511 -> 1.012326 Inexact Rounded

+expx1022 exp 2.202088  -> 9.043877 Inexact Rounded

+expx1023 exp 8.778203  -> 6491.202 Inexact Rounded

+expx1024 exp 0.1896279 -> 1.208800 Inexact Rounded

+expx1025 exp 0.4510947 -> 1.570030 Inexact Rounded

+expx1026 exp 0.276413  -> 1.318392 Inexact Rounded

+expx1027 exp 4.490067  -> 89.12742 Inexact Rounded

+expx1028 exp 0.0439786 -> 1.044960 Inexact Rounded

+expx1029 exp 0.8168245 -> 2.263301 Inexact Rounded

+expx1030 exp 0.0391658 -> 1.039943 Inexact Rounded

+expx1031 exp 9.261816  -> 10528.24 Inexact Rounded

+expx1032 exp 9.611186  -> 14930.87 Inexact Rounded

+expx1033 exp 9.118125  -> 9119.087 Inexact Rounded

+expx1034 exp 9.469083  -> 12953.00 Inexact Rounded

+expx1035 exp 0.0499983 -> 1.051269 Inexact Rounded

+expx1036 exp 0.0050746 -> 1.005087 Inexact Rounded

+expx1037 exp 0.0014696 -> 1.001471 Inexact Rounded

+expx1038 exp 9.138494  -> 9306.739 Inexact Rounded

+expx1039 exp 0.0065436 -> 1.006565 Inexact Rounded

+expx1040 exp 0.7284803 -> 2.071930 Inexact Rounded

+

diff --git a/Lib/test/decimaltestdata/extra.decTest b/Lib/test/decimaltestdata/extra.decTest
new file mode 100644
index 0000000..0cc1bbb
--- /dev/null
+++ b/Lib/test/decimaltestdata/extra.decTest
@@ -0,0 +1,2673 @@
+version: ?.??
+
+extended: 1
+rounding: half_even
+
+-- testing folddown and clamping
+maxexponent: 9
+minexponent: -9
+precision: 6
+clamp: 1
+extr0000 apply 1E+11 -> Infinity Overflow Inexact Rounded
+extr0001 apply 1E+10 -> Infinity Overflow Inexact Rounded
+extr0002 apply 1E+9 -> 1.00000E+9 Clamped
+extr0003 apply 1E+8 -> 1.0000E+8 Clamped
+extr0004 apply 1E+7 -> 1.000E+7 Clamped
+extr0005 apply 1E+6 -> 1.00E+6 Clamped
+extr0006 apply 1E+5 -> 1.0E+5 Clamped
+extr0007 apply 1E+4 -> 1E+4
+extr0008 apply 1E+3 -> 1E+3
+extr0009 apply 1E+2 -> 1E+2
+extr0010 apply 1E+1 -> 1E+1
+extr0011 apply 1 -> 1
+extr0012 apply 1E-1 -> 0.1
+extr0013 apply 1E-2 -> 0.01
+extr0014 apply 1E-3 -> 0.001
+extr0015 apply 1E-4 -> 0.0001
+extr0016 apply 1E-5 -> 0.00001
+extr0017 apply 1E-6 -> 0.000001
+extr0018 apply 1E-7 -> 1E-7
+extr0019 apply 1E-8 -> 1E-8
+extr0020 apply 1E-9 -> 1E-9
+extr0021 apply 1E-10 -> 1E-10 Subnormal
+extr0022 apply 1E-11 -> 1E-11 Subnormal
+extr0023 apply 1E-12 -> 1E-12 Subnormal
+extr0024 apply 1E-13 -> 1E-13 Subnormal
+extr0025 apply 1E-14 -> 1E-14 Subnormal
+extr0026 apply 1E-15 -> 0E-14 Inexact Rounded Subnormal Underflow Clamped
+extr0027 apply 1E-16 -> 0E-14 Inexact Rounded Subnormal Underflow Clamped
+clamp: 0
+
+-- large precision, small minimum and maximum exponent; in this case
+-- it's possible that folddown is required on a subnormal result
+maxexponent: 9
+minexponent: -9
+precision: 24
+clamp: 1
+extr0100 apply 1E+11 -> Infinity Overflow Inexact Rounded
+extr0101 apply 1E+10 -> Infinity Overflow Inexact Rounded
+extr0102 apply 1E+9 -> 1000000000.00000000000000 Clamped
+extr0103 apply 1E+8 -> 100000000.00000000000000 Clamped
+extr0104 apply 1E+7 -> 10000000.00000000000000 Clamped
+extr0105 apply 1E+6 -> 1000000.00000000000000 Clamped
+extr0106 apply 1E+5 -> 100000.00000000000000 Clamped
+extr0107 apply 1E+4 -> 10000.00000000000000 Clamped
+extr0108 apply 1E+3 -> 1000.00000000000000 Clamped
+extr0109 apply 1E+2 -> 100.00000000000000 Clamped
+extr0110 apply 1E+1 -> 10.00000000000000 Clamped
+extr0111 apply 1 ->    1.00000000000000 Clamped
+extr0112 apply 1E-1 -> 0.10000000000000 Clamped
+extr0113 apply 1E-2 -> 0.01000000000000 Clamped
+extr0114 apply 1E-3 -> 0.00100000000000 Clamped
+extr0115 apply 1E-4 -> 0.00010000000000 Clamped
+extr0116 apply 1E-5 -> 0.00001000000000 Clamped
+extr0117 apply 1E-6 -> 0.00000100000000 Clamped
+extr0118 apply 1E-7 -> 1.0000000E-7 Clamped
+extr0119 apply 1E-8 -> 1.000000E-8 Clamped
+extr0120 apply 1E-9 -> 1.00000E-9 Clamped
+extr0121 apply 1E-10 -> 1.0000E-10 Subnormal Clamped
+extr0122 apply 1E-11 -> 1.000E-11 Subnormal Clamped
+extr0123 apply 1E-12 -> 1.00E-12 Subnormal Clamped
+extr0124 apply 1E-13 -> 1.0E-13 Subnormal Clamped
+extr0125 apply 1E-14 -> 1E-14 Subnormal
+extr0126 apply 1E-15 -> 1E-15 Subnormal
+extr0127 apply 1E-16 -> 1E-16 Subnormal
+extr0128 apply 1E-17 -> 1E-17 Subnormal
+extr0129 apply 1E-18 -> 1E-18 Subnormal
+extr0130 apply 1E-19 -> 1E-19 Subnormal
+extr0131 apply 1E-20 -> 1E-20 Subnormal
+extr0132 apply 1E-21 -> 1E-21 Subnormal
+extr0133 apply 1E-22 -> 1E-22 Subnormal
+extr0134 apply 1E-23 -> 1E-23 Subnormal
+extr0135 apply 1E-24 -> 1E-24 Subnormal
+extr0136 apply 1E-25 -> 1E-25 Subnormal
+extr0137 apply 1E-26 -> 1E-26 Subnormal
+extr0138 apply 1E-27 -> 1E-27 Subnormal
+extr0139 apply 1E-28 -> 1E-28 Subnormal
+extr0140 apply 1E-29 -> 1E-29 Subnormal
+extr0141 apply 1E-30 -> 1E-30 Subnormal
+extr0142 apply 1E-31 -> 1E-31 Subnormal
+extr0143 apply 1E-32 -> 1E-32 Subnormal
+extr0144 apply 1E-33 -> 0E-32 Inexact Rounded Subnormal Underflow Clamped
+extr0145 apply 1E-34 -> 0E-32 Inexact Rounded Subnormal Underflow Clamped
+clamp: 0
+
+-- some buggy addition cases from Python 2.5.x
+maxexponent: 999
+minexponent: -999
+precision: 6
+extr1000 add 0E+1000 0E+2000 -> 0E+999 Clamped
+extr1001 add 0E+1004 0E+1001 -> 0E+999 Clamped
+clamp: 1
+extr1002 add 0E+1000 0E+1000 -> 0E+994 Clamped
+clamp: 0
+extr1003 add 0E+1000 0E-1005 -> 0E-1004 Clamped
+extr1004 add 0E-1006 0 -> 0E-1004 Clamped
+extr1005 add 1E+1000 -1E+1000 -> 0E+999 Clamped
+extr1006 add -3.1E+1004 3.1E+1004 -> 0E+999 Clamped
+clamp: 1
+extr1007 add 1E+998 -1E+998 -> 0E+994 Clamped
+clamp: 0
+extr1008 add 2E-1005 -2E-1005 -> 0E-1004 Clamped
+extr1009 add -3.1E-1005 3.1E-1005 -> 0E-1004 Clamped
+
+precision: 3
+extr1010 add 99949.9 0.200000 -> 1.00E+5 Inexact Rounded
+extr1011 add 99949.9 0.100000 -> 1.00E+5 Inexact Rounded
+extr1012 add 99849.9 0.200000 -> 9.99E+4 Inexact Rounded
+extr1013 add 99849.9 0.100000 -> 9.98E+4 Inexact Rounded
+extr1014 add 1.0149 0.00011 -> 1.02 Inexact Rounded
+extr1015 add 1.0149 0.00010 -> 1.02 Inexact Rounded
+extr1016 add 1.0149 0.00009 -> 1.01 Inexact Rounded
+extr1017 add 1.0049 0.00011 -> 1.01 Inexact Rounded
+extr1018 add 1.0049 0.00010 -> 1.00 Inexact Rounded
+extr1019 add 1.0049 0.00009 -> 1.00 Inexact Rounded
+rounding: down
+extr1020 add 99999.9 0.200000 -> 1.00E+5 Inexact Rounded
+extr1021 add 99999.8 0.200000 -> 1.00E+5 Rounded
+extr1022 add 99999.7 0.200000 -> 9.99E+4 Inexact Rounded
+rounding: half_even
+
+-- a bug in _rescale caused the following to fail in Python 2.5.1
+maxexponent: 999
+minexponent: -999
+precision: 6
+extr1100 add 0E+1000 1E+1000 -> Infinity Overflow Inexact Rounded
+extr1101 remainder 1E+1000 2E+1000 -> Infinity Overflow Inexact Rounded
+
+-- tests for scaleb in case where input precision > context precision.
+-- Result should be rounded.  (This isn't totally clear from the
+-- specification, but the treatment of underflow in the testcases
+-- suggests that rounding should occur in general.  Furthermore, it's
+-- the way that the reference implementation behaves.)
+maxexponent: 999
+minexponent: -999
+precision: 3
+extr1200 scaleb 1234 1 -> 1.23E+4 Inexact Rounded
+extr1201 scaleb 5678 0 -> 5.68E+3 Inexact Rounded
+extr1202 scaleb -9105 -1 -> -910 Inexact Rounded
+
+-- Invalid operation from 0 * infinity in fma
+-- takes precedence over a third-argument sNaN
+extr1300 fma 0 Inf sNaN123 -> NaN Invalid_operation
+extr1301 fma Inf 0 sNaN456 -> NaN Invalid_operation
+extr1302 fma 0E123 -Inf sNaN789 -> NaN Invalid_operation
+extr1302 fma -Inf 0E-456 sNaN148 -> NaN Invalid_operation
+
+-- Tests for the is_* boolean operations
+precision: 9
+maxExponent: 999
+minExponent: -999
+
+bool0000 iscanonical 0E-2000 -> 1
+bool0001 iscanonical -0E-2000 -> 1
+bool0002 iscanonical 0E-1008 -> 1
+bool0003 iscanonical -0E-1008 -> 1
+bool0004 iscanonical 0E-1007 -> 1
+bool0005 iscanonical -0E-1007 -> 1
+bool0006 iscanonical 0E-1006 -> 1
+bool0007 iscanonical -0E-1006 -> 1
+bool0008 iscanonical 0E-1000 -> 1
+bool0009 iscanonical -0E-1000 -> 1
+bool0010 iscanonical 0E-999 -> 1
+bool0011 iscanonical -0E-999 -> 1
+bool0012 iscanonical 0E-998 -> 1
+bool0013 iscanonical -0E-998 -> 1
+bool0014 iscanonical 0E-100 -> 1
+bool0015 iscanonical -0E-100 -> 1
+bool0016 iscanonical 0.000000 -> 1
+bool0017 iscanonical -0.000000 -> 1
+bool0018 iscanonical 0.000 -> 1
+bool0019 iscanonical -0.000 -> 1
+bool0020 iscanonical 0.00 -> 1
+bool0021 iscanonical -0.00 -> 1
+bool0022 iscanonical 0.0 -> 1
+bool0023 iscanonical -0.0 -> 1
+bool0024 iscanonical 0 -> 1
+bool0025 iscanonical -0 -> 1
+bool0026 iscanonical 0E+1 -> 1
+bool0027 iscanonical -0E+1 -> 1
+bool0028 iscanonical 0E+2 -> 1
+bool0029 iscanonical -0E+2 -> 1
+bool0030 iscanonical 0E+3 -> 1
+bool0031 iscanonical -0E+3 -> 1
+bool0032 iscanonical 0E+6 -> 1
+bool0033 iscanonical -0E+6 -> 1
+bool0034 iscanonical 0E+100 -> 1
+bool0035 iscanonical -0E+100 -> 1
+bool0036 iscanonical 0E+990 -> 1
+bool0037 iscanonical -0E+990 -> 1
+bool0038 iscanonical 0E+991 -> 1
+bool0039 iscanonical -0E+991 -> 1
+bool0040 iscanonical 0E+992 -> 1
+bool0041 iscanonical -0E+992 -> 1
+bool0042 iscanonical 0E+998 -> 1
+bool0043 iscanonical -0E+998 -> 1
+bool0044 iscanonical 0E+999 -> 1
+bool0045 iscanonical -0E+999 -> 1
+bool0046 iscanonical 0E+1000 -> 1
+bool0047 iscanonical -0E+1000 -> 1
+bool0048 iscanonical 0E+2000 -> 1
+bool0049 iscanonical -0E+2000 -> 1
+bool0050 iscanonical 1E-2000 -> 1
+bool0051 iscanonical -1E-2000 -> 1
+bool0052 iscanonical 1E-1008 -> 1
+bool0053 iscanonical -1E-1008 -> 1
+bool0054 iscanonical 1E-1007 -> 1
+bool0055 iscanonical -1E-1007 -> 1
+bool0056 iscanonical 1E-1006 -> 1
+bool0057 iscanonical -1E-1006 -> 1
+bool0058 iscanonical 1E-1000 -> 1
+bool0059 iscanonical -1E-1000 -> 1
+bool0060 iscanonical 1E-999 -> 1
+bool0061 iscanonical -1E-999 -> 1
+bool0062 iscanonical 1E-998 -> 1
+bool0063 iscanonical -1E-998 -> 1
+bool0064 iscanonical 1E-100 -> 1
+bool0065 iscanonical -1E-100 -> 1
+bool0066 iscanonical 0.000001 -> 1
+bool0067 iscanonical -0.000001 -> 1
+bool0068 iscanonical 0.001 -> 1
+bool0069 iscanonical -0.001 -> 1
+bool0070 iscanonical 0.01 -> 1
+bool0071 iscanonical -0.01 -> 1
+bool0072 iscanonical 0.1 -> 1
+bool0073 iscanonical -0.1 -> 1
+bool0074 iscanonical 1 -> 1
+bool0075 iscanonical -1 -> 1
+bool0076 iscanonical 1E+1 -> 1
+bool0077 iscanonical -1E+1 -> 1
+bool0078 iscanonical 1E+2 -> 1
+bool0079 iscanonical -1E+2 -> 1
+bool0080 iscanonical 1E+3 -> 1
+bool0081 iscanonical -1E+3 -> 1
+bool0082 iscanonical 1E+6 -> 1
+bool0083 iscanonical -1E+6 -> 1
+bool0084 iscanonical 1E+100 -> 1
+bool0085 iscanonical -1E+100 -> 1
+bool0086 iscanonical 1E+990 -> 1
+bool0087 iscanonical -1E+990 -> 1
+bool0088 iscanonical 1E+991 -> 1
+bool0089 iscanonical -1E+991 -> 1
+bool0090 iscanonical 1E+992 -> 1
+bool0091 iscanonical -1E+992 -> 1
+bool0092 iscanonical 1E+998 -> 1
+bool0093 iscanonical -1E+998 -> 1
+bool0094 iscanonical 1E+999 -> 1
+bool0095 iscanonical -1E+999 -> 1
+bool0096 iscanonical 1E+1000 -> 1
+bool0097 iscanonical -1E+1000 -> 1
+bool0098 iscanonical 1E+2000 -> 1
+bool0099 iscanonical -1E+2000 -> 1
+bool0100 iscanonical 9E-2000 -> 1
+bool0101 iscanonical -9E-2000 -> 1
+bool0102 iscanonical 9E-1008 -> 1
+bool0103 iscanonical -9E-1008 -> 1
+bool0104 iscanonical 9E-1007 -> 1
+bool0105 iscanonical -9E-1007 -> 1
+bool0106 iscanonical 9E-1006 -> 1
+bool0107 iscanonical -9E-1006 -> 1
+bool0108 iscanonical 9E-1000 -> 1
+bool0109 iscanonical -9E-1000 -> 1
+bool0110 iscanonical 9E-999 -> 1
+bool0111 iscanonical -9E-999 -> 1
+bool0112 iscanonical 9E-998 -> 1
+bool0113 iscanonical -9E-998 -> 1
+bool0114 iscanonical 9E-100 -> 1
+bool0115 iscanonical -9E-100 -> 1
+bool0116 iscanonical 0.000009 -> 1
+bool0117 iscanonical -0.000009 -> 1
+bool0118 iscanonical 0.009 -> 1
+bool0119 iscanonical -0.009 -> 1
+bool0120 iscanonical 0.09 -> 1
+bool0121 iscanonical -0.09 -> 1
+bool0122 iscanonical 0.9 -> 1
+bool0123 iscanonical -0.9 -> 1
+bool0124 iscanonical 9 -> 1
+bool0125 iscanonical -9 -> 1
+bool0126 iscanonical 9E+1 -> 1
+bool0127 iscanonical -9E+1 -> 1
+bool0128 iscanonical 9E+2 -> 1
+bool0129 iscanonical -9E+2 -> 1
+bool0130 iscanonical 9E+3 -> 1
+bool0131 iscanonical -9E+3 -> 1
+bool0132 iscanonical 9E+6 -> 1
+bool0133 iscanonical -9E+6 -> 1
+bool0134 iscanonical 9E+100 -> 1
+bool0135 iscanonical -9E+100 -> 1
+bool0136 iscanonical 9E+990 -> 1
+bool0137 iscanonical -9E+990 -> 1
+bool0138 iscanonical 9E+991 -> 1
+bool0139 iscanonical -9E+991 -> 1
+bool0140 iscanonical 9E+992 -> 1
+bool0141 iscanonical -9E+992 -> 1
+bool0142 iscanonical 9E+998 -> 1
+bool0143 iscanonical -9E+998 -> 1
+bool0144 iscanonical 9E+999 -> 1
+bool0145 iscanonical -9E+999 -> 1
+bool0146 iscanonical 9E+1000 -> 1
+bool0147 iscanonical -9E+1000 -> 1
+bool0148 iscanonical 9E+2000 -> 1
+bool0149 iscanonical -9E+2000 -> 1
+bool0150 iscanonical 9.99999999E-2000 -> 1
+bool0151 iscanonical -9.99999999E-2000 -> 1
+bool0152 iscanonical 9.99999999E-1008 -> 1
+bool0153 iscanonical -9.99999999E-1008 -> 1
+bool0154 iscanonical 9.99999999E-1007 -> 1
+bool0155 iscanonical -9.99999999E-1007 -> 1
+bool0156 iscanonical 9.99999999E-1006 -> 1
+bool0157 iscanonical -9.99999999E-1006 -> 1
+bool0158 iscanonical 9.99999999E-1000 -> 1
+bool0159 iscanonical -9.99999999E-1000 -> 1
+bool0160 iscanonical 9.99999999E-999 -> 1
+bool0161 iscanonical -9.99999999E-999 -> 1
+bool0162 iscanonical 9.99999999E-998 -> 1
+bool0163 iscanonical -9.99999999E-998 -> 1
+bool0164 iscanonical 9.99999999E-100 -> 1
+bool0165 iscanonical -9.99999999E-100 -> 1
+bool0166 iscanonical 0.00000999999999 -> 1
+bool0167 iscanonical -0.00000999999999 -> 1
+bool0168 iscanonical 0.00999999999 -> 1
+bool0169 iscanonical -0.00999999999 -> 1
+bool0170 iscanonical 0.0999999999 -> 1
+bool0171 iscanonical -0.0999999999 -> 1
+bool0172 iscanonical 0.999999999 -> 1
+bool0173 iscanonical -0.999999999 -> 1
+bool0174 iscanonical 9.99999999 -> 1
+bool0175 iscanonical -9.99999999 -> 1
+bool0176 iscanonical 99.9999999 -> 1
+bool0177 iscanonical -99.9999999 -> 1
+bool0178 iscanonical 999.999999 -> 1
+bool0179 iscanonical -999.999999 -> 1
+bool0180 iscanonical 9999.99999 -> 1
+bool0181 iscanonical -9999.99999 -> 1
+bool0182 iscanonical 9999999.99 -> 1
+bool0183 iscanonical -9999999.99 -> 1
+bool0184 iscanonical 9.99999999E+100 -> 1
+bool0185 iscanonical -9.99999999E+100 -> 1
+bool0186 iscanonical 9.99999999E+990 -> 1
+bool0187 iscanonical -9.99999999E+990 -> 1
+bool0188 iscanonical 9.99999999E+991 -> 1
+bool0189 iscanonical -9.99999999E+991 -> 1
+bool0190 iscanonical 9.99999999E+992 -> 1
+bool0191 iscanonical -9.99999999E+992 -> 1
+bool0192 iscanonical 9.99999999E+998 -> 1
+bool0193 iscanonical -9.99999999E+998 -> 1
+bool0194 iscanonical 9.99999999E+999 -> 1
+bool0195 iscanonical -9.99999999E+999 -> 1
+bool0196 iscanonical 9.99999999E+1000 -> 1
+bool0197 iscanonical -9.99999999E+1000 -> 1
+bool0198 iscanonical 9.99999999E+2000 -> 1
+bool0199 iscanonical -9.99999999E+2000 -> 1
+bool0200 iscanonical Infinity -> 1
+bool0201 iscanonical -Infinity -> 1
+bool0202 iscanonical NaN -> 1
+bool0203 iscanonical -NaN -> 1
+bool0204 iscanonical NaN123 -> 1
+bool0205 iscanonical -NaN123 -> 1
+bool0206 iscanonical sNaN -> 1
+bool0207 iscanonical -sNaN -> 1
+bool0208 iscanonical sNaN123 -> 1
+bool0209 iscanonical -sNaN123 -> 1
+bool0210 isfinite 0E-2000 -> 1
+bool0211 isfinite -0E-2000 -> 1
+bool0212 isfinite 0E-1008 -> 1
+bool0213 isfinite -0E-1008 -> 1
+bool0214 isfinite 0E-1007 -> 1
+bool0215 isfinite -0E-1007 -> 1
+bool0216 isfinite 0E-1006 -> 1
+bool0217 isfinite -0E-1006 -> 1
+bool0218 isfinite 0E-1000 -> 1
+bool0219 isfinite -0E-1000 -> 1
+bool0220 isfinite 0E-999 -> 1
+bool0221 isfinite -0E-999 -> 1
+bool0222 isfinite 0E-998 -> 1
+bool0223 isfinite -0E-998 -> 1
+bool0224 isfinite 0E-100 -> 1
+bool0225 isfinite -0E-100 -> 1
+bool0226 isfinite 0.000000 -> 1
+bool0227 isfinite -0.000000 -> 1
+bool0228 isfinite 0.000 -> 1
+bool0229 isfinite -0.000 -> 1
+bool0230 isfinite 0.00 -> 1
+bool0231 isfinite -0.00 -> 1
+bool0232 isfinite 0.0 -> 1
+bool0233 isfinite -0.0 -> 1
+bool0234 isfinite 0 -> 1
+bool0235 isfinite -0 -> 1
+bool0236 isfinite 0E+1 -> 1
+bool0237 isfinite -0E+1 -> 1
+bool0238 isfinite 0E+2 -> 1
+bool0239 isfinite -0E+2 -> 1
+bool0240 isfinite 0E+3 -> 1
+bool0241 isfinite -0E+3 -> 1
+bool0242 isfinite 0E+6 -> 1
+bool0243 isfinite -0E+6 -> 1
+bool0244 isfinite 0E+100 -> 1
+bool0245 isfinite -0E+100 -> 1
+bool0246 isfinite 0E+990 -> 1
+bool0247 isfinite -0E+990 -> 1
+bool0248 isfinite 0E+991 -> 1
+bool0249 isfinite -0E+991 -> 1
+bool0250 isfinite 0E+992 -> 1
+bool0251 isfinite -0E+992 -> 1
+bool0252 isfinite 0E+998 -> 1
+bool0253 isfinite -0E+998 -> 1
+bool0254 isfinite 0E+999 -> 1
+bool0255 isfinite -0E+999 -> 1
+bool0256 isfinite 0E+1000 -> 1
+bool0257 isfinite -0E+1000 -> 1
+bool0258 isfinite 0E+2000 -> 1
+bool0259 isfinite -0E+2000 -> 1
+bool0260 isfinite 1E-2000 -> 1
+bool0261 isfinite -1E-2000 -> 1
+bool0262 isfinite 1E-1008 -> 1
+bool0263 isfinite -1E-1008 -> 1
+bool0264 isfinite 1E-1007 -> 1
+bool0265 isfinite -1E-1007 -> 1
+bool0266 isfinite 1E-1006 -> 1
+bool0267 isfinite -1E-1006 -> 1
+bool0268 isfinite 1E-1000 -> 1
+bool0269 isfinite -1E-1000 -> 1
+bool0270 isfinite 1E-999 -> 1
+bool0271 isfinite -1E-999 -> 1
+bool0272 isfinite 1E-998 -> 1
+bool0273 isfinite -1E-998 -> 1
+bool0274 isfinite 1E-100 -> 1
+bool0275 isfinite -1E-100 -> 1
+bool0276 isfinite 0.000001 -> 1
+bool0277 isfinite -0.000001 -> 1
+bool0278 isfinite 0.001 -> 1
+bool0279 isfinite -0.001 -> 1
+bool0280 isfinite 0.01 -> 1
+bool0281 isfinite -0.01 -> 1
+bool0282 isfinite 0.1 -> 1
+bool0283 isfinite -0.1 -> 1
+bool0284 isfinite 1 -> 1
+bool0285 isfinite -1 -> 1
+bool0286 isfinite 1E+1 -> 1
+bool0287 isfinite -1E+1 -> 1
+bool0288 isfinite 1E+2 -> 1
+bool0289 isfinite -1E+2 -> 1
+bool0290 isfinite 1E+3 -> 1
+bool0291 isfinite -1E+3 -> 1
+bool0292 isfinite 1E+6 -> 1
+bool0293 isfinite -1E+6 -> 1
+bool0294 isfinite 1E+100 -> 1
+bool0295 isfinite -1E+100 -> 1
+bool0296 isfinite 1E+990 -> 1
+bool0297 isfinite -1E+990 -> 1
+bool0298 isfinite 1E+991 -> 1
+bool0299 isfinite -1E+991 -> 1
+bool0300 isfinite 1E+992 -> 1
+bool0301 isfinite -1E+992 -> 1
+bool0302 isfinite 1E+998 -> 1
+bool0303 isfinite -1E+998 -> 1
+bool0304 isfinite 1E+999 -> 1
+bool0305 isfinite -1E+999 -> 1
+bool0306 isfinite 1E+1000 -> 1
+bool0307 isfinite -1E+1000 -> 1
+bool0308 isfinite 1E+2000 -> 1
+bool0309 isfinite -1E+2000 -> 1
+bool0310 isfinite 9E-2000 -> 1
+bool0311 isfinite -9E-2000 -> 1
+bool0312 isfinite 9E-1008 -> 1
+bool0313 isfinite -9E-1008 -> 1
+bool0314 isfinite 9E-1007 -> 1
+bool0315 isfinite -9E-1007 -> 1
+bool0316 isfinite 9E-1006 -> 1
+bool0317 isfinite -9E-1006 -> 1
+bool0318 isfinite 9E-1000 -> 1
+bool0319 isfinite -9E-1000 -> 1
+bool0320 isfinite 9E-999 -> 1
+bool0321 isfinite -9E-999 -> 1
+bool0322 isfinite 9E-998 -> 1
+bool0323 isfinite -9E-998 -> 1
+bool0324 isfinite 9E-100 -> 1
+bool0325 isfinite -9E-100 -> 1
+bool0326 isfinite 0.000009 -> 1
+bool0327 isfinite -0.000009 -> 1
+bool0328 isfinite 0.009 -> 1
+bool0329 isfinite -0.009 -> 1
+bool0330 isfinite 0.09 -> 1
+bool0331 isfinite -0.09 -> 1
+bool0332 isfinite 0.9 -> 1
+bool0333 isfinite -0.9 -> 1
+bool0334 isfinite 9 -> 1
+bool0335 isfinite -9 -> 1
+bool0336 isfinite 9E+1 -> 1
+bool0337 isfinite -9E+1 -> 1
+bool0338 isfinite 9E+2 -> 1
+bool0339 isfinite -9E+2 -> 1
+bool0340 isfinite 9E+3 -> 1
+bool0341 isfinite -9E+3 -> 1
+bool0342 isfinite 9E+6 -> 1
+bool0343 isfinite -9E+6 -> 1
+bool0344 isfinite 9E+100 -> 1
+bool0345 isfinite -9E+100 -> 1
+bool0346 isfinite 9E+990 -> 1
+bool0347 isfinite -9E+990 -> 1
+bool0348 isfinite 9E+991 -> 1
+bool0349 isfinite -9E+991 -> 1
+bool0350 isfinite 9E+992 -> 1
+bool0351 isfinite -9E+992 -> 1
+bool0352 isfinite 9E+998 -> 1
+bool0353 isfinite -9E+998 -> 1
+bool0354 isfinite 9E+999 -> 1
+bool0355 isfinite -9E+999 -> 1
+bool0356 isfinite 9E+1000 -> 1
+bool0357 isfinite -9E+1000 -> 1
+bool0358 isfinite 9E+2000 -> 1
+bool0359 isfinite -9E+2000 -> 1
+bool0360 isfinite 9.99999999E-2000 -> 1
+bool0361 isfinite -9.99999999E-2000 -> 1
+bool0362 isfinite 9.99999999E-1008 -> 1
+bool0363 isfinite -9.99999999E-1008 -> 1
+bool0364 isfinite 9.99999999E-1007 -> 1
+bool0365 isfinite -9.99999999E-1007 -> 1
+bool0366 isfinite 9.99999999E-1006 -> 1
+bool0367 isfinite -9.99999999E-1006 -> 1
+bool0368 isfinite 9.99999999E-1000 -> 1
+bool0369 isfinite -9.99999999E-1000 -> 1
+bool0370 isfinite 9.99999999E-999 -> 1
+bool0371 isfinite -9.99999999E-999 -> 1
+bool0372 isfinite 9.99999999E-998 -> 1
+bool0373 isfinite -9.99999999E-998 -> 1
+bool0374 isfinite 9.99999999E-100 -> 1
+bool0375 isfinite -9.99999999E-100 -> 1
+bool0376 isfinite 0.00000999999999 -> 1
+bool0377 isfinite -0.00000999999999 -> 1
+bool0378 isfinite 0.00999999999 -> 1
+bool0379 isfinite -0.00999999999 -> 1
+bool0380 isfinite 0.0999999999 -> 1
+bool0381 isfinite -0.0999999999 -> 1
+bool0382 isfinite 0.999999999 -> 1
+bool0383 isfinite -0.999999999 -> 1
+bool0384 isfinite 9.99999999 -> 1
+bool0385 isfinite -9.99999999 -> 1
+bool0386 isfinite 99.9999999 -> 1
+bool0387 isfinite -99.9999999 -> 1
+bool0388 isfinite 999.999999 -> 1
+bool0389 isfinite -999.999999 -> 1
+bool0390 isfinite 9999.99999 -> 1
+bool0391 isfinite -9999.99999 -> 1
+bool0392 isfinite 9999999.99 -> 1
+bool0393 isfinite -9999999.99 -> 1
+bool0394 isfinite 9.99999999E+100 -> 1
+bool0395 isfinite -9.99999999E+100 -> 1
+bool0396 isfinite 9.99999999E+990 -> 1
+bool0397 isfinite -9.99999999E+990 -> 1
+bool0398 isfinite 9.99999999E+991 -> 1
+bool0399 isfinite -9.99999999E+991 -> 1
+bool0400 isfinite 9.99999999E+992 -> 1
+bool0401 isfinite -9.99999999E+992 -> 1
+bool0402 isfinite 9.99999999E+998 -> 1
+bool0403 isfinite -9.99999999E+998 -> 1
+bool0404 isfinite 9.99999999E+999 -> 1
+bool0405 isfinite -9.99999999E+999 -> 1
+bool0406 isfinite 9.99999999E+1000 -> 1
+bool0407 isfinite -9.99999999E+1000 -> 1
+bool0408 isfinite 9.99999999E+2000 -> 1
+bool0409 isfinite -9.99999999E+2000 -> 1
+bool0410 isfinite Infinity -> 0
+bool0411 isfinite -Infinity -> 0
+bool0412 isfinite NaN -> 0
+bool0413 isfinite -NaN -> 0
+bool0414 isfinite NaN123 -> 0
+bool0415 isfinite -NaN123 -> 0
+bool0416 isfinite sNaN -> 0
+bool0417 isfinite -sNaN -> 0
+bool0418 isfinite sNaN123 -> 0
+bool0419 isfinite -sNaN123 -> 0
+bool0420 isinfinite 0E-2000 -> 0
+bool0421 isinfinite -0E-2000 -> 0
+bool0422 isinfinite 0E-1008 -> 0
+bool0423 isinfinite -0E-1008 -> 0
+bool0424 isinfinite 0E-1007 -> 0
+bool0425 isinfinite -0E-1007 -> 0
+bool0426 isinfinite 0E-1006 -> 0
+bool0427 isinfinite -0E-1006 -> 0
+bool0428 isinfinite 0E-1000 -> 0
+bool0429 isinfinite -0E-1000 -> 0
+bool0430 isinfinite 0E-999 -> 0
+bool0431 isinfinite -0E-999 -> 0
+bool0432 isinfinite 0E-998 -> 0
+bool0433 isinfinite -0E-998 -> 0
+bool0434 isinfinite 0E-100 -> 0
+bool0435 isinfinite -0E-100 -> 0
+bool0436 isinfinite 0.000000 -> 0
+bool0437 isinfinite -0.000000 -> 0
+bool0438 isinfinite 0.000 -> 0
+bool0439 isinfinite -0.000 -> 0
+bool0440 isinfinite 0.00 -> 0
+bool0441 isinfinite -0.00 -> 0
+bool0442 isinfinite 0.0 -> 0
+bool0443 isinfinite -0.0 -> 0
+bool0444 isinfinite 0 -> 0
+bool0445 isinfinite -0 -> 0
+bool0446 isinfinite 0E+1 -> 0
+bool0447 isinfinite -0E+1 -> 0
+bool0448 isinfinite 0E+2 -> 0
+bool0449 isinfinite -0E+2 -> 0
+bool0450 isinfinite 0E+3 -> 0
+bool0451 isinfinite -0E+3 -> 0
+bool0452 isinfinite 0E+6 -> 0
+bool0453 isinfinite -0E+6 -> 0
+bool0454 isinfinite 0E+100 -> 0
+bool0455 isinfinite -0E+100 -> 0
+bool0456 isinfinite 0E+990 -> 0
+bool0457 isinfinite -0E+990 -> 0
+bool0458 isinfinite 0E+991 -> 0
+bool0459 isinfinite -0E+991 -> 0
+bool0460 isinfinite 0E+992 -> 0
+bool0461 isinfinite -0E+992 -> 0
+bool0462 isinfinite 0E+998 -> 0
+bool0463 isinfinite -0E+998 -> 0
+bool0464 isinfinite 0E+999 -> 0
+bool0465 isinfinite -0E+999 -> 0
+bool0466 isinfinite 0E+1000 -> 0
+bool0467 isinfinite -0E+1000 -> 0
+bool0468 isinfinite 0E+2000 -> 0
+bool0469 isinfinite -0E+2000 -> 0
+bool0470 isinfinite 1E-2000 -> 0
+bool0471 isinfinite -1E-2000 -> 0
+bool0472 isinfinite 1E-1008 -> 0
+bool0473 isinfinite -1E-1008 -> 0
+bool0474 isinfinite 1E-1007 -> 0
+bool0475 isinfinite -1E-1007 -> 0
+bool0476 isinfinite 1E-1006 -> 0
+bool0477 isinfinite -1E-1006 -> 0
+bool0478 isinfinite 1E-1000 -> 0
+bool0479 isinfinite -1E-1000 -> 0
+bool0480 isinfinite 1E-999 -> 0
+bool0481 isinfinite -1E-999 -> 0
+bool0482 isinfinite 1E-998 -> 0
+bool0483 isinfinite -1E-998 -> 0
+bool0484 isinfinite 1E-100 -> 0
+bool0485 isinfinite -1E-100 -> 0
+bool0486 isinfinite 0.000001 -> 0
+bool0487 isinfinite -0.000001 -> 0
+bool0488 isinfinite 0.001 -> 0
+bool0489 isinfinite -0.001 -> 0
+bool0490 isinfinite 0.01 -> 0
+bool0491 isinfinite -0.01 -> 0
+bool0492 isinfinite 0.1 -> 0
+bool0493 isinfinite -0.1 -> 0
+bool0494 isinfinite 1 -> 0
+bool0495 isinfinite -1 -> 0
+bool0496 isinfinite 1E+1 -> 0
+bool0497 isinfinite -1E+1 -> 0
+bool0498 isinfinite 1E+2 -> 0
+bool0499 isinfinite -1E+2 -> 0
+bool0500 isinfinite 1E+3 -> 0
+bool0501 isinfinite -1E+3 -> 0
+bool0502 isinfinite 1E+6 -> 0
+bool0503 isinfinite -1E+6 -> 0
+bool0504 isinfinite 1E+100 -> 0
+bool0505 isinfinite -1E+100 -> 0
+bool0506 isinfinite 1E+990 -> 0
+bool0507 isinfinite -1E+990 -> 0
+bool0508 isinfinite 1E+991 -> 0
+bool0509 isinfinite -1E+991 -> 0
+bool0510 isinfinite 1E+992 -> 0
+bool0511 isinfinite -1E+992 -> 0
+bool0512 isinfinite 1E+998 -> 0
+bool0513 isinfinite -1E+998 -> 0
+bool0514 isinfinite 1E+999 -> 0
+bool0515 isinfinite -1E+999 -> 0
+bool0516 isinfinite 1E+1000 -> 0
+bool0517 isinfinite -1E+1000 -> 0
+bool0518 isinfinite 1E+2000 -> 0
+bool0519 isinfinite -1E+2000 -> 0
+bool0520 isinfinite 9E-2000 -> 0
+bool0521 isinfinite -9E-2000 -> 0
+bool0522 isinfinite 9E-1008 -> 0
+bool0523 isinfinite -9E-1008 -> 0
+bool0524 isinfinite 9E-1007 -> 0
+bool0525 isinfinite -9E-1007 -> 0
+bool0526 isinfinite 9E-1006 -> 0
+bool0527 isinfinite -9E-1006 -> 0
+bool0528 isinfinite 9E-1000 -> 0
+bool0529 isinfinite -9E-1000 -> 0
+bool0530 isinfinite 9E-999 -> 0
+bool0531 isinfinite -9E-999 -> 0
+bool0532 isinfinite 9E-998 -> 0
+bool0533 isinfinite -9E-998 -> 0
+bool0534 isinfinite 9E-100 -> 0
+bool0535 isinfinite -9E-100 -> 0
+bool0536 isinfinite 0.000009 -> 0
+bool0537 isinfinite -0.000009 -> 0
+bool0538 isinfinite 0.009 -> 0
+bool0539 isinfinite -0.009 -> 0
+bool0540 isinfinite 0.09 -> 0
+bool0541 isinfinite -0.09 -> 0
+bool0542 isinfinite 0.9 -> 0
+bool0543 isinfinite -0.9 -> 0
+bool0544 isinfinite 9 -> 0
+bool0545 isinfinite -9 -> 0
+bool0546 isinfinite 9E+1 -> 0
+bool0547 isinfinite -9E+1 -> 0
+bool0548 isinfinite 9E+2 -> 0
+bool0549 isinfinite -9E+2 -> 0
+bool0550 isinfinite 9E+3 -> 0
+bool0551 isinfinite -9E+3 -> 0
+bool0552 isinfinite 9E+6 -> 0
+bool0553 isinfinite -9E+6 -> 0
+bool0554 isinfinite 9E+100 -> 0
+bool0555 isinfinite -9E+100 -> 0
+bool0556 isinfinite 9E+990 -> 0
+bool0557 isinfinite -9E+990 -> 0
+bool0558 isinfinite 9E+991 -> 0
+bool0559 isinfinite -9E+991 -> 0
+bool0560 isinfinite 9E+992 -> 0
+bool0561 isinfinite -9E+992 -> 0
+bool0562 isinfinite 9E+998 -> 0
+bool0563 isinfinite -9E+998 -> 0
+bool0564 isinfinite 9E+999 -> 0
+bool0565 isinfinite -9E+999 -> 0
+bool0566 isinfinite 9E+1000 -> 0
+bool0567 isinfinite -9E+1000 -> 0
+bool0568 isinfinite 9E+2000 -> 0
+bool0569 isinfinite -9E+2000 -> 0
+bool0570 isinfinite 9.99999999E-2000 -> 0
+bool0571 isinfinite -9.99999999E-2000 -> 0
+bool0572 isinfinite 9.99999999E-1008 -> 0
+bool0573 isinfinite -9.99999999E-1008 -> 0
+bool0574 isinfinite 9.99999999E-1007 -> 0
+bool0575 isinfinite -9.99999999E-1007 -> 0
+bool0576 isinfinite 9.99999999E-1006 -> 0
+bool0577 isinfinite -9.99999999E-1006 -> 0
+bool0578 isinfinite 9.99999999E-1000 -> 0
+bool0579 isinfinite -9.99999999E-1000 -> 0
+bool0580 isinfinite 9.99999999E-999 -> 0
+bool0581 isinfinite -9.99999999E-999 -> 0
+bool0582 isinfinite 9.99999999E-998 -> 0
+bool0583 isinfinite -9.99999999E-998 -> 0
+bool0584 isinfinite 9.99999999E-100 -> 0
+bool0585 isinfinite -9.99999999E-100 -> 0
+bool0586 isinfinite 0.00000999999999 -> 0
+bool0587 isinfinite -0.00000999999999 -> 0
+bool0588 isinfinite 0.00999999999 -> 0
+bool0589 isinfinite -0.00999999999 -> 0
+bool0590 isinfinite 0.0999999999 -> 0
+bool0591 isinfinite -0.0999999999 -> 0
+bool0592 isinfinite 0.999999999 -> 0
+bool0593 isinfinite -0.999999999 -> 0
+bool0594 isinfinite 9.99999999 -> 0
+bool0595 isinfinite -9.99999999 -> 0
+bool0596 isinfinite 99.9999999 -> 0
+bool0597 isinfinite -99.9999999 -> 0
+bool0598 isinfinite 999.999999 -> 0
+bool0599 isinfinite -999.999999 -> 0
+bool0600 isinfinite 9999.99999 -> 0
+bool0601 isinfinite -9999.99999 -> 0
+bool0602 isinfinite 9999999.99 -> 0
+bool0603 isinfinite -9999999.99 -> 0
+bool0604 isinfinite 9.99999999E+100 -> 0
+bool0605 isinfinite -9.99999999E+100 -> 0
+bool0606 isinfinite 9.99999999E+990 -> 0
+bool0607 isinfinite -9.99999999E+990 -> 0
+bool0608 isinfinite 9.99999999E+991 -> 0
+bool0609 isinfinite -9.99999999E+991 -> 0
+bool0610 isinfinite 9.99999999E+992 -> 0
+bool0611 isinfinite -9.99999999E+992 -> 0
+bool0612 isinfinite 9.99999999E+998 -> 0
+bool0613 isinfinite -9.99999999E+998 -> 0
+bool0614 isinfinite 9.99999999E+999 -> 0
+bool0615 isinfinite -9.99999999E+999 -> 0
+bool0616 isinfinite 9.99999999E+1000 -> 0
+bool0617 isinfinite -9.99999999E+1000 -> 0
+bool0618 isinfinite 9.99999999E+2000 -> 0
+bool0619 isinfinite -9.99999999E+2000 -> 0
+bool0620 isinfinite Infinity -> 1
+bool0621 isinfinite -Infinity -> 1
+bool0622 isinfinite NaN -> 0
+bool0623 isinfinite -NaN -> 0
+bool0624 isinfinite NaN123 -> 0
+bool0625 isinfinite -NaN123 -> 0
+bool0626 isinfinite sNaN -> 0
+bool0627 isinfinite -sNaN -> 0
+bool0628 isinfinite sNaN123 -> 0
+bool0629 isinfinite -sNaN123 -> 0
+bool0630 isnan 0E-2000 -> 0
+bool0631 isnan -0E-2000 -> 0
+bool0632 isnan 0E-1008 -> 0
+bool0633 isnan -0E-1008 -> 0
+bool0634 isnan 0E-1007 -> 0
+bool0635 isnan -0E-1007 -> 0
+bool0636 isnan 0E-1006 -> 0
+bool0637 isnan -0E-1006 -> 0
+bool0638 isnan 0E-1000 -> 0
+bool0639 isnan -0E-1000 -> 0
+bool0640 isnan 0E-999 -> 0
+bool0641 isnan -0E-999 -> 0
+bool0642 isnan 0E-998 -> 0
+bool0643 isnan -0E-998 -> 0
+bool0644 isnan 0E-100 -> 0
+bool0645 isnan -0E-100 -> 0
+bool0646 isnan 0.000000 -> 0
+bool0647 isnan -0.000000 -> 0
+bool0648 isnan 0.000 -> 0
+bool0649 isnan -0.000 -> 0
+bool0650 isnan 0.00 -> 0
+bool0651 isnan -0.00 -> 0
+bool0652 isnan 0.0 -> 0
+bool0653 isnan -0.0 -> 0
+bool0654 isnan 0 -> 0
+bool0655 isnan -0 -> 0
+bool0656 isnan 0E+1 -> 0
+bool0657 isnan -0E+1 -> 0
+bool0658 isnan 0E+2 -> 0
+bool0659 isnan -0E+2 -> 0
+bool0660 isnan 0E+3 -> 0
+bool0661 isnan -0E+3 -> 0
+bool0662 isnan 0E+6 -> 0
+bool0663 isnan -0E+6 -> 0
+bool0664 isnan 0E+100 -> 0
+bool0665 isnan -0E+100 -> 0
+bool0666 isnan 0E+990 -> 0
+bool0667 isnan -0E+990 -> 0
+bool0668 isnan 0E+991 -> 0
+bool0669 isnan -0E+991 -> 0
+bool0670 isnan 0E+992 -> 0
+bool0671 isnan -0E+992 -> 0
+bool0672 isnan 0E+998 -> 0
+bool0673 isnan -0E+998 -> 0
+bool0674 isnan 0E+999 -> 0
+bool0675 isnan -0E+999 -> 0
+bool0676 isnan 0E+1000 -> 0
+bool0677 isnan -0E+1000 -> 0
+bool0678 isnan 0E+2000 -> 0
+bool0679 isnan -0E+2000 -> 0
+bool0680 isnan 1E-2000 -> 0
+bool0681 isnan -1E-2000 -> 0
+bool0682 isnan 1E-1008 -> 0
+bool0683 isnan -1E-1008 -> 0
+bool0684 isnan 1E-1007 -> 0
+bool0685 isnan -1E-1007 -> 0
+bool0686 isnan 1E-1006 -> 0
+bool0687 isnan -1E-1006 -> 0
+bool0688 isnan 1E-1000 -> 0
+bool0689 isnan -1E-1000 -> 0
+bool0690 isnan 1E-999 -> 0
+bool0691 isnan -1E-999 -> 0
+bool0692 isnan 1E-998 -> 0
+bool0693 isnan -1E-998 -> 0
+bool0694 isnan 1E-100 -> 0
+bool0695 isnan -1E-100 -> 0
+bool0696 isnan 0.000001 -> 0
+bool0697 isnan -0.000001 -> 0
+bool0698 isnan 0.001 -> 0
+bool0699 isnan -0.001 -> 0
+bool0700 isnan 0.01 -> 0
+bool0701 isnan -0.01 -> 0
+bool0702 isnan 0.1 -> 0
+bool0703 isnan -0.1 -> 0
+bool0704 isnan 1 -> 0
+bool0705 isnan -1 -> 0
+bool0706 isnan 1E+1 -> 0
+bool0707 isnan -1E+1 -> 0
+bool0708 isnan 1E+2 -> 0
+bool0709 isnan -1E+2 -> 0
+bool0710 isnan 1E+3 -> 0
+bool0711 isnan -1E+3 -> 0
+bool0712 isnan 1E+6 -> 0
+bool0713 isnan -1E+6 -> 0
+bool0714 isnan 1E+100 -> 0
+bool0715 isnan -1E+100 -> 0
+bool0716 isnan 1E+990 -> 0
+bool0717 isnan -1E+990 -> 0
+bool0718 isnan 1E+991 -> 0
+bool0719 isnan -1E+991 -> 0
+bool0720 isnan 1E+992 -> 0
+bool0721 isnan -1E+992 -> 0
+bool0722 isnan 1E+998 -> 0
+bool0723 isnan -1E+998 -> 0
+bool0724 isnan 1E+999 -> 0
+bool0725 isnan -1E+999 -> 0
+bool0726 isnan 1E+1000 -> 0
+bool0727 isnan -1E+1000 -> 0
+bool0728 isnan 1E+2000 -> 0
+bool0729 isnan -1E+2000 -> 0
+bool0730 isnan 9E-2000 -> 0
+bool0731 isnan -9E-2000 -> 0
+bool0732 isnan 9E-1008 -> 0
+bool0733 isnan -9E-1008 -> 0
+bool0734 isnan 9E-1007 -> 0
+bool0735 isnan -9E-1007 -> 0
+bool0736 isnan 9E-1006 -> 0
+bool0737 isnan -9E-1006 -> 0
+bool0738 isnan 9E-1000 -> 0
+bool0739 isnan -9E-1000 -> 0
+bool0740 isnan 9E-999 -> 0
+bool0741 isnan -9E-999 -> 0
+bool0742 isnan 9E-998 -> 0
+bool0743 isnan -9E-998 -> 0
+bool0744 isnan 9E-100 -> 0
+bool0745 isnan -9E-100 -> 0
+bool0746 isnan 0.000009 -> 0
+bool0747 isnan -0.000009 -> 0
+bool0748 isnan 0.009 -> 0
+bool0749 isnan -0.009 -> 0
+bool0750 isnan 0.09 -> 0
+bool0751 isnan -0.09 -> 0
+bool0752 isnan 0.9 -> 0
+bool0753 isnan -0.9 -> 0
+bool0754 isnan 9 -> 0
+bool0755 isnan -9 -> 0
+bool0756 isnan 9E+1 -> 0
+bool0757 isnan -9E+1 -> 0
+bool0758 isnan 9E+2 -> 0
+bool0759 isnan -9E+2 -> 0
+bool0760 isnan 9E+3 -> 0
+bool0761 isnan -9E+3 -> 0
+bool0762 isnan 9E+6 -> 0
+bool0763 isnan -9E+6 -> 0
+bool0764 isnan 9E+100 -> 0
+bool0765 isnan -9E+100 -> 0
+bool0766 isnan 9E+990 -> 0
+bool0767 isnan -9E+990 -> 0
+bool0768 isnan 9E+991 -> 0
+bool0769 isnan -9E+991 -> 0
+bool0770 isnan 9E+992 -> 0
+bool0771 isnan -9E+992 -> 0
+bool0772 isnan 9E+998 -> 0
+bool0773 isnan -9E+998 -> 0
+bool0774 isnan 9E+999 -> 0
+bool0775 isnan -9E+999 -> 0
+bool0776 isnan 9E+1000 -> 0
+bool0777 isnan -9E+1000 -> 0
+bool0778 isnan 9E+2000 -> 0
+bool0779 isnan -9E+2000 -> 0
+bool0780 isnan 9.99999999E-2000 -> 0
+bool0781 isnan -9.99999999E-2000 -> 0
+bool0782 isnan 9.99999999E-1008 -> 0
+bool0783 isnan -9.99999999E-1008 -> 0
+bool0784 isnan 9.99999999E-1007 -> 0
+bool0785 isnan -9.99999999E-1007 -> 0
+bool0786 isnan 9.99999999E-1006 -> 0
+bool0787 isnan -9.99999999E-1006 -> 0
+bool0788 isnan 9.99999999E-1000 -> 0
+bool0789 isnan -9.99999999E-1000 -> 0
+bool0790 isnan 9.99999999E-999 -> 0
+bool0791 isnan -9.99999999E-999 -> 0
+bool0792 isnan 9.99999999E-998 -> 0
+bool0793 isnan -9.99999999E-998 -> 0
+bool0794 isnan 9.99999999E-100 -> 0
+bool0795 isnan -9.99999999E-100 -> 0
+bool0796 isnan 0.00000999999999 -> 0
+bool0797 isnan -0.00000999999999 -> 0
+bool0798 isnan 0.00999999999 -> 0
+bool0799 isnan -0.00999999999 -> 0
+bool0800 isnan 0.0999999999 -> 0
+bool0801 isnan -0.0999999999 -> 0
+bool0802 isnan 0.999999999 -> 0
+bool0803 isnan -0.999999999 -> 0
+bool0804 isnan 9.99999999 -> 0
+bool0805 isnan -9.99999999 -> 0
+bool0806 isnan 99.9999999 -> 0
+bool0807 isnan -99.9999999 -> 0
+bool0808 isnan 999.999999 -> 0
+bool0809 isnan -999.999999 -> 0
+bool0810 isnan 9999.99999 -> 0
+bool0811 isnan -9999.99999 -> 0
+bool0812 isnan 9999999.99 -> 0
+bool0813 isnan -9999999.99 -> 0
+bool0814 isnan 9.99999999E+100 -> 0
+bool0815 isnan -9.99999999E+100 -> 0
+bool0816 isnan 9.99999999E+990 -> 0
+bool0817 isnan -9.99999999E+990 -> 0
+bool0818 isnan 9.99999999E+991 -> 0
+bool0819 isnan -9.99999999E+991 -> 0
+bool0820 isnan 9.99999999E+992 -> 0
+bool0821 isnan -9.99999999E+992 -> 0
+bool0822 isnan 9.99999999E+998 -> 0
+bool0823 isnan -9.99999999E+998 -> 0
+bool0824 isnan 9.99999999E+999 -> 0
+bool0825 isnan -9.99999999E+999 -> 0
+bool0826 isnan 9.99999999E+1000 -> 0
+bool0827 isnan -9.99999999E+1000 -> 0
+bool0828 isnan 9.99999999E+2000 -> 0
+bool0829 isnan -9.99999999E+2000 -> 0
+bool0830 isnan Infinity -> 0
+bool0831 isnan -Infinity -> 0
+bool0832 isnan NaN -> 1
+bool0833 isnan -NaN -> 1
+bool0834 isnan NaN123 -> 1
+bool0835 isnan -NaN123 -> 1
+bool0836 isnan sNaN -> 1
+bool0837 isnan -sNaN -> 1
+bool0838 isnan sNaN123 -> 1
+bool0839 isnan -sNaN123 -> 1
+bool0840 isnormal 0E-2000 -> 0
+bool0841 isnormal -0E-2000 -> 0
+bool0842 isnormal 0E-1008 -> 0
+bool0843 isnormal -0E-1008 -> 0
+bool0844 isnormal 0E-1007 -> 0
+bool0845 isnormal -0E-1007 -> 0
+bool0846 isnormal 0E-1006 -> 0
+bool0847 isnormal -0E-1006 -> 0
+bool0848 isnormal 0E-1000 -> 0
+bool0849 isnormal -0E-1000 -> 0
+bool0850 isnormal 0E-999 -> 0
+bool0851 isnormal -0E-999 -> 0
+bool0852 isnormal 0E-998 -> 0
+bool0853 isnormal -0E-998 -> 0
+bool0854 isnormal 0E-100 -> 0
+bool0855 isnormal -0E-100 -> 0
+bool0856 isnormal 0.000000 -> 0
+bool0857 isnormal -0.000000 -> 0
+bool0858 isnormal 0.000 -> 0
+bool0859 isnormal -0.000 -> 0
+bool0860 isnormal 0.00 -> 0
+bool0861 isnormal -0.00 -> 0
+bool0862 isnormal 0.0 -> 0
+bool0863 isnormal -0.0 -> 0
+bool0864 isnormal 0 -> 0
+bool0865 isnormal -0 -> 0
+bool0866 isnormal 0E+1 -> 0
+bool0867 isnormal -0E+1 -> 0
+bool0868 isnormal 0E+2 -> 0
+bool0869 isnormal -0E+2 -> 0
+bool0870 isnormal 0E+3 -> 0
+bool0871 isnormal -0E+3 -> 0
+bool0872 isnormal 0E+6 -> 0
+bool0873 isnormal -0E+6 -> 0
+bool0874 isnormal 0E+100 -> 0
+bool0875 isnormal -0E+100 -> 0
+bool0876 isnormal 0E+990 -> 0
+bool0877 isnormal -0E+990 -> 0
+bool0878 isnormal 0E+991 -> 0
+bool0879 isnormal -0E+991 -> 0
+bool0880 isnormal 0E+992 -> 0
+bool0881 isnormal -0E+992 -> 0
+bool0882 isnormal 0E+998 -> 0
+bool0883 isnormal -0E+998 -> 0
+bool0884 isnormal 0E+999 -> 0
+bool0885 isnormal -0E+999 -> 0
+bool0886 isnormal 0E+1000 -> 0
+bool0887 isnormal -0E+1000 -> 0
+bool0888 isnormal 0E+2000 -> 0
+bool0889 isnormal -0E+2000 -> 0
+bool0890 isnormal 1E-2000 -> 0
+bool0891 isnormal -1E-2000 -> 0
+bool0892 isnormal 1E-1008 -> 0
+bool0893 isnormal -1E-1008 -> 0
+bool0894 isnormal 1E-1007 -> 0
+bool0895 isnormal -1E-1007 -> 0
+bool0896 isnormal 1E-1006 -> 0
+bool0897 isnormal -1E-1006 -> 0
+bool0898 isnormal 1E-1000 -> 0
+bool0899 isnormal -1E-1000 -> 0
+bool0900 isnormal 1E-999 -> 1
+bool0901 isnormal -1E-999 -> 1
+bool0902 isnormal 1E-998 -> 1
+bool0903 isnormal -1E-998 -> 1
+bool0904 isnormal 1E-100 -> 1
+bool0905 isnormal -1E-100 -> 1
+bool0906 isnormal 0.000001 -> 1
+bool0907 isnormal -0.000001 -> 1
+bool0908 isnormal 0.001 -> 1
+bool0909 isnormal -0.001 -> 1
+bool0910 isnormal 0.01 -> 1
+bool0911 isnormal -0.01 -> 1
+bool0912 isnormal 0.1 -> 1
+bool0913 isnormal -0.1 -> 1
+bool0914 isnormal 1 -> 1
+bool0915 isnormal -1 -> 1
+bool0916 isnormal 1E+1 -> 1
+bool0917 isnormal -1E+1 -> 1
+bool0918 isnormal 1E+2 -> 1
+bool0919 isnormal -1E+2 -> 1
+bool0920 isnormal 1E+3 -> 1
+bool0921 isnormal -1E+3 -> 1
+bool0922 isnormal 1E+6 -> 1
+bool0923 isnormal -1E+6 -> 1
+bool0924 isnormal 1E+100 -> 1
+bool0925 isnormal -1E+100 -> 1
+bool0926 isnormal 1E+990 -> 1
+bool0927 isnormal -1E+990 -> 1
+bool0928 isnormal 1E+991 -> 1
+bool0929 isnormal -1E+991 -> 1
+bool0930 isnormal 1E+992 -> 1
+bool0931 isnormal -1E+992 -> 1
+bool0932 isnormal 1E+998 -> 1
+bool0933 isnormal -1E+998 -> 1
+bool0934 isnormal 1E+999 -> 1
+bool0935 isnormal -1E+999 -> 1
+bool0936 isnormal 1E+1000 -> 0
+bool0937 isnormal -1E+1000 -> 0
+bool0938 isnormal 1E+2000 -> 0
+bool0939 isnormal -1E+2000 -> 0
+bool0940 isnormal 9E-2000 -> 0
+bool0941 isnormal -9E-2000 -> 0
+bool0942 isnormal 9E-1008 -> 0
+bool0943 isnormal -9E-1008 -> 0
+bool0944 isnormal 9E-1007 -> 0
+bool0945 isnormal -9E-1007 -> 0
+bool0946 isnormal 9E-1006 -> 0
+bool0947 isnormal -9E-1006 -> 0
+bool0948 isnormal 9E-1000 -> 0
+bool0949 isnormal -9E-1000 -> 0
+bool0950 isnormal 9E-999 -> 1
+bool0951 isnormal -9E-999 -> 1
+bool0952 isnormal 9E-998 -> 1
+bool0953 isnormal -9E-998 -> 1
+bool0954 isnormal 9E-100 -> 1
+bool0955 isnormal -9E-100 -> 1
+bool0956 isnormal 0.000009 -> 1
+bool0957 isnormal -0.000009 -> 1
+bool0958 isnormal 0.009 -> 1
+bool0959 isnormal -0.009 -> 1
+bool0960 isnormal 0.09 -> 1
+bool0961 isnormal -0.09 -> 1
+bool0962 isnormal 0.9 -> 1
+bool0963 isnormal -0.9 -> 1
+bool0964 isnormal 9 -> 1
+bool0965 isnormal -9 -> 1
+bool0966 isnormal 9E+1 -> 1
+bool0967 isnormal -9E+1 -> 1
+bool0968 isnormal 9E+2 -> 1
+bool0969 isnormal -9E+2 -> 1
+bool0970 isnormal 9E+3 -> 1
+bool0971 isnormal -9E+3 -> 1
+bool0972 isnormal 9E+6 -> 1
+bool0973 isnormal -9E+6 -> 1
+bool0974 isnormal 9E+100 -> 1
+bool0975 isnormal -9E+100 -> 1
+bool0976 isnormal 9E+990 -> 1
+bool0977 isnormal -9E+990 -> 1
+bool0978 isnormal 9E+991 -> 1
+bool0979 isnormal -9E+991 -> 1
+bool0980 isnormal 9E+992 -> 1
+bool0981 isnormal -9E+992 -> 1
+bool0982 isnormal 9E+998 -> 1
+bool0983 isnormal -9E+998 -> 1
+bool0984 isnormal 9E+999 -> 1
+bool0985 isnormal -9E+999 -> 1
+bool0986 isnormal 9E+1000 -> 0
+bool0987 isnormal -9E+1000 -> 0
+bool0988 isnormal 9E+2000 -> 0
+bool0989 isnormal -9E+2000 -> 0
+bool0990 isnormal 9.99999999E-2000 -> 0
+bool0991 isnormal -9.99999999E-2000 -> 0
+bool0992 isnormal 9.99999999E-1008 -> 0
+bool0993 isnormal -9.99999999E-1008 -> 0
+bool0994 isnormal 9.99999999E-1007 -> 0
+bool0995 isnormal -9.99999999E-1007 -> 0
+bool0996 isnormal 9.99999999E-1006 -> 0
+bool0997 isnormal -9.99999999E-1006 -> 0
+bool0998 isnormal 9.99999999E-1000 -> 0
+bool0999 isnormal -9.99999999E-1000 -> 0
+bool1000 isnormal 9.99999999E-999 -> 1
+bool1001 isnormal -9.99999999E-999 -> 1
+bool1002 isnormal 9.99999999E-998 -> 1
+bool1003 isnormal -9.99999999E-998 -> 1
+bool1004 isnormal 9.99999999E-100 -> 1
+bool1005 isnormal -9.99999999E-100 -> 1
+bool1006 isnormal 0.00000999999999 -> 1
+bool1007 isnormal -0.00000999999999 -> 1
+bool1008 isnormal 0.00999999999 -> 1
+bool1009 isnormal -0.00999999999 -> 1
+bool1010 isnormal 0.0999999999 -> 1
+bool1011 isnormal -0.0999999999 -> 1
+bool1012 isnormal 0.999999999 -> 1
+bool1013 isnormal -0.999999999 -> 1
+bool1014 isnormal 9.99999999 -> 1
+bool1015 isnormal -9.99999999 -> 1
+bool1016 isnormal 99.9999999 -> 1
+bool1017 isnormal -99.9999999 -> 1
+bool1018 isnormal 999.999999 -> 1
+bool1019 isnormal -999.999999 -> 1
+bool1020 isnormal 9999.99999 -> 1
+bool1021 isnormal -9999.99999 -> 1
+bool1022 isnormal 9999999.99 -> 1
+bool1023 isnormal -9999999.99 -> 1
+bool1024 isnormal 9.99999999E+100 -> 1
+bool1025 isnormal -9.99999999E+100 -> 1
+bool1026 isnormal 9.99999999E+990 -> 1
+bool1027 isnormal -9.99999999E+990 -> 1
+bool1028 isnormal 9.99999999E+991 -> 1
+bool1029 isnormal -9.99999999E+991 -> 1
+bool1030 isnormal 9.99999999E+992 -> 1
+bool1031 isnormal -9.99999999E+992 -> 1
+bool1032 isnormal 9.99999999E+998 -> 1
+bool1033 isnormal -9.99999999E+998 -> 1
+bool1034 isnormal 9.99999999E+999 -> 1
+bool1035 isnormal -9.99999999E+999 -> 1
+bool1036 isnormal 9.99999999E+1000 -> 0
+bool1037 isnormal -9.99999999E+1000 -> 0
+bool1038 isnormal 9.99999999E+2000 -> 0
+bool1039 isnormal -9.99999999E+2000 -> 0
+bool1040 isnormal Infinity -> 0
+bool1041 isnormal -Infinity -> 0
+bool1042 isnormal NaN -> 0
+bool1043 isnormal -NaN -> 0
+bool1044 isnormal NaN123 -> 0
+bool1045 isnormal -NaN123 -> 0
+bool1046 isnormal sNaN -> 0
+bool1047 isnormal -sNaN -> 0
+bool1048 isnormal sNaN123 -> 0
+bool1049 isnormal -sNaN123 -> 0
+bool1050 isqnan 0E-2000 -> 0
+bool1051 isqnan -0E-2000 -> 0
+bool1052 isqnan 0E-1008 -> 0
+bool1053 isqnan -0E-1008 -> 0
+bool1054 isqnan 0E-1007 -> 0
+bool1055 isqnan -0E-1007 -> 0
+bool1056 isqnan 0E-1006 -> 0
+bool1057 isqnan -0E-1006 -> 0
+bool1058 isqnan 0E-1000 -> 0
+bool1059 isqnan -0E-1000 -> 0
+bool1060 isqnan 0E-999 -> 0
+bool1061 isqnan -0E-999 -> 0
+bool1062 isqnan 0E-998 -> 0
+bool1063 isqnan -0E-998 -> 0
+bool1064 isqnan 0E-100 -> 0
+bool1065 isqnan -0E-100 -> 0
+bool1066 isqnan 0.000000 -> 0
+bool1067 isqnan -0.000000 -> 0
+bool1068 isqnan 0.000 -> 0
+bool1069 isqnan -0.000 -> 0
+bool1070 isqnan 0.00 -> 0
+bool1071 isqnan -0.00 -> 0
+bool1072 isqnan 0.0 -> 0
+bool1073 isqnan -0.0 -> 0
+bool1074 isqnan 0 -> 0
+bool1075 isqnan -0 -> 0
+bool1076 isqnan 0E+1 -> 0
+bool1077 isqnan -0E+1 -> 0
+bool1078 isqnan 0E+2 -> 0
+bool1079 isqnan -0E+2 -> 0
+bool1080 isqnan 0E+3 -> 0
+bool1081 isqnan -0E+3 -> 0
+bool1082 isqnan 0E+6 -> 0
+bool1083 isqnan -0E+6 -> 0
+bool1084 isqnan 0E+100 -> 0
+bool1085 isqnan -0E+100 -> 0
+bool1086 isqnan 0E+990 -> 0
+bool1087 isqnan -0E+990 -> 0
+bool1088 isqnan 0E+991 -> 0
+bool1089 isqnan -0E+991 -> 0
+bool1090 isqnan 0E+992 -> 0
+bool1091 isqnan -0E+992 -> 0
+bool1092 isqnan 0E+998 -> 0
+bool1093 isqnan -0E+998 -> 0
+bool1094 isqnan 0E+999 -> 0
+bool1095 isqnan -0E+999 -> 0
+bool1096 isqnan 0E+1000 -> 0
+bool1097 isqnan -0E+1000 -> 0
+bool1098 isqnan 0E+2000 -> 0
+bool1099 isqnan -0E+2000 -> 0
+bool1100 isqnan 1E-2000 -> 0
+bool1101 isqnan -1E-2000 -> 0
+bool1102 isqnan 1E-1008 -> 0
+bool1103 isqnan -1E-1008 -> 0
+bool1104 isqnan 1E-1007 -> 0
+bool1105 isqnan -1E-1007 -> 0
+bool1106 isqnan 1E-1006 -> 0
+bool1107 isqnan -1E-1006 -> 0
+bool1108 isqnan 1E-1000 -> 0
+bool1109 isqnan -1E-1000 -> 0
+bool1110 isqnan 1E-999 -> 0
+bool1111 isqnan -1E-999 -> 0
+bool1112 isqnan 1E-998 -> 0
+bool1113 isqnan -1E-998 -> 0
+bool1114 isqnan 1E-100 -> 0
+bool1115 isqnan -1E-100 -> 0
+bool1116 isqnan 0.000001 -> 0
+bool1117 isqnan -0.000001 -> 0
+bool1118 isqnan 0.001 -> 0
+bool1119 isqnan -0.001 -> 0
+bool1120 isqnan 0.01 -> 0
+bool1121 isqnan -0.01 -> 0
+bool1122 isqnan 0.1 -> 0
+bool1123 isqnan -0.1 -> 0
+bool1124 isqnan 1 -> 0
+bool1125 isqnan -1 -> 0
+bool1126 isqnan 1E+1 -> 0
+bool1127 isqnan -1E+1 -> 0
+bool1128 isqnan 1E+2 -> 0
+bool1129 isqnan -1E+2 -> 0
+bool1130 isqnan 1E+3 -> 0
+bool1131 isqnan -1E+3 -> 0
+bool1132 isqnan 1E+6 -> 0
+bool1133 isqnan -1E+6 -> 0
+bool1134 isqnan 1E+100 -> 0
+bool1135 isqnan -1E+100 -> 0
+bool1136 isqnan 1E+990 -> 0
+bool1137 isqnan -1E+990 -> 0
+bool1138 isqnan 1E+991 -> 0
+bool1139 isqnan -1E+991 -> 0
+bool1140 isqnan 1E+992 -> 0
+bool1141 isqnan -1E+992 -> 0
+bool1142 isqnan 1E+998 -> 0
+bool1143 isqnan -1E+998 -> 0
+bool1144 isqnan 1E+999 -> 0
+bool1145 isqnan -1E+999 -> 0
+bool1146 isqnan 1E+1000 -> 0
+bool1147 isqnan -1E+1000 -> 0
+bool1148 isqnan 1E+2000 -> 0
+bool1149 isqnan -1E+2000 -> 0
+bool1150 isqnan 9E-2000 -> 0
+bool1151 isqnan -9E-2000 -> 0
+bool1152 isqnan 9E-1008 -> 0
+bool1153 isqnan -9E-1008 -> 0
+bool1154 isqnan 9E-1007 -> 0
+bool1155 isqnan -9E-1007 -> 0
+bool1156 isqnan 9E-1006 -> 0
+bool1157 isqnan -9E-1006 -> 0
+bool1158 isqnan 9E-1000 -> 0
+bool1159 isqnan -9E-1000 -> 0
+bool1160 isqnan 9E-999 -> 0
+bool1161 isqnan -9E-999 -> 0
+bool1162 isqnan 9E-998 -> 0
+bool1163 isqnan -9E-998 -> 0
+bool1164 isqnan 9E-100 -> 0
+bool1165 isqnan -9E-100 -> 0
+bool1166 isqnan 0.000009 -> 0
+bool1167 isqnan -0.000009 -> 0
+bool1168 isqnan 0.009 -> 0
+bool1169 isqnan -0.009 -> 0
+bool1170 isqnan 0.09 -> 0
+bool1171 isqnan -0.09 -> 0
+bool1172 isqnan 0.9 -> 0
+bool1173 isqnan -0.9 -> 0
+bool1174 isqnan 9 -> 0
+bool1175 isqnan -9 -> 0
+bool1176 isqnan 9E+1 -> 0
+bool1177 isqnan -9E+1 -> 0
+bool1178 isqnan 9E+2 -> 0
+bool1179 isqnan -9E+2 -> 0
+bool1180 isqnan 9E+3 -> 0
+bool1181 isqnan -9E+3 -> 0
+bool1182 isqnan 9E+6 -> 0
+bool1183 isqnan -9E+6 -> 0
+bool1184 isqnan 9E+100 -> 0
+bool1185 isqnan -9E+100 -> 0
+bool1186 isqnan 9E+990 -> 0
+bool1187 isqnan -9E+990 -> 0
+bool1188 isqnan 9E+991 -> 0
+bool1189 isqnan -9E+991 -> 0
+bool1190 isqnan 9E+992 -> 0
+bool1191 isqnan -9E+992 -> 0
+bool1192 isqnan 9E+998 -> 0
+bool1193 isqnan -9E+998 -> 0
+bool1194 isqnan 9E+999 -> 0
+bool1195 isqnan -9E+999 -> 0
+bool1196 isqnan 9E+1000 -> 0
+bool1197 isqnan -9E+1000 -> 0
+bool1198 isqnan 9E+2000 -> 0
+bool1199 isqnan -9E+2000 -> 0
+bool1200 isqnan 9.99999999E-2000 -> 0
+bool1201 isqnan -9.99999999E-2000 -> 0
+bool1202 isqnan 9.99999999E-1008 -> 0
+bool1203 isqnan -9.99999999E-1008 -> 0
+bool1204 isqnan 9.99999999E-1007 -> 0
+bool1205 isqnan -9.99999999E-1007 -> 0
+bool1206 isqnan 9.99999999E-1006 -> 0
+bool1207 isqnan -9.99999999E-1006 -> 0
+bool1208 isqnan 9.99999999E-1000 -> 0
+bool1209 isqnan -9.99999999E-1000 -> 0
+bool1210 isqnan 9.99999999E-999 -> 0
+bool1211 isqnan -9.99999999E-999 -> 0
+bool1212 isqnan 9.99999999E-998 -> 0
+bool1213 isqnan -9.99999999E-998 -> 0
+bool1214 isqnan 9.99999999E-100 -> 0
+bool1215 isqnan -9.99999999E-100 -> 0
+bool1216 isqnan 0.00000999999999 -> 0
+bool1217 isqnan -0.00000999999999 -> 0
+bool1218 isqnan 0.00999999999 -> 0
+bool1219 isqnan -0.00999999999 -> 0
+bool1220 isqnan 0.0999999999 -> 0
+bool1221 isqnan -0.0999999999 -> 0
+bool1222 isqnan 0.999999999 -> 0
+bool1223 isqnan -0.999999999 -> 0
+bool1224 isqnan 9.99999999 -> 0
+bool1225 isqnan -9.99999999 -> 0
+bool1226 isqnan 99.9999999 -> 0
+bool1227 isqnan -99.9999999 -> 0
+bool1228 isqnan 999.999999 -> 0
+bool1229 isqnan -999.999999 -> 0
+bool1230 isqnan 9999.99999 -> 0
+bool1231 isqnan -9999.99999 -> 0
+bool1232 isqnan 9999999.99 -> 0
+bool1233 isqnan -9999999.99 -> 0
+bool1234 isqnan 9.99999999E+100 -> 0
+bool1235 isqnan -9.99999999E+100 -> 0
+bool1236 isqnan 9.99999999E+990 -> 0
+bool1237 isqnan -9.99999999E+990 -> 0
+bool1238 isqnan 9.99999999E+991 -> 0
+bool1239 isqnan -9.99999999E+991 -> 0
+bool1240 isqnan 9.99999999E+992 -> 0
+bool1241 isqnan -9.99999999E+992 -> 0
+bool1242 isqnan 9.99999999E+998 -> 0
+bool1243 isqnan -9.99999999E+998 -> 0
+bool1244 isqnan 9.99999999E+999 -> 0
+bool1245 isqnan -9.99999999E+999 -> 0
+bool1246 isqnan 9.99999999E+1000 -> 0
+bool1247 isqnan -9.99999999E+1000 -> 0
+bool1248 isqnan 9.99999999E+2000 -> 0
+bool1249 isqnan -9.99999999E+2000 -> 0
+bool1250 isqnan Infinity -> 0
+bool1251 isqnan -Infinity -> 0
+bool1252 isqnan NaN -> 1
+bool1253 isqnan -NaN -> 1
+bool1254 isqnan NaN123 -> 1
+bool1255 isqnan -NaN123 -> 1
+bool1256 isqnan sNaN -> 0
+bool1257 isqnan -sNaN -> 0
+bool1258 isqnan sNaN123 -> 0
+bool1259 isqnan -sNaN123 -> 0
+bool1260 issigned 0E-2000 -> 0
+bool1261 issigned -0E-2000 -> 1
+bool1262 issigned 0E-1008 -> 0
+bool1263 issigned -0E-1008 -> 1
+bool1264 issigned 0E-1007 -> 0
+bool1265 issigned -0E-1007 -> 1
+bool1266 issigned 0E-1006 -> 0
+bool1267 issigned -0E-1006 -> 1
+bool1268 issigned 0E-1000 -> 0
+bool1269 issigned -0E-1000 -> 1
+bool1270 issigned 0E-999 -> 0
+bool1271 issigned -0E-999 -> 1
+bool1272 issigned 0E-998 -> 0
+bool1273 issigned -0E-998 -> 1
+bool1274 issigned 0E-100 -> 0
+bool1275 issigned -0E-100 -> 1
+bool1276 issigned 0.000000 -> 0
+bool1277 issigned -0.000000 -> 1
+bool1278 issigned 0.000 -> 0
+bool1279 issigned -0.000 -> 1
+bool1280 issigned 0.00 -> 0
+bool1281 issigned -0.00 -> 1
+bool1282 issigned 0.0 -> 0
+bool1283 issigned -0.0 -> 1
+bool1284 issigned 0 -> 0
+bool1285 issigned -0 -> 1
+bool1286 issigned 0E+1 -> 0
+bool1287 issigned -0E+1 -> 1
+bool1288 issigned 0E+2 -> 0
+bool1289 issigned -0E+2 -> 1
+bool1290 issigned 0E+3 -> 0
+bool1291 issigned -0E+3 -> 1
+bool1292 issigned 0E+6 -> 0
+bool1293 issigned -0E+6 -> 1
+bool1294 issigned 0E+100 -> 0
+bool1295 issigned -0E+100 -> 1
+bool1296 issigned 0E+990 -> 0
+bool1297 issigned -0E+990 -> 1
+bool1298 issigned 0E+991 -> 0
+bool1299 issigned -0E+991 -> 1
+bool1300 issigned 0E+992 -> 0
+bool1301 issigned -0E+992 -> 1
+bool1302 issigned 0E+998 -> 0
+bool1303 issigned -0E+998 -> 1
+bool1304 issigned 0E+999 -> 0
+bool1305 issigned -0E+999 -> 1
+bool1306 issigned 0E+1000 -> 0
+bool1307 issigned -0E+1000 -> 1
+bool1308 issigned 0E+2000 -> 0
+bool1309 issigned -0E+2000 -> 1
+bool1310 issigned 1E-2000 -> 0
+bool1311 issigned -1E-2000 -> 1
+bool1312 issigned 1E-1008 -> 0
+bool1313 issigned -1E-1008 -> 1
+bool1314 issigned 1E-1007 -> 0
+bool1315 issigned -1E-1007 -> 1
+bool1316 issigned 1E-1006 -> 0
+bool1317 issigned -1E-1006 -> 1
+bool1318 issigned 1E-1000 -> 0
+bool1319 issigned -1E-1000 -> 1
+bool1320 issigned 1E-999 -> 0
+bool1321 issigned -1E-999 -> 1
+bool1322 issigned 1E-998 -> 0
+bool1323 issigned -1E-998 -> 1
+bool1324 issigned 1E-100 -> 0
+bool1325 issigned -1E-100 -> 1
+bool1326 issigned 0.000001 -> 0
+bool1327 issigned -0.000001 -> 1
+bool1328 issigned 0.001 -> 0
+bool1329 issigned -0.001 -> 1
+bool1330 issigned 0.01 -> 0
+bool1331 issigned -0.01 -> 1
+bool1332 issigned 0.1 -> 0
+bool1333 issigned -0.1 -> 1
+bool1334 issigned 1 -> 0
+bool1335 issigned -1 -> 1
+bool1336 issigned 1E+1 -> 0
+bool1337 issigned -1E+1 -> 1
+bool1338 issigned 1E+2 -> 0
+bool1339 issigned -1E+2 -> 1
+bool1340 issigned 1E+3 -> 0
+bool1341 issigned -1E+3 -> 1
+bool1342 issigned 1E+6 -> 0
+bool1343 issigned -1E+6 -> 1
+bool1344 issigned 1E+100 -> 0
+bool1345 issigned -1E+100 -> 1
+bool1346 issigned 1E+990 -> 0
+bool1347 issigned -1E+990 -> 1
+bool1348 issigned 1E+991 -> 0
+bool1349 issigned -1E+991 -> 1
+bool1350 issigned 1E+992 -> 0
+bool1351 issigned -1E+992 -> 1
+bool1352 issigned 1E+998 -> 0
+bool1353 issigned -1E+998 -> 1
+bool1354 issigned 1E+999 -> 0
+bool1355 issigned -1E+999 -> 1
+bool1356 issigned 1E+1000 -> 0
+bool1357 issigned -1E+1000 -> 1
+bool1358 issigned 1E+2000 -> 0
+bool1359 issigned -1E+2000 -> 1
+bool1360 issigned 9E-2000 -> 0
+bool1361 issigned -9E-2000 -> 1
+bool1362 issigned 9E-1008 -> 0
+bool1363 issigned -9E-1008 -> 1
+bool1364 issigned 9E-1007 -> 0
+bool1365 issigned -9E-1007 -> 1
+bool1366 issigned 9E-1006 -> 0
+bool1367 issigned -9E-1006 -> 1
+bool1368 issigned 9E-1000 -> 0
+bool1369 issigned -9E-1000 -> 1
+bool1370 issigned 9E-999 -> 0
+bool1371 issigned -9E-999 -> 1
+bool1372 issigned 9E-998 -> 0
+bool1373 issigned -9E-998 -> 1
+bool1374 issigned 9E-100 -> 0
+bool1375 issigned -9E-100 -> 1
+bool1376 issigned 0.000009 -> 0
+bool1377 issigned -0.000009 -> 1
+bool1378 issigned 0.009 -> 0
+bool1379 issigned -0.009 -> 1
+bool1380 issigned 0.09 -> 0
+bool1381 issigned -0.09 -> 1
+bool1382 issigned 0.9 -> 0
+bool1383 issigned -0.9 -> 1
+bool1384 issigned 9 -> 0
+bool1385 issigned -9 -> 1
+bool1386 issigned 9E+1 -> 0
+bool1387 issigned -9E+1 -> 1
+bool1388 issigned 9E+2 -> 0
+bool1389 issigned -9E+2 -> 1
+bool1390 issigned 9E+3 -> 0
+bool1391 issigned -9E+3 -> 1
+bool1392 issigned 9E+6 -> 0
+bool1393 issigned -9E+6 -> 1
+bool1394 issigned 9E+100 -> 0
+bool1395 issigned -9E+100 -> 1
+bool1396 issigned 9E+990 -> 0
+bool1397 issigned -9E+990 -> 1
+bool1398 issigned 9E+991 -> 0
+bool1399 issigned -9E+991 -> 1
+bool1400 issigned 9E+992 -> 0
+bool1401 issigned -9E+992 -> 1
+bool1402 issigned 9E+998 -> 0
+bool1403 issigned -9E+998 -> 1
+bool1404 issigned 9E+999 -> 0
+bool1405 issigned -9E+999 -> 1
+bool1406 issigned 9E+1000 -> 0
+bool1407 issigned -9E+1000 -> 1
+bool1408 issigned 9E+2000 -> 0
+bool1409 issigned -9E+2000 -> 1
+bool1410 issigned 9.99999999E-2000 -> 0
+bool1411 issigned -9.99999999E-2000 -> 1
+bool1412 issigned 9.99999999E-1008 -> 0
+bool1413 issigned -9.99999999E-1008 -> 1
+bool1414 issigned 9.99999999E-1007 -> 0
+bool1415 issigned -9.99999999E-1007 -> 1
+bool1416 issigned 9.99999999E-1006 -> 0
+bool1417 issigned -9.99999999E-1006 -> 1
+bool1418 issigned 9.99999999E-1000 -> 0
+bool1419 issigned -9.99999999E-1000 -> 1
+bool1420 issigned 9.99999999E-999 -> 0
+bool1421 issigned -9.99999999E-999 -> 1
+bool1422 issigned 9.99999999E-998 -> 0
+bool1423 issigned -9.99999999E-998 -> 1
+bool1424 issigned 9.99999999E-100 -> 0
+bool1425 issigned -9.99999999E-100 -> 1
+bool1426 issigned 0.00000999999999 -> 0
+bool1427 issigned -0.00000999999999 -> 1
+bool1428 issigned 0.00999999999 -> 0
+bool1429 issigned -0.00999999999 -> 1
+bool1430 issigned 0.0999999999 -> 0
+bool1431 issigned -0.0999999999 -> 1
+bool1432 issigned 0.999999999 -> 0
+bool1433 issigned -0.999999999 -> 1
+bool1434 issigned 9.99999999 -> 0
+bool1435 issigned -9.99999999 -> 1
+bool1436 issigned 99.9999999 -> 0
+bool1437 issigned -99.9999999 -> 1
+bool1438 issigned 999.999999 -> 0
+bool1439 issigned -999.999999 -> 1
+bool1440 issigned 9999.99999 -> 0
+bool1441 issigned -9999.99999 -> 1
+bool1442 issigned 9999999.99 -> 0
+bool1443 issigned -9999999.99 -> 1
+bool1444 issigned 9.99999999E+100 -> 0
+bool1445 issigned -9.99999999E+100 -> 1
+bool1446 issigned 9.99999999E+990 -> 0
+bool1447 issigned -9.99999999E+990 -> 1
+bool1448 issigned 9.99999999E+991 -> 0
+bool1449 issigned -9.99999999E+991 -> 1
+bool1450 issigned 9.99999999E+992 -> 0
+bool1451 issigned -9.99999999E+992 -> 1
+bool1452 issigned 9.99999999E+998 -> 0
+bool1453 issigned -9.99999999E+998 -> 1
+bool1454 issigned 9.99999999E+999 -> 0
+bool1455 issigned -9.99999999E+999 -> 1
+bool1456 issigned 9.99999999E+1000 -> 0
+bool1457 issigned -9.99999999E+1000 -> 1
+bool1458 issigned 9.99999999E+2000 -> 0
+bool1459 issigned -9.99999999E+2000 -> 1
+bool1460 issigned Infinity -> 0
+bool1461 issigned -Infinity -> 1
+bool1462 issigned NaN -> 0
+bool1463 issigned -NaN -> 1
+bool1464 issigned NaN123 -> 0
+bool1465 issigned -NaN123 -> 1
+bool1466 issigned sNaN -> 0
+bool1467 issigned -sNaN -> 1
+bool1468 issigned sNaN123 -> 0
+bool1469 issigned -sNaN123 -> 1
+bool1470 issnan 0E-2000 -> 0
+bool1471 issnan -0E-2000 -> 0
+bool1472 issnan 0E-1008 -> 0
+bool1473 issnan -0E-1008 -> 0
+bool1474 issnan 0E-1007 -> 0
+bool1475 issnan -0E-1007 -> 0
+bool1476 issnan 0E-1006 -> 0
+bool1477 issnan -0E-1006 -> 0
+bool1478 issnan 0E-1000 -> 0
+bool1479 issnan -0E-1000 -> 0
+bool1480 issnan 0E-999 -> 0
+bool1481 issnan -0E-999 -> 0
+bool1482 issnan 0E-998 -> 0
+bool1483 issnan -0E-998 -> 0
+bool1484 issnan 0E-100 -> 0
+bool1485 issnan -0E-100 -> 0
+bool1486 issnan 0.000000 -> 0
+bool1487 issnan -0.000000 -> 0
+bool1488 issnan 0.000 -> 0
+bool1489 issnan -0.000 -> 0
+bool1490 issnan 0.00 -> 0
+bool1491 issnan -0.00 -> 0
+bool1492 issnan 0.0 -> 0
+bool1493 issnan -0.0 -> 0
+bool1494 issnan 0 -> 0
+bool1495 issnan -0 -> 0
+bool1496 issnan 0E+1 -> 0
+bool1497 issnan -0E+1 -> 0
+bool1498 issnan 0E+2 -> 0
+bool1499 issnan -0E+2 -> 0
+bool1500 issnan 0E+3 -> 0
+bool1501 issnan -0E+3 -> 0
+bool1502 issnan 0E+6 -> 0
+bool1503 issnan -0E+6 -> 0
+bool1504 issnan 0E+100 -> 0
+bool1505 issnan -0E+100 -> 0
+bool1506 issnan 0E+990 -> 0
+bool1507 issnan -0E+990 -> 0
+bool1508 issnan 0E+991 -> 0
+bool1509 issnan -0E+991 -> 0
+bool1510 issnan 0E+992 -> 0
+bool1511 issnan -0E+992 -> 0
+bool1512 issnan 0E+998 -> 0
+bool1513 issnan -0E+998 -> 0
+bool1514 issnan 0E+999 -> 0
+bool1515 issnan -0E+999 -> 0
+bool1516 issnan 0E+1000 -> 0
+bool1517 issnan -0E+1000 -> 0
+bool1518 issnan 0E+2000 -> 0
+bool1519 issnan -0E+2000 -> 0
+bool1520 issnan 1E-2000 -> 0
+bool1521 issnan -1E-2000 -> 0
+bool1522 issnan 1E-1008 -> 0
+bool1523 issnan -1E-1008 -> 0
+bool1524 issnan 1E-1007 -> 0
+bool1525 issnan -1E-1007 -> 0
+bool1526 issnan 1E-1006 -> 0
+bool1527 issnan -1E-1006 -> 0
+bool1528 issnan 1E-1000 -> 0
+bool1529 issnan -1E-1000 -> 0
+bool1530 issnan 1E-999 -> 0
+bool1531 issnan -1E-999 -> 0
+bool1532 issnan 1E-998 -> 0
+bool1533 issnan -1E-998 -> 0
+bool1534 issnan 1E-100 -> 0
+bool1535 issnan -1E-100 -> 0
+bool1536 issnan 0.000001 -> 0
+bool1537 issnan -0.000001 -> 0
+bool1538 issnan 0.001 -> 0
+bool1539 issnan -0.001 -> 0
+bool1540 issnan 0.01 -> 0
+bool1541 issnan -0.01 -> 0
+bool1542 issnan 0.1 -> 0
+bool1543 issnan -0.1 -> 0
+bool1544 issnan 1 -> 0
+bool1545 issnan -1 -> 0
+bool1546 issnan 1E+1 -> 0
+bool1547 issnan -1E+1 -> 0
+bool1548 issnan 1E+2 -> 0
+bool1549 issnan -1E+2 -> 0
+bool1550 issnan 1E+3 -> 0
+bool1551 issnan -1E+3 -> 0
+bool1552 issnan 1E+6 -> 0
+bool1553 issnan -1E+6 -> 0
+bool1554 issnan 1E+100 -> 0
+bool1555 issnan -1E+100 -> 0
+bool1556 issnan 1E+990 -> 0
+bool1557 issnan -1E+990 -> 0
+bool1558 issnan 1E+991 -> 0
+bool1559 issnan -1E+991 -> 0
+bool1560 issnan 1E+992 -> 0
+bool1561 issnan -1E+992 -> 0
+bool1562 issnan 1E+998 -> 0
+bool1563 issnan -1E+998 -> 0
+bool1564 issnan 1E+999 -> 0
+bool1565 issnan -1E+999 -> 0
+bool1566 issnan 1E+1000 -> 0
+bool1567 issnan -1E+1000 -> 0
+bool1568 issnan 1E+2000 -> 0
+bool1569 issnan -1E+2000 -> 0
+bool1570 issnan 9E-2000 -> 0
+bool1571 issnan -9E-2000 -> 0
+bool1572 issnan 9E-1008 -> 0
+bool1573 issnan -9E-1008 -> 0
+bool1574 issnan 9E-1007 -> 0
+bool1575 issnan -9E-1007 -> 0
+bool1576 issnan 9E-1006 -> 0
+bool1577 issnan -9E-1006 -> 0
+bool1578 issnan 9E-1000 -> 0
+bool1579 issnan -9E-1000 -> 0
+bool1580 issnan 9E-999 -> 0
+bool1581 issnan -9E-999 -> 0
+bool1582 issnan 9E-998 -> 0
+bool1583 issnan -9E-998 -> 0
+bool1584 issnan 9E-100 -> 0
+bool1585 issnan -9E-100 -> 0
+bool1586 issnan 0.000009 -> 0
+bool1587 issnan -0.000009 -> 0
+bool1588 issnan 0.009 -> 0
+bool1589 issnan -0.009 -> 0
+bool1590 issnan 0.09 -> 0
+bool1591 issnan -0.09 -> 0
+bool1592 issnan 0.9 -> 0
+bool1593 issnan -0.9 -> 0
+bool1594 issnan 9 -> 0
+bool1595 issnan -9 -> 0
+bool1596 issnan 9E+1 -> 0
+bool1597 issnan -9E+1 -> 0
+bool1598 issnan 9E+2 -> 0
+bool1599 issnan -9E+2 -> 0
+bool1600 issnan 9E+3 -> 0
+bool1601 issnan -9E+3 -> 0
+bool1602 issnan 9E+6 -> 0
+bool1603 issnan -9E+6 -> 0
+bool1604 issnan 9E+100 -> 0
+bool1605 issnan -9E+100 -> 0
+bool1606 issnan 9E+990 -> 0
+bool1607 issnan -9E+990 -> 0
+bool1608 issnan 9E+991 -> 0
+bool1609 issnan -9E+991 -> 0
+bool1610 issnan 9E+992 -> 0
+bool1611 issnan -9E+992 -> 0
+bool1612 issnan 9E+998 -> 0
+bool1613 issnan -9E+998 -> 0
+bool1614 issnan 9E+999 -> 0
+bool1615 issnan -9E+999 -> 0
+bool1616 issnan 9E+1000 -> 0
+bool1617 issnan -9E+1000 -> 0
+bool1618 issnan 9E+2000 -> 0
+bool1619 issnan -9E+2000 -> 0
+bool1620 issnan 9.99999999E-2000 -> 0
+bool1621 issnan -9.99999999E-2000 -> 0
+bool1622 issnan 9.99999999E-1008 -> 0
+bool1623 issnan -9.99999999E-1008 -> 0
+bool1624 issnan 9.99999999E-1007 -> 0
+bool1625 issnan -9.99999999E-1007 -> 0
+bool1626 issnan 9.99999999E-1006 -> 0
+bool1627 issnan -9.99999999E-1006 -> 0
+bool1628 issnan 9.99999999E-1000 -> 0
+bool1629 issnan -9.99999999E-1000 -> 0
+bool1630 issnan 9.99999999E-999 -> 0
+bool1631 issnan -9.99999999E-999 -> 0
+bool1632 issnan 9.99999999E-998 -> 0
+bool1633 issnan -9.99999999E-998 -> 0
+bool1634 issnan 9.99999999E-100 -> 0
+bool1635 issnan -9.99999999E-100 -> 0
+bool1636 issnan 0.00000999999999 -> 0
+bool1637 issnan -0.00000999999999 -> 0
+bool1638 issnan 0.00999999999 -> 0
+bool1639 issnan -0.00999999999 -> 0
+bool1640 issnan 0.0999999999 -> 0
+bool1641 issnan -0.0999999999 -> 0
+bool1642 issnan 0.999999999 -> 0
+bool1643 issnan -0.999999999 -> 0
+bool1644 issnan 9.99999999 -> 0
+bool1645 issnan -9.99999999 -> 0
+bool1646 issnan 99.9999999 -> 0
+bool1647 issnan -99.9999999 -> 0
+bool1648 issnan 999.999999 -> 0
+bool1649 issnan -999.999999 -> 0
+bool1650 issnan 9999.99999 -> 0
+bool1651 issnan -9999.99999 -> 0
+bool1652 issnan 9999999.99 -> 0
+bool1653 issnan -9999999.99 -> 0
+bool1654 issnan 9.99999999E+100 -> 0
+bool1655 issnan -9.99999999E+100 -> 0
+bool1656 issnan 9.99999999E+990 -> 0
+bool1657 issnan -9.99999999E+990 -> 0
+bool1658 issnan 9.99999999E+991 -> 0
+bool1659 issnan -9.99999999E+991 -> 0
+bool1660 issnan 9.99999999E+992 -> 0
+bool1661 issnan -9.99999999E+992 -> 0
+bool1662 issnan 9.99999999E+998 -> 0
+bool1663 issnan -9.99999999E+998 -> 0
+bool1664 issnan 9.99999999E+999 -> 0
+bool1665 issnan -9.99999999E+999 -> 0
+bool1666 issnan 9.99999999E+1000 -> 0
+bool1667 issnan -9.99999999E+1000 -> 0
+bool1668 issnan 9.99999999E+2000 -> 0
+bool1669 issnan -9.99999999E+2000 -> 0
+bool1670 issnan Infinity -> 0
+bool1671 issnan -Infinity -> 0
+bool1672 issnan NaN -> 0
+bool1673 issnan -NaN -> 0
+bool1674 issnan NaN123 -> 0
+bool1675 issnan -NaN123 -> 0
+bool1676 issnan sNaN -> 1
+bool1677 issnan -sNaN -> 1
+bool1678 issnan sNaN123 -> 1
+bool1679 issnan -sNaN123 -> 1
+bool1680 issubnormal 0E-2000 -> 0
+bool1681 issubnormal -0E-2000 -> 0
+bool1682 issubnormal 0E-1008 -> 0
+bool1683 issubnormal -0E-1008 -> 0
+bool1684 issubnormal 0E-1007 -> 0
+bool1685 issubnormal -0E-1007 -> 0
+bool1686 issubnormal 0E-1006 -> 0
+bool1687 issubnormal -0E-1006 -> 0
+bool1688 issubnormal 0E-1000 -> 0
+bool1689 issubnormal -0E-1000 -> 0
+bool1690 issubnormal 0E-999 -> 0
+bool1691 issubnormal -0E-999 -> 0
+bool1692 issubnormal 0E-998 -> 0
+bool1693 issubnormal -0E-998 -> 0
+bool1694 issubnormal 0E-100 -> 0
+bool1695 issubnormal -0E-100 -> 0
+bool1696 issubnormal 0.000000 -> 0
+bool1697 issubnormal -0.000000 -> 0
+bool1698 issubnormal 0.000 -> 0
+bool1699 issubnormal -0.000 -> 0
+bool1700 issubnormal 0.00 -> 0
+bool1701 issubnormal -0.00 -> 0
+bool1702 issubnormal 0.0 -> 0
+bool1703 issubnormal -0.0 -> 0
+bool1704 issubnormal 0 -> 0
+bool1705 issubnormal -0 -> 0
+bool1706 issubnormal 0E+1 -> 0
+bool1707 issubnormal -0E+1 -> 0
+bool1708 issubnormal 0E+2 -> 0
+bool1709 issubnormal -0E+2 -> 0
+bool1710 issubnormal 0E+3 -> 0
+bool1711 issubnormal -0E+3 -> 0
+bool1712 issubnormal 0E+6 -> 0
+bool1713 issubnormal -0E+6 -> 0
+bool1714 issubnormal 0E+100 -> 0
+bool1715 issubnormal -0E+100 -> 0
+bool1716 issubnormal 0E+990 -> 0
+bool1717 issubnormal -0E+990 -> 0
+bool1718 issubnormal 0E+991 -> 0
+bool1719 issubnormal -0E+991 -> 0
+bool1720 issubnormal 0E+992 -> 0
+bool1721 issubnormal -0E+992 -> 0
+bool1722 issubnormal 0E+998 -> 0
+bool1723 issubnormal -0E+998 -> 0
+bool1724 issubnormal 0E+999 -> 0
+bool1725 issubnormal -0E+999 -> 0
+bool1726 issubnormal 0E+1000 -> 0
+bool1727 issubnormal -0E+1000 -> 0
+bool1728 issubnormal 0E+2000 -> 0
+bool1729 issubnormal -0E+2000 -> 0
+bool1730 issubnormal 1E-2000 -> 1
+bool1731 issubnormal -1E-2000 -> 1
+bool1732 issubnormal 1E-1008 -> 1
+bool1733 issubnormal -1E-1008 -> 1
+bool1734 issubnormal 1E-1007 -> 1
+bool1735 issubnormal -1E-1007 -> 1
+bool1736 issubnormal 1E-1006 -> 1
+bool1737 issubnormal -1E-1006 -> 1
+bool1738 issubnormal 1E-1000 -> 1
+bool1739 issubnormal -1E-1000 -> 1
+bool1740 issubnormal 1E-999 -> 0
+bool1741 issubnormal -1E-999 -> 0
+bool1742 issubnormal 1E-998 -> 0
+bool1743 issubnormal -1E-998 -> 0
+bool1744 issubnormal 1E-100 -> 0
+bool1745 issubnormal -1E-100 -> 0
+bool1746 issubnormal 0.000001 -> 0
+bool1747 issubnormal -0.000001 -> 0
+bool1748 issubnormal 0.001 -> 0
+bool1749 issubnormal -0.001 -> 0
+bool1750 issubnormal 0.01 -> 0
+bool1751 issubnormal -0.01 -> 0
+bool1752 issubnormal 0.1 -> 0
+bool1753 issubnormal -0.1 -> 0
+bool1754 issubnormal 1 -> 0
+bool1755 issubnormal -1 -> 0
+bool1756 issubnormal 1E+1 -> 0
+bool1757 issubnormal -1E+1 -> 0
+bool1758 issubnormal 1E+2 -> 0
+bool1759 issubnormal -1E+2 -> 0
+bool1760 issubnormal 1E+3 -> 0
+bool1761 issubnormal -1E+3 -> 0
+bool1762 issubnormal 1E+6 -> 0
+bool1763 issubnormal -1E+6 -> 0
+bool1764 issubnormal 1E+100 -> 0
+bool1765 issubnormal -1E+100 -> 0
+bool1766 issubnormal 1E+990 -> 0
+bool1767 issubnormal -1E+990 -> 0
+bool1768 issubnormal 1E+991 -> 0
+bool1769 issubnormal -1E+991 -> 0
+bool1770 issubnormal 1E+992 -> 0
+bool1771 issubnormal -1E+992 -> 0
+bool1772 issubnormal 1E+998 -> 0
+bool1773 issubnormal -1E+998 -> 0
+bool1774 issubnormal 1E+999 -> 0
+bool1775 issubnormal -1E+999 -> 0
+bool1776 issubnormal 1E+1000 -> 0
+bool1777 issubnormal -1E+1000 -> 0
+bool1778 issubnormal 1E+2000 -> 0
+bool1779 issubnormal -1E+2000 -> 0
+bool1780 issubnormal 9E-2000 -> 1
+bool1781 issubnormal -9E-2000 -> 1
+bool1782 issubnormal 9E-1008 -> 1
+bool1783 issubnormal -9E-1008 -> 1
+bool1784 issubnormal 9E-1007 -> 1
+bool1785 issubnormal -9E-1007 -> 1
+bool1786 issubnormal 9E-1006 -> 1
+bool1787 issubnormal -9E-1006 -> 1
+bool1788 issubnormal 9E-1000 -> 1
+bool1789 issubnormal -9E-1000 -> 1
+bool1790 issubnormal 9E-999 -> 0
+bool1791 issubnormal -9E-999 -> 0
+bool1792 issubnormal 9E-998 -> 0
+bool1793 issubnormal -9E-998 -> 0
+bool1794 issubnormal 9E-100 -> 0
+bool1795 issubnormal -9E-100 -> 0
+bool1796 issubnormal 0.000009 -> 0
+bool1797 issubnormal -0.000009 -> 0
+bool1798 issubnormal 0.009 -> 0
+bool1799 issubnormal -0.009 -> 0
+bool1800 issubnormal 0.09 -> 0
+bool1801 issubnormal -0.09 -> 0
+bool1802 issubnormal 0.9 -> 0
+bool1803 issubnormal -0.9 -> 0
+bool1804 issubnormal 9 -> 0
+bool1805 issubnormal -9 -> 0
+bool1806 issubnormal 9E+1 -> 0
+bool1807 issubnormal -9E+1 -> 0
+bool1808 issubnormal 9E+2 -> 0
+bool1809 issubnormal -9E+2 -> 0
+bool1810 issubnormal 9E+3 -> 0
+bool1811 issubnormal -9E+3 -> 0
+bool1812 issubnormal 9E+6 -> 0
+bool1813 issubnormal -9E+6 -> 0
+bool1814 issubnormal 9E+100 -> 0
+bool1815 issubnormal -9E+100 -> 0
+bool1816 issubnormal 9E+990 -> 0
+bool1817 issubnormal -9E+990 -> 0
+bool1818 issubnormal 9E+991 -> 0
+bool1819 issubnormal -9E+991 -> 0
+bool1820 issubnormal 9E+992 -> 0
+bool1821 issubnormal -9E+992 -> 0
+bool1822 issubnormal 9E+998 -> 0
+bool1823 issubnormal -9E+998 -> 0
+bool1824 issubnormal 9E+999 -> 0
+bool1825 issubnormal -9E+999 -> 0
+bool1826 issubnormal 9E+1000 -> 0
+bool1827 issubnormal -9E+1000 -> 0
+bool1828 issubnormal 9E+2000 -> 0
+bool1829 issubnormal -9E+2000 -> 0
+bool1830 issubnormal 9.99999999E-2000 -> 1
+bool1831 issubnormal -9.99999999E-2000 -> 1
+bool1832 issubnormal 9.99999999E-1008 -> 1
+bool1833 issubnormal -9.99999999E-1008 -> 1
+bool1834 issubnormal 9.99999999E-1007 -> 1
+bool1835 issubnormal -9.99999999E-1007 -> 1
+bool1836 issubnormal 9.99999999E-1006 -> 1
+bool1837 issubnormal -9.99999999E-1006 -> 1
+bool1838 issubnormal 9.99999999E-1000 -> 1
+bool1839 issubnormal -9.99999999E-1000 -> 1
+bool1840 issubnormal 9.99999999E-999 -> 0
+bool1841 issubnormal -9.99999999E-999 -> 0
+bool1842 issubnormal 9.99999999E-998 -> 0
+bool1843 issubnormal -9.99999999E-998 -> 0
+bool1844 issubnormal 9.99999999E-100 -> 0
+bool1845 issubnormal -9.99999999E-100 -> 0
+bool1846 issubnormal 0.00000999999999 -> 0
+bool1847 issubnormal -0.00000999999999 -> 0
+bool1848 issubnormal 0.00999999999 -> 0
+bool1849 issubnormal -0.00999999999 -> 0
+bool1850 issubnormal 0.0999999999 -> 0
+bool1851 issubnormal -0.0999999999 -> 0
+bool1852 issubnormal 0.999999999 -> 0
+bool1853 issubnormal -0.999999999 -> 0
+bool1854 issubnormal 9.99999999 -> 0
+bool1855 issubnormal -9.99999999 -> 0
+bool1856 issubnormal 99.9999999 -> 0
+bool1857 issubnormal -99.9999999 -> 0
+bool1858 issubnormal 999.999999 -> 0
+bool1859 issubnormal -999.999999 -> 0
+bool1860 issubnormal 9999.99999 -> 0
+bool1861 issubnormal -9999.99999 -> 0
+bool1862 issubnormal 9999999.99 -> 0
+bool1863 issubnormal -9999999.99 -> 0
+bool1864 issubnormal 9.99999999E+100 -> 0
+bool1865 issubnormal -9.99999999E+100 -> 0
+bool1866 issubnormal 9.99999999E+990 -> 0
+bool1867 issubnormal -9.99999999E+990 -> 0
+bool1868 issubnormal 9.99999999E+991 -> 0
+bool1869 issubnormal -9.99999999E+991 -> 0
+bool1870 issubnormal 9.99999999E+992 -> 0
+bool1871 issubnormal -9.99999999E+992 -> 0
+bool1872 issubnormal 9.99999999E+998 -> 0
+bool1873 issubnormal -9.99999999E+998 -> 0
+bool1874 issubnormal 9.99999999E+999 -> 0
+bool1875 issubnormal -9.99999999E+999 -> 0
+bool1876 issubnormal 9.99999999E+1000 -> 0
+bool1877 issubnormal -9.99999999E+1000 -> 0
+bool1878 issubnormal 9.99999999E+2000 -> 0
+bool1879 issubnormal -9.99999999E+2000 -> 0
+bool1880 issubnormal Infinity -> 0
+bool1881 issubnormal -Infinity -> 0
+bool1882 issubnormal NaN -> 0
+bool1883 issubnormal -NaN -> 0
+bool1884 issubnormal NaN123 -> 0
+bool1885 issubnormal -NaN123 -> 0
+bool1886 issubnormal sNaN -> 0
+bool1887 issubnormal -sNaN -> 0
+bool1888 issubnormal sNaN123 -> 0
+bool1889 issubnormal -sNaN123 -> 0
+bool1890 iszero 0E-2000 -> 1
+bool1891 iszero -0E-2000 -> 1
+bool1892 iszero 0E-1008 -> 1
+bool1893 iszero -0E-1008 -> 1
+bool1894 iszero 0E-1007 -> 1
+bool1895 iszero -0E-1007 -> 1
+bool1896 iszero 0E-1006 -> 1
+bool1897 iszero -0E-1006 -> 1
+bool1898 iszero 0E-1000 -> 1
+bool1899 iszero -0E-1000 -> 1
+bool1900 iszero 0E-999 -> 1
+bool1901 iszero -0E-999 -> 1
+bool1902 iszero 0E-998 -> 1
+bool1903 iszero -0E-998 -> 1
+bool1904 iszero 0E-100 -> 1
+bool1905 iszero -0E-100 -> 1
+bool1906 iszero 0.000000 -> 1
+bool1907 iszero -0.000000 -> 1
+bool1908 iszero 0.000 -> 1
+bool1909 iszero -0.000 -> 1
+bool1910 iszero 0.00 -> 1
+bool1911 iszero -0.00 -> 1
+bool1912 iszero 0.0 -> 1
+bool1913 iszero -0.0 -> 1
+bool1914 iszero 0 -> 1
+bool1915 iszero -0 -> 1
+bool1916 iszero 0E+1 -> 1
+bool1917 iszero -0E+1 -> 1
+bool1918 iszero 0E+2 -> 1
+bool1919 iszero -0E+2 -> 1
+bool1920 iszero 0E+3 -> 1
+bool1921 iszero -0E+3 -> 1
+bool1922 iszero 0E+6 -> 1
+bool1923 iszero -0E+6 -> 1
+bool1924 iszero 0E+100 -> 1
+bool1925 iszero -0E+100 -> 1
+bool1926 iszero 0E+990 -> 1
+bool1927 iszero -0E+990 -> 1
+bool1928 iszero 0E+991 -> 1
+bool1929 iszero -0E+991 -> 1
+bool1930 iszero 0E+992 -> 1
+bool1931 iszero -0E+992 -> 1
+bool1932 iszero 0E+998 -> 1
+bool1933 iszero -0E+998 -> 1
+bool1934 iszero 0E+999 -> 1
+bool1935 iszero -0E+999 -> 1
+bool1936 iszero 0E+1000 -> 1
+bool1937 iszero -0E+1000 -> 1
+bool1938 iszero 0E+2000 -> 1
+bool1939 iszero -0E+2000 -> 1
+bool1940 iszero 1E-2000 -> 0
+bool1941 iszero -1E-2000 -> 0
+bool1942 iszero 1E-1008 -> 0
+bool1943 iszero -1E-1008 -> 0
+bool1944 iszero 1E-1007 -> 0
+bool1945 iszero -1E-1007 -> 0
+bool1946 iszero 1E-1006 -> 0
+bool1947 iszero -1E-1006 -> 0
+bool1948 iszero 1E-1000 -> 0
+bool1949 iszero -1E-1000 -> 0
+bool1950 iszero 1E-999 -> 0
+bool1951 iszero -1E-999 -> 0
+bool1952 iszero 1E-998 -> 0
+bool1953 iszero -1E-998 -> 0
+bool1954 iszero 1E-100 -> 0
+bool1955 iszero -1E-100 -> 0
+bool1956 iszero 0.000001 -> 0
+bool1957 iszero -0.000001 -> 0
+bool1958 iszero 0.001 -> 0
+bool1959 iszero -0.001 -> 0
+bool1960 iszero 0.01 -> 0
+bool1961 iszero -0.01 -> 0
+bool1962 iszero 0.1 -> 0
+bool1963 iszero -0.1 -> 0
+bool1964 iszero 1 -> 0
+bool1965 iszero -1 -> 0
+bool1966 iszero 1E+1 -> 0
+bool1967 iszero -1E+1 -> 0
+bool1968 iszero 1E+2 -> 0
+bool1969 iszero -1E+2 -> 0
+bool1970 iszero 1E+3 -> 0
+bool1971 iszero -1E+3 -> 0
+bool1972 iszero 1E+6 -> 0
+bool1973 iszero -1E+6 -> 0
+bool1974 iszero 1E+100 -> 0
+bool1975 iszero -1E+100 -> 0
+bool1976 iszero 1E+990 -> 0
+bool1977 iszero -1E+990 -> 0
+bool1978 iszero 1E+991 -> 0
+bool1979 iszero -1E+991 -> 0
+bool1980 iszero 1E+992 -> 0
+bool1981 iszero -1E+992 -> 0
+bool1982 iszero 1E+998 -> 0
+bool1983 iszero -1E+998 -> 0
+bool1984 iszero 1E+999 -> 0
+bool1985 iszero -1E+999 -> 0
+bool1986 iszero 1E+1000 -> 0
+bool1987 iszero -1E+1000 -> 0
+bool1988 iszero 1E+2000 -> 0
+bool1989 iszero -1E+2000 -> 0
+bool1990 iszero 9E-2000 -> 0
+bool1991 iszero -9E-2000 -> 0
+bool1992 iszero 9E-1008 -> 0
+bool1993 iszero -9E-1008 -> 0
+bool1994 iszero 9E-1007 -> 0
+bool1995 iszero -9E-1007 -> 0
+bool1996 iszero 9E-1006 -> 0
+bool1997 iszero -9E-1006 -> 0
+bool1998 iszero 9E-1000 -> 0
+bool1999 iszero -9E-1000 -> 0
+bool2000 iszero 9E-999 -> 0
+bool2001 iszero -9E-999 -> 0
+bool2002 iszero 9E-998 -> 0
+bool2003 iszero -9E-998 -> 0
+bool2004 iszero 9E-100 -> 0
+bool2005 iszero -9E-100 -> 0
+bool2006 iszero 0.000009 -> 0
+bool2007 iszero -0.000009 -> 0
+bool2008 iszero 0.009 -> 0
+bool2009 iszero -0.009 -> 0
+bool2010 iszero 0.09 -> 0
+bool2011 iszero -0.09 -> 0
+bool2012 iszero 0.9 -> 0
+bool2013 iszero -0.9 -> 0
+bool2014 iszero 9 -> 0
+bool2015 iszero -9 -> 0
+bool2016 iszero 9E+1 -> 0
+bool2017 iszero -9E+1 -> 0
+bool2018 iszero 9E+2 -> 0
+bool2019 iszero -9E+2 -> 0
+bool2020 iszero 9E+3 -> 0
+bool2021 iszero -9E+3 -> 0
+bool2022 iszero 9E+6 -> 0
+bool2023 iszero -9E+6 -> 0
+bool2024 iszero 9E+100 -> 0
+bool2025 iszero -9E+100 -> 0
+bool2026 iszero 9E+990 -> 0
+bool2027 iszero -9E+990 -> 0
+bool2028 iszero 9E+991 -> 0
+bool2029 iszero -9E+991 -> 0
+bool2030 iszero 9E+992 -> 0
+bool2031 iszero -9E+992 -> 0
+bool2032 iszero 9E+998 -> 0
+bool2033 iszero -9E+998 -> 0
+bool2034 iszero 9E+999 -> 0
+bool2035 iszero -9E+999 -> 0
+bool2036 iszero 9E+1000 -> 0
+bool2037 iszero -9E+1000 -> 0
+bool2038 iszero 9E+2000 -> 0
+bool2039 iszero -9E+2000 -> 0
+bool2040 iszero 9.99999999E-2000 -> 0
+bool2041 iszero -9.99999999E-2000 -> 0
+bool2042 iszero 9.99999999E-1008 -> 0
+bool2043 iszero -9.99999999E-1008 -> 0
+bool2044 iszero 9.99999999E-1007 -> 0
+bool2045 iszero -9.99999999E-1007 -> 0
+bool2046 iszero 9.99999999E-1006 -> 0
+bool2047 iszero -9.99999999E-1006 -> 0
+bool2048 iszero 9.99999999E-1000 -> 0
+bool2049 iszero -9.99999999E-1000 -> 0
+bool2050 iszero 9.99999999E-999 -> 0
+bool2051 iszero -9.99999999E-999 -> 0
+bool2052 iszero 9.99999999E-998 -> 0
+bool2053 iszero -9.99999999E-998 -> 0
+bool2054 iszero 9.99999999E-100 -> 0
+bool2055 iszero -9.99999999E-100 -> 0
+bool2056 iszero 0.00000999999999 -> 0
+bool2057 iszero -0.00000999999999 -> 0
+bool2058 iszero 0.00999999999 -> 0
+bool2059 iszero -0.00999999999 -> 0
+bool2060 iszero 0.0999999999 -> 0
+bool2061 iszero -0.0999999999 -> 0
+bool2062 iszero 0.999999999 -> 0
+bool2063 iszero -0.999999999 -> 0
+bool2064 iszero 9.99999999 -> 0
+bool2065 iszero -9.99999999 -> 0
+bool2066 iszero 99.9999999 -> 0
+bool2067 iszero -99.9999999 -> 0
+bool2068 iszero 999.999999 -> 0
+bool2069 iszero -999.999999 -> 0
+bool2070 iszero 9999.99999 -> 0
+bool2071 iszero -9999.99999 -> 0
+bool2072 iszero 9999999.99 -> 0
+bool2073 iszero -9999999.99 -> 0
+bool2074 iszero 9.99999999E+100 -> 0
+bool2075 iszero -9.99999999E+100 -> 0
+bool2076 iszero 9.99999999E+990 -> 0
+bool2077 iszero -9.99999999E+990 -> 0
+bool2078 iszero 9.99999999E+991 -> 0
+bool2079 iszero -9.99999999E+991 -> 0
+bool2080 iszero 9.99999999E+992 -> 0
+bool2081 iszero -9.99999999E+992 -> 0
+bool2082 iszero 9.99999999E+998 -> 0
+bool2083 iszero -9.99999999E+998 -> 0
+bool2084 iszero 9.99999999E+999 -> 0
+bool2085 iszero -9.99999999E+999 -> 0
+bool2086 iszero 9.99999999E+1000 -> 0
+bool2087 iszero -9.99999999E+1000 -> 0
+bool2088 iszero 9.99999999E+2000 -> 0
+bool2089 iszero -9.99999999E+2000 -> 0
+bool2090 iszero Infinity -> 0
+bool2091 iszero -Infinity -> 0
+bool2092 iszero NaN -> 0
+bool2093 iszero -NaN -> 0
+bool2094 iszero NaN123 -> 0
+bool2095 iszero -NaN123 -> 0
+bool2096 iszero sNaN -> 0
+bool2097 iszero -sNaN -> 0
+bool2098 iszero sNaN123 -> 0
+bool2099 iszero -sNaN123 -> 0
+
+------------------------------------------------------------------------
+-- The following tests (pwmx0 through pwmx440) are for the            --
+-- three-argument version of power:                                   --
+--                                                                    --
+--   pow(x, y, z) := x**y % z                                         --
+--                                                                    --
+-- Note that the three-argument version of power is *not* part of     --
+-- the IBM General Decimal Arithmetic specification.  Questions       --
+-- about it, or about these testcases, should go to one of the        --
+-- Python decimal authors.                                            --
+------------------------------------------------------------------------
+
+extended: 1
+precision: 9
+rounding: down
+maxExponent: 999
+minExponent: -999
+
+-- Small numbers
+-- Note that power(0, 0, m) is an error for any m
+pwmx0 power 0 -0 1 -> NaN Invalid_operation
+pwmx1 power 0 -0 2 -> NaN Invalid_operation
+pwmx2 power 0 -0 3 -> NaN Invalid_operation
+pwmx3 power 0 -0 4 -> NaN Invalid_operation
+pwmx4 power 0 -0 -1 -> NaN Invalid_operation
+pwmx5 power 0 -0 -2 -> NaN Invalid_operation
+pwmx6 power 0 0 1 -> NaN Invalid_operation
+pwmx7 power 0 0 2 -> NaN Invalid_operation
+pwmx8 power 0 0 3 -> NaN Invalid_operation
+pwmx9 power 0 0 4 -> NaN Invalid_operation
+pwmx10 power 0 0 -1 -> NaN Invalid_operation
+pwmx11 power 0 0 -2 -> NaN Invalid_operation
+pwmx12 power 0 1 1 -> 0
+pwmx13 power 0 1 2 -> 0
+pwmx14 power 0 1 3 -> 0
+pwmx15 power 0 1 4 -> 0
+pwmx16 power 0 1 -1 -> 0
+pwmx17 power 0 1 -2 -> 0
+pwmx18 power 0 2 1 -> 0
+pwmx19 power 0 2 2 -> 0
+pwmx20 power 0 2 3 -> 0
+pwmx21 power 0 2 4 -> 0
+pwmx22 power 0 2 -1 -> 0
+pwmx23 power 0 2 -2 -> 0
+pwmx24 power 0 3 1 -> 0
+pwmx25 power 0 3 2 -> 0
+pwmx26 power 0 3 3 -> 0
+pwmx27 power 0 3 4 -> 0
+pwmx28 power 0 3 -1 -> 0
+pwmx29 power 0 3 -2 -> 0
+pwmx30 power 0 4 1 -> 0
+pwmx31 power 0 4 2 -> 0
+pwmx32 power 0 4 3 -> 0
+pwmx33 power 0 4 4 -> 0
+pwmx34 power 0 4 -1 -> 0
+pwmx35 power 0 4 -2 -> 0
+pwmx36 power 0 5 1 -> 0
+pwmx37 power 0 5 2 -> 0
+pwmx38 power 0 5 3 -> 0
+pwmx39 power 0 5 4 -> 0
+pwmx40 power 0 5 -1 -> 0
+pwmx41 power 0 5 -2 -> 0
+pwmx42 power 1 -0 1 -> 0
+pwmx43 power 1 -0 2 -> 1
+pwmx44 power 1 -0 3 -> 1
+pwmx45 power 1 -0 4 -> 1
+pwmx46 power 1 -0 -1 -> 0
+pwmx47 power 1 -0 -2 -> 1
+pwmx48 power 1 0 1 -> 0
+pwmx49 power 1 0 2 -> 1
+pwmx50 power 1 0 3 -> 1
+pwmx51 power 1 0 4 -> 1
+pwmx52 power 1 0 -1 -> 0
+pwmx53 power 1 0 -2 -> 1
+pwmx54 power 1 1 1 -> 0
+pwmx55 power 1 1 2 -> 1
+pwmx56 power 1 1 3 -> 1
+pwmx57 power 1 1 4 -> 1
+pwmx58 power 1 1 -1 -> 0
+pwmx59 power 1 1 -2 -> 1
+pwmx60 power 1 2 1 -> 0
+pwmx61 power 1 2 2 -> 1
+pwmx62 power 1 2 3 -> 1
+pwmx63 power 1 2 4 -> 1
+pwmx64 power 1 2 -1 -> 0
+pwmx65 power 1 2 -2 -> 1
+pwmx66 power 1 3 1 -> 0
+pwmx67 power 1 3 2 -> 1
+pwmx68 power 1 3 3 -> 1
+pwmx69 power 1 3 4 -> 1
+pwmx70 power 1 3 -1 -> 0
+pwmx71 power 1 3 -2 -> 1
+pwmx72 power 1 4 1 -> 0
+pwmx73 power 1 4 2 -> 1
+pwmx74 power 1 4 3 -> 1
+pwmx75 power 1 4 4 -> 1
+pwmx76 power 1 4 -1 -> 0
+pwmx77 power 1 4 -2 -> 1
+pwmx78 power 1 5 1 -> 0
+pwmx79 power 1 5 2 -> 1
+pwmx80 power 1 5 3 -> 1
+pwmx81 power 1 5 4 -> 1
+pwmx82 power 1 5 -1 -> 0
+pwmx83 power 1 5 -2 -> 1
+pwmx84 power 2 -0 1 -> 0
+pwmx85 power 2 -0 2 -> 1
+pwmx86 power 2 -0 3 -> 1
+pwmx87 power 2 -0 4 -> 1
+pwmx88 power 2 -0 -1 -> 0
+pwmx89 power 2 -0 -2 -> 1
+pwmx90 power 2 0 1 -> 0
+pwmx91 power 2 0 2 -> 1
+pwmx92 power 2 0 3 -> 1
+pwmx93 power 2 0 4 -> 1
+pwmx94 power 2 0 -1 -> 0
+pwmx95 power 2 0 -2 -> 1
+pwmx96 power 2 1 1 -> 0
+pwmx97 power 2 1 2 -> 0
+pwmx98 power 2 1 3 -> 2
+pwmx99 power 2 1 4 -> 2
+pwmx100 power 2 1 -1 -> 0
+pwmx101 power 2 1 -2 -> 0
+pwmx102 power 2 2 1 -> 0
+pwmx103 power 2 2 2 -> 0
+pwmx104 power 2 2 3 -> 1
+pwmx105 power 2 2 4 -> 0
+pwmx106 power 2 2 -1 -> 0
+pwmx107 power 2 2 -2 -> 0
+pwmx108 power 2 3 1 -> 0
+pwmx109 power 2 3 2 -> 0
+pwmx110 power 2 3 3 -> 2
+pwmx111 power 2 3 4 -> 0
+pwmx112 power 2 3 -1 -> 0
+pwmx113 power 2 3 -2 -> 0
+pwmx114 power 2 4 1 -> 0
+pwmx115 power 2 4 2 -> 0
+pwmx116 power 2 4 3 -> 1
+pwmx117 power 2 4 4 -> 0
+pwmx118 power 2 4 -1 -> 0
+pwmx119 power 2 4 -2 -> 0
+pwmx120 power 2 5 1 -> 0
+pwmx121 power 2 5 2 -> 0
+pwmx122 power 2 5 3 -> 2
+pwmx123 power 2 5 4 -> 0
+pwmx124 power 2 5 -1 -> 0
+pwmx125 power 2 5 -2 -> 0
+pwmx126 power 3 -0 1 -> 0
+pwmx127 power 3 -0 2 -> 1
+pwmx128 power 3 -0 3 -> 1
+pwmx129 power 3 -0 4 -> 1
+pwmx130 power 3 -0 -1 -> 0
+pwmx131 power 3 -0 -2 -> 1
+pwmx132 power 3 0 1 -> 0
+pwmx133 power 3 0 2 -> 1
+pwmx134 power 3 0 3 -> 1
+pwmx135 power 3 0 4 -> 1
+pwmx136 power 3 0 -1 -> 0
+pwmx137 power 3 0 -2 -> 1
+pwmx138 power 3 1 1 -> 0
+pwmx139 power 3 1 2 -> 1
+pwmx140 power 3 1 3 -> 0
+pwmx141 power 3 1 4 -> 3
+pwmx142 power 3 1 -1 -> 0
+pwmx143 power 3 1 -2 -> 1
+pwmx144 power 3 2 1 -> 0
+pwmx145 power 3 2 2 -> 1
+pwmx146 power 3 2 3 -> 0
+pwmx147 power 3 2 4 -> 1
+pwmx148 power 3 2 -1 -> 0
+pwmx149 power 3 2 -2 -> 1
+pwmx150 power 3 3 1 -> 0
+pwmx151 power 3 3 2 -> 1
+pwmx152 power 3 3 3 -> 0
+pwmx153 power 3 3 4 -> 3
+pwmx154 power 3 3 -1 -> 0
+pwmx155 power 3 3 -2 -> 1
+pwmx156 power 3 4 1 -> 0
+pwmx157 power 3 4 2 -> 1
+pwmx158 power 3 4 3 -> 0
+pwmx159 power 3 4 4 -> 1
+pwmx160 power 3 4 -1 -> 0
+pwmx161 power 3 4 -2 -> 1
+pwmx162 power 3 5 1 -> 0
+pwmx163 power 3 5 2 -> 1
+pwmx164 power 3 5 3 -> 0
+pwmx165 power 3 5 4 -> 3
+pwmx166 power 3 5 -1 -> 0
+pwmx167 power 3 5 -2 -> 1
+pwmx168 power -0 -0 1 -> NaN Invalid_operation
+pwmx169 power -0 -0 2 -> NaN Invalid_operation
+pwmx170 power -0 -0 3 -> NaN Invalid_operation
+pwmx171 power -0 -0 4 -> NaN Invalid_operation
+pwmx172 power -0 -0 -1 -> NaN Invalid_operation
+pwmx173 power -0 -0 -2 -> NaN Invalid_operation
+pwmx174 power -0 0 1 -> NaN Invalid_operation
+pwmx175 power -0 0 2 -> NaN Invalid_operation
+pwmx176 power -0 0 3 -> NaN Invalid_operation
+pwmx177 power -0 0 4 -> NaN Invalid_operation
+pwmx178 power -0 0 -1 -> NaN Invalid_operation
+pwmx179 power -0 0 -2 -> NaN Invalid_operation
+pwmx180 power -0 1 1 -> -0
+pwmx181 power -0 1 2 -> -0
+pwmx182 power -0 1 3 -> -0
+pwmx183 power -0 1 4 -> -0
+pwmx184 power -0 1 -1 -> -0
+pwmx185 power -0 1 -2 -> -0
+pwmx186 power -0 2 1 -> 0
+pwmx187 power -0 2 2 -> 0
+pwmx188 power -0 2 3 -> 0
+pwmx189 power -0 2 4 -> 0
+pwmx190 power -0 2 -1 -> 0
+pwmx191 power -0 2 -2 -> 0
+pwmx192 power -0 3 1 -> -0
+pwmx193 power -0 3 2 -> -0
+pwmx194 power -0 3 3 -> -0
+pwmx195 power -0 3 4 -> -0
+pwmx196 power -0 3 -1 -> -0
+pwmx197 power -0 3 -2 -> -0
+pwmx198 power -0 4 1 -> 0
+pwmx199 power -0 4 2 -> 0
+pwmx200 power -0 4 3 -> 0
+pwmx201 power -0 4 4 -> 0
+pwmx202 power -0 4 -1 -> 0
+pwmx203 power -0 4 -2 -> 0
+pwmx204 power -0 5 1 -> -0
+pwmx205 power -0 5 2 -> -0
+pwmx206 power -0 5 3 -> -0
+pwmx207 power -0 5 4 -> -0
+pwmx208 power -0 5 -1 -> -0
+pwmx209 power -0 5 -2 -> -0
+pwmx210 power -1 -0 1 -> 0
+pwmx211 power -1 -0 2 -> 1
+pwmx212 power -1 -0 3 -> 1
+pwmx213 power -1 -0 4 -> 1
+pwmx214 power -1 -0 -1 -> 0
+pwmx215 power -1 -0 -2 -> 1
+pwmx216 power -1 0 1 -> 0
+pwmx217 power -1 0 2 -> 1
+pwmx218 power -1 0 3 -> 1
+pwmx219 power -1 0 4 -> 1
+pwmx220 power -1 0 -1 -> 0
+pwmx221 power -1 0 -2 -> 1
+pwmx222 power -1 1 1 -> -0
+pwmx223 power -1 1 2 -> -1
+pwmx224 power -1 1 3 -> -1
+pwmx225 power -1 1 4 -> -1
+pwmx226 power -1 1 -1 -> -0
+pwmx227 power -1 1 -2 -> -1
+pwmx228 power -1 2 1 -> 0
+pwmx229 power -1 2 2 -> 1
+pwmx230 power -1 2 3 -> 1
+pwmx231 power -1 2 4 -> 1
+pwmx232 power -1 2 -1 -> 0
+pwmx233 power -1 2 -2 -> 1
+pwmx234 power -1 3 1 -> -0
+pwmx235 power -1 3 2 -> -1
+pwmx236 power -1 3 3 -> -1
+pwmx237 power -1 3 4 -> -1
+pwmx238 power -1 3 -1 -> -0
+pwmx239 power -1 3 -2 -> -1
+pwmx240 power -1 4 1 -> 0
+pwmx241 power -1 4 2 -> 1
+pwmx242 power -1 4 3 -> 1
+pwmx243 power -1 4 4 -> 1
+pwmx244 power -1 4 -1 -> 0
+pwmx245 power -1 4 -2 -> 1
+pwmx246 power -1 5 1 -> -0
+pwmx247 power -1 5 2 -> -1
+pwmx248 power -1 5 3 -> -1
+pwmx249 power -1 5 4 -> -1
+pwmx250 power -1 5 -1 -> -0
+pwmx251 power -1 5 -2 -> -1
+
+-- Randomly chosen larger values
+pwmx252 power 0 4 7 -> 0
+pwmx253 power -4 5 -9 -> -7
+pwmx254 power -5 4 -9 -> 4
+pwmx255 power -50 29 2 -> -0
+pwmx256 power -1 83 3 -> -1
+pwmx257 power -55 65 -75 -> -25
+pwmx258 power -613 151 -302 -> -9
+pwmx259 power 551 23 -35 -> 31
+pwmx260 power 51 142 942 -> 9
+pwmx261 power 6886 9204 -6091 -> 5034
+pwmx262 power 3057 5890 -3 -> 0
+pwmx263 power 56 4438 5365 -> 521
+pwmx264 power 96237 35669 -46669 -> 30717
+pwmx265 power 40011 34375 -57611 -> 625
+pwmx266 power 44317 38493 -12196 -> 11081
+pwmx267 power -282368 895633 -235870 -> -220928
+pwmx268 power 77328 852553 -405529 -> 129173
+pwmx269 power -929659 855713 650348 -> -90803
+pwmx270 power 907057 6574309 4924768 -> 3018257
+pwmx271 power -2887757 3198492 -5864352 -> 3440113
+pwmx272 power -247310 657371 -7415739 -> -1301840
+pwmx273 power -8399046 45334087 -22395020 -> -18515896
+pwmx274 power 79621397 4850236 1486555 -> 928706
+pwmx275 power 96012251 27971901 69609031 -> 50028729
+pwmx276 power -907335481 74127986 582330017 -> 51527187
+pwmx277 power -141192960 821063826 -260877928 -> 112318560
+pwmx278 power -501711702 934355994 82135143 -> 66586995
+pwmx279 power -9256358075 8900900138 -467222031 -> 95800246
+pwmx280 power -7031964291 1751257483 -935334498 -> -607626609
+pwmx281 power 8494314971 8740197252 107522491 -> 17373655
+pwmx282 power 88306216890 87477374166 -23498076 -> 15129528
+pwmx283 power -33939432478 7170196239 22133583 -> -11017036
+pwmx284 power 19466222767 30410710614 305752056 -> 191509537
+pwmx285 power -864942494008 370558899638 346688856 -> 56956768
+pwmx286 power -525406225603 345700226898 237163621 -> 56789534
+pwmx287 power 464612215955 312474621651 -329485700 -> 1853975
+pwmx288 power -1664283031244 3774474669855 919022867 -> -516034520
+pwmx289 power -3472438506913 7407327549995 -451206854 -> -74594761
+pwmx290 power -4223662152949 6891069279069 499843503 -> -80135290
+pwmx291 power -44022119276816 8168266170326 569679509 -> 375734475
+pwmx292 power -66195891207902 12532690555875 -243262129 -> -113186833
+pwmx293 power -69039911263164 52726605857673 360625196 -> -268662748
+pwmx294 power -299010116699208 885092589359231 -731310123 -> -104103765
+pwmx295 power -202495776299758 501159122943145 -686234870 -> -135511878
+pwmx296 power -595411478087676 836269270472481 -214614901 -> -183440819
+pwmx297 power -139555381056229 1324808520020507 -228944738 -> -218991473
+pwmx298 power 7846356250770543 1798045051036814 -101028985 -> 7805179
+pwmx299 power -4298015862709415 604966944844209 880212893 -> -87408671
+pwmx300 power -37384897538910893 76022206995659295 -930512842 -> -697757157
+pwmx301 power 82166659028005443 23375408251767704 817270700 -> 770697001
+pwmx302 power 97420301198165641 72213282983416924 947519716 -> 610711721
+pwmx303 power 913382043453243607 449681707248500262 211135545 -> 79544899
+pwmx304 power -313823613418052171 534579409610142937 -943062968 -> -446001379
+pwmx305 power -928106516894494093 760020177330116509 -50043994 -> -46010575
+pwmx306 power 4692146601679439796 4565354511806767804 -667339075 -> 480272081
+pwmx307 power 9722256633509177930 7276568791860505790 792675321 -> 182879752
+pwmx308 power 8689899484830064228 429082967129615261 -844555637 -> 270374557
+
+-- All inputs must be integers
+pwmx309 power 2.1 3 1 -> NaN Invalid_operation
+pwmx310 power 0.4 1 5 -> NaN Invalid_operation
+pwmx311 power 2 3.1 5 -> NaN Invalid_operation
+pwmx312 power 13 -1.2 10 -> NaN Invalid_operation
+pwmx313 power 2 3 5.1 -> NaN Invalid_operation
+
+-- Second argument must be nonnegative (-0 is okay)
+pwmx314 power 2 -3 5 -> NaN Invalid_operation
+pwmx315 power 7 -1 1 -> NaN Invalid_operation
+pwmx316 power 0 -2 6 -> NaN Invalid_operation
+
+-- Third argument must be nonzero
+pwmx317 power 13 1003 0 -> NaN Invalid_operation
+pwmx318 power 1 0 0E+987 -> NaN Invalid_operation
+pwmx319 power 0 2 -0 -> NaN Invalid_operation
+
+-- Integers are fine, no matter how they're expressed
+pwmx320 power 13.0 117.00 1E+2 -> 33
+pwmx321 power -2E+3 1.1E+10 -12323 -> 4811
+pwmx322 power 20 0E-300 143 -> 1
+pwmx323 power -20 -0E+1005 1179 -> 1
+pwmx324 power 0E-1001 17 5.6E+4 -> 0
+
+-- Modulus must not exceed precision
+pwmx325 power 0 1 1234567890 -> NaN Invalid_operation
+pwmx326 power 1 0 1000000000 -> NaN Invalid_operation
+pwmx327 power -23 5 -1000000000 -> NaN Invalid_operation
+pwmx328 power 41557 213 -999999999 -> 47650456
+pwmx329 power -2134 199 999999997 -> -946957912
+
+-- Huge base shouldn't present any problems
+pwmx330 power 1.23E+123456791 10123898 17291065 -> 5674045
+
+-- Large exponent, may be slow
+-- (if second argument is 1En then expect O(n) running time)
+pwmx331 power 1000288896 9.87E+12347 93379908 -> 43224924
+
+-- Triple NaN propagation (adapted from examples in fma.decTest)
+pwmx400 power  NaN2  NaN3  NaN5   ->  NaN2
+pwmx401 power  1     NaN3  NaN5   ->  NaN3
+pwmx402 power  1     1     NaN5   ->  NaN5
+pwmx403 power  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
+pwmx404 power  1     sNaN2 sNaN3  ->  NaN2 Invalid_operation
+pwmx405 power  1     1     sNaN3  ->  NaN3 Invalid_operation
+pwmx406 power  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
+pwmx407 power  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation
+pwmx408 power  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation
+
+-- Infinities not allowed
+pwmx410 power Inf 1 1 -> NaN Invalid_operation
+pwmx411 power 1 Inf 1 -> NaN Invalid_operation
+pwmx412 power 1 1 Inf -> NaN Invalid_operation
+pwmx413 power -Inf 1 1 -> NaN Invalid_operation
+pwmx414 power 1 -Inf 1 -> NaN Invalid_operation
+pwmx415 power 1 1 -Inf -> NaN Invalid_operation
+
+-- Just for fun: 1729 is a Carmichael number
+pwmx420 power 0 1728 1729 -> 0
+pwmx421 power 1 1728 1729 -> 1
+pwmx422 power 2 1728 1729 -> 1
+pwmx423 power 3 1728 1729 -> 1
+pwmx424 power 4 1728 1729 -> 1
+pwmx425 power 5 1728 1729 -> 1
+pwmx426 power 6 1728 1729 -> 1
+pwmx427 power 7 1728 1729 -> 742
+pwmx428 power 8 1728 1729 -> 1
+pwmx429 power 9 1728 1729 -> 1
+pwmx430 power 10 1728 1729 -> 1
+pwmx431 power 11 1728 1729 -> 1
+pwmx432 power 12 1728 1729 -> 1
+pwmx433 power 13 1728 1729 -> 533
+pwmx434 power 14 1728 1729 -> 742
+pwmx435 power 15 1728 1729 -> 1
+pwmx436 power 16 1728 1729 -> 1
+pwmx437 power 17 1728 1729 -> 1
+pwmx438 power 18 1728 1729 -> 1
+pwmx439 power 19 1728 1729 -> 456
+pwmx440 power 20 1728 1729 -> 1
diff --git a/Lib/test/decimaltestdata/fma.decTest b/Lib/test/decimaltestdata/fma.decTest
new file mode 100644
index 0000000..d7caa26
--- /dev/null
+++ b/Lib/test/decimaltestdata/fma.decTest
@@ -0,0 +1,3426 @@
+------------------------------------------------------------------------

+-- fma.decTest -- decimal fused multiply add                          --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+-- These tests comprese three parts:

+--   1. Sanity checks and other three-operand tests (especially those

+--      where the fused operation makes a difference)

+--   2. Multiply tests (third operand is neutral zero [0E+emax])

+--   3. Addition tests (first operand is 1)

+-- The multiply and addition tests are extensive because FMA may have

+-- its own dedicated multiplication or addition routine(s), and they

+-- also inherently check the left-to-right properties.

+

+-- Sanity checks

+fmax0001 fma  1   1   1 ->   2

+fmax0002 fma  1   1   2 ->   3

+fmax0003 fma  2   2   3 ->   7

+fmax0004 fma  9   9   9 ->  90

+fmax0005 fma -1   1   1 ->   0

+fmax0006 fma -1   1   2 ->   1

+fmax0007 fma -2   2   3 ->  -1

+fmax0008 fma -9   9   9 -> -72

+fmax0011 fma  1  -1   1 ->   0

+fmax0012 fma  1  -1   2 ->   1

+fmax0013 fma  2  -2   3 ->  -1

+fmax0014 fma  9  -9   9 -> -72

+fmax0015 fma  1   1  -1 ->   0

+fmax0016 fma  1   1  -2 ->  -1

+fmax0017 fma  2   2  -3 ->   1

+fmax0018 fma  9   9  -9 ->  72

+fmax0019 fma  3   5   7 ->  22

+fmax0029 fma  3  -5   7 ->  -8

+

+-- non-integer exacts

+fma0100  fma    25.2   63.6   -438  ->  1164.72

+fma0101  fma   0.301  0.380    334  ->  334.114380

+fma0102  fma    49.2   -4.8   23.3  ->  -212.86

+fma0103  fma    4.22  0.079  -94.6  ->  -94.26662

+fma0104  fma     903  0.797  0.887  ->  720.578

+fma0105  fma    6.13   -161   65.9  ->  -921.03

+fma0106  fma    28.2    727   5.45  ->  20506.85

+fma0107  fma       4    605    688  ->  3108

+fma0108  fma    93.3   0.19  0.226  ->  17.953

+fma0109  fma   0.169   -341   5.61  ->  -52.019

+fma0110  fma   -72.2     30  -51.2  ->  -2217.2

+fma0111  fma  -0.409     13   20.4  ->  15.083

+fma0112  fma     317   77.0   19.0  ->  24428.0

+fma0113  fma      47   6.58   1.62  ->  310.88

+fma0114  fma    1.36  0.984  0.493  ->  1.83124

+fma0115  fma    72.7    274   1.56  ->  19921.36

+fma0116  fma     335    847     83  ->  283828

+fma0117  fma     666  0.247   25.4  ->  189.902

+fma0118  fma   -3.87   3.06   78.0  ->  66.1578

+fma0119  fma   0.742    192   35.6  ->  178.064

+fma0120  fma   -91.6   5.29  0.153  ->  -484.411

+

+-- cases where result is different from separate multiply + add; each

+-- is preceded by the result of unfused multiply and add

+-- [this is about 20% of all similar  cases in general]

+--               888565290   1557.96930  -86087.7578  -> 1.38435735E+12

+fma0201  fma     888565290   1557.96930  -86087.7578  -> 1.38435736E+12  Inexact Rounded

+--             -85519342.9    735155419     42010431  -> -6.28700084E+16

+fma0205  fma   -85519342.9    735155419     42010431  -> -6.28700083E+16 Inexact Rounded

+--                -98025.5  -294603.472   10414348.2  -> 2.88890669E+10

+fma0208  fma      -98025.5  -294603.472   10414348.2  -> 2.88890670E+10  Inexact Rounded

+--              5967627.39   83526540.6   498494.810  -> 4.98455271E+14

+fma0211  fma    5967627.39   83526540.6   498494.810  -> 4.98455272E+14  Inexact Rounded

+--               3456.9433    874.39518   197866.615  ->  3220601.18

+fma0216  fma     3456.9433    874.39518   197866.615  ->  3220601.17     Inexact Rounded

+--              62769.8287   2096.98927    48.420317  ->  131627705

+fma0218  fma    62769.8287   2096.98927    48.420317  ->  131627706      Inexact Rounded

+--               -68.81500   59961113.9     -8988862  -> -4.13521291E+9

+fma0219  fma     -68.81500   59961113.9     -8988862  -> -4.13521292E+9  Inexact Rounded

+--              2126341.02   63491.5152    302427455  -> 1.35307040E+11

+fma0226  fma    2126341.02   63491.5152    302427455  -> 1.35307041E+11  Inexact Rounded

+

+

+-- Infinite combinations

+fmax0800 fma  Inf   Inf   Inf    ->  Infinity

+fmax0801 fma  Inf   Inf  -Inf    ->  NaN Invalid_operation

+fmax0802 fma  Inf  -Inf   Inf    ->  NaN Invalid_operation

+fmax0803 fma  Inf  -Inf  -Inf    -> -Infinity

+fmax0804 fma -Inf   Inf   Inf    ->  NaN Invalid_operation

+fmax0805 fma -Inf   Inf  -Inf    -> -Infinity

+fmax0806 fma -Inf  -Inf   Inf    ->  Infinity

+fmax0807 fma -Inf  -Inf  -Inf    ->  NaN Invalid_operation

+fmax0808 fma -Inf   0       1    ->  NaN Invalid_operation

+fmax0809 fma -Inf   0     NaN    ->  NaN Invalid_operation

+

+-- Triple NaN propagation

+fmax0900 fma  NaN2  NaN3  NaN5   ->  NaN2

+fmax0901 fma  0     NaN3  NaN5   ->  NaN3

+fmax0902 fma  0     0     NaN5   ->  NaN5

+-- first sNaN wins (consider qNaN from earlier sNaN being

+-- overridden by an sNaN in third operand)

+fmax0903 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation

+fmax0904 fma  0     sNaN2 sNaN3  ->  NaN2 Invalid_operation

+fmax0905 fma  0     0     sNaN3  ->  NaN3 Invalid_operation

+fmax0906 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation

+fmax0907 fma  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation

+fmax0908 fma  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation

+

+-- MULTIPLICATION TESTS ------------------------------------------------

+-- sanity checks (as base, above)

+fmax2000 fma 2      2  0E+999999  -> 4

+fmax2001 fma 2      3  0E+999999  -> 6

+fmax2002 fma 5      1  0E+999999  -> 5

+fmax2003 fma 5      2  0E+999999  -> 10

+fmax2004 fma 1.20   2  0E+999999  -> 2.40

+fmax2005 fma 1.20   0  0E+999999  -> 0.00

+fmax2006 fma 1.20  -2  0E+999999  -> -2.40

+fmax2007 fma -1.20  2  0E+999999  -> -2.40

+fmax2008 fma -1.20  0  0E+999999  -> 0.00

+fmax2009 fma -1.20 -2  0E+999999  -> 2.40

+fmax2010 fma 5.09 7.1  0E+999999  -> 36.139

+fmax2011 fma 2.5    4  0E+999999  -> 10.0

+fmax2012 fma 2.50   4  0E+999999  -> 10.00

+fmax2013 fma 1.23456789 1.00000000  0E+999999  -> 1.23456789 Rounded

+fmax2014 fma 9.999999999 9.999999999  0E+999999  -> 100.000000 Inexact Rounded

+fmax2015 fma 2.50   4  0E+999999  -> 10.00

+precision: 6

+fmax2016 fma 2.50   4  0E+999999  -> 10.00

+fmax2017 fma  9.999999  9.999999  0E+999999  ->  100.000 Inexact Rounded

+fmax2018 fma  9.999999 -9.999999  0E+999999  -> -100.000 Inexact Rounded

+fmax2019 fma -9.999999  9.999999  0E+999999  -> -100.000 Inexact Rounded

+fmax2020 fma -9.999999 -9.999999  0E+999999  ->  100.000 Inexact Rounded

+

+-- 1999.12.21: next one is a edge case if intermediate longs are used

+precision: 15

+fmax2059 fma 999999999999 9765625  0E+999999  -> 9.76562499999023E+18 Inexact Rounded

+precision: 30

+fmax2160 fma 999999999999 9765625  0E+999999  -> 9765624999990234375

+precision: 9

+-----

+

+-- zeros, etc.

+fmax2021 fma  0      0      0E+999999  ->  0

+fmax2022 fma  0     -0      0E+999999  ->  0

+fmax2023 fma -0      0      0E+999999  ->  0

+fmax2024 fma -0     -0      0E+999999  ->  0

+fmax2025 fma -0.0   -0.0    0E+999999  ->  0.00

+fmax2026 fma -0.0   -0.0    0E+999999  ->  0.00

+fmax2027 fma -0.0   -0.0    0E+999999  ->  0.00

+fmax2028 fma -0.0   -0.0    0E+999999  ->  0.00

+fmax2030 fma  5.00   1E-3   0E+999999  ->  0.00500

+fmax2031 fma  00.00  0.000  0E+999999  ->  0.00000

+fmax2032 fma  00.00  0E-3   0E+999999  ->  0.00000     -- rhs is 0

+fmax2033 fma  0E-3   00.00  0E+999999  ->  0.00000     -- lhs is 0

+fmax2034 fma -5.00   1E-3   0E+999999  -> -0.00500

+fmax2035 fma -00.00  0.000  0E+999999  ->  0.00000

+fmax2036 fma -00.00  0E-3   0E+999999  ->  0.00000     -- rhs is 0

+fmax2037 fma -0E-3   00.00  0E+999999  ->  0.00000     -- lhs is 0

+fmax2038 fma  5.00  -1E-3   0E+999999  -> -0.00500

+fmax2039 fma  00.00 -0.000  0E+999999  ->  0.00000

+fmax2040 fma  00.00 -0E-3   0E+999999  ->  0.00000     -- rhs is 0

+fmax2041 fma  0E-3  -00.00  0E+999999  ->  0.00000     -- lhs is 0

+fmax2042 fma -5.00  -1E-3   0E+999999  ->  0.00500

+fmax2043 fma -00.00 -0.000  0E+999999  ->  0.00000

+fmax2044 fma -00.00 -0E-3   0E+999999  ->  0.00000     -- rhs is 0

+fmax2045 fma -0E-3  -00.00  0E+999999  ->  0.00000     -- lhs is 0

+

+-- examples from decarith multiply

+fmax2050 fma 1.20 3         0E+999999  -> 3.60

+fmax2051 fma 7    3         0E+999999  -> 21

+fmax2052 fma 0.9  0.8       0E+999999  -> 0.72

+fmax2053 fma 0.9  -0        0E+999999  -> 0.0

+fmax2054 fma 654321 654321  0E+999999  -> 4.28135971E+11  Inexact Rounded

+

+fmax2060 fma 123.45 1e7   0E+999999  ->  1.2345E+9

+fmax2061 fma 123.45 1e8   0E+999999  ->  1.2345E+10

+fmax2062 fma 123.45 1e+9  0E+999999  ->  1.2345E+11

+fmax2063 fma 123.45 1e10  0E+999999  ->  1.2345E+12

+fmax2064 fma 123.45 1e11  0E+999999  ->  1.2345E+13

+fmax2065 fma 123.45 1e12  0E+999999  ->  1.2345E+14

+fmax2066 fma 123.45 1e13  0E+999999  ->  1.2345E+15

+

+

+-- test some intermediate lengths

+precision: 9

+fmax2080 fma 0.1 123456789           0E+999999  -> 12345678.9

+fmax2081 fma 0.1 1234567891          0E+999999  -> 123456789 Inexact Rounded

+fmax2082 fma 0.1 12345678912         0E+999999  -> 1.23456789E+9 Inexact Rounded

+fmax2083 fma 0.1 12345678912345      0E+999999  -> 1.23456789E+12 Inexact Rounded

+fmax2084 fma 0.1 123456789           0E+999999  -> 12345678.9

+precision: 8

+fmax2085 fma 0.1 12345678912         0E+999999  -> 1.2345679E+9 Inexact Rounded

+fmax2086 fma 0.1 12345678912345      0E+999999  -> 1.2345679E+12 Inexact Rounded

+precision: 7

+fmax2087 fma 0.1 12345678912         0E+999999  -> 1.234568E+9 Inexact Rounded

+fmax2088 fma 0.1 12345678912345      0E+999999  -> 1.234568E+12 Inexact Rounded

+

+precision: 9

+fmax2090 fma 123456789          0.1  0E+999999  -> 12345678.9

+fmax2091 fma 1234567891         0.1  0E+999999  -> 123456789 Inexact Rounded

+fmax2092 fma 12345678912        0.1  0E+999999  -> 1.23456789E+9 Inexact Rounded

+fmax2093 fma 12345678912345     0.1  0E+999999  -> 1.23456789E+12 Inexact Rounded

+fmax2094 fma 123456789          0.1  0E+999999  -> 12345678.9

+precision: 8

+fmax2095 fma 12345678912        0.1  0E+999999  -> 1.2345679E+9 Inexact Rounded

+fmax2096 fma 12345678912345     0.1  0E+999999  -> 1.2345679E+12 Inexact Rounded

+precision: 7

+fmax2097 fma 12345678912        0.1  0E+999999  -> 1.234568E+9 Inexact Rounded

+fmax2098 fma 12345678912345     0.1  0E+999999  -> 1.234568E+12 Inexact Rounded

+

+-- test some more edge cases and carries

+maxexponent: 9999

+minexponent: -9999

+precision: 33

+fmax2101 fma 9 9    0E+999999  -> 81

+fmax2102 fma 9 90    0E+999999  -> 810

+fmax2103 fma 9 900    0E+999999  -> 8100

+fmax2104 fma 9 9000    0E+999999  -> 81000

+fmax2105 fma 9 90000    0E+999999  -> 810000

+fmax2106 fma 9 900000    0E+999999  -> 8100000

+fmax2107 fma 9 9000000    0E+999999  -> 81000000

+fmax2108 fma 9 90000000    0E+999999  -> 810000000

+fmax2109 fma 9 900000000    0E+999999  -> 8100000000

+fmax2110 fma 9 9000000000    0E+999999  -> 81000000000

+fmax2111 fma 9 90000000000    0E+999999  -> 810000000000

+fmax2112 fma 9 900000000000    0E+999999  -> 8100000000000

+fmax2113 fma 9 9000000000000    0E+999999  -> 81000000000000

+fmax2114 fma 9 90000000000000    0E+999999  -> 810000000000000

+fmax2115 fma 9 900000000000000    0E+999999  -> 8100000000000000

+fmax2116 fma 9 9000000000000000    0E+999999  -> 81000000000000000

+fmax2117 fma 9 90000000000000000    0E+999999  -> 810000000000000000

+fmax2118 fma 9 900000000000000000    0E+999999  -> 8100000000000000000

+fmax2119 fma 9 9000000000000000000    0E+999999  -> 81000000000000000000

+fmax2120 fma 9 90000000000000000000    0E+999999  -> 810000000000000000000

+fmax2121 fma 9 900000000000000000000    0E+999999  -> 8100000000000000000000

+fmax2122 fma 9 9000000000000000000000    0E+999999  -> 81000000000000000000000

+fmax2123 fma 9 90000000000000000000000    0E+999999  -> 810000000000000000000000

+-- test some more edge cases without carries

+fmax2131 fma 3 3    0E+999999  -> 9

+fmax2132 fma 3 30    0E+999999  -> 90

+fmax2133 fma 3 300    0E+999999  -> 900

+fmax2134 fma 3 3000    0E+999999  -> 9000

+fmax2135 fma 3 30000    0E+999999  -> 90000

+fmax2136 fma 3 300000    0E+999999  -> 900000

+fmax2137 fma 3 3000000    0E+999999  -> 9000000

+fmax2138 fma 3 30000000    0E+999999  -> 90000000

+fmax2139 fma 3 300000000    0E+999999  -> 900000000

+fmax2140 fma 3 3000000000    0E+999999  -> 9000000000

+fmax2141 fma 3 30000000000    0E+999999  -> 90000000000

+fmax2142 fma 3 300000000000    0E+999999  -> 900000000000

+fmax2143 fma 3 3000000000000    0E+999999  -> 9000000000000

+fmax2144 fma 3 30000000000000    0E+999999  -> 90000000000000

+fmax2145 fma 3 300000000000000    0E+999999  -> 900000000000000

+fmax2146 fma 3 3000000000000000    0E+999999  -> 9000000000000000

+fmax2147 fma 3 30000000000000000    0E+999999  -> 90000000000000000

+fmax2148 fma 3 300000000000000000    0E+999999  -> 900000000000000000

+fmax2149 fma 3 3000000000000000000    0E+999999  -> 9000000000000000000

+fmax2150 fma 3 30000000000000000000    0E+999999  -> 90000000000000000000

+fmax2151 fma 3 300000000000000000000    0E+999999  -> 900000000000000000000

+fmax2152 fma 3 3000000000000000000000    0E+999999  -> 9000000000000000000000

+fmax2153 fma 3 30000000000000000000000    0E+999999  -> 90000000000000000000000

+

+maxexponent: 999999

+minexponent: -999999

+precision: 9

+-- test some cases that are close to exponent overflow/underflow

+fmax2170 fma 1 9e999999     0E+999999  -> 9E+999999

+fmax2171 fma 1 9.9e999999   0E+999999  -> 9.9E+999999

+fmax2172 fma 1 9.99e999999  0E+999999  -> 9.99E+999999

+fmax2173 fma 9e999999    1  0E+999999  -> 9E+999999

+fmax2174 fma 9.9e999999  1  0E+999999  -> 9.9E+999999

+fmax2176 fma 9.99e999999 1  0E+999999  -> 9.99E+999999

+fmax2177 fma 1 9.99999e999999  0E+999999  -> 9.99999E+999999

+fmax2178 fma 9.99999e999999 1  0E+999999  -> 9.99999E+999999

+

+fmax2180 fma 0.1 9e-999998    0E+999999  -> 9E-999999

+fmax2181 fma 0.1 99e-999998   0E+999999  -> 9.9E-999998

+fmax2182 fma 0.1 999e-999998  0E+999999  -> 9.99E-999997

+

+fmax2183 fma 0.1 9e-999998      0E+999999  -> 9E-999999

+fmax2184 fma 0.1 99e-999998     0E+999999  -> 9.9E-999998

+fmax2185 fma 0.1 999e-999998    0E+999999  -> 9.99E-999997

+fmax2186 fma 0.1 999e-999997    0E+999999  -> 9.99E-999996

+fmax2187 fma 0.1 9999e-999997   0E+999999  -> 9.999E-999995

+fmax2188 fma 0.1 99999e-999997  0E+999999  -> 9.9999E-999994

+

+fmax2190 fma 1 9e-999998    0E+999999  -> 9E-999998

+fmax2191 fma 1 99e-999998   0E+999999  -> 9.9E-999997

+fmax2192 fma 1 999e-999998  0E+999999  -> 9.99E-999996

+fmax2193 fma 9e-999998   1  0E+999999  -> 9E-999998

+fmax2194 fma 99e-999998  1  0E+999999  -> 9.9E-999997

+fmax2195 fma 999e-999998 1  0E+999999  -> 9.99E-999996

+

+-- long operand triangle

+precision: 33

+fmax2246 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916511992830 Inexact Rounded

+precision: 32

+fmax2247 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651199283  Inexact Rounded

+precision: 31

+fmax2248 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165119928   Inexact Rounded

+precision: 30

+fmax2249 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916511993    Inexact Rounded

+precision: 29

+fmax2250 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651199     Inexact Rounded

+precision: 28

+fmax2251 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165120      Inexact Rounded

+precision: 27

+fmax2252 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916512       Inexact Rounded

+precision: 26

+fmax2253 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651        Inexact Rounded

+precision: 25

+fmax2254 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165         Inexact Rounded

+precision: 24

+fmax2255 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671917          Inexact Rounded

+precision: 23

+fmax2256 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967192           Inexact Rounded

+precision: 22

+fmax2257 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719            Inexact Rounded

+precision: 21

+fmax2258 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369672             Inexact Rounded

+precision: 20

+fmax2259 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967              Inexact Rounded

+precision: 19

+fmax2260 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933697               Inexact Rounded

+precision: 18

+fmax2261 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193370                Inexact Rounded

+precision: 17

+fmax2262 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119337                 Inexact Rounded

+precision: 16

+fmax2263 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011934                  Inexact Rounded

+precision: 15

+fmax2264 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193                   Inexact Rounded

+precision: 14

+fmax2265 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119                    Inexact Rounded

+precision: 13

+fmax2266 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908012                     Inexact Rounded

+precision: 12

+fmax2267 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801                      Inexact Rounded

+precision: 11

+fmax2268 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080                       Inexact Rounded

+precision: 10

+fmax2269 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908                        Inexact Rounded

+precision:  9

+fmax2270 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.291                         Inexact Rounded

+precision:  8

+fmax2271 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29                          Inexact Rounded

+precision:  7

+fmax2272 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.3                           Inexact Rounded

+precision:  6

+fmax2273 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433                            Inexact Rounded

+precision:  5

+fmax2274 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.4543E+5                         Inexact Rounded

+precision:  4

+fmax2275 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.454E+5                         Inexact Rounded

+precision:  3

+fmax2276 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.45E+5                         Inexact Rounded

+precision:  2

+fmax2277 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.5E+5                         Inexact Rounded

+precision:  1

+fmax2278 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1E+5                          Inexact Rounded

+

+-- test some edge cases with exact rounding

+maxexponent: 9999

+minexponent: -9999

+precision: 9

+fmax2301 fma 9 9    0E+999999  -> 81

+fmax2302 fma 9 90    0E+999999  -> 810

+fmax2303 fma 9 900    0E+999999  -> 8100

+fmax2304 fma 9 9000    0E+999999  -> 81000

+fmax2305 fma 9 90000    0E+999999  -> 810000

+fmax2306 fma 9 900000    0E+999999  -> 8100000

+fmax2307 fma 9 9000000    0E+999999  -> 81000000

+fmax2308 fma 9 90000000    0E+999999  -> 810000000

+fmax2309 fma 9 900000000    0E+999999  -> 8.10000000E+9   Rounded

+fmax2310 fma 9 9000000000    0E+999999  -> 8.10000000E+10  Rounded

+fmax2311 fma 9 90000000000    0E+999999  -> 8.10000000E+11  Rounded

+fmax2312 fma 9 900000000000    0E+999999  -> 8.10000000E+12  Rounded

+fmax2313 fma 9 9000000000000    0E+999999  -> 8.10000000E+13  Rounded

+fmax2314 fma 9 90000000000000    0E+999999  -> 8.10000000E+14  Rounded

+fmax2315 fma 9 900000000000000    0E+999999  -> 8.10000000E+15  Rounded

+fmax2316 fma 9 9000000000000000    0E+999999  -> 8.10000000E+16  Rounded

+fmax2317 fma 9 90000000000000000    0E+999999  -> 8.10000000E+17  Rounded

+fmax2318 fma 9 900000000000000000    0E+999999  -> 8.10000000E+18  Rounded

+fmax2319 fma 9 9000000000000000000    0E+999999  -> 8.10000000E+19  Rounded

+fmax2320 fma 9 90000000000000000000    0E+999999  -> 8.10000000E+20  Rounded

+fmax2321 fma 9 900000000000000000000    0E+999999  -> 8.10000000E+21  Rounded

+fmax2322 fma 9 9000000000000000000000    0E+999999  -> 8.10000000E+22  Rounded

+fmax2323 fma 9 90000000000000000000000    0E+999999  -> 8.10000000E+23  Rounded

+

+-- fastpath breakers

+precision:   29

+fmax2330 fma 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603  0E+999999  -> 1.6487212707001281468486507878 Inexact Rounded

+precision:   55

+fmax2331 fma 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428  0E+999999  -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded

+

+

+-- tryzeros cases

+precision:   7

+rounding:    half_up

+maxExponent: 92

+minexponent: -92

+fmax2504  fma  0E-60 1000E-60   0E+999999  -> 0E-98 Clamped

+fmax2505  fma  100E+60 0E+60    0E+999999  -> 0E+92 Clamped

+

+-- mixed with zeros

+maxexponent: 999999

+minexponent: -999999

+precision: 9

+fmax2541 fma  0    -1      0E+999999  ->  0

+fmax2542 fma -0    -1      0E+999999  ->  0

+fmax2543 fma  0     1      0E+999999  ->  0

+fmax2544 fma -0     1      0E+999999  ->  0

+fmax2545 fma -1     0      0E+999999  ->  0

+fmax2546 fma -1    -0      0E+999999  ->  0

+fmax2547 fma  1     0      0E+999999  ->  0

+fmax2548 fma  1    -0      0E+999999  ->  0

+

+fmax2551 fma  0.0  -1      0E+999999  ->  0.0

+fmax2552 fma -0.0  -1      0E+999999  ->  0.0

+fmax2553 fma  0.0   1      0E+999999  ->  0.0

+fmax2554 fma -0.0   1      0E+999999  ->  0.0

+fmax2555 fma -1.0   0      0E+999999  ->  0.0

+fmax2556 fma -1.0  -0      0E+999999  ->  0.0

+fmax2557 fma  1.0   0      0E+999999  ->  0.0

+fmax2558 fma  1.0  -0      0E+999999  ->  0.0

+

+fmax2561 fma  0    -1.0    0E+999999  ->  0.0

+fmax2562 fma -0    -1.0    0E+999999  ->  0.0

+fmax2563 fma  0     1.0    0E+999999  ->  0.0

+fmax2564 fma -0     1.0    0E+999999  ->  0.0

+fmax2565 fma -1     0.0    0E+999999  ->  0.0

+fmax2566 fma -1    -0.0    0E+999999  ->  0.0

+fmax2567 fma  1     0.0    0E+999999  ->  0.0

+fmax2568 fma  1    -0.0    0E+999999  ->  0.0

+

+fmax2571 fma  0.0  -1.0    0E+999999  ->  0.00

+fmax2572 fma -0.0  -1.0    0E+999999  ->  0.00

+fmax2573 fma  0.0   1.0    0E+999999  ->  0.00

+fmax2574 fma -0.0   1.0    0E+999999  ->  0.00

+fmax2575 fma -1.0   0.0    0E+999999  ->  0.00

+fmax2576 fma -1.0  -0.0    0E+999999  ->  0.00

+fmax2577 fma  1.0   0.0    0E+999999  ->  0.00

+fmax2578 fma  1.0  -0.0    0E+999999  ->  0.00

+

+

+-- Specials

+fmax2580 fma  Inf  -Inf    0E+999999  -> -Infinity

+fmax2581 fma  Inf  -1000   0E+999999  -> -Infinity

+fmax2582 fma  Inf  -1      0E+999999  -> -Infinity

+fmax2583 fma  Inf  -0      0E+999999  ->  NaN  Invalid_operation

+fmax2584 fma  Inf   0      0E+999999  ->  NaN  Invalid_operation

+fmax2585 fma  Inf   1      0E+999999  ->  Infinity

+fmax2586 fma  Inf   1000   0E+999999  ->  Infinity

+fmax2587 fma  Inf   Inf    0E+999999  ->  Infinity

+fmax2588 fma -1000  Inf    0E+999999  -> -Infinity

+fmax2589 fma -Inf   Inf    0E+999999  -> -Infinity

+fmax2590 fma -1     Inf    0E+999999  -> -Infinity

+fmax2591 fma -0     Inf    0E+999999  ->  NaN  Invalid_operation

+fmax2592 fma  0     Inf    0E+999999  ->  NaN  Invalid_operation

+fmax2593 fma  1     Inf    0E+999999  ->  Infinity

+fmax2594 fma  1000  Inf    0E+999999  ->  Infinity

+fmax2595 fma  Inf   Inf    0E+999999  ->  Infinity

+

+fmax2600 fma -Inf  -Inf    0E+999999  ->  Infinity

+fmax2601 fma -Inf  -1000   0E+999999  ->  Infinity

+fmax2602 fma -Inf  -1      0E+999999  ->  Infinity

+fmax2603 fma -Inf  -0      0E+999999  ->  NaN  Invalid_operation

+fmax2604 fma -Inf   0      0E+999999  ->  NaN  Invalid_operation

+fmax2605 fma -Inf   1      0E+999999  -> -Infinity

+fmax2606 fma -Inf   1000   0E+999999  -> -Infinity

+fmax2607 fma -Inf   Inf    0E+999999  -> -Infinity

+fmax2608 fma -1000  Inf    0E+999999  -> -Infinity

+fmax2609 fma -Inf  -Inf    0E+999999  ->  Infinity

+fmax2610 fma -1    -Inf    0E+999999  ->  Infinity

+fmax2611 fma -0    -Inf    0E+999999  ->  NaN  Invalid_operation

+fmax2612 fma  0    -Inf    0E+999999  ->  NaN  Invalid_operation

+fmax2613 fma  1    -Inf    0E+999999  -> -Infinity

+fmax2614 fma  1000 -Inf    0E+999999  -> -Infinity

+fmax2615 fma  Inf  -Inf    0E+999999  -> -Infinity

+

+fmax2621 fma  NaN -Inf     0E+999999  ->  NaN

+fmax2622 fma  NaN -1000    0E+999999  ->  NaN

+fmax2623 fma  NaN -1       0E+999999  ->  NaN

+fmax2624 fma  NaN -0       0E+999999  ->  NaN

+fmax2625 fma  NaN  0       0E+999999  ->  NaN

+fmax2626 fma  NaN  1       0E+999999  ->  NaN

+fmax2627 fma  NaN  1000    0E+999999  ->  NaN

+fmax2628 fma  NaN  Inf     0E+999999  ->  NaN

+fmax2629 fma  NaN  NaN     0E+999999  ->  NaN

+fmax2630 fma -Inf  NaN     0E+999999  ->  NaN

+fmax2631 fma -1000 NaN     0E+999999  ->  NaN

+fmax2632 fma -1    NaN     0E+999999  ->  NaN

+fmax2633 fma -0    NaN     0E+999999  ->  NaN

+fmax2634 fma  0    NaN     0E+999999  ->  NaN

+fmax2635 fma  1    NaN     0E+999999  ->  NaN

+fmax2636 fma  1000 NaN     0E+999999  ->  NaN

+fmax2637 fma  Inf  NaN     0E+999999  ->  NaN

+

+fmax2641 fma  sNaN -Inf    0E+999999  ->  NaN  Invalid_operation

+fmax2642 fma  sNaN -1000   0E+999999  ->  NaN  Invalid_operation

+fmax2643 fma  sNaN -1      0E+999999  ->  NaN  Invalid_operation

+fmax2644 fma  sNaN -0      0E+999999  ->  NaN  Invalid_operation

+fmax2645 fma  sNaN  0      0E+999999  ->  NaN  Invalid_operation

+fmax2646 fma  sNaN  1      0E+999999  ->  NaN  Invalid_operation

+fmax2647 fma  sNaN  1000   0E+999999  ->  NaN  Invalid_operation

+fmax2648 fma  sNaN  NaN    0E+999999  ->  NaN  Invalid_operation

+fmax2649 fma  sNaN sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2650 fma  NaN  sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2651 fma -Inf  sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2652 fma -1000 sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2653 fma -1    sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2654 fma -0    sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2655 fma  0    sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2656 fma  1    sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2657 fma  1000 sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2658 fma  Inf  sNaN    0E+999999  ->  NaN  Invalid_operation

+fmax2659 fma  NaN  sNaN    0E+999999  ->  NaN  Invalid_operation

+

+-- propagating NaNs

+fmax2661 fma  NaN9 -Inf    0E+999999  ->  NaN9

+fmax2662 fma  NaN8  999    0E+999999  ->  NaN8

+fmax2663 fma  NaN71 Inf    0E+999999  ->  NaN71

+fmax2664 fma  NaN6  NaN5   0E+999999  ->  NaN6

+fmax2665 fma -Inf   NaN4   0E+999999  ->  NaN4

+fmax2666 fma -999   NaN33  0E+999999  ->  NaN33

+fmax2667 fma  Inf   NaN2   0E+999999  ->  NaN2

+

+fmax2671 fma  sNaN99 -Inf     0E+999999  ->  NaN99 Invalid_operation

+fmax2672 fma  sNaN98 -11      0E+999999  ->  NaN98 Invalid_operation

+fmax2673 fma  sNaN97  NaN     0E+999999  ->  NaN97 Invalid_operation

+fmax2674 fma  sNaN16 sNaN94   0E+999999  ->  NaN16 Invalid_operation

+fmax2675 fma  NaN95  sNaN93   0E+999999  ->  NaN93 Invalid_operation

+fmax2676 fma -Inf    sNaN92   0E+999999  ->  NaN92 Invalid_operation

+fmax2677 fma  088    sNaN91   0E+999999  ->  NaN91 Invalid_operation

+fmax2678 fma  Inf    sNaN90   0E+999999  ->  NaN90 Invalid_operation

+fmax2679 fma  NaN    sNaN89   0E+999999  ->  NaN89 Invalid_operation

+

+fmax2681 fma -NaN9 -Inf    0E+999999  -> -NaN9

+fmax2682 fma -NaN8  999    0E+999999  -> -NaN8

+fmax2683 fma -NaN71 Inf    0E+999999  -> -NaN71

+fmax2684 fma -NaN6 -NaN5   0E+999999  -> -NaN6

+fmax2685 fma -Inf  -NaN4   0E+999999  -> -NaN4

+fmax2686 fma -999  -NaN33  0E+999999  -> -NaN33

+fmax2687 fma  Inf  -NaN2   0E+999999  -> -NaN2

+

+fmax2691 fma -sNaN99 -Inf     0E+999999  -> -NaN99 Invalid_operation

+fmax2692 fma -sNaN98 -11      0E+999999  -> -NaN98 Invalid_operation

+fmax2693 fma -sNaN97  NaN     0E+999999  -> -NaN97 Invalid_operation

+fmax2694 fma -sNaN16 -sNaN94  0E+999999  -> -NaN16 Invalid_operation

+fmax2695 fma -NaN95  -sNaN93  0E+999999  -> -NaN93 Invalid_operation

+fmax2696 fma -Inf    -sNaN92  0E+999999  -> -NaN92 Invalid_operation

+fmax2697 fma  088    -sNaN91  0E+999999  -> -NaN91 Invalid_operation

+fmax2698 fma  Inf    -sNaN90  0E+999999  -> -NaN90 Invalid_operation

+fmax2699 fma -NaN    -sNaN89  0E+999999  -> -NaN89 Invalid_operation

+

+fmax2701 fma -NaN  -Inf    0E+999999  -> -NaN

+fmax2702 fma -NaN   999    0E+999999  -> -NaN

+fmax2703 fma -NaN   Inf    0E+999999  -> -NaN

+fmax2704 fma -NaN  -NaN    0E+999999  -> -NaN

+fmax2705 fma -Inf  -NaN0   0E+999999  -> -NaN

+fmax2706 fma -999  -NaN    0E+999999  -> -NaN

+fmax2707 fma  Inf  -NaN    0E+999999  -> -NaN

+

+fmax2711 fma -sNaN   -Inf     0E+999999  -> -NaN Invalid_operation

+fmax2712 fma -sNaN   -11      0E+999999  -> -NaN Invalid_operation

+fmax2713 fma -sNaN00  NaN     0E+999999  -> -NaN Invalid_operation

+fmax2714 fma -sNaN   -sNaN    0E+999999  -> -NaN Invalid_operation

+fmax2715 fma -NaN    -sNaN    0E+999999  -> -NaN Invalid_operation

+fmax2716 fma -Inf    -sNaN    0E+999999  -> -NaN Invalid_operation

+fmax2717 fma  088    -sNaN    0E+999999  -> -NaN Invalid_operation

+fmax2718 fma  Inf    -sNaN    0E+999999  -> -NaN Invalid_operation

+fmax2719 fma -NaN    -sNaN    0E+999999  -> -NaN Invalid_operation

+

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

+maxexponent: 999999

+minexponent: -999999

+fmax2730 fma +1.23456789012345E-0 9E+999999  0E+999999  -> Infinity Inexact Overflow Rounded

+fmax2731 fma 9E+999999 +1.23456789012345E-0  0E+999999  -> Infinity Inexact Overflow Rounded

+fmax2732 fma +0.100 9E-999999  0E+999999  -> 9.00E-1000000 Subnormal

+fmax2733 fma 9E-999999 +0.100  0E+999999  -> 9.00E-1000000 Subnormal

+fmax2735 fma -1.23456789012345E-0 9E+999999  0E+999999  -> -Infinity Inexact Overflow Rounded

+fmax2736 fma 9E+999999 -1.23456789012345E-0  0E+999999  -> -Infinity Inexact Overflow Rounded

+fmax2737 fma -0.100 9E-999999  0E+999999  -> -9.00E-1000000 Subnormal

+fmax2738 fma 9E-999999 -0.100  0E+999999  -> -9.00E-1000000 Subnormal

+

+-- signs

+fmax2751 fma  1e+777777  1e+411111  0E+999999  ->  Infinity Overflow Inexact Rounded

+fmax2752 fma  1e+777777 -1e+411111  0E+999999  -> -Infinity Overflow Inexact Rounded

+fmax2753 fma -1e+777777  1e+411111  0E+999999  -> -Infinity Overflow Inexact Rounded

+fmax2754 fma -1e+777777 -1e+411111  0E+999999  ->  Infinity Overflow Inexact Rounded

+fmax2755 fma  1e-777777  1e-411111  0E+999999  ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped

+fmax2756 fma  1e-777777 -1e-411111  0E+999999  -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped

+fmax2757 fma -1e-777777  1e-411111  0E+999999  -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped

+fmax2758 fma -1e-777777 -1e-411111  0E+999999  ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped

+

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

+precision: 9

+fmax2760 fma 1e-600000 1e-400001  0E+999999  -> 1E-1000001 Subnormal

+fmax2761 fma 1e-600000 1e-400002  0E+999999  -> 1E-1000002 Subnormal

+fmax2762 fma 1e-600000 1e-400003  0E+999999  -> 1E-1000003 Subnormal

+fmax2763 fma 1e-600000 1e-400004  0E+999999  -> 1E-1000004 Subnormal

+fmax2764 fma 1e-600000 1e-400005  0E+999999  -> 1E-1000005 Subnormal

+fmax2765 fma 1e-600000 1e-400006  0E+999999  -> 1E-1000006 Subnormal

+fmax2766 fma 1e-600000 1e-400007  0E+999999  -> 1E-1000007 Subnormal

+fmax2767 fma 1e-600000 1e-400008  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped

+fmax2768 fma 1e-600000 1e-400009  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped

+fmax2769 fma 1e-600000 1e-400010  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped

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

+fmax2770 fma 1e+600000 1e+400001  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2771 fma 1e+600000 1e+400002  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2772 fma 1e+600000 1e+400003  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2773 fma 1e+600000 1e+400004  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2774 fma 1e+600000 1e+400005  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2775 fma 1e+600000 1e+400006  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2776 fma 1e+600000 1e+400007  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2777 fma 1e+600000 1e+400008  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2778 fma 1e+600000 1e+400009  0E+999999  -> Infinity Overflow Inexact Rounded

+fmax2779 fma 1e+600000 1e+400010  0E+999999  -> Infinity Overflow Inexact Rounded

+

+-- 'subnormal' test edge condition at higher precisions

+precision: 99

+fmax2780 fma 1e-600000 1e-400007  0E+999999  -> 1E-1000007 Subnormal

+fmax2781 fma 1e-600000 1e-400008  0E+999999  -> 1E-1000008 Subnormal

+fmax2782 fma 1e-600000 1e-400097  0E+999999  -> 1E-1000097 Subnormal

+fmax2783 fma 1e-600000 1e-400098  0E+999999  -> 0E-1000097 Underflow Subnormal Inexact Rounded Clamped

+precision: 999

+fmax2784 fma 1e-600000 1e-400997  0E+999999  -> 1E-1000997 Subnormal

+fmax2785 fma 1e-600000 1e-400998  0E+999999  -> 0E-1000997 Underflow Subnormal Inexact Rounded Clamped

+

+-- test subnormals rounding

+precision:   5

+maxExponent: 999

+minexponent: -999

+rounding:    half_even

+

+fmax2801 fma  1.0000E-999  1      0E+999999  -> 1.0000E-999

+fmax2802 fma  1.000E-999   1e-1   0E+999999  -> 1.000E-1000 Subnormal

+fmax2803 fma  1.00E-999    1e-2   0E+999999  -> 1.00E-1001  Subnormal

+fmax2804 fma  1.0E-999     1e-3   0E+999999  -> 1.0E-1002   Subnormal

+fmax2805 fma  1.0E-999     1e-4   0E+999999  -> 1E-1003     Subnormal Rounded

+fmax2806 fma  1.3E-999     1e-4   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded

+fmax2807 fma  1.5E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded

+fmax2808 fma  1.7E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded

+fmax2809 fma  2.3E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded

+fmax2810 fma  2.5E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded

+fmax2811 fma  2.7E-999     1e-4   0E+999999  -> 3E-1003     Underflow Subnormal Inexact Rounded

+fmax2812 fma  1.49E-999    1e-4   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded

+fmax2813 fma  1.50E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded

+fmax2814 fma  1.51E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded

+fmax2815 fma  2.49E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded

+fmax2816 fma  2.50E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded

+fmax2817 fma  2.51E-999    1e-4   0E+999999  -> 3E-1003     Underflow Subnormal Inexact Rounded

+

+fmax2818 fma  1E-999       1e-4   0E+999999  -> 1E-1003     Subnormal

+fmax2819 fma  3E-999       1e-5   0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped

+fmax2820 fma  5E-999       1e-5   0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped

+fmax2821 fma  7E-999       1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded

+fmax2822 fma  9E-999       1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded

+fmax2823 fma  9.9E-999     1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded

+

+fmax2824 fma  1E-999      -1e-4   0E+999999  -> -1E-1003    Subnormal

+fmax2825 fma  3E-999      -1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped

+fmax2826 fma -5E-999       1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped

+fmax2827 fma  7E-999      -1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded

+fmax2828 fma -9E-999       1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded

+fmax2829 fma  9.9E-999    -1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded

+fmax2830 fma  3.0E-999    -1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped

+

+fmax2831 fma  1.0E-501     1e-501  0E+999999  -> 1.0E-1002   Subnormal

+fmax2832 fma  2.0E-501     2e-501  0E+999999  -> 4.0E-1002   Subnormal

+fmax2833 fma  4.0E-501     4e-501  0E+999999  -> 1.60E-1001  Subnormal

+fmax2834 fma 10.0E-501    10e-501  0E+999999  -> 1.000E-1000 Subnormal

+fmax2835 fma 30.0E-501    30e-501  0E+999999  -> 9.000E-1000 Subnormal

+fmax2836 fma 40.0E-501    40e-501  0E+999999  -> 1.6000E-999

+

+-- squares

+fmax2840 fma  1E-502       1e-502  0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped

+fmax2841 fma  1E-501       1e-501  0E+999999  -> 1E-1002     Subnormal

+fmax2842 fma  2E-501       2e-501  0E+999999  -> 4E-1002     Subnormal

+fmax2843 fma  4E-501       4e-501  0E+999999  -> 1.6E-1001   Subnormal

+fmax2844 fma 10E-501      10e-501  0E+999999  -> 1.00E-1000  Subnormal

+fmax2845 fma 30E-501      30e-501  0E+999999  -> 9.00E-1000  Subnormal

+fmax2846 fma 40E-501      40e-501  0E+999999  -> 1.600E-999

+

+-- cubes

+fmax2850 fma  1E-670     1e-335  0E+999999  -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped

+fmax2851 fma  1E-668     1e-334  0E+999999  -> 1E-1002    Subnormal

+fmax2852 fma  4E-668     2e-334  0E+999999  -> 8E-1002    Subnormal

+fmax2853 fma  9E-668     3e-334  0E+999999  -> 2.7E-1001  Subnormal

+fmax2854 fma 16E-668     4e-334  0E+999999  -> 6.4E-1001  Subnormal

+fmax2855 fma 25E-668     5e-334  0E+999999  -> 1.25E-1000 Subnormal

+fmax2856 fma 10E-668   100e-334  0E+999999  -> 1.000E-999

+

+-- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent

+precision: 19

+fmax2860 fma  6636851557994578716E-520 6636851557994578716E-520  0E+999999  -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded

+

+-- Long operand overflow may be a different path

+precision: 3

+maxExponent: 999999

+minexponent: -999999

+fmax2870 fma 1  9.999E+999999    0E+999999  ->  Infinity Inexact Overflow Rounded

+fmax2871 fma 1 -9.999E+999999    0E+999999  -> -Infinity Inexact Overflow Rounded

+fmax2872 fma    9.999E+999999 1  0E+999999  ->  Infinity Inexact Overflow Rounded

+fmax2873 fma   -9.999E+999999 1  0E+999999  -> -Infinity Inexact Overflow Rounded

+

+-- check for double-rounded subnormals

+precision:   5

+maxexponent: 79

+minexponent: -79

+fmax2881 fma  1.2347E-40  1.2347E-40   0E+999999  ->  1.524E-80  Inexact Rounded Subnormal Underflow

+fmax2882 fma  1.234E-40  1.234E-40     0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow

+fmax2883 fma  1.23E-40   1.23E-40      0E+999999  ->  1.513E-80  Inexact Rounded Subnormal Underflow

+fmax2884 fma  1.2E-40    1.2E-40       0E+999999  ->  1.44E-80   Subnormal

+fmax2885 fma  1.2E-40    1.2E-41       0E+999999  ->  1.44E-81   Subnormal

+fmax2886 fma  1.2E-40    1.2E-42       0E+999999  ->  1.4E-82    Subnormal Inexact Rounded Underflow

+fmax2887 fma  1.2E-40    1.3E-42       0E+999999  ->  1.6E-82    Subnormal Inexact Rounded Underflow

+fmax2888 fma  1.3E-40    1.3E-42       0E+999999  ->  1.7E-82    Subnormal Inexact Rounded Underflow

+fmax2889 fma  1.3E-40    1.3E-43       0E+999999  ->    2E-83    Subnormal Inexact Rounded Underflow

+fmax2890 fma  1.3E-41    1.3E-43       0E+999999  ->    0E-83    Clamped Subnormal Inexact Rounded Underflow

+

+fmax2891 fma  1.2345E-39   1.234E-40   0E+999999  ->  1.5234E-79 Inexact Rounded

+fmax2892 fma  1.23456E-39  1.234E-40   0E+999999  ->  1.5234E-79 Inexact Rounded

+fmax2893 fma  1.2345E-40   1.234E-40   0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow

+fmax2894 fma  1.23456E-40  1.234E-40   0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow

+fmax2895 fma  1.2345E-41   1.234E-40   0E+999999  ->  1.52E-81   Inexact Rounded Subnormal Underflow

+fmax2896 fma  1.23456E-41  1.234E-40   0E+999999  ->  1.52E-81   Inexact Rounded Subnormal Underflow

+

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

+precision:   16

+rounding:    half_up

+maxExponent: 384

+minExponent: -383

+

+fmax2900 fma  0.3000000000E-191 0.3000000000E-191  0E+999999  -> 9.00000000000000E-384 Subnormal Rounded

+fmax2901 fma  0.3000000001E-191 0.3000000001E-191  0E+999999  -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded

+fmax2902 fma  9.999999999999999E-383  0.0999999999999          0E+999999  -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded

+fmax2903 fma  9.999999999999999E-383  0.09999999999999         0E+999999  -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded

+fmax2904 fma  9.999999999999999E-383  0.099999999999999        0E+999999  -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded

+fmax2905 fma  9.999999999999999E-383  0.0999999999999999       0E+999999  -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded

+-- prove operands are exact

+fmax2906 fma  9.999999999999999E-383  1                        0E+999999  -> 9.999999999999999E-383

+fmax2907 fma                       1  0.09999999999999999      0E+999999  -> 0.09999999999999999

+-- the next rounds to Nmin

+fmax2908 fma  9.999999999999999E-383  0.09999999999999999      0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax2909 fma  9.999999999999999E-383  0.099999999999999999     0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax2910 fma  9.999999999999999E-383  0.0999999999999999999    0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax2911 fma  9.999999999999999E-383  0.09999999999999999999   0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+precision:   34

+rounding:    half_up

+maxExponent: 6144

+minExponent: -6143

+fmax2921  fma 130E-2  120E-2  0E+999999  -> 1.5600

+fmax2922  fma 130E-2  12E-1   0E+999999  -> 1.560

+fmax2923  fma 130E-2  1E0     0E+999999  -> 1.30

+

+-- Null tests

+fmax2990 fma  # 10  0E+999999  -> NaN Invalid_operation

+fmax2991 fma 10  #  0E+999999  -> NaN Invalid_operation

+

+-- ADDITION TESTS ------------------------------------------------------

+precision:   9

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+-- [first group are 'quick confidence check']

+fmax3001 fma  1   1       1       ->  2

+fmax3002 fma  1   2       3       ->  5

+fmax3003 fma  1   '5.75'  '3.3'   ->  9.05

+fmax3004 fma  1   '5'     '-3'    ->  2

+fmax3005 fma  1   '-5'    '-3'    ->  -8

+fmax3006 fma  1   '-7'    '2.5'   ->  -4.5

+fmax3007 fma  1   '0.7'   '0.3'   ->  1.0

+fmax3008 fma  1   '1.25'  '1.25'  ->  2.50

+fmax3009 fma  1   '1.23456789'  '1.00000000' -> '2.23456789'

+fmax3010 fma  1   '1.23456789'  '1.00000011' -> '2.23456800'

+

+fmax3011 fma  1   '0.4444444444'  '0.5555555555' -> '1.00000000' Inexact Rounded

+fmax3012 fma  1   '0.4444444440'  '0.5555555555' -> '1.00000000' Inexact Rounded

+fmax3013 fma  1   '0.4444444444'  '0.5555555550' -> '0.999999999' Inexact Rounded

+fmax3014 fma  1   '0.44444444449'    '0' -> '0.444444444' Inexact Rounded

+fmax3015 fma  1   '0.444444444499'   '0' -> '0.444444444' Inexact Rounded

+fmax3016 fma  1   '0.4444444444999'  '0' -> '0.444444444' Inexact Rounded

+fmax3017 fma  1   '0.4444444445000'  '0' -> '0.444444445' Inexact Rounded

+fmax3018 fma  1   '0.4444444445001'  '0' -> '0.444444445' Inexact Rounded

+fmax3019 fma  1   '0.444444444501'   '0' -> '0.444444445' Inexact Rounded

+fmax3020 fma  1   '0.44444444451'    '0' -> '0.444444445' Inexact Rounded

+

+fmax3021 fma  1   0 1 -> 1

+fmax3022 fma  1   1 1 -> 2

+fmax3023 fma  1   2 1 -> 3

+fmax3024 fma  1   3 1 -> 4

+fmax3025 fma  1   4 1 -> 5

+fmax3026 fma  1   5 1 -> 6

+fmax3027 fma  1   6 1 -> 7

+fmax3028 fma  1   7 1 -> 8

+fmax3029 fma  1   8 1 -> 9

+fmax3030 fma  1   9 1 -> 10

+

+-- some carrying effects

+fmax3031 fma  1   '0.9998'  '0.0000' -> '0.9998'

+fmax3032 fma  1   '0.9998'  '0.0001' -> '0.9999'

+fmax3033 fma  1   '0.9998'  '0.0002' -> '1.0000'

+fmax3034 fma  1   '0.9998'  '0.0003' -> '1.0001'

+

+fmax3035 fma  1   '70'  '10000e+9' -> '1.00000000E+13' Inexact Rounded

+fmax3036 fma  1   '700'  '10000e+9' -> '1.00000000E+13' Inexact Rounded

+fmax3037 fma  1   '7000'  '10000e+9' -> '1.00000000E+13' Inexact Rounded

+fmax3038 fma  1   '70000'  '10000e+9' -> '1.00000001E+13' Inexact Rounded

+fmax3039 fma  1   '700000'  '10000e+9' -> '1.00000007E+13' Rounded

+

+-- symmetry:

+fmax3040 fma  1   '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded

+fmax3041 fma  1   '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded

+fmax3042 fma  1   '10000e+9'  '7000' -> '1.00000000E+13' Inexact Rounded

+fmax3044 fma  1   '10000e+9'  '70000' -> '1.00000001E+13' Inexact Rounded

+fmax3045 fma  1   '10000e+9'  '700000' -> '1.00000007E+13' Rounded

+

+-- same, higher precision

+precision: 15

+fmax3046 fma  1   '10000e+9'  '7' -> '10000000000007'

+fmax3047 fma  1   '10000e+9'  '70' -> '10000000000070'

+fmax3048 fma  1   '10000e+9'  '700' -> '10000000000700'

+fmax3049 fma  1   '10000e+9'  '7000' -> '10000000007000'

+fmax3050 fma  1   '10000e+9'  '70000' -> '10000000070000'

+fmax3051 fma  1   '10000e+9'  '700000' -> '10000000700000'

+fmax3052 fma  1   '10000e+9'  '7000000' -> '10000007000000'

+

+-- examples from decarith

+fmax3053 fma  1   '12' '7.00' -> '19.00'

+fmax3054 fma  1   '1.3' '-1.07' -> '0.23'

+fmax3055 fma  1   '1.3' '-1.30' -> '0.00'

+fmax3056 fma  1   '1.3' '-2.07' -> '-0.77'

+fmax3057 fma  1   '1E+2' '1E+4' -> '1.01E+4'

+

+-- zero preservation

+precision: 6

+fmax3060 fma  1   '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded

+fmax3061 fma  1   1 '0.0001' -> '1.0001'

+fmax3062 fma  1   1 '0.00001' -> '1.00001'

+fmax3063 fma  1   1 '0.000001' -> '1.00000' Inexact Rounded

+fmax3064 fma  1   1 '0.0000001' -> '1.00000' Inexact Rounded

+fmax3065 fma  1   1 '0.00000001' -> '1.00000' Inexact Rounded

+

+-- some funny zeros [in case of bad signum]

+fmax3070 fma  1   1  0    -> 1

+fmax3071 fma  1   1 0.    -> 1

+fmax3072 fma  1   1  .0   -> 1.0

+fmax3073 fma  1   1 0.0   -> 1.0

+fmax3074 fma  1   1 0.00  -> 1.00

+fmax3075 fma  1    0  1   -> 1

+fmax3076 fma  1   0.  1   -> 1

+fmax3077 fma  1    .0 1   -> 1.0

+fmax3078 fma  1   0.0 1   -> 1.0

+fmax3079 fma  1   0.00 1  -> 1.00

+

+precision: 9

+

+-- some carries

+fmax3080 fma  1   999999998 1  -> 999999999

+fmax3081 fma  1   999999999 1  -> 1.00000000E+9 Rounded

+fmax3082 fma  1    99999999 1  -> 100000000

+fmax3083 fma  1     9999999 1  -> 10000000

+fmax3084 fma  1      999999 1  -> 1000000

+fmax3085 fma  1       99999 1  -> 100000

+fmax3086 fma  1        9999 1  -> 10000

+fmax3087 fma  1         999 1  -> 1000

+fmax3088 fma  1          99 1  -> 100

+fmax3089 fma  1           9 1  -> 10

+

+

+-- more LHS swaps

+fmax3090 fma  1   '-56267E-10'   0 ->  '-0.0000056267'

+fmax3091 fma  1   '-56267E-6'    0 ->  '-0.056267'

+fmax3092 fma  1   '-56267E-5'    0 ->  '-0.56267'

+fmax3093 fma  1   '-56267E-4'    0 ->  '-5.6267'

+fmax3094 fma  1   '-56267E-3'    0 ->  '-56.267'

+fmax3095 fma  1   '-56267E-2'    0 ->  '-562.67'

+fmax3096 fma  1   '-56267E-1'    0 ->  '-5626.7'

+fmax3097 fma  1   '-56267E-0'    0 ->  '-56267'

+fmax3098 fma  1   '-5E-10'       0 ->  '-5E-10'

+fmax3099 fma  1   '-5E-7'        0 ->  '-5E-7'

+fmax3100 fma  1   '-5E-6'        0 ->  '-0.000005'

+fmax3101 fma  1   '-5E-5'        0 ->  '-0.00005'

+fmax3102 fma  1   '-5E-4'        0 ->  '-0.0005'

+fmax3103 fma  1   '-5E-1'        0 ->  '-0.5'

+fmax3104 fma  1   '-5E0'         0 ->  '-5'

+fmax3105 fma  1   '-5E1'         0 ->  '-50'

+fmax3106 fma  1   '-5E5'         0 ->  '-500000'

+fmax3107 fma  1   '-5E8'         0 ->  '-500000000'

+fmax3108 fma  1   '-5E9'         0 ->  '-5.00000000E+9'   Rounded

+fmax3109 fma  1   '-5E10'        0 ->  '-5.00000000E+10'  Rounded

+fmax3110 fma  1   '-5E11'        0 ->  '-5.00000000E+11'  Rounded

+fmax3111 fma  1   '-5E100'       0 ->  '-5.00000000E+100' Rounded

+

+-- more RHS swaps

+fmax3113 fma  1   0  '-56267E-10' ->  '-0.0000056267'

+fmax3114 fma  1   0  '-56267E-6'  ->  '-0.056267'

+fmax3116 fma  1   0  '-56267E-5'  ->  '-0.56267'

+fmax3117 fma  1   0  '-56267E-4'  ->  '-5.6267'

+fmax3119 fma  1   0  '-56267E-3'  ->  '-56.267'

+fmax3120 fma  1   0  '-56267E-2'  ->  '-562.67'

+fmax3121 fma  1   0  '-56267E-1'  ->  '-5626.7'

+fmax3122 fma  1   0  '-56267E-0'  ->  '-56267'

+fmax3123 fma  1   0  '-5E-10'     ->  '-5E-10'

+fmax3124 fma  1   0  '-5E-7'      ->  '-5E-7'

+fmax3125 fma  1   0  '-5E-6'      ->  '-0.000005'

+fmax3126 fma  1   0  '-5E-5'      ->  '-0.00005'

+fmax3127 fma  1   0  '-5E-4'      ->  '-0.0005'

+fmax3128 fma  1   0  '-5E-1'      ->  '-0.5'

+fmax3129 fma  1   0  '-5E0'       ->  '-5'

+fmax3130 fma  1   0  '-5E1'       ->  '-50'

+fmax3131 fma  1   0  '-5E5'       ->  '-500000'

+fmax3132 fma  1   0  '-5E8'       ->  '-500000000'

+fmax3133 fma  1   0  '-5E9'       ->  '-5.00000000E+9'    Rounded

+fmax3134 fma  1   0  '-5E10'      ->  '-5.00000000E+10'   Rounded

+fmax3135 fma  1   0  '-5E11'      ->  '-5.00000000E+11'   Rounded

+fmax3136 fma  1   0  '-5E100'     ->  '-5.00000000E+100'  Rounded

+

+-- related

+fmax3137 fma  1    1  '0E-12'      ->  '1.00000000'  Rounded

+fmax3138 fma  1   -1  '0E-12'      ->  '-1.00000000' Rounded

+fmax3139 fma  1   '0E-12' 1        ->  '1.00000000'  Rounded

+fmax3140 fma  1   '0E-12' -1       ->  '-1.00000000' Rounded

+fmax3141 fma  1   1E+4    0.0000   ->  '10000.0000'

+fmax3142 fma  1   1E+4    0.00000  ->  '10000.0000'  Rounded

+fmax3143 fma  1   0.000   1E+5     ->  '100000.000'

+fmax3144 fma  1   0.0000  1E+5     ->  '100000.000'  Rounded

+

+-- [some of the next group are really constructor tests]

+fmax3146 fma  1   '00.0'  0       ->  '0.0'

+fmax3147 fma  1   '0.00'  0       ->  '0.00'

+fmax3148 fma  1    0      '0.00'  ->  '0.00'

+fmax3149 fma  1    0      '00.0'  ->  '0.0'

+fmax3150 fma  1   '00.0'  '0.00'  ->  '0.00'

+fmax3151 fma  1   '0.00'  '00.0'  ->  '0.00'

+fmax3152 fma  1   '3'     '.3'    ->  '3.3'

+fmax3153 fma  1   '3.'    '.3'    ->  '3.3'

+fmax3154 fma  1   '3.0'   '.3'    ->  '3.3'

+fmax3155 fma  1   '3.00'  '.3'    ->  '3.30'

+fmax3156 fma  1   '3'     '3'     ->  '6'

+fmax3157 fma  1   '3'     '+3'    ->  '6'

+fmax3158 fma  1   '3'     '-3'    ->  '0'

+fmax3159 fma  1   '0.3'   '-0.3'  ->  '0.0'

+fmax3160 fma  1   '0.03'  '-0.03' ->  '0.00'

+

+-- try borderline precision, with carries, etc.

+precision: 15

+fmax3161 fma  1   '1E+12' '-1'    -> '999999999999'

+fmax3162 fma  1   '1E+12'  '1.11' -> '1000000000001.11'

+fmax3163 fma  1   '1.11'  '1E+12' -> '1000000000001.11'

+fmax3164 fma  1   '-1'    '1E+12' -> '999999999999'

+fmax3165 fma  1   '7E+12' '-1'    -> '6999999999999'

+fmax3166 fma  1   '7E+12'  '1.11' -> '7000000000001.11'

+fmax3167 fma  1   '1.11'  '7E+12' -> '7000000000001.11'

+fmax3168 fma  1   '-1'    '7E+12' -> '6999999999999'

+

+--             123456789012345      123456789012345      1 23456789012345

+fmax3170 fma  1   '0.444444444444444'  '0.555555555555563' -> '1.00000000000001' Inexact Rounded

+fmax3171 fma  1   '0.444444444444444'  '0.555555555555562' -> '1.00000000000001' Inexact Rounded

+fmax3172 fma  1   '0.444444444444444'  '0.555555555555561' -> '1.00000000000001' Inexact Rounded

+fmax3173 fma  1   '0.444444444444444'  '0.555555555555560' -> '1.00000000000000' Inexact Rounded

+fmax3174 fma  1   '0.444444444444444'  '0.555555555555559' -> '1.00000000000000' Inexact Rounded

+fmax3175 fma  1   '0.444444444444444'  '0.555555555555558' -> '1.00000000000000' Inexact Rounded

+fmax3176 fma  1   '0.444444444444444'  '0.555555555555557' -> '1.00000000000000' Inexact Rounded

+fmax3177 fma  1   '0.444444444444444'  '0.555555555555556' -> '1.00000000000000' Rounded

+fmax3178 fma  1   '0.444444444444444'  '0.555555555555555' -> '0.999999999999999'

+fmax3179 fma  1   '0.444444444444444'  '0.555555555555554' -> '0.999999999999998'

+fmax3180 fma  1   '0.444444444444444'  '0.555555555555553' -> '0.999999999999997'

+fmax3181 fma  1   '0.444444444444444'  '0.555555555555552' -> '0.999999999999996'

+fmax3182 fma  1   '0.444444444444444'  '0.555555555555551' -> '0.999999999999995'

+fmax3183 fma  1   '0.444444444444444'  '0.555555555555550' -> '0.999999999999994'

+

+-- and some more, including residue effects and different roundings

+precision: 9

+rounding: half_up

+fmax3200 fma  1   '123456789' 0             -> '123456789'

+fmax3201 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded

+fmax3202 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded

+fmax3203 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded

+fmax3204 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded

+fmax3205 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded

+fmax3206 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded

+fmax3207 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded

+fmax3208 fma  1   '123456789' 0.5           -> '123456790' Inexact Rounded

+fmax3209 fma  1   '123456789' 0.500000001   -> '123456790' Inexact Rounded

+fmax3210 fma  1   '123456789' 0.500001      -> '123456790' Inexact Rounded

+fmax3211 fma  1   '123456789' 0.51          -> '123456790' Inexact Rounded

+fmax3212 fma  1   '123456789' 0.6           -> '123456790' Inexact Rounded

+fmax3213 fma  1   '123456789' 0.9           -> '123456790' Inexact Rounded

+fmax3214 fma  1   '123456789' 0.99999       -> '123456790' Inexact Rounded

+fmax3215 fma  1   '123456789' 0.999999999   -> '123456790' Inexact Rounded

+fmax3216 fma  1   '123456789' 1             -> '123456790'

+fmax3217 fma  1   '123456789' 1.000000001   -> '123456790' Inexact Rounded

+fmax3218 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded

+fmax3219 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded

+

+rounding: half_even

+fmax3220 fma  1   '123456789' 0             -> '123456789'

+fmax3221 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded

+fmax3222 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded

+fmax3223 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded

+fmax3224 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded

+fmax3225 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded

+fmax3226 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded

+fmax3227 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded

+fmax3228 fma  1   '123456789' 0.5           -> '123456790' Inexact Rounded

+fmax3229 fma  1   '123456789' 0.500000001   -> '123456790' Inexact Rounded

+fmax3230 fma  1   '123456789' 0.500001      -> '123456790' Inexact Rounded

+fmax3231 fma  1   '123456789' 0.51          -> '123456790' Inexact Rounded

+fmax3232 fma  1   '123456789' 0.6           -> '123456790' Inexact Rounded

+fmax3233 fma  1   '123456789' 0.9           -> '123456790' Inexact Rounded

+fmax3234 fma  1   '123456789' 0.99999       -> '123456790' Inexact Rounded

+fmax3235 fma  1   '123456789' 0.999999999   -> '123456790' Inexact Rounded

+fmax3236 fma  1   '123456789' 1             -> '123456790'

+fmax3237 fma  1   '123456789' 1.00000001    -> '123456790' Inexact Rounded

+fmax3238 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded

+fmax3239 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded

+-- critical few with even bottom digit...

+fmax3240 fma  1   '123456788' 0.499999999   -> '123456788' Inexact Rounded

+fmax3241 fma  1   '123456788' 0.5           -> '123456788' Inexact Rounded

+fmax3242 fma  1   '123456788' 0.500000001   -> '123456789' Inexact Rounded

+

+rounding: down

+fmax3250 fma  1   '123456789' 0             -> '123456789'

+fmax3251 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded

+fmax3252 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded

+fmax3253 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded

+fmax3254 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded

+fmax3255 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded

+fmax3256 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded

+fmax3257 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded

+fmax3258 fma  1   '123456789' 0.5           -> '123456789' Inexact Rounded

+fmax3259 fma  1   '123456789' 0.500000001   -> '123456789' Inexact Rounded

+fmax3260 fma  1   '123456789' 0.500001      -> '123456789' Inexact Rounded

+fmax3261 fma  1   '123456789' 0.51          -> '123456789' Inexact Rounded

+fmax3262 fma  1   '123456789' 0.6           -> '123456789' Inexact Rounded

+fmax3263 fma  1   '123456789' 0.9           -> '123456789' Inexact Rounded

+fmax3264 fma  1   '123456789' 0.99999       -> '123456789' Inexact Rounded

+fmax3265 fma  1   '123456789' 0.999999999   -> '123456789' Inexact Rounded

+fmax3266 fma  1   '123456789' 1             -> '123456790'

+fmax3267 fma  1   '123456789' 1.00000001    -> '123456790' Inexact Rounded

+fmax3268 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded

+fmax3269 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded

+

+-- input preparation tests (operands should not be rounded)

+precision: 3

+rounding: half_up

+

+fmax3270 fma  1   '12345678900000'  9999999999999 ->  '2.23E+13' Inexact Rounded

+fmax3271 fma  1    '9999999999999' 12345678900000 ->  '2.23E+13' Inexact Rounded

+

+fmax3272 fma  1   '12E+3'  '3444'   ->  '1.54E+4' Inexact Rounded

+fmax3273 fma  1   '12E+3'  '3446'   ->  '1.54E+4' Inexact Rounded

+fmax3274 fma  1   '12E+3'  '3449.9' ->  '1.54E+4' Inexact Rounded

+fmax3275 fma  1   '12E+3'  '3450.0' ->  '1.55E+4' Inexact Rounded

+fmax3276 fma  1   '12E+3'  '3450.1' ->  '1.55E+4' Inexact Rounded

+fmax3277 fma  1   '12E+3'  '3454'   ->  '1.55E+4' Inexact Rounded

+fmax3278 fma  1   '12E+3'  '3456'   ->  '1.55E+4' Inexact Rounded

+

+fmax3281 fma  1   '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded

+fmax3282 fma  1   '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded

+fmax3283 fma  1   '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded

+fmax3284 fma  1   '3450.0' '12E+3'  ->  '1.55E+4' Inexact Rounded

+fmax3285 fma  1   '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded

+fmax3286 fma  1   '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded

+fmax3287 fma  1   '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded

+

+rounding: half_down

+fmax3291 fma  1   '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded

+fmax3292 fma  1   '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded

+fmax3293 fma  1   '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded

+fmax3294 fma  1   '3450.0' '12E+3'  ->  '1.54E+4' Inexact Rounded

+fmax3295 fma  1   '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded

+fmax3296 fma  1   '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded

+fmax3297 fma  1   '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded

+

+-- 1 in last place tests

+rounding: half_up

+fmax3301 fma  1    -1   1      ->   0

+fmax3302 fma  1     0   1      ->   1

+fmax3303 fma  1     1   1      ->   2

+fmax3304 fma  1    12   1      ->  13

+fmax3305 fma  1    98   1      ->  99

+fmax3306 fma  1    99   1      -> 100

+fmax3307 fma  1   100   1      -> 101

+fmax3308 fma  1   101   1      -> 102

+fmax3309 fma  1    -1  -1      ->  -2

+fmax3310 fma  1     0  -1      ->  -1

+fmax3311 fma  1     1  -1      ->   0

+fmax3312 fma  1    12  -1      ->  11

+fmax3313 fma  1    98  -1      ->  97

+fmax3314 fma  1    99  -1      ->  98

+fmax3315 fma  1   100  -1      ->  99

+fmax3316 fma  1   101  -1      -> 100

+

+fmax3321 fma  1   -0.01  0.01    ->  0.00

+fmax3322 fma  1    0.00  0.01    ->  0.01

+fmax3323 fma  1    0.01  0.01    ->  0.02

+fmax3324 fma  1    0.12  0.01    ->  0.13

+fmax3325 fma  1    0.98  0.01    ->  0.99

+fmax3326 fma  1    0.99  0.01    ->  1.00

+fmax3327 fma  1    1.00  0.01    ->  1.01

+fmax3328 fma  1    1.01  0.01    ->  1.02

+fmax3329 fma  1   -0.01 -0.01    -> -0.02

+fmax3330 fma  1    0.00 -0.01    -> -0.01

+fmax3331 fma  1    0.01 -0.01    ->  0.00

+fmax3332 fma  1    0.12 -0.01    ->  0.11

+fmax3333 fma  1    0.98 -0.01    ->  0.97

+fmax3334 fma  1    0.99 -0.01    ->  0.98

+fmax3335 fma  1    1.00 -0.01    ->  0.99

+fmax3336 fma  1    1.01 -0.01    ->  1.00

+

+-- some more cases where fma  1  ing 0 affects the coefficient

+precision: 9

+fmax3340 fma  1   1E+3    0    ->         1000

+fmax3341 fma  1   1E+8    0    ->    100000000

+fmax3342 fma  1   1E+9    0    ->   1.00000000E+9   Rounded

+fmax3343 fma  1   1E+10   0    ->   1.00000000E+10  Rounded

+-- which simply follow from these cases ...

+fmax3344 fma  1   1E+3    1    ->         1001

+fmax3345 fma  1   1E+8    1    ->    100000001

+fmax3346 fma  1   1E+9    1    ->   1.00000000E+9   Inexact Rounded

+fmax3347 fma  1   1E+10   1    ->   1.00000000E+10  Inexact Rounded

+fmax3348 fma  1   1E+3    7    ->         1007

+fmax3349 fma  1   1E+8    7    ->    100000007

+fmax3350 fma  1   1E+9    7    ->   1.00000001E+9   Inexact Rounded

+fmax3351 fma  1   1E+10   7    ->   1.00000000E+10  Inexact Rounded

+

+-- tryzeros cases

+precision:   7

+rounding:    half_up

+maxExponent: 92

+minexponent: -92

+fmax3361  fma  1   0E+50 10000E+1  -> 1.0000E+5

+fmax3362  fma  1   10000E+1 0E-50  -> 100000.0  Rounded

+fmax3363  fma  1   10000E+1 10000E-50  -> 100000.0  Rounded Inexact

+fmax3364  fma  1   9.999999E+92 -9.999999E+92 -> 0E+86

+

+-- a curiosity from JSR 13 testing

+rounding:    half_down

+precision:   10

+fmax3370 fma  1   99999999 81512 -> 100081511

+precision:      6

+fmax3371 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact

+rounding:    half_up

+precision:   10

+fmax3372 fma  1   99999999 81512 -> 100081511

+precision:      6

+fmax3373 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact

+rounding:    half_even

+precision:   10

+fmax3374 fma  1   99999999 81512 -> 100081511

+precision:      6

+fmax3375 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact

+

+-- ulp replacement tests

+precision: 9

+maxexponent: 999999

+minexponent: -999999

+fmax3400 fma  1     1   77e-7       ->  1.0000077

+fmax3401 fma  1     1   77e-8       ->  1.00000077

+fmax3402 fma  1     1   77e-9       ->  1.00000008 Inexact Rounded

+fmax3403 fma  1     1   77e-10      ->  1.00000001 Inexact Rounded

+fmax3404 fma  1     1   77e-11      ->  1.00000000 Inexact Rounded

+fmax3405 fma  1     1   77e-12      ->  1.00000000 Inexact Rounded

+fmax3406 fma  1     1   77e-999     ->  1.00000000 Inexact Rounded

+fmax3407 fma  1     1   77e-999999  ->  1.00000000 Inexact Rounded

+

+fmax3410 fma  1    10   77e-7       ->  10.0000077

+fmax3411 fma  1    10   77e-8       ->  10.0000008 Inexact Rounded

+fmax3412 fma  1    10   77e-9       ->  10.0000001 Inexact Rounded

+fmax3413 fma  1    10   77e-10      ->  10.0000000 Inexact Rounded

+fmax3414 fma  1    10   77e-11      ->  10.0000000 Inexact Rounded

+fmax3415 fma  1    10   77e-12      ->  10.0000000 Inexact Rounded

+fmax3416 fma  1    10   77e-999     ->  10.0000000 Inexact Rounded

+fmax3417 fma  1    10   77e-999999  ->  10.0000000 Inexact Rounded

+

+fmax3420 fma  1    77e-7        1   ->  1.0000077

+fmax3421 fma  1    77e-8        1   ->  1.00000077

+fmax3422 fma  1    77e-9        1   ->  1.00000008 Inexact Rounded

+fmax3423 fma  1    77e-10       1   ->  1.00000001 Inexact Rounded

+fmax3424 fma  1    77e-11       1   ->  1.00000000 Inexact Rounded

+fmax3425 fma  1    77e-12       1   ->  1.00000000 Inexact Rounded

+fmax3426 fma  1    77e-999      1   ->  1.00000000 Inexact Rounded

+fmax3427 fma  1    77e-999999   1   ->  1.00000000 Inexact Rounded

+

+fmax3430 fma  1    77e-7       10   ->  10.0000077

+fmax3431 fma  1    77e-8       10   ->  10.0000008 Inexact Rounded

+fmax3432 fma  1    77e-9       10   ->  10.0000001 Inexact Rounded

+fmax3433 fma  1    77e-10      10   ->  10.0000000 Inexact Rounded

+fmax3434 fma  1    77e-11      10   ->  10.0000000 Inexact Rounded

+fmax3435 fma  1    77e-12      10   ->  10.0000000 Inexact Rounded

+fmax3436 fma  1    77e-999     10   ->  10.0000000 Inexact Rounded

+fmax3437 fma  1    77e-999999  10   ->  10.0000000 Inexact Rounded

+

+-- negative ulps

+fmax3440 fma  1     1   -77e-7       ->  0.9999923

+fmax3441 fma  1     1   -77e-8       ->  0.99999923

+fmax3442 fma  1     1   -77e-9       ->  0.999999923

+fmax3443 fma  1     1   -77e-10      ->  0.999999992 Inexact Rounded

+fmax3444 fma  1     1   -77e-11      ->  0.999999999 Inexact Rounded

+fmax3445 fma  1     1   -77e-12      ->  1.00000000 Inexact Rounded

+fmax3446 fma  1     1   -77e-999     ->  1.00000000 Inexact Rounded

+fmax3447 fma  1     1   -77e-999999  ->  1.00000000 Inexact Rounded

+

+fmax3450 fma  1    10   -77e-7       ->   9.9999923

+fmax3451 fma  1    10   -77e-8       ->   9.99999923

+fmax3452 fma  1    10   -77e-9       ->   9.99999992 Inexact Rounded

+fmax3453 fma  1    10   -77e-10      ->   9.99999999 Inexact Rounded

+fmax3454 fma  1    10   -77e-11      ->  10.0000000 Inexact Rounded

+fmax3455 fma  1    10   -77e-12      ->  10.0000000 Inexact Rounded

+fmax3456 fma  1    10   -77e-999     ->  10.0000000 Inexact Rounded

+fmax3457 fma  1    10   -77e-999999  ->  10.0000000 Inexact Rounded

+

+fmax3460 fma  1    -77e-7        1   ->  0.9999923

+fmax3461 fma  1    -77e-8        1   ->  0.99999923

+fmax3462 fma  1    -77e-9        1   ->  0.999999923

+fmax3463 fma  1    -77e-10       1   ->  0.999999992 Inexact Rounded

+fmax3464 fma  1    -77e-11       1   ->  0.999999999 Inexact Rounded

+fmax3465 fma  1    -77e-12       1   ->  1.00000000 Inexact Rounded

+fmax3466 fma  1    -77e-999      1   ->  1.00000000 Inexact Rounded

+fmax3467 fma  1    -77e-999999   1   ->  1.00000000 Inexact Rounded

+

+fmax3470 fma  1    -77e-7       10   ->   9.9999923

+fmax3471 fma  1    -77e-8       10   ->   9.99999923

+fmax3472 fma  1    -77e-9       10   ->   9.99999992 Inexact Rounded

+fmax3473 fma  1    -77e-10      10   ->   9.99999999 Inexact Rounded

+fmax3474 fma  1    -77e-11      10   ->  10.0000000 Inexact Rounded

+fmax3475 fma  1    -77e-12      10   ->  10.0000000 Inexact Rounded

+fmax3476 fma  1    -77e-999     10   ->  10.0000000 Inexact Rounded

+fmax3477 fma  1    -77e-999999  10   ->  10.0000000 Inexact Rounded

+

+-- negative ulps

+fmax3480 fma  1    -1    77e-7       ->  -0.9999923

+fmax3481 fma  1    -1    77e-8       ->  -0.99999923

+fmax3482 fma  1    -1    77e-9       ->  -0.999999923

+fmax3483 fma  1    -1    77e-10      ->  -0.999999992 Inexact Rounded

+fmax3484 fma  1    -1    77e-11      ->  -0.999999999 Inexact Rounded

+fmax3485 fma  1    -1    77e-12      ->  -1.00000000 Inexact Rounded

+fmax3486 fma  1    -1    77e-999     ->  -1.00000000 Inexact Rounded

+fmax3487 fma  1    -1    77e-999999  ->  -1.00000000 Inexact Rounded

+

+fmax3490 fma  1   -10    77e-7       ->   -9.9999923

+fmax3491 fma  1   -10    77e-8       ->   -9.99999923

+fmax3492 fma  1   -10    77e-9       ->   -9.99999992 Inexact Rounded

+fmax3493 fma  1   -10    77e-10      ->   -9.99999999 Inexact Rounded

+fmax3494 fma  1   -10    77e-11      ->  -10.0000000 Inexact Rounded

+fmax3495 fma  1   -10    77e-12      ->  -10.0000000 Inexact Rounded

+fmax3496 fma  1   -10    77e-999     ->  -10.0000000 Inexact Rounded

+fmax3497 fma  1   -10    77e-999999  ->  -10.0000000 Inexact Rounded

+

+fmax3500 fma  1     77e-7       -1   ->  -0.9999923

+fmax3501 fma  1     77e-8       -1   ->  -0.99999923

+fmax3502 fma  1     77e-9       -1   ->  -0.999999923

+fmax3503 fma  1     77e-10      -1   ->  -0.999999992 Inexact Rounded

+fmax3504 fma  1     77e-11      -1   ->  -0.999999999 Inexact Rounded

+fmax3505 fma  1     77e-12      -1   ->  -1.00000000 Inexact Rounded

+fmax3506 fma  1     77e-999     -1   ->  -1.00000000 Inexact Rounded

+fmax3507 fma  1     77e-999999  -1   ->  -1.00000000 Inexact Rounded

+

+fmax3510 fma  1     77e-7       -10  ->   -9.9999923

+fmax3511 fma  1     77e-8       -10  ->   -9.99999923

+fmax3512 fma  1     77e-9       -10  ->   -9.99999992 Inexact Rounded

+fmax3513 fma  1     77e-10      -10  ->   -9.99999999 Inexact Rounded

+fmax3514 fma  1     77e-11      -10  ->  -10.0000000 Inexact Rounded

+fmax3515 fma  1     77e-12      -10  ->  -10.0000000 Inexact Rounded

+fmax3516 fma  1     77e-999     -10  ->  -10.0000000 Inexact Rounded

+fmax3517 fma  1     77e-999999  -10  ->  -10.0000000 Inexact Rounded

+

+

+-- long operands

+maxexponent: 999

+minexponent: -999

+precision: 9

+fmax3521 fma  1   12345678000 0 -> 1.23456780E+10 Rounded

+fmax3522 fma  1   0 12345678000 -> 1.23456780E+10 Rounded

+fmax3523 fma  1   1234567800  0 -> 1.23456780E+9 Rounded

+fmax3524 fma  1   0 1234567800  -> 1.23456780E+9 Rounded

+fmax3525 fma  1   1234567890  0 -> 1.23456789E+9 Rounded

+fmax3526 fma  1   0 1234567890  -> 1.23456789E+9 Rounded

+fmax3527 fma  1   1234567891  0 -> 1.23456789E+9 Inexact Rounded

+fmax3528 fma  1   0 1234567891  -> 1.23456789E+9 Inexact Rounded

+fmax3529 fma  1   12345678901 0 -> 1.23456789E+10 Inexact Rounded

+fmax3530 fma  1   0 12345678901 -> 1.23456789E+10 Inexact Rounded

+fmax3531 fma  1   1234567896  0 -> 1.23456790E+9 Inexact Rounded

+fmax3532 fma  1   0 1234567896  -> 1.23456790E+9 Inexact Rounded

+

+precision: 15

+-- still checking

+fmax3541 fma  1   12345678000 0 -> 12345678000

+fmax3542 fma  1   0 12345678000 -> 12345678000

+fmax3543 fma  1   1234567800  0 -> 1234567800

+fmax3544 fma  1   0 1234567800  -> 1234567800

+fmax3545 fma  1   1234567890  0 -> 1234567890

+fmax3546 fma  1   0 1234567890  -> 1234567890

+fmax3547 fma  1   1234567891  0 -> 1234567891

+fmax3548 fma  1   0 1234567891  -> 1234567891

+fmax3549 fma  1   12345678901 0 -> 12345678901

+fmax3550 fma  1   0 12345678901 -> 12345678901

+fmax3551 fma  1   1234567896  0 -> 1234567896

+fmax3552 fma  1   0 1234567896  -> 1234567896

+

+-- verify a query

+precision:    16

+maxExponent: +394

+minExponent: -393

+rounding:     down

+fmax3561 fma  1   1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded

+fmax3562 fma  1        0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded

+-- and using decimal64 bounds...

+precision:    16

+maxExponent: +384

+minExponent: -383

+rounding:     down

+fmax3563 fma  1   1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded

+fmax3564 fma  1        0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded

+

+

+-- some more residue effects with extreme rounding

+precision:   9

+rounding: half_up

+fmax3601 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded

+rounding: half_even

+fmax3602 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded

+rounding: half_down

+fmax3603 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded

+rounding: floor

+fmax3604 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded

+rounding: ceiling

+fmax3605 fma  1   123456789  0.000001 -> 123456790 Inexact Rounded

+rounding: up

+fmax3606 fma  1   123456789  0.000001 -> 123456790 Inexact Rounded

+rounding: down

+fmax3607 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded

+

+rounding: half_up

+fmax3611 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded

+rounding: half_even

+fmax3612 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded

+rounding: half_down

+fmax3613 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded

+rounding: floor

+fmax3614 fma  1   123456789 -0.000001 -> 123456788 Inexact Rounded

+rounding: ceiling

+fmax3615 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded

+rounding: up

+fmax3616 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded

+rounding: down

+fmax3617 fma  1   123456789 -0.000001 -> 123456788 Inexact Rounded

+

+rounding: half_up

+fmax3621 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded

+rounding: half_even

+fmax3622 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded

+rounding: half_down

+fmax3623 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded

+rounding: floor

+fmax3624 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded

+rounding: ceiling

+fmax3625 fma  1   123456789  0.499999 -> 123456790 Inexact Rounded

+rounding: up

+fmax3626 fma  1   123456789  0.499999 -> 123456790 Inexact Rounded

+rounding: down

+fmax3627 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded

+

+rounding: half_up

+fmax3631 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded

+rounding: half_even

+fmax3632 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded

+rounding: half_down

+fmax3633 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded

+rounding: floor

+fmax3634 fma  1   123456789 -0.499999 -> 123456788 Inexact Rounded

+rounding: ceiling

+fmax3635 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded

+rounding: up

+fmax3636 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded

+rounding: down

+fmax3637 fma  1   123456789 -0.499999 -> 123456788 Inexact Rounded

+

+rounding: half_up

+fmax3641 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded

+rounding: half_even

+fmax3642 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded

+rounding: half_down

+fmax3643 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded

+rounding: floor

+fmax3644 fma  1   123456789  0.500001 -> 123456789 Inexact Rounded

+rounding: ceiling

+fmax3645 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded

+rounding: up

+fmax3646 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded

+rounding: down

+fmax3647 fma  1   123456789  0.500001 -> 123456789 Inexact Rounded

+

+rounding: half_up

+fmax3651 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded

+rounding: half_even

+fmax3652 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded

+rounding: half_down

+fmax3653 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded

+rounding: floor

+fmax3654 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded

+rounding: ceiling

+fmax3655 fma  1   123456789 -0.500001 -> 123456789 Inexact Rounded

+rounding: up

+fmax3656 fma  1   123456789 -0.500001 -> 123456789 Inexact Rounded

+rounding: down

+fmax3657 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded

+

+-- long operand triangle

+rounding: half_up

+precision:  37

+fmax3660 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538

+precision:  36

+fmax3661 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454  Inexact Rounded

+precision:  35

+fmax3662 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345   Inexact Rounded

+precision:  34

+fmax3663 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835    Inexact Rounded

+precision:  33

+fmax3664 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483     Inexact Rounded

+precision:  32

+fmax3665 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148      Inexact Rounded

+precision:  31

+fmax3666 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115       Inexact Rounded

+precision:  30

+fmax3667 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711        Inexact Rounded

+precision:  29

+fmax3668 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371         Inexact Rounded

+precision:  28

+fmax3669 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337          Inexact Rounded

+precision:  27

+fmax3670 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234           Inexact Rounded

+precision:  26

+fmax3671 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223            Inexact Rounded

+precision:  25

+fmax3672 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922             Inexact Rounded

+precision:  24

+fmax3673 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892              Inexact Rounded

+precision:  23

+fmax3674 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389               Inexact Rounded

+precision:  22

+fmax3675 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639                Inexact Rounded

+precision:  21

+fmax3676 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364                 Inexact Rounded

+precision:  20

+fmax3677 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236                  Inexact Rounded

+precision:  19

+fmax3678 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024                   Inexact Rounded

+precision:  18

+fmax3679 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102                    Inexact Rounded

+precision:  17

+fmax3680 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110                     Inexact Rounded

+precision:  16

+fmax3681 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211                      Inexact Rounded

+precision:  15

+fmax3682 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221                       Inexact Rounded

+precision:  14

+fmax3683 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422                        Inexact Rounded

+precision:  13

+fmax3684 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42                         Inexact Rounded

+precision:  12

+fmax3685 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4                          Inexact Rounded

+precision:  11

+fmax3686 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166                            Inexact Rounded

+precision:  10

+fmax3687 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10                        Inexact Rounded

+precision:   9

+fmax3688 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10                         Inexact Rounded

+precision:   8

+fmax3689 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10                          Inexact Rounded

+precision:   7

+fmax3690 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10                          Inexact Rounded

+precision:   6

+fmax3691 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10                          Inexact Rounded

+precision:   5

+fmax3692 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10                          Inexact Rounded

+precision:   4

+fmax3693 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10                          Inexact Rounded

+precision:   3

+fmax3694 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10                          Inexact Rounded

+precision:   2

+fmax3695 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10                          Inexact Rounded

+precision:   1

+fmax3696 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11                          Inexact Rounded

+

+-- more zeros, etc.

+rounding: half_up

+precision:   9

+

+fmax3701 fma  1   5.00 1.00E-3 -> 5.00100

+fmax3702 fma  1   00.00 0.000  -> 0.000

+fmax3703 fma  1   00.00 0E-3   -> 0.000

+fmax3704 fma  1   0E-3  00.00  -> 0.000

+

+fmax3710 fma  1   0E+3  00.00  -> 0.00

+fmax3711 fma  1   0E+3  00.0   -> 0.0

+fmax3712 fma  1   0E+3  00.    -> 0

+fmax3713 fma  1   0E+3  00.E+1 -> 0E+1

+fmax3714 fma  1   0E+3  00.E+2 -> 0E+2

+fmax3715 fma  1   0E+3  00.E+3 -> 0E+3

+fmax3716 fma  1   0E+3  00.E+4 -> 0E+3

+fmax3717 fma  1   0E+3  00.E+5 -> 0E+3

+fmax3718 fma  1   0E+3  -00.0   -> 0.0

+fmax3719 fma  1   0E+3  -00.    -> 0

+fmax3731 fma  1   0E+3  -00.E+1 -> 0E+1

+

+fmax3720 fma  1   00.00  0E+3  -> 0.00

+fmax3721 fma  1   00.0   0E+3  -> 0.0

+fmax3722 fma  1   00.    0E+3  -> 0

+fmax3723 fma  1   00.E+1 0E+3  -> 0E+1

+fmax3724 fma  1   00.E+2 0E+3  -> 0E+2

+fmax3725 fma  1   00.E+3 0E+3  -> 0E+3

+fmax3726 fma  1   00.E+4 0E+3  -> 0E+3

+fmax3727 fma  1   00.E+5 0E+3  -> 0E+3

+fmax3728 fma  1   -00.00 0E+3  -> 0.00

+fmax3729 fma  1   -00.0  0E+3  -> 0.0

+fmax3730 fma  1   -00.   0E+3  -> 0

+

+fmax3732 fma  1    0     0     ->  0

+fmax3733 fma  1    0    -0     ->  0

+fmax3734 fma  1   -0     0     ->  0

+fmax3735 fma  1   -0    -0     -> -0     -- IEEE 854 special case

+

+fmax3736 fma  1    1    -1     ->  0

+fmax3737 fma  1   -1    -1     -> -2

+fmax3738 fma  1    1     1     ->  2

+fmax3739 fma  1   -1     1     ->  0

+

+fmax3741 fma  1    0    -1     -> -1

+fmax3742 fma  1   -0    -1     -> -1

+fmax3743 fma  1    0     1     ->  1

+fmax3744 fma  1   -0     1     ->  1

+fmax3745 fma  1   -1     0     -> -1

+fmax3746 fma  1   -1    -0     -> -1

+fmax3747 fma  1    1     0     ->  1

+fmax3748 fma  1    1    -0     ->  1

+

+fmax3751 fma  1    0.0  -1     -> -1.0

+fmax3752 fma  1   -0.0  -1     -> -1.0

+fmax3753 fma  1    0.0   1     ->  1.0

+fmax3754 fma  1   -0.0   1     ->  1.0

+fmax3755 fma  1   -1.0   0     -> -1.0

+fmax3756 fma  1   -1.0  -0     -> -1.0

+fmax3757 fma  1    1.0   0     ->  1.0

+fmax3758 fma  1    1.0  -0     ->  1.0

+

+fmax3761 fma  1    0    -1.0   -> -1.0

+fmax3762 fma  1   -0    -1.0   -> -1.0

+fmax3763 fma  1    0     1.0   ->  1.0

+fmax3764 fma  1   -0     1.0   ->  1.0

+fmax3765 fma  1   -1     0.0   -> -1.0

+fmax3766 fma  1   -1    -0.0   -> -1.0

+fmax3767 fma  1    1     0.0   ->  1.0

+fmax3768 fma  1    1    -0.0   ->  1.0

+

+fmax3771 fma  1    0.0  -1.0   -> -1.0

+fmax3772 fma  1   -0.0  -1.0   -> -1.0

+fmax3773 fma  1    0.0   1.0   ->  1.0

+fmax3774 fma  1   -0.0   1.0   ->  1.0

+fmax3775 fma  1   -1.0   0.0   -> -1.0

+fmax3776 fma  1   -1.0  -0.0   -> -1.0

+fmax3777 fma  1    1.0   0.0   ->  1.0

+fmax3778 fma  1    1.0  -0.0   ->  1.0

+

+-- Specials

+fmax3780 fma  1   -Inf  -Inf   -> -Infinity

+fmax3781 fma  1   -Inf  -1000  -> -Infinity

+fmax3782 fma  1   -Inf  -1     -> -Infinity

+fmax3783 fma  1   -Inf  -0     -> -Infinity

+fmax3784 fma  1   -Inf   0     -> -Infinity

+fmax3785 fma  1   -Inf   1     -> -Infinity

+fmax3786 fma  1   -Inf   1000  -> -Infinity

+fmax3787 fma  1   -1000 -Inf   -> -Infinity

+fmax3788 fma  1   -Inf  -Inf   -> -Infinity

+fmax3789 fma  1   -1    -Inf   -> -Infinity

+fmax3790 fma  1   -0    -Inf   -> -Infinity

+fmax3791 fma  1    0    -Inf   -> -Infinity

+fmax3792 fma  1    1    -Inf   -> -Infinity

+fmax3793 fma  1    1000 -Inf   -> -Infinity

+fmax3794 fma  1    Inf  -Inf   ->  NaN  Invalid_operation

+

+fmax3800 fma  1    Inf  -Inf   ->  NaN  Invalid_operation

+fmax3801 fma  1    Inf  -1000  ->  Infinity

+fmax3802 fma  1    Inf  -1     ->  Infinity

+fmax3803 fma  1    Inf  -0     ->  Infinity

+fmax3804 fma  1    Inf   0     ->  Infinity

+fmax3805 fma  1    Inf   1     ->  Infinity

+fmax3806 fma  1    Inf   1000  ->  Infinity

+fmax3807 fma  1    Inf   Inf   ->  Infinity

+fmax3808 fma  1   -1000  Inf   ->  Infinity

+fmax3809 fma  1   -Inf   Inf   ->  NaN  Invalid_operation

+fmax3810 fma  1   -1     Inf   ->  Infinity

+fmax3811 fma  1   -0     Inf   ->  Infinity

+fmax3812 fma  1    0     Inf   ->  Infinity

+fmax3813 fma  1    1     Inf   ->  Infinity

+fmax3814 fma  1    1000  Inf   ->  Infinity

+fmax3815 fma  1    Inf   Inf   ->  Infinity

+

+fmax3821 fma  1    NaN -Inf    ->  NaN

+fmax3822 fma  1    NaN -1000   ->  NaN

+fmax3823 fma  1    NaN -1      ->  NaN

+fmax3824 fma  1    NaN -0      ->  NaN

+fmax3825 fma  1    NaN  0      ->  NaN

+fmax3826 fma  1    NaN  1      ->  NaN

+fmax3827 fma  1    NaN  1000   ->  NaN

+fmax3828 fma  1    NaN  Inf    ->  NaN

+fmax3829 fma  1    NaN  NaN    ->  NaN

+fmax3830 fma  1   -Inf  NaN    ->  NaN

+fmax3831 fma  1   -1000 NaN    ->  NaN

+fmax3832 fma  1   -1    NaN    ->  NaN

+fmax3833 fma  1   -0    NaN    ->  NaN

+fmax3834 fma  1    0    NaN    ->  NaN

+fmax3835 fma  1    1    NaN    ->  NaN

+fmax3836 fma  1    1000 NaN    ->  NaN

+fmax3837 fma  1    Inf  NaN    ->  NaN

+

+fmax3841 fma  1    sNaN -Inf   ->  NaN  Invalid_operation

+fmax3842 fma  1    sNaN -1000  ->  NaN  Invalid_operation

+fmax3843 fma  1    sNaN -1     ->  NaN  Invalid_operation

+fmax3844 fma  1    sNaN -0     ->  NaN  Invalid_operation

+fmax3845 fma  1    sNaN  0     ->  NaN  Invalid_operation

+fmax3846 fma  1    sNaN  1     ->  NaN  Invalid_operation

+fmax3847 fma  1    sNaN  1000  ->  NaN  Invalid_operation

+fmax3848 fma  1    sNaN  NaN   ->  NaN  Invalid_operation

+fmax3849 fma  1    sNaN sNaN   ->  NaN  Invalid_operation

+fmax3850 fma  1    NaN  sNaN   ->  NaN  Invalid_operation

+fmax3851 fma  1   -Inf  sNaN   ->  NaN  Invalid_operation

+fmax3852 fma  1   -1000 sNaN   ->  NaN  Invalid_operation

+fmax3853 fma  1   -1    sNaN   ->  NaN  Invalid_operation

+fmax3854 fma  1   -0    sNaN   ->  NaN  Invalid_operation

+fmax3855 fma  1    0    sNaN   ->  NaN  Invalid_operation

+fmax3856 fma  1    1    sNaN   ->  NaN  Invalid_operation

+fmax3857 fma  1    1000 sNaN   ->  NaN  Invalid_operation

+fmax3858 fma  1    Inf  sNaN   ->  NaN  Invalid_operation

+fmax3859 fma  1    NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+fmax3861 fma  1    NaN1   -Inf    ->  NaN1

+fmax3862 fma  1   +NaN2   -1000   ->  NaN2

+fmax3863 fma  1    NaN3    1000   ->  NaN3

+fmax3864 fma  1    NaN4    Inf    ->  NaN4

+fmax3865 fma  1    NaN5   +NaN6   ->  NaN5

+fmax3866 fma  1   -Inf     NaN7   ->  NaN7

+fmax3867 fma  1   -1000    NaN8   ->  NaN8

+fmax3868 fma  1    1000    NaN9   ->  NaN9

+fmax3869 fma  1    Inf    +NaN10  ->  NaN10

+fmax3871 fma  1    sNaN11  -Inf   ->  NaN11  Invalid_operation

+fmax3872 fma  1    sNaN12  -1000  ->  NaN12  Invalid_operation

+fmax3873 fma  1    sNaN13   1000  ->  NaN13  Invalid_operation

+fmax3874 fma  1    sNaN14   NaN17 ->  NaN14  Invalid_operation

+fmax3875 fma  1    sNaN15  sNaN18 ->  NaN15  Invalid_operation

+fmax3876 fma  1    NaN16   sNaN19 ->  NaN19  Invalid_operation

+fmax3877 fma  1   -Inf    +sNaN20 ->  NaN20  Invalid_operation

+fmax3878 fma  1   -1000    sNaN21 ->  NaN21  Invalid_operation

+fmax3879 fma  1    1000    sNaN22 ->  NaN22  Invalid_operation

+fmax3880 fma  1    Inf     sNaN23 ->  NaN23  Invalid_operation

+fmax3881 fma  1   +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+fmax3882 fma  1   -NaN26    NaN28 -> -NaN26

+fmax3883 fma  1   -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+fmax3884 fma  1    1000    -NaN30 -> -NaN30

+fmax3885 fma  1    1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- overflow, underflow and subnormal tests

+maxexponent: 999999

+minexponent: -999999

+precision: 9

+fmax3890 fma  1   1E+999999     9E+999999   -> Infinity Overflow Inexact Rounded

+fmax3891 fma  1   9E+999999     1E+999999   -> Infinity Overflow Inexact Rounded

+fmax3892 fma  1   -1.1E-999999  1E-999999   -> -1E-1000000    Subnormal

+fmax3893 fma  1   1E-999999    -1.1e-999999 -> -1E-1000000    Subnormal

+fmax3894 fma  1   -1.0001E-999999  1E-999999   -> -1E-1000003 Subnormal

+fmax3895 fma  1   1E-999999    -1.0001e-999999 -> -1E-1000003 Subnormal

+fmax3896 fma  1   -1E+999999   -9E+999999   -> -Infinity Overflow Inexact Rounded

+fmax3897 fma  1   -9E+999999   -1E+999999   -> -Infinity Overflow Inexact Rounded

+fmax3898 fma  1   +1.1E-999999 -1E-999999   -> 1E-1000000   Subnormal

+fmax3899 fma  1   -1E-999999   +1.1e-999999 -> 1E-1000000    Subnormal

+fmax3900 fma  1   +1.0001E-999999 -1E-999999   -> 1E-1000003 Subnormal

+fmax3901 fma  1   -1E-999999   +1.0001e-999999 -> 1E-1000003 Subnormal

+fmax3902 fma  1   -1E+999999   +9E+999999   ->  8E+999999

+fmax3903 fma  1   -9E+999999   +1E+999999   -> -8E+999999

+

+precision: 3

+fmax3904 fma  1        0 -9.999E+999999   -> -Infinity Inexact Overflow Rounded

+fmax3905 fma  1          -9.999E+999999 0 -> -Infinity Inexact Overflow Rounded

+fmax3906 fma  1        0  9.999E+999999   ->  Infinity Inexact Overflow Rounded

+fmax3907 fma  1           9.999E+999999 0 ->  Infinity Inexact Overflow Rounded

+

+precision: 3

+maxexponent: 999

+minexponent: -999

+fmax3910 fma  1    1.00E-999   0    ->   1.00E-999

+fmax3911 fma  1    0.1E-999    0    ->   1E-1000   Subnormal

+fmax3912 fma  1    0.10E-999   0    ->   1.0E-1000 Subnormal

+fmax3913 fma  1    0.100E-999  0    ->   1.0E-1000 Subnormal Rounded

+fmax3914 fma  1    0.01E-999   0    ->   1E-1001   Subnormal

+-- next is rounded to Nmin

+fmax3915 fma  1    0.999E-999  0    ->   1.00E-999 Inexact Rounded Subnormal Underflow

+fmax3916 fma  1    0.099E-999  0    ->   1.0E-1000 Inexact Rounded Subnormal Underflow

+fmax3917 fma  1    0.009E-999  0    ->   1E-1001   Inexact Rounded Subnormal Underflow

+fmax3918 fma  1    0.001E-999  0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped

+fmax3919 fma  1    0.0009E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped

+fmax3920 fma  1    0.0001E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped

+

+fmax3930 fma  1   -1.00E-999   0    ->  -1.00E-999

+fmax3931 fma  1   -0.1E-999    0    ->  -1E-1000   Subnormal

+fmax3932 fma  1   -0.10E-999   0    ->  -1.0E-1000 Subnormal

+fmax3933 fma  1   -0.100E-999  0    ->  -1.0E-1000 Subnormal Rounded

+fmax3934 fma  1   -0.01E-999   0    ->  -1E-1001   Subnormal

+-- next is rounded to Nmin

+fmax3935 fma  1   -0.999E-999  0    ->  -1.00E-999 Inexact Rounded Subnormal Underflow

+fmax3936 fma  1   -0.099E-999  0    ->  -1.0E-1000 Inexact Rounded Subnormal Underflow

+fmax3937 fma  1   -0.009E-999  0    ->  -1E-1001   Inexact Rounded Subnormal Underflow

+fmax3938 fma  1   -0.001E-999  0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped

+fmax3939 fma  1   -0.0009E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped

+fmax3940 fma  1   -0.0001E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped

+

+-- some non-zero subnormal fma  1  s

+fmax3950 fma  1    1.00E-999    0.1E-999  ->   1.10E-999

+fmax3951 fma  1    0.1E-999     0.1E-999  ->   2E-1000    Subnormal

+fmax3952 fma  1    0.10E-999    0.1E-999  ->   2.0E-1000  Subnormal

+fmax3953 fma  1    0.100E-999   0.1E-999  ->   2.0E-1000  Subnormal Rounded

+fmax3954 fma  1    0.01E-999    0.1E-999  ->   1.1E-1000  Subnormal

+fmax3955 fma  1    0.999E-999   0.1E-999  ->   1.10E-999  Inexact Rounded

+fmax3956 fma  1    0.099E-999   0.1E-999  ->   2.0E-1000  Inexact Rounded Subnormal Underflow

+fmax3957 fma  1    0.009E-999   0.1E-999  ->   1.1E-1000  Inexact Rounded Subnormal Underflow

+fmax3958 fma  1    0.001E-999   0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow

+fmax3959 fma  1    0.0009E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow

+fmax3960 fma  1    0.0001E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow

+-- negatives...

+fmax3961 fma  1    1.00E-999   -0.1E-999  ->   9.0E-1000  Subnormal

+fmax3962 fma  1    0.1E-999    -0.1E-999  ->   0E-1000

+fmax3963 fma  1    0.10E-999   -0.1E-999  ->   0E-1001

+fmax3964 fma  1    0.100E-999  -0.1E-999  ->   0E-1001    Clamped

+fmax3965 fma  1    0.01E-999   -0.1E-999  ->   -9E-1001   Subnormal

+fmax3966 fma  1    0.999E-999  -0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow

+fmax3967 fma  1    0.099E-999  -0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow Clamped

+fmax3968 fma  1    0.009E-999  -0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow

+fmax3969 fma  1    0.001E-999  -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow

+fmax3970 fma  1    0.0009E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow

+fmax3971 fma  1    0.0001E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow

+

+-- some 'real' numbers

+maxExponent: 384

+minExponent: -383

+precision: 8

+fmax3566 fma  1   99999061735E-394  0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal

+precision: 7

+fmax3567 fma  1   99999061735E-394  0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal

+precision: 6

+fmax3568 fma  1   99999061735E-394  0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal

+

+-- now the case where we can get underflow but the result is normal

+-- [note this can't happen if the operands are also bounded, as we

+-- cannot represent 1E-399, for example]

+precision:   16

+rounding:    half_up

+maxExponent: 384

+minExponent: -383

+

+fmax3571 fma  1         1E-383       0  -> 1E-383

+fmax3572 fma  1         1E-384       0  -> 1E-384   Subnormal

+fmax3573 fma  1         1E-383  1E-384  -> 1.1E-383

+fmax3574 subtract  1E-383  1E-384  ->   9E-384 Subnormal

+

+-- Here we explore the boundary of rounding a subnormal to Nmin

+fmax3575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal

+fmax3576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal

+fmax3577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax3578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax3579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax3580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+

+-- check for double-rounded subnormals

+precision:   5

+maxexponent: 79

+minexponent: -79

+-- Add: lhs and rhs 0

+fmax31001 fma  1         1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31002 fma  1         1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31003 fma  1         1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31004 fma  1         0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31005 fma  1         0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31006 fma  1         0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+

+-- Add: lhs >> rhs and vice versa

+fmax31011 fma  1         1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31012 fma  1         1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31013 fma  1         1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31014 fma  1         1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31015 fma  1         1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+fmax31016 fma  1         1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow

+

+-- Add: lhs + rhs fma  1  ition carried out

+fmax31021 fma  1         1.52443E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow

+fmax31022 fma  1         1.52444E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow

+fmax31023 fma  1         1.52445E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow

+fmax31024 fma  1         1.00001E-80  1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow

+fmax31025 fma  1         1.00001E-80  1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow

+fmax31026 fma  1         1.00001E-80  1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow

+

+-- And for round down full and subnormal results

+precision:    16

+maxExponent: +384

+minExponent: -383

+rounding:     down

+

+fmax31100 fma  1   1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact

+fmax31101 fma  1   1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact

+fmax31103 fma  1     +1 -1e-383    -> 0.9999999999999999  Rounded Inexact

+fmax31104 fma  1   1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact

+fmax31105 fma  1   1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact

+fmax31106 fma  1   1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact

+fmax31107 fma  1   1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact

+fmax31108 fma  1   1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact

+fmax31109 fma  1   1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact

+

+rounding:     ceiling

+fmax31110 fma  1   -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact

+fmax31111 fma  1   -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact

+fmax31113 fma  1      -1 +1e-383   -> -0.9999999999999999  Rounded Inexact

+fmax31114 fma  1   -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact

+fmax31115 fma  1   -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact

+fmax31116 fma  1   -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact

+fmax31117 fma  1   -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact

+fmax31118 fma  1   -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact

+fmax31119 fma  1   -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact

+

+rounding:     down

+precision:    7

+maxExponent: +96

+minExponent: -95

+fmax31130 fma  1     1            -1e-200  -> 0.9999999  Rounded Inexact

+-- subnormal boundary

+fmax31131 fma  1     1.000000E-94  -1e-200  ->  9.999999E-95  Rounded Inexact

+fmax31132 fma  1     1.000001E-95  -1e-200  ->  1.000000E-95  Rounded Inexact

+fmax31133 fma  1     1.000000E-95  -1e-200  ->  9.99999E-96  Rounded Inexact Subnormal Underflow

+fmax31134 fma  1     0.999999E-95  -1e-200  ->  9.99998E-96  Rounded Inexact Subnormal Underflow

+fmax31135 fma  1     0.001000E-95  -1e-200  ->  9.99E-99  Rounded Inexact Subnormal Underflow

+fmax31136 fma  1     0.000999E-95  -1e-200  ->  9.98E-99  Rounded Inexact Subnormal Underflow

+fmax31137 fma  1     1.000000E-95  -1e-101  ->  9.99999E-96  Subnormal

+fmax31138 fma  1        10000E-101 -1e-200  ->  9.999E-98  Subnormal Inexact Rounded Underflow

+fmax31139 fma  1         1000E-101 -1e-200  ->  9.99E-99   Subnormal Inexact Rounded Underflow

+fmax31140 fma  1          100E-101 -1e-200  ->  9.9E-100   Subnormal Inexact Rounded Underflow

+fmax31141 fma  1           10E-101 -1e-200  ->  9E-101     Subnormal Inexact Rounded Underflow

+fmax31142 fma  1            1E-101 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped

+fmax31143 fma  1            0E-101 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped

+fmax31144 fma  1            1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped

+

+fmax31151 fma  1        10000E-102 -1e-200  ->  9.99E-99  Subnormal Inexact Rounded Underflow

+fmax31152 fma  1         1000E-102 -1e-200  ->  9.9E-100  Subnormal Inexact Rounded Underflow

+fmax31153 fma  1          100E-102 -1e-200  ->  9E-101   Subnormal Inexact Rounded Underflow

+fmax31154 fma  1           10E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped

+fmax31155 fma  1            1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped

+fmax31156 fma  1            0E-102 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped

+fmax31157 fma  1            1E-103 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped

+

+fmax31160 fma  1          100E-105 -1e-101  -> -0E-101 Subnormal Inexact Rounded Underflow Clamped

+fmax31161 fma  1          100E-105 -1e-201  ->  0E-101 Subnormal Inexact Rounded Underflow Clamped

+

+-- tests based on Gunnar Degnbol's edge case

+precision:   15

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+fmax31200 fma  1   1E15  -0.5                 ->  1.00000000000000E+15 Inexact Rounded

+fmax31201 fma  1   1E15  -0.50                ->  1.00000000000000E+15 Inexact Rounded

+fmax31210 fma  1   1E15  -0.51                ->  999999999999999      Inexact Rounded

+fmax31211 fma  1   1E15  -0.501               ->  999999999999999      Inexact Rounded

+fmax31212 fma  1   1E15  -0.5001              ->  999999999999999      Inexact Rounded

+fmax31213 fma  1   1E15  -0.50001             ->  999999999999999      Inexact Rounded

+fmax31214 fma  1   1E15  -0.500001            ->  999999999999999      Inexact Rounded

+fmax31215 fma  1   1E15  -0.5000001           ->  999999999999999      Inexact Rounded

+fmax31216 fma  1   1E15  -0.50000001          ->  999999999999999      Inexact Rounded

+fmax31217 fma  1   1E15  -0.500000001         ->  999999999999999      Inexact Rounded

+fmax31218 fma  1   1E15  -0.5000000001        ->  999999999999999      Inexact Rounded

+fmax31219 fma  1   1E15  -0.50000000001       ->  999999999999999      Inexact Rounded

+fmax31220 fma  1   1E15  -0.500000000001      ->  999999999999999      Inexact Rounded

+fmax31221 fma  1   1E15  -0.5000000000001     ->  999999999999999      Inexact Rounded

+fmax31222 fma  1   1E15  -0.50000000000001    ->  999999999999999      Inexact Rounded

+fmax31223 fma  1   1E15  -0.500000000000001   ->  999999999999999      Inexact Rounded

+fmax31224 fma  1   1E15  -0.5000000000000001  ->  999999999999999      Inexact Rounded

+fmax31225 fma  1   1E15  -0.5000000000000000  ->  1.00000000000000E+15 Inexact Rounded

+fmax31230 fma  1   1E15  -5000000.000000001   ->  999999995000000      Inexact Rounded

+

+precision:   16

+

+fmax31300 fma  1   1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded

+fmax31310 fma  1   1E16  -0.51                ->  9999999999999999      Inexact Rounded

+fmax31311 fma  1   1E16  -0.501               ->  9999999999999999      Inexact Rounded

+fmax31312 fma  1   1E16  -0.5001              ->  9999999999999999      Inexact Rounded

+fmax31313 fma  1   1E16  -0.50001             ->  9999999999999999      Inexact Rounded

+fmax31314 fma  1   1E16  -0.500001            ->  9999999999999999      Inexact Rounded

+fmax31315 fma  1   1E16  -0.5000001           ->  9999999999999999      Inexact Rounded

+fmax31316 fma  1   1E16  -0.50000001          ->  9999999999999999      Inexact Rounded

+fmax31317 fma  1   1E16  -0.500000001         ->  9999999999999999      Inexact Rounded

+fmax31318 fma  1   1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded

+fmax31319 fma  1   1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded

+fmax31320 fma  1   1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded

+fmax31321 fma  1   1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded

+fmax31322 fma  1   1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded

+fmax31323 fma  1   1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded

+fmax31324 fma  1   1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded

+fmax31325 fma  1   1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded

+fmax31326 fma  1   1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded

+fmax31327 fma  1   1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded

+fmax31328 fma  1   1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded

+fmax31329 fma  1   1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded

+fmax31330 fma  1   1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded

+fmax31331 fma  1   1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded

+fmax31332 fma  1   1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded

+fmax31333 fma  1   1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded

+fmax31334 fma  1   1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded

+fmax31335 fma  1   1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded

+fmax31336 fma  1   1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded

+fmax31337 fma  1   1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded

+fmax31338 fma  1   1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded

+fmax31339 fma  1   1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded

+

+fmax31340 fma  1   1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded

+fmax31341 fma  1   1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded

+

+fmax31349 fma  1   9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded

+fmax31350 fma  1   9999999999999999 0.49                ->  9999999999999999      Inexact Rounded

+fmax31351 fma  1   9999999999999999 0.499               ->  9999999999999999      Inexact Rounded

+fmax31352 fma  1   9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded

+fmax31353 fma  1   9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded

+fmax31354 fma  1   9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded

+fmax31355 fma  1   9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded

+fmax31356 fma  1   9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded

+fmax31357 fma  1   9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded

+fmax31358 fma  1   9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded

+fmax31359 fma  1   9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded

+fmax31360 fma  1   9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded

+fmax31361 fma  1   9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded

+fmax31362 fma  1   9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded

+fmax31363 fma  1   9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded

+fmax31364 fma  1   9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded

+fmax31365 fma  1   9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded

+fmax31367 fma  1   9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded

+fmax31368 fma  1   9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded

+fmax31369 fma  1   9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded

+fmax31370 fma  1   9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded

+fmax31371 fma  1   9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded

+fmax31372 fma  1   9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded

+fmax31373 fma  1   9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded

+fmax31374 fma  1   9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded

+fmax31375 fma  1   9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded

+fmax31376 fma  1   9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded

+fmax31377 fma  1   9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded

+fmax31378 fma  1   9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded

+fmax31379 fma  1   9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded

+fmax31380 fma  1   9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded

+fmax31381 fma  1   9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded

+fmax31382 fma  1   9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded

+fmax31383 fma  1   9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded

+fmax31384 fma  1   9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded

+fmax31385 fma  1   9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded

+fmax31386 fma  1   9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded

+fmax31387 fma  1   9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded

+fmax31388 fma  1   9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded

+fmax31389 fma  1   9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded

+fmax31390 fma  1   9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded

+fmax31391 fma  1   9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded

+fmax31392 fma  1   9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded

+fmax31393 fma  1   9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded

+fmax31394 fma  1   9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded

+fmax31395 fma  1   9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded

+fmax31396 fma  1   9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded

+

+-- More GD edge cases, where difference between the unadjusted

+-- exponents is larger than the maximum precision and one side is 0

+precision:   15

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+fmax31400 fma  1    0 1.23456789012345     -> 1.23456789012345

+fmax31401 fma  1    0 1.23456789012345E-1  -> 0.123456789012345

+fmax31402 fma  1    0 1.23456789012345E-2  -> 0.0123456789012345

+fmax31403 fma  1    0 1.23456789012345E-3  -> 0.00123456789012345

+fmax31404 fma  1    0 1.23456789012345E-4  -> 0.000123456789012345

+fmax31405 fma  1    0 1.23456789012345E-5  -> 0.0000123456789012345

+fmax31406 fma  1    0 1.23456789012345E-6  -> 0.00000123456789012345

+fmax31407 fma  1    0 1.23456789012345E-7  -> 1.23456789012345E-7

+fmax31408 fma  1    0 1.23456789012345E-8  -> 1.23456789012345E-8

+fmax31409 fma  1    0 1.23456789012345E-9  -> 1.23456789012345E-9

+fmax31410 fma  1    0 1.23456789012345E-10 -> 1.23456789012345E-10

+fmax31411 fma  1    0 1.23456789012345E-11 -> 1.23456789012345E-11

+fmax31412 fma  1    0 1.23456789012345E-12 -> 1.23456789012345E-12

+fmax31413 fma  1    0 1.23456789012345E-13 -> 1.23456789012345E-13

+fmax31414 fma  1    0 1.23456789012345E-14 -> 1.23456789012345E-14

+fmax31415 fma  1    0 1.23456789012345E-15 -> 1.23456789012345E-15

+fmax31416 fma  1    0 1.23456789012345E-16 -> 1.23456789012345E-16

+fmax31417 fma  1    0 1.23456789012345E-17 -> 1.23456789012345E-17

+fmax31418 fma  1    0 1.23456789012345E-18 -> 1.23456789012345E-18

+fmax31419 fma  1    0 1.23456789012345E-19 -> 1.23456789012345E-19

+

+-- same, precision 16..

+precision:   16

+fmax31420 fma  1    0 1.123456789012345     -> 1.123456789012345

+fmax31421 fma  1    0 1.123456789012345E-1  -> 0.1123456789012345

+fmax31422 fma  1    0 1.123456789012345E-2  -> 0.01123456789012345

+fmax31423 fma  1    0 1.123456789012345E-3  -> 0.001123456789012345

+fmax31424 fma  1    0 1.123456789012345E-4  -> 0.0001123456789012345

+fmax31425 fma  1    0 1.123456789012345E-5  -> 0.00001123456789012345

+fmax31426 fma  1    0 1.123456789012345E-6  -> 0.000001123456789012345

+fmax31427 fma  1    0 1.123456789012345E-7  -> 1.123456789012345E-7

+fmax31428 fma  1    0 1.123456789012345E-8  -> 1.123456789012345E-8

+fmax31429 fma  1    0 1.123456789012345E-9  -> 1.123456789012345E-9

+fmax31430 fma  1    0 1.123456789012345E-10 -> 1.123456789012345E-10

+fmax31431 fma  1    0 1.123456789012345E-11 -> 1.123456789012345E-11

+fmax31432 fma  1    0 1.123456789012345E-12 -> 1.123456789012345E-12

+fmax31433 fma  1    0 1.123456789012345E-13 -> 1.123456789012345E-13

+fmax31434 fma  1    0 1.123456789012345E-14 -> 1.123456789012345E-14

+fmax31435 fma  1    0 1.123456789012345E-15 -> 1.123456789012345E-15

+fmax31436 fma  1    0 1.123456789012345E-16 -> 1.123456789012345E-16

+fmax31437 fma  1    0 1.123456789012345E-17 -> 1.123456789012345E-17

+fmax31438 fma  1    0 1.123456789012345E-18 -> 1.123456789012345E-18

+fmax31439 fma  1    0 1.123456789012345E-19 -> 1.123456789012345E-19

+

+-- same, reversed 0

+fmax31440 fma  1   1.123456789012345     0 -> 1.123456789012345

+fmax31441 fma  1   1.123456789012345E-1  0 -> 0.1123456789012345

+fmax31442 fma  1   1.123456789012345E-2  0 -> 0.01123456789012345

+fmax31443 fma  1   1.123456789012345E-3  0 -> 0.001123456789012345

+fmax31444 fma  1   1.123456789012345E-4  0 -> 0.0001123456789012345

+fmax31445 fma  1   1.123456789012345E-5  0 -> 0.00001123456789012345

+fmax31446 fma  1   1.123456789012345E-6  0 -> 0.000001123456789012345

+fmax31447 fma  1   1.123456789012345E-7  0 -> 1.123456789012345E-7

+fmax31448 fma  1   1.123456789012345E-8  0 -> 1.123456789012345E-8

+fmax31449 fma  1   1.123456789012345E-9  0 -> 1.123456789012345E-9

+fmax31450 fma  1   1.123456789012345E-10 0 -> 1.123456789012345E-10

+fmax31451 fma  1   1.123456789012345E-11 0 -> 1.123456789012345E-11

+fmax31452 fma  1   1.123456789012345E-12 0 -> 1.123456789012345E-12

+fmax31453 fma  1   1.123456789012345E-13 0 -> 1.123456789012345E-13

+fmax31454 fma  1   1.123456789012345E-14 0 -> 1.123456789012345E-14

+fmax31455 fma  1   1.123456789012345E-15 0 -> 1.123456789012345E-15

+fmax31456 fma  1   1.123456789012345E-16 0 -> 1.123456789012345E-16

+fmax31457 fma  1   1.123456789012345E-17 0 -> 1.123456789012345E-17

+fmax31458 fma  1   1.123456789012345E-18 0 -> 1.123456789012345E-18

+fmax31459 fma  1   1.123456789012345E-19 0 -> 1.123456789012345E-19

+

+-- same, Es on the 0

+fmax31460 fma  1   1.123456789012345  0E-0   -> 1.123456789012345

+fmax31461 fma  1   1.123456789012345  0E-1   -> 1.123456789012345

+fmax31462 fma  1   1.123456789012345  0E-2   -> 1.123456789012345

+fmax31463 fma  1   1.123456789012345  0E-3   -> 1.123456789012345

+fmax31464 fma  1   1.123456789012345  0E-4   -> 1.123456789012345

+fmax31465 fma  1   1.123456789012345  0E-5   -> 1.123456789012345

+fmax31466 fma  1   1.123456789012345  0E-6   -> 1.123456789012345

+fmax31467 fma  1   1.123456789012345  0E-7   -> 1.123456789012345

+fmax31468 fma  1   1.123456789012345  0E-8   -> 1.123456789012345

+fmax31469 fma  1   1.123456789012345  0E-9   -> 1.123456789012345

+fmax31470 fma  1   1.123456789012345  0E-10  -> 1.123456789012345

+fmax31471 fma  1   1.123456789012345  0E-11  -> 1.123456789012345

+fmax31472 fma  1   1.123456789012345  0E-12  -> 1.123456789012345

+fmax31473 fma  1   1.123456789012345  0E-13  -> 1.123456789012345

+fmax31474 fma  1   1.123456789012345  0E-14  -> 1.123456789012345

+fmax31475 fma  1   1.123456789012345  0E-15  -> 1.123456789012345

+-- next four flag Rounded because the 0 extends the result

+fmax31476 fma  1   1.123456789012345  0E-16  -> 1.123456789012345 Rounded

+fmax31477 fma  1   1.123456789012345  0E-17  -> 1.123456789012345 Rounded

+fmax31478 fma  1   1.123456789012345  0E-18  -> 1.123456789012345 Rounded

+fmax31479 fma  1   1.123456789012345  0E-19  -> 1.123456789012345 Rounded

+

+-- sum of two opposite-sign operands is exactly 0 and floor => -0

+precision:   16

+maxExponent: 384

+minexponent: -383

+

+rounding:    half_up

+-- exact zeros from zeros

+fmax31500 fma  1    0        0E-19  ->  0E-19

+fmax31501 fma  1   -0        0E-19  ->  0E-19

+fmax31502 fma  1    0       -0E-19  ->  0E-19

+fmax31503 fma  1   -0       -0E-19  -> -0E-19

+fmax31504 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax31505 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax31506 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax31507 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax31511 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31512 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31513 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31514 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax31515 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31516 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax31517 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax31518 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+rounding:    half_down

+-- exact zeros from zeros

+fmax31520 fma  1    0        0E-19  ->  0E-19

+fmax31521 fma  1   -0        0E-19  ->  0E-19

+fmax31522 fma  1    0       -0E-19  ->  0E-19

+fmax31523 fma  1   -0       -0E-19  -> -0E-19

+fmax31524 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax31525 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax31526 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax31527 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax31531 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31532 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31533 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31534 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax31535 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31536 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax31537 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax31538 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+rounding:    half_even

+-- exact zeros from zeros

+fmax31540 fma  1    0        0E-19  ->  0E-19

+fmax31541 fma  1   -0        0E-19  ->  0E-19

+fmax31542 fma  1    0       -0E-19  ->  0E-19

+fmax31543 fma  1   -0       -0E-19  -> -0E-19

+fmax31544 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax31545 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax31546 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax31547 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax31551 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31552 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31553 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31554 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax31555 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31556 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax31557 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax31558 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+rounding:    up

+-- exact zeros from zeros

+fmax31560 fma  1    0        0E-19  ->  0E-19

+fmax31561 fma  1   -0        0E-19  ->  0E-19

+fmax31562 fma  1    0       -0E-19  ->  0E-19

+fmax31563 fma  1   -0       -0E-19  -> -0E-19

+fmax31564 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax31565 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax31566 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax31567 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax31571 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax31572 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax31573 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow

+fmax31574 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow

+-- some exact zeros from non-zeros

+fmax31575 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax31576 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax31577 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax31578 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow

+

+rounding:    down

+-- exact zeros from zeros

+fmax31580 fma  1    0        0E-19  ->  0E-19

+fmax31581 fma  1   -0        0E-19  ->  0E-19

+fmax31582 fma  1    0       -0E-19  ->  0E-19

+fmax31583 fma  1   -0       -0E-19  -> -0E-19

+fmax31584 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax31585 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax31586 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax31587 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax31591 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31592 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31593 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31594 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax31595 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31596 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax31597 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax31598 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+rounding:    ceiling

+-- exact zeros from zeros

+fmax31600 fma  1    0        0E-19  ->  0E-19

+fmax31601 fma  1   -0        0E-19  ->  0E-19

+fmax31602 fma  1    0       -0E-19  ->  0E-19

+fmax31603 fma  1   -0       -0E-19  -> -0E-19

+fmax31604 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax31605 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax31606 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax31607 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax31611 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax31612 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax31613 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31614 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax31615 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax31616 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax31617 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax31618 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+-- and the extra-special ugly case; unusual minuses marked by -- *

+rounding:    floor

+-- exact zeros from zeros

+fmax31620 fma  1    0        0E-19  ->  0E-19

+fmax31621 fma  1   -0        0E-19  -> -0E-19           -- *

+fmax31622 fma  1    0       -0E-19  -> -0E-19           -- *

+fmax31623 fma  1   -0       -0E-19  -> -0E-19

+fmax31624 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax31625 fma  1   -0E-400   0E-19  -> -0E-398 Clamped  -- *

+fmax31626 fma  1    0E-400  -0E-19  -> -0E-398 Clamped  -- *

+fmax31627 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax31631 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31632 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31633 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow

+fmax31634 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow

+-- some exact zeros from non-zeros

+fmax31635 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax31636 fma  1   -1E-401   1E-401 -> -0E-398 Clamped  -- *

+fmax31637 fma  1    1E-401  -1E-401 -> -0E-398 Clamped  -- *

+fmax31638 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow

+

+-- BigDecimal problem testcases 2006.01.23

+precision:   16

+maxExponent: 384

+minexponent: -383

+

+rounding:  down

+precision: 7

+fmax31651 fma  1    10001E+2  -2E+1 -> 1.00008E+6

+precision: 6

+fmax31652 fma  1    10001E+2  -2E+1 -> 1.00008E+6

+precision: 5

+fmax31653 fma  1    10001E+2  -2E+1 -> 1.0000E+6   Inexact Rounded

+precision: 4

+fmax31654 fma  1    10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded

+precision: 3

+fmax31655 fma  1    10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded

+precision: 2

+fmax31656 fma  1    10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded

+precision: 1

+fmax31657 fma  1    10001E+2  -2E+1 -> 1E+6        Inexact Rounded

+

+rounding:  half_even

+precision: 7

+fmax31661 fma  1    10001E+2  -2E+1 -> 1.00008E+6

+precision: 6

+fmax31662 fma  1    10001E+2  -2E+1 -> 1.00008E+6

+precision: 5

+fmax31663 fma  1    10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded

+precision: 4

+fmax31664 fma  1    10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded

+precision: 3

+fmax31665 fma  1    10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded

+precision: 2

+fmax31666 fma  1    10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded

+precision: 1

+fmax31667 fma  1    10001E+2  -2E+1 -> 1E+6        Inexact Rounded

+

+rounding:  up

+precision: 7

+fmax31671 fma  1    10001E+2  -2E+1 -> 1.00008E+6

+precision: 6

+fmax31672 fma  1    10001E+2  -2E+1 -> 1.00008E+6

+precision: 5

+fmax31673 fma  1    10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded

+precision: 4

+fmax31674 fma  1    10001E+2  -2E+1 -> 1.001E+6    Inexact Rounded

+precision: 3

+fmax31675 fma  1    10001E+2  -2E+1 -> 1.01E+6     Inexact Rounded

+precision: 2

+fmax31676 fma  1    10001E+2  -2E+1 -> 1.1E+6      Inexact Rounded

+precision: 1

+fmax31677 fma  1    10001E+2  -2E+1 -> 2E+6        Inexact Rounded

+

+precision:   34

+rounding:    half_up

+maxExponent: 6144

+minExponent: -6143

+-- Examples from SQL proposal (Krishna Kulkarni)

+fmax31701  fma  1   130E-2    120E-2    -> 2.50

+fmax31702  fma  1   130E-2    12E-1     -> 2.50

+fmax31703  fma  1   130E-2    1E0       -> 2.30

+fmax31704  fma  1   1E2       1E4       -> 1.01E+4

+fmax31705  subtract 130E-2  120E-2 -> 0.10

+fmax31706  subtract 130E-2  12E-1  -> 0.10

+fmax31707  subtract 130E-2  1E0    -> 0.30

+fmax31708  subtract 1E2     1E4    -> -9.9E+3

+

+------------------------------------------------------------------------

+-- Same as above, using decimal64 default parameters                  --

+------------------------------------------------------------------------

+precision:   16

+rounding:    half_even

+maxExponent: 384

+minexponent: -383

+

+-- [first group are 'quick confidence check']

+fmax36001 fma  1   1       1       ->  2

+fmax36002 fma  1   2       3       ->  5

+fmax36003 fma  1   '5.75'  '3.3'   ->  9.05

+fmax36004 fma  1   '5'     '-3'    ->  2

+fmax36005 fma  1   '-5'    '-3'    ->  -8

+fmax36006 fma  1   '-7'    '2.5'   ->  -4.5

+fmax36007 fma  1   '0.7'   '0.3'   ->  1.0

+fmax36008 fma  1   '1.25'  '1.25'  ->  2.50

+fmax36009 fma  1   '1.23456789'  '1.00000000' -> '2.23456789'

+fmax36010 fma  1   '1.23456789'  '1.00000011' -> '2.23456800'

+

+fmax36011 fma  1   '0.44444444444444444'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded

+fmax36012 fma  1   '0.44444444444444440'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded

+fmax36013 fma  1   '0.44444444444444444'  '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded

+fmax36014 fma  1   '0.444444444444444449'    '0' -> '0.4444444444444444' Inexact Rounded

+fmax36015 fma  1   '0.4444444444444444499'   '0' -> '0.4444444444444444' Inexact Rounded

+fmax36016 fma  1   '0.44444444444444444999'  '0' -> '0.4444444444444444' Inexact Rounded

+fmax36017 fma  1   '0.44444444444444445000'  '0' -> '0.4444444444444444' Inexact Rounded

+fmax36018 fma  1   '0.44444444444444445001'  '0' -> '0.4444444444444445' Inexact Rounded

+fmax36019 fma  1   '0.4444444444444444501'   '0' -> '0.4444444444444445' Inexact Rounded

+fmax36020 fma  1   '0.444444444444444451'    '0' -> '0.4444444444444445' Inexact Rounded

+

+fmax36021 fma  1   0 1 -> 1

+fmax36022 fma  1   1 1 -> 2

+fmax36023 fma  1   2 1 -> 3

+fmax36024 fma  1   3 1 -> 4

+fmax36025 fma  1   4 1 -> 5

+fmax36026 fma  1   5 1 -> 6

+fmax36027 fma  1   6 1 -> 7

+fmax36028 fma  1   7 1 -> 8

+fmax36029 fma  1   8 1 -> 9

+fmax36030 fma  1   9 1 -> 10

+

+-- some carrying effects

+fmax36031 fma  1   '0.9998'  '0.0000' -> '0.9998'

+fmax36032 fma  1   '0.9998'  '0.0001' -> '0.9999'

+fmax36033 fma  1   '0.9998'  '0.0002' -> '1.0000'

+fmax36034 fma  1   '0.9998'  '0.0003' -> '1.0001'

+

+fmax36035 fma  1   '70'      '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+fmax36036 fma  1   '700'     '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+fmax36037 fma  1   '7000'    '10000e+16' -> '1.000000000000000E+20' Inexact Rounded

+fmax36038 fma  1   '70000'   '10000e+16' -> '1.000000000000001E+20' Inexact Rounded

+fmax36039 fma  1   '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded

+

+-- symmetry:

+fmax36040 fma  1   '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded

+fmax36041 fma  1   '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded

+fmax36042 fma  1   '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded

+fmax36044 fma  1   '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded

+fmax36045 fma  1   '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded

+

+fmax36046 fma  1   '10000e+9'  '7' -> '10000000000007'

+fmax36047 fma  1   '10000e+9'  '70' -> '10000000000070'

+fmax36048 fma  1   '10000e+9'  '700' -> '10000000000700'

+fmax36049 fma  1   '10000e+9'  '7000' -> '10000000007000'

+fmax36050 fma  1   '10000e+9'  '70000' -> '10000000070000'

+fmax36051 fma  1   '10000e+9'  '700000' -> '10000000700000'

+

+-- examples from decarith

+fmax36053 fma  1   '12' '7.00' -> '19.00'

+fmax36054 fma  1   '1.3' '-1.07' -> '0.23'

+fmax36055 fma  1   '1.3' '-1.30' -> '0.00'

+fmax36056 fma  1   '1.3' '-2.07' -> '-0.77'

+fmax36057 fma  1   '1E+2' '1E+4' -> '1.01E+4'

+

+-- from above

+fmax36061 fma  1   1 '0.1' -> '1.1'

+fmax36062 fma  1   1 '0.01' -> '1.01'

+fmax36063 fma  1   1 '0.001' -> '1.001'

+fmax36064 fma  1   1 '0.0001' -> '1.0001'

+fmax36065 fma  1   1 '0.00001' -> '1.00001'

+fmax36066 fma  1   1 '0.000001' -> '1.000001'

+fmax36067 fma  1   1 '0.0000001' -> '1.0000001'

+fmax36068 fma  1   1 '0.00000001' -> '1.00000001'

+

+-- some funny zeros [in case of bad signum]

+fmax36070 fma  1   1  0    -> 1

+fmax36071 fma  1   1 0.    -> 1

+fmax36072 fma  1   1  .0   -> 1.0

+fmax36073 fma  1   1 0.0   -> 1.0

+fmax36074 fma  1   1 0.00  -> 1.00

+fmax36075 fma  1    0  1   -> 1

+fmax36076 fma  1   0.  1   -> 1

+fmax36077 fma  1    .0 1   -> 1.0

+fmax36078 fma  1   0.0 1   -> 1.0

+fmax36079 fma  1   0.00 1  -> 1.00

+

+-- some carries

+fmax36080 fma  1   9999999999999998 1  -> 9999999999999999

+fmax36081 fma  1   9999999999999999 1  -> 1.000000000000000E+16 Rounded

+fmax36082 fma  1    999999999999999 1  -> 1000000000000000

+fmax36083 fma  1      9999999999999 1  -> 10000000000000

+fmax36084 fma  1        99999999999 1  -> 100000000000

+fmax36085 fma  1          999999999 1  -> 1000000000

+fmax36086 fma  1            9999999 1  -> 10000000

+fmax36087 fma  1              99999 1  -> 100000

+fmax36088 fma  1                999 1  -> 1000

+fmax36089 fma  1                  9 1  -> 10

+

+

+-- more LHS swaps

+fmax36090 fma  1   '-56267E-10'   0 ->  '-0.0000056267'

+fmax36091 fma  1   '-56267E-6'    0 ->  '-0.056267'

+fmax36092 fma  1   '-56267E-5'    0 ->  '-0.56267'

+fmax36093 fma  1   '-56267E-4'    0 ->  '-5.6267'

+fmax36094 fma  1   '-56267E-3'    0 ->  '-56.267'

+fmax36095 fma  1   '-56267E-2'    0 ->  '-562.67'

+fmax36096 fma  1   '-56267E-1'    0 ->  '-5626.7'

+fmax36097 fma  1   '-56267E-0'    0 ->  '-56267'

+fmax36098 fma  1   '-5E-10'       0 ->  '-5E-10'

+fmax36099 fma  1   '-5E-7'        0 ->  '-5E-7'

+fmax36100 fma  1   '-5E-6'        0 ->  '-0.000005'

+fmax36101 fma  1   '-5E-5'        0 ->  '-0.00005'

+fmax36102 fma  1   '-5E-4'        0 ->  '-0.0005'

+fmax36103 fma  1   '-5E-1'        0 ->  '-0.5'

+fmax36104 fma  1   '-5E0'         0 ->  '-5'

+fmax36105 fma  1   '-5E1'         0 ->  '-50'

+fmax36106 fma  1   '-5E5'         0 ->  '-500000'

+fmax36107 fma  1   '-5E15'        0 ->  '-5000000000000000'

+fmax36108 fma  1   '-5E16'        0 ->  '-5.000000000000000E+16'   Rounded

+fmax36109 fma  1   '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded

+fmax36110 fma  1   '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded

+fmax36111 fma  1   '-5E100'       0 ->  '-5.000000000000000E+100' Rounded

+

+-- more RHS swaps

+fmax36113 fma  1   0  '-56267E-10' ->  '-0.0000056267'

+fmax36114 fma  1   0  '-56267E-6'  ->  '-0.056267'

+fmax36116 fma  1   0  '-56267E-5'  ->  '-0.56267'

+fmax36117 fma  1   0  '-56267E-4'  ->  '-5.6267'

+fmax36119 fma  1   0  '-56267E-3'  ->  '-56.267'

+fmax36120 fma  1   0  '-56267E-2'  ->  '-562.67'

+fmax36121 fma  1   0  '-56267E-1'  ->  '-5626.7'

+fmax36122 fma  1   0  '-56267E-0'  ->  '-56267'

+fmax36123 fma  1   0  '-5E-10'     ->  '-5E-10'

+fmax36124 fma  1   0  '-5E-7'      ->  '-5E-7'

+fmax36125 fma  1   0  '-5E-6'      ->  '-0.000005'

+fmax36126 fma  1   0  '-5E-5'      ->  '-0.00005'

+fmax36127 fma  1   0  '-5E-4'      ->  '-0.0005'

+fmax36128 fma  1   0  '-5E-1'      ->  '-0.5'

+fmax36129 fma  1   0  '-5E0'       ->  '-5'

+fmax36130 fma  1   0  '-5E1'       ->  '-50'

+fmax36131 fma  1   0  '-5E5'       ->  '-500000'

+fmax36132 fma  1   0  '-5E15'      ->  '-5000000000000000'

+fmax36133 fma  1   0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded

+fmax36134 fma  1   0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded

+fmax36135 fma  1   0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded

+fmax36136 fma  1   0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded

+

+-- related

+fmax36137 fma  1    1  '0E-19'      ->  '1.000000000000000'  Rounded

+fmax36138 fma  1   -1  '0E-19'      ->  '-1.000000000000000' Rounded

+fmax36139 fma  1   '0E-19' 1        ->  '1.000000000000000'  Rounded

+fmax36140 fma  1   '0E-19' -1       ->  '-1.000000000000000' Rounded

+fmax36141 fma  1   1E+11   0.0000   ->  '100000000000.0000'

+fmax36142 fma  1   1E+11   0.00000  ->  '100000000000.0000'  Rounded

+fmax36143 fma  1   0.000   1E+12    ->  '1000000000000.000'

+fmax36144 fma  1   0.0000  1E+12    ->  '1000000000000.000'  Rounded

+

+-- [some of the next group are really constructor tests]

+fmax36146 fma  1   '00.0'  0       ->  '0.0'

+fmax36147 fma  1   '0.00'  0       ->  '0.00'

+fmax36148 fma  1    0      '0.00'  ->  '0.00'

+fmax36149 fma  1    0      '00.0'  ->  '0.0'

+fmax36150 fma  1   '00.0'  '0.00'  ->  '0.00'

+fmax36151 fma  1   '0.00'  '00.0'  ->  '0.00'

+fmax36152 fma  1   '3'     '.3'    ->  '3.3'

+fmax36153 fma  1   '3.'    '.3'    ->  '3.3'

+fmax36154 fma  1   '3.0'   '.3'    ->  '3.3'

+fmax36155 fma  1   '3.00'  '.3'    ->  '3.30'

+fmax36156 fma  1   '3'     '3'     ->  '6'

+fmax36157 fma  1   '3'     '+3'    ->  '6'

+fmax36158 fma  1   '3'     '-3'    ->  '0'

+fmax36159 fma  1   '0.3'   '-0.3'  ->  '0.0'

+fmax36160 fma  1   '0.03'  '-0.03' ->  '0.00'

+

+-- try borderline precision, with carries, etc.

+fmax36161 fma  1   '1E+13' '-1'    -> '9999999999999'

+fmax36162 fma  1   '1E+13'  '1.11' -> '10000000000001.11'

+fmax36163 fma  1   '1.11'  '1E+13' -> '10000000000001.11'

+fmax36164 fma  1   '-1'    '1E+13' -> '9999999999999'

+fmax36165 fma  1   '7E+13' '-1'    -> '69999999999999'

+fmax36166 fma  1   '7E+13'  '1.11' -> '70000000000001.11'

+fmax36167 fma  1   '1.11'  '7E+13' -> '70000000000001.11'

+fmax36168 fma  1   '-1'    '7E+13' -> '69999999999999'

+

+--                    1234567890123456      1234567890123456      1 234567890123456

+fmax36170 fma  1   '0.4444444444444444'  '0.5555555555555563' -> '1.000000000000001' Inexact Rounded

+fmax36171 fma  1   '0.4444444444444444'  '0.5555555555555562' -> '1.000000000000001' Inexact Rounded

+fmax36172 fma  1   '0.4444444444444444'  '0.5555555555555561' -> '1.000000000000000' Inexact Rounded

+fmax36173 fma  1   '0.4444444444444444'  '0.5555555555555560' -> '1.000000000000000' Inexact Rounded

+fmax36174 fma  1   '0.4444444444444444'  '0.5555555555555559' -> '1.000000000000000' Inexact Rounded

+fmax36175 fma  1   '0.4444444444444444'  '0.5555555555555558' -> '1.000000000000000' Inexact Rounded

+fmax36176 fma  1   '0.4444444444444444'  '0.5555555555555557' -> '1.000000000000000' Inexact Rounded

+fmax36177 fma  1   '0.4444444444444444'  '0.5555555555555556' -> '1.000000000000000' Rounded

+fmax36178 fma  1   '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'

+fmax36179 fma  1   '0.4444444444444444'  '0.5555555555555554' -> '0.9999999999999998'

+fmax36180 fma  1   '0.4444444444444444'  '0.5555555555555553' -> '0.9999999999999997'

+fmax36181 fma  1   '0.4444444444444444'  '0.5555555555555552' -> '0.9999999999999996'

+fmax36182 fma  1   '0.4444444444444444'  '0.5555555555555551' -> '0.9999999999999995'

+fmax36183 fma  1   '0.4444444444444444'  '0.5555555555555550' -> '0.9999999999999994'

+

+-- and some more, including residue effects and different roundings

+rounding: half_up

+fmax36200 fma  1   '6543210123456789' 0             -> '6543210123456789'

+fmax36201 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+fmax36202 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+fmax36203 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+fmax36204 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+fmax36205 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+fmax36206 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+fmax36207 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded

+fmax36208 fma  1   '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded

+fmax36209 fma  1   '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded

+fmax36210 fma  1   '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded

+fmax36211 fma  1   '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded

+fmax36212 fma  1   '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded

+fmax36213 fma  1   '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded

+fmax36214 fma  1   '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded

+fmax36215 fma  1   '6543210123456789' 0.999999   -> '6543210123456790' Inexact Rounded

+fmax36216 fma  1   '6543210123456789' 1             -> '6543210123456790'

+fmax36217 fma  1   '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded

+fmax36218 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+fmax36219 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+

+rounding: half_even

+fmax36220 fma  1   '6543210123456789' 0             -> '6543210123456789'

+fmax36221 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+fmax36222 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+fmax36223 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+fmax36224 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+fmax36225 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+fmax36226 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+fmax36227 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded

+fmax36228 fma  1   '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded

+fmax36229 fma  1   '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded

+fmax36230 fma  1   '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded

+fmax36231 fma  1   '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded

+fmax36232 fma  1   '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded

+fmax36233 fma  1   '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded

+fmax36234 fma  1   '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded

+fmax36235 fma  1   '6543210123456789' 0.999999   -> '6543210123456790' Inexact Rounded

+fmax36236 fma  1   '6543210123456789' 1             -> '6543210123456790'

+fmax36237 fma  1   '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded

+fmax36238 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+fmax36239 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+-- critical few with even bottom digit...

+fmax36240 fma  1   '6543210123456788' 0.499999   -> '6543210123456788' Inexact Rounded

+fmax36241 fma  1   '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded

+fmax36242 fma  1   '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded

+

+rounding: down

+fmax36250 fma  1   '6543210123456789' 0             -> '6543210123456789'

+fmax36251 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded

+fmax36252 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded

+fmax36253 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded

+fmax36254 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded

+fmax36255 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded

+fmax36256 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded

+fmax36257 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded

+fmax36258 fma  1   '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded

+fmax36259 fma  1   '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded

+fmax36260 fma  1   '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded

+fmax36261 fma  1   '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded

+fmax36262 fma  1   '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded

+fmax36263 fma  1   '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded

+fmax36264 fma  1   '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded

+fmax36265 fma  1   '6543210123456789' 0.999999   -> '6543210123456789' Inexact Rounded

+fmax36266 fma  1   '6543210123456789' 1             -> '6543210123456790'

+fmax36267 fma  1   '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded

+fmax36268 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded

+fmax36269 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded

+

+-- 1 in last place tests

+rounding: half_even

+fmax36301 fma  1    -1   1      ->   0

+fmax36302 fma  1     0   1      ->   1

+fmax36303 fma  1     1   1      ->   2

+fmax36304 fma  1    12   1      ->  13

+fmax36305 fma  1    98   1      ->  99

+fmax36306 fma  1    99   1      -> 100

+fmax36307 fma  1   100   1      -> 101

+fmax36308 fma  1   101   1      -> 102

+fmax36309 fma  1    -1  -1      ->  -2

+fmax36310 fma  1     0  -1      ->  -1

+fmax36311 fma  1     1  -1      ->   0

+fmax36312 fma  1    12  -1      ->  11

+fmax36313 fma  1    98  -1      ->  97

+fmax36314 fma  1    99  -1      ->  98

+fmax36315 fma  1   100  -1      ->  99

+fmax36316 fma  1   101  -1      -> 100

+

+fmax36321 fma  1   -0.01  0.01    ->  0.00

+fmax36322 fma  1    0.00  0.01    ->  0.01

+fmax36323 fma  1    0.01  0.01    ->  0.02

+fmax36324 fma  1    0.12  0.01    ->  0.13

+fmax36325 fma  1    0.98  0.01    ->  0.99

+fmax36326 fma  1    0.99  0.01    ->  1.00

+fmax36327 fma  1    1.00  0.01    ->  1.01

+fmax36328 fma  1    1.01  0.01    ->  1.02

+fmax36329 fma  1   -0.01 -0.01    -> -0.02

+fmax36330 fma  1    0.00 -0.01    -> -0.01

+fmax36331 fma  1    0.01 -0.01    ->  0.00

+fmax36332 fma  1    0.12 -0.01    ->  0.11

+fmax36333 fma  1    0.98 -0.01    ->  0.97

+fmax36334 fma  1    0.99 -0.01    ->  0.98

+fmax36335 fma  1    1.00 -0.01    ->  0.99

+fmax36336 fma  1    1.01 -0.01    ->  1.00

+

+-- some more cases where fma  1  ing 0 affects the coefficient

+fmax36340 fma  1   1E+3    0    ->         1000

+fmax36341 fma  1   1E+15   0    ->    1000000000000000

+fmax36342 fma  1   1E+16   0    ->   1.000000000000000E+16  Rounded

+fmax36343 fma  1   1E+17   0    ->   1.000000000000000E+17  Rounded

+-- which simply follow from these cases ...

+fmax36344 fma  1   1E+3    1    ->         1001

+fmax36345 fma  1   1E+15   1    ->    1000000000000001

+fmax36346 fma  1   1E+16   1    ->   1.000000000000000E+16  Inexact Rounded

+fmax36347 fma  1   1E+17   1    ->   1.000000000000000E+17  Inexact Rounded

+fmax36348 fma  1   1E+3    7    ->         1007

+fmax36349 fma  1   1E+15   7    ->    1000000000000007

+fmax36350 fma  1   1E+16   7    ->   1.000000000000001E+16  Inexact Rounded

+fmax36351 fma  1   1E+17   7    ->   1.000000000000000E+17  Inexact Rounded

+

+-- tryzeros cases

+fmax36361  fma  1   0E+50 10000E+1  -> 1.0000E+5

+fmax36362  fma  1   10000E+1 0E-50  -> 100000.0000000000  Rounded

+fmax36363  fma  1   10000E+1 10000E-50  -> 100000.0000000000  Rounded Inexact

+fmax36364  fma  1   12.34    0e-398  -> 12.34000000000000  Rounded

+

+-- ulp replacement tests

+fmax36400 fma  1     1   77e-14      ->  1.00000000000077

+fmax36401 fma  1     1   77e-15      ->  1.000000000000077

+fmax36402 fma  1     1   77e-16      ->  1.000000000000008 Inexact Rounded

+fmax36403 fma  1     1   77e-17      ->  1.000000000000001 Inexact Rounded

+fmax36404 fma  1     1   77e-18      ->  1.000000000000000 Inexact Rounded

+fmax36405 fma  1     1   77e-19      ->  1.000000000000000 Inexact Rounded

+fmax36406 fma  1     1   77e-99      ->  1.000000000000000 Inexact Rounded

+

+fmax36410 fma  1    10   77e-14      ->  10.00000000000077

+fmax36411 fma  1    10   77e-15      ->  10.00000000000008 Inexact Rounded

+fmax36412 fma  1    10   77e-16      ->  10.00000000000001 Inexact Rounded

+fmax36413 fma  1    10   77e-17      ->  10.00000000000000 Inexact Rounded

+fmax36414 fma  1    10   77e-18      ->  10.00000000000000 Inexact Rounded

+fmax36415 fma  1    10   77e-19      ->  10.00000000000000 Inexact Rounded

+fmax36416 fma  1    10   77e-99      ->  10.00000000000000 Inexact Rounded

+

+fmax36420 fma  1    77e-14       1   ->  1.00000000000077

+fmax36421 fma  1    77e-15       1   ->  1.000000000000077

+fmax36422 fma  1    77e-16       1   ->  1.000000000000008 Inexact Rounded

+fmax36423 fma  1    77e-17       1   ->  1.000000000000001 Inexact Rounded

+fmax36424 fma  1    77e-18       1   ->  1.000000000000000 Inexact Rounded

+fmax36425 fma  1    77e-19       1   ->  1.000000000000000 Inexact Rounded

+fmax36426 fma  1    77e-99       1   ->  1.000000000000000 Inexact Rounded

+

+fmax36430 fma  1    77e-14      10   ->  10.00000000000077

+fmax36431 fma  1    77e-15      10   ->  10.00000000000008 Inexact Rounded

+fmax36432 fma  1    77e-16      10   ->  10.00000000000001 Inexact Rounded

+fmax36433 fma  1    77e-17      10   ->  10.00000000000000 Inexact Rounded

+fmax36434 fma  1    77e-18      10   ->  10.00000000000000 Inexact Rounded

+fmax36435 fma  1    77e-19      10   ->  10.00000000000000 Inexact Rounded

+fmax36436 fma  1    77e-99      10   ->  10.00000000000000 Inexact Rounded

+

+-- negative ulps

+fmax36440 fma  1     1   -77e-14      ->  0.99999999999923

+fmax36441 fma  1     1   -77e-15      ->  0.999999999999923

+fmax36442 fma  1     1   -77e-16      ->  0.9999999999999923

+fmax36443 fma  1     1   -77e-17      ->  0.9999999999999992 Inexact Rounded

+fmax36444 fma  1     1   -77e-18      ->  0.9999999999999999 Inexact Rounded

+fmax36445 fma  1     1   -77e-19      ->  1.000000000000000 Inexact Rounded

+fmax36446 fma  1     1   -77e-99      ->  1.000000000000000 Inexact Rounded

+

+fmax36450 fma  1    10   -77e-14      ->   9.99999999999923

+fmax36451 fma  1    10   -77e-15      ->   9.999999999999923

+fmax36452 fma  1    10   -77e-16      ->   9.999999999999992 Inexact Rounded

+fmax36453 fma  1    10   -77e-17      ->   9.999999999999999 Inexact Rounded

+fmax36454 fma  1    10   -77e-18      ->  10.00000000000000 Inexact Rounded

+fmax36455 fma  1    10   -77e-19      ->  10.00000000000000 Inexact Rounded

+fmax36456 fma  1    10   -77e-99      ->  10.00000000000000 Inexact Rounded

+

+fmax36460 fma  1    -77e-14       1   ->  0.99999999999923

+fmax36461 fma  1    -77e-15       1   ->  0.999999999999923

+fmax36462 fma  1    -77e-16       1   ->  0.9999999999999923

+fmax36463 fma  1    -77e-17       1   ->  0.9999999999999992 Inexact Rounded

+fmax36464 fma  1    -77e-18       1   ->  0.9999999999999999 Inexact Rounded

+fmax36465 fma  1    -77e-19       1   ->  1.000000000000000 Inexact Rounded

+fmax36466 fma  1    -77e-99       1   ->  1.000000000000000 Inexact Rounded

+

+fmax36470 fma  1    -77e-14      10   ->   9.99999999999923

+fmax36471 fma  1    -77e-15      10   ->   9.999999999999923

+fmax36472 fma  1    -77e-16      10   ->   9.999999999999992 Inexact Rounded

+fmax36473 fma  1    -77e-17      10   ->   9.999999999999999 Inexact Rounded

+fmax36474 fma  1    -77e-18      10   ->  10.00000000000000 Inexact Rounded

+fmax36475 fma  1    -77e-19      10   ->  10.00000000000000 Inexact Rounded

+fmax36476 fma  1    -77e-99      10   ->  10.00000000000000 Inexact Rounded

+

+-- negative ulps

+fmax36480 fma  1    -1    77e-14      ->  -0.99999999999923

+fmax36481 fma  1    -1    77e-15      ->  -0.999999999999923

+fmax36482 fma  1    -1    77e-16      ->  -0.9999999999999923

+fmax36483 fma  1    -1    77e-17      ->  -0.9999999999999992 Inexact Rounded

+fmax36484 fma  1    -1    77e-18      ->  -0.9999999999999999 Inexact Rounded

+fmax36485 fma  1    -1    77e-19      ->  -1.000000000000000 Inexact Rounded

+fmax36486 fma  1    -1    77e-99      ->  -1.000000000000000 Inexact Rounded

+

+fmax36490 fma  1   -10    77e-14      ->   -9.99999999999923

+fmax36491 fma  1   -10    77e-15      ->   -9.999999999999923

+fmax36492 fma  1   -10    77e-16      ->   -9.999999999999992 Inexact Rounded

+fmax36493 fma  1   -10    77e-17      ->   -9.999999999999999 Inexact Rounded

+fmax36494 fma  1   -10    77e-18      ->  -10.00000000000000 Inexact Rounded

+fmax36495 fma  1   -10    77e-19      ->  -10.00000000000000 Inexact Rounded

+fmax36496 fma  1   -10    77e-99      ->  -10.00000000000000 Inexact Rounded

+

+fmax36500 fma  1     77e-14      -1   ->  -0.99999999999923

+fmax36501 fma  1     77e-15      -1   ->  -0.999999999999923

+fmax36502 fma  1     77e-16      -1   ->  -0.9999999999999923

+fmax36503 fma  1     77e-17      -1   ->  -0.9999999999999992 Inexact Rounded

+fmax36504 fma  1     77e-18      -1   ->  -0.9999999999999999 Inexact Rounded

+fmax36505 fma  1     77e-19      -1   ->  -1.000000000000000 Inexact Rounded

+fmax36506 fma  1     77e-99      -1   ->  -1.000000000000000 Inexact Rounded

+

+fmax36510 fma  1     77e-14      -10  ->   -9.99999999999923

+fmax36511 fma  1     77e-15      -10  ->   -9.999999999999923

+fmax36512 fma  1     77e-16      -10  ->   -9.999999999999992 Inexact Rounded

+fmax36513 fma  1     77e-17      -10  ->   -9.999999999999999 Inexact Rounded

+fmax36514 fma  1     77e-18      -10  ->  -10.00000000000000 Inexact Rounded

+fmax36515 fma  1     77e-19      -10  ->  -10.00000000000000 Inexact Rounded

+fmax36516 fma  1     77e-99      -10  ->  -10.00000000000000 Inexact Rounded

+

+

+-- long operands

+fmax36521 fma  1   101234562345678000 0 -> 1.012345623456780E+17 Rounded

+fmax36522 fma  1   0 101234562345678000 -> 1.012345623456780E+17 Rounded

+fmax36523 fma  1   10123456234567800  0 -> 1.012345623456780E+16 Rounded

+fmax36524 fma  1   0 10123456234567800  -> 1.012345623456780E+16 Rounded

+fmax36525 fma  1   10123456234567890  0 -> 1.012345623456789E+16 Rounded

+fmax36526 fma  1   0 10123456234567890  -> 1.012345623456789E+16 Rounded

+fmax36527 fma  1   10123456234567891  0 -> 1.012345623456789E+16 Inexact Rounded

+fmax36528 fma  1   0 10123456234567891  -> 1.012345623456789E+16 Inexact Rounded

+fmax36529 fma  1   101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded

+fmax36530 fma  1   0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded

+fmax36531 fma  1   10123456234567896  0 -> 1.012345623456790E+16 Inexact Rounded

+fmax36532 fma  1   0 10123456234567896  -> 1.012345623456790E+16 Inexact Rounded

+

+-- verify a query

+rounding:     down

+fmax36561 fma  1   1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded

+fmax36562 fma  1        0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded

+-- and using decimal64 bounds...

+rounding:     down

+fmax36563 fma  1   1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded

+fmax36564 fma  1        0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded

+

+-- more zeros, etc.

+rounding: half_even

+

+fmax36701 fma  1   5.00 1.00E-3 -> 5.00100

+fmax36702 fma  1   00.00 0.000  -> 0.000

+fmax36703 fma  1   00.00 0E-3   -> 0.000

+fmax36704 fma  1   0E-3  00.00  -> 0.000

+

+fmax36710 fma  1   0E+3  00.00  -> 0.00

+fmax36711 fma  1   0E+3  00.0   -> 0.0

+fmax36712 fma  1   0E+3  00.    -> 0

+fmax36713 fma  1   0E+3  00.E+1 -> 0E+1

+fmax36714 fma  1   0E+3  00.E+2 -> 0E+2

+fmax36715 fma  1   0E+3  00.E+3 -> 0E+3

+fmax36716 fma  1   0E+3  00.E+4 -> 0E+3

+fmax36717 fma  1   0E+3  00.E+5 -> 0E+3

+fmax36718 fma  1   0E+3  -00.0   -> 0.0

+fmax36719 fma  1   0E+3  -00.    -> 0

+fmax36731 fma  1   0E+3  -00.E+1 -> 0E+1

+

+fmax36720 fma  1   00.00  0E+3  -> 0.00

+fmax36721 fma  1   00.0   0E+3  -> 0.0

+fmax36722 fma  1   00.    0E+3  -> 0

+fmax36723 fma  1   00.E+1 0E+3  -> 0E+1

+fmax36724 fma  1   00.E+2 0E+3  -> 0E+2

+fmax36725 fma  1   00.E+3 0E+3  -> 0E+3

+fmax36726 fma  1   00.E+4 0E+3  -> 0E+3

+fmax36727 fma  1   00.E+5 0E+3  -> 0E+3

+fmax36728 fma  1   -00.00 0E+3  -> 0.00

+fmax36729 fma  1   -00.0  0E+3  -> 0.0

+fmax36730 fma  1   -00.   0E+3  -> 0

+

+fmax36732 fma  1    0     0     ->  0

+fmax36733 fma  1    0    -0     ->  0

+fmax36734 fma  1   -0     0     ->  0

+fmax36735 fma  1   -0    -0     -> -0     -- IEEE 854 special case

+

+fmax36736 fma  1    1    -1     ->  0

+fmax36737 fma  1   -1    -1     -> -2

+fmax36738 fma  1    1     1     ->  2

+fmax36739 fma  1   -1     1     ->  0

+

+fmax36741 fma  1    0    -1     -> -1

+fmax36742 fma  1   -0    -1     -> -1

+fmax36743 fma  1    0     1     ->  1

+fmax36744 fma  1   -0     1     ->  1

+fmax36745 fma  1   -1     0     -> -1

+fmax36746 fma  1   -1    -0     -> -1

+fmax36747 fma  1    1     0     ->  1

+fmax36748 fma  1    1    -0     ->  1

+

+fmax36751 fma  1    0.0  -1     -> -1.0

+fmax36752 fma  1   -0.0  -1     -> -1.0

+fmax36753 fma  1    0.0   1     ->  1.0

+fmax36754 fma  1   -0.0   1     ->  1.0

+fmax36755 fma  1   -1.0   0     -> -1.0

+fmax36756 fma  1   -1.0  -0     -> -1.0

+fmax36757 fma  1    1.0   0     ->  1.0

+fmax36758 fma  1    1.0  -0     ->  1.0

+

+fmax36761 fma  1    0    -1.0   -> -1.0

+fmax36762 fma  1   -0    -1.0   -> -1.0

+fmax36763 fma  1    0     1.0   ->  1.0

+fmax36764 fma  1   -0     1.0   ->  1.0

+fmax36765 fma  1   -1     0.0   -> -1.0

+fmax36766 fma  1   -1    -0.0   -> -1.0

+fmax36767 fma  1    1     0.0   ->  1.0

+fmax36768 fma  1    1    -0.0   ->  1.0

+

+fmax36771 fma  1    0.0  -1.0   -> -1.0

+fmax36772 fma  1   -0.0  -1.0   -> -1.0

+fmax36773 fma  1    0.0   1.0   ->  1.0

+fmax36774 fma  1   -0.0   1.0   ->  1.0

+fmax36775 fma  1   -1.0   0.0   -> -1.0

+fmax36776 fma  1   -1.0  -0.0   -> -1.0

+fmax36777 fma  1    1.0   0.0   ->  1.0

+fmax36778 fma  1    1.0  -0.0   ->  1.0

+

+-- Specials

+fmax36780 fma  1   -Inf  -Inf   -> -Infinity

+fmax36781 fma  1   -Inf  -1000  -> -Infinity

+fmax36782 fma  1   -Inf  -1     -> -Infinity

+fmax36783 fma  1   -Inf  -0     -> -Infinity

+fmax36784 fma  1   -Inf   0     -> -Infinity

+fmax36785 fma  1   -Inf   1     -> -Infinity

+fmax36786 fma  1   -Inf   1000  -> -Infinity

+fmax36787 fma  1   -1000 -Inf   -> -Infinity

+fmax36788 fma  1   -Inf  -Inf   -> -Infinity

+fmax36789 fma  1   -1    -Inf   -> -Infinity

+fmax36790 fma  1   -0    -Inf   -> -Infinity

+fmax36791 fma  1    0    -Inf   -> -Infinity

+fmax36792 fma  1    1    -Inf   -> -Infinity

+fmax36793 fma  1    1000 -Inf   -> -Infinity

+fmax36794 fma  1    Inf  -Inf   ->  NaN  Invalid_operation

+

+fmax36800 fma  1    Inf  -Inf   ->  NaN  Invalid_operation

+fmax36801 fma  1    Inf  -1000  ->  Infinity

+fmax36802 fma  1    Inf  -1     ->  Infinity

+fmax36803 fma  1    Inf  -0     ->  Infinity

+fmax36804 fma  1    Inf   0     ->  Infinity

+fmax36805 fma  1    Inf   1     ->  Infinity

+fmax36806 fma  1    Inf   1000  ->  Infinity

+fmax36807 fma  1    Inf   Inf   ->  Infinity

+fmax36808 fma  1   -1000  Inf   ->  Infinity

+fmax36809 fma  1   -Inf   Inf   ->  NaN  Invalid_operation

+fmax36810 fma  1   -1     Inf   ->  Infinity

+fmax36811 fma  1   -0     Inf   ->  Infinity

+fmax36812 fma  1    0     Inf   ->  Infinity

+fmax36813 fma  1    1     Inf   ->  Infinity

+fmax36814 fma  1    1000  Inf   ->  Infinity

+fmax36815 fma  1    Inf   Inf   ->  Infinity

+

+fmax36821 fma  1    NaN -Inf    ->  NaN

+fmax36822 fma  1    NaN -1000   ->  NaN

+fmax36823 fma  1    NaN -1      ->  NaN

+fmax36824 fma  1    NaN -0      ->  NaN

+fmax36825 fma  1    NaN  0      ->  NaN

+fmax36826 fma  1    NaN  1      ->  NaN

+fmax36827 fma  1    NaN  1000   ->  NaN

+fmax36828 fma  1    NaN  Inf    ->  NaN

+fmax36829 fma  1    NaN  NaN    ->  NaN

+fmax36830 fma  1   -Inf  NaN    ->  NaN

+fmax36831 fma  1   -1000 NaN    ->  NaN

+fmax36832 fma  1   -1    NaN    ->  NaN

+fmax36833 fma  1   -0    NaN    ->  NaN

+fmax36834 fma  1    0    NaN    ->  NaN

+fmax36835 fma  1    1    NaN    ->  NaN

+fmax36836 fma  1    1000 NaN    ->  NaN

+fmax36837 fma  1    Inf  NaN    ->  NaN

+

+fmax36841 fma  1    sNaN -Inf   ->  NaN  Invalid_operation

+fmax36842 fma  1    sNaN -1000  ->  NaN  Invalid_operation

+fmax36843 fma  1    sNaN -1     ->  NaN  Invalid_operation

+fmax36844 fma  1    sNaN -0     ->  NaN  Invalid_operation

+fmax36845 fma  1    sNaN  0     ->  NaN  Invalid_operation

+fmax36846 fma  1    sNaN  1     ->  NaN  Invalid_operation

+fmax36847 fma  1    sNaN  1000  ->  NaN  Invalid_operation

+fmax36848 fma  1    sNaN  NaN   ->  NaN  Invalid_operation

+fmax36849 fma  1    sNaN sNaN   ->  NaN  Invalid_operation

+fmax36850 fma  1    NaN  sNaN   ->  NaN  Invalid_operation

+fmax36851 fma  1   -Inf  sNaN   ->  NaN  Invalid_operation

+fmax36852 fma  1   -1000 sNaN   ->  NaN  Invalid_operation

+fmax36853 fma  1   -1    sNaN   ->  NaN  Invalid_operation

+fmax36854 fma  1   -0    sNaN   ->  NaN  Invalid_operation

+fmax36855 fma  1    0    sNaN   ->  NaN  Invalid_operation

+fmax36856 fma  1    1    sNaN   ->  NaN  Invalid_operation

+fmax36857 fma  1    1000 sNaN   ->  NaN  Invalid_operation

+fmax36858 fma  1    Inf  sNaN   ->  NaN  Invalid_operation

+fmax36859 fma  1    NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+fmax36861 fma  1    NaN1   -Inf    ->  NaN1

+fmax36862 fma  1   +NaN2   -1000   ->  NaN2

+fmax36863 fma  1    NaN3    1000   ->  NaN3

+fmax36864 fma  1    NaN4    Inf    ->  NaN4

+fmax36865 fma  1    NaN5   +NaN6   ->  NaN5

+fmax36866 fma  1   -Inf     NaN7   ->  NaN7

+fmax36867 fma  1   -1000    NaN8   ->  NaN8

+fmax36868 fma  1    1000    NaN9   ->  NaN9

+fmax36869 fma  1    Inf    +NaN10  ->  NaN10

+fmax36871 fma  1    sNaN11  -Inf   ->  NaN11  Invalid_operation

+fmax36872 fma  1    sNaN12  -1000  ->  NaN12  Invalid_operation

+fmax36873 fma  1    sNaN13   1000  ->  NaN13  Invalid_operation

+fmax36874 fma  1    sNaN14   NaN17 ->  NaN14  Invalid_operation

+fmax36875 fma  1    sNaN15  sNaN18 ->  NaN15  Invalid_operation

+fmax36876 fma  1    NaN16   sNaN19 ->  NaN19  Invalid_operation

+fmax36877 fma  1   -Inf    +sNaN20 ->  NaN20  Invalid_operation

+fmax36878 fma  1   -1000    sNaN21 ->  NaN21  Invalid_operation

+fmax36879 fma  1    1000    sNaN22 ->  NaN22  Invalid_operation

+fmax36880 fma  1    Inf     sNaN23 ->  NaN23  Invalid_operation

+fmax36881 fma  1   +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+fmax36882 fma  1   -NaN26    NaN28 -> -NaN26

+fmax36883 fma  1   -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+fmax36884 fma  1    1000    -NaN30 -> -NaN30

+fmax36885 fma  1    1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- now the case where we can get underflow but the result is normal

+-- [note this can't happen if the operands are also bounded, as we

+-- cannot represent 1E-399, for example]

+

+fmax36571 fma  1         1E-383       0  -> 1E-383

+fmax36572 fma  1         1E-384       0  -> 1E-384   Subnormal

+fmax36573 fma  1         1E-383  1E-384  -> 1.1E-383

+fmax36574 subtract  1E-383  1E-384  ->   9E-384 Subnormal

+

+-- Here we explore the boundary of rounding a subnormal to Nmin

+fmax36575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal

+fmax36576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal

+fmax36577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax36578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax36579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+fmax36580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded

+

+-- check overflow edge case

+--               1234567890123456

+fmax36972 apply        9.999999999999999E+384         -> 9.999999999999999E+384

+fmax36973 fma  1       9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded

+fmax36974 fma  1        9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded

+fmax36975 fma  1        9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded

+fmax36976 fma  1        9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded

+fmax36977 fma  1        9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded

+fmax36978 fma  1        9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded

+fmax36979 fma  1        9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded

+fmax36980 fma  1        9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded

+fmax36981 fma  1        9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded

+fmax36982 fma  1        9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded

+fmax36983 fma  1        9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded

+fmax36984 fma  1        9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded

+

+fmax36985 apply       -9.999999999999999E+384         -> -9.999999999999999E+384

+fmax36986 fma  1      -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded

+fmax36987 fma  1       -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded

+fmax36988 fma  1       -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded

+fmax36989 fma  1       -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded

+fmax36990 fma  1       -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded

+fmax36991 fma  1       -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded

+fmax36992 fma  1       -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded

+fmax36993 fma  1       -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded

+fmax36994 fma  1       -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded

+fmax36995 fma  1       -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded

+fmax36996 fma  1       -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded

+fmax36997 fma  1       -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded

+

+-- And for round down full and subnormal results

+rounding:     down

+fmax361100 fma  1   1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact

+fmax361101 fma  1   1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact

+fmax361103 fma  1     +1 -1e-383    -> 0.9999999999999999  Rounded Inexact

+fmax361104 fma  1   1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact

+fmax361105 fma  1   1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact

+fmax361106 fma  1   1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact

+fmax361107 fma  1   1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact

+fmax361108 fma  1   1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact

+fmax361109 fma  1   1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact

+

+rounding:     ceiling

+fmax361110 fma  1   -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact

+fmax361111 fma  1   -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact

+fmax361113 fma  1      -1 +1e-383   -> -0.9999999999999999  Rounded Inexact

+fmax361114 fma  1   -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact

+fmax361115 fma  1   -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact

+fmax361116 fma  1   -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact

+fmax361117 fma  1   -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact

+fmax361118 fma  1   -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact

+fmax361119 fma  1   -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact

+

+-- tests based on Gunnar Degnbol's edge case

+rounding:     half_even

+

+fmax361300 fma  1   1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded

+fmax361310 fma  1   1E16  -0.51                ->  9999999999999999      Inexact Rounded

+fmax361311 fma  1   1E16  -0.501               ->  9999999999999999      Inexact Rounded

+fmax361312 fma  1   1E16  -0.5001              ->  9999999999999999      Inexact Rounded

+fmax361313 fma  1   1E16  -0.50001             ->  9999999999999999      Inexact Rounded

+fmax361314 fma  1   1E16  -0.500001            ->  9999999999999999      Inexact Rounded

+fmax361315 fma  1   1E16  -0.5000001           ->  9999999999999999      Inexact Rounded

+fmax361316 fma  1   1E16  -0.50000001          ->  9999999999999999      Inexact Rounded

+fmax361317 fma  1   1E16  -0.500000001         ->  9999999999999999      Inexact Rounded

+fmax361318 fma  1   1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded

+fmax361319 fma  1   1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded

+fmax361320 fma  1   1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded

+fmax361321 fma  1   1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded

+fmax361322 fma  1   1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded

+fmax361323 fma  1   1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded

+fmax361324 fma  1   1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded

+fmax361325 fma  1   1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded

+fmax361326 fma  1   1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded

+fmax361327 fma  1   1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded

+fmax361328 fma  1   1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded

+fmax361329 fma  1   1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded

+fmax361330 fma  1   1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded

+fmax361331 fma  1   1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded

+fmax361332 fma  1   1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded

+fmax361333 fma  1   1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded

+fmax361334 fma  1   1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded

+fmax361335 fma  1   1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded

+fmax361336 fma  1   1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded

+fmax361337 fma  1   1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded

+fmax361338 fma  1   1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded

+fmax361339 fma  1   1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded

+

+fmax361340 fma  1   1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded

+fmax361341 fma  1   1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded

+

+fmax361349 fma  1   9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded

+fmax361350 fma  1   9999999999999999 0.49                ->  9999999999999999      Inexact Rounded

+fmax361351 fma  1   9999999999999999 0.499               ->  9999999999999999      Inexact Rounded

+fmax361352 fma  1   9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded

+fmax361353 fma  1   9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded

+fmax361354 fma  1   9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded

+fmax361355 fma  1   9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded

+fmax361356 fma  1   9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded

+fmax361357 fma  1   9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded

+fmax361358 fma  1   9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded

+fmax361359 fma  1   9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded

+fmax361360 fma  1   9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded

+fmax361361 fma  1   9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded

+fmax361362 fma  1   9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded

+fmax361363 fma  1   9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded

+fmax361364 fma  1   9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded

+fmax361365 fma  1   9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded

+fmax361367 fma  1   9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded

+fmax361368 fma  1   9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded

+fmax361369 fma  1   9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded

+fmax361370 fma  1   9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded

+fmax361371 fma  1   9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded

+fmax361372 fma  1   9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded

+fmax361373 fma  1   9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded

+fmax361374 fma  1   9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded

+fmax361375 fma  1   9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded

+fmax361376 fma  1   9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded

+fmax361377 fma  1   9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded

+fmax361378 fma  1   9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded

+fmax361379 fma  1   9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded

+fmax361380 fma  1   9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded

+fmax361381 fma  1   9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded

+fmax361382 fma  1   9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded

+fmax361383 fma  1   9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded

+fmax361384 fma  1   9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded

+fmax361385 fma  1   9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded

+fmax361386 fma  1   9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded

+fmax361387 fma  1   9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded

+fmax361388 fma  1   9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded

+fmax361389 fma  1   9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded

+fmax361390 fma  1   9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded

+fmax361391 fma  1   9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded

+fmax361392 fma  1   9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded

+fmax361393 fma  1   9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded

+fmax361394 fma  1   9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded

+fmax361395 fma  1   9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded

+fmax361396 fma  1   9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded

+

+-- More GD edge cases, where difference between the unadjusted

+-- exponents is larger than the maximum precision and one side is 0

+fmax361420 fma  1    0 1.123456789012345     -> 1.123456789012345

+fmax361421 fma  1    0 1.123456789012345E-1  -> 0.1123456789012345

+fmax361422 fma  1    0 1.123456789012345E-2  -> 0.01123456789012345

+fmax361423 fma  1    0 1.123456789012345E-3  -> 0.001123456789012345

+fmax361424 fma  1    0 1.123456789012345E-4  -> 0.0001123456789012345

+fmax361425 fma  1    0 1.123456789012345E-5  -> 0.00001123456789012345

+fmax361426 fma  1    0 1.123456789012345E-6  -> 0.000001123456789012345

+fmax361427 fma  1    0 1.123456789012345E-7  -> 1.123456789012345E-7

+fmax361428 fma  1    0 1.123456789012345E-8  -> 1.123456789012345E-8

+fmax361429 fma  1    0 1.123456789012345E-9  -> 1.123456789012345E-9

+fmax361430 fma  1    0 1.123456789012345E-10 -> 1.123456789012345E-10

+fmax361431 fma  1    0 1.123456789012345E-11 -> 1.123456789012345E-11

+fmax361432 fma  1    0 1.123456789012345E-12 -> 1.123456789012345E-12

+fmax361433 fma  1    0 1.123456789012345E-13 -> 1.123456789012345E-13

+fmax361434 fma  1    0 1.123456789012345E-14 -> 1.123456789012345E-14

+fmax361435 fma  1    0 1.123456789012345E-15 -> 1.123456789012345E-15

+fmax361436 fma  1    0 1.123456789012345E-16 -> 1.123456789012345E-16

+fmax361437 fma  1    0 1.123456789012345E-17 -> 1.123456789012345E-17

+fmax361438 fma  1    0 1.123456789012345E-18 -> 1.123456789012345E-18

+fmax361439 fma  1    0 1.123456789012345E-19 -> 1.123456789012345E-19

+

+-- same, reversed 0

+fmax361440 fma  1   1.123456789012345     0 -> 1.123456789012345

+fmax361441 fma  1   1.123456789012345E-1  0 -> 0.1123456789012345

+fmax361442 fma  1   1.123456789012345E-2  0 -> 0.01123456789012345

+fmax361443 fma  1   1.123456789012345E-3  0 -> 0.001123456789012345

+fmax361444 fma  1   1.123456789012345E-4  0 -> 0.0001123456789012345

+fmax361445 fma  1   1.123456789012345E-5  0 -> 0.00001123456789012345

+fmax361446 fma  1   1.123456789012345E-6  0 -> 0.000001123456789012345

+fmax361447 fma  1   1.123456789012345E-7  0 -> 1.123456789012345E-7

+fmax361448 fma  1   1.123456789012345E-8  0 -> 1.123456789012345E-8

+fmax361449 fma  1   1.123456789012345E-9  0 -> 1.123456789012345E-9

+fmax361450 fma  1   1.123456789012345E-10 0 -> 1.123456789012345E-10

+fmax361451 fma  1   1.123456789012345E-11 0 -> 1.123456789012345E-11

+fmax361452 fma  1   1.123456789012345E-12 0 -> 1.123456789012345E-12

+fmax361453 fma  1   1.123456789012345E-13 0 -> 1.123456789012345E-13

+fmax361454 fma  1   1.123456789012345E-14 0 -> 1.123456789012345E-14

+fmax361455 fma  1   1.123456789012345E-15 0 -> 1.123456789012345E-15

+fmax361456 fma  1   1.123456789012345E-16 0 -> 1.123456789012345E-16

+fmax361457 fma  1   1.123456789012345E-17 0 -> 1.123456789012345E-17

+fmax361458 fma  1   1.123456789012345E-18 0 -> 1.123456789012345E-18

+fmax361459 fma  1   1.123456789012345E-19 0 -> 1.123456789012345E-19

+

+-- same, Es on the 0

+fmax361460 fma  1   1.123456789012345  0E-0   -> 1.123456789012345

+fmax361461 fma  1   1.123456789012345  0E-1   -> 1.123456789012345

+fmax361462 fma  1   1.123456789012345  0E-2   -> 1.123456789012345

+fmax361463 fma  1   1.123456789012345  0E-3   -> 1.123456789012345

+fmax361464 fma  1   1.123456789012345  0E-4   -> 1.123456789012345

+fmax361465 fma  1   1.123456789012345  0E-5   -> 1.123456789012345

+fmax361466 fma  1   1.123456789012345  0E-6   -> 1.123456789012345

+fmax361467 fma  1   1.123456789012345  0E-7   -> 1.123456789012345

+fmax361468 fma  1   1.123456789012345  0E-8   -> 1.123456789012345

+fmax361469 fma  1   1.123456789012345  0E-9   -> 1.123456789012345

+fmax361470 fma  1   1.123456789012345  0E-10  -> 1.123456789012345

+fmax361471 fma  1   1.123456789012345  0E-11  -> 1.123456789012345

+fmax361472 fma  1   1.123456789012345  0E-12  -> 1.123456789012345

+fmax361473 fma  1   1.123456789012345  0E-13  -> 1.123456789012345

+fmax361474 fma  1   1.123456789012345  0E-14  -> 1.123456789012345

+fmax361475 fma  1   1.123456789012345  0E-15  -> 1.123456789012345

+-- next four flag Rounded because the 0 extends the result

+fmax361476 fma  1   1.123456789012345  0E-16  -> 1.123456789012345 Rounded

+fmax361477 fma  1   1.123456789012345  0E-17  -> 1.123456789012345 Rounded

+fmax361478 fma  1   1.123456789012345  0E-18  -> 1.123456789012345 Rounded

+fmax361479 fma  1   1.123456789012345  0E-19  -> 1.123456789012345 Rounded

+

+-- sum of two opposite-sign operands is exactly 0 and floor => -0

+rounding:    half_up

+-- exact zeros from zeros

+fmax361500 fma  1    0        0E-19  ->  0E-19

+fmax361501 fma  1   -0        0E-19  ->  0E-19

+fmax361502 fma  1    0       -0E-19  ->  0E-19

+fmax361503 fma  1   -0       -0E-19  -> -0E-19

+fmax361504 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax361505 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax361506 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax361507 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax361511 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361512 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361513 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361514 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax361515 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361516 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax361517 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax361518 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+rounding:    half_down

+-- exact zeros from zeros

+fmax361520 fma  1    0        0E-19  ->  0E-19

+fmax361521 fma  1   -0        0E-19  ->  0E-19

+fmax361522 fma  1    0       -0E-19  ->  0E-19

+fmax361523 fma  1   -0       -0E-19  -> -0E-19

+fmax361524 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax361525 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax361526 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax361527 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax361531 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361532 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361533 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361534 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax361535 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361536 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax361537 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax361538 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+rounding:    half_even

+-- exact zeros from zeros

+fmax361540 fma  1    0        0E-19  ->  0E-19

+fmax361541 fma  1   -0        0E-19  ->  0E-19

+fmax361542 fma  1    0       -0E-19  ->  0E-19

+fmax361543 fma  1   -0       -0E-19  -> -0E-19

+fmax361544 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax361545 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax361546 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax361547 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax361551 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361552 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361553 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361554 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax361555 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361556 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax361557 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax361558 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+rounding:    up

+-- exact zeros from zeros

+fmax361560 fma  1    0        0E-19  ->  0E-19

+fmax361561 fma  1   -0        0E-19  ->  0E-19

+fmax361562 fma  1    0       -0E-19  ->  0E-19

+fmax361563 fma  1   -0       -0E-19  -> -0E-19

+fmax361564 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax361565 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax361566 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax361567 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax361571 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax361572 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax361573 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow

+fmax361574 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow

+-- some exact zeros from non-zeros

+fmax361575 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax361576 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax361577 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax361578 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow

+

+rounding:    down

+-- exact zeros from zeros

+fmax361580 fma  1    0        0E-19  ->  0E-19

+fmax361581 fma  1   -0        0E-19  ->  0E-19

+fmax361582 fma  1    0       -0E-19  ->  0E-19

+fmax361583 fma  1   -0       -0E-19  -> -0E-19

+fmax361584 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax361585 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax361586 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax361587 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax361591 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361592 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361593 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361594 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax361595 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361596 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax361597 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax361598 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+rounding:    ceiling

+-- exact zeros from zeros

+fmax361600 fma  1    0        0E-19  ->  0E-19

+fmax361601 fma  1   -0        0E-19  ->  0E-19

+fmax361602 fma  1    0       -0E-19  ->  0E-19

+fmax361603 fma  1   -0       -0E-19  -> -0E-19

+fmax361604 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax361605 fma  1   -0E-400   0E-19  ->  0E-398 Clamped

+fmax361606 fma  1    0E-400  -0E-19  ->  0E-398 Clamped

+fmax361607 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax361611 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax361612 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax361613 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361614 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+-- some exact zeros from non-zeros

+fmax361615 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow

+fmax361616 fma  1   -1E-401   1E-401 ->  0E-398 Clamped

+fmax361617 fma  1    1E-401  -1E-401 ->  0E-398 Clamped

+fmax361618 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped

+

+-- and the extra-special ugly case; unusual minuses marked by -- *

+rounding:    floor

+-- exact zeros from zeros

+fmax361620 fma  1    0        0E-19  ->  0E-19

+fmax361621 fma  1   -0        0E-19  -> -0E-19           -- *

+fmax361622 fma  1    0       -0E-19  -> -0E-19           -- *

+fmax361623 fma  1   -0       -0E-19  -> -0E-19

+fmax361624 fma  1    0E-400   0E-19  ->  0E-398 Clamped

+fmax361625 fma  1   -0E-400   0E-19  -> -0E-398 Clamped  -- *

+fmax361626 fma  1    0E-400  -0E-19  -> -0E-398 Clamped  -- *

+fmax361627 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped

+-- inexact zeros

+fmax361631 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361632 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361633 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow

+fmax361634 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow

+-- some exact zeros from non-zeros

+fmax361635 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped

+fmax361636 fma  1   -1E-401   1E-401 -> -0E-398 Clamped  -- *

+fmax361637 fma  1    1E-401  -1E-401 -> -0E-398 Clamped  -- *

+fmax361638 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow

+

+-- Examples from SQL proposal (Krishna Kulkarni)

+fmax361701 fma  1   130E-2    120E-2    -> 2.50

+fmax361702 fma  1   130E-2    12E-1     -> 2.50

+fmax361703 fma  1   130E-2    1E0       -> 2.30

+fmax361704 fma  1   1E2       1E4       -> 1.01E+4

+fmax361705 subtract 130E-2  120E-2 -> 0.10

+fmax361706 subtract 130E-2  12E-1  -> 0.10

+fmax361707 subtract 130E-2  1E0    -> 0.30

+fmax361708 subtract 1E2     1E4    -> -9.9E+3

+

+-- Gappy coefficients; check residue handling even with full coefficient gap

+rounding: half_even

+

+fmax362001 fma  1   1234567890123456 1      -> 1234567890123457

+fmax362002 fma  1   1234567890123456 0.6    -> 1234567890123457  Inexact Rounded

+fmax362003 fma  1   1234567890123456 0.06   -> 1234567890123456  Inexact Rounded

+fmax362004 fma  1   1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded

+fmax362005 fma  1   1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded

+fmax362006 fma  1   1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded

+fmax362007 fma  1   1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded

+fmax362008 fma  1   1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded

+fmax362009 fma  1   1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded

+fmax362010 fma  1   1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded

+fmax362011 fma  1   1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded

+fmax362012 fma  1   1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded

+fmax362013 fma  1   1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded

+fmax362014 fma  1   1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded

+fmax362015 fma  1   1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded

+fmax362016 fma  1   1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded

+fmax362017 fma  1   1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded

+fmax362018 fma  1   1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded

+fmax362019 fma  1   1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded

+fmax362020 fma  1   1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded

+fmax362021 fma  1   1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded

+

+-- widening second argument at gap

+fmax362030 fma  1   12345678 1                       -> 12345679

+fmax362031 fma  1   12345678 0.1                     -> 12345678.1

+fmax362032 fma  1   12345678 0.12                    -> 12345678.12

+fmax362033 fma  1   12345678 0.123                   -> 12345678.123

+fmax362034 fma  1   12345678 0.1234                  -> 12345678.1234

+fmax362035 fma  1   12345678 0.12345                 -> 12345678.12345

+fmax362036 fma  1   12345678 0.123456                -> 12345678.123456

+fmax362037 fma  1   12345678 0.1234567               -> 12345678.1234567

+fmax362038 fma  1   12345678 0.12345678              -> 12345678.12345678

+fmax362039 fma  1   12345678 0.123456789             -> 12345678.12345679 Inexact Rounded

+fmax362040 fma  1   12345678 0.123456785             -> 12345678.12345678 Inexact Rounded

+fmax362041 fma  1   12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded

+fmax362042 fma  1   12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded

+fmax362043 fma  1   12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded

+fmax362044 fma  1   12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded

+fmax362045 fma  1   12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded

+fmax362046 fma  1   12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded

+fmax362047 fma  1   12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded

+fmax362048 fma  1   12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded

+fmax362049 fma  1   12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded

+--                               90123456

+rounding: half_even

+fmax362050 fma  1   12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded

+fmax362051 fma  1   12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded

+fmax362052 fma  1   12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded

+fmax362053 fma  1   12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded

+fmax362054 fma  1   12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded

+fmax362055 fma  1   12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded

+fmax362056 fma  1   12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded

+fmax362057 fma  1   12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded

+fmax362060 fma  1   12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded

+fmax362061 fma  1   12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded

+fmax362062 fma  1   12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded

+fmax362063 fma  1   12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded

+fmax362064 fma  1   12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded

+fmax362065 fma  1   12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded

+fmax362066 fma  1   12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded

+fmax362067 fma  1   12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded

+-- far-out residues (full coefficient gap is 16+15 digits)

+rounding: up

+fmax362070 fma  1   12345678 1E-8                    -> 12345678.00000001

+fmax362071 fma  1   12345678 1E-9                    -> 12345678.00000001 Inexact Rounded

+fmax362072 fma  1   12345678 1E-10                   -> 12345678.00000001 Inexact Rounded

+fmax362073 fma  1   12345678 1E-11                   -> 12345678.00000001 Inexact Rounded

+fmax362074 fma  1   12345678 1E-12                   -> 12345678.00000001 Inexact Rounded

+fmax362075 fma  1   12345678 1E-13                   -> 12345678.00000001 Inexact Rounded

+fmax362076 fma  1   12345678 1E-14                   -> 12345678.00000001 Inexact Rounded

+fmax362077 fma  1   12345678 1E-15                   -> 12345678.00000001 Inexact Rounded

+fmax362078 fma  1   12345678 1E-16                   -> 12345678.00000001 Inexact Rounded

+fmax362079 fma  1   12345678 1E-17                   -> 12345678.00000001 Inexact Rounded

+fmax362080 fma  1   12345678 1E-18                   -> 12345678.00000001 Inexact Rounded

+fmax362081 fma  1   12345678 1E-19                   -> 12345678.00000001 Inexact Rounded

+fmax362082 fma  1   12345678 1E-20                   -> 12345678.00000001 Inexact Rounded

+fmax362083 fma  1   12345678 1E-25                   -> 12345678.00000001 Inexact Rounded

+fmax362084 fma  1   12345678 1E-30                   -> 12345678.00000001 Inexact Rounded

+fmax362085 fma  1   12345678 1E-31                   -> 12345678.00000001 Inexact Rounded

+fmax362086 fma  1   12345678 1E-32                   -> 12345678.00000001 Inexact Rounded

+fmax362087 fma  1   12345678 1E-33                   -> 12345678.00000001 Inexact Rounded

+fmax362088 fma  1   12345678 1E-34                   -> 12345678.00000001 Inexact Rounded

+fmax362089 fma  1   12345678 1E-35                   -> 12345678.00000001 Inexact Rounded

+

+-- payload decapitate x3

+precision: 5

+fmax363000 fma  1 1  sNaN1234567890     ->  NaN67890  Invalid_operation

+fmax363001 fma    1 -sNaN1234512345 1   -> -NaN12345  Invalid_operation

+fmax363002 fma       sNaN1234554321 1 1 ->  NaN54321  Invalid_operation

+

+-- Null tests

+fmax39990 fma  1   10  # -> NaN Invalid_operation

+fmax39991 fma  1    # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/inexact.decTest b/Lib/test/decimaltestdata/inexact.decTest
index 3c435bd..896e6c8 100644
--- a/Lib/test/decimaltestdata/inexact.decTest
+++ b/Lib/test/decimaltestdata/inexact.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- inexact.decTest -- decimal inexact and rounded edge cases          --
--- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
diff --git a/Lib/test/decimaltestdata/invert.decTest b/Lib/test/decimaltestdata/invert.decTest
new file mode 100644
index 0000000..7bccb1f
--- /dev/null
+++ b/Lib/test/decimaltestdata/invert.decTest
@@ -0,0 +1,176 @@
+------------------------------------------------------------------------

+-- invert.decTest -- digitwise logical INVERT                         --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check (truth table), and examples from decArith

+invx001 invert             0 -> 111111111

+invx002 invert             1 -> 111111110

+invx003 invert            10 -> 111111101

+invx004 invert     111111111 ->         0

+invx005 invert     000000000 -> 111111111

+invx006 invert     101010101 -> '10101010'

+-- and at msd and msd-1

+invx007 invert 000000000 ->   111111111

+invx009 invert 100000000 ->    11111111

+invx011 invert 000000000 ->   111111111

+invx013 invert 010000000 ->   101111111

+

+-- Various lengths

+--             123456789         123456789

+invx021 invert 111111111     ->  0

+invx022 invert 111111111111  ->  0

+invx023 invert  11111111     ->  100000000

+invx025 invert   1111111     ->  110000000

+invx026 invert    111111     ->  111000000

+invx027 invert     11111     ->  111100000

+invx028 invert      1111     ->  111110000

+invx029 invert       111     ->  111111000

+invx031 invert        11     ->  111111100

+invx032 invert         1     ->  111111110

+invx033 invert 111111111111  ->  0

+invx034 invert 11111111111   ->  0

+invx035 invert 1111111111    ->  0

+invx036 invert 111111111     ->  0

+

+invx080 invert 011111111   ->  100000000

+invx081 invert 101111111   ->   10000000

+invx082 invert 110111111   ->    1000000

+invx083 invert 111011111   ->     100000

+invx084 invert 111101111   ->      10000

+invx085 invert 111110111   ->       1000

+invx086 invert 111111011   ->        100

+invx087 invert 111111101   ->         10

+invx088 invert 111111110   ->          1

+invx089 invert 011111011   ->  100000100

+invx090 invert 101111101   ->   10000010

+invx091 invert 110111110   ->    1000001

+invx092 invert 111011101   ->     100010

+invx093 invert 111101011   ->      10100

+invx094 invert 111110111   ->       1000

+invx095 invert 111101011   ->      10100

+invx096 invert 111011101   ->     100010

+invx097 invert 110111110   ->    1000001

+invx098 invert 101111101   ->   10000010

+invx099 invert 011111011   ->  100000100

+

+-- non-0/1 should not be accepted, nor should signs

+invx220 invert 111111112   ->  NaN Invalid_operation

+invx221 invert 333333333   ->  NaN Invalid_operation

+invx222 invert 555555555   ->  NaN Invalid_operation

+invx223 invert 777777777   ->  NaN Invalid_operation

+invx224 invert 999999999   ->  NaN Invalid_operation

+invx225 invert 222222222   ->  NaN Invalid_operation

+invx226 invert 444444444   ->  NaN Invalid_operation

+invx227 invert 666666666   ->  NaN Invalid_operation

+invx228 invert 888888888   ->  NaN Invalid_operation

+invx229 invert 999999999   ->  NaN Invalid_operation

+invx230 invert 999999999   ->  NaN Invalid_operation

+invx231 invert 999999999   ->  NaN Invalid_operation

+invx232 invert 999999999   ->  NaN Invalid_operation

+-- a few randoms

+invx240 invert  567468689  ->  NaN Invalid_operation

+invx241 invert  567367689  ->  NaN Invalid_operation

+invx242 invert -631917772  ->  NaN Invalid_operation

+invx243 invert -756253257  ->  NaN Invalid_operation

+invx244 invert  835590149  ->  NaN Invalid_operation

+-- test MSD

+invx250 invert  200000000  ->  NaN Invalid_operation

+invx251 invert  300000000  ->  NaN Invalid_operation

+invx252 invert  400000000  ->  NaN Invalid_operation

+invx253 invert  500000000  ->  NaN Invalid_operation

+invx254 invert  600000000  ->  NaN Invalid_operation

+invx255 invert  700000000  ->  NaN Invalid_operation

+invx256 invert  800000000  ->  NaN Invalid_operation

+invx257 invert  900000000  ->  NaN Invalid_operation

+-- test MSD-1

+invx270 invert  021000000  ->  NaN Invalid_operation

+invx271 invert  030100000  ->  NaN Invalid_operation

+invx272 invert  040010000  ->  NaN Invalid_operation

+invx273 invert  050001000  ->  NaN Invalid_operation

+invx274 invert  160000100  ->  NaN Invalid_operation

+invx275 invert  170000010  ->  NaN Invalid_operation

+invx276 invert  180000000  ->  NaN Invalid_operation

+invx277 invert  190000000  ->  NaN Invalid_operation

+-- test LSD

+invx280 invert  000000002  ->  NaN Invalid_operation

+invx281 invert  000000003  ->  NaN Invalid_operation

+invx282 invert  000000004  ->  NaN Invalid_operation

+invx283 invert  000000005  ->  NaN Invalid_operation

+invx284 invert  101000006  ->  NaN Invalid_operation

+invx285 invert  100100007  ->  NaN Invalid_operation

+invx286 invert  100010008  ->  NaN Invalid_operation

+invx287 invert  100001009  ->  NaN Invalid_operation

+-- test Middie

+invx288 invert  000020000  ->  NaN Invalid_operation

+invx289 invert  000030001  ->  NaN Invalid_operation

+invx290 invert  000040000  ->  NaN Invalid_operation

+invx291 invert  000050000  ->  NaN Invalid_operation

+invx292 invert  101060000  ->  NaN Invalid_operation

+invx293 invert  100170010  ->  NaN Invalid_operation

+invx294 invert  100080100  ->  NaN Invalid_operation

+invx295 invert  100091000  ->  NaN Invalid_operation

+-- signs

+invx296 invert -100001000  ->  NaN Invalid_operation

+invx299 invert  100001000  ->  11110111

+

+-- Nmax, Nmin, Ntiny

+invx341 invert  9.99999999E+999   -> NaN Invalid_operation

+invx342 invert  1E-999            -> NaN Invalid_operation

+invx343 invert  1.00000000E-999   -> NaN Invalid_operation

+invx344 invert  1E-1007           -> NaN Invalid_operation

+invx345 invert  -1E-1007          -> NaN Invalid_operation

+invx346 invert  -1.00000000E-999  -> NaN Invalid_operation

+invx347 invert  -1E-999           -> NaN Invalid_operation

+invx348 invert  -9.99999999E+999  -> NaN Invalid_operation

+

+-- A few other non-integers

+invx361 invert  1.0               -> NaN Invalid_operation

+invx362 invert  1E+1              -> NaN Invalid_operation

+invx363 invert  0.0               -> NaN Invalid_operation

+invx364 invert  0E+1              -> NaN Invalid_operation

+invx365 invert  9.9               -> NaN Invalid_operation

+invx366 invert  9E+1              -> NaN Invalid_operation

+

+-- All Specials are in error

+invx788 invert -Inf     -> NaN  Invalid_operation

+invx794 invert  Inf     -> NaN  Invalid_operation

+invx821 invert  NaN     -> NaN  Invalid_operation

+invx841 invert  sNaN    -> NaN  Invalid_operation

+-- propagating NaNs

+invx861 invert  NaN1    -> NaN Invalid_operation

+invx862 invert +NaN2    -> NaN Invalid_operation

+invx863 invert  NaN3    -> NaN Invalid_operation

+invx864 invert  NaN4    -> NaN Invalid_operation

+invx865 invert  NaN5    -> NaN Invalid_operation

+invx871 invert  sNaN11  -> NaN Invalid_operation

+invx872 invert  sNaN12  -> NaN Invalid_operation

+invx873 invert  sNaN13  -> NaN Invalid_operation

+invx874 invert  sNaN14  -> NaN Invalid_operation

+invx875 invert  sNaN15  -> NaN Invalid_operation

+invx876 invert  NaN16   -> NaN Invalid_operation

+invx881 invert +NaN25   -> NaN Invalid_operation

+invx882 invert -NaN26   -> NaN Invalid_operation

+invx883 invert -sNaN27  -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/ln.decTest b/Lib/test/decimaltestdata/ln.decTest
new file mode 100644
index 0000000..16e247e
--- /dev/null
+++ b/Lib/test/decimaltestdata/ln.decTest
@@ -0,0 +1,611 @@
+------------------------------------------------------------------------

+-- ln.decTest -- decimal natural logarithm                            --

+-- Copyright (c) IBM Corporation, 2005, 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.57

+

+extended:    1

+precision:   16

+rounding:    half_even

+maxExponent: 384

+minexponent: -383

+

+-- basics (examples in specification)

+precision: 9

+lnxs001 ln  0                 -> -Infinity

+lnxs002 ln  1.000             ->   0

+lnxs003 ln  2.71828183        ->   1.00000000         Inexact Rounded

+lnxs004 ln  10                ->   2.30258509         Inexact Rounded

+lnxs005 ln +Infinity          ->  Infinity

+

+

+-- basics

+precision:   16

+lnx0001 ln  0                 -> -Infinity

+lnx0002 ln  1E-9              -> -20.72326583694641   Inexact Rounded

+lnx0003 ln  0.0007            ->  -7.264430222920869  Inexact Rounded

+lnx0004 ln  0.1               ->  -2.302585092994046  Inexact Rounded

+lnx0005 ln  0.7               ->  -0.3566749439387324 Inexact Rounded

+lnx0006 ln  1                 ->   0

+lnx0007 ln  1.000             ->   0

+lnx0008 ln  1.5               ->   0.4054651081081644 Inexact Rounded

+lnx0009 ln  2                 ->   0.6931471805599453 Inexact Rounded

+lnx0010 ln  2.718281828459045 ->   0.9999999999999999 Inexact Rounded

+lnx0011 ln  2.718281828459046 ->   1.000000000000000  Inexact Rounded

+lnx0012 ln  2.718281828459047 ->   1.000000000000001  Inexact Rounded

+lnx0013 ln  10                ->   2.302585092994046  Inexact Rounded

+lnx0014 ln  10.5              ->   2.351375257163478  Inexact Rounded

+lnx0015 ln  9999              ->   9.210240366975849  Inexact Rounded

+lnx0016 ln  1E6               ->  13.81551055796427   Inexact Rounded

+lnx0017 ln  1E+9              ->  20.72326583694641   Inexact Rounded

+lnx0018 ln +Infinity          ->  Infinity

+

+-- notable cases

+-- negatives

+lnx0021 ln -1E-9              -> NaN Invalid_operation

+lnx0022 ln -0.0007            -> NaN Invalid_operation

+lnx0023 ln -0.1               -> NaN Invalid_operation

+lnx0024 ln -0.7               -> NaN Invalid_operation

+lnx0025 ln -1                 -> NaN Invalid_operation

+lnx0026 ln -1.5               -> NaN Invalid_operation

+lnx0027 ln -2                 -> NaN Invalid_operation

+lnx0029 ln -10.5              -> NaN Invalid_operation

+lnx0028 ln -9999              -> NaN Invalid_operation

+lnx0030 ln -2.718281828459045 -> NaN Invalid_operation

+lnx0031 ln -2.718281828459046 -> NaN Invalid_operation

+lnx0032 ln -0                 -> -Infinity

+lnx0033 ln -0E+17             -> -Infinity

+lnx0034 ln -0E-17             -> -Infinity

+-- other zeros

+lnx0041 ln  0                 -> -Infinity

+lnx0042 ln  0E+17             -> -Infinity

+lnx0043 ln  0E-17             -> -Infinity

+-- infinities

+lnx0045 ln -Infinity          -> NaN Invalid_operation

+lnx0046 ln +Infinity          -> Infinity

+-- ones

+lnx0050 ln  1                 ->   0

+lnx0051 ln  1.0               ->   0

+lnx0052 ln  1.000000000000000 ->   0

+lnx0053 ln  1.000000000000000000 ->   0

+

+-- lower precision basics

+Precision: 7

+lnx0101 ln  0                 -> -Infinity

+lnx0102 ln  1E-9              -> -20.72327            Inexact Rounded

+lnx0103 ln  0.0007            ->  -7.264430           Inexact Rounded

+lnx0104 ln  0.1               ->  -2.302585           Inexact Rounded

+lnx0105 ln  0.7               ->  -0.3566749          Inexact Rounded

+lnx0106 ln  1                 ->   0

+lnx0107 ln  1.5               ->   0.4054651          Inexact Rounded

+lnx0108 ln  2                 ->   0.6931472          Inexact Rounded

+lnx0109 ln  2.718281828459045 ->   1.000000           Inexact Rounded

+lnx0110 ln  2.718281828459046 ->   1.000000           Inexact Rounded

+lnx0111 ln  2.718281828459047 ->   1.000000           Inexact Rounded

+lnx0112 ln  10                ->   2.302585           Inexact Rounded

+lnx0113 ln  10.5              ->   2.351375           Inexact Rounded

+lnx0114 ln  9999              ->   9.210240           Inexact Rounded

+lnx0115 ln  1E6               ->  13.81551            Inexact Rounded

+lnx0116 ln  1E+9              ->  20.72327            Inexact Rounded

+lnx0117 ln +Infinity          ->  Infinity

+Precision: 2

+lnx0121 ln  0                 -> -Infinity

+lnx0122 ln  1E-9              -> -21                  Inexact Rounded

+lnx0123 ln  0.0007            ->  -7.3                Inexact Rounded

+lnx0124 ln  0.1               ->  -2.3                Inexact Rounded

+lnx0125 ln  0.7               ->  -0.36               Inexact Rounded

+lnx0126 ln  1                 ->   0

+lnx0127 ln  1.5               ->   0.41               Inexact Rounded

+lnx0128 ln  2                 ->   0.69               Inexact Rounded

+lnx0129 ln  2.718281828459045 ->   1.0                Inexact Rounded

+lnx0130 ln  2.718281828459046 ->   1.0                Inexact Rounded

+lnx0131 ln  2.718281828459047 ->   1.0                Inexact Rounded

+lnx0132 ln  10                ->   2.3                Inexact Rounded

+lnx0133 ln  10.5              ->   2.4                Inexact Rounded

+lnx0134 ln  9999              ->   9.2                Inexact Rounded

+lnx0135 ln  1E6               ->  14                  Inexact Rounded

+lnx0136 ln  1E+9              ->  21                  Inexact Rounded

+lnx0137 ln +Infinity          ->  Infinity

+Precision: 1

+lnx0141 ln  0                 -> -Infinity

+lnx0142 ln  1E-9              -> -2E+1                Inexact Rounded

+lnx0143 ln  0.0007            ->  -7                  Inexact Rounded

+lnx0144 ln  0.1               ->  -2                  Inexact Rounded

+lnx0145 ln  0.7               ->  -0.4                Inexact Rounded

+lnx0146 ln  1                 ->   0

+lnx0147 ln  1.5               ->   0.4                Inexact Rounded

+lnx0148 ln  2                 ->   0.7                Inexact Rounded

+lnx0149 ln  2.718281828459045 ->   1                  Inexact Rounded

+lnx0150 ln  2.718281828459046 ->   1                  Inexact Rounded

+lnx0151 ln  2.718281828459047 ->   1                  Inexact Rounded

+lnx0152 ln  10                ->   2                  Inexact Rounded

+lnx0153 ln  10.5              ->   2                  Inexact Rounded

+lnx0154 ln  9999              ->   9                  Inexact Rounded

+lnx0155 ln  1E6               ->  1E+1                Inexact Rounded

+lnx0156 ln  1E+9              ->  2E+1                Inexact Rounded

+lnx0157 ln +Infinity          ->  Infinity

+

+-- group low-precision ln(1)s:

+precision: 1

+lnx0161 ln  1 -> 0

+precision: 2

+lnx0162 ln  1 -> 0

+precision: 3

+lnx0163 ln  1 -> 0

+precision: 4

+lnx0164 ln  1 -> 0

+precision: 5

+lnx0165 ln  1 -> 0

+precision: 6

+lnx0166 ln  1 -> 0

+precision: 7

+lnx0167 ln  1 -> 0

+precision: 8

+lnx0168 ln  1 -> 0

+

+-- edge-test ln(2) and ln(10) in case of lookasides

+precision: 45

+lnx201  ln  2 -> 0.693147180559945309417232121458176568075500134  Inexact Rounded

+lnx202  ln 10 -> 2.30258509299404568401799145468436420760110149   Inexact Rounded

+precision: 44

+lnx203  ln  2 -> 0.69314718055994530941723212145817656807550013   Inexact Rounded

+lnx204  ln 10 -> 2.3025850929940456840179914546843642076011015    Inexact Rounded

+precision: 43

+lnx205  ln  2 -> 0.6931471805599453094172321214581765680755001    Inexact Rounded

+lnx206  ln 10 -> 2.302585092994045684017991454684364207601101     Inexact Rounded

+precision: 42

+lnx207  ln  2 -> 0.693147180559945309417232121458176568075500     Inexact Rounded

+lnx208  ln 10 -> 2.30258509299404568401799145468436420760110      Inexact Rounded

+precision: 41

+lnx209  ln  2 -> 0.69314718055994530941723212145817656807550      Inexact Rounded

+lnx210  ln 10 -> 2.3025850929940456840179914546843642076011       Inexact Rounded

+precision: 40

+lnx211  ln  2 -> 0.6931471805599453094172321214581765680755       Inexact Rounded

+lnx212  ln 10 -> 2.302585092994045684017991454684364207601        Inexact Rounded

+precision: 39

+lnx213  ln  2 -> 0.693147180559945309417232121458176568076        Inexact Rounded

+lnx214  ln 10 -> 2.30258509299404568401799145468436420760         Inexact Rounded

+precision: 38

+lnx215  ln  2 -> 0.69314718055994530941723212145817656808         Inexact Rounded

+lnx216  ln 10 -> 2.3025850929940456840179914546843642076          Inexact Rounded

+precision: 37

+lnx217  ln  2 -> 0.6931471805599453094172321214581765681          Inexact Rounded

+lnx218  ln 10 -> 2.302585092994045684017991454684364208           Inexact Rounded

+precision: 36

+lnx219  ln  2 -> 0.693147180559945309417232121458176568           Inexact Rounded

+lnx220  ln 10 -> 2.30258509299404568401799145468436421            Inexact Rounded

+precision: 35

+lnx221  ln  2 -> 0.69314718055994530941723212145817657            Inexact Rounded

+lnx222  ln 10 -> 2.3025850929940456840179914546843642             Inexact Rounded

+precision: 34

+lnx223  ln  2 -> 0.6931471805599453094172321214581766             Inexact Rounded

+lnx224  ln 10 -> 2.302585092994045684017991454684364              Inexact Rounded

+precision: 33

+lnx225  ln  2 -> 0.693147180559945309417232121458177              Inexact Rounded

+lnx226  ln 10 -> 2.30258509299404568401799145468436               Inexact Rounded

+precision: 32

+lnx227  ln  2 -> 0.69314718055994530941723212145818               Inexact Rounded

+lnx228  ln 10 -> 2.3025850929940456840179914546844                Inexact Rounded

+precision: 31

+lnx229  ln  2 -> 0.6931471805599453094172321214582                Inexact Rounded

+lnx230  ln 10 -> 2.302585092994045684017991454684                 Inexact Rounded

+precision: 30

+lnx231  ln  2 -> 0.693147180559945309417232121458                 Inexact Rounded

+lnx232  ln 10 -> 2.30258509299404568401799145468                  Inexact Rounded

+

+-- extreme input range values

+maxExponent: 384

+minExponent: -383

+Precision: 16

+

+lnx0901 ln 1e-400    -> -921.0340371976183  Inexact Rounded

+lnx0902 ln 1e+400    ->  921.0340371976183  Inexact Rounded

+lnx0903 ln 1e-999999 -> -2302582.790408953  Inexact Rounded

+lnx0904 ln 1e+999999 ->  2302582.790408953  Inexact Rounded

+lnx0905 ln 1e-1000013                -> -2302615.026600255  Inexact Rounded

+lnx0906 ln 2e-1000013                -> -2302614.333453074  Inexact Rounded

+

+lnx0910 ln 9.999999e+999999          ->  2302585.092993946  Inexact Rounded

+lnx0911 ln 9.9999999e+999999         ->  2302585.092994036  Inexact Rounded

+lnx0912 ln 9.99999999e+999999        ->  2302585.092994045  Inexact Rounded

+lnx0913 ln 9.999999999e+999999       ->  2302585.092994046  Inexact Rounded

+lnx0914 ln 9.999999999999e+999999    ->  2302585.092994046  Inexact Rounded

+lnx0915 ln 9.999999999999999e+999999 ->  2302585.092994046  Inexact Rounded

+lnx0916 ln 9.999999999999999999999999e+999999 ->  2302585.092994046  Inexact Rounded

+

+-- randoms

+-- P=50, within 0-999

+Precision: 50

+maxExponent: 384

+minExponent: -383

+lnx1501 ln 0.00098800906574486388604608477869812518857023768951 -> -6.9198186844033787995945147836955586009548513043689 Inexact Rounded

+lnx1502 ln 158.15866624664623070184595045304145949900714987827  -> 5.0635987458895647454907806507503825602758392287684 Inexact Rounded

+lnx1503 ln 0.00565661412059571925040285814021799775249288309321 -> -5.1749297776760632102047540300491550931651318975237 Inexact Rounded

+lnx1504 ln 0.00000006914232532620489602008402091666547903180607 -> -16.487098770877825308138976818688771638172333034347 Inexact Rounded

+lnx1505 ln 0.00025380374621297657504661540749355251231770070723 -> -8.2789492423005003205242162741569033124260321954589 Inexact Rounded

+lnx1506 ln 83.033654063877426261108592599182418953442677554806  -> 4.4192459962647137976949249810815698465031609843669 Inexact Rounded

+lnx1507 ln 0.00000000416863228092481651627734668440663678118729 -> -19.295677845122141772791294599714950175284915666430 Inexact Rounded

+lnx1508 ln 0.00000140847873187820570181214271960511080523457669 -> -13.473000349581967189668305314384952251556809480339 Inexact Rounded

+lnx1509 ln 66.176106555181527101630351127583944689752069132522  -> 4.1923194696232505883666171116966137694013431504252 Inexact Rounded

+lnx1510 ln 0.00000000000009899043487403590900111602024562297908 -> -29.943753166877840985821508112917991506656545174163 Inexact Rounded

+lnx1511 ln 0.00000000000324618296721747097510453388683912733569 -> -26.453541281444586819009546418577507163362590139422 Inexact Rounded

+lnx1512 ln 72.646968818463546449499147579023555008392860423385  -> 4.2856116660689646882852128853423566276718230426479 Inexact Rounded

+lnx1513 ln 0.00000000000000066755483124635612574263153825990523 -> -34.942910142802769319262875080398852491588707172483 Inexact Rounded

+lnx1514 ln 61.002910447202398204114909451851111424657671911002  -> 4.1109215752843377323363182051446177066434038096529 Inexact Rounded

+lnx1515 ln 917.06917611331980999227893584010544542312239174774  -> 6.8211829068303114128752453661946446979787826282907 Inexact Rounded

+lnx1516 ln 0.00000000170823794883673083358549749078972003965194 -> -20.187803436976150477297246666771626827057191023004 Inexact Rounded

+lnx1517 ln 0.53731767845358224445809761315159249898566542910649 -> -0.62116577939968409211736413628236285160048357000961 Inexact Rounded

+lnx1518 ln 0.00000000000000008965291392882804161299758708033373 -> -36.950585970980857376081265073276303670820056916206 Inexact Rounded

+lnx1519 ln 0.00000000006990244916026429904498278982530170295668 -> -23.383920429244457578373523508427783144589480420753 Inexact Rounded

+lnx1520 ln 4.0312542977070300070506064666536478373801988540614  -> 1.3940775676592451945795752796421391871302024763305 Inexact Rounded

+lnx1521 ln 271.84991311551875601432518819562391699324632396423  -> 5.6052501239873862517916679747146539808077431873478 Inexact Rounded

+lnx1522 ln 7.4118671629373864667229445746862314443895404818689  -> 2.0030823863706344628239147639318289961917060121141 Inexact Rounded

+lnx1523 ln 0.00000000000002026311452625364905357321664186034258 -> -31.529974180054438792043856877314043794320951134754 Inexact Rounded

+lnx1524 ln 0.00000000000009563398651261756952398250624737809347 -> -29.978248130576972953141284136962670021368834792579 Inexact Rounded

+lnx1525 ln 0.00000000009556772669409858653026558223465197808991 -> -23.071185939748285541228206161472956661196956741186 Inexact Rounded

+lnx1526 ln 6.8441648298027301292342057248737326152250794026761  -> 1.9233964395801946597272589473417948024361005082908 Inexact Rounded

+lnx1527 ln 0.00000000000073059699884439979394945822035704264577 -> -27.944914388353724718836101828677771967128509603158 Inexact Rounded

+lnx1528 ln 0.00000000000000002610078280419082263138064745416787 -> -38.184566367516207885573773320135965798717120735115 Inexact Rounded

+lnx1529 ln 0.00000000000000000150259517166294243088546806083283 -> -41.039337946266676108538170837580051699618334928421 Inexact Rounded

+lnx1530 ln 0.00000000000000087919160541714580707181969708502091 -> -34.667528818827671507514319744047440696187358676848 Inexact Rounded

+lnx1531 ln 0.00000000000395726725120787763271849577708068584598 -> -26.255467416961357741818735787226671938678424748431 Inexact Rounded

+lnx1532 ln 0.00000000002014334901669366218018377213150715938355 -> -24.628146955635359035289123027319969201693737159108 Inexact Rounded

+lnx1533 ln 0.00000008097927101101093117753938766241442896030637 -> -16.329072628469715178637178365710373398203190937454 Inexact Rounded

+lnx1534 ln 0.00000000000017115834162632864392039668116243984176 -> -29.396187292434898225453626794459285157263177528034 Inexact Rounded

+lnx1535 ln 0.39168317593866334087305459933723864294857086105035 -> -0.93730199062757240485836637306785037368746737693029 Inexact Rounded

+lnx1536 ln 79.335036798971515026519630103325369729637514127617  -> 4.3736798570287828823772149735170431010616961976965 Inexact Rounded

+lnx1537 ln 0.00000000000000056004952129926137413602116591493625 -> -35.118506463181870020730685884333000241039028127213 Inexact Rounded

+lnx1538 ln 0.00000006006035907843890918832481099660639553666078 -> -16.627915795747112566532705974853114454405010472043 Inexact Rounded

+lnx1539 ln 0.00000000085242024937414906371333826574632450587590 -> -20.882941460268101080186482230657774997273494107221 Inexact Rounded

+lnx1540 ln 0.00000000000043671099499262350316173246550771951561 -> -28.459504757285639221776305968469058854558726593945 Inexact Rounded

+

+-- P=34, within 0-999

+Precision: 34

+lnx1201 ln 0.0086732880815927182997566810334394 -> -4.747507311920844752486938187973721 Inexact Rounded

+lnx1202 ln 0.0007104103693460260609792222569854 -> -7.249667769903503023005549250347695 Inexact Rounded

+lnx1203 ln 786.8398945385105190697541493392742  -> 6.668024790031836340471824147010546 Inexact Rounded

+lnx1204 ln 0.7723073620282687656895190171967399 -> -0.2583726708506850868786816238217326 Inexact Rounded

+lnx1205 ln 0.0061057951517197631287183938412200 -> -5.098516933918797347064454103742635 Inexact Rounded

+lnx1206 ln 0.6181379708184393730103917562498745 -> -0.4810435926903365087463387760350021 Inexact Rounded

+lnx1207 ln 09.13888261229039989110753389096760  -> 2.212538125507975574509563027696021 Inexact Rounded

+lnx1208 ln 802.0105417063143696497292158147174  -> 6.687121752052341737234832203350214 Inexact Rounded

+lnx1209 ln 778.7749710387773713523028497333058  -> 6.657722135126935472086625031413031 Inexact Rounded

+lnx1210 ln 0.0024457295895346502513567679390616 -> -6.013411799940245345321348290398517 Inexact Rounded

+lnx1211 ln 0.0000511296947872828310338864217860 -> -9.881145118237281798081573131711636 Inexact Rounded

+lnx1212 ln 0.0000246803508602554924938685155658 -> -10.60950314264825661825360971430218 Inexact Rounded

+lnx1213 ln 9.027898199253511668242977766616082  -> 2.200319582778899029786017830557293 Inexact Rounded

+lnx1214 ln 0.0991812396542505631850692800904188 -> -2.310806398964672258823043180400384 Inexact Rounded

+lnx1215 ln 0.0000000000070238810143028811223924 -> -25.68170519961636647174714538290075 Inexact Rounded

+lnx1216 ln 2.630101665342826494730394729313167  -> 0.9670225014664367465128243039749559 Inexact Rounded

+lnx1217 ln 0.0056878928594359587691526063254683 -> -5.169415422904037819736637399445096 Inexact Rounded

+lnx1218 ln 567.3436047121057843908106573095590  -> 6.340965124964258486463444360787970 Inexact Rounded

+lnx1219 ln 1.199291248124655996614605745649725  -> 0.1817307557425911805765087755675657 Inexact Rounded

+lnx1220 ln 25.02050448582031098696267479135557  -> 3.219695668137659139544178905459317 Inexact Rounded

+lnx1221 ln 0.0000000000009939597023558756961300 -> -27.63707972996537636504396558259058 Inexact Rounded

+lnx1222 ln 0.0000007988551670159429716506430403 -> -14.04008617542597230988198612376415 Inexact Rounded

+lnx1223 ln 4.681515800176129184873770605589795  -> 1.543621946415383338972124445445748 Inexact Rounded

+lnx1224 ln 15.95126669161103011206658749345781  -> 2.769538242479483539275986395443539 Inexact Rounded

+lnx1225 ln 0.0301626783922211213675457279076066 -> -3.501149933677283341023932281826341 Inexact Rounded

+lnx1226 ln 000.0040544064881821770528475185674  -> -5.507950967557021671647165889608324 Inexact Rounded

+lnx1227 ln 29.01617095935593792095913785100360  -> 3.367853293862745651888450004473297 Inexact Rounded

+lnx1228 ln 78.01836167344736733024804243195323  -> 4.356944205055768575987781375003992 Inexact Rounded

+lnx1229 ln 0.0000000096545319316965321158634893 -> -18.45583840160965814462095477365013 Inexact Rounded

+lnx1230 ln 97.95475237720579752770587185074428  -> 4.584505661612812742208619358214729 Inexact Rounded

+lnx1231 ln 528.0609262050423246402564228432371  -> 6.269211667589138113396583894315956 Inexact Rounded

+lnx1232 ln 0.0000002250064349732969696660452972 -> -15.30713683526963996712167701738724 Inexact Rounded

+lnx1233 ln 47.97063637767998658567199049725754  -> 3.870589081585660692195989854842372 Inexact Rounded

+lnx1234 ln 0.0005394311344541432318853513414361 -> -7.524995428393925934087126702974121 Inexact Rounded

+lnx1235 ln 0.0000000090973385649567471674972633 -> -18.51528393158931783447035004125791 Inexact Rounded

+lnx1236 ln 0.0000000000238776490227576197317977 -> -24.45807828188389561331158879207262 Inexact Rounded

+lnx1237 ln 0.0000236587000231921532145326218758 -> -10.65177964499823314952429277979034 Inexact Rounded

+lnx1238 ln 499.1277448846130709827154556125942  -> 6.212862064761427967461188083514774 Inexact Rounded

+lnx1239 ln 0.0000003960192300284787663712417647 -> -14.74180306619298548093697608293284 Inexact Rounded

+lnx1240 ln 41.08268350829477451667228892495136  -> 3.715586706887278039173584859218960 Inexact Rounded

+

+-- P=16, within 0-99

+Precision: 16

+lnx1101 ln 7.964875261033948  -> 2.075041282352241 Inexact Rounded

+lnx1102 ln 13.54527396845394  -> 2.606037701870263 Inexact Rounded

+lnx1103 ln 0.0008026554341331 -> -7.127585034321814 Inexact Rounded

+lnx1104 ln 0.0000030582233261 -> -12.69767642300625 Inexact Rounded

+lnx1105 ln 0.0004477497509672 -> -7.711276073210766 Inexact Rounded

+lnx1106 ln 7.616268622474371  -> 2.030286567675148 Inexact Rounded

+lnx1107 ln 51.58329925806381  -> 3.943197962309569 Inexact Rounded

+lnx1108 ln 0.0018197497951263 -> -6.309056262549345 Inexact Rounded

+lnx1109 ln 2.956282457072984  -> 1.083932552334575 Inexact Rounded

+lnx1110 ln 0.3843325579189906 -> -0.9562470649400558 Inexact Rounded

+lnx1111 ln 0.0074466329265663 -> -4.899993304919237 Inexact Rounded

+lnx1112 ln 0.0003372478532993 -> -7.994692428206378 Inexact Rounded

+lnx1113 ln 0.0084792263167809 -> -4.770136069569271 Inexact Rounded

+lnx1114 ln 5.926756998151102  -> 1.779477182834305 Inexact Rounded

+lnx1115 ln 9.025699152180897  -> 2.200075969604119 Inexact Rounded

+lnx1116 ln 1.910124643533526  -> 0.6471684983238183 Inexact Rounded

+lnx1117 ln 0.8158922711411020 -> -0.2034729533939387 Inexact Rounded

+lnx1118 ln 0.0067080016475322 -> -5.004454189414139 Inexact Rounded

+lnx1119 ln 0.0047583242092716 -> -5.347859729601094 Inexact Rounded

+lnx1120 ln 0.0386647411641339 -> -3.252827175263113 Inexact Rounded

+lnx1121 ln 0.0050226427841761 -> -5.293799032774131 Inexact Rounded

+lnx1122 ln 6.927937541637261  -> 1.935562155866906 Inexact Rounded

+lnx1123 ln 0.0000095745343513 -> -11.55640365579814 Inexact Rounded

+lnx1124 ln 1.602465492956538  -> 0.4715433763243936 Inexact Rounded

+lnx1125 ln 38.98415625087535  -> 3.663155313610213 Inexact Rounded

+lnx1126 ln 5.343182042276734  -> 1.675821363568112 Inexact Rounded

+lnx1127 ln 55.89763703245816  -> 4.023522107934110 Inexact Rounded

+lnx1128 ln 0.7445257810280847 -> -0.2950077988101030 Inexact Rounded

+lnx1129 ln 1.631407314946094  -> 0.4894430257201248 Inexact Rounded

+lnx1130 ln 0.0005462451932602 -> -7.512442611116852 Inexact Rounded

+lnx1131 ln 0.0000864173269362 -> -9.356322359017317 Inexact Rounded

+lnx1132 ln 5.227161719132849  -> 1.653868438439637 Inexact Rounded

+lnx1133 ln 60.57078466941998  -> 4.103812675662452 Inexact Rounded

+lnx1134 ln 0.0992864325333160 -> -2.309746348350318 Inexact Rounded

+lnx1135 ln 09.48564268447325  -> 2.249779359074983 Inexact Rounded

+lnx1136 ln 0.0036106089355634 -> -5.623878840650787 Inexact Rounded

+lnx1137 ln 1.805176865587172  -> 0.5906585734593707 Inexact Rounded

+lnx1138 ln 62.59363259642255  -> 4.136663557220559 Inexact Rounded

+lnx1139 ln 4.373828261137201  -> 1.475638657912000 Inexact Rounded

+lnx1140 ln 0.994483524148738  -> -0.005531747794938690 Inexact Rounded

+

+-- P=7, within 0-9

+Precision: 7

+lnx1001 ln 0.0912025 -> -2.394673 Inexact Rounded

+lnx1002 ln 0.9728626 -> -0.02751242 Inexact Rounded

+lnx1003 ln 0.3886032 -> -0.9451965 Inexact Rounded

+lnx1004 ln 8.798639  -> 2.174597 Inexact Rounded

+lnx1005 ln 2.459121  -> 0.8998040 Inexact Rounded

+lnx1006 ln 2.013193  -> 0.6997220 Inexact Rounded

+lnx1007 ln 9.064857  -> 2.204405 Inexact Rounded

+lnx1008 ln 5.796417  -> 1.757240 Inexact Rounded

+lnx1009 ln 0.1143471 -> -2.168517 Inexact Rounded

+lnx1010 ln 0.5341542 -> -0.6270707 Inexact Rounded

+lnx1011 ln 6.693781  -> 1.901179 Inexact Rounded

+lnx1012 ln 0.0081779 -> -4.806320 Inexact Rounded

+lnx1013 ln 8.313616  -> 2.117895 Inexact Rounded

+lnx1014 ln 3.486925  -> 1.249020 Inexact Rounded

+lnx1015 ln 0.1801401 -> -1.714020 Inexact Rounded

+lnx1016 ln 0.5227148 -> -0.6487193 Inexact Rounded

+lnx1017 ln 7.818111  -> 2.056443 Inexact Rounded

+lnx1018 ln 0.0870671 -> -2.441076 Inexact Rounded

+lnx1019 ln 8.153966  -> 2.098504 Inexact Rounded

+lnx1020 ln 2.040975  -> 0.7134276 Inexact Rounded

+lnx1021 ln 1.481642  -> 0.3931509 Inexact Rounded

+lnx1022 ln 0.2610123 -> -1.343188 Inexact Rounded

+lnx1023 ln 0.466723  -> -0.7620193 Inexact Rounded

+lnx1024 ln 0.0518756 -> -2.958907 Inexact Rounded

+lnx1025 ln 2.056410  -> 0.7209617 Inexact Rounded

+lnx1026 ln 0.181522  -> -1.706378 Inexact Rounded

+lnx1027 ln 0.515551  -> -0.6625190 Inexact Rounded

+lnx1028 ln 8.425089  -> 2.131214 Inexact Rounded

+lnx1029 ln 2.077091  -> 0.7309684 Inexact Rounded

+lnx1030 ln 6.212705  -> 1.826596 Inexact Rounded

+lnx1031 ln 5.729343  -> 1.745601 Inexact Rounded

+lnx1032 ln 4.831251  -> 1.575105 Inexact Rounded

+lnx1033 ln 2.029760  -> 0.7079176 Inexact Rounded

+lnx1034 ln 8.615060  -> 2.153512 Inexact Rounded

+lnx1035 ln 0.0611511 -> -2.794407 Inexact Rounded

+lnx1036 ln 5.195269  -> 1.647748 Inexact Rounded

+lnx1037 ln 9.617686  -> 2.263604 Inexact Rounded

+lnx1038 ln 0.0049382 -> -5.310754 Inexact Rounded

+lnx1039 ln 2.786840  -> 1.024908 Inexact Rounded

+lnx1040 ln 0.0091073 -> -4.698679 Inexact Rounded

+

+-- from here 3-digit tests are based on reverse exp tests

+precision:   9

+rounding:    half_even

+maxExponent: 384

+minexponent: -383

+

+lnx001  ln 0           ->  -Infinity

+lnx002  ln 0.367879441 ->  -1.00000000    Inexact Rounded

+lnx003  ln 1           ->   0

+lnx005  ln 2.71828183  ->   1.00000000    Inexact Rounded

+lnx006  ln 2.00000000  ->   0.693147181   Inexact Rounded

+lnx007  ln +Infinity   ->   Infinity

+

+-- tiny edge cases

+precision:   7

+lnx011  ln 1.105171 ->  0.1000001       Inexact Rounded

+lnx012  ln 1.010050 ->  0.009999835     Inexact Rounded

+lnx013  ln 1.000010 ->  0.000009999950  Inexact Rounded

+lnx014  ln 1.000001 ->  9.999995E-7     Inexact Rounded

+lnx015  ln 1.000000 ->  0

+

+-- basic e=0, e=1, e=2, e=4, e>=8 cases

+precision:   7

+lnx041  ln 2.718282      ->  1.000000    Inexact Rounded

+lnx042  ln 0.3678794     -> -1.000000    Inexact Rounded

+lnx043  ln 22026.47      ->  10.00000    Inexact Rounded

+lnx044  ln 0.00004539993 -> -10.00000    Inexact Rounded

+lnx045  ln 2.688117E+43  ->  100.0000    Inexact Rounded

+lnx046  ln 3.720076E-44  -> -100.0000    Inexact Rounded

+lnx047  ln Infinity      ->  Infinity

+lnx048  ln 0E-389        -> -Infinity

+

+-- miscellanea

+precision: 16

+lnx055  ln 2.717658486884572E-236     -> -542.4103112874415       Inexact Rounded

+precision: 17

+lnx056  ln 2.7176584868845721E-236    -> -542.41031128744146      Inexact Rounded

+precision: 18

+lnx057  ln 2.71765848688457211E-236   -> -542.410311287441459     Inexact Rounded

+precision: 19

+lnx058  ln 2.717658486884572112E-236  -> -542.4103112874414592    Inexact Rounded

+precision: 20

+lnx059  ln 2.7176584868845721118E-236 -> -542.41031128744145917   Inexact Rounded

+

+-- inputs ending in ..500.., ..499.., ..100.., ..999.. sequences

+precision:   50

+lnx102  ln 0.9999999100000040499998785000027 -> -9.0000000000000000000000033749953829996446124861750E-8  Inexact Rounded

+precision:   30

+lnx103  ln 0.999999910000004049999878500003 -> -8.99999999999999999999997337499E-8   Inexact Rounded

+precision:   29

+lnx104  ln 0.99999991000000404999987850000 -> -9.0000000000000000000002733750E-8    Inexact Rounded

+precision:   28

+lnx105  ln 0.9999999100000040499998785000 -> -9.000000000000000000000273375E-8     Inexact Rounded

+precision:   27

+lnx106  ln 0.999999910000004049999878500 -> -9.00000000000000000000027338E-8      Inexact Rounded

+precision:   26

+lnx107  ln 0.99999991000000404999987850 -> -9.0000000000000000000002734E-8       Inexact Rounded

+precision:   25

+lnx108  ln 0.9999999100000040499998785 -> -9.000000000000000000000273E-8        Inexact Rounded

+precision:   24

+lnx109  ln 0.999999910000004049999879 -> -8.99999999999999995000027E-8         Inexact Rounded

+precision:   23

+lnx110  ln 0.99999991000000404999988 -> -8.9999999999999998500003E-8          Inexact Rounded

+precision:   22

+lnx111  ln 0.9999999100000040499999 -> -8.999999999999997850000E-8           Inexact Rounded

+precision:   21

+lnx112  ln 0.999999910000004050000 -> -8.99999999999998785000E-8            Inexact Rounded

+precision:   20

+lnx113  ln 0.99999991000000405000 -> -8.9999999999999878500E-8             Inexact Rounded

+precision:   19

+lnx114  ln 0.9999999100000040500 -> -8.999999999999987850E-8              Inexact Rounded

+precision:   18

+lnx115  ln 0.999999910000004050 -> -8.99999999999998785E-8               Inexact Rounded

+-- next may be a > 0.5ulp case; a more precise answer is:

+--                                -8.99999999999998784999918E-8

+precision:   17

+lnx116  ln 0.99999991000000405 -> -8.9999999999999878E-8               Inexact Rounded

+precision:   16

+lnx117  ln 0.9999999100000040 -> -9.000000004999988E-8               Inexact Rounded

+precision:   15

+lnx118  ln 0.999999910000004 -> -9.00000000499999E-8            Inexact Rounded

+precision:   14

+lnx119  ln 0.99999991000000 -> -9.0000004050000E-8                  Inexact Rounded

+precision:   13

+lnx120  ln 0.9999999100000 -> -9.000000405000E-8       Inexact Rounded

+precision:   12

+lnx121  ln 0.999999910000 -> -9.00000040500E-8        Inexact Rounded

+precision:   11

+lnx122  ln 0.99999991000 -> -9.0000004050E-8         Inexact Rounded

+precision:   10

+lnx123  ln 0.9999999100 -> -9.000000405E-8          Inexact Rounded

+precision:    9

+lnx124  ln 0.999999910 -> -9.00000041E-8           Inexact Rounded

+precision:    8

+lnx125  ln 0.99999991 -> -9.0000004E-8            Inexact Rounded

+precision:    7

+lnx126  ln 0.9999999 -> -1.000000E-7                   Inexact Rounded

+precision:   16

+lnx126b ln 0.9999999 -> -1.000000050000003E-7          Inexact Rounded

+precision:    6

+lnx127  ln 0.999999 -> -0.00000100000                  Inexact Rounded

+precision:    5

+lnx128  ln 0.99999 -> -0.000010000                     Inexact Rounded

+precision:    4

+lnx129  ln 0.9999 -> -0.0001000                        Inexact Rounded

+precision:    3

+lnx130  ln 0.999 -> -0.00100                           Inexact Rounded

+precision:    2

+lnx131  ln 0.99 -> -0.010                              Inexact Rounded

+precision:    1

+lnx132  ln 0.9 -> -0.1                                 Inexact Rounded

+

+

+-- cases near 1              --  1 2345678901234567890

+precision:    20

+lnx401  ln 2.7182818284589365041 -> 0.99999999999996000000 Inexact Rounded

+lnx402  ln 2.7182818284589636869 -> 0.99999999999997000000 Inexact Rounded

+lnx403  ln 2.7182818284589908697 -> 0.99999999999997999999 Inexact Rounded

+lnx404  ln 2.7182818284590180525 -> 0.99999999999998999998 Inexact Rounded

+lnx405  ln 2.7182818284590452354 -> 1.0000000000000000000  Inexact Rounded

+lnx406  ln 2.7182818284593170635 -> 1.0000000000001000000  Inexact Rounded

+lnx407  ln 2.7182818284595888917 -> 1.0000000000002000000  Inexact Rounded

+precision:    14

+lnx411  ln 2.7182818284589 -> 0.99999999999995    Inexact Rounded

+lnx413  ln 2.7182818284590 -> 0.99999999999998    Inexact Rounded

+lnx416  ln 2.7182818284591 -> 1.0000000000000     Inexact Rounded

+lnx417  ln 2.7182818284592 -> 1.0000000000001     Inexact Rounded

+

+-- overflows, including some exp overprecise borderlines

+precision:   7

+maxExponent: 384

+minExponent: -383

+lnx709  ln 9.999999E+384 ->  886.4953     Inexact Rounded

+lnx711  ln 9.999992E+384 ->  886.4953     Inexact Rounded

+precision:   16

+lnx722  ln 9.999999999999999E+384 ->  886.4952608027076     Inexact Rounded

+lnx724  ln 9.999999999999917E+384 ->  886.4952608027076     Inexact Rounded

+lnx726  ln 9.999999999999117E+384 ->  886.4952608027075     Inexact Rounded

+-- and more...

+precision:   15

+maxExponent: 999

+minExponent: -999

+lnx731  ln 9.99999999999999E+999 -> 2302.58509299405       Inexact Rounded

+-- next may be a > 0.5ulp case; a more precise answer is:

+--                                  2302.58509299404495001799145442

+lnx732  ln 9.99999999999266E+999 -> 2302.58509299404       Inexact Rounded

+lnx733  ln 9.99999999999265E+999 -> 2302.58509299404       Inexact Rounded

+lnx734  ln 9.99999999999264E+999 -> 2302.58509299404       Inexact Rounded

+

+-- subnormals and underflows for exp, including underflow-to-zero edge point

+precision:   7

+maxExponent: 384

+minExponent: -383

+lnx751  ln 0E-389 -> -Infinity

+lnx758  ln 1.000001E-383 -> -881.8901      Inexact Rounded

+lnx759  ln 9.99991E-384 -> -881.8901       Inexact Rounded

+lnx760  ln 4.4605E-385 -> -885.0000        Inexact Rounded

+lnx761  ln 2.221E-386 -> -887.9999         Inexact Rounded

+lnx762  ln 3.01E-387 -> -889.9985          Inexact Rounded

+lnx763  ln 1.7E-388 -> -892.8724           Inexact Rounded

+lnx764  ln 1.5E-388 -> -892.9976           Inexact Rounded

+lnx765  ln 9E-389 -> -893.5084             Inexact Rounded

+lnx766  ln 1E-389 -> -895.7056             Inexact Rounded

+lnx774  ln 0E-389 -> -Infinity

+

+-- special values

+lnx820  ln Infinity ->   Infinity

+lnx821  ln 0        ->  -Infinity

+lnx822  ln NaN      ->   NaN

+lnx823  ln sNaN     ->   NaN     Invalid_operation

+-- propagating NaNs

+lnx824  ln sNaN123  ->   NaN123  Invalid_operation

+lnx825  ln -sNaN321 ->  -NaN321  Invalid_operation

+lnx826  ln NaN456   ->   NaN456

+lnx827  ln -NaN654  ->  -NaN654

+lnx828  ln NaN1     ->   NaN1

+

+-- Invalid operations due to restrictions

+-- [next two probably skipped by most test harnesses]

+precision: 100000000

+lnx901  ln 1 ->  NaN            Invalid_context

+precision:  99999999

+lnx902  ln 0 ->  NaN            Invalid_context

+

+precision: 9

+maxExponent:   1000000

+minExponent:   -999999

+lnx903  ln 1   ->  NaN          Invalid_context

+maxExponent:    999999

+minExponent:   -999999

+lnx904  ln 0 ->  -Infinity

+maxExponent:    999999

+minExponent:  -1000000

+lnx905  ln 1   ->  NaN          Invalid_context

+maxExponent:    999999

+minExponent:   -999998

+lnx906  ln 0 ->  -Infinity

+

+-- payload decapitate

+precision: 5

+lnx910  ln -sNaN1234567890 -> -NaN67890  Invalid_operation

+

+-- Null test

+lnx900  ln #   -> NaN Invalid_operation

+

+

diff --git a/Lib/test/decimaltestdata/log10.decTest b/Lib/test/decimaltestdata/log10.decTest
new file mode 100644
index 0000000..bb033a8
--- /dev/null
+++ b/Lib/test/decimaltestdata/log10.decTest
@@ -0,0 +1,551 @@
+------------------------------------------------------------------------

+-- log10.decTest -- decimal logarithm in base 10                      --

+-- Copyright (c) IBM Corporation, 2005, 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.57

+

+-- This emphasises the testing of notable cases, as they will often

+-- have unusual paths (especially the 10**n results).

+

+extended:    1

+precision:   16

+rounding:    half_even

+maxExponent: 384

+minexponent: -383

+

+-- examples in specification

+precision:   9

+logxs000 log10  0                 -> -Infinity

+logxs001 log10  0.001             -> -3

+logxs002 log10  1                 ->  0

+logxs003 log10  2                 ->  0.301029996         Inexact Rounded

+logxs004 log10  10                ->  1

+logxs005 log10  70                ->  1.84509804          Inexact Rounded

+logxs006 log10 +Infinity          ->  Infinity

+

+

+-- basics (examples in specification, etc.)

+precision:   16

+logx0000 log10  0                 -> -Infinity

+logx0001 log10  7E-1000           -> -999.1549019599857   Inexact Rounded

+logx0002 log10  1.1E-9            -> -8.958607314841775   Inexact Rounded

+logx0003 log10  0.0007            -> -3.154901959985743   Inexact Rounded

+logx0004 log10  0.11              -> -0.9586073148417750  Inexact Rounded

+logx0005 log10  0.7               -> -0.1549019599857432  Inexact Rounded

+logx0006 log10  1                 ->  0

+logx0007 log10  1.5               ->  0.1760912590556812  Inexact Rounded

+logx0008 log10  2                 ->  0.3010299956639812  Inexact Rounded

+logx0009 log10  2.718281828459045 ->  0.4342944819032518  Inexact Rounded

+logx0010 log10  2.718281828459046 ->  0.4342944819032519  Inexact Rounded

+logx0011 log10  2.718281828459047 ->  0.4342944819032521  Inexact Rounded

+logx0012 log10  7                 ->  0.8450980400142568  Inexact Rounded

+logx0013 log10  10                ->  1

+logx0014 log10  10.5              ->  1.021189299069938   Inexact Rounded

+logx0015 log10  11                ->  1.041392685158225   Inexact Rounded

+logx0016 log10  70                ->  1.845098040014257   Inexact Rounded

+logx0017 log10  9999              ->  3.999956568380192   Inexact Rounded

+logx0018 log10  1.21E6            ->  6.082785370316450   Inexact Rounded

+logx0019 log10  1.1E+9            ->  9.041392685158225   Inexact Rounded

+logx0020 log10  7E+1000           ->  1000.845098040014   Inexact Rounded

+logx0021 log10 +Infinity          ->  Infinity

+

+-- notable cases

+-- negatives

+logx0031 log10 -1E-9              -> NaN Invalid_operation

+logx0032 log10 -0.0007            -> NaN Invalid_operation

+logx0033 log10 -0.1               -> NaN Invalid_operation

+logx0034 log10 -0.7               -> NaN Invalid_operation

+logx0035 log10 -1                 -> NaN Invalid_operation

+logx0036 log10 -1.5               -> NaN Invalid_operation

+logx0037 log10 -2                 -> NaN Invalid_operation

+logx0038 log10 -10.5              -> NaN Invalid_operation

+logx0039 log10 -10.5              -> NaN Invalid_operation

+logx0040 log10 -9999              -> NaN Invalid_operation

+logx0041 log10 -10                -> NaN Invalid_operation

+logx0042 log10 -0                 -> -Infinity

+logx0043 log10 -0E+17             -> -Infinity

+logx0044 log10 -0E-17             -> -Infinity

+-- other zeros

+logx0051 log10  0                 -> -Infinity

+logx0052 log10  0E+17             -> -Infinity

+logx0053 log10  0E-17             -> -Infinity

+-- infinities

+logx0055 log10 -Infinity          -> NaN Invalid_operation

+logx0056 log10 +Infinity          -> Infinity

+-- ones

+logx0061 log10  1                 ->   0

+logx0062 log10  1.0               ->   0

+logx0063 log10  1.000000000000000 ->   0

+logx0064 log10  1.000000000000000000 ->   0

+

+-- notable cases -- exact powers of 10

+logx1100 log10 1             -> 0

+logx1101 log10 10            -> 1

+logx1102 log10 100           -> 2

+logx1103 log10 1000          -> 3

+logx1104 log10 10000         -> 4

+logx1105 log10 100000        -> 5

+logx1106 log10 1000000       -> 6

+logx1107 log10 10000000      -> 7

+logx1108 log10 100000000     -> 8

+logx1109 log10 1000000000    -> 9

+logx1110 log10 10000000000   -> 10

+logx1111 log10 100000000000  -> 11

+logx1112 log10 1000000000000 -> 12

+logx1113 log10 0.00000000001 -> -11

+logx1114 log10 0.0000000001 -> -10

+logx1115 log10 0.000000001 -> -9

+logx1116 log10 0.00000001 -> -8

+logx1117 log10 0.0000001 -> -7

+logx1118 log10 0.000001 -> -6

+logx1119 log10 0.00001 -> -5

+logx1120 log10 0.0001 -> -4

+logx1121 log10 0.001 -> -3

+logx1122 log10 0.01 -> -2

+logx1123 log10 0.1 -> -1

+logx1124 log10 1E-99  -> -99

+logx1125 log10 1E-100 -> -100

+logx1126 log10 1E-383 -> -383

+

+-- check normally exact cases round properly

+precision: 1

+logx1141 log10 10000000000   -> 1E+1         Rounded

+logx1142 log10 1000000000000 -> 1E+1 Inexact Rounded

+logx1143 log10 1E+100        -> 1E+2         Rounded

+logx1144 log10 1E+123        -> 1E+2 Inexact Rounded

+logx1145 log10 1E+126        -> 1E+2 Inexact Rounded

+logx1146 log10 1E+916        -> 9E+2 Inexact Rounded

+logx1147 log10 1E+999        -> 1E+3 Inexact Rounded

+

+precision: 2

+logx1151 log10 10000000000   -> 10

+logx1152 log10 1000000000000 -> 12

+logx1153 log10 1E+100        -> 1.0E+2         Rounded

+logx1154 log10 1E+123        -> 1.2E+2 Inexact Rounded

+logx1155 log10 1E+126        -> 1.3E+2 Inexact Rounded

+logx1156 log10 1E+916        -> 9.2E+2 Inexact Rounded

+logx1157 log10 1E+999        -> 1.0E+3 Inexact Rounded

+-- some half-way point rounds, other cases, and negatives

+logx1158 log10 1E+125        -> 1.2E+2 Inexact Rounded

+logx1159 log10 1E+135        -> 1.4E+2 Inexact Rounded

+logx1160 log10 1E+129        -> 1.3E+2 Inexact Rounded

+logx1161 log10 1E+131        -> 1.3E+2 Inexact Rounded

+logx1162 log10 1E-123        -> -1.2E+2 Inexact Rounded

+logx1163 log10 1E-126        -> -1.3E+2 Inexact Rounded

+logx1164 log10 1E-916        -> -9.2E+2 Inexact Rounded

+logx1165 log10 1E-999        -> -1.0E+3 Inexact Rounded

+logx1166 log10 1E-125        -> -1.2E+2 Inexact Rounded

+logx1167 log10 1E-135        -> -1.4E+2 Inexact Rounded

+logx1168 log10 1E-129        -> -1.3E+2 Inexact Rounded

+logx1169 log10 1E-131        -> -1.3E+2 Inexact Rounded

+

+precision: 3

+logx1171 log10 10000000000   -> 10

+logx1172 log10 1000000000000 -> 12

+logx1173 log10 1E+100        -> 100

+logx1174 log10 1E+123        -> 123

+logx1175 log10 1E+126        -> 126

+logx1176 log10 1E+916        -> 916

+logx1177 log10 1E+999        -> 999

+

+-- log10(2) .. tests both ln(2) and ln(10) constants, too

+precision: 50

+logx1201 log10 2     -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded

+logx1202 log10 2.000 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded

+logx1203 log10 0.2E1 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded

+precision: 49

+logx1204 log10 2 -> 0.3010299956639811952137388947244930267681898814621 Inexact Rounded

+precision: 48

+logx1205 log10 2 -> 0.301029995663981195213738894724493026768189881462  Inexact Rounded

+precision: 47

+logx1206 log10 2 -> 0.30102999566398119521373889472449302676818988146   Inexact Rounded

+precision: 46

+logx1207 log10 2 -> 0.3010299956639811952137388947244930267681898815    Inexact Rounded

+precision: 45

+logx1208 log10 2 -> 0.301029995663981195213738894724493026768189881     Inexact Rounded

+precision: 44

+logx1209 log10 2 -> 0.30102999566398119521373889472449302676818988      Inexact Rounded

+precision: 43

+logx1210 log10 2 -> 0.3010299956639811952137388947244930267681899       Inexact Rounded

+precision: 42

+logx1211 log10 2 -> 0.301029995663981195213738894724493026768190        Inexact Rounded

+precision: 41

+logx1212 log10 2 -> 0.30102999566398119521373889472449302676819         Inexact Rounded

+precision: 40

+logx1213 log10 2 -> 0.3010299956639811952137388947244930267682          Inexact Rounded

+precision: 39

+logx1214 log10 2 -> 0.301029995663981195213738894724493026768           Inexact Rounded

+precision: 38

+logx1215 log10 2 -> 0.30102999566398119521373889472449302677            Inexact Rounded

+precision: 37

+logx1216 log10 2 -> 0.3010299956639811952137388947244930268             Inexact Rounded

+precision: 36

+logx1217 log10 2 -> 0.301029995663981195213738894724493027              Inexact Rounded

+precision: 35

+logx1218 log10 2 -> 0.30102999566398119521373889472449303               Inexact Rounded

+precision: 34

+logx1219 log10 2 -> 0.3010299956639811952137388947244930                Inexact Rounded

+precision: 33

+logx1220 log10 2 -> 0.301029995663981195213738894724493                 Inexact Rounded

+precision: 32

+logx1221 log10 2 -> 0.30102999566398119521373889472449                  Inexact Rounded

+precision: 31

+logx1222 log10 2 -> 0.3010299956639811952137388947245                   Inexact Rounded

+precision: 30

+logx1223 log10 2 -> 0.301029995663981195213738894724                    Inexact Rounded

+precision: 29

+logx1224 log10 2 -> 0.30102999566398119521373889472                     Inexact Rounded

+precision: 28

+logx1225 log10 2 -> 0.3010299956639811952137388947                      Inexact Rounded

+precision: 27

+logx1226 log10 2 -> 0.301029995663981195213738895                       Inexact Rounded

+precision: 26

+logx1227 log10 2 -> 0.30102999566398119521373889                        Inexact Rounded

+precision: 25

+logx1228 log10 2 -> 0.3010299956639811952137389                         Inexact Rounded

+precision: 24

+logx1229 log10 2 -> 0.301029995663981195213739                          Inexact Rounded

+precision: 23

+logx1230 log10 2 -> 0.30102999566398119521374                           Inexact Rounded

+precision: 22

+logx1231 log10 2 -> 0.3010299956639811952137                            Inexact Rounded

+precision: 21

+logx1232 log10 2 -> 0.301029995663981195214                             Inexact Rounded

+precision: 20

+logx1233 log10 2 -> 0.30102999566398119521                              Inexact Rounded

+precision: 19

+logx1234 log10 2 -> 0.3010299956639811952                               Inexact Rounded

+precision: 18

+logx1235 log10 2 -> 0.301029995663981195                                Inexact Rounded

+precision: 17

+logx1236 log10 2 -> 0.30102999566398120                                 Inexact Rounded

+precision: 16

+logx1237 log10 2 -> 0.3010299956639812                                  Inexact Rounded

+precision: 15

+logx1238 log10 2 -> 0.301029995663981                                   Inexact Rounded

+precision: 14

+logx1239 log10 2 -> 0.30102999566398                                    Inexact Rounded

+precision: 13

+logx1240 log10 2 -> 0.3010299956640                                     Inexact Rounded

+precision: 12

+logx1241 log10 2 -> 0.301029995664                                      Inexact Rounded

+precision: 11

+logx1242 log10 2 -> 0.30102999566                                       Inexact Rounded

+precision: 10

+logx1243 log10 2 -> 0.3010299957                                        Inexact Rounded

+precision:  9

+logx1244 log10 2 -> 0.301029996                                         Inexact Rounded

+precision:  8

+logx1245 log10 2 -> 0.30103000                                          Inexact Rounded

+precision:  7

+logx1246 log10 2 -> 0.3010300                                           Inexact Rounded

+precision:  6

+logx1247 log10 2 -> 0.301030                                            Inexact Rounded

+precision:  5

+logx1248 log10 2 -> 0.30103                                             Inexact Rounded

+precision:  4

+logx1249 log10 2 -> 0.3010                                              Inexact Rounded

+precision:  3

+logx1250 log10 2 -> 0.301                                               Inexact Rounded

+precision:  2

+logx1251 log10 2 -> 0.30                                                Inexact Rounded

+precision:  1

+logx1252 log10 2 -> 0.3                                                 Inexact Rounded

+

+maxExponent: 384

+minExponent: -383

+precision:   16

+rounding:    half_even

+

+-- More close-to-e, etc., tests

+precision:   34

+logx1301 log10 2.718281828459045235360287471352661  -> 0.4342944819032518276511289189166048 Inexact Rounded

+logx1302 log10 2.718281828459045235360287471352662  -> 0.4342944819032518276511289189166050 Inexact Rounded

+logx1303 log10 2.718281828459045235360287471352663  -> 0.4342944819032518276511289189166052 Inexact Rounded

+logx1304 log10 0.99999999999999999999999999999999   -> -4.342944819032518276511289189166073E-33 Inexact Rounded

+logx1305 log10 0.999999999999999999999999999999999  -> -4.342944819032518276511289189166053E-34 Inexact Rounded

+logx1306 log10 0.9999999999999999999999999999999999 -> -4.342944819032518276511289189166051E-35 Inexact Rounded

+logx1307 log10 1.000000000000000000000000000000000  -> 0

+logx1308 log10 1.0000000000000000000000000000000001 -> 4.342944819032518276511289189166051E-35 Inexact Rounded

+logx1309 log10 1.000000000000000000000000000000001  -> 4.342944819032518276511289189166049E-34 Inexact Rounded

+logx1310 log10 1.00000000000000000000000000000001   -> 4.342944819032518276511289189166029E-33 Inexact Rounded

+-- lower p

+precision:    7

+logx1320 log10 0.999999    -> -4.342947E-7  Inexact Rounded

+logx1321 log10 0.9999999   -> -4.342945E-8  Inexact Rounded

+logx1322 log10 0.99999999  -> -4.342945E-9  Inexact Rounded

+logx1323 log10 0.999999999 -> -4.342945E-10 Inexact Rounded

+logx1324 log10 1.00000000  ->  0

+logx1325 log10 1.00000001  ->  4.342945E-9  Inexact Rounded

+logx1326 log10 1.0000001   ->  4.342945E-8  Inexact Rounded

+logx1327 log10 1.000001    ->  4.342943E-7  Inexact Rounded

+

+-- near 10^3

+precision:   9

+logx1331 log10  999.9999998  -> 3.00000000 Inexact Rounded

+logx1332 log10  999.9999999  -> 3.00000000 Inexact Rounded

+logx1333 log10 1000.000000   -> 3

+logx1334 log10 1000.000001   -> 3.00000000 Inexact Rounded

+logx1335 log10 1000.000002   -> 3.00000000 Inexact Rounded

+precision: 16

+logx1341 log10  999.9999998  -> 2.999999999913141 Inexact Rounded

+logx1342 log10  999.9999999  -> 2.999999999956571 Inexact Rounded

+logx1343 log10 1000.000000   -> 3

+logx1344 log10 1000.000001   -> 3.000000000434294 Inexact Rounded

+logx1345 log10 1000.000002   -> 3.000000000868589 Inexact Rounded

+

+-- suggestions from Ilan Nehama

+logx1400 log10 10E-3    -> -2

+logx1401 log10 10E-2    -> -1

+logx1402 log10 100E-2   ->  0

+logx1403 log10 1000E-2  ->  1

+logx1404 log10 10000E-2 ->  2

+logx1405 log10 10E-1    ->  0

+logx1406 log10 100E-1   ->  1

+logx1407 log10 1000E-1  ->  2

+logx1408 log10 10000E-1 ->  3

+logx1409 log10 10E0     ->  1

+logx1410 log10 100E0    ->  2

+logx1411 log10 1000E0   ->  3

+logx1412 log10 10000E0  ->  4

+logx1413 log10 10E1     ->  2

+logx1414 log10 100E1    ->  3

+logx1415 log10 1000E1   ->  4

+logx1416 log10 10000E1  ->  5

+logx1417 log10 10E2     ->  3

+logx1418 log10 100E2    ->  4

+logx1419 log10 1000E2   ->  5

+logx1420 log10 10000E2  ->  6

+

+-- Randoms

+-- P=50, within 0-9999

+Precision: 50

+logx2501 log10 0.00035448001667968141775891246991912655961163345904 ->  -3.4504082425411775290864053318247274944685586188505 Inexact Rounded

+logx2502 log10 70.636455726424311228255338637935330826995136597644  ->   1.8490288998408492045793070255302335558140975719247 Inexact Rounded

+logx2503 log10 0.00000000000000233550362473821889060812804063040169 -> -14.631619454343834858023578299142866557717904223667 Inexact Rounded

+logx2504 log10 97.783628621523244679901260358286898958832135433764  ->   1.9902661493224219517897657964362571690592734407330 Inexact Rounded

+logx2505 log10 0062.2377135315858392802612812022807838599572017342  ->   1.7940536293085066199287632725026837018486533544141 Inexact Rounded

+logx2506 log10 6.3767634652071053619977602804724129652981747879532  ->   0.80460030789825961615100163576080761326857374098644 Inexact Rounded

+logx2507 log10 63.297088981313278529306533814195068850532666658798  ->   1.8013837373724427092417170149098614410849353839673 Inexact Rounded

+logx2508 log10 0.00000077239693316881797717820110898167721602299187 ->  -6.1121594592718550613773886241951966264826760310047 Inexact Rounded

+logx2509 log10 0.00000003953580359780185534830572461922527831395002 ->  -7.4030094293833847136252547069905477213541787177561 Inexact Rounded

+logx2510 log10 754.62905817369989169188998111527272688791544577204  ->   2.8777335243761300047758534304371912099958057545416 Inexact Rounded

+logx2511 log10 0.00000048360378410241428936607147056283282849158312 ->  -6.3155103095309353457604038397980091650760346334512 Inexact Rounded

+logx2512 log10 0.00007509037583645612577196104591672080542932166089 ->  -4.1244157219700166314012344705538088030592896111026 Inexact Rounded

+logx2513 log10 0.00000000000705475944638915053419839063567898092064 -> -11.151517790256466048553810002525868198178167950377 Inexact Rounded

+logx2514 log10 9.6210300460497657917445410947099633479609165120661  ->   0.98322157093260978206633922877716078683518617768411 Inexact Rounded

+logx2515 log10 0.00000000050150361386555527496607245976120864985611 ->  -9.2997259330798261040411086835563234390934934629340 Inexact Rounded

+logx2516 log10 098.24754029731994125797723545333677604490074810751  ->   1.9923216862874337077795278629351060819105679670633 Inexact Rounded

+logx2517 log10 7.5091998150046994320441463854301624742491015752980  ->   0.87559366078005924080766469158763499725414024128781 Inexact Rounded

+logx2518 log10 0.00000000000079540571273330075193668596942268542425 -> -12.099411294165176028817305108475326325006250936963 Inexact Rounded

+logx2519 log10 0.00000042395034799555215782907515074134154915491701 ->  -6.3726850039125381134069450802108893075604464135297 Inexact Rounded

+logx2520 log10 56.683376304674355481905023145238799909301732694982  ->   1.7534557107853480435703421826077606250636580091754 Inexact Rounded

+logx2521 log10 48.734033811444195070807606721517169810438049581227  ->   1.6878323602741065190942654710049433808208291564049 Inexact Rounded

+logx2522 log10 0.00074830310930046865009851706989430228561880221063 ->  -3.1259224502209974082223667712016445572431791920618 Inexact Rounded

+logx2523 log10 36.677348885111593384020836720396262497122708598359  ->   1.5643979364260796086754530282302605477567469395425 Inexact Rounded

+logx2524 log10 0.00000000000000004495678560480432858812419145833744 -> -16.347204748239740510014320630363244015916029619561 Inexact Rounded

+logx2525 log10 9509.5854013650642799374159131940108748594774307104  ->   3.9781615829916326741100166519726824430945406302661 Inexact Rounded

+logx2526 log10 0.07834891268689177014044454793608715276615743819097 ->  -1.1059670262197643147805517398621288897669876996348 Inexact Rounded

+logx2527 log10 0.00000029584529880706128444454688454999032801904794 ->  -6.5289353275814043710076526920566721570375026917206 Inexact Rounded

+logx2528 log10 3.0713496544497618098794332787772186176981011904294  ->   0.48732926103896828546424341029492468100431414072994 Inexact Rounded

+logx2529 log10 352.66392670788816474407442785460803833927136413943  ->   2.5473610388199562714709836398243933320284077008314 Inexact Rounded

+logx2530 log10 0.00304743125181876267210516527361742185617091801650 ->  -2.5160660830163981967774124745311497447050056400207 Inexact Rounded

+logx2531 log10 0.00000076120535894952136499250364604538117729437183 ->  -6.1184981629047051532448413863950776496652483019415 Inexact Rounded

+logx2532 log10 769.88795978534353052965286195053735007473187735815  ->   2.8864275277862652709986498581064117950288798222100 Inexact Rounded

+logx2533 log10 0.00000000000000041297494808612226304619570016336188 -> -15.384076292745415917510668454361868659468669804710 Inexact Rounded

+logx2534 log10 860.88864595714426940247940960258558876903741966974  ->   2.9349469800554277915920278090647283233440859155176 Inexact Rounded

+logx2535 log10 5839.0328812994787235900178587371051096898683972444  ->   3.7663409208972392569269125539438874737147906238543 Inexact Rounded

+logx2536 log10 0.00000028532710151284840471670497112821201598377841 ->  -6.5446569753514027675878879843238065488490618159490 Inexact Rounded

+logx2537 log10 0.00000000000000009734490059931638483445631835651581 -> -16.011686794011271135978633880864278692254243106931 Inexact Rounded

+logx2538 log10 5.8610949526439529489252302463450302981511714144330  ->   0.76797875722452549281028552067645732490929361952278 Inexact Rounded

+logx2539 log10 6.6282432221115923372151148990137179611977576327206  ->   0.82139843639227213211012044000785757267155736071361 Inexact Rounded

+logx2540 log10 0.00000000001994071862386846626954819923923344413454 -> -10.700259194632339980266559224447212260115021637626 Inexact Rounded

+

+-- P=34, within 0-9999

+Precision: 34

+logx2201 log10 1.522513203889714179088327328864183  -> 0.1825610677098896250496651330492109 Inexact Rounded

+logx2202 log10 0.171123774769717316154080888930404  -> -0.7666896483548462582461898092764408 Inexact Rounded

+logx2203 log10 0.0000000997467236251714283104963838 -> -7.001101360652518274271569010312115 Inexact Rounded

+logx2204 log10 0.0008856103624122479769647543468633 -> -3.052757310476070891830490327138190 Inexact Rounded

+logx2205 log10 1.938274868738032930709498221236758  -> 0.2874153648259449520201536171714594 Inexact Rounded

+logx2206 log10 479.5667847823826713082613445010097  -> 2.680849095850361068709165157286435 Inexact Rounded

+logx2207 log10 8856.136599178820202141823157336804  -> 3.947244306584767101480454261950559 Inexact Rounded

+logx2208 log10 0.0000911026318801903982642871344858 -> -4.040469076434979398438617464033826 Inexact Rounded

+logx2209 log10 0.0000000000017271112650427414732630 -> -11.76267968314038748995178212654921 Inexact Rounded

+logx2210 log10 6.962605370078885647639503548229695  -> 0.8427717807200322352686396925992250 Inexact Rounded

+logx2211 log10 0.3354804428992793132855923541692781 -> -0.4743327923012159170967636070844834 Inexact Rounded

+logx2212 log10 2.079864257474859008252165836663504  -> 0.3180349916198059046812506741388856 Inexact Rounded

+logx2213 log10 2805.479529292939499220276986621988  -> 3.448007104139974344565978780624744 Inexact Rounded

+logx2214 log10 66.45731133034187374557028537213949  -> 1.822542767005644041661520936223086 Inexact Rounded

+logx2215 log10 0.0000001206521261762681738274822835 -> -6.918465020390216969561494755767318 Inexact Rounded

+logx2216 log10 0.0000000001884891916264401160472381 -> -9.724713548119065386091933007528633 Inexact Rounded

+logx2217 log10 0.0000015467279551726326581314582759 -> -5.810586065070435383755759514608738 Inexact Rounded

+logx2218 log10 0.0090776316728068586744633914135952 -> -2.042027442843745884503280954390114 Inexact Rounded

+logx2219 log10 0.0000000000024541106528713393740030 -> -11.61010585935635713090119156069479 Inexact Rounded

+logx2220 log10 14.12936879385863410081087750645856  -> 1.150122760895466989841057385742662 Inexact Rounded

+logx2221 log10 0.0000036912481831392922922647231392 -> -5.432826753789892283556211380824203 Inexact Rounded

+logx2222 log10 0.0000000004067477525420424270138734 -> -9.390674838050073122857868012475060 Inexact Rounded

+logx2223 log10 7080.122562705399744969319589806194  -> 3.850040775747103318724330047546916 Inexact Rounded

+logx2224 log10 261.3491411363679209175524790255725  -> 2.417221077227536319655699517530855 Inexact Rounded

+logx2225 log10 003.9945581449915240094728380041494  -> 0.6014687471531988260823066997845691 Inexact Rounded

+logx2226 log10 0.0000000000583549164588495206767840 -> -10.23392254834182677023231713519341 Inexact Rounded

+logx2227 log10 9567.961832607240278342761088487484  -> 3.980819434211107631569386147016368 Inexact Rounded

+logx2228 log10 06.26592979160342972777219828867033  -> 0.7969855243966221408595024012574729 Inexact Rounded

+logx2229 log10 0.0000000000589847046598067273287319 -> -10.22926059078206218717755253582907 Inexact Rounded

+logx2230 log10 567.9388648235589204769442863724997  -> 2.754301589058313576472380262907638 Inexact Rounded

+logx2231 log10 039.7790325480037778918162264883415  -> 1.599654216592019199639285308997886 Inexact Rounded

+logx2232 log10 0.0000000005123951921894162149817207 -> -9.290394953898862694847327137242690 Inexact Rounded

+logx2233 log10 0.0000000000038500999723636904276723 -> -11.41452799337924056186867324854691 Inexact Rounded

+logx2234 log10 0.0006726500658977759825616537935864 -> -3.172210810922768725687671849421792 Inexact Rounded

+logx2235 log10 260.2400250475967528429943779126507  -> 2.415374092073799204236801383070064 Inexact Rounded

+logx2236 log10 0.0000000006101942339385102585042548 -> -9.214531900562046557191261226632509 Inexact Rounded

+logx2237 log10 0.0000000010846867501382746760066557 -> -8.964695664883282406359874242387236 Inexact Rounded

+logx2238 log10 60.24078375568814769010333711509928  -> 1.779890613567084253168373266648922 Inexact Rounded

+logx2239 log10 0.0012058738711757669337600252986093 -> -2.918698115012605915753728220896010 Inexact Rounded

+logx2240 log10 230.9450930197841600611503095185600  -> 2.363508739056822846742942599628966 Inexact Rounded

+

+-- P=16, within 0-999

+Precision: 16

+logx2101 log10 0.0072067119605184 -> -2.142262835573038 Inexact Rounded

+logx2102 log10 503.6828482226624  -> 2.702157162195652 Inexact Rounded

+logx2103 log10 64.96074447821815  -> 1.812650993464174 Inexact Rounded

+logx2104 log10 48.75408597467246  -> 1.688011018842600 Inexact Rounded

+logx2105 log10 0.0329009839269587 -> -1.482791113975280 Inexact Rounded

+logx2106 log10 223.5320415060633  -> 2.349339784523410 Inexact Rounded

+logx2107 log10 73.12765002292194  -> 1.864081617476268 Inexact Rounded

+logx2108 log10 487.3749378358509  -> 2.687863192802252 Inexact Rounded

+logx2109 log10 0.0000019671987621 -> -5.706151757557926 Inexact Rounded

+logx2110 log10 0.0570680660609784 -> -1.243606844697873 Inexact Rounded

+logx2111 log10 33.10311638788998  -> 1.519868880976773 Inexact Rounded

+logx2112 log10 0.0687382699187077 -> -1.162801402868185 Inexact Rounded

+logx2113 log10 258.9416193626484  -> 2.413201859654145 Inexact Rounded

+logx2114 log10 0.0005306100136736 -> -3.275224558269725 Inexact Rounded

+logx2115 log10 65.78490393408572  -> 1.818126244825109 Inexact Rounded

+logx2116 log10 504.2328842073510  -> 2.702631165346958 Inexact Rounded

+logx2117 log10 9.417432755815027  -> 0.9739325278524503 Inexact Rounded

+logx2118 log10 006.7054835355498  -> 0.8264301004947640 Inexact Rounded

+logx2119 log10 0.0917012272363915 -> -1.037624852133399 Inexact Rounded

+logx2120 log10 5.959404385244921  -> 0.7752028561953401 Inexact Rounded

+logx2121 log10 0.0001209759148486 -> -3.917301084968903 Inexact Rounded

+logx2122 log10 0.0004706112139838 -> -3.327337728428039 Inexact Rounded

+logx2123 log10 0.0069700457377046 -> -2.156764372035771 Inexact Rounded

+logx2124 log10 0.5155584569852619 -> -0.2877220847805025 Inexact Rounded

+logx2125 log10 88.06005885607414  -> 1.944778971389913 Inexact Rounded

+logx2126 log10 0.0448240038219866 -> -1.348489353509709 Inexact Rounded

+logx2127 log10 3.419622484059565  -> 0.5339781639101145 Inexact Rounded

+logx2128 log10 5.171123353858721  -> 0.7135848977142854 Inexact Rounded

+logx2129 log10 0.0002133188319807 -> -3.670970802945872 Inexact Rounded

+logx2130 log10 46.21086703136966  -> 1.664744117045149 Inexact Rounded

+logx2131 log10 0.0000631053714415 -> -4.199933672639880 Inexact Rounded

+logx2132 log10 78.66019196870698  -> 1.895755001962469 Inexact Rounded

+logx2133 log10 0.0007152278351188 -> -3.145555592082297 Inexact Rounded

+logx2134 log10 45.52509819928536  -> 1.658250891256892 Inexact Rounded

+logx2135 log10 0.0000703227795740 -> -4.152903971697183 Inexact Rounded

+logx2136 log10 26.24438641426669  -> 1.419036423550599 Inexact Rounded

+logx2137 log10 0.0000044654829535 -> -5.350131564166817 Inexact Rounded

+logx2138 log10 0.7360702733062529 -> -0.1330807211893611 Inexact Rounded

+logx2139 log10 8.417059176469655  -> 0.9251603805112778 Inexact Rounded

+logx2140 log10 0.0002926570767968 -> -3.533640969664818 Inexact Rounded

+

+-- P=7, within 0-99

+Precision: 7

+logx2001 log10 57.26089  -> 1.757858 Inexact Rounded

+logx2002 log10 0.0575421 -> -1.240014 Inexact Rounded

+logx2003 log10 0.5918465 -> -0.2277909 Inexact Rounded

+logx2004 log10 0.0068776 -> -2.162563 Inexact Rounded

+logx2005 log10 0.0066833 -> -2.175009 Inexact Rounded

+logx2006 log10 9.926963  -> 0.9968164 Inexact Rounded

+logx2007 log10 0.0041852 -> -2.378284 Inexact Rounded

+logx2008 log10 84.15412  -> 1.925075 Inexact Rounded

+logx2009 log10 2.466856  -> 0.3921438 Inexact Rounded

+logx2010 log10 0.0058047 -> -2.236220 Inexact Rounded

+logx2011 log10 9.885154  -> 0.9949834 Inexact Rounded

+logx2012 log10 0.6667654 -> -0.1760269 Inexact Rounded

+logx2013 log10 34.65736  -> 1.539795 Inexact Rounded

+logx2014 log10 0.0026884 -> -2.570506 Inexact Rounded

+logx2015 log10 0.0432767 -> -1.363746 Inexact Rounded

+logx2016 log10 66.01407  -> 1.819637 Inexact Rounded

+logx2017 log10 0.0070572 -> -2.151368 Inexact Rounded

+logx2018 log10 0.0731613 -> -1.135719 Inexact Rounded

+logx2019 log10 9.838983  -> 0.9929502 Inexact Rounded

+logx2020 log10 15.89696  -> 1.201314 Inexact Rounded

+logx2021 log10 8.459247  -> 0.9273317 Inexact Rounded

+logx2022 log10 0.0010873 -> -2.963651 Inexact Rounded

+logx2023 log10 0.6498619 -> -0.1871789 Inexact Rounded

+logx2024 log10 0.0847008 -> -1.072112 Inexact Rounded

+logx2025 log10 0.0075489 -> -2.122116 Inexact Rounded

+logx2026 log10 51.11152  -> 1.708519 Inexact Rounded

+logx2027 log10 0.7233866 -> -0.1406295 Inexact Rounded

+logx2028 log10 2.254721  -> 0.3530928 Inexact Rounded

+logx2029 log10 6.568444  -> 0.8174625 Inexact Rounded

+logx2030 log10 83.72639  -> 1.922862 Inexact Rounded

+logx2031 log10 6.720585  -> 0.8274071 Inexact Rounded

+logx2032 log10 87.90366  -> 1.944007 Inexact Rounded

+logx2033 log10 0.0433324 -> -1.363187 Inexact Rounded

+logx2034 log10 34.63912  -> 1.539567 Inexact Rounded

+logx2035 log10 0.8089059 -> -0.09210200 Inexact Rounded

+logx2036 log10 7.793405  -> 0.8917272 Inexact Rounded

+logx2037 log10 0.0041757 -> -2.379271 Inexact Rounded

+logx2038 log10 7.135417  -> 0.8534194 Inexact Rounded

+logx2039 log10 12.49570  -> 1.096761 Inexact Rounded

+logx2040 log10 6.356276  -> 0.8032027 Inexact Rounded

+

+--------

+maxExponent: 384

+minExponent: -383

+precision:   16

+rounding:    half_even

+

+-- special values

+logx820  log10   Infinity ->   Infinity

+logx821  log10   0        ->  -Infinity

+logx822  log10   NaN      ->   NaN

+logx823  log10   sNaN     ->   NaN     Invalid_operation

+-- propagating NaNs

+logx824  log10   sNaN123  ->   NaN123  Invalid_operation

+logx825  log10   -sNaN321 ->  -NaN321  Invalid_operation

+logx826  log10   NaN456   ->   NaN456

+logx827  log10   -NaN654  ->  -NaN654

+logx828  log10   NaN1     ->   NaN1

+

+

+-- Invalid operations due to restrictions

+-- [next two probably skipped by most test harnesses]

+precision: 100000000

+logx901  log10 1 ->  NaN            Invalid_context

+precision:  99999999

+logx902  log10 0 ->  NaN            Invalid_context

+

+precision: 9

+maxExponent:   1000000

+minExponent:   -999999

+logx903  log10 1   ->  NaN            Invalid_context

+maxExponent:    999999

+minExponent:   -999999

+logx904  log10 0 ->  -Infinity

+maxExponent:    999999

+minExponent:  -1000000

+logx905  log10 1   ->  NaN            Invalid_context

+maxExponent:    999999

+minExponent:   -999998

+logx906  log10 0 ->  -Infinity

+

+-- Null test

+logx900  log10 #   -> NaN Invalid_operation

+

+

diff --git a/Lib/test/decimaltestdata/logb.decTest b/Lib/test/decimaltestdata/logb.decTest
new file mode 100644
index 0000000..a672206
--- /dev/null
+++ b/Lib/test/decimaltestdata/logb.decTest
@@ -0,0 +1,162 @@
+------------------------------------------------------------------------

+-- logb.decTest -- return integral adjusted exponent as per 754r      --

+-- Copyright (c) IBM Corporation, 2005, 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.57

+

+-- This emphasises the testing of notable cases, as they will often

+-- have unusual paths (especially the 10**n results).

+

+extended:    1

+rounding:    half_even

+maxExponent: 999

+minexponent: -999

+

+-- basics & examples

+precision:   9

+logbx001 logb  0                 -> -Infinity  Division_by_zero

+logbx002 logb  1E-999            -> -999

+logbx003 logb  9E-999            -> -999

+logbx004 logb  0.001             -> -3

+logbx005 logb  0.03              -> -2

+logbx006 logb  1                 ->  0

+logbx007 logb  2                 ->  0

+logbx008 logb  2.5               ->  0

+logbx009 logb  2.50              ->  0

+logbx010 logb  10                ->  1

+logbx011 logb  70                ->  1

+logbx012 logb  100               ->  2

+logbx013 logb  250               ->  2

+logbx014 logb +Infinity          ->  Infinity

+

+-- negatives are treated as positives

+logbx021 logb -0                 -> -Infinity  Division_by_zero

+logbx022 logb -1E-999            -> -999

+logbx023 logb -9E-999            -> -999

+logbx024 logb -0.001             -> -3

+logbx025 logb -1                 ->  0

+logbx026 logb -2                 ->  0

+logbx027 logb -10                ->  1

+logbx028 logb -70                ->  1

+logbx029 logb -100               ->  2

+logbx030 logb -100000000         ->  8

+logbx031 logb -Infinity          ->  Infinity

+

+-- zeros

+logbx111 logb          0   -> -Infinity  Division_by_zero

+logbx112 logb         -0   -> -Infinity  Division_by_zero

+logbx113 logb       0E+4   -> -Infinity  Division_by_zero

+logbx114 logb      -0E+4   -> -Infinity  Division_by_zero

+logbx115 logb     0.0000   -> -Infinity  Division_by_zero

+logbx116 logb    -0.0000   -> -Infinity  Division_by_zero

+logbx117 logb      0E-141  -> -Infinity  Division_by_zero

+logbx118 logb     -0E-141  -> -Infinity  Division_by_zero

+

+-- full coefficients, alternating bits

+logbx121 logb   268268268        -> 8

+logbx122 logb  -268268268        -> 8

+logbx123 logb   134134134        -> 8

+logbx124 logb  -134134134        -> 8

+

+-- Nmax, Nmin, Ntiny

+logbx131 logb  9.99999999E+999   -> 999

+logbx132 logb  1E-999            -> -999

+logbx133 logb  1.00000000E-999   -> -999

+logbx134 logb  1E-1007           -> -1007

+

+logbx135 logb  -1E-1007          -> -1007

+logbx136 logb  -1.00000000E-999  -> -999

+logbx137 logb  -1E-999           -> -999

+logbx138 logb  -9.99999999E+999  ->  999

+

+-- ones

+logbx0061 logb  1                 ->   0

+logbx0062 logb  1.0               ->   0

+logbx0063 logb  1.000000000000000 ->   0

+logbx0064 logb  1.000000000000000000 ->   0

+

+-- notable cases -- exact powers of 10

+logbx1100 logb 1             -> 0

+logbx1101 logb 10            -> 1

+logbx1102 logb 100           -> 2

+logbx1103 logb 1000          -> 3

+logbx1104 logb 10000         -> 4

+logbx1105 logb 100000        -> 5

+logbx1106 logb 1000000       -> 6

+logbx1107 logb 10000000      -> 7

+logbx1108 logb 100000000     -> 8

+logbx1109 logb 1000000000    -> 9

+logbx1110 logb 10000000000   -> 10

+logbx1111 logb 100000000000  -> 11

+logbx1112 logb 1000000000000 -> 12

+logbx1113 logb 0.00000000001 -> -11

+logbx1114 logb 0.0000000001 -> -10

+logbx1115 logb 0.000000001 -> -9

+logbx1116 logb 0.00000001 -> -8

+logbx1117 logb 0.0000001 -> -7

+logbx1118 logb 0.000001 -> -6

+logbx1119 logb 0.00001 -> -5

+logbx1120 logb 0.0001 -> -4

+logbx1121 logb 0.001 -> -3

+logbx1122 logb 0.01 -> -2

+logbx1123 logb 0.1 -> -1

+logbx1124 logb 1E-99  -> -99

+logbx1125 logb 1E-100 -> -100

+logbx1126 logb 1E-383 -> -383

+logbx1127 logb 1E-999 -> -999

+

+-- suggestions from Ilan Nehama

+logbx1400 logb 10E-3    -> -2

+logbx1401 logb 10E-2    -> -1

+logbx1402 logb 100E-2   ->  0

+logbx1403 logb 1000E-2  ->  1

+logbx1404 logb 10000E-2 ->  2

+logbx1405 logb 10E-1    ->  0

+logbx1406 logb 100E-1   ->  1

+logbx1407 logb 1000E-1  ->  2

+logbx1408 logb 10000E-1 ->  3

+logbx1409 logb 10E0     ->  1

+logbx1410 logb 100E0    ->  2

+logbx1411 logb 1000E0   ->  3

+logbx1412 logb 10000E0  ->  4

+logbx1413 logb 10E1     ->  2

+logbx1414 logb 100E1    ->  3

+logbx1415 logb 1000E1   ->  4

+logbx1416 logb 10000E1  ->  5

+logbx1417 logb 10E2     ->  3

+logbx1418 logb 100E2    ->  4

+logbx1419 logb 1000E2   ->  5

+logbx1420 logb 10000E2  ->  6

+

+-- special values

+logbx820  logb   Infinity ->   Infinity

+logbx821  logb  -Infinity ->   Infinity

+logbx822  logb   0        ->  -Infinity Division_by_zero

+logbx823  logb   NaN      ->   NaN

+logbx824  logb   sNaN     ->   NaN     Invalid_operation

+-- propagating NaNs

+logbx825  logb   sNaN123  ->   NaN123  Invalid_operation

+logbx826  logb   -sNaN321 ->  -NaN321  Invalid_operation

+logbx827  logb   NaN456   ->   NaN456

+logbx828  logb   -NaN654  ->  -NaN654

+logbx829  logb   NaN1     ->   NaN1

+

+-- Null test

+logbx900  logb #   -> NaN Invalid_operation

+

+

diff --git a/Lib/test/decimaltestdata/max.decTest b/Lib/test/decimaltestdata/max.decTest
index 9798ae2..d7a6a94 100644
--- a/Lib/test/decimaltestdata/max.decTest
+++ b/Lib/test/decimaltestdata/max.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- max.decTest -- decimal maximum                                     --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- we assume that base comparison is tested in compare.decTest, so
 -- these mainly cover special cases and rounding
@@ -331,6 +331,33 @@
 maxx466 max -1000  -1E+3    -> -1000
 maxx467 max -1E+3  -1000    -> -1000
 
+-- rounding (results treated as though plus)
+maxexponent: 999999999
+minexponent: -999999999
+precision: 3
+
+maxx470 max  1      .5     ->  1
+maxx471 max  10     5      ->  10
+maxx472 max  100    50     ->  100
+maxx473 max  1000   500    ->  1.00E+3 Rounded
+maxx474 max  10000  5000   ->  1.00E+4 Rounded
+maxx475 max  6      .5     ->  6
+maxx476 max  66     5      ->  66
+maxx477 max  666    50     ->  666
+maxx478 max  6666   500    ->  6.67E+3 Rounded Inexact
+maxx479 max  66666  5000   ->  6.67E+4 Rounded Inexact
+maxx480 max  33333  5000   ->  3.33E+4 Rounded Inexact
+maxx481 max  .5     1      ->  1
+maxx482 max  .5     10     ->  10
+maxx483 max  .5     100    ->  100
+maxx484 max  .5     1000   ->  1.00E+3 Rounded
+maxx485 max  .5     10000  ->  1.00E+4 Rounded
+maxx486 max  .5     6      ->  6
+maxx487 max  .5     66     ->  66
+maxx488 max  .5     666    ->  666
+maxx489 max  .5     6666   ->  6.67E+3 Rounded Inexact
+maxx490 max  .5     66666  ->  6.67E+4 Rounded Inexact
+maxx491 max  .5     33333  ->  3.33E+4 Rounded Inexact
 
 -- overflow tests
 maxexponent: 999999999
@@ -348,13 +375,13 @@
 maxx512 max  0.10E-999       0  ->   1.0E-1000 Subnormal
 maxx513 max  0.100E-999      0  ->   1.0E-1000 Subnormal Rounded
 maxx514 max  0.01E-999       0  ->   1E-1001   Subnormal
--- next is rounded to Emin
+-- next is rounded to Nmin
 maxx515 max  0.999E-999      0  ->   1.00E-999 Inexact Rounded Subnormal Underflow
 maxx516 max  0.099E-999      0  ->   1.0E-1000 Inexact Rounded Subnormal Underflow
 maxx517 max  0.009E-999      0  ->   1E-1001   Inexact Rounded Subnormal Underflow
-maxx518 max  0.001E-999      0  ->   0E-1001   Inexact Rounded Subnormal Underflow
-maxx519 max  0.0009E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow
-maxx520 max  0.0001E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow
+maxx518 max  0.001E-999      0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+maxx519 max  0.0009E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+maxx520 max  0.0001E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 maxx530 max -1.00E-999       0  ->   0
 maxx531 max -0.1E-999        0  ->   0
@@ -368,6 +395,27 @@
 maxx539 max -0.0009E-999     0  ->   0
 maxx540 max -0.0001E-999     0  ->   0
 
+-- misalignment traps for little-endian
+precision: 9
+maxx551 max      1.0       0.1  -> 1.0
+maxx552 max      0.1       1.0  -> 1.0
+maxx553 max     10.0       0.1  -> 10.0
+maxx554 max      0.1      10.0  -> 10.0
+maxx555 max      100       1.0  -> 100
+maxx556 max      1.0       100  -> 100
+maxx557 max     1000      10.0  -> 1000
+maxx558 max     10.0      1000  -> 1000
+maxx559 max    10000     100.0  -> 10000
+maxx560 max    100.0     10000  -> 10000
+maxx661 max   100000    1000.0  -> 100000
+maxx662 max   1000.0    100000  -> 100000
+maxx663 max  1000000   10000.0  -> 1000000
+maxx664 max  10000.0   1000000  -> 1000000
+
+-- payload decapitate
+precision: 5
+maxx670 max      11 -sNaN12345678901 -> -NaN78901  Invalid_operation
+
 -- Null tests
 maxx900 max 10  #  -> NaN Invalid_operation
 maxx901 max  # 10  -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/maxmag.decTest b/Lib/test/decimaltestdata/maxmag.decTest
new file mode 100644
index 0000000..0129766
--- /dev/null
+++ b/Lib/test/decimaltestdata/maxmag.decTest
@@ -0,0 +1,404 @@
+------------------------------------------------------------------------

+-- maxmag.decTest -- decimal maximum by magnitude                     --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+-- sanity checks

+mxgx001 maxmag  -2  -2  -> -2

+mxgx002 maxmag  -2  -1  -> -2

+mxgx003 maxmag  -2   0  -> -2

+mxgx004 maxmag  -2   1  -> -2

+mxgx005 maxmag  -2   2  ->  2

+mxgx006 maxmag  -1  -2  -> -2

+mxgx007 maxmag  -1  -1  -> -1

+mxgx008 maxmag  -1   0  -> -1

+mxgx009 maxmag  -1   1  ->  1

+mxgx010 maxmag  -1   2  ->  2

+mxgx011 maxmag   0  -2  -> -2

+mxgx012 maxmag   0  -1  -> -1

+mxgx013 maxmag   0   0  ->  0

+mxgx014 maxmag   0   1  ->  1

+mxgx015 maxmag   0   2  ->  2

+mxgx016 maxmag   1  -2  -> -2

+mxgx017 maxmag   1  -1  ->  1

+mxgx018 maxmag   1   0  ->  1

+mxgx019 maxmag   1   1  ->  1

+mxgx020 maxmag   1   2  ->  2

+mxgx021 maxmag   2  -2  ->  2

+mxgx022 maxmag   2  -1  ->  2

+mxgx023 maxmag   2   0  ->  2

+mxgx025 maxmag   2   1  ->  2

+mxgx026 maxmag   2   2  ->  2

+

+-- extended zeros

+mxgx030 maxmag   0     0   ->  0

+mxgx031 maxmag   0    -0   ->  0

+mxgx032 maxmag   0    -0.0 ->  0

+mxgx033 maxmag   0     0.0 ->  0

+mxgx034 maxmag  -0     0   ->  0    -- note: -0 = 0, but 0 chosen

+mxgx035 maxmag  -0    -0   -> -0

+mxgx036 maxmag  -0    -0.0 -> -0.0

+mxgx037 maxmag  -0     0.0 ->  0.0

+mxgx038 maxmag   0.0   0   ->  0

+mxgx039 maxmag   0.0  -0   ->  0.0

+mxgx040 maxmag   0.0  -0.0 ->  0.0

+mxgx041 maxmag   0.0   0.0 ->  0.0

+mxgx042 maxmag  -0.0   0   ->  0

+mxgx043 maxmag  -0.0  -0   -> -0.0

+mxgx044 maxmag  -0.0  -0.0 -> -0.0

+mxgx045 maxmag  -0.0   0.0 ->  0.0

+

+mxgx050 maxmag  -0E1   0E1 ->  0E+1

+mxgx051 maxmag  -0E2   0E2 ->  0E+2

+mxgx052 maxmag  -0E2   0E1 ->  0E+1

+mxgx053 maxmag  -0E1   0E2 ->  0E+2

+mxgx054 maxmag   0E1  -0E1 ->  0E+1

+mxgx055 maxmag   0E2  -0E2 ->  0E+2

+mxgx056 maxmag   0E2  -0E1 ->  0E+2

+mxgx057 maxmag   0E1  -0E2 ->  0E+1

+

+mxgx058 maxmag   0E1   0E1 ->  0E+1

+mxgx059 maxmag   0E2   0E2 ->  0E+2

+mxgx060 maxmag   0E2   0E1 ->  0E+2

+mxgx061 maxmag   0E1   0E2 ->  0E+2

+mxgx062 maxmag  -0E1  -0E1 -> -0E+1

+mxgx063 maxmag  -0E2  -0E2 -> -0E+2

+mxgx064 maxmag  -0E2  -0E1 -> -0E+1

+mxgx065 maxmag  -0E1  -0E2 -> -0E+1

+

+-- Specials

+precision: 9

+mxgx090 maxmag  Inf  -Inf   ->  Infinity

+mxgx091 maxmag  Inf  -1000  ->  Infinity

+mxgx092 maxmag  Inf  -1     ->  Infinity

+mxgx093 maxmag  Inf  -0     ->  Infinity

+mxgx094 maxmag  Inf   0     ->  Infinity

+mxgx095 maxmag  Inf   1     ->  Infinity

+mxgx096 maxmag  Inf   1000  ->  Infinity

+mxgx097 maxmag  Inf   Inf   ->  Infinity

+mxgx098 maxmag -1000  Inf   ->  Infinity

+mxgx099 maxmag -Inf   Inf   ->  Infinity

+mxgx100 maxmag -1     Inf   ->  Infinity

+mxgx101 maxmag -0     Inf   ->  Infinity

+mxgx102 maxmag  0     Inf   ->  Infinity

+mxgx103 maxmag  1     Inf   ->  Infinity

+mxgx104 maxmag  1000  Inf   ->  Infinity

+mxgx105 maxmag  Inf   Inf   ->  Infinity

+

+mxgx120 maxmag -Inf  -Inf   -> -Infinity

+mxgx121 maxmag -Inf  -1000  -> -Infinity

+mxgx122 maxmag -Inf  -1     -> -Infinity

+mxgx123 maxmag -Inf  -0     -> -Infinity

+mxgx124 maxmag -Inf   0     -> -Infinity

+mxgx125 maxmag -Inf   1     -> -Infinity

+mxgx126 maxmag -Inf   1000  -> -Infinity

+mxgx127 maxmag -Inf   Inf   ->  Infinity

+mxgx128 maxmag -Inf  -Inf   -> -Infinity

+mxgx129 maxmag -1000 -Inf   -> -Infinity

+mxgx130 maxmag -1    -Inf   -> -Infinity

+mxgx131 maxmag -0    -Inf   -> -Infinity

+mxgx132 maxmag  0    -Inf   -> -Infinity

+mxgx133 maxmag  1    -Inf   -> -Infinity

+mxgx134 maxmag  1000 -Inf   -> -Infinity

+mxgx135 maxmag  Inf  -Inf   ->  Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+mxgx141 maxmag  NaN -Inf    -> -Infinity

+mxgx142 maxmag  NaN -1000   -> -1000

+mxgx143 maxmag  NaN -1      -> -1

+mxgx144 maxmag  NaN -0      -> -0

+mxgx145 maxmag  NaN  0      ->  0

+mxgx146 maxmag  NaN  1      ->  1

+mxgx147 maxmag  NaN  1000   ->  1000

+mxgx148 maxmag  NaN  Inf    ->  Infinity

+mxgx149 maxmag  NaN  NaN    ->  NaN

+mxgx150 maxmag -Inf  NaN    -> -Infinity

+mxgx151 maxmag -1000 NaN    -> -1000

+mxgx152 maxmag -1    NaN    -> -1

+mxgx153 maxmag -0    NaN    -> -0

+mxgx154 maxmag  0    NaN    ->  0

+mxgx155 maxmag  1    NaN    ->  1

+mxgx156 maxmag  1000 NaN    ->  1000

+mxgx157 maxmag  Inf  NaN    ->  Infinity

+

+mxgx161 maxmag  sNaN -Inf   ->  NaN  Invalid_operation

+mxgx162 maxmag  sNaN -1000  ->  NaN  Invalid_operation

+mxgx163 maxmag  sNaN -1     ->  NaN  Invalid_operation

+mxgx164 maxmag  sNaN -0     ->  NaN  Invalid_operation

+mxgx165 maxmag  sNaN  0     ->  NaN  Invalid_operation

+mxgx166 maxmag  sNaN  1     ->  NaN  Invalid_operation

+mxgx167 maxmag  sNaN  1000  ->  NaN  Invalid_operation

+mxgx168 maxmag  sNaN  NaN   ->  NaN  Invalid_operation

+mxgx169 maxmag  sNaN sNaN   ->  NaN  Invalid_operation

+mxgx170 maxmag  NaN  sNaN   ->  NaN  Invalid_operation

+mxgx171 maxmag -Inf  sNaN   ->  NaN  Invalid_operation

+mxgx172 maxmag -1000 sNaN   ->  NaN  Invalid_operation

+mxgx173 maxmag -1    sNaN   ->  NaN  Invalid_operation

+mxgx174 maxmag -0    sNaN   ->  NaN  Invalid_operation

+mxgx175 maxmag  0    sNaN   ->  NaN  Invalid_operation

+mxgx176 maxmag  1    sNaN   ->  NaN  Invalid_operation

+mxgx177 maxmag  1000 sNaN   ->  NaN  Invalid_operation

+mxgx178 maxmag  Inf  sNaN   ->  NaN  Invalid_operation

+mxgx179 maxmag  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+mxgx181 maxmag  NaN9  -Inf   -> -Infinity

+mxgx182 maxmag  NaN8     9   ->  9

+mxgx183 maxmag -NaN7   Inf   ->  Infinity

+

+mxgx184 maxmag -NaN1   NaN11 -> -NaN1

+mxgx185 maxmag  NaN2   NaN12 ->  NaN2

+mxgx186 maxmag -NaN13 -NaN7  -> -NaN13

+mxgx187 maxmag  NaN14 -NaN5  ->  NaN14

+

+mxgx188 maxmag -Inf    NaN4  -> -Infinity

+mxgx189 maxmag -9     -NaN3  -> -9

+mxgx190 maxmag  Inf    NaN2  ->  Infinity

+

+mxgx191 maxmag  sNaN99 -Inf    ->  NaN99 Invalid_operation

+mxgx192 maxmag  sNaN98 -1      ->  NaN98 Invalid_operation

+mxgx193 maxmag -sNaN97  NaN    -> -NaN97 Invalid_operation

+mxgx194 maxmag  sNaN96 sNaN94  ->  NaN96 Invalid_operation

+mxgx195 maxmag  NaN95  sNaN93  ->  NaN93 Invalid_operation

+mxgx196 maxmag -Inf    sNaN92  ->  NaN92 Invalid_operation

+mxgx197 maxmag  0      sNaN91  ->  NaN91 Invalid_operation

+mxgx198 maxmag  Inf   -sNaN90  -> -NaN90 Invalid_operation

+mxgx199 maxmag  NaN    sNaN89  ->  NaN89 Invalid_operation

+

+-- rounding checks

+maxexponent: 999

+minexponent: -999

+precision: 9

+mxgx201 maxmag 12345678000 1  -> 1.23456780E+10 Rounded

+mxgx202 maxmag 1 12345678000  -> 1.23456780E+10 Rounded

+mxgx203 maxmag 1234567800  1  -> 1.23456780E+9 Rounded

+mxgx204 maxmag 1 1234567800   -> 1.23456780E+9 Rounded

+mxgx205 maxmag 1234567890  1  -> 1.23456789E+9 Rounded

+mxgx206 maxmag 1 1234567890   -> 1.23456789E+9 Rounded

+mxgx207 maxmag 1234567891  1  -> 1.23456789E+9 Inexact Rounded

+mxgx208 maxmag 1 1234567891   -> 1.23456789E+9 Inexact Rounded

+mxgx209 maxmag 12345678901 1  -> 1.23456789E+10 Inexact Rounded

+mxgx210 maxmag 1 12345678901  -> 1.23456789E+10 Inexact Rounded

+mxgx211 maxmag 1234567896  1  -> 1.23456790E+9 Inexact Rounded

+mxgx212 maxmag 1 1234567896   -> 1.23456790E+9 Inexact Rounded

+mxgx213 maxmag -1234567891  1 -> -1.23456789E+9   Inexact Rounded

+mxgx214 maxmag 1 -1234567891  -> -1.23456789E+9   Inexact Rounded

+mxgx215 maxmag -12345678901 1 -> -1.23456789E+10  Inexact Rounded

+mxgx216 maxmag 1 -12345678901 -> -1.23456789E+10  Inexact Rounded

+mxgx217 maxmag -1234567896  1 -> -1.23456790E+9   Inexact Rounded

+mxgx218 maxmag 1 -1234567896  -> -1.23456790E+9   Inexact Rounded

+

+precision: 15

+mxgx221 maxmag 12345678000 1  -> 12345678000

+mxgx222 maxmag 1 12345678000  -> 12345678000

+mxgx223 maxmag 1234567800  1  -> 1234567800

+mxgx224 maxmag 1 1234567800   -> 1234567800

+mxgx225 maxmag 1234567890  1  -> 1234567890

+mxgx226 maxmag 1 1234567890   -> 1234567890

+mxgx227 maxmag 1234567891  1  -> 1234567891

+mxgx228 maxmag 1 1234567891   -> 1234567891

+mxgx229 maxmag 12345678901 1  -> 12345678901

+mxgx230 maxmag 1 12345678901  -> 12345678901

+mxgx231 maxmag 1234567896  1  -> 1234567896

+mxgx232 maxmag 1 1234567896   -> 1234567896

+mxgx233 maxmag -1234567891  1 -> -1234567891

+mxgx234 maxmag 1 -1234567891  -> -1234567891

+mxgx235 maxmag -12345678901 1 -> -12345678901

+mxgx236 maxmag 1 -12345678901 -> -12345678901

+mxgx237 maxmag -1234567896  1 -> -1234567896

+mxgx238 maxmag 1 -1234567896  -> -1234567896

+

+-- from examples

+mxgx280 maxmag '3'   '2'  ->  '3'

+mxgx281 maxmag '-10' '3'  ->  '-10'

+mxgx282 maxmag '1.0' '1'  ->  '1'

+mxgx283 maxmag '1' '1.0'  ->  '1'

+mxgx284 maxmag '7' 'NaN'  ->  '7'

+

+-- overflow and underflow tests ...

+maxExponent: 999999999

+minexponent: -999999999

+mxgx330 maxmag +1.23456789012345E-0 9E+999999999 ->  9E+999999999

+mxgx331 maxmag 9E+999999999 +1.23456789012345E-0 ->  9E+999999999

+mxgx332 maxmag +0.100 9E-999999999               ->  0.100

+mxgx333 maxmag 9E-999999999 +0.100               ->  0.100

+mxgx335 maxmag -1.23456789012345E-0 9E+999999999 ->  9E+999999999

+mxgx336 maxmag 9E+999999999 -1.23456789012345E-0 ->  9E+999999999

+mxgx337 maxmag -0.100 9E-999999999               ->  -0.100

+mxgx338 maxmag 9E-999999999 -0.100               ->  -0.100

+

+mxgx339 maxmag 1e-599999999 1e-400000001   ->  1E-400000001

+mxgx340 maxmag 1e-599999999 1e-400000000   ->  1E-400000000

+mxgx341 maxmag 1e-600000000 1e-400000000   ->  1E-400000000

+mxgx342 maxmag 9e-999999998 0.01           ->  0.01

+mxgx343 maxmag 9e-999999998 0.1            ->  0.1

+mxgx344 maxmag 0.01 9e-999999998           ->  0.01

+mxgx345 maxmag 1e599999999 1e400000001     ->  1E+599999999

+mxgx346 maxmag 1e599999999 1e400000000     ->  1E+599999999

+mxgx347 maxmag 1e600000000 1e400000000     ->  1E+600000000

+mxgx348 maxmag 9e999999998 100             ->  9E+999999998

+mxgx349 maxmag 9e999999998 10              ->  9E+999999998

+mxgx350 maxmag 100  9e999999998            ->  9E+999999998

+-- signs

+mxgx351 maxmag  1e+777777777  1e+411111111 ->  1E+777777777

+mxgx352 maxmag  1e+777777777 -1e+411111111 ->  1E+777777777

+mxgx353 maxmag -1e+777777777  1e+411111111 -> -1E+777777777

+mxgx354 maxmag -1e+777777777 -1e+411111111 -> -1E+777777777

+mxgx355 maxmag  1e-777777777  1e-411111111 ->  1E-411111111

+mxgx356 maxmag  1e-777777777 -1e-411111111 -> -1E-411111111

+mxgx357 maxmag -1e-777777777  1e-411111111 ->  1E-411111111

+mxgx358 maxmag -1e-777777777 -1e-411111111 -> -1E-411111111

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+mxgx401 maxmag  Inf    1.1     ->  Infinity

+mxgx402 maxmag  1.1    1       ->  1.1

+mxgx403 maxmag  1      1.0     ->  1

+mxgx404 maxmag  1.0    0.1     ->  1.0

+mxgx405 maxmag  0.1    0.10    ->  0.1

+mxgx406 maxmag  0.10   0.100   ->  0.10

+mxgx407 maxmag  0.10   0       ->  0.10

+mxgx408 maxmag  0      0.0     ->  0

+mxgx409 maxmag  0.0   -0       ->  0.0

+mxgx410 maxmag  0.0   -0.0     ->  0.0

+mxgx411 maxmag  0.00  -0.0     ->  0.00

+mxgx412 maxmag  0.0   -0.00    ->  0.0

+mxgx413 maxmag  0     -0.0     ->  0

+mxgx414 maxmag  0     -0       ->  0

+mxgx415 maxmag -0.0   -0       -> -0.0

+mxgx416 maxmag -0     -0.100   -> -0.100

+mxgx417 maxmag -0.100 -0.10    -> -0.100

+mxgx418 maxmag -0.10  -0.1     -> -0.10

+mxgx419 maxmag -0.1   -1.0     -> -1.0

+mxgx420 maxmag -1.0   -1       -> -1.0

+mxgx421 maxmag -1     -1.1     -> -1.1

+mxgx423 maxmag -1.1   -Inf     -> -Infinity

+-- same with operands reversed

+mxgx431 maxmag  1.1    Inf     ->  Infinity

+mxgx432 maxmag  1      1.1     ->  1.1

+mxgx433 maxmag  1.0    1       ->  1

+mxgx434 maxmag  0.1    1.0     ->  1.0

+mxgx435 maxmag  0.10   0.1     ->  0.1

+mxgx436 maxmag  0.100  0.10    ->  0.10

+mxgx437 maxmag  0      0.10    ->  0.10

+mxgx438 maxmag  0.0    0       ->  0

+mxgx439 maxmag -0      0.0     ->  0.0

+mxgx440 maxmag -0.0    0.0     ->  0.0

+mxgx441 maxmag -0.0    0.00    ->  0.00

+mxgx442 maxmag -0.00   0.0     ->  0.0

+mxgx443 maxmag -0.0    0       ->  0

+mxgx444 maxmag -0      0       ->  0

+mxgx445 maxmag -0     -0.0     -> -0.0

+mxgx446 maxmag -0.100 -0       -> -0.100

+mxgx447 maxmag -0.10  -0.100   -> -0.100

+mxgx448 maxmag -0.1   -0.10    -> -0.10

+mxgx449 maxmag -1.0   -0.1     -> -1.0

+mxgx450 maxmag -1     -1.0     -> -1.0

+mxgx451 maxmag -1.1   -1       -> -1.1

+mxgx453 maxmag -Inf   -1.1     -> -Infinity

+-- largies

+mxgx460 maxmag  1000   1E+3    ->  1E+3

+mxgx461 maxmag  1E+3   1000    ->  1E+3

+mxgx462 maxmag  1000  -1E+3    ->  1000

+mxgx463 maxmag  1E+3  -1000    ->  1E+3

+mxgx464 maxmag -1000   1E+3    ->  1E+3

+mxgx465 maxmag -1E+3   1000    ->  1000

+mxgx466 maxmag -1000  -1E+3    -> -1000

+mxgx467 maxmag -1E+3  -1000    -> -1000

+

+-- rounding (results treated as though plus)

+maxexponent: 999999999

+minexponent: -999999999

+precision: 3

+

+mxgx470 maxmag  1      .5     ->  1

+mxgx471 maxmag  10     5      ->  10

+mxgx472 maxmag  100    50     ->  100

+mxgx473 maxmag  1000   500    ->  1.00E+3 Rounded

+mxgx474 maxmag  10000  5000   ->  1.00E+4 Rounded

+mxgx475 maxmag  6      .5     ->  6

+mxgx476 maxmag  66     5      ->  66

+mxgx477 maxmag  666    50     ->  666

+mxgx478 maxmag  6666   500    ->  6.67E+3 Rounded Inexact

+mxgx479 maxmag  66666  5000   ->  6.67E+4 Rounded Inexact

+mxgx480 maxmag  33333  5000   ->  3.33E+4 Rounded Inexact

+mxgx481 maxmag  .5     1      ->  1

+mxgx482 maxmag  .5     10     ->  10

+mxgx483 maxmag  .5     100    ->  100

+mxgx484 maxmag  .5     1000   ->  1.00E+3 Rounded

+mxgx485 maxmag  .5     10000  ->  1.00E+4 Rounded

+mxgx486 maxmag  .5     6      ->  6

+mxgx487 maxmag  .5     66     ->  66

+mxgx488 maxmag  .5     666    ->  666

+mxgx489 maxmag  .5     6666   ->  6.67E+3 Rounded Inexact

+mxgx490 maxmag  .5     66666  ->  6.67E+4 Rounded Inexact

+mxgx491 maxmag  .5     33333  ->  3.33E+4 Rounded Inexact

+

+-- overflow tests

+maxexponent: 999999999

+minexponent: -999999999

+precision: 3

+mxgx500 maxmag 9.999E+999999999  0 ->  Infinity Inexact Overflow Rounded

+mxgx501 maxmag -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded

+

+-- subnormals and underflow

+precision: 3

+maxexponent: 999

+minexponent: -999

+mxgx510 maxmag  1.00E-999       0  ->   1.00E-999

+mxgx511 maxmag  0.1E-999        0  ->   1E-1000   Subnormal

+mxgx512 maxmag  0.10E-999       0  ->   1.0E-1000 Subnormal

+mxgx513 maxmag  0.100E-999      0  ->   1.0E-1000 Subnormal Rounded

+mxgx514 maxmag  0.01E-999       0  ->   1E-1001   Subnormal

+-- next is rounded to Nmin

+mxgx515 maxmag  0.999E-999      0  ->   1.00E-999 Inexact Rounded Subnormal Underflow

+mxgx516 maxmag  0.099E-999      0  ->   1.0E-1000 Inexact Rounded Subnormal Underflow

+mxgx517 maxmag  0.009E-999      0  ->   1E-1001   Inexact Rounded Subnormal Underflow

+mxgx518 maxmag  0.001E-999      0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped

+mxgx519 maxmag  0.0009E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped

+mxgx520 maxmag  0.0001E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped

+

+mxgx530 maxmag -1.00E-999       0  ->  -1.00E-999

+mxgx531 maxmag -0.1E-999        0  ->  -1E-1000   Subnormal

+mxgx532 maxmag -0.10E-999       0  ->  -1.0E-1000 Subnormal

+mxgx533 maxmag -0.100E-999      0  ->  -1.0E-1000 Subnormal Rounded

+mxgx534 maxmag -0.01E-999       0  ->  -1E-1001   Subnormal

+-- next is rounded to -Nmin

+mxgx535 maxmag -0.999E-999      0  ->  -1.00E-999 Inexact Rounded Subnormal Underflow

+mxgx536 maxmag -0.099E-999      0  ->  -1.0E-1000 Inexact Rounded Subnormal Underflow

+mxgx537 maxmag -0.009E-999      0  ->  -1E-1001   Inexact Rounded Subnormal Underflow

+mxgx538 maxmag -0.001E-999      0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped

+mxgx539 maxmag -0.0009E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped

+mxgx540 maxmag -0.0001E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped

+

+-- Null tests

+mxgx900 maxmag 10  #  -> NaN Invalid_operation

+mxgx901 maxmag  # 10  -> NaN Invalid_operation

+

+

+

diff --git a/Lib/test/decimaltestdata/min.decTest b/Lib/test/decimaltestdata/min.decTest
index 6046401..b695079 100644
--- a/Lib/test/decimaltestdata/min.decTest
+++ b/Lib/test/decimaltestdata/min.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- min.decTest -- decimal minimum                                     --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- we assume that base comparison is tested in compare.decTest, so
 -- these mainly cover special cases and rounding
@@ -320,6 +320,34 @@
 mnmx466 min -1000  -1E+3    -> -1E+3
 mnmx467 min -1E+3  -1000    -> -1E+3
 
+-- rounding (results treated as though plus)
+maxexponent: 999999999
+minexponent: -999999999
+precision: 3
+
+mnmx470 min  1      5      ->  1
+mnmx471 min  10     50     ->  10
+mnmx472 min  100    500    ->  100
+mnmx473 min  1000   5000   ->  1.00E+3 Rounded
+mnmx474 min  10000  50000  ->  1.00E+4 Rounded
+mnmx475 min  6      50     ->  6
+mnmx476 min  66     500    ->  66
+mnmx477 min  666    5000   ->  666
+mnmx478 min  6666   50000  ->  6.67E+3 Rounded Inexact
+mnmx479 min  66666  500000 ->  6.67E+4 Rounded Inexact
+mnmx480 min  33333  500000 ->  3.33E+4 Rounded Inexact
+mnmx481 min  75401  1      ->  1
+mnmx482 min  75402  10     ->  10
+mnmx483 min  75403  100    ->  100
+mnmx484 min  75404  1000   ->  1.00E+3 Rounded
+mnmx485 min  75405  10000  ->  1.00E+4 Rounded
+mnmx486 min  75406  6      ->  6
+mnmx487 min  75407  66     ->  66
+mnmx488 min  75408  666    ->  666
+mnmx489 min  75409  6666   ->  6.67E+3 Rounded Inexact
+mnmx490 min  75410  66666  ->  6.67E+4 Rounded Inexact
+mnmx491 min  75411  33333  ->  3.33E+4 Rounded Inexact
+
 
 -- overflow tests
 maxexponent: 999999999
@@ -349,14 +377,30 @@
 mnmx532 min -0.10E-999       0  ->  -1.0E-1000 Subnormal
 mnmx533 min -0.100E-999      0  ->  -1.0E-1000 Subnormal Rounded
 mnmx534 min -0.01E-999       0  ->  -1E-1001   Subnormal
--- next is rounded to Emin
+-- next is rounded to Nmin
 mnmx535 min -0.999E-999      0  ->  -1.00E-999 Inexact Rounded Subnormal Underflow
 mnmx536 min -0.099E-999      0  ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
 mnmx537 min -0.009E-999      0  ->  -1E-1001   Inexact Rounded Subnormal Underflow
-mnmx538 min -0.001E-999      0  ->  -0E-1001   Inexact Rounded Subnormal Underflow
-mnmx539 min -0.0009E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow
-mnmx540 min -0.0001E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow
+mnmx538 min -0.001E-999      0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+mnmx539 min -0.0009E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+mnmx540 min -0.0001E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
+-- misalignment traps for little-endian
+precision: 9
+mnmx551 min      1.0       0.1  -> 0.1
+mnmx552 min      0.1       1.0  -> 0.1
+mnmx553 min     10.0       0.1  -> 0.1
+mnmx554 min      0.1      10.0  -> 0.1
+mnmx555 min      100       1.0  -> 1.0
+mnmx556 min      1.0       100  -> 1.0
+mnmx557 min     1000      10.0  -> 10.0
+mnmx558 min     10.0      1000  -> 10.0
+mnmx559 min    10000     100.0  -> 100.0
+mnmx560 min    100.0     10000  -> 100.0
+mnmx561 min   100000    1000.0  -> 1000.0
+mnmx562 min   1000.0    100000  -> 1000.0
+mnmx563 min  1000000   10000.0  -> 10000.0
+mnmx564 min  10000.0   1000000  -> 10000.0
 
 -- Null tests
 mnm900 min 10  # -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/minmag.decTest b/Lib/test/decimaltestdata/minmag.decTest
new file mode 100644
index 0000000..547ccff
--- /dev/null
+++ b/Lib/test/decimaltestdata/minmag.decTest
@@ -0,0 +1,390 @@
+------------------------------------------------------------------------

+-- minmag.decTest -- decimal minimum by magnitude                     --

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

+

+-- we assume that base comparison is tested in compare.decTest, so

+-- these mainly cover special cases and rounding

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+-- sanity checks

+mngx001 minmag  -2  -2  -> -2

+mngx002 minmag  -2  -1  -> -1

+mngx003 minmag  -2   0  ->  0

+mngx004 minmag  -2   1  ->  1

+mngx005 minmag  -2   2  -> -2

+mngx006 minmag  -1  -2  -> -1

+mngx007 minmag  -1  -1  -> -1

+mngx008 minmag  -1   0  ->  0

+mngx009 minmag  -1   1  -> -1

+mngx010 minmag  -1   2  -> -1

+mngx011 minmag   0  -2  ->  0

+mngx012 minmag   0  -1  ->  0

+mngx013 minmag   0   0  ->  0

+mngx014 minmag   0   1  ->  0

+mngx015 minmag   0   2  ->  0

+mngx016 minmag   1  -2  ->  1

+mngx017 minmag   1  -1  -> -1

+mngx018 minmag   1   0  ->  0

+mngx019 minmag   1   1  ->  1

+mngx020 minmag   1   2  ->  1

+mngx021 minmag   2  -2  -> -2

+mngx022 minmag   2  -1  -> -1

+mngx023 minmag   2   0  ->  0

+mngx025 minmag   2   1  ->  1

+mngx026 minmag   2   2  ->  2

+

+-- extended zeros

+mngx030 minmag   0     0   ->  0

+mngx031 minmag   0    -0   -> -0

+mngx032 minmag   0    -0.0 -> -0.0

+mngx033 minmag   0     0.0 ->  0.0

+mngx034 minmag  -0     0   -> -0

+mngx035 minmag  -0    -0   -> -0

+mngx036 minmag  -0    -0.0 -> -0

+mngx037 minmag  -0     0.0 -> -0

+mngx038 minmag   0.0   0   ->  0.0

+mngx039 minmag   0.0  -0   -> -0

+mngx040 minmag   0.0  -0.0 -> -0.0

+mngx041 minmag   0.0   0.0 ->  0.0

+mngx042 minmag  -0.0   0   -> -0.0

+mngx043 minmag  -0.0  -0   -> -0

+mngx044 minmag  -0.0  -0.0 -> -0.0

+mngx045 minmag  -0.0   0.0 -> -0.0

+

+mngx046 minmag   0E1  -0E1 -> -0E+1

+mngx047 minmag  -0E1   0E2 -> -0E+1

+mngx048 minmag   0E2   0E1 ->  0E+1

+mngx049 minmag   0E1   0E2 ->  0E+1

+mngx050 minmag  -0E3  -0E2 -> -0E+3

+mngx051 minmag  -0E2  -0E3 -> -0E+3

+

+-- Specials

+precision: 9

+mngx090 minmag  Inf  -Inf   -> -Infinity

+mngx091 minmag  Inf  -1000  -> -1000

+mngx092 minmag  Inf  -1     -> -1

+mngx093 minmag  Inf  -0     -> -0

+mngx094 minmag  Inf   0     ->  0

+mngx095 minmag  Inf   1     ->  1

+mngx096 minmag  Inf   1000  ->  1000

+mngx097 minmag  Inf   Inf   ->  Infinity

+mngx098 minmag -1000  Inf   -> -1000

+mngx099 minmag -Inf   Inf   -> -Infinity

+mngx100 minmag -1     Inf   -> -1

+mngx101 minmag -0     Inf   -> -0

+mngx102 minmag  0     Inf   ->  0

+mngx103 minmag  1     Inf   ->  1

+mngx104 minmag  1000  Inf   ->  1000

+mngx105 minmag  Inf   Inf   ->  Infinity

+

+mngx120 minmag -Inf  -Inf   -> -Infinity

+mngx121 minmag -Inf  -1000  -> -1000

+mngx122 minmag -Inf  -1     -> -1

+mngx123 minmag -Inf  -0     -> -0

+mngx124 minmag -Inf   0     ->  0

+mngx125 minmag -Inf   1     ->  1

+mngx126 minmag -Inf   1000  ->  1000

+mngx127 minmag -Inf   Inf   -> -Infinity

+mngx128 minmag -Inf  -Inf   -> -Infinity

+mngx129 minmag -1000 -Inf   -> -1000

+mngx130 minmag -1    -Inf   -> -1

+mngx131 minmag -0    -Inf   -> -0

+mngx132 minmag  0    -Inf   ->  0

+mngx133 minmag  1    -Inf   ->  1

+mngx134 minmag  1000 -Inf   ->  1000

+mngx135 minmag  Inf  -Inf   -> -Infinity

+

+-- 2004.08.02 754r chooses number over NaN in mixed cases

+mngx141 minmag  NaN -Inf    ->  -Infinity

+mngx142 minmag  NaN -1000   ->  -1000

+mngx143 minmag  NaN -1      ->  -1

+mngx144 minmag  NaN -0      ->  -0

+mngx145 minmag  NaN  0      ->  0

+mngx146 minmag  NaN  1      ->  1

+mngx147 minmag  NaN  1000   ->  1000

+mngx148 minmag  NaN  Inf    ->  Infinity

+mngx149 minmag  NaN  NaN    ->  NaN

+mngx150 minmag -Inf  NaN    -> -Infinity

+mngx151 minmag -1000 NaN    -> -1000

+mngx152 minmag -1   -NaN    -> -1

+mngx153 minmag -0    NaN    -> -0

+mngx154 minmag  0   -NaN    ->  0

+mngx155 minmag  1    NaN    ->  1

+mngx156 minmag  1000 NaN    ->  1000

+mngx157 minmag  Inf  NaN    ->  Infinity

+

+mngx161 minmag  sNaN -Inf   ->  NaN  Invalid_operation

+mngx162 minmag  sNaN -1000  ->  NaN  Invalid_operation

+mngx163 minmag  sNaN -1     ->  NaN  Invalid_operation

+mngx164 minmag  sNaN -0     ->  NaN  Invalid_operation

+mngx165 minmag -sNaN  0     -> -NaN  Invalid_operation

+mngx166 minmag -sNaN  1     -> -NaN  Invalid_operation

+mngx167 minmag  sNaN  1000  ->  NaN  Invalid_operation

+mngx168 minmag  sNaN  NaN   ->  NaN  Invalid_operation

+mngx169 minmag  sNaN sNaN   ->  NaN  Invalid_operation

+mngx170 minmag  NaN  sNaN   ->  NaN  Invalid_operation

+mngx171 minmag -Inf  sNaN   ->  NaN  Invalid_operation

+mngx172 minmag -1000 sNaN   ->  NaN  Invalid_operation

+mngx173 minmag -1    sNaN   ->  NaN  Invalid_operation

+mngx174 minmag -0    sNaN   ->  NaN  Invalid_operation

+mngx175 minmag  0    sNaN   ->  NaN  Invalid_operation

+mngx176 minmag  1    sNaN   ->  NaN  Invalid_operation

+mngx177 minmag  1000 sNaN   ->  NaN  Invalid_operation

+mngx178 minmag  Inf  sNaN   ->  NaN  Invalid_operation

+mngx179 minmag  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+mngx181 minmag  NaN9   -Inf   -> -Infinity

+mngx182 minmag -NaN8    9990  ->  9990

+mngx183 minmag  NaN71   Inf   ->  Infinity

+

+mngx184 minmag  NaN1    NaN54 ->  NaN1

+mngx185 minmag  NaN22  -NaN53 ->  NaN22

+mngx186 minmag -NaN3    NaN6  -> -NaN3

+mngx187 minmag -NaN44   NaN7  -> -NaN44

+

+mngx188 minmag -Inf     NaN41 -> -Infinity

+mngx189 minmag -9999   -NaN33 -> -9999

+mngx190 minmag  Inf     NaN2  ->  Infinity

+

+mngx191 minmag  sNaN99 -Inf    ->  NaN99 Invalid_operation

+mngx192 minmag  sNaN98 -11     ->  NaN98 Invalid_operation

+mngx193 minmag -sNaN97  NaN8   -> -NaN97 Invalid_operation

+mngx194 minmag  sNaN69 sNaN94  ->  NaN69 Invalid_operation

+mngx195 minmag  NaN95  sNaN93  ->  NaN93 Invalid_operation

+mngx196 minmag -Inf    sNaN92  ->  NaN92 Invalid_operation

+mngx197 minmag  088    sNaN91  ->  NaN91 Invalid_operation

+mngx198 minmag  Inf   -sNaN90  -> -NaN90 Invalid_operation

+mngx199 minmag  NaN    sNaN86  ->  NaN86 Invalid_operation

+

+-- rounding checks -- chosen is rounded, or not

+maxExponent: 999

+minexponent: -999

+precision: 9

+mngx201 minmag -12345678000 1  -> 1

+mngx202 minmag 1 -12345678000  -> 1

+mngx203 minmag -1234567800  1  -> 1

+mngx204 minmag 1 -1234567800   -> 1

+mngx205 minmag -1234567890  1  -> 1

+mngx206 minmag 1 -1234567890   -> 1

+mngx207 minmag -1234567891  1  -> 1

+mngx208 minmag 1 -1234567891   -> 1

+mngx209 minmag -12345678901 1  -> 1

+mngx210 minmag 1 -12345678901  -> 1

+mngx211 minmag -1234567896  1  -> 1

+mngx212 minmag 1 -1234567896   -> 1

+mngx213 minmag 1234567891  1   -> 1

+mngx214 minmag 1 1234567891    -> 1

+mngx215 minmag 12345678901 1   -> 1

+mngx216 minmag 1 12345678901   -> 1

+mngx217 minmag 1234567896  1   -> 1

+mngx218 minmag 1 1234567896    -> 1

+

+precision: 15

+mngx221 minmag -12345678000 1  -> 1

+mngx222 minmag 1 -12345678000  -> 1

+mngx223 minmag -1234567800  1  -> 1

+mngx224 minmag 1 -1234567800   -> 1

+mngx225 minmag -1234567890  1  -> 1

+mngx226 minmag 1 -1234567890   -> 1

+mngx227 minmag -1234567891  1  -> 1

+mngx228 minmag 1 -1234567891   -> 1

+mngx229 minmag -12345678901 1  -> 1

+mngx230 minmag 1 -12345678901  -> 1

+mngx231 minmag -1234567896  1  -> 1

+mngx232 minmag 1 -1234567896   -> 1

+mngx233 minmag 1234567891  1   -> 1

+mngx234 minmag 1 1234567891    -> 1

+mngx235 minmag 12345678901 1   -> 1

+mngx236 minmag 1 12345678901   -> 1

+mngx237 minmag 1234567896  1   -> 1

+mngx238 minmag 1 1234567896    -> 1

+

+-- from examples

+mngx280 minmag '3'   '2'  ->  '2'

+mngx281 minmag '-10' '3'  ->  '3'

+mngx282 minmag '1.0' '1'  ->  '1.0'

+mngx283 minmag '1' '1.0'  ->  '1.0'

+mngx284 minmag '7' 'NaN'  ->  '7'

+

+-- overflow and underflow tests .. subnormal results [inputs] now allowed

+maxExponent: 999999999

+minexponent: -999999999

+mngx330 minmag -1.23456789012345E-0 -9E+999999999 -> -1.23456789012345

+mngx331 minmag -9E+999999999 -1.23456789012345E-0 -> -1.23456789012345

+mngx332 minmag -0.100 -9E-999999999               -> -9E-999999999

+mngx333 minmag -9E-999999999 -0.100               -> -9E-999999999

+mngx335 minmag +1.23456789012345E-0 -9E+999999999 ->  1.23456789012345

+mngx336 minmag -9E+999999999 1.23456789012345E-0  ->  1.23456789012345

+mngx337 minmag +0.100 -9E-999999999               -> -9E-999999999

+mngx338 minmag -9E-999999999 0.100                -> -9E-999999999

+

+mngx339 minmag -1e-599999999 -1e-400000001   ->  -1E-599999999

+mngx340 minmag -1e-599999999 -1e-400000000   ->  -1E-599999999

+mngx341 minmag -1e-600000000 -1e-400000000   ->  -1E-600000000

+mngx342 minmag -9e-999999998 -0.01           ->  -9E-999999998

+mngx343 minmag -9e-999999998 -0.1            ->  -9E-999999998

+mngx344 minmag -0.01         -9e-999999998   ->  -9E-999999998

+mngx345 minmag -1e599999999  -1e400000001    ->  -1E+400000001

+mngx346 minmag -1e599999999  -1e400000000    ->  -1E+400000000

+mngx347 minmag -1e600000000  -1e400000000    ->  -1E+400000000

+mngx348 minmag -9e999999998  -100            ->  -100

+mngx349 minmag -9e999999998  -10             ->  -10

+mngx350 minmag -100          -9e999999998    ->  -100

+-- signs

+mngx351 minmag -1e+777777777 -1e+411111111 -> -1E+411111111

+mngx352 minmag -1e+777777777 +1e+411111111 ->  1E+411111111

+mngx353 minmag +1e+777777777 -1e+411111111 -> -1E+411111111

+mngx354 minmag +1e+777777777 +1e+411111111 ->  1E+411111111

+mngx355 minmag -1e-777777777 -1e-411111111 -> -1E-777777777

+mngx356 minmag -1e-777777777 +1e-411111111 -> -1E-777777777

+mngx357 minmag +1e-777777777 -1e-411111111 ->  1E-777777777

+mngx358 minmag +1e-777777777 +1e-411111111 ->  1E-777777777

+

+-- expanded list from min/max 754r purple prose

+-- [explicit tests for exponent ordering]

+mngx401 minmag  Inf    1.1     ->  1.1

+mngx402 minmag  1.1    1       ->  1

+mngx403 minmag  1      1.0     ->  1.0

+mngx404 minmag  1.0    0.1     ->  0.1

+mngx405 minmag  0.1    0.10    ->  0.10

+mngx406 minmag  0.10   0.100   ->  0.100

+mngx407 minmag  0.10   0       ->  0

+mngx408 minmag  0      0.0     ->  0.0

+mngx409 minmag  0.0   -0       -> -0

+mngx410 minmag  0.0   -0.0     -> -0.0

+mngx411 minmag  0.00  -0.0     -> -0.0

+mngx412 minmag  0.0   -0.00    -> -0.00

+mngx413 minmag  0     -0.0     -> -0.0

+mngx414 minmag  0     -0       -> -0

+mngx415 minmag -0.0   -0       -> -0

+mngx416 minmag -0     -0.100   -> -0

+mngx417 minmag -0.100 -0.10    -> -0.10

+mngx418 minmag -0.10  -0.1     -> -0.1

+mngx419 minmag -0.1   -1.0     -> -0.1

+mngx420 minmag -1.0   -1       -> -1

+mngx421 minmag -1     -1.1     -> -1

+mngx423 minmag -1.1   -Inf     -> -1.1

+-- same with operands reversed

+mngx431 minmag  1.1    Inf     ->  1.1

+mngx432 minmag  1      1.1     ->  1

+mngx433 minmag  1.0    1       ->  1.0

+mngx434 minmag  0.1    1.0     ->  0.1

+mngx435 minmag  0.10   0.1     ->  0.10

+mngx436 minmag  0.100  0.10    ->  0.100

+mngx437 minmag  0      0.10    ->  0

+mngx438 minmag  0.0    0       ->  0.0

+mngx439 minmag -0      0.0     -> -0

+mngx440 minmag -0.0    0.0     -> -0.0

+mngx441 minmag -0.0    0.00    -> -0.0

+mngx442 minmag -0.00   0.0     -> -0.00

+mngx443 minmag -0.0    0       -> -0.0

+mngx444 minmag -0      0       -> -0

+mngx445 minmag -0     -0.0     -> -0

+mngx446 minmag -0.100 -0       -> -0

+mngx447 minmag -0.10  -0.100   -> -0.10

+mngx448 minmag -0.1   -0.10    -> -0.1

+mngx449 minmag -1.0   -0.1     -> -0.1

+mngx450 minmag -1     -1.0     -> -1

+mngx451 minmag -1.1   -1       -> -1

+mngx453 minmag -Inf   -1.1     -> -1.1

+-- largies

+mngx460 minmag  1000   1E+3    ->  1000

+mngx461 minmag  1E+3   1000    ->  1000

+mngx462 minmag  1000  -1E+3    -> -1E+3

+mngx463 minmag  1E+3  -1000    -> -1000

+mngx464 minmag -1000   1E+3    -> -1000

+mngx465 minmag -1E+3   1000    -> -1E+3

+mngx466 minmag -1000  -1E+3    -> -1E+3

+mngx467 minmag -1E+3  -1000    -> -1E+3

+

+-- rounding (results treated as though plus)

+maxexponent: 999999999

+minexponent: -999999999

+precision: 3

+

+mngx470 minmag  1      5      ->  1

+mngx471 minmag  10     50     ->  10

+mngx472 minmag  100    500    ->  100

+mngx473 minmag  1000   5000   ->  1.00E+3 Rounded

+mngx474 minmag  10000  50000  ->  1.00E+4 Rounded

+mngx475 minmag  6      50     ->  6

+mngx476 minmag  66     500    ->  66

+mngx477 minmag  666    5000   ->  666

+mngx478 minmag  6666   50000  ->  6.67E+3 Rounded Inexact

+mngx479 minmag  66666  500000 ->  6.67E+4 Rounded Inexact

+mngx480 minmag  33333  500000 ->  3.33E+4 Rounded Inexact

+mngx481 minmag  75401  1      ->  1

+mngx482 minmag  75402  10     ->  10

+mngx483 minmag  75403  100    ->  100

+mngx484 minmag  75404  1000   ->  1.00E+3 Rounded

+mngx485 minmag  75405  10000  ->  1.00E+4 Rounded

+mngx486 minmag  75406  6      ->  6

+mngx487 minmag  75407  66     ->  66

+mngx488 minmag  75408  666    ->  666

+mngx489 minmag  75409  6666   ->  6.67E+3 Rounded Inexact

+mngx490 minmag  75410  66666  ->  6.67E+4 Rounded Inexact

+mngx491 minmag  75411  33333  ->  3.33E+4 Rounded Inexact

+

+

+-- overflow tests

+maxexponent: 999999999

+minexponent: -999999999

+precision: 3

+mngx500 minmag 9.999E+999999999  0 ->  0

+mngx501 minmag -9.999E+999999999 0 ->  0

+

+-- subnormals and underflow

+precision: 3

+maxexponent: 999

+minexponent: -999

+mngx510 minmag  1.00E-999       0  ->   0

+mngx511 minmag  0.1E-999        0  ->   0

+mngx512 minmag  0.10E-999       0  ->   0

+mngx513 minmag  0.100E-999      0  ->   0

+mngx514 minmag  0.01E-999       0  ->   0

+mngx515 minmag  0.999E-999      0  ->   0

+mngx516 minmag  0.099E-999      0  ->   0

+mngx517 minmag  0.009E-999      0  ->   0

+mngx518 minmag  0.001E-999      0  ->   0

+mngx519 minmag  0.0009E-999     0  ->   0

+mngx520 minmag  0.0001E-999     0  ->   0

+

+mngx530 minmag -1.00E-999       0  ->   0

+mngx531 minmag -0.1E-999        0  ->   0

+mngx532 minmag -0.10E-999       0  ->   0

+mngx533 minmag -0.100E-999      0  ->   0

+mngx534 minmag -0.01E-999       0  ->   0

+mngx535 minmag -0.999E-999      0  ->   0

+mngx536 minmag -0.099E-999      0  ->   0

+mngx537 minmag -0.009E-999      0  ->   0

+mngx538 minmag -0.001E-999      0  ->   0

+mngx539 minmag -0.0009E-999     0  ->   0

+mngx540 minmag -0.0001E-999     0  ->   0

+

+

+-- Null tests

+mng900 minmag 10  # -> NaN Invalid_operation

+mng901 minmag  # 10 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/minus.decTest b/Lib/test/decimaltestdata/minus.decTest
index d21af83..f911286 100644
--- a/Lib/test/decimaltestdata/minus.decTest
+++ b/Lib/test/decimaltestdata/minus.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- minus.decTest -- decimal negation                                  --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- This set of tests primarily tests the existence of the operator.
 -- Subtraction, rounding, and more overflows are tested elsewhere.
@@ -127,9 +127,9 @@
 minx115 minus  0.999E-999       ->  -1.00E-999 Inexact Rounded Subnormal Underflow
 minx116 minus  0.099E-999       ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
 minx117 minus  0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
-minx118 minus  0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow
-minx119 minus  0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow
-minx120 minus  0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow
+minx118 minus  0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+minx119 minus  0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+minx120 minus  0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 minx130 minus -1.00E-999        ->   1.00E-999
 minx131 minus -0.1E-999         ->   1E-1000   Subnormal
@@ -140,9 +140,9 @@
 minx135 minus -0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
 minx136 minus -0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
 minx137 minus -0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-minx138 minus -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow
-minx139 minus -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
-minx140 minus -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
+minx138 minus -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+minx139 minus -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+minx140 minus -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 
 -- long operand checks
diff --git a/Lib/test/decimaltestdata/multiply.decTest b/Lib/test/decimaltestdata/multiply.decTest
index f650150..a6c7ebe 100644
--- a/Lib/test/decimaltestdata/multiply.decTest
+++ b/Lib/test/decimaltestdata/multiply.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- multiply.decTest -- decimal multiplication                         --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
@@ -44,21 +44,28 @@
 mulx015 multiply 2.50   4 -> 10.00
 precision: 6
 mulx016 multiply 2.50   4 -> 10.00
-mulx017 multiply 9.999999999 9.999999999 -> 100.000 Inexact Rounded
+mulx017 multiply  9.999999999  9.999999999 ->  100.000 Inexact Rounded
+mulx018 multiply  9.999999999 -9.999999999 -> -100.000 Inexact Rounded
+mulx019 multiply -9.999999999  9.999999999 -> -100.000 Inexact Rounded
+mulx020 multiply -9.999999999 -9.999999999 ->  100.000 Inexact Rounded
 
 -- 1999.12.21: next one is a edge case if intermediate longs are used
 precision: 15
-mulx019 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded
+mulx059 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded
 precision: 30
 mulx160 multiply 999999999999 9765625 -> 9765624999990234375
 precision: 9
 -----
 
 -- zeros, etc.
-mulx020 multiply  0      0     ->  0
-mulx021 multiply  0     -0     -> -0
-mulx022 multiply -0      0     -> -0
-mulx023 multiply -0     -0     ->  0
+mulx021 multiply  0      0     ->  0
+mulx022 multiply  0     -0     -> -0
+mulx023 multiply -0      0     -> -0
+mulx024 multiply -0     -0     ->  0
+mulx025 multiply -0.0   -0.0   ->  0.00
+mulx026 multiply -0.0   -0.0   ->  0.00
+mulx027 multiply -0.0   -0.0   ->  0.00
+mulx028 multiply -0.0   -0.0   ->  0.00
 mulx030 multiply  5.00   1E-3  ->  0.00500
 mulx031 multiply  00.00  0.000 ->  0.00000
 mulx032 multiply  00.00  0E-3  ->  0.00000     -- rhs is 0
@@ -94,17 +101,17 @@
 
 -- test some intermediate lengths
 precision: 9
-mulx080 multiply 0.1 123456789           -> 12345678.9
-mulx081 multiply 0.1 1234567891          -> 123456789 Inexact Rounded
-mulx082 multiply 0.1 12345678912         -> 1.23456789E+9 Inexact Rounded
-mulx083 multiply 0.1 12345678912345      -> 1.23456789E+12 Inexact Rounded
-mulx084 multiply 0.1 123456789           -> 12345678.9
+mulx080 multiply 0.1 123456789          -> 12345678.9
+mulx081 multiply 0.1 1234567891         -> 123456789 Inexact Rounded
+mulx082 multiply 0.1 12345678912        -> 1.23456789E+9 Inexact Rounded
+mulx083 multiply 0.1 12345678912345     -> 1.23456789E+12 Inexact Rounded
+mulx084 multiply 0.1 123456789          -> 12345678.9
 precision: 8
-mulx085 multiply 0.1 12345678912         -> 1.2345679E+9 Inexact Rounded
-mulx086 multiply 0.1 12345678912345      -> 1.2345679E+12 Inexact Rounded
+mulx085 multiply 0.1 12345678912        -> 1.2345679E+9 Inexact Rounded
+mulx086 multiply 0.1 12345678912345     -> 1.2345679E+12 Inexact Rounded
 precision: 7
-mulx087 multiply 0.1 12345678912         -> 1.234568E+9 Inexact Rounded
-mulx088 multiply 0.1 12345678912345      -> 1.234568E+12 Inexact Rounded
+mulx087 multiply 0.1 12345678912        -> 1.234568E+9 Inexact Rounded
+mulx088 multiply 0.1 12345678912345     -> 1.234568E+12 Inexact Rounded
 
 precision: 9
 mulx090 multiply 123456789          0.1 -> 12345678.9
@@ -280,6 +287,41 @@
 precision:  1
 mulx278 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1E+5                          Inexact Rounded
 
+-- test some edge cases with exact rounding
+maxexponent: 9999
+minexponent: -9999
+precision: 9
+mulx301 multiply 9 9   -> 81
+mulx302 multiply 9 90   -> 810
+mulx303 multiply 9 900   -> 8100
+mulx304 multiply 9 9000   -> 81000
+mulx305 multiply 9 90000   -> 810000
+mulx306 multiply 9 900000   -> 8100000
+mulx307 multiply 9 9000000   -> 81000000
+mulx308 multiply 9 90000000   -> 810000000
+mulx309 multiply 9 900000000   -> 8.10000000E+9   Rounded
+mulx310 multiply 9 9000000000   -> 8.10000000E+10  Rounded
+mulx311 multiply 9 90000000000   -> 8.10000000E+11  Rounded
+mulx312 multiply 9 900000000000   -> 8.10000000E+12  Rounded
+mulx313 multiply 9 9000000000000   -> 8.10000000E+13  Rounded
+mulx314 multiply 9 90000000000000   -> 8.10000000E+14  Rounded
+mulx315 multiply 9 900000000000000   -> 8.10000000E+15  Rounded
+mulx316 multiply 9 9000000000000000   -> 8.10000000E+16  Rounded
+mulx317 multiply 9 90000000000000000   -> 8.10000000E+17  Rounded
+mulx318 multiply 9 900000000000000000   -> 8.10000000E+18  Rounded
+mulx319 multiply 9 9000000000000000000   -> 8.10000000E+19  Rounded
+mulx320 multiply 9 90000000000000000000   -> 8.10000000E+20  Rounded
+mulx321 multiply 9 900000000000000000000   -> 8.10000000E+21  Rounded
+mulx322 multiply 9 9000000000000000000000   -> 8.10000000E+22  Rounded
+mulx323 multiply 9 90000000000000000000000   -> 8.10000000E+23  Rounded
+
+-- fastpath breakers
+precision:   29
+mulx330 multiply 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603 -> 1.6487212707001281468486507878 Inexact Rounded
+precision:   55
+mulx331 multiply 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428 -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded
+
+
 -- tryzeros cases
 precision:   7
 rounding:    half_up
@@ -486,10 +528,10 @@
 mulx752 multiply  1e+777777777 -1e+411111111 -> -Infinity Overflow Inexact Rounded
 mulx753 multiply -1e+777777777  1e+411111111 -> -Infinity Overflow Inexact Rounded
 mulx754 multiply -1e+777777777 -1e+411111111 ->  Infinity Overflow Inexact Rounded
-mulx755 multiply  1e-777777777  1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
-mulx756 multiply  1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-mulx757 multiply -1e-777777777  1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-mulx758 multiply -1e-777777777 -1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
+mulx755 multiply  1e-777777777  1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+mulx756 multiply  1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+mulx757 multiply -1e-777777777  1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+mulx758 multiply -1e-777777777 -1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 
 -- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
 precision: 9
@@ -500,9 +542,9 @@
 mulx764 multiply 1e-600000000 1e-400000005 -> 1E-1000000005 Subnormal
 mulx765 multiply 1e-600000000 1e-400000006 -> 1E-1000000006 Subnormal
 mulx766 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
-mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
+mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 -- [no equivalent of 'subnormal' for overflow]
 mulx770 multiply 1e+600000000 1e+400000001 -> Infinity Overflow Inexact Rounded
 mulx771 multiply 1e+600000000 1e+400000002 -> Infinity Overflow Inexact Rounded
@@ -520,31 +562,31 @@
 mulx780 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
 mulx781 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
 mulx782 multiply 1e-600000000 1e-400000097 -> 1E-1000000097 Subnormal
-mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded
+mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded Clamped
 precision: 999
 mulx784 multiply 1e-600000000 1e-400000997 -> 1E-1000000997 Subnormal
-mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded
+mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded Clamped
 
 -- following testcases [through mulx800] not yet run against code
 precision: 9999
 mulx786 multiply 1e-600000000 1e-400009997 -> 1E-1000009997 Subnormal
-mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded
+mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded Clamped
 precision: 99999
 mulx788 multiply 1e-600000000 1e-400099997 -> 1E-1000099997 Subnormal
-mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded
+mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded Clamped
 precision: 999999
 mulx790 multiply 1e-600000000 1e-400999997 -> 1E-1000999997 Subnormal
-mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded
+mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded Clamped
 precision: 9999999
 mulx792 multiply 1e-600000000 1e-409999997 -> 1E-1009999997 Subnormal
-mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded
+mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded Clamped
 precision: 99999999
 mulx794 multiply 1e-600000000 1e-499999997 -> 1E-1099999997 Subnormal
-mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded
+mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded Clamped
 precision: 999999999
 mulx796 multiply 1e-999999999 1e-999999997 -> 1E-1999999996 Subnormal
 mulx797 multiply 1e-999999999 1e-999999998 -> 1E-1999999997 Subnormal
-mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded
+mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded Clamped
 mulx799 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
 mulx800 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
 
@@ -573,19 +615,19 @@
 mulx817 multiply  2.51E-999    1e-4  -> 3E-1003     Underflow Subnormal Inexact Rounded
 
 mulx818 multiply  1E-999       1e-4  -> 1E-1003     Subnormal
-mulx819 multiply  3E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded
-mulx820 multiply  5E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded
+mulx819 multiply  3E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
+mulx820 multiply  5E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
 mulx821 multiply  7E-999       1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
 mulx822 multiply  9E-999       1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
 mulx823 multiply  9.9E-999     1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
 
 mulx824 multiply  1E-999      -1e-4  -> -1E-1003    Subnormal
-mulx825 multiply  3E-999      -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded
-mulx826 multiply -5E-999       1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded
+mulx825 multiply  3E-999      -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
+mulx826 multiply -5E-999       1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
 mulx827 multiply  7E-999      -1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
 mulx828 multiply -9E-999       1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
 mulx829 multiply  9.9E-999    -1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
-mulx830 multiply  3.0E-999    -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded
+mulx830 multiply  3.0E-999    -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
 
 mulx831 multiply  1.0E-501     1e-501 -> 1.0E-1002   Subnormal
 mulx832 multiply  2.0E-501     2e-501 -> 4.0E-1002   Subnormal
@@ -595,7 +637,7 @@
 mulx836 multiply 40.0E-501    40e-501 -> 1.6000E-999
 
 -- squares
-mulx840 multiply  1E-502       1e-502 -> 0E-1003     Underflow Subnormal Inexact Rounded
+mulx840 multiply  1E-502       1e-502 -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
 mulx841 multiply  1E-501       1e-501 -> 1E-1002     Subnormal
 mulx842 multiply  2E-501       2e-501 -> 4E-1002     Subnormal
 mulx843 multiply  4E-501       4e-501 -> 1.6E-1001   Subnormal
@@ -604,7 +646,7 @@
 mulx846 multiply 40E-501      40e-501 -> 1.600E-999
 
 -- cubes
-mulx850 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded
+mulx850 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
 mulx851 multiply  1E-668     1e-334 -> 1E-1002    Subnormal
 mulx852 multiply  4E-668     2e-334 -> 8E-1002    Subnormal
 mulx853 multiply  9E-668     3e-334 -> 2.7E-1001  Subnormal
@@ -612,7 +654,7 @@
 mulx855 multiply 25E-668     5e-334 -> 1.25E-1000 Subnormal
 mulx856 multiply 10E-668   100e-334 -> 1.000E-999
 
--- test from 0.099 ** 999 at 15 digits
+-- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent
 precision: 19
 mulx860 multiply  6636851557994578716E-520 6636851557994578716E-520 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded
 
@@ -629,14 +671,16 @@
 precision:   5
 maxexponent: 79
 minexponent: -79
-mulx881 multiply  1.2347E-40  1.2347E-40  ->  1.524E-80 Inexact Rounded Subnormal Underflow
-mulx882 multiply  1.234E-40  1.234E-40  ->  1.523E-80 Inexact Rounded Subnormal Underflow
-mulx883 multiply  1.23E-40   1.23E-40   ->  1.513E-80 Inexact Rounded Subnormal Underflow
-mulx884 multiply  1.2E-40    1.2E-40    ->  1.44E-80  Subnormal
-mulx885 multiply  1.2E-40    1.2E-41    ->  1.44E-81  Subnormal
-mulx886 multiply  1.2E-40    1.2E-42    ->  1.4E-82   Subnormal Inexact Rounded Underflow
-mulx887 multiply  1.2E-40    1.3E-42    ->  1.6E-82   Subnormal Inexact Rounded Underflow
-mulx888 multiply  1.3E-40    1.3E-42    ->  1.7E-82   Subnormal Inexact Rounded Underflow
+mulx881 multiply  1.2347E-40  1.2347E-40  ->  1.524E-80  Inexact Rounded Subnormal Underflow
+mulx882 multiply  1.234E-40  1.234E-40    ->  1.523E-80  Inexact Rounded Subnormal Underflow
+mulx883 multiply  1.23E-40   1.23E-40     ->  1.513E-80  Inexact Rounded Subnormal Underflow
+mulx884 multiply  1.2E-40    1.2E-40      ->  1.44E-80   Subnormal
+mulx885 multiply  1.2E-40    1.2E-41      ->  1.44E-81   Subnormal
+mulx886 multiply  1.2E-40    1.2E-42      ->  1.4E-82    Subnormal Inexact Rounded Underflow
+mulx887 multiply  1.2E-40    1.3E-42      ->  1.6E-82    Subnormal Inexact Rounded Underflow
+mulx888 multiply  1.3E-40    1.3E-42      ->  1.7E-82    Subnormal Inexact Rounded Underflow
+mulx889 multiply  1.3E-40    1.3E-43      ->    2E-83    Subnormal Inexact Rounded Underflow
+mulx890 multiply  1.3E-41    1.3E-43      ->    0E-83    Clamped Subnormal Inexact Rounded Underflow
 
 mulx891 multiply  1.2345E-39   1.234E-40  ->  1.5234E-79 Inexact Rounded
 mulx892 multiply  1.23456E-39  1.234E-40  ->  1.5234E-79 Inexact Rounded
@@ -645,7 +689,43 @@
 mulx895 multiply  1.2345E-41   1.234E-40  ->  1.52E-81   Inexact Rounded Subnormal Underflow
 mulx896 multiply  1.23456E-41  1.234E-40  ->  1.52E-81   Inexact Rounded Subnormal Underflow
 
+-- Now explore the case where we get a normal result with Underflow
+precision:   16
+rounding:    half_up
+maxExponent: 384
+minExponent: -383
+
+mulx900 multiply  0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded
+mulx901 multiply  0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
+mulx902 multiply  9.999999999999999E-383  0.0999999999999         -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
+mulx903 multiply  9.999999999999999E-383  0.09999999999999        -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
+mulx904 multiply  9.999999999999999E-383  0.099999999999999       -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
+mulx905 multiply  9.999999999999999E-383  0.0999999999999999      -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
+-- prove operands are exact
+mulx906 multiply  9.999999999999999E-383  1                       -> 9.999999999999999E-383
+mulx907 multiply                       1  0.09999999999999999     -> 0.09999999999999999
+-- the next rounds to Nmin
+mulx908 multiply  9.999999999999999E-383  0.09999999999999999     -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+mulx909 multiply  9.999999999999999E-383  0.099999999999999999    -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+mulx910 multiply  9.999999999999999E-383  0.0999999999999999999   -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+mulx911 multiply  9.999999999999999E-383  0.09999999999999999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
+
+
+-- Examples from SQL proposal (Krishna Kulkarni)
+precision:   34
+rounding:    half_up
+maxExponent: 6144
+minExponent: -6143
+mulx1001  multiply 130E-2  120E-2 -> 1.5600
+mulx1002  multiply 130E-2  12E-1  -> 1.560
+mulx1003  multiply 130E-2  1E0    -> 1.30
+mulx1004  multiply 1E2     1E4    -> 1E+6
+
+-- payload decapitate
+precision: 5
+mulx1010  multiply 11 -sNaN1234567890 -> -NaN67890  Invalid_operation
+
 -- Null tests
-mulx900 multiply 10  # -> NaN Invalid_operation
-mulx901 multiply  # 10 -> NaN Invalid_operation
+mulx990 multiply 10  # -> NaN Invalid_operation
+mulx991 multiply  # 10 -> NaN Invalid_operation
 
diff --git a/Lib/test/decimaltestdata/nextminus.decTest b/Lib/test/decimaltestdata/nextminus.decTest
new file mode 100644
index 0000000..be33158
--- /dev/null
+++ b/Lib/test/decimaltestdata/nextminus.decTest
@@ -0,0 +1,148 @@
+------------------------------------------------------------------------

+-- nextminus.decTest -- decimal next that is less [754r nextdown]     --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+nextm001 nextminus  0.999999995 ->   0.999999994

+nextm002 nextminus  0.999999996 ->   0.999999995

+nextm003 nextminus  0.999999997 ->   0.999999996

+nextm004 nextminus  0.999999998 ->   0.999999997

+nextm005 nextminus  0.999999999 ->   0.999999998

+nextm006 nextminus  1.00000000  ->   0.999999999

+nextm007 nextminus  1.0         ->   0.999999999

+nextm008 nextminus  1           ->   0.999999999

+nextm009 nextminus  1.00000001  ->   1.00000000

+nextm010 nextminus  1.00000002  ->   1.00000001

+nextm011 nextminus  1.00000003  ->   1.00000002

+nextm012 nextminus  1.00000004  ->   1.00000003

+nextm013 nextminus  1.00000005  ->   1.00000004

+nextm014 nextminus  1.00000006  ->   1.00000005

+nextm015 nextminus  1.00000007  ->   1.00000006

+nextm016 nextminus  1.00000008  ->   1.00000007

+nextm017 nextminus  1.00000009  ->   1.00000008

+nextm018 nextminus  1.00000010  ->   1.00000009

+nextm019 nextminus  1.00000011  ->   1.00000010

+nextm020 nextminus  1.00000012  ->   1.00000011

+

+nextm021 nextminus -0.999999995 ->  -0.999999996

+nextm022 nextminus -0.999999996 ->  -0.999999997

+nextm023 nextminus -0.999999997 ->  -0.999999998

+nextm024 nextminus -0.999999998 ->  -0.999999999

+nextm025 nextminus -0.999999999 ->  -1.00000000

+nextm026 nextminus -1.00000000  ->  -1.00000001

+nextm027 nextminus -1.0         ->  -1.00000001

+nextm028 nextminus -1           ->  -1.00000001

+nextm029 nextminus -1.00000001  ->  -1.00000002

+nextm030 nextminus -1.00000002  ->  -1.00000003

+nextm031 nextminus -1.00000003  ->  -1.00000004

+nextm032 nextminus -1.00000004  ->  -1.00000005

+nextm033 nextminus -1.00000005  ->  -1.00000006

+nextm034 nextminus -1.00000006  ->  -1.00000007

+nextm035 nextminus -1.00000007  ->  -1.00000008

+nextm036 nextminus -1.00000008  ->  -1.00000009

+nextm037 nextminus -1.00000009  ->  -1.00000010

+nextm038 nextminus -1.00000010  ->  -1.00000011

+nextm039 nextminus -1.00000011  ->  -1.00000012

+

+-- input operand is >precision

+nextm041 nextminus  1.00000010998  ->   1.00000010

+nextm042 nextminus  1.00000010999  ->   1.00000010

+nextm043 nextminus  1.00000011000  ->   1.00000010

+nextm044 nextminus  1.00000011001  ->   1.00000011

+nextm045 nextminus  1.00000011002  ->   1.00000011

+nextm046 nextminus  1.00000011002  ->   1.00000011

+nextm047 nextminus  1.00000011052  ->   1.00000011

+nextm048 nextminus  1.00000011552  ->   1.00000011

+nextm049 nextminus -1.00000010998  ->  -1.00000011

+nextm050 nextminus -1.00000010999  ->  -1.00000011

+nextm051 nextminus -1.00000011000  ->  -1.00000012

+nextm052 nextminus -1.00000011001  ->  -1.00000012

+nextm053 nextminus -1.00000011002  ->  -1.00000012

+nextm054 nextminus -1.00000011002  ->  -1.00000012

+nextm055 nextminus -1.00000011052  ->  -1.00000012

+nextm056 nextminus -1.00000011552  ->  -1.00000012

+-- ultra-tiny inputs

+nextm060 nextminus  1E-99999       ->   0E-391

+nextm061 nextminus  1E-999999999   ->   0E-391

+nextm062 nextminus  1E-391         ->   0E-391

+nextm063 nextminus -1E-99999       ->  -1E-391

+nextm064 nextminus -1E-999999999   ->  -1E-391

+nextm065 nextminus -1E-391         ->  -2E-391

+

+-- Zeros

+nextm100 nextminus -0           -> -1E-391

+nextm101 nextminus  0           -> -1E-391

+nextm102 nextminus  0.00        -> -1E-391

+nextm103 nextminus -0.00        -> -1E-391

+nextm104 nextminus  0E-300      -> -1E-391

+nextm105 nextminus  0E+300      -> -1E-391

+nextm106 nextminus  0E+30000    -> -1E-391

+nextm107 nextminus -0E+30000    -> -1E-391

+

+precision: 9

+maxExponent: 999

+minexponent: -999

+-- specials

+nextm150 nextminus   Inf    ->  9.99999999E+999

+nextm151 nextminus  -Inf    -> -Infinity

+nextm152 nextminus   NaN    ->  NaN

+nextm153 nextminus  sNaN    ->  NaN   Invalid_operation

+nextm154 nextminus   NaN77  ->  NaN77

+nextm155 nextminus  sNaN88  ->  NaN88 Invalid_operation

+nextm156 nextminus  -NaN    -> -NaN

+nextm157 nextminus -sNaN    -> -NaN   Invalid_operation

+nextm158 nextminus  -NaN77  -> -NaN77

+nextm159 nextminus -sNaN88  -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+nextm170 nextminus  9.99999999E+999   -> 9.99999998E+999

+nextm171 nextminus  9.99999998E+999   -> 9.99999997E+999

+nextm172 nextminus  1E-999            -> 9.9999999E-1000

+nextm173 nextminus  1.00000000E-999   -> 9.9999999E-1000

+nextm174 nextminus  9E-1007           -> 8E-1007

+nextm175 nextminus  9.9E-1006         -> 9.8E-1006

+nextm176 nextminus  9.9999E-1003      -> 9.9998E-1003

+nextm177 nextminus  9.9999999E-1000   -> 9.9999998E-1000

+nextm178 nextminus  9.9999998E-1000   -> 9.9999997E-1000

+nextm179 nextminus  9.9999997E-1000   -> 9.9999996E-1000

+nextm180 nextminus  0E-1007           -> -1E-1007

+nextm181 nextminus  1E-1007           -> 0E-1007

+nextm182 nextminus  2E-1007           -> 1E-1007

+

+nextm183 nextminus  -0E-1007          -> -1E-1007

+nextm184 nextminus  -1E-1007          -> -2E-1007

+nextm185 nextminus  -2E-1007          -> -3E-1007

+nextm186 nextminus  -10E-1007         -> -1.1E-1006

+nextm187 nextminus  -100E-1007        -> -1.01E-1005

+nextm188 nextminus  -100000E-1007     -> -1.00001E-1002

+nextm189 nextminus  -1.0000E-999      -> -1.00000001E-999

+nextm190 nextminus  -1.00000000E-999  -> -1.00000001E-999

+nextm191 nextminus  -1E-999           -> -1.00000001E-999

+nextm192 nextminus  -9.99999998E+999  -> -9.99999999E+999

+nextm193 nextminus  -9.99999999E+999  -> -Infinity

+

+-- Null tests

+nextm900 nextminus  # -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/nextplus.decTest b/Lib/test/decimaltestdata/nextplus.decTest
new file mode 100644
index 0000000..6cee16a
--- /dev/null
+++ b/Lib/test/decimaltestdata/nextplus.decTest
@@ -0,0 +1,150 @@
+------------------------------------------------------------------------

+-- nextplus.decTest -- decimal next that is greater [754r nextup]     --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+nextp001 nextplus  0.999999995 ->   0.999999996

+nextp002 nextplus  0.999999996 ->   0.999999997

+nextp003 nextplus  0.999999997 ->   0.999999998

+nextp004 nextplus  0.999999998 ->   0.999999999

+nextp005 nextplus  0.999999999 ->   1.00000000

+nextp006 nextplus  1.00000000  ->   1.00000001

+nextp007 nextplus  1.0         ->   1.00000001

+nextp008 nextplus  1           ->   1.00000001

+nextp009 nextplus  1.00000001  ->   1.00000002

+nextp010 nextplus  1.00000002  ->   1.00000003

+nextp011 nextplus  1.00000003  ->   1.00000004

+nextp012 nextplus  1.00000004  ->   1.00000005

+nextp013 nextplus  1.00000005  ->   1.00000006

+nextp014 nextplus  1.00000006  ->   1.00000007

+nextp015 nextplus  1.00000007  ->   1.00000008

+nextp016 nextplus  1.00000008  ->   1.00000009

+nextp017 nextplus  1.00000009  ->   1.00000010

+nextp018 nextplus  1.00000010  ->   1.00000011

+nextp019 nextplus  1.00000011  ->   1.00000012

+

+nextp021 nextplus -0.999999995 ->  -0.999999994

+nextp022 nextplus -0.999999996 ->  -0.999999995

+nextp023 nextplus -0.999999997 ->  -0.999999996

+nextp024 nextplus -0.999999998 ->  -0.999999997

+nextp025 nextplus -0.999999999 ->  -0.999999998

+nextp026 nextplus -1.00000000  ->  -0.999999999

+nextp027 nextplus -1.0         ->  -0.999999999

+nextp028 nextplus -1           ->  -0.999999999

+nextp029 nextplus -1.00000001  ->  -1.00000000

+nextp030 nextplus -1.00000002  ->  -1.00000001

+nextp031 nextplus -1.00000003  ->  -1.00000002

+nextp032 nextplus -1.00000004  ->  -1.00000003

+nextp033 nextplus -1.00000005  ->  -1.00000004

+nextp034 nextplus -1.00000006  ->  -1.00000005

+nextp035 nextplus -1.00000007  ->  -1.00000006

+nextp036 nextplus -1.00000008  ->  -1.00000007

+nextp037 nextplus -1.00000009  ->  -1.00000008

+nextp038 nextplus -1.00000010  ->  -1.00000009

+nextp039 nextplus -1.00000011  ->  -1.00000010

+nextp040 nextplus -1.00000012  ->  -1.00000011

+

+-- input operand is >precision

+nextp041 nextplus  1.00000010998  ->   1.00000011

+nextp042 nextplus  1.00000010999  ->   1.00000011

+nextp043 nextplus  1.00000011000  ->   1.00000012

+nextp044 nextplus  1.00000011001  ->   1.00000012

+nextp045 nextplus  1.00000011002  ->   1.00000012

+nextp046 nextplus  1.00000011002  ->   1.00000012

+nextp047 nextplus  1.00000011052  ->   1.00000012

+nextp048 nextplus  1.00000011552  ->   1.00000012

+nextp049 nextplus -1.00000010998  ->  -1.00000010

+nextp050 nextplus -1.00000010999  ->  -1.00000010

+nextp051 nextplus -1.00000011000  ->  -1.00000010

+nextp052 nextplus -1.00000011001  ->  -1.00000011

+nextp053 nextplus -1.00000011002  ->  -1.00000011

+nextp054 nextplus -1.00000011002  ->  -1.00000011

+nextp055 nextplus -1.00000011052  ->  -1.00000011

+nextp056 nextplus -1.00000011552  ->  -1.00000011

+-- ultra-tiny inputs

+nextp060 nextplus  1E-99999       ->   1E-391

+nextp061 nextplus  1E-999999999   ->   1E-391

+nextp062 nextplus  1E-391         ->   2E-391

+nextp063 nextplus -1E-99999       ->  -0E-391

+nextp064 nextplus -1E-999999999   ->  -0E-391

+nextp065 nextplus -1E-391         ->  -0E-391

+

+-- Zeros

+nextp100 nextplus  0           ->  1E-391

+nextp101 nextplus  0.00        ->  1E-391

+nextp102 nextplus  0E-300      ->  1E-391

+nextp103 nextplus  0E+300      ->  1E-391

+nextp104 nextplus  0E+30000    ->  1E-391

+nextp105 nextplus -0           ->  1E-391

+nextp106 nextplus -0.00        ->  1E-391

+nextp107 nextplus -0E-300      ->  1E-391

+nextp108 nextplus -0E+300      ->  1E-391

+nextp109 nextplus -0E+30000    ->  1E-391

+

+maxExponent: 999

+minexponent: -999

+precision: 9

+-- specials

+nextp150 nextplus   Inf    ->  Infinity

+nextp151 nextplus  -Inf    -> -9.99999999E+999

+nextp152 nextplus   NaN    ->  NaN

+nextp153 nextplus  sNaN    ->  NaN   Invalid_operation

+nextp154 nextplus   NaN77  ->  NaN77

+nextp155 nextplus  sNaN88  ->  NaN88 Invalid_operation

+nextp156 nextplus  -NaN    -> -NaN

+nextp157 nextplus -sNaN    -> -NaN   Invalid_operation

+nextp158 nextplus  -NaN77  -> -NaN77

+nextp159 nextplus -sNaN88  -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+nextp170 nextplus  9.99999999E+999   -> Infinity

+nextp171 nextplus  9.99999998E+999   -> 9.99999999E+999

+nextp172 nextplus  1E-999            -> 1.00000001E-999

+nextp173 nextplus  1.00000000E-999   -> 1.00000001E-999

+nextp174 nextplus  9E-1007           -> 1.0E-1006

+nextp175 nextplus  9.9E-1006         -> 1.00E-1005

+nextp176 nextplus  9.9999E-1003      -> 1.00000E-1002

+nextp177 nextplus  9.9999999E-1000   -> 1.00000000E-999

+nextp178 nextplus  9.9999998E-1000   -> 9.9999999E-1000

+nextp179 nextplus  9.9999997E-1000   -> 9.9999998E-1000

+nextp180 nextplus  0E-1007           -> 1E-1007

+nextp181 nextplus  1E-1007           -> 2E-1007

+nextp182 nextplus  2E-1007           -> 3E-1007

+

+nextp183 nextplus  -0E-1007          ->  1E-1007

+nextp184 nextplus  -1E-1007          -> -0E-1007

+nextp185 nextplus  -2E-1007          -> -1E-1007

+nextp186 nextplus  -10E-1007         -> -9E-1007

+nextp187 nextplus  -100E-1007        -> -9.9E-1006

+nextp188 nextplus  -100000E-1007     -> -9.9999E-1003

+nextp189 nextplus  -1.0000E-999      -> -9.9999999E-1000

+nextp190 nextplus  -1.00000000E-999  -> -9.9999999E-1000

+nextp191 nextplus  -1E-999           -> -9.9999999E-1000

+nextp192 nextplus  -9.99999998E+999  -> -9.99999997E+999

+nextp193 nextplus  -9.99999999E+999  -> -9.99999998E+999

+

+-- Null tests

+nextp900 nextplus  # -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/nexttoward.decTest b/Lib/test/decimaltestdata/nexttoward.decTest
new file mode 100644
index 0000000..aa1891a
--- /dev/null
+++ b/Lib/test/decimaltestdata/nexttoward.decTest
@@ -0,0 +1,426 @@
+------------------------------------------------------------------------

+-- nexttoward.decTest -- decimal next toward rhs [754r nextafter]     --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 384

+minexponent: -383

+

+-- Sanity check with a scattering of numerics

+nextt001 nexttoward   10    10   ->  10

+nextt002 nexttoward  -10   -10   -> -10

+nextt003 nexttoward   1     10   ->  1.00000001

+nextt004 nexttoward   1    -10   ->  0.999999999

+nextt005 nexttoward  -1     10   -> -0.999999999

+nextt006 nexttoward  -1    -10   -> -1.00000001

+nextt007 nexttoward   0     10   ->  1E-391       Underflow Subnormal Inexact Rounded

+nextt008 nexttoward   0    -10   -> -1E-391       Underflow Subnormal Inexact Rounded

+nextt009 nexttoward   9.99999999E+384 +Infinity ->  Infinity Overflow Inexact Rounded

+nextt010 nexttoward  -9.99999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded

+

+------- lhs=rhs

+-- finites

+nextt101 nexttoward          7       7 ->  7

+nextt102 nexttoward         -7      -7 -> -7

+nextt103 nexttoward         75      75 ->  75

+nextt104 nexttoward        -75     -75 -> -75

+nextt105 nexttoward       7.50     7.5 ->  7.50

+nextt106 nexttoward      -7.50   -7.50 -> -7.50

+nextt107 nexttoward       7.500 7.5000 ->  7.500

+nextt108 nexttoward      -7.500   -7.5 -> -7.500

+

+-- zeros

+nextt111 nexttoward          0       0 ->  0

+nextt112 nexttoward         -0      -0 -> -0

+nextt113 nexttoward       0E+4       0 ->  0E+4

+nextt114 nexttoward      -0E+4      -0 -> -0E+4

+nextt115 nexttoward     0.0000 0.00000 ->  0.0000

+nextt116 nexttoward    -0.0000   -0.00 -> -0.0000

+nextt117 nexttoward      0E-141      0 ->  0E-141

+nextt118 nexttoward     -0E-141   -000 -> -0E-141

+

+-- full coefficients, alternating bits

+nextt121 nexttoward   268268268    268268268 ->   268268268

+nextt122 nexttoward  -268268268   -268268268 ->  -268268268

+nextt123 nexttoward   134134134    134134134 ->   134134134

+nextt124 nexttoward  -134134134   -134134134 ->  -134134134

+

+-- Nmax, Nmin, Ntiny

+nextt131 nexttoward  9.99999999E+384  9.99999999E+384   ->   9.99999999E+384

+nextt132 nexttoward  1E-383           1E-383            ->   1E-383

+nextt133 nexttoward  1.00000000E-383  1.00000000E-383   ->   1.00000000E-383

+nextt134 nexttoward  1E-391           1E-391            ->   1E-391

+

+nextt135 nexttoward  -1E-391          -1E-391           ->  -1E-391

+nextt136 nexttoward  -1.00000000E-383 -1.00000000E-383  ->  -1.00000000E-383

+nextt137 nexttoward  -1E-383          -1E-383           ->  -1E-383

+nextt138 nexttoward  -9.99999999E+384 -9.99999999E+384  ->  -9.99999999E+384

+

+------- lhs<rhs

+nextt201 nexttoward  0.999999995 Infinity ->   0.999999996

+nextt202 nexttoward  0.999999996 Infinity ->   0.999999997

+nextt203 nexttoward  0.999999997 Infinity ->   0.999999998

+nextt204 nexttoward  0.999999998 Infinity ->   0.999999999

+nextt205 nexttoward  0.999999999 Infinity ->   1.00000000

+nextt206 nexttoward  1.00000000  Infinity ->   1.00000001

+nextt207 nexttoward  1.0         Infinity ->   1.00000001

+nextt208 nexttoward  1           Infinity ->   1.00000001

+nextt209 nexttoward  1.00000001  Infinity ->   1.00000002

+nextt210 nexttoward  1.00000002  Infinity ->   1.00000003

+nextt211 nexttoward  1.00000003  Infinity ->   1.00000004

+nextt212 nexttoward  1.00000004  Infinity ->   1.00000005

+nextt213 nexttoward  1.00000005  Infinity ->   1.00000006

+nextt214 nexttoward  1.00000006  Infinity ->   1.00000007

+nextt215 nexttoward  1.00000007  Infinity ->   1.00000008

+nextt216 nexttoward  1.00000008  Infinity ->   1.00000009

+nextt217 nexttoward  1.00000009  Infinity ->   1.00000010

+nextt218 nexttoward  1.00000010  Infinity ->   1.00000011

+nextt219 nexttoward  1.00000011  Infinity ->   1.00000012

+

+nextt221 nexttoward -0.999999995 Infinity ->  -0.999999994

+nextt222 nexttoward -0.999999996 Infinity ->  -0.999999995

+nextt223 nexttoward -0.999999997 Infinity ->  -0.999999996

+nextt224 nexttoward -0.999999998 Infinity ->  -0.999999997

+nextt225 nexttoward -0.999999999 Infinity ->  -0.999999998

+nextt226 nexttoward -1.00000000  Infinity ->  -0.999999999

+nextt227 nexttoward -1.0         Infinity ->  -0.999999999

+nextt228 nexttoward -1           Infinity ->  -0.999999999

+nextt229 nexttoward -1.00000001  Infinity ->  -1.00000000

+nextt230 nexttoward -1.00000002  Infinity ->  -1.00000001

+nextt231 nexttoward -1.00000003  Infinity ->  -1.00000002

+nextt232 nexttoward -1.00000004  Infinity ->  -1.00000003

+nextt233 nexttoward -1.00000005  Infinity ->  -1.00000004

+nextt234 nexttoward -1.00000006  Infinity ->  -1.00000005

+nextt235 nexttoward -1.00000007  Infinity ->  -1.00000006

+nextt236 nexttoward -1.00000008  Infinity ->  -1.00000007

+nextt237 nexttoward -1.00000009  Infinity ->  -1.00000008

+nextt238 nexttoward -1.00000010  Infinity ->  -1.00000009

+nextt239 nexttoward -1.00000011  Infinity ->  -1.00000010

+nextt240 nexttoward -1.00000012  Infinity ->  -1.00000011

+

+-- input operand is >precision

+nextt241 nexttoward  1.00000010998  Infinity ->   1.00000011

+nextt242 nexttoward  1.00000010999  Infinity ->   1.00000011

+nextt243 nexttoward  1.00000011000  Infinity ->   1.00000012

+nextt244 nexttoward  1.00000011001  Infinity ->   1.00000012

+nextt245 nexttoward  1.00000011002  Infinity ->   1.00000012

+nextt246 nexttoward  1.00000011002  Infinity ->   1.00000012

+nextt247 nexttoward  1.00000011052  Infinity ->   1.00000012

+nextt248 nexttoward  1.00000011552  Infinity ->   1.00000012

+nextt249 nexttoward -1.00000010998  Infinity ->  -1.00000010

+nextt250 nexttoward -1.00000010999  Infinity ->  -1.00000010

+nextt251 nexttoward -1.00000011000  Infinity ->  -1.00000010

+nextt252 nexttoward -1.00000011001  Infinity ->  -1.00000011

+nextt253 nexttoward -1.00000011002  Infinity ->  -1.00000011

+nextt254 nexttoward -1.00000011002  Infinity ->  -1.00000011

+nextt255 nexttoward -1.00000011052  Infinity ->  -1.00000011

+nextt256 nexttoward -1.00000011552  Infinity ->  -1.00000011

+-- ultra-tiny inputs

+nextt260 nexttoward  1E-99999       Infinity ->   1E-391          Underflow Subnormal Inexact Rounded

+nextt261 nexttoward  1E-999999999   Infinity ->   1E-391          Underflow Subnormal Inexact Rounded

+nextt262 nexttoward  1E-391         Infinity ->   2E-391          Underflow Subnormal Inexact Rounded

+nextt263 nexttoward -1E-99999       Infinity ->  -0E-391          Underflow Subnormal Inexact Rounded Clamped

+nextt264 nexttoward -1E-999999999   Infinity ->  -0E-391          Underflow Subnormal Inexact Rounded Clamped

+nextt265 nexttoward -1E-391         Infinity ->  -0E-391          Underflow Subnormal Inexact Rounded Clamped

+

+-- Zeros

+nextt300 nexttoward  0           Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt301 nexttoward  0.00        Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt302 nexttoward  0E-300      Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt303 nexttoward  0E+300      Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt304 nexttoward  0E+30000    Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt305 nexttoward -0           Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt306 nexttoward -0.00        Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt307 nexttoward -0E-300      Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt308 nexttoward -0E+300      Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+nextt309 nexttoward -0E+30000    Infinity ->  1E-391              Underflow Subnormal Inexact Rounded

+

+-- specials

+nextt350 nexttoward   Inf    Infinity ->  Infinity

+nextt351 nexttoward  -Inf    Infinity -> -9.99999999E+384

+nextt352 nexttoward   NaN    Infinity ->  NaN

+nextt353 nexttoward  sNaN    Infinity ->  NaN   Invalid_operation

+nextt354 nexttoward   NaN77  Infinity ->  NaN77

+nextt355 nexttoward  sNaN88  Infinity ->  NaN88 Invalid_operation

+nextt356 nexttoward  -NaN    Infinity -> -NaN

+nextt357 nexttoward -sNaN    Infinity -> -NaN   Invalid_operation

+nextt358 nexttoward  -NaN77  Infinity -> -NaN77

+nextt359 nexttoward -sNaN88  Infinity -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+maxExponent: 999

+minexponent: -999

+nextt370 nexttoward  9.99999999E+999   Infinity -> Infinity        Overflow Inexact Rounded

+nextt371 nexttoward  9.99999998E+999   Infinity -> 9.99999999E+999

+nextt372 nexttoward  1E-999            Infinity -> 1.00000001E-999

+nextt373 nexttoward  1.00000000E-999   Infinity -> 1.00000001E-999

+nextt374 nexttoward  0.999999999E-999  Infinity -> 1.00000000E-999

+nextt375 nexttoward  0.99999999E-999   Infinity -> 1.00000000E-999

+nextt376 nexttoward  9E-1007           Infinity -> 1.0E-1006       Underflow Subnormal Inexact Rounded

+nextt377 nexttoward  9.9E-1006         Infinity -> 1.00E-1005      Underflow Subnormal Inexact Rounded

+nextt378 nexttoward  9.9999E-1003      Infinity -> 1.00000E-1002   Underflow Subnormal Inexact Rounded

+nextt379 nexttoward  9.9999998E-1000   Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded

+nextt380 nexttoward  9.9999997E-1000   Infinity -> 9.9999998E-1000 Underflow Subnormal Inexact Rounded

+nextt381 nexttoward  0E-1007           Infinity -> 1E-1007         Underflow Subnormal Inexact Rounded

+nextt382 nexttoward  1E-1007           Infinity -> 2E-1007         Underflow Subnormal Inexact Rounded

+nextt383 nexttoward  2E-1007           Infinity -> 3E-1007         Underflow Subnormal Inexact Rounded

+

+nextt385 nexttoward  -0E-1007          Infinity ->  1E-1007        Underflow Subnormal Inexact Rounded

+nextt386 nexttoward  -1E-1007          Infinity -> -0E-1007        Underflow Subnormal Inexact Rounded Clamped

+nextt387 nexttoward  -2E-1007          Infinity -> -1E-1007        Underflow Subnormal Inexact Rounded

+nextt388 nexttoward  -10E-1007         Infinity -> -9E-1007        Underflow Subnormal Inexact Rounded

+nextt389 nexttoward  -100E-1007        Infinity -> -9.9E-1006      Underflow Subnormal Inexact Rounded

+nextt390 nexttoward  -100000E-1007     Infinity -> -9.9999E-1003   Underflow Subnormal Inexact Rounded

+nextt391 nexttoward  -1.0000E-999      Infinity -> -9.9999999E-1000  Underflow Subnormal Inexact Rounded

+nextt392 nexttoward  -1.00000000E-999  Infinity -> -9.9999999E-1000  Underflow Subnormal Inexact Rounded

+nextt393 nexttoward  -1E-999           Infinity -> -9.9999999E-1000  Underflow Subnormal Inexact Rounded

+nextt394 nexttoward  -9.99999998E+999  Infinity -> -9.99999997E+999

+nextt395 nexttoward  -9.99999999E+999  Infinity -> -9.99999998E+999

+

+------- lhs>rhs

+maxExponent: 384

+minexponent: -383

+nextt401 nexttoward  0.999999995  -Infinity ->   0.999999994

+nextt402 nexttoward  0.999999996  -Infinity ->   0.999999995

+nextt403 nexttoward  0.999999997  -Infinity ->   0.999999996

+nextt404 nexttoward  0.999999998  -Infinity ->   0.999999997

+nextt405 nexttoward  0.999999999  -Infinity ->   0.999999998

+nextt406 nexttoward  1.00000000   -Infinity ->   0.999999999

+nextt407 nexttoward  1.0          -Infinity ->   0.999999999

+nextt408 nexttoward  1            -Infinity ->   0.999999999

+nextt409 nexttoward  1.00000001   -Infinity ->   1.00000000

+nextt410 nexttoward  1.00000002   -Infinity ->   1.00000001

+nextt411 nexttoward  1.00000003   -Infinity ->   1.00000002

+nextt412 nexttoward  1.00000004   -Infinity ->   1.00000003

+nextt413 nexttoward  1.00000005   -Infinity ->   1.00000004

+nextt414 nexttoward  1.00000006   -Infinity ->   1.00000005

+nextt415 nexttoward  1.00000007   -Infinity ->   1.00000006

+nextt416 nexttoward  1.00000008   -Infinity ->   1.00000007

+nextt417 nexttoward  1.00000009   -Infinity ->   1.00000008

+nextt418 nexttoward  1.00000010   -Infinity ->   1.00000009

+nextt419 nexttoward  1.00000011   -Infinity ->   1.00000010

+nextt420 nexttoward  1.00000012   -Infinity ->   1.00000011

+

+nextt421 nexttoward -0.999999995  -Infinity ->  -0.999999996

+nextt422 nexttoward -0.999999996  -Infinity ->  -0.999999997

+nextt423 nexttoward -0.999999997  -Infinity ->  -0.999999998

+nextt424 nexttoward -0.999999998  -Infinity ->  -0.999999999

+nextt425 nexttoward -0.999999999  -Infinity ->  -1.00000000

+nextt426 nexttoward -1.00000000   -Infinity ->  -1.00000001

+nextt427 nexttoward -1.0          -Infinity ->  -1.00000001

+nextt428 nexttoward -1            -Infinity ->  -1.00000001

+nextt429 nexttoward -1.00000001   -Infinity ->  -1.00000002

+nextt430 nexttoward -1.00000002   -Infinity ->  -1.00000003

+nextt431 nexttoward -1.00000003   -Infinity ->  -1.00000004

+nextt432 nexttoward -1.00000004   -Infinity ->  -1.00000005

+nextt433 nexttoward -1.00000005   -Infinity ->  -1.00000006

+nextt434 nexttoward -1.00000006   -Infinity ->  -1.00000007

+nextt435 nexttoward -1.00000007   -Infinity ->  -1.00000008

+nextt436 nexttoward -1.00000008   -Infinity ->  -1.00000009

+nextt437 nexttoward -1.00000009   -Infinity ->  -1.00000010

+nextt438 nexttoward -1.00000010   -Infinity ->  -1.00000011

+nextt439 nexttoward -1.00000011   -Infinity ->  -1.00000012

+

+-- input operand is >precision

+nextt441 nexttoward  1.00000010998   -Infinity ->   1.00000010

+nextt442 nexttoward  1.00000010999   -Infinity ->   1.00000010

+nextt443 nexttoward  1.00000011000   -Infinity ->   1.00000010

+nextt444 nexttoward  1.00000011001   -Infinity ->   1.00000011

+nextt445 nexttoward  1.00000011002   -Infinity ->   1.00000011

+nextt446 nexttoward  1.00000011002   -Infinity ->   1.00000011

+nextt447 nexttoward  1.00000011052   -Infinity ->   1.00000011

+nextt448 nexttoward  1.00000011552   -Infinity ->   1.00000011

+nextt449 nexttoward -1.00000010998   -Infinity ->  -1.00000011

+nextt450 nexttoward -1.00000010999   -Infinity ->  -1.00000011

+nextt451 nexttoward -1.00000011000   -Infinity ->  -1.00000012

+nextt452 nexttoward -1.00000011001   -Infinity ->  -1.00000012

+nextt453 nexttoward -1.00000011002   -Infinity ->  -1.00000012

+nextt454 nexttoward -1.00000011002   -Infinity ->  -1.00000012

+nextt455 nexttoward -1.00000011052   -Infinity ->  -1.00000012

+nextt456 nexttoward -1.00000011552   -Infinity ->  -1.00000012

+-- ultra-tiny inputs

+nextt460 nexttoward  1E-99999        -Infinity ->   0E-391     Underflow Subnormal Inexact Rounded Clamped

+nextt461 nexttoward  1E-999999999    -Infinity ->   0E-391     Underflow Subnormal Inexact Rounded Clamped

+nextt462 nexttoward  1E-391          -Infinity ->   0E-391     Underflow Subnormal Inexact Rounded Clamped

+nextt463 nexttoward -1E-99999        -Infinity ->  -1E-391     Underflow Subnormal Inexact Rounded

+nextt464 nexttoward -1E-999999999    -Infinity ->  -1E-391     Underflow Subnormal Inexact Rounded

+nextt465 nexttoward -1E-391          -Infinity ->  -2E-391     Underflow Subnormal Inexact Rounded

+

+-- Zeros

+nextt500 nexttoward -0            -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded

+nextt501 nexttoward  0            -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded

+nextt502 nexttoward  0.00         -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded

+nextt503 nexttoward -0.00         -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded

+nextt504 nexttoward  0E-300       -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded

+nextt505 nexttoward  0E+300       -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded

+nextt506 nexttoward  0E+30000     -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded

+nextt507 nexttoward -0E+30000     -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded

+nextt508 nexttoward  0.00         -0.0000   -> -0.00

+

+-- specials

+nextt550 nexttoward   Inf     -Infinity ->  9.99999999E+384

+nextt551 nexttoward  -Inf     -Infinity -> -Infinity

+nextt552 nexttoward   NaN     -Infinity ->  NaN

+nextt553 nexttoward  sNaN     -Infinity ->  NaN   Invalid_operation

+nextt554 nexttoward   NaN77   -Infinity ->  NaN77

+nextt555 nexttoward  sNaN88   -Infinity ->  NaN88 Invalid_operation

+nextt556 nexttoward  -NaN     -Infinity -> -NaN

+nextt557 nexttoward -sNaN     -Infinity -> -NaN   Invalid_operation

+nextt558 nexttoward  -NaN77   -Infinity -> -NaN77

+nextt559 nexttoward -sNaN88   -Infinity -> -NaN88 Invalid_operation

+

+-- Nmax, Nmin, Ntiny, subnormals

+maxExponent: 999

+minexponent: -999

+nextt570 nexttoward  9.99999999E+999    -Infinity -> 9.99999998E+999

+nextt571 nexttoward  9.99999998E+999    -Infinity -> 9.99999997E+999

+nextt572 nexttoward  1E-999             -Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded

+nextt573 nexttoward  1.00000000E-999    -Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded

+nextt574 nexttoward  9E-1007            -Infinity -> 8E-1007         Underflow Subnormal Inexact Rounded

+nextt575 nexttoward  9.9E-1006          -Infinity -> 9.8E-1006       Underflow Subnormal Inexact Rounded

+nextt576 nexttoward  9.9999E-1003       -Infinity -> 9.9998E-1003    Underflow Subnormal Inexact Rounded

+nextt577 nexttoward  9.9999999E-1000    -Infinity -> 9.9999998E-1000 Underflow Subnormal Inexact Rounded

+nextt578 nexttoward  9.9999998E-1000    -Infinity -> 9.9999997E-1000 Underflow Subnormal Inexact Rounded

+nextt579 nexttoward  9.9999997E-1000    -Infinity -> 9.9999996E-1000 Underflow Subnormal Inexact Rounded

+nextt580 nexttoward  0E-1007            -Infinity -> -1E-1007        Underflow Subnormal Inexact Rounded

+nextt581 nexttoward  1E-1007            -Infinity -> 0E-1007         Underflow Subnormal Inexact Rounded Clamped

+nextt582 nexttoward  2E-1007            -Infinity -> 1E-1007         Underflow Subnormal Inexact Rounded

+

+nextt583 nexttoward  -0E-1007           -Infinity -> -1E-1007        Underflow Subnormal Inexact Rounded

+nextt584 nexttoward  -1E-1007           -Infinity -> -2E-1007        Underflow Subnormal Inexact Rounded

+nextt585 nexttoward  -2E-1007           -Infinity -> -3E-1007        Underflow Subnormal Inexact Rounded

+nextt586 nexttoward  -10E-1007          -Infinity -> -1.1E-1006      Underflow Subnormal Inexact Rounded

+nextt587 nexttoward  -100E-1007         -Infinity -> -1.01E-1005     Underflow Subnormal Inexact Rounded

+nextt588 nexttoward  -100000E-1007      -Infinity -> -1.00001E-1002  Underflow Subnormal Inexact Rounded

+nextt589 nexttoward  -1.0000E-999       -Infinity -> -1.00000001E-999

+nextt590 nexttoward  -1.00000000E-999   -Infinity -> -1.00000001E-999

+nextt591 nexttoward  -1E-999            -Infinity -> -1.00000001E-999

+nextt592 nexttoward  -9.99999998E+999   -Infinity -> -9.99999999E+999

+nextt593 nexttoward  -9.99999999E+999   -Infinity -> -Infinity Overflow Inexact Rounded

+

+

+

+

+------- Specials

+maxExponent: 384

+minexponent: -383

+nextt780 nexttoward -Inf  -Inf   -> -Infinity

+nextt781 nexttoward -Inf  -1000  -> -9.99999999E+384

+nextt782 nexttoward -Inf  -1     -> -9.99999999E+384

+nextt783 nexttoward -Inf  -0     -> -9.99999999E+384

+nextt784 nexttoward -Inf   0     -> -9.99999999E+384

+nextt785 nexttoward -Inf   1     -> -9.99999999E+384

+nextt786 nexttoward -Inf   1000  -> -9.99999999E+384

+nextt787 nexttoward -1000 -Inf   -> -1000.00001

+nextt788 nexttoward -Inf  -Inf   -> -Infinity

+nextt789 nexttoward -1    -Inf   -> -1.00000001

+nextt790 nexttoward -0    -Inf   -> -1E-391           Underflow Subnormal Inexact Rounded

+nextt791 nexttoward  0    -Inf   -> -1E-391           Underflow Subnormal Inexact Rounded

+nextt792 nexttoward  1    -Inf   ->  0.999999999

+nextt793 nexttoward  1000 -Inf   ->  999.999999

+nextt794 nexttoward  Inf  -Inf   ->  9.99999999E+384

+

+nextt800 nexttoward  Inf  -Inf   ->  9.99999999E+384

+nextt801 nexttoward  Inf  -1000  ->  9.99999999E+384

+nextt802 nexttoward  Inf  -1     ->  9.99999999E+384

+nextt803 nexttoward  Inf  -0     ->  9.99999999E+384

+nextt804 nexttoward  Inf   0     ->  9.99999999E+384

+nextt805 nexttoward  Inf   1     ->  9.99999999E+384

+nextt806 nexttoward  Inf   1000  ->  9.99999999E+384

+nextt807 nexttoward  Inf   Inf   ->  Infinity

+nextt808 nexttoward -1000  Inf   -> -999.999999

+nextt809 nexttoward -Inf   Inf   -> -9.99999999E+384

+nextt810 nexttoward -1     Inf   -> -0.999999999

+nextt811 nexttoward -0     Inf   ->  1E-391           Underflow Subnormal Inexact Rounded

+nextt812 nexttoward  0     Inf   ->  1E-391           Underflow Subnormal Inexact Rounded

+nextt813 nexttoward  1     Inf   ->  1.00000001

+nextt814 nexttoward  1000  Inf   ->  1000.00001

+nextt815 nexttoward  Inf   Inf   ->  Infinity

+

+nextt821 nexttoward  NaN -Inf    ->  NaN

+nextt822 nexttoward  NaN -1000   ->  NaN

+nextt823 nexttoward  NaN -1      ->  NaN

+nextt824 nexttoward  NaN -0      ->  NaN

+nextt825 nexttoward  NaN  0      ->  NaN

+nextt826 nexttoward  NaN  1      ->  NaN

+nextt827 nexttoward  NaN  1000   ->  NaN

+nextt828 nexttoward  NaN  Inf    ->  NaN

+nextt829 nexttoward  NaN  NaN    ->  NaN

+nextt830 nexttoward -Inf  NaN    ->  NaN

+nextt831 nexttoward -1000 NaN    ->  NaN

+nextt832 nexttoward -1    NaN    ->  NaN

+nextt833 nexttoward -0    NaN    ->  NaN

+nextt834 nexttoward  0    NaN    ->  NaN

+nextt835 nexttoward  1    NaN    ->  NaN

+nextt836 nexttoward  1000 NaN    ->  NaN

+nextt837 nexttoward  Inf  NaN    ->  NaN

+

+nextt841 nexttoward  sNaN -Inf   ->  NaN  Invalid_operation

+nextt842 nexttoward  sNaN -1000  ->  NaN  Invalid_operation

+nextt843 nexttoward  sNaN -1     ->  NaN  Invalid_operation

+nextt844 nexttoward  sNaN -0     ->  NaN  Invalid_operation

+nextt845 nexttoward  sNaN  0     ->  NaN  Invalid_operation

+nextt846 nexttoward  sNaN  1     ->  NaN  Invalid_operation

+nextt847 nexttoward  sNaN  1000  ->  NaN  Invalid_operation

+nextt848 nexttoward  sNaN  NaN   ->  NaN  Invalid_operation

+nextt849 nexttoward  sNaN sNaN   ->  NaN  Invalid_operation

+nextt850 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation

+nextt851 nexttoward -Inf  sNaN   ->  NaN  Invalid_operation

+nextt852 nexttoward -1000 sNaN   ->  NaN  Invalid_operation

+nextt853 nexttoward -1    sNaN   ->  NaN  Invalid_operation

+nextt854 nexttoward -0    sNaN   ->  NaN  Invalid_operation

+nextt855 nexttoward  0    sNaN   ->  NaN  Invalid_operation

+nextt856 nexttoward  1    sNaN   ->  NaN  Invalid_operation

+nextt857 nexttoward  1000 sNaN   ->  NaN  Invalid_operation

+nextt858 nexttoward  Inf  sNaN   ->  NaN  Invalid_operation

+nextt859 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+nextt861 nexttoward  NaN1   -Inf    ->  NaN1

+nextt862 nexttoward +NaN2   -1000   ->  NaN2

+nextt863 nexttoward  NaN3    1000   ->  NaN3

+nextt864 nexttoward  NaN4    Inf    ->  NaN4

+nextt865 nexttoward  NaN5   +NaN6   ->  NaN5

+nextt866 nexttoward -Inf     NaN7   ->  NaN7

+nextt867 nexttoward -1000    NaN8   ->  NaN8

+nextt868 nexttoward  1000    NaN9   ->  NaN9

+nextt869 nexttoward  Inf    +NaN10  ->  NaN10

+nextt871 nexttoward  sNaN11  -Inf   ->  NaN11  Invalid_operation

+nextt872 nexttoward  sNaN12  -1000  ->  NaN12  Invalid_operation

+nextt873 nexttoward  sNaN13   1000  ->  NaN13  Invalid_operation

+nextt874 nexttoward  sNaN14   NaN17 ->  NaN14  Invalid_operation

+nextt875 nexttoward  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+nextt876 nexttoward  NaN16   sNaN19 ->  NaN19  Invalid_operation

+nextt877 nexttoward -Inf    +sNaN20 ->  NaN20  Invalid_operation

+nextt878 nexttoward -1000    sNaN21 ->  NaN21  Invalid_operation

+nextt879 nexttoward  1000    sNaN22 ->  NaN22  Invalid_operation

+nextt880 nexttoward  Inf     sNaN23 ->  NaN23  Invalid_operation

+nextt881 nexttoward +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+nextt882 nexttoward -NaN26    NaN28 -> -NaN26

+nextt883 nexttoward -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+nextt884 nexttoward  1000    -NaN30 -> -NaN30

+nextt885 nexttoward  1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- Null tests

+nextt900 nexttoward 1  # -> NaN Invalid_operation

+nextt901 nexttoward #  1 -> NaN Invalid_operation

+

diff --git a/Lib/test/decimaltestdata/normalize.decTest b/Lib/test/decimaltestdata/normalize.decTest
deleted file mode 100644
index 5708839..0000000
--- a/Lib/test/decimaltestdata/normalize.decTest
+++ /dev/null
@@ -1,225 +0,0 @@
-------------------------------------------------------------------------
--- normalize.decTest -- remove trailing zeros                         --
--- Copyright (c) IBM Corporation, 2003.  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.39
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
-
-nrmx001 normalize '1'      -> '1'
-nrmx002 normalize '-1'     -> '-1'
-nrmx003 normalize '1.00'   -> '1'
-nrmx004 normalize '-1.00'  -> '-1'
-nrmx005 normalize '0'      -> '0'
-nrmx006 normalize '0.00'   -> '0'
-nrmx007 normalize '00.0'   -> '0'
-nrmx008 normalize '00.00'  -> '0'
-nrmx009 normalize '00'     -> '0'
-nrmx010 normalize '0E+1'   -> '0'
-nrmx011 normalize '0E+5'   -> '0'
-
-nrmx012 normalize '-2'     -> '-2'
-nrmx013 normalize '2'      -> '2'
-nrmx014 normalize '-2.00'  -> '-2'
-nrmx015 normalize '2.00'   -> '2'
-nrmx016 normalize '-0'     -> '-0'
-nrmx017 normalize '-0.00'  -> '-0'
-nrmx018 normalize '-00.0'  -> '-0'
-nrmx019 normalize '-00.00' -> '-0'
-nrmx020 normalize '-00'    -> '-0'
-nrmx021 normalize '-0E+5'   -> '-0'
-nrmx022 normalize '-0E+1'  -> '-0'
-
-nrmx030 normalize '+0.1'            -> '0.1'
-nrmx031 normalize '-0.1'            -> '-0.1'
-nrmx032 normalize '+0.01'           -> '0.01'
-nrmx033 normalize '-0.01'           -> '-0.01'
-nrmx034 normalize '+0.001'          -> '0.001'
-nrmx035 normalize '-0.001'          -> '-0.001'
-nrmx036 normalize '+0.000001'       -> '0.000001'
-nrmx037 normalize '-0.000001'       -> '-0.000001'
-nrmx038 normalize '+0.000000000001' -> '1E-12'
-nrmx039 normalize '-0.000000000001' -> '-1E-12'
-
-nrmx041 normalize 1.1        -> 1.1
-nrmx042 normalize 1.10       -> 1.1
-nrmx043 normalize 1.100      -> 1.1
-nrmx044 normalize 1.110      -> 1.11
-nrmx045 normalize -1.1       -> -1.1
-nrmx046 normalize -1.10      -> -1.1
-nrmx047 normalize -1.100     -> -1.1
-nrmx048 normalize -1.110     -> -1.11
-nrmx049 normalize 9.9        -> 9.9
-nrmx050 normalize 9.90       -> 9.9
-nrmx051 normalize 9.900      -> 9.9
-nrmx052 normalize 9.990      -> 9.99
-nrmx053 normalize -9.9       -> -9.9
-nrmx054 normalize -9.90      -> -9.9
-nrmx055 normalize -9.900     -> -9.9
-nrmx056 normalize -9.990     -> -9.99
-
--- some trailing fractional zeros with zeros in units
-nrmx060 normalize  10.0        -> 1E+1
-nrmx061 normalize  10.00       -> 1E+1
-nrmx062 normalize  100.0       -> 1E+2
-nrmx063 normalize  100.00      -> 1E+2
-nrmx064 normalize  1.1000E+3   -> 1.1E+3
-nrmx065 normalize  1.10000E+3  -> 1.1E+3
-nrmx066 normalize -10.0        -> -1E+1
-nrmx067 normalize -10.00       -> -1E+1
-nrmx068 normalize -100.0       -> -1E+2
-nrmx069 normalize -100.00      -> -1E+2
-nrmx070 normalize -1.1000E+3   -> -1.1E+3
-nrmx071 normalize -1.10000E+3  -> -1.1E+3
-
--- some insignificant trailing zeros with positive exponent
-nrmx080 normalize  10E+1       -> 1E+2
-nrmx081 normalize  100E+1      -> 1E+3
-nrmx082 normalize  1.0E+2      -> 1E+2
-nrmx083 normalize  1.0E+3      -> 1E+3
-nrmx084 normalize  1.1E+3      -> 1.1E+3
-nrmx085 normalize  1.00E+3     -> 1E+3
-nrmx086 normalize  1.10E+3     -> 1.1E+3
-nrmx087 normalize -10E+1       -> -1E+2
-nrmx088 normalize -100E+1      -> -1E+3
-nrmx089 normalize -1.0E+2      -> -1E+2
-nrmx090 normalize -1.0E+3      -> -1E+3
-nrmx091 normalize -1.1E+3      -> -1.1E+3
-nrmx092 normalize -1.00E+3     -> -1E+3
-nrmx093 normalize -1.10E+3     -> -1.1E+3
-
--- some significant trailing zeros, were we to be trimming
-nrmx100 normalize  11          -> 11
-nrmx101 normalize  10          -> 1E+1
-nrmx102 normalize  10.         -> 1E+1
-nrmx103 normalize  1.1E+1      -> 11
-nrmx104 normalize  1.0E+1      -> 1E+1
-nrmx105 normalize  1.10E+2     -> 1.1E+2
-nrmx106 normalize  1.00E+2     -> 1E+2
-nrmx107 normalize  1.100E+3    -> 1.1E+3
-nrmx108 normalize  1.000E+3    -> 1E+3
-nrmx109 normalize  1.000000E+6 -> 1E+6
-nrmx110 normalize -11          -> -11
-nrmx111 normalize -10          -> -1E+1
-nrmx112 normalize -10.         -> -1E+1
-nrmx113 normalize -1.1E+1      -> -11
-nrmx114 normalize -1.0E+1      -> -1E+1
-nrmx115 normalize -1.10E+2     -> -1.1E+2
-nrmx116 normalize -1.00E+2     -> -1E+2
-nrmx117 normalize -1.100E+3    -> -1.1E+3
-nrmx118 normalize -1.000E+3    -> -1E+3
-nrmx119 normalize -1.00000E+5  -> -1E+5
-nrmx120 normalize -1.000000E+6 -> -1E+6
-nrmx121 normalize -10.00000E+6 -> -1E+7
-nrmx122 normalize -100.0000E+6 -> -1E+8
-nrmx123 normalize -1000.000E+6 -> -1E+9
-nrmx124 normalize -10000.00E+6 -> -1E+10
-nrmx125 normalize -100000.0E+6 -> -1E+11
-nrmx126 normalize -1000000.E+6 -> -1E+12
-
--- examples from decArith
-nrmx140 normalize '2.1'     ->  '2.1'
-nrmx141 normalize '-2.0'    ->  '-2'
-nrmx142 normalize '1.200'   ->  '1.2'
-nrmx143 normalize '-120'    ->  '-1.2E+2'
-nrmx144 normalize '120.00'  ->  '1.2E+2'
-nrmx145 normalize '0.00'    ->  '0'
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-nrmx160 normalize 9.999E+999999999  ->  Infinity Inexact Overflow Rounded
-nrmx161 normalize -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-nrmx210 normalize  1.00E-999        ->   1E-999
-nrmx211 normalize  0.1E-999         ->   1E-1000   Subnormal
-nrmx212 normalize  0.10E-999        ->   1E-1000   Subnormal
-nrmx213 normalize  0.100E-999       ->   1E-1000   Subnormal Rounded
-nrmx214 normalize  0.01E-999        ->   1E-1001   Subnormal
--- next is rounded to Emin
-nrmx215 normalize  0.999E-999       ->   1E-999    Inexact Rounded Subnormal Underflow
-nrmx216 normalize  0.099E-999       ->   1E-1000   Inexact Rounded Subnormal Underflow
-nrmx217 normalize  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-nrmx218 normalize  0.001E-999       ->   0         Inexact Rounded Subnormal Underflow
-nrmx219 normalize  0.0009E-999      ->   0         Inexact Rounded Subnormal Underflow
-nrmx220 normalize  0.0001E-999      ->   0         Inexact Rounded Subnormal Underflow
-
-nrmx230 normalize -1.00E-999        ->  -1E-999
-nrmx231 normalize -0.1E-999         ->  -1E-1000   Subnormal
-nrmx232 normalize -0.10E-999        ->  -1E-1000   Subnormal
-nrmx233 normalize -0.100E-999       ->  -1E-1000   Subnormal Rounded
-nrmx234 normalize -0.01E-999        ->  -1E-1001   Subnormal
--- next is rounded to Emin
-nrmx235 normalize -0.999E-999       ->  -1E-999    Inexact Rounded Subnormal Underflow
-nrmx236 normalize -0.099E-999       ->  -1E-1000   Inexact Rounded Subnormal Underflow
-nrmx237 normalize -0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
-nrmx238 normalize -0.001E-999       ->  -0         Inexact Rounded Subnormal Underflow
-nrmx239 normalize -0.0009E-999      ->  -0         Inexact Rounded Subnormal Underflow
-nrmx240 normalize -0.0001E-999      ->  -0         Inexact Rounded Subnormal Underflow
-
--- more reshaping
-precision: 9
-nrmx260 normalize '56260E-10'   -> '0.000005626'
-nrmx261 normalize '56260E-5'    -> '0.5626'
-nrmx262 normalize '56260E-2'    -> '562.6'
-nrmx263 normalize '56260E-1'    -> '5626'
-nrmx265 normalize '56260E-0'    -> '5.626E+4'
-nrmx266 normalize '56260E+0'    -> '5.626E+4'
-nrmx267 normalize '56260E+1'    -> '5.626E+5'
-nrmx268 normalize '56260E+2'    -> '5.626E+6'
-nrmx269 normalize '56260E+3'    -> '5.626E+7'
-nrmx270 normalize '56260E+4'    -> '5.626E+8'
-nrmx271 normalize '56260E+5'    -> '5.626E+9'
-nrmx272 normalize '56260E+6'    -> '5.626E+10'
-nrmx280 normalize '-56260E-10'  -> '-0.000005626'
-nrmx281 normalize '-56260E-5'   -> '-0.5626'
-nrmx282 normalize '-56260E-2'   -> '-562.6'
-nrmx283 normalize '-56260E-1'   -> '-5626'
-nrmx285 normalize '-56260E-0'   -> '-5.626E+4'
-nrmx286 normalize '-56260E+0'   -> '-5.626E+4'
-nrmx287 normalize '-56260E+1'   -> '-5.626E+5'
-nrmx288 normalize '-56260E+2'   -> '-5.626E+6'
-nrmx289 normalize '-56260E+3'   -> '-5.626E+7'
-nrmx290 normalize '-56260E+4'   -> '-5.626E+8'
-nrmx291 normalize '-56260E+5'   -> '-5.626E+9'
-nrmx292 normalize '-56260E+6'   -> '-5.626E+10'
-
-
--- specials
-nrmx820 normalize 'Inf'    -> 'Infinity'
-nrmx821 normalize '-Inf'   -> '-Infinity'
-nrmx822 normalize   NaN    ->  NaN
-nrmx823 normalize  sNaN    ->  NaN    Invalid_operation
-nrmx824 normalize   NaN101 ->  NaN101
-nrmx825 normalize  sNaN010 ->  NaN10  Invalid_operation
-nrmx827 normalize  -NaN    -> -NaN
-nrmx828 normalize -sNaN    -> -NaN    Invalid_operation
-nrmx829 normalize  -NaN101 -> -NaN101
-nrmx830 normalize -sNaN010 -> -NaN10  Invalid_operation
-
--- Null test
-nrmx900 normalize  # -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/or.decTest b/Lib/test/decimaltestdata/or.decTest
new file mode 100644
index 0000000..ace901b
--- /dev/null
+++ b/Lib/test/decimaltestdata/or.decTest
@@ -0,0 +1,334 @@
+------------------------------------------------------------------------

+-- or.decTest -- digitwise logical OR                                 --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check (truth table)

+orx001 or             0    0 ->    0

+orx002 or             0    1 ->    1

+orx003 or             1    0 ->    1

+orx004 or             1    1 ->    1

+orx005 or          1100 1010 -> 1110

+-- and at msd and msd-1

+orx006 or 000000000 000000000 ->           0

+orx007 or 000000000 100000000 ->   100000000

+orx008 or 100000000 000000000 ->   100000000

+orx009 or 100000000 100000000 ->   100000000

+orx010 or 000000000 000000000 ->           0

+orx011 or 000000000 010000000 ->    10000000

+orx012 or 010000000 000000000 ->    10000000

+orx013 or 010000000 010000000 ->    10000000

+

+-- Various lengths

+--        123456789     123456789      123456789

+orx021 or 111111111     111111111  ->  111111111

+orx022 or 111111111111  111111111  ->  111111111

+orx023 or  11111111      11111111  ->   11111111

+orx025 or   1111111       1111111  ->    1111111

+orx026 or    111111        111111  ->     111111

+orx027 or     11111         11111  ->      11111

+orx028 or      1111          1111  ->       1111

+orx029 or       111           111  ->        111

+orx031 or        11            11  ->         11

+orx032 or         1             1  ->          1

+orx033 or 111111111111 1111111111  ->  111111111

+orx034 or 11111111111 11111111111  ->  111111111

+orx035 or 1111111111 111111111111  ->  111111111

+orx036 or 111111111 1111111111111  ->  111111111

+

+orx040 or 111111111  111111111111  ->  111111111

+orx041 or  11111111  111111111111  ->  111111111

+orx042 or  11111111     111111111  ->  111111111

+orx043 or   1111111     100000010  ->  101111111

+orx044 or    111111     100000100  ->  100111111

+orx045 or     11111     100001000  ->  100011111

+orx046 or      1111     100010000  ->  100011111

+orx047 or       111     100100000  ->  100100111

+orx048 or        11     101000000  ->  101000011

+orx049 or         1     110000000  ->  110000001

+

+orx050 or 1111111111  1  ->  111111111

+orx051 or  111111111  1  ->  111111111

+orx052 or   11111111  1  ->  11111111

+orx053 or    1111111  1  ->  1111111

+orx054 or     111111  1  ->  111111

+orx055 or      11111  1  ->  11111

+orx056 or       1111  1  ->  1111

+orx057 or        111  1  ->  111

+orx058 or         11  1  ->  11

+orx059 or          1  1  ->  1

+

+orx060 or 1111111111  0  ->  111111111

+orx061 or  111111111  0  ->  111111111

+orx062 or   11111111  0  ->  11111111

+orx063 or    1111111  0  ->  1111111

+orx064 or     111111  0  ->  111111

+orx065 or      11111  0  ->  11111

+orx066 or       1111  0  ->  1111

+orx067 or        111  0  ->  111

+orx068 or         11  0  ->  11

+orx069 or          1  0  ->  1

+

+orx070 or 1  1111111111  ->  111111111

+orx071 or 1   111111111  ->  111111111

+orx072 or 1    11111111  ->  11111111

+orx073 or 1     1111111  ->  1111111

+orx074 or 1      111111  ->  111111

+orx075 or 1       11111  ->  11111

+orx076 or 1        1111  ->  1111

+orx077 or 1         111  ->  111

+orx078 or 1          11  ->  11

+orx079 or 1           1  ->  1

+

+orx080 or 0  1111111111  ->  111111111

+orx081 or 0   111111111  ->  111111111

+orx082 or 0    11111111  ->  11111111

+orx083 or 0     1111111  ->  1111111

+orx084 or 0      111111  ->  111111

+orx085 or 0       11111  ->  11111

+orx086 or 0        1111  ->  1111

+orx087 or 0         111  ->  111

+orx088 or 0          11  ->  11

+orx089 or 0           1  ->  1

+

+orx090 or 011111111  111101111  ->  111111111

+orx091 or 101111111  111101111  ->  111111111

+orx092 or 110111111  111101111  ->  111111111

+orx093 or 111011111  111101111  ->  111111111

+orx094 or 111101111  111101111  ->  111101111

+orx095 or 111110111  111101111  ->  111111111

+orx096 or 111111011  111101111  ->  111111111

+orx097 or 111111101  111101111  ->  111111111

+orx098 or 111111110  111101111  ->  111111111

+

+orx100 or 111101111  011111111  ->  111111111

+orx101 or 111101111  101111111  ->  111111111

+orx102 or 111101111  110111111  ->  111111111

+orx103 or 111101111  111011111  ->  111111111

+orx104 or 111101111  111101111  ->  111101111

+orx105 or 111101111  111110111  ->  111111111

+orx106 or 111101111  111111011  ->  111111111

+orx107 or 111101111  111111101  ->  111111111

+orx108 or 111101111  111111110  ->  111111111

+

+-- non-0/1 should not be accepted, nor should signs

+orx220 or 111111112  111111111  ->  NaN Invalid_operation

+orx221 or 333333333  333333333  ->  NaN Invalid_operation

+orx222 or 555555555  555555555  ->  NaN Invalid_operation

+orx223 or 777777777  777777777  ->  NaN Invalid_operation

+orx224 or 999999999  999999999  ->  NaN Invalid_operation

+orx225 or 222222222  999999999  ->  NaN Invalid_operation

+orx226 or 444444444  999999999  ->  NaN Invalid_operation

+orx227 or 666666666  999999999  ->  NaN Invalid_operation

+orx228 or 888888888  999999999  ->  NaN Invalid_operation

+orx229 or 999999999  222222222  ->  NaN Invalid_operation

+orx230 or 999999999  444444444  ->  NaN Invalid_operation

+orx231 or 999999999  666666666  ->  NaN Invalid_operation

+orx232 or 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+orx240 or  567468689 -934981942 ->  NaN Invalid_operation

+orx241 or  567367689  934981942 ->  NaN Invalid_operation

+orx242 or -631917772 -706014634 ->  NaN Invalid_operation

+orx243 or -756253257  138579234 ->  NaN Invalid_operation

+orx244 or  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+orx250 or  200000000 100000000 ->  NaN Invalid_operation

+orx251 or  700000000 100000000 ->  NaN Invalid_operation

+orx252 or  800000000 100000000 ->  NaN Invalid_operation

+orx253 or  900000000 100000000 ->  NaN Invalid_operation

+orx254 or  200000000 000000000 ->  NaN Invalid_operation

+orx255 or  700000000 000000000 ->  NaN Invalid_operation

+orx256 or  800000000 000000000 ->  NaN Invalid_operation

+orx257 or  900000000 000000000 ->  NaN Invalid_operation

+orx258 or  100000000 200000000 ->  NaN Invalid_operation

+orx259 or  100000000 700000000 ->  NaN Invalid_operation

+orx260 or  100000000 800000000 ->  NaN Invalid_operation

+orx261 or  100000000 900000000 ->  NaN Invalid_operation

+orx262 or  000000000 200000000 ->  NaN Invalid_operation

+orx263 or  000000000 700000000 ->  NaN Invalid_operation

+orx264 or  000000000 800000000 ->  NaN Invalid_operation

+orx265 or  000000000 900000000 ->  NaN Invalid_operation

+-- test MSD-1

+orx270 or  020000000 100000000 ->  NaN Invalid_operation

+orx271 or  070100000 100000000 ->  NaN Invalid_operation

+orx272 or  080010000 100000001 ->  NaN Invalid_operation

+orx273 or  090001000 100000010 ->  NaN Invalid_operation

+orx274 or  100000100 020010100 ->  NaN Invalid_operation

+orx275 or  100000000 070001000 ->  NaN Invalid_operation

+orx276 or  100000010 080010100 ->  NaN Invalid_operation

+orx277 or  100000000 090000010 ->  NaN Invalid_operation

+-- test LSD

+orx280 or  001000002 100000000 ->  NaN Invalid_operation

+orx281 or  000000007 100000000 ->  NaN Invalid_operation

+orx282 or  000000008 100000000 ->  NaN Invalid_operation

+orx283 or  000000009 100000000 ->  NaN Invalid_operation

+orx284 or  100000000 000100002 ->  NaN Invalid_operation

+orx285 or  100100000 001000007 ->  NaN Invalid_operation

+orx286 or  100010000 010000008 ->  NaN Invalid_operation

+orx287 or  100001000 100000009 ->  NaN Invalid_operation

+-- test Middie

+orx288 or  001020000 100000000 ->  NaN Invalid_operation

+orx289 or  000070001 100000000 ->  NaN Invalid_operation

+orx290 or  000080000 100010000 ->  NaN Invalid_operation

+orx291 or  000090000 100001000 ->  NaN Invalid_operation

+orx292 or  100000010 000020100 ->  NaN Invalid_operation

+orx293 or  100100000 000070010 ->  NaN Invalid_operation

+orx294 or  100010100 000080001 ->  NaN Invalid_operation

+orx295 or  100001000 000090000 ->  NaN Invalid_operation

+-- signs

+orx296 or -100001000 -000000000 ->  NaN Invalid_operation

+orx297 or -100001000  000010000 ->  NaN Invalid_operation

+orx298 or  100001000 -000000000 ->  NaN Invalid_operation

+orx299 or  100001000  000011000 ->  100011000

+

+-- Nmax, Nmin, Ntiny

+orx331 or  2   9.99999999E+999     -> NaN Invalid_operation

+orx332 or  3   1E-999              -> NaN Invalid_operation

+orx333 or  4   1.00000000E-999     -> NaN Invalid_operation

+orx334 or  5   1E-1007             -> NaN Invalid_operation

+orx335 or  6   -1E-1007            -> NaN Invalid_operation

+orx336 or  7   -1.00000000E-999    -> NaN Invalid_operation

+orx337 or  8   -1E-999             -> NaN Invalid_operation

+orx338 or  9   -9.99999999E+999    -> NaN Invalid_operation

+orx341 or  9.99999999E+999     -18 -> NaN Invalid_operation

+orx342 or  1E-999               01 -> NaN Invalid_operation

+orx343 or  1.00000000E-999     -18 -> NaN Invalid_operation

+orx344 or  1E-1007              18 -> NaN Invalid_operation

+orx345 or  -1E-1007            -10 -> NaN Invalid_operation

+orx346 or  -1.00000000E-999     18 -> NaN Invalid_operation

+orx347 or  -1E-999              10 -> NaN Invalid_operation

+orx348 or  -9.99999999E+999    -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+orx361 or  1.0                  1  -> NaN Invalid_operation

+orx362 or  1E+1                 1  -> NaN Invalid_operation

+orx363 or  0.0                  1  -> NaN Invalid_operation

+orx364 or  0E+1                 1  -> NaN Invalid_operation

+orx365 or  9.9                  1  -> NaN Invalid_operation

+orx366 or  9E+1                 1  -> NaN Invalid_operation

+orx371 or  0 1.0                   -> NaN Invalid_operation

+orx372 or  0 1E+1                  -> NaN Invalid_operation

+orx373 or  0 0.0                   -> NaN Invalid_operation

+orx374 or  0 0E+1                  -> NaN Invalid_operation

+orx375 or  0 9.9                   -> NaN Invalid_operation

+orx376 or  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+orx780 or -Inf  -Inf   -> NaN Invalid_operation

+orx781 or -Inf  -1000  -> NaN Invalid_operation

+orx782 or -Inf  -1     -> NaN Invalid_operation

+orx783 or -Inf  -0     -> NaN Invalid_operation

+orx784 or -Inf   0     -> NaN Invalid_operation

+orx785 or -Inf   1     -> NaN Invalid_operation

+orx786 or -Inf   1000  -> NaN Invalid_operation

+orx787 or -1000 -Inf   -> NaN Invalid_operation

+orx788 or -Inf  -Inf   -> NaN Invalid_operation

+orx789 or -1    -Inf   -> NaN Invalid_operation

+orx790 or -0    -Inf   -> NaN Invalid_operation

+orx791 or  0    -Inf   -> NaN Invalid_operation

+orx792 or  1    -Inf   -> NaN Invalid_operation

+orx793 or  1000 -Inf   -> NaN Invalid_operation

+orx794 or  Inf  -Inf   -> NaN Invalid_operation

+

+orx800 or  Inf  -Inf   -> NaN Invalid_operation

+orx801 or  Inf  -1000  -> NaN Invalid_operation

+orx802 or  Inf  -1     -> NaN Invalid_operation

+orx803 or  Inf  -0     -> NaN Invalid_operation

+orx804 or  Inf   0     -> NaN Invalid_operation

+orx805 or  Inf   1     -> NaN Invalid_operation

+orx806 or  Inf   1000  -> NaN Invalid_operation

+orx807 or  Inf   Inf   -> NaN Invalid_operation

+orx808 or -1000  Inf   -> NaN Invalid_operation

+orx809 or -Inf   Inf   -> NaN Invalid_operation

+orx810 or -1     Inf   -> NaN Invalid_operation

+orx811 or -0     Inf   -> NaN Invalid_operation

+orx812 or  0     Inf   -> NaN Invalid_operation

+orx813 or  1     Inf   -> NaN Invalid_operation

+orx814 or  1000  Inf   -> NaN Invalid_operation

+orx815 or  Inf   Inf   -> NaN Invalid_operation

+

+orx821 or  NaN -Inf    -> NaN Invalid_operation

+orx822 or  NaN -1000   -> NaN Invalid_operation

+orx823 or  NaN -1      -> NaN Invalid_operation

+orx824 or  NaN -0      -> NaN Invalid_operation

+orx825 or  NaN  0      -> NaN Invalid_operation

+orx826 or  NaN  1      -> NaN Invalid_operation

+orx827 or  NaN  1000   -> NaN Invalid_operation

+orx828 or  NaN  Inf    -> NaN Invalid_operation

+orx829 or  NaN  NaN    -> NaN Invalid_operation

+orx830 or -Inf  NaN    -> NaN Invalid_operation

+orx831 or -1000 NaN    -> NaN Invalid_operation

+orx832 or -1    NaN    -> NaN Invalid_operation

+orx833 or -0    NaN    -> NaN Invalid_operation

+orx834 or  0    NaN    -> NaN Invalid_operation

+orx835 or  1    NaN    -> NaN Invalid_operation

+orx836 or  1000 NaN    -> NaN Invalid_operation

+orx837 or  Inf  NaN    -> NaN Invalid_operation

+

+orx841 or  sNaN -Inf   ->  NaN  Invalid_operation

+orx842 or  sNaN -1000  ->  NaN  Invalid_operation

+orx843 or  sNaN -1     ->  NaN  Invalid_operation

+orx844 or  sNaN -0     ->  NaN  Invalid_operation

+orx845 or  sNaN  0     ->  NaN  Invalid_operation

+orx846 or  sNaN  1     ->  NaN  Invalid_operation

+orx847 or  sNaN  1000  ->  NaN  Invalid_operation

+orx848 or  sNaN  NaN   ->  NaN  Invalid_operation

+orx849 or  sNaN sNaN   ->  NaN  Invalid_operation

+orx850 or  NaN  sNaN   ->  NaN  Invalid_operation

+orx851 or -Inf  sNaN   ->  NaN  Invalid_operation

+orx852 or -1000 sNaN   ->  NaN  Invalid_operation

+orx853 or -1    sNaN   ->  NaN  Invalid_operation

+orx854 or -0    sNaN   ->  NaN  Invalid_operation

+orx855 or  0    sNaN   ->  NaN  Invalid_operation

+orx856 or  1    sNaN   ->  NaN  Invalid_operation

+orx857 or  1000 sNaN   ->  NaN  Invalid_operation

+orx858 or  Inf  sNaN   ->  NaN  Invalid_operation

+orx859 or  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+orx861 or  NaN1   -Inf    -> NaN Invalid_operation

+orx862 or +NaN2   -1000   -> NaN Invalid_operation

+orx863 or  NaN3    1000   -> NaN Invalid_operation

+orx864 or  NaN4    Inf    -> NaN Invalid_operation

+orx865 or  NaN5   +NaN6   -> NaN Invalid_operation

+orx866 or -Inf     NaN7   -> NaN Invalid_operation

+orx867 or -1000    NaN8   -> NaN Invalid_operation

+orx868 or  1000    NaN9   -> NaN Invalid_operation

+orx869 or  Inf    +NaN10  -> NaN Invalid_operation

+orx871 or  sNaN11  -Inf   -> NaN Invalid_operation

+orx872 or  sNaN12  -1000  -> NaN Invalid_operation

+orx873 or  sNaN13   1000  -> NaN Invalid_operation

+orx874 or  sNaN14   NaN17 -> NaN Invalid_operation

+orx875 or  sNaN15  sNaN18 -> NaN Invalid_operation

+orx876 or  NaN16   sNaN19 -> NaN Invalid_operation

+orx877 or -Inf    +sNaN20 -> NaN Invalid_operation

+orx878 or -1000    sNaN21 -> NaN Invalid_operation

+orx879 or  1000    sNaN22 -> NaN Invalid_operation

+orx880 or  Inf     sNaN23 -> NaN Invalid_operation

+orx881 or +NaN25  +sNaN24 -> NaN Invalid_operation

+orx882 or -NaN26    NaN28 -> NaN Invalid_operation

+orx883 or -sNaN27  sNaN29 -> NaN Invalid_operation

+orx884 or  1000    -NaN30 -> NaN Invalid_operation

+orx885 or  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/plus.decTest b/Lib/test/decimaltestdata/plus.decTest
index a6d8e58..1df3dfe 100644
--- a/Lib/test/decimaltestdata/plus.decTest
+++ b/Lib/test/decimaltestdata/plus.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- plus.decTest -- decimal monadic addition                           --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- This set of tests primarily tests the existence of the operator.
 -- Addition and rounding, and most overflows, are tested elsewhere.
@@ -138,9 +138,9 @@
 plux215 plus  0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
 plux216 plus  0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
 plux217 plus  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-plux218 plus  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow
-plux219 plus  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
-plux220 plus  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
+plux218 plus  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+plux219 plus  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+plux220 plus  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 plux230 plus -1.00E-999        ->  -1.00E-999
 plux231 plus -0.1E-999         ->  -1E-1000   Subnormal
@@ -151,9 +151,23 @@
 plux235 plus -0.999E-999       ->  -1.00E-999 Inexact Rounded Subnormal Underflow
 plux236 plus -0.099E-999       ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
 plux237 plus -0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
-plux238 plus -0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow
-plux239 plus -0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow
-plux240 plus -0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow
+plux238 plus -0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+plux239 plus -0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+plux240 plus -0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+
+-- subnormals clamped to 0-Etiny
+precision:   16
+maxExponent: 384
+minExponent: -383
+plux251 plus 7E-398     -> 7E-398 Subnormal
+plux252 plus 0E-398     -> 0E-398
+plux253 plus 7E-399     -> 1E-398 Subnormal Underflow Inexact Rounded
+plux254 plus 4E-399     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
+plux255 plus 7E-400     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
+plux256 plus 7E-401     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
+plux257 plus 0E-399     -> 0E-398 Clamped
+plux258 plus 0E-400     -> 0E-398 Clamped
+plux259 plus 0E-401     -> 0E-398 Clamped
 
 -- long operand checks
 maxexponent: 999
diff --git a/Lib/test/decimaltestdata/power.decTest b/Lib/test/decimaltestdata/power.decTest
index 748d66a..69e8644 100644
--- a/Lib/test/decimaltestdata/power.decTest
+++ b/Lib/test/decimaltestdata/power.decTest
@@ -1,6 +1,6 @@
-----------------------------------------------------------------------
--- power.decTest -- decimal exponentiation                            --
--- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
+------------------------------------------------------------------------
+-- power.decTest -- decimal exponentiation [power(x, y)]              --
+-- 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      --
@@ -17,17 +17,17 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
--- This set of testcases tests raising numbers to an integer power only.
--- If arbitrary powers were supported, 1 ulp differences would be
--- permitted.
+-- In addition to the power operator testcases here, see also the file
+-- powersqrt.decTest which includes all the tests from
+-- squareroot.decTest implemented using power(x, 0.5)
 
 extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
+precision:   16
+rounding:    half_even
+maxExponent: 384
+minExponent: -383
 
 -- base checks.  Note 0**0 is an error.
 powx001 power    '0'  '0'         -> NaN Invalid_operation
@@ -52,51 +52,54 @@
 powx022 power    '2'  '12'        -> '4096'
 powx023 power    '2'  '15'        -> '32768'
 powx024 power    '2'  '16'        -> '65536'
-powx025 power    '2'  '31'        -> '2.14748365E+9' Inexact Rounded
+powx025 power    '2'  '31'        -> '2147483648'
 -- NB 0 not stripped in next
-powx026 power    '2'  '32'        -> '4.29496730E+9' Inexact Rounded
+powx026 power    '2'  '32'        -> '4294967296'
+
+precision: 9
+powx027 power    '2'  '31'        -> '2.14748365E+9' Inexact Rounded
+-- NB 0 not stripped in next
+powx028 power    '2'  '32'        -> '4.29496730E+9' Inexact Rounded
 precision: 10
-powx027 power    '2'  '31'        -> '2147483648'
-powx028 power    '2'  '32'        -> '4294967296'
+powx029 power    '2'  '31'        -> '2147483648'
+powx030 power    '2'  '32'        -> '4294967296'
 precision: 9
 
-powx030 power    '3'  '2'         -> 9
-powx031 power    '4'  '2'         -> 16
-powx032 power    '5'  '2'         -> 25
-powx033 power    '6'  '2'         -> 36
-powx034 power    '7'  '2'         -> 49
-powx035 power    '8'  '2'         -> 64
-powx036 power    '9'  '2'         -> 81
-powx037 power    '10' '2'         -> 100
-powx038 power    '11' '2'         -> 121
-powx039 power    '12' '2'         -> 144
+powx031 power    '3'  '2'         -> 9
+powx032 power    '4'  '2'         -> 16
+powx033 power    '5'  '2'         -> 25
+powx034 power    '6'  '2'         -> 36
+powx035 power    '7'  '2'         -> 49
+powx036 power    '8'  '2'         -> 64
+powx037 power    '9'  '2'         -> 81
+powx038 power    '10' '2'         -> 100
+powx039 power    '11' '2'         -> 121
+powx040 power    '12' '2'         -> 144
 
-powx040 power    '3'  '3'         -> 27
-powx041 power    '4'  '3'         -> 64
-powx042 power    '5'  '3'         -> 125
-powx043 power    '6'  '3'         -> 216
-powx044 power    '7'  '3'         -> 343
+powx041 power    '3'  '3'         -> 27
+powx042 power    '4'  '3'         -> 64
+powx043 power    '5'  '3'         -> 125
+powx044 power    '6'  '3'         -> 216
+powx045 power    '7'  '3'         -> 343
+powx047 power   '-3'  '3'         -> -27
+powx048 power   '-4'  '3'         -> -64
+powx049 power   '-5'  '3'         -> -125
+powx050 power   '-6'  '3'         -> -216
+powx051 power   '-7'  '3'         -> -343
 
-powx050 power   '10'  '0'         -> 1
-powx051 power   '10'  '1'         -> 10
-powx052 power   '10'  '2'         -> 100
-powx053 power   '10'  '3'         -> 1000
-powx054 power   '10'  '4'         -> 10000
-powx055 power   '10'  '5'         -> 100000
-powx056 power   '10'  '6'         -> 1000000
-powx057 power   '10'  '7'         -> 10000000
-powx058 power   '10'  '8'         -> 100000000
-powx059 power   '10'  '9'         -> 1.00000000E+9 Rounded
-powx060 power   '10'  '22'        -> 1.00000000E+22 Rounded
-powx061 power   '10'  '77'        -> 1.00000000E+77 Rounded
-powx062 power   '10'  '99'        -> 1.00000000E+99 Rounded
-
-maxexponent: 999999999
-minexponent: -999999999
-powx063 power   '10'  '999999999' -> '1.00000000E+999999999' Rounded
-powx064 power   '10'  '999999998' -> '1.00000000E+999999998' Rounded
-powx065 power   '10'  '999999997' -> '1.00000000E+999999997' Rounded
-powx066 power   '10'  '333333333' -> '1.00000000E+333333333' Rounded
+powx052 power   '10'  '0'         -> 1
+powx053 power   '10'  '1'         -> 10
+powx054 power   '10'  '2'         -> 100
+powx055 power   '10'  '3'         -> 1000
+powx056 power   '10'  '4'         -> 10000
+powx057 power   '10'  '5'         -> 100000
+powx058 power   '10'  '6'         -> 1000000
+powx059 power   '10'  '7'         -> 10000000
+powx060 power   '10'  '8'         -> 100000000
+powx061 power   '10'  '9'         -> 1.00000000E+9 Rounded
+powx062 power   '10'  '22'        -> 1.00000000E+22 Rounded
+powx063 power   '10'  '77'        -> 1.00000000E+77 Rounded
+powx064 power   '10'  '99'        -> 1.00000000E+99 Rounded
 
 powx070 power  '0.3'  '0'           -> '1'
 powx071 power  '0.3'  '1'           -> '0.3'
@@ -127,71 +130,52 @@
 powx095 power   101    7            -> 1.07213535E+14 Inexact Rounded
 
 -- negative powers
-powx101 power  '2'  '-1'  -> 0.5
-powx102 power  '2'  '-2'  -> 0.25
-powx103 power  '2'  '-4'  -> 0.0625
-powx104 power  '2'  '-8'  -> 0.00390625
-powx105 power  '2'  '-16' -> 0.0000152587891 Inexact Rounded
-powx106 power  '2'  '-32' -> 2.32830644E-10 Inexact Rounded
-powx108 power  '2'  '-64' -> 5.42101086E-20 Inexact Rounded
-powx110 power  '10'  '-8' -> 1E-8
-powx111 power  '10'  '-7' -> 1E-7
-powx112 power  '10'  '-6' -> 0.000001
-powx113 power  '10'  '-5' -> 0.00001
-powx114 power  '10'  '-4' -> 0.0001
-powx115 power  '10'  '-3' -> 0.001
-powx116 power  '10'  '-2' -> 0.01
-powx117 power  '10'  '-1' -> 0.1
+powx099 power  '1'  '-1'    -> 1
+powx100 power  '3'  '-1'    -> 0.333333333 Inexact Rounded
+powx101 power  '2'  '-1'    -> 0.5
+powx102 power  '2'  '-2'    -> 0.25
+powx103 power  '2'  '-4'    -> 0.0625
+powx104 power  '2'  '-8'    -> 0.00390625
+powx105 power  '2'  '-16'   -> 0.0000152587891 Inexact Rounded
+powx106 power  '2'  '-32'   -> 2.32830644E-10 Inexact Rounded
+powx108 power  '2'  '-64'   -> 5.42101086E-20 Inexact Rounded
+powx110 power  '10'  '-8'   -> 1E-8
+powx111 power  '10'  '-7'   -> 1E-7
+powx112 power  '10'  '-6'   -> 0.000001
+powx113 power  '10'  '-5'   -> 0.00001
+powx114 power  '10'  '-4'   -> 0.0001
+powx115 power  '10'  '-3'   -> 0.001
+powx116 power  '10'  '-2'   -> 0.01
+powx117 power  '10'  '-1'   -> 0.1
+powx121 power  '10'  '-77'  -> '1E-77'
+powx122 power  '10'  '-22'  -> '1E-22'
 
-powx118 power  '10'  '-333333333'   -> 1E-333333333
-powx119 power  '10'  '-999999998'   -> 1E-999999998
-powx120 power  '10'  '-999999999'   -> 1E-999999999
-powx121 power  '10'  '-77'          -> '1E-77'
-powx122 power  '10'  '-22'          -> '1E-22'
+powx123 power   '2'  '-1'   -> '0.5'
+powx124 power   '2'  '-2'   -> '0.25'
+powx125 power   '2'  '-4'   -> '0.0625'
 
-powx123 power   '2'  '-1'           -> '0.5'
-powx124 power   '2'  '-2'           -> '0.25'
-powx125 power   '2'  '-4'           -> '0.0625'
-powx126 power   '0'  '-1'           -> Infinity Division_by_zero
-powx127 power   '0'  '-2'           -> Infinity Division_by_zero
-powx128 power   -0   '-1'           -> -Infinity Division_by_zero
-powx129 power   -0   '-2'           -> Infinity Division_by_zero
-
--- out-of-range edge cases
-powx181 power   '7'   '999999998'   -> 2.10892313E+845098038 Inexact Rounded
-powx182 power   '7'   '999999999'   -> 1.47624619E+845098039 Inexact Rounded
-powx183 power   '7'   '1000000000'  -> NaN Invalid_operation
-powx184 power   '7'   '1000000001'  -> NaN Invalid_operation
-powx185 power   '7'   '10000000000' -> NaN Invalid_operation
-powx186 power   '7'   '-1000000001' -> NaN Invalid_operation
-powx187 power   '7'   '-1000000000' -> NaN Invalid_operation
-powx189 power   '7'   '-999999999'  -> 6.77393787E-845098040 Inexact Rounded
-powx190 power   '7'   '-999999998'  -> 4.74175651E-845098039 Inexact Rounded
-
--- some baddies [more below]
-powx191 power   '2'   '2.000001'     -> NaN Invalid_operation
-powx192 power   '2'   '2.00000000'   -> 4
-powx193 power   '2'   '2.000000001'  -> NaN Invalid_operation
-powx194 power   '2'   '2.0000000001' -> NaN Invalid_operation
+powx126 power   '0'  '-1'   -> Infinity
+powx127 power   '0'  '-2'   -> Infinity
+powx128 power   -0   '-1'   -> -Infinity
+powx129 power   -0   '-2'   -> Infinity
 
 -- "0.5" tests from original Rexx diagnostics [loop unrolled]
-powx200 power   0.5    0            -> 1
-powx201 power   0.5    1            -> 0.5
-powx202 power   0.5    2            -> 0.25
-powx203 power   0.5    3            -> 0.125
-powx204 power   0.5    4            -> 0.0625
-powx205 power   0.5    5            -> 0.03125
-powx206 power   0.5    6            -> 0.015625
-powx207 power   0.5    7            -> 0.0078125
-powx208 power   0.5    8            -> 0.00390625
-powx209 power   0.5    9            -> 0.001953125
-powx210 power   0.5   10            -> 0.0009765625
+powx200 power   0.5    0    -> 1
+powx201 power   0.5    1    -> 0.5
+powx202 power   0.5    2    -> 0.25
+powx203 power   0.5    3    -> 0.125
+powx204 power   0.5    4    -> 0.0625
+powx205 power   0.5    5    -> 0.03125
+powx206 power   0.5    6    -> 0.015625
+powx207 power   0.5    7    -> 0.0078125
+powx208 power   0.5    8    -> 0.00390625
+powx209 power   0.5    9    -> 0.001953125
+powx210 power   0.5   10    -> 0.0009765625
 
--- A (rare) case where the last digit is not within 0.5 ULP
-precision: 9
-powx215 power "-21971575.0E+31454441" "-7" -> "-4.04549503E-220181139" Inexact Rounded
-precision: 20
-powx216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded
+powx211 power 1  100000000  -> 1
+powx212 power 1  999999998  -> 1
+powx213 power 1  999999999  -> 1
+
 
 -- The Vienna case.  Checks both setup and 1/acc working precision
 -- Modified 1998.12.14 as RHS no longer rounded before use (must fit)
@@ -201,185 +185,64 @@
 -- Modified 2002.10.06 -- finally, no input rounding
 -- With input rounding, result would be 8.74E-2226
 precision: 3
+maxexponent: 5000
+minexponent: -5000
 powx219 power '123456789E+10' '-1.23000e+2' -> '5.54E-2226' Inexact Rounded
 
--- whole number checks
-precision: 9
-powx221 power 1 1234 -> 1
-precision: 4
-powx222 power 1 1234 -> 1
-precision: 3
-powx223 power 1 1234     -> 1
-powx224 power 1 12.34e+2 -> 1
-powx225 power 1 12.3     -> NaN Invalid_operation
-powx226 power 1 12.0     -> 1
-powx227 power 1 1.01     -> NaN Invalid_operation
-powx228 power 2 1.00     -> 2
-powx229 power 2 2.00     -> 4
-precision: 9
-powx230 power 1 1.0001           -> NaN Invalid_operation
-powx231 power 1 1.0000001        -> NaN Invalid_operation
-powx232 power 1 1.0000000001     -> NaN Invalid_operation
-powx233 power 1 1.0000000000001  -> NaN Invalid_operation
-precision: 5
-powx234 power 1 1.0001           -> NaN Invalid_operation
-powx235 power 1 1.0000001        -> NaN Invalid_operation
-powx236 power 1 1.0000000001     -> NaN Invalid_operation
-powx237 power 1 1.0000000000001  -> NaN Invalid_operation
-powx238 power 1 1.0000000000001  -> NaN Invalid_operation
-
-maxexponent: 999999999
-minexponent: -999999999
-powx239 power 1 5.67E-987654321  -> NaN Invalid_operation
-
-powx240 power 1  100000000 -> 1
-powx241 power 1  999999998 -> 1
-powx242 power 1  999999999 -> 1
-powx243 power 1 1000000000 -> NaN Invalid_operation
-powx244 power 1 9999999999 -> NaN Invalid_operation
-
--- Checks for 'Too much precision needed'
--- For x^12, digits+elength+1 = digits+3
-precision: 999999999
-powx249 add 1 1 -> 2   -- check basic operation at this precision
-powx250 power          2 12  -> Infinity Overflow
-precision: 999999998
-powx251 power          2 12  -> Infinity Overflow
-precision: 999999997
-powx252 power          2 12  -> Infinity Overflow
-precision: 999999996
-powx253 power          2 12  -> 4096
-precision: 999999995
-powx254 power          2 12  -> 4096
-
 -- zeros
 maxexponent: +96
 minexponent: -95
 precision: 7
-powx260 power          0E-34 3  ->  0E-101 Clamped
-powx261 power          0E-33 3  ->  0E-99
-powx262 power          0E-32 3  ->  0E-96
-powx263 power          0E-30 3  ->  0E-90
-powx264 power          0E-10 3  ->  0E-30
-powx265 power          0E-1  3  ->  0.000
-powx266 power          0E+0  3  ->  0
-powx267 power          0     3  ->  0
-powx268 power          0E+1  3  ->  0E+3
-powx269 power          0E+10 3  ->  0E+30
-powx270 power          0E+30 3  ->  0E+90
-powx271 power          0E+32 3  ->  0E+96
-powx272 power          0E+33 3  ->  0E+96  Clamped
+powx223 power          0E-30 3  ->  0
+powx224 power          0E-10 3  ->  0
+powx225 power          0E-1  3  ->  0
+powx226 power          0E+0  3  ->  0
+powx227 power          0     3  ->  0
+powx228 power          0E+1  3  ->  0
+powx229 power          0E+10 3  ->  0
+powx230 power          0E+30 3  ->  0
+powx231 power     3    0E-30    ->  1
+powx232 power     3    0E-10    ->  1
+powx233 power     3    0E-1     ->  1
+powx234 power     3    0E+0     ->  1
+powx235 power     3    0        ->  1
+powx236 power     3    0E+1     ->  1
+powx237 power     3    0E+10    ->  1
+powx238 power     3    0E+30    ->  1
+powx239 power          0E-30 -3 ->  Infinity
+powx240 power          0E-10 -3 ->  Infinity
+powx241 power          0E-1  -3 ->  Infinity
+powx242 power          0E+0  -3 ->  Infinity
+powx243 power          0     -3 ->  Infinity
+powx244 power          0E+1  -3 ->  Infinity
+powx245 power          0E+10 -3 ->  Infinity
+powx246 power          0E+30 -3 ->  Infinity
+powx247 power    -3    0E-30    ->  1
+powx248 power    -3    0E-10    ->  1
+powx249 power    -3    0E-1     ->  1
+powx250 power    -3    0E+0     ->  1
+powx251 power    -3    0        ->  1
+powx252 power    -3    0E+1     ->  1
+powx253 power    -3    0E+10    ->  1
+powx254 power    -3    0E+30    ->  1
 
--- overflow and underflow tests
-maxexponent: 999999999
-minexponent: -999999999
+-- a few lhs negatives
 precision: 9
-powx280 power  9            999999999 -> 3.05550054E+954242508 Inexact Rounded
-powx281 power 10            999999999 -> 1.00000000E+999999999 Rounded
-powx282 power 10.0001       999999999 -> Infinity Overflow Inexact Rounded
-powx283 power 10.1          999999999 -> Infinity Overflow Inexact Rounded
-powx284 power 11            999999999 -> Infinity Overflow Inexact Rounded
-powx285 power 12            999999999 -> Infinity Overflow Inexact Rounded
-powx286 power 999           999999999 -> Infinity Overflow Inexact Rounded
-powx287 power 999999        999999999 -> Infinity Overflow Inexact Rounded
-powx288 power 999999999     999999999 -> Infinity Overflow Inexact Rounded
-powx289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded
-
-powx290 power 0.5           999999999 -> 4.33559594E-301029996 Inexact Rounded
-powx291 power 0.1           999999999 -> 1E-999999999  -- unrounded
-powx292 power 0.09          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx293 power 0.05          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx294 power 0.01          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx295 power 0.0001        999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx297 power 0.0000001     999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx298 power 0.0000000001  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx299 power 1E-999999999  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
-powx310 power -9             999999999 -> -3.05550054E+954242508 Inexact Rounded
-powx311 power -10            999999999 -> -1.00000000E+999999999 Rounded
-powx312 power -10.0001       999999999 -> -Infinity Overflow Inexact Rounded
-powx313 power -10.1          999999999 -> -Infinity Overflow Inexact Rounded
-powx314 power -11            999999999 -> -Infinity Overflow Inexact Rounded
-powx315 power -12            999999999 -> -Infinity Overflow Inexact Rounded
-powx316 power -999           999999999 -> -Infinity Overflow Inexact Rounded
-powx317 power -999999        999999999 -> -Infinity Overflow Inexact Rounded
-powx318 power -999999999     999999999 -> -Infinity Overflow Inexact Rounded
-powx319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded
-
-powx320 power -0.5           999999999 -> -4.33559594E-301029996 Inexact Rounded
-powx321 power -0.1           999999999 -> -1E-999999999
-powx322 power -0.09          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx323 power -0.05          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx324 power -0.01          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx325 power -0.0001        999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx327 power -0.0000001     999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx328 power -0.0000000001  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx329 power -1E-999999999  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
--- note no trim of next result
-powx330 power -9             999999998 ->  3.39500060E+954242507 Inexact Rounded
-powx331 power -10            999999998 ->  1.00000000E+999999998 Rounded
-powx332 power -10.0001       999999998 ->  Infinity Overflow Inexact Rounded
-powx333 power -10.1          999999998 ->  Infinity Overflow Inexact Rounded
-powx334 power -11            999999998 ->  Infinity Overflow Inexact Rounded
-powx335 power -12            999999998 ->  Infinity Overflow Inexact Rounded
-powx336 power -999           999999998 ->  Infinity Overflow Inexact Rounded
-powx337 power -999999        999999998 ->  Infinity Overflow Inexact Rounded
-powx338 power -999999999     999999998 ->  Infinity Overflow Inexact Rounded
-powx339 power -9.9E999999999 999999998 ->  Infinity Overflow Inexact Rounded
-
-powx340 power -0.5           999999998 ->  8.67119187E-301029996 Inexact Rounded
-powx341 power -0.1           999999998 ->  1E-999999998  -- NB exact unrounded
-powx342 power -0.09          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx343 power -0.05          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx344 power -0.01          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx345 power -0.0001        999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx347 power -0.0000001     999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx348 power -0.0000000001  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx349 power -1E-999999999  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
--- some subnormals
-precision: 9
--- [precision is 9, so smallest exponent is -1000000007
-powx350 power  1e-1          500000000 ->  1E-500000000
-powx351 power  1e-2          999999999 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx352 power  1e-2          500000000 ->  1E-1000000000 Subnormal
-powx353 power  1e-2          500000001 ->  1E-1000000002 Subnormal
-powx354 power  1e-2          500000002 ->  1E-1000000004 Subnormal
-powx355 power  1e-2          500000003 ->  1E-1000000006 Subnormal
-powx356 power  1e-2          500000004 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
-
-powx360 power  0.010001      500000000 ->  4.34941988E-999978287 Inexact Rounded
-powx361 power  0.010000001   500000000 ->  5.18469257E-999999979 Inexact Rounded
-powx362 power  0.010000001   500000001 ->  5.18469309E-999999981 Inexact Rounded
-powx363 power  0.0100000009  500000000 ->  3.49342003E-999999981 Inexact Rounded
-powx364 power  0.0100000001  500000000 ->  1.48413155E-999999998 Inexact Rounded
-powx365 power  0.01          500000000 ->  1E-1000000000 Subnormal
-powx366 power  0.0099999999  500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded
-powx367 power  0.0099999998  500000000 ->  4.54E-1000000005 Underflow Subnormal Inexact Rounded
-powx368 power  0.0099999997  500000000 ->  3E-1000000007 Underflow Subnormal Inexact Rounded
-powx369 power  0.0099999996  500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
-powx370 power  0.009         500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
--- 1/subnormal -> overflow
-powx371 power  1e-1         -500000000 ->  1E+500000000
-powx372 power  1e-2         -999999999 ->  Infinity Overflow Inexact Rounded
-powx373 power  1e-2         -500000000 ->  Infinity Overflow Inexact Rounded
-powx374 power  1e-2         -500000001 ->  Infinity Overflow Inexact Rounded
-powx375 power  1e-2         -500000002 ->  Infinity Overflow Inexact Rounded
-powx376 power  1e-2         -500000003 ->  Infinity Overflow Inexact Rounded
-powx377 power  1e-2         -500000004 ->  Infinity Overflow Inexact Rounded
-
-powx381 power  0.010001     -500000000 ->  2.29915719E+999978286 Inexact Rounded
-powx382 power  0.010000001  -500000000 ->  1.92875467E+999999978 Inexact Rounded
-powx383 power  0.010000001  -500000001 ->  1.92875448E+999999980 Inexact Rounded
-powx384 power  0.0100000009 -500000000 ->  2.86252438E+999999980 Inexact Rounded
-powx385 power  0.0100000001 -500000000 ->  6.73794717E+999999997 Inexact Rounded
-powx386 power  0.01         -500000000 ->  Infinity Overflow Inexact Rounded
-powx387 power  0.009999     -500000000 ->  Infinity Overflow Inexact Rounded
-
--- negative power giving subnormal
-powx388 power  100.000001   -500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded
+maxExponent: 999
+minexponent: -999
+powx260 power   -10   '0'         -> 1
+powx261 power   -10   '1'         -> -10
+powx262 power   -10   '2'         -> 100
+powx263 power   -10   '3'         -> -1000
+powx264 power   -10   '4'         -> 10000
+powx265 power   -10   '5'         -> -100000
+powx266 power   -10   '6'         -> 1000000
+powx267 power   -10   '7'         -> -10000000
+powx268 power   -10   '8'         -> 100000000
+powx269 power   -10   '9'         -> -1.00000000E+9 Rounded
+powx270 power   -10   '22'        -> 1.00000000E+22 Rounded
+powx271 power   -10   '77'        -> -1.00000000E+77 Rounded
+powx272 power   -10   '99'        -> -1.00000000E+99 Rounded
 
 -- some more edge cases
 precision:   15
@@ -389,8 +252,9 @@
 powx392 power  0.099 999 -> 4.360732062E-1004 Underflow Subnormal Inexact Rounded
 powx393 power  0.098 999 -> 1.71731E-1008 Underflow Subnormal Inexact Rounded
 powx394 power  0.097 999 -> 6E-1013 Underflow Subnormal Inexact Rounded
-powx395 power  0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded
+powx395 power  0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped
 powx396 power  0.01  999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped
+powx397 power  0.02 100000000 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped
 
 -- multiply tests are here to aid checking and test for consistent handling
 -- of underflow
@@ -399,7 +263,7 @@
 minexponent: -999
 
 -- squares
-mulx400 multiply  1E-502     1e-502 -> 0E-1003    Subnormal Inexact Underflow Rounded
+mulx400 multiply  1E-502     1e-502 -> 0E-1003    Subnormal Inexact Underflow Rounded Clamped
 mulx401 multiply  1E-501     1e-501 -> 1E-1002    Subnormal
 mulx402 multiply  2E-501     2e-501 -> 4E-1002    Subnormal
 mulx403 multiply  4E-501     4e-501 -> 1.6E-1001  Subnormal
@@ -407,7 +271,7 @@
 mulx405 multiply 30E-501    30e-501 -> 9.00E-1000 Subnormal
 mulx406 multiply 40E-501    40e-501 -> 1.600E-999
 
-powx400 power     1E-502     2      -> 0E-1003    Underflow Subnormal Inexact Rounded
+powx400 power     1E-502     2      -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
 powx401 power     1E-501     2      -> 1E-1002    Subnormal
 powx402 power     2E-501     2      -> 4E-1002    Subnormal
 powx403 power     4E-501     2      -> 1.6E-1001  Subnormal
@@ -416,7 +280,7 @@
 powx406 power    40E-501     2      -> 1.600E-999
 
 -- cubes
-mulx410 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded
+mulx410 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
 mulx411 multiply  1E-668     1e-334 -> 1E-1002    Subnormal
 mulx412 multiply  4E-668     2e-334 -> 8E-1002    Subnormal
 mulx413 multiply  9E-668     3e-334 -> 2.7E-1001  Subnormal
@@ -424,7 +288,7 @@
 mulx415 multiply 25E-668     5e-334 -> 1.25E-1000 Subnormal
 mulx416 multiply 10E-668   100e-334 -> 1.000E-999
 
-powx410 power     1E-335     3      -> 0E-1003    Underflow Subnormal Inexact Rounded
+powx410 power     1E-335     3      -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
 powx411 power     1E-334     3      -> 1E-1002    Subnormal
 powx412 power     2E-334     3      -> 8E-1002    Subnormal
 powx413 power     3E-334     3      -> 2.7E-1001  Subnormal
@@ -442,24 +306,24 @@
 powx423 power  2.5E+499     -2         ->  1.6E-999
 powx424 power  2.5E+500     -2         ->  1.6E-1001 Subnormal
 powx425 power  2.5E+501     -2         ->    2E-1003 Underflow Subnormal Inexact Rounded
-powx426 power  2.5E+502     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded
+powx426 power  2.5E+502     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded Clamped
 
 powx427 power 0.25E+499     -2         ->  1.6E-997
 powx428 power 0.25E+500     -2         ->  1.6E-999
 powx429 power 0.25E+501     -2         ->  1.6E-1001 Subnormal
 powx430 power 0.25E+502     -2         ->    2E-1003 Underflow Subnormal Inexact Rounded
-powx431 power 0.25E+503     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded
+powx431 power 0.25E+503     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded Clamped
 
 powx432 power 0.04E+499     -2         ->  6.25E-996
 powx433 power 0.04E+500     -2         ->  6.25E-998
 powx434 power 0.04E+501     -2         ->  6.25E-1000 Subnormal
-powx435 power 0.04E+502     -2         ->   6.3E-1002 Underflow Subnormal Inexact Rounded
+powx435 power 0.04E+502     -2         ->   6.2E-1002 Underflow Subnormal Inexact Rounded
 powx436 power 0.04E+503     -2         ->     1E-1003 Underflow Subnormal Inexact Rounded
-powx437 power 0.04E+504     -2         ->     0E-1003 Underflow Subnormal Inexact Rounded
+powx437 power 0.04E+504     -2         ->     0E-1003 Underflow Subnormal Inexact Rounded Clamped
 
 powx441 power 0.04E+334     -3         ->  1.5625E-998
 powx442 power 0.04E+335     -3         ->    1.56E-1001 Underflow Subnormal Inexact Rounded
-powx443 power 0.04E+336     -3         ->       0E-1003 Underflow Subnormal Inexact Rounded
+powx443 power 0.04E+336     -3         ->       0E-1003 Underflow Subnormal Inexact Rounded Clamped
 powx444 power 0.25E+333     -3         ->     6.4E-998
 powx445 power 0.25E+334     -3         ->     6.4E-1001 Subnormal
 powx446 power 0.25E+335     -3         ->       1E-1003 Underflow Subnormal Inexact Rounded
@@ -467,7 +331,7 @@
 -- check sign for cubes  and a few squares
 powx448 power -0.04E+334    -3         -> -1.5625E-998
 powx449 power -0.04E+335    -3         ->   -1.56E-1001 Underflow Subnormal Inexact Rounded
-powx450 power -0.04E+336    -3         ->      -0E-1003 Underflow Subnormal Inexact Rounded
+powx450 power -0.04E+336    -3         ->      -0E-1003 Underflow Subnormal Inexact Rounded Clamped
 powx451 power -0.25E+333    -3         ->    -6.4E-998
 powx452 power -0.25E+334    -3         ->    -6.4E-1001 Subnormal
 powx453 power -0.25E+335    -3         ->      -1E-1003 Underflow Subnormal Inexact Rounded
@@ -475,7 +339,7 @@
 powx455 power -0.04E+499    -2         ->    6.25E-996
 powx456 power -0.04E+500    -2         ->    6.25E-998
 powx457 power -0.04E+501    -2         ->    6.25E-1000 Subnormal
-powx458 power -0.04E+502    -2         ->     6.3E-1002 Underflow Subnormal Inexact Rounded
+powx458 power -0.04E+502    -2         ->     6.2E-1002 Underflow Subnormal Inexact Rounded
 
 -- test -0s
 precision: 9
@@ -488,123 +352,124 @@
 powx566 power -1  0        ->  1
 powx567 power -1 -0        ->  1
 powx568 power  0  1        ->  0
-powx569 power  0 -1        ->  Infinity Division_by_zero
+powx569 power  0 -1        ->  Infinity
 powx570 power -0  1        -> -0
-powx571 power -0 -1        -> -Infinity Division_by_zero
+powx571 power -0 -1        -> -Infinity
 powx572 power  0  2        ->  0
-powx573 power  0 -2        ->  Infinity Division_by_zero
+powx573 power  0 -2        ->  Infinity
 powx574 power -0  2        ->  0
-powx575 power -0 -2        ->  Infinity Division_by_zero
+powx575 power -0 -2        ->  Infinity
 powx576 power  0  3        ->  0
-powx577 power  0 -3        ->  Infinity Division_by_zero
+powx577 power  0 -3        ->  Infinity
 powx578 power -0  3        -> -0
-powx579 power -0 -3        -> -Infinity Division_by_zero
+powx579 power -0 -3        -> -Infinity
 
 -- Specials
-powx580 power  Inf  -Inf   ->  NaN  Invalid_operation
+powx580 power  Inf  -Inf   ->  0
 powx581 power  Inf  -1000  ->  0
 powx582 power  Inf  -1     ->  0
-powx583 power  Inf  -0     ->  1
-powx584 power  Inf   0     ->  1
-powx585 power  Inf   1     ->  Infinity
-powx586 power  Inf   1000  ->  Infinity
-powx587 power  Inf   Inf   ->  NaN  Invalid_operation
-powx588 power -1000  Inf   ->  NaN  Invalid_operation
-powx589 power -Inf   Inf   ->  NaN  Invalid_operation
-powx590 power -1     Inf   ->  NaN  Invalid_operation
-powx591 power -0     Inf   ->  NaN  Invalid_operation
-powx592 power  0     Inf   ->  NaN  Invalid_operation
-powx593 power  1     Inf   ->  NaN  Invalid_operation
-powx594 power  1000  Inf   ->  NaN  Invalid_operation
-powx595 power  Inf   Inf   ->  NaN  Invalid_operation
+powx583 power  Inf  -0.5   ->  0
+powx584 power  Inf  -0     ->  1
+powx585 power  Inf   0     ->  1
+powx586 power  Inf   0.5   ->  Infinity
+powx587 power  Inf   1     ->  Infinity
+powx588 power  Inf   1000  ->  Infinity
+powx589 power  Inf   Inf   ->  Infinity
+powx590 power -1000  Inf   ->  NaN  Invalid_operation
+powx591 power -Inf   Inf   ->  NaN  Invalid_operation
+powx592 power -1     Inf   ->  NaN  Invalid_operation
+powx593 power -0.5   Inf   ->  NaN  Invalid_operation
+powx594 power -0     Inf   ->  0
+powx595 power  0     Inf   ->  0
+powx596 power  0.5   Inf   ->  0
+powx597 power  1     Inf   ->  1.00000000 Inexact Rounded
+powx598 power  1000  Inf   ->  Infinity
+powx599 power  Inf   Inf   ->  Infinity
 
 powx600 power -Inf  -Inf   ->  NaN  Invalid_operation
 powx601 power -Inf  -1000  ->  0
 powx602 power -Inf  -1     -> -0
-powx603 power -Inf  -0     ->  1
-powx604 power -Inf   0     ->  1
-powx605 power -Inf   1     -> -Infinity
-powx606 power -Inf   1000  ->  Infinity
-powx607 power -Inf   Inf   ->  NaN  Invalid_operation
-powx608 power -1000  Inf   ->  NaN  Invalid_operation
-powx609 power -Inf  -Inf   ->  NaN  Invalid_operation
-powx610 power -1    -Inf   ->  NaN  Invalid_operation
-powx611 power -0    -Inf   ->  NaN  Invalid_operation
-powx612 power  0    -Inf   ->  NaN  Invalid_operation
-powx613 power  1    -Inf   ->  NaN  Invalid_operation
-powx614 power  1000 -Inf   ->  NaN  Invalid_operation
-powx615 power  Inf  -Inf   ->  NaN  Invalid_operation
+powx603 power -Inf  -0.5   ->  NaN  Invalid_operation
+powx604 power -Inf  -0     ->  1
+powx605 power -Inf   0     ->  1
+powx606 power -Inf   0.5   ->  NaN  Invalid_operation
+powx607 power -Inf   1     -> -Infinity
+powx608 power -Inf   1000  ->  Infinity
+powx609 power -Inf   Inf   ->  NaN  Invalid_operation
+powx610 power -1000  Inf   ->  NaN  Invalid_operation
+powx611 power -Inf  -Inf   ->  NaN  Invalid_operation
+powx612 power -1    -Inf   ->  NaN  Invalid_operation
+powx613 power -0.5  -Inf   ->  NaN  Invalid_operation
+powx614 power -0    -Inf   ->  Infinity
+powx615 power  0    -Inf   ->  Infinity
+powx616 power  0.5  -Inf   ->  Infinity
+powx617 power  1    -Inf   ->  1.00000000 Inexact Rounded
+powx618 power  1000 -Inf   ->  0
+powx619 power  Inf  -Inf   ->  0
 
-powx621 power  NaN -Inf    ->  NaN  Invalid_operation
+powx621 power  NaN -Inf    ->  NaN
 powx622 power  NaN -1000   ->  NaN
 powx623 power  NaN -1      ->  NaN
-powx624 power  NaN -0      ->  NaN
-powx625 power  NaN  0      ->  NaN
-powx626 power  NaN  1      ->  NaN
-powx627 power  NaN  1000   ->  NaN
-powx628 power  NaN  Inf    ->  NaN  Invalid_operation
-powx629 power  NaN  NaN    ->  NaN
-powx630 power -Inf  NaN    ->  NaN
-powx631 power -1000 NaN    ->  NaN
-powx632 power -1    NaN    ->  NaN
-powx633 power -0    NaN    ->  NaN
-powx634 power  0    NaN    ->  NaN
-powx635 power  1    NaN    ->  NaN
-powx636 power  1000 NaN    ->  NaN
-powx637 power  Inf  NaN    ->  NaN
+powx624 power  NaN -0.5    ->  NaN
+powx625 power  NaN -0      ->  NaN
+powx626 power  NaN  0      ->  NaN
+powx627 power  NaN  0.5    ->  NaN
+powx628 power  NaN  1      ->  NaN
+powx629 power  NaN  1000   ->  NaN
+powx630 power  NaN  Inf    ->  NaN
+powx631 power  NaN  NaN    ->  NaN
+powx632 power -Inf  NaN    ->  NaN
+powx633 power -1000 NaN    ->  NaN
+powx634 power -1    NaN    ->  NaN
+powx635 power -0    NaN    ->  NaN
+powx636 power  0    NaN    ->  NaN
+powx637 power  1    NaN    ->  NaN
+powx638 power  1000 NaN    ->  NaN
+powx639 power  Inf  NaN    ->  NaN
 
 powx641 power  sNaN -Inf   ->  NaN  Invalid_operation
 powx642 power  sNaN -1000  ->  NaN  Invalid_operation
 powx643 power  sNaN -1     ->  NaN  Invalid_operation
-powx644 power  sNaN -0     ->  NaN  Invalid_operation
-powx645 power  sNaN  0     ->  NaN  Invalid_operation
-powx646 power  sNaN  1     ->  NaN  Invalid_operation
-powx647 power  sNaN  1000  ->  NaN  Invalid_operation
-powx648 power  sNaN  NaN   ->  NaN  Invalid_operation
-powx649 power  sNaN sNaN   ->  NaN  Invalid_operation
-powx650 power  NaN  sNaN   ->  NaN  Invalid_operation
-powx651 power -Inf  sNaN   ->  NaN  Invalid_operation
-powx652 power -1000 sNaN   ->  NaN  Invalid_operation
-powx653 power -1    sNaN   ->  NaN  Invalid_operation
-powx654 power -0    sNaN   ->  NaN  Invalid_operation
-powx655 power  0    sNaN   ->  NaN  Invalid_operation
-powx656 power  1    sNaN   ->  NaN  Invalid_operation
-powx657 power  1000 sNaN   ->  NaN  Invalid_operation
-powx658 power  Inf  sNaN   ->  NaN  Invalid_operation
-powx659 power  NaN  sNaN   ->  NaN  Invalid_operation
+powx644 power  sNaN -0.5   ->  NaN  Invalid_operation
+powx645 power  sNaN -0     ->  NaN  Invalid_operation
+powx646 power  sNaN  0     ->  NaN  Invalid_operation
+powx647 power  sNaN  0.5   ->  NaN  Invalid_operation
+powx648 power  sNaN  1     ->  NaN  Invalid_operation
+powx649 power  sNaN  1000  ->  NaN  Invalid_operation
+powx650 power  sNaN  NaN   ->  NaN  Invalid_operation
+powx651 power  sNaN sNaN   ->  NaN  Invalid_operation
+powx652 power  NaN  sNaN   ->  NaN  Invalid_operation
+powx653 power -Inf  sNaN   ->  NaN  Invalid_operation
+powx654 power -1000 sNaN   ->  NaN  Invalid_operation
+powx655 power -1    sNaN   ->  NaN  Invalid_operation
+powx656 power -0.5  sNaN   ->  NaN  Invalid_operation
+powx657 power -0    sNaN   ->  NaN  Invalid_operation
+powx658 power  0    sNaN   ->  NaN  Invalid_operation
+powx659 power  0.5  sNaN   ->  NaN  Invalid_operation
+powx660 power  1    sNaN   ->  NaN  Invalid_operation
+powx661 power  1000 sNaN   ->  NaN  Invalid_operation
+powx662 power  Inf  sNaN   ->  NaN  Invalid_operation
+powx663 power  NaN  sNaN   ->  NaN  Invalid_operation
 
 -- NaN propagation
-powx660 power  NaN3  sNaN7  ->  NaN7  Invalid_operation
-powx661 power  sNaN8  NaN6  ->  NaN8  Invalid_operation
-powx662 power  1     sNaN7  ->  NaN7  Invalid_operation
-powx663 power  sNaN8  1     ->  NaN8  Invalid_operation
-powx664 power  Inf   sNaN7  ->  NaN7  Invalid_operation
-powx665 power  sNaN8  Inf   ->  NaN   Invalid_operation
-powx666 power  Inf    NaN9  ->  NaN9
-powx667 power  NaN6   Inf   ->  NaN   Invalid_operation
-powx668 power  1      NaN5  ->  NaN5
-powx669 power  NaN2   1     ->  NaN2
-powx670 power  NaN2   Nan4  ->  NaN2
-powx671 power  NaN    Nan4  ->  NaN
-powx672 power  NaN345 Nan   ->  NaN345
-powx673 power  Inf    -sNaN7 -> -NaN7 Invalid_operation
-powx674 power  -sNaN8  Inf   -> NaN   Invalid_operation
-powx675 power  Inf    -NaN9  -> -NaN9
-powx676 power  -NaN6   Inf   -> NaN   Invalid_operation
-powx677 power  -NaN2  -Nan4  -> -NaN2
-
--- Examples from extended specification
-powx690 power  Inf  -2     ->  0
-powx691 power  Inf  -1     ->  0
-powx692 power  Inf   0     ->  1
-powx693 power  Inf   1     ->  Infinity
-powx694 power  Inf   2     ->  Infinity
-powx695 power -Inf  -2     ->  0
-powx696 power -Inf  -1     ->  -0
-powx697 power -Inf   0     ->  1
-powx698 power -Inf   1     ->  -Infinity
-powx699 power -Inf   2     ->  Infinity
-powx700 power    0   0     ->  NaN Invalid_operation
+powx670 power  NaN3  sNaN7  ->  NaN7  Invalid_operation
+powx671 power  sNaN8  NaN6  ->  NaN8  Invalid_operation
+powx672 power  1     sNaN7  ->  NaN7  Invalid_operation
+powx673 power  sNaN8  1     ->  NaN8  Invalid_operation
+powx674 power  Inf   sNaN7  ->  NaN7  Invalid_operation
+powx675 power  sNaN8  Inf   ->  NaN8  Invalid_operation
+powx676 power  Inf    NaN9  ->  NaN9
+powx677 power  NaN6   Inf   ->  NaN6
+powx678 power  1      NaN5  ->  NaN5
+powx679 power  NaN2   1     ->  NaN2
+powx680 power  NaN2   Nan4  ->  NaN2
+powx681 power  NaN    Nan4  ->  NaN
+powx682 power  NaN345 Nan   ->  NaN345
+powx683 power  Inf    -sNaN7 -> -NaN7  Invalid_operation
+powx684 power  -sNaN8  Inf   -> -NaN8  Invalid_operation
+powx685 power  Inf    -NaN9  -> -NaN9
+powx686 power  -NaN6   Inf   -> -NaN6
+powx687 power  -NaN2  -Nan4  -> -NaN2
 
 -- long operand and RHS range checks
 maxexponent: 999
@@ -616,15 +481,6 @@
 powx704 power 1234567891  1 -> 1.23456789E+9 Inexact Rounded
 powx705 power 12345678901 1 -> 1.23456789E+10 Inexact Rounded
 powx706 power 1234567896  1 -> 1.23456790E+9 Inexact Rounded
-powx707 power 1 12345678000  -> NaN Invalid_operation
-powx708 power 1 1234567800   -> NaN Invalid_operation
-powx709 power 1 1234567890   -> NaN Invalid_operation
-powx710 power 1 11234567891  -> NaN Invalid_operation
-powx711 power 1 12345678901  -> NaN Invalid_operation
-powx712 power 1 1234567896   -> NaN Invalid_operation
-powx713 power 1 -1234567896  -> NaN Invalid_operation
-powx714 power 1 1000000000   -> NaN Invalid_operation
-powx715 power 1 -1000000000  -> NaN Invalid_operation
 
 precision: 15
 -- still checking
@@ -634,12 +490,182 @@
 powx744 power 1234567891  1 -> 1234567891
 powx745 power 12345678901 1 -> 12345678901
 powx746 power 1234567896  1 -> 1234567896
-powx747 power 1 12345678000  -> NaN Invalid_operation
-powx748 power 1 -1234567896  -> NaN Invalid_operation
-powx749 power 1 1000000000   -> NaN Invalid_operation
-powx740 power 1 -1000000000  -> NaN Invalid_operation
 
--- check for double-rounded subnormals
+maxexponent: 999999
+minexponent: -999999
+precision: 9
+
+-- near out-of-range edge cases
+powx163 power   '10'  '999999' -> '1.00000000E+999999' Rounded
+powx164 power   '10'  '999998' -> '1.00000000E+999998' Rounded
+powx165 power   '10'  '999997' -> '1.00000000E+999997' Rounded
+powx166 power   '10'  '333333' -> '1.00000000E+333333' Rounded
+powx183 power   '7'   '1000000'  -> 1.09651419E+845098 Inexact Rounded
+powx184 power   '7'   '1000001'  -> 7.67559934E+845098 Inexact Rounded
+powx186 power   '7'   '-1000001' -> 1.30282986E-845099 Inexact Rounded
+powx187 power   '7'   '-1000000' -> 9.11980901E-845099 Inexact Rounded
+powx118 power  '10'  '-333333'   -> 1E-333333
+powx119 power  '10'  '-999998'   -> 1E-999998
+powx120 power  '10'  '-999999'   -> 1E-999999
+powx181 power   '7'   '999998'   -> 2.23778406E+845096 Inexact Rounded
+powx182 power   '7'   '999999'   -> 1.56644884E+845097 Inexact Rounded
+powx189 power   '7'   '-999999'  -> 6.38386631E-845098 Inexact Rounded
+powx190 power   '7'   '-999998'  -> 4.46870641E-845097 Inexact Rounded
+
+-- overflow and underflow tests
+precision: 9
+
+powx277 power  9             999999 -> 3.59084629E+954241 Inexact Rounded
+powx278 power  9.99999999    999999 -> 9.99000501E+999998 Inexact Rounded
+powx279 power 10             999999 -> 1.00000000E+999999         Rounded
+powx280 power 10.0000001     999999 -> 1.01005016E+999999 Inexact Rounded
+powx281 power 10.000001      999999 -> 1.10517080E+999999 Inexact Rounded
+powx282 power 10.00001       999999 -> 2.71827775E+999999 Inexact Rounded
+powx283 power 10.0001        999999 -> Infinity Overflow Inexact Rounded
+powx285 power 11             999999 -> Infinity Overflow Inexact Rounded
+powx286 power 12             999999 -> Infinity Overflow Inexact Rounded
+powx287 power 999            999999 -> Infinity Overflow Inexact Rounded
+powx288 power 999999999      999999 -> Infinity Overflow Inexact Rounded
+powx289 power 9.9E999999999  999999 -> Infinity Overflow Inexact Rounded
+
+powx290 power 0.5            999999 -> 2.02006812E-301030 Inexact Rounded
+powx291 power 0.1            999999 -> 1E-999999  -- unrounded
+powx292 power 0.09           999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx293 power 0.05           999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx294 power 0.01           999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx295 power 0.0001         999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx297 power 0.0000001      999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx298 power 0.0000000001   999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx299 power 1E-999999999   999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+
+powx310 power -9             999999 -> -3.59084629E+954241 Inexact Rounded
+powx311 power -10            999999 -> -1.00000000E+999999 Rounded
+powx312 power -10.0001       999999 -> -Infinity Overflow Inexact Rounded
+powx313 power -10.1          999999 -> -Infinity Overflow Inexact Rounded
+powx314 power -11            999999 -> -Infinity Overflow Inexact Rounded
+powx315 power -12            999999 -> -Infinity Overflow Inexact Rounded
+powx316 power -999           999999 -> -Infinity Overflow Inexact Rounded
+powx317 power -999999        999999 -> -Infinity Overflow Inexact Rounded
+powx318 power -999999999     999999 -> -Infinity Overflow Inexact Rounded
+powx319 power -9.9E999999999 999999 -> -Infinity Overflow Inexact Rounded
+
+powx320 power -0.5           999999 -> -2.02006812E-301030 Inexact Rounded
+powx321 power -0.1           999999 -> -1E-999999
+powx322 power -0.09          999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx323 power -0.05          999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx324 power -0.01          999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx325 power -0.0001        999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx327 power -0.0000001     999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx328 power -0.0000000001  999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx329 power -1E-999999999  999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+
+-- note no trim of next result
+powx330 power -9             999998 ->  3.98982921E+954240 Inexact Rounded
+powx331 power -10            999998 ->  1.00000000E+999998 Rounded
+powx332 power -10.0001       999998 ->  Infinity Overflow Inexact Rounded
+powx333 power -10.1          999998 ->  Infinity Overflow Inexact Rounded
+powx334 power -11            999998 ->  Infinity Overflow Inexact Rounded
+powx335 power -12            999998 ->  Infinity Overflow Inexact Rounded
+powx336 power -999           999998 ->  Infinity Overflow Inexact Rounded
+powx337 power -999999        999998 ->  Infinity Overflow Inexact Rounded
+powx338 power -999999999     999998 ->  Infinity Overflow Inexact Rounded
+powx339 power -9.9E999999999 999998 ->  Infinity Overflow Inexact Rounded
+
+powx340 power -0.5           999998 ->  4.04013624E-301030 Inexact Rounded
+powx341 power -0.1           999998 ->  1E-999998  -- NB exact unrounded
+powx342 power -0.09          999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx343 power -0.05          999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx344 power -0.01          999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx345 power -0.0001        999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx347 power -0.0000001     999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx348 power -0.0000000001  999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx349 power -1E-999999999  999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+
+-- some subnormals
+precision: 9
+-- [precision is 9, so smallest exponent is -1000000007
+powx350 power  1e-1          500000 ->  1E-500000
+powx351 power  1e-2          999999 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+powx352 power  1e-2          500000 ->  1E-1000000 Subnormal
+powx353 power  1e-2          500001 ->  1E-1000002 Subnormal
+powx354 power  1e-2          500002 ->  1E-1000004 Subnormal
+powx355 power  1e-2          500003 ->  1E-1000006 Subnormal
+powx356 power  1e-2          500004 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+
+powx360 power  0.010001      500000 ->  5.17176082E-999979 Inexact Rounded
+powx361 power  0.010000001   500000 ->  1.0512711E-1000000 Underflow Subnormal Inexact Rounded
+powx362 power  0.010000001   500001 ->  1.05127E-1000002 Underflow Subnormal Inexact Rounded
+powx363 power  0.0100000009  500000 ->  1.0460279E-1000000 Underflow Subnormal Inexact Rounded
+powx364 power  0.0100000001  500000 ->  1.0050125E-1000000 Underflow Subnormal Inexact Rounded
+powx365 power  0.01          500000 ->  1E-1000000 Subnormal
+powx366 power  0.0099999999  500000 ->  9.950125E-1000001 Underflow Subnormal Inexact Rounded
+powx367 power  0.0099999998  500000 ->  9.900498E-1000001 Underflow Subnormal Inexact Rounded
+powx368 power  0.0099999997  500000 ->  9.851119E-1000001 Underflow Subnormal Inexact Rounded
+powx369 power  0.0099999996  500000 ->  9.801987E-1000001 Underflow Subnormal Inexact Rounded
+powx370 power  0.009         500000 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
+
+-- 1/subnormal -> overflow
+powx371 power  1e-1         -500000 ->  1E+500000
+powx372 power  1e-2         -999999 ->  Infinity Overflow Inexact Rounded
+powx373 power  1e-2         -500000 ->  Infinity Overflow Inexact Rounded
+powx374 power  1e-2         -500001 ->  Infinity Overflow Inexact Rounded
+powx375 power  1e-2         -500002 ->  Infinity Overflow Inexact Rounded
+powx376 power  1e-2         -500003 ->  Infinity Overflow Inexact Rounded
+powx377 power  1e-2         -500004 ->  Infinity Overflow Inexact Rounded
+
+powx381 power  0.010001     -500000 ->  1.93357743E+999978 Inexact Rounded
+powx382 power  0.010000001  -500000 ->  9.51229427E+999999 Inexact Rounded
+powx383 power  0.010000001  -500001 ->  Infinity Overflow  Inexact Rounded
+powx384 power  0.0100000009 -500000 ->  9.55997484E+999999 Inexact Rounded
+powx385 power  0.0100000001 -500000 ->  9.95012479E+999999 Inexact Rounded
+powx386 power  0.01         -500000 ->  Infinity Overflow Inexact Rounded
+powx387 power  0.009999     -500000 ->  Infinity Overflow Inexact Rounded
+
+-- negative power giving subnormal
+powx388 power  100.000001   -500000 ->  9.950125E-1000001 Underflow Subnormal Inexact Rounded
+
+
+-- test some 'false integer' boundaries
+precision:   16
+rounding:    half_even
+maxExponent: 384
+minExponent: -383
+powx501 power  100  1E+1   ->  1.000000000000000E+20     Rounded
+powx502 power  100  1E+2   ->  1.000000000000000E+200    Rounded
+powx503 power  100  1E+3   ->  Infinity Overflow Inexact Rounded
+powx504 power  100  1E+4   ->  Infinity Overflow Inexact Rounded
+powx505 power  100  1E+5   ->  Infinity Overflow Inexact Rounded
+powx506 power  100  1E+6   ->  Infinity Overflow Inexact Rounded
+powx507 power  100  1E+7   ->  Infinity Overflow Inexact Rounded
+powx508 power  100  1E+8   ->  Infinity Overflow Inexact Rounded
+powx509 power  100  1E+9   ->  Infinity Overflow Inexact Rounded
+powx510 power  100  1E+10  ->  Infinity Overflow Inexact Rounded
+powx511 power  100  1E+11  ->  Infinity Overflow Inexact Rounded
+powx512 power  100  1E+12  ->  Infinity Overflow Inexact Rounded
+powx513 power  100  1E+13  ->  Infinity Overflow Inexact Rounded
+powx514 power  100  1E+14  ->  Infinity Overflow Inexact Rounded
+powx515 power  100  1E+15  ->  Infinity Overflow Inexact Rounded
+powx516 power  100  1E+16  ->  Infinity Overflow Inexact Rounded
+powx517 power  100  1E+17  ->  Infinity Overflow Inexact Rounded
+powx518 power  100  1E+18  ->  Infinity Overflow Inexact Rounded
+powx519 power  100  1E+19  ->  Infinity Overflow Inexact Rounded
+powx520 power  100  1E+20  ->  Infinity Overflow Inexact Rounded
+powx521 power  100  1E+21  ->  Infinity Overflow Inexact Rounded
+powx522 power  100  1E+22  ->  Infinity Overflow Inexact Rounded
+powx523 power  100  1E+23  ->  Infinity Overflow Inexact Rounded
+powx524 power  100  1E+24  ->  Infinity Overflow Inexact Rounded
+powx525 power  100  1E+25  ->  Infinity Overflow Inexact Rounded
+powx526 power  100  1E+26  ->  Infinity Overflow Inexact Rounded
+powx527 power  100  1E+27  ->  Infinity Overflow Inexact Rounded
+powx528 power  100  1E+28  ->  Infinity Overflow Inexact Rounded
+powx529 power  100  1E+29  ->  Infinity Overflow Inexact Rounded
+powx530 power  100  1E+30  ->  Infinity Overflow Inexact Rounded
+powx531 power  100  1E+40  ->  Infinity Overflow Inexact Rounded
+powx532 power  100  1E+50  ->  Infinity Overflow Inexact Rounded
+powx533 power  100  1E+100 ->  Infinity Overflow Inexact Rounded
+powx534 power  100  1E+383 ->  Infinity Overflow Inexact Rounded
+
+-- a check for double-rounded subnormals
 precision:   5
 maxexponent: 79
 minexponent: -79
@@ -649,3 +675,950 @@
 powx900 power  1 # -> NaN Invalid_operation
 powx901 power  # 1 -> NaN Invalid_operation
 
+----------------------------------------------------------------------
+-- Below here are tests with a precision or context outside of the  --
+-- decNumber 'mathematical functions' restricted range.  These      --
+-- remain supported in decNumber to minimize breakage, but may be   --
+-- outside the range of other implementations.                      --
+----------------------------------------------------------------------
+maxexponent: 999999999
+minexponent: -999999999
+precision: 9
+powx1063 power   '10'  '999999999' -> '1.00000000E+999999999' Rounded
+powx1064 power   '10'  '999999998' -> '1.00000000E+999999998' Rounded
+powx1065 power   '10'  '999999997' -> '1.00000000E+999999997' Rounded
+powx1066 power   '10'  '333333333' -> '1.00000000E+333333333' Rounded
+-- next two are integer-out-of range
+powx1183 power   '7'   '1000000000'  -> NaN Invalid_context
+powx1184 power   '7'   '1000000001'  -> NaN Invalid_context
+powx1186 power   '7'   '-1000000001' -> 1.38243630E-845098041 Inexact Rounded
+powx1187 power   '7'   '-1000000000' -> 9.67705411E-845098041 Inexact Rounded
+
+-- out-of-range edge cases
+powx1118 power  '10'  '-333333333'   -> 1E-333333333
+powx1119 power  '10'  '-999999998'   -> 1E-999999998
+powx1120 power  '10'  '-999999999'   -> 1E-999999999
+powx1181 power   '7'   '999999998'   -> 2.10892313E+845098038 Inexact Rounded
+powx1182 power   '7'   '999999999'   -> 1.47624619E+845098039 Inexact Rounded
+powx1189 power   '7'   '-999999999'  -> 6.77393787E-845098040 Inexact Rounded
+powx1190 power   '7'   '-999999998'  -> 4.74175651E-845098039 Inexact Rounded
+
+-- A (rare) case where the last digit is not within 0.5 ULP with classic precision
+precision: 9
+powx1215 power "-21971575.0E+31454441" "-7" -> "-4.04549502E-220181139" Inexact Rounded
+precision: 20
+powx1216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded
+
+-- overflow and underflow tests
+precision: 9
+powx1280 power  9            999999999 -> 3.05550054E+954242508 Inexact Rounded
+powx1281 power 10            999999999 -> 1.00000000E+999999999 Rounded
+powx1282 power 10.0001       999999999 -> Infinity Overflow Inexact Rounded
+powx1283 power 10.1          999999999 -> Infinity Overflow Inexact Rounded
+powx1284 power 11            999999999 -> Infinity Overflow Inexact Rounded
+powx1285 power 12            999999999 -> Infinity Overflow Inexact Rounded
+powx1286 power 999           999999999 -> Infinity Overflow Inexact Rounded
+powx1287 power 999999        999999999 -> Infinity Overflow Inexact Rounded
+powx1288 power 999999999     999999999 -> Infinity Overflow Inexact Rounded
+powx1289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded
+
+powx1290 power 0.5           999999999 -> 4.33559594E-301029996 Inexact Rounded
+powx1291 power 0.1           999999999 -> 1E-999999999  -- unrounded
+powx1292 power 0.09          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1293 power 0.05          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1294 power 0.01          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1295 power 0.0001        999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1297 power 0.0000001     999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1298 power 0.0000000001  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1299 power 1E-999999999  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+
+powx1310 power -9             999999999 -> -3.05550054E+954242508 Inexact Rounded
+powx1311 power -10            999999999 -> -1.00000000E+999999999 Rounded
+powx1312 power -10.0001       999999999 -> -Infinity Overflow Inexact Rounded
+powx1313 power -10.1          999999999 -> -Infinity Overflow Inexact Rounded
+powx1314 power -11            999999999 -> -Infinity Overflow Inexact Rounded
+powx1315 power -12            999999999 -> -Infinity Overflow Inexact Rounded
+powx1316 power -999           999999999 -> -Infinity Overflow Inexact Rounded
+powx1317 power -999999        999999999 -> -Infinity Overflow Inexact Rounded
+powx1318 power -999999999     999999999 -> -Infinity Overflow Inexact Rounded
+powx1319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded
+
+powx1320 power -0.5           999999999 -> -4.33559594E-301029996 Inexact Rounded
+powx1321 power -0.1           999999999 -> -1E-999999999
+powx1322 power -0.09          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1323 power -0.05          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1324 power -0.01          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1325 power -0.0001        999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1327 power -0.0000001     999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1328 power -0.0000000001  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1329 power -1E-999999999  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+
+-- note no trim of next result
+powx1330 power -9             999999998 ->  3.39500060E+954242507 Inexact Rounded
+powx1331 power -10            999999998 ->  1.00000000E+999999998 Rounded
+powx1332 power -10.0001       999999998 ->  Infinity Overflow Inexact Rounded
+powx1333 power -10.1          999999998 ->  Infinity Overflow Inexact Rounded
+powx1334 power -11            999999998 ->  Infinity Overflow Inexact Rounded
+powx1335 power -12            999999998 ->  Infinity Overflow Inexact Rounded
+powx1336 power -999           999999998 ->  Infinity Overflow Inexact Rounded
+powx1337 power -999999        999999998 ->  Infinity Overflow Inexact Rounded
+powx1338 power -999999999     999999998 ->  Infinity Overflow Inexact Rounded
+powx1339 power -9.9E999999999 999999998 ->  Infinity Overflow Inexact Rounded
+
+powx1340 power -0.5           999999998 ->  8.67119187E-301029996 Inexact Rounded
+powx1341 power -0.1           999999998 ->  1E-999999998  -- NB exact unrounded
+powx1342 power -0.09          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1343 power -0.05          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1344 power -0.01          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1345 power -0.0001        999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1347 power -0.0000001     999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1348 power -0.0000000001  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1349 power -1E-999999999  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+
+-- some subnormals
+precision: 9
+-- [precision is 9, so smallest exponent is -1000000007
+powx1350 power  1e-1          500000000 ->  1E-500000000
+powx1351 power  1e-2          999999999 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1352 power  1e-2          500000000 ->  1E-1000000000 Subnormal
+powx1353 power  1e-2          500000001 ->  1E-1000000002 Subnormal
+powx1354 power  1e-2          500000002 ->  1E-1000000004 Subnormal
+powx1355 power  1e-2          500000003 ->  1E-1000000006 Subnormal
+powx1356 power  1e-2          500000004 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+
+powx1360 power  0.010001      500000000 ->  4.34941988E-999978287 Inexact Rounded
+powx1361 power  0.010000001   500000000 ->  5.18469257E-999999979 Inexact Rounded
+powx1362 power  0.010000001   500000001 ->  5.18469309E-999999981 Inexact Rounded
+powx1363 power  0.0100000009  500000000 ->  3.49342003E-999999981 Inexact Rounded
+powx1364 power  0.0100000001  500000000 ->  1.48413155E-999999998 Inexact Rounded
+powx1365 power  0.01          500000000 ->  1E-1000000000 Subnormal
+powx1366 power  0.0099999999  500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded
+powx1367 power  0.0099999998  500000000 ->  4.54E-1000000005 Underflow Subnormal Inexact Rounded
+powx1368 power  0.0099999997  500000000 ->  3E-1000000007 Underflow Subnormal Inexact Rounded
+powx1369 power  0.0099999996  500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+powx1370 power  0.009         500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+
+-- 1/subnormal -> overflow
+powx1371 power  1e-1         -500000000 ->  1E+500000000
+powx1372 power  1e-2         -999999999 ->  Infinity Overflow Inexact Rounded
+powx1373 power  1e-2         -500000000 ->  Infinity Overflow Inexact Rounded
+powx1374 power  1e-2         -500000001 ->  Infinity Overflow Inexact Rounded
+powx1375 power  1e-2         -500000002 ->  Infinity Overflow Inexact Rounded
+powx1376 power  1e-2         -500000003 ->  Infinity Overflow Inexact Rounded
+powx1377 power  1e-2         -500000004 ->  Infinity Overflow Inexact Rounded
+
+powx1381 power  0.010001     -500000000 ->  2.29915719E+999978286 Inexact Rounded
+powx1382 power  0.010000001  -500000000 ->  1.92875467E+999999978 Inexact Rounded
+powx1383 power  0.010000001  -500000001 ->  1.92875448E+999999980 Inexact Rounded
+powx1384 power  0.0100000009 -500000000 ->  2.86252438E+999999980 Inexact Rounded
+powx1385 power  0.0100000001 -500000000 ->  6.73794717E+999999997 Inexact Rounded
+powx1386 power  0.01         -500000000 ->  Infinity Overflow Inexact Rounded
+powx1387 power  0.009999     -500000000 ->  Infinity Overflow Inexact Rounded
+
+-- negative power giving subnormal
+powx1388 power  100.000001   -500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded
+
+----------------------------------------------------------------------
+-- Below here are the tests with a non-integer rhs, including the   --
+-- tests that previously caused Invalid operation.  An integer-only --
+-- (on rhs) implementation should handle all the tests above as     --
+-- shown, and would flag most of the following tests as Invalid.    --
+----------------------------------------------------------------------
+precision:   16
+rounding:    half_even
+maxExponent: 384
+minExponent: -383
+
+powx2000 power 7 '10000000000'        -> Infinity Overflow Inexact Rounded
+powx2001 power 2 '2.000001'           -> 4.000002772589683 Inexact Rounded
+powx2002 power 2 '2.00000000'         -> 4
+powx2003 power 2 '2.000000001'        -> 4.000000002772589 Inexact Rounded
+powx2004 power 2 '2.0000000001'       -> 4.000000000277259 Inexact Rounded
+powx2005 power 2 '2.00000000001'      -> 4.000000000027726 Inexact Rounded
+powx2006 power 2 '2.000000000001'     -> 4.000000000002773 Inexact Rounded
+powx2007 power 2 '2.0000000000001'    -> 4.000000000000277 Inexact Rounded
+powx2008 power 2 '2.00000000000001'   -> 4.000000000000028 Inexact Rounded
+powx2009 power 2 '2.000000000000001'  -> 4.000000000000003 Inexact Rounded
+powx2010 power 2 '2.0000000000000001' -> 4.000000000000000 Inexact Rounded
+--                1 234567890123456
+
+powx2011 power 1 1234 -> 1
+precision: 4
+powx2012 power 1 1234 -> 1
+precision: 3
+powx2013 power 1 1234     -> 1
+powx2014 power 1 12.34e+2 -> 1
+powx2015 power 1 12.3     -> 1.00 Inexact Rounded
+powx2016 power 1 12.0     -> 1
+powx2017 power 1 1.01     -> 1.00 Inexact Rounded
+powx2018 power 2 1.00     -> 2
+powx2019 power 2 2.00     -> 4
+precision: 9
+powx2030 power 1 1.0001           -> 1.00000000 Inexact Rounded
+powx2031 power 1 1.0000001        -> 1.00000000 Inexact Rounded
+powx2032 power 1 1.0000000001     -> 1.00000000 Inexact Rounded
+powx2033 power 1 1.0000000000001  -> 1.00000000 Inexact Rounded
+precision: 5
+powx2034 power 1 1.0001           -> 1.0000 Inexact Rounded
+powx2035 power 1 1.0000001        -> 1.0000 Inexact Rounded
+powx2036 power 1 1.0000000001     -> 1.0000 Inexact Rounded
+powx2037 power 1 1.0000000000001  -> 1.0000 Inexact Rounded
+powx2038 power 1 1.0000000000001  -> 1.0000 Inexact Rounded
+
+rounding: ceiling
+precision: 3
+powx2039 power 1 1.01     -> 1.00 Inexact Rounded
+powx2040 power 1 12.3     -> 1.00 Inexact Rounded
+rounding: half_even
+
+-- 1 ** any integer, including big ones, should be exact
+powx2041 power 1 1000000000   -> 1
+powx2042 power 1 9999999999   -> 1
+powx2043 power 1 12345678000  -> 1
+powx2044 power 1 1234567800   -> 1
+powx2045 power 1 1234567890   -> 1
+powx2046 power 1 11234567891  -> 1
+powx2047 power 1 12345678901  -> 1
+powx2048 power 1 1234567896   -> 1
+powx2049 power 1 -1234567896  -> 1
+powx2051 power 1 1000000000   -> 1
+powx2052 power 1 -1000000000  -> 1
+powx2053 power 1 12345678000  -> 1
+powx2054 power 1 -1234567896  -> 1
+powx2055 power 1 1000000000   -> 1
+powx2056 power 1 4300000000   -> 1
+powx2057 power 1 -1000000000  -> 1
+-- negatives ... but not out of range for decNumber
+powx2061 power -1 100000   -> 1
+powx2062 power -1 999999   -> -1
+powx2063 power -1 1278000  -> 1
+powx2064 power -1 127803   -> -1
+powx2065 power -1 127890   -> 1
+powx2066 power -1 1167891  -> -1
+powx2067 power -1 1278901  -> -1
+powx2068 power -1 127896   -> 1
+powx2069 power -1 -167897  -> -1
+powx2071 power -1 100000   -> 1
+powx2072 power -1 -100001  -> -1
+powx2073 power -1 1278000  -> 1
+powx2074 power -1 -167896  -> 1
+powx2075 power -1 100000   -> 1
+powx2076 power -1 -100009  -> -1
+
+-- The above were derived from the earlier version of power.decTest;
+-- now start new tests for power(x,y) for non-integer y
+precision: 9
+
+-- tests from specification
+powx2081 power 2           3    ->  '8'
+powx2082 power -2          3    ->  '-8'
+powx2083 power 2          -3    ->  '0.125'
+powx2084 power 1.7        '8'   ->  '69.7575744' Inexact Rounded
+powx2085 power 10 0.301029996   ->  2.00000000   Inexact Rounded
+powx2086 power Infinity   '-1'  ->  '0'
+powx2087 power Infinity   '0'   ->  '1'
+powx2088 power Infinity   '1'   ->  'Infinity'
+powx2089 power -Infinity  '-1'  ->  '-0'
+powx2090 power -Infinity  '0'   ->  '1'
+powx2091 power -Infinity  '1'   ->  '-Infinity'
+powx2092 power -Infinity  '2'   ->  'Infinity'
+powx2093 power 0  0             ->  'NaN' Invalid_operation
+
+precision:   16
+rounding:    half_even
+maxExponent: 384
+minExponent: -383
+
+-- basics
+powx2100 power 1E-7     1E-7   -> 0.9999983881917339      Inexact Rounded
+powx2101 power 0.003    1E-7   -> 0.9999994190858697      Inexact Rounded
+powx2102 power 0.7      1E-7   -> 0.9999999643325062      Inexact Rounded
+powx2103 power 1.2      1E-7   -> 1.000000018232156       Inexact Rounded
+powx2104 power 71       1E-7   -> 1.000000426268079       Inexact Rounded
+powx2105 power 9E+9     1E-7   -> 1.000002292051668       Inexact Rounded
+
+powx2110 power 1E-7     0.003  -> 0.9527961640236519      Inexact Rounded
+powx2111 power 0.003    0.003  -> 0.9827235503366797      Inexact Rounded
+powx2112 power 0.7      0.003  -> 0.9989305474406207      Inexact Rounded
+powx2113 power 1.2      0.003  -> 1.000547114282834       Inexact Rounded
+powx2114 power 71       0.003  -> 1.012870156273545       Inexact Rounded
+powx2115 power 9E+9     0.003  -> 1.071180671278787       Inexact Rounded
+
+powx2120 power 1E-7     0.7    -> 0.00001258925411794167  Inexact Rounded
+powx2121 power 0.003    0.7    -> 0.01713897630281030     Inexact Rounded
+powx2122 power 0.7      0.7    -> 0.7790559126704491      Inexact Rounded
+powx2123 power 1.2      0.7    -> 1.136126977198889       Inexact Rounded
+powx2124 power 71       0.7    -> 19.76427300093870       Inexact Rounded
+powx2125 power 9E+9     0.7    -> 9289016.976853710       Inexact Rounded
+
+powx2130 power 1E-7     1.2    -> 3.981071705534973E-9    Inexact Rounded
+powx2131 power 0.003    1.2    -> 0.0009387403933595694   Inexact Rounded
+powx2132 power 0.7      1.2    -> 0.6518049405663864      Inexact Rounded
+powx2133 power 1.2      1.2    -> 1.244564747203978       Inexact Rounded
+powx2134 power 71       1.2    -> 166.5367244638552       Inexact Rounded
+powx2135 power 9E+9     1.2    -> 881233526124.8791       Inexact Rounded
+
+powx2140 power 1E-7     71     -> 0E-398                  Inexact Rounded Underflow Subnormal Clamped
+powx2141 power 0.003    71     -> 7.509466514979725E-180  Inexact Rounded
+powx2142 power 0.7      71     -> 1.004525211269079E-11   Inexact Rounded
+powx2143 power 1.2      71     -> 418666.7483186515       Inexact Rounded
+powx2144 power 71       71     -> 2.750063734834616E+131  Inexact Rounded
+powx2145 power 9E+9     71     -> Infinity                Inexact Rounded Overflow
+
+powx2150 power 1E-7     9E+9   -> 0E-398                  Inexact Rounded Underflow Subnormal Clamped
+powx2151 power 0.003    9E+9   -> 0E-398                  Inexact Rounded Underflow Subnormal Clamped
+powx2152 power 0.7      9E+9   -> 0E-398                  Inexact Rounded Underflow Subnormal Clamped
+powx2153 power 1.2      9E+9   -> Infinity                Inexact Rounded Overflow
+powx2154 power 71       9E+9   -> Infinity                Inexact Rounded Overflow
+powx2155 power 9E+9     9E+9   -> Infinity                Inexact Rounded Overflow
+
+-- number line milestones with lhs<1 and lhs>1
+
+-- Overflow boundary (Nmax)
+powx2202 power 71     207.966651583983200 -> Infinity Inexact Rounded Overflow
+powx2201 power 71     207.966651583983199 -> 9.999999999999994E+384 Inexact Rounded
+powx2204 power 0.003 -152.603449817093577 -> Infinity Inexact Rounded Overflow
+powx2203 power 0.003 -152.603449817093576 -> 9.999999999999994E+384 Inexact Rounded
+
+-- Nmin boundary
+powx2211 power 71    -206.886305341988480 -> 1.000000000000005E-383 Inexact Rounded
+powx2212 power 71    -206.886305341988481 -> 1.000000000000001E-383 Inexact Rounded
+powx2213 power 71    -206.886305341988482 -> 9.99999999999997E-384  Inexact Rounded Underflow Subnormal
+powx2214 power 71    -206.886305341988483 -> 9.99999999999992E-384  Inexact Rounded Underflow Subnormal
+--                                           9.999999999999924565357019820
+
+powx2215 power 0.003  151.810704623238543 -> 1.000000000000009E-383 Inexact Rounded
+powx2216 power 0.003  151.810704623238544 -> 1.000000000000003E-383 Inexact Rounded
+powx2217 power 0.003  151.810704623238545 -> 9.99999999999997E-384  Inexact Rounded Underflow Subnormal
+powx2218 power 0.003  151.810704623238546 -> 9.99999999999991E-384  Inexact Rounded Underflow Subnormal
+
+-- Ntiny boundary, these edge cases determined using half_up rounding
+rounding: half_up
+powx2221 power 71    -215.151510469220498 -> 1E-398    Inexact Rounded Underflow Subnormal
+powx2222 power 71    -215.151510469220499 -> 1E-398    Inexact Rounded Underflow Subnormal
+powx2223 power 71    -215.151510469220500 -> 0E-398    Inexact Rounded Underflow Subnormal Clamped
+powx2224 power 71    -215.151510469220501 -> 0E-398    Inexact Rounded Underflow Subnormal Clamped
+
+powx2225 power 0.003  157.875613618285691 -> 1E-398    Inexact Rounded Underflow Subnormal
+powx2226 power 0.003  157.875613618285692 -> 1E-398    Inexact Rounded Underflow Subnormal
+powx2227 power 0.003  157.875613618285693 -> 0E-398    Inexact Rounded Underflow Subnormal Clamped
+powx2228 power 0.003  220                 -> 0E-398    Inexact Rounded Underflow Subnormal Clamped
+rounding: half_even
+
+-- power(10, y) are important ...
+
+-- Integer powers are exact, unless over/underflow
+powx2301 power 10     385     -> Infinity Overflow Inexact Rounded
+powx2302 power 10     384     -> 1.000000000000000E+384 Rounded
+powx2303 power 10      17     -> 1.000000000000000E+17 Rounded
+powx2304 power 10      16     -> 1.000000000000000E+16 Rounded
+powx2305 power 10      15     -> 1000000000000000
+powx2306 power 10      10     -> 10000000000
+powx2307 power 10       5     -> 100000
+powx2308 power 10       1     -> 10
+powx2309 power 10       0     -> 1
+powx2310 power 10      -1     -> 0.1
+powx2311 power 10      -5     -> 0.00001
+powx2312 power 10      -6     -> 0.000001
+powx2313 power 10      -7     -> 1E-7
+powx2314 power 10      -8     -> 1E-8
+powx2315 power 10      -9     -> 1E-9
+powx2316 power 10     -10     -> 1E-10
+powx2317 power 10    -383     -> 1E-383
+powx2318 power 10    -384     -> 1E-384 Subnormal
+powx2319 power 10    -385     -> 1E-385 Subnormal
+powx2320 power 10    -397     -> 1E-397 Subnormal
+powx2321 power 10    -398     -> 1E-398 Subnormal
+powx2322 power 10    -399     -> 0E-398 Subnormal Underflow Inexact Rounded Clamped
+powx2323 power 10    -400     -> 0E-398 Subnormal Underflow Inexact Rounded Clamped
+
+-- Independent sanity check: 1961 Godfrey & Siddons four-figure logs
+powx2351 power 10   0.0000    -> 1
+powx2352 power 10   0.3010    -> 1.999861869632744 Inexact Rounded
+powx2353 power 10   0.4771    -> 2.999853181190793 Inexact Rounded
+powx2354 power 10   0.6021    -> 4.000368510461250 Inexact Rounded
+powx2355 power 10   0.6990    -> 5.000345349769785 Inexact Rounded
+powx2356 power 10   0.7782    -> 6.000673538641164 Inexact Rounded
+powx2357 power 10   0.8451    -> 7.000031591308969 Inexact Rounded
+powx2358 power 10   0.9031    -> 8.000184448550990 Inexact Rounded
+powx2359 power 10   0.9542    -> 8.999119108700520 Inexact Rounded
+powx2360 power 10   0.9956    -> 9.899197750805841 Inexact Rounded
+powx2361 power 10   0.9996    -> 9.990793899844618 Inexact Rounded
+precision: 4
+powx2371 power 10   0.0000    -> 1
+powx2372 power 10   0.3010    -> 2.000 Inexact Rounded
+powx2373 power 10   0.4771    -> 3.000 Inexact Rounded
+powx2374 power 10   0.6021    -> 4.000 Inexact Rounded
+powx2375 power 10   0.6990    -> 5.000 Inexact Rounded
+powx2376 power 10   0.7782    -> 6.001 Inexact Rounded
+powx2377 power 10   0.8451    -> 7.000 Inexact Rounded
+powx2378 power 10   0.9031    -> 8.000 Inexact Rounded
+powx2379 power 10   0.9542    -> 8.999 Inexact Rounded
+powx2380 power 10   0.9956    -> 9.899 Inexact Rounded
+powx2381 power 10   0.9996    -> 9.991 Inexact Rounded
+
+-- 10**x ~=2 (inverse of the test in log10.decTest)
+precision: 50
+powx2401 power 10 0.30102999566398119521373889472449302676818988146211 -> 2.0000000000000000000000000000000000000000000000000 Inexact Rounded
+precision: 49
+powx2402 power 10 0.3010299956639811952137388947244930267681898814621 -> 2.000000000000000000000000000000000000000000000000 Inexact Rounded
+precision: 48
+powx2403 power 10 0.301029995663981195213738894724493026768189881462 -> 2.00000000000000000000000000000000000000000000000 Inexact Rounded
+precision: 47
+powx2404 power 10 0.30102999566398119521373889472449302676818988146 -> 2.0000000000000000000000000000000000000000000000 Inexact Rounded
+precision: 46
+powx2405 power 10 0.3010299956639811952137388947244930267681898815 -> 2.000000000000000000000000000000000000000000000 Inexact Rounded
+precision: 45
+powx2406 power 10 0.301029995663981195213738894724493026768189881 -> 2.00000000000000000000000000000000000000000000 Inexact Rounded
+precision: 44
+powx2407 power 10 0.30102999566398119521373889472449302676818988 -> 2.0000000000000000000000000000000000000000000 Inexact Rounded
+precision: 43
+powx2408 power 10 0.3010299956639811952137388947244930267681899 -> 2.000000000000000000000000000000000000000000 Inexact Rounded
+precision: 42
+powx2409 power 10 0.301029995663981195213738894724493026768190 -> 2.00000000000000000000000000000000000000000 Inexact Rounded
+precision: 41
+powx2410 power 10 0.30102999566398119521373889472449302676819 -> 2.0000000000000000000000000000000000000000 Inexact Rounded
+precision: 40
+powx2411 power 10 0.3010299956639811952137388947244930267682 -> 2.000000000000000000000000000000000000000 Inexact Rounded
+precision: 39
+powx2412 power 10 0.301029995663981195213738894724493026768 -> 2.00000000000000000000000000000000000000 Inexact Rounded
+precision: 38
+powx2413 power 10 0.30102999566398119521373889472449302677 -> 2.0000000000000000000000000000000000000 Inexact Rounded
+precision: 37
+powx2414 power 10 0.3010299956639811952137388947244930268 -> 2.000000000000000000000000000000000000 Inexact Rounded
+precision: 36
+powx2415 power 10 0.301029995663981195213738894724493027 -> 2.00000000000000000000000000000000000 Inexact Rounded
+precision: 35
+powx2416 power 10 0.30102999566398119521373889472449303 -> 2.0000000000000000000000000000000000 Inexact Rounded
+precision: 34
+powx2417 power 10 0.3010299956639811952137388947244930 -> 2.000000000000000000000000000000000 Inexact Rounded
+precision: 33
+powx2418 power 10 0.301029995663981195213738894724493 -> 2.00000000000000000000000000000000 Inexact Rounded
+precision: 32
+powx2419 power 10 0.30102999566398119521373889472449 -> 2.0000000000000000000000000000000 Inexact Rounded
+precision: 31
+powx2420 power 10 0.3010299956639811952137388947245 -> 2.000000000000000000000000000000 Inexact Rounded
+precision: 30
+powx2421 power 10 0.301029995663981195213738894725 -> 2.00000000000000000000000000000 Inexact Rounded
+precision: 29
+powx2422 power 10 0.30102999566398119521373889472 -> 2.0000000000000000000000000000 Inexact Rounded
+precision: 28
+powx2423 power 10 0.3010299956639811952137388947 -> 2.000000000000000000000000000 Inexact Rounded
+precision: 27
+powx2424 power 10 0.301029995663981195213738895 -> 2.00000000000000000000000000 Inexact Rounded
+precision: 26
+powx2425 power 10 0.30102999566398119521373889 -> 2.0000000000000000000000000 Inexact Rounded
+precision: 25
+powx2426 power 10 0.3010299956639811952137389 -> 2.000000000000000000000000 Inexact Rounded
+precision: 24
+powx2427 power 10 0.301029995663981195213739 -> 2.00000000000000000000000 Inexact Rounded
+precision: 23
+powx2428 power 10 0.30102999566398119521374 -> 2.0000000000000000000000 Inexact Rounded
+precision: 22
+powx2429 power 10 0.3010299956639811952137 -> 2.000000000000000000000 Inexact Rounded
+precision: 21
+powx2430 power 10 0.301029995663981195214 -> 2.00000000000000000000 Inexact Rounded
+precision: 20
+powx2431 power 10 0.30102999566398119521 -> 2.0000000000000000000 Inexact Rounded
+precision: 19
+powx2432 power 10 0.3010299956639811952 -> 2.000000000000000000 Inexact Rounded
+precision: 18
+powx2433 power 10 0.301029995663981195 -> 2.00000000000000000 Inexact Rounded
+precision: 17
+powx2434 power 10 0.30102999566398120 -> 2.0000000000000000 Inexact Rounded
+precision: 16
+powx2435 power 10 0.3010299956639812 -> 2.000000000000000 Inexact Rounded
+precision: 15
+powx2436 power 10 0.301029995663981 -> 2.00000000000000 Inexact Rounded
+precision: 14
+powx2437 power 10 0.30102999566398 -> 2.0000000000000 Inexact Rounded
+precision: 13
+powx2438 power 10 0.3010299956640 -> 2.000000000000 Inexact Rounded
+precision: 12
+powx2439 power 10 0.301029995664 -> 2.00000000000 Inexact Rounded
+precision: 11
+powx2440 power 10 0.30102999566 -> 2.0000000000 Inexact Rounded
+precision: 10
+powx2441 power 10 0.3010299957 -> 2.000000000 Inexact Rounded
+precision:  9
+powx2442 power 10 0.301029996 -> 2.00000000 Inexact Rounded
+precision:  8
+powx2443 power 10 0.30103000 -> 2.0000000 Inexact Rounded
+precision:  7
+powx2444 power 10 0.3010300 -> 2.000000 Inexact Rounded
+precision:  6
+powx2445 power 10 0.301030 -> 2.00000 Inexact Rounded
+precision:  5
+powx2446 power 10 0.30103 -> 2.0000 Inexact Rounded
+precision:  4
+powx2447 power 10 0.3010 -> 2.000 Inexact Rounded
+precision:  3
+powx2448 power 10 0.301 -> 2.00 Inexact Rounded
+precision:  2
+powx2449 power 10 0.30 -> 2.0 Inexact Rounded
+precision:  1
+powx2450 power 10 0.3 -> 2 Inexact Rounded
+
+maxExponent: 384
+minExponent: -383
+precision:   16
+rounding:    half_even
+
+-- Close-to-e tests
+precision:   34
+powx2500 power 10 0.4342944819032518276511289189166048     -> 2.718281828459045235360287471352661  Inexact Rounded
+powx2501 power 10 0.4342944819032518276511289189166049     -> 2.718281828459045235360287471352661  Inexact Rounded
+powx2502 power 10 0.4342944819032518276511289189166050     -> 2.718281828459045235360287471352662  Inexact Rounded
+powx2503 power 10 0.4342944819032518276511289189166051     -> 2.718281828459045235360287471352663  Inexact Rounded
+powx2504 power 10 0.4342944819032518276511289189166052     -> 2.718281828459045235360287471352663  Inexact Rounded
+
+-- e**e, 16->34
+powx2505 power 2.718281828459045 2.718281828459045 -> '15.15426224147925705633739513098219' Inexact Rounded
+
+-- Sequence around an integer
+powx2512 power 10 2.9999999999999999999999999999999997     -> 999.9999999999999999999999999999993  Inexact Rounded
+powx2513 power 10 2.9999999999999999999999999999999998     -> 999.9999999999999999999999999999995  Inexact Rounded
+powx2514 power 10 2.9999999999999999999999999999999999     -> 999.9999999999999999999999999999998  Inexact Rounded
+powx2515 power 10 3.0000000000000000000000000000000000     -> 1000
+powx2516 power 10 3.0000000000000000000000000000000001     -> 1000.000000000000000000000000000000  Inexact Rounded
+powx2517 power 10 3.0000000000000000000000000000000002     -> 1000.000000000000000000000000000000  Inexact Rounded
+powx2518 power 10 3.0000000000000000000000000000000003     -> 1000.000000000000000000000000000001  Inexact Rounded
+
+-- randomly generated tests
+maxExponent: 384
+minExponent: -383
+
+-- P=34, within 0-999 -- positive arg2
+Precision: 34
+powx3201 power 5.301557744131969249145904611290735  369.3175647984435534243813466380579 -> 3.427165676345688240023113326603960E+267 Inexact Rounded
+powx3202 power 0.0000000000506875655819165973738225 21.93514102704466434121826965196878 -> 1.498169860033487321566659495340789E-226 Inexact Rounded
+powx3203 power 97.88877680721519917858007810494043  5.159898445242793470476673109899554 -> 18705942904.43290467281449559427982      Inexact Rounded
+powx3204 power 7.380441015594399747973924380493799  17.93614173904818313507525109033288 -> 3715757985820076.273336082702577274      Inexact Rounded
+powx3205 power 2.045623627647350918819219169855040  1082.999652407430697958175966996254 -> 4.208806435006704867447150904279854E+336 Inexact Rounded
+powx3206 power 0.0000000762582873112118926142955423 20.30534237055073996975203864170432 -> 2.967574278677013090697130349198877E-145 Inexact Rounded
+powx3207 power 0.0000000000194091470907814855660535 14.71164213947722238856835440242911 -> 2.564391397469554735037158345963280E-158 Inexact Rounded
+powx3208 power 0.0000000000509434185382818596853504 20.97051498204188277347203735421595 -> 1.420157372748083000927138678417272E-216 Inexact Rounded
+powx3209 power 0.0005389217212073307301395750745119 43.96798225485747315858678755538971 -> 1.957850185781292007977898626137240E-144 Inexact Rounded
+powx3210 power 498.5690105989136050444077447411198  128.1038813807243375878831104745803 -> 3.882212970903893127009102293596268E+345 Inexact Rounded
+powx3211 power 0.0000000935428918637303954281938975 5.736933454863278597460091596496099 -> 4.733219644540496152403967823635195E-41  Inexact Rounded
+powx3212 power 8.581586784734161309180363110126352  252.0229459968869784643374981477208 -> 1.907464842458674622356177850049873E+235 Inexact Rounded
+powx3213 power 294.1005302951621709143320795278305  155.5466374141708615975111014663722 -> 9.251717033292072959166737280729728E+383 Inexact Rounded
+powx3214 power 0.0000000041253343654396865855722090 19.00170974760425576247662125110472 -> 4.779566288553864405790921353593512E-160 Inexact Rounded
+powx3215 power 0.0000000000046912257352141395184092 24.66089523148729269098773236636878 -> 4.205126874048597849476723538057527E-280 Inexact Rounded
+powx3216 power 0.0000000000036796674296520639450494 22.09713956900694689234335912523078 -> 2.173081843837539818472071316420405E-253 Inexact Rounded
+powx3217 power 9.659887100303037657934372148567685  277.3765665424320875993026404492216 -> 1.614974043145519382749740616665041E+273 Inexact Rounded
+powx3218 power 0.0000083231310642229204398943076403 29.33123211782131466471359128190372 -> 1.013330439786660210757226597785328E-149 Inexact Rounded
+powx3219 power 0.0938084859086450954956863725653664 262.6091918199905272837286784975012 -> 1.262802485286301066967555821509344E-270 Inexact Rounded
+powx3220 power 8.194926977580900145696305910223304  184.3705133945546202012995485297248 -> 2.696353910907824016690021495828584E+168 Inexact Rounded
+powx3221 power 72.39594594653085161522285114566120  168.7721909489321402152033939836725 -> 7.379858293630460043361584410795031E+313 Inexact Rounded
+powx3222 power 0.0000000000003436856010144185445537 26.34329868961274988994452526178983 -> 4.585379573595865689605567720192768E-329 Inexact Rounded
+powx3223 power 20.18365633762226550254542489492623  127.2099705237021350103678072707790 -> 1.020919629336979353690271762206060E+166 Inexact Rounded
+powx3224 power 0.0000000553723990761530290129268131 8.157597566134754638015199501162405 -> 6.349030513396147480954474615067145E-60  Inexact Rounded
+powx3225 power 0.0001028742674265840656614682618035 93.99842317306603797965470281716482 -> 1.455871110222736531854990397769940E-375 Inexact Rounded
+powx3226 power 95.90195152775543876489746343266050  143.5992850002211509777720799352475 -> 3.881540015848530405189834366588567E+284 Inexact Rounded
+powx3227 power 0.0000000000041783747057233878360333 12.14591167764993506821334760954430 -> 6.190998557456885985124592807383163E-139 Inexact Rounded
+powx3228 power 0.5572830497086740798434917090018768 1001.921811263919522230330241349166 -> 3.871145158537170450093833881625838E-255 Inexact Rounded
+powx3229 power 516.4754759779093954790813881333232  29.23812463126309057800793645336343 -> 2.110986192408878294012450052929185E+79  Inexact Rounded
+powx3230 power 0.0000835892099464584776847299020706 27.64279992884843877453592659341588 -> 1.891535098905506689512376224943293E-113 Inexact Rounded
+powx3231 power 72.45836577748571838139900165184955  166.2562890735032545091688015160084 -> 1.784091549041561516923092542939141E+309 Inexact Rounded
+powx3232 power 305.1823317643335924007629563009032  83.01065159508472884219290136319623 -> 1.757493136164395229602456782779110E+206 Inexact Rounded
+powx3233 power 7.108527102951713603542835791733786  145.7057852766236365450463428821948 -> 1.285934774113104362663619896550528E+124 Inexact Rounded
+powx3234 power 6.471393503175464828149365697049824  64.11741937262455725284754171995720 -> 9.978990355881803195280027533011699E+51  Inexact Rounded
+powx3235 power 39.72898094138459885662380866268385  239.9677288017447400786672779735168 -> 5.422218208517098335832848487375086E+383 Inexact Rounded
+powx3236 power 0.0002865592332736973000183287329933 90.34733869590583787065642532641096 -> 8.293733126976212033209243257136796E-321 Inexact Rounded
+powx3237 power 0.0000011343384394864811195077357936 1.926568285528399656789140809399396 -> 3.516055639378350146874261077470142E-12  Inexact Rounded
+powx3238 power 0.0000000035321610295065299384889224 7.583861778824284092434085265265582 -> 7.970899823817369764381976286536230E-65  Inexact Rounded
+powx3239 power 657.5028301569352677543770758346683  90.55778453811965116200206020172758 -> 1.522530898581564200655160665723268E+255 Inexact Rounded
+powx3240 power 8.484756398325748879450577520251447  389.7468292476262478578280531222417 -> 8.595142803587368093392510310811218E+361 Inexact Rounded
+
+-- P=16, within 0-99 -- positive arg2
+Precision: 16
+powx3101 power 0.0000215524639223 48.37532522355252 -> 1.804663257287277E-226 Inexact Rounded
+powx3102 power 00.80705856227999  2706.777535121391 -> 1.029625065876157E-252 Inexact Rounded
+powx3103 power 3.445441676383689  428.5185892455830 -> 1.657401683096454E+230 Inexact Rounded
+powx3104 power 0.0040158689495826 159.5725558816240 -> 4.255743665762492E-383 Inexact Rounded
+powx3105 power 0.0000841553281215 38.32504413453944 -> 6.738653902512052E-157 Inexact Rounded
+powx3106 power 0.7322610252571353 502.1254457674118 -> 1.109978126985943E-68  Inexact Rounded
+powx3107 power 10.75052532144880  67.34180604734781 -> 2.873015019470189E+69  Inexact Rounded
+powx3108 power 26.20425952945617  104.6002671186488 -> 2.301859355777030E+148 Inexact Rounded
+powx3109 power 0.0000055737473850 31.16285859005424 -> 1.883348470100446E-164 Inexact Rounded
+powx3110 power 61.06096011360700  10.93608439088726 -> 3.382686473028249E+19  Inexact Rounded
+powx3111 power 9.340880853257137  179.9094938131726 -> 3.819299795937696E+174 Inexact Rounded
+powx3112 power 0.0000050767371756 72.03346394186741 -> 4.216236691569869E-382 Inexact Rounded
+powx3113 power 6.838478807860596  47.49665590602285 -> 4.547621630099203E+39  Inexact Rounded
+powx3114 power 0.1299324346439081 397.7440523576938 -> 3.065047705553981E-353 Inexact Rounded
+powx3115 power 0.0003418047034264 20.00516791512018 -> 4.546189665380487E-70  Inexact Rounded
+powx3116 power 0.0001276899611715 78.12968287355703 -> 5.960217405063995E-305 Inexact Rounded
+powx3117 power 25.93160588180509  252.6245071004620 -> 1.472171597589146E+357 Inexact Rounded
+powx3118 power 35.47516857763178  86.14723037360925 -> 3.324299908481125E+133 Inexact Rounded
+powx3119 power 0.0000048171086721 43.31965603038666 -> 4.572331516616228E-231 Inexact Rounded
+powx3120 power 17.97652681097851  144.4684576550292 -> 1.842509906097860E+181 Inexact Rounded
+powx3121 power 3.622765141518729  305.1948680344950 -> 4.132320967578704E+170 Inexact Rounded
+powx3122 power 0.0080959002453519 143.9899444945627 -> 6.474627812947047E-302 Inexact Rounded
+powx3123 power 9.841699927276571  299.2466668837188 -> 1.489097656208736E+297 Inexact Rounded
+powx3124 power 0.0786659206232355 347.4750796962570 -> 2.05764809646925E-384  Inexact Rounded Underflow Subnormal
+powx3125 power 0.0000084459792645 52.47348690745487 -> 6.076251876516942E-267 Inexact Rounded
+powx3126 power 27.86589909967504  191.7296537102283 -> 1.157064112989386E+277 Inexact Rounded
+powx3127 power 0.0000419907937234 58.44957702730767 -> 1.496950672075162E-256 Inexact Rounded
+powx3128 power 0.0000664977739382 80.06749213261876 -> 3.488517620107875E-335 Inexact Rounded
+powx3129 power 58.49554484886656  125.8480768373499 -> 2.449089862146640E+222 Inexact Rounded
+powx3130 power 15.02820060024449  212.3527988973338 -> 8.307913932682067E+249 Inexact Rounded
+powx3131 power 0.0002650089942992 30.92173123678761 -> 2.517827664836147E-111 Inexact Rounded
+powx3132 power 0.0007342977426578 69.49168880741123 -> 1.600168665674440E-218 Inexact Rounded
+powx3133 power 0.0063816068650629 150.1400094183812 -> 2.705057295799001E-330 Inexact Rounded
+powx3134 power 9.912921122728791  297.8274013633411 -> 4.967624993438900E+296 Inexact Rounded
+powx3135 power 1.988603563989245  768.4862967922182 -> 2.692842474899596E+229 Inexact Rounded
+powx3136 power 8.418014519517691  164.2431359980725 -> 9.106211585888836E+151 Inexact Rounded
+powx3137 power 6.068823604450686  120.2955212365837 -> 1.599431918105982E+94  Inexact Rounded
+powx3138 power 56.90062738303850  54.90468294683645 -> 2.312839177902428E+96  Inexact Rounded
+powx3139 power 5.710905139750871  73.44608752962156 -> 3.775876053709929E+55  Inexact Rounded
+powx3140 power 0.0000017446761203 1.223981492228899 -> 8.952936595465635E-8   Inexact Rounded
+
+-- P=7, within 0-9 -- positive arg2
+Precision: 7
+powx3001 power 8.738689  55.96523 -> 4.878180E+52  Inexact Rounded
+powx3002 power 0.0404763 147.4965 -> 3.689722E-206 Inexact Rounded
+powx3003 power 0.0604232 76.69778 -> 3.319183E-94  Inexact Rounded
+powx3004 power 0.0058855 107.5018 -> 1.768875E-240 Inexact Rounded
+powx3005 power 2.058302  1173.050 -> 5.778899E+367 Inexact Rounded
+powx3006 power 0.0056998 85.70157 -> 4.716783E-193 Inexact Rounded
+powx3007 power 0.8169297 3693.537 -> 4.475962E-325 Inexact Rounded
+powx3008 power 0.2810153 659.9568 -> 1.533177E-364 Inexact Rounded
+powx3009 power 4.617478  15.68308 -> 2.629748E+10  Inexact Rounded
+powx3010 power 0.0296418 244.2302 -> 6.207949E-374 Inexact Rounded
+powx3011 power 0.0036456 127.9987 -> 8.120891E-313 Inexact Rounded
+powx3012 power 0.5012813 577.5418 -> 6.088802E-174 Inexact Rounded
+powx3013 power 0.0033275 119.9800 -> 5.055049E-298 Inexact Rounded
+powx3014 power 0.0037652 111.7092 -> 1.560351E-271 Inexact Rounded
+powx3015 power 0.6463252 239.0568 -> 4.864564E-46  Inexact Rounded
+powx3016 power 4.784378  475.0521 -> 8.964460E+322 Inexact Rounded
+powx3017 power 4.610305  563.1791 -> 6.290298E+373 Inexact Rounded
+powx3018 power 0.0175167 80.52208 -> 3.623472E-142 Inexact Rounded
+powx3019 power 5.238307  356.7944 -> 4.011461E+256 Inexact Rounded
+powx3020 power 0.0003527 96.26347 -> 4.377932E-333 Inexact Rounded
+powx3021 power 0.0015155 136.0516 -> 2.57113E-384  Inexact Rounded Underflow Subnormal
+powx3022 power 5.753573  273.2340 -> 4.373184E+207 Inexact Rounded
+powx3023 power 7.778665  332.7917 -> 3.060640E+296 Inexact Rounded
+powx3024 power 1.432479  2046.064 -> 2.325829E+319 Inexact Rounded
+powx3025 power 5.610516  136.4563 -> 1.607502E+102 Inexact Rounded
+powx3026 power 0.0050697 137.4513 -> 3.522315E-316 Inexact Rounded
+powx3027 power 5.678737  85.16253 -> 1.713909E+64  Inexact Rounded
+powx3028 power 0.0816167 236.1973 -> 9.228802E-258 Inexact Rounded
+powx3029 power 0.2602805 562.0157 -> 2.944556E-329 Inexact Rounded
+powx3030 power 0.0080936 24.25367 -> 1.839755E-51  Inexact Rounded
+powx3031 power 4.092016  82.94603 -> 5.724948E+50  Inexact Rounded
+powx3032 power 0.0078255 7.204184 -> 6.675342E-16  Inexact Rounded
+powx3033 power 0.9917693 29846.44 -> 7.430177E-108 Inexact Rounded
+powx3034 power 1.610380  301.2467 -> 2.170142E+62  Inexact Rounded
+powx3035 power 0.0588236 212.1097 -> 1.023196E-261 Inexact Rounded
+powx3036 power 2.498069  531.4647 -> 2.054561E+211 Inexact Rounded
+powx3037 power 9.964342  326.5438 -> 1.089452E+326 Inexact Rounded
+powx3038 power 0.0820626 268.8718 -> 1.107350E-292 Inexact Rounded
+powx3039 power 6.176486  360.7779 -> 1.914449E+285 Inexact Rounded
+powx3040 power 4.206363  16.17288 -> 1.231314E+10  Inexact Rounded
+
+-- P=34, within 0-999 -- negative arg2
+Precision: 34
+powx3701 power 376.0915270000109486633402827007902  -35.69822349904102131649243701958463 -> 1.165722831225506457828653413200143E-92  Inexact Rounded
+powx3702 power 0.0000000503747440074613191665845314 -9.520308341497979093021813571450575 -> 3.000432478861883953977971226770410E+69  Inexact Rounded
+powx3703 power 290.6858731495339778337953407938308  -118.5459048597789693292455673428367 -> 9.357969047113989238392527565200302E-293 Inexact Rounded
+powx3704 power 4.598864607620052062908700928454182  -299.8323667698931125720218537483753 -> 2.069641269855413539579128114448478E-199 Inexact Rounded
+powx3705 power 2.556952676986830645708349254938903  -425.1755373251941383147998924703593 -> 4.428799777833598654260883861514638E-174 Inexact Rounded
+powx3706 power 0.0000005656198763404221986640610118 -32.83361380678301321230028730075315 -> 1.340270622401829145968477601029251E+205 Inexact Rounded
+powx3707 power 012.4841978642452960750801410372125  -214.3734291828712962809866663321921 -> 9.319857751170603140459057535971202E-236 Inexact Rounded
+powx3708 power 0.0000000056041586148066919174315551 -37.21129049213858341528033343116533 -> 1.118345010652454313186702341873169E+307 Inexact Rounded
+powx3709 power 0.0694569218941833767199998804202152 -8.697509072368973932501239815677732 -> 11862866995.51026489032838174290271      Inexact Rounded
+powx3710 power 6.380984024259450398729243522354144  -451.0635696889193561457985486366827 -> 8.800353109387322474809325670314330E-364 Inexact Rounded
+powx3711 power 786.0264840756809048288007204917801  -43.09935384678762773057342161718540 -> 1.616324183365644133979585419925934E-125 Inexact Rounded
+powx3712 power 96.07836427113204744101287948445130  -185.1414572546330024388914720271876 -> 8.586320815218383004023264980018610E-368 Inexact Rounded
+powx3713 power 0.0000000002332189796855870659792406 -5.779561613164628076880609893753327 -> 4.678450775876385793618570483345066E+55  Inexact Rounded
+powx3714 power 0.7254146672024602242369943237968857 -2115.512891397828615710130092245691 -> 8.539080958041689288202111403102495E+294 Inexact Rounded
+powx3715 power 0.0017380543649702864796144008592137 -6.307668017761022788220578633538713 -> 256309141459075651.2275798017695017      Inexact Rounded
+powx3716 power 05.29498758952276908267649116142379  -287.3233896734103442991981056134167 -> 1.039130027847489364009368608104291E-208 Inexact Rounded
+powx3717 power 15.64403593865932622003462779104178  -110.5296633358063267478609032002475 -> 9.750540276026524527375125980296142E-133 Inexact Rounded
+powx3718 power 89.69639006761571087634945077373508  -181.3209914139357665609268339422627 -> 8.335034232277762924539395632025281E-355 Inexact Rounded
+powx3719 power 6.974087483731006359914914110135058  -174.6815625746710345173615508179842 -> 4.553072265122011176641590109568031E-148 Inexact Rounded
+powx3720 power 0.0034393024010554821130553772681993 -93.60931598413919272595497100497364 -> 4.067468855817145539589988349449394E+230 Inexact Rounded
+powx3721 power 63.32834072300379155053737260965633  -168.3926799435088324825751446957616 -> 4.207907835462640471617519501741094E-304 Inexact Rounded
+powx3722 power 00.00216088174206276369011255907785  -70.12279562855442784757874508991013 -> 8.000657143378187029609343435067057E+186 Inexact Rounded
+powx3723 power 934.5957982703545893572134393004375  -102.2287735565878252484031426026726 -> 2.073813769209257617246544424827240E-304 Inexact Rounded
+powx3724 power 107.9116792558793921873995885441177  -44.11941092260869786313838181499158 -> 2.005476533631183268912552168759595E-90  Inexact Rounded
+powx3725 power 0.0000000000188049827381428191769262 -19.32118917192242027966847501724073 -> 1.713174297100918857053338286389034E+207 Inexact Rounded
+powx3726 power 614.9820907366248142166636259027728  -4.069913257030791586645250035698123 -> 4.462432572576935752713876293746717E-12  Inexact Rounded
+powx3727 power 752.0655175769182096165651274049422  -22.59292060348797472013598378334370 -> 1.039881526694635205040192531504131E-65  Inexact Rounded
+powx3728 power 72.20446632047659449616175456059013  -175.4705356401853924020842356605072 -> 7.529540175791582421966947814549028E-327 Inexact Rounded
+powx3729 power 518.8346486600403405764055847937416  -65.87320268592761588756963215588232 -> 1.420189426992170936958891180073151E-179 Inexact Rounded
+powx3730 power 3.457164372003960576453458502270716  -440.3201118177861273814529713443698 -> 6.176418595751201287186292664257369E-238 Inexact Rounded
+powx3731 power 7.908352793344189720739467675503991  -298.6646112894719680394152664740255 -> 5.935857120229147638104675057695125E-269 Inexact Rounded
+powx3732 power 0.0000004297399403788595027926075086 -22.66504617185071293588817501468339 -> 2.012270405520600820469665145636204E+144 Inexact Rounded
+powx3733 power 0.0000008592124097322966354868716443 -9.913109586558030204789520190180906 -> 1.354958763843310237046818832755215E+60  Inexact Rounded
+powx3734 power 161.4806080561258105880907470989925  -70.72907837434814261716311990271578 -> 6.632555003698945544941329872901929E-157 Inexact Rounded
+powx3735 power 0.0000000090669568624173832705631918 -36.53759624613665940127058439106640 -> 7.161808401023414735428130112941559E+293 Inexact Rounded
+powx3736 power 0.0000000000029440295978365709342752 -1.297354238738921988884421117731562 -> 911731060579291.7661267358872917380      Inexact Rounded
+powx3737 power 21.37477220144832172175460425143692  -76.95949933640539226475686997477889 -> 4.481741242418091914011962399912885E-103 Inexact Rounded
+powx3738 power 0.0000000000186657798201636342150903 -20.18296240350678245567049161730909 -> 3.483954007114900406906338526575672E+216 Inexact Rounded
+powx3739 power 0.0006522464792960191985996959126792 -80.03762491483514679886504099194414 -> 9.266548513614215557228467517053035E+254 Inexact Rounded
+powx3740 power 0.0000000032851343694200568966168055 -21.53462116926375512242403160008026 -> 4.873201679668455240861376213601189E+182 Inexact Rounded
+
+-- P=16, within 0-99 -- negative arg2
+Precision: 16
+powx3601 power 0.0000151338748474 -40.84655618364688 -> 7.628470824137755E+196 Inexact Rounded
+powx3602 power 0.1542771848654862 -435.8830009466800 -> 6.389817177800744E+353 Inexact Rounded
+powx3603 power 48.28477749367364  -218.5929209902050 -> 8.531049532576154E-369 Inexact Rounded
+powx3604 power 7.960775891584911  -12.78113732182505 -> 3.053270889769488E-12  Inexact Rounded
+powx3605 power 0.9430340651863058 -9010.470056913748 -> 3.313374654923807E+229 Inexact Rounded
+powx3606 power 0.0000202661501602 -65.57915207383306 -> 5.997379176536464E+307 Inexact Rounded
+powx3607 power 04.33007440798390  -232.0476834666588 -> 2.007827183010456E-148 Inexact Rounded
+powx3608 power 0.0000141944643914 -11.32407921958717 -> 7.902934485074846E+54  Inexact Rounded
+powx3609 power 0.0000021977758261 -53.53706138253307 -> 8.195631772317815E+302 Inexact Rounded
+powx3610 power 39.51297655474188  -19.40370976012326 -> 1.040699608072659E-31  Inexact Rounded
+powx3611 power 38.71210232488775  -66.58341618227921 -> 1.886855066146495E-106 Inexact Rounded
+powx3612 power 0.0000804235229062 -6.715207948992859 -> 3.134757864389333E+27  Inexact Rounded
+powx3613 power 0.0000073547092399 -11.27725685719934 -> 7.781428390953695E+57  Inexact Rounded
+powx3614 power 52.72181272599316  -186.1422311607435 -> 2.916601998744177E-321 Inexact Rounded
+powx3615 power 0.0969519963083306 -280.8220862151369 -> 3.955906885970987E+284 Inexact Rounded
+powx3616 power 94.07263302150081  -148.2031146071230 -> 3.361958990752490E-293 Inexact Rounded
+powx3617 power 85.80286965053704  -90.21453695813759 -> 3.715602429645798E-175 Inexact Rounded
+powx3618 power 03.52699858152259  -492.0414362539196 -> 4.507309220081092E-270 Inexact Rounded
+powx3619 power 0.0508278086396068 -181.0871731572167 -> 2.034428013017949E+234 Inexact Rounded
+powx3620 power 0.395576740303172  -915.5524507432392 -> 5.706585187437578E+368 Inexact Rounded
+powx3621 power 38.06105826789202  -49.75913753435335 -> 2.273188991431738E-79  Inexact Rounded
+powx3622 power 0.0003656748910646 -73.28988491310354 -> 7.768936940568763E+251 Inexact Rounded
+powx3623 power 0.0000006373551809 -51.30825234200690 -> 7.697618167701985E+317 Inexact Rounded
+powx3624 power 82.41729920673856  -35.73319631625699 -> 3.424042354585529E-69  Inexact Rounded
+powx3625 power 0.7845821453127670 -971.4982028897663 -> 2.283415527661089E+102 Inexact Rounded
+powx3626 power 4.840983673433497  -182.3730452370515 -> 1.220591407927770E-125 Inexact Rounded
+powx3627 power 0.0000006137592139 -2.122139474431484 -> 15231217034839.29      Inexact Rounded
+powx3628 power 0.0003657962862984 -35.97993782448099 -> 4.512701319250839E+123 Inexact Rounded
+powx3629 power 40.93693004443150  -165.1362408792997 -> 6.044276411057239E-267 Inexact Rounded
+powx3630 power 0.2941552583028898 -17.41046264945892 -> 1787833103.503346      Inexact Rounded
+powx3631 power 63.99335135369977  -69.92417205168579 -> 5.099359804872509E-127 Inexact Rounded
+powx3632 power 0.0000657924467388 -89.14497293588313 -> 6.145878266688521E+372 Inexact Rounded
+powx3633 power 11.35071250339147  -323.3705865614542 -> 6.863626248766775E-342 Inexact Rounded
+powx3634 power 23.88024718470895  -277.7117513329510 -> 2.006441422612815E-383 Inexact Rounded
+powx3635 power 0.0000009111939914 -58.51782946929182 -> 2.954352883996773E+353 Inexact Rounded
+powx3636 power 0.0000878179048782 -75.81060420238669 -> 3.306878455207585E+307 Inexact Rounded
+powx3637 power 07.39190564273779  -287.5047307244636 -> 1.692080354659805E-250 Inexact Rounded
+powx3638 power 0.0000298310819799 -1.844740377759355 -> 222874718.7238888      Inexact Rounded
+powx3639 power 0.0000006412929384 -28.24850078229290 -> 8.737164230666529E+174 Inexact Rounded
+powx3640 power 0.0000010202965998 -47.17573701956498 -> 4.392845306049341E+282 Inexact Rounded
+
+-- P=7, within 0-9 -- negative arg2
+Precision: 7
+powx3501 power 0.326324  -71.96509  -> 1.000673E+35  Inexact Rounded
+powx3502 power 0.0017635 -0.7186967 -> 95.28419      Inexact Rounded
+powx3503 power 8.564155  -253.0899  -> 8.850512E-237 Inexact Rounded
+powx3504 power 8.987272  -2.155789  -> 0.008793859   Inexact Rounded
+powx3505 power 9.604856  -139.9630  -> 3.073492E-138 Inexact Rounded
+powx3506 power 0.8472919 -2539.085  -> 5.372686E+182 Inexact Rounded
+powx3507 power 5.312329  -60.32965  -> 1.753121E-44  Inexact Rounded
+powx3508 power 0.0338294 -100.5440  -> 7.423939E+147 Inexact Rounded
+powx3509 power 0.0017777 -130.8583  -> 7.565629E+359 Inexact Rounded
+powx3510 power 8.016154  -405.5689  -> 2.395977E-367 Inexact Rounded
+powx3511 power 5.016570  -327.8906  -> 2.203784E-230 Inexact Rounded
+powx3512 power 0.8161743 -744.5276  -> 4.786899E+65  Inexact Rounded
+powx3513 power 0.0666343 -164.7320  -> 5.951240E+193 Inexact Rounded
+powx3514 power 0.0803966 -202.2666  -> 2.715512E+221 Inexact Rounded
+powx3515 power 0.0014752 -12.55547  -> 3.518905E+35  Inexact Rounded
+powx3516 power 9.737565  -14.69615  -> 2.975672E-15  Inexact Rounded
+powx3517 power 0.6634172 -152.7308  -> 1.654458E+27  Inexact Rounded
+powx3518 power 0.0009337 -33.32939  -> 9.575039E+100 Inexact Rounded
+powx3519 power 8.679922  -224.4194  -> 2.392446E-211 Inexact Rounded
+powx3520 power 7.390494  -161.9483  -> 2.088375E-141 Inexact Rounded
+powx3521 power 0.4631489 -417.1673  -> 2.821106E+139 Inexact Rounded
+powx3522 power 0.0095471 -7.677458  -> 3.231855E+15  Inexact Rounded
+powx3523 power 6.566339  -176.1867  -> 9.965633E-145 Inexact Rounded
+powx3524 power 2.696128  -26.15501  -> 5.419731E-12  Inexact Rounded
+powx3525 power 0.4464366 -852.1893  -> 2.957725E+298 Inexact Rounded
+powx3526 power 0.4772006 -921.4111  -> 1.118105E+296 Inexact Rounded
+powx3527 power 8.923696  -359.2211  -> 3.501573E-342 Inexact Rounded
+powx3528 power 0.0018008 -66.91252  -> 4.402718E+183 Inexact Rounded
+powx3529 power 0.0811964 -92.83278  -> 1.701111E+101 Inexact Rounded
+powx3530 power 0.0711219 -58.94347  -> 4.644148E+67  Inexact Rounded
+powx3531 power 7.958121  -50.66123  -> 2.311161E-46  Inexact Rounded
+powx3532 power 6.106466  -81.83610  -> 4.943285E-65  Inexact Rounded
+powx3533 power 4.557634  -129.5268  -> 4.737917E-86  Inexact Rounded
+powx3534 power 0.0027348 -9.180135  -> 3.383524E+23  Inexact Rounded
+powx3535 power 0.0083924 -46.24016  -> 9.996212E+95  Inexact Rounded
+powx3536 power 2.138523  -47.25897  -> 2.507009E-16  Inexact Rounded
+powx3537 power 1.626728  -1573.830  -> 2.668117E-333 Inexact Rounded
+powx3538 power 0.082615  -164.5842  -> 1.717882E+178 Inexact Rounded
+powx3539 power 7.636003  -363.6763  -> 8.366174E-322 Inexact Rounded
+powx3540 power 0.0021481 -138.0065  -> 1.562505E+368 Inexact Rounded
+
+
+-- Invalid operations due to restrictions
+-- [next two probably skipped by most test harnesses]
+precision: 100000000
+powx4001  power 1 1.1 ->  NaN         Invalid_context
+precision:  99999999
+powx4002  power 1 1.1 ->  NaN         Invalid_context
+
+precision: 9
+maxExponent:   1000000
+minExponent:   -999999
+powx4003  power 1 1.1  ->  NaN        Invalid_context
+maxExponent:    999999
+minExponent:   -999999
+powx4004  power 1 1.1  ->  1.00000000 Inexact Rounded
+maxExponent:    999999
+minExponent:  -1000000
+powx4005  power 1 1.1  ->  NaN        Invalid_context
+maxExponent:    999999
+minExponent:   -999998
+powx4006  power 1 1.1  ->  1.00000000 Inexact Rounded
+
+-- operand range violations
+powx4007  power 1             1.1E+999999  ->  1
+powx4008  power 1             1.1E+1000000 ->  NaN Invalid_operation
+powx4009  power 1.1E+999999   1.1          ->  Infinity Overflow Inexact Rounded
+powx4010  power 1.1E+1000000  1.1          ->  NaN Invalid_operation
+powx4011  power 1             1.1E-1999997 ->  1.00000000 Inexact Rounded
+powx4012  power 1             1.1E-1999998 ->  NaN Invalid_operation
+powx4013  power 1.1E-1999997  1.1          ->  0E-1000006 Underflow Inexact Rounded Clamped Subnormal
+powx4014  power 1.1E-1999998  1.1          ->  NaN Invalid_operation
+
+-- rounding modes -- power is sensitive
+precision:   7
+maxExponent: 99
+minExponent: -99
+
+--   0.7  ** 3.3 =>   0.30819354053418943822
+--   0.7  ** 3.4 =>   0.29739477638272533854
+--  -1.2  ** 17  => -22.18611106740436992
+--  -1.3  ** 17  => -86.50415919381337933
+--   0.5  ** 11  =>   0.00048828125
+--   3.15 ** 3   =>  31.255875
+
+rounding: up
+powx4100  power      0.7  3.3 ->  0.3081936 Inexact Rounded
+powx4101  power      0.7  3.4 ->  0.2973948 Inexact Rounded
+powx4102  power     -1.2  17  -> -22.18612  Inexact Rounded
+powx4103  power     -1.3  17  -> -86.50416  Inexact Rounded
+powx4104  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
+powx4105  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
+
+rounding: down
+powx4120  power      0.7  3.3 ->  0.3081935 Inexact Rounded
+powx4121  power      0.7  3.4 ->  0.2973947 Inexact Rounded
+powx4122  power     -1.2  17  -> -22.18611  Inexact Rounded
+powx4123  power     -1.3  17  -> -86.50415  Inexact Rounded
+powx4124  power  17 81.27115  -> 9.999973E+99 Inexact Rounded
+powx4125  power  17 81.27116  -> 9.999999E+99 Overflow Inexact Rounded
+
+rounding: floor
+powx4140  power      0.7  3.3 ->  0.3081935 Inexact Rounded
+powx4141  power      0.7  3.4 ->  0.2973947 Inexact Rounded
+powx4142  power     -1.2  17  -> -22.18612  Inexact Rounded
+powx4143  power     -1.3  17  -> -86.50416  Inexact Rounded
+powx4144  power  17 81.27115  -> 9.999973E+99 Inexact Rounded
+powx4145  power  17 81.27116  -> 9.999999E+99 Overflow Inexact Rounded
+
+rounding: ceiling
+powx4160  power      0.7  3.3 ->  0.3081936 Inexact Rounded
+powx4161  power      0.7  3.4 ->  0.2973948 Inexact Rounded
+powx4162  power     -1.2  17  -> -22.18611  Inexact Rounded
+powx4163  power     -1.3  17  -> -86.50415  Inexact Rounded
+powx4164  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
+powx4165  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
+
+rounding: half_up
+powx4180  power      0.7  3.3 ->  0.3081935 Inexact Rounded
+powx4181  power      0.7  3.4 ->  0.2973948 Inexact Rounded
+powx4182  power     -1.2  17  -> -22.18611  Inexact Rounded
+powx4183  power     -1.3  17  -> -86.50416  Inexact Rounded
+powx4184  power      0.5  11  ->  0.0004882813 Inexact Rounded
+powx4185  power      3.15  3  ->  31.25588  Inexact Rounded
+powx4186  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
+powx4187  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
+
+rounding: half_even
+powx4200  power      0.7  3.3 ->  0.3081935 Inexact Rounded
+powx4201  power      0.7  3.4 ->  0.2973948 Inexact Rounded
+powx4202  power     -1.2  17  -> -22.18611  Inexact Rounded
+powx4203  power     -1.3  17  -> -86.50416  Inexact Rounded
+powx4204  power      0.5  11  ->  0.0004882812 Inexact Rounded
+powx4205  power      3.15  3  ->  31.25588  Inexact Rounded
+powx4206  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
+powx4207  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
+
+rounding: half_down
+powx4220  power      0.7  3.3 ->  0.3081935 Inexact Rounded
+powx4221  power      0.7  3.4 ->  0.2973948 Inexact Rounded
+powx4222  power     -1.2  17  -> -22.18611  Inexact Rounded
+powx4223  power     -1.3  17  -> -86.50416  Inexact Rounded
+powx4224  power      0.5  11  ->  0.0004882812 Inexact Rounded
+powx4225  power      3.15  3  ->  31.25587  Inexact Rounded
+powx4226  power     -3.15  3  -> -31.25587  Inexact Rounded
+powx4227  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
+powx4228  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
+
+
+-- more rounding tests as per Ilan Nehama's suggestions & analysis
+-- these are likely to show > 0.5 ulp error for very small powers
+precision:   7
+maxExponent: 96
+minExponent: -95
+
+-- For x=nextfp(1)=1.00..001 (where the number of 0s is precision-2)
+--   power(x,y)=x when the rounding is up (e.g., toward_pos_inf or
+--   ceil) for any y in (0,1].
+rounding: ceiling
+powx4301  power  1.000001 0          -> 1
+-- The next test should be skipped for decNumber
+powx4302  power  1.000001 1e-101     -> 1.000001   Inexact Rounded
+-- The next test should be skipped for decNumber
+powx4303  power  1.000001 1e-95      -> 1.000001   Inexact Rounded
+powx4304  power  1.000001 1e-10      -> 1.000001   Inexact Rounded
+powx4305  power  1.000001 0.1        -> 1.000001   Inexact Rounded
+powx4306  power  1.000001 0.1234567  -> 1.000001   Inexact Rounded
+powx4307  power  1.000001 0.7        -> 1.000001   Inexact Rounded
+powx4308  power  1.000001 0.9999999  -> 1.000001   Inexact Rounded
+powx4309  power  1.000001 1.000000   -> 1.000001
+--   power(x,y)=1 when the rounding is down (e.g. toward_zero or
+--   floor) for any y in [0,1).
+rounding: floor
+powx4321  power  1.000001 0          -> 1
+powx4322  power  1.000001 1e-101     -> 1.000000   Inexact Rounded
+powx4323  power  1.000001 1e-95      -> 1.000000   Inexact Rounded
+powx4324  power  1.000001 1e-10      -> 1.000000   Inexact Rounded
+powx4325  power  1.000001 0.1        -> 1.000000   Inexact Rounded
+powx4326  power  1.000001 0.1234567  -> 1.000000   Inexact Rounded
+powx4327  power  1.000001 0.7        -> 1.000000   Inexact Rounded
+powx4328  power  1.000001 0.9999999  -> 1.000000   Inexact Rounded
+powx4329  power  1.000001 1.000000   -> 1.000001
+
+-- For x=prevfp(1)=0.99..99 (where the number of 9s is precision)
+--   power(x,y)=x when the rounding is down for any y in (0,1].
+rounding: floor
+powx4341  power  0.9999999 0          -> 1
+-- The next test should be skipped for decNumber
+powx4342  power  0.9999999 1e-101     -> 0.9999999   Inexact Rounded
+-- The next test should be skipped for decNumber
+powx4343  power  0.9999999 1e-95      -> 0.9999999   Inexact Rounded
+powx4344  power  0.9999999 1e-10      -> 0.9999999   Inexact Rounded
+powx4345  power  0.9999999 0.1        -> 0.9999999   Inexact Rounded
+powx4346  power  0.9999999 0.1234567  -> 0.9999999   Inexact Rounded
+powx4347  power  0.9999999 0.7        -> 0.9999999   Inexact Rounded
+powx4348  power  0.9999999 0.9999999  -> 0.9999999   Inexact Rounded
+powx4349  power  0.9999999 1.000000   -> 0.9999999
+--   power(x,y)=1 when the rounding is up for any y in (0,1].
+rounding: ceiling
+powx4361  power  0.9999999 0          -> 1
+powx4362  power  0.9999999 1e-101     -> 1.000000    Inexact Rounded
+powx4363  power  0.9999999 1e-95      -> 1.000000    Inexact Rounded
+powx4364  power  0.9999999 1e-10      -> 1.000000    Inexact Rounded
+powx4365  power  0.9999999 0.1        -> 1.000000    Inexact Rounded
+powx4366  power  0.9999999 0.1234567  -> 1.000000    Inexact Rounded
+powx4367  power  0.9999999 0.7        -> 1.000000    Inexact Rounded
+powx4368  power  0.9999999 0.9999999  -> 1.000000    Inexact Rounded
+powx4369  power  0.9999999 1.000000   -> 0.9999999
+
+-- For x=nextfp(0)
+--   power(x,y)=0 when the rounding is down for any y larger than 1.
+rounding: floor
+powx4382  power  1e-101    0          -> 1
+powx4383  power  1e-101    0.9999999  -> 1E-101 Underflow Subnormal Inexact Rounded
+powx4384  power  1e-101    1.000000   -> 1E-101 Subnormal
+powx4385  power  1e-101    1.000001   -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
+powx4386  power  1e-101    2.000000   -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
diff --git a/Lib/test/decimaltestdata/powersqrt.decTest b/Lib/test/decimaltestdata/powersqrt.decTest
new file mode 100644
index 0000000..6f79f6c
--- /dev/null
+++ b/Lib/test/decimaltestdata/powersqrt.decTest
@@ -0,0 +1,2970 @@
+------------------------------------------------------------------------

+-- powersqrt.decTest -- decimal square root, using power              --

+-- Copyright (c) IBM Corporation, 2004, 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.57

+

+-- These testcases are taken from squareroot.decTest but are

+-- evaluated using the power operator.  The differences in results

+-- (153 out of 2856) fall into the following categories:

+--

+--    x    ** 0.5 (x>0) has no preferred exponent, and is Inexact

+--                (and hence full precision); almost all differences are

+--                in this category

+--    0.00 ** 0.5 becomes 0 (not 0.0), etc.

+--   -0    ** 0.5 becomes 0 (never -0)

+--    Some exact subnormals become inexact and hence underflows

+

+extended:    1

+precision:   9

+rounding:    half_even

+maxExponent: 384

+minexponent: -383

+

+-- basics

+pwsx001  power 1        0.5 -> 1.00000000 Inexact Rounded

+pwsx002  power -1       0.5 -> NaN Invalid_operation

+pwsx003  power 1.00     0.5 -> 1.00000000 Inexact Rounded

+pwsx004  power -1.00    0.5 -> NaN Invalid_operation

+pwsx005  power 0        0.5 -> 0

+pwsx006  power 00.0     0.5 -> 0

+pwsx007  power 0.00     0.5 -> 0

+pwsx008  power 00.00    0.5 -> 0

+pwsx009  power 00.000   0.5 -> 0

+pwsx010  power 00.0000  0.5 -> 0

+pwsx011  power 00       0.5 -> 0

+

+pwsx012  power -2       0.5 -> NaN Invalid_operation

+pwsx013  power 2        0.5 -> 1.41421356 Inexact Rounded

+pwsx014  power -2.00    0.5 -> NaN Invalid_operation

+pwsx015  power 2.00     0.5 -> 1.41421356 Inexact Rounded

+pwsx016  power -0       0.5 -> 0

+pwsx017  power -0.0     0.5 -> 0

+pwsx018  power -00.00   0.5 -> 0

+pwsx019  power -00.000  0.5 -> 0

+pwsx020  power -0.0000  0.5 -> 0

+pwsx021  power -0E+9    0.5 -> 0

+pwsx022  power -0E+10   0.5 -> 0

+pwsx023  power -0E+11   0.5 -> 0

+pwsx024  power -0E+12   0.5 -> 0

+pwsx025  power -00      0.5 -> 0

+pwsx026  power 0E+5     0.5 -> 0

+pwsx027  power 4.0      0.5 -> 2.00000000 Inexact Rounded

+pwsx028  power 4.00     0.5 -> 2.00000000 Inexact Rounded

+

+pwsx030  power +0.1             0.5 -> 0.316227766 Inexact Rounded

+pwsx031  power -0.1             0.5 -> NaN Invalid_operation

+pwsx032  power +0.01            0.5 -> 0.100000000 Inexact Rounded

+pwsx033  power -0.01            0.5 -> NaN Invalid_operation

+pwsx034  power +0.001           0.5 -> 0.0316227766 Inexact Rounded

+pwsx035  power -0.001           0.5 -> NaN Invalid_operation

+pwsx036  power +0.000001        0.5 -> 0.00100000000 Inexact Rounded

+pwsx037  power -0.000001        0.5 -> NaN Invalid_operation

+pwsx038  power +0.000000000001  0.5 -> 0.00000100000000 Inexact Rounded

+pwsx039  power -0.000000000001  0.5 -> NaN Invalid_operation

+

+pwsx041  power 1.1         0.5 -> 1.04880885 Inexact Rounded

+pwsx042  power 1.10        0.5 -> 1.04880885 Inexact Rounded

+pwsx043  power 1.100       0.5 -> 1.04880885 Inexact Rounded

+pwsx044  power 1.110       0.5 -> 1.05356538 Inexact Rounded

+pwsx045  power -1.1        0.5 -> NaN Invalid_operation

+pwsx046  power -1.10       0.5 -> NaN Invalid_operation

+pwsx047  power -1.100      0.5 -> NaN Invalid_operation

+pwsx048  power -1.110      0.5 -> NaN Invalid_operation

+pwsx049  power 9.9         0.5 -> 3.14642654 Inexact Rounded

+pwsx050  power 9.90        0.5 -> 3.14642654 Inexact Rounded

+pwsx051  power 9.900       0.5 -> 3.14642654 Inexact Rounded

+pwsx052  power 9.990       0.5 -> 3.16069613 Inexact Rounded

+pwsx053  power -9.9        0.5 -> NaN Invalid_operation

+pwsx054  power -9.90       0.5 -> NaN Invalid_operation

+pwsx055  power -9.900      0.5 -> NaN Invalid_operation

+pwsx056  power -9.990      0.5 -> NaN Invalid_operation

+

+pwsx060  power  1            0.5 -> 1.00000000 Inexact Rounded

+pwsx061  power  1.0          0.5 -> 1.00000000 Inexact Rounded

+pwsx062  power  1.00         0.5 -> 1.00000000 Inexact Rounded

+pwsx063  power  10.0         0.5 -> 3.16227766 Inexact Rounded

+pwsx064  power  10.0         0.5 -> 3.16227766 Inexact Rounded

+pwsx065  power  10.0         0.5 -> 3.16227766 Inexact Rounded

+pwsx066  power  10.00        0.5 -> 3.16227766 Inexact Rounded

+pwsx067  power  100          0.5 -> 10.0000000 Inexact Rounded

+pwsx068  power  100.0        0.5 -> 10.0000000 Inexact Rounded

+pwsx069  power  100.00       0.5 -> 10.0000000 Inexact Rounded

+pwsx070  power  1.1000E+3    0.5 -> 33.1662479 Inexact Rounded

+pwsx071  power  1.10000E+3   0.5 -> 33.1662479 Inexact Rounded

+pwsx072  power -10.0         0.5 -> NaN Invalid_operation

+pwsx073  power -10.00        0.5 -> NaN Invalid_operation

+pwsx074  power -100.0        0.5 -> NaN Invalid_operation

+pwsx075  power -100.00       0.5 -> NaN Invalid_operation

+pwsx076  power -1.1000E+3    0.5 -> NaN Invalid_operation

+pwsx077  power -1.10000E+3   0.5 -> NaN Invalid_operation

+

+-- famous squares

+pwsx080  power     1   0.5 -> 1.00000000 Inexact Rounded

+pwsx081  power     4   0.5 -> 2.00000000 Inexact Rounded

+pwsx082  power     9   0.5 -> 3.00000000 Inexact Rounded

+pwsx083  power    16   0.5 -> 4.00000000 Inexact Rounded

+pwsx084  power    25   0.5 -> 5.00000000 Inexact Rounded

+pwsx085  power    36   0.5 -> 6.00000000 Inexact Rounded

+pwsx086  power    49   0.5 -> 7.00000000 Inexact Rounded

+pwsx087  power    64   0.5 -> 8.00000000 Inexact Rounded

+pwsx088  power    81   0.5 -> 9.00000000 Inexact Rounded

+pwsx089  power   100   0.5 -> 10.0000000 Inexact Rounded

+pwsx090  power   121   0.5 -> 11.0000000 Inexact Rounded

+pwsx091  power   144   0.5 -> 12.0000000 Inexact Rounded

+pwsx092  power   169   0.5 -> 13.0000000 Inexact Rounded

+pwsx093  power   256   0.5 -> 16.0000000 Inexact Rounded

+pwsx094  power  1024   0.5 -> 32.0000000 Inexact Rounded

+pwsx095  power  4096   0.5 -> 64.0000000 Inexact Rounded

+pwsx100  power   0.01  0.5 -> 0.100000000 Inexact Rounded

+pwsx101  power   0.04  0.5 -> 0.200000000 Inexact Rounded

+pwsx102  power   0.09  0.5 -> 0.300000000 Inexact Rounded

+pwsx103  power   0.16  0.5 -> 0.400000000 Inexact Rounded

+pwsx104  power   0.25  0.5 -> 0.500000000 Inexact Rounded

+pwsx105  power   0.36  0.5 -> 0.600000000 Inexact Rounded

+pwsx106  power   0.49  0.5 -> 0.700000000 Inexact Rounded

+pwsx107  power   0.64  0.5 -> 0.800000000 Inexact Rounded

+pwsx108  power   0.81  0.5 -> 0.900000000 Inexact Rounded

+pwsx109  power   1.00  0.5 -> 1.00000000 Inexact Rounded

+pwsx110  power   1.21  0.5 -> 1.10000000 Inexact Rounded

+pwsx111  power   1.44  0.5 -> 1.20000000 Inexact Rounded

+pwsx112  power   1.69  0.5 -> 1.30000000 Inexact Rounded

+pwsx113  power   2.56  0.5 -> 1.60000000 Inexact Rounded

+pwsx114  power  10.24  0.5 -> 3.20000000 Inexact Rounded

+pwsx115  power  40.96  0.5 -> 6.40000000 Inexact Rounded

+

+-- Precision 1 squareroot tests [exhaustive, plus exponent adjusts]

+rounding:    half_even

+maxExponent: 999

+minexponent: -999

+precision:   1

+pwsx1201  power 0.1  0.5 -> 0.3  Inexact Rounded

+pwsx1202  power 0.01  0.5 -> 0.1 Inexact Rounded

+pwsx1203  power 1.0E-1  0.5 -> 0.3  Inexact Rounded

+pwsx1204  power 1.00E-2  0.5 -> 0.1  Inexact Rounded

+pwsx1205  power 1E-3  0.5 -> 0.03  Inexact Rounded

+pwsx1206  power 1E+1  0.5 -> 3  Inexact Rounded

+pwsx1207  power 1E+2  0.5 -> 1E+1 Inexact Rounded

+pwsx1208  power 1E+3  0.5 -> 3E+1  Inexact Rounded

+pwsx1209  power 0.2  0.5 -> 0.4  Inexact Rounded

+pwsx1210  power 0.02  0.5 -> 0.1  Inexact Rounded

+pwsx1211  power 2.0E-1  0.5 -> 0.4  Inexact Rounded

+pwsx1212  power 2.00E-2  0.5 -> 0.1  Inexact Rounded

+pwsx1213  power 2E-3  0.5 -> 0.04  Inexact Rounded

+pwsx1214  power 2E+1  0.5 -> 4  Inexact Rounded

+pwsx1215  power 2E+2  0.5 -> 1E+1  Inexact Rounded

+pwsx1216  power 2E+3  0.5 -> 4E+1  Inexact Rounded

+pwsx1217  power 0.3  0.5 -> 0.5  Inexact Rounded

+pwsx1218  power 0.03  0.5 -> 0.2  Inexact Rounded

+pwsx1219  power 3.0E-1  0.5 -> 0.5  Inexact Rounded

+pwsx1220  power 3.00E-2  0.5 -> 0.2  Inexact Rounded

+pwsx1221  power 3E-3  0.5 -> 0.05  Inexact Rounded

+pwsx1222  power 3E+1  0.5 -> 5  Inexact Rounded

+pwsx1223  power 3E+2  0.5 -> 2E+1  Inexact Rounded

+pwsx1224  power 3E+3  0.5 -> 5E+1  Inexact Rounded

+pwsx1225  power 0.4  0.5 -> 0.6  Inexact Rounded

+pwsx1226  power 0.04  0.5 -> 0.2 Inexact Rounded

+pwsx1227  power 4.0E-1  0.5 -> 0.6  Inexact Rounded

+pwsx1228  power 4.00E-2  0.5 -> 0.2  Inexact Rounded

+pwsx1229  power 4E-3  0.5 -> 0.06  Inexact Rounded

+pwsx1230  power 4E+1  0.5 -> 6  Inexact Rounded

+pwsx1231  power 4E+2  0.5 -> 2E+1 Inexact Rounded

+pwsx1232  power 4E+3  0.5 -> 6E+1  Inexact Rounded

+pwsx1233  power 0.5  0.5 -> 0.7  Inexact Rounded

+pwsx1234  power 0.05  0.5 -> 0.2  Inexact Rounded

+pwsx1235  power 5.0E-1  0.5 -> 0.7  Inexact Rounded

+pwsx1236  power 5.00E-2  0.5 -> 0.2  Inexact Rounded

+pwsx1237  power 5E-3  0.5 -> 0.07  Inexact Rounded

+pwsx1238  power 5E+1  0.5 -> 7  Inexact Rounded

+pwsx1239  power 5E+2  0.5 -> 2E+1  Inexact Rounded

+pwsx1240  power 5E+3  0.5 -> 7E+1  Inexact Rounded

+pwsx1241  power 0.6  0.5 -> 0.8  Inexact Rounded

+pwsx1242  power 0.06  0.5 -> 0.2  Inexact Rounded

+pwsx1243  power 6.0E-1  0.5 -> 0.8  Inexact Rounded

+pwsx1244  power 6.00E-2  0.5 -> 0.2  Inexact Rounded

+pwsx1245  power 6E-3  0.5 -> 0.08  Inexact Rounded

+pwsx1246  power 6E+1  0.5 -> 8  Inexact Rounded

+pwsx1247  power 6E+2  0.5 -> 2E+1  Inexact Rounded

+pwsx1248  power 6E+3  0.5 -> 8E+1  Inexact Rounded

+pwsx1249  power 0.7  0.5 -> 0.8  Inexact Rounded

+pwsx1250  power 0.07  0.5 -> 0.3  Inexact Rounded

+pwsx1251  power 7.0E-1  0.5 -> 0.8  Inexact Rounded

+pwsx1252  power 7.00E-2  0.5 -> 0.3  Inexact Rounded

+pwsx1253  power 7E-3  0.5 -> 0.08  Inexact Rounded

+pwsx1254  power 7E+1  0.5 -> 8  Inexact Rounded

+pwsx1255  power 7E+2  0.5 -> 3E+1  Inexact Rounded

+pwsx1256  power 7E+3  0.5 -> 8E+1  Inexact Rounded

+pwsx1257  power 0.8  0.5 -> 0.9  Inexact Rounded

+pwsx1258  power 0.08  0.5 -> 0.3  Inexact Rounded

+pwsx1259  power 8.0E-1  0.5 -> 0.9  Inexact Rounded

+pwsx1260  power 8.00E-2  0.5 -> 0.3  Inexact Rounded

+pwsx1261  power 8E-3  0.5 -> 0.09  Inexact Rounded

+pwsx1262  power 8E+1  0.5 -> 9  Inexact Rounded

+pwsx1263  power 8E+2  0.5 -> 3E+1  Inexact Rounded

+pwsx1264  power 8E+3  0.5 -> 9E+1  Inexact Rounded

+pwsx1265  power 0.9  0.5 -> 0.9  Inexact Rounded

+pwsx1266  power 0.09  0.5 -> 0.3 Inexact Rounded

+pwsx1267  power 9.0E-1  0.5 -> 0.9  Inexact Rounded

+pwsx1268  power 9.00E-2  0.5 -> 0.3  Inexact Rounded

+pwsx1269  power 9E-3  0.5 -> 0.09  Inexact Rounded

+pwsx1270  power 9E+1  0.5 -> 9  Inexact Rounded

+pwsx1271  power 9E+2  0.5 -> 3E+1 Inexact Rounded

+pwsx1272  power 9E+3  0.5 -> 9E+1  Inexact Rounded

+

+-- Precision 2 squareroot tests [exhaustive, plus exponent adjusts]

+rounding:    half_even

+maxExponent: 999

+minexponent: -999

+precision:   2

+pwsx2201  power 0.1  0.5 -> 0.32  Inexact Rounded

+pwsx2202  power 0.01  0.5 -> 0.10 Inexact Rounded

+pwsx2203  power 1.0E-1  0.5 -> 0.32  Inexact Rounded

+pwsx2204  power 1.00E-2  0.5 -> 0.10 Inexact Rounded

+pwsx2205  power 1E-3  0.5 -> 0.032  Inexact Rounded

+pwsx2206  power 1E+1  0.5 -> 3.2  Inexact Rounded

+pwsx2207  power 1E+2  0.5 -> 10 Inexact Rounded

+pwsx2208  power 1E+3  0.5 -> 32  Inexact Rounded

+pwsx2209  power 0.2  0.5 -> 0.45  Inexact Rounded

+pwsx2210  power 0.02  0.5 -> 0.14  Inexact Rounded

+pwsx2211  power 2.0E-1  0.5 -> 0.45  Inexact Rounded

+pwsx2212  power 2.00E-2  0.5 -> 0.14  Inexact Rounded

+pwsx2213  power 2E-3  0.5 -> 0.045  Inexact Rounded

+pwsx2214  power 2E+1  0.5 -> 4.5  Inexact Rounded

+pwsx2215  power 2E+2  0.5 -> 14  Inexact Rounded

+pwsx2216  power 2E+3  0.5 -> 45  Inexact Rounded

+pwsx2217  power 0.3  0.5 -> 0.55  Inexact Rounded

+pwsx2218  power 0.03  0.5 -> 0.17  Inexact Rounded

+pwsx2219  power 3.0E-1  0.5 -> 0.55  Inexact Rounded

+pwsx2220  power 3.00E-2  0.5 -> 0.17  Inexact Rounded

+pwsx2221  power 3E-3  0.5 -> 0.055  Inexact Rounded

+pwsx2222  power 3E+1  0.5 -> 5.5  Inexact Rounded

+pwsx2223  power 3E+2  0.5 -> 17  Inexact Rounded

+pwsx2224  power 3E+3  0.5 -> 55  Inexact Rounded

+pwsx2225  power 0.4  0.5 -> 0.63  Inexact Rounded

+pwsx2226  power 0.04  0.5 -> 0.20 Inexact Rounded

+pwsx2227  power 4.0E-1  0.5 -> 0.63  Inexact Rounded

+pwsx2228  power 4.00E-2  0.5 -> 0.20 Inexact Rounded

+pwsx2229  power 4E-3  0.5 -> 0.063  Inexact Rounded

+pwsx2230  power 4E+1  0.5 -> 6.3  Inexact Rounded

+pwsx2231  power 4E+2  0.5 -> 20 Inexact Rounded

+pwsx2232  power 4E+3  0.5 -> 63  Inexact Rounded

+pwsx2233  power 0.5  0.5 -> 0.71  Inexact Rounded

+pwsx2234  power 0.05  0.5 -> 0.22  Inexact Rounded

+pwsx2235  power 5.0E-1  0.5 -> 0.71  Inexact Rounded

+pwsx2236  power 5.00E-2  0.5 -> 0.22  Inexact Rounded

+pwsx2237  power 5E-3  0.5 -> 0.071  Inexact Rounded

+pwsx2238  power 5E+1  0.5 -> 7.1  Inexact Rounded

+pwsx2239  power 5E+2  0.5 -> 22  Inexact Rounded

+pwsx2240  power 5E+3  0.5 -> 71  Inexact Rounded

+pwsx2241  power 0.6  0.5 -> 0.77  Inexact Rounded

+pwsx2242  power 0.06  0.5 -> 0.24  Inexact Rounded

+pwsx2243  power 6.0E-1  0.5 -> 0.77  Inexact Rounded

+pwsx2244  power 6.00E-2  0.5 -> 0.24  Inexact Rounded

+pwsx2245  power 6E-3  0.5 -> 0.077  Inexact Rounded

+pwsx2246  power 6E+1  0.5 -> 7.7  Inexact Rounded

+pwsx2247  power 6E+2  0.5 -> 24  Inexact Rounded

+pwsx2248  power 6E+3  0.5 -> 77  Inexact Rounded

+pwsx2249  power 0.7  0.5 -> 0.84  Inexact Rounded

+pwsx2250  power 0.07  0.5 -> 0.26  Inexact Rounded

+pwsx2251  power 7.0E-1  0.5 -> 0.84  Inexact Rounded

+pwsx2252  power 7.00E-2  0.5 -> 0.26  Inexact Rounded

+pwsx2253  power 7E-3  0.5 -> 0.084  Inexact Rounded

+pwsx2254  power 7E+1  0.5 -> 8.4  Inexact Rounded

+pwsx2255  power 7E+2  0.5 -> 26  Inexact Rounded

+pwsx2256  power 7E+3  0.5 -> 84  Inexact Rounded

+pwsx2257  power 0.8  0.5 -> 0.89  Inexact Rounded

+pwsx2258  power 0.08  0.5 -> 0.28  Inexact Rounded

+pwsx2259  power 8.0E-1  0.5 -> 0.89  Inexact Rounded

+pwsx2260  power 8.00E-2  0.5 -> 0.28  Inexact Rounded

+pwsx2261  power 8E-3  0.5 -> 0.089  Inexact Rounded

+pwsx2262  power 8E+1  0.5 -> 8.9  Inexact Rounded

+pwsx2263  power 8E+2  0.5 -> 28  Inexact Rounded

+pwsx2264  power 8E+3  0.5 -> 89  Inexact Rounded

+pwsx2265  power 0.9  0.5 -> 0.95  Inexact Rounded

+pwsx2266  power 0.09  0.5 -> 0.30  Inexact Rounded

+pwsx2267  power 9.0E-1  0.5 -> 0.95  Inexact Rounded

+pwsx2268  power 9.00E-2  0.5 -> 0.30 Inexact Rounded

+pwsx2269  power 9E-3  0.5 -> 0.095  Inexact Rounded

+pwsx2270  power 9E+1  0.5 -> 9.5  Inexact Rounded

+pwsx2271  power 9E+2  0.5 -> 30 Inexact Rounded

+pwsx2272  power 9E+3  0.5 -> 95  Inexact Rounded

+pwsx2273  power 0.10  0.5 -> 0.32  Inexact Rounded

+pwsx2274  power 0.010  0.5 -> 0.10 Inexact Rounded

+pwsx2275  power 10.0E-1  0.5 -> 1.0 Inexact Rounded

+pwsx2276  power 10.00E-2  0.5 -> 0.32  Inexact Rounded

+pwsx2277  power 10E-3  0.5 -> 0.10 Inexact Rounded

+pwsx2278  power 10E+1  0.5 -> 10 Inexact Rounded

+pwsx2279  power 10E+2  0.5 -> 32  Inexact Rounded

+pwsx2280  power 10E+3  0.5 -> 1.0E+2 Inexact Rounded

+pwsx2281  power 0.11  0.5 -> 0.33  Inexact Rounded

+pwsx2282  power 0.011  0.5 -> 0.10  Inexact Rounded

+pwsx2283  power 11.0E-1  0.5 -> 1.0  Inexact Rounded

+pwsx2284  power 11.00E-2  0.5 -> 0.33  Inexact Rounded

+pwsx2285  power 11E-3  0.5 -> 0.10  Inexact Rounded

+pwsx2286  power 11E+1  0.5 -> 10  Inexact Rounded

+pwsx2287  power 11E+2  0.5 -> 33  Inexact Rounded

+pwsx2288  power 11E+3  0.5 -> 1.0E+2  Inexact Rounded

+pwsx2289  power 0.12  0.5 -> 0.35  Inexact Rounded

+pwsx2290  power 0.012  0.5 -> 0.11  Inexact Rounded

+pwsx2291  power 12.0E-1  0.5 -> 1.1  Inexact Rounded

+pwsx2292  power 12.00E-2  0.5 -> 0.35  Inexact Rounded

+pwsx2293  power 12E-3  0.5 -> 0.11  Inexact Rounded

+pwsx2294  power 12E+1  0.5 -> 11  Inexact Rounded

+pwsx2295  power 12E+2  0.5 -> 35  Inexact Rounded

+pwsx2296  power 12E+3  0.5 -> 1.1E+2  Inexact Rounded

+pwsx2297  power 0.13  0.5 -> 0.36  Inexact Rounded

+pwsx2298  power 0.013  0.5 -> 0.11  Inexact Rounded

+pwsx2299  power 13.0E-1  0.5 -> 1.1  Inexact Rounded

+pwsx2300  power 13.00E-2  0.5 -> 0.36  Inexact Rounded

+pwsx2301  power 13E-3  0.5 -> 0.11  Inexact Rounded

+pwsx2302  power 13E+1  0.5 -> 11  Inexact Rounded

+pwsx2303  power 13E+2  0.5 -> 36  Inexact Rounded

+pwsx2304  power 13E+3  0.5 -> 1.1E+2  Inexact Rounded

+pwsx2305  power 0.14  0.5 -> 0.37  Inexact Rounded

+pwsx2306  power 0.014  0.5 -> 0.12  Inexact Rounded

+pwsx2307  power 14.0E-1  0.5 -> 1.2  Inexact Rounded

+pwsx2308  power 14.00E-2  0.5 -> 0.37  Inexact Rounded

+pwsx2309  power 14E-3  0.5 -> 0.12  Inexact Rounded

+pwsx2310  power 14E+1  0.5 -> 12  Inexact Rounded

+pwsx2311  power 14E+2  0.5 -> 37  Inexact Rounded

+pwsx2312  power 14E+3  0.5 -> 1.2E+2  Inexact Rounded

+pwsx2313  power 0.15  0.5 -> 0.39  Inexact Rounded

+pwsx2314  power 0.015  0.5 -> 0.12  Inexact Rounded

+pwsx2315  power 15.0E-1  0.5 -> 1.2  Inexact Rounded

+pwsx2316  power 15.00E-2  0.5 -> 0.39  Inexact Rounded

+pwsx2317  power 15E-3  0.5 -> 0.12  Inexact Rounded

+pwsx2318  power 15E+1  0.5 -> 12  Inexact Rounded

+pwsx2319  power 15E+2  0.5 -> 39  Inexact Rounded

+pwsx2320  power 15E+3  0.5 -> 1.2E+2  Inexact Rounded

+pwsx2321  power 0.16  0.5 -> 0.40 Inexact Rounded

+pwsx2322  power 0.016  0.5 -> 0.13  Inexact Rounded

+pwsx2323  power 16.0E-1  0.5 -> 1.3  Inexact Rounded

+pwsx2324  power 16.00E-2  0.5 -> 0.40 Inexact Rounded

+pwsx2325  power 16E-3  0.5 -> 0.13  Inexact Rounded

+pwsx2326  power 16E+1  0.5 -> 13  Inexact Rounded

+pwsx2327  power 16E+2  0.5 -> 40 Inexact Rounded

+pwsx2328  power 16E+3  0.5 -> 1.3E+2  Inexact Rounded

+pwsx2329  power 0.17  0.5 -> 0.41  Inexact Rounded

+pwsx2330  power 0.017  0.5 -> 0.13  Inexact Rounded

+pwsx2331  power 17.0E-1  0.5 -> 1.3  Inexact Rounded

+pwsx2332  power 17.00E-2  0.5 -> 0.41  Inexact Rounded

+pwsx2333  power 17E-3  0.5 -> 0.13  Inexact Rounded

+pwsx2334  power 17E+1  0.5 -> 13  Inexact Rounded

+pwsx2335  power 17E+2  0.5 -> 41  Inexact Rounded

+pwsx2336  power 17E+3  0.5 -> 1.3E+2  Inexact Rounded

+pwsx2337  power 0.18  0.5 -> 0.42  Inexact Rounded

+pwsx2338  power 0.018  0.5 -> 0.13  Inexact Rounded

+pwsx2339  power 18.0E-1  0.5 -> 1.3  Inexact Rounded

+pwsx2340  power 18.00E-2  0.5 -> 0.42  Inexact Rounded

+pwsx2341  power 18E-3  0.5 -> 0.13  Inexact Rounded

+pwsx2342  power 18E+1  0.5 -> 13  Inexact Rounded

+pwsx2343  power 18E+2  0.5 -> 42  Inexact Rounded

+pwsx2344  power 18E+3  0.5 -> 1.3E+2  Inexact Rounded

+pwsx2345  power 0.19  0.5 -> 0.44  Inexact Rounded

+pwsx2346  power 0.019  0.5 -> 0.14  Inexact Rounded

+pwsx2347  power 19.0E-1  0.5 -> 1.4  Inexact Rounded

+pwsx2348  power 19.00E-2  0.5 -> 0.44  Inexact Rounded

+pwsx2349  power 19E-3  0.5 -> 0.14  Inexact Rounded

+pwsx2350  power 19E+1  0.5 -> 14  Inexact Rounded

+pwsx2351  power 19E+2  0.5 -> 44  Inexact Rounded

+pwsx2352  power 19E+3  0.5 -> 1.4E+2  Inexact Rounded

+pwsx2353  power 0.20  0.5 -> 0.45  Inexact Rounded

+pwsx2354  power 0.020  0.5 -> 0.14  Inexact Rounded

+pwsx2355  power 20.0E-1  0.5 -> 1.4  Inexact Rounded

+pwsx2356  power 20.00E-2  0.5 -> 0.45  Inexact Rounded

+pwsx2357  power 20E-3  0.5 -> 0.14  Inexact Rounded

+pwsx2358  power 20E+1  0.5 -> 14  Inexact Rounded

+pwsx2359  power 20E+2  0.5 -> 45  Inexact Rounded

+pwsx2360  power 20E+3  0.5 -> 1.4E+2  Inexact Rounded

+pwsx2361  power 0.21  0.5 -> 0.46  Inexact Rounded

+pwsx2362  power 0.021  0.5 -> 0.14  Inexact Rounded

+pwsx2363  power 21.0E-1  0.5 -> 1.4  Inexact Rounded

+pwsx2364  power 21.00E-2  0.5 -> 0.46  Inexact Rounded

+pwsx2365  power 21E-3  0.5 -> 0.14  Inexact Rounded

+pwsx2366  power 21E+1  0.5 -> 14  Inexact Rounded

+pwsx2367  power 21E+2  0.5 -> 46  Inexact Rounded

+pwsx2368  power 21E+3  0.5 -> 1.4E+2  Inexact Rounded

+pwsx2369  power 0.22  0.5 -> 0.47  Inexact Rounded

+pwsx2370  power 0.022  0.5 -> 0.15  Inexact Rounded

+pwsx2371  power 22.0E-1  0.5 -> 1.5  Inexact Rounded

+pwsx2372  power 22.00E-2  0.5 -> 0.47  Inexact Rounded

+pwsx2373  power 22E-3  0.5 -> 0.15  Inexact Rounded

+pwsx2374  power 22E+1  0.5 -> 15  Inexact Rounded

+pwsx2375  power 22E+2  0.5 -> 47  Inexact Rounded

+pwsx2376  power 22E+3  0.5 -> 1.5E+2  Inexact Rounded

+pwsx2377  power 0.23  0.5 -> 0.48  Inexact Rounded

+pwsx2378  power 0.023  0.5 -> 0.15  Inexact Rounded

+pwsx2379  power 23.0E-1  0.5 -> 1.5  Inexact Rounded

+pwsx2380  power 23.00E-2  0.5 -> 0.48  Inexact Rounded

+pwsx2381  power 23E-3  0.5 -> 0.15  Inexact Rounded

+pwsx2382  power 23E+1  0.5 -> 15  Inexact Rounded

+pwsx2383  power 23E+2  0.5 -> 48  Inexact Rounded

+pwsx2384  power 23E+3  0.5 -> 1.5E+2  Inexact Rounded

+pwsx2385  power 0.24  0.5 -> 0.49  Inexact Rounded

+pwsx2386  power 0.024  0.5 -> 0.15  Inexact Rounded

+pwsx2387  power 24.0E-1  0.5 -> 1.5  Inexact Rounded

+pwsx2388  power 24.00E-2  0.5 -> 0.49  Inexact Rounded

+pwsx2389  power 24E-3  0.5 -> 0.15  Inexact Rounded

+pwsx2390  power 24E+1  0.5 -> 15  Inexact Rounded

+pwsx2391  power 24E+2  0.5 -> 49  Inexact Rounded

+pwsx2392  power 24E+3  0.5 -> 1.5E+2  Inexact Rounded

+pwsx2393  power 0.25  0.5 -> 0.50 Inexact Rounded

+pwsx2394  power 0.025  0.5 -> 0.16  Inexact Rounded

+pwsx2395  power 25.0E-1  0.5 -> 1.6  Inexact Rounded

+pwsx2396  power 25.00E-2  0.5 -> 0.50 Inexact Rounded

+pwsx2397  power 25E-3  0.5 -> 0.16  Inexact Rounded

+pwsx2398  power 25E+1  0.5 -> 16  Inexact Rounded

+pwsx2399  power 25E+2  0.5 -> 50 Inexact Rounded

+pwsx2400  power 25E+3  0.5 -> 1.6E+2  Inexact Rounded

+pwsx2401  power 0.26  0.5 -> 0.51  Inexact Rounded

+pwsx2402  power 0.026  0.5 -> 0.16  Inexact Rounded

+pwsx2403  power 26.0E-1  0.5 -> 1.6  Inexact Rounded

+pwsx2404  power 26.00E-2  0.5 -> 0.51  Inexact Rounded

+pwsx2405  power 26E-3  0.5 -> 0.16  Inexact Rounded

+pwsx2406  power 26E+1  0.5 -> 16  Inexact Rounded

+pwsx2407  power 26E+2  0.5 -> 51  Inexact Rounded

+pwsx2408  power 26E+3  0.5 -> 1.6E+2  Inexact Rounded

+pwsx2409  power 0.27  0.5 -> 0.52  Inexact Rounded

+pwsx2410  power 0.027  0.5 -> 0.16  Inexact Rounded

+pwsx2411  power 27.0E-1  0.5 -> 1.6  Inexact Rounded

+pwsx2412  power 27.00E-2  0.5 -> 0.52  Inexact Rounded

+pwsx2413  power 27E-3  0.5 -> 0.16  Inexact Rounded

+pwsx2414  power 27E+1  0.5 -> 16  Inexact Rounded

+pwsx2415  power 27E+2  0.5 -> 52  Inexact Rounded

+pwsx2416  power 27E+3  0.5 -> 1.6E+2  Inexact Rounded

+pwsx2417  power 0.28  0.5 -> 0.53  Inexact Rounded

+pwsx2418  power 0.028  0.5 -> 0.17  Inexact Rounded

+pwsx2419  power 28.0E-1  0.5 -> 1.7  Inexact Rounded

+pwsx2420  power 28.00E-2  0.5 -> 0.53  Inexact Rounded

+pwsx2421  power 28E-3  0.5 -> 0.17  Inexact Rounded

+pwsx2422  power 28E+1  0.5 -> 17  Inexact Rounded

+pwsx2423  power 28E+2  0.5 -> 53  Inexact Rounded

+pwsx2424  power 28E+3  0.5 -> 1.7E+2  Inexact Rounded

+pwsx2425  power 0.29  0.5 -> 0.54  Inexact Rounded

+pwsx2426  power 0.029  0.5 -> 0.17  Inexact Rounded

+pwsx2427  power 29.0E-1  0.5 -> 1.7  Inexact Rounded

+pwsx2428  power 29.00E-2  0.5 -> 0.54  Inexact Rounded

+pwsx2429  power 29E-3  0.5 -> 0.17  Inexact Rounded

+pwsx2430  power 29E+1  0.5 -> 17  Inexact Rounded

+pwsx2431  power 29E+2  0.5 -> 54  Inexact Rounded

+pwsx2432  power 29E+3  0.5 -> 1.7E+2  Inexact Rounded

+pwsx2433  power 0.30  0.5 -> 0.55  Inexact Rounded

+pwsx2434  power 0.030  0.5 -> 0.17  Inexact Rounded

+pwsx2435  power 30.0E-1  0.5 -> 1.7  Inexact Rounded

+pwsx2436  power 30.00E-2  0.5 -> 0.55  Inexact Rounded

+pwsx2437  power 30E-3  0.5 -> 0.17  Inexact Rounded

+pwsx2438  power 30E+1  0.5 -> 17  Inexact Rounded

+pwsx2439  power 30E+2  0.5 -> 55  Inexact Rounded

+pwsx2440  power 30E+3  0.5 -> 1.7E+2  Inexact Rounded

+pwsx2441  power 0.31  0.5 -> 0.56  Inexact Rounded

+pwsx2442  power 0.031  0.5 -> 0.18  Inexact Rounded

+pwsx2443  power 31.0E-1  0.5 -> 1.8  Inexact Rounded

+pwsx2444  power 31.00E-2  0.5 -> 0.56  Inexact Rounded

+pwsx2445  power 31E-3  0.5 -> 0.18  Inexact Rounded

+pwsx2446  power 31E+1  0.5 -> 18  Inexact Rounded

+pwsx2447  power 31E+2  0.5 -> 56  Inexact Rounded

+pwsx2448  power 31E+3  0.5 -> 1.8E+2  Inexact Rounded

+pwsx2449  power 0.32  0.5 -> 0.57  Inexact Rounded

+pwsx2450  power 0.032  0.5 -> 0.18  Inexact Rounded

+pwsx2451  power 32.0E-1  0.5 -> 1.8  Inexact Rounded

+pwsx2452  power 32.00E-2  0.5 -> 0.57  Inexact Rounded

+pwsx2453  power 32E-3  0.5 -> 0.18  Inexact Rounded

+pwsx2454  power 32E+1  0.5 -> 18  Inexact Rounded

+pwsx2455  power 32E+2  0.5 -> 57  Inexact Rounded

+pwsx2456  power 32E+3  0.5 -> 1.8E+2  Inexact Rounded

+pwsx2457  power 0.33  0.5 -> 0.57  Inexact Rounded

+pwsx2458  power 0.033  0.5 -> 0.18  Inexact Rounded

+pwsx2459  power 33.0E-1  0.5 -> 1.8  Inexact Rounded

+pwsx2460  power 33.00E-2  0.5 -> 0.57  Inexact Rounded

+pwsx2461  power 33E-3  0.5 -> 0.18  Inexact Rounded

+pwsx2462  power 33E+1  0.5 -> 18  Inexact Rounded

+pwsx2463  power 33E+2  0.5 -> 57  Inexact Rounded

+pwsx2464  power 33E+3  0.5 -> 1.8E+2  Inexact Rounded

+pwsx2465  power 0.34  0.5 -> 0.58  Inexact Rounded

+pwsx2466  power 0.034  0.5 -> 0.18  Inexact Rounded

+pwsx2467  power 34.0E-1  0.5 -> 1.8  Inexact Rounded

+pwsx2468  power 34.00E-2  0.5 -> 0.58  Inexact Rounded

+pwsx2469  power 34E-3  0.5 -> 0.18  Inexact Rounded

+pwsx2470  power 34E+1  0.5 -> 18  Inexact Rounded

+pwsx2471  power 34E+2  0.5 -> 58  Inexact Rounded

+pwsx2472  power 34E+3  0.5 -> 1.8E+2  Inexact Rounded

+pwsx2473  power 0.35  0.5 -> 0.59  Inexact Rounded

+pwsx2474  power 0.035  0.5 -> 0.19  Inexact Rounded

+pwsx2475  power 35.0E-1  0.5 -> 1.9  Inexact Rounded

+pwsx2476  power 35.00E-2  0.5 -> 0.59  Inexact Rounded

+pwsx2477  power 35E-3  0.5 -> 0.19  Inexact Rounded

+pwsx2478  power 35E+1  0.5 -> 19  Inexact Rounded

+pwsx2479  power 35E+2  0.5 -> 59  Inexact Rounded

+pwsx2480  power 35E+3  0.5 -> 1.9E+2  Inexact Rounded

+pwsx2481  power 0.36  0.5 -> 0.60 Inexact Rounded

+pwsx2482  power 0.036  0.5 -> 0.19  Inexact Rounded

+pwsx2483  power 36.0E-1  0.5 -> 1.9  Inexact Rounded

+pwsx2484  power 36.00E-2  0.5 -> 0.60 Inexact Rounded

+pwsx2485  power 36E-3  0.5 -> 0.19  Inexact Rounded

+pwsx2486  power 36E+1  0.5 -> 19  Inexact Rounded

+pwsx2487  power 36E+2  0.5 -> 60 Inexact Rounded

+pwsx2488  power 36E+3  0.5 -> 1.9E+2  Inexact Rounded

+pwsx2489  power 0.37  0.5 -> 0.61  Inexact Rounded

+pwsx2490  power 0.037  0.5 -> 0.19  Inexact Rounded

+pwsx2491  power 37.0E-1  0.5 -> 1.9  Inexact Rounded

+pwsx2492  power 37.00E-2  0.5 -> 0.61  Inexact Rounded

+pwsx2493  power 37E-3  0.5 -> 0.19  Inexact Rounded

+pwsx2494  power 37E+1  0.5 -> 19  Inexact Rounded

+pwsx2495  power 37E+2  0.5 -> 61  Inexact Rounded

+pwsx2496  power 37E+3  0.5 -> 1.9E+2  Inexact Rounded

+pwsx2497  power 0.38  0.5 -> 0.62  Inexact Rounded

+pwsx2498  power 0.038  0.5 -> 0.19  Inexact Rounded

+pwsx2499  power 38.0E-1  0.5 -> 1.9  Inexact Rounded

+pwsx2500  power 38.00E-2  0.5 -> 0.62  Inexact Rounded

+pwsx2501  power 38E-3  0.5 -> 0.19  Inexact Rounded

+pwsx2502  power 38E+1  0.5 -> 19  Inexact Rounded

+pwsx2503  power 38E+2  0.5 -> 62  Inexact Rounded

+pwsx2504  power 38E+3  0.5 -> 1.9E+2  Inexact Rounded

+pwsx2505  power 0.39  0.5 -> 0.62  Inexact Rounded

+pwsx2506  power 0.039  0.5 -> 0.20  Inexact Rounded

+pwsx2507  power 39.0E-1  0.5 -> 2.0  Inexact Rounded

+pwsx2508  power 39.00E-2  0.5 -> 0.62  Inexact Rounded

+pwsx2509  power 39E-3  0.5 -> 0.20  Inexact Rounded

+pwsx2510  power 39E+1  0.5 -> 20  Inexact Rounded

+pwsx2511  power 39E+2  0.5 -> 62  Inexact Rounded

+pwsx2512  power 39E+3  0.5 -> 2.0E+2  Inexact Rounded

+pwsx2513  power 0.40  0.5 -> 0.63  Inexact Rounded

+pwsx2514  power 0.040  0.5 -> 0.20 Inexact Rounded

+pwsx2515  power 40.0E-1  0.5 -> 2.0 Inexact Rounded

+pwsx2516  power 40.00E-2  0.5 -> 0.63  Inexact Rounded

+pwsx2517  power 40E-3  0.5 -> 0.20 Inexact Rounded

+pwsx2518  power 40E+1  0.5 -> 20 Inexact Rounded

+pwsx2519  power 40E+2  0.5 -> 63  Inexact Rounded

+pwsx2520  power 40E+3  0.5 -> 2.0E+2 Inexact Rounded

+pwsx2521  power 0.41  0.5 -> 0.64  Inexact Rounded

+pwsx2522  power 0.041  0.5 -> 0.20  Inexact Rounded

+pwsx2523  power 41.0E-1  0.5 -> 2.0  Inexact Rounded

+pwsx2524  power 41.00E-2  0.5 -> 0.64  Inexact Rounded

+pwsx2525  power 41E-3  0.5 -> 0.20  Inexact Rounded

+pwsx2526  power 41E+1  0.5 -> 20  Inexact Rounded

+pwsx2527  power 41E+2  0.5 -> 64  Inexact Rounded

+pwsx2528  power 41E+3  0.5 -> 2.0E+2  Inexact Rounded

+pwsx2529  power 0.42  0.5 -> 0.65  Inexact Rounded

+pwsx2530  power 0.042  0.5 -> 0.20  Inexact Rounded

+pwsx2531  power 42.0E-1  0.5 -> 2.0  Inexact Rounded

+pwsx2532  power 42.00E-2  0.5 -> 0.65  Inexact Rounded

+pwsx2533  power 42E-3  0.5 -> 0.20  Inexact Rounded

+pwsx2534  power 42E+1  0.5 -> 20  Inexact Rounded

+pwsx2535  power 42E+2  0.5 -> 65  Inexact Rounded

+pwsx2536  power 42E+3  0.5 -> 2.0E+2  Inexact Rounded

+pwsx2537  power 0.43  0.5 -> 0.66  Inexact Rounded

+pwsx2538  power 0.043  0.5 -> 0.21  Inexact Rounded

+pwsx2539  power 43.0E-1  0.5 -> 2.1  Inexact Rounded

+pwsx2540  power 43.00E-2  0.5 -> 0.66  Inexact Rounded

+pwsx2541  power 43E-3  0.5 -> 0.21  Inexact Rounded

+pwsx2542  power 43E+1  0.5 -> 21  Inexact Rounded

+pwsx2543  power 43E+2  0.5 -> 66  Inexact Rounded

+pwsx2544  power 43E+3  0.5 -> 2.1E+2  Inexact Rounded

+pwsx2545  power 0.44  0.5 -> 0.66  Inexact Rounded

+pwsx2546  power 0.044  0.5 -> 0.21  Inexact Rounded

+pwsx2547  power 44.0E-1  0.5 -> 2.1  Inexact Rounded

+pwsx2548  power 44.00E-2  0.5 -> 0.66  Inexact Rounded

+pwsx2549  power 44E-3  0.5 -> 0.21  Inexact Rounded

+pwsx2550  power 44E+1  0.5 -> 21  Inexact Rounded

+pwsx2551  power 44E+2  0.5 -> 66  Inexact Rounded

+pwsx2552  power 44E+3  0.5 -> 2.1E+2  Inexact Rounded

+pwsx2553  power 0.45  0.5 -> 0.67  Inexact Rounded

+pwsx2554  power 0.045  0.5 -> 0.21  Inexact Rounded

+pwsx2555  power 45.0E-1  0.5 -> 2.1  Inexact Rounded

+pwsx2556  power 45.00E-2  0.5 -> 0.67  Inexact Rounded

+pwsx2557  power 45E-3  0.5 -> 0.21  Inexact Rounded

+pwsx2558  power 45E+1  0.5 -> 21  Inexact Rounded

+pwsx2559  power 45E+2  0.5 -> 67  Inexact Rounded

+pwsx2560  power 45E+3  0.5 -> 2.1E+2  Inexact Rounded

+pwsx2561  power 0.46  0.5 -> 0.68  Inexact Rounded

+pwsx2562  power 0.046  0.5 -> 0.21  Inexact Rounded

+pwsx2563  power 46.0E-1  0.5 -> 2.1  Inexact Rounded

+pwsx2564  power 46.00E-2  0.5 -> 0.68  Inexact Rounded

+pwsx2565  power 46E-3  0.5 -> 0.21  Inexact Rounded

+pwsx2566  power 46E+1  0.5 -> 21  Inexact Rounded

+pwsx2567  power 46E+2  0.5 -> 68  Inexact Rounded

+pwsx2568  power 46E+3  0.5 -> 2.1E+2  Inexact Rounded

+pwsx2569  power 0.47  0.5 -> 0.69  Inexact Rounded

+pwsx2570  power 0.047  0.5 -> 0.22  Inexact Rounded

+pwsx2571  power 47.0E-1  0.5 -> 2.2  Inexact Rounded

+pwsx2572  power 47.00E-2  0.5 -> 0.69  Inexact Rounded

+pwsx2573  power 47E-3  0.5 -> 0.22  Inexact Rounded

+pwsx2574  power 47E+1  0.5 -> 22  Inexact Rounded

+pwsx2575  power 47E+2  0.5 -> 69  Inexact Rounded

+pwsx2576  power 47E+3  0.5 -> 2.2E+2  Inexact Rounded

+pwsx2577  power 0.48  0.5 -> 0.69  Inexact Rounded

+pwsx2578  power 0.048  0.5 -> 0.22  Inexact Rounded

+pwsx2579  power 48.0E-1  0.5 -> 2.2  Inexact Rounded

+pwsx2580  power 48.00E-2  0.5 -> 0.69  Inexact Rounded

+pwsx2581  power 48E-3  0.5 -> 0.22  Inexact Rounded

+pwsx2582  power 48E+1  0.5 -> 22  Inexact Rounded

+pwsx2583  power 48E+2  0.5 -> 69  Inexact Rounded

+pwsx2584  power 48E+3  0.5 -> 2.2E+2  Inexact Rounded

+pwsx2585  power 0.49  0.5 -> 0.70 Inexact Rounded

+pwsx2586  power 0.049  0.5 -> 0.22  Inexact Rounded

+pwsx2587  power 49.0E-1  0.5 -> 2.2  Inexact Rounded

+pwsx2588  power 49.00E-2  0.5 -> 0.70 Inexact Rounded

+pwsx2589  power 49E-3  0.5 -> 0.22  Inexact Rounded

+pwsx2590  power 49E+1  0.5 -> 22  Inexact Rounded

+pwsx2591  power 49E+2  0.5 -> 70 Inexact Rounded

+pwsx2592  power 49E+3  0.5 -> 2.2E+2  Inexact Rounded

+pwsx2593  power 0.50  0.5 -> 0.71  Inexact Rounded

+pwsx2594  power 0.050  0.5 -> 0.22  Inexact Rounded

+pwsx2595  power 50.0E-1  0.5 -> 2.2  Inexact Rounded

+pwsx2596  power 50.00E-2  0.5 -> 0.71  Inexact Rounded

+pwsx2597  power 50E-3  0.5 -> 0.22  Inexact Rounded

+pwsx2598  power 50E+1  0.5 -> 22  Inexact Rounded

+pwsx2599  power 50E+2  0.5 -> 71  Inexact Rounded

+pwsx2600  power 50E+3  0.5 -> 2.2E+2  Inexact Rounded

+pwsx2601  power 0.51  0.5 -> 0.71  Inexact Rounded

+pwsx2602  power 0.051  0.5 -> 0.23  Inexact Rounded

+pwsx2603  power 51.0E-1  0.5 -> 2.3  Inexact Rounded

+pwsx2604  power 51.00E-2  0.5 -> 0.71  Inexact Rounded

+pwsx2605  power 51E-3  0.5 -> 0.23  Inexact Rounded

+pwsx2606  power 51E+1  0.5 -> 23  Inexact Rounded

+pwsx2607  power 51E+2  0.5 -> 71  Inexact Rounded

+pwsx2608  power 51E+3  0.5 -> 2.3E+2  Inexact Rounded

+pwsx2609  power 0.52  0.5 -> 0.72  Inexact Rounded

+pwsx2610  power 0.052  0.5 -> 0.23  Inexact Rounded

+pwsx2611  power 52.0E-1  0.5 -> 2.3  Inexact Rounded

+pwsx2612  power 52.00E-2  0.5 -> 0.72  Inexact Rounded

+pwsx2613  power 52E-3  0.5 -> 0.23  Inexact Rounded

+pwsx2614  power 52E+1  0.5 -> 23  Inexact Rounded

+pwsx2615  power 52E+2  0.5 -> 72  Inexact Rounded

+pwsx2616  power 52E+3  0.5 -> 2.3E+2  Inexact Rounded

+pwsx2617  power 0.53  0.5 -> 0.73  Inexact Rounded

+pwsx2618  power 0.053  0.5 -> 0.23  Inexact Rounded

+pwsx2619  power 53.0E-1  0.5 -> 2.3  Inexact Rounded

+pwsx2620  power 53.00E-2  0.5 -> 0.73  Inexact Rounded

+pwsx2621  power 53E-3  0.5 -> 0.23  Inexact Rounded

+pwsx2622  power 53E+1  0.5 -> 23  Inexact Rounded

+pwsx2623  power 53E+2  0.5 -> 73  Inexact Rounded

+pwsx2624  power 53E+3  0.5 -> 2.3E+2  Inexact Rounded

+pwsx2625  power 0.54  0.5 -> 0.73  Inexact Rounded

+pwsx2626  power 0.054  0.5 -> 0.23  Inexact Rounded

+pwsx2627  power 54.0E-1  0.5 -> 2.3  Inexact Rounded

+pwsx2628  power 54.00E-2  0.5 -> 0.73  Inexact Rounded

+pwsx2629  power 54E-3  0.5 -> 0.23  Inexact Rounded

+pwsx2630  power 54E+1  0.5 -> 23  Inexact Rounded

+pwsx2631  power 54E+2  0.5 -> 73  Inexact Rounded

+pwsx2632  power 54E+3  0.5 -> 2.3E+2  Inexact Rounded

+pwsx2633  power 0.55  0.5 -> 0.74  Inexact Rounded

+pwsx2634  power 0.055  0.5 -> 0.23  Inexact Rounded

+pwsx2635  power 55.0E-1  0.5 -> 2.3  Inexact Rounded

+pwsx2636  power 55.00E-2  0.5 -> 0.74  Inexact Rounded

+pwsx2637  power 55E-3  0.5 -> 0.23  Inexact Rounded

+pwsx2638  power 55E+1  0.5 -> 23  Inexact Rounded

+pwsx2639  power 55E+2  0.5 -> 74  Inexact Rounded

+pwsx2640  power 55E+3  0.5 -> 2.3E+2  Inexact Rounded

+pwsx2641  power 0.56  0.5 -> 0.75  Inexact Rounded

+pwsx2642  power 0.056  0.5 -> 0.24  Inexact Rounded

+pwsx2643  power 56.0E-1  0.5 -> 2.4  Inexact Rounded

+pwsx2644  power 56.00E-2  0.5 -> 0.75  Inexact Rounded

+pwsx2645  power 56E-3  0.5 -> 0.24  Inexact Rounded

+pwsx2646  power 56E+1  0.5 -> 24  Inexact Rounded

+pwsx2647  power 56E+2  0.5 -> 75  Inexact Rounded

+pwsx2648  power 56E+3  0.5 -> 2.4E+2  Inexact Rounded

+pwsx2649  power 0.57  0.5 -> 0.75  Inexact Rounded

+pwsx2650  power 0.057  0.5 -> 0.24  Inexact Rounded

+pwsx2651  power 57.0E-1  0.5 -> 2.4  Inexact Rounded

+pwsx2652  power 57.00E-2  0.5 -> 0.75  Inexact Rounded

+pwsx2653  power 57E-3  0.5 -> 0.24  Inexact Rounded

+pwsx2654  power 57E+1  0.5 -> 24  Inexact Rounded

+pwsx2655  power 57E+2  0.5 -> 75  Inexact Rounded

+pwsx2656  power 57E+3  0.5 -> 2.4E+2  Inexact Rounded

+pwsx2657  power 0.58  0.5 -> 0.76  Inexact Rounded

+pwsx2658  power 0.058  0.5 -> 0.24  Inexact Rounded

+pwsx2659  power 58.0E-1  0.5 -> 2.4  Inexact Rounded

+pwsx2660  power 58.00E-2  0.5 -> 0.76  Inexact Rounded

+pwsx2661  power 58E-3  0.5 -> 0.24  Inexact Rounded

+pwsx2662  power 58E+1  0.5 -> 24  Inexact Rounded

+pwsx2663  power 58E+2  0.5 -> 76  Inexact Rounded

+pwsx2664  power 58E+3  0.5 -> 2.4E+2  Inexact Rounded

+pwsx2665  power 0.59  0.5 -> 0.77  Inexact Rounded

+pwsx2666  power 0.059  0.5 -> 0.24  Inexact Rounded

+pwsx2667  power 59.0E-1  0.5 -> 2.4  Inexact Rounded

+pwsx2668  power 59.00E-2  0.5 -> 0.77  Inexact Rounded

+pwsx2669  power 59E-3  0.5 -> 0.24  Inexact Rounded

+pwsx2670  power 59E+1  0.5 -> 24  Inexact Rounded

+pwsx2671  power 59E+2  0.5 -> 77  Inexact Rounded

+pwsx2672  power 59E+3  0.5 -> 2.4E+2  Inexact Rounded

+pwsx2673  power 0.60  0.5 -> 0.77  Inexact Rounded

+pwsx2674  power 0.060  0.5 -> 0.24  Inexact Rounded

+pwsx2675  power 60.0E-1  0.5 -> 2.4  Inexact Rounded

+pwsx2676  power 60.00E-2  0.5 -> 0.77  Inexact Rounded

+pwsx2677  power 60E-3  0.5 -> 0.24  Inexact Rounded

+pwsx2678  power 60E+1  0.5 -> 24  Inexact Rounded

+pwsx2679  power 60E+2  0.5 -> 77  Inexact Rounded

+pwsx2680  power 60E+3  0.5 -> 2.4E+2  Inexact Rounded

+pwsx2681  power 0.61  0.5 -> 0.78  Inexact Rounded

+pwsx2682  power 0.061  0.5 -> 0.25  Inexact Rounded

+pwsx2683  power 61.0E-1  0.5 -> 2.5  Inexact Rounded

+pwsx2684  power 61.00E-2  0.5 -> 0.78  Inexact Rounded

+pwsx2685  power 61E-3  0.5 -> 0.25  Inexact Rounded

+pwsx2686  power 61E+1  0.5 -> 25  Inexact Rounded

+pwsx2687  power 61E+2  0.5 -> 78  Inexact Rounded

+pwsx2688  power 61E+3  0.5 -> 2.5E+2  Inexact Rounded

+pwsx2689  power 0.62  0.5 -> 0.79  Inexact Rounded

+pwsx2690  power 0.062  0.5 -> 0.25  Inexact Rounded

+pwsx2691  power 62.0E-1  0.5 -> 2.5  Inexact Rounded

+pwsx2692  power 62.00E-2  0.5 -> 0.79  Inexact Rounded

+pwsx2693  power 62E-3  0.5 -> 0.25  Inexact Rounded

+pwsx2694  power 62E+1  0.5 -> 25  Inexact Rounded

+pwsx2695  power 62E+2  0.5 -> 79  Inexact Rounded

+pwsx2696  power 62E+3  0.5 -> 2.5E+2  Inexact Rounded

+pwsx2697  power 0.63  0.5 -> 0.79  Inexact Rounded

+pwsx2698  power 0.063  0.5 -> 0.25  Inexact Rounded

+pwsx2699  power 63.0E-1  0.5 -> 2.5  Inexact Rounded

+pwsx2700  power 63.00E-2  0.5 -> 0.79  Inexact Rounded

+pwsx2701  power 63E-3  0.5 -> 0.25  Inexact Rounded

+pwsx2702  power 63E+1  0.5 -> 25  Inexact Rounded

+pwsx2703  power 63E+2  0.5 -> 79  Inexact Rounded

+pwsx2704  power 63E+3  0.5 -> 2.5E+2  Inexact Rounded

+pwsx2705  power 0.64  0.5 -> 0.80 Inexact Rounded

+pwsx2706  power 0.064  0.5 -> 0.25  Inexact Rounded

+pwsx2707  power 64.0E-1  0.5 -> 2.5  Inexact Rounded

+pwsx2708  power 64.00E-2  0.5 -> 0.80 Inexact Rounded

+pwsx2709  power 64E-3  0.5 -> 0.25  Inexact Rounded

+pwsx2710  power 64E+1  0.5 -> 25  Inexact Rounded

+pwsx2711  power 64E+2  0.5 -> 80 Inexact Rounded

+pwsx2712  power 64E+3  0.5 -> 2.5E+2  Inexact Rounded

+pwsx2713  power 0.65  0.5 -> 0.81  Inexact Rounded

+pwsx2714  power 0.065  0.5 -> 0.25  Inexact Rounded

+pwsx2715  power 65.0E-1  0.5 -> 2.5  Inexact Rounded

+pwsx2716  power 65.00E-2  0.5 -> 0.81  Inexact Rounded

+pwsx2717  power 65E-3  0.5 -> 0.25  Inexact Rounded

+pwsx2718  power 65E+1  0.5 -> 25  Inexact Rounded

+pwsx2719  power 65E+2  0.5 -> 81  Inexact Rounded

+pwsx2720  power 65E+3  0.5 -> 2.5E+2  Inexact Rounded

+pwsx2721  power 0.66  0.5 -> 0.81  Inexact Rounded

+pwsx2722  power 0.066  0.5 -> 0.26  Inexact Rounded

+pwsx2723  power 66.0E-1  0.5 -> 2.6  Inexact Rounded

+pwsx2724  power 66.00E-2  0.5 -> 0.81  Inexact Rounded

+pwsx2725  power 66E-3  0.5 -> 0.26  Inexact Rounded

+pwsx2726  power 66E+1  0.5 -> 26  Inexact Rounded

+pwsx2727  power 66E+2  0.5 -> 81  Inexact Rounded

+pwsx2728  power 66E+3  0.5 -> 2.6E+2  Inexact Rounded

+pwsx2729  power 0.67  0.5 -> 0.82  Inexact Rounded

+pwsx2730  power 0.067  0.5 -> 0.26  Inexact Rounded

+pwsx2731  power 67.0E-1  0.5 -> 2.6  Inexact Rounded

+pwsx2732  power 67.00E-2  0.5 -> 0.82  Inexact Rounded

+pwsx2733  power 67E-3  0.5 -> 0.26  Inexact Rounded

+pwsx2734  power 67E+1  0.5 -> 26  Inexact Rounded

+pwsx2735  power 67E+2  0.5 -> 82  Inexact Rounded

+pwsx2736  power 67E+3  0.5 -> 2.6E+2  Inexact Rounded

+pwsx2737  power 0.68  0.5 -> 0.82  Inexact Rounded

+pwsx2738  power 0.068  0.5 -> 0.26  Inexact Rounded

+pwsx2739  power 68.0E-1  0.5 -> 2.6  Inexact Rounded

+pwsx2740  power 68.00E-2  0.5 -> 0.82  Inexact Rounded

+pwsx2741  power 68E-3  0.5 -> 0.26  Inexact Rounded

+pwsx2742  power 68E+1  0.5 -> 26  Inexact Rounded

+pwsx2743  power 68E+2  0.5 -> 82  Inexact Rounded

+pwsx2744  power 68E+3  0.5 -> 2.6E+2  Inexact Rounded

+pwsx2745  power 0.69  0.5 -> 0.83  Inexact Rounded

+pwsx2746  power 0.069  0.5 -> 0.26  Inexact Rounded

+pwsx2747  power 69.0E-1  0.5 -> 2.6  Inexact Rounded

+pwsx2748  power 69.00E-2  0.5 -> 0.83  Inexact Rounded

+pwsx2749  power 69E-3  0.5 -> 0.26  Inexact Rounded

+pwsx2750  power 69E+1  0.5 -> 26  Inexact Rounded

+pwsx2751  power 69E+2  0.5 -> 83  Inexact Rounded

+pwsx2752  power 69E+3  0.5 -> 2.6E+2  Inexact Rounded

+pwsx2753  power 0.70  0.5 -> 0.84  Inexact Rounded

+pwsx2754  power 0.070  0.5 -> 0.26  Inexact Rounded

+pwsx2755  power 70.0E-1  0.5 -> 2.6  Inexact Rounded

+pwsx2756  power 70.00E-2  0.5 -> 0.84  Inexact Rounded

+pwsx2757  power 70E-3  0.5 -> 0.26  Inexact Rounded

+pwsx2758  power 70E+1  0.5 -> 26  Inexact Rounded

+pwsx2759  power 70E+2  0.5 -> 84  Inexact Rounded

+pwsx2760  power 70E+3  0.5 -> 2.6E+2  Inexact Rounded

+pwsx2761  power 0.71  0.5 -> 0.84  Inexact Rounded

+pwsx2762  power 0.071  0.5 -> 0.27  Inexact Rounded

+pwsx2763  power 71.0E-1  0.5 -> 2.7  Inexact Rounded

+pwsx2764  power 71.00E-2  0.5 -> 0.84  Inexact Rounded

+pwsx2765  power 71E-3  0.5 -> 0.27  Inexact Rounded

+pwsx2766  power 71E+1  0.5 -> 27  Inexact Rounded

+pwsx2767  power 71E+2  0.5 -> 84  Inexact Rounded

+pwsx2768  power 71E+3  0.5 -> 2.7E+2  Inexact Rounded

+pwsx2769  power 0.72  0.5 -> 0.85  Inexact Rounded

+pwsx2770  power 0.072  0.5 -> 0.27  Inexact Rounded

+pwsx2771  power 72.0E-1  0.5 -> 2.7  Inexact Rounded

+pwsx2772  power 72.00E-2  0.5 -> 0.85  Inexact Rounded

+pwsx2773  power 72E-3  0.5 -> 0.27  Inexact Rounded

+pwsx2774  power 72E+1  0.5 -> 27  Inexact Rounded

+pwsx2775  power 72E+2  0.5 -> 85  Inexact Rounded

+pwsx2776  power 72E+3  0.5 -> 2.7E+2  Inexact Rounded

+pwsx2777  power 0.73  0.5 -> 0.85  Inexact Rounded

+pwsx2778  power 0.073  0.5 -> 0.27  Inexact Rounded

+pwsx2779  power 73.0E-1  0.5 -> 2.7  Inexact Rounded

+pwsx2780  power 73.00E-2  0.5 -> 0.85  Inexact Rounded

+pwsx2781  power 73E-3  0.5 -> 0.27  Inexact Rounded

+pwsx2782  power 73E+1  0.5 -> 27  Inexact Rounded

+pwsx2783  power 73E+2  0.5 -> 85  Inexact Rounded

+pwsx2784  power 73E+3  0.5 -> 2.7E+2  Inexact Rounded

+pwsx2785  power 0.74  0.5 -> 0.86  Inexact Rounded

+pwsx2786  power 0.074  0.5 -> 0.27  Inexact Rounded

+pwsx2787  power 74.0E-1  0.5 -> 2.7  Inexact Rounded

+pwsx2788  power 74.00E-2  0.5 -> 0.86  Inexact Rounded

+pwsx2789  power 74E-3  0.5 -> 0.27  Inexact Rounded

+pwsx2790  power 74E+1  0.5 -> 27  Inexact Rounded

+pwsx2791  power 74E+2  0.5 -> 86  Inexact Rounded

+pwsx2792  power 74E+3  0.5 -> 2.7E+2  Inexact Rounded

+pwsx2793  power 0.75  0.5 -> 0.87  Inexact Rounded

+pwsx2794  power 0.075  0.5 -> 0.27  Inexact Rounded

+pwsx2795  power 75.0E-1  0.5 -> 2.7  Inexact Rounded

+pwsx2796  power 75.00E-2  0.5 -> 0.87  Inexact Rounded

+pwsx2797  power 75E-3  0.5 -> 0.27  Inexact Rounded

+pwsx2798  power 75E+1  0.5 -> 27  Inexact Rounded

+pwsx2799  power 75E+2  0.5 -> 87  Inexact Rounded

+pwsx2800  power 75E+3  0.5 -> 2.7E+2  Inexact Rounded

+pwsx2801  power 0.76  0.5 -> 0.87  Inexact Rounded

+pwsx2802  power 0.076  0.5 -> 0.28  Inexact Rounded

+pwsx2803  power 76.0E-1  0.5 -> 2.8  Inexact Rounded

+pwsx2804  power 76.00E-2  0.5 -> 0.87  Inexact Rounded

+pwsx2805  power 76E-3  0.5 -> 0.28  Inexact Rounded

+pwsx2806  power 76E+1  0.5 -> 28  Inexact Rounded

+pwsx2807  power 76E+2  0.5 -> 87  Inexact Rounded

+pwsx2808  power 76E+3  0.5 -> 2.8E+2  Inexact Rounded

+pwsx2809  power 0.77  0.5 -> 0.88  Inexact Rounded

+pwsx2810  power 0.077  0.5 -> 0.28  Inexact Rounded

+pwsx2811  power 77.0E-1  0.5 -> 2.8  Inexact Rounded

+pwsx2812  power 77.00E-2  0.5 -> 0.88  Inexact Rounded

+pwsx2813  power 77E-3  0.5 -> 0.28  Inexact Rounded

+pwsx2814  power 77E+1  0.5 -> 28  Inexact Rounded

+pwsx2815  power 77E+2  0.5 -> 88  Inexact Rounded

+pwsx2816  power 77E+3  0.5 -> 2.8E+2  Inexact Rounded

+pwsx2817  power 0.78  0.5 -> 0.88  Inexact Rounded

+pwsx2818  power 0.078  0.5 -> 0.28  Inexact Rounded

+pwsx2819  power 78.0E-1  0.5 -> 2.8  Inexact Rounded

+pwsx2820  power 78.00E-2  0.5 -> 0.88  Inexact Rounded

+pwsx2821  power 78E-3  0.5 -> 0.28  Inexact Rounded

+pwsx2822  power 78E+1  0.5 -> 28  Inexact Rounded

+pwsx2823  power 78E+2  0.5 -> 88  Inexact Rounded

+pwsx2824  power 78E+3  0.5 -> 2.8E+2  Inexact Rounded

+pwsx2825  power 0.79  0.5 -> 0.89  Inexact Rounded

+pwsx2826  power 0.079  0.5 -> 0.28  Inexact Rounded

+pwsx2827  power 79.0E-1  0.5 -> 2.8  Inexact Rounded

+pwsx2828  power 79.00E-2  0.5 -> 0.89  Inexact Rounded

+pwsx2829  power 79E-3  0.5 -> 0.28  Inexact Rounded

+pwsx2830  power 79E+1  0.5 -> 28  Inexact Rounded

+pwsx2831  power 79E+2  0.5 -> 89  Inexact Rounded

+pwsx2832  power 79E+3  0.5 -> 2.8E+2  Inexact Rounded

+pwsx2833  power 0.80  0.5 -> 0.89  Inexact Rounded

+pwsx2834  power 0.080  0.5 -> 0.28  Inexact Rounded

+pwsx2835  power 80.0E-1  0.5 -> 2.8  Inexact Rounded

+pwsx2836  power 80.00E-2  0.5 -> 0.89  Inexact Rounded

+pwsx2837  power 80E-3  0.5 -> 0.28  Inexact Rounded

+pwsx2838  power 80E+1  0.5 -> 28  Inexact Rounded

+pwsx2839  power 80E+2  0.5 -> 89  Inexact Rounded

+pwsx2840  power 80E+3  0.5 -> 2.8E+2  Inexact Rounded

+pwsx2841  power 0.81  0.5 -> 0.90 Inexact Rounded

+pwsx2842  power 0.081  0.5 -> 0.28  Inexact Rounded

+pwsx2843  power 81.0E-1  0.5 -> 2.8  Inexact Rounded

+pwsx2844  power 81.00E-2  0.5 -> 0.90 Inexact Rounded

+pwsx2845  power 81E-3  0.5 -> 0.28  Inexact Rounded

+pwsx2846  power 81E+1  0.5 -> 28  Inexact Rounded

+pwsx2847  power 81E+2  0.5 -> 90 Inexact Rounded

+pwsx2848  power 81E+3  0.5 -> 2.8E+2  Inexact Rounded

+pwsx2849  power 0.82  0.5 -> 0.91  Inexact Rounded

+pwsx2850  power 0.082  0.5 -> 0.29  Inexact Rounded

+pwsx2851  power 82.0E-1  0.5 -> 2.9  Inexact Rounded

+pwsx2852  power 82.00E-2  0.5 -> 0.91  Inexact Rounded

+pwsx2853  power 82E-3  0.5 -> 0.29  Inexact Rounded

+pwsx2854  power 82E+1  0.5 -> 29  Inexact Rounded

+pwsx2855  power 82E+2  0.5 -> 91  Inexact Rounded

+pwsx2856  power 82E+3  0.5 -> 2.9E+2  Inexact Rounded

+pwsx2857  power 0.83  0.5 -> 0.91  Inexact Rounded

+pwsx2858  power 0.083  0.5 -> 0.29  Inexact Rounded

+pwsx2859  power 83.0E-1  0.5 -> 2.9  Inexact Rounded

+pwsx2860  power 83.00E-2  0.5 -> 0.91  Inexact Rounded

+pwsx2861  power 83E-3  0.5 -> 0.29  Inexact Rounded

+pwsx2862  power 83E+1  0.5 -> 29  Inexact Rounded

+pwsx2863  power 83E+2  0.5 -> 91  Inexact Rounded

+pwsx2864  power 83E+3  0.5 -> 2.9E+2  Inexact Rounded

+pwsx2865  power 0.84  0.5 -> 0.92  Inexact Rounded

+pwsx2866  power 0.084  0.5 -> 0.29  Inexact Rounded

+pwsx2867  power 84.0E-1  0.5 -> 2.9  Inexact Rounded

+pwsx2868  power 84.00E-2  0.5 -> 0.92  Inexact Rounded

+pwsx2869  power 84E-3  0.5 -> 0.29  Inexact Rounded

+pwsx2870  power 84E+1  0.5 -> 29  Inexact Rounded

+pwsx2871  power 84E+2  0.5 -> 92  Inexact Rounded

+pwsx2872  power 84E+3  0.5 -> 2.9E+2  Inexact Rounded

+pwsx2873  power 0.85  0.5 -> 0.92  Inexact Rounded

+pwsx2874  power 0.085  0.5 -> 0.29  Inexact Rounded

+pwsx2875  power 85.0E-1  0.5 -> 2.9  Inexact Rounded

+pwsx2876  power 85.00E-2  0.5 -> 0.92  Inexact Rounded

+pwsx2877  power 85E-3  0.5 -> 0.29  Inexact Rounded

+pwsx2878  power 85E+1  0.5 -> 29  Inexact Rounded

+pwsx2879  power 85E+2  0.5 -> 92  Inexact Rounded

+pwsx2880  power 85E+3  0.5 -> 2.9E+2  Inexact Rounded

+pwsx2881  power 0.86  0.5 -> 0.93  Inexact Rounded

+pwsx2882  power 0.086  0.5 -> 0.29  Inexact Rounded

+pwsx2883  power 86.0E-1  0.5 -> 2.9  Inexact Rounded

+pwsx2884  power 86.00E-2  0.5 -> 0.93  Inexact Rounded

+pwsx2885  power 86E-3  0.5 -> 0.29  Inexact Rounded

+pwsx2886  power 86E+1  0.5 -> 29  Inexact Rounded

+pwsx2887  power 86E+2  0.5 -> 93  Inexact Rounded

+pwsx2888  power 86E+3  0.5 -> 2.9E+2  Inexact Rounded

+pwsx2889  power 0.87  0.5 -> 0.93  Inexact Rounded

+pwsx2890  power 0.087  0.5 -> 0.29  Inexact Rounded

+pwsx2891  power 87.0E-1  0.5 -> 2.9  Inexact Rounded

+pwsx2892  power 87.00E-2  0.5 -> 0.93  Inexact Rounded

+pwsx2893  power 87E-3  0.5 -> 0.29  Inexact Rounded

+pwsx2894  power 87E+1  0.5 -> 29  Inexact Rounded

+pwsx2895  power 87E+2  0.5 -> 93  Inexact Rounded

+pwsx2896  power 87E+3  0.5 -> 2.9E+2  Inexact Rounded

+pwsx2897  power 0.88  0.5 -> 0.94  Inexact Rounded

+pwsx2898  power 0.088  0.5 -> 0.30  Inexact Rounded

+pwsx2899  power 88.0E-1  0.5 -> 3.0  Inexact Rounded

+pwsx2900  power 88.00E-2  0.5 -> 0.94  Inexact Rounded

+pwsx2901  power 88E-3  0.5 -> 0.30  Inexact Rounded

+pwsx2902  power 88E+1  0.5 -> 30  Inexact Rounded

+pwsx2903  power 88E+2  0.5 -> 94  Inexact Rounded

+pwsx2904  power 88E+3  0.5 -> 3.0E+2  Inexact Rounded

+pwsx2905  power 0.89  0.5 -> 0.94  Inexact Rounded

+pwsx2906  power 0.089  0.5 -> 0.30  Inexact Rounded

+pwsx2907  power 89.0E-1  0.5 -> 3.0  Inexact Rounded

+pwsx2908  power 89.00E-2  0.5 -> 0.94  Inexact Rounded

+pwsx2909  power 89E-3  0.5 -> 0.30  Inexact Rounded

+pwsx2910  power 89E+1  0.5 -> 30  Inexact Rounded

+pwsx2911  power 89E+2  0.5 -> 94  Inexact Rounded

+pwsx2912  power 89E+3  0.5 -> 3.0E+2  Inexact Rounded

+pwsx2913  power 0.90  0.5 -> 0.95  Inexact Rounded

+pwsx2914  power 0.090  0.5 -> 0.30 Inexact Rounded

+pwsx2915  power 90.0E-1  0.5 -> 3.0 Inexact Rounded

+pwsx2916  power 90.00E-2  0.5 -> 0.95  Inexact Rounded

+pwsx2917  power 90E-3  0.5 -> 0.30 Inexact Rounded

+pwsx2918  power 90E+1  0.5 -> 30 Inexact Rounded

+pwsx2919  power 90E+2  0.5 -> 95  Inexact Rounded

+pwsx2920  power 90E+3  0.5 -> 3.0E+2 Inexact Rounded

+pwsx2921  power 0.91  0.5 -> 0.95  Inexact Rounded

+pwsx2922  power 0.091  0.5 -> 0.30  Inexact Rounded

+pwsx2923  power 91.0E-1  0.5 -> 3.0  Inexact Rounded

+pwsx2924  power 91.00E-2  0.5 -> 0.95  Inexact Rounded

+pwsx2925  power 91E-3  0.5 -> 0.30  Inexact Rounded

+pwsx2926  power 91E+1  0.5 -> 30  Inexact Rounded

+pwsx2927  power 91E+2  0.5 -> 95  Inexact Rounded

+pwsx2928  power 91E+3  0.5 -> 3.0E+2  Inexact Rounded

+pwsx2929  power 0.92  0.5 -> 0.96  Inexact Rounded

+pwsx2930  power 0.092  0.5 -> 0.30  Inexact Rounded

+pwsx2931  power 92.0E-1  0.5 -> 3.0  Inexact Rounded

+pwsx2932  power 92.00E-2  0.5 -> 0.96  Inexact Rounded

+pwsx2933  power 92E-3  0.5 -> 0.30  Inexact Rounded

+pwsx2934  power 92E+1  0.5 -> 30  Inexact Rounded

+pwsx2935  power 92E+2  0.5 -> 96  Inexact Rounded

+pwsx2936  power 92E+3  0.5 -> 3.0E+2  Inexact Rounded

+pwsx2937  power 0.93  0.5 -> 0.96  Inexact Rounded

+pwsx2938  power 0.093  0.5 -> 0.30  Inexact Rounded

+pwsx2939  power 93.0E-1  0.5 -> 3.0  Inexact Rounded

+pwsx2940  power 93.00E-2  0.5 -> 0.96  Inexact Rounded

+pwsx2941  power 93E-3  0.5 -> 0.30  Inexact Rounded

+pwsx2942  power 93E+1  0.5 -> 30  Inexact Rounded

+pwsx2943  power 93E+2  0.5 -> 96  Inexact Rounded

+pwsx2944  power 93E+3  0.5 -> 3.0E+2  Inexact Rounded

+pwsx2945  power 0.94  0.5 -> 0.97  Inexact Rounded

+pwsx2946  power 0.094  0.5 -> 0.31  Inexact Rounded

+pwsx2947  power 94.0E-1  0.5 -> 3.1  Inexact Rounded

+pwsx2948  power 94.00E-2  0.5 -> 0.97  Inexact Rounded

+pwsx2949  power 94E-3  0.5 -> 0.31  Inexact Rounded

+pwsx2950  power 94E+1  0.5 -> 31  Inexact Rounded

+pwsx2951  power 94E+2  0.5 -> 97  Inexact Rounded

+pwsx2952  power 94E+3  0.5 -> 3.1E+2  Inexact Rounded

+pwsx2953  power 0.95  0.5 -> 0.97  Inexact Rounded

+pwsx2954  power 0.095  0.5 -> 0.31  Inexact Rounded

+pwsx2955  power 95.0E-1  0.5 -> 3.1  Inexact Rounded

+pwsx2956  power 95.00E-2  0.5 -> 0.97  Inexact Rounded

+pwsx2957  power 95E-3  0.5 -> 0.31  Inexact Rounded

+pwsx2958  power 95E+1  0.5 -> 31  Inexact Rounded

+pwsx2959  power 95E+2  0.5 -> 97  Inexact Rounded

+pwsx2960  power 95E+3  0.5 -> 3.1E+2  Inexact Rounded

+pwsx2961  power 0.96  0.5 -> 0.98  Inexact Rounded

+pwsx2962  power 0.096  0.5 -> 0.31  Inexact Rounded

+pwsx2963  power 96.0E-1  0.5 -> 3.1  Inexact Rounded

+pwsx2964  power 96.00E-2  0.5 -> 0.98  Inexact Rounded

+pwsx2965  power 96E-3  0.5 -> 0.31  Inexact Rounded

+pwsx2966  power 96E+1  0.5 -> 31  Inexact Rounded

+pwsx2967  power 96E+2  0.5 -> 98  Inexact Rounded

+pwsx2968  power 96E+3  0.5 -> 3.1E+2  Inexact Rounded

+pwsx2969  power 0.97  0.5 -> 0.98  Inexact Rounded

+pwsx2970  power 0.097  0.5 -> 0.31  Inexact Rounded

+pwsx2971  power 97.0E-1  0.5 -> 3.1  Inexact Rounded

+pwsx2972  power 97.00E-2  0.5 -> 0.98  Inexact Rounded

+pwsx2973  power 97E-3  0.5 -> 0.31  Inexact Rounded

+pwsx2974  power 97E+1  0.5 -> 31  Inexact Rounded

+pwsx2975  power 97E+2  0.5 -> 98  Inexact Rounded

+pwsx2976  power 97E+3  0.5 -> 3.1E+2  Inexact Rounded

+pwsx2977  power 0.98  0.5 -> 0.99  Inexact Rounded

+pwsx2978  power 0.098  0.5 -> 0.31  Inexact Rounded

+pwsx2979  power 98.0E-1  0.5 -> 3.1  Inexact Rounded

+pwsx2980  power 98.00E-2  0.5 -> 0.99  Inexact Rounded

+pwsx2981  power 98E-3  0.5 -> 0.31  Inexact Rounded

+pwsx2982  power 98E+1  0.5 -> 31  Inexact Rounded

+pwsx2983  power 98E+2  0.5 -> 99  Inexact Rounded

+pwsx2984  power 98E+3  0.5 -> 3.1E+2  Inexact Rounded

+pwsx2985  power 0.99  0.5 -> 0.99  Inexact Rounded

+pwsx2986  power 0.099  0.5 -> 0.31  Inexact Rounded

+pwsx2987  power 99.0E-1  0.5 -> 3.1  Inexact Rounded

+pwsx2988  power 99.00E-2  0.5 -> 0.99  Inexact Rounded

+pwsx2989  power 99E-3  0.5 -> 0.31  Inexact Rounded

+pwsx2990  power 99E+1  0.5 -> 31  Inexact Rounded

+pwsx2991  power 99E+2  0.5 -> 99  Inexact Rounded

+pwsx2992  power 99E+3  0.5 -> 3.1E+2  Inexact Rounded

+

+-- Precision 3 squareroot tests [exhaustive, f and f/10]

+rounding:    half_even

+maxExponent: 999

+minexponent: -999

+precision:   3

+pwsx3001  power 0.1  0.5 -> 0.316  Inexact Rounded

+pwsx3002  power 0.01  0.5 -> 0.100  Inexact Rounded

+pwsx3003  power 0.2  0.5 -> 0.447  Inexact Rounded

+pwsx3004  power 0.02  0.5 -> 0.141  Inexact Rounded

+pwsx3005  power 0.3  0.5 -> 0.548  Inexact Rounded

+pwsx3006  power 0.03  0.5 -> 0.173  Inexact Rounded

+pwsx3007  power 0.4  0.5 -> 0.632  Inexact Rounded

+pwsx3008  power 0.04  0.5 -> 0.200  Inexact Rounded

+pwsx3009  power 0.5  0.5 -> 0.707  Inexact Rounded

+pwsx3010  power 0.05  0.5 -> 0.224  Inexact Rounded

+pwsx3011  power 0.6  0.5 -> 0.775  Inexact Rounded

+pwsx3012  power 0.06  0.5 -> 0.245  Inexact Rounded

+pwsx3013  power 0.7  0.5 -> 0.837  Inexact Rounded

+pwsx3014  power 0.07  0.5 -> 0.265  Inexact Rounded

+pwsx3015  power 0.8  0.5 -> 0.894  Inexact Rounded

+pwsx3016  power 0.08  0.5 -> 0.283  Inexact Rounded

+pwsx3017  power 0.9  0.5 -> 0.949  Inexact Rounded

+pwsx3018  power 0.09  0.5 -> 0.300  Inexact Rounded

+pwsx3019  power 0.11  0.5 -> 0.332  Inexact Rounded

+pwsx3020  power 0.011  0.5 -> 0.105  Inexact Rounded

+pwsx3021  power 0.12  0.5 -> 0.346  Inexact Rounded

+pwsx3022  power 0.012  0.5 -> 0.110  Inexact Rounded

+pwsx3023  power 0.13  0.5 -> 0.361  Inexact Rounded

+pwsx3024  power 0.013  0.5 -> 0.114  Inexact Rounded

+pwsx3025  power 0.14  0.5 -> 0.374  Inexact Rounded

+pwsx3026  power 0.014  0.5 -> 0.118  Inexact Rounded

+pwsx3027  power 0.15  0.5 -> 0.387  Inexact Rounded

+pwsx3028  power 0.015  0.5 -> 0.122  Inexact Rounded

+pwsx3029  power 0.16  0.5 -> 0.400  Inexact Rounded

+pwsx3030  power 0.016  0.5 -> 0.126  Inexact Rounded

+pwsx3031  power 0.17  0.5 -> 0.412  Inexact Rounded

+pwsx3032  power 0.017  0.5 -> 0.130  Inexact Rounded

+pwsx3033  power 0.18  0.5 -> 0.424  Inexact Rounded

+pwsx3034  power 0.018  0.5 -> 0.134  Inexact Rounded

+pwsx3035  power 0.19  0.5 -> 0.436  Inexact Rounded

+pwsx3036  power 0.019  0.5 -> 0.138  Inexact Rounded

+pwsx3037  power 0.21  0.5 -> 0.458  Inexact Rounded

+pwsx3038  power 0.021  0.5 -> 0.145  Inexact Rounded

+pwsx3039  power 0.22  0.5 -> 0.469  Inexact Rounded

+pwsx3040  power 0.022  0.5 -> 0.148  Inexact Rounded

+pwsx3041  power 0.23  0.5 -> 0.480  Inexact Rounded

+pwsx3042  power 0.023  0.5 -> 0.152  Inexact Rounded

+pwsx3043  power 0.24  0.5 -> 0.490  Inexact Rounded

+pwsx3044  power 0.024  0.5 -> 0.155  Inexact Rounded

+pwsx3045  power 0.25  0.5 -> 0.500  Inexact Rounded

+pwsx3046  power 0.025  0.5 -> 0.158  Inexact Rounded

+pwsx3047  power 0.26  0.5 -> 0.510  Inexact Rounded

+pwsx3048  power 0.026  0.5 -> 0.161  Inexact Rounded

+pwsx3049  power 0.27  0.5 -> 0.520  Inexact Rounded

+pwsx3050  power 0.027  0.5 -> 0.164  Inexact Rounded

+pwsx3051  power 0.28  0.5 -> 0.529  Inexact Rounded

+pwsx3052  power 0.028  0.5 -> 0.167  Inexact Rounded

+pwsx3053  power 0.29  0.5 -> 0.539  Inexact Rounded

+pwsx3054  power 0.029  0.5 -> 0.170  Inexact Rounded

+pwsx3055  power 0.31  0.5 -> 0.557  Inexact Rounded

+pwsx3056  power 0.031  0.5 -> 0.176  Inexact Rounded

+pwsx3057  power 0.32  0.5 -> 0.566  Inexact Rounded

+pwsx3058  power 0.032  0.5 -> 0.179  Inexact Rounded

+pwsx3059  power 0.33  0.5 -> 0.574  Inexact Rounded

+pwsx3060  power 0.033  0.5 -> 0.182  Inexact Rounded

+pwsx3061  power 0.34  0.5 -> 0.583  Inexact Rounded

+pwsx3062  power 0.034  0.5 -> 0.184  Inexact Rounded

+pwsx3063  power 0.35  0.5 -> 0.592  Inexact Rounded

+pwsx3064  power 0.035  0.5 -> 0.187  Inexact Rounded

+pwsx3065  power 0.36  0.5 -> 0.600  Inexact Rounded

+pwsx3066  power 0.036  0.5 -> 0.190  Inexact Rounded

+pwsx3067  power 0.37  0.5 -> 0.608  Inexact Rounded

+pwsx3068  power 0.037  0.5 -> 0.192  Inexact Rounded

+pwsx3069  power 0.38  0.5 -> 0.616  Inexact Rounded

+pwsx3070  power 0.038  0.5 -> 0.195  Inexact Rounded

+pwsx3071  power 0.39  0.5 -> 0.624  Inexact Rounded

+pwsx3072  power 0.039  0.5 -> 0.197  Inexact Rounded

+pwsx3073  power 0.41  0.5 -> 0.640  Inexact Rounded

+pwsx3074  power 0.041  0.5 -> 0.202  Inexact Rounded

+pwsx3075  power 0.42  0.5 -> 0.648  Inexact Rounded

+pwsx3076  power 0.042  0.5 -> 0.205  Inexact Rounded

+pwsx3077  power 0.43  0.5 -> 0.656  Inexact Rounded

+pwsx3078  power 0.043  0.5 -> 0.207  Inexact Rounded

+pwsx3079  power 0.44  0.5 -> 0.663  Inexact Rounded

+pwsx3080  power 0.044  0.5 -> 0.210  Inexact Rounded

+pwsx3081  power 0.45  0.5 -> 0.671  Inexact Rounded

+pwsx3082  power 0.045  0.5 -> 0.212  Inexact Rounded

+pwsx3083  power 0.46  0.5 -> 0.678  Inexact Rounded

+pwsx3084  power 0.046  0.5 -> 0.214  Inexact Rounded

+pwsx3085  power 0.47  0.5 -> 0.686  Inexact Rounded

+pwsx3086  power 0.047  0.5 -> 0.217  Inexact Rounded

+pwsx3087  power 0.48  0.5 -> 0.693  Inexact Rounded

+pwsx3088  power 0.048  0.5 -> 0.219  Inexact Rounded

+pwsx3089  power 0.49  0.5 -> 0.700  Inexact Rounded

+pwsx3090  power 0.049  0.5 -> 0.221  Inexact Rounded

+pwsx3091  power 0.51  0.5 -> 0.714  Inexact Rounded

+pwsx3092  power 0.051  0.5 -> 0.226  Inexact Rounded

+pwsx3093  power 0.52  0.5 -> 0.721  Inexact Rounded

+pwsx3094  power 0.052  0.5 -> 0.228  Inexact Rounded

+pwsx3095  power 0.53  0.5 -> 0.728  Inexact Rounded

+pwsx3096  power 0.053  0.5 -> 0.230  Inexact Rounded

+pwsx3097  power 0.54  0.5 -> 0.735  Inexact Rounded

+pwsx3098  power 0.054  0.5 -> 0.232  Inexact Rounded

+pwsx3099  power 0.55  0.5 -> 0.742  Inexact Rounded

+pwsx3100  power 0.055  0.5 -> 0.235  Inexact Rounded

+pwsx3101  power 0.56  0.5 -> 0.748  Inexact Rounded

+pwsx3102  power 0.056  0.5 -> 0.237  Inexact Rounded

+pwsx3103  power 0.57  0.5 -> 0.755  Inexact Rounded

+pwsx3104  power 0.057  0.5 -> 0.239  Inexact Rounded

+pwsx3105  power 0.58  0.5 -> 0.762  Inexact Rounded

+pwsx3106  power 0.058  0.5 -> 0.241  Inexact Rounded

+pwsx3107  power 0.59  0.5 -> 0.768  Inexact Rounded

+pwsx3108  power 0.059  0.5 -> 0.243  Inexact Rounded

+pwsx3109  power 0.61  0.5 -> 0.781  Inexact Rounded

+pwsx3110  power 0.061  0.5 -> 0.247  Inexact Rounded

+pwsx3111  power 0.62  0.5 -> 0.787  Inexact Rounded

+pwsx3112  power 0.062  0.5 -> 0.249  Inexact Rounded

+pwsx3113  power 0.63  0.5 -> 0.794  Inexact Rounded

+pwsx3114  power 0.063  0.5 -> 0.251  Inexact Rounded

+pwsx3115  power 0.64  0.5 -> 0.800  Inexact Rounded

+pwsx3116  power 0.064  0.5 -> 0.253  Inexact Rounded

+pwsx3117  power 0.65  0.5 -> 0.806  Inexact Rounded

+pwsx3118  power 0.065  0.5 -> 0.255  Inexact Rounded

+pwsx3119  power 0.66  0.5 -> 0.812  Inexact Rounded

+pwsx3120  power 0.066  0.5 -> 0.257  Inexact Rounded

+pwsx3121  power 0.67  0.5 -> 0.819  Inexact Rounded

+pwsx3122  power 0.067  0.5 -> 0.259  Inexact Rounded

+pwsx3123  power 0.68  0.5 -> 0.825  Inexact Rounded

+pwsx3124  power 0.068  0.5 -> 0.261  Inexact Rounded

+pwsx3125  power 0.69  0.5 -> 0.831  Inexact Rounded

+pwsx3126  power 0.069  0.5 -> 0.263  Inexact Rounded

+pwsx3127  power 0.71  0.5 -> 0.843  Inexact Rounded

+pwsx3128  power 0.071  0.5 -> 0.266  Inexact Rounded

+pwsx3129  power 0.72  0.5 -> 0.849  Inexact Rounded

+pwsx3130  power 0.072  0.5 -> 0.268  Inexact Rounded

+pwsx3131  power 0.73  0.5 -> 0.854  Inexact Rounded

+pwsx3132  power 0.073  0.5 -> 0.270  Inexact Rounded

+pwsx3133  power 0.74  0.5 -> 0.860  Inexact Rounded

+pwsx3134  power 0.074  0.5 -> 0.272  Inexact Rounded

+pwsx3135  power 0.75  0.5 -> 0.866  Inexact Rounded

+pwsx3136  power 0.075  0.5 -> 0.274  Inexact Rounded

+pwsx3137  power 0.76  0.5 -> 0.872  Inexact Rounded

+pwsx3138  power 0.076  0.5 -> 0.276  Inexact Rounded

+pwsx3139  power 0.77  0.5 -> 0.877  Inexact Rounded

+pwsx3140  power 0.077  0.5 -> 0.277  Inexact Rounded

+pwsx3141  power 0.78  0.5 -> 0.883  Inexact Rounded

+pwsx3142  power 0.078  0.5 -> 0.279  Inexact Rounded

+pwsx3143  power 0.79  0.5 -> 0.889  Inexact Rounded

+pwsx3144  power 0.079  0.5 -> 0.281  Inexact Rounded

+pwsx3145  power 0.81  0.5 -> 0.900  Inexact Rounded

+pwsx3146  power 0.081  0.5 -> 0.285  Inexact Rounded

+pwsx3147  power 0.82  0.5 -> 0.906  Inexact Rounded

+pwsx3148  power 0.082  0.5 -> 0.286  Inexact Rounded

+pwsx3149  power 0.83  0.5 -> 0.911  Inexact Rounded

+pwsx3150  power 0.083  0.5 -> 0.288  Inexact Rounded

+pwsx3151  power 0.84  0.5 -> 0.917  Inexact Rounded

+pwsx3152  power 0.084  0.5 -> 0.290  Inexact Rounded

+pwsx3153  power 0.85  0.5 -> 0.922  Inexact Rounded

+pwsx3154  power 0.085  0.5 -> 0.292  Inexact Rounded

+pwsx3155  power 0.86  0.5 -> 0.927  Inexact Rounded

+pwsx3156  power 0.086  0.5 -> 0.293  Inexact Rounded

+pwsx3157  power 0.87  0.5 -> 0.933  Inexact Rounded

+pwsx3158  power 0.087  0.5 -> 0.295  Inexact Rounded

+pwsx3159  power 0.88  0.5 -> 0.938  Inexact Rounded

+pwsx3160  power 0.088  0.5 -> 0.297  Inexact Rounded

+pwsx3161  power 0.89  0.5 -> 0.943  Inexact Rounded

+pwsx3162  power 0.089  0.5 -> 0.298  Inexact Rounded

+pwsx3163  power 0.91  0.5 -> 0.954  Inexact Rounded

+pwsx3164  power 0.091  0.5 -> 0.302  Inexact Rounded

+pwsx3165  power 0.92  0.5 -> 0.959  Inexact Rounded

+pwsx3166  power 0.092  0.5 -> 0.303  Inexact Rounded

+pwsx3167  power 0.93  0.5 -> 0.964  Inexact Rounded

+pwsx3168  power 0.093  0.5 -> 0.305  Inexact Rounded

+pwsx3169  power 0.94  0.5 -> 0.970  Inexact Rounded

+pwsx3170  power 0.094  0.5 -> 0.307  Inexact Rounded

+pwsx3171  power 0.95  0.5 -> 0.975  Inexact Rounded

+pwsx3172  power 0.095  0.5 -> 0.308  Inexact Rounded

+pwsx3173  power 0.96  0.5 -> 0.980  Inexact Rounded

+pwsx3174  power 0.096  0.5 -> 0.310  Inexact Rounded

+pwsx3175  power 0.97  0.5 -> 0.985  Inexact Rounded

+pwsx3176  power 0.097  0.5 -> 0.311  Inexact Rounded

+pwsx3177  power 0.98  0.5 -> 0.990  Inexact Rounded

+pwsx3178  power 0.098  0.5 -> 0.313  Inexact Rounded

+pwsx3179  power 0.99  0.5 -> 0.995  Inexact Rounded

+pwsx3180  power 0.099  0.5 -> 0.315  Inexact Rounded

+pwsx3181  power 0.101  0.5 -> 0.318  Inexact Rounded

+pwsx3182  power 0.0101  0.5 -> 0.100  Inexact Rounded

+pwsx3183  power 0.102  0.5 -> 0.319  Inexact Rounded

+pwsx3184  power 0.0102  0.5 -> 0.101  Inexact Rounded

+pwsx3185  power 0.103  0.5 -> 0.321  Inexact Rounded

+pwsx3186  power 0.0103  0.5 -> 0.101  Inexact Rounded

+pwsx3187  power 0.104  0.5 -> 0.322  Inexact Rounded

+pwsx3188  power 0.0104  0.5 -> 0.102  Inexact Rounded

+pwsx3189  power 0.105  0.5 -> 0.324  Inexact Rounded

+pwsx3190  power 0.0105  0.5 -> 0.102  Inexact Rounded

+pwsx3191  power 0.106  0.5 -> 0.326  Inexact Rounded

+pwsx3192  power 0.0106  0.5 -> 0.103  Inexact Rounded

+pwsx3193  power 0.107  0.5 -> 0.327  Inexact Rounded

+pwsx3194  power 0.0107  0.5 -> 0.103  Inexact Rounded

+pwsx3195  power 0.108  0.5 -> 0.329  Inexact Rounded

+pwsx3196  power 0.0108  0.5 -> 0.104  Inexact Rounded

+pwsx3197  power 0.109  0.5 -> 0.330  Inexact Rounded

+pwsx3198  power 0.0109  0.5 -> 0.104  Inexact Rounded

+pwsx3199  power 0.111  0.5 -> 0.333  Inexact Rounded

+pwsx3200  power 0.0111  0.5 -> 0.105  Inexact Rounded

+pwsx3201  power 0.112  0.5 -> 0.335  Inexact Rounded

+pwsx3202  power 0.0112  0.5 -> 0.106  Inexact Rounded

+pwsx3203  power 0.113  0.5 -> 0.336  Inexact Rounded

+pwsx3204  power 0.0113  0.5 -> 0.106  Inexact Rounded

+pwsx3205  power 0.114  0.5 -> 0.338  Inexact Rounded

+pwsx3206  power 0.0114  0.5 -> 0.107  Inexact Rounded

+pwsx3207  power 0.115  0.5 -> 0.339  Inexact Rounded

+pwsx3208  power 0.0115  0.5 -> 0.107  Inexact Rounded

+pwsx3209  power 0.116  0.5 -> 0.341  Inexact Rounded

+pwsx3210  power 0.0116  0.5 -> 0.108  Inexact Rounded

+pwsx3211  power 0.117  0.5 -> 0.342  Inexact Rounded

+pwsx3212  power 0.0117  0.5 -> 0.108  Inexact Rounded

+pwsx3213  power 0.118  0.5 -> 0.344  Inexact Rounded

+pwsx3214  power 0.0118  0.5 -> 0.109  Inexact Rounded

+pwsx3215  power 0.119  0.5 -> 0.345  Inexact Rounded

+pwsx3216  power 0.0119  0.5 -> 0.109  Inexact Rounded

+pwsx3217  power 0.121  0.5 -> 0.348  Inexact Rounded

+pwsx3218  power 0.0121  0.5 -> 0.110  Inexact Rounded

+pwsx3219  power 0.122  0.5 -> 0.349  Inexact Rounded

+pwsx3220  power 0.0122  0.5 -> 0.110  Inexact Rounded

+pwsx3221  power 0.123  0.5 -> 0.351  Inexact Rounded

+pwsx3222  power 0.0123  0.5 -> 0.111  Inexact Rounded

+pwsx3223  power 0.124  0.5 -> 0.352  Inexact Rounded

+pwsx3224  power 0.0124  0.5 -> 0.111  Inexact Rounded

+pwsx3225  power 0.125  0.5 -> 0.354  Inexact Rounded

+pwsx3226  power 0.0125  0.5 -> 0.112  Inexact Rounded

+pwsx3227  power 0.126  0.5 -> 0.355  Inexact Rounded

+pwsx3228  power 0.0126  0.5 -> 0.112  Inexact Rounded

+pwsx3229  power 0.127  0.5 -> 0.356  Inexact Rounded

+pwsx3230  power 0.0127  0.5 -> 0.113  Inexact Rounded

+pwsx3231  power 0.128  0.5 -> 0.358  Inexact Rounded

+pwsx3232  power 0.0128  0.5 -> 0.113  Inexact Rounded

+pwsx3233  power 0.129  0.5 -> 0.359  Inexact Rounded

+pwsx3234  power 0.0129  0.5 -> 0.114  Inexact Rounded

+pwsx3235  power 0.131  0.5 -> 0.362  Inexact Rounded

+pwsx3236  power 0.0131  0.5 -> 0.114  Inexact Rounded

+pwsx3237  power 0.132  0.5 -> 0.363  Inexact Rounded

+pwsx3238  power 0.0132  0.5 -> 0.115  Inexact Rounded

+pwsx3239  power 0.133  0.5 -> 0.365  Inexact Rounded

+pwsx3240  power 0.0133  0.5 -> 0.115  Inexact Rounded

+pwsx3241  power 0.134  0.5 -> 0.366  Inexact Rounded

+pwsx3242  power 0.0134  0.5 -> 0.116  Inexact Rounded

+pwsx3243  power 0.135  0.5 -> 0.367  Inexact Rounded

+pwsx3244  power 0.0135  0.5 -> 0.116  Inexact Rounded

+pwsx3245  power 0.136  0.5 -> 0.369  Inexact Rounded

+pwsx3246  power 0.0136  0.5 -> 0.117  Inexact Rounded

+pwsx3247  power 0.137  0.5 -> 0.370  Inexact Rounded

+pwsx3248  power 0.0137  0.5 -> 0.117  Inexact Rounded

+pwsx3249  power 0.138  0.5 -> 0.371  Inexact Rounded

+pwsx3250  power 0.0138  0.5 -> 0.117  Inexact Rounded

+pwsx3251  power 0.139  0.5 -> 0.373  Inexact Rounded

+pwsx3252  power 0.0139  0.5 -> 0.118  Inexact Rounded

+pwsx3253  power 0.141  0.5 -> 0.375  Inexact Rounded

+pwsx3254  power 0.0141  0.5 -> 0.119  Inexact Rounded

+pwsx3255  power 0.142  0.5 -> 0.377  Inexact Rounded

+pwsx3256  power 0.0142  0.5 -> 0.119  Inexact Rounded

+pwsx3257  power 0.143  0.5 -> 0.378  Inexact Rounded

+pwsx3258  power 0.0143  0.5 -> 0.120  Inexact Rounded

+pwsx3259  power 0.144  0.5 -> 0.379  Inexact Rounded

+pwsx3260  power 0.0144  0.5 -> 0.120  Inexact Rounded

+pwsx3261  power 0.145  0.5 -> 0.381  Inexact Rounded

+pwsx3262  power 0.0145  0.5 -> 0.120  Inexact Rounded

+pwsx3263  power 0.146  0.5 -> 0.382  Inexact Rounded

+pwsx3264  power 0.0146  0.5 -> 0.121  Inexact Rounded

+pwsx3265  power 0.147  0.5 -> 0.383  Inexact Rounded

+pwsx3266  power 0.0147  0.5 -> 0.121  Inexact Rounded

+pwsx3267  power 0.148  0.5 -> 0.385  Inexact Rounded

+pwsx3268  power 0.0148  0.5 -> 0.122  Inexact Rounded

+pwsx3269  power 0.149  0.5 -> 0.386  Inexact Rounded

+pwsx3270  power 0.0149  0.5 -> 0.122  Inexact Rounded

+pwsx3271  power 0.151  0.5 -> 0.389  Inexact Rounded

+pwsx3272  power 0.0151  0.5 -> 0.123  Inexact Rounded

+pwsx3273  power 0.152  0.5 -> 0.390  Inexact Rounded

+pwsx3274  power 0.0152  0.5 -> 0.123  Inexact Rounded

+pwsx3275  power 0.153  0.5 -> 0.391  Inexact Rounded

+pwsx3276  power 0.0153  0.5 -> 0.124  Inexact Rounded

+pwsx3277  power 0.154  0.5 -> 0.392  Inexact Rounded

+pwsx3278  power 0.0154  0.5 -> 0.124  Inexact Rounded

+pwsx3279  power 0.155  0.5 -> 0.394  Inexact Rounded

+pwsx3280  power 0.0155  0.5 -> 0.124  Inexact Rounded

+pwsx3281  power 0.156  0.5 -> 0.395  Inexact Rounded

+pwsx3282  power 0.0156  0.5 -> 0.125  Inexact Rounded

+pwsx3283  power 0.157  0.5 -> 0.396  Inexact Rounded

+pwsx3284  power 0.0157  0.5 -> 0.125  Inexact Rounded

+pwsx3285  power 0.158  0.5 -> 0.397  Inexact Rounded

+pwsx3286  power 0.0158  0.5 -> 0.126  Inexact Rounded

+pwsx3287  power 0.159  0.5 -> 0.399  Inexact Rounded

+pwsx3288  power 0.0159  0.5 -> 0.126  Inexact Rounded

+pwsx3289  power 0.161  0.5 -> 0.401  Inexact Rounded

+pwsx3290  power 0.0161  0.5 -> 0.127  Inexact Rounded

+pwsx3291  power 0.162  0.5 -> 0.402  Inexact Rounded

+pwsx3292  power 0.0162  0.5 -> 0.127  Inexact Rounded

+pwsx3293  power 0.163  0.5 -> 0.404  Inexact Rounded

+pwsx3294  power 0.0163  0.5 -> 0.128  Inexact Rounded

+pwsx3295  power 0.164  0.5 -> 0.405  Inexact Rounded

+pwsx3296  power 0.0164  0.5 -> 0.128  Inexact Rounded

+pwsx3297  power 0.165  0.5 -> 0.406  Inexact Rounded

+pwsx3298  power 0.0165  0.5 -> 0.128  Inexact Rounded

+pwsx3299  power 0.166  0.5 -> 0.407  Inexact Rounded

+pwsx3300  power 0.0166  0.5 -> 0.129  Inexact Rounded

+pwsx3301  power 0.167  0.5 -> 0.409  Inexact Rounded

+pwsx3302  power 0.0167  0.5 -> 0.129  Inexact Rounded

+pwsx3303  power 0.168  0.5 -> 0.410  Inexact Rounded

+pwsx3304  power 0.0168  0.5 -> 0.130  Inexact Rounded

+pwsx3305  power 0.169  0.5 -> 0.411  Inexact Rounded

+pwsx3306  power 0.0169  0.5 -> 0.130  Inexact Rounded

+pwsx3307  power 0.171  0.5 -> 0.414  Inexact Rounded

+pwsx3308  power 0.0171  0.5 -> 0.131  Inexact Rounded

+pwsx3309  power 0.172  0.5 -> 0.415  Inexact Rounded

+pwsx3310  power 0.0172  0.5 -> 0.131  Inexact Rounded

+pwsx3311  power 0.173  0.5 -> 0.416  Inexact Rounded

+pwsx3312  power 0.0173  0.5 -> 0.132  Inexact Rounded

+pwsx3313  power 0.174  0.5 -> 0.417  Inexact Rounded

+pwsx3314  power 0.0174  0.5 -> 0.132  Inexact Rounded

+pwsx3315  power 0.175  0.5 -> 0.418  Inexact Rounded

+pwsx3316  power 0.0175  0.5 -> 0.132  Inexact Rounded

+pwsx3317  power 0.176  0.5 -> 0.420  Inexact Rounded

+pwsx3318  power 0.0176  0.5 -> 0.133  Inexact Rounded

+pwsx3319  power 0.177  0.5 -> 0.421  Inexact Rounded

+pwsx3320  power 0.0177  0.5 -> 0.133  Inexact Rounded

+pwsx3321  power 0.178  0.5 -> 0.422  Inexact Rounded

+pwsx3322  power 0.0178  0.5 -> 0.133  Inexact Rounded

+pwsx3323  power 0.179  0.5 -> 0.423  Inexact Rounded

+pwsx3324  power 0.0179  0.5 -> 0.134  Inexact Rounded

+pwsx3325  power 0.181  0.5 -> 0.425  Inexact Rounded

+pwsx3326  power 0.0181  0.5 -> 0.135  Inexact Rounded

+pwsx3327  power 0.182  0.5 -> 0.427  Inexact Rounded

+pwsx3328  power 0.0182  0.5 -> 0.135  Inexact Rounded

+pwsx3329  power 0.183  0.5 -> 0.428  Inexact Rounded

+pwsx3330  power 0.0183  0.5 -> 0.135  Inexact Rounded

+pwsx3331  power 0.184  0.5 -> 0.429  Inexact Rounded

+pwsx3332  power 0.0184  0.5 -> 0.136  Inexact Rounded

+pwsx3333  power 0.185  0.5 -> 0.430  Inexact Rounded

+pwsx3334  power 0.0185  0.5 -> 0.136  Inexact Rounded

+pwsx3335  power 0.186  0.5 -> 0.431  Inexact Rounded

+pwsx3336  power 0.0186  0.5 -> 0.136  Inexact Rounded

+pwsx3337  power 0.187  0.5 -> 0.432  Inexact Rounded

+pwsx3338  power 0.0187  0.5 -> 0.137  Inexact Rounded

+pwsx3339  power 0.188  0.5 -> 0.434  Inexact Rounded

+pwsx3340  power 0.0188  0.5 -> 0.137  Inexact Rounded

+pwsx3341  power 0.189  0.5 -> 0.435  Inexact Rounded

+pwsx3342  power 0.0189  0.5 -> 0.137  Inexact Rounded

+pwsx3343  power 0.191  0.5 -> 0.437  Inexact Rounded

+pwsx3344  power 0.0191  0.5 -> 0.138  Inexact Rounded

+pwsx3345  power 0.192  0.5 -> 0.438  Inexact Rounded

+pwsx3346  power 0.0192  0.5 -> 0.139  Inexact Rounded

+pwsx3347  power 0.193  0.5 -> 0.439  Inexact Rounded

+pwsx3348  power 0.0193  0.5 -> 0.139  Inexact Rounded

+pwsx3349  power 0.194  0.5 -> 0.440  Inexact Rounded

+pwsx3350  power 0.0194  0.5 -> 0.139  Inexact Rounded

+pwsx3351  power 0.195  0.5 -> 0.442  Inexact Rounded

+pwsx3352  power 0.0195  0.5 -> 0.140  Inexact Rounded

+pwsx3353  power 0.196  0.5 -> 0.443  Inexact Rounded

+pwsx3354  power 0.0196  0.5 -> 0.140  Inexact Rounded

+pwsx3355  power 0.197  0.5 -> 0.444  Inexact Rounded

+pwsx3356  power 0.0197  0.5 -> 0.140  Inexact Rounded

+pwsx3357  power 0.198  0.5 -> 0.445  Inexact Rounded

+pwsx3358  power 0.0198  0.5 -> 0.141  Inexact Rounded

+pwsx3359  power 0.199  0.5 -> 0.446  Inexact Rounded

+pwsx3360  power 0.0199  0.5 -> 0.141  Inexact Rounded

+pwsx3361  power 0.201  0.5 -> 0.448  Inexact Rounded

+pwsx3362  power 0.0201  0.5 -> 0.142  Inexact Rounded

+pwsx3363  power 0.202  0.5 -> 0.449  Inexact Rounded

+pwsx3364  power 0.0202  0.5 -> 0.142  Inexact Rounded

+pwsx3365  power 0.203  0.5 -> 0.451  Inexact Rounded

+pwsx3366  power 0.0203  0.5 -> 0.142  Inexact Rounded

+pwsx3367  power 0.204  0.5 -> 0.452  Inexact Rounded

+pwsx3368  power 0.0204  0.5 -> 0.143  Inexact Rounded

+pwsx3369  power 0.205  0.5 -> 0.453  Inexact Rounded

+pwsx3370  power 0.0205  0.5 -> 0.143  Inexact Rounded

+pwsx3371  power 0.206  0.5 -> 0.454  Inexact Rounded

+pwsx3372  power 0.0206  0.5 -> 0.144  Inexact Rounded

+pwsx3373  power 0.207  0.5 -> 0.455  Inexact Rounded

+pwsx3374  power 0.0207  0.5 -> 0.144  Inexact Rounded

+pwsx3375  power 0.208  0.5 -> 0.456  Inexact Rounded

+pwsx3376  power 0.0208  0.5 -> 0.144  Inexact Rounded

+pwsx3377  power 0.209  0.5 -> 0.457  Inexact Rounded

+pwsx3378  power 0.0209  0.5 -> 0.145  Inexact Rounded

+pwsx3379  power 0.211  0.5 -> 0.459  Inexact Rounded

+pwsx3380  power 0.0211  0.5 -> 0.145  Inexact Rounded

+pwsx3381  power 0.212  0.5 -> 0.460  Inexact Rounded

+pwsx3382  power 0.0212  0.5 -> 0.146  Inexact Rounded

+pwsx3383  power 0.213  0.5 -> 0.462  Inexact Rounded

+pwsx3384  power 0.0213  0.5 -> 0.146  Inexact Rounded

+pwsx3385  power 0.214  0.5 -> 0.463  Inexact Rounded

+pwsx3386  power 0.0214  0.5 -> 0.146  Inexact Rounded

+pwsx3387  power 0.215  0.5 -> 0.464  Inexact Rounded

+pwsx3388  power 0.0215  0.5 -> 0.147  Inexact Rounded

+pwsx3389  power 0.216  0.5 -> 0.465  Inexact Rounded

+pwsx3390  power 0.0216  0.5 -> 0.147  Inexact Rounded

+pwsx3391  power 0.217  0.5 -> 0.466  Inexact Rounded

+pwsx3392  power 0.0217  0.5 -> 0.147  Inexact Rounded

+pwsx3393  power 0.218  0.5 -> 0.467  Inexact Rounded

+pwsx3394  power 0.0218  0.5 -> 0.148  Inexact Rounded

+pwsx3395  power 0.219  0.5 -> 0.468  Inexact Rounded

+pwsx3396  power 0.0219  0.5 -> 0.148  Inexact Rounded

+pwsx3397  power 0.221  0.5 -> 0.470  Inexact Rounded

+pwsx3398  power 0.0221  0.5 -> 0.149  Inexact Rounded

+pwsx3399  power 0.222  0.5 -> 0.471  Inexact Rounded

+pwsx3400  power 0.0222  0.5 -> 0.149  Inexact Rounded

+pwsx3401  power 0.223  0.5 -> 0.472  Inexact Rounded

+pwsx3402  power 0.0223  0.5 -> 0.149  Inexact Rounded

+pwsx3403  power 0.224  0.5 -> 0.473  Inexact Rounded

+pwsx3404  power 0.0224  0.5 -> 0.150  Inexact Rounded

+pwsx3405  power 0.225  0.5 -> 0.474  Inexact Rounded

+pwsx3406  power 0.0225  0.5 -> 0.150  Inexact Rounded

+pwsx3407  power 0.226  0.5 -> 0.475  Inexact Rounded

+pwsx3408  power 0.0226  0.5 -> 0.150  Inexact Rounded

+pwsx3409  power 0.227  0.5 -> 0.476  Inexact Rounded

+pwsx3410  power 0.0227  0.5 -> 0.151  Inexact Rounded

+pwsx3411  power 0.228  0.5 -> 0.477  Inexact Rounded

+pwsx3412  power 0.0228  0.5 -> 0.151  Inexact Rounded

+pwsx3413  power 0.229  0.5 -> 0.479  Inexact Rounded

+pwsx3414  power 0.0229  0.5 -> 0.151  Inexact Rounded

+pwsx3415  power 0.231  0.5 -> 0.481  Inexact Rounded

+pwsx3416  power 0.0231  0.5 -> 0.152  Inexact Rounded

+pwsx3417  power 0.232  0.5 -> 0.482  Inexact Rounded

+pwsx3418  power 0.0232  0.5 -> 0.152  Inexact Rounded

+pwsx3419  power 0.233  0.5 -> 0.483  Inexact Rounded

+pwsx3420  power 0.0233  0.5 -> 0.153  Inexact Rounded

+pwsx3421  power 0.234  0.5 -> 0.484  Inexact Rounded

+pwsx3422  power 0.0234  0.5 -> 0.153  Inexact Rounded

+pwsx3423  power 0.235  0.5 -> 0.485  Inexact Rounded

+pwsx3424  power 0.0235  0.5 -> 0.153  Inexact Rounded

+pwsx3425  power 0.236  0.5 -> 0.486  Inexact Rounded

+pwsx3426  power 0.0236  0.5 -> 0.154  Inexact Rounded

+pwsx3427  power 0.237  0.5 -> 0.487  Inexact Rounded

+pwsx3428  power 0.0237  0.5 -> 0.154  Inexact Rounded

+pwsx3429  power 0.238  0.5 -> 0.488  Inexact Rounded

+pwsx3430  power 0.0238  0.5 -> 0.154  Inexact Rounded

+pwsx3431  power 0.239  0.5 -> 0.489  Inexact Rounded

+pwsx3432  power 0.0239  0.5 -> 0.155  Inexact Rounded

+pwsx3433  power 0.241  0.5 -> 0.491  Inexact Rounded

+pwsx3434  power 0.0241  0.5 -> 0.155  Inexact Rounded

+pwsx3435  power 0.242  0.5 -> 0.492  Inexact Rounded

+pwsx3436  power 0.0242  0.5 -> 0.156  Inexact Rounded

+pwsx3437  power 0.243  0.5 -> 0.493  Inexact Rounded

+pwsx3438  power 0.0243  0.5 -> 0.156  Inexact Rounded

+pwsx3439  power 0.244  0.5 -> 0.494  Inexact Rounded

+pwsx3440  power 0.0244  0.5 -> 0.156  Inexact Rounded

+pwsx3441  power 0.245  0.5 -> 0.495  Inexact Rounded

+pwsx3442  power 0.0245  0.5 -> 0.157  Inexact Rounded

+pwsx3443  power 0.246  0.5 -> 0.496  Inexact Rounded

+pwsx3444  power 0.0246  0.5 -> 0.157  Inexact Rounded

+pwsx3445  power 0.247  0.5 -> 0.497  Inexact Rounded

+pwsx3446  power 0.0247  0.5 -> 0.157  Inexact Rounded

+pwsx3447  power 0.248  0.5 -> 0.498  Inexact Rounded

+pwsx3448  power 0.0248  0.5 -> 0.157  Inexact Rounded

+pwsx3449  power 0.249  0.5 -> 0.499  Inexact Rounded

+pwsx3450  power 0.0249  0.5 -> 0.158  Inexact Rounded

+pwsx3451  power 0.251  0.5 -> 0.501  Inexact Rounded

+pwsx3452  power 0.0251  0.5 -> 0.158  Inexact Rounded

+pwsx3453  power 0.252  0.5 -> 0.502  Inexact Rounded

+pwsx3454  power 0.0252  0.5 -> 0.159  Inexact Rounded

+pwsx3455  power 0.253  0.5 -> 0.503  Inexact Rounded

+pwsx3456  power 0.0253  0.5 -> 0.159  Inexact Rounded

+pwsx3457  power 0.254  0.5 -> 0.504  Inexact Rounded

+pwsx3458  power 0.0254  0.5 -> 0.159  Inexact Rounded

+pwsx3459  power 0.255  0.5 -> 0.505  Inexact Rounded

+pwsx3460  power 0.0255  0.5 -> 0.160  Inexact Rounded

+pwsx3461  power 0.256  0.5 -> 0.506  Inexact Rounded

+pwsx3462  power 0.0256  0.5 -> 0.160  Inexact Rounded

+pwsx3463  power 0.257  0.5 -> 0.507  Inexact Rounded

+pwsx3464  power 0.0257  0.5 -> 0.160  Inexact Rounded

+pwsx3465  power 0.258  0.5 -> 0.508  Inexact Rounded

+pwsx3466  power 0.0258  0.5 -> 0.161  Inexact Rounded

+pwsx3467  power 0.259  0.5 -> 0.509  Inexact Rounded

+pwsx3468  power 0.0259  0.5 -> 0.161  Inexact Rounded

+pwsx3469  power 0.261  0.5 -> 0.511  Inexact Rounded

+pwsx3470  power 0.0261  0.5 -> 0.162  Inexact Rounded

+pwsx3471  power 0.262  0.5 -> 0.512  Inexact Rounded

+pwsx3472  power 0.0262  0.5 -> 0.162  Inexact Rounded

+pwsx3473  power 0.263  0.5 -> 0.513  Inexact Rounded

+pwsx3474  power 0.0263  0.5 -> 0.162  Inexact Rounded

+pwsx3475  power 0.264  0.5 -> 0.514  Inexact Rounded

+pwsx3476  power 0.0264  0.5 -> 0.162  Inexact Rounded

+pwsx3477  power 0.265  0.5 -> 0.515  Inexact Rounded

+pwsx3478  power 0.0265  0.5 -> 0.163  Inexact Rounded

+pwsx3479  power 0.266  0.5 -> 0.516  Inexact Rounded

+pwsx3480  power 0.0266  0.5 -> 0.163  Inexact Rounded

+pwsx3481  power 0.267  0.5 -> 0.517  Inexact Rounded

+pwsx3482  power 0.0267  0.5 -> 0.163  Inexact Rounded

+pwsx3483  power 0.268  0.5 -> 0.518  Inexact Rounded

+pwsx3484  power 0.0268  0.5 -> 0.164  Inexact Rounded

+pwsx3485  power 0.269  0.5 -> 0.519  Inexact Rounded

+pwsx3486  power 0.0269  0.5 -> 0.164  Inexact Rounded

+pwsx3487  power 0.271  0.5 -> 0.521  Inexact Rounded

+pwsx3488  power 0.0271  0.5 -> 0.165  Inexact Rounded

+pwsx3489  power 0.272  0.5 -> 0.522  Inexact Rounded

+pwsx3490  power 0.0272  0.5 -> 0.165  Inexact Rounded

+pwsx3491  power 0.273  0.5 -> 0.522  Inexact Rounded

+pwsx3492  power 0.0273  0.5 -> 0.165  Inexact Rounded

+pwsx3493  power 0.274  0.5 -> 0.523  Inexact Rounded

+pwsx3494  power 0.0274  0.5 -> 0.166  Inexact Rounded

+pwsx3495  power 0.275  0.5 -> 0.524  Inexact Rounded

+pwsx3496  power 0.0275  0.5 -> 0.166  Inexact Rounded

+pwsx3497  power 0.276  0.5 -> 0.525  Inexact Rounded

+pwsx3498  power 0.0276  0.5 -> 0.166  Inexact Rounded

+pwsx3499  power 0.277  0.5 -> 0.526  Inexact Rounded

+pwsx3500  power 0.0277  0.5 -> 0.166  Inexact Rounded

+pwsx3501  power 0.278  0.5 -> 0.527  Inexact Rounded

+pwsx3502  power 0.0278  0.5 -> 0.167  Inexact Rounded

+pwsx3503  power 0.279  0.5 -> 0.528  Inexact Rounded

+pwsx3504  power 0.0279  0.5 -> 0.167  Inexact Rounded

+pwsx3505  power 0.281  0.5 -> 0.530  Inexact Rounded

+pwsx3506  power 0.0281  0.5 -> 0.168  Inexact Rounded

+pwsx3507  power 0.282  0.5 -> 0.531  Inexact Rounded

+pwsx3508  power 0.0282  0.5 -> 0.168  Inexact Rounded

+pwsx3509  power 0.283  0.5 -> 0.532  Inexact Rounded

+pwsx3510  power 0.0283  0.5 -> 0.168  Inexact Rounded

+pwsx3511  power 0.284  0.5 -> 0.533  Inexact Rounded

+pwsx3512  power 0.0284  0.5 -> 0.169  Inexact Rounded

+pwsx3513  power 0.285  0.5 -> 0.534  Inexact Rounded

+pwsx3514  power 0.0285  0.5 -> 0.169  Inexact Rounded

+pwsx3515  power 0.286  0.5 -> 0.535  Inexact Rounded

+pwsx3516  power 0.0286  0.5 -> 0.169  Inexact Rounded

+pwsx3517  power 0.287  0.5 -> 0.536  Inexact Rounded

+pwsx3518  power 0.0287  0.5 -> 0.169  Inexact Rounded

+pwsx3519  power 0.288  0.5 -> 0.537  Inexact Rounded

+pwsx3520  power 0.0288  0.5 -> 0.170  Inexact Rounded

+pwsx3521  power 0.289  0.5 -> 0.538  Inexact Rounded

+pwsx3522  power 0.0289  0.5 -> 0.170  Inexact Rounded

+pwsx3523  power 0.291  0.5 -> 0.539  Inexact Rounded

+pwsx3524  power 0.0291  0.5 -> 0.171  Inexact Rounded

+pwsx3525  power 0.292  0.5 -> 0.540  Inexact Rounded

+pwsx3526  power 0.0292  0.5 -> 0.171  Inexact Rounded

+pwsx3527  power 0.293  0.5 -> 0.541  Inexact Rounded

+pwsx3528  power 0.0293  0.5 -> 0.171  Inexact Rounded

+pwsx3529  power 0.294  0.5 -> 0.542  Inexact Rounded

+pwsx3530  power 0.0294  0.5 -> 0.171  Inexact Rounded

+pwsx3531  power 0.295  0.5 -> 0.543  Inexact Rounded

+pwsx3532  power 0.0295  0.5 -> 0.172  Inexact Rounded

+pwsx3533  power 0.296  0.5 -> 0.544  Inexact Rounded

+pwsx3534  power 0.0296  0.5 -> 0.172  Inexact Rounded

+pwsx3535  power 0.297  0.5 -> 0.545  Inexact Rounded

+pwsx3536  power 0.0297  0.5 -> 0.172  Inexact Rounded

+pwsx3537  power 0.298  0.5 -> 0.546  Inexact Rounded

+pwsx3538  power 0.0298  0.5 -> 0.173  Inexact Rounded

+pwsx3539  power 0.299  0.5 -> 0.547  Inexact Rounded

+pwsx3540  power 0.0299  0.5 -> 0.173  Inexact Rounded

+pwsx3541  power 0.301  0.5 -> 0.549  Inexact Rounded

+pwsx3542  power 0.0301  0.5 -> 0.173  Inexact Rounded

+pwsx3543  power 0.302  0.5 -> 0.550  Inexact Rounded

+pwsx3544  power 0.0302  0.5 -> 0.174  Inexact Rounded

+pwsx3545  power 0.303  0.5 -> 0.550  Inexact Rounded

+pwsx3546  power 0.0303  0.5 -> 0.174  Inexact Rounded

+pwsx3547  power 0.304  0.5 -> 0.551  Inexact Rounded

+pwsx3548  power 0.0304  0.5 -> 0.174  Inexact Rounded

+pwsx3549  power 0.305  0.5 -> 0.552  Inexact Rounded

+pwsx3550  power 0.0305  0.5 -> 0.175  Inexact Rounded

+pwsx3551  power 0.306  0.5 -> 0.553  Inexact Rounded

+pwsx3552  power 0.0306  0.5 -> 0.175  Inexact Rounded

+pwsx3553  power 0.307  0.5 -> 0.554  Inexact Rounded

+pwsx3554  power 0.0307  0.5 -> 0.175  Inexact Rounded

+pwsx3555  power 0.308  0.5 -> 0.555  Inexact Rounded

+pwsx3556  power 0.0308  0.5 -> 0.175  Inexact Rounded

+pwsx3557  power 0.309  0.5 -> 0.556  Inexact Rounded

+pwsx3558  power 0.0309  0.5 -> 0.176  Inexact Rounded

+pwsx3559  power 0.311  0.5 -> 0.558  Inexact Rounded

+pwsx3560  power 0.0311  0.5 -> 0.176  Inexact Rounded

+pwsx3561  power 0.312  0.5 -> 0.559  Inexact Rounded

+pwsx3562  power 0.0312  0.5 -> 0.177  Inexact Rounded

+pwsx3563  power 0.313  0.5 -> 0.559  Inexact Rounded

+pwsx3564  power 0.0313  0.5 -> 0.177  Inexact Rounded

+pwsx3565  power 0.314  0.5 -> 0.560  Inexact Rounded

+pwsx3566  power 0.0314  0.5 -> 0.177  Inexact Rounded

+pwsx3567  power 0.315  0.5 -> 0.561  Inexact Rounded

+pwsx3568  power 0.0315  0.5 -> 0.177  Inexact Rounded

+pwsx3569  power 0.316  0.5 -> 0.562  Inexact Rounded

+pwsx3570  power 0.0316  0.5 -> 0.178  Inexact Rounded

+pwsx3571  power 0.317  0.5 -> 0.563  Inexact Rounded

+pwsx3572  power 0.0317  0.5 -> 0.178  Inexact Rounded

+pwsx3573  power 0.318  0.5 -> 0.564  Inexact Rounded

+pwsx3574  power 0.0318  0.5 -> 0.178  Inexact Rounded

+pwsx3575  power 0.319  0.5 -> 0.565  Inexact Rounded

+pwsx3576  power 0.0319  0.5 -> 0.179  Inexact Rounded

+pwsx3577  power 0.321  0.5 -> 0.567  Inexact Rounded

+pwsx3578  power 0.0321  0.5 -> 0.179  Inexact Rounded

+pwsx3579  power 0.322  0.5 -> 0.567  Inexact Rounded

+pwsx3580  power 0.0322  0.5 -> 0.179  Inexact Rounded

+pwsx3581  power 0.323  0.5 -> 0.568  Inexact Rounded

+pwsx3582  power 0.0323  0.5 -> 0.180  Inexact Rounded

+pwsx3583  power 0.324  0.5 -> 0.569  Inexact Rounded

+pwsx3584  power 0.0324  0.5 -> 0.180  Inexact Rounded

+pwsx3585  power 0.325  0.5 -> 0.570  Inexact Rounded

+pwsx3586  power 0.0325  0.5 -> 0.180  Inexact Rounded

+pwsx3587  power 0.326  0.5 -> 0.571  Inexact Rounded

+pwsx3588  power 0.0326  0.5 -> 0.181  Inexact Rounded

+pwsx3589  power 0.327  0.5 -> 0.572  Inexact Rounded

+pwsx3590  power 0.0327  0.5 -> 0.181  Inexact Rounded

+pwsx3591  power 0.328  0.5 -> 0.573  Inexact Rounded

+pwsx3592  power 0.0328  0.5 -> 0.181  Inexact Rounded

+pwsx3593  power 0.329  0.5 -> 0.574  Inexact Rounded

+pwsx3594  power 0.0329  0.5 -> 0.181  Inexact Rounded

+pwsx3595  power 0.331  0.5 -> 0.575  Inexact Rounded

+pwsx3596  power 0.0331  0.5 -> 0.182  Inexact Rounded

+pwsx3597  power 0.332  0.5 -> 0.576  Inexact Rounded

+pwsx3598  power 0.0332  0.5 -> 0.182  Inexact Rounded

+pwsx3599  power 0.333  0.5 -> 0.577  Inexact Rounded

+pwsx3600  power 0.0333  0.5 -> 0.182  Inexact Rounded

+pwsx3601  power 0.334  0.5 -> 0.578  Inexact Rounded

+pwsx3602  power 0.0334  0.5 -> 0.183  Inexact Rounded

+pwsx3603  power 0.335  0.5 -> 0.579  Inexact Rounded

+pwsx3604  power 0.0335  0.5 -> 0.183  Inexact Rounded

+pwsx3605  power 0.336  0.5 -> 0.580  Inexact Rounded

+pwsx3606  power 0.0336  0.5 -> 0.183  Inexact Rounded

+pwsx3607  power 0.337  0.5 -> 0.581  Inexact Rounded

+pwsx3608  power 0.0337  0.5 -> 0.184  Inexact Rounded

+pwsx3609  power 0.338  0.5 -> 0.581  Inexact Rounded

+pwsx3610  power 0.0338  0.5 -> 0.184  Inexact Rounded

+pwsx3611  power 0.339  0.5 -> 0.582  Inexact Rounded

+pwsx3612  power 0.0339  0.5 -> 0.184  Inexact Rounded

+pwsx3613  power 0.341  0.5 -> 0.584  Inexact Rounded

+pwsx3614  power 0.0341  0.5 -> 0.185  Inexact Rounded

+pwsx3615  power 0.342  0.5 -> 0.585  Inexact Rounded

+pwsx3616  power 0.0342  0.5 -> 0.185  Inexact Rounded

+pwsx3617  power 0.343  0.5 -> 0.586  Inexact Rounded

+pwsx3618  power 0.0343  0.5 -> 0.185  Inexact Rounded

+pwsx3619  power 0.344  0.5 -> 0.587  Inexact Rounded

+pwsx3620  power 0.0344  0.5 -> 0.185  Inexact Rounded

+pwsx3621  power 0.345  0.5 -> 0.587  Inexact Rounded

+pwsx3622  power 0.0345  0.5 -> 0.186  Inexact Rounded

+pwsx3623  power 0.346  0.5 -> 0.588  Inexact Rounded

+pwsx3624  power 0.0346  0.5 -> 0.186  Inexact Rounded

+pwsx3625  power 0.347  0.5 -> 0.589  Inexact Rounded

+pwsx3626  power 0.0347  0.5 -> 0.186  Inexact Rounded

+pwsx3627  power 0.348  0.5 -> 0.590  Inexact Rounded

+pwsx3628  power 0.0348  0.5 -> 0.187  Inexact Rounded

+pwsx3629  power 0.349  0.5 -> 0.591  Inexact Rounded

+pwsx3630  power 0.0349  0.5 -> 0.187  Inexact Rounded

+pwsx3631  power 0.351  0.5 -> 0.592  Inexact Rounded

+pwsx3632  power 0.0351  0.5 -> 0.187  Inexact Rounded

+pwsx3633  power 0.352  0.5 -> 0.593  Inexact Rounded

+pwsx3634  power 0.0352  0.5 -> 0.188  Inexact Rounded

+pwsx3635  power 0.353  0.5 -> 0.594  Inexact Rounded

+pwsx3636  power 0.0353  0.5 -> 0.188  Inexact Rounded

+pwsx3637  power 0.354  0.5 -> 0.595  Inexact Rounded

+pwsx3638  power 0.0354  0.5 -> 0.188  Inexact Rounded

+pwsx3639  power 0.355  0.5 -> 0.596  Inexact Rounded

+pwsx3640  power 0.0355  0.5 -> 0.188  Inexact Rounded

+pwsx3641  power 0.356  0.5 -> 0.597  Inexact Rounded

+pwsx3642  power 0.0356  0.5 -> 0.189  Inexact Rounded

+pwsx3643  power 0.357  0.5 -> 0.597  Inexact Rounded

+pwsx3644  power 0.0357  0.5 -> 0.189  Inexact Rounded

+pwsx3645  power 0.358  0.5 -> 0.598  Inexact Rounded

+pwsx3646  power 0.0358  0.5 -> 0.189  Inexact Rounded

+pwsx3647  power 0.359  0.5 -> 0.599  Inexact Rounded

+pwsx3648  power 0.0359  0.5 -> 0.189  Inexact Rounded

+pwsx3649  power 0.361  0.5 -> 0.601  Inexact Rounded

+pwsx3650  power 0.0361  0.5 -> 0.190  Inexact Rounded

+pwsx3651  power 0.362  0.5 -> 0.602  Inexact Rounded

+pwsx3652  power 0.0362  0.5 -> 0.190  Inexact Rounded

+pwsx3653  power 0.363  0.5 -> 0.602  Inexact Rounded

+pwsx3654  power 0.0363  0.5 -> 0.191  Inexact Rounded

+pwsx3655  power 0.364  0.5 -> 0.603  Inexact Rounded

+pwsx3656  power 0.0364  0.5 -> 0.191  Inexact Rounded

+pwsx3657  power 0.365  0.5 -> 0.604  Inexact Rounded

+pwsx3658  power 0.0365  0.5 -> 0.191  Inexact Rounded

+pwsx3659  power 0.366  0.5 -> 0.605  Inexact Rounded

+pwsx3660  power 0.0366  0.5 -> 0.191  Inexact Rounded

+pwsx3661  power 0.367  0.5 -> 0.606  Inexact Rounded

+pwsx3662  power 0.0367  0.5 -> 0.192  Inexact Rounded

+pwsx3663  power 0.368  0.5 -> 0.607  Inexact Rounded

+pwsx3664  power 0.0368  0.5 -> 0.192  Inexact Rounded

+pwsx3665  power 0.369  0.5 -> 0.607  Inexact Rounded

+pwsx3666  power 0.0369  0.5 -> 0.192  Inexact Rounded

+pwsx3667  power 0.371  0.5 -> 0.609  Inexact Rounded

+pwsx3668  power 0.0371  0.5 -> 0.193  Inexact Rounded

+pwsx3669  power 0.372  0.5 -> 0.610  Inexact Rounded

+pwsx3670  power 0.0372  0.5 -> 0.193  Inexact Rounded

+pwsx3671  power 0.373  0.5 -> 0.611  Inexact Rounded

+pwsx3672  power 0.0373  0.5 -> 0.193  Inexact Rounded

+pwsx3673  power 0.374  0.5 -> 0.612  Inexact Rounded

+pwsx3674  power 0.0374  0.5 -> 0.193  Inexact Rounded

+pwsx3675  power 0.375  0.5 -> 0.612  Inexact Rounded

+pwsx3676  power 0.0375  0.5 -> 0.194  Inexact Rounded

+pwsx3677  power 0.376  0.5 -> 0.613  Inexact Rounded

+pwsx3678  power 0.0376  0.5 -> 0.194  Inexact Rounded

+pwsx3679  power 0.377  0.5 -> 0.614  Inexact Rounded

+pwsx3680  power 0.0377  0.5 -> 0.194  Inexact Rounded

+pwsx3681  power 0.378  0.5 -> 0.615  Inexact Rounded

+pwsx3682  power 0.0378  0.5 -> 0.194  Inexact Rounded

+pwsx3683  power 0.379  0.5 -> 0.616  Inexact Rounded

+pwsx3684  power 0.0379  0.5 -> 0.195  Inexact Rounded

+pwsx3685  power 0.381  0.5 -> 0.617  Inexact Rounded

+pwsx3686  power 0.0381  0.5 -> 0.195  Inexact Rounded

+pwsx3687  power 0.382  0.5 -> 0.618  Inexact Rounded

+pwsx3688  power 0.0382  0.5 -> 0.195  Inexact Rounded

+pwsx3689  power 0.383  0.5 -> 0.619  Inexact Rounded

+pwsx3690  power 0.0383  0.5 -> 0.196  Inexact Rounded

+pwsx3691  power 0.384  0.5 -> 0.620  Inexact Rounded

+pwsx3692  power 0.0384  0.5 -> 0.196  Inexact Rounded

+pwsx3693  power 0.385  0.5 -> 0.620  Inexact Rounded

+pwsx3694  power 0.0385  0.5 -> 0.196  Inexact Rounded

+pwsx3695  power 0.386  0.5 -> 0.621  Inexact Rounded

+pwsx3696  power 0.0386  0.5 -> 0.196  Inexact Rounded

+pwsx3697  power 0.387  0.5 -> 0.622  Inexact Rounded

+pwsx3698  power 0.0387  0.5 -> 0.197  Inexact Rounded

+pwsx3699  power 0.388  0.5 -> 0.623  Inexact Rounded

+pwsx3700  power 0.0388  0.5 -> 0.197  Inexact Rounded

+pwsx3701  power 0.389  0.5 -> 0.624  Inexact Rounded

+pwsx3702  power 0.0389  0.5 -> 0.197  Inexact Rounded

+pwsx3703  power 0.391  0.5 -> 0.625  Inexact Rounded

+pwsx3704  power 0.0391  0.5 -> 0.198  Inexact Rounded

+pwsx3705  power 0.392  0.5 -> 0.626  Inexact Rounded

+pwsx3706  power 0.0392  0.5 -> 0.198  Inexact Rounded

+pwsx3707  power 0.393  0.5 -> 0.627  Inexact Rounded

+pwsx3708  power 0.0393  0.5 -> 0.198  Inexact Rounded

+pwsx3709  power 0.394  0.5 -> 0.628  Inexact Rounded

+pwsx3710  power 0.0394  0.5 -> 0.198  Inexact Rounded

+pwsx3711  power 0.395  0.5 -> 0.628  Inexact Rounded

+pwsx3712  power 0.0395  0.5 -> 0.199  Inexact Rounded

+pwsx3713  power 0.396  0.5 -> 0.629  Inexact Rounded

+pwsx3714  power 0.0396  0.5 -> 0.199  Inexact Rounded

+pwsx3715  power 0.397  0.5 -> 0.630  Inexact Rounded

+pwsx3716  power 0.0397  0.5 -> 0.199  Inexact Rounded

+pwsx3717  power 0.398  0.5 -> 0.631  Inexact Rounded

+pwsx3718  power 0.0398  0.5 -> 0.199  Inexact Rounded

+pwsx3719  power 0.399  0.5 -> 0.632  Inexact Rounded

+pwsx3720  power 0.0399  0.5 -> 0.200  Inexact Rounded

+pwsx3721  power 0.401  0.5 -> 0.633  Inexact Rounded

+pwsx3722  power 0.0401  0.5 -> 0.200  Inexact Rounded

+pwsx3723  power 0.402  0.5 -> 0.634  Inexact Rounded

+pwsx3724  power 0.0402  0.5 -> 0.200  Inexact Rounded

+pwsx3725  power 0.403  0.5 -> 0.635  Inexact Rounded

+pwsx3726  power 0.0403  0.5 -> 0.201  Inexact Rounded

+pwsx3727  power 0.404  0.5 -> 0.636  Inexact Rounded

+pwsx3728  power 0.0404  0.5 -> 0.201  Inexact Rounded

+pwsx3729  power 0.405  0.5 -> 0.636  Inexact Rounded

+pwsx3730  power 0.0405  0.5 -> 0.201  Inexact Rounded

+pwsx3731  power 0.406  0.5 -> 0.637  Inexact Rounded

+pwsx3732  power 0.0406  0.5 -> 0.201  Inexact Rounded

+pwsx3733  power 0.407  0.5 -> 0.638  Inexact Rounded

+pwsx3734  power 0.0407  0.5 -> 0.202  Inexact Rounded

+pwsx3735  power 0.408  0.5 -> 0.639  Inexact Rounded

+pwsx3736  power 0.0408  0.5 -> 0.202  Inexact Rounded

+pwsx3737  power 0.409  0.5 -> 0.640  Inexact Rounded

+pwsx3738  power 0.0409  0.5 -> 0.202  Inexact Rounded

+pwsx3739  power 0.411  0.5 -> 0.641  Inexact Rounded

+pwsx3740  power 0.0411  0.5 -> 0.203  Inexact Rounded

+pwsx3741  power 0.412  0.5 -> 0.642  Inexact Rounded

+pwsx3742  power 0.0412  0.5 -> 0.203  Inexact Rounded

+pwsx3743  power 0.413  0.5 -> 0.643  Inexact Rounded

+pwsx3744  power 0.0413  0.5 -> 0.203  Inexact Rounded

+pwsx3745  power 0.414  0.5 -> 0.643  Inexact Rounded

+pwsx3746  power 0.0414  0.5 -> 0.203  Inexact Rounded

+pwsx3747  power 0.415  0.5 -> 0.644  Inexact Rounded

+pwsx3748  power 0.0415  0.5 -> 0.204  Inexact Rounded

+pwsx3749  power 0.416  0.5 -> 0.645  Inexact Rounded

+pwsx3750  power 0.0416  0.5 -> 0.204  Inexact Rounded

+pwsx3751  power 0.417  0.5 -> 0.646  Inexact Rounded

+pwsx3752  power 0.0417  0.5 -> 0.204  Inexact Rounded

+pwsx3753  power 0.418  0.5 -> 0.647  Inexact Rounded

+pwsx3754  power 0.0418  0.5 -> 0.204  Inexact Rounded

+pwsx3755  power 0.419  0.5 -> 0.647  Inexact Rounded

+pwsx3756  power 0.0419  0.5 -> 0.205  Inexact Rounded

+pwsx3757  power 0.421  0.5 -> 0.649  Inexact Rounded

+pwsx3758  power 0.0421  0.5 -> 0.205  Inexact Rounded

+pwsx3759  power 0.422  0.5 -> 0.650  Inexact Rounded

+pwsx3760  power 0.0422  0.5 -> 0.205  Inexact Rounded

+pwsx3761  power 0.423  0.5 -> 0.650  Inexact Rounded

+pwsx3762  power 0.0423  0.5 -> 0.206  Inexact Rounded

+pwsx3763  power 0.424  0.5 -> 0.651  Inexact Rounded

+pwsx3764  power 0.0424  0.5 -> 0.206  Inexact Rounded

+pwsx3765  power 0.425  0.5 -> 0.652  Inexact Rounded

+pwsx3766  power 0.0425  0.5 -> 0.206  Inexact Rounded

+pwsx3767  power 0.426  0.5 -> 0.653  Inexact Rounded

+pwsx3768  power 0.0426  0.5 -> 0.206  Inexact Rounded

+pwsx3769  power 0.427  0.5 -> 0.653  Inexact Rounded

+pwsx3770  power 0.0427  0.5 -> 0.207  Inexact Rounded

+pwsx3771  power 0.428  0.5 -> 0.654  Inexact Rounded

+pwsx3772  power 0.0428  0.5 -> 0.207  Inexact Rounded

+pwsx3773  power 0.429  0.5 -> 0.655  Inexact Rounded

+pwsx3774  power 0.0429  0.5 -> 0.207  Inexact Rounded

+pwsx3775  power 0.431  0.5 -> 0.657  Inexact Rounded

+pwsx3776  power 0.0431  0.5 -> 0.208  Inexact Rounded

+pwsx3777  power 0.432  0.5 -> 0.657  Inexact Rounded

+pwsx3778  power 0.0432  0.5 -> 0.208  Inexact Rounded

+pwsx3779  power 0.433  0.5 -> 0.658  Inexact Rounded

+pwsx3780  power 0.0433  0.5 -> 0.208  Inexact Rounded

+pwsx3781  power 0.434  0.5 -> 0.659  Inexact Rounded

+pwsx3782  power 0.0434  0.5 -> 0.208  Inexact Rounded

+pwsx3783  power 0.435  0.5 -> 0.660  Inexact Rounded

+pwsx3784  power 0.0435  0.5 -> 0.209  Inexact Rounded

+pwsx3785  power 0.436  0.5 -> 0.660  Inexact Rounded

+pwsx3786  power 0.0436  0.5 -> 0.209  Inexact Rounded

+pwsx3787  power 0.437  0.5 -> 0.661  Inexact Rounded

+pwsx3788  power 0.0437  0.5 -> 0.209  Inexact Rounded

+pwsx3789  power 0.438  0.5 -> 0.662  Inexact Rounded

+pwsx3790  power 0.0438  0.5 -> 0.209  Inexact Rounded

+pwsx3791  power 0.439  0.5 -> 0.663  Inexact Rounded

+pwsx3792  power 0.0439  0.5 -> 0.210  Inexact Rounded

+pwsx3793  power 0.441  0.5 -> 0.664  Inexact Rounded

+pwsx3794  power 0.0441  0.5 -> 0.210  Inexact Rounded

+pwsx3795  power 0.442  0.5 -> 0.665  Inexact Rounded

+pwsx3796  power 0.0442  0.5 -> 0.210  Inexact Rounded

+pwsx3797  power 0.443  0.5 -> 0.666  Inexact Rounded

+pwsx3798  power 0.0443  0.5 -> 0.210  Inexact Rounded

+pwsx3799  power 0.444  0.5 -> 0.666  Inexact Rounded

+pwsx3800  power 0.0444  0.5 -> 0.211  Inexact Rounded

+pwsx3801  power 0.445  0.5 -> 0.667  Inexact Rounded

+pwsx3802  power 0.0445  0.5 -> 0.211  Inexact Rounded

+pwsx3803  power 0.446  0.5 -> 0.668  Inexact Rounded

+pwsx3804  power 0.0446  0.5 -> 0.211  Inexact Rounded

+pwsx3805  power 0.447  0.5 -> 0.669  Inexact Rounded

+pwsx3806  power 0.0447  0.5 -> 0.211  Inexact Rounded

+pwsx3807  power 0.448  0.5 -> 0.669  Inexact Rounded

+pwsx3808  power 0.0448  0.5 -> 0.212  Inexact Rounded

+pwsx3809  power 0.449  0.5 -> 0.670  Inexact Rounded

+pwsx3810  power 0.0449  0.5 -> 0.212  Inexact Rounded

+pwsx3811  power 0.451  0.5 -> 0.672  Inexact Rounded

+pwsx3812  power 0.0451  0.5 -> 0.212  Inexact Rounded

+pwsx3813  power 0.452  0.5 -> 0.672  Inexact Rounded

+pwsx3814  power 0.0452  0.5 -> 0.213  Inexact Rounded

+pwsx3815  power 0.453  0.5 -> 0.673  Inexact Rounded

+pwsx3816  power 0.0453  0.5 -> 0.213  Inexact Rounded

+pwsx3817  power 0.454  0.5 -> 0.674  Inexact Rounded

+pwsx3818  power 0.0454  0.5 -> 0.213  Inexact Rounded

+pwsx3819  power 0.455  0.5 -> 0.675  Inexact Rounded

+pwsx3820  power 0.0455  0.5 -> 0.213  Inexact Rounded

+pwsx3821  power 0.456  0.5 -> 0.675  Inexact Rounded

+pwsx3822  power 0.0456  0.5 -> 0.214  Inexact Rounded

+pwsx3823  power 0.457  0.5 -> 0.676  Inexact Rounded

+pwsx3824  power 0.0457  0.5 -> 0.214  Inexact Rounded

+pwsx3825  power 0.458  0.5 -> 0.677  Inexact Rounded

+pwsx3826  power 0.0458  0.5 -> 0.214  Inexact Rounded

+pwsx3827  power 0.459  0.5 -> 0.677  Inexact Rounded

+pwsx3828  power 0.0459  0.5 -> 0.214  Inexact Rounded

+pwsx3829  power 0.461  0.5 -> 0.679  Inexact Rounded

+pwsx3830  power 0.0461  0.5 -> 0.215  Inexact Rounded

+pwsx3831  power 0.462  0.5 -> 0.680  Inexact Rounded

+pwsx3832  power 0.0462  0.5 -> 0.215  Inexact Rounded

+pwsx3833  power 0.463  0.5 -> 0.680  Inexact Rounded

+pwsx3834  power 0.0463  0.5 -> 0.215  Inexact Rounded

+pwsx3835  power 0.464  0.5 -> 0.681  Inexact Rounded

+pwsx3836  power 0.0464  0.5 -> 0.215  Inexact Rounded

+pwsx3837  power 0.465  0.5 -> 0.682  Inexact Rounded

+pwsx3838  power 0.0465  0.5 -> 0.216  Inexact Rounded

+pwsx3839  power 0.466  0.5 -> 0.683  Inexact Rounded

+pwsx3840  power 0.0466  0.5 -> 0.216  Inexact Rounded

+pwsx3841  power 0.467  0.5 -> 0.683  Inexact Rounded

+pwsx3842  power 0.0467  0.5 -> 0.216  Inexact Rounded

+pwsx3843  power 0.468  0.5 -> 0.684  Inexact Rounded

+pwsx3844  power 0.0468  0.5 -> 0.216  Inexact Rounded

+pwsx3845  power 0.469  0.5 -> 0.685  Inexact Rounded

+pwsx3846  power 0.0469  0.5 -> 0.217  Inexact Rounded

+pwsx3847  power 0.471  0.5 -> 0.686  Inexact Rounded

+pwsx3848  power 0.0471  0.5 -> 0.217  Inexact Rounded

+pwsx3849  power 0.472  0.5 -> 0.687  Inexact Rounded

+pwsx3850  power 0.0472  0.5 -> 0.217  Inexact Rounded

+pwsx3851  power 0.473  0.5 -> 0.688  Inexact Rounded

+pwsx3852  power 0.0473  0.5 -> 0.217  Inexact Rounded

+pwsx3853  power 0.474  0.5 -> 0.688  Inexact Rounded

+pwsx3854  power 0.0474  0.5 -> 0.218  Inexact Rounded

+pwsx3855  power 0.475  0.5 -> 0.689  Inexact Rounded

+pwsx3856  power 0.0475  0.5 -> 0.218  Inexact Rounded

+pwsx3857  power 0.476  0.5 -> 0.690  Inexact Rounded

+pwsx3858  power 0.0476  0.5 -> 0.218  Inexact Rounded

+pwsx3859  power 0.477  0.5 -> 0.691  Inexact Rounded

+pwsx3860  power 0.0477  0.5 -> 0.218  Inexact Rounded

+pwsx3861  power 0.478  0.5 -> 0.691  Inexact Rounded

+pwsx3862  power 0.0478  0.5 -> 0.219  Inexact Rounded

+pwsx3863  power 0.479  0.5 -> 0.692  Inexact Rounded

+pwsx3864  power 0.0479  0.5 -> 0.219  Inexact Rounded

+pwsx3865  power 0.481  0.5 -> 0.694  Inexact Rounded

+pwsx3866  power 0.0481  0.5 -> 0.219  Inexact Rounded

+pwsx3867  power 0.482  0.5 -> 0.694  Inexact Rounded

+pwsx3868  power 0.0482  0.5 -> 0.220  Inexact Rounded

+pwsx3869  power 0.483  0.5 -> 0.695  Inexact Rounded

+pwsx3870  power 0.0483  0.5 -> 0.220  Inexact Rounded

+pwsx3871  power 0.484  0.5 -> 0.696  Inexact Rounded

+pwsx3872  power 0.0484  0.5 -> 0.220  Inexact Rounded

+pwsx3873  power 0.485  0.5 -> 0.696  Inexact Rounded

+pwsx3874  power 0.0485  0.5 -> 0.220  Inexact Rounded

+pwsx3875  power 0.486  0.5 -> 0.697  Inexact Rounded

+pwsx3876  power 0.0486  0.5 -> 0.220  Inexact Rounded

+pwsx3877  power 0.487  0.5 -> 0.698  Inexact Rounded

+pwsx3878  power 0.0487  0.5 -> 0.221  Inexact Rounded

+pwsx3879  power 0.488  0.5 -> 0.699  Inexact Rounded

+pwsx3880  power 0.0488  0.5 -> 0.221  Inexact Rounded

+pwsx3881  power 0.489  0.5 -> 0.699  Inexact Rounded

+pwsx3882  power 0.0489  0.5 -> 0.221  Inexact Rounded

+pwsx3883  power 0.491  0.5 -> 0.701  Inexact Rounded

+pwsx3884  power 0.0491  0.5 -> 0.222  Inexact Rounded

+pwsx3885  power 0.492  0.5 -> 0.701  Inexact Rounded

+pwsx3886  power 0.0492  0.5 -> 0.222  Inexact Rounded

+pwsx3887  power 0.493  0.5 -> 0.702  Inexact Rounded

+pwsx3888  power 0.0493  0.5 -> 0.222  Inexact Rounded

+pwsx3889  power 0.494  0.5 -> 0.703  Inexact Rounded

+pwsx3890  power 0.0494  0.5 -> 0.222  Inexact Rounded

+pwsx3891  power 0.495  0.5 -> 0.704  Inexact Rounded

+pwsx3892  power 0.0495  0.5 -> 0.222  Inexact Rounded

+pwsx3893  power 0.496  0.5 -> 0.704  Inexact Rounded

+pwsx3894  power 0.0496  0.5 -> 0.223  Inexact Rounded

+pwsx3895  power 0.497  0.5 -> 0.705  Inexact Rounded

+pwsx3896  power 0.0497  0.5 -> 0.223  Inexact Rounded

+pwsx3897  power 0.498  0.5 -> 0.706  Inexact Rounded

+pwsx3898  power 0.0498  0.5 -> 0.223  Inexact Rounded

+pwsx3899  power 0.499  0.5 -> 0.706  Inexact Rounded

+pwsx3900  power 0.0499  0.5 -> 0.223  Inexact Rounded

+pwsx3901  power 0.501  0.5 -> 0.708  Inexact Rounded

+pwsx3902  power 0.0501  0.5 -> 0.224  Inexact Rounded

+pwsx3903  power 0.502  0.5 -> 0.709  Inexact Rounded

+pwsx3904  power 0.0502  0.5 -> 0.224  Inexact Rounded

+pwsx3905  power 0.503  0.5 -> 0.709  Inexact Rounded

+pwsx3906  power 0.0503  0.5 -> 0.224  Inexact Rounded

+pwsx3907  power 0.504  0.5 -> 0.710  Inexact Rounded

+pwsx3908  power 0.0504  0.5 -> 0.224  Inexact Rounded

+pwsx3909  power 0.505  0.5 -> 0.711  Inexact Rounded

+pwsx3910  power 0.0505  0.5 -> 0.225  Inexact Rounded

+pwsx3911  power 0.506  0.5 -> 0.711  Inexact Rounded

+pwsx3912  power 0.0506  0.5 -> 0.225  Inexact Rounded

+pwsx3913  power 0.507  0.5 -> 0.712  Inexact Rounded

+pwsx3914  power 0.0507  0.5 -> 0.225  Inexact Rounded

+pwsx3915  power 0.508  0.5 -> 0.713  Inexact Rounded

+pwsx3916  power 0.0508  0.5 -> 0.225  Inexact Rounded

+pwsx3917  power 0.509  0.5 -> 0.713  Inexact Rounded

+pwsx3918  power 0.0509  0.5 -> 0.226  Inexact Rounded

+pwsx3919  power 0.511  0.5 -> 0.715  Inexact Rounded

+pwsx3920  power 0.0511  0.5 -> 0.226  Inexact Rounded

+pwsx3921  power 0.512  0.5 -> 0.716  Inexact Rounded

+pwsx3922  power 0.0512  0.5 -> 0.226  Inexact Rounded

+pwsx3923  power 0.513  0.5 -> 0.716  Inexact Rounded

+pwsx3924  power 0.0513  0.5 -> 0.226  Inexact Rounded

+pwsx3925  power 0.514  0.5 -> 0.717  Inexact Rounded

+pwsx3926  power 0.0514  0.5 -> 0.227  Inexact Rounded

+pwsx3927  power 0.515  0.5 -> 0.718  Inexact Rounded

+pwsx3928  power 0.0515  0.5 -> 0.227  Inexact Rounded

+pwsx3929  power 0.516  0.5 -> 0.718  Inexact Rounded

+pwsx3930  power 0.0516  0.5 -> 0.227  Inexact Rounded

+pwsx3931  power 0.517  0.5 -> 0.719  Inexact Rounded

+pwsx3932  power 0.0517  0.5 -> 0.227  Inexact Rounded

+pwsx3933  power 0.518  0.5 -> 0.720  Inexact Rounded

+pwsx3934  power 0.0518  0.5 -> 0.228  Inexact Rounded

+pwsx3935  power 0.519  0.5 -> 0.720  Inexact Rounded

+pwsx3936  power 0.0519  0.5 -> 0.228  Inexact Rounded

+pwsx3937  power 0.521  0.5 -> 0.722  Inexact Rounded

+pwsx3938  power 0.0521  0.5 -> 0.228  Inexact Rounded

+pwsx3939  power 0.522  0.5 -> 0.722  Inexact Rounded

+pwsx3940  power 0.0522  0.5 -> 0.228  Inexact Rounded

+pwsx3941  power 0.523  0.5 -> 0.723  Inexact Rounded

+pwsx3942  power 0.0523  0.5 -> 0.229  Inexact Rounded

+pwsx3943  power 0.524  0.5 -> 0.724  Inexact Rounded

+pwsx3944  power 0.0524  0.5 -> 0.229  Inexact Rounded

+pwsx3945  power 0.525  0.5 -> 0.725  Inexact Rounded

+pwsx3946  power 0.0525  0.5 -> 0.229  Inexact Rounded

+pwsx3947  power 0.526  0.5 -> 0.725  Inexact Rounded

+pwsx3948  power 0.0526  0.5 -> 0.229  Inexact Rounded

+pwsx3949  power 0.527  0.5 -> 0.726  Inexact Rounded

+pwsx3950  power 0.0527  0.5 -> 0.230  Inexact Rounded

+pwsx3951  power 0.528  0.5 -> 0.727  Inexact Rounded

+pwsx3952  power 0.0528  0.5 -> 0.230  Inexact Rounded

+pwsx3953  power 0.529  0.5 -> 0.727  Inexact Rounded

+pwsx3954  power 0.0529  0.5 -> 0.230  Inexact Rounded

+pwsx3955  power 0.531  0.5 -> 0.729  Inexact Rounded

+pwsx3956  power 0.0531  0.5 -> 0.230  Inexact Rounded

+pwsx3957  power 0.532  0.5 -> 0.729  Inexact Rounded

+pwsx3958  power 0.0532  0.5 -> 0.231  Inexact Rounded

+pwsx3959  power 0.533  0.5 -> 0.730  Inexact Rounded

+pwsx3960  power 0.0533  0.5 -> 0.231  Inexact Rounded

+pwsx3961  power 0.534  0.5 -> 0.731  Inexact Rounded

+pwsx3962  power 0.0534  0.5 -> 0.231  Inexact Rounded

+pwsx3963  power 0.535  0.5 -> 0.731  Inexact Rounded

+pwsx3964  power 0.0535  0.5 -> 0.231  Inexact Rounded

+pwsx3965  power 0.536  0.5 -> 0.732  Inexact Rounded

+pwsx3966  power 0.0536  0.5 -> 0.232  Inexact Rounded

+pwsx3967  power 0.537  0.5 -> 0.733  Inexact Rounded

+pwsx3968  power 0.0537  0.5 -> 0.232  Inexact Rounded

+pwsx3969  power 0.538  0.5 -> 0.733  Inexact Rounded

+pwsx3970  power 0.0538  0.5 -> 0.232  Inexact Rounded

+pwsx3971  power 0.539  0.5 -> 0.734  Inexact Rounded

+pwsx3972  power 0.0539  0.5 -> 0.232  Inexact Rounded

+pwsx3973  power 0.541  0.5 -> 0.736  Inexact Rounded

+pwsx3974  power 0.0541  0.5 -> 0.233  Inexact Rounded

+pwsx3975  power 0.542  0.5 -> 0.736  Inexact Rounded

+pwsx3976  power 0.0542  0.5 -> 0.233  Inexact Rounded

+pwsx3977  power 0.543  0.5 -> 0.737  Inexact Rounded

+pwsx3978  power 0.0543  0.5 -> 0.233  Inexact Rounded

+pwsx3979  power 0.544  0.5 -> 0.738  Inexact Rounded

+pwsx3980  power 0.0544  0.5 -> 0.233  Inexact Rounded

+pwsx3981  power 0.545  0.5 -> 0.738  Inexact Rounded

+pwsx3982  power 0.0545  0.5 -> 0.233  Inexact Rounded

+pwsx3983  power 0.546  0.5 -> 0.739  Inexact Rounded

+pwsx3984  power 0.0546  0.5 -> 0.234  Inexact Rounded

+pwsx3985  power 0.547  0.5 -> 0.740  Inexact Rounded

+pwsx3986  power 0.0547  0.5 -> 0.234  Inexact Rounded

+pwsx3987  power 0.548  0.5 -> 0.740  Inexact Rounded

+pwsx3988  power 0.0548  0.5 -> 0.234  Inexact Rounded

+pwsx3989  power 0.549  0.5 -> 0.741  Inexact Rounded

+pwsx3990  power 0.0549  0.5 -> 0.234  Inexact Rounded

+pwsx3991  power 0.551  0.5 -> 0.742  Inexact Rounded

+pwsx3992  power 0.0551  0.5 -> 0.235  Inexact Rounded

+pwsx3993  power 0.552  0.5 -> 0.743  Inexact Rounded

+pwsx3994  power 0.0552  0.5 -> 0.235  Inexact Rounded

+pwsx3995  power 0.553  0.5 -> 0.744  Inexact Rounded

+pwsx3996  power 0.0553  0.5 -> 0.235  Inexact Rounded

+pwsx3997  power 0.554  0.5 -> 0.744  Inexact Rounded

+pwsx3998  power 0.0554  0.5 -> 0.235  Inexact Rounded

+pwsx3999  power 0.555  0.5 -> 0.745  Inexact Rounded

+pwsx4000  power 0.0555  0.5 -> 0.236  Inexact Rounded

+pwsx4001  power 0.556  0.5 -> 0.746  Inexact Rounded

+pwsx4002  power 0.0556  0.5 -> 0.236  Inexact Rounded

+pwsx4003  power 0.557  0.5 -> 0.746  Inexact Rounded

+pwsx4004  power 0.0557  0.5 -> 0.236  Inexact Rounded

+pwsx4005  power 0.558  0.5 -> 0.747  Inexact Rounded

+pwsx4006  power 0.0558  0.5 -> 0.236  Inexact Rounded

+pwsx4007  power 0.559  0.5 -> 0.748  Inexact Rounded

+pwsx4008  power 0.0559  0.5 -> 0.236  Inexact Rounded

+pwsx4009  power 0.561  0.5 -> 0.749  Inexact Rounded

+pwsx4010  power 0.0561  0.5 -> 0.237  Inexact Rounded

+pwsx4011  power 0.562  0.5 -> 0.750  Inexact Rounded

+pwsx4012  power 0.0562  0.5 -> 0.237  Inexact Rounded

+pwsx4013  power 0.563  0.5 -> 0.750  Inexact Rounded

+pwsx4014  power 0.0563  0.5 -> 0.237  Inexact Rounded

+pwsx4015  power 0.564  0.5 -> 0.751  Inexact Rounded

+pwsx4016  power 0.0564  0.5 -> 0.237  Inexact Rounded

+pwsx4017  power 0.565  0.5 -> 0.752  Inexact Rounded

+pwsx4018  power 0.0565  0.5 -> 0.238  Inexact Rounded

+pwsx4019  power 0.566  0.5 -> 0.752  Inexact Rounded

+pwsx4020  power 0.0566  0.5 -> 0.238  Inexact Rounded

+pwsx4021  power 0.567  0.5 -> 0.753  Inexact Rounded

+pwsx4022  power 0.0567  0.5 -> 0.238  Inexact Rounded

+pwsx4023  power 0.568  0.5 -> 0.754  Inexact Rounded

+pwsx4024  power 0.0568  0.5 -> 0.238  Inexact Rounded

+pwsx4025  power 0.569  0.5 -> 0.754  Inexact Rounded

+pwsx4026  power 0.0569  0.5 -> 0.239  Inexact Rounded

+pwsx4027  power 0.571  0.5 -> 0.756  Inexact Rounded

+pwsx4028  power 0.0571  0.5 -> 0.239  Inexact Rounded

+pwsx4029  power 0.572  0.5 -> 0.756  Inexact Rounded

+pwsx4030  power 0.0572  0.5 -> 0.239  Inexact Rounded

+pwsx4031  power 0.573  0.5 -> 0.757  Inexact Rounded

+pwsx4032  power 0.0573  0.5 -> 0.239  Inexact Rounded

+pwsx4033  power 0.574  0.5 -> 0.758  Inexact Rounded

+pwsx4034  power 0.0574  0.5 -> 0.240  Inexact Rounded

+pwsx4035  power 0.575  0.5 -> 0.758  Inexact Rounded

+pwsx4036  power 0.0575  0.5 -> 0.240  Inexact Rounded

+pwsx4037  power 0.576  0.5 -> 0.759  Inexact Rounded

+pwsx4038  power 0.0576  0.5 -> 0.240  Inexact Rounded

+pwsx4039  power 0.577  0.5 -> 0.760  Inexact Rounded

+pwsx4040  power 0.0577  0.5 -> 0.240  Inexact Rounded

+pwsx4041  power 0.578  0.5 -> 0.760  Inexact Rounded

+pwsx4042  power 0.0578  0.5 -> 0.240  Inexact Rounded

+pwsx4043  power 0.579  0.5 -> 0.761  Inexact Rounded

+pwsx4044  power 0.0579  0.5 -> 0.241  Inexact Rounded

+pwsx4045  power 0.581  0.5 -> 0.762  Inexact Rounded

+pwsx4046  power 0.0581  0.5 -> 0.241  Inexact Rounded

+pwsx4047  power 0.582  0.5 -> 0.763  Inexact Rounded

+pwsx4048  power 0.0582  0.5 -> 0.241  Inexact Rounded

+pwsx4049  power 0.583  0.5 -> 0.764  Inexact Rounded

+pwsx4050  power 0.0583  0.5 -> 0.241  Inexact Rounded

+pwsx4051  power 0.584  0.5 -> 0.764  Inexact Rounded

+pwsx4052  power 0.0584  0.5 -> 0.242  Inexact Rounded

+pwsx4053  power 0.585  0.5 -> 0.765  Inexact Rounded

+pwsx4054  power 0.0585  0.5 -> 0.242  Inexact Rounded

+pwsx4055  power 0.586  0.5 -> 0.766  Inexact Rounded

+pwsx4056  power 0.0586  0.5 -> 0.242  Inexact Rounded

+pwsx4057  power 0.587  0.5 -> 0.766  Inexact Rounded

+pwsx4058  power 0.0587  0.5 -> 0.242  Inexact Rounded

+pwsx4059  power 0.588  0.5 -> 0.767  Inexact Rounded

+pwsx4060  power 0.0588  0.5 -> 0.242  Inexact Rounded

+pwsx4061  power 0.589  0.5 -> 0.767  Inexact Rounded

+pwsx4062  power 0.0589  0.5 -> 0.243  Inexact Rounded

+pwsx4063  power 0.591  0.5 -> 0.769  Inexact Rounded

+pwsx4064  power 0.0591  0.5 -> 0.243  Inexact Rounded

+pwsx4065  power 0.592  0.5 -> 0.769  Inexact Rounded

+pwsx4066  power 0.0592  0.5 -> 0.243  Inexact Rounded

+pwsx4067  power 0.593  0.5 -> 0.770  Inexact Rounded

+pwsx4068  power 0.0593  0.5 -> 0.244  Inexact Rounded

+pwsx4069  power 0.594  0.5 -> 0.771  Inexact Rounded

+pwsx4070  power 0.0594  0.5 -> 0.244  Inexact Rounded

+pwsx4071  power 0.595  0.5 -> 0.771  Inexact Rounded

+pwsx4072  power 0.0595  0.5 -> 0.244  Inexact Rounded

+pwsx4073  power 0.596  0.5 -> 0.772  Inexact Rounded

+pwsx4074  power 0.0596  0.5 -> 0.244  Inexact Rounded

+pwsx4075  power 0.597  0.5 -> 0.773  Inexact Rounded

+pwsx4076  power 0.0597  0.5 -> 0.244  Inexact Rounded

+pwsx4077  power 0.598  0.5 -> 0.773  Inexact Rounded

+pwsx4078  power 0.0598  0.5 -> 0.245  Inexact Rounded

+pwsx4079  power 0.599  0.5 -> 0.774  Inexact Rounded

+pwsx4080  power 0.0599  0.5 -> 0.245  Inexact Rounded

+pwsx4081  power 0.601  0.5 -> 0.775  Inexact Rounded

+pwsx4082  power 0.0601  0.5 -> 0.245  Inexact Rounded

+pwsx4083  power 0.602  0.5 -> 0.776  Inexact Rounded

+pwsx4084  power 0.0602  0.5 -> 0.245  Inexact Rounded

+pwsx4085  power 0.603  0.5 -> 0.777  Inexact Rounded

+pwsx4086  power 0.0603  0.5 -> 0.246  Inexact Rounded

+pwsx4087  power 0.604  0.5 -> 0.777  Inexact Rounded

+pwsx4088  power 0.0604  0.5 -> 0.246  Inexact Rounded

+pwsx4089  power 0.605  0.5 -> 0.778  Inexact Rounded

+pwsx4090  power 0.0605  0.5 -> 0.246  Inexact Rounded

+pwsx4091  power 0.606  0.5 -> 0.778  Inexact Rounded

+pwsx4092  power 0.0606  0.5 -> 0.246  Inexact Rounded

+pwsx4093  power 0.607  0.5 -> 0.779  Inexact Rounded

+pwsx4094  power 0.0607  0.5 -> 0.246  Inexact Rounded

+pwsx4095  power 0.608  0.5 -> 0.780  Inexact Rounded

+pwsx4096  power 0.0608  0.5 -> 0.247  Inexact Rounded

+pwsx4097  power 0.609  0.5 -> 0.780  Inexact Rounded

+pwsx4098  power 0.0609  0.5 -> 0.247  Inexact Rounded

+pwsx4099  power 0.611  0.5 -> 0.782  Inexact Rounded

+pwsx4100  power 0.0611  0.5 -> 0.247  Inexact Rounded

+pwsx4101  power 0.612  0.5 -> 0.782  Inexact Rounded

+pwsx4102  power 0.0612  0.5 -> 0.247  Inexact Rounded

+pwsx4103  power 0.613  0.5 -> 0.783  Inexact Rounded

+pwsx4104  power 0.0613  0.5 -> 0.248  Inexact Rounded

+pwsx4105  power 0.614  0.5 -> 0.784  Inexact Rounded

+pwsx4106  power 0.0614  0.5 -> 0.248  Inexact Rounded

+pwsx4107  power 0.615  0.5 -> 0.784  Inexact Rounded

+pwsx4108  power 0.0615  0.5 -> 0.248  Inexact Rounded

+pwsx4109  power 0.616  0.5 -> 0.785  Inexact Rounded

+pwsx4110  power 0.0616  0.5 -> 0.248  Inexact Rounded

+pwsx4111  power 0.617  0.5 -> 0.785  Inexact Rounded

+pwsx4112  power 0.0617  0.5 -> 0.248  Inexact Rounded

+pwsx4113  power 0.618  0.5 -> 0.786  Inexact Rounded

+pwsx4114  power 0.0618  0.5 -> 0.249  Inexact Rounded

+pwsx4115  power 0.619  0.5 -> 0.787  Inexact Rounded

+pwsx4116  power 0.0619  0.5 -> 0.249  Inexact Rounded

+pwsx4117  power 0.621  0.5 -> 0.788  Inexact Rounded

+pwsx4118  power 0.0621  0.5 -> 0.249  Inexact Rounded

+pwsx4119  power 0.622  0.5 -> 0.789  Inexact Rounded

+pwsx4120  power 0.0622  0.5 -> 0.249  Inexact Rounded

+pwsx4121  power 0.623  0.5 -> 0.789  Inexact Rounded

+pwsx4122  power 0.0623  0.5 -> 0.250  Inexact Rounded

+pwsx4123  power 0.624  0.5 -> 0.790  Inexact Rounded

+pwsx4124  power 0.0624  0.5 -> 0.250  Inexact Rounded

+pwsx4125  power 0.625  0.5 -> 0.791  Inexact Rounded

+pwsx4126  power 0.0625  0.5 -> 0.250  Inexact Rounded

+pwsx4127  power 0.626  0.5 -> 0.791  Inexact Rounded

+pwsx4128  power 0.0626  0.5 -> 0.250  Inexact Rounded

+pwsx4129  power 0.627  0.5 -> 0.792  Inexact Rounded

+pwsx4130  power 0.0627  0.5 -> 0.250  Inexact Rounded

+pwsx4131  power 0.628  0.5 -> 0.792  Inexact Rounded

+pwsx4132  power 0.0628  0.5 -> 0.251  Inexact Rounded

+pwsx4133  power 0.629  0.5 -> 0.793  Inexact Rounded

+pwsx4134  power 0.0629  0.5 -> 0.251  Inexact Rounded

+pwsx4135  power 0.631  0.5 -> 0.794  Inexact Rounded

+pwsx4136  power 0.0631  0.5 -> 0.251  Inexact Rounded

+pwsx4137  power 0.632  0.5 -> 0.795  Inexact Rounded

+pwsx4138  power 0.0632  0.5 -> 0.251  Inexact Rounded

+pwsx4139  power 0.633  0.5 -> 0.796  Inexact Rounded

+pwsx4140  power 0.0633  0.5 -> 0.252  Inexact Rounded

+pwsx4141  power 0.634  0.5 -> 0.796  Inexact Rounded

+pwsx4142  power 0.0634  0.5 -> 0.252  Inexact Rounded

+pwsx4143  power 0.635  0.5 -> 0.797  Inexact Rounded

+pwsx4144  power 0.0635  0.5 -> 0.252  Inexact Rounded

+pwsx4145  power 0.636  0.5 -> 0.797  Inexact Rounded

+pwsx4146  power 0.0636  0.5 -> 0.252  Inexact Rounded

+pwsx4147  power 0.637  0.5 -> 0.798  Inexact Rounded

+pwsx4148  power 0.0637  0.5 -> 0.252  Inexact Rounded

+pwsx4149  power 0.638  0.5 -> 0.799  Inexact Rounded

+pwsx4150  power 0.0638  0.5 -> 0.253  Inexact Rounded

+pwsx4151  power 0.639  0.5 -> 0.799  Inexact Rounded

+pwsx4152  power 0.0639  0.5 -> 0.253  Inexact Rounded

+pwsx4153  power 0.641  0.5 -> 0.801  Inexact Rounded

+pwsx4154  power 0.0641  0.5 -> 0.253  Inexact Rounded

+pwsx4155  power 0.642  0.5 -> 0.801  Inexact Rounded

+pwsx4156  power 0.0642  0.5 -> 0.253  Inexact Rounded

+pwsx4157  power 0.643  0.5 -> 0.802  Inexact Rounded

+pwsx4158  power 0.0643  0.5 -> 0.254  Inexact Rounded

+pwsx4159  power 0.644  0.5 -> 0.802  Inexact Rounded

+pwsx4160  power 0.0644  0.5 -> 0.254  Inexact Rounded

+pwsx4161  power 0.645  0.5 -> 0.803  Inexact Rounded

+pwsx4162  power 0.0645  0.5 -> 0.254  Inexact Rounded

+pwsx4163  power 0.646  0.5 -> 0.804  Inexact Rounded

+pwsx4164  power 0.0646  0.5 -> 0.254  Inexact Rounded

+pwsx4165  power 0.647  0.5 -> 0.804  Inexact Rounded

+pwsx4166  power 0.0647  0.5 -> 0.254  Inexact Rounded

+pwsx4167  power 0.648  0.5 -> 0.805  Inexact Rounded

+pwsx4168  power 0.0648  0.5 -> 0.255  Inexact Rounded

+pwsx4169  power 0.649  0.5 -> 0.806  Inexact Rounded

+pwsx4170  power 0.0649  0.5 -> 0.255  Inexact Rounded

+pwsx4171  power 0.651  0.5 -> 0.807  Inexact Rounded

+pwsx4172  power 0.0651  0.5 -> 0.255  Inexact Rounded

+pwsx4173  power 0.652  0.5 -> 0.807  Inexact Rounded

+pwsx4174  power 0.0652  0.5 -> 0.255  Inexact Rounded

+pwsx4175  power 0.653  0.5 -> 0.808  Inexact Rounded

+pwsx4176  power 0.0653  0.5 -> 0.256  Inexact Rounded

+pwsx4177  power 0.654  0.5 -> 0.809  Inexact Rounded

+pwsx4178  power 0.0654  0.5 -> 0.256  Inexact Rounded

+pwsx4179  power 0.655  0.5 -> 0.809  Inexact Rounded

+pwsx4180  power 0.0655  0.5 -> 0.256  Inexact Rounded

+pwsx4181  power 0.656  0.5 -> 0.810  Inexact Rounded

+pwsx4182  power 0.0656  0.5 -> 0.256  Inexact Rounded

+pwsx4183  power 0.657  0.5 -> 0.811  Inexact Rounded

+pwsx4184  power 0.0657  0.5 -> 0.256  Inexact Rounded

+pwsx4185  power 0.658  0.5 -> 0.811  Inexact Rounded

+pwsx4186  power 0.0658  0.5 -> 0.257  Inexact Rounded

+pwsx4187  power 0.659  0.5 -> 0.812  Inexact Rounded

+pwsx4188  power 0.0659  0.5 -> 0.257  Inexact Rounded

+pwsx4189  power 0.661  0.5 -> 0.813  Inexact Rounded

+pwsx4190  power 0.0661  0.5 -> 0.257  Inexact Rounded

+pwsx4191  power 0.662  0.5 -> 0.814  Inexact Rounded

+pwsx4192  power 0.0662  0.5 -> 0.257  Inexact Rounded

+pwsx4193  power 0.663  0.5 -> 0.814  Inexact Rounded

+pwsx4194  power 0.0663  0.5 -> 0.257  Inexact Rounded

+pwsx4195  power 0.664  0.5 -> 0.815  Inexact Rounded

+pwsx4196  power 0.0664  0.5 -> 0.258  Inexact Rounded

+pwsx4197  power 0.665  0.5 -> 0.815  Inexact Rounded

+pwsx4198  power 0.0665  0.5 -> 0.258  Inexact Rounded

+pwsx4199  power 0.666  0.5 -> 0.816  Inexact Rounded

+pwsx4200  power 0.0666  0.5 -> 0.258  Inexact Rounded

+pwsx4201  power 0.667  0.5 -> 0.817  Inexact Rounded

+pwsx4202  power 0.0667  0.5 -> 0.258  Inexact Rounded

+pwsx4203  power 0.668  0.5 -> 0.817  Inexact Rounded

+pwsx4204  power 0.0668  0.5 -> 0.258  Inexact Rounded

+pwsx4205  power 0.669  0.5 -> 0.818  Inexact Rounded

+pwsx4206  power 0.0669  0.5 -> 0.259  Inexact Rounded

+pwsx4207  power 0.671  0.5 -> 0.819  Inexact Rounded

+pwsx4208  power 0.0671  0.5 -> 0.259  Inexact Rounded

+pwsx4209  power 0.672  0.5 -> 0.820  Inexact Rounded

+pwsx4210  power 0.0672  0.5 -> 0.259  Inexact Rounded

+pwsx4211  power 0.673  0.5 -> 0.820  Inexact Rounded

+pwsx4212  power 0.0673  0.5 -> 0.259  Inexact Rounded

+pwsx4213  power 0.674  0.5 -> 0.821  Inexact Rounded

+pwsx4214  power 0.0674  0.5 -> 0.260  Inexact Rounded

+pwsx4215  power 0.675  0.5 -> 0.822  Inexact Rounded

+pwsx4216  power 0.0675  0.5 -> 0.260  Inexact Rounded

+pwsx4217  power 0.676  0.5 -> 0.822  Inexact Rounded

+pwsx4218  power 0.0676  0.5 -> 0.260  Inexact Rounded

+pwsx4219  power 0.677  0.5 -> 0.823  Inexact Rounded

+pwsx4220  power 0.0677  0.5 -> 0.260  Inexact Rounded

+pwsx4221  power 0.678  0.5 -> 0.823  Inexact Rounded

+pwsx4222  power 0.0678  0.5 -> 0.260  Inexact Rounded

+pwsx4223  power 0.679  0.5 -> 0.824  Inexact Rounded

+pwsx4224  power 0.0679  0.5 -> 0.261  Inexact Rounded

+pwsx4225  power 0.681  0.5 -> 0.825  Inexact Rounded

+pwsx4226  power 0.0681  0.5 -> 0.261  Inexact Rounded

+pwsx4227  power 0.682  0.5 -> 0.826  Inexact Rounded

+pwsx4228  power 0.0682  0.5 -> 0.261  Inexact Rounded

+pwsx4229  power 0.683  0.5 -> 0.826  Inexact Rounded

+pwsx4230  power 0.0683  0.5 -> 0.261  Inexact Rounded

+pwsx4231  power 0.684  0.5 -> 0.827  Inexact Rounded

+pwsx4232  power 0.0684  0.5 -> 0.262  Inexact Rounded

+pwsx4233  power 0.685  0.5 -> 0.828  Inexact Rounded

+pwsx4234  power 0.0685  0.5 -> 0.262  Inexact Rounded

+pwsx4235  power 0.686  0.5 -> 0.828  Inexact Rounded

+pwsx4236  power 0.0686  0.5 -> 0.262  Inexact Rounded

+pwsx4237  power 0.687  0.5 -> 0.829  Inexact Rounded

+pwsx4238  power 0.0687  0.5 -> 0.262  Inexact Rounded

+pwsx4239  power 0.688  0.5 -> 0.829  Inexact Rounded

+pwsx4240  power 0.0688  0.5 -> 0.262  Inexact Rounded

+pwsx4241  power 0.689  0.5 -> 0.830  Inexact Rounded

+pwsx4242  power 0.0689  0.5 -> 0.262  Inexact Rounded

+pwsx4243  power 0.691  0.5 -> 0.831  Inexact Rounded

+pwsx4244  power 0.0691  0.5 -> 0.263  Inexact Rounded

+pwsx4245  power 0.692  0.5 -> 0.832  Inexact Rounded

+pwsx4246  power 0.0692  0.5 -> 0.263  Inexact Rounded

+pwsx4247  power 0.693  0.5 -> 0.832  Inexact Rounded

+pwsx4248  power 0.0693  0.5 -> 0.263  Inexact Rounded

+pwsx4249  power 0.694  0.5 -> 0.833  Inexact Rounded

+pwsx4250  power 0.0694  0.5 -> 0.263  Inexact Rounded

+pwsx4251  power 0.695  0.5 -> 0.834  Inexact Rounded

+pwsx4252  power 0.0695  0.5 -> 0.264  Inexact Rounded

+pwsx4253  power 0.696  0.5 -> 0.834  Inexact Rounded

+pwsx4254  power 0.0696  0.5 -> 0.264  Inexact Rounded

+pwsx4255  power 0.697  0.5 -> 0.835  Inexact Rounded

+pwsx4256  power 0.0697  0.5 -> 0.264  Inexact Rounded

+pwsx4257  power 0.698  0.5 -> 0.835  Inexact Rounded

+pwsx4258  power 0.0698  0.5 -> 0.264  Inexact Rounded

+pwsx4259  power 0.699  0.5 -> 0.836  Inexact Rounded

+pwsx4260  power 0.0699  0.5 -> 0.264  Inexact Rounded

+pwsx4261  power 0.701  0.5 -> 0.837  Inexact Rounded

+pwsx4262  power 0.0701  0.5 -> 0.265  Inexact Rounded

+pwsx4263  power 0.702  0.5 -> 0.838  Inexact Rounded

+pwsx4264  power 0.0702  0.5 -> 0.265  Inexact Rounded

+pwsx4265  power 0.703  0.5 -> 0.838  Inexact Rounded

+pwsx4266  power 0.0703  0.5 -> 0.265  Inexact Rounded

+pwsx4267  power 0.704  0.5 -> 0.839  Inexact Rounded

+pwsx4268  power 0.0704  0.5 -> 0.265  Inexact Rounded

+pwsx4269  power 0.705  0.5 -> 0.840  Inexact Rounded

+pwsx4270  power 0.0705  0.5 -> 0.266  Inexact Rounded

+pwsx4271  power 0.706  0.5 -> 0.840  Inexact Rounded

+pwsx4272  power 0.0706  0.5 -> 0.266  Inexact Rounded

+pwsx4273  power 0.707  0.5 -> 0.841  Inexact Rounded

+pwsx4274  power 0.0707  0.5 -> 0.266  Inexact Rounded

+pwsx4275  power 0.708  0.5 -> 0.841  Inexact Rounded

+pwsx4276  power 0.0708  0.5 -> 0.266  Inexact Rounded

+pwsx4277  power 0.709  0.5 -> 0.842  Inexact Rounded

+pwsx4278  power 0.0709  0.5 -> 0.266  Inexact Rounded

+pwsx4279  power 0.711  0.5 -> 0.843  Inexact Rounded

+pwsx4280  power 0.0711  0.5 -> 0.267  Inexact Rounded

+pwsx4281  power 0.712  0.5 -> 0.844  Inexact Rounded

+pwsx4282  power 0.0712  0.5 -> 0.267  Inexact Rounded

+pwsx4283  power 0.713  0.5 -> 0.844  Inexact Rounded

+pwsx4284  power 0.0713  0.5 -> 0.267  Inexact Rounded

+pwsx4285  power 0.714  0.5 -> 0.845  Inexact Rounded

+pwsx4286  power 0.0714  0.5 -> 0.267  Inexact Rounded

+pwsx4287  power 0.715  0.5 -> 0.846  Inexact Rounded

+pwsx4288  power 0.0715  0.5 -> 0.267  Inexact Rounded

+pwsx4289  power 0.716  0.5 -> 0.846  Inexact Rounded

+pwsx4290  power 0.0716  0.5 -> 0.268  Inexact Rounded

+pwsx4291  power 0.717  0.5 -> 0.847  Inexact Rounded

+pwsx4292  power 0.0717  0.5 -> 0.268  Inexact Rounded

+pwsx4293  power 0.718  0.5 -> 0.847  Inexact Rounded

+pwsx4294  power 0.0718  0.5 -> 0.268  Inexact Rounded

+pwsx4295  power 0.719  0.5 -> 0.848  Inexact Rounded

+pwsx4296  power 0.0719  0.5 -> 0.268  Inexact Rounded

+pwsx4297  power 0.721  0.5 -> 0.849  Inexact Rounded

+pwsx4298  power 0.0721  0.5 -> 0.269  Inexact Rounded

+pwsx4299  power 0.722  0.5 -> 0.850  Inexact Rounded

+pwsx4300  power 0.0722  0.5 -> 0.269  Inexact Rounded

+pwsx4301  power 0.723  0.5 -> 0.850  Inexact Rounded

+pwsx4302  power 0.0723  0.5 -> 0.269  Inexact Rounded

+pwsx4303  power 0.724  0.5 -> 0.851  Inexact Rounded

+pwsx4304  power 0.0724  0.5 -> 0.269  Inexact Rounded

+pwsx4305  power 0.725  0.5 -> 0.851  Inexact Rounded

+pwsx4306  power 0.0725  0.5 -> 0.269  Inexact Rounded

+pwsx4307  power 0.726  0.5 -> 0.852  Inexact Rounded

+pwsx4308  power 0.0726  0.5 -> 0.269  Inexact Rounded

+pwsx4309  power 0.727  0.5 -> 0.853  Inexact Rounded

+pwsx4310  power 0.0727  0.5 -> 0.270  Inexact Rounded

+pwsx4311  power 0.728  0.5 -> 0.853  Inexact Rounded

+pwsx4312  power 0.0728  0.5 -> 0.270  Inexact Rounded

+pwsx4313  power 0.729  0.5 -> 0.854  Inexact Rounded

+pwsx4314  power 0.0729  0.5 -> 0.270  Inexact Rounded

+pwsx4315  power 0.731  0.5 -> 0.855  Inexact Rounded

+pwsx4316  power 0.0731  0.5 -> 0.270  Inexact Rounded

+pwsx4317  power 0.732  0.5 -> 0.856  Inexact Rounded

+pwsx4318  power 0.0732  0.5 -> 0.271  Inexact Rounded

+pwsx4319  power 0.733  0.5 -> 0.856  Inexact Rounded

+pwsx4320  power 0.0733  0.5 -> 0.271  Inexact Rounded

+pwsx4321  power 0.734  0.5 -> 0.857  Inexact Rounded

+pwsx4322  power 0.0734  0.5 -> 0.271  Inexact Rounded

+pwsx4323  power 0.735  0.5 -> 0.857  Inexact Rounded

+pwsx4324  power 0.0735  0.5 -> 0.271  Inexact Rounded

+pwsx4325  power 0.736  0.5 -> 0.858  Inexact Rounded

+pwsx4326  power 0.0736  0.5 -> 0.271  Inexact Rounded

+pwsx4327  power 0.737  0.5 -> 0.858  Inexact Rounded

+pwsx4328  power 0.0737  0.5 -> 0.271  Inexact Rounded

+pwsx4329  power 0.738  0.5 -> 0.859  Inexact Rounded

+pwsx4330  power 0.0738  0.5 -> 0.272  Inexact Rounded

+pwsx4331  power 0.739  0.5 -> 0.860  Inexact Rounded

+pwsx4332  power 0.0739  0.5 -> 0.272  Inexact Rounded

+pwsx4333  power 0.741  0.5 -> 0.861  Inexact Rounded

+pwsx4334  power 0.0741  0.5 -> 0.272  Inexact Rounded

+pwsx4335  power 0.742  0.5 -> 0.861  Inexact Rounded

+pwsx4336  power 0.0742  0.5 -> 0.272  Inexact Rounded

+pwsx4337  power 0.743  0.5 -> 0.862  Inexact Rounded

+pwsx4338  power 0.0743  0.5 -> 0.273  Inexact Rounded

+pwsx4339  power 0.744  0.5 -> 0.863  Inexact Rounded

+pwsx4340  power 0.0744  0.5 -> 0.273  Inexact Rounded

+pwsx4341  power 0.745  0.5 -> 0.863  Inexact Rounded

+pwsx4342  power 0.0745  0.5 -> 0.273  Inexact Rounded

+pwsx4343  power 0.746  0.5 -> 0.864  Inexact Rounded

+pwsx4344  power 0.0746  0.5 -> 0.273  Inexact Rounded

+pwsx4345  power 0.747  0.5 -> 0.864  Inexact Rounded

+pwsx4346  power 0.0747  0.5 -> 0.273  Inexact Rounded

+pwsx4347  power 0.748  0.5 -> 0.865  Inexact Rounded

+pwsx4348  power 0.0748  0.5 -> 0.273  Inexact Rounded

+pwsx4349  power 0.749  0.5 -> 0.865  Inexact Rounded

+pwsx4350  power 0.0749  0.5 -> 0.274  Inexact Rounded

+pwsx4351  power 0.751  0.5 -> 0.867  Inexact Rounded

+pwsx4352  power 0.0751  0.5 -> 0.274  Inexact Rounded

+pwsx4353  power 0.752  0.5 -> 0.867  Inexact Rounded

+pwsx4354  power 0.0752  0.5 -> 0.274  Inexact Rounded

+pwsx4355  power 0.753  0.5 -> 0.868  Inexact Rounded

+pwsx4356  power 0.0753  0.5 -> 0.274  Inexact Rounded

+pwsx4357  power 0.754  0.5 -> 0.868  Inexact Rounded

+pwsx4358  power 0.0754  0.5 -> 0.275  Inexact Rounded

+pwsx4359  power 0.755  0.5 -> 0.869  Inexact Rounded

+pwsx4360  power 0.0755  0.5 -> 0.275  Inexact Rounded

+pwsx4361  power 0.756  0.5 -> 0.869  Inexact Rounded

+pwsx4362  power 0.0756  0.5 -> 0.275  Inexact Rounded

+pwsx4363  power 0.757  0.5 -> 0.870  Inexact Rounded

+pwsx4364  power 0.0757  0.5 -> 0.275  Inexact Rounded

+pwsx4365  power 0.758  0.5 -> 0.871  Inexact Rounded

+pwsx4366  power 0.0758  0.5 -> 0.275  Inexact Rounded

+pwsx4367  power 0.759  0.5 -> 0.871  Inexact Rounded

+pwsx4368  power 0.0759  0.5 -> 0.275  Inexact Rounded

+pwsx4369  power 0.761  0.5 -> 0.872  Inexact Rounded

+pwsx4370  power 0.0761  0.5 -> 0.276  Inexact Rounded

+pwsx4371  power 0.762  0.5 -> 0.873  Inexact Rounded

+pwsx4372  power 0.0762  0.5 -> 0.276  Inexact Rounded

+pwsx4373  power 0.763  0.5 -> 0.873  Inexact Rounded

+pwsx4374  power 0.0763  0.5 -> 0.276  Inexact Rounded

+pwsx4375  power 0.764  0.5 -> 0.874  Inexact Rounded

+pwsx4376  power 0.0764  0.5 -> 0.276  Inexact Rounded

+pwsx4377  power 0.765  0.5 -> 0.875  Inexact Rounded

+pwsx4378  power 0.0765  0.5 -> 0.277  Inexact Rounded

+pwsx4379  power 0.766  0.5 -> 0.875  Inexact Rounded

+pwsx4380  power 0.0766  0.5 -> 0.277  Inexact Rounded

+pwsx4381  power 0.767  0.5 -> 0.876  Inexact Rounded

+pwsx4382  power 0.0767  0.5 -> 0.277  Inexact Rounded

+pwsx4383  power 0.768  0.5 -> 0.876  Inexact Rounded

+pwsx4384  power 0.0768  0.5 -> 0.277  Inexact Rounded

+pwsx4385  power 0.769  0.5 -> 0.877  Inexact Rounded

+pwsx4386  power 0.0769  0.5 -> 0.277  Inexact Rounded

+pwsx4387  power 0.771  0.5 -> 0.878  Inexact Rounded

+pwsx4388  power 0.0771  0.5 -> 0.278  Inexact Rounded

+pwsx4389  power 0.772  0.5 -> 0.879  Inexact Rounded

+pwsx4390  power 0.0772  0.5 -> 0.278  Inexact Rounded

+pwsx4391  power 0.773  0.5 -> 0.879  Inexact Rounded

+pwsx4392  power 0.0773  0.5 -> 0.278  Inexact Rounded

+pwsx4393  power 0.774  0.5 -> 0.880  Inexact Rounded

+pwsx4394  power 0.0774  0.5 -> 0.278  Inexact Rounded

+pwsx4395  power 0.775  0.5 -> 0.880  Inexact Rounded

+pwsx4396  power 0.0775  0.5 -> 0.278  Inexact Rounded

+pwsx4397  power 0.776  0.5 -> 0.881  Inexact Rounded

+pwsx4398  power 0.0776  0.5 -> 0.279  Inexact Rounded

+pwsx4399  power 0.777  0.5 -> 0.881  Inexact Rounded

+pwsx4400  power 0.0777  0.5 -> 0.279  Inexact Rounded

+pwsx4401  power 0.778  0.5 -> 0.882  Inexact Rounded

+pwsx4402  power 0.0778  0.5 -> 0.279  Inexact Rounded

+pwsx4403  power 0.779  0.5 -> 0.883  Inexact Rounded

+pwsx4404  power 0.0779  0.5 -> 0.279  Inexact Rounded

+pwsx4405  power 0.781  0.5 -> 0.884  Inexact Rounded

+pwsx4406  power 0.0781  0.5 -> 0.279  Inexact Rounded

+pwsx4407  power 0.782  0.5 -> 0.884  Inexact Rounded

+pwsx4408  power 0.0782  0.5 -> 0.280  Inexact Rounded

+pwsx4409  power 0.783  0.5 -> 0.885  Inexact Rounded

+pwsx4410  power 0.0783  0.5 -> 0.280  Inexact Rounded

+pwsx4411  power 0.784  0.5 -> 0.885  Inexact Rounded

+pwsx4412  power 0.0784  0.5 -> 0.280  Inexact Rounded

+pwsx4413  power 0.785  0.5 -> 0.886  Inexact Rounded

+pwsx4414  power 0.0785  0.5 -> 0.280  Inexact Rounded

+pwsx4415  power 0.786  0.5 -> 0.887  Inexact Rounded

+pwsx4416  power 0.0786  0.5 -> 0.280  Inexact Rounded

+pwsx4417  power 0.787  0.5 -> 0.887  Inexact Rounded

+pwsx4418  power 0.0787  0.5 -> 0.281  Inexact Rounded

+pwsx4419  power 0.788  0.5 -> 0.888  Inexact Rounded

+pwsx4420  power 0.0788  0.5 -> 0.281  Inexact Rounded

+pwsx4421  power 0.789  0.5 -> 0.888  Inexact Rounded

+pwsx4422  power 0.0789  0.5 -> 0.281  Inexact Rounded

+pwsx4423  power 0.791  0.5 -> 0.889  Inexact Rounded

+pwsx4424  power 0.0791  0.5 -> 0.281  Inexact Rounded

+pwsx4425  power 0.792  0.5 -> 0.890  Inexact Rounded

+pwsx4426  power 0.0792  0.5 -> 0.281  Inexact Rounded

+pwsx4427  power 0.793  0.5 -> 0.891  Inexact Rounded

+pwsx4428  power 0.0793  0.5 -> 0.282  Inexact Rounded

+pwsx4429  power 0.794  0.5 -> 0.891  Inexact Rounded

+pwsx4430  power 0.0794  0.5 -> 0.282  Inexact Rounded

+pwsx4431  power 0.795  0.5 -> 0.892  Inexact Rounded

+pwsx4432  power 0.0795  0.5 -> 0.282  Inexact Rounded

+pwsx4433  power 0.796  0.5 -> 0.892  Inexact Rounded

+pwsx4434  power 0.0796  0.5 -> 0.282  Inexact Rounded

+pwsx4435  power 0.797  0.5 -> 0.893  Inexact Rounded

+pwsx4436  power 0.0797  0.5 -> 0.282  Inexact Rounded

+pwsx4437  power 0.798  0.5 -> 0.893  Inexact Rounded

+pwsx4438  power 0.0798  0.5 -> 0.282  Inexact Rounded

+pwsx4439  power 0.799  0.5 -> 0.894  Inexact Rounded

+pwsx4440  power 0.0799  0.5 -> 0.283  Inexact Rounded

+pwsx4441  power 0.801  0.5 -> 0.895  Inexact Rounded

+pwsx4442  power 0.0801  0.5 -> 0.283  Inexact Rounded

+pwsx4443  power 0.802  0.5 -> 0.896  Inexact Rounded

+pwsx4444  power 0.0802  0.5 -> 0.283  Inexact Rounded

+pwsx4445  power 0.803  0.5 -> 0.896  Inexact Rounded

+pwsx4446  power 0.0803  0.5 -> 0.283  Inexact Rounded

+pwsx4447  power 0.804  0.5 -> 0.897  Inexact Rounded

+pwsx4448  power 0.0804  0.5 -> 0.284  Inexact Rounded

+pwsx4449  power 0.805  0.5 -> 0.897  Inexact Rounded

+pwsx4450  power 0.0805  0.5 -> 0.284  Inexact Rounded

+pwsx4451  power 0.806  0.5 -> 0.898  Inexact Rounded

+pwsx4452  power 0.0806  0.5 -> 0.284  Inexact Rounded

+pwsx4453  power 0.807  0.5 -> 0.898  Inexact Rounded

+pwsx4454  power 0.0807  0.5 -> 0.284  Inexact Rounded

+pwsx4455  power 0.808  0.5 -> 0.899  Inexact Rounded

+pwsx4456  power 0.0808  0.5 -> 0.284  Inexact Rounded

+pwsx4457  power 0.809  0.5 -> 0.899  Inexact Rounded

+pwsx4458  power 0.0809  0.5 -> 0.284  Inexact Rounded

+pwsx4459  power 0.811  0.5 -> 0.901  Inexact Rounded

+pwsx4460  power 0.0811  0.5 -> 0.285  Inexact Rounded

+pwsx4461  power 0.812  0.5 -> 0.901  Inexact Rounded

+pwsx4462  power 0.0812  0.5 -> 0.285  Inexact Rounded

+pwsx4463  power 0.813  0.5 -> 0.902  Inexact Rounded

+pwsx4464  power 0.0813  0.5 -> 0.285  Inexact Rounded

+pwsx4465  power 0.814  0.5 -> 0.902  Inexact Rounded

+pwsx4466  power 0.0814  0.5 -> 0.285  Inexact Rounded

+pwsx4467  power 0.815  0.5 -> 0.903  Inexact Rounded

+pwsx4468  power 0.0815  0.5 -> 0.285  Inexact Rounded

+pwsx4469  power 0.816  0.5 -> 0.903  Inexact Rounded

+pwsx4470  power 0.0816  0.5 -> 0.286  Inexact Rounded

+pwsx4471  power 0.817  0.5 -> 0.904  Inexact Rounded

+pwsx4472  power 0.0817  0.5 -> 0.286  Inexact Rounded

+pwsx4473  power 0.818  0.5 -> 0.904  Inexact Rounded

+pwsx4474  power 0.0818  0.5 -> 0.286  Inexact Rounded

+pwsx4475  power 0.819  0.5 -> 0.905  Inexact Rounded

+pwsx4476  power 0.0819  0.5 -> 0.286  Inexact Rounded

+pwsx4477  power 0.821  0.5 -> 0.906  Inexact Rounded

+pwsx4478  power 0.0821  0.5 -> 0.287  Inexact Rounded

+pwsx4479  power 0.822  0.5 -> 0.907  Inexact Rounded

+pwsx4480  power 0.0822  0.5 -> 0.287  Inexact Rounded

+pwsx4481  power 0.823  0.5 -> 0.907  Inexact Rounded

+pwsx4482  power 0.0823  0.5 -> 0.287  Inexact Rounded

+pwsx4483  power 0.824  0.5 -> 0.908  Inexact Rounded

+pwsx4484  power 0.0824  0.5 -> 0.287  Inexact Rounded

+pwsx4485  power 0.825  0.5 -> 0.908  Inexact Rounded

+pwsx4486  power 0.0825  0.5 -> 0.287  Inexact Rounded

+pwsx4487  power 0.826  0.5 -> 0.909  Inexact Rounded

+pwsx4488  power 0.0826  0.5 -> 0.287  Inexact Rounded

+pwsx4489  power 0.827  0.5 -> 0.909  Inexact Rounded

+pwsx4490  power 0.0827  0.5 -> 0.288  Inexact Rounded

+pwsx4491  power 0.828  0.5 -> 0.910  Inexact Rounded

+pwsx4492  power 0.0828  0.5 -> 0.288  Inexact Rounded

+pwsx4493  power 0.829  0.5 -> 0.910  Inexact Rounded

+pwsx4494  power 0.0829  0.5 -> 0.288  Inexact Rounded

+pwsx4495  power 0.831  0.5 -> 0.912  Inexact Rounded

+pwsx4496  power 0.0831  0.5 -> 0.288  Inexact Rounded

+pwsx4497  power 0.832  0.5 -> 0.912  Inexact Rounded

+pwsx4498  power 0.0832  0.5 -> 0.288  Inexact Rounded

+pwsx4499  power 0.833  0.5 -> 0.913  Inexact Rounded

+pwsx4500  power 0.0833  0.5 -> 0.289  Inexact Rounded

+pwsx4501  power 0.834  0.5 -> 0.913  Inexact Rounded

+pwsx4502  power 0.0834  0.5 -> 0.289  Inexact Rounded

+pwsx4503  power 0.835  0.5 -> 0.914  Inexact Rounded

+pwsx4504  power 0.0835  0.5 -> 0.289  Inexact Rounded

+pwsx4505  power 0.836  0.5 -> 0.914  Inexact Rounded

+pwsx4506  power 0.0836  0.5 -> 0.289  Inexact Rounded

+pwsx4507  power 0.837  0.5 -> 0.915  Inexact Rounded

+pwsx4508  power 0.0837  0.5 -> 0.289  Inexact Rounded

+pwsx4509  power 0.838  0.5 -> 0.915  Inexact Rounded

+pwsx4510  power 0.0838  0.5 -> 0.289  Inexact Rounded

+pwsx4511  power 0.839  0.5 -> 0.916  Inexact Rounded

+pwsx4512  power 0.0839  0.5 -> 0.290  Inexact Rounded

+pwsx4513  power 0.841  0.5 -> 0.917  Inexact Rounded

+pwsx4514  power 0.0841  0.5 -> 0.290  Inexact Rounded

+pwsx4515  power 0.842  0.5 -> 0.918  Inexact Rounded

+pwsx4516  power 0.0842  0.5 -> 0.290  Inexact Rounded

+pwsx4517  power 0.843  0.5 -> 0.918  Inexact Rounded

+pwsx4518  power 0.0843  0.5 -> 0.290  Inexact Rounded

+pwsx4519  power 0.844  0.5 -> 0.919  Inexact Rounded

+pwsx4520  power 0.0844  0.5 -> 0.291  Inexact Rounded

+pwsx4521  power 0.845  0.5 -> 0.919  Inexact Rounded

+pwsx4522  power 0.0845  0.5 -> 0.291  Inexact Rounded

+pwsx4523  power 0.846  0.5 -> 0.920  Inexact Rounded

+pwsx4524  power 0.0846  0.5 -> 0.291  Inexact Rounded

+pwsx4525  power 0.847  0.5 -> 0.920  Inexact Rounded

+pwsx4526  power 0.0847  0.5 -> 0.291  Inexact Rounded

+pwsx4527  power 0.848  0.5 -> 0.921  Inexact Rounded

+pwsx4528  power 0.0848  0.5 -> 0.291  Inexact Rounded

+pwsx4529  power 0.849  0.5 -> 0.921  Inexact Rounded

+pwsx4530  power 0.0849  0.5 -> 0.291  Inexact Rounded

+pwsx4531  power 0.851  0.5 -> 0.922  Inexact Rounded

+pwsx4532  power 0.0851  0.5 -> 0.292  Inexact Rounded

+pwsx4533  power 0.852  0.5 -> 0.923  Inexact Rounded

+pwsx4534  power 0.0852  0.5 -> 0.292  Inexact Rounded

+pwsx4535  power 0.853  0.5 -> 0.924  Inexact Rounded

+pwsx4536  power 0.0853  0.5 -> 0.292  Inexact Rounded

+pwsx4537  power 0.854  0.5 -> 0.924  Inexact Rounded

+pwsx4538  power 0.0854  0.5 -> 0.292  Inexact Rounded

+pwsx4539  power 0.855  0.5 -> 0.925  Inexact Rounded

+pwsx4540  power 0.0855  0.5 -> 0.292  Inexact Rounded

+pwsx4541  power 0.856  0.5 -> 0.925  Inexact Rounded

+pwsx4542  power 0.0856  0.5 -> 0.293  Inexact Rounded

+pwsx4543  power 0.857  0.5 -> 0.926  Inexact Rounded

+pwsx4544  power 0.0857  0.5 -> 0.293  Inexact Rounded

+pwsx4545  power 0.858  0.5 -> 0.926  Inexact Rounded

+pwsx4546  power 0.0858  0.5 -> 0.293  Inexact Rounded

+pwsx4547  power 0.859  0.5 -> 0.927  Inexact Rounded

+pwsx4548  power 0.0859  0.5 -> 0.293  Inexact Rounded

+pwsx4549  power 0.861  0.5 -> 0.928  Inexact Rounded

+pwsx4550  power 0.0861  0.5 -> 0.293  Inexact Rounded

+pwsx4551  power 0.862  0.5 -> 0.928  Inexact Rounded

+pwsx4552  power 0.0862  0.5 -> 0.294  Inexact Rounded

+pwsx4553  power 0.863  0.5 -> 0.929  Inexact Rounded

+pwsx4554  power 0.0863  0.5 -> 0.294  Inexact Rounded

+pwsx4555  power 0.864  0.5 -> 0.930  Inexact Rounded

+pwsx4556  power 0.0864  0.5 -> 0.294  Inexact Rounded

+pwsx4557  power 0.865  0.5 -> 0.930  Inexact Rounded

+pwsx4558  power 0.0865  0.5 -> 0.294  Inexact Rounded

+pwsx4559  power 0.866  0.5 -> 0.931  Inexact Rounded

+pwsx4560  power 0.0866  0.5 -> 0.294  Inexact Rounded

+pwsx4561  power 0.867  0.5 -> 0.931  Inexact Rounded

+pwsx4562  power 0.0867  0.5 -> 0.294  Inexact Rounded

+pwsx4563  power 0.868  0.5 -> 0.932  Inexact Rounded

+pwsx4564  power 0.0868  0.5 -> 0.295  Inexact Rounded

+pwsx4565  power 0.869  0.5 -> 0.932  Inexact Rounded

+pwsx4566  power 0.0869  0.5 -> 0.295  Inexact Rounded

+pwsx4567  power 0.871  0.5 -> 0.933  Inexact Rounded

+pwsx4568  power 0.0871  0.5 -> 0.295  Inexact Rounded

+pwsx4569  power 0.872  0.5 -> 0.934  Inexact Rounded

+pwsx4570  power 0.0872  0.5 -> 0.295  Inexact Rounded

+pwsx4571  power 0.873  0.5 -> 0.934  Inexact Rounded

+pwsx4572  power 0.0873  0.5 -> 0.295  Inexact Rounded

+pwsx4573  power 0.874  0.5 -> 0.935  Inexact Rounded

+pwsx4574  power 0.0874  0.5 -> 0.296  Inexact Rounded

+pwsx4575  power 0.875  0.5 -> 0.935  Inexact Rounded

+pwsx4576  power 0.0875  0.5 -> 0.296  Inexact Rounded

+pwsx4577  power 0.876  0.5 -> 0.936  Inexact Rounded

+pwsx4578  power 0.0876  0.5 -> 0.296  Inexact Rounded

+pwsx4579  power 0.877  0.5 -> 0.936  Inexact Rounded

+pwsx4580  power 0.0877  0.5 -> 0.296  Inexact Rounded

+pwsx4581  power 0.878  0.5 -> 0.937  Inexact Rounded

+pwsx4582  power 0.0878  0.5 -> 0.296  Inexact Rounded

+pwsx4583  power 0.879  0.5 -> 0.938  Inexact Rounded

+pwsx4584  power 0.0879  0.5 -> 0.296  Inexact Rounded

+pwsx4585  power 0.881  0.5 -> 0.939  Inexact Rounded

+pwsx4586  power 0.0881  0.5 -> 0.297  Inexact Rounded

+pwsx4587  power 0.882  0.5 -> 0.939  Inexact Rounded

+pwsx4588  power 0.0882  0.5 -> 0.297  Inexact Rounded

+pwsx4589  power 0.883  0.5 -> 0.940  Inexact Rounded

+pwsx4590  power 0.0883  0.5 -> 0.297  Inexact Rounded

+pwsx4591  power 0.884  0.5 -> 0.940  Inexact Rounded

+pwsx4592  power 0.0884  0.5 -> 0.297  Inexact Rounded

+pwsx4593  power 0.885  0.5 -> 0.941  Inexact Rounded

+pwsx4594  power 0.0885  0.5 -> 0.297  Inexact Rounded

+pwsx4595  power 0.886  0.5 -> 0.941  Inexact Rounded

+pwsx4596  power 0.0886  0.5 -> 0.298  Inexact Rounded

+pwsx4597  power 0.887  0.5 -> 0.942  Inexact Rounded

+pwsx4598  power 0.0887  0.5 -> 0.298  Inexact Rounded

+pwsx4599  power 0.888  0.5 -> 0.942  Inexact Rounded

+pwsx4600  power 0.0888  0.5 -> 0.298  Inexact Rounded

+pwsx4601  power 0.889  0.5 -> 0.943  Inexact Rounded

+pwsx4602  power 0.0889  0.5 -> 0.298  Inexact Rounded

+pwsx4603  power 0.891  0.5 -> 0.944  Inexact Rounded

+pwsx4604  power 0.0891  0.5 -> 0.298  Inexact Rounded

+pwsx4605  power 0.892  0.5 -> 0.944  Inexact Rounded

+pwsx4606  power 0.0892  0.5 -> 0.299  Inexact Rounded

+pwsx4607  power 0.893  0.5 -> 0.945  Inexact Rounded

+pwsx4608  power 0.0893  0.5 -> 0.299  Inexact Rounded

+pwsx4609  power 0.894  0.5 -> 0.946  Inexact Rounded

+pwsx4610  power 0.0894  0.5 -> 0.299  Inexact Rounded

+pwsx4611  power 0.895  0.5 -> 0.946  Inexact Rounded

+pwsx4612  power 0.0895  0.5 -> 0.299  Inexact Rounded

+pwsx4613  power 0.896  0.5 -> 0.947  Inexact Rounded

+pwsx4614  power 0.0896  0.5 -> 0.299  Inexact Rounded

+pwsx4615  power 0.897  0.5 -> 0.947  Inexact Rounded

+pwsx4616  power 0.0897  0.5 -> 0.299  Inexact Rounded

+pwsx4617  power 0.898  0.5 -> 0.948  Inexact Rounded

+pwsx4618  power 0.0898  0.5 -> 0.300  Inexact Rounded

+pwsx4619  power 0.899  0.5 -> 0.948  Inexact Rounded

+pwsx4620  power 0.0899  0.5 -> 0.300  Inexact Rounded

+pwsx4621  power 0.901  0.5 -> 0.949  Inexact Rounded

+pwsx4622  power 0.0901  0.5 -> 0.300  Inexact Rounded

+pwsx4623  power 0.902  0.5 -> 0.950  Inexact Rounded

+pwsx4624  power 0.0902  0.5 -> 0.300  Inexact Rounded

+pwsx4625  power 0.903  0.5 -> 0.950  Inexact Rounded

+pwsx4626  power 0.0903  0.5 -> 0.300  Inexact Rounded

+pwsx4627  power 0.904  0.5 -> 0.951  Inexact Rounded

+pwsx4628  power 0.0904  0.5 -> 0.301  Inexact Rounded

+pwsx4629  power 0.905  0.5 -> 0.951  Inexact Rounded

+pwsx4630  power 0.0905  0.5 -> 0.301  Inexact Rounded

+pwsx4631  power 0.906  0.5 -> 0.952  Inexact Rounded

+pwsx4632  power 0.0906  0.5 -> 0.301  Inexact Rounded

+pwsx4633  power 0.907  0.5 -> 0.952  Inexact Rounded

+pwsx4634  power 0.0907  0.5 -> 0.301  Inexact Rounded

+pwsx4635  power 0.908  0.5 -> 0.953  Inexact Rounded

+pwsx4636  power 0.0908  0.5 -> 0.301  Inexact Rounded

+pwsx4637  power 0.909  0.5 -> 0.953  Inexact Rounded

+pwsx4638  power 0.0909  0.5 -> 0.301  Inexact Rounded

+pwsx4639  power 0.911  0.5 -> 0.954  Inexact Rounded

+pwsx4640  power 0.0911  0.5 -> 0.302  Inexact Rounded

+pwsx4641  power 0.912  0.5 -> 0.955  Inexact Rounded

+pwsx4642  power 0.0912  0.5 -> 0.302  Inexact Rounded

+pwsx4643  power 0.913  0.5 -> 0.956  Inexact Rounded

+pwsx4644  power 0.0913  0.5 -> 0.302  Inexact Rounded

+pwsx4645  power 0.914  0.5 -> 0.956  Inexact Rounded

+pwsx4646  power 0.0914  0.5 -> 0.302  Inexact Rounded

+pwsx4647  power 0.915  0.5 -> 0.957  Inexact Rounded

+pwsx4648  power 0.0915  0.5 -> 0.302  Inexact Rounded

+pwsx4649  power 0.916  0.5 -> 0.957  Inexact Rounded

+pwsx4650  power 0.0916  0.5 -> 0.303  Inexact Rounded

+pwsx4651  power 0.917  0.5 -> 0.958  Inexact Rounded

+pwsx4652  power 0.0917  0.5 -> 0.303  Inexact Rounded

+pwsx4653  power 0.918  0.5 -> 0.958  Inexact Rounded

+pwsx4654  power 0.0918  0.5 -> 0.303  Inexact Rounded

+pwsx4655  power 0.919  0.5 -> 0.959  Inexact Rounded

+pwsx4656  power 0.0919  0.5 -> 0.303  Inexact Rounded

+pwsx4657  power 0.921  0.5 -> 0.960  Inexact Rounded

+pwsx4658  power 0.0921  0.5 -> 0.303  Inexact Rounded

+pwsx4659  power 0.922  0.5 -> 0.960  Inexact Rounded

+pwsx4660  power 0.0922  0.5 -> 0.304  Inexact Rounded

+pwsx4661  power 0.923  0.5 -> 0.961  Inexact Rounded

+pwsx4662  power 0.0923  0.5 -> 0.304  Inexact Rounded

+pwsx4663  power 0.924  0.5 -> 0.961  Inexact Rounded

+pwsx4664  power 0.0924  0.5 -> 0.304  Inexact Rounded

+pwsx4665  power 0.925  0.5 -> 0.962  Inexact Rounded

+pwsx4666  power 0.0925  0.5 -> 0.304  Inexact Rounded

+pwsx4667  power 0.926  0.5 -> 0.962  Inexact Rounded

+pwsx4668  power 0.0926  0.5 -> 0.304  Inexact Rounded

+pwsx4669  power 0.927  0.5 -> 0.963  Inexact Rounded

+pwsx4670  power 0.0927  0.5 -> 0.304  Inexact Rounded

+pwsx4671  power 0.928  0.5 -> 0.963  Inexact Rounded

+pwsx4672  power 0.0928  0.5 -> 0.305  Inexact Rounded

+pwsx4673  power 0.929  0.5 -> 0.964  Inexact Rounded

+pwsx4674  power 0.0929  0.5 -> 0.305  Inexact Rounded

+pwsx4675  power 0.931  0.5 -> 0.965  Inexact Rounded

+pwsx4676  power 0.0931  0.5 -> 0.305  Inexact Rounded

+pwsx4677  power 0.932  0.5 -> 0.965  Inexact Rounded

+pwsx4678  power 0.0932  0.5 -> 0.305  Inexact Rounded

+pwsx4679  power 0.933  0.5 -> 0.966  Inexact Rounded

+pwsx4680  power 0.0933  0.5 -> 0.305  Inexact Rounded

+pwsx4681  power 0.934  0.5 -> 0.966  Inexact Rounded

+pwsx4682  power 0.0934  0.5 -> 0.306  Inexact Rounded

+pwsx4683  power 0.935  0.5 -> 0.967  Inexact Rounded

+pwsx4684  power 0.0935  0.5 -> 0.306  Inexact Rounded

+pwsx4685  power 0.936  0.5 -> 0.967  Inexact Rounded

+pwsx4686  power 0.0936  0.5 -> 0.306  Inexact Rounded

+pwsx4687  power 0.937  0.5 -> 0.968  Inexact Rounded

+pwsx4688  power 0.0937  0.5 -> 0.306  Inexact Rounded

+pwsx4689  power 0.938  0.5 -> 0.969  Inexact Rounded

+pwsx4690  power 0.0938  0.5 -> 0.306  Inexact Rounded

+pwsx4691  power 0.939  0.5 -> 0.969  Inexact Rounded

+pwsx4692  power 0.0939  0.5 -> 0.306  Inexact Rounded

+pwsx4693  power 0.941  0.5 -> 0.970  Inexact Rounded

+pwsx4694  power 0.0941  0.5 -> 0.307  Inexact Rounded

+pwsx4695  power 0.942  0.5 -> 0.971  Inexact Rounded

+pwsx4696  power 0.0942  0.5 -> 0.307  Inexact Rounded

+pwsx4697  power 0.943  0.5 -> 0.971  Inexact Rounded

+pwsx4698  power 0.0943  0.5 -> 0.307  Inexact Rounded

+pwsx4699  power 0.944  0.5 -> 0.972  Inexact Rounded

+pwsx4700  power 0.0944  0.5 -> 0.307  Inexact Rounded

+pwsx4701  power 0.945  0.5 -> 0.972  Inexact Rounded

+pwsx4702  power 0.0945  0.5 -> 0.307  Inexact Rounded

+pwsx4703  power 0.946  0.5 -> 0.973  Inexact Rounded

+pwsx4704  power 0.0946  0.5 -> 0.308  Inexact Rounded

+pwsx4705  power 0.947  0.5 -> 0.973  Inexact Rounded

+pwsx4706  power 0.0947  0.5 -> 0.308  Inexact Rounded

+pwsx4707  power 0.948  0.5 -> 0.974  Inexact Rounded

+pwsx4708  power 0.0948  0.5 -> 0.308  Inexact Rounded

+pwsx4709  power 0.949  0.5 -> 0.974  Inexact Rounded

+pwsx4710  power 0.0949  0.5 -> 0.308  Inexact Rounded

+pwsx4711  power 0.951  0.5 -> 0.975  Inexact Rounded

+pwsx4712  power 0.0951  0.5 -> 0.308  Inexact Rounded

+pwsx4713  power 0.952  0.5 -> 0.976  Inexact Rounded

+pwsx4714  power 0.0952  0.5 -> 0.309  Inexact Rounded

+pwsx4715  power 0.953  0.5 -> 0.976  Inexact Rounded

+pwsx4716  power 0.0953  0.5 -> 0.309  Inexact Rounded

+pwsx4717  power 0.954  0.5 -> 0.977  Inexact Rounded

+pwsx4718  power 0.0954  0.5 -> 0.309  Inexact Rounded

+pwsx4719  power 0.955  0.5 -> 0.977  Inexact Rounded

+pwsx4720  power 0.0955  0.5 -> 0.309  Inexact Rounded

+pwsx4721  power 0.956  0.5 -> 0.978  Inexact Rounded

+pwsx4722  power 0.0956  0.5 -> 0.309  Inexact Rounded

+pwsx4723  power 0.957  0.5 -> 0.978  Inexact Rounded

+pwsx4724  power 0.0957  0.5 -> 0.309  Inexact Rounded

+pwsx4725  power 0.958  0.5 -> 0.979  Inexact Rounded

+pwsx4726  power 0.0958  0.5 -> 0.310  Inexact Rounded

+pwsx4727  power 0.959  0.5 -> 0.979  Inexact Rounded

+pwsx4728  power 0.0959  0.5 -> 0.310  Inexact Rounded

+pwsx4729  power 0.961  0.5 -> 0.980  Inexact Rounded

+pwsx4730  power 0.0961  0.5 -> 0.310  Inexact Rounded

+pwsx4731  power 0.962  0.5 -> 0.981  Inexact Rounded

+pwsx4732  power 0.0962  0.5 -> 0.310  Inexact Rounded

+pwsx4733  power 0.963  0.5 -> 0.981  Inexact Rounded

+pwsx4734  power 0.0963  0.5 -> 0.310  Inexact Rounded

+pwsx4735  power 0.964  0.5 -> 0.982  Inexact Rounded

+pwsx4736  power 0.0964  0.5 -> 0.310  Inexact Rounded

+pwsx4737  power 0.965  0.5 -> 0.982  Inexact Rounded

+pwsx4738  power 0.0965  0.5 -> 0.311  Inexact Rounded

+pwsx4739  power 0.966  0.5 -> 0.983  Inexact Rounded

+pwsx4740  power 0.0966  0.5 -> 0.311  Inexact Rounded

+pwsx4741  power 0.967  0.5 -> 0.983  Inexact Rounded

+pwsx4742  power 0.0967  0.5 -> 0.311  Inexact Rounded

+pwsx4743  power 0.968  0.5 -> 0.984  Inexact Rounded

+pwsx4744  power 0.0968  0.5 -> 0.311  Inexact Rounded

+pwsx4745  power 0.969  0.5 -> 0.984  Inexact Rounded

+pwsx4746  power 0.0969  0.5 -> 0.311  Inexact Rounded

+pwsx4747  power 0.971  0.5 -> 0.985  Inexact Rounded

+pwsx4748  power 0.0971  0.5 -> 0.312  Inexact Rounded

+pwsx4749  power 0.972  0.5 -> 0.986  Inexact Rounded

+pwsx4750  power 0.0972  0.5 -> 0.312  Inexact Rounded

+pwsx4751  power 0.973  0.5 -> 0.986  Inexact Rounded

+pwsx4752  power 0.0973  0.5 -> 0.312  Inexact Rounded

+pwsx4753  power 0.974  0.5 -> 0.987  Inexact Rounded

+pwsx4754  power 0.0974  0.5 -> 0.312  Inexact Rounded

+pwsx4755  power 0.975  0.5 -> 0.987  Inexact Rounded

+pwsx4756  power 0.0975  0.5 -> 0.312  Inexact Rounded

+pwsx4757  power 0.976  0.5 -> 0.988  Inexact Rounded

+pwsx4758  power 0.0976  0.5 -> 0.312  Inexact Rounded

+pwsx4759  power 0.977  0.5 -> 0.988  Inexact Rounded

+pwsx4760  power 0.0977  0.5 -> 0.313  Inexact Rounded

+pwsx4761  power 0.978  0.5 -> 0.989  Inexact Rounded

+pwsx4762  power 0.0978  0.5 -> 0.313  Inexact Rounded

+pwsx4763  power 0.979  0.5 -> 0.989  Inexact Rounded

+pwsx4764  power 0.0979  0.5 -> 0.313  Inexact Rounded

+pwsx4765  power 0.981  0.5 -> 0.990  Inexact Rounded

+pwsx4766  power 0.0981  0.5 -> 0.313  Inexact Rounded

+pwsx4767  power 0.982  0.5 -> 0.991  Inexact Rounded

+pwsx4768  power 0.0982  0.5 -> 0.313  Inexact Rounded

+pwsx4769  power 0.983  0.5 -> 0.991  Inexact Rounded

+pwsx4770  power 0.0983  0.5 -> 0.314  Inexact Rounded

+pwsx4771  power 0.984  0.5 -> 0.992  Inexact Rounded

+pwsx4772  power 0.0984  0.5 -> 0.314  Inexact Rounded

+pwsx4773  power 0.985  0.5 -> 0.992  Inexact Rounded

+pwsx4774  power 0.0985  0.5 -> 0.314  Inexact Rounded

+pwsx4775  power 0.986  0.5 -> 0.993  Inexact Rounded

+pwsx4776  power 0.0986  0.5 -> 0.314  Inexact Rounded

+pwsx4777  power 0.987  0.5 -> 0.993  Inexact Rounded

+pwsx4778  power 0.0987  0.5 -> 0.314  Inexact Rounded

+pwsx4779  power 0.988  0.5 -> 0.994  Inexact Rounded

+pwsx4780  power 0.0988  0.5 -> 0.314  Inexact Rounded

+pwsx4781  power 0.989  0.5 -> 0.994  Inexact Rounded

+pwsx4782  power 0.0989  0.5 -> 0.314  Inexact Rounded

+pwsx4783  power 0.991  0.5 -> 0.995  Inexact Rounded

+pwsx4784  power 0.0991  0.5 -> 0.315  Inexact Rounded

+pwsx4785  power 0.992  0.5 -> 0.996  Inexact Rounded

+pwsx4786  power 0.0992  0.5 -> 0.315  Inexact Rounded

+pwsx4787  power 0.993  0.5 -> 0.996  Inexact Rounded

+pwsx4788  power 0.0993  0.5 -> 0.315  Inexact Rounded

+pwsx4789  power 0.994  0.5 -> 0.997  Inexact Rounded

+pwsx4790  power 0.0994  0.5 -> 0.315  Inexact Rounded

+pwsx4791  power 0.995  0.5 -> 0.997  Inexact Rounded

+pwsx4792  power 0.0995  0.5 -> 0.315  Inexact Rounded

+pwsx4793  power 0.996  0.5 -> 0.998  Inexact Rounded

+pwsx4794  power 0.0996  0.5 -> 0.316  Inexact Rounded

+pwsx4795  power 0.997  0.5 -> 0.998  Inexact Rounded

+pwsx4796  power 0.0997  0.5 -> 0.316  Inexact Rounded

+pwsx4797  power 0.998  0.5 -> 0.999  Inexact Rounded

+pwsx4798  power 0.0998  0.5 -> 0.316  Inexact Rounded

+pwsx4799  power 0.999  0.5 -> 0.999  Inexact Rounded

+pwsx4800  power 0.0999  0.5 -> 0.316  Inexact Rounded

+

+-- A group of precision 4 tests where Hull & Abrham adjustments are

+-- needed in some cases (both up and down) [see Hull1985b]

+rounding:    half_even

+maxExponent: 999

+minexponent: -999

+precision:   4

+pwsx5001  power 0.0118   0.5 -> 0.1086  Inexact Rounded

+pwsx5002  power 0.119    0.5 -> 0.3450  Inexact Rounded

+pwsx5003  power 0.0119   0.5 -> 0.1091  Inexact Rounded

+pwsx5004  power 0.121    0.5 -> 0.3479  Inexact Rounded

+pwsx5005  power 0.0121   0.5 -> 0.1100  Inexact Rounded

+pwsx5006  power 0.122    0.5 -> 0.3493  Inexact Rounded

+pwsx5007  power 0.0122   0.5 -> 0.1105  Inexact Rounded

+pwsx5008  power 0.123    0.5 -> 0.3507  Inexact Rounded

+pwsx5009  power 0.494    0.5 -> 0.7029  Inexact Rounded

+pwsx5010  power 0.0669   0.5 -> 0.2587  Inexact Rounded

+pwsx5011  power 0.9558   0.5 -> 0.9777  Inexact Rounded

+pwsx5012  power 0.9348   0.5 -> 0.9669  Inexact Rounded

+pwsx5013  power 0.9345   0.5 -> 0.9667  Inexact Rounded

+pwsx5014  power 0.09345  0.5 -> 0.3057  Inexact Rounded

+pwsx5015  power 0.9346   0.5 -> 0.9667  Inexact Rounded

+pwsx5016  power 0.09346  0.5 -> 0.3057  Inexact Rounded

+pwsx5017  power 0.9347   0.5 -> 0.9668  Inexact Rounded

+

+-- examples from decArith

+precision: 9

+pwsx700  power  0        0.5 -> '0'

+pwsx701  power  -0       0.5 -> '0'

+pwsx702  power  0.39     0.5 -> 0.624499800    Inexact Rounded

+pwsx703  power  100      0.5 -> '10.0000000'   Inexact Rounded

+pwsx704  power  1.00     0.5 -> '1.00000000'   Inexact Rounded

+pwsx705  power  7        0.5 -> '2.64575131'   Inexact Rounded

+pwsx706  power  10       0.5 -> 3.16227766     Inexact Rounded

+

+-- some one-offs

+precision: 9

+pwsx711  power  0.1      0.5 -> 0.316227766    Inexact Rounded

+pwsx712  power  0.2      0.5 -> 0.447213595    Inexact Rounded

+pwsx713  power  0.3      0.5 -> 0.547722558    Inexact Rounded

+pwsx714  power  0.4      0.5 -> 0.632455532    Inexact Rounded

+pwsx715  power  0.5      0.5 -> 0.707106781    Inexact Rounded

+pwsx716  power  0.6      0.5 -> 0.774596669    Inexact Rounded

+pwsx717  power  0.7      0.5 -> 0.836660027    Inexact Rounded

+pwsx718  power  0.8      0.5 -> 0.894427191    Inexact Rounded

+pwsx719  power  0.9      0.5 -> 0.948683298    Inexact Rounded

+precision: 10               -- note no normalizatoin here

+pwsx720  power +0.1      0.5 -> 0.3162277660   Inexact Rounded

+precision: 11

+pwsx721  power +0.1      0.5 -> 0.31622776602  Inexact Rounded

+precision: 12

+pwsx722  power +0.1      0.5 -> 0.316227766017 Inexact Rounded

+precision: 9

+pwsx723  power  0.39     0.5 -> 0.624499800    Inexact Rounded

+precision: 15

+pwsx724  power  0.39     0.5 -> 0.624499799839840 Inexact Rounded

+

+-- discussion cases

+precision: 7

+pwsx731  power     9    0.5 -> 3.000000  Inexact Rounded

+pwsx732  power   100    0.5 -> 10.00000  Inexact Rounded

+pwsx733  power   123    0.5 -> 11.09054  Inexact Rounded

+pwsx734  power   144    0.5 -> 12.00000  Inexact Rounded

+pwsx735  power   156    0.5 -> 12.49000  Inexact Rounded

+pwsx736  power 10000    0.5 -> 100.0000  Inexact Rounded

+

+-- values close to overflow (if there were input rounding)

+maxexponent: 99

+minexponent: -99

+precision: 5

+pwsx760  power  9.9997E+99    0.5 -> 9.9998E+49 Inexact Rounded

+pwsx761  power  9.9998E+99    0.5 -> 9.9999E+49 Inexact Rounded

+pwsx762  power  9.9999E+99    0.5 -> 9.9999E+49 Inexact Rounded

+pwsx763  power  9.99991E+99   0.5 -> 1.0000E+50 Inexact Rounded

+pwsx764  power  9.99994E+99   0.5 -> 1.0000E+50 Inexact Rounded

+pwsx765  power  9.99995E+99   0.5 -> 1.0000E+50 Inexact Rounded

+pwsx766  power  9.99999E+99   0.5 -> 1.0000E+50 Inexact Rounded

+precision: 9

+pwsx770  power  9.9997E+99    0.5 -> 9.99985000E+49  Inexact Rounded

+pwsx771  power  9.9998E+99    0.5 -> 9.99990000E+49  Inexact Rounded

+pwsx772  power  9.9999E+99    0.5 -> 9.99995000E+49  Inexact Rounded

+pwsx773  power  9.99991E+99   0.5 -> 9.99995500E+49  Inexact Rounded

+pwsx774  power  9.99994E+99   0.5 -> 9.99997000E+49  Inexact Rounded

+pwsx775  power  9.99995E+99   0.5 -> 9.99997500E+49  Inexact Rounded

+pwsx776  power  9.99999E+99   0.5 -> 9.99999500E+49  Inexact Rounded

+precision: 20

+pwsx780  power  9.9997E+99    0.5 -> '9.9998499988749831247E+49' Inexact Rounded

+pwsx781  power  9.9998E+99    0.5 -> '9.9998999994999949999E+49' Inexact Rounded

+pwsx782  power  9.9999E+99    0.5 -> '9.9999499998749993750E+49' Inexact Rounded

+pwsx783  power  9.99991E+99   0.5 -> '9.9999549998987495444E+49' Inexact Rounded

+pwsx784  power  9.99994E+99   0.5 -> '9.9999699999549998650E+49' Inexact Rounded

+pwsx785  power  9.99995E+99   0.5 -> '9.9999749999687499219E+49' Inexact Rounded

+pwsx786  power  9.99999E+99   0.5 -> '9.9999949999987499994E+49' Inexact Rounded

+

+-- subnormals and underflows [these can only result when eMax is < digits+1]

+-- Etiny = -(Emax + (precision-1))

+-- start with subnormal operands and normal results

+maxexponent: 9

+minexponent: -9

+precision: 9                -- Etiny=-17

+pwsx800  power  1E-17    0.5 -> 3.16227766E-9 Inexact Rounded

+pwsx801  power 10E-17    0.5 -> 1.00000000E-8 Inexact Rounded

+precision: 10               -- Etiny=-18

+pwsx802  power 10E-18    0.5 -> 3.162277660E-9 Inexact Rounded

+pwsx803  power  1E-18    0.5 -> 1.000000000E-9 Inexact Rounded

+

+precision: 11               -- Etiny=-19

+pwsx804  power  1E-19    0.5 -> 3.162277660E-10 Underflow Subnormal Inexact Rounded

+-- The next test should be skipped for decNumber

+pwsx805  power 10E-19    0.5 -> 1.0000000000E-9 Inexact Rounded

+precision: 12               -- Etiny=-20

+pwsx806  power 10E-20    0.5 -> 3.1622776602E-10 Underflow Subnormal Inexact Rounded

+pwsx807  power  1E-20    0.5 -> 1.0000000000E-10 Underflow Subnormal Inexact Rounded

+

+precision: 13               -- Etiny=-21

+pwsx808  power  1E-21    0.5 -> 3.1622776602E-11 Underflow Subnormal Inexact Rounded

+pwsx809  power 10E-21    0.5 -> 1.00000000000E-10 Underflow Subnormal Inexact Rounded

+precision: 14               -- Etiny=-22

+pwsx810  power  1E-21    0.5 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded

+pwsx811  power 10E-22    0.5 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded

+pwsx812  power  1E-22    0.5 -> 1.00000000000E-11 Underflow Subnormal Inexact Rounded

+

+

+-- special values

+maxexponent: 999

+minexponent: -999

+pwsx820  power   Inf     0.5 -> Infinity

+pwsx821  power  -Inf     0.5 -> NaN Invalid_operation

+pwsx822  power   NaN     0.5 -> NaN

+pwsx823  power  sNaN     0.5 -> NaN Invalid_operation

+-- propagating NaNs

+pwsx824  power  sNaN123  0.5 -> NaN123 Invalid_operation

+pwsx825  power -sNaN321  0.5 -> -NaN321 Invalid_operation

+pwsx826  power   NaN456  0.5 -> NaN456

+pwsx827  power  -NaN654  0.5 -> -NaN654

+pwsx828  power   NaN1    0.5 -> NaN1

+

+-- Null test

+pwsx900  power  #  0.5 -> NaN Invalid_operation

diff --git a/Lib/test/decimaltestdata/quantize.decTest b/Lib/test/decimaltestdata/quantize.decTest
index dc1b130..1e5511f 100644
--- a/Lib/test/decimaltestdata/quantize.decTest
+++ b/Lib/test/decimaltestdata/quantize.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- quantize.decTest -- decimal quantize operation                     --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,11 +17,12 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- Most of the tests here assume a "regular pattern", where the
 -- sign and coefficient are +1.
 -- 2004.03.15 Underflow for quantize is suppressed
+-- 2005.06.08 More extensive tests for 'does not fit'
 
 extended:    1
 precision:   9
@@ -123,10 +124,6 @@
 quax124 quantize   1.05  1e-3 ->  1.050
 quax125 quantize   1.05  1e-2 ->  1.05
 quax126 quantize   1.05  1e-1 ->  1.1 Inexact Rounded
-quax127 quantize   1.05   1e0 ->  1 Inexact Rounded
-quax128 quantize   1.05  1e-3 ->  1.050
-quax129 quantize   1.05  1e-2 ->  1.05
-quax130 quantize   1.05  1e-1 ->  1.1 Inexact Rounded
 quax131 quantize   1.05   1e0 ->  1 Inexact Rounded
 quax132 quantize   1.06  1e-3 ->  1.060
 quax133 quantize   1.06  1e-2 ->  1.06
@@ -435,6 +432,102 @@
 quax472 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
 quax473 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
 
+precision: 7
+quax900 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
+quax901 quantize   9.999E-15    1e-21 ->  9.999000E-15
+quax902 quantize   9.999E-15    1e-20 ->  9.99900E-15
+quax903 quantize   9.999E-15    1e-19 ->  9.9990E-15
+quax904 quantize   9.999E-15    1e-18 ->  9.999E-15
+quax905 quantize   9.999E-15    1e-17 ->  1.000E-14 Inexact Rounded
+quax906 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
+quax907 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
+quax908 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
+quax909 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
+quax910 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
+quax911 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
+quax912 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
+quax913 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
+quax914 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
+quax915 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
+quax916 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
+quax917 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
+quax918 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
+quax919 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
+quax920 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
+quax921 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
+quax922 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
+quax923 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
+
+precision: 6
+quax930 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
+quax931 quantize   9.999E-15    1e-21 ->  NaN       Invalid_operation
+quax932 quantize   9.999E-15    1e-20 ->  9.99900E-15
+quax933 quantize   9.999E-15    1e-19 ->  9.9990E-15
+quax934 quantize   9.999E-15    1e-18 ->  9.999E-15
+quax935 quantize   9.999E-15    1e-17 ->  1.000E-14 Inexact Rounded
+quax936 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
+quax937 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
+quax938 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
+quax939 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
+quax940 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
+quax941 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
+quax942 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
+quax943 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
+quax944 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
+quax945 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
+quax946 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
+quax947 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
+quax948 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
+quax949 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
+quax950 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
+quax951 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
+quax952 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
+quax953 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
+
+precision: 3
+quax960 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
+quax961 quantize   9.999E-15    1e-21 ->  NaN       Invalid_operation
+quax962 quantize   9.999E-15    1e-20 ->  NaN       Invalid_operation
+quax963 quantize   9.999E-15    1e-19 ->  NaN       Invalid_operation
+quax964 quantize   9.999E-15    1e-18 ->  NaN       Invalid_operation
+quax965 quantize   9.999E-15    1e-17 ->  NaN       Invalid_operation
+quax966 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
+quax967 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
+quax968 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
+quax969 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
+quax970 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
+quax971 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
+quax972 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
+quax973 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
+quax974 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
+quax975 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
+quax976 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
+quax977 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
+quax978 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
+quax979 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
+quax980 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
+quax981 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
+quax982 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
+quax983 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
+
+-- Fung Lee's case & similar
+precision: 3
+quax1001 quantize  0.000        0.001 ->  0.000
+quax1002 quantize  0.001        0.001 ->  0.001
+quax1003 quantize  0.0012       0.001 ->  0.001     Inexact Rounded
+quax1004 quantize  0.0018       0.001 ->  0.002     Inexact Rounded
+quax1005 quantize  0.501        0.001 ->  0.501
+quax1006 quantize  0.5012       0.001 ->  0.501     Inexact Rounded
+quax1007 quantize  0.5018       0.001 ->  0.502     Inexact Rounded
+quax1008 quantize  0.999        0.001 ->  0.999
+quax1009 quantize  0.9992       0.001 ->  0.999     Inexact Rounded
+quax1010 quantize  0.9998       0.001 ->  NaN       Invalid_operation
+quax1011 quantize  1.0001       0.001 ->  NaN       Invalid_operation
+quax1012 quantize  1.0051       0.001 ->  NaN       Invalid_operation
+quax1013 quantize  1.0551       0.001 ->  NaN       Invalid_operation
+quax1014 quantize  1.5551       0.001 ->  NaN       Invalid_operation
+quax1015 quantize  1.9999       0.001 ->  NaN       Invalid_operation
+
 -- long operand checks [rhs checks removed]
 maxexponent: 999
 minexponent: -999
@@ -775,6 +868,81 @@
 quax865 quantize   1  1e-2147483648 -> NaN Invalid_operation
 quax866 quantize   1  1e-2147483649 -> NaN Invalid_operation
 
+-- More from Fung Lee
+precision:   16
+rounding:    half_up
+maxExponent: 384
+minExponent: -383
+quax1021 quantize    8.666666666666000E+384     1.000000000000000E+384  -> 8.666666666666000E+384
+quax1022 quantize 64#8.666666666666000E+384  64#1.000000000000000E+384  -> 8.666666666666000E+384
+quax1023 quantize 64#8.666666666666000E+384  128#1.000000000000000E+384 -> 8.666666666666000E+384
+quax1024 quantize 64#8.666666666666000E+384  64#1E+384                  -> 8.666666666666000E+384
+quax1025 quantize 64#8.666666666666000E+384  64#1E+384   -> 64#8.666666666666000E+384
+quax1026 quantize 64#8.666666666666000E+384 128#1E+384   -> 64#9E+384 Inexact Rounded Clamped
+quax1027 quantize 64#8.666666666666000E+323  64#1E+31    -> NaN Invalid_operation
+quax1028 quantize 64#8.666666666666000E+323 128#1E+31    -> NaN Invalid_operation
+quax1029 quantize 64#8.66666666E+3          128#1E+10    -> 64#0E10 Inexact Rounded
+quax1030 quantize    8.66666666E+3              1E+3     -> 9E+3 Inexact Rounded
+
+-- Int and uInt32 edge values for testing conversions
+quax1040 quantize -2147483646     0 -> -2147483646
+quax1041 quantize -2147483647     0 -> -2147483647
+quax1042 quantize -2147483648     0 -> -2147483648
+quax1043 quantize -2147483649     0 -> -2147483649
+quax1044 quantize  2147483646     0 ->  2147483646
+quax1045 quantize  2147483647     0 ->  2147483647
+quax1046 quantize  2147483648     0 ->  2147483648
+quax1047 quantize  2147483649     0 ->  2147483649
+quax1048 quantize  4294967294     0 ->  4294967294
+quax1049 quantize  4294967295     0 ->  4294967295
+quax1050 quantize  4294967296     0 ->  4294967296
+quax1051 quantize  4294967297     0 ->  4294967297
+-- and powers of ten for same
+quax1101 quantize  5000000000     0 ->  5000000000
+quax1102 quantize  4000000000     0 ->  4000000000
+quax1103 quantize  2000000000     0 ->  2000000000
+quax1104 quantize  1000000000     0 ->  1000000000
+quax1105 quantize  0100000000     0 ->  100000000
+quax1106 quantize  0010000000     0 ->  10000000
+quax1107 quantize  0001000000     0 ->  1000000
+quax1108 quantize  0000100000     0 ->  100000
+quax1109 quantize  0000010000     0 ->  10000
+quax1110 quantize  0000001000     0 ->  1000
+quax1111 quantize  0000000100     0 ->  100
+quax1112 quantize  0000000010     0 ->  10
+quax1113 quantize  0000000001     0 ->  1
+quax1114 quantize  0000000000     0 ->  0
+-- and powers of ten for same
+quax1121 quantize -5000000000     0 -> -5000000000
+quax1122 quantize -4000000000     0 -> -4000000000
+quax1123 quantize -2000000000     0 -> -2000000000
+quax1124 quantize -1000000000     0 -> -1000000000
+quax1125 quantize -0100000000     0 -> -100000000
+quax1126 quantize -0010000000     0 -> -10000000
+quax1127 quantize -0001000000     0 -> -1000000
+quax1128 quantize -0000100000     0 -> -100000
+quax1129 quantize -0000010000     0 -> -10000
+quax1130 quantize -0000001000     0 -> -1000
+quax1131 quantize -0000000100     0 -> -100
+quax1132 quantize -0000000010     0 -> -10
+quax1133 quantize -0000000001     0 -> -1
+quax1134 quantize -0000000000     0 -> -0
+
+-- Some miscellany
+precision:   34
+rounding:    half_up
+maxExponent: 6144
+minExponent: -6143
+--                             1         2         3
+--                   1 234567890123456789012345678901234
+quax0a1 quantize     8.555555555555555555555555555555555E+6143  1E+6143      -> 9E+6143   Inexact Rounded
+quax0a2 quantize 128#8.555555555555555555555555555555555E+6143  128#1E+6143  -> 8.55555555555555555555555555555556E+6143   Rounded Inexact
+quax0a3 quantize 128#8.555555555555555555555555555555555E+6144  128#1E+6144  -> 8.555555555555555555555555555555555E+6144
+
+-- payload decapitate
+precision: 5
+quax62100 quantize 11 -sNaN1234567890 -> -NaN67890  Invalid_operation
+
 -- Null tests
-quax900 quantize 10    # -> NaN Invalid_operation
-quax901 quantize  # 1e10 -> NaN Invalid_operation
+quax998 quantize 10    # -> NaN Invalid_operation
+quax999 quantize  # 1e10 -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/randomBound32.decTest b/Lib/test/decimaltestdata/randomBound32.decTest
index 308589c..0d5881d 100644
--- a/Lib/test/decimaltestdata/randomBound32.decTest
+++ b/Lib/test/decimaltestdata/randomBound32.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- randomBound32.decTest -- decimal testcases -- boundaries near 32   --
--- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- These testcases test calculations at precisions 31, 32, and 33, to
 -- exercise the boundaries around 2**5
@@ -90,7 +90,7 @@
 divx3008 divide 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -8.677177026223536475531592432118E-21 Inexact Rounded
 dvix3008 divideint 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -0
 mulx3008 multiply 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -6.543788575292743281456830701127E+41 Inexact Rounded
-powx3008 power 75353574493.84484153484918212042 -9 -> 1.276630670287906925570645490708E-98 Inexact Rounded
+powx3008 power 75353574493.84484153484918212042 -9 -> 1.276630670287906925570645490707E-98 Inexact Rounded
 remx3008 remainder 75353574493.84484153484918212042 -8684111695095849922263044191221 -> 75353574493.84484153484918212042
 subx3008 subtract 75353574493.84484153484918212042 -8684111695095849922263044191221 -> 8684111695095849922338397765715 Inexact Rounded
 addx3009 add 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 6907061.073440802792400108035410 Inexact Rounded
@@ -1040,7 +1040,7 @@
 divx3226 divide 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> -8.1057651538555854520994438038537E+673 Inexact Rounded
 dvix3226 divideint 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> NaN Division_impossible
 mulx3226 multiply 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> -2.7865227773649353769876975366506E+737 Inexact Rounded
-powx3226 power 47.525676459351505682005359699680E+704 -6 -> 8.6782100393941226535150385475463E-4235 Inexact Rounded
+powx3226 power 47.525676459351505682005359699680E+704 -6 -> 8.6782100393941226535150385475464E-4235 Inexact Rounded
 remx3226 remainder 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> NaN Division_impossible
 subx3226 subtract 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> 4.7525676459351505682005359699680E+705 Inexact Rounded
 addx3227 add -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> -74396977890406.153948943614775470 Inexact Rounded
diff --git a/Lib/test/decimaltestdata/randoms.decTest b/Lib/test/decimaltestdata/randoms.decTest
index 5493f0c..a03b8d5 100644
--- a/Lib/test/decimaltestdata/randoms.decTest
+++ b/Lib/test/decimaltestdata/randoms.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- randoms.decTest -- decimal random testcases                        --
--- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 maxexponent: 999999999
@@ -264,7 +264,7 @@
 xdiv030 divide -225094.28 -88.7723542 -> 2535.63491 Inexact Rounded
 xdvi030 divideint -225094.28 -88.7723542 -> 2535
 xmul030 multiply -225094.28 -88.7723542 -> 19982149.2 Inexact Rounded
-xpow030 power -225094.28 -89 -> -4.36076964E-477 Inexact Rounded
+xpow030 power -225094.28 -89 -> -4.36076965E-477 Inexact Rounded
 xrem030 remainder -225094.28 -88.7723542 -> -56.3621030
 xsub030 subtract -225094.28 -88.7723542 -> -225005.508 Inexact Rounded
 xadd031 add 50.4442340 82.7952169E+880120759 -> 8.27952169E+880120760 Inexact Rounded
@@ -295,7 +295,7 @@
 xcom034 compare 592.142173E-419941416 -3.46079109E-844011845 -> 1
 xdiv034 divide 592.142173E-419941416 -3.46079109E-844011845 -> -1.71100236E+424070431 Inexact Rounded
 xdvi034 divideint 592.142173E-419941416 -3.46079109E-844011845 -> NaN Division_impossible
-xmul034 multiply 592.142173E-419941416 -3.46079109E-844011845 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul034 multiply 592.142173E-419941416 -3.46079109E-844011845 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow034 power 592.142173E-419941416 -3 -> Infinity Overflow Inexact Rounded
 xrem034 remainder 592.142173E-419941416 -3.46079109E-844011845 -> NaN Division_impossible
 xsub034 subtract 592.142173E-419941416 -3.46079109E-844011845 -> 5.92142173E-419941414 Inexact Rounded
@@ -487,7 +487,7 @@
 xcom058 compare 151795163E-371727182 -488.09788E-738852245 -> 1
 xdiv058 divide 151795163E-371727182 -488.09788E-738852245 -> -3.10993285E+367125068 Inexact Rounded
 xdvi058 divideint 151795163E-371727182 -488.09788E-738852245 -> NaN Division_impossible
-xmul058 multiply 151795163E-371727182 -488.09788E-738852245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul058 multiply 151795163E-371727182 -488.09788E-738852245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow058 power 151795163E-371727182 -5 -> Infinity Overflow Inexact Rounded
 xrem058 remainder 151795163E-371727182 -488.09788E-738852245 -> NaN Division_impossible
 xsub058 subtract 151795163E-371727182 -488.09788E-738852245 -> 1.51795163E-371727174 Inexact Rounded
@@ -568,7 +568,7 @@
 xdiv068 divide -12393257.2 76803689E+949125770 -> -1.61362786E-949125771 Inexact Rounded
 xdvi068 divideint -12393257.2 76803689E+949125770 -> -0
 xmul068 multiply -12393257.2 76803689E+949125770 -> -9.51847872E+949125784 Inexact Rounded
-xpow068 power -12393257.2 8 -> 5.56523750E+56 Inexact Rounded
+xpow068 power -12393257.2 8 -> 5.56523749E+56 Inexact Rounded
 xrem068 remainder -12393257.2 76803689E+949125770 -> -12393257.2
 xsub068 subtract -12393257.2 76803689E+949125770 -> -7.68036890E+949125777 Inexact Rounded
 xadd069 add -754771634.E+716555026 -292336.311 -> -7.54771634E+716555034 Inexact Rounded
@@ -775,7 +775,7 @@
 xcom094 compare -671.507198E-908587890 3057429.32E-555230623 -> -1
 xdiv094 divide -671.507198E-908587890 3057429.32E-555230623 -> -2.19631307E-353357271 Inexact Rounded
 xdvi094 divideint -671.507198E-908587890 3057429.32E-555230623 -> -0
-xmul094 multiply -671.507198E-908587890 3057429.32E-555230623 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul094 multiply -671.507198E-908587890 3057429.32E-555230623 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow094 power -671.507198E-908587890 3 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xrem094 remainder -671.507198E-908587890 3057429.32E-555230623 -> -6.71507198E-908587888
 xsub094 subtract -671.507198E-908587890 3057429.32E-555230623 -> -3.05742932E-555230617 Inexact Rounded
@@ -856,7 +856,7 @@
 xdiv104 divide 553527296. -7924.40185 -> -69850.9877 Inexact Rounded
 xdvi104 divideint 553527296. -7924.40185 -> -69850
 xmul104 multiply 553527296. -7924.40185 -> -4.38637273E+12 Inexact Rounded
-xpow104 power 553527296. -7924 -> 2.32397213E-69281 Inexact Rounded
+xpow104 power 553527296. -7924 -> 2.32397214E-69281 Inexact Rounded
 xrem104 remainder 553527296. -7924.40185 -> 7826.77750
 xsub104 subtract 553527296. -7924.40185 -> 553535220 Inexact Rounded
 xadd105 add -38.7465207 64936.2942 -> 64897.5477 Inexact Rounded
@@ -919,7 +919,7 @@
 xcom112 compare -51.1632090E-753968082 8.96207471E-585797887 -> -1
 xdiv112 divide -51.1632090E-753968082 8.96207471E-585797887 -> -5.70885768E-168170195 Inexact Rounded
 xdvi112 divideint -51.1632090E-753968082 8.96207471E-585797887 -> -0
-xmul112 multiply -51.1632090E-753968082 8.96207471E-585797887 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul112 multiply -51.1632090E-753968082 8.96207471E-585797887 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow112 power -51.1632090E-753968082 9 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xrem112 remainder -51.1632090E-753968082 8.96207471E-585797887 -> -5.11632090E-753968081
 xsub112 subtract -51.1632090E-753968082 8.96207471E-585797887 -> -8.96207471E-585797887 Inexact Rounded
@@ -989,7 +989,7 @@
 xsub120 subtract 14239029. -36527.2221 -> 14275556.2 Inexact Rounded
 xadd121 add 72333.2654E-544425548 -690.664836E+662155120 -> -6.90664836E+662155122 Inexact Rounded
 xcom121 compare 72333.2654E-544425548 -690.664836E+662155120 -> 1
-xdiv121 divide 72333.2654E-544425548 -690.664836E+662155120 -> -0E-1000000007 Inexact Rounded Underflow Subnormal
+xdiv121 divide 72333.2654E-544425548 -690.664836E+662155120 -> -0E-1000000007 Inexact Rounded Underflow Subnormal Clamped
 xdvi121 divideint 72333.2654E-544425548 -690.664836E+662155120 -> -0
 xmul121 multiply 72333.2654E-544425548 -690.664836E+662155120 -> -4.99580429E+117729579 Inexact Rounded
 xpow121 power 72333.2654E-544425548 -7 -> Infinity Overflow Inexact Rounded
@@ -1005,7 +1005,7 @@
 xsub122 subtract -37721.1567E-115787341 -828949864E-76251747 -> 8.28949864E-76251739 Inexact Rounded
 xadd123 add -2078852.83E-647080089 -119779858.E+734665461 -> -1.19779858E+734665469 Inexact Rounded
 xcom123 compare -2078852.83E-647080089 -119779858.E+734665461 -> 1
-xdiv123 divide -2078852.83E-647080089 -119779858.E+734665461 -> 0E-1000000007 Inexact Rounded Underflow Subnormal
+xdiv123 divide -2078852.83E-647080089 -119779858.E+734665461 -> 0E-1000000007 Inexact Rounded Underflow Subnormal Clamped
 xdvi123 divideint -2078852.83E-647080089 -119779858.E+734665461 -> 0
 xmul123 multiply -2078852.83E-647080089 -119779858.E+734665461 -> 2.49004697E+87585386 Inexact Rounded
 xpow123 power -2078852.83E-647080089 -1 -> -4.81034533E+647080082 Inexact Rounded
@@ -1183,7 +1183,7 @@
 xcom145 compare -477067757.E-961684940 7.70122608E-741072245 -> -1
 xdiv145 divide -477067757.E-961684940 7.70122608E-741072245 -> -6.19469877E-220612688 Inexact Rounded
 xdvi145 divideint -477067757.E-961684940 7.70122608E-741072245 -> -0
-xmul145 multiply -477067757.E-961684940 7.70122608E-741072245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul145 multiply -477067757.E-961684940 7.70122608E-741072245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow145 power -477067757.E-961684940 8 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xrem145 remainder -477067757.E-961684940 7.70122608E-741072245 -> -4.77067757E-961684932
 xsub145 subtract -477067757.E-961684940 7.70122608E-741072245 -> -7.70122608E-741072245 Inexact Rounded
@@ -1296,7 +1296,7 @@
 xdiv159 divide -18861647. 99794586.7 -> -0.189004711 Inexact Rounded
 xdvi159 divideint -18861647. 99794586.7 -> -0
 xmul159 multiply -18861647. 99794586.7 -> -1.88229027E+15 Inexact Rounded
-xpow159 power -18861647. 99794587 -> -4.28957460E+726063462 Inexact Rounded
+xpow159 power -18861647. 99794587 -> -4.28957459E+726063462 Inexact Rounded
 xrem159 remainder -18861647. 99794586.7 -> -18861647.0
 xsub159 subtract -18861647. 99794586.7 -> -118656234 Inexact Rounded
 xadd160 add 322192.407 461.67044 -> 322654.077 Inexact Rounded
@@ -1519,7 +1519,7 @@
 xcom187 compare -29.356551E-282816139 37141748E-903397821 -> -1
 xdiv187 divide -29.356551E-282816139 37141748E-903397821 -> -7.90392283E+620581675 Inexact Rounded
 xdvi187 divideint -29.356551E-282816139 37141748E-903397821 -> NaN Division_impossible
-xmul187 multiply -29.356551E-282816139 37141748E-903397821 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul187 multiply -29.356551E-282816139 37141748E-903397821 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow187 power -29.356551E-282816139 4 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xrem187 remainder -29.356551E-282816139 37141748E-903397821 -> NaN Division_impossible
 xsub187 subtract -29.356551E-282816139 37141748E-903397821 -> -2.93565510E-282816138 Inexact Rounded
@@ -1760,7 +1760,7 @@
 xdiv217 divide 7428219.97 667.326760 -> 11131.3084 Inexact Rounded
 xdvi217 divideint 7428219.97 667.326760 -> 11131
 xmul217 multiply 7428219.97 667.326760 -> 4.95704997E+9 Inexact Rounded
-xpow217 power 7428219.97 667 -> 7.58808510E+4582 Inexact Rounded
+xpow217 power 7428219.97 667 -> 7.58808509E+4582 Inexact Rounded
 xrem217 remainder 7428219.97 667.326760 -> 205.804440
 xsub217 subtract 7428219.97 667.326760 -> 7427552.64 Inexact Rounded
 xadd218 add -7291.19212 209.64966E-588526476 -> -7291.19212 Inexact Rounded
@@ -2200,7 +2200,7 @@
 xdiv272 divide 513115529. 27775075.6E+217133352 -> 1.84739562E-217133351 Inexact Rounded
 xdvi272 divideint 513115529. 27775075.6E+217133352 -> 0
 xmul272 multiply 513115529. 27775075.6E+217133352 -> 1.42518226E+217133368 Inexact Rounded
-xpow272 power 513115529. 3 -> 1.35096929E+26 Inexact Rounded
+xpow272 power 513115529. 3 -> 1.35096928E+26 Inexact Rounded
 xrem272 remainder 513115529. 27775075.6E+217133352 -> 513115529
 xsub272 subtract 513115529. 27775075.6E+217133352 -> -2.77750756E+217133359 Inexact Rounded
 xadd273 add -247157.208 -532990.453 -> -780147.661
@@ -2327,7 +2327,7 @@
 xcom288 compare -4.18074650E-858746879 571035.277E-279409165 -> -1
 xdiv288 divide -4.18074650E-858746879 571035.277E-279409165 -> -7.32134540E-579337720 Inexact Rounded
 xdvi288 divideint -4.18074650E-858746879 571035.277E-279409165 -> -0
-xmul288 multiply -4.18074650E-858746879 571035.277E-279409165 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul288 multiply -4.18074650E-858746879 571035.277E-279409165 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow288 power -4.18074650E-858746879 6 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xrem288 remainder -4.18074650E-858746879 571035.277E-279409165 -> -4.18074650E-858746879
 xsub288 subtract -4.18074650E-858746879 571035.277E-279409165 -> -5.71035277E-279409160 Inexact Rounded
@@ -2599,7 +2599,7 @@
 xcom322 compare 82.4185291E-321919303 -215747737.E-995147400 -> 1
 xdiv322 divide 82.4185291E-321919303 -215747737.E-995147400 -> -3.82013412E+673228090 Inexact Rounded
 xdvi322 divideint 82.4185291E-321919303 -215747737.E-995147400 -> NaN Division_impossible
-xmul322 multiply 82.4185291E-321919303 -215747737.E-995147400 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul322 multiply 82.4185291E-321919303 -215747737.E-995147400 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow322 power 82.4185291E-321919303 -2 -> 1.47214396E+643838602 Inexact Rounded
 xrem322 remainder 82.4185291E-321919303 -215747737.E-995147400 -> NaN Division_impossible
 xsub322 subtract 82.4185291E-321919303 -215747737.E-995147400 -> 8.24185291E-321919302 Inexact Rounded
@@ -2640,7 +2640,7 @@
 xdiv327 divide 2512953.3 -3769170.35E-993621645 -> -6.66712583E+993621644 Inexact Rounded
 xdvi327 divideint 2512953.3 -3769170.35E-993621645 -> NaN Division_impossible
 xmul327 multiply 2512953.3 -3769170.35E-993621645 -> -9.47174907E-993621633 Inexact Rounded
-xpow327 power 2512953.3 -4 -> 2.50762349E-26 Inexact Rounded
+xpow327 power 2512953.3 -4 -> 2.50762348E-26 Inexact Rounded
 xrem327 remainder 2512953.3 -3769170.35E-993621645 -> NaN Division_impossible
 xsub327 subtract 2512953.3 -3769170.35E-993621645 -> 2512953.30 Inexact Rounded
 xadd328 add -682.796370 71131.0224 -> 70448.2260 Inexact Rounded
@@ -2656,7 +2656,7 @@
 xdiv329 divide 89.9997490 -4993.69831 -> -0.0180226644 Inexact Rounded
 xdvi329 divideint 89.9997490 -4993.69831 -> -0
 xmul329 multiply 89.9997490 -4993.69831 -> -449431.594 Inexact Rounded
-xpow329 power 89.9997490 -4994 -> 3.30336526E-9760 Inexact Rounded
+xpow329 power 89.9997490 -4994 -> 3.30336525E-9760 Inexact Rounded
 xrem329 remainder 89.9997490 -4993.69831 -> 89.9997490
 xsub329 subtract 89.9997490 -4993.69831 -> 5083.69806 Inexact Rounded
 xadd330 add 76563354.6E-112338836 278271.585E-511481095 -> 7.65633546E-112338829 Inexact Rounded
@@ -2821,7 +2821,7 @@
 xsub349 subtract -4037911.02E+641367645 29.5713010 -> -4.03791102E+641367651 Inexact Rounded
 xadd350 add -688755561.E-95301699 978.275312E+913812609 -> 9.78275312E+913812611 Inexact Rounded
 xcom350 compare -688755561.E-95301699 978.275312E+913812609 -> -1
-xdiv350 divide -688755561.E-95301699 978.275312E+913812609 -> -0E-1000000007 Inexact Rounded Underflow Subnormal
+xdiv350 divide -688755561.E-95301699 978.275312E+913812609 -> -0E-1000000007 Inexact Rounded Underflow Subnormal Clamped
 xdvi350 divideint -688755561.E-95301699 978.275312E+913812609 -> -0
 xmul350 multiply -688755561.E-95301699 978.275312E+913812609 -> -6.73792561E+818510921 Inexact Rounded
 xpow350 power -688755561.E-95301699 10 -> 2.40243244E-953016902 Inexact Rounded
@@ -3024,7 +3024,7 @@
 xdiv375 divide -5549320.1 -93580684.1 -> 0.0592998454 Inexact Rounded
 xdvi375 divideint -5549320.1 -93580684.1 -> 0
 xmul375 multiply -5549320.1 -93580684.1 -> 5.19309171E+14 Inexact Rounded
-xpow375 power -5549320.1 -93580684 -> 4.20662080E-631130572 Inexact Rounded
+xpow375 power -5549320.1 -93580684 -> 4.20662079E-631130572 Inexact Rounded
 xrem375 remainder -5549320.1 -93580684.1 -> -5549320.1
 xsub375 subtract -5549320.1 -93580684.1 -> 88031364.0
 xadd376 add -14677053.1 -25784.7358 -> -14702837.8 Inexact Rounded
@@ -3191,7 +3191,7 @@
 xcom396 compare 4880.06442E-382222621 -115627239E-912834031 -> 1
 xdiv396 divide 4880.06442E-382222621 -115627239E-912834031 -> -4.22051453E+530611405 Inexact Rounded
 xdvi396 divideint 4880.06442E-382222621 -115627239E-912834031 -> NaN Division_impossible
-xmul396 multiply 4880.06442E-382222621 -115627239E-912834031 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul396 multiply 4880.06442E-382222621 -115627239E-912834031 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow396 power 4880.06442E-382222621 -1 -> 2.04915328E+382222617 Inexact Rounded
 xrem396 remainder 4880.06442E-382222621 -115627239E-912834031 -> NaN Division_impossible
 xsub396 subtract 4880.06442E-382222621 -115627239E-912834031 -> 4.88006442E-382222618 Inexact Rounded
@@ -3295,7 +3295,7 @@
 xcom409 compare -54.3684171E-807210192 1.04592973E-984041807 -> -1
 xdiv409 divide -54.3684171E-807210192 1.04592973E-984041807 -> -5.19809463E+176831616 Inexact Rounded
 xdvi409 divideint -54.3684171E-807210192 1.04592973E-984041807 -> NaN Division_impossible
-xmul409 multiply -54.3684171E-807210192 1.04592973E-984041807 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul409 multiply -54.3684171E-807210192 1.04592973E-984041807 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow409 power -54.3684171E-807210192 1 -> -5.43684171E-807210191
 xrem409 remainder -54.3684171E-807210192 1.04592973E-984041807 -> NaN Division_impossible
 xsub409 subtract -54.3684171E-807210192 1.04592973E-984041807 -> -5.43684171E-807210191 Inexact Rounded
@@ -3391,7 +3391,7 @@
 xcom421 compare -4.09492571E-301749490 434.20199E-749390952 -> -1
 xdiv421 divide -4.09492571E-301749490 434.20199E-749390952 -> -9.43092341E+447641459 Inexact Rounded
 xdvi421 divideint -4.09492571E-301749490 434.20199E-749390952 -> NaN Division_impossible
-xmul421 multiply -4.09492571E-301749490 434.20199E-749390952 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul421 multiply -4.09492571E-301749490 434.20199E-749390952 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow421 power -4.09492571E-301749490 4 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xrem421 remainder -4.09492571E-301749490 434.20199E-749390952 -> NaN Division_impossible
 xsub421 subtract -4.09492571E-301749490 434.20199E-749390952 -> -4.09492571E-301749490 Inexact Rounded
@@ -3423,7 +3423,7 @@
 xcom425 compare 6.88891136E-935467395 -785049.562E-741671442 -> 1
 xdiv425 divide 6.88891136E-935467395 -785049.562E-741671442 -> -8.77512923E-193795959 Inexact Rounded
 xdvi425 divideint 6.88891136E-935467395 -785049.562E-741671442 -> -0
-xmul425 multiply 6.88891136E-935467395 -785049.562E-741671442 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul425 multiply 6.88891136E-935467395 -785049.562E-741671442 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow425 power 6.88891136E-935467395 -8 -> Infinity Overflow Inexact Rounded
 xrem425 remainder 6.88891136E-935467395 -785049.562E-741671442 -> 6.88891136E-935467395
 xsub425 subtract 6.88891136E-935467395 -785049.562E-741671442 -> 7.85049562E-741671437 Inexact Rounded
@@ -3535,7 +3535,7 @@
 xcom439 compare 971113.655E-695540249 -419351120E-977743823 -> 1
 xdiv439 divide 971113.655E-695540249 -419351120E-977743823 -> -2.31575310E+282203571 Inexact Rounded
 xdvi439 divideint 971113.655E-695540249 -419351120E-977743823 -> NaN Division_impossible
-xmul439 multiply 971113.655E-695540249 -419351120E-977743823 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
+xmul439 multiply 971113.655E-695540249 -419351120E-977743823 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 xpow439 power 971113.655E-695540249 -4 -> Infinity Overflow Inexact Rounded
 xrem439 remainder 971113.655E-695540249 -419351120E-977743823 -> NaN Division_impossible
 xsub439 subtract 971113.655E-695540249 -419351120E-977743823 -> 9.71113655E-695540244 Inexact Rounded
@@ -3600,7 +3600,7 @@
 xdiv447 divide -9.95836312 -866466703 -> 1.14930707E-8 Inexact Rounded
 xdvi447 divideint -9.95836312 -866466703 -> 0
 xmul447 multiply -9.95836312 -866466703 -> 8.62859006E+9 Inexact Rounded
-xpow447 power -9.95836312 -866466703 -> -6.71744368E-864896630 Inexact Rounded
+xpow447 power -9.95836312 -866466703 -> -6.71744369E-864896630 Inexact Rounded
 xrem447 remainder -9.95836312 -866466703 -> -9.95836312
 xsub447 subtract -9.95836312 -866466703 -> 866466693 Inexact Rounded
 xadd448 add 80919339.2E-967231586 219.824266 -> 219.824266 Inexact Rounded
@@ -3616,7 +3616,7 @@
 xdiv449 divide 159579.444 -89827.5229 -> -1.77650946 Inexact Rounded
 xdvi449 divideint 159579.444 -89827.5229 -> -1
 xmul449 multiply 159579.444 -89827.5229 -> -1.43346262E+10 Inexact Rounded
-xpow449 power 159579.444 -89828 -> 9.69955849E-467374 Inexact Rounded
+xpow449 power 159579.444 -89828 -> 9.69955850E-467374 Inexact Rounded
 xrem449 remainder 159579.444 -89827.5229 -> 69751.9211
 xsub449 subtract 159579.444 -89827.5229 -> 249406.967 Inexact Rounded
 xadd450 add -4.54000153 6966333.74 -> 6966329.20 Inexact Rounded
@@ -3640,7 +3640,7 @@
 xdiv452 divide -361382575. -7976.15286E+898491169 -> 4.53078798E-898491165 Inexact Rounded
 xdvi452 divideint -361382575. -7976.15286E+898491169 -> 0
 xmul452 multiply -361382575. -7976.15286E+898491169 -> 2.88244266E+898491181 Inexact Rounded
-xpow452 power -361382575. -8 -> 3.43765536E-69 Inexact Rounded
+xpow452 power -361382575. -8 -> 3.43765537E-69 Inexact Rounded
 xrem452 remainder -361382575. -7976.15286E+898491169 -> -361382575
 xsub452 subtract -361382575. -7976.15286E+898491169 -> 7.97615286E+898491172 Inexact Rounded
 xadd453 add 7021805.61 1222952.83 -> 8244758.44
@@ -3720,7 +3720,7 @@
 xdiv462 divide -51592.2698 -713885.741 -> 0.0722696460 Inexact Rounded
 xdvi462 divideint -51592.2698 -713885.741 -> 0
 xmul462 multiply -51592.2698 -713885.741 -> 3.68309858E+10 Inexact Rounded
-xpow462 power -51592.2698 -713886 -> 6.38576921E-3364249 Inexact Rounded
+xpow462 power -51592.2698 -713886 -> 6.38576920E-3364249 Inexact Rounded
 xrem462 remainder -51592.2698 -713885.741 -> -51592.2698
 xsub462 subtract -51592.2698 -713885.741 -> 662293.471 Inexact Rounded
 xadd463 add 51.2279848E+80439745 207.55925E+865165070 -> 2.07559250E+865165072 Inexact Rounded
@@ -3768,7 +3768,7 @@
 xdiv468 divide -5.32711606 -8447286.21 -> 6.30630468E-7 Inexact Rounded
 xdvi468 divideint -5.32711606 -8447286.21 -> 0
 xmul468 multiply -5.32711606 -8447286.21 -> 44999674.0 Inexact Rounded
-xpow468 power -5.32711606 -8447286 -> 9.09138729E-6136888 Inexact Rounded
+xpow468 power -5.32711606 -8447286 -> 9.09138728E-6136888 Inexact Rounded
 xrem468 remainder -5.32711606 -8447286.21 -> -5.32711606
 xsub468 subtract -5.32711606 -8447286.21 -> 8447280.88 Inexact Rounded
 xadd469 add -82272171.8 -776.238587E-372690416 -> -82272171.8 Inexact Rounded
@@ -4027,3 +4027,4 @@
 xpow500 power -525445087.E+231529167 188227460 -> Infinity Overflow Inexact Rounded
 xrem500 remainder -525445087.E+231529167 188227460 -> NaN Division_impossible
 xsub500 subtract -525445087.E+231529167 188227460 -> -5.25445087E+231529175 Inexact Rounded
+
diff --git a/Lib/test/decimaltestdata/reduce.decTest b/Lib/test/decimaltestdata/reduce.decTest
new file mode 100644
index 0000000..189a687
--- /dev/null
+++ b/Lib/test/decimaltestdata/reduce.decTest
@@ -0,0 +1,234 @@
+------------------------------------------------------------------------
+-- reduce.decTest -- remove trailing zeros                            --
+-- Copyright (c) IBM Corporation, 2003, 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                                                   --
+------------------------------------------------------------------------
+-- [This used to be called normalize.]
+
+version: 2.57
+
+extended:    1
+precision:   9
+rounding:    half_up
+maxExponent: 999
+minexponent: -999
+
+redx001 reduce '1'      -> '1'
+redx002 reduce '-1'     -> '-1'
+redx003 reduce '1.00'   -> '1'
+redx004 reduce '-1.00'  -> '-1'
+redx005 reduce '0'      -> '0'
+redx006 reduce '0.00'   -> '0'
+redx007 reduce '00.0'   -> '0'
+redx008 reduce '00.00'  -> '0'
+redx009 reduce '00'     -> '0'
+redx010 reduce '0E+1'   -> '0'
+redx011 reduce '0E+5'   -> '0'
+
+redx012 reduce '-2'     -> '-2'
+redx013 reduce '2'      -> '2'
+redx014 reduce '-2.00'  -> '-2'
+redx015 reduce '2.00'   -> '2'
+redx016 reduce '-0'     -> '-0'
+redx017 reduce '-0.00'  -> '-0'
+redx018 reduce '-00.0'  -> '-0'
+redx019 reduce '-00.00' -> '-0'
+redx020 reduce '-00'    -> '-0'
+redx021 reduce '-0E+5'   -> '-0'
+redx022 reduce '-0E+1'  -> '-0'
+
+redx030 reduce '+0.1'            -> '0.1'
+redx031 reduce '-0.1'            -> '-0.1'
+redx032 reduce '+0.01'           -> '0.01'
+redx033 reduce '-0.01'           -> '-0.01'
+redx034 reduce '+0.001'          -> '0.001'
+redx035 reduce '-0.001'          -> '-0.001'
+redx036 reduce '+0.000001'       -> '0.000001'
+redx037 reduce '-0.000001'       -> '-0.000001'
+redx038 reduce '+0.000000000001' -> '1E-12'
+redx039 reduce '-0.000000000001' -> '-1E-12'
+
+redx041 reduce 1.1        -> 1.1
+redx042 reduce 1.10       -> 1.1
+redx043 reduce 1.100      -> 1.1
+redx044 reduce 1.110      -> 1.11
+redx045 reduce -1.1       -> -1.1
+redx046 reduce -1.10      -> -1.1
+redx047 reduce -1.100     -> -1.1
+redx048 reduce -1.110     -> -1.11
+redx049 reduce 9.9        -> 9.9
+redx050 reduce 9.90       -> 9.9
+redx051 reduce 9.900      -> 9.9
+redx052 reduce 9.990      -> 9.99
+redx053 reduce -9.9       -> -9.9
+redx054 reduce -9.90      -> -9.9
+redx055 reduce -9.900     -> -9.9
+redx056 reduce -9.990     -> -9.99
+
+-- some trailing fractional zeros with zeros in units
+redx060 reduce  10.0        -> 1E+1
+redx061 reduce  10.00       -> 1E+1
+redx062 reduce  100.0       -> 1E+2
+redx063 reduce  100.00      -> 1E+2
+redx064 reduce  1.1000E+3   -> 1.1E+3
+redx065 reduce  1.10000E+3  -> 1.1E+3
+redx066 reduce -10.0        -> -1E+1
+redx067 reduce -10.00       -> -1E+1
+redx068 reduce -100.0       -> -1E+2
+redx069 reduce -100.00      -> -1E+2
+redx070 reduce -1.1000E+3   -> -1.1E+3
+redx071 reduce -1.10000E+3  -> -1.1E+3
+
+-- some insignificant trailing zeros with positive exponent
+redx080 reduce  10E+1       -> 1E+2
+redx081 reduce  100E+1      -> 1E+3
+redx082 reduce  1.0E+2      -> 1E+2
+redx083 reduce  1.0E+3      -> 1E+3
+redx084 reduce  1.1E+3      -> 1.1E+3
+redx085 reduce  1.00E+3     -> 1E+3
+redx086 reduce  1.10E+3     -> 1.1E+3
+redx087 reduce -10E+1       -> -1E+2
+redx088 reduce -100E+1      -> -1E+3
+redx089 reduce -1.0E+2      -> -1E+2
+redx090 reduce -1.0E+3      -> -1E+3
+redx091 reduce -1.1E+3      -> -1.1E+3
+redx092 reduce -1.00E+3     -> -1E+3
+redx093 reduce -1.10E+3     -> -1.1E+3
+
+-- some significant trailing zeros, were we to be trimming
+redx100 reduce  11          -> 11
+redx101 reduce  10          -> 1E+1
+redx102 reduce  10.         -> 1E+1
+redx103 reduce  1.1E+1      -> 11
+redx104 reduce  1.0E+1      -> 1E+1
+redx105 reduce  1.10E+2     -> 1.1E+2
+redx106 reduce  1.00E+2     -> 1E+2
+redx107 reduce  1.100E+3    -> 1.1E+3
+redx108 reduce  1.000E+3    -> 1E+3
+redx109 reduce  1.000000E+6 -> 1E+6
+redx110 reduce -11          -> -11
+redx111 reduce -10          -> -1E+1
+redx112 reduce -10.         -> -1E+1
+redx113 reduce -1.1E+1      -> -11
+redx114 reduce -1.0E+1      -> -1E+1
+redx115 reduce -1.10E+2     -> -1.1E+2
+redx116 reduce -1.00E+2     -> -1E+2
+redx117 reduce -1.100E+3    -> -1.1E+3
+redx118 reduce -1.000E+3    -> -1E+3
+redx119 reduce -1.00000E+5  -> -1E+5
+redx120 reduce -1.000000E+6 -> -1E+6
+redx121 reduce -10.00000E+6 -> -1E+7
+redx122 reduce -100.0000E+6 -> -1E+8
+redx123 reduce -1000.000E+6 -> -1E+9
+redx124 reduce -10000.00E+6 -> -1E+10
+redx125 reduce -100000.0E+6 -> -1E+11
+redx126 reduce -1000000.E+6 -> -1E+12
+
+-- examples from decArith
+redx140 reduce '2.1'     ->  '2.1'
+redx141 reduce '-2.0'    ->  '-2'
+redx142 reduce '1.200'   ->  '1.2'
+redx143 reduce '-120'    ->  '-1.2E+2'
+redx144 reduce '120.00'  ->  '1.2E+2'
+redx145 reduce '0.00'    ->  '0'
+
+-- overflow tests
+maxexponent: 999999999
+minexponent: -999999999
+precision: 3
+redx160 reduce 9.999E+999999999  ->  Infinity Inexact Overflow Rounded
+redx161 reduce -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
+
+-- subnormals and underflow
+precision: 3
+maxexponent: 999
+minexponent: -999
+redx210 reduce  1.00E-999        ->   1E-999
+redx211 reduce  0.1E-999         ->   1E-1000   Subnormal
+redx212 reduce  0.10E-999        ->   1E-1000   Subnormal
+redx213 reduce  0.100E-999       ->   1E-1000   Subnormal Rounded
+redx214 reduce  0.01E-999        ->   1E-1001   Subnormal
+-- next is rounded to Emin
+redx215 reduce  0.999E-999       ->   1E-999    Inexact Rounded Subnormal Underflow
+redx216 reduce  0.099E-999       ->   1E-1000   Inexact Rounded Subnormal Underflow
+redx217 reduce  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
+redx218 reduce  0.001E-999       ->   0         Inexact Rounded Subnormal Underflow Clamped
+redx219 reduce  0.0009E-999      ->   0         Inexact Rounded Subnormal Underflow Clamped
+redx220 reduce  0.0001E-999      ->   0         Inexact Rounded Subnormal Underflow Clamped
+
+redx230 reduce -1.00E-999        ->  -1E-999
+redx231 reduce -0.1E-999         ->  -1E-1000   Subnormal
+redx232 reduce -0.10E-999        ->  -1E-1000   Subnormal
+redx233 reduce -0.100E-999       ->  -1E-1000   Subnormal Rounded
+redx234 reduce -0.01E-999        ->  -1E-1001   Subnormal
+-- next is rounded to Emin
+redx235 reduce -0.999E-999       ->  -1E-999    Inexact Rounded Subnormal Underflow
+redx236 reduce -0.099E-999       ->  -1E-1000   Inexact Rounded Subnormal Underflow
+redx237 reduce -0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
+redx238 reduce -0.001E-999       ->  -0         Inexact Rounded Subnormal Underflow Clamped
+redx239 reduce -0.0009E-999      ->  -0         Inexact Rounded Subnormal Underflow Clamped
+redx240 reduce -0.0001E-999      ->  -0         Inexact Rounded Subnormal Underflow Clamped
+
+-- more reshaping
+precision: 9
+redx260 reduce '56260E-10'   -> '0.000005626'
+redx261 reduce '56260E-5'    -> '0.5626'
+redx262 reduce '56260E-2'    -> '562.6'
+redx263 reduce '56260E-1'    -> '5626'
+redx265 reduce '56260E-0'    -> '5.626E+4'
+redx266 reduce '56260E+0'    -> '5.626E+4'
+redx267 reduce '56260E+1'    -> '5.626E+5'
+redx268 reduce '56260E+2'    -> '5.626E+6'
+redx269 reduce '56260E+3'    -> '5.626E+7'
+redx270 reduce '56260E+4'    -> '5.626E+8'
+redx271 reduce '56260E+5'    -> '5.626E+9'
+redx272 reduce '56260E+6'    -> '5.626E+10'
+redx280 reduce '-56260E-10'  -> '-0.000005626'
+redx281 reduce '-56260E-5'   -> '-0.5626'
+redx282 reduce '-56260E-2'   -> '-562.6'
+redx283 reduce '-56260E-1'   -> '-5626'
+redx285 reduce '-56260E-0'   -> '-5.626E+4'
+redx286 reduce '-56260E+0'   -> '-5.626E+4'
+redx287 reduce '-56260E+1'   -> '-5.626E+5'
+redx288 reduce '-56260E+2'   -> '-5.626E+6'
+redx289 reduce '-56260E+3'   -> '-5.626E+7'
+redx290 reduce '-56260E+4'   -> '-5.626E+8'
+redx291 reduce '-56260E+5'   -> '-5.626E+9'
+redx292 reduce '-56260E+6'   -> '-5.626E+10'
+
+-- FL test
+precision: 40
+redx295 reduce 9892345673.0123456780000000000 -> 9892345673.012345678
+
+-- specials
+redx820 reduce 'Inf'    -> 'Infinity'
+redx821 reduce '-Inf'   -> '-Infinity'
+redx822 reduce   NaN    ->  NaN
+redx823 reduce  sNaN    ->  NaN    Invalid_operation
+redx824 reduce   NaN101 ->  NaN101
+redx825 reduce  sNaN010 ->  NaN10  Invalid_operation
+redx827 reduce  -NaN    -> -NaN
+redx828 reduce -sNaN    -> -NaN    Invalid_operation
+redx829 reduce  -NaN101 -> -NaN101
+redx830 reduce -sNaN010 -> -NaN10  Invalid_operation
+
+-- payload decapitate
+precision: 5
+redx62100 reduce  sNaN1234567890 -> NaN67890  Invalid_operation
+
+-- Null test
+redx900 reduce  # -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/remainder.decTest b/Lib/test/decimaltestdata/remainder.decTest
index 6eb49c3..1a51c26 100644
--- a/Lib/test/decimaltestdata/remainder.decTest
+++ b/Lib/test/decimaltestdata/remainder.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- remainder.decTest -- decimal remainder                             --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
@@ -351,6 +351,17 @@
 remx408 remainder   0.55555555  1   ->  0.55555555
 remx409 remainder   0.555555555 1   ->  0.555555555
 
+-- zero signs
+remx650 remainder  1  1 ->  0
+remx651 remainder -1  1 -> -0
+remx652 remainder  1 -1 ->  0
+remx653 remainder -1 -1 -> -0
+remx654 remainder  0  1 ->  0
+remx655 remainder -0  1 -> -0
+remx656 remainder  0 -1 ->  0
+remx657 remainder -0 -1 -> -0
+remx658 remainder  0.00  1  ->  0.00
+remx659 remainder -0.00  1  -> -0.00
 
 -- Specials
 remx680 remainder  Inf  -Inf   ->  NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/remainderNear.decTest b/Lib/test/decimaltestdata/remainderNear.decTest
index d007bda..fdc1bd8 100644
--- a/Lib/test/decimaltestdata/remainderNear.decTest
+++ b/Lib/test/decimaltestdata/remainderNear.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- remainderNear.decTest -- decimal remainder-near (IEEE remainder)   --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
@@ -413,6 +413,18 @@
 rmnx606 remaindernear  31.5 3  -> 1.5    -- i=10
 rmnx607 remaindernear  34.5 3  -> -1.5   -- i=11
 
+-- zero signs
+rmnx650 remaindernear  1  1 ->  0
+rmnx651 remaindernear -1  1 -> -0
+rmnx652 remaindernear  1 -1 ->  0
+rmnx653 remaindernear -1 -1 -> -0
+rmnx654 remaindernear  0  1 ->  0
+rmnx655 remaindernear -0  1 -> -0
+rmnx656 remaindernear  0 -1 ->  0
+rmnx657 remaindernear -0 -1 -> -0
+rmnx658 remaindernear  0.00  1  ->  0.00
+rmnx659 remaindernear -0.00  1  -> -0.00
+
 -- Specials
 rmnx680 remaindernear  Inf  -Inf   ->  NaN Invalid_operation
 rmnx681 remaindernear  Inf  -1000  ->  NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/rescale.decTest b/Lib/test/decimaltestdata/rescale.decTest
index fd63f0f..882f570 100644
--- a/Lib/test/decimaltestdata/rescale.decTest
+++ b/Lib/test/decimaltestdata/rescale.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- rescale.decTest -- decimal rescale operation                       --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- [obsolete]   Quantize.decTest has the improved version
 
@@ -379,7 +379,7 @@
 resx446 rescale   0.000999      1  -> 0E+1      Inexact Rounded
 
 precision: 8
-resx449 rescale   9.999E-15    -23 ->  NaN Invalid_operation
+resx449 rescale   9.999E-15    -23 ->  NaN      Invalid_operation
 resx450 rescale   9.999E-15    -22 ->  9.9990000E-15
 resx451 rescale   9.999E-15    -21 ->  9.999000E-15
 resx452 rescale   9.999E-15    -20 ->  9.99900E-15
@@ -405,6 +405,12 @@
 resx472 rescale   9.999E-15      0 ->  0         Inexact Rounded
 resx473 rescale   9.999E-15      1 ->  0E+1      Inexact Rounded
 
+-- [additional tests for "don't fit" edge cases are in
+-- quantize.decTest.  Here's a critical one.]
+precision: 3
+resx480 rescale   0.9999        -3 ->  NaN       Invalid_operation
+
+
 -- long operand checks [rhs checks removed]
 maxexponent: 999
 minexponent: -999
diff --git a/Lib/test/decimaltestdata/rotate.decTest b/Lib/test/decimaltestdata/rotate.decTest
new file mode 100644
index 0000000..32dbd53
--- /dev/null
+++ b/Lib/test/decimaltestdata/rotate.decTest
@@ -0,0 +1,247 @@
+------------------------------------------------------------------------

+-- rotate.decTest -- rotate coefficient left or right                 --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check

+rotx001 rotate          0    0  ->  0

+rotx002 rotate          0    2  ->  0

+rotx003 rotate          1    2  ->  100

+rotx004 rotate         34    8  ->  400000003

+rotx005 rotate          1    9  ->  1

+rotx006 rotate          1   -1  ->  100000000

+rotx007 rotate  123456789   -1  ->  912345678

+rotx008 rotate  123456789   -8  ->  234567891

+rotx009 rotate  123456789   -9  ->  123456789

+rotx010 rotate          0   -2  ->  0

+

+-- rhs must be an integer

+rotx011 rotate        1    1.5    -> NaN Invalid_operation

+rotx012 rotate        1    1.0    -> NaN Invalid_operation

+rotx013 rotate        1    0.1    -> NaN Invalid_operation

+rotx014 rotate        1    0.0    -> NaN Invalid_operation

+rotx015 rotate        1    1E+1   -> NaN Invalid_operation

+rotx016 rotate        1    1E+99  -> NaN Invalid_operation

+rotx017 rotate        1    Inf    -> NaN Invalid_operation

+rotx018 rotate        1    -Inf   -> NaN Invalid_operation

+-- and |rhs| <= precision

+rotx020 rotate        1    -1000  -> NaN Invalid_operation

+rotx021 rotate        1    -10    -> NaN Invalid_operation

+rotx022 rotate        1     10    -> NaN Invalid_operation

+rotx023 rotate        1     1000  -> NaN Invalid_operation

+

+-- full pattern

+rotx030 rotate  123456789          -9   -> 123456789

+rotx031 rotate  123456789          -8   -> 234567891

+rotx032 rotate  123456789          -7   -> 345678912

+rotx033 rotate  123456789          -6   -> 456789123

+rotx034 rotate  123456789          -5   -> 567891234

+rotx035 rotate  123456789          -4   -> 678912345

+rotx036 rotate  123456789          -3   -> 789123456

+rotx037 rotate  123456789          -2   -> 891234567

+rotx038 rotate  123456789          -1   -> 912345678

+rotx039 rotate  123456789          -0   -> 123456789

+rotx040 rotate  123456789          +0   -> 123456789

+rotx041 rotate  123456789          +1   -> 234567891

+rotx042 rotate  123456789          +2   -> 345678912

+rotx043 rotate  123456789          +3   -> 456789123

+rotx044 rotate  123456789          +4   -> 567891234

+rotx045 rotate  123456789          +5   -> 678912345

+rotx046 rotate  123456789          +6   -> 789123456

+rotx047 rotate  123456789          +7   -> 891234567

+rotx048 rotate  123456789          +8   -> 912345678

+rotx049 rotate  123456789          +9   -> 123456789

+

+-- zeros

+rotx060 rotate  0E-10              +9   ->   0E-10

+rotx061 rotate  0E-10              -9   ->   0E-10

+rotx062 rotate  0.000              +9   ->   0.000

+rotx063 rotate  0.000              -9   ->   0.000

+rotx064 rotate  0E+10              +9   ->   0E+10

+rotx065 rotate  0E+10              -9   ->   0E+10

+rotx066 rotate -0E-10              +9   ->  -0E-10

+rotx067 rotate -0E-10              -9   ->  -0E-10

+rotx068 rotate -0.000              +9   ->  -0.000

+rotx069 rotate -0.000              -9   ->  -0.000

+rotx070 rotate -0E+10              +9   ->  -0E+10

+rotx071 rotate -0E+10              -9   ->  -0E+10

+

+-- Nmax, Nmin, Ntiny

+rotx141 rotate  9.99999999E+999     -1  -> 9.99999999E+999

+rotx142 rotate  9.99999999E+999     -8  -> 9.99999999E+999

+rotx143 rotate  9.99999999E+999      1  -> 9.99999999E+999

+rotx144 rotate  9.99999999E+999      8  -> 9.99999999E+999

+rotx145 rotate  1E-999              -1  -> 1.00000000E-991

+rotx146 rotate  1E-999              -8  -> 1.0E-998

+rotx147 rotate  1E-999               1  -> 1.0E-998

+rotx148 rotate  1E-999               8  -> 1.00000000E-991

+rotx151 rotate  1.00000000E-999     -1  -> 1.0000000E-1000

+rotx152 rotate  1.00000000E-999     -8  -> 1E-1007

+rotx153 rotate  1.00000000E-999      1  -> 1E-1007

+rotx154 rotate  1.00000000E-999      8  -> 1.0000000E-1000

+rotx155 rotate  9.00000000E-999     -1  -> 9.0000000E-1000

+rotx156 rotate  9.00000000E-999     -8  -> 9E-1007

+rotx157 rotate  9.00000000E-999      1  -> 9E-1007

+rotx158 rotate  9.00000000E-999      8  -> 9.0000000E-1000

+rotx160 rotate  1E-1007             -1  -> 1.00000000E-999

+rotx161 rotate  1E-1007             -8  -> 1.0E-1006

+rotx162 rotate  1E-1007              1  -> 1.0E-1006

+rotx163 rotate  1E-1007              8  -> 1.00000000E-999

+--  negatives

+rotx171 rotate -9.99999999E+999     -1  -> -9.99999999E+999

+rotx172 rotate -9.99999999E+999     -8  -> -9.99999999E+999

+rotx173 rotate -9.99999999E+999      1  -> -9.99999999E+999

+rotx174 rotate -9.99999999E+999      8  -> -9.99999999E+999

+rotx175 rotate -1E-999              -1  -> -1.00000000E-991

+rotx176 rotate -1E-999              -8  -> -1.0E-998

+rotx177 rotate -1E-999               1  -> -1.0E-998

+rotx178 rotate -1E-999               8  -> -1.00000000E-991

+rotx181 rotate -1.00000000E-999     -1  -> -1.0000000E-1000

+rotx182 rotate -1.00000000E-999     -8  -> -1E-1007

+rotx183 rotate -1.00000000E-999      1  -> -1E-1007

+rotx184 rotate -1.00000000E-999      8  -> -1.0000000E-1000

+rotx185 rotate -9.00000000E-999     -1  -> -9.0000000E-1000

+rotx186 rotate -9.00000000E-999     -8  -> -9E-1007

+rotx187 rotate -9.00000000E-999      1  -> -9E-1007

+rotx188 rotate -9.00000000E-999      8  -> -9.0000000E-1000

+rotx190 rotate -1E-1007             -1  -> -1.00000000E-999

+rotx191 rotate -1E-1007             -8  -> -1.0E-1006

+rotx192 rotate -1E-1007              1  -> -1.0E-1006

+rotx193 rotate -1E-1007              8  -> -1.00000000E-999

+

+-- more negatives (of sanities)

+rotx201 rotate         -0    0  ->  -0

+rotx202 rotate         -0    2  ->  -0

+rotx203 rotate         -1    2  ->  -100

+rotx204 rotate         -1    8  ->  -100000000

+rotx205 rotate         -1    9  ->  -1

+rotx206 rotate         -1   -1  ->  -100000000

+rotx207 rotate -123456789   -1  ->  -912345678

+rotx208 rotate -123456789   -8  ->  -234567891

+rotx209 rotate -123456789   -9  ->  -123456789

+rotx210 rotate         -0   -2  ->  -0

+

+-- Specials; NaNs are handled as usual

+rotx781 rotate -Inf  -8     -> -Infinity

+rotx782 rotate -Inf  -1     -> -Infinity

+rotx783 rotate -Inf  -0     -> -Infinity

+rotx784 rotate -Inf   0     -> -Infinity

+rotx785 rotate -Inf   1     -> -Infinity

+rotx786 rotate -Inf   8     -> -Infinity

+rotx787 rotate -1000 -Inf   -> NaN Invalid_operation

+rotx788 rotate -Inf  -Inf   -> NaN Invalid_operation

+rotx789 rotate -1    -Inf   -> NaN Invalid_operation

+rotx790 rotate -0    -Inf   -> NaN Invalid_operation

+rotx791 rotate  0    -Inf   -> NaN Invalid_operation

+rotx792 rotate  1    -Inf   -> NaN Invalid_operation

+rotx793 rotate  1000 -Inf   -> NaN Invalid_operation

+rotx794 rotate  Inf  -Inf   -> NaN Invalid_operation

+

+rotx800 rotate  Inf  -Inf   -> NaN Invalid_operation

+rotx801 rotate  Inf  -8     -> Infinity

+rotx802 rotate  Inf  -1     -> Infinity

+rotx803 rotate  Inf  -0     -> Infinity

+rotx804 rotate  Inf   0     -> Infinity

+rotx805 rotate  Inf   1     -> Infinity

+rotx806 rotate  Inf   8     -> Infinity

+rotx807 rotate  Inf   Inf   -> NaN Invalid_operation

+rotx808 rotate -1000  Inf   -> NaN Invalid_operation

+rotx809 rotate -Inf   Inf   -> NaN Invalid_operation

+rotx810 rotate -1     Inf   -> NaN Invalid_operation

+rotx811 rotate -0     Inf   -> NaN Invalid_operation

+rotx812 rotate  0     Inf   -> NaN Invalid_operation

+rotx813 rotate  1     Inf   -> NaN Invalid_operation

+rotx814 rotate  1000  Inf   -> NaN Invalid_operation

+rotx815 rotate  Inf   Inf   -> NaN Invalid_operation

+

+rotx821 rotate  NaN -Inf    ->  NaN

+rotx822 rotate  NaN -1000   ->  NaN

+rotx823 rotate  NaN -1      ->  NaN

+rotx824 rotate  NaN -0      ->  NaN

+rotx825 rotate  NaN  0      ->  NaN

+rotx826 rotate  NaN  1      ->  NaN

+rotx827 rotate  NaN  1000   ->  NaN

+rotx828 rotate  NaN  Inf    ->  NaN

+rotx829 rotate  NaN  NaN    ->  NaN

+rotx830 rotate -Inf  NaN    ->  NaN

+rotx831 rotate -1000 NaN    ->  NaN

+rotx832 rotate -1    NaN    ->  NaN

+rotx833 rotate -0    NaN    ->  NaN

+rotx834 rotate  0    NaN    ->  NaN

+rotx835 rotate  1    NaN    ->  NaN

+rotx836 rotate  1000 NaN    ->  NaN

+rotx837 rotate  Inf  NaN    ->  NaN

+

+

+

+rotx841 rotate  sNaN -Inf   ->  NaN  Invalid_operation

+rotx842 rotate  sNaN -1000  ->  NaN  Invalid_operation

+rotx843 rotate  sNaN -1     ->  NaN  Invalid_operation

+rotx844 rotate  sNaN -0     ->  NaN  Invalid_operation

+rotx845 rotate  sNaN  0     ->  NaN  Invalid_operation

+rotx846 rotate  sNaN  1     ->  NaN  Invalid_operation

+rotx847 rotate  sNaN  1000  ->  NaN  Invalid_operation

+rotx848 rotate  sNaN  NaN   ->  NaN  Invalid_operation

+rotx849 rotate  sNaN sNaN   ->  NaN  Invalid_operation

+rotx850 rotate  NaN  sNaN   ->  NaN  Invalid_operation

+rotx851 rotate -Inf  sNaN   ->  NaN  Invalid_operation

+rotx852 rotate -1000 sNaN   ->  NaN  Invalid_operation

+rotx853 rotate -1    sNaN   ->  NaN  Invalid_operation

+rotx854 rotate -0    sNaN   ->  NaN  Invalid_operation

+rotx855 rotate  0    sNaN   ->  NaN  Invalid_operation

+rotx856 rotate  1    sNaN   ->  NaN  Invalid_operation

+rotx857 rotate  1000 sNaN   ->  NaN  Invalid_operation

+rotx858 rotate  Inf  sNaN   ->  NaN  Invalid_operation

+rotx859 rotate  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+rotx861 rotate  NaN1   -Inf    ->  NaN1

+rotx862 rotate +NaN2   -1000   ->  NaN2

+rotx863 rotate  NaN3    1000   ->  NaN3

+rotx864 rotate  NaN4    Inf    ->  NaN4

+rotx865 rotate  NaN5   +NaN6   ->  NaN5

+rotx866 rotate -Inf     NaN7   ->  NaN7

+rotx867 rotate -1000    NaN8   ->  NaN8

+rotx868 rotate  1000    NaN9   ->  NaN9

+rotx869 rotate  Inf    +NaN10  ->  NaN10

+rotx871 rotate  sNaN11  -Inf   ->  NaN11  Invalid_operation

+rotx872 rotate  sNaN12  -1000  ->  NaN12  Invalid_operation

+rotx873 rotate  sNaN13   1000  ->  NaN13  Invalid_operation

+rotx874 rotate  sNaN14   NaN17 ->  NaN14  Invalid_operation

+rotx875 rotate  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+rotx876 rotate  NaN16   sNaN19 ->  NaN19  Invalid_operation

+rotx877 rotate -Inf    +sNaN20 ->  NaN20  Invalid_operation

+rotx878 rotate -1000    sNaN21 ->  NaN21  Invalid_operation

+rotx879 rotate  1000    sNaN22 ->  NaN22  Invalid_operation

+rotx880 rotate  Inf     sNaN23 ->  NaN23  Invalid_operation

+rotx881 rotate +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+rotx882 rotate -NaN26    NaN28 -> -NaN26

+rotx883 rotate -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+rotx884 rotate  1000    -NaN30 -> -NaN30

+rotx885 rotate  1000   -sNaN31 -> -NaN31  Invalid_operation

+

+-- payload decapitate

+precision: 5

+rotx886 rotate  11 -sNaN1234567890 -> -NaN67890  Invalid_operation

diff --git a/Lib/test/decimaltestdata/rounding.decTest b/Lib/test/decimaltestdata/rounding.decTest
index f1437a5..82ca1b0 100644
--- a/Lib/test/decimaltestdata/rounding.decTest
+++ b/Lib/test/decimaltestdata/rounding.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- rounding.decTest -- decimal rounding modes testcases               --
--- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- These tests require that implementations take account of residues in
 -- order to get correct results for some rounding modes.  Rather than
@@ -26,8 +26,11 @@
 -- is rounding of negatives (if the latter works for addition, assume it
 -- works for the others, too).]
 --
--- Underflow Subnormal and overflow behaviours are tested under the individual
--- operators.
+-- Round-for-reround (05UP) is tested as a separate block, mostly for
+-- 'historical' reasons.
+--
+-- Underflow Subnormal and overflow behaviours are tested under the
+-- individual operators.
 
 extended:    1
 precision:   5           -- for easier visual inspection
@@ -980,8 +983,8 @@
 rounding: down
 rovx100  multiply   10    9E+999999999 ->  9.9999E+999999999 Overflow Inexact Rounded
 rovx101  multiply  -10    9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded
-rovx102  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded
-rovx104  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded
+rovx102  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
+rovx104  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
 
 rounding: up
 rovx110  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
@@ -993,31 +996,31 @@
 rovx120  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
 rovx121  multiply  -10    9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded
 rovx122  divide     1E-9  9E+999999999 ->  1E-1000000003 Underflow Subnormal Inexact Rounded
-rovx124  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded
+rovx124  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
 
 rounding: floor
 rovx130  multiply   10    9E+999999999 ->  9.9999E+999999999 Overflow Inexact Rounded
 rovx131  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx132  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded
+rovx132  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
 rovx134  divide    -1E-9  9E+999999999 -> -1E-1000000003 Underflow Subnormal Inexact Rounded
 
 rounding: half_up
 rovx140  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
 rovx141  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx142  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded
-rovx144  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded
+rovx142  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
+rovx144  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
 
 rounding: half_even
 rovx150  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
 rovx151  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx152  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded
-rovx154  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded
+rovx152  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
+rovx154  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
 
 rounding: half_down
 rovx160  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
 rovx161  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx162  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded
-rovx164  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded
+rovx162  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
+rovx164  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
 
 -- check maximum finite value over a range of precisions
 rounding: down
@@ -1077,3 +1080,224 @@
 rmex412 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded
 rmex413 multiply  9.999E+999999999 10 ->  9.99999999E+999999999 Overflow Inexact Rounded
 
+----- Round-for-reround -----
+rounding:    05up
+precision:   5           -- for easier visual inspection
+maxExponent: 999
+minexponent: -999
+
+-- basic rounding; really is just 0 and 5 up
+r05up001 add 12340  0.001     -> 12341 Inexact Rounded
+r05up002 add 12341  0.001     -> 12341 Inexact Rounded
+r05up003 add 12342  0.001     -> 12342 Inexact Rounded
+r05up004 add 12343  0.001     -> 12343 Inexact Rounded
+r05up005 add 12344  0.001     -> 12344 Inexact Rounded
+r05up006 add 12345  0.001     -> 12346 Inexact Rounded
+r05up007 add 12346  0.001     -> 12346 Inexact Rounded
+r05up008 add 12347  0.001     -> 12347 Inexact Rounded
+r05up009 add 12348  0.001     -> 12348 Inexact Rounded
+r05up010 add 12349  0.001     -> 12349 Inexact Rounded
+
+r05up011 add 12340  0.000     -> 12340 Rounded
+r05up012 add 12341  0.000     -> 12341 Rounded
+r05up013 add 12342  0.000     -> 12342 Rounded
+r05up014 add 12343  0.000     -> 12343 Rounded
+r05up015 add 12344  0.000     -> 12344 Rounded
+r05up016 add 12345  0.000     -> 12345 Rounded
+r05up017 add 12346  0.000     -> 12346 Rounded
+r05up018 add 12347  0.000     -> 12347 Rounded
+r05up019 add 12348  0.000     -> 12348 Rounded
+r05up020 add 12349  0.000     -> 12349 Rounded
+
+r05up021 add 12340  0.901     -> 12341 Inexact Rounded
+r05up022 add 12341  0.901     -> 12341 Inexact Rounded
+r05up023 add 12342  0.901     -> 12342 Inexact Rounded
+r05up024 add 12343  0.901     -> 12343 Inexact Rounded
+r05up025 add 12344  0.901     -> 12344 Inexact Rounded
+r05up026 add 12345  0.901     -> 12346 Inexact Rounded
+r05up027 add 12346  0.901     -> 12346 Inexact Rounded
+r05up028 add 12347  0.901     -> 12347 Inexact Rounded
+r05up029 add 12348  0.901     -> 12348 Inexact Rounded
+r05up030 add 12349  0.901     -> 12349 Inexact Rounded
+
+r05up031 add -12340  -0.001     -> -12341 Inexact Rounded
+r05up032 add -12341  -0.001     -> -12341 Inexact Rounded
+r05up033 add -12342  -0.001     -> -12342 Inexact Rounded
+r05up034 add -12343  -0.001     -> -12343 Inexact Rounded
+r05up035 add -12344  -0.001     -> -12344 Inexact Rounded
+r05up036 add -12345  -0.001     -> -12346 Inexact Rounded
+r05up037 add -12346  -0.001     -> -12346 Inexact Rounded
+r05up038 add -12347  -0.001     -> -12347 Inexact Rounded
+r05up039 add -12348  -0.001     -> -12348 Inexact Rounded
+r05up040 add -12349  -0.001     -> -12349 Inexact Rounded
+
+r05up041 add -12340   0.001     -> -12339 Inexact Rounded
+r05up042 add -12341   0.001     -> -12341 Inexact Rounded
+r05up043 add -12342   0.001     -> -12341 Inexact Rounded
+r05up044 add -12343   0.001     -> -12342 Inexact Rounded
+r05up045 add -12344   0.001     -> -12343 Inexact Rounded
+r05up046 add -12345   0.001     -> -12344 Inexact Rounded
+r05up047 add -12346   0.001     -> -12346 Inexact Rounded
+r05up048 add -12347   0.001     -> -12346 Inexact Rounded
+r05up049 add -12348   0.001     -> -12347 Inexact Rounded
+r05up050 add -12349   0.001     -> -12348 Inexact Rounded
+
+-- Addition operators -------------------------------------------------
+-- [The first few of these check negative residue possibilities; these
+-- cases may be implemented as a negative residue in fastpaths]
+
+r0adx100  add 12345 -0.1       -> 12344 Inexact Rounded
+r0adx101  add 12345 -0.01      -> 12344 Inexact Rounded
+r0adx102  add 12345 -0.001     -> 12344 Inexact Rounded
+r0adx103  add 12345 -0.00001   -> 12344 Inexact Rounded
+r0adx104  add 12345 -0.000001  -> 12344 Inexact Rounded
+r0adx105  add 12345 -0.0000001 -> 12344 Inexact Rounded
+r0adx106  add 12345  0         -> 12345
+r0adx107  add 12345  0.0000001 -> 12346 Inexact Rounded
+r0adx108  add 12345  0.000001  -> 12346 Inexact Rounded
+r0adx109  add 12345  0.00001   -> 12346 Inexact Rounded
+r0adx110  add 12345  0.0001    -> 12346 Inexact Rounded
+r0adx111  add 12345  0.001     -> 12346 Inexact Rounded
+r0adx112  add 12345  0.01      -> 12346 Inexact Rounded
+r0adx113  add 12345  0.1       -> 12346 Inexact Rounded
+
+r0adx115  add 12346  0.49999   -> 12346 Inexact Rounded
+r0adx116  add 12346  0.5       -> 12346 Inexact Rounded
+r0adx117  add 12346  0.50001   -> 12346 Inexact Rounded
+
+r0adx120  add 12345  0.4       -> 12346 Inexact Rounded
+r0adx121  add 12345  0.49      -> 12346 Inexact Rounded
+r0adx122  add 12345  0.499     -> 12346 Inexact Rounded
+r0adx123  add 12345  0.49999   -> 12346 Inexact Rounded
+r0adx124  add 12345  0.5       -> 12346 Inexact Rounded
+r0adx125  add 12345  0.50001   -> 12346 Inexact Rounded
+r0adx126  add 12345  0.5001    -> 12346 Inexact Rounded
+r0adx127  add 12345  0.501     -> 12346 Inexact Rounded
+r0adx128  add 12345  0.51      -> 12346 Inexact Rounded
+r0adx129  add 12345  0.6       -> 12346 Inexact Rounded
+
+-- negatives...
+
+r0sux100  add -12345 -0.1       -> -12346 Inexact Rounded
+r0sux101  add -12345 -0.01      -> -12346 Inexact Rounded
+r0sux102  add -12345 -0.001     -> -12346 Inexact Rounded
+r0sux103  add -12345 -0.00001   -> -12346 Inexact Rounded
+r0sux104  add -12345 -0.000001  -> -12346 Inexact Rounded
+r0sux105  add -12345 -0.0000001 -> -12346 Inexact Rounded
+r0sux106  add -12345  0         -> -12345
+r0sux107  add -12345  0.0000001 -> -12344 Inexact Rounded
+r0sux108  add -12345  0.000001  -> -12344 Inexact Rounded
+r0sux109  add -12345  0.00001   -> -12344 Inexact Rounded
+r0sux110  add -12345  0.0001    -> -12344 Inexact Rounded
+r0sux111  add -12345  0.001     -> -12344 Inexact Rounded
+r0sux112  add -12345  0.01      -> -12344 Inexact Rounded
+r0sux113  add -12345  0.1       -> -12344 Inexact Rounded
+
+r0sux115  add -12346  0.49999   -> -12346 Inexact Rounded
+r0sux116  add -12346  0.5       -> -12346 Inexact Rounded
+r0sux117  add -12346  0.50001   -> -12346 Inexact Rounded
+
+r0sux120  add -12345  0.4       -> -12344 Inexact Rounded
+r0sux121  add -12345  0.49      -> -12344 Inexact Rounded
+r0sux122  add -12345  0.499     -> -12344 Inexact Rounded
+r0sux123  add -12345  0.49999   -> -12344 Inexact Rounded
+r0sux124  add -12345  0.5       -> -12344 Inexact Rounded
+r0sux125  add -12345  0.50001   -> -12344 Inexact Rounded
+r0sux126  add -12345  0.5001    -> -12344 Inexact Rounded
+r0sux127  add -12345  0.501     -> -12344 Inexact Rounded
+r0sux128  add -12345  0.51      -> -12344 Inexact Rounded
+r0sux129  add -12345  0.6       -> -12344 Inexact Rounded
+
+-- Check cancellation subtractions
+-- (The IEEE 854 'curious rule' in $6.3)
+
+r0zex001  add  0    0    ->  0
+r0zex002  add  0   -0    ->  0
+r0zex003  add -0    0    ->  0
+r0zex004  add -0   -0    -> -0
+r0zex005  add  1   -1    ->  0
+r0zex006  add -1    1    ->  0
+r0zex007  add  1.5 -1.5  ->  0.0
+r0zex008  add -1.5  1.5  ->  0.0
+r0zex009  add  2   -2    ->  0
+r0zex010  add -2    2    ->  0
+
+
+-- Division operators -------------------------------------------------
+
+r0dvx101  divide 12345  1         ->  12345
+r0dvx102  divide 12345  1.0001    ->  12343 Inexact Rounded
+r0dvx103  divide 12345  1.001     ->  12332 Inexact Rounded
+r0dvx104  divide 12345  1.01      ->  12222 Inexact Rounded
+r0dvx105  divide 12345  1.1       ->  11222 Inexact Rounded
+r0dvx106  divide 12355  4         ->   3088.7 Inexact Rounded
+r0dvx107  divide 12345  4         ->   3086.2 Inexact Rounded
+r0dvx108  divide 12355  4.0001    ->   3088.6 Inexact Rounded
+r0dvx109  divide 12345  4.0001    ->   3086.1 Inexact Rounded
+r0dvx110  divide 12345  4.9       ->   2519.3 Inexact Rounded
+r0dvx111  divide 12345  4.99      ->   2473.9 Inexact Rounded
+r0dvx112  divide 12345  4.999     ->   2469.4 Inexact Rounded
+r0dvx113  divide 12345  4.9999    ->   2469.1 Inexact Rounded
+r0dvx114  divide 12345  5         ->   2469
+r0dvx115  divide 12345  5.0001    ->  2468.9 Inexact Rounded
+r0dvx116  divide 12345  5.001     ->  2468.6 Inexact Rounded
+r0dvx117  divide 12345  5.01      ->  2464.1 Inexact Rounded
+r0dvx118  divide 12345  5.1       ->  2420.6 Inexact Rounded
+
+-- [divideInteger and remainder unaffected]
+
+-- Multiplication operator --------------------------------------------
+
+r0mux101  multiply 12345  1         ->  12345
+r0mux102  multiply 12345  1.0001    ->  12346 Inexact Rounded
+r0mux103  multiply 12345  1.001     ->  12357 Inexact Rounded
+r0mux104  multiply 12345  1.01      ->  12468 Inexact Rounded
+r0mux105  multiply 12345  1.1       ->  13579 Inexact Rounded
+r0mux106  multiply 12345  4         ->  49380
+r0mux107  multiply 12345  4.0001    ->  49381 Inexact Rounded
+r0mux108  multiply 12345  4.9       ->  60491 Inexact Rounded
+r0mux109  multiply 12345  4.99      ->  61601 Inexact Rounded
+r0mux110  multiply 12345  4.999     ->  61712 Inexact Rounded
+r0mux111  multiply 12345  4.9999    ->  61723 Inexact Rounded
+r0mux112  multiply 12345  5         ->  61725
+r0mux113  multiply 12345  5.0001    ->  61726 Inexact Rounded
+r0mux114  multiply 12345  5.001     ->  61737 Inexact Rounded
+r0mux115  multiply 12345  5.01      ->  61848 Inexact Rounded
+r0mux116  multiply 12345  12        ->  1.4814E+5 Rounded
+r0mux117  multiply 12345  13        ->  1.6048E+5 Inexact Rounded
+r0mux118  multiply 12355  12        ->  1.4826E+5 Rounded
+r0mux119  multiply 12355  13        ->  1.6061E+5 Inexact Rounded
+
+
+-- Power operator -----------------------------------------------------
+
+r0pox101  power 12345  -5        ->  3.4877E-21 Inexact Rounded
+r0pox102  power 12345  -4        ->  4.3056E-17 Inexact Rounded
+r0pox103  power 12345  -3        ->  5.3152E-13 Inexact Rounded
+r0pox104  power 12345  -2        ->  6.5617E-9 Inexact Rounded
+r0pox105  power 12345  -1        ->  0.000081004 Inexact Rounded
+r0pox106  power 12345  0         ->  1
+r0pox107  power 12345  1         ->  12345
+r0pox108  power 12345  2         ->  1.5239E+8 Inexact Rounded
+r0pox109  power 12345  3         ->  1.8813E+12 Inexact Rounded
+r0pox110  power 12345  4         ->  2.3226E+16 Inexact Rounded
+r0pox111  power 12345  5         ->  2.8671E+20 Inexact Rounded
+r0pox112  power   415  2         ->  1.7222E+5 Inexact Rounded
+r0pox113  power    75  3         ->  4.2187E+5 Inexact Rounded
+
+
+-- Underflow Subnormal and overflow values vary with rounding mode and sign
+maxexponent: 999999999
+minexponent: -999999999
+-- [round down gives Nmax on first two and .0E... on the next two]
+r0ovx100  multiply   10    9E+999999999 ->  9.9999E+999999999 Overflow Inexact Rounded
+r0ovx101  multiply  -10    9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded
+r0ovx102  divide     1E-9  9E+999999999 ->  1E-1000000003 Underflow Subnormal Inexact Rounded
+r0ovx104  divide    -1E-9  9E+999999999 -> -1E-1000000003 Underflow Subnormal Inexact Rounded
+
+-- reprise rounding mode effect (using multiplies so precision directive used)
+precision: 9
+maxexponent: 999999999
+r0mex412 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded
+r0mex413 multiply  9.999E+999999999 10 ->  9.99999999E+999999999 Overflow Inexact Rounded
+
diff --git a/Lib/test/decimaltestdata/samequantum.decTest b/Lib/test/decimaltestdata/samequantum.decTest
index bdea000..3fa6cff 100644
--- a/Lib/test/decimaltestdata/samequantum.decTest
+++ b/Lib/test/decimaltestdata/samequantum.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- samequantum.decTest -- check quantums match                        --
--- Copyright (c) IBM Corporation, 2001, 2003.  All rights reserved.   --
+-- Copyright (c) IBM Corporation, 2001, 2007.  All rights reserved.   --
 ------------------------------------------------------------------------
 -- Please see the document "General Decimal Arithmetic Testcases"     --
 -- at http://www2.hursley.ibm.com/decimal for the description of      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
@@ -64,8 +64,44 @@
 samq048 samequantum -0E-17 -0.0E-16 -> 1
 samq049 samequantum -0E-17 -0.0E-17 -> 0
 
--- specials & combinations
+-- Nmax, Nmin, Ntiny
+samq051 samequantum  9.99999999E+999    9.99999999E+999  -> 1
+samq052 samequantum  1E-999             1E-999           -> 1
+samq053 samequantum  1.00000000E-999    1.00000000E-999  -> 1
+samq054 samequantum  1E-1007            1E-1007          -> 1
+samq055 samequantum  9.99999999E+999    9.99999999E+999  -> 1
+samq056 samequantum  1E-999             1E-999           -> 1
+samq057 samequantum  1.00000000E-999    1.00000000E-999  -> 1
+samq058 samequantum  1E-1007            1E-1007          -> 1
 
+samq061 samequantum  -1E-1007           -1E-1007         -> 1
+samq062 samequantum  -1.00000000E-999   -1.00000000E-999 -> 1
+samq063 samequantum  -1E-999            -1E-999          -> 1
+samq064 samequantum  -9.99999999E+999   -9.99999999E+999 -> 1
+samq065 samequantum  -1E-1007           -1E-1007         -> 1
+samq066 samequantum  -1.00000000E-999   -1.00000000E-999 -> 1
+samq067 samequantum  -1E-999            -1E-999          -> 1
+samq068 samequantum  -9.99999999E+999   -9.99999999E+999 -> 1
+
+samq071 samequantum  -4E-1007           -1E-1007         -> 1
+samq072 samequantum  -4.00000000E-999   -1.00004000E-999 -> 1
+samq073 samequantum  -4E-999            -1E-999          -> 1
+samq074 samequantum  -4.99999999E+999   -9.99949999E+999 -> 1
+samq075 samequantum  -4E-1007           -1E-1007         -> 1
+samq076 samequantum  -4.00000000E-999   -1.00400000E-999 -> 1
+samq077 samequantum  -4E-999            -1E-999          -> 1
+samq078 samequantum  -4.99999999E+999   -9.94999999E+999 -> 1
+
+samq081 samequantum  -4E-1006           -1E-1007         -> 0
+samq082 samequantum  -4.00000000E-999   -1.00004000E-996 -> 0
+samq083 samequantum  -4E-996            -1E-999          -> 0
+samq084 samequantum  -4.99999999E+999   -9.99949999E+996 -> 0
+samq085 samequantum  -4E-1006           -1E-1007         -> 0
+samq086 samequantum  -4.00000000E-999   -1.00400000E-996 -> 0
+samq087 samequantum  -4E-996            -1E-999          -> 0
+samq088 samequantum  -4.99999999E+999   -9.94999999E+996 -> 0
+
+-- specials & combinations
 samq0110 samequantum  -Inf    -Inf   -> 1
 samq0111 samequantum  -Inf     Inf   -> 1
 samq0112 samequantum  -Inf     NaN   -> 0
diff --git a/Lib/test/decimaltestdata/scaleb.decTest b/Lib/test/decimaltestdata/scaleb.decTest
new file mode 100644
index 0000000..e77d938
--- /dev/null
+++ b/Lib/test/decimaltestdata/scaleb.decTest
@@ -0,0 +1,200 @@
+------------------------------------------------------------------------

+-- scaleb.decTest -- scale a number by powers of 10                   --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Max |rhs| is 2*(999+9) = 2016

+

+-- Sanity checks

+scbx001 scaleb       7.50   10 -> 7.50E+10

+scbx002 scaleb       7.50    3 -> 7.50E+3

+scbx003 scaleb       7.50    2 -> 750

+scbx004 scaleb       7.50    1 -> 75.0

+scbx005 scaleb       7.50    0 -> 7.50

+scbx006 scaleb       7.50   -1 -> 0.750

+scbx007 scaleb       7.50   -2 -> 0.0750

+scbx008 scaleb       7.50  -10 -> 7.50E-10

+scbx009 scaleb      -7.50    3 -> -7.50E+3

+scbx010 scaleb      -7.50    2 -> -750

+scbx011 scaleb      -7.50    1 -> -75.0

+scbx012 scaleb      -7.50    0 -> -7.50

+scbx013 scaleb      -7.50   -1 -> -0.750

+

+-- Infinities

+scbx014 scaleb  Infinity   1 -> Infinity

+scbx015 scaleb  -Infinity  2 -> -Infinity

+scbx016 scaleb  Infinity  -1 -> Infinity

+scbx017 scaleb  -Infinity -2 -> -Infinity

+

+-- Next two are somewhat undefined in 754r; treat as non-integer

+scbx018 scaleb  10  Infinity -> NaN Invalid_operation

+scbx019 scaleb  10 -Infinity -> NaN Invalid_operation

+

+-- NaNs are undefined in 754r; assume usual processing

+-- NaNs, 0 payload

+scbx021 scaleb         NaN  1 -> NaN

+scbx022 scaleb        -NaN -1 -> -NaN

+scbx023 scaleb        sNaN  1 -> NaN Invalid_operation

+scbx024 scaleb       -sNaN  1 -> -NaN Invalid_operation

+scbx025 scaleb    4    NaN    -> NaN

+scbx026 scaleb -Inf   -NaN    -> -NaN

+scbx027 scaleb    4   sNaN    -> NaN Invalid_operation

+scbx028 scaleb  Inf  -sNaN    -> -NaN Invalid_operation

+

+-- non-integer RHS

+scbx030 scaleb  1.23    1    ->  12.3

+scbx031 scaleb  1.23    1.00 ->  NaN Invalid_operation

+scbx032 scaleb  1.23    1.1  ->  NaN Invalid_operation

+scbx033 scaleb  1.23    1.01 ->  NaN Invalid_operation

+scbx034 scaleb  1.23    0.01 ->  NaN Invalid_operation

+scbx035 scaleb  1.23    0.11 ->  NaN Invalid_operation

+scbx036 scaleb  1.23    0.999999999 ->  NaN Invalid_operation

+scbx037 scaleb  1.23   -1    ->  0.123

+scbx038 scaleb  1.23   -1.00 ->  NaN Invalid_operation

+scbx039 scaleb  1.23   -1.1  ->  NaN Invalid_operation

+scbx040 scaleb  1.23   -1.01 ->  NaN Invalid_operation

+scbx041 scaleb  1.23   -0.01 ->  NaN Invalid_operation

+scbx042 scaleb  1.23   -0.11 ->  NaN Invalid_operation

+scbx043 scaleb  1.23   -0.999999999 ->  NaN Invalid_operation

+scbx044 scaleb  1.23    0.1         ->  NaN Invalid_operation

+scbx045 scaleb  1.23    1E+1        ->  NaN Invalid_operation

+scbx046 scaleb  1.23    1.1234E+6   ->  NaN Invalid_operation

+scbx047 scaleb  1.23    1.123E+4    ->  NaN Invalid_operation

+

+

+scbx120 scaleb  1.23    2015        ->  Infinity Overflow Inexact Rounded

+scbx121 scaleb  1.23    2016        ->  Infinity Overflow Inexact Rounded

+scbx122 scaleb  1.23    2017        ->  NaN Invalid_operation

+scbx123 scaleb  1.23    2018        ->  NaN Invalid_operation

+scbx124 scaleb  1.23   -2015        ->  0E-1007 Underflow Subnormal Inexact Rounded Clamped

+scbx125 scaleb  1.23   -2016        ->  0E-1007 Underflow Subnormal Inexact Rounded Clamped

+scbx126 scaleb  1.23   -2017        ->  NaN Invalid_operation

+scbx127 scaleb  1.23   -2018        ->  NaN Invalid_operation

+

+-- NaNs, non-0 payload

+-- propagating NaNs

+scbx861 scaleb  NaN01   -Inf     ->  NaN1

+scbx862 scaleb -NaN02   -1000    -> -NaN2

+scbx863 scaleb  NaN03    1000    ->  NaN3

+scbx864 scaleb  NaN04    Inf     ->  NaN4

+scbx865 scaleb  NaN05    NaN61   ->  NaN5

+scbx866 scaleb -Inf     -NaN71   -> -NaN71

+scbx867 scaleb -1000     NaN81   ->  NaN81

+scbx868 scaleb  1000     NaN91   ->  NaN91

+scbx869 scaleb  Inf      NaN101  ->  NaN101

+scbx871 scaleb  sNaN011  -Inf    ->  NaN11  Invalid_operation

+scbx872 scaleb  sNaN012  -1000   ->  NaN12  Invalid_operation

+scbx873 scaleb -sNaN013   1000   -> -NaN13  Invalid_operation

+scbx874 scaleb  sNaN014   NaN171 ->  NaN14  Invalid_operation

+scbx875 scaleb  sNaN015  sNaN181 ->  NaN15  Invalid_operation

+scbx876 scaleb  NaN016   sNaN191 ->  NaN191 Invalid_operation

+scbx877 scaleb -Inf      sNaN201 ->  NaN201 Invalid_operation

+scbx878 scaleb -1000     sNaN211 ->  NaN211 Invalid_operation

+scbx879 scaleb  1000    -sNaN221 -> -NaN221 Invalid_operation

+scbx880 scaleb  Inf      sNaN231 ->  NaN231 Invalid_operation

+scbx881 scaleb  NaN025   sNaN241 ->  NaN241 Invalid_operation

+

+-- finites

+scbx051 scaleb          7   -2  -> 0.07

+scbx052 scaleb         -7   -2  -> -0.07

+scbx053 scaleb         75   -2  -> 0.75

+scbx054 scaleb        -75   -2  -> -0.75

+scbx055 scaleb       7.50   -2  -> 0.0750

+scbx056 scaleb      -7.50   -2  -> -0.0750

+scbx057 scaleb       7.500  -2  -> 0.07500

+scbx058 scaleb      -7.500  -2  -> -0.07500

+scbx061 scaleb          7   -1  -> 0.7

+scbx062 scaleb         -7   -1  -> -0.7

+scbx063 scaleb         75   -1  -> 7.5

+scbx064 scaleb        -75   -1  -> -7.5

+scbx065 scaleb       7.50   -1  -> 0.750

+scbx066 scaleb      -7.50   -1  -> -0.750

+scbx067 scaleb       7.500  -1  -> 0.7500

+scbx068 scaleb      -7.500  -1  -> -0.7500

+scbx071 scaleb          7    0  -> 7

+scbx072 scaleb         -7    0  -> -7

+scbx073 scaleb         75    0  -> 75

+scbx074 scaleb        -75    0  -> -75

+scbx075 scaleb       7.50    0  -> 7.50

+scbx076 scaleb      -7.50    0  -> -7.50

+scbx077 scaleb       7.500   0  -> 7.500

+scbx078 scaleb      -7.500   0  -> -7.500

+scbx081 scaleb          7    1  -> 7E+1

+scbx082 scaleb         -7    1  -> -7E+1

+scbx083 scaleb         75    1  -> 7.5E+2

+scbx084 scaleb        -75    1  -> -7.5E+2

+scbx085 scaleb       7.50    1  -> 75.0

+scbx086 scaleb      -7.50    1  -> -75.0

+scbx087 scaleb       7.500   1  -> 75.00

+scbx088 scaleb      -7.500   1  -> -75.00

+scbx091 scaleb          7    2  -> 7E+2

+scbx092 scaleb         -7    2  -> -7E+2

+scbx093 scaleb         75    2  -> 7.5E+3

+scbx094 scaleb        -75    2  -> -7.5E+3

+scbx095 scaleb       7.50    2  -> 750

+scbx096 scaleb      -7.50    2  -> -750

+scbx097 scaleb       7.500   2  -> 750.0

+scbx098 scaleb      -7.500   2  -> -750.0

+

+-- zeros

+scbx111 scaleb          0  1 -> 0E+1

+scbx112 scaleb         -0  2 -> -0E+2

+scbx113 scaleb       0E+4  3 -> 0E+7

+scbx114 scaleb      -0E+4  4 -> -0E+8

+scbx115 scaleb     0.0000  5 -> 0E+1

+scbx116 scaleb    -0.0000  6 -> -0E+2

+scbx117 scaleb      0E-141 7 -> 0E-134

+scbx118 scaleb     -0E-141 8 -> -0E-133

+

+-- Nmax, Nmin, Ntiny

+scbx132 scaleb  9.99999999E+999 +999 -> Infinity    Overflow Inexact Rounded

+scbx133 scaleb  9.99999999E+999  +10 -> Infinity     Overflow Inexact Rounded

+scbx134 scaleb  9.99999999E+999  +1  -> Infinity     Overflow Inexact Rounded

+scbx135 scaleb  9.99999999E+999   0  -> 9.99999999E+999

+scbx136 scaleb  9.99999999E+999  -1  -> 9.99999999E+998

+scbx137 scaleb  1E-999           +1  -> 1E-998

+scbx138 scaleb  1E-999           -0  -> 1E-999

+scbx139 scaleb  1E-999           -1  -> 1E-1000         Subnormal

+scbx140 scaleb  1.00000000E-999  +1  -> 1.00000000E-998

+scbx141 scaleb  1.00000000E-999   0  -> 1.00000000E-999

+scbx142 scaleb  1.00000000E-999  -1  -> 1.0000000E-1000 Subnormal Rounded

+scbx143 scaleb  1E-1007          +1  -> 1E-1006         Subnormal

+scbx144 scaleb  1E-1007          -0  -> 1E-1007         Subnormal

+scbx145 scaleb  1E-1007          -1  -> 0E-1007         Underflow Subnormal Inexact Rounded Clamped

+

+scbx150 scaleb  -1E-1007         +1  -> -1E-1006        Subnormal

+scbx151 scaleb  -1E-1007         -0  -> -1E-1007        Subnormal

+scbx152 scaleb  -1E-1007         -1  -> -0E-1007        Underflow Subnormal Inexact Rounded Clamped

+scbx153 scaleb  -1.00000000E-999 +1  -> -1.00000000E-998

+scbx154 scaleb  -1.00000000E-999 +0  -> -1.00000000E-999

+scbx155 scaleb  -1.00000000E-999 -1  -> -1.0000000E-1000 Subnormal Rounded

+scbx156 scaleb  -1E-999          +1  -> -1E-998

+scbx157 scaleb  -1E-999          -0  -> -1E-999

+scbx158 scaleb  -1E-999          -1  -> -1E-1000         Subnormal

+scbx159 scaleb  -9.99999999E+999 +1  -> -Infinity        Overflow Inexact Rounded

+scbx160 scaleb  -9.99999999E+999 +0  -> -9.99999999E+999

+scbx161 scaleb  -9.99999999E+999 -1  -> -9.99999999E+998

+scbx162 scaleb  -9E+999          +1  -> -Infinity        Overflow Inexact Rounded

+scbx163 scaleb  -1E+999          +1  -> -Infinity        Overflow Inexact Rounded

diff --git a/Lib/test/decimaltestdata/shift.decTest b/Lib/test/decimaltestdata/shift.decTest
new file mode 100644
index 0000000..397024e
--- /dev/null
+++ b/Lib/test/decimaltestdata/shift.decTest
@@ -0,0 +1,250 @@
+------------------------------------------------------------------------

+-- shift.decTest -- shift coefficient left or right                   --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check

+shix001 shift          0    0  ->  0

+shix002 shift          0    2  ->  0

+shix003 shift          1    2  ->  100

+shix004 shift          1    8  ->  100000000

+shix005 shift          1    9  ->  0

+shix006 shift          1   -1  ->  0

+shix007 shift  123456789   -1  ->  12345678

+shix008 shift  123456789   -8  ->  1

+shix009 shift  123456789   -9  ->  0

+shix010 shift          0   -2  ->  0

+

+-- rhs must be an integer

+shix011 shift        1    1.5    -> NaN Invalid_operation

+shix012 shift        1    1.0    -> NaN Invalid_operation

+shix013 shift        1    0.1    -> NaN Invalid_operation

+shix014 shift        1    0.0    -> NaN Invalid_operation

+shix015 shift        1    1E+1   -> NaN Invalid_operation

+shix016 shift        1    1E+99  -> NaN Invalid_operation

+shix017 shift        1    Inf    -> NaN Invalid_operation

+shix018 shift        1    -Inf   -> NaN Invalid_operation

+-- and |rhs| <= precision

+shix020 shift        1    -1000  -> NaN Invalid_operation

+shix021 shift        1    -10    -> NaN Invalid_operation

+shix022 shift        1     10    -> NaN Invalid_operation

+shix023 shift        1     1000  -> NaN Invalid_operation

+

+-- full shifting pattern

+shix030 shift  123456789          -9   -> 0

+shix031 shift  123456789          -8   -> 1

+shix032 shift  123456789          -7   -> 12

+shix033 shift  123456789          -6   -> 123

+shix034 shift  123456789          -5   -> 1234

+shix035 shift  123456789          -4   -> 12345

+shix036 shift  123456789          -3   -> 123456

+shix037 shift  123456789          -2   -> 1234567

+shix038 shift  123456789          -1   -> 12345678

+shix039 shift  123456789          -0   -> 123456789

+shix040 shift  123456789          +0   -> 123456789

+shix041 shift  123456789          +1   -> 234567890

+shix042 shift  123456789          +2   -> 345678900

+shix043 shift  123456789          +3   -> 456789000

+shix044 shift  123456789          +4   -> 567890000

+shix045 shift  123456789          +5   -> 678900000

+shix046 shift  123456789          +6   -> 789000000

+shix047 shift  123456789          +7   -> 890000000

+shix048 shift  123456789          +8   -> 900000000

+shix049 shift  123456789          +9   -> 0

+

+-- from examples

+shix051 shift 34        8   ->  '400000000'

+shix052 shift 12        9   ->  '0'

+shix053 shift 123456789 -2  ->  '1234567'

+shix054 shift 123456789 0   ->  '123456789'

+shix055 shift 123456789 +2  ->  '345678900'

+

+-- zeros

+shix060 shift  0E-10              +9   ->   0E-10

+shix061 shift  0E-10              -9   ->   0E-10

+shix062 shift  0.000              +9   ->   0.000

+shix063 shift  0.000              -9   ->   0.000

+shix064 shift  0E+10              +9   ->   0E+10

+shix065 shift  0E+10              -9   ->   0E+10

+shix066 shift -0E-10              +9   ->  -0E-10

+shix067 shift -0E-10              -9   ->  -0E-10

+shix068 shift -0.000              +9   ->  -0.000

+shix069 shift -0.000              -9   ->  -0.000

+shix070 shift -0E+10              +9   ->  -0E+10

+shix071 shift -0E+10              -9   ->  -0E+10

+

+-- Nmax, Nmin, Ntiny

+shix141 shift  9.99999999E+999     -1  -> 9.9999999E+998

+shix142 shift  9.99999999E+999     -8  -> 9E+991

+shix143 shift  9.99999999E+999      1  -> 9.99999990E+999

+shix144 shift  9.99999999E+999      8  -> 9.00000000E+999

+shix145 shift  1E-999              -1  -> 0E-999

+shix146 shift  1E-999              -8  -> 0E-999

+shix147 shift  1E-999               1  -> 1.0E-998

+shix148 shift  1E-999               8  -> 1.00000000E-991

+shix151 shift  1.00000000E-999     -1  -> 1.0000000E-1000

+shix152 shift  1.00000000E-999     -8  -> 1E-1007

+shix153 shift  1.00000000E-999      1  -> 0E-1007

+shix154 shift  1.00000000E-999      8  -> 0E-1007

+shix155 shift  9.00000000E-999     -1  -> 9.0000000E-1000

+shix156 shift  9.00000000E-999     -8  -> 9E-1007

+shix157 shift  9.00000000E-999      1  -> 0E-1007

+shix158 shift  9.00000000E-999      8  -> 0E-1007

+shix160 shift  1E-1007             -1  -> 0E-1007

+shix161 shift  1E-1007             -8  -> 0E-1007

+shix162 shift  1E-1007              1  -> 1.0E-1006

+shix163 shift  1E-1007              8  -> 1.00000000E-999

+--  negatives

+shix171 shift -9.99999999E+999     -1  -> -9.9999999E+998

+shix172 shift -9.99999999E+999     -8  -> -9E+991

+shix173 shift -9.99999999E+999      1  -> -9.99999990E+999

+shix174 shift -9.99999999E+999      8  -> -9.00000000E+999

+shix175 shift -1E-999              -1  -> -0E-999

+shix176 shift -1E-999              -8  -> -0E-999

+shix177 shift -1E-999               1  -> -1.0E-998

+shix178 shift -1E-999               8  -> -1.00000000E-991

+shix181 shift -1.00000000E-999     -1  -> -1.0000000E-1000

+shix182 shift -1.00000000E-999     -8  -> -1E-1007

+shix183 shift -1.00000000E-999      1  -> -0E-1007

+shix184 shift -1.00000000E-999      8  -> -0E-1007

+shix185 shift -9.00000000E-999     -1  -> -9.0000000E-1000

+shix186 shift -9.00000000E-999     -8  -> -9E-1007

+shix187 shift -9.00000000E-999      1  -> -0E-1007

+shix188 shift -9.00000000E-999      8  -> -0E-1007

+shix190 shift -1E-1007             -1  -> -0E-1007

+shix191 shift -1E-1007             -8  -> -0E-1007

+shix192 shift -1E-1007              1  -> -1.0E-1006

+shix193 shift -1E-1007              8  -> -1.00000000E-999

+

+-- more negatives (of sanities)

+shix201 shift         -0    0  ->  -0

+shix202 shift         -0    2  ->  -0

+shix203 shift         -1    2  ->  -100

+shix204 shift         -1    8  ->  -100000000

+shix205 shift         -1    9  ->  -0

+shix206 shift         -1   -1  ->  -0

+shix207 shift -123456789   -1  ->  -12345678

+shix208 shift -123456789   -8  ->  -1

+shix209 shift -123456789   -9  ->  -0

+shix210 shift         -0   -2  ->  -0

+shix211 shift         -0   -0  ->  -0

+

+

+-- Specials; NaNs are handled as usual

+shix781 shift -Inf  -8     -> -Infinity

+shix782 shift -Inf  -1     -> -Infinity

+shix783 shift -Inf  -0     -> -Infinity

+shix784 shift -Inf   0     -> -Infinity

+shix785 shift -Inf   1     -> -Infinity

+shix786 shift -Inf   8     -> -Infinity

+shix787 shift -1000 -Inf   -> NaN Invalid_operation

+shix788 shift -Inf  -Inf   -> NaN Invalid_operation

+shix789 shift -1    -Inf   -> NaN Invalid_operation

+shix790 shift -0    -Inf   -> NaN Invalid_operation

+shix791 shift  0    -Inf   -> NaN Invalid_operation

+shix792 shift  1    -Inf   -> NaN Invalid_operation

+shix793 shift  1000 -Inf   -> NaN Invalid_operation

+shix794 shift  Inf  -Inf   -> NaN Invalid_operation

+

+shix800 shift  Inf  -Inf   -> NaN Invalid_operation

+shix801 shift  Inf  -8     -> Infinity

+shix802 shift  Inf  -1     -> Infinity

+shix803 shift  Inf  -0     -> Infinity

+shix804 shift  Inf   0     -> Infinity

+shix805 shift  Inf   1     -> Infinity

+shix806 shift  Inf   8     -> Infinity

+shix807 shift  Inf   Inf   -> NaN Invalid_operation

+shix808 shift -1000  Inf   -> NaN Invalid_operation

+shix809 shift -Inf   Inf   -> NaN Invalid_operation

+shix810 shift -1     Inf   -> NaN Invalid_operation

+shix811 shift -0     Inf   -> NaN Invalid_operation

+shix812 shift  0     Inf   -> NaN Invalid_operation

+shix813 shift  1     Inf   -> NaN Invalid_operation

+shix814 shift  1000  Inf   -> NaN Invalid_operation

+shix815 shift  Inf   Inf   -> NaN Invalid_operation

+

+shix821 shift  NaN -Inf    ->  NaN

+shix822 shift  NaN -1000   ->  NaN

+shix823 shift  NaN -1      ->  NaN

+shix824 shift  NaN -0      ->  NaN

+shix825 shift  NaN  0      ->  NaN

+shix826 shift  NaN  1      ->  NaN

+shix827 shift  NaN  1000   ->  NaN

+shix828 shift  NaN  Inf    ->  NaN

+shix829 shift  NaN  NaN    ->  NaN

+shix830 shift -Inf  NaN    ->  NaN

+shix831 shift -1000 NaN    ->  NaN

+shix832 shift -1    NaN    ->  NaN

+shix833 shift -0    NaN    ->  NaN

+shix834 shift  0    NaN    ->  NaN

+shix835 shift  1    NaN    ->  NaN

+shix836 shift  1000 NaN    ->  NaN

+shix837 shift  Inf  NaN    ->  NaN

+

+shix841 shift  sNaN -Inf   ->  NaN  Invalid_operation

+shix842 shift  sNaN -1000  ->  NaN  Invalid_operation

+shix843 shift  sNaN -1     ->  NaN  Invalid_operation

+shix844 shift  sNaN -0     ->  NaN  Invalid_operation

+shix845 shift  sNaN  0     ->  NaN  Invalid_operation

+shix846 shift  sNaN  1     ->  NaN  Invalid_operation

+shix847 shift  sNaN  1000  ->  NaN  Invalid_operation

+shix848 shift  sNaN  NaN   ->  NaN  Invalid_operation

+shix849 shift  sNaN sNaN   ->  NaN  Invalid_operation

+shix850 shift  NaN  sNaN   ->  NaN  Invalid_operation

+shix851 shift -Inf  sNaN   ->  NaN  Invalid_operation

+shix852 shift -1000 sNaN   ->  NaN  Invalid_operation

+shix853 shift -1    sNaN   ->  NaN  Invalid_operation

+shix854 shift -0    sNaN   ->  NaN  Invalid_operation

+shix855 shift  0    sNaN   ->  NaN  Invalid_operation

+shix856 shift  1    sNaN   ->  NaN  Invalid_operation

+shix857 shift  1000 sNaN   ->  NaN  Invalid_operation

+shix858 shift  Inf  sNaN   ->  NaN  Invalid_operation

+shix859 shift  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+shix861 shift  NaN1   -Inf    ->  NaN1

+shix862 shift +NaN2   -1000   ->  NaN2

+shix863 shift  NaN3    1000   ->  NaN3

+shix864 shift  NaN4    Inf    ->  NaN4

+shix865 shift  NaN5   +NaN6   ->  NaN5

+shix866 shift -Inf     NaN7   ->  NaN7

+shix867 shift -1000    NaN8   ->  NaN8

+shix868 shift  1000    NaN9   ->  NaN9

+shix869 shift  Inf    +NaN10  ->  NaN10

+shix871 shift  sNaN11  -Inf   ->  NaN11  Invalid_operation

+shix872 shift  sNaN12  -1000  ->  NaN12  Invalid_operation

+shix873 shift  sNaN13   1000  ->  NaN13  Invalid_operation

+shix874 shift  sNaN14   NaN17 ->  NaN14  Invalid_operation

+shix875 shift  sNaN15  sNaN18 ->  NaN15  Invalid_operation

+shix876 shift  NaN16   sNaN19 ->  NaN19  Invalid_operation

+shix877 shift -Inf    +sNaN20 ->  NaN20  Invalid_operation

+shix878 shift -1000    sNaN21 ->  NaN21  Invalid_operation

+shix879 shift  1000    sNaN22 ->  NaN22  Invalid_operation

+shix880 shift  Inf     sNaN23 ->  NaN23  Invalid_operation

+shix881 shift +NaN25  +sNaN24 ->  NaN24  Invalid_operation

+shix882 shift -NaN26    NaN28 -> -NaN26

+shix883 shift -sNaN27  sNaN29 -> -NaN27  Invalid_operation

+shix884 shift  1000    -NaN30 -> -NaN30

+shix885 shift  1000   -sNaN31 -> -NaN31  Invalid_operation

diff --git a/Lib/test/decimaltestdata/squareroot.decTest b/Lib/test/decimaltestdata/squareroot.decTest
index 0c83cc7..8d7b26e 100644
--- a/Lib/test/decimaltestdata/squareroot.decTest
+++ b/Lib/test/decimaltestdata/squareroot.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- squareroot.decTest -- decimal square root                          --
--- Copyright (c) IBM Corporation, 2004.  All rights reserved.         --
+-- Copyright (c) IBM Corporation, 2003, 2007.  All rights reserved.   --
 ------------------------------------------------------------------------
 -- Please see the document "General Decimal Arithmetic Testcases"     --
 -- at http://www2.hursley.ibm.com/decimal for the description of      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
@@ -102,6 +102,8 @@
 sqtx075 squareroot -100.00      -> NaN Invalid_operation
 sqtx076 squareroot -1.1000E+3   -> NaN Invalid_operation
 sqtx077 squareroot -1.10000E+3  -> NaN Invalid_operation
+sqtx078 squareroot  1.000       -> 1.00
+sqtx079 squareroot  1.0000      -> 1.00
 
 -- famous squares
 sqtx080 squareroot     1  -> 1
@@ -2926,19 +2928,26 @@
 
 precision: 11               -- Etiny=-19
 sqtx804 squareroot  1E-19   -> 3.162277660E-10 Underflow Subnormal Inexact Rounded
-sqtx805 squareroot 10E-19   -> 1.0E-9
+sqtx805 squareroot 10E-19   -> 1.0E-9            -- exact
 precision: 12               -- Etiny=-20
 sqtx806 squareroot 10E-20   -> 3.1622776602E-10 Underflow Subnormal Inexact Rounded
-sqtx807 squareroot  1E-20   -> 1E-10 Subnormal   -- Exact Subnormal case
+sqtx807 squareroot  1E-20   -> 1E-10 Subnormal   -- exact Subnormal case
 
 precision: 13               -- Etiny=-21
 sqtx808 squareroot  1E-21   -> 3.1622776602E-11 Underflow Subnormal Inexact Rounded
-sqtx809 squareroot 10E-21   -> 1.0E-10 Subnormal
+sqtx809 squareroot 10E-21   -> 1.0E-10 Subnormal -- exact Subnormal case
 precision: 14               -- Etiny=-22
 sqtx810 squareroot  1E-21   -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded
 sqtx811 squareroot 10E-22   -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded
-sqtx812 squareroot  1E-22   -> 1E-11 Subnormal   -- Exact Subnormal case
+sqtx812 squareroot  1E-22   -> 1E-11 Subnormal   -- exact Subnormal case
 
+-- Not enough digits?
+precision:   16
+maxExponent: 384
+minExponent: -383
+rounding:    half_even
+sqtx815 squareroot 1.0000000001000000E-78  -> 1.000000000050000E-39 Inexact Rounded
+--                                            1 234567890123456
 
 -- special values
 maxexponent: 999
@@ -2954,5 +2963,842 @@
 sqtx827 squareroot  -NaN654 -> -NaN654
 sqtx828 squareroot   NaN1   ->  NaN1
 
+-- payload decapitate
+precision: 5
+sqtx840 squareroot -sNaN1234567890 -> -NaN67890  Invalid_operation
+
+------------------------------------------------------------------------
+--
+-- Special thanks to Mark Dickinson for tests in the range 8000-8999.
+--
+-- Extra tests for the square root function, dealing with a variety of
+-- corner cases.  In particular, these tests concentrate on
+--   (1) cases where the input precision exceeds the context precision, and
+--   (2) cases where the input exponent is outside the current context,
+--       and in particular when the result is subnormal
+--
+-- maxexponent and minexponent are set to 9 and -9 for most of these
+-- cases; only the precision changes.  The rounding also does not
+-- change, because it is ignored for this operation.
+maxexponent: 9
+minexponent: -9
+
+-- exact results, input precision > context precision
+precision: 1
+sqtx8000 squareroot 0 -> 0
+sqtx8001 squareroot 1 -> 1
+sqtx8002 squareroot 4 -> 2
+sqtx8003 squareroot 9 -> 3
+sqtx8004 squareroot 16 -> 4
+sqtx8005 squareroot 25 -> 5
+sqtx8006 squareroot 36 -> 6
+sqtx8007 squareroot 49 -> 7
+sqtx8008 squareroot 64 -> 8
+sqtx8009 squareroot 81 -> 9
+sqtx8010 squareroot 100 -> 1E+1 Rounded
+sqtx8011 squareroot 121 -> 1E+1 Inexact Rounded
+
+precision: 2
+sqtx8012 squareroot 0 -> 0
+sqtx8013 squareroot 1 -> 1
+sqtx8014 squareroot 4 -> 2
+sqtx8015 squareroot 9 -> 3
+sqtx8016 squareroot 16 -> 4
+sqtx8017 squareroot 25 -> 5
+sqtx8018 squareroot 36 -> 6
+sqtx8019 squareroot 49 -> 7
+sqtx8020 squareroot 64 -> 8
+sqtx8021 squareroot 81 -> 9
+sqtx8022 squareroot 100 -> 10
+sqtx8023 squareroot 121 -> 11
+sqtx8024 squareroot 144 -> 12
+sqtx8025 squareroot 169 -> 13
+sqtx8026 squareroot 196 -> 14
+sqtx8027 squareroot 225 -> 15
+sqtx8028 squareroot 256 -> 16
+sqtx8029 squareroot 289 -> 17
+sqtx8030 squareroot 324 -> 18
+sqtx8031 squareroot 361 -> 19
+sqtx8032 squareroot 400 -> 20
+sqtx8033 squareroot 441 -> 21
+sqtx8034 squareroot 484 -> 22
+sqtx8035 squareroot 529 -> 23
+sqtx8036 squareroot 576 -> 24
+sqtx8037 squareroot 625 -> 25
+sqtx8038 squareroot 676 -> 26
+sqtx8039 squareroot 729 -> 27
+sqtx8040 squareroot 784 -> 28
+sqtx8041 squareroot 841 -> 29
+sqtx8042 squareroot 900 -> 30
+sqtx8043 squareroot 961 -> 31
+sqtx8044 squareroot 1024 -> 32
+sqtx8045 squareroot 1089 -> 33
+sqtx8046 squareroot 1156 -> 34
+sqtx8047 squareroot 1225 -> 35
+sqtx8048 squareroot 1296 -> 36
+sqtx8049 squareroot 1369 -> 37
+sqtx8050 squareroot 1444 -> 38
+sqtx8051 squareroot 1521 -> 39
+sqtx8052 squareroot 1600 -> 40
+sqtx8053 squareroot 1681 -> 41
+sqtx8054 squareroot 1764 -> 42
+sqtx8055 squareroot 1849 -> 43
+sqtx8056 squareroot 1936 -> 44
+sqtx8057 squareroot 2025 -> 45
+sqtx8058 squareroot 2116 -> 46
+sqtx8059 squareroot 2209 -> 47
+sqtx8060 squareroot 2304 -> 48
+sqtx8061 squareroot 2401 -> 49
+sqtx8062 squareroot 2500 -> 50
+sqtx8063 squareroot 2601 -> 51
+sqtx8064 squareroot 2704 -> 52
+sqtx8065 squareroot 2809 -> 53
+sqtx8066 squareroot 2916 -> 54
+sqtx8067 squareroot 3025 -> 55
+sqtx8068 squareroot 3136 -> 56
+sqtx8069 squareroot 3249 -> 57
+sqtx8070 squareroot 3364 -> 58
+sqtx8071 squareroot 3481 -> 59
+sqtx8072 squareroot 3600 -> 60
+sqtx8073 squareroot 3721 -> 61
+sqtx8074 squareroot 3844 -> 62
+sqtx8075 squareroot 3969 -> 63
+sqtx8076 squareroot 4096 -> 64
+sqtx8077 squareroot 4225 -> 65
+sqtx8078 squareroot 4356 -> 66
+sqtx8079 squareroot 4489 -> 67
+sqtx8080 squareroot 4624 -> 68
+sqtx8081 squareroot 4761 -> 69
+sqtx8082 squareroot 4900 -> 70
+sqtx8083 squareroot 5041 -> 71
+sqtx8084 squareroot 5184 -> 72
+sqtx8085 squareroot 5329 -> 73
+sqtx8086 squareroot 5476 -> 74
+sqtx8087 squareroot 5625 -> 75
+sqtx8088 squareroot 5776 -> 76
+sqtx8089 squareroot 5929 -> 77
+sqtx8090 squareroot 6084 -> 78
+sqtx8091 squareroot 6241 -> 79
+sqtx8092 squareroot 6400 -> 80
+sqtx8093 squareroot 6561 -> 81
+sqtx8094 squareroot 6724 -> 82
+sqtx8095 squareroot 6889 -> 83
+sqtx8096 squareroot 7056 -> 84
+sqtx8097 squareroot 7225 -> 85
+sqtx8098 squareroot 7396 -> 86
+sqtx8099 squareroot 7569 -> 87
+sqtx8100 squareroot 7744 -> 88
+sqtx8101 squareroot 7921 -> 89
+sqtx8102 squareroot 8100 -> 90
+sqtx8103 squareroot 8281 -> 91
+sqtx8104 squareroot 8464 -> 92
+sqtx8105 squareroot 8649 -> 93
+sqtx8106 squareroot 8836 -> 94
+sqtx8107 squareroot 9025 -> 95
+sqtx8108 squareroot 9216 -> 96
+sqtx8109 squareroot 9409 -> 97
+sqtx8110 squareroot 9604 -> 98
+sqtx8111 squareroot 9801 -> 99
+sqtx8112 squareroot 10000 -> 1.0E+2 Rounded
+sqtx8113 squareroot 10201 -> 1.0E+2 Inexact Rounded
+
+precision: 3
+sqtx8114 squareroot 841 -> 29
+sqtx8115 squareroot 1600 -> 40
+sqtx8116 squareroot 2209 -> 47
+sqtx8117 squareroot 9604 -> 98
+sqtx8118 squareroot 21316 -> 146
+sqtx8119 squareroot 52441 -> 229
+sqtx8120 squareroot 68644 -> 262
+sqtx8121 squareroot 69696 -> 264
+sqtx8122 squareroot 70225 -> 265
+sqtx8123 squareroot 76729 -> 277
+sqtx8124 squareroot 130321 -> 361
+sqtx8125 squareroot 171396 -> 414
+sqtx8126 squareroot 270400 -> 520
+sqtx8127 squareroot 279841 -> 529
+sqtx8128 squareroot 407044 -> 638
+sqtx8129 squareroot 408321 -> 639
+sqtx8130 squareroot 480249 -> 693
+sqtx8131 squareroot 516961 -> 719
+sqtx8132 squareroot 692224 -> 832
+sqtx8133 squareroot 829921 -> 911
+
+-- selection of random exact results
+precision: 6
+sqtx8134 squareroot 2.25E-12 -> 0.0000015
+sqtx8135 squareroot 8.41E-14 -> 2.9E-7
+sqtx8136 squareroot 6.241E-15 -> 7.9E-8
+sqtx8137 squareroot 5.041E+13 -> 7.1E+6
+sqtx8138 squareroot 4761 -> 69
+sqtx8139 squareroot 1.369E+17 -> 3.7E+8
+sqtx8140 squareroot 0.00002116 -> 0.0046
+sqtx8141 squareroot 7.29E+4 -> 2.7E+2
+sqtx8142 squareroot 4.624E-13 -> 6.8E-7
+sqtx8143 squareroot 3.969E+5 -> 6.3E+2
+sqtx8144 squareroot 3.73321E-11 -> 0.00000611
+sqtx8145 squareroot 5.61001E+17 -> 7.49E+8
+sqtx8146 squareroot 2.30400E-11 -> 0.00000480
+sqtx8147 squareroot 4.30336E+17 -> 6.56E+8
+sqtx8148 squareroot 0.057121 -> 0.239
+sqtx8149 squareroot 7.225E+17 -> 8.5E+8
+sqtx8150 squareroot 3.14721E+13 -> 5.61E+6
+sqtx8151 squareroot 4.61041E+17 -> 6.79E+8
+sqtx8152 squareroot 1.39876E-15 -> 3.74E-8
+sqtx8153 squareroot 6.19369E-9 -> 0.0000787
+sqtx8154 squareroot 1.620529E-10 -> 0.00001273
+sqtx8155 squareroot 1177.1761 -> 34.31
+sqtx8156 squareroot 67043344 -> 8188
+sqtx8157 squareroot 4.84E+6 -> 2.2E+3
+sqtx8158 squareroot 1.23904E+11 -> 3.52E+5
+sqtx8159 squareroot 32604100 -> 5710
+sqtx8160 squareroot 2.9757025E-11 -> 0.000005455
+sqtx8161 squareroot 6.3760225E-9 -> 0.00007985
+sqtx8162 squareroot 4.5198729E-11 -> 0.000006723
+sqtx8163 squareroot 1.4745600E-11 -> 0.000003840
+sqtx8164 squareroot 18964283.04 -> 4354.8
+sqtx8165 squareroot 3.308895529E+13 -> 5.7523E+6
+sqtx8166 squareroot 0.0028590409 -> 0.05347
+sqtx8167 squareroot 3572.213824 -> 59.768
+sqtx8168 squareroot 4.274021376E+15 -> 6.5376E+7
+sqtx8169 squareroot 4455476.64 -> 2110.8
+sqtx8170 squareroot 38.44 -> 6.2
+sqtx8171 squareroot 68.558400 -> 8.280
+sqtx8172 squareroot 715402009 -> 26747
+sqtx8173 squareroot 93.373569 -> 9.663
+sqtx8174 squareroot 2.62144000000E+15 -> 5.12000E+7
+sqtx8175 squareroot 7.48225000000E+15 -> 8.65000E+7
+sqtx8176 squareroot 3.38724000000E-9 -> 0.0000582000
+sqtx8177 squareroot 5.64001000000E-13 -> 7.51000E-7
+sqtx8178 squareroot 5.06944000000E-15 -> 7.12000E-8
+sqtx8179 squareroot 4.95616000000E+17 -> 7.04000E+8
+sqtx8180 squareroot 0.0000242064000000 -> 0.00492000
+sqtx8181 squareroot 1.48996000000E-15 -> 3.86000E-8
+sqtx8182 squareroot 9.37024000000E+17 -> 9.68000E+8
+sqtx8183 squareroot 7128900.0000 -> 2670.00
+sqtx8184 squareroot 8.2311610000E-10 -> 0.0000286900
+sqtx8185 squareroot 482747040000 -> 694800
+sqtx8186 squareroot 4.14478440000E+17 -> 6.43800E+8
+sqtx8187 squareroot 5.10510250000E-7 -> 0.000714500
+sqtx8188 squareroot 355096.810000 -> 595.900
+sqtx8189 squareroot 14288400.0000 -> 3780.00
+sqtx8190 squareroot 3.36168040000E-15 -> 5.79800E-8
+sqtx8191 squareroot 1.70899560000E-13 -> 4.13400E-7
+sqtx8192 squareroot 0.0000378348010000 -> 0.00615100
+sqtx8193 squareroot 2.00972890000E-13 -> 4.48300E-7
+sqtx8194 squareroot 4.07222659600E-13 -> 6.38140E-7
+sqtx8195 squareroot 131486012100 -> 362610
+sqtx8196 squareroot 818192611600 -> 904540
+sqtx8197 squareroot 9.8558323600E+16 -> 3.13940E+8
+sqtx8198 squareroot 5641.06144900 -> 75.1070
+sqtx8199 squareroot 4.58789475600E+17 -> 6.77340E+8
+sqtx8200 squareroot 3.21386948100E-9 -> 0.0000566910
+sqtx8201 squareroot 3.9441960000E-8 -> 0.000198600
+sqtx8202 squareroot 242723.728900 -> 492.670
+sqtx8203 squareroot 1874.89000000 -> 43.3000
+sqtx8204 squareroot 2.56722595684E+15 -> 5.06678E+7
+sqtx8205 squareroot 3.96437714689E-17 -> 6.29633E-9
+sqtx8206 squareroot 3.80106774784E-17 -> 6.16528E-9
+sqtx8207 squareroot 1.42403588496E-13 -> 3.77364E-7
+sqtx8208 squareroot 4604.84388100 -> 67.8590
+sqtx8209 squareroot 2157100869.16 -> 46444.6
+sqtx8210 squareroot 355288570.81 -> 18849.1
+sqtx8211 squareroot 4.69775901604E-11 -> 0.00000685402
+sqtx8212 squareroot 8.22115770436E+17 -> 9.06706E+8
+sqtx8213 squareroot 7.16443744900E+15 -> 8.46430E+7
+sqtx8214 squareroot 9.48995498896E+15 -> 9.74164E+7
+sqtx8215 squareroot 0.0000419091801129 -> 0.00647373
+sqtx8216 squareroot 5862627996.84 -> 76567.8
+sqtx8217 squareroot 9369537.3409 -> 3060.97
+sqtx8218 squareroot 7.74792529729E+17 -> 8.80223E+8
+sqtx8219 squareroot 1.08626931396E+17 -> 3.29586E+8
+sqtx8220 squareroot 8.89584739684E-7 -> 0.000943178
+sqtx8221 squareroot 4.0266040896E-18 -> 2.00664E-9
+sqtx8222 squareroot 9.27669480336E-7 -> 0.000963156
+sqtx8223 squareroot 0.00225497717956 -> 0.0474866
+
+-- test use of round-half-even for ties
+precision: 1
+sqtx8224 squareroot 225 -> 2E+1 Inexact Rounded
+sqtx8225 squareroot 625 -> 2E+1 Inexact Rounded
+sqtx8226 squareroot 1225 -> 4E+1 Inexact Rounded
+sqtx8227 squareroot 2025 -> 4E+1 Inexact Rounded
+sqtx8228 squareroot 3025 -> 6E+1 Inexact Rounded
+sqtx8229 squareroot 4225 -> 6E+1 Inexact Rounded
+sqtx8230 squareroot 5625 -> 8E+1 Inexact Rounded
+sqtx8231 squareroot 7225 -> 8E+1 Inexact Rounded
+sqtx8232 squareroot 9025 -> 1E+2 Inexact Rounded
+
+precision: 2
+sqtx8233 squareroot 11025 -> 1.0E+2 Inexact Rounded
+sqtx8234 squareroot 13225 -> 1.2E+2 Inexact Rounded
+sqtx8235 squareroot 15625 -> 1.2E+2 Inexact Rounded
+sqtx8236 squareroot 18225 -> 1.4E+2 Inexact Rounded
+sqtx8237 squareroot 21025 -> 1.4E+2 Inexact Rounded
+sqtx8238 squareroot 24025 -> 1.6E+2 Inexact Rounded
+sqtx8239 squareroot 27225 -> 1.6E+2 Inexact Rounded
+sqtx8240 squareroot 30625 -> 1.8E+2 Inexact Rounded
+sqtx8241 squareroot 34225 -> 1.8E+2 Inexact Rounded
+sqtx8242 squareroot 38025 -> 2.0E+2 Inexact Rounded
+sqtx8243 squareroot 42025 -> 2.0E+2 Inexact Rounded
+sqtx8244 squareroot 46225 -> 2.2E+2 Inexact Rounded
+sqtx8245 squareroot 50625 -> 2.2E+2 Inexact Rounded
+sqtx8246 squareroot 55225 -> 2.4E+2 Inexact Rounded
+sqtx8247 squareroot 60025 -> 2.4E+2 Inexact Rounded
+sqtx8248 squareroot 65025 -> 2.6E+2 Inexact Rounded
+sqtx8249 squareroot 70225 -> 2.6E+2 Inexact Rounded
+sqtx8250 squareroot 75625 -> 2.8E+2 Inexact Rounded
+sqtx8251 squareroot 81225 -> 2.8E+2 Inexact Rounded
+sqtx8252 squareroot 87025 -> 3.0E+2 Inexact Rounded
+sqtx8253 squareroot 93025 -> 3.0E+2 Inexact Rounded
+sqtx8254 squareroot 99225 -> 3.2E+2 Inexact Rounded
+sqtx8255 squareroot 105625 -> 3.2E+2 Inexact Rounded
+sqtx8256 squareroot 112225 -> 3.4E+2 Inexact Rounded
+sqtx8257 squareroot 119025 -> 3.4E+2 Inexact Rounded
+sqtx8258 squareroot 126025 -> 3.6E+2 Inexact Rounded
+sqtx8259 squareroot 133225 -> 3.6E+2 Inexact Rounded
+sqtx8260 squareroot 140625 -> 3.8E+2 Inexact Rounded
+sqtx8261 squareroot 148225 -> 3.8E+2 Inexact Rounded
+sqtx8262 squareroot 156025 -> 4.0E+2 Inexact Rounded
+sqtx8263 squareroot 164025 -> 4.0E+2 Inexact Rounded
+sqtx8264 squareroot 172225 -> 4.2E+2 Inexact Rounded
+sqtx8265 squareroot 180625 -> 4.2E+2 Inexact Rounded
+sqtx8266 squareroot 189225 -> 4.4E+2 Inexact Rounded
+sqtx8267 squareroot 198025 -> 4.4E+2 Inexact Rounded
+sqtx8268 squareroot 207025 -> 4.6E+2 Inexact Rounded
+sqtx8269 squareroot 216225 -> 4.6E+2 Inexact Rounded
+sqtx8270 squareroot 225625 -> 4.8E+2 Inexact Rounded
+sqtx8271 squareroot 235225 -> 4.8E+2 Inexact Rounded
+sqtx8272 squareroot 245025 -> 5.0E+2 Inexact Rounded
+sqtx8273 squareroot 255025 -> 5.0E+2 Inexact Rounded
+sqtx8274 squareroot 265225 -> 5.2E+2 Inexact Rounded
+sqtx8275 squareroot 275625 -> 5.2E+2 Inexact Rounded
+sqtx8276 squareroot 286225 -> 5.4E+2 Inexact Rounded
+sqtx8277 squareroot 297025 -> 5.4E+2 Inexact Rounded
+sqtx8278 squareroot 308025 -> 5.6E+2 Inexact Rounded
+sqtx8279 squareroot 319225 -> 5.6E+2 Inexact Rounded
+sqtx8280 squareroot 330625 -> 5.8E+2 Inexact Rounded
+sqtx8281 squareroot 342225 -> 5.8E+2 Inexact Rounded
+sqtx8282 squareroot 354025 -> 6.0E+2 Inexact Rounded
+sqtx8283 squareroot 366025 -> 6.0E+2 Inexact Rounded
+sqtx8284 squareroot 378225 -> 6.2E+2 Inexact Rounded
+sqtx8285 squareroot 390625 -> 6.2E+2 Inexact Rounded
+sqtx8286 squareroot 403225 -> 6.4E+2 Inexact Rounded
+sqtx8287 squareroot 416025 -> 6.4E+2 Inexact Rounded
+sqtx8288 squareroot 429025 -> 6.6E+2 Inexact Rounded
+sqtx8289 squareroot 442225 -> 6.6E+2 Inexact Rounded
+sqtx8290 squareroot 455625 -> 6.8E+2 Inexact Rounded
+sqtx8291 squareroot 469225 -> 6.8E+2 Inexact Rounded
+sqtx8292 squareroot 483025 -> 7.0E+2 Inexact Rounded
+sqtx8293 squareroot 497025 -> 7.0E+2 Inexact Rounded
+sqtx8294 squareroot 511225 -> 7.2E+2 Inexact Rounded
+sqtx8295 squareroot 525625 -> 7.2E+2 Inexact Rounded
+sqtx8296 squareroot 540225 -> 7.4E+2 Inexact Rounded
+sqtx8297 squareroot 555025 -> 7.4E+2 Inexact Rounded
+sqtx8298 squareroot 570025 -> 7.6E+2 Inexact Rounded
+sqtx8299 squareroot 585225 -> 7.6E+2 Inexact Rounded
+sqtx8300 squareroot 600625 -> 7.8E+2 Inexact Rounded
+sqtx8301 squareroot 616225 -> 7.8E+2 Inexact Rounded
+sqtx8302 squareroot 632025 -> 8.0E+2 Inexact Rounded
+sqtx8303 squareroot 648025 -> 8.0E+2 Inexact Rounded
+sqtx8304 squareroot 664225 -> 8.2E+2 Inexact Rounded
+sqtx8305 squareroot 680625 -> 8.2E+2 Inexact Rounded
+sqtx8306 squareroot 697225 -> 8.4E+2 Inexact Rounded
+sqtx8307 squareroot 714025 -> 8.4E+2 Inexact Rounded
+sqtx8308 squareroot 731025 -> 8.6E+2 Inexact Rounded
+sqtx8309 squareroot 748225 -> 8.6E+2 Inexact Rounded
+sqtx8310 squareroot 765625 -> 8.8E+2 Inexact Rounded
+sqtx8311 squareroot 783225 -> 8.8E+2 Inexact Rounded
+sqtx8312 squareroot 801025 -> 9.0E+2 Inexact Rounded
+sqtx8313 squareroot 819025 -> 9.0E+2 Inexact Rounded
+sqtx8314 squareroot 837225 -> 9.2E+2 Inexact Rounded
+sqtx8315 squareroot 855625 -> 9.2E+2 Inexact Rounded
+sqtx8316 squareroot 874225 -> 9.4E+2 Inexact Rounded
+sqtx8317 squareroot 893025 -> 9.4E+2 Inexact Rounded
+sqtx8318 squareroot 912025 -> 9.6E+2 Inexact Rounded
+sqtx8319 squareroot 931225 -> 9.6E+2 Inexact Rounded
+sqtx8320 squareroot 950625 -> 9.8E+2 Inexact Rounded
+sqtx8321 squareroot 970225 -> 9.8E+2 Inexact Rounded
+sqtx8322 squareroot 990025 -> 1.0E+3 Inexact Rounded
+
+precision: 6
+sqtx8323 squareroot 88975734963025 -> 9.43270E+6 Inexact Rounded
+sqtx8324 squareroot 71085555000625 -> 8.43122E+6 Inexact Rounded
+sqtx8325 squareroot 39994304.051025 -> 6324.10 Inexact Rounded
+sqtx8326 squareroot 0.000007327172265625 -> 0.00270688 Inexact Rounded
+sqtx8327 squareroot 1.0258600439025E-13 -> 3.20290E-7 Inexact Rounded
+sqtx8328 squareroot 0.0034580574275625 -> 0.0588052 Inexact Rounded
+sqtx8329 squareroot 7.6842317700625E-7 -> 0.000876598 Inexact Rounded
+sqtx8330 squareroot 1263834495.2025 -> 35550.4 Inexact Rounded
+sqtx8331 squareroot 433970666460.25 -> 658764 Inexact Rounded
+sqtx8332 squareroot 4.5879286230625E-7 -> 0.000677342 Inexact Rounded
+sqtx8333 squareroot 0.0029305603306225 -> 0.0541346 Inexact Rounded
+sqtx8334 squareroot 70218282.733225 -> 8379.64 Inexact Rounded
+sqtx8335 squareroot 11942519.082025 -> 3455.80 Inexact Rounded
+sqtx8336 squareroot 0.0021230668905625 -> 0.0460768 Inexact Rounded
+sqtx8337 squareroot 0.90081833411025 -> 0.949114 Inexact Rounded
+sqtx8338 squareroot 5.5104120936225E-17 -> 7.42322E-9 Inexact Rounded
+sqtx8339 squareroot 0.10530446854225 -> 0.324506 Inexact Rounded
+sqtx8340 squareroot 8.706069866025E-14 -> 2.95060E-7 Inexact Rounded
+sqtx8341 squareroot 23838.58800625 -> 154.398 Inexact Rounded
+sqtx8342 squareroot 0.0013426911275625 -> 0.0366428 Inexact Rounded
+
+-- test use of round-half-even in underflow situations
+
+-- precisions 2; all cases where result is both subnormal and a tie
+precision: 2
+sqtx8343 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped
+sqtx8344 squareroot 2.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
+sqtx8345 squareroot 6.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
+sqtx8346 squareroot 1.225E-19 -> 4E-10 Underflow Subnormal Inexact Rounded
+sqtx8347 squareroot 2.025E-19 -> 4E-10 Underflow Subnormal Inexact Rounded
+sqtx8348 squareroot 3.025E-19 -> 6E-10 Underflow Subnormal Inexact Rounded
+sqtx8349 squareroot 4.225E-19 -> 6E-10 Underflow Subnormal Inexact Rounded
+sqtx8350 squareroot 5.625E-19 -> 8E-10 Underflow Subnormal Inexact Rounded
+sqtx8351 squareroot 7.225E-19 -> 8E-10 Underflow Subnormal Inexact Rounded
+sqtx8352 squareroot 9.025E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+
+-- precision 3, input precision <= 5
+precision: 3
+sqtx8353 squareroot 2.5E-23 -> 0E-11 Underflow Subnormal Inexact Rounded Clamped
+sqtx8354 squareroot 2.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
+sqtx8355 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
+sqtx8356 squareroot 1.225E-21 -> 4E-11 Underflow Subnormal Inexact Rounded
+sqtx8357 squareroot 2.025E-21 -> 4E-11 Underflow Subnormal Inexact Rounded
+sqtx8358 squareroot 3.025E-21 -> 6E-11 Underflow Subnormal Inexact Rounded
+sqtx8359 squareroot 4.225E-21 -> 6E-11 Underflow Subnormal Inexact Rounded
+sqtx8360 squareroot 5.625E-21 -> 8E-11 Underflow Subnormal Inexact Rounded
+sqtx8361 squareroot 7.225E-21 -> 8E-11 Underflow Subnormal Inexact Rounded
+sqtx8362 squareroot 9.025E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8363 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8364 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded
+sqtx8365 squareroot 1.5625E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded
+sqtx8366 squareroot 1.8225E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded
+sqtx8367 squareroot 2.1025E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded
+sqtx8368 squareroot 2.4025E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded
+sqtx8369 squareroot 2.7225E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded
+sqtx8370 squareroot 3.0625E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded
+sqtx8371 squareroot 3.4225E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded
+sqtx8372 squareroot 3.8025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8373 squareroot 4.2025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8374 squareroot 4.6225E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded
+sqtx8375 squareroot 5.0625E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded
+sqtx8376 squareroot 5.5225E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded
+sqtx8377 squareroot 6.0025E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded
+sqtx8378 squareroot 6.5025E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded
+sqtx8379 squareroot 7.0225E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded
+sqtx8380 squareroot 7.5625E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded
+sqtx8381 squareroot 8.1225E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded
+sqtx8382 squareroot 8.7025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8383 squareroot 9.3025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8384 squareroot 9.9225E-20 -> 3.2E-10 Underflow Subnormal Inexact Rounded
+
+--precision 4, input precision <= 4
+precision: 4
+sqtx8385 squareroot 2.5E-25 -> 0E-12 Underflow Subnormal Inexact Rounded Clamped
+sqtx8386 squareroot 2.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded
+sqtx8387 squareroot 6.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded
+sqtx8388 squareroot 1.225E-23 -> 4E-12 Underflow Subnormal Inexact Rounded
+sqtx8389 squareroot 2.025E-23 -> 4E-12 Underflow Subnormal Inexact Rounded
+sqtx8390 squareroot 3.025E-23 -> 6E-12 Underflow Subnormal Inexact Rounded
+sqtx8391 squareroot 4.225E-23 -> 6E-12 Underflow Subnormal Inexact Rounded
+sqtx8392 squareroot 5.625E-23 -> 8E-12 Underflow Subnormal Inexact Rounded
+sqtx8393 squareroot 7.225E-23 -> 8E-12 Underflow Subnormal Inexact Rounded
+sqtx8394 squareroot 9.025E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded
+
+--precision 5, input precision <= 5
+precision: 5
+sqtx8395 squareroot 2.5E-27 -> 0E-13 Underflow Subnormal Inexact Rounded  Clamped
+sqtx8396 squareroot 2.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded
+sqtx8397 squareroot 6.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded
+sqtx8398 squareroot 1.225E-25 -> 4E-13 Underflow Subnormal Inexact Rounded
+sqtx8399 squareroot 2.025E-25 -> 4E-13 Underflow Subnormal Inexact Rounded
+sqtx8400 squareroot 3.025E-25 -> 6E-13 Underflow Subnormal Inexact Rounded
+sqtx8401 squareroot 4.225E-25 -> 6E-13 Underflow Subnormal Inexact Rounded
+sqtx8402 squareroot 5.625E-25 -> 8E-13 Underflow Subnormal Inexact Rounded
+sqtx8403 squareroot 7.225E-25 -> 8E-13 Underflow Subnormal Inexact Rounded
+sqtx8404 squareroot 9.025E-25 -> 1.0E-12 Underflow Subnormal Inexact Rounded
+sqtx8405 squareroot 1.1025E-24 -> 1.0E-12 Underflow Subnormal Inexact Rounded
+sqtx8406 squareroot 1.3225E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded
+sqtx8407 squareroot 1.5625E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded
+sqtx8408 squareroot 1.8225E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded
+sqtx8409 squareroot 2.1025E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded
+sqtx8410 squareroot 2.4025E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded
+sqtx8411 squareroot 2.7225E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded
+sqtx8412 squareroot 3.0625E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded
+sqtx8413 squareroot 3.4225E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded
+sqtx8414 squareroot 3.8025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded
+sqtx8415 squareroot 4.2025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded
+sqtx8416 squareroot 4.6225E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded
+sqtx8417 squareroot 5.0625E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded
+sqtx8418 squareroot 5.5225E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded
+sqtx8419 squareroot 6.0025E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded
+sqtx8420 squareroot 6.5025E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded
+sqtx8421 squareroot 7.0225E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded
+sqtx8422 squareroot 7.5625E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded
+sqtx8423 squareroot 8.1225E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded
+sqtx8424 squareroot 8.7025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded
+sqtx8425 squareroot 9.3025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded
+sqtx8426 squareroot 9.9225E-24 -> 3.2E-12 Underflow Subnormal Inexact Rounded
+
+-- a random selection of values that Python2.5.1 rounds incorrectly
+precision: 1
+sqtx8427 squareroot 227 -> 2E+1 Inexact Rounded
+sqtx8428 squareroot 625 -> 2E+1 Inexact Rounded
+sqtx8429 squareroot 1215 -> 3E+1 Inexact Rounded
+sqtx8430 squareroot 2008 -> 4E+1 Inexact Rounded
+sqtx8431 squareroot 2020 -> 4E+1 Inexact Rounded
+sqtx8432 squareroot 2026 -> 5E+1 Inexact Rounded
+sqtx8433 squareroot 2027 -> 5E+1 Inexact Rounded
+sqtx8434 squareroot 2065 -> 5E+1 Inexact Rounded
+sqtx8435 squareroot 2075 -> 5E+1 Inexact Rounded
+sqtx8436 squareroot 2088 -> 5E+1 Inexact Rounded
+sqtx8437 squareroot 3049 -> 6E+1 Inexact Rounded
+sqtx8438 squareroot 3057 -> 6E+1 Inexact Rounded
+sqtx8439 squareroot 3061 -> 6E+1 Inexact Rounded
+sqtx8440 squareroot 3092 -> 6E+1 Inexact Rounded
+sqtx8441 squareroot 4222 -> 6E+1 Inexact Rounded
+sqtx8442 squareroot 5676 -> 8E+1 Inexact Rounded
+sqtx8443 squareroot 5686 -> 8E+1 Inexact Rounded
+sqtx8444 squareroot 7215 -> 8E+1 Inexact Rounded
+sqtx8445 squareroot 9086 -> 1E+2 Inexact Rounded
+sqtx8446 squareroot 9095 -> 1E+2 Inexact Rounded
+
+precision: 2
+sqtx8447 squareroot 1266 -> 36 Inexact Rounded
+sqtx8448 squareroot 2552 -> 51 Inexact Rounded
+sqtx8449 squareroot 5554 -> 75 Inexact Rounded
+sqtx8450 squareroot 7832 -> 88 Inexact Rounded
+sqtx8451 squareroot 13201 -> 1.1E+2 Inexact Rounded
+sqtx8452 squareroot 15695 -> 1.3E+2 Inexact Rounded
+sqtx8453 squareroot 18272 -> 1.4E+2 Inexact Rounded
+sqtx8454 squareroot 21026 -> 1.5E+2 Inexact Rounded
+sqtx8455 squareroot 24069 -> 1.6E+2 Inexact Rounded
+sqtx8456 squareroot 34277 -> 1.9E+2 Inexact Rounded
+sqtx8457 squareroot 46233 -> 2.2E+2 Inexact Rounded
+sqtx8458 squareroot 46251 -> 2.2E+2 Inexact Rounded
+sqtx8459 squareroot 46276 -> 2.2E+2 Inexact Rounded
+sqtx8460 squareroot 70214 -> 2.6E+2 Inexact Rounded
+sqtx8461 squareroot 81249 -> 2.9E+2 Inexact Rounded
+sqtx8462 squareroot 81266 -> 2.9E+2 Inexact Rounded
+sqtx8463 squareroot 93065 -> 3.1E+2 Inexact Rounded
+sqtx8464 squareroot 93083 -> 3.1E+2 Inexact Rounded
+sqtx8465 squareroot 99230 -> 3.2E+2 Inexact Rounded
+sqtx8466 squareroot 99271 -> 3.2E+2 Inexact Rounded
+
+precision: 3
+sqtx8467 squareroot 11349 -> 107 Inexact Rounded
+sqtx8468 squareroot 26738 -> 164 Inexact Rounded
+sqtx8469 squareroot 31508 -> 178 Inexact Rounded
+sqtx8470 squareroot 44734 -> 212 Inexact Rounded
+sqtx8471 squareroot 44738 -> 212 Inexact Rounded
+sqtx8472 squareroot 51307 -> 227 Inexact Rounded
+sqtx8473 squareroot 62259 -> 250 Inexact Rounded
+sqtx8474 squareroot 75901 -> 276 Inexact Rounded
+sqtx8475 squareroot 76457 -> 277 Inexact Rounded
+sqtx8476 squareroot 180287 -> 425 Inexact Rounded
+sqtx8477 squareroot 202053 -> 450 Inexact Rounded
+sqtx8478 squareroot 235747 -> 486 Inexact Rounded
+sqtx8479 squareroot 256537 -> 506 Inexact Rounded
+sqtx8480 squareroot 299772 -> 548 Inexact Rounded
+sqtx8481 squareroot 415337 -> 644 Inexact Rounded
+sqtx8482 squareroot 617067 -> 786 Inexact Rounded
+sqtx8483 squareroot 628022 -> 792 Inexact Rounded
+sqtx8484 squareroot 645629 -> 804 Inexact Rounded
+sqtx8485 squareroot 785836 -> 886 Inexact Rounded
+sqtx8486 squareroot 993066 -> 997 Inexact Rounded
+
+precision: 6
+sqtx8487 squareroot 14917781 -> 3862.35 Inexact Rounded
+sqtx8488 squareroot 17237238 -> 4151.78 Inexact Rounded
+sqtx8489 squareroot 18054463 -> 4249.05 Inexact Rounded
+sqtx8490 squareroot 19990694 -> 4471.10 Inexact Rounded
+sqtx8491 squareroot 29061855 -> 5390.90 Inexact Rounded
+sqtx8492 squareroot 49166257 -> 7011.87 Inexact Rounded
+sqtx8493 squareroot 53082086 -> 7285.75 Inexact Rounded
+sqtx8494 squareroot 56787909 -> 7535.78 Inexact Rounded
+sqtx8495 squareroot 81140019 -> 9007.78 Inexact Rounded
+sqtx8496 squareroot 87977554 -> 9379.64 Inexact Rounded
+sqtx8497 squareroot 93624683 -> 9675.98 Inexact Rounded
+sqtx8498 squareroot 98732747 -> 9936.44 Inexact Rounded
+sqtx8499 squareroot 99222813 -> 9961.06 Inexact Rounded
+sqtx8500 squareroot 143883626 -> 11995.2 Inexact Rounded
+sqtx8501 squareroot 180433301 -> 13432.5 Inexact Rounded
+sqtx8502 squareroot 227034020 -> 15067.6 Inexact Rounded
+sqtx8503 squareroot 283253992 -> 16830.2 Inexact Rounded
+sqtx8504 squareroot 617047954 -> 24840.4 Inexact Rounded
+sqtx8505 squareroot 736870094 -> 27145.4 Inexact Rounded
+sqtx8506 squareroot 897322915 -> 29955.3 Inexact Rounded
+
+-- results close to minimum normal
+precision: 1
+sqtx8507 squareroot 1E-20 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped
+sqtx8508 squareroot 1E-19 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped
+sqtx8509 squareroot 1E-18 -> 1E-9
+
+precision: 2
+sqtx8510 squareroot 8.1E-19 -> 9E-10 Subnormal
+sqtx8511 squareroot 8.10E-19 -> 9E-10 Subnormal Rounded
+sqtx8512 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded
+sqtx8513 squareroot 9.02E-19 -> 9E-10 Underflow Subnormal Inexact Rounded
+sqtx8514 squareroot 9.03E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+sqtx8515 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+sqtx8516 squareroot 9.9E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+sqtx8517 squareroot 9.91E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+sqtx8518 squareroot 9.92E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+sqtx8519 squareroot 9.95E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+sqtx8520 squareroot 9.98E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+sqtx8521 squareroot 9.99E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+sqtx8522 squareroot 1E-18 -> 1E-9
+sqtx8523 squareroot 1.0E-18 -> 1.0E-9
+sqtx8524 squareroot 1.00E-18 -> 1.0E-9
+sqtx8525 squareroot 1.000E-18 -> 1.0E-9 Rounded
+sqtx8526 squareroot 1.0000E-18 -> 1.0E-9 Rounded
+sqtx8527 squareroot 1.01E-18 -> 1.0E-9 Inexact Rounded
+sqtx8528 squareroot 1.02E-18 -> 1.0E-9 Inexact Rounded
+sqtx8529 squareroot 1.1E-18 -> 1.0E-9 Inexact Rounded
+
+precision: 3
+sqtx8530 squareroot 8.1E-19 -> 9E-10 Subnormal
+sqtx8531 squareroot 8.10E-19 -> 9.0E-10 Subnormal
+sqtx8532 squareroot 8.100E-19 -> 9.0E-10 Subnormal
+sqtx8533 squareroot 8.1000E-19 -> 9.0E-10 Subnormal Rounded
+sqtx8534 squareroot 9.9E-19 -> 9.9E-10 Underflow Subnormal Inexact Rounded
+sqtx8535 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded
+sqtx8536 squareroot 9.99E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded
+sqtx8537 squareroot 9.998E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded
+sqtx8538 squareroot 1E-18 -> 1E-9
+sqtx8539 squareroot 1.0E-18 -> 1.0E-9
+sqtx8540 squareroot 1.00E-18 -> 1.0E-9
+sqtx8541 squareroot 1.000E-18 -> 1.00E-9
+sqtx8542 squareroot 1.0000E-18 -> 1.00E-9
+sqtx8543 squareroot 1.00000E-18 -> 1.00E-9 Rounded
+sqtx8544 squareroot 1.000000E-18 -> 1.00E-9 Rounded
+sqtx8545 squareroot 1.01E-18 -> 1.00E-9 Inexact Rounded
+sqtx8546 squareroot 1.02E-18 -> 1.01E-9 Inexact Rounded
+
+-- result exactly representable with precision p, but not necessarily
+-- exactly representable as a subnormal;  check the correct flags are raised
+precision: 2
+sqtx8547 squareroot 1.21E-20 -> 1E-10 Underflow Subnormal Inexact Rounded
+sqtx8548 squareroot 1.44E-20 -> 1E-10 Underflow Subnormal Inexact Rounded
+sqtx8549 squareroot 9.61E-20 -> 3E-10 Underflow Subnormal Inexact Rounded
+sqtx8550 squareroot 8.836E-19 -> 9E-10 Underflow Subnormal Inexact Rounded
+sqtx8551 squareroot 9.216E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+
+precision: 3
+sqtx8552 squareroot 1.21E-22 -> 1E-11 Underflow Subnormal Inexact Rounded
+sqtx8553 squareroot 1.21E-20 -> 1.1E-10 Subnormal
+sqtx8554 squareroot 1.96E-22 -> 1E-11 Underflow Subnormal Inexact Rounded
+sqtx8555 squareroot 1.96E-20 -> 1.4E-10 Subnormal
+sqtx8556 squareroot 2.56E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
+sqtx8557 squareroot 4.00E-22 -> 2E-11 Subnormal Rounded
+sqtx8558 squareroot 7.84E-22 -> 3E-11 Underflow Subnormal Inexact Rounded
+sqtx8559 squareroot 9.801E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8560 squareroot 9.801E-19 -> 9.9E-10 Subnormal
+sqtx8561 squareroot 1.0201E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8562 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded
+sqtx8563 squareroot 1.1236E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded
+sqtx8564 squareroot 1.2996E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded
+sqtx8565 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded
+
+-- A selection of subnormal results prone to double rounding errors
+precision: 2
+sqtx8566 squareroot 2.3E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped
+sqtx8567 squareroot 2.4E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped
+sqtx8568 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped
+sqtx8569 squareroot 2.6E-21 -> 1E-10 Underflow Subnormal Inexact Rounded
+sqtx8570 squareroot 2.7E-21 -> 1E-10 Underflow Subnormal Inexact Rounded
+sqtx8571 squareroot 2.8E-21 -> 1E-10 Underflow Subnormal Inexact Rounded
+sqtx8572 squareroot 2.2E-20 -> 1E-10 Underflow Subnormal Inexact Rounded
+sqtx8573 squareroot 2.3E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
+sqtx8574 squareroot 2.4E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
+sqtx8575 squareroot 6.2E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
+sqtx8576 squareroot 6.3E-20 -> 3E-10 Underflow Subnormal Inexact Rounded
+sqtx8577 squareroot 6.4E-20 -> 3E-10 Underflow Subnormal Inexact Rounded
+sqtx8578 squareroot 6.5E-20 -> 3E-10 Underflow Subnormal Inexact Rounded
+sqtx8579 squareroot 1.2E-19 -> 3E-10 Underflow Subnormal Inexact Rounded
+sqtx8580 squareroot 2.0E-19 -> 4E-10 Underflow Subnormal Inexact Rounded
+sqtx8581 squareroot 4.2E-19 -> 6E-10 Underflow Subnormal Inexact Rounded
+sqtx8582 squareroot 5.6E-19 -> 7E-10 Underflow Subnormal Inexact Rounded
+sqtx8583 squareroot 5.7E-19 -> 8E-10 Underflow Subnormal Inexact Rounded
+sqtx8584 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded
+sqtx8585 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
+precision: 3
+sqtx8586 squareroot 2.6E-23 -> 1E-11 Underflow Subnormal Inexact Rounded
+sqtx8587 squareroot 2.22E-22 -> 1E-11 Underflow Subnormal Inexact Rounded
+sqtx8588 squareroot 6.07E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
+sqtx8589 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
+sqtx8590 squareroot 6.45E-22 -> 3E-11 Underflow Subnormal Inexact Rounded
+sqtx8591 squareroot 6.50E-22 -> 3E-11 Underflow Subnormal Inexact Rounded
+sqtx8592 squareroot 1.22E-21 -> 3E-11 Underflow Subnormal Inexact Rounded
+sqtx8593 squareroot 1.24E-21 -> 4E-11 Underflow Subnormal Inexact Rounded
+sqtx8594 squareroot 4.18E-21 -> 6E-11 Underflow Subnormal Inexact Rounded
+sqtx8595 squareroot 7.19E-21 -> 8E-11 Underflow Subnormal Inexact Rounded
+sqtx8596 squareroot 8.94E-21 -> 9E-11 Underflow Subnormal Inexact Rounded
+sqtx8597 squareroot 1.81E-20 -> 1.3E-10 Underflow Subnormal Inexact Rounded
+sqtx8598 squareroot 4.64E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded
+sqtx8599 squareroot 5.06E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded
+sqtx8600 squareroot 5.08E-20 -> 2.3E-10 Underflow Subnormal Inexact Rounded
+sqtx8601 squareroot 7.00E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded
+sqtx8602 squareroot 1.81E-19 -> 4.3E-10 Underflow Subnormal Inexact Rounded
+sqtx8603 squareroot 6.64E-19 -> 8.1E-10 Underflow Subnormal Inexact Rounded
+sqtx8604 squareroot 7.48E-19 -> 8.6E-10 Underflow Subnormal Inexact Rounded
+sqtx8605 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded
+precision: 4
+sqtx8606 squareroot 6.24E-24 -> 2E-12 Underflow Subnormal Inexact Rounded
+sqtx8607 squareroot 7.162E-23 -> 8E-12 Underflow Subnormal Inexact Rounded
+sqtx8608 squareroot 7.243E-23 -> 9E-12 Underflow Subnormal Inexact Rounded
+sqtx8609 squareroot 8.961E-23 -> 9E-12 Underflow Subnormal Inexact Rounded
+sqtx8610 squareroot 9.029E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded
+sqtx8611 squareroot 4.624E-22 -> 2.2E-11 Underflow Subnormal Inexact Rounded
+sqtx8612 squareroot 5.980E-22 -> 2.4E-11 Underflow Subnormal Inexact Rounded
+sqtx8613 squareroot 6.507E-22 -> 2.6E-11 Underflow Subnormal Inexact Rounded
+sqtx8614 squareroot 1.483E-21 -> 3.9E-11 Underflow Subnormal Inexact Rounded
+sqtx8615 squareroot 3.903E-21 -> 6.2E-11 Underflow Subnormal Inexact Rounded
+sqtx8616 squareroot 8.733E-21 -> 9.3E-11 Underflow Subnormal Inexact Rounded
+sqtx8617 squareroot 1.781E-20 -> 1.33E-10 Underflow Subnormal Inexact Rounded
+sqtx8618 squareroot 6.426E-20 -> 2.53E-10 Underflow Subnormal Inexact Rounded
+sqtx8619 squareroot 7.102E-20 -> 2.66E-10 Underflow Subnormal Inexact Rounded
+sqtx8620 squareroot 7.535E-20 -> 2.74E-10 Underflow Subnormal Inexact Rounded
+sqtx8621 squareroot 9.892E-20 -> 3.15E-10 Underflow Subnormal Inexact Rounded
+sqtx8622 squareroot 1.612E-19 -> 4.01E-10 Underflow Subnormal Inexact Rounded
+sqtx8623 squareroot 1.726E-19 -> 4.15E-10 Underflow Subnormal Inexact Rounded
+sqtx8624 squareroot 1.853E-19 -> 4.30E-10 Underflow Subnormal Inexact Rounded
+sqtx8625 squareroot 4.245E-19 -> 6.52E-10 Underflow Subnormal Inexact Rounded
+
+-- clamping and overflow for large exponents
+precision: 1
+sqtx8626 squareroot 1E+18 -> 1E+9
+sqtx8627 squareroot 1E+19 -> 3E+9 Inexact Rounded
+sqtx8628 squareroot 9E+19 -> 9E+9 Inexact Rounded
+sqtx8629 squareroot 9.1E+19 -> Infinity Overflow Inexact Rounded
+sqtx8630 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
+
+precision: 2
+sqtx8631 squareroot 1E+18 -> 1E+9
+sqtx8632 squareroot 1.0E+18 -> 1.0E+9
+sqtx8633 squareroot 1.00E+18 -> 1.0E+9
+sqtx8634 squareroot 1.000E+18 -> 1.0E+9 Rounded
+sqtx8635 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
+clamp: 1
+sqtx8636 squareroot 1E+18 -> 1.0E+9 Clamped
+sqtx8637 squareroot 1.0E+18 -> 1.0E+9
+sqtx8638 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
+clamp: 0
+
+precision: 6
+sqtx8639 squareroot 1E+18 -> 1E+9
+sqtx8640 squareroot 1.0000000000E+18 -> 1.00000E+9
+sqtx8641 squareroot 1.00000000000E+18 -> 1.00000E+9 Rounded
+sqtx8642 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
+clamp: 1
+sqtx8643 squareroot 1E+8 -> 1E+4
+sqtx8644 squareroot 1E+10 -> 1.0E+5 Clamped
+sqtx8645 squareroot 1.0E+10 -> 1.0E+5
+sqtx8646 squareroot 1E+12 -> 1.00E+6 Clamped
+sqtx8647 squareroot 1.0E+12 -> 1.00E+6 Clamped
+sqtx8648 squareroot 1.00E+12 -> 1.00E+6 Clamped
+sqtx8649 squareroot 1.000E+12 -> 1.00E+6
+sqtx8650 squareroot 1E+18 -> 1.00000E+9 Clamped
+sqtx8651 squareroot 1.00000000E+18 -> 1.00000E+9 Clamped
+sqtx8652 squareroot 1.000000000E+18 -> 1.00000E+9
+sqtx8653 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
+clamp: 0
+
+-- The following example causes a TypeError in Python 2.5.1
+precision: 3
+maxexponent: 9
+minexponent: -9
+sqtx8654 squareroot 10000000000 -> 1.00E+5 Rounded
+
+-- Additional tricky cases of underflown subnormals
+rounding: half_even
+precision: 5
+maxexponent: 999
+minexponent: -999
+sqtx8700 squareroot 2.8073E-2000 -> 1.675E-1000 Underflow Subnormal Inexact Rounded
+sqtx8701 squareroot 2.8883E-2000 -> 1.699E-1000 Underflow Subnormal Inexact Rounded
+sqtx8702 squareroot 3.1524E-2000 -> 1.775E-1000 Underflow Subnormal Inexact Rounded
+sqtx8703 squareroot 3.2382E-2000 -> 1.799E-1000 Underflow Subnormal Inexact Rounded
+sqtx8704 squareroot 3.5175E-2000 -> 1.875E-1000 Underflow Subnormal Inexact Rounded
+sqtx8705 squareroot 3.6081E-2000 -> 1.899E-1000 Underflow Subnormal Inexact Rounded
+sqtx8706 squareroot 3.9026E-2000 -> 1.975E-1000 Underflow Subnormal Inexact Rounded
+sqtx8707 squareroot 3.9980E-2000 -> 1.999E-1000 Underflow Subnormal Inexact Rounded
+sqtx8708 squareroot 4.3077E-2000 -> 2.075E-1000 Underflow Subnormal Inexact Rounded
+sqtx8709 squareroot 4.4079E-2000 -> 2.099E-1000 Underflow Subnormal Inexact Rounded
+sqtx8710 squareroot 4.7328E-2000 -> 2.175E-1000 Underflow Subnormal Inexact Rounded
+sqtx8711 squareroot 4.8378E-2000 -> 2.199E-1000 Underflow Subnormal Inexact Rounded
+sqtx8712 squareroot 5.1779E-2000 -> 2.275E-1000 Underflow Subnormal Inexact Rounded
+sqtx8713 squareroot 5.2877E-2000 -> 2.299E-1000 Underflow Subnormal Inexact Rounded
+sqtx8714 squareroot 5.6430E-2000 -> 2.375E-1000 Underflow Subnormal Inexact Rounded
+sqtx8715 squareroot 5.7576E-2000 -> 2.399E-1000 Underflow Subnormal Inexact Rounded
+sqtx8716 squareroot 6.1281E-2000 -> 2.475E-1000 Underflow Subnormal Inexact Rounded
+sqtx8717 squareroot 6.2475E-2000 -> 2.499E-1000 Underflow Subnormal Inexact Rounded
+sqtx8718 squareroot 6.6332E-2000 -> 2.575E-1000 Underflow Subnormal Inexact Rounded
+sqtx8719 squareroot 6.7574E-2000 -> 2.599E-1000 Underflow Subnormal Inexact Rounded
+sqtx8720 squareroot 7.1583E-2000 -> 2.675E-1000 Underflow Subnormal Inexact Rounded
+sqtx8721 squareroot 7.2873E-2000 -> 2.699E-1000 Underflow Subnormal Inexact Rounded
+sqtx8722 squareroot 7.7034E-2000 -> 2.775E-1000 Underflow Subnormal Inexact Rounded
+sqtx8723 squareroot 7.8372E-2000 -> 2.799E-1000 Underflow Subnormal Inexact Rounded
+sqtx8724 squareroot 8.2685E-2000 -> 2.875E-1000 Underflow Subnormal Inexact Rounded
+sqtx8725 squareroot 8.4071E-2000 -> 2.899E-1000 Underflow Subnormal Inexact Rounded
+sqtx8726 squareroot 8.8536E-2000 -> 2.975E-1000 Underflow Subnormal Inexact Rounded
+sqtx8727 squareroot 8.9970E-2000 -> 2.999E-1000 Underflow Subnormal Inexact Rounded
+sqtx8728 squareroot 9.4587E-2000 -> 3.075E-1000 Underflow Subnormal Inexact Rounded
+sqtx8729 squareroot 9.6069E-2000 -> 3.099E-1000 Underflow Subnormal Inexact Rounded
+-- (End of Mark Dickinson's testcases.)
+
+
+-- Some additional edge cases
+maxexponent: 9
+minexponent: -9
+precision: 2
+sqtx9000 squareroot 9980.01 -> 1.0E+2 Inexact Rounded
+precision: 3
+sqtx9001 squareroot 9980.01 -> 99.9
+precision: 4
+sqtx9002 squareroot 9980.01 -> 99.9
+
+-- Exact from over-precise
+precision: 4
+sqtx9003 squareroot 11025   -> 105
+precision: 3
+sqtx9004 squareroot 11025   -> 105
+precision: 2
+sqtx9005 squareroot 11025   -> 1.0E+2  Inexact Rounded
+precision: 1
+sqtx9006 squareroot 11025   -> 1E+2    Inexact Rounded
+
+-- Out-of-bounds zeros
+precision: 4
+sqtx9010 squareroot 0E-9  -> 0.00000
+sqtx9011 squareroot 0E-10 -> 0.00000
+sqtx9012 squareroot 0E-11 -> 0.000000
+sqtx9013 squareroot 0E-12 -> 0.000000
+sqtx9014 squareroot 0E-13 -> 0E-7
+sqtx9015 squareroot 0E-14 -> 0E-7
+sqtx9020 squareroot 0E-17 -> 0E-9
+sqtx9021 squareroot 0E-20 -> 0E-10
+sqtx9022 squareroot 0E-22 -> 0E-11
+sqtx9023 squareroot 0E-24 -> 0E-12
+sqtx9024 squareroot 0E-25 -> 0E-12 Clamped
+sqtx9025 squareroot 0E-26 -> 0E-12 Clamped
+sqtx9026 squareroot 0E-27 -> 0E-12 Clamped
+sqtx9027 squareroot 0E-28 -> 0E-12 Clamped
+
+sqtx9030 squareroot 0E+8  -> 0E+4
+sqtx9031 squareroot 0E+10 -> 0E+5
+sqtx9032 squareroot 0E+12 -> 0E+6
+sqtx9033 squareroot 0E+14 -> 0E+7
+sqtx9034 squareroot 0E+15 -> 0E+7
+sqtx9035 squareroot 0E+16 -> 0E+8
+sqtx9036 squareroot 0E+18 -> 0E+9
+sqtx9037 squareroot 0E+19 -> 0E+9
+sqtx9038 squareroot 0E+20 -> 0E+9 Clamped
+sqtx9039 squareroot 0E+21 -> 0E+9 Clamped
+sqtx9040 squareroot 0E+22 -> 0E+9 Clamped
+
+
 -- Null test
-sqtx900 squareroot  # -> NaN Invalid_operation
+sqtx9900 squareroot  # -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/subtract.decTest b/Lib/test/decimaltestdata/subtract.decTest
index bdedc5b..a1eca31 100644
--- a/Lib/test/decimaltestdata/subtract.decTest
+++ b/Lib/test/decimaltestdata/subtract.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- subtract.decTest -- decimal subtraction                            --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 extended:    1
 precision:   9
@@ -805,9 +805,9 @@
 subx1015 subtract  0  0.999E-999      ->  -1.00E-999 Inexact Rounded Subnormal Underflow
 subx1016 subtract  0  0.099E-999      ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
 subx1017 subtract  0  0.009E-999      ->  -1E-1001   Inexact Rounded Subnormal Underflow
-subx1018 subtract  0  0.001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow
-subx1019 subtract  0  0.0009E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow
-subx1020 subtract  0  0.0001E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow
+subx1018 subtract  0  0.001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+subx1019 subtract  0  0.0009E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
+subx1020 subtract  0  0.0001E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 subx1030 subtract  0 -1.00E-999       ->   1.00E-999
 subx1031 subtract  0 -0.1E-999        ->   1E-1000   Subnormal
@@ -818,9 +818,9 @@
 subx1035 subtract  0 -0.999E-999      ->   1.00E-999 Inexact Rounded Subnormal Underflow
 subx1036 subtract  0 -0.099E-999      ->   1.0E-1000 Inexact Rounded Subnormal Underflow
 subx1037 subtract  0 -0.009E-999      ->   1E-1001   Inexact Rounded Subnormal Underflow
-subx1038 subtract  0 -0.001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
-subx1039 subtract  0 -0.0009E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow
-subx1040 subtract  0 -0.0001E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow
+subx1038 subtract  0 -0.001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+subx1039 subtract  0 -0.0009E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
+subx1040 subtract  0 -0.0001E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
 
 -- some non-zero subnormal subtracts
 -- subx1056 is a tricky case
@@ -831,7 +831,7 @@
 subx1053 subtract  0.100E-999  0.1E-999  ->   0E-1001    Clamped
 subx1054 subtract  0.01E-999   0.1E-999  ->   -9E-1001   Subnormal
 subx1055 subtract  0.999E-999  0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
-subx1056 subtract  0.099E-999  0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow
+subx1056 subtract  0.099E-999  0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow Clamped
 subx1057 subtract  0.009E-999  0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
 subx1058 subtract  0.001E-999  0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
 subx1059 subtract  0.0009E-999 0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
@@ -849,15 +849,25 @@
 subx1105 subtract  1.52445E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
 subx1106 subtract  1.52446E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
 
-subx1111 subtract  1.2345678E-80  1.2345671E-80 ->  0E-83 Inexact Rounded Subnormal Underflow
-subx1112 subtract  1.2345678E-80  1.2345618E-80 ->  0E-83 Inexact Rounded Subnormal Underflow
-subx1113 subtract  1.2345678E-80  1.2345178E-80 ->  0E-83 Inexact Rounded Subnormal Underflow
-subx1114 subtract  1.2345678E-80  1.2341678E-80 ->  0E-83 Inexact Rounded Subnormal Underflow
+subx1111 subtract  1.2345678E-80  1.2345671E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
+subx1112 subtract  1.2345678E-80  1.2345618E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
+subx1113 subtract  1.2345678E-80  1.2345178E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
+subx1114 subtract  1.2345678E-80  1.2341678E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
 subx1115 subtract  1.2345678E-80  1.2315678E-80 ->  3E-83         Rounded Subnormal
 subx1116 subtract  1.2345678E-80  1.2145678E-80 ->  2.0E-82       Rounded Subnormal
 subx1117 subtract  1.2345678E-80  1.1345678E-80 ->  1.00E-81      Rounded Subnormal
 subx1118 subtract  1.2345678E-80  0.2345678E-80 ->  1.000E-80     Rounded Subnormal
 
+precision:   34
+rounding:    half_up
+maxExponent: 6144
+minExponent: -6143
+-- Examples from SQL proposal (Krishna Kulkarni)
+subx1125  subtract 130E-2  120E-2 -> 0.10
+subx1126  subtract 130E-2  12E-1  -> 0.10
+subx1127  subtract 130E-2  1E0    -> 0.30
+subx1128  subtract 1E2     1E4    -> -9.9E+3
+
 -- Null tests
 subx9990 subtract 10  # -> NaN Invalid_operation
 subx9991 subtract  # 10 -> NaN Invalid_operation
diff --git a/Lib/test/decimaltestdata/testall.decTest b/Lib/test/decimaltestdata/testall.decTest
index 8daa0d9..673aaa4 100644
--- a/Lib/test/decimaltestdata/testall.decTest
+++ b/Lib/test/decimaltestdata/testall.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- testall.decTest -- run all general decimal arithmetic testcases    --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- 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      --
@@ -17,41 +17,70 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- core tests (using Extended: 1) --------------------------------------
 dectest: base
+
 dectest: abs
 dectest: add
+dectest: and
 dectest: clamp
+dectest: class
 dectest: compare
+dectest: comparesig
+dectest: comparetotal
+dectest: comparetotmag
+dectest: copy
+dectest: copyabs
+dectest: copynegate
+dectest: copysign
 dectest: divide
 dectest: divideint
+dectest: exp
+dectest: fma
 dectest: inexact
+dectest: invert
+dectest: ln
+dectest: logb
+dectest: log10
 dectest: max
+dectest: maxmag
 dectest: min
+dectest: minmag
 dectest: minus
 dectest: multiply
-dectest: normalize
+dectest: nextminus
+dectest: nextplus
+dectest: nexttoward
+dectest: or
 dectest: plus
 dectest: power
+dectest: powersqrt
 dectest: quantize
 dectest: randoms
+dectest: reduce               -- [was called normalize]
 dectest: remainder
 dectest: remaindernear
 dectest: rescale              -- [obsolete]
+dectest: rotate
 dectest: rounding
 dectest: samequantum
+dectest: scaleb
+dectest: shift
 dectest: squareroot
 dectest: subtract
 dectest: tointegral
+dectest: tointegralx
 dectest: trim
+dectest: xor
 
--- The next are for the Strawman 4d concrete representations
-dectest: decimal32
-dectest: decimal64
-dectest: decimal128
-
+-- The next are for the Strawman 4d concrete representations and
+-- tests at those sizes [including dsEncode, ddEncode, and dqEncode,
+-- which replace decimal32, decimal64, and decimal128]
+dectest: decSingle
+dectest: decDouble
+dectest: decQuad
 
 -- General 31->33-digit boundary tests
 dectest: randombound32
diff --git a/Lib/test/decimaltestdata/tointegral.decTest b/Lib/test/decimaltestdata/tointegral.decTest
index f7174d4..340515c 100644
--- a/Lib/test/decimaltestdata/tointegral.decTest
+++ b/Lib/test/decimaltestdata/tointegral.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- tointegral.decTest -- round decimal to integral value              --
--- Copyright (c) IBM Corporation, 2001, 2003.  All rights reserved.   --
+-- Copyright (c) IBM Corporation, 2001, 2007.  All rights reserved.   --
 ------------------------------------------------------------------------
 -- Please see the document "General Decimal Arithmetic Testcases"     --
 -- at http://www2.hursley.ibm.com/decimal for the description of      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.57
 
 -- This set of tests tests the extended specification 'round-to-integral
 -- value' operation (from IEEE 854, later modified in 754r).
@@ -174,3 +174,68 @@
 intx206 tointegral  7.89E+77  -> 7.89E+77
 intx207 tointegral   -Inf     -> -Infinity
 
+
+-- all rounding modes
+rounding:    half_even
+
+intx210 tointegral     55.5   ->  56
+intx211 tointegral     56.5   ->  56
+intx212 tointegral     57.5   ->  58
+intx213 tointegral    -55.5   -> -56
+intx214 tointegral    -56.5   -> -56
+intx215 tointegral    -57.5   -> -58
+
+rounding:    half_up
+
+intx220 tointegral     55.5   ->  56
+intx221 tointegral     56.5   ->  57
+intx222 tointegral     57.5   ->  58
+intx223 tointegral    -55.5   -> -56
+intx224 tointegral    -56.5   -> -57
+intx225 tointegral    -57.5   -> -58
+
+rounding:    half_down
+
+intx230 tointegral     55.5   ->  55
+intx231 tointegral     56.5   ->  56
+intx232 tointegral     57.5   ->  57
+intx233 tointegral    -55.5   -> -55
+intx234 tointegral    -56.5   -> -56
+intx235 tointegral    -57.5   -> -57
+
+rounding:    up
+
+intx240 tointegral     55.3   ->  56
+intx241 tointegral     56.3   ->  57
+intx242 tointegral     57.3   ->  58
+intx243 tointegral    -55.3   -> -56
+intx244 tointegral    -56.3   -> -57
+intx245 tointegral    -57.3   -> -58
+
+rounding:    down
+
+intx250 tointegral     55.7   ->  55
+intx251 tointegral     56.7   ->  56
+intx252 tointegral     57.7   ->  57
+intx253 tointegral    -55.7   -> -55
+intx254 tointegral    -56.7   -> -56
+intx255 tointegral    -57.7   -> -57
+
+rounding:    ceiling
+
+intx260 tointegral     55.3   ->  56
+intx261 tointegral     56.3   ->  57
+intx262 tointegral     57.3   ->  58
+intx263 tointegral    -55.3   -> -55
+intx264 tointegral    -56.3   -> -56
+intx265 tointegral    -57.3   -> -57
+
+rounding:    floor
+
+intx270 tointegral     55.7   ->  55
+intx271 tointegral     56.7   ->  56
+intx272 tointegral     57.7   ->  57
+intx273 tointegral    -55.7   -> -56
+intx274 tointegral    -56.7   -> -57
+intx275 tointegral    -57.7   -> -58
+
diff --git a/Lib/test/decimaltestdata/tointegralx.decTest b/Lib/test/decimaltestdata/tointegralx.decTest
new file mode 100644
index 0000000..381216d
--- /dev/null
+++ b/Lib/test/decimaltestdata/tointegralx.decTest
@@ -0,0 +1,255 @@
+------------------------------------------------------------------------

+-- tointegralx.decTest -- round decimal to integral value, exact      --

+-- Copyright (c) IBM Corporation, 2001, 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.57

+

+-- This set of tests tests the extended specification 'round-to-integral

+-- value' operation (from IEEE 854, later modified in 754r).

+-- All non-zero results are defined as being those from either copy or

+-- quantize, so those are assumed to have been tested.

+

+-- This tests toIntegraExact, which may set Inexact

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+intxx001 tointegralx      0     ->  0

+intxx002 tointegralx      0.0   ->  0

+intxx003 tointegralx      0.1   ->  0 Inexact Rounded

+intxx004 tointegralx      0.2   ->  0 Inexact Rounded

+intxx005 tointegralx      0.3   ->  0 Inexact Rounded

+intxx006 tointegralx      0.4   ->  0 Inexact Rounded

+intxx007 tointegralx      0.5   ->  1 Inexact Rounded

+intxx008 tointegralx      0.6   ->  1 Inexact Rounded

+intxx009 tointegralx      0.7   ->  1 Inexact Rounded

+intxx010 tointegralx      0.8   ->  1 Inexact Rounded

+intxx011 tointegralx      0.9   ->  1 Inexact Rounded

+intxx012 tointegralx      1     ->  1

+intxx013 tointegralx      1.0   ->  1 Rounded

+intxx014 tointegralx      1.1   ->  1 Inexact Rounded

+intxx015 tointegralx      1.2   ->  1 Inexact Rounded

+intxx016 tointegralx      1.3   ->  1 Inexact Rounded

+intxx017 tointegralx      1.4   ->  1 Inexact Rounded

+intxx018 tointegralx      1.5   ->  2 Inexact Rounded

+intxx019 tointegralx      1.6   ->  2 Inexact Rounded

+intxx020 tointegralx      1.7   ->  2 Inexact Rounded

+intxx021 tointegralx      1.8   ->  2 Inexact Rounded

+intxx022 tointegralx      1.9   ->  2 Inexact Rounded

+-- negatives

+intxx031 tointegralx     -0     -> -0

+intxx032 tointegralx     -0.0   -> -0

+intxx033 tointegralx     -0.1   -> -0 Inexact Rounded

+intxx034 tointegralx     -0.2   -> -0 Inexact Rounded

+intxx035 tointegralx     -0.3   -> -0 Inexact Rounded

+intxx036 tointegralx     -0.4   -> -0 Inexact Rounded

+intxx037 tointegralx     -0.5   -> -1 Inexact Rounded

+intxx038 tointegralx     -0.6   -> -1 Inexact Rounded

+intxx039 tointegralx     -0.7   -> -1 Inexact Rounded

+intxx040 tointegralx     -0.8   -> -1 Inexact Rounded

+intxx041 tointegralx     -0.9   -> -1 Inexact Rounded

+intxx042 tointegralx     -1     -> -1

+intxx043 tointegralx     -1.0   -> -1 Rounded

+intxx044 tointegralx     -1.1   -> -1 Inexact Rounded

+intxx045 tointegralx     -1.2   -> -1 Inexact Rounded

+intxx046 tointegralx     -1.3   -> -1 Inexact Rounded

+intxx047 tointegralx     -1.4   -> -1 Inexact Rounded

+intxx048 tointegralx     -1.5   -> -2 Inexact Rounded

+intxx049 tointegralx     -1.6   -> -2 Inexact Rounded

+intxx050 tointegralx     -1.7   -> -2 Inexact Rounded

+intxx051 tointegralx     -1.8   -> -2 Inexact Rounded

+intxx052 tointegralx     -1.9   -> -2 Inexact Rounded

+-- next two would be NaN using quantize(x, 0)

+intxx053 tointegralx    10E+30  -> 1.0E+31

+intxx054 tointegralx   -10E+30  -> -1.0E+31

+

+-- numbers around precision

+precision: 9

+intxx060 tointegralx '56267E-10'   -> '0'               Inexact Rounded

+intxx061 tointegralx '56267E-5'    -> '1'               Inexact Rounded

+intxx062 tointegralx '56267E-2'    -> '563'             Inexact Rounded

+intxx063 tointegralx '56267E-1'    -> '5627'            Inexact Rounded

+intxx065 tointegralx '56267E-0'    -> '56267'

+intxx066 tointegralx '56267E+0'    -> '56267'

+intxx067 tointegralx '56267E+1'    -> '5.6267E+5'

+intxx068 tointegralx '56267E+2'    -> '5.6267E+6'

+intxx069 tointegralx '56267E+3'    -> '5.6267E+7'

+intxx070 tointegralx '56267E+4'    -> '5.6267E+8'

+intxx071 tointegralx '56267E+5'    -> '5.6267E+9'

+intxx072 tointegralx '56267E+6'    -> '5.6267E+10'

+intxx073 tointegralx '1.23E+96'    -> '1.23E+96'

+intxx074 tointegralx '1.23E+384'   -> '1.23E+384'

+intxx075 tointegralx '1.23E+999'   -> '1.23E+999'

+

+intxx080 tointegralx '-56267E-10'  -> '-0'              Inexact Rounded

+intxx081 tointegralx '-56267E-5'   -> '-1'              Inexact Rounded

+intxx082 tointegralx '-56267E-2'   -> '-563'            Inexact Rounded

+intxx083 tointegralx '-56267E-1'   -> '-5627'           Inexact Rounded

+intxx085 tointegralx '-56267E-0'   -> '-56267'

+intxx086 tointegralx '-56267E+0'   -> '-56267'

+intxx087 tointegralx '-56267E+1'   -> '-5.6267E+5'

+intxx088 tointegralx '-56267E+2'   -> '-5.6267E+6'

+intxx089 tointegralx '-56267E+3'   -> '-5.6267E+7'

+intxx090 tointegralx '-56267E+4'   -> '-5.6267E+8'

+intxx091 tointegralx '-56267E+5'   -> '-5.6267E+9'

+intxx092 tointegralx '-56267E+6'   -> '-5.6267E+10'

+intxx093 tointegralx '-1.23E+96'   -> '-1.23E+96'

+intxx094 tointegralx '-1.23E+384'  -> '-1.23E+384'

+intxx095 tointegralx '-1.23E+999'  -> '-1.23E+999'

+

+-- subnormal inputs

+intxx100 tointegralx        1E-999 -> 0                 Inexact Rounded

+intxx101 tointegralx      0.1E-999 -> 0                 Inexact Rounded

+intxx102 tointegralx     0.01E-999 -> 0                 Inexact Rounded

+intxx103 tointegralx        0E-999 -> 0

+

+-- specials and zeros

+intxx120 tointegralx 'Inf'       ->  Infinity

+intxx121 tointegralx '-Inf'      -> -Infinity

+intxx122 tointegralx   NaN       ->  NaN

+intxx123 tointegralx  sNaN       ->  NaN  Invalid_operation

+intxx124 tointegralx     0       ->  0

+intxx125 tointegralx    -0       -> -0

+intxx126 tointegralx     0.000   ->  0

+intxx127 tointegralx     0.00    ->  0

+intxx128 tointegralx     0.0     ->  0

+intxx129 tointegralx     0       ->  0

+intxx130 tointegralx     0E-3    ->  0

+intxx131 tointegralx     0E-2    ->  0

+intxx132 tointegralx     0E-1    ->  0

+intxx133 tointegralx     0E-0    ->  0

+intxx134 tointegralx     0E+1    ->  0E+1

+intxx135 tointegralx     0E+2    ->  0E+2

+intxx136 tointegralx     0E+3    ->  0E+3

+intxx137 tointegralx     0E+4    ->  0E+4

+intxx138 tointegralx     0E+5    ->  0E+5

+intxx139 tointegralx    -0.000   -> -0

+intxx140 tointegralx    -0.00    -> -0

+intxx141 tointegralx    -0.0     -> -0

+intxx142 tointegralx    -0       -> -0

+intxx143 tointegralx    -0E-3    -> -0

+intxx144 tointegralx    -0E-2    -> -0

+intxx145 tointegralx    -0E-1    -> -0

+intxx146 tointegralx    -0E-0    -> -0

+intxx147 tointegralx    -0E+1    -> -0E+1

+intxx148 tointegralx    -0E+2    -> -0E+2

+intxx149 tointegralx    -0E+3    -> -0E+3

+intxx150 tointegralx    -0E+4    -> -0E+4

+intxx151 tointegralx    -0E+5    -> -0E+5

+-- propagating NaNs

+intxx152 tointegralx   NaN808    ->  NaN808

+intxx153 tointegralx  sNaN080    ->  NaN80  Invalid_operation

+intxx154 tointegralx  -NaN808    -> -NaN808

+intxx155 tointegralx -sNaN080    -> -NaN80  Invalid_operation

+intxx156 tointegralx  -NaN       -> -NaN

+intxx157 tointegralx -sNaN       -> -NaN    Invalid_operation

+

+-- examples

+rounding:    half_up

+precision:   9

+intxx200 tointegralx     2.1    -> 2                    Inexact Rounded

+intxx201 tointegralx   100      -> 100

+intxx202 tointegralx   100.0    -> 100                  Rounded

+intxx203 tointegralx   101.5    -> 102                  Inexact Rounded

+intxx204 tointegralx  -101.5    -> -102                 Inexact Rounded

+intxx205 tointegralx   10E+5    -> 1.0E+6

+intxx206 tointegralx  7.89E+77  -> 7.89E+77

+intxx207 tointegralx   -Inf     -> -Infinity

+

+

+-- all rounding modes

+rounding:    half_even

+

+intxx210 tointegralx     55.5   ->  56   Inexact Rounded

+intxx211 tointegralx     56.5   ->  56   Inexact Rounded

+intxx212 tointegralx     57.5   ->  58   Inexact Rounded

+intxx213 tointegralx    -55.5   -> -56   Inexact Rounded

+intxx214 tointegralx    -56.5   -> -56   Inexact Rounded

+intxx215 tointegralx    -57.5   -> -58   Inexact Rounded

+

+rounding:    half_up

+

+intxx220 tointegralx     55.5   ->  56   Inexact Rounded

+intxx221 tointegralx     56.5   ->  57   Inexact Rounded

+intxx222 tointegralx     57.5   ->  58   Inexact Rounded

+intxx223 tointegralx    -55.5   -> -56   Inexact Rounded

+intxx224 tointegralx    -56.5   -> -57   Inexact Rounded

+intxx225 tointegralx    -57.5   -> -58   Inexact Rounded

+

+rounding:    half_down

+

+intxx230 tointegralx     55.5   ->  55   Inexact Rounded

+intxx231 tointegralx     56.5   ->  56   Inexact Rounded

+intxx232 tointegralx     57.5   ->  57   Inexact Rounded

+intxx233 tointegralx    -55.5   -> -55   Inexact Rounded

+intxx234 tointegralx    -56.5   -> -56   Inexact Rounded

+intxx235 tointegralx    -57.5   -> -57   Inexact Rounded

+

+rounding:    up

+

+intxx240 tointegralx     55.3   ->  56   Inexact Rounded

+intxx241 tointegralx     56.3   ->  57   Inexact Rounded

+intxx242 tointegralx     57.3   ->  58   Inexact Rounded

+intxx243 tointegralx    -55.3   -> -56   Inexact Rounded

+intxx244 tointegralx    -56.3   -> -57   Inexact Rounded

+intxx245 tointegralx    -57.3   -> -58   Inexact Rounded

+

+rounding:    down

+

+intxx250 tointegralx     55.7   ->  55   Inexact Rounded

+intxx251 tointegralx     56.7   ->  56   Inexact Rounded

+intxx252 tointegralx     57.7   ->  57   Inexact Rounded

+intxx253 tointegralx    -55.7   -> -55   Inexact Rounded

+intxx254 tointegralx    -56.7   -> -56   Inexact Rounded

+intxx255 tointegralx    -57.7   -> -57   Inexact Rounded

+

+rounding:    ceiling

+

+intxx260 tointegralx     55.3   ->  56   Inexact Rounded

+intxx261 tointegralx     56.3   ->  57   Inexact Rounded

+intxx262 tointegralx     57.3   ->  58   Inexact Rounded

+intxx263 tointegralx    -55.3   -> -55   Inexact Rounded

+intxx264 tointegralx    -56.3   -> -56   Inexact Rounded

+intxx265 tointegralx    -57.3   -> -57   Inexact Rounded

+

+rounding:    floor

+

+intxx270 tointegralx     55.7   ->  55   Inexact Rounded

+intxx271 tointegralx     56.7   ->  56   Inexact Rounded

+intxx272 tointegralx     57.7   ->  57   Inexact Rounded

+intxx273 tointegralx    -55.7   -> -56   Inexact Rounded

+intxx274 tointegralx    -56.7   -> -57   Inexact Rounded

+intxx275 tointegralx    -57.7   -> -58   Inexact Rounded

+

+-- Int and uInt32 edge values for testing conversions

+precision: 16

+intxx300 tointegralx -2147483646  -> -2147483646

+intxx301 tointegralx -2147483647  -> -2147483647

+intxx302 tointegralx -2147483648  -> -2147483648

+intxx303 tointegralx -2147483649  -> -2147483649

+intxx304 tointegralx  2147483646  ->  2147483646

+intxx305 tointegralx  2147483647  ->  2147483647

+intxx306 tointegralx  2147483648  ->  2147483648

+intxx307 tointegralx  2147483649  ->  2147483649

+intxx308 tointegralx  4294967294  ->  4294967294

+intxx309 tointegralx  4294967295  ->  4294967295

+intxx310 tointegralx  4294967296  ->  4294967296

+intxx311 tointegralx  4294967297  ->  4294967297

diff --git a/Lib/test/decimaltestdata/xor.decTest b/Lib/test/decimaltestdata/xor.decTest
new file mode 100644
index 0000000..1f3b03b
--- /dev/null
+++ b/Lib/test/decimaltestdata/xor.decTest
@@ -0,0 +1,335 @@
+------------------------------------------------------------------------

+-- xor.decTest -- digitwise logical XOR                               --

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

+

+extended:    1

+precision:   9

+rounding:    half_up

+maxExponent: 999

+minExponent: -999

+

+-- Sanity check (truth table)

+xorx001 xor             0    0 ->    0

+xorx002 xor             0    1 ->    1

+xorx003 xor             1    0 ->    1

+xorx004 xor             1    1 ->    0

+xorx005 xor          1100 1010 ->  110

+xorx006 xor          1111   10 -> 1101

+-- and at msd and msd-1

+xorx010 xor 000000000 000000000 ->           0

+xorx011 xor 000000000 100000000 ->   100000000

+xorx012 xor 100000000 000000000 ->   100000000

+xorx013 xor 100000000 100000000 ->           0

+xorx014 xor 000000000 000000000 ->           0

+xorx015 xor 000000000 010000000 ->    10000000

+xorx016 xor 010000000 000000000 ->    10000000

+xorx017 xor 010000000 010000000 ->           0

+

+-- Various lengths

+--        123456789     123456789      123456789

+xorx021 xor 111111111     111111111  ->  0

+xorx022 xor 111111111111  111111111  ->  0

+xorx023 xor  11111111      11111111  ->  0

+xorx025 xor   1111111       1111111  ->  0

+xorx026 xor    111111        111111  ->  0

+xorx027 xor     11111         11111  ->  0

+xorx028 xor      1111          1111  ->  0

+xorx029 xor       111           111  ->  0

+xorx031 xor        11            11  ->  0

+xorx032 xor         1             1  ->  0

+xorx033 xor 111111111111 1111111111  ->  0

+xorx034 xor 11111111111 11111111111  ->  0

+xorx035 xor 1111111111 111111111111  ->  0

+xorx036 xor 111111111 1111111111111  ->  0

+

+xorx040 xor 111111111  111111111111  ->  0

+xorx041 xor  11111111  111111111111  ->  100000000

+xorx042 xor  11111111     111111111  ->  100000000

+xorx043 xor   1111111     100000010  ->  101111101

+xorx044 xor    111111     100000100  ->  100111011

+xorx045 xor     11111     100001000  ->  100010111

+xorx046 xor      1111     100010000  ->  100011111

+xorx047 xor       111     100100000  ->  100100111

+xorx048 xor        11     101000000  ->  101000011

+xorx049 xor         1     110000000  ->  110000001

+

+xorx050 xor 1111111111  1  ->  111111110

+xorx051 xor  111111111  1  ->  111111110

+xorx052 xor   11111111  1  ->  11111110

+xorx053 xor    1111111  1  ->  1111110

+xorx054 xor     111111  1  ->  111110

+xorx055 xor      11111  1  ->  11110

+xorx056 xor       1111  1  ->  1110

+xorx057 xor        111  1  ->  110

+xorx058 xor         11  1  ->  10

+xorx059 xor          1  1  ->  0

+

+xorx060 xor 1111111111  0  ->  111111111

+xorx061 xor  111111111  0  ->  111111111

+xorx062 xor   11111111  0  ->  11111111

+xorx063 xor    1111111  0  ->  1111111

+xorx064 xor     111111  0  ->  111111

+xorx065 xor      11111  0  ->  11111

+xorx066 xor       1111  0  ->  1111

+xorx067 xor        111  0  ->  111

+xorx068 xor         11  0  ->  11

+xorx069 xor          1  0  ->  1

+

+xorx070 xor 1  1111111111  ->  111111110

+xorx071 xor 1   111111111  ->  111111110

+xorx072 xor 1    11111111  ->  11111110

+xorx073 xor 1     1111111  ->  1111110

+xorx074 xor 1      111111  ->  111110

+xorx075 xor 1       11111  ->  11110

+xorx076 xor 1        1111  ->  1110

+xorx077 xor 1         111  ->  110

+xorx078 xor 1          11  ->  10

+xorx079 xor 1           1  ->  0

+

+xorx080 xor 0  1111111111  ->  111111111

+xorx081 xor 0   111111111  ->  111111111

+xorx082 xor 0    11111111  ->  11111111

+xorx083 xor 0     1111111  ->  1111111

+xorx084 xor 0      111111  ->  111111

+xorx085 xor 0       11111  ->  11111

+xorx086 xor 0        1111  ->  1111

+xorx087 xor 0         111  ->  111

+xorx088 xor 0          11  ->  11

+xorx089 xor 0           1  ->  1

+

+xorx090 xor 011111111  111101111  ->  100010000

+xorx091 xor 101111111  111101111  ->   10010000

+xorx092 xor 110111111  111101111  ->    1010000

+xorx093 xor 111011111  111101111  ->     110000

+xorx094 xor 111101111  111101111  ->          0

+xorx095 xor 111110111  111101111  ->      11000

+xorx096 xor 111111011  111101111  ->      10100

+xorx097 xor 111111101  111101111  ->      10010

+xorx098 xor 111111110  111101111  ->      10001

+

+xorx100 xor 111101111  011111111  ->  100010000

+xorx101 xor 111101111  101111111  ->   10010000

+xorx102 xor 111101111  110111111  ->    1010000

+xorx103 xor 111101111  111011111  ->     110000

+xorx104 xor 111101111  111101111  ->          0

+xorx105 xor 111101111  111110111  ->      11000

+xorx106 xor 111101111  111111011  ->      10100

+xorx107 xor 111101111  111111101  ->      10010

+xorx108 xor 111101111  111111110  ->      10001

+

+-- non-0/1 should not be accepted, nor should signs

+xorx220 xor 111111112  111111111  ->  NaN Invalid_operation

+xorx221 xor 333333333  333333333  ->  NaN Invalid_operation

+xorx222 xor 555555555  555555555  ->  NaN Invalid_operation

+xorx223 xor 777777777  777777777  ->  NaN Invalid_operation

+xorx224 xor 999999999  999999999  ->  NaN Invalid_operation

+xorx225 xor 222222222  999999999  ->  NaN Invalid_operation

+xorx226 xor 444444444  999999999  ->  NaN Invalid_operation

+xorx227 xor 666666666  999999999  ->  NaN Invalid_operation

+xorx228 xor 888888888  999999999  ->  NaN Invalid_operation

+xorx229 xor 999999999  222222222  ->  NaN Invalid_operation

+xorx230 xor 999999999  444444444  ->  NaN Invalid_operation

+xorx231 xor 999999999  666666666  ->  NaN Invalid_operation

+xorx232 xor 999999999  888888888  ->  NaN Invalid_operation

+-- a few randoms

+xorx240 xor  567468689 -934981942 ->  NaN Invalid_operation

+xorx241 xor  567367689  934981942 ->  NaN Invalid_operation

+xorx242 xor -631917772 -706014634 ->  NaN Invalid_operation

+xorx243 xor -756253257  138579234 ->  NaN Invalid_operation

+xorx244 xor  835590149  567435400 ->  NaN Invalid_operation

+-- test MSD

+xorx250 xor  200000000 100000000 ->  NaN Invalid_operation

+xorx251 xor  700000000 100000000 ->  NaN Invalid_operation

+xorx252 xor  800000000 100000000 ->  NaN Invalid_operation

+xorx253 xor  900000000 100000000 ->  NaN Invalid_operation

+xorx254 xor  200000000 000000000 ->  NaN Invalid_operation

+xorx255 xor  700000000 000000000 ->  NaN Invalid_operation

+xorx256 xor  800000000 000000000 ->  NaN Invalid_operation

+xorx257 xor  900000000 000000000 ->  NaN Invalid_operation

+xorx258 xor  100000000 200000000 ->  NaN Invalid_operation

+xorx259 xor  100000000 700000000 ->  NaN Invalid_operation

+xorx260 xor  100000000 800000000 ->  NaN Invalid_operation

+xorx261 xor  100000000 900000000 ->  NaN Invalid_operation

+xorx262 xor  000000000 200000000 ->  NaN Invalid_operation

+xorx263 xor  000000000 700000000 ->  NaN Invalid_operation

+xorx264 xor  000000000 800000000 ->  NaN Invalid_operation

+xorx265 xor  000000000 900000000 ->  NaN Invalid_operation

+-- test MSD-1

+xorx270 xor  020000000 100000000 ->  NaN Invalid_operation

+xorx271 xor  070100000 100000000 ->  NaN Invalid_operation

+xorx272 xor  080010000 100000001 ->  NaN Invalid_operation

+xorx273 xor  090001000 100000010 ->  NaN Invalid_operation

+xorx274 xor  100000100 020010100 ->  NaN Invalid_operation

+xorx275 xor  100000000 070001000 ->  NaN Invalid_operation

+xorx276 xor  100000010 080010100 ->  NaN Invalid_operation

+xorx277 xor  100000000 090000010 ->  NaN Invalid_operation

+-- test LSD

+xorx280 xor  001000002 100000000 ->  NaN Invalid_operation

+xorx281 xor  000000007 100000000 ->  NaN Invalid_operation

+xorx282 xor  000000008 100000000 ->  NaN Invalid_operation

+xorx283 xor  000000009 100000000 ->  NaN Invalid_operation

+xorx284 xor  100000000 000100002 ->  NaN Invalid_operation

+xorx285 xor  100100000 001000007 ->  NaN Invalid_operation

+xorx286 xor  100010000 010000008 ->  NaN Invalid_operation

+xorx287 xor  100001000 100000009 ->  NaN Invalid_operation

+-- test Middie

+xorx288 xor  001020000 100000000 ->  NaN Invalid_operation

+xorx289 xor  000070001 100000000 ->  NaN Invalid_operation

+xorx290 xor  000080000 100010000 ->  NaN Invalid_operation

+xorx291 xor  000090000 100001000 ->  NaN Invalid_operation

+xorx292 xor  100000010 000020100 ->  NaN Invalid_operation

+xorx293 xor  100100000 000070010 ->  NaN Invalid_operation

+xorx294 xor  100010100 000080001 ->  NaN Invalid_operation

+xorx295 xor  100001000 000090000 ->  NaN Invalid_operation

+-- signs

+xorx296 xor -100001000 -000000000 ->  NaN Invalid_operation

+xorx297 xor -100001000  000010000 ->  NaN Invalid_operation

+xorx298 xor  100001000 -000000000 ->  NaN Invalid_operation

+xorx299 xor  100001000  000011000 ->  100010000

+

+-- Nmax, Nmin, Ntiny

+xorx331 xor  2   9.99999999E+999     -> NaN Invalid_operation

+xorx332 xor  3   1E-999              -> NaN Invalid_operation

+xorx333 xor  4   1.00000000E-999     -> NaN Invalid_operation

+xorx334 xor  5   1E-1007             -> NaN Invalid_operation

+xorx335 xor  6   -1E-1007            -> NaN Invalid_operation

+xorx336 xor  7   -1.00000000E-999    -> NaN Invalid_operation

+xorx337 xor  8   -1E-999             -> NaN Invalid_operation

+xorx338 xor  9   -9.99999999E+999    -> NaN Invalid_operation

+xorx341 xor  9.99999999E+999     -18 -> NaN Invalid_operation

+xorx342 xor  1E-999               01 -> NaN Invalid_operation

+xorx343 xor  1.00000000E-999     -18 -> NaN Invalid_operation

+xorx344 xor  1E-1007              18 -> NaN Invalid_operation

+xorx345 xor  -1E-1007            -10 -> NaN Invalid_operation

+xorx346 xor  -1.00000000E-999     18 -> NaN Invalid_operation

+xorx347 xor  -1E-999              10 -> NaN Invalid_operation

+xorx348 xor  -9.99999999E+999    -18 -> NaN Invalid_operation

+

+-- A few other non-integers

+xorx361 xor  1.0                  1  -> NaN Invalid_operation

+xorx362 xor  1E+1                 1  -> NaN Invalid_operation

+xorx363 xor  0.0                  1  -> NaN Invalid_operation

+xorx364 xor  0E+1                 1  -> NaN Invalid_operation

+xorx365 xor  9.9                  1  -> NaN Invalid_operation

+xorx366 xor  9E+1                 1  -> NaN Invalid_operation

+xorx371 xor  0 1.0                   -> NaN Invalid_operation

+xorx372 xor  0 1E+1                  -> NaN Invalid_operation

+xorx373 xor  0 0.0                   -> NaN Invalid_operation

+xorx374 xor  0 0E+1                  -> NaN Invalid_operation

+xorx375 xor  0 9.9                   -> NaN Invalid_operation

+xorx376 xor  0 9E+1                  -> NaN Invalid_operation

+

+-- All Specials are in error

+xorx780 xor -Inf  -Inf   -> NaN Invalid_operation

+xorx781 xor -Inf  -1000  -> NaN Invalid_operation

+xorx782 xor -Inf  -1     -> NaN Invalid_operation

+xorx783 xor -Inf  -0     -> NaN Invalid_operation

+xorx784 xor -Inf   0     -> NaN Invalid_operation

+xorx785 xor -Inf   1     -> NaN Invalid_operation

+xorx786 xor -Inf   1000  -> NaN Invalid_operation

+xorx787 xor -1000 -Inf   -> NaN Invalid_operation

+xorx788 xor -Inf  -Inf   -> NaN Invalid_operation

+xorx789 xor -1    -Inf   -> NaN Invalid_operation

+xorx790 xor -0    -Inf   -> NaN Invalid_operation

+xorx791 xor  0    -Inf   -> NaN Invalid_operation

+xorx792 xor  1    -Inf   -> NaN Invalid_operation

+xorx793 xor  1000 -Inf   -> NaN Invalid_operation

+xorx794 xor  Inf  -Inf   -> NaN Invalid_operation

+

+xorx800 xor  Inf  -Inf   -> NaN Invalid_operation

+xorx801 xor  Inf  -1000  -> NaN Invalid_operation

+xorx802 xor  Inf  -1     -> NaN Invalid_operation

+xorx803 xor  Inf  -0     -> NaN Invalid_operation

+xorx804 xor  Inf   0     -> NaN Invalid_operation

+xorx805 xor  Inf   1     -> NaN Invalid_operation

+xorx806 xor  Inf   1000  -> NaN Invalid_operation

+xorx807 xor  Inf   Inf   -> NaN Invalid_operation

+xorx808 xor -1000  Inf   -> NaN Invalid_operation

+xorx809 xor -Inf   Inf   -> NaN Invalid_operation

+xorx810 xor -1     Inf   -> NaN Invalid_operation

+xorx811 xor -0     Inf   -> NaN Invalid_operation

+xorx812 xor  0     Inf   -> NaN Invalid_operation

+xorx813 xor  1     Inf   -> NaN Invalid_operation

+xorx814 xor  1000  Inf   -> NaN Invalid_operation

+xorx815 xor  Inf   Inf   -> NaN Invalid_operation

+

+xorx821 xor  NaN -Inf    -> NaN Invalid_operation

+xorx822 xor  NaN -1000   -> NaN Invalid_operation

+xorx823 xor  NaN -1      -> NaN Invalid_operation

+xorx824 xor  NaN -0      -> NaN Invalid_operation

+xorx825 xor  NaN  0      -> NaN Invalid_operation

+xorx826 xor  NaN  1      -> NaN Invalid_operation

+xorx827 xor  NaN  1000   -> NaN Invalid_operation

+xorx828 xor  NaN  Inf    -> NaN Invalid_operation

+xorx829 xor  NaN  NaN    -> NaN Invalid_operation

+xorx830 xor -Inf  NaN    -> NaN Invalid_operation

+xorx831 xor -1000 NaN    -> NaN Invalid_operation

+xorx832 xor -1    NaN    -> NaN Invalid_operation

+xorx833 xor -0    NaN    -> NaN Invalid_operation

+xorx834 xor  0    NaN    -> NaN Invalid_operation

+xorx835 xor  1    NaN    -> NaN Invalid_operation

+xorx836 xor  1000 NaN    -> NaN Invalid_operation

+xorx837 xor  Inf  NaN    -> NaN Invalid_operation

+

+xorx841 xor  sNaN -Inf   ->  NaN  Invalid_operation

+xorx842 xor  sNaN -1000  ->  NaN  Invalid_operation

+xorx843 xor  sNaN -1     ->  NaN  Invalid_operation

+xorx844 xor  sNaN -0     ->  NaN  Invalid_operation

+xorx845 xor  sNaN  0     ->  NaN  Invalid_operation

+xorx846 xor  sNaN  1     ->  NaN  Invalid_operation

+xorx847 xor  sNaN  1000  ->  NaN  Invalid_operation

+xorx848 xor  sNaN  NaN   ->  NaN  Invalid_operation

+xorx849 xor  sNaN sNaN   ->  NaN  Invalid_operation

+xorx850 xor  NaN  sNaN   ->  NaN  Invalid_operation

+xorx851 xor -Inf  sNaN   ->  NaN  Invalid_operation

+xorx852 xor -1000 sNaN   ->  NaN  Invalid_operation

+xorx853 xor -1    sNaN   ->  NaN  Invalid_operation

+xorx854 xor -0    sNaN   ->  NaN  Invalid_operation

+xorx855 xor  0    sNaN   ->  NaN  Invalid_operation

+xorx856 xor  1    sNaN   ->  NaN  Invalid_operation

+xorx857 xor  1000 sNaN   ->  NaN  Invalid_operation

+xorx858 xor  Inf  sNaN   ->  NaN  Invalid_operation

+xorx859 xor  NaN  sNaN   ->  NaN  Invalid_operation

+

+-- propagating NaNs

+xorx861 xor  NaN1   -Inf    -> NaN Invalid_operation

+xorx862 xor +NaN2   -1000   -> NaN Invalid_operation

+xorx863 xor  NaN3    1000   -> NaN Invalid_operation

+xorx864 xor  NaN4    Inf    -> NaN Invalid_operation

+xorx865 xor  NaN5   +NaN6   -> NaN Invalid_operation

+xorx866 xor -Inf     NaN7   -> NaN Invalid_operation

+xorx867 xor -1000    NaN8   -> NaN Invalid_operation

+xorx868 xor  1000    NaN9   -> NaN Invalid_operation

+xorx869 xor  Inf    +NaN10  -> NaN Invalid_operation

+xorx871 xor  sNaN11  -Inf   -> NaN Invalid_operation

+xorx872 xor  sNaN12  -1000  -> NaN Invalid_operation

+xorx873 xor  sNaN13   1000  -> NaN Invalid_operation

+xorx874 xor  sNaN14   NaN17 -> NaN Invalid_operation

+xorx875 xor  sNaN15  sNaN18 -> NaN Invalid_operation

+xorx876 xor  NaN16   sNaN19 -> NaN Invalid_operation

+xorx877 xor -Inf    +sNaN20 -> NaN Invalid_operation

+xorx878 xor -1000    sNaN21 -> NaN Invalid_operation

+xorx879 xor  1000    sNaN22 -> NaN Invalid_operation

+xorx880 xor  Inf     sNaN23 -> NaN Invalid_operation

+xorx881 xor +NaN25  +sNaN24 -> NaN Invalid_operation

+xorx882 xor -NaN26    NaN28 -> NaN Invalid_operation

+xorx883 xor -sNaN27  sNaN29 -> NaN Invalid_operation

+xorx884 xor  1000    -NaN30 -> NaN Invalid_operation

+xorx885 xor  1000   -sNaN31 -> NaN Invalid_operation

diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 841ea6f..46a448b 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -65,9 +65,7 @@
 # Slower, since it runs some things several times.
 EXTENDEDERRORTEST = False
 
-
 #Map the test cases' error names to the actual errors
-
 ErrorNames = {'clamped' : Clamped,
               'conversion_syntax' : InvalidOperation,
               'division_by_zero' : DivisionByZero,
@@ -92,20 +90,88 @@
                 'half_down' : ROUND_HALF_DOWN,
                 'half_even' : ROUND_HALF_EVEN,
                 'half_up' : ROUND_HALF_UP,
-                'up' : ROUND_UP}
+                'up' : ROUND_UP,
+                '05up' : ROUND_05UP}
 
 # Name adapter to be able to change the Decimal and Context
 # interface without changing the test files from Cowlishaw
-nameAdapter = {'toeng':'to_eng_string',
-               'tosci':'to_sci_string',
-               'samequantum':'same_quantum',
-               'tointegral':'to_integral',
-               'remaindernear':'remainder_near',
-               'divideint':'divide_int',
-               'squareroot':'sqrt',
+nameAdapter = {'and':'logical_and',
                'apply':'_apply',
+               'class':'number_class',
+               'comparesig':'compare_signal',
+               'comparetotal':'compare_total',
+               'comparetotmag':'compare_total_mag',
+               'copy':'copy_decimal',
+               'copyabs':'copy_abs',
+               'copynegate':'copy_negate',
+               'copysign':'copy_sign',
+               'divideint':'divide_int',
+               'invert':'logical_invert',
+               'iscanonical':'is_canonical',
+               'isfinite':'is_finite',
+               'isinfinite':'is_infinite',
+               'isnan':'is_nan',
+               'isnormal':'is_normal',
+               'isqnan':'is_qnan',
+               'issigned':'is_signed',
+               'issnan':'is_snan',
+               'issubnormal':'is_subnormal',
+               'iszero':'is_zero',
+               'maxmag':'max_mag',
+               'minmag':'min_mag',
+               'nextminus':'next_minus',
+               'nextplus':'next_plus',
+               'nexttoward':'next_toward',
+               'or':'logical_or',
+               'reduce':'normalize',
+               'remaindernear':'remainder_near',
+               'samequantum':'same_quantum',
+               'squareroot':'sqrt',
+               'toeng':'to_eng_string',
+               'tointegral':'to_integral_value',
+               'tointegralx':'to_integral_exact',
+               'tosci':'to_sci_string',
+               'xor':'logical_xor',
               }
 
+# The following functions return True/False rather than a Decimal instance
+
+LOGICAL_FUNCTIONS = (
+    'is_canonical',
+    'is_finite',
+    'is_infinite',
+    'is_nan',
+    'is_normal',
+    'is_qnan',
+    'is_signed',
+    'is_snan',
+    'is_subnormal',
+    'is_zero',
+    'same_quantum',
+    )
+
+# For some operations (currently exp, ln, log10, power), the decNumber
+# reference implementation imposes additional restrictions on the
+# context and operands.  These restrictions are not part of the
+# specification; however, the effect of these restrictions does show
+# up in some of the testcases.  We skip testcases that violate these
+# restrictions, since Decimal behaves differently from decNumber for
+# these testcases so these testcases would otherwise fail.
+
+decNumberRestricted = ('power', 'ln', 'log10', 'exp')
+DEC_MAX_MATH = 999999
+def outside_decNumber_bounds(v, context):
+    if (context.prec > DEC_MAX_MATH or
+        context.Emax > DEC_MAX_MATH or
+        -context.Emin > DEC_MAX_MATH):
+        return True
+    if not v._is_special and v and (
+        len(v._int) > DEC_MAX_MATH or
+        v.adjusted() > DEC_MAX_MATH or
+        v.adjusted() < 1-2*DEC_MAX_MATH):
+        return True
+    return False
+
 class DecimalTest(unittest.TestCase):
     """Class which tests the Decimal class against the test cases.
 
@@ -142,10 +208,6 @@
             #print line
             try:
                 t = self.eval_line(line)
-            except InvalidOperation:
-                print 'Error in test cases:'
-                print line
-                continue
             except DecimalException, exception:
                 #Exception raised where there shoudn't have been one.
                 self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line)
@@ -194,7 +256,8 @@
             Sides = s.split('->')
             L = Sides[0].strip().split()
             id = L[0]
-#            print id,
+            if DEBUG:
+                print "Test ", id,
             funct = L[1].lower()
             valstemp = L[2:]
             L = Sides[1].strip().split()
@@ -246,11 +309,27 @@
                         self.context.traps[error] = 0
                 v = self.context.create_decimal(v)
             else:
-                v = Decimal(v)
+                v = Decimal(v, self.context)
             vals.append(v)
 
         ans = FixQuotes(ans)
 
+        # skip tests that are related to bounds imposed in the decNumber
+        # reference implementation
+        if fname in decNumberRestricted:
+            if fname == 'power':
+                if not (vals[1]._isinteger() and
+                        -1999999997 <= vals[1] <= 999999999):
+                    if outside_decNumber_bounds(vals[0], self.context) or \
+                            outside_decNumber_bounds(vals[1], self.context):
+                        #print "Skipping test %s" % s
+                        return
+            else:
+                if outside_decNumber_bounds(vals[0], self.context):
+                    #print "Skipping test %s" % s
+                    return
+
+
         if EXTENDEDERRORTEST and fname not in ('to_sci_string', 'to_eng_string'):
             for error in theirexceptions:
                 self.context.traps[error] = 1
@@ -264,9 +343,11 @@
                 else:
                     self.fail("Did not raise %s in %s" % (error, s))
                 self.context.traps[error] = 0
+        if DEBUG:
+            print "--", self.context
         try:
             result = str(funct(*vals))
-            if fname == 'same_quantum':
+            if fname in LOGICAL_FUNCTIONS:
                 result = str(int(eval(result))) # 'True', 'False' -> '1', '0'
         except Signals, error:
             self.fail("Raised %s in %s" % (error, s))
@@ -283,8 +364,7 @@
         self.assertEqual(result, ans,
                          'Incorrect answer for ' + s + ' -- got ' + result)
         self.assertEqual(myexceptions, theirexceptions,
-                         'Incorrect flags set in ' + s + ' -- got ' \
-                         + str(myexceptions))
+              'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions))
         return
 
     def getexceptions(self):
@@ -301,17 +381,6 @@
     def change_clamp(self, clamp):
         self.context._clamp = clamp
 
-# Dynamically build custom test definition for each file in the test
-# directory and add the definitions to the DecimalTest class.  This
-# procedure insures that new files do not get skipped.
-for filename in os.listdir(directory):
-    if '.decTest' not in filename:
-        continue
-    head, tail = filename.split('.')
-    tester = lambda self, f=filename: self.eval_file(directory + f)
-    setattr(DecimalTest, 'test_' + head, tester)
-    del filename, head, tail, tester
-
 
 
 # The following classes test the behaviour of Decimal according to PEP 327
@@ -383,13 +452,19 @@
 
         #bad sign
         self.assertRaises(ValueError, Decimal, (8, (4, 3, 4, 9, 1), 2) )
+        self.assertRaises(ValueError, Decimal, (0., (4, 3, 4, 9, 1), 2) )
+        self.assertRaises(ValueError, Decimal, (Decimal(1), (4, 3, 4, 9, 1), 2))
 
         #bad exp
         self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 'wrong!') )
+        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 0.) )
+        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), '1') )
 
         #bad coefficients
         self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, None, 1), 2) )
         self.assertRaises(ValueError, Decimal, (1, (4, -3, 4, 9, 1), 2) )
+        self.assertRaises(ValueError, Decimal, (1, (4, 10, 4, 9, 1), 2) )
+        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 'a', 1), 2) )
 
     def test_explicit_from_Decimal(self):
 
@@ -803,7 +878,7 @@
         th2.start()
 
         self.finish1.wait()
-        self.finish1.wait()
+        self.finish2.wait()
         return
 
     if threading is None:
@@ -853,6 +928,10 @@
         a.sort()
         self.assertEqual(a, b)
 
+        # with None
+        self.assertFalse(Decimal(1) < None)
+        self.assertTrue(Decimal(1) > None)
+
     def test_copy_and_deepcopy_methods(self):
         d = Decimal('43.24')
         c = copy.copy(d)
@@ -863,12 +942,54 @@
     def test_hash_method(self):
         #just that it's hashable
         hash(Decimal(23))
+
+        test_values = [Decimal(sign*(2**m + n))
+                       for m in [0, 14, 15, 16, 17, 30, 31,
+                                 32, 33, 62, 63, 64, 65, 66]
+                       for n in range(-10, 10)
+                       for sign in [-1, 1]]
+        test_values.extend([
+                Decimal("-0"), # zeros
+                Decimal("0.00"),
+                Decimal("-0.000"),
+                Decimal("0E10"),
+                Decimal("-0E12"),
+                Decimal("10.0"), # negative exponent
+                Decimal("-23.00000"),
+                Decimal("1230E100"), # positive exponent
+                Decimal("-4.5678E50"),
+                # a value for which hash(n) != hash(n % (2**64-1))
+                # in Python pre-2.6
+                Decimal(2**64 + 2**32 - 1),
+                ])
+
+        # check that hash(d) == hash(int(d)) for integral values
+        for value in test_values:
+            self.assertEqual(hash(value), hash(int(value)))
+
         #the same hash that to an int
         self.assertEqual(hash(Decimal(23)), hash(23))
         self.assertRaises(TypeError, hash, Decimal('NaN'))
         self.assert_(hash(Decimal('Inf')))
         self.assert_(hash(Decimal('-Inf')))
 
+        # check that the value of the hash doesn't depend on the
+        # current context (issue #1757)
+        c = getcontext()
+        old_precision = c.prec
+        x = Decimal("123456789.1")
+
+        c.prec = 6
+        h1 = hash(x)
+        c.prec = 10
+        h2 = hash(x)
+        c.prec = 16
+        h3 = hash(x)
+
+        self.assertEqual(h1, h2)
+        self.assertEqual(h1, h3)
+        c.prec = old_precision
+
     def test_min_and_max_methods(self):
 
         d1 = Decimal('15.32')
@@ -955,13 +1076,35 @@
         d = Decimal("Infinity")
         self.assertEqual(d.as_tuple(), (0, (0,), 'F') )
 
+        #leading zeros in coefficient should be stripped
+        d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), -2) )
+        self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), -2) )
+        d = Decimal( (1, (0, 0, 0), 37) )
+        self.assertEqual(d.as_tuple(), (1, (0,), 37))
+        d = Decimal( (1, (), 37) )
+        self.assertEqual(d.as_tuple(), (1, (0,), 37))
+
+        #leading zeros in NaN diagnostic info should be stripped
+        d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), 'n') )
+        self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), 'n') )
+        d = Decimal( (1, (0, 0, 0), 'N') )
+        self.assertEqual(d.as_tuple(), (1, (), 'N') )
+        d = Decimal( (1, (), 'n') )
+        self.assertEqual(d.as_tuple(), (1, (), 'n') )
+
+        #coefficient in infinity should be ignored
+        d = Decimal( (0, (4, 5, 3, 4), 'F') )
+        self.assertEqual(d.as_tuple(), (0, (0,), 'F'))
+        d = Decimal( (1, (0, 2, 7, 1), 'F') )
+        self.assertEqual(d.as_tuple(), (1, (0,), 'F'))
+
     def test_immutability_operations(self):
         # Do operations and check that it didn't change change internal objects.
 
         d1 = Decimal('-25e55')
         b1 = Decimal('-25e55')
-        d2 = Decimal('33e-33')
-        b2 = Decimal('33e-33')
+        d2 = Decimal('33e+33')
+        b2 = Decimal('33e+33')
 
         def checkSameDec(operation, useOther=False):
             if useOther:
@@ -1025,6 +1168,21 @@
         checkSameDec("to_eng_string")
         checkSameDec("to_integral")
 
+    def test_subclassing(self):
+        # Different behaviours when subclassing Decimal
+
+        class MyDecimal(Decimal):
+            pass
+
+        d1 = MyDecimal(1)
+        d2 = MyDecimal(2)
+        d = d1 + d2
+        self.assertTrue(type(d) is Decimal)
+
+        d = d1.max(d2)
+        self.assertTrue(type(d) is Decimal)
+
+
 class DecimalPythonAPItests(unittest.TestCase):
 
     def test_pickle(self):
@@ -1091,7 +1249,59 @@
         self.assert_(new_ctx is not set_ctx, 'did not copy the context')
         self.assert_(set_ctx is enter_ctx, '__enter__ returned wrong context')
 
-def test_main(arith=False, verbose=None):
+class ContextFlags(unittest.TestCase):
+    def test_flags_irrelevant(self):
+        # check that the result (numeric result + flags raised) of an
+        # arithmetic operation doesn't depend on the current flags
+
+        context = Context(prec=9, Emin = -999999999, Emax = 999999999,
+                    rounding=ROUND_HALF_EVEN, traps=[], flags=[])
+
+        # operations that raise various flags, in the form (function, arglist)
+        operations = [
+            (context._apply, [Decimal("100E-1000000009")]),
+            (context.sqrt, [Decimal(2)]),
+            (context.add, [Decimal("1.23456789"), Decimal("9.87654321")]),
+            (context.multiply, [Decimal("1.23456789"), Decimal("9.87654321")]),
+            (context.subtract, [Decimal("1.23456789"), Decimal("9.87654321")]),
+            ]
+
+        # try various flags individually, then a whole lot at once
+        flagsets = [[Inexact], [Rounded], [Underflow], [Clamped], [Subnormal],
+                    [Inexact, Rounded, Underflow, Clamped, Subnormal]]
+
+        for fn, args in operations:
+            # find answer and flags raised using a clean context
+            context.clear_flags()
+            ans = fn(*args)
+            flags = [k for k, v in context.flags.items() if v]
+
+            for extra_flags in flagsets:
+                # set flags, before calling operation
+                context.clear_flags()
+                for flag in extra_flags:
+                    context._raise_error(flag)
+                new_ans = fn(*args)
+
+                # flags that we expect to be set after the operation
+                expected_flags = list(flags)
+                for flag in extra_flags:
+                    if flag not in expected_flags:
+                        expected_flags.append(flag)
+                expected_flags.sort()
+
+                # flags we actually got
+                new_flags = [k for k,v in context.flags.items() if v]
+                new_flags.sort()
+
+                self.assertEqual(ans, new_ans,
+                                 "operation produces different answers depending on flags set: " +
+                                 "expected %s, got %s." % (ans, new_ans))
+                self.assertEqual(new_flags, expected_flags,
+                                  "operation raises different flags depending on flags set: " +
+                                  "expected %s, got %s" % (expected_flags, new_flags))
+
+def test_main(arith=False, verbose=None, todo_tests=None, debug=None):
     """ Execute the tests.
 
     Runs all arithmetic tests if arith is True or if the "decimal" resource
@@ -1099,35 +1309,58 @@
     """
 
     init()
-    global TEST_ALL
+    global TEST_ALL, DEBUG
     TEST_ALL = arith or is_resource_enabled('decimal')
+    DEBUG = debug
 
-    test_classes = [
-        DecimalExplicitConstructionTest,
-        DecimalImplicitConstructionTest,
-        DecimalArithmeticOperatorsTest,
-        DecimalUseOfContextTest,
-        DecimalUsabilityTest,
-        DecimalPythonAPItests,
-        ContextAPItests,
-        DecimalTest,
-        WithStatementTest,
-    ]
+    if todo_tests is None:
+        test_classes = [
+            DecimalExplicitConstructionTest,
+            DecimalImplicitConstructionTest,
+            DecimalArithmeticOperatorsTest,
+            DecimalUseOfContextTest,
+            DecimalUsabilityTest,
+            DecimalPythonAPItests,
+            ContextAPItests,
+            DecimalTest,
+            WithStatementTest,
+            ContextFlags
+        ]
+    else:
+        test_classes = [DecimalTest]
+
+    # Dynamically build custom test definition for each file in the test
+    # directory and add the definitions to the DecimalTest class.  This
+    # procedure insures that new files do not get skipped.
+    for filename in os.listdir(directory):
+        if '.decTest' not in filename or filename.startswith("."):
+            continue
+        head, tail = filename.split('.')
+        if todo_tests is not None and head not in todo_tests:
+            continue
+        tester = lambda self, f=filename: self.eval_file(directory + f)
+        setattr(DecimalTest, 'test_' + head, tester)
+        del filename, head, tail, tester
+
 
     try:
         run_unittest(*test_classes)
-        import decimal as DecimalModule
-        run_doctest(DecimalModule, verbose)
+        if todo_tests is None:
+            import decimal as DecimalModule
+            run_doctest(DecimalModule, verbose)
     finally:
         setcontext(ORIGINAL_CONTEXT)
 
 if __name__ == '__main__':
-    # Calling with no arguments runs all tests.
-    # Calling with "Skip" will skip over 90% of the arithmetic tests.
-    if len(sys.argv) == 1:
-        test_main(arith=True, verbose=True)
-    elif len(sys.argv) == 2:
-        arith = sys.argv[1].lower() != 'skip'
-        test_main(arith=arith, verbose=True)
+    import optparse
+    p = optparse.OptionParser("test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]")
+    p.add_option('--debug', '-d', action='store_true', help='shows the test number and context before each test')
+    p.add_option('--skip',  '-s', action='store_true', help='skip over 90% of the arithmetic tests')
+    (opt, args) = p.parse_args()
+
+    if opt.skip:
+        test_main(arith=False, verbose=True)
+    elif args:
+        test_main(arith=True, verbose=True, todo_tests=args, debug=opt.debug)
     else:
-        raise ValueError("test called with wrong arguments, use test_Decimal [Skip]")
+        test_main(arith=True, verbose=True)