diff -r 5738c611ff2a -r 6a1c8fcce229 Doc/library/cdecimal.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Doc/library/cdecimal.rst Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,131 @@ +:mod:`cdecimal` --- Decimal fixed point and floating point arithmetic +===================================================================== + +.. module:: cdecimal + :synopsis: C-Implementation of the General Decimal Arithmetic Specification. + +.. moduleauthor:: Stefan Krah + +.. import modules for testing inline doctests with the Sphinx doctest builder +.. testsetup:: * + + import cdecimal + import math + from cdecimal import * + # make sure each group gets a fresh context + setcontext(Context()) + + +The :mod:`cdecimal` module is a C implementation of :mod:`decimal`. Since it is +almost fully compatible with :mod:`decimal`, this documentation will only list +the differences between the two modules. + + +Setting Context Values +---------------------- + +* *prec*, *Emin*, *Emax*, *rounding*, *capitals* and *_clamp* are implemented as + getters/setters. + +* An additional field *_allcr* toggles correct rounding for :meth:`exp`, + :meth:`ln` and :meth:`log10`. + +* *traps* and *flags* have the custom type :class:`SignalDict`, + which behaves like a dictionary for most purposes. This is the familiar + interface from :mod:`decimal`. + +* Internally, *traps* and *flags* are just C unsigned integers. :mod:`cdecimal` + provides the option to access the integers directly using the getters/setters + *_traps* and *_flags*. + +* Use of the two interfaces can be mixed freely. The following table shows + how the :class:`SignalDict` items and the C-flags are related: + + +---------------------------+------------------------------------+--------------------------------+ + | SignalDict | C signals | C conditions | + +===========================+====================================+================================+ + | :const:`InvalidOperation` | :const:`DecIEEEInvalidOperation` | n/a | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecConversionSyntax` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecDivisionImpossible` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecDivisionUndefined` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecInvalidContext` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecInvalidOperation` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecMallocError` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Clamped` | :const:`DecClamped` | :const:`DecClamped` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`DivisionByZero` | :const:`DecDivisionByZero` | :const:`DecDivisionByZero` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Inexact` | :const:`DecInexact` | :const:`DecInexact` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Rounded` | :const:`DecRounded` | :const:`DecRounded` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Subnormal` | :const:`DecSubnormal` | :const:`DecSubnormal` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Overflow` | :const:`DecOverflow` | :const:`DecOverflow` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Underflow` | :const:`DecUnderflow` | :const:`DecUnderflow` | + +---------------------------+------------------------------------+--------------------------------+ + + +Context Limits +-------------- + + ++------------+-----------------+---------------------+------------------------------+ +| | decimal | cdecimal, 32-bit | cdecimal, 64-bit | ++============+=================+=====================+==============================+ +| max *Emax* | unlimited | :const:`425000000` | :const:`999999999999999999` | ++------------+-----------------+---------------------+------------------------------+ +| min *Emin* | unlimited | :const:`-425000000` | :const:`-999999999999999999` | ++------------+-----------------+---------------------+------------------------------+ +| max *prec* | unlimited | :const:`425000000` | :const:`999999999999999999` | ++------------+-----------------+---------------------+------------------------------+ +| min *Etop* | may be negative | :const:`0` | :const:`0` | ++------------+-----------------+---------------------+------------------------------+ + + +*Etop* is only relevant if *_clamp* is set to 1. In this case, the maximum exponent +is defined as *Etop* = *Emax* - (*prec*-1). + + +Thread local default contexts +----------------------------- + +When no context is given, all operations use the default context. In :mod:`decimal`, +this default context is thread local. For :mod:`cdecimal`, thread local default contexts +can be enabled at compile time. However, the performance penalty is so huge that +this is not the default. + +The consequences for threaded programs are: + +* One new context has to be created for each thread. + +* Only context methods or methods that take a context argument can be used. + + +Unlimited reading of decimals +----------------------------- + +The :class:`Decimal` constructor is supposed to read input as if there were no limits. +Since the context of cdecimal has limits, the following approach is used: + +If the :const:`Inexact` or :const:`Rounded` conditions occur during conversion, +:const:`InvalidOperation` is raised and the result is :const:`NaN`. In this case, +the :meth:`create_decimal` context method has to be used. + + +Correct rounding in the power method +------------------------------------ + +The :meth:`power()` method in :mod:`decimal` is correctly rounded. :mod:`cdecimal` +currently only guarantees an error less than one ULP (which is standard conforming). + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Doc/library/numeric.rst --- a/Doc/library/numeric.rst Sat Mar 05 20:31:42 2011 +0100 +++ b/Doc/library/numeric.rst Sun Mar 06 08:37:10 2011 +0100 @@ -8,9 +8,9 @@ The modules described in this chapter provide numeric and math-related functions and data types. The :mod:`numbers` module defines an abstract hierarchy of numeric types. The :mod:`math` and :mod:`cmath` modules contain various -mathematical functions for floating-point and complex numbers. For users more -interested in decimal accuracy than in speed, the :mod:`decimal` module supports -exact representations of decimal numbers. +mathematical functions for floating-point and complex numbers. The :mod:`decimal` +and :mod:`cdecimal` modules support exact representations of decimal numbers, +using arbitrary precision arithmetic. The following modules are documented in this chapter: @@ -20,6 +20,7 @@ numbers.rst math.rst cmath.rst + cdecimal.rst decimal.rst fractions.rst random.rst diff -r 5738c611ff2a -r 6a1c8fcce229 Include/longintrepr.h --- a/Include/longintrepr.h Sat Mar 05 20:31:42 2011 +0100 +++ b/Include/longintrepr.h Sun Mar 06 08:37:10 2011 +0100 @@ -6,7 +6,7 @@ #endif -/* This is published for the benefit of "friend" marshal.c only. */ +/* This is published for the benefit of "friends" marshal.c and cdecimal.c. */ /* Parameters of the long integer representation. There are two different sets of parameters: one set for 30-bit digits, stored in an unsigned 32-bit diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/decimal_tests.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/decimal_tests.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,3412 @@ +# Copyright (c) 2004 Python Software Foundation. +# All rights reserved. + +# Written by Eric Price +# and Facundo Batista +# and Raymond Hettinger +# and Aahz (aahz at pobox.com) +# and Tim Peters + +""" +These are the test cases for the Decimal and Cdecimal modules. + +There are two groups of tests, Arithmetic and Behaviour. The former test +the Decimal arithmetic using the tests provided by Mike Cowlishaw. The latter +test the pythonic behaviour according to PEP 327. + +Cowlishaw's tests can be downloaded from: + + www2.hursley.ibm.com/decimal/dectest.zip + +This test module can be called from command line with one parameter (Arithmetic +or Behaviour) to test each part, or without parameter to test both parts. If +you're working through IDLE, you can import this test module and call test_main() +with the corresponding argument. +""" + +import math +import os, sys +import operator +import pickle, copy +import unittest +import numbers +from test.support import run_unittest, run_doctest, is_resource_enabled +import random +try: + import threading +except ImportError: + threading = None + + +if sys.modules['have_cdecimal']: + from cdecimal import * + HAVE_CDECIMAL = True + HAVE_CONFIG_64 = (MAX_EMAX == 999999999999999999) +else: + from decimal import * + HAVE_CDECIMAL = False + HAVE_CONFIG_64 = False + + +if HAVE_CDECIMAL and (not HAVE_CONFIG_64): + readcontext = Context() + readcontext.unsafe_setprec(1070000000) + readcontext.unsafe_setemax(1070000000) + readcontext.unsafe_setemin(-1070000000) + readcontext._traps = 0 + def read_unlimited(v, context): + savetraps = context._traps + saveflags = context._flags + context._traps = 0 + vv = Decimal(v, context) + context._traps = savetraps + if context._flags & DecInvalidOperation: + # Do it the hard way + context._flags = saveflags + vv = readcontext.create_decimal(v) + return vv +else: + def read_unlimited(v, context): + return Decimal(v, context) + +if HAVE_CDECIMAL: + def is_integer(v): + return v.is_integer() + def is_special(v): + return v.is_special() + def raise_error(context, flag): + context.flags[flag] = True + if context.traps[flag]: + raise flag + def make_grouping(lst): + return ''.join([chr(x) for x in lst]) + def get_fmt(x, override=None, fmt='n'): + return Decimal.__format__(Decimal(x), fmt, override) +else: + def is_integer(v): + return v._isinteger() + def is_special(v): + return v._is_special + def raise_error(context, flag): + context._raise_error(flag) + def make_grouping(lst): + return lst + def get_fmt(x, locale, fmt='n'): + return Decimal.__format__(Decimal(x), fmt, _localeconv=locale) + +# Useful Test Constant +Signals = tuple(getcontext().flags.keys()) + +# Signals ordered with respect to precedence: when an operation +# produces multiple signals, signals occurring later in the list +# should be handled before those occurring earlier in the list. +OrderedSignals = (Clamped, Rounded, Inexact, Subnormal, + Underflow, Overflow, DivisionByZero, InvalidOperation) + +# Tests are built around these assumed context defaults. +# test_main() restores the original context. +def init(): + global ORIGINAL_CONTEXT + ORIGINAL_CONTEXT = getcontext().copy() + DefaultTestContext = Context( + prec = 9, + rounding = ROUND_HALF_EVEN, + traps = dict.fromkeys(Signals, 0) + ) + setcontext(DefaultTestContext) + +# decorator for skipping tests on non-IEEE 754 platforms +requires_IEEE_754 = unittest.skipUnless( + float.__getformat__("double").startswith("IEEE"), + "test requires IEEE 754 doubles") + +TESTDATADIR = 'decimaltestdata' +if __name__ == '__main__': + file = sys.argv[0] +else: + file = __file__ +testdir = os.path.dirname(file) or os.curdir +directory = testdir + os.sep + TESTDATADIR + os.sep + +skip_expected = not os.path.isdir(directory) + +# list of individual .decTest test ids that correspond to tests that +# we're skipping for one reason or another. +skipped_test_ids = [ + 'scbx164', # skipping apparently implementation-specific scaleb + 'scbx165', # tests, pending clarification of scaleb rules. +] + +# XXX: BEGIN CDECIMAL SKIPS +cdecimal_status_diff = {} +cdecimal_result_diff = {} +cdecimal_skipped_disagreements = [] +if HAVE_CDECIMAL: + if HAVE_CONFIG_64: + # 64 bit version: With a reduced working precision in mpd_qpow() + # the status matches. + cdecimal_status_diff = { + "pwsx803": ([Inexact, Rounded, Subnormal, Underflow], + [Inexact, Rounded]), + "pwsx805": ([Inexact, Rounded, Subnormal, Underflow], + [Inexact, Rounded]) + } + # These are skipped for decNumber, too. + cdecimal_result_diff = { + "powx4302": ("1.000000", "1.000001"), + "powx4303": ("1.000000", "1.000001"), + "powx4342": ("1.000000", "0.9999999"), + "powx4343": ("1.000000", "0.9999999") + } + # Disagreements: + # http://bugs.python.org/issue7049 + cdecimal_skipped_disagreements = ['pwmx325', 'pwmx326'] +# END CDECIMAL SKIPS + +# Make sure it actually raises errors when not expected and caught in flags +# 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, + 'division_impossible' : InvalidOperation, + 'division_undefined' : InvalidOperation, + 'inexact' : Inexact, + 'invalid_context' : InvalidOperation, + 'invalid_operation' : InvalidOperation, + 'overflow' : Overflow, + 'rounded' : Rounded, + 'subnormal' : Subnormal, + 'underflow' : Underflow} + + +def Nonfunction(*args): + """Doesn't do anything.""" + return None + +RoundingDict = {'ceiling' : ROUND_CEILING, #Maps test-case names to roundings. + 'down' : ROUND_DOWN, + 'floor' : ROUND_FLOOR, + 'half_down' : ROUND_HALF_DOWN, + 'half_even' : ROUND_HALF_EVEN, + 'half_up' : ROUND_HALF_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 = {'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 is_special(v) and v and ( + 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. + + Changed for unittest. + """ + def setUp(self): + self.context = Context() + self.ignore_list = ['#'] + # Basically, a # means return NaN InvalidOperation. + # Different from a sNaN in trim + + self.ChangeDict = {'precision' : self.change_precision, + 'rounding' : self.change_rounding_method, + 'maxexponent' : self.change_max_exponent, + 'minexponent' : self.change_min_exponent, + 'clamp' : self.change_clamp} + + def eval_file(self, file): + global skip_expected + if skip_expected: + raise unittest.SkipTest + return + with open(file) as f: + for line in f: + line = line.replace('\r\n', '').replace('\n', '') + #print line + try: + t = self.eval_line(line) + except DecimalException as exception: + #Exception raised where there shoudn't have been one. + self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line) + + return + + def eval_line(self, s): + if s.find(' -> ') >= 0 and s[:2] != '--' and not s.startswith(' --'): + s = (s.split('->')[0] + '->' + + s.split('->')[1].split('--')[0]).strip() + else: + s = s.split('--')[0].strip() + + for ignore in self.ignore_list: + if s.find(ignore) >= 0: + #print s.split()[0], 'NotImplemented--', ignore + return + if not s: + return + elif ':' in s: + return self.eval_directive(s) + else: + return self.eval_equation(s) + + def eval_directive(self, s): + funct, value = (x.strip().lower() for x in s.split(':')) + if funct == 'rounding': + value = RoundingDict[value] + else: + try: + value = int(value) + except ValueError: + pass + + funct = self.ChangeDict.get(funct, Nonfunction) + funct(value) + + def eval_equation(self, s): + #global DEFAULT_PRECISION + #print DEFAULT_PRECISION + + if not TEST_ALL and random.random() < 0.90: + return + + try: + Sides = s.split('->') + L = Sides[0].strip().split() + id = L[0] + if DEBUG: + print("Test ", id, end=" ") + funct = L[1].lower() + valstemp = L[2:] + L = Sides[1].strip().split() + ans = L[0] + exceptions = L[1:] + except (TypeError, AttributeError, IndexError): + raise InvalidOperation + def FixQuotes(val): + val = val.replace("''", 'SingleQuote').replace('""', 'DoubleQuote') + val = val.replace("'", '').replace('"', '') + val = val.replace('SingleQuote', "'").replace('DoubleQuote', '"') + return val + + if id in skipped_test_ids or id in cdecimal_skipped_disagreements: # XXX + return + + fname = nameAdapter.get(funct, funct) + if fname == 'rescale': + return + funct = getattr(self.context, fname) + vals = [] + conglomerate = '' + quote = 0 + theirexceptions = [ErrorNames[x.lower()] for x in exceptions] + if id in cdecimal_status_diff: # XXX + t = cdecimal_status_diff[id] + theirexceptions = t[0] + + for exception in Signals: + self.context.traps[exception] = 1 #Catch these bugs... + for exception in theirexceptions: + self.context.traps[exception] = 0 + for i, val in enumerate(valstemp): + if val.count("'") % 2 == 1: + quote = 1 - quote + if quote: + conglomerate = conglomerate + ' ' + val + continue + else: + val = conglomerate + val + conglomerate = '' + v = FixQuotes(val) + if fname in ('to_sci_string', 'to_eng_string'): + if EXTENDEDERRORTEST: + for error in theirexceptions: + self.context.traps[error] = 1 + try: + funct(self.context.create_decimal(v)) + except error: + pass + except Signals as e: + self.fail("Raised %s in %s when %s disabled" % \ + (e, s, error)) + else: + self.fail("Did not raise %s in %s" % (error, s)) + self.context.traps[error] = 0 + v = self.context.create_decimal(v) + else: + v = read_unlimited(v, self.context) # XXX + vals.append(v) + + ans = FixQuotes(ans) + + # XXX: three argument power/powmod + if HAVE_CDECIMAL: + if fname == 'power' and len(vals) == 3: + # name is different + fname = 'powmod' + funct = getattr(self.context, fname) + + # skip tests that are related to bounds imposed in the decNumber + # reference implementation + if fname in decNumberRestricted: + if fname == 'power': + if not (is_integer(vals[1]) 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 + try: + funct(*vals) + except error: + pass + except Signals as e: + self.fail("Raised %s in %s when %s disabled" % \ + (e, s, error)) + else: + self.fail("Did not raise %s in %s" % (error, s)) + self.context.traps[error] = 0 + + # as above, but add traps cumulatively, to check precedence + ordered_errors = [e for e in OrderedSignals if e in theirexceptions] + for error in ordered_errors: + self.context.traps[error] = 1 + try: + funct(*vals) + except error: + pass + except Signals as e: + self.fail("Raised %s in %s; expected %s" % + (type(e), s, error)) + else: + self.fail("Did not raise %s in %s" % (error, s)) + # reset traps + for error in ordered_errors: + self.context.traps[error] = 0 + + if DEBUG: + print("--", self.context) + try: + result = str(funct(*vals)) + if fname in LOGICAL_FUNCTIONS: + result = str(int(eval(result))) # 'True', 'False' -> '1', '0' + except Signals as error: + self.fail("Raised %s in %s" % (error, s)) + except: #Catch any error long enough to state the test case. + print("ERROR:", s) + raise + + myexceptions = self.getexceptions() + self.context.clear_flags() + + myexceptions.sort(key=repr) + theirexceptions.sort(key=repr) + + if id in cdecimal_result_diff: # XXX + t = cdecimal_result_diff[id] + self.assertTrue(result == t[0] and ans == t[1]) + else: + self.assertEqual(result, ans, + 'Incorrect answer for ' + s + ' -- got ' + result) + + self.assertEqual(myexceptions, theirexceptions, + 'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions)) + return + + def getexceptions(self): + return [e for e in Signals if self.context.flags[e]] + + def change_precision(self, prec): + if (not HAVE_CDECIMAL) or HAVE_CONFIG_64: + self.context.prec = prec + else: # XXX + self.context.unsafe_setprec(prec) + def change_rounding_method(self, rounding): + self.context.rounding = rounding + def change_min_exponent(self, exp): + if (not HAVE_CDECIMAL) or HAVE_CONFIG_64: + self.context.Emin = exp + else: # XXX + self.context.unsafe_setemin(exp) + def change_max_exponent(self, exp): + if (not HAVE_CDECIMAL) or HAVE_CONFIG_64: + self.context.Emax = exp + else: # XXX + self.context.unsafe_setemax(exp) + def change_clamp(self, clamp): + self.context._clamp = clamp + + + +# The following classes test the behaviour of Decimal according to PEP 327 + +class DecimalExplicitConstructionTest(unittest.TestCase): + '''Unit tests for Explicit Construction cases of Decimal.''' + + def test_explicit_empty(self): + self.assertEqual(Decimal(), Decimal("0")) + + def test_explicit_from_None(self): + self.assertRaises(TypeError, Decimal, None) + + def test_explicit_from_int(self): + + #positive + d = Decimal(45) + self.assertEqual(str(d), '45') + + #very large positive + d = Decimal(500000123) + self.assertEqual(str(d), '500000123') + + #negative + d = Decimal(-45) + self.assertEqual(str(d), '-45') + + #zero + d = Decimal(0) + self.assertEqual(str(d), '0') + + def test_explicit_from_string(self): + + #empty + self.assertEqual(str(Decimal('')), 'NaN') + + #int + self.assertEqual(str(Decimal('45')), '45') + + #float + self.assertEqual(str(Decimal('45.34')), '45.34') + + #engineer notation + self.assertEqual(str(Decimal('45e2')), '4.5E+3') + + #just not a number + self.assertEqual(str(Decimal('ugly')), 'NaN') + + #leading and trailing whitespace permitted + self.assertEqual(str(Decimal('1.3E4 \n')), '1.3E+4') + self.assertEqual(str(Decimal(' -7.89')), '-7.89') + self.assertEqual(str(Decimal(" 3.45679 ")), '3.45679') + + with localcontext() as c: + c.traps[InvalidOperation] = True + # Invalid string + self.assertRaises(InvalidOperation, Decimal, "xyz") + # Two arguments max + self.assertRaises(TypeError, Decimal, "1234", "x", "y") + if HAVE_CDECIMAL: + # Too large for cdecimal to be converted exactly + self.assertRaises(InvalidOperation, Decimal, + "1e9999999999999999999") + + def test_explicit_from_tuples(self): + + #zero + d = Decimal( (0, (0,), 0) ) + self.assertEqual(str(d), '0') + + #int + d = Decimal( (1, (4, 5), 0) ) + self.assertEqual(str(d), '-45') + + #float + d = Decimal( (0, (4, 5, 3, 4), -2) ) + self.assertEqual(str(d), '45.34') + + #weird + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.34913534E-17') + + #inf + d = Decimal( (0, (), "F") ) + self.assertEqual(str(d), 'Infinity') + + #wrong number of items + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1)) ) + + #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, "xyz", 2) ) + 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_bool(self): + self.assertIs(bool(Decimal(0)), False) + self.assertIs(bool(Decimal(1)), True) + self.assertEqual(Decimal(False), Decimal(0)) + self.assertEqual(Decimal(True), Decimal(1)) + + def test_explicit_from_Decimal(self): + + #positive + d = Decimal(45) + e = Decimal(d) + self.assertEqual(str(e), '45') + + #very large positive + d = Decimal(500000123) + e = Decimal(d) + self.assertEqual(str(e), '500000123') + + #negative + d = Decimal(-45) + e = Decimal(d) + self.assertEqual(str(e), '-45') + + #zero + d = Decimal(0) + e = Decimal(d) + self.assertEqual(str(e), '0') + + @requires_IEEE_754 + def test_explicit_from_float(self): + if HAVE_CDECIMAL: + with localcontext() as c: + c.clear_flags() + self.assertEqual(Decimal(7.5), 7.5) + self.assertTrue(c.flags[FloatOperation]) + + c.traps[FloatOperation] = True + self.assertRaises(FloatOperation, Decimal, 7.5) + self.assertTrue(c.flags[FloatOperation]) + + r = Decimal(0.1) + self.assertEqual(type(r), Decimal) + self.assertEqual(str(r), + '0.1000000000000000055511151231257827021181583404541015625') + self.assertTrue(Decimal(float('nan')).is_qnan()) + self.assertTrue(Decimal(float('inf')).is_infinite()) + self.assertTrue(Decimal(float('-inf')).is_infinite()) + self.assertEqual(str(Decimal(float('nan'))), + str(Decimal('NaN'))) + self.assertEqual(str(Decimal(float('inf'))), + str(Decimal('Infinity'))) + self.assertEqual(str(Decimal(float('-inf'))), + str(Decimal('-Infinity'))) + self.assertEqual(str(Decimal(float('-0.0'))), + str(Decimal('-0'))) + for i in range(200): + x = random.expovariate(0.01) * (random.random() * 2.0 - 1.0) + self.assertEqual(x, float(Decimal(x))) # roundtrip + + def test_explicit_context_create_decimal(self): + + nc = copy.copy(getcontext()) + nc.prec = 3 + + # empty + d = Decimal() + self.assertEqual(str(d), '0') + d = nc.create_decimal() + self.assertEqual(str(d), '0') + + # from None + self.assertRaises(TypeError, nc.create_decimal, None) + + # from int + d = nc.create_decimal(456) + self.assertIsInstance(d, Decimal) + self.assertEqual(nc.create_decimal(45678), + nc.create_decimal('457E+2')) + + # from string + d = Decimal('456789') + self.assertEqual(str(d), '456789') + d = nc.create_decimal('456789') + self.assertEqual(str(d), '4.57E+5') + # leading and trailing whitespace should result in a NaN; + # spaces are already checked in Cowlishaw's test-suite, so + # here we just check that a trailing newline results in a NaN + self.assertEqual(str(nc.create_decimal('3.14\n')), 'NaN') + + # from tuples + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.34913534E-17') + d = nc.create_decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.35E-17') + + # from Decimal + prevdec = Decimal(500000123) + d = Decimal(prevdec) + self.assertEqual(str(d), '500000123') + d = nc.create_decimal(prevdec) + self.assertEqual(str(d), '5.00E+8') + + # more integers + nc.prec = 28 + nc.traps[InvalidOperation] = True + + for v in [-2**63-1, -2**63, -2**31-1, -2**31, 0, + 2**31-1, 2**31, 2**63-1, 2**63]: + d = nc.create_decimal(v) + self.assertTrue(isinstance(d, Decimal)) + self.assertEqual(int(d), v) + + nc.prec = 3 + nc.traps[Rounded] = True + self.assertRaises(Rounded, nc.create_decimal, 1234) + + # from string + nc.prec = 28 + self.assertEqual(str(nc.create_decimal('0E-017')), '0E-17') + self.assertEqual(str(nc.create_decimal('45')), '45') + self.assertEqual(str(nc.create_decimal('-Inf')), '-Infinity') + self.assertEqual(str(nc.create_decimal('NaN123')), 'NaN123') + + # invalid arguments + self.assertRaises(InvalidOperation, nc.create_decimal, "xyz") + self.assertRaises(ValueError, nc.create_decimal, (1, "xyz", -25)) + if HAVE_CDECIMAL: # decimal.py accepts lists. + self.assertRaises(TypeError, nc.create_decimal, ["%"]) + self.assertRaises(TypeError, nc.create_decimal, "1234", "5678") + + def test_explicit_context_create_from_float(self): + nc = Context() + if HAVE_CDECIMAL: + nc.clear_flags() + self.assertEqual(nc.create_decimal(7.5), 7.5) + self.assertTrue(nc.flags[FloatOperation]) + + nc.traps[FloatOperation] = True + self.assertRaises(FloatOperation, nc.create_decimal, 7.5) + self.assertTrue(nc.flags[FloatOperation]) + nc.traps[FloatOperation] = False + + r = nc.create_decimal(0.1) + self.assertEqual(type(r), Decimal) + self.assertEqual(str(r), '0.1000000000000000055511151231') + self.assertTrue(nc.create_decimal(float('nan')).is_qnan()) + self.assertTrue(nc.create_decimal(float('inf')).is_infinite()) + self.assertTrue(nc.create_decimal(float('-inf')).is_infinite()) + self.assertEqual(str(nc.create_decimal(float('nan'))), + str(nc.create_decimal('NaN'))) + self.assertEqual(str(nc.create_decimal(float('inf'))), + str(nc.create_decimal('Infinity'))) + self.assertEqual(str(nc.create_decimal(float('-inf'))), + str(nc.create_decimal('-Infinity'))) + self.assertEqual(str(nc.create_decimal(float('-0.0'))), + str(nc.create_decimal('-0'))) + nc.prec = 100 + for i in range(200): + x = random.expovariate(0.01) * (random.random() * 2.0 - 1.0) + self.assertEqual(x, float(nc.create_decimal(x))) # roundtrip + + def test_unicode_digits(self): + test_values = { + '\uff11': '1', + '\u0660.\u0660\u0663\u0667\u0662e-\u0663' : '0.0000372', + '-nan\u0c68\u0c6a\u0c66\u0c66' : '-NaN2400', + } + for input, expected in test_values.items(): + self.assertEqual(str(Decimal(input)), expected) + + +class DecimalImplicitConstructionTest(unittest.TestCase): + '''Unit tests for Implicit Construction cases of Decimal.''' + + def test_implicit_from_None(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + None', globals()) + + def test_implicit_from_int(self): + #normal + self.assertEqual(str(Decimal(5) + 45), '50') + #exceeding precision + self.assertEqual(Decimal(5) + 123456789000, Decimal(123456789000)) + + def test_implicit_from_string(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + "3"', globals()) + + def test_implicit_from_float(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + 2.2', globals()) + + def test_implicit_from_Decimal(self): + self.assertEqual(Decimal(5) + Decimal(45), Decimal(50)) + + def test_rop(self): + # Allow other classes to be trained to interact with Decimals + class E: + def __divmod__(self, other): + return 'divmod ' + str(other) + def __rdivmod__(self, other): + return str(other) + ' rdivmod' + def __lt__(self, other): + return 'lt ' + str(other) + def __gt__(self, other): + return 'gt ' + str(other) + def __le__(self, other): + return 'le ' + str(other) + def __ge__(self, other): + return 'ge ' + str(other) + def __eq__(self, other): + return 'eq ' + str(other) + def __ne__(self, other): + return 'ne ' + str(other) + + self.assertEqual(divmod(E(), Decimal(10)), 'divmod 10') + self.assertEqual(divmod(Decimal(10), E()), '10 rdivmod') + self.assertEqual(eval('Decimal(10) < E()'), 'gt 10') + self.assertEqual(eval('Decimal(10) > E()'), 'lt 10') + self.assertEqual(eval('Decimal(10) <= E()'), 'ge 10') + self.assertEqual(eval('Decimal(10) >= E()'), 'le 10') + self.assertEqual(eval('Decimal(10) == E()'), 'eq 10') + self.assertEqual(eval('Decimal(10) != E()'), 'ne 10') + + # insert operator methods and then exercise them + oplist = [ + ('+', '__add__', '__radd__'), + ('-', '__sub__', '__rsub__'), + ('*', '__mul__', '__rmul__'), + ('/', '__truediv__', '__rtruediv__'), + ('%', '__mod__', '__rmod__'), + ('//', '__floordiv__', '__rfloordiv__'), + ('**', '__pow__', '__rpow__') + ] + + for sym, lop, rop in oplist: + setattr(E, lop, lambda self, other: 'str' + lop + str(other)) + setattr(E, rop, lambda self, other: str(other) + rop + 'str') + self.assertEqual(eval('E()' + sym + 'Decimal(10)'), + 'str' + lop + '10') + self.assertEqual(eval('Decimal(10)' + sym + 'E()'), + '10' + rop + 'str') + + +class DecimalFormatTest(unittest.TestCase): + '''Unit tests for the format function.''' + def test_formatting(self): + # triples giving a format, a Decimal, and the expected result + test_values = [ + ('e', '0E-15', '0e-15'), + ('e', '2.3E-15', '2.3e-15'), + ('e', '2.30E+2', '2.30e+2'), # preserve significant zeros + ('e', '2.30000E-15', '2.30000e-15'), + ('e', '1.23456789123456789e40', '1.23456789123456789e+40'), + ('e', '1.5', '1.5e+0'), + ('e', '0.15', '1.5e-1'), + ('e', '0.015', '1.5e-2'), + ('e', '0.0000000000015', '1.5e-12'), + ('e', '15.0', '1.50e+1'), + ('e', '-15', '-1.5e+1'), + ('e', '0', '0e+0'), + ('e', '0E1', '0e+1'), + ('e', '0.0', '0e-1'), + ('e', '0.00', '0e-2'), + ('.6e', '0E-15', '0.000000e-9'), + ('.6e', '0', '0.000000e+6'), + ('.6e', '9.999999', '9.999999e+0'), + ('.6e', '9.9999999', '1.000000e+1'), + ('.6e', '-1.23e5', '-1.230000e+5'), + ('.6e', '1.23456789e-3', '1.234568e-3'), + ('f', '0', '0'), + ('f', '0.0', '0.0'), + ('f', '0E-2', '0.00'), + ('f', '0.00E-8', '0.0000000000'), + ('f', '0E1', '0'), # loses exponent information + ('f', '3.2E1', '32'), + ('f', '3.2E2', '320'), + ('f', '3.20E2', '320'), + ('f', '3.200E2', '320.0'), + ('f', '3.2E-6', '0.0000032'), + ('.6f', '0E-15', '0.000000'), # all zeros treated equally + ('.6f', '0E1', '0.000000'), + ('.6f', '0', '0.000000'), + ('.0f', '0', '0'), # no decimal point + ('.0f', '0e-2', '0'), + ('.0f', '3.14159265', '3'), + ('.1f', '3.14159265', '3.1'), + ('.4f', '3.14159265', '3.1416'), + ('.6f', '3.14159265', '3.141593'), + ('.7f', '3.14159265', '3.1415926'), # round-half-even! + ('.8f', '3.14159265', '3.14159265'), + ('.9f', '3.14159265', '3.141592650'), + + ('g', '0', '0'), + ('g', '0.0', '0.0'), + ('g', '0E1', '0e+1'), + ('G', '0E1', '0E+1'), + ('g', '0E-5', '0.00000'), + ('g', '0E-6', '0.000000'), + ('g', '0E-7', '0e-7'), + ('g', '-0E2', '-0e+2'), + ('.0g', '3.14159265', '3'), # 0 sig fig -> 1 sig fig + ('.1g', '3.14159265', '3'), + ('.2g', '3.14159265', '3.1'), + ('.5g', '3.14159265', '3.1416'), + ('.7g', '3.14159265', '3.141593'), + ('.8g', '3.14159265', '3.1415926'), # round-half-even! + ('.9g', '3.14159265', '3.14159265'), + ('.10g', '3.14159265', '3.14159265'), # don't pad + + ('%', '0E1', '0%'), + ('%', '0E0', '0%'), + ('%', '0E-1', '0%'), + ('%', '0E-2', '0%'), + ('%', '0E-3', '0.0%'), + ('%', '0E-4', '0.00%'), + + ('.3%', '0', '0.000%'), # all zeros treated equally + ('.3%', '0E10', '0.000%'), + ('.3%', '0E-10', '0.000%'), + ('.3%', '2.34', '234.000%'), + ('.3%', '1.234567', '123.457%'), + ('.0%', '1.23', '123%'), + + ('e', 'NaN', 'NaN'), + ('f', '-NaN123', '-NaN123'), + ('+g', 'NaN456', '+NaN456'), + ('.3e', 'Inf', 'Infinity'), + ('.16f', '-Inf', '-Infinity'), + ('.0g', '-sNaN', '-sNaN'), + + ('', '1.00', '1.00'), + + # test alignment and padding + ('6', '123', ' 123'), + ('<6', '123', '123 '), + ('>6', '123', ' 123'), + ('^6', '123', ' 123 '), + ('=+6', '123', '+ 123'), + ('#<10', 'NaN', 'NaN#######'), + ('#<10', '-4.3', '-4.3######'), + ('#<+10', '0.0130', '+0.0130###'), + ('#< 10', '0.0130', ' 0.0130###'), + ('@>10', '-Inf', '@-Infinity'), + ('#>5', '-Inf', '-Infinity'), + ('?^5', '123', '?123?'), + ('%^6', '123', '%123%%'), + (' ^6', '-45.6', '-45.6 '), + ('/=10', '-45.6', '-/////45.6'), + ('/=+10', '45.6', '+/////45.6'), + ('/= 10', '45.6', ' /////45.6'), + + # thousands separator + (',', '1234567', '1,234,567'), + (',', '123456', '123,456'), + (',', '12345', '12,345'), + (',', '1234', '1,234'), + (',', '123', '123'), + (',', '12', '12'), + (',', '1', '1'), + (',', '0', '0'), + (',', '-1234567', '-1,234,567'), + (',', '-123456', '-123,456'), + ('7,', '123456', '123,456'), + ('8,', '123456', ' 123,456'), + ('08,', '123456', '0,123,456'), # special case: extra 0 needed + ('+08,', '123456', '+123,456'), # but not if there's a sign + (' 08,', '123456', ' 123,456'), + ('08,', '-123456', '-123,456'), + ('+09,', '123456', '+0,123,456'), + # ... with fractional part... + ('07,', '1234.56', '1,234.56'), + ('08,', '1234.56', '1,234.56'), + ('09,', '1234.56', '01,234.56'), + ('010,', '1234.56', '001,234.56'), + ('011,', '1234.56', '0,001,234.56'), + ('012,', '1234.56', '0,001,234.56'), + ('08,.1f', '1234.5', '01,234.5'), + # no thousands separators in fraction part + (',', '1.23456789', '1.23456789'), + (',%', '123.456789', '12,345.6789%'), + (',e', '123456', '1.23456e+5'), + (',E', '123456', '1.23456E+5'), + + # issue 6850 + ('a=-7.0', '0.12345', 'aaaa0.1'), + ] + for fmt, d, result in test_values: + self.assertEqual(format(Decimal(d), fmt), result) + + def test_n_format(self): + try: + from locale import CHAR_MAX + except ImportError: + return + + # Set up some localeconv-like dictionaries + en_US = { + 'decimal_point' : '.', + 'grouping' : make_grouping([3, 3, 0]), + 'thousands_sep' : ',' + } + + fr_FR = { + 'decimal_point' : ',', + 'grouping' : make_grouping([CHAR_MAX]), + 'thousands_sep' : '' + } + + ru_RU = { + 'decimal_point' : ',', + 'grouping': make_grouping([3, 3, 0]), + 'thousands_sep' : ' ' + } + + crazy = { + 'decimal_point' : '&', + 'grouping': make_grouping([1, 4, 2, CHAR_MAX]), + 'thousands_sep' : '-' + } + + dotsep_wide = { + 'decimal_point' : b'\xc2\xbf'.decode('utf-8'), + 'grouping': make_grouping([3, 3, 0]), + 'thousands_sep' : b'\xc2\xb4'.decode('utf-8') + } + + self.assertEqual(get_fmt(Decimal('12.7'), en_US), '12.7') + self.assertEqual(get_fmt(Decimal('12.7'), fr_FR), '12,7') + self.assertEqual(get_fmt(Decimal('12.7'), ru_RU), '12,7') + self.assertEqual(get_fmt(Decimal('12.7'), crazy), '1-2&7') + + self.assertEqual(get_fmt(123456789, en_US), '123,456,789') + self.assertEqual(get_fmt(123456789, fr_FR), '123456789') + self.assertEqual(get_fmt(123456789, ru_RU), '123 456 789') + self.assertEqual(get_fmt(1234567890123, crazy), '123456-78-9012-3') + + self.assertEqual(get_fmt(123456789, en_US, '.6n'), '1.23457e+8') + self.assertEqual(get_fmt(123456789, fr_FR, '.6n'), '1,23457e+8') + self.assertEqual(get_fmt(123456789, ru_RU, '.6n'), '1,23457e+8') + self.assertEqual(get_fmt(123456789, crazy, '.6n'), '1&23457e+8') + + # zero padding + self.assertEqual(get_fmt(1234, fr_FR, '03n'), '1234') + self.assertEqual(get_fmt(1234, fr_FR, '04n'), '1234') + self.assertEqual(get_fmt(1234, fr_FR, '05n'), '01234') + self.assertEqual(get_fmt(1234, fr_FR, '06n'), '001234') + + self.assertEqual(get_fmt(12345, en_US, '05n'), '12,345') + self.assertEqual(get_fmt(12345, en_US, '06n'), '12,345') + self.assertEqual(get_fmt(12345, en_US, '07n'), '012,345') + self.assertEqual(get_fmt(12345, en_US, '08n'), '0,012,345') + self.assertEqual(get_fmt(12345, en_US, '09n'), '0,012,345') + self.assertEqual(get_fmt(12345, en_US, '010n'), '00,012,345') + + self.assertEqual(get_fmt(123456, crazy, '06n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '07n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '08n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '09n'), '01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '010n'), '0-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '011n'), '0-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '012n'), '00-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '013n'), '000-01-2345-6') + + # wide char separator and decimal point + self.assertEqual(get_fmt(Decimal('-1.5'), dotsep_wide, '020n'), + '-0´000´000´000´001¿5') + +class DecimalArithmeticOperatorsTest(unittest.TestCase): + '''Unit tests for all arithmetic operators, binary and unary.''' + + def test_addition(self): + + d1 = Decimal('-11.1') + d2 = Decimal('22.2') + + #two Decimals + self.assertEqual(d1+d2, Decimal('11.1')) + self.assertEqual(d2+d1, Decimal('11.1')) + + #with other type, left + c = d1 + 5 + self.assertEqual(c, Decimal('-6.1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 + d1 + self.assertEqual(c, Decimal('-6.1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 += d2 + self.assertEqual(d1, Decimal('11.1')) + + #inline with other type + d1 += 5 + self.assertEqual(d1, Decimal('16.1')) + + def test_subtraction(self): + + d1 = Decimal('-11.1') + d2 = Decimal('22.2') + + #two Decimals + self.assertEqual(d1-d2, Decimal('-33.3')) + self.assertEqual(d2-d1, Decimal('33.3')) + + #with other type, left + c = d1 - 5 + self.assertEqual(c, Decimal('-16.1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 - d1 + self.assertEqual(c, Decimal('16.1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 -= d2 + self.assertEqual(d1, Decimal('-33.3')) + + #inline with other type + d1 -= 5 + self.assertEqual(d1, Decimal('-38.3')) + + def test_multiplication(self): + + d1 = Decimal('-5') + d2 = Decimal('3') + + #two Decimals + self.assertEqual(d1*d2, Decimal('-15')) + self.assertEqual(d2*d1, Decimal('-15')) + + #with other type, left + c = d1 * 5 + self.assertEqual(c, Decimal('-25')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 * d1 + self.assertEqual(c, Decimal('-25')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 *= d2 + self.assertEqual(d1, Decimal('-15')) + + #inline with other type + d1 *= 5 + self.assertEqual(d1, Decimal('-75')) + + def test_division(self): + + d1 = Decimal('-5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1/d2, Decimal('-2.5')) + self.assertEqual(d2/d1, Decimal('-0.4')) + + #with other type, left + c = d1 / 4 + self.assertEqual(c, Decimal('-1.25')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 4 / d1 + self.assertEqual(c, Decimal('-0.8')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 /= d2 + self.assertEqual(d1, Decimal('-2.5')) + + #inline with other type + d1 /= 4 + self.assertEqual(d1, Decimal('-0.625')) + + def test_floor_division(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1//d2, Decimal('2')) + self.assertEqual(d2//d1, Decimal('0')) + + #with other type, left + c = d1 // 4 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 // d1 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 //= d2 + self.assertEqual(d1, Decimal('2')) + + #inline with other type + d1 //= 2 + self.assertEqual(d1, Decimal('1')) + + def test_powering(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1**d2, Decimal('25')) + self.assertEqual(d2**d1, Decimal('32')) + + #with other type, left + c = d1 ** 4 + self.assertEqual(c, Decimal('625')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 ** d1 + self.assertEqual(c, Decimal('16807')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 **= d2 + self.assertEqual(d1, Decimal('25')) + + #inline with other type + d1 **= 4 + self.assertEqual(d1, Decimal('390625')) + + def test_module(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1%d2, Decimal('1')) + self.assertEqual(d2%d1, Decimal('2')) + + #with other type, left + c = d1 % 4 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 % d1 + self.assertEqual(c, Decimal('2')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 %= d2 + self.assertEqual(d1, Decimal('1')) + + #inline with other type + d1 %= 4 + self.assertEqual(d1, Decimal('1')) + + def test_floor_div_module(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + (p, q) = divmod(d1, d2) + self.assertEqual(p, Decimal('2')) + self.assertEqual(q, Decimal('1')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + #with other type, left + (p, q) = divmod(d1, 4) + self.assertEqual(p, Decimal('1')) + self.assertEqual(q, Decimal('1')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + #with other type, right + (p, q) = divmod(7, d1) + self.assertEqual(p, Decimal('1')) + self.assertEqual(q, Decimal('2')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + def test_unary_operators(self): + self.assertEqual(+Decimal(45), Decimal(+45)) # + + self.assertEqual(-Decimal(45), Decimal(-45)) # - + self.assertEqual(abs(Decimal(45)), abs(Decimal(-45))) # abs + + def test_nan_comparisons(self): + # comparisons involving signaling nans signal InvalidOperation + + # order comparisons (<, <=, >, >=) involving only quiet nans + # also signal InvalidOperation + + # equality comparisons (==, !=) involving only quiet nans + # don't signal, but return False or True respectively. + + n = Decimal('NaN') + s = Decimal('sNaN') + i = Decimal('Inf') + f = Decimal('2') + + qnan_pairs = (n, n), (n, i), (i, n), (n, f), (f, n) + snan_pairs = (s, n), (n, s), (s, i), (i, s), (s, f), (f, s), (s, s) + order_ops = operator.lt, operator.le, operator.gt, operator.ge + equality_ops = operator.eq, operator.ne + + # results when InvalidOperation is not trapped + for x, y in qnan_pairs + snan_pairs: + for op in order_ops + equality_ops: + got = op(x, y) + expected = True if op is operator.ne else False + self.assertIs(expected, got, + "expected {0!r} for operator.{1}({2!r}, {3!r}); " + "got {4!r}".format( + expected, op.__name__, x, y, got)) + + # repeat the above, but this time trap the InvalidOperation + with localcontext() as ctx: + ctx.traps[InvalidOperation] = 1 + + for x, y in qnan_pairs: + for op in equality_ops: + got = op(x, y) + expected = True if op is operator.ne else False + self.assertIs(expected, got, + "expected {0!r} for " + "operator.{1}({2!r}, {3!r}); " + "got {4!r}".format( + expected, op.__name__, x, y, got)) + + for x, y in snan_pairs: + for op in equality_ops: + self.assertRaises(InvalidOperation, operator.eq, x, y) + self.assertRaises(InvalidOperation, operator.ne, x, y) + + for x, y in qnan_pairs + snan_pairs: + for op in order_ops: + self.assertRaises(InvalidOperation, op, x, y) + + def test_copy_sign(self): + d = Decimal(1).copy_sign(Decimal(-2)) + + self.assertEqual(Decimal(1).copy_sign(-2), d) + self.assertRaises(TypeError, Decimal(1).copy_sign, '-2') + +# The following are two functions used to test threading in the next class + +def thfunc1(cls): + d1 = Decimal(1) + d3 = Decimal(3) + test1 = d1/d3 + + cls.finish1.set() + cls.synchro.wait() + + test2 = d1/d3 + with localcontext() as c2: + cls.assertTrue(c2.flags[Inexact]) + cls.assertRaises(DivisionByZero, c2.divide, d1, 0) + cls.assertTrue(c2.flags[DivisionByZero]) + with localcontext() as c3: + cls.assertTrue(c3.flags[Inexact]) + cls.assertTrue(c3.flags[DivisionByZero]) + cls.assertRaises(InvalidOperation, c3.compare, d1, Decimal('sNaN')) + cls.assertTrue(c3.flags[InvalidOperation]) + del c3 + cls.assertFalse(c2.flags[InvalidOperation]) + del c2 + + cls.assertEqual(test1, Decimal('0.333333333333333333333333')) + cls.assertEqual(test2, Decimal('0.333333333333333333333333')) + + c1 = getcontext() + cls.assertTrue(c1.flags[Inexact]) + for sig in Overflow, Underflow, DivisionByZero, InvalidOperation: + cls.assertFalse(c1.flags[sig]) + return + +def thfunc2(cls): + d1 = Decimal(1) + d3 = Decimal(3) + test1 = d1/d3 + + thiscontext = getcontext() + thiscontext.prec = 18 + test2 = d1/d3 + + with localcontext() as c2: + cls.assertTrue(c2.flags[Inexact]) + cls.assertRaises(Overflow, c2.multiply, Decimal('1e425000000'), 999) + cls.assertTrue(c2.flags[Overflow]) + with localcontext(thiscontext) as c3: + cls.assertTrue(c3.flags[Inexact]) + cls.assertFalse(c3.flags[Overflow]) + c3.traps[Underflow] = True + cls.assertRaises(Underflow, c3.divide, Decimal('1e-425000000'), 999) + cls.assertTrue(c3.flags[Underflow]) + del c3 + cls.assertFalse(c2.flags[Underflow]) + cls.assertFalse(c2.traps[Underflow]) + del c2 + + cls.synchro.set() + cls.finish2.set() + + cls.assertEqual(test1, Decimal('0.333333333333333333333333')) + cls.assertEqual(test2, Decimal('0.333333333333333333')) + + cls.assertFalse(thiscontext.traps[Underflow]) + cls.assertTrue(thiscontext.flags[Inexact]) + for sig in Overflow, Underflow, DivisionByZero, InvalidOperation: + cls.assertFalse(thiscontext.flags[sig]) + return + +@unittest.skipUnless(threading, 'threading required') +class DecimalUseOfContextTest(unittest.TestCase): + '''Unit tests for Use of Context cases in Decimal.''' + + # Take care executing this test from IDLE, there's an issue in threading + # that hangs IDLE and I couldn't find it + + def test_threading(self): + if HAVE_CDECIMAL and not HAVE_THREADS: + self.skipTest("compiled without threading") + # Test the "threading isolation" of a Context. Also test changing + # the DefaultContext, which acts as a template for the thread-local + # contexts. + save_prec = DefaultContext.prec + save_emax = DefaultContext.Emax + save_emin = DefaultContext.Emin + DefaultContext.prec = 24 + DefaultContext.Emax = 425000000 + DefaultContext.Emin = -425000000 + + self.synchro = threading.Event() + self.finish1 = threading.Event() + self.finish2 = threading.Event() + + th1 = threading.Thread(target=thfunc1, args=(self,)) + th2 = threading.Thread(target=thfunc2, args=(self,)) + + th1.start() + th2.start() + + self.finish1.wait() + self.finish2.wait() + + for sig in (Inexact, Overflow, Underflow, DivisionByZero, + InvalidOperation): + self.assertFalse(DefaultContext.flags[sig]) + + DefaultContext.prec = save_prec + DefaultContext.Emax = save_emax + DefaultContext.Emin = save_emin + return + +class DecimalUsabilityTest(unittest.TestCase): + '''Unit tests for Usability cases of Decimal.''' + + def test_comparison_operators(self): + + da = Decimal('23.42') + db = Decimal('23.42') + dc = Decimal('45') + + #two Decimals + self.assertGreater(dc, da) + self.assertGreaterEqual(dc, da) + self.assertLess(da, dc) + self.assertLessEqual(da, dc) + self.assertEqual(da, db) + self.assertNotEqual(da, dc) + self.assertLessEqual(da, db) + self.assertGreaterEqual(da, db) + + #a Decimal and an int + self.assertGreater(dc, 23) + self.assertLess(23, dc) + self.assertEqual(dc, 45) + + #a Decimal and uncomparable + self.assertNotEqual(da, 'ugly') + self.assertNotEqual(da, 32.7) + self.assertNotEqual(da, object()) + self.assertNotEqual(da, object) + + # sortable + a = list(map(Decimal, range(100))) + b = a[:] + random.shuffle(a) + a.sort() + self.assertEqual(a, b) + + def test_decimal_float_comparison(self): + def assert_attr(a, b, attr, context, signal=None): + context.clear_flags() + f = getattr(a, attr) + if HAVE_CDECIMAL: + if signal == FloatOperation: + self.assertRaises(signal, f, b) + else: + self.assertIs(f(b), True) + self.assertTrue(context.flags[FloatOperation]) + else: + self.assertIs(f(b), True) + + small_d = Decimal('0.25') + big_d = Decimal('3.0') + small_f = 0.25 + big_f = 3.0 + + zero_d = Decimal('0.0') + neg_zero_d = Decimal('-0.0') + zero_f = 0.0 + neg_zero_f = -0.0 + + inf_d = Decimal('Infinity') + neg_inf_d = Decimal('-Infinity') + inf_f = float('inf') + neg_inf_f = float('-inf') + + def doit(c, signal=None): + # Order + for attr in '__lt__', '__le__': + assert_attr(small_d, big_f, attr, c, signal) + + for attr in '__gt__', '__ge__': + assert_attr(big_d, small_f, attr, c, signal) + + # Equality + assert_attr(small_d, small_f, '__eq__', c, None) + + assert_attr(neg_zero_d, neg_zero_f, '__eq__', c, None) + assert_attr(neg_zero_d, zero_f, '__eq__', c, None) + + assert_attr(zero_d, neg_zero_f, '__eq__', c, None) + assert_attr(zero_d, zero_f, '__eq__', c, None) + + assert_attr(neg_inf_d, neg_inf_f, '__eq__', c, None) + assert_attr(inf_d, inf_f, '__eq__', c, None) + + # Inequality + assert_attr(small_d, big_f, '__ne__', c, None) + + assert_attr(Decimal('0.1'), 0.1, '__ne__', c, None) + + assert_attr(neg_inf_d, inf_f, '__ne__', c, None) + assert_attr(inf_d, neg_inf_f, '__ne__', c, None) + + assert_attr(Decimal('NaN'), float('nan'), '__ne__', c, None) + + def test_containers(c, signal): + c.clear_flags() + s = set([100.0, Decimal('100.0')]) + self.assertEqual(len(s), 1) + self.assertTrue(c.flags[FloatOperation]) + + c.clear_flags() + if signal: + self.assertRaises(signal, sorted, [1.0, Decimal('10.0')]) + else: + s = sorted([10.0, Decimal('10.0')]) + self.assertTrue(c.flags[FloatOperation]) + + c.clear_flags() + b = 10.0 in [Decimal('10.0'), 1.0] + self.assertTrue(c.flags[FloatOperation]) + + c.clear_flags() + b = 10.0 in {Decimal('10.0'):'a', 1.0:'b'} + self.assertTrue(c.flags[FloatOperation]) + + if HAVE_CDECIMAL: + nc = Context() + with localcontext(nc) as c: + sig = None + self.assertFalse(c.traps[FloatOperation]) + doit(c, signal=sig) + test_containers(c, sig) + + c.traps[FloatOperation] = True + doit(c, signal=FloatOperation) + test_containers(c, FloatOperation) + else: + # decimal.py does not have the FloatOperation signal. + nc = Context() + with localcontext(nc) as c: + doit(c, signal=False) + + def test_copy_and_deepcopy_methods(self): + d = Decimal('43.24') + c = copy.copy(d) + self.assertEqual(id(c), id(d)) + dc = copy.deepcopy(d) + self.assertEqual(id(dc), id(d)) + + def test_hash_method(self): + def hashit(d): + a = hash(d) + b = d.__hash__() + self.assertEqual(a, b) + return a + + #just that it's hashable + hashit(Decimal(23)) + hashit(Decimal('Infinity')) + hashit(Decimal('-Infinity')) + hashit(Decimal('nan123')) + hashit(Decimal('-NaN')) + + test_values = [Decimal(sign*(2**m + n)) + for m in [0, 14, 15, 16, 17, 30, 31, + 32, 33, 61, 62, 63, 64, 65, 66] + for n in range(-10, 10) + for sign in [-1, 1]] + test_values.extend([ + Decimal("-1"), # ==> -2 + 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), + # selection of values which fail with the old (before + # version 2.6) long.__hash__ + Decimal("1.634E100"), + Decimal("90.697E100"), + Decimal("188.83E100"), + Decimal("1652.9E100"), + Decimal("56531E100"), + ]) + + # check that hash(d) == hash(int(d)) for integral values + for value in test_values: + self.assertEqual(hashit(value), hashit(int(value))) + + #the same hash that to an int + self.assertEqual(hashit(Decimal(23)), hashit(23)) + self.assertRaises(TypeError, hash, Decimal('sNaN')) + self.assertTrue(hashit(Decimal('Inf'))) + self.assertTrue(hashit(Decimal('-Inf'))) + + # check that the hashes of a Decimal float match when they + # represent exactly the same values + test_strings = ['inf', '-Inf', '0.0', '-.0e1', + '34.0', '2.5', '112390.625', '-0.515625'] + for s in test_strings: + f = float(s) + d = Decimal(s) + self.assertEqual(hashit(f), hashit(d)) + + # 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 = hashit(x) + c.prec = 10 + h2 = hashit(x) + c.prec = 16 + h3 = hashit(x) + + self.assertEqual(h1, h2) + self.assertEqual(h1, h3) + c.prec = old_precision + + def test_min_and_max_methods(self): + + d1 = Decimal('15.32') + d2 = Decimal('28.5') + l1 = 15 + l2 = 28 + + #between Decimals + self.assertIs(min(d1,d2), d1) + self.assertIs(min(d2,d1), d1) + self.assertIs(max(d1,d2), d2) + self.assertIs(max(d2,d1), d2) + + #between Decimal and long + self.assertIs(min(d1,l2), d1) + self.assertIs(min(l2,d1), d1) + self.assertIs(max(l1,d2), d2) + self.assertIs(max(d2,l1), d2) + + def test_as_nonzero(self): + #as false + self.assertFalse(Decimal(0)) + #as true + self.assertTrue(Decimal('0.372')) + + def test_tostring_methods(self): + #Test str and repr methods. + + d = Decimal('15.32') + self.assertEqual(str(d), '15.32') # str + self.assertEqual(repr(d), "Decimal('15.32')") # repr + + def test_tonum_methods(self): + #Test float and int methods. + + d1 = Decimal('66') + d2 = Decimal('15.32') + + #int + self.assertEqual(int(d1), 66) + self.assertEqual(int(d2), 15) + + #float + self.assertEqual(float(d1), 66) + self.assertEqual(float(d2), 15.32) + + #floor + test_pairs = [ + ('123.00', 123), + ('3.2', 3), + ('3.54', 3), + ('3.899', 3), + ('-2.3', -3), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ] + for d, i in test_pairs: + self.assertEqual(math.floor(Decimal(d)), i) + self.assertRaises(ValueError, math.floor, Decimal('-NaN')) + self.assertRaises(ValueError, math.floor, Decimal('sNaN')) + self.assertRaises(ValueError, math.floor, Decimal('NaN123')) + self.assertRaises(OverflowError, math.floor, Decimal('Inf')) + self.assertRaises(OverflowError, math.floor, Decimal('-Inf')) + + #ceiling + test_pairs = [ + ('123.00', 123), + ('3.2', 4), + ('3.54', 4), + ('3.899', 4), + ('-2.3', -2), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ] + for d, i in test_pairs: + self.assertEqual(math.ceil(Decimal(d)), i) + self.assertRaises(ValueError, math.ceil, Decimal('-NaN')) + self.assertRaises(ValueError, math.ceil, Decimal('sNaN')) + self.assertRaises(ValueError, math.ceil, Decimal('NaN123')) + self.assertRaises(OverflowError, math.ceil, Decimal('Inf')) + self.assertRaises(OverflowError, math.ceil, Decimal('-Inf')) + + #round, single argument + test_pairs = [ + ('123.00', 123), + ('3.2', 3), + ('3.54', 4), + ('3.899', 4), + ('-2.3', -2), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ('-3.5', -4), + ('-2.5', -2), + ('-1.5', -2), + ('-0.5', 0), + ('0.5', 0), + ('1.5', 2), + ('2.5', 2), + ('3.5', 4), + ] + for d, i in test_pairs: + self.assertEqual(round(Decimal(d)), i) + self.assertRaises(ValueError, round, Decimal('-NaN')) + self.assertRaises(ValueError, round, Decimal('sNaN')) + self.assertRaises(ValueError, round, Decimal('NaN123')) + self.assertRaises(OverflowError, round, Decimal('Inf')) + self.assertRaises(OverflowError, round, Decimal('-Inf')) + + #round, two arguments; this is essentially equivalent + #to quantize, which is already extensively tested + test_triples = [ + ('123.456', -4, '0E+4'), + ('123.456', -3, '0E+3'), + ('123.456', -2, '1E+2'), + ('123.456', -1, '1.2E+2'), + ('123.456', 0, '123'), + ('123.456', 1, '123.5'), + ('123.456', 2, '123.46'), + ('123.456', 3, '123.456'), + ('123.456', 4, '123.4560'), + ('123.455', 2, '123.46'), + ('123.445', 2, '123.44'), + ('Inf', 4, 'NaN'), + ('-Inf', -23, 'NaN'), + ('sNaN314', 3, 'NaN314'), + ] + for d, n, r in test_triples: + self.assertEqual(str(round(Decimal(d), n)), r) + + + + def test_eval_round_trip(self): + + #with zero + d = Decimal( (0, (0,), 0) ) + self.assertEqual(d, eval(repr(d))) + + #int + d = Decimal( (1, (4, 5), 0) ) + self.assertEqual(d, eval(repr(d))) + + #float + d = Decimal( (0, (4, 5, 3, 4), -2) ) + self.assertEqual(d, eval(repr(d))) + + #weird + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(d, eval(repr(d))) + + def test_as_tuple(self): + + #with zero + d = Decimal(0) + self.assertEqual(d.as_tuple(), (0, (0,), 0) ) + + #int + d = Decimal(-45) + self.assertEqual(d.as_tuple(), (1, (4, 5), 0) ) + + #complicated string + d = Decimal("-4.34913534E-17") + self.assertEqual(d.as_tuple(), (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + + # XXX empty tuple, like in the NaN case + d = Decimal("Infinity") + if HAVE_CDECIMAL: + self.assertEqual(d.as_tuple(), (0, (), 'F') ) + else: + 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') ) + + # XXX coefficient in infinity should raise an error + if not HAVE_CDECIMAL: + 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. + # XXX Cdecimal: checked extensively in the library runtest. + if HAVE_CDECIMAL: return + + d1 = Decimal('-25e55') + b1 = Decimal('-25e55') + d2 = Decimal('33e+33') + b2 = Decimal('33e+33') + + def checkSameDec(operation, useOther=False): + if useOther: + eval("d1." + operation + "(d2)") + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + self.assertEqual(d2._sign, b2._sign) + self.assertEqual(d2._int, b2._int) + self.assertEqual(d2._exp, b2._exp) + else: + eval("d1." + operation + "()") + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + return + + Decimal(d1) + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + + checkSameDec("__abs__") + checkSameDec("__add__", True) + checkSameDec("__divmod__", True) + checkSameDec("__eq__", True) + checkSameDec("__ne__", True) + checkSameDec("__le__", True) + checkSameDec("__lt__", True) + checkSameDec("__ge__", True) + checkSameDec("__gt__", True) + checkSameDec("__float__") + checkSameDec("__floordiv__", True) + checkSameDec("__hash__") + checkSameDec("__int__") + checkSameDec("__trunc__") + checkSameDec("__mod__", True) + checkSameDec("__mul__", True) + checkSameDec("__neg__") + checkSameDec("__bool__") + checkSameDec("__pos__") + checkSameDec("__pow__", True) + checkSameDec("__radd__", True) + checkSameDec("__rdivmod__", True) + checkSameDec("__repr__") + checkSameDec("__rfloordiv__", True) + checkSameDec("__rmod__", True) + checkSameDec("__rmul__", True) + checkSameDec("__rpow__", True) + checkSameDec("__rsub__", True) + checkSameDec("__str__") + checkSameDec("__sub__", True) + checkSameDec("__truediv__", True) + checkSameDec("adjusted") + checkSameDec("as_tuple") + checkSameDec("compare", True) + checkSameDec("max", True) + checkSameDec("min", True) + checkSameDec("normalize") + checkSameDec("quantize", True) + checkSameDec("remainder_near", True) + checkSameDec("same_quantum", True) + checkSameDec("sqrt") + 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.assertIs(type(d), Decimal) + + d = d1.max(d2) + self.assertIs(type(d), Decimal) + + def test_implicit_context(self): + # Check results when context given implicitly. (Issue 2478) + c = getcontext() + self.assertEqual(str(Decimal(0).sqrt()), + str(c.sqrt(Decimal(0)))) + + def test_conversions_from_int(self): + # Check that methods taking a second Decimal argument will + # always accept an integer in place of a Decimal. + self.assertEqual(Decimal(4).compare(3), + Decimal(4).compare(Decimal(3))) + self.assertEqual(Decimal(4).compare_signal(3), + Decimal(4).compare_signal(Decimal(3))) + self.assertEqual(Decimal(4).compare_total(3), + Decimal(4).compare_total(Decimal(3))) + self.assertEqual(Decimal(4).compare_total_mag(3), + Decimal(4).compare_total_mag(Decimal(3))) + self.assertEqual(Decimal(10101).logical_and(1001), + Decimal(10101).logical_and(Decimal(1001))) + self.assertEqual(Decimal(10101).logical_or(1001), + Decimal(10101).logical_or(Decimal(1001))) + self.assertEqual(Decimal(10101).logical_xor(1001), + Decimal(10101).logical_xor(Decimal(1001))) + self.assertEqual(Decimal(567).max(123), + Decimal(567).max(Decimal(123))) + self.assertEqual(Decimal(567).max_mag(123), + Decimal(567).max_mag(Decimal(123))) + self.assertEqual(Decimal(567).min(123), + Decimal(567).min(Decimal(123))) + self.assertEqual(Decimal(567).min_mag(123), + Decimal(567).min_mag(Decimal(123))) + self.assertEqual(Decimal(567).next_toward(123), + Decimal(567).next_toward(Decimal(123))) + self.assertEqual(Decimal(1234).quantize(100), + Decimal(1234).quantize(Decimal(100))) + self.assertEqual(Decimal(768).remainder_near(1234), + Decimal(768).remainder_near(Decimal(1234))) + self.assertEqual(Decimal(123).rotate(1), + Decimal(123).rotate(Decimal(1))) + self.assertEqual(Decimal(1234).same_quantum(1000), + Decimal(1234).same_quantum(Decimal(1000))) + self.assertEqual(Decimal('9.123').scaleb(-100), + Decimal('9.123').scaleb(Decimal(-100))) + self.assertEqual(Decimal(456).shift(-1), + Decimal(456).shift(Decimal(-1))) + + self.assertEqual(Decimal(-12).fma(Decimal(45), 67), + Decimal(-12).fma(Decimal(45), Decimal(67))) + self.assertEqual(Decimal(-12).fma(45, 67), + Decimal(-12).fma(Decimal(45), Decimal(67))) + self.assertEqual(Decimal(-12).fma(45, Decimal(67)), + Decimal(-12).fma(Decimal(45), Decimal(67))) + + +class DecimalPythonAPItests(unittest.TestCase): + + def test_abc(self): + self.assertTrue(issubclass(Decimal, numbers.Number)) + self.assertTrue(not issubclass(Decimal, numbers.Real)) + self.assertIsInstance(Decimal(0), numbers.Number) + self.assertNotIsInstance(Decimal(0), numbers.Real) + + def test_pickle(self): + d = Decimal('-3.141590000') + p = pickle.dumps(d) + e = pickle.loads(p) + self.assertEqual(d, e) + + def test_int(self): + for x in range(-250, 250): + s = '%0.2f' % (x / 100.0) + # should work the same as for floats + self.assertEqual(int(Decimal(s)), int(float(s))) + # should work the same as to_integral in the ROUND_DOWN mode + d = Decimal(s) + r = d.to_integral(ROUND_DOWN) + self.assertEqual(Decimal(int(d)), r) + + self.assertRaises(ValueError, int, Decimal('-nan')) + self.assertRaises(ValueError, int, Decimal('snan')) + self.assertRaises(OverflowError, int, Decimal('inf')) + self.assertRaises(OverflowError, int, Decimal('-inf')) + + def test_trunc(self): + for x in range(-250, 250): + s = '%0.2f' % (x / 100.0) + # should work the same as for floats + self.assertEqual(int(Decimal(s)), int(float(s))) + # should work the same as to_integral in the ROUND_DOWN mode + d = Decimal(s) + r = d.to_integral(ROUND_DOWN) + self.assertEqual(Decimal(math.trunc(d)), r) + + def test_from_float(self): + + class MyDecimal(Decimal): + pass + + r = MyDecimal.from_float(0.1) + self.assertEqual(type(r), MyDecimal) + self.assertEqual(str(r), + '0.1000000000000000055511151231257827021181583404541015625') + bigint = 12345678901234567890123456789 + self.assertEqual(MyDecimal.from_float(bigint), MyDecimal(bigint)) + self.assertTrue(MyDecimal.from_float(float('nan')).is_qnan()) + self.assertTrue(MyDecimal.from_float(float('inf')).is_infinite()) + self.assertTrue(MyDecimal.from_float(float('-inf')).is_infinite()) + self.assertEqual(str(MyDecimal.from_float(float('nan'))), + str(Decimal('NaN'))) + self.assertEqual(str(MyDecimal.from_float(float('inf'))), + str(Decimal('Infinity'))) + self.assertEqual(str(MyDecimal.from_float(float('-inf'))), + str(Decimal('-Infinity'))) + self.assertRaises(TypeError, MyDecimal.from_float, 'abc') + for i in range(200): + x = random.expovariate(0.01) * (random.random() * 2.0 - 1.0) + self.assertEqual(x, float(MyDecimal.from_float(x))) # roundtrip + + def test_create_decimal_from_float(self): + context = Context(prec=5, rounding=ROUND_DOWN) + self.assertEqual( + context.create_decimal_from_float(math.pi), + Decimal('3.1415') + ) + context = Context(prec=5, rounding=ROUND_UP) + self.assertEqual( + context.create_decimal_from_float(math.pi), + Decimal('3.1416') + ) + context = Context(prec=5, traps=[Inexact]) + self.assertRaises( + Inexact, + context.create_decimal_from_float, + math.pi + ) + self.assertEqual(repr(context.create_decimal_from_float(-0.0)), + "Decimal('-0')") + self.assertEqual(repr(context.create_decimal_from_float(1.0)), + "Decimal('1')") + self.assertEqual(repr(context.create_decimal_from_float(10)), + "Decimal('10')") + + def test_quantize(self): + c = Context(Emax=99999, Emin=-99999) + self.assertEqual( + Decimal('7.335').quantize(Decimal('.01')), + Decimal('7.34') + ) + self.assertEqual( + Decimal('7.335').quantize(Decimal('.01'), rounding=ROUND_DOWN), + Decimal('7.33') + ) + self.assertRaises( + InvalidOperation, + Decimal("10e99999").quantize, Decimal('1e100000'), context=c + ) + if HAVE_CDECIMAL: + self.assertRaises( + TypeError, + Decimal("1.23456789").quantize, Decimal('1e-100000'), [] + ) + self.assertRaises( + TypeError, + Decimal("1.23456789").quantize, Decimal('1e-100000'), c + ) + self.assertRaises( + ValueError, + Decimal("1.23456789").quantize, Decimal('1e-100000'), 10 + ) + self.assertRaises( + TypeError, + Decimal("1.23456789").quantize, Decimal('1e-100000'), ROUND_UP, 1000 + ) + +class ContextAPItests(unittest.TestCase): + + def test_pickle(self): + c = Context() + e = pickle.loads(pickle.dumps(c)) + if HAVE_CDECIMAL: # XXX + self.assertEqual(c.prec, e.prec) + self.assertEqual(c.Emin, e.Emin) + self.assertEqual(c.Emax, e.Emax) + self.assertEqual(c.rounding, e.rounding) + self.assertEqual(c.capitals, e.capitals) + self.assertEqual(c.traps, e.traps) + self.assertEqual(c.flags, e.flags) + self.assertEqual(c._clamp, e._clamp) + else: + for k in vars(c): + v1 = vars(c)[k] + v2 = vars(e)[k] + self.assertEqual(v1, v2) + + def test_equality_with_other_types(self): + self.assertIn(Decimal(10), ['a', 1.0, Decimal(10), (1,2), {}]) + self.assertNotIn(Decimal(10), ['a', 1.0, (1,2), {}]) + + def test_copy(self): + # All copies should be deep + c = Context() + d = c.copy() + self.assertNotEqual(id(c), id(d)) + self.assertNotEqual(id(c.flags), id(d.flags)) + self.assertNotEqual(id(c.traps), id(d.traps)) + self.assertEqual(c.flags, d.flags) + + def test_abs(self): + c = Context() + d = c.abs(Decimal(-1)) + self.assertEqual(c.abs(-1), d) + self.assertRaises(TypeError, c.abs, '-1') + + def test_add(self): + c = Context() + d = c.add(Decimal(1), Decimal(1)) + self.assertEqual(c.add(1, 1), d) + self.assertEqual(c.add(Decimal(1), 1), d) + self.assertEqual(c.add(1, Decimal(1)), d) + self.assertRaises(TypeError, c.add, '1', 1) + self.assertRaises(TypeError, c.add, 1, '1') + + def test_compare(self): + c = Context() + d = c.compare(Decimal(1), Decimal(1)) + self.assertEqual(c.compare(1, 1), d) + self.assertEqual(c.compare(Decimal(1), 1), d) + self.assertEqual(c.compare(1, Decimal(1)), d) + self.assertRaises(TypeError, c.compare, '1', 1) + self.assertRaises(TypeError, c.compare, 1, '1') + + def test_compare_signal(self): + c = Context() + d = c.compare_signal(Decimal(1), Decimal(1)) + self.assertEqual(c.compare_signal(1, 1), d) + self.assertEqual(c.compare_signal(Decimal(1), 1), d) + self.assertEqual(c.compare_signal(1, Decimal(1)), d) + self.assertRaises(TypeError, c.compare_signal, '1', 1) + self.assertRaises(TypeError, c.compare_signal, 1, '1') + + def test_compare_total(self): + c = Context() + d = c.compare_total(Decimal(1), Decimal(1)) + self.assertEqual(c.compare_total(1, 1), d) + self.assertEqual(c.compare_total(Decimal(1), 1), d) + self.assertEqual(c.compare_total(1, Decimal(1)), d) + self.assertRaises(TypeError, c.compare_total, '1', 1) + self.assertRaises(TypeError, c.compare_total, 1, '1') + + def test_compare_total_mag(self): + c = Context() + d = c.compare_total_mag(Decimal(1), Decimal(1)) + self.assertEqual(c.compare_total_mag(1, 1), d) + self.assertEqual(c.compare_total_mag(Decimal(1), 1), d) + self.assertEqual(c.compare_total_mag(1, Decimal(1)), d) + self.assertRaises(TypeError, c.compare_total_mag, '1', 1) + self.assertRaises(TypeError, c.compare_total_mag, 1, '1') + + def test_copy_abs(self): + c = Context() + d = c.copy_abs(Decimal(-1)) + self.assertEqual(c.copy_abs(-1), d) + self.assertRaises(TypeError, c.copy_abs, '-1') + + def test_copy_decimal(self): + c = Context() + d = c.copy_decimal(Decimal(-1)) + self.assertEqual(c.copy_decimal(-1), d) + self.assertRaises(TypeError, c.copy_decimal, '-1') + + def test_copy_negate(self): + c = Context() + d = c.copy_negate(Decimal(-1)) + self.assertEqual(c.copy_negate(-1), d) + self.assertRaises(TypeError, c.copy_negate, '-1') + + def test_copy_sign(self): + c = Context() + d = c.copy_sign(Decimal(1), Decimal(-2)) + self.assertEqual(c.copy_sign(1, -2), d) + self.assertEqual(c.copy_sign(Decimal(1), -2), d) + self.assertEqual(c.copy_sign(1, Decimal(-2)), d) + self.assertRaises(TypeError, c.copy_sign, '1', -2) + self.assertRaises(TypeError, c.copy_sign, 1, '-2') + + def test_divide(self): + c = Context() + d = c.divide(Decimal(1), Decimal(2)) + self.assertEqual(c.divide(1, 2), d) + self.assertEqual(c.divide(Decimal(1), 2), d) + self.assertEqual(c.divide(1, Decimal(2)), d) + self.assertRaises(TypeError, c.divide, '1', 2) + self.assertRaises(TypeError, c.divide, 1, '2') + + def test_divide_int(self): + c = Context() + d = c.divide_int(Decimal(1), Decimal(2)) + self.assertEqual(c.divide_int(1, 2), d) + self.assertEqual(c.divide_int(Decimal(1), 2), d) + self.assertEqual(c.divide_int(1, Decimal(2)), d) + self.assertRaises(TypeError, c.divide_int, '1', 2) + self.assertRaises(TypeError, c.divide_int, 1, '2') + + def test_divmod(self): + c = Context() + d = c.divmod(Decimal(1), Decimal(2)) + self.assertEqual(c.divmod(1, 2), d) + self.assertEqual(c.divmod(Decimal(1), 2), d) + self.assertEqual(c.divmod(1, Decimal(2)), d) + self.assertRaises(TypeError, c.divmod, '1', 2) + self.assertRaises(TypeError, c.divmod, 1, '2') + + def test_exp(self): + c = Context() + d = c.exp(Decimal(10)) + self.assertEqual(c.exp(10), d) + self.assertRaises(TypeError, c.exp, '10') + + def test_fma(self): + c = Context() + d = c.fma(Decimal(2), Decimal(3), Decimal(4)) + self.assertEqual(c.fma(2, 3, 4), d) + self.assertEqual(c.fma(Decimal(2), 3, 4), d) + self.assertEqual(c.fma(2, Decimal(3), 4), d) + self.assertEqual(c.fma(2, 3, Decimal(4)), d) + self.assertEqual(c.fma(Decimal(2), Decimal(3), 4), d) + self.assertRaises(TypeError, c.fma, '2', 3, 4) + self.assertRaises(TypeError, c.fma, 2, '3', 4) + self.assertRaises(TypeError, c.fma, 2, 3, '4') + + def test_is_finite(self): + c = Context() + d = c.is_finite(Decimal(10)) + self.assertEqual(c.is_finite(10), d) + self.assertRaises(TypeError, c.is_finite, '10') + + def test_is_infinite(self): + c = Context() + d = c.is_infinite(Decimal(10)) + self.assertEqual(c.is_infinite(10), d) + self.assertRaises(TypeError, c.is_infinite, '10') + + def test_is_nan(self): + c = Context() + d = c.is_nan(Decimal(10)) + self.assertEqual(c.is_nan(10), d) + self.assertRaises(TypeError, c.is_nan, '10') + + def test_is_normal(self): + c = Context() + d = c.is_normal(Decimal(10)) + self.assertEqual(c.is_normal(10), d) + self.assertRaises(TypeError, c.is_normal, '10') + + def test_is_qnan(self): + c = Context() + d = c.is_qnan(Decimal(10)) + self.assertEqual(c.is_qnan(10), d) + self.assertRaises(TypeError, c.is_qnan, '10') + + def test_is_signed(self): + c = Context() + d = c.is_signed(Decimal(10)) + self.assertEqual(c.is_signed(10), d) + self.assertRaises(TypeError, c.is_signed, '10') + + def test_is_snan(self): + c = Context() + d = c.is_snan(Decimal(10)) + self.assertEqual(c.is_snan(10), d) + self.assertRaises(TypeError, c.is_snan, '10') + + def test_is_subnormal(self): + c = Context() + d = c.is_subnormal(Decimal(10)) + self.assertEqual(c.is_subnormal(10), d) + self.assertRaises(TypeError, c.is_subnormal, '10') + + def test_is_zero(self): + c = Context() + d = c.is_zero(Decimal(10)) + self.assertEqual(c.is_zero(10), d) + self.assertRaises(TypeError, c.is_zero, '10') + + def test_ln(self): + c = Context() + d = c.ln(Decimal(10)) + self.assertEqual(c.ln(10), d) + self.assertRaises(TypeError, c.ln, '10') + + def test_log10(self): + c = Context() + d = c.log10(Decimal(10)) + self.assertEqual(c.log10(10), d) + self.assertRaises(TypeError, c.log10, '10') + + def test_logb(self): + c = Context() + d = c.logb(Decimal(10)) + self.assertEqual(c.logb(10), d) + self.assertRaises(TypeError, c.logb, '10') + + def test_logical_and(self): + c = Context() + d = c.logical_and(Decimal(1), Decimal(1)) + self.assertEqual(c.logical_and(1, 1), d) + self.assertEqual(c.logical_and(Decimal(1), 1), d) + self.assertEqual(c.logical_and(1, Decimal(1)), d) + self.assertRaises(TypeError, c.logical_and, '1', 1) + self.assertRaises(TypeError, c.logical_and, 1, '1') + + def test_logical_invert(self): + c = Context() + d = c.logical_invert(Decimal(1000)) + self.assertEqual(c.logical_invert(1000), d) + self.assertRaises(TypeError, c.logical_invert, '1000') + + def test_logical_or(self): + c = Context() + d = c.logical_or(Decimal(1), Decimal(1)) + self.assertEqual(c.logical_or(1, 1), d) + self.assertEqual(c.logical_or(Decimal(1), 1), d) + self.assertEqual(c.logical_or(1, Decimal(1)), d) + self.assertRaises(TypeError, c.logical_or, '1', 1) + self.assertRaises(TypeError, c.logical_or, 1, '1') + + def test_logical_xor(self): + c = Context() + d = c.logical_xor(Decimal(1), Decimal(1)) + self.assertEqual(c.logical_xor(1, 1), d) + self.assertEqual(c.logical_xor(Decimal(1), 1), d) + self.assertEqual(c.logical_xor(1, Decimal(1)), d) + self.assertRaises(TypeError, c.logical_xor, '1', 1) + self.assertRaises(TypeError, c.logical_xor, 1, '1') + + def test_max(self): + c = Context() + d = c.max(Decimal(1), Decimal(2)) + self.assertEqual(c.max(1, 2), d) + self.assertEqual(c.max(Decimal(1), 2), d) + self.assertEqual(c.max(1, Decimal(2)), d) + self.assertRaises(TypeError, c.max, '1', 2) + self.assertRaises(TypeError, c.max, 1, '2') + + def test_max_mag(self): + c = Context() + d = c.max_mag(Decimal(1), Decimal(2)) + self.assertEqual(c.max_mag(1, 2), d) + self.assertEqual(c.max_mag(Decimal(1), 2), d) + self.assertEqual(c.max_mag(1, Decimal(2)), d) + self.assertRaises(TypeError, c.max_mag, '1', 2) + self.assertRaises(TypeError, c.max_mag, 1, '2') + + def test_min(self): + c = Context() + d = c.min(Decimal(1), Decimal(2)) + self.assertEqual(c.min(1, 2), d) + self.assertEqual(c.min(Decimal(1), 2), d) + self.assertEqual(c.min(1, Decimal(2)), d) + self.assertRaises(TypeError, c.min, '1', 2) + self.assertRaises(TypeError, c.min, 1, '2') + + def test_min_mag(self): + c = Context() + d = c.min_mag(Decimal(1), Decimal(2)) + self.assertEqual(c.min_mag(1, 2), d) + self.assertEqual(c.min_mag(Decimal(1), 2), d) + self.assertEqual(c.min_mag(1, Decimal(2)), d) + self.assertRaises(TypeError, c.min_mag, '1', 2) + self.assertRaises(TypeError, c.min_mag, 1, '2') + + def test_minus(self): + c = Context() + d = c.minus(Decimal(10)) + self.assertEqual(c.minus(10), d) + self.assertRaises(TypeError, c.minus, '10') + + def test_multiply(self): + c = Context() + d = c.multiply(Decimal(1), Decimal(2)) + self.assertEqual(c.multiply(1, 2), d) + self.assertEqual(c.multiply(Decimal(1), 2), d) + self.assertEqual(c.multiply(1, Decimal(2)), d) + self.assertRaises(TypeError, c.multiply, '1', 2) + self.assertRaises(TypeError, c.multiply, 1, '2') + + def test_next_minus(self): + c = Context() + d = c.next_minus(Decimal(10)) + self.assertEqual(c.next_minus(10), d) + self.assertRaises(TypeError, c.next_minus, '10') + + def test_next_plus(self): + c = Context() + d = c.next_plus(Decimal(10)) + self.assertEqual(c.next_plus(10), d) + self.assertRaises(TypeError, c.next_plus, '10') + + def test_next_toward(self): + c = Context() + d = c.next_toward(Decimal(1), Decimal(2)) + self.assertEqual(c.next_toward(1, 2), d) + self.assertEqual(c.next_toward(Decimal(1), 2), d) + self.assertEqual(c.next_toward(1, Decimal(2)), d) + self.assertRaises(TypeError, c.next_toward, '1', 2) + self.assertRaises(TypeError, c.next_toward, 1, '2') + + def test_normalize(self): + c = Context() + d = c.normalize(Decimal(10)) + self.assertEqual(c.normalize(10), d) + self.assertRaises(TypeError, c.normalize, '10') + + def test_number_class(self): + c = Context() + self.assertEqual(c.number_class(123), c.number_class(Decimal(123))) + self.assertEqual(c.number_class(0), c.number_class(Decimal(0))) + self.assertEqual(c.number_class(-45), c.number_class(Decimal(-45))) + + def test_powmod(self): + if not HAVE_CDECIMAL: + return + c = Context() + d = c.powmod(Decimal(1), Decimal(4), Decimal(2)) + self.assertEqual(c.powmod(1, 4, 2), d) + self.assertEqual(c.powmod(Decimal(1), 4, 2), d) + self.assertEqual(c.powmod(1, Decimal(4), 2), d) + self.assertEqual(c.powmod(1, 4, Decimal(2)), d) + self.assertEqual(c.powmod(Decimal(1), Decimal(4), 2), d) + self.assertRaises(TypeError, c.powmod, '1', 4, 2) + self.assertRaises(TypeError, c.powmod, 1, '4', 2) + self.assertRaises(TypeError, c.powmod, 1, 4, '2') + + def test_plus(self): + c = Context() + d = c.plus(Decimal(10)) + self.assertEqual(c.plus(10), d) + self.assertRaises(TypeError, c.plus, '10') + + def test_quantize(self): + c = Context() + d = c.quantize(Decimal(1), Decimal(2)) + self.assertEqual(c.quantize(1, 2), d) + self.assertEqual(c.quantize(Decimal(1), 2), d) + self.assertEqual(c.quantize(1, Decimal(2)), d) + self.assertRaises(TypeError, c.quantize, '1', 2) + self.assertRaises(TypeError, c.quantize, 1, '2') + + def test_remainder(self): + c = Context() + d = c.remainder(Decimal(1), Decimal(2)) + self.assertEqual(c.remainder(1, 2), d) + self.assertEqual(c.remainder(Decimal(1), 2), d) + self.assertEqual(c.remainder(1, Decimal(2)), d) + self.assertRaises(TypeError, c.remainder, '1', 2) + self.assertRaises(TypeError, c.remainder, 1, '2') + + def test_remainder_near(self): + c = Context() + d = c.remainder_near(Decimal(1), Decimal(2)) + self.assertEqual(c.remainder_near(1, 2), d) + self.assertEqual(c.remainder_near(Decimal(1), 2), d) + self.assertEqual(c.remainder_near(1, Decimal(2)), d) + self.assertRaises(TypeError, c.remainder_near, '1', 2) + self.assertRaises(TypeError, c.remainder_near, 1, '2') + + def test_rotate(self): + c = Context() + d = c.rotate(Decimal(1), Decimal(2)) + self.assertEqual(c.rotate(1, 2), d) + self.assertEqual(c.rotate(Decimal(1), 2), d) + self.assertEqual(c.rotate(1, Decimal(2)), d) + self.assertRaises(TypeError, c.rotate, '1', 2) + self.assertRaises(TypeError, c.rotate, 1, '2') + + def test_sqrt(self): + c = Context() + d = c.sqrt(Decimal(10)) + self.assertEqual(c.sqrt(10), d) + self.assertRaises(TypeError, c.sqrt, '10') + + def test_same_quantum(self): + c = Context() + d = c.same_quantum(Decimal(1), Decimal(2)) + self.assertEqual(c.same_quantum(1, 2), d) + self.assertEqual(c.same_quantum(Decimal(1), 2), d) + self.assertEqual(c.same_quantum(1, Decimal(2)), d) + self.assertRaises(TypeError, c.same_quantum, '1', 2) + self.assertRaises(TypeError, c.same_quantum, 1, '2') + + def test_scaleb(self): + c = Context() + d = c.scaleb(Decimal(1), Decimal(2)) + self.assertEqual(c.scaleb(1, 2), d) + self.assertEqual(c.scaleb(Decimal(1), 2), d) + self.assertEqual(c.scaleb(1, Decimal(2)), d) + self.assertRaises(TypeError, c.scaleb, '1', 2) + self.assertRaises(TypeError, c.scaleb, 1, '2') + + def test_shift(self): + c = Context() + d = c.shift(Decimal(1), Decimal(2)) + self.assertEqual(c.shift(1, 2), d) + self.assertEqual(c.shift(Decimal(1), 2), d) + self.assertEqual(c.shift(1, Decimal(2)), d) + self.assertRaises(TypeError, c.shift, '1', 2) + self.assertRaises(TypeError, c.shift, 1, '2') + + def test_subtract(self): + c = Context() + d = c.subtract(Decimal(1), Decimal(2)) + self.assertEqual(c.subtract(1, 2), d) + self.assertEqual(c.subtract(Decimal(1), 2), d) + self.assertEqual(c.subtract(1, Decimal(2)), d) + self.assertRaises(TypeError, c.subtract, '1', 2) + self.assertRaises(TypeError, c.subtract, 1, '2') + + def test_to_eng_string(self): + c = Context() + d = c.to_eng_string(Decimal(10)) + self.assertEqual(c.to_eng_string(10), d) + self.assertRaises(TypeError, c.to_eng_string, '10') + + def test_to_sci_string(self): + c = Context() + d = c.to_sci_string(Decimal(10)) + self.assertEqual(c.to_sci_string(10), d) + self.assertRaises(TypeError, c.to_sci_string, '10') + + def test_to_integral_exact(self): + c = Context() + d = c.to_integral_exact(Decimal(10)) + self.assertEqual(c.to_integral_exact(10), d) + self.assertRaises(TypeError, c.to_integral_exact, '10') + + def test_to_integral_value(self): + c = Context() + d = c.to_integral_value(Decimal(10)) + self.assertEqual(c.to_integral_value(10), d) + self.assertRaises(TypeError, c.to_integral_value, '10') + self.assertRaises(TypeError, c.to_integral_value, 10, 'x') + +class WithStatementTest(unittest.TestCase): + # Can't do these as docstrings until Python 2.6 + # as doctest can't handle __future__ statements + + def test_localcontext(self): + # Use a copy of the current context in the block + orig_ctx = getcontext() + with localcontext() as enter_ctx: + set_ctx = getcontext() + final_ctx = getcontext() + self.assertIs(orig_ctx, final_ctx, 'did not restore context correctly') + self.assertIsNot(orig_ctx, set_ctx, 'did not copy the context') + self.assertIs(set_ctx, enter_ctx, '__enter__ returned wrong context') + + def test_localcontextarg(self): + # Use a copy of the supplied context in the block + orig_ctx = getcontext() + new_ctx = Context(prec=42) + with localcontext(new_ctx) as enter_ctx: + set_ctx = getcontext() + final_ctx = getcontext() + self.assertIs(orig_ctx, final_ctx, 'did not restore context correctly') + self.assertEqual(set_ctx.prec, new_ctx.prec, 'did not set correct context') + self.assertIsNot(new_ctx, set_ctx, 'did not copy the context') + self.assertIs(set_ctx, enter_ctx, '__enter__ returned wrong context') + + def test_nested_with_statements(self): + # Use a copy of the supplied context in the block + orig_ctx = getcontext() + orig_ctx.clear_flags() + new_ctx = Context(Emax=384) + with localcontext() as c1: + self.assertEqual(c1.flags, orig_ctx.flags) + self.assertEqual(c1.traps, orig_ctx.traps) + c1.traps[Clamped] = True + c1.Emin = -383 + self.assertRaises(Clamped, c1.create_decimal, '0e-999') + self.assertTrue(c1.flags[Clamped]) + with localcontext(new_ctx) as c2: + self.assertEqual(c2.flags, new_ctx.flags) + self.assertEqual(c2.traps, new_ctx.traps) + self.assertRaises(Overflow, c2.power, Decimal('3.4e200'), 2) + self.assertFalse(c2.flags[Clamped]) + self.assertTrue(c2.flags[Overflow]) + del c2 + self.assertFalse(c1.flags[Overflow]) + del c1 + self.assertNotEqual(orig_ctx.Emin, -383) + self.assertFalse(orig_ctx.flags[Clamped]) + self.assertFalse(orig_ctx.flags[Overflow]) + self.assertFalse(new_ctx.flags[Clamped]) + self.assertFalse(new_ctx.flags[Overflow]) + + def test_with_statements_gc1(self): + with localcontext() as c1: + del c1 + with localcontext() as c2: + del c2 + with localcontext() as c3: + del c3 + with localcontext() as c4: + del c4 + + def test_with_statements_gc2(self): + with localcontext() as c1: + with localcontext(c1) as c2: + del c1 + with localcontext(c2) as c3: + del c2 + with localcontext(c3) as c4: + del c3 + del c4 + + def test_with_statements_gc3(self): + with localcontext() as c1: + del c1 + n1 = Context(prec=1) + setcontext(n1) + with localcontext(n1) as c2: + del n1 + self.assertEqual(c2.prec, 1) + del c2 + n2 = Context(prec=2) + setcontext(n2) + del n2 + self.assertEqual(getcontext().prec, 2) + n3 = Context(prec=3) + setcontext(n3) + self.assertEqual(getcontext().prec, 3) + with localcontext(n3) as c3: + del n3 + self.assertEqual(c3.prec, 3) + del c3 + n4 = Context(prec=4) + setcontext(n4) + del n4 + self.assertEqual(getcontext().prec, 4) + with localcontext() as c4: + self.assertEqual(c4.prec, 4) + del c4 + +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 = -425000000, Emax = 425000000, + rounding=ROUND_HALF_EVEN, traps=[], flags=[]) + + # operations that raise various flags, in the form (function, arglist) + operations = [ + (context._apply, [Decimal("100E-425000010")]), + (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: + raise_error(context, flag) # XXX + 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(key=id) + + # flags we actually got + new_flags = [k for k,v in context.flags.items() if v] + new_flags.sort(key=id) + + 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_float_operation(self): + if not HAVE_CDECIMAL: + return + context = Context() + self.assertFalse(context.flags[FloatOperation]) + self.assertFalse(context.traps[FloatOperation]) + self.assertFalse(context._flags&DecFloatOperation) + self.assertFalse(context._traps&DecFloatOperation) + + context.settraps([Inexact, FloatOperation]) + self.assertEqual(context._traps, DecInexact|DecFloatOperation) + self.assertTrue(context.traps[FloatOperation]) + self.assertTrue(context.traps[Inexact]) + +class SpecialContexts(unittest.TestCase): + def test_context_templates(self): + if HAVE_CDECIMAL: + self.assertEqual( + BasicContext._traps, + DecIEEEInvalidOperation|DecDivisionByZero|DecOverflow| + DecUnderflow|DecClamped + ) + + basic_context_prec = BasicContext.prec + extended_context_prec = ExtendedContext.prec + + BasicContext.prec = ExtendedContext.prec = 441 + + for template in BasicContext, ExtendedContext: + setcontext(template) + c = getcontext() + self.assertIsNot(c, template) + self.assertEqual(c.prec, 441) + + BasicContext.prec = basic_context_prec + ExtendedContext.prec = extended_context_prec + + def test_default_context(self): + if HAVE_CDECIMAL: + self.assertEqual( + DefaultContext._traps, + DecIEEEInvalidOperation|DecDivisionByZero|DecOverflow + ) + + default_context_prec = DefaultContext.prec + + c = getcontext() + saveprec = c.prec + + DefaultContext.prec = 961 + c = getcontext() + self.assertEqual(c.prec, saveprec) + + setcontext(DefaultContext) + c = getcontext() + self.assertIsNot(c, DefaultContext) + self.assertEqual(c.prec, 961) + + DefaultContext.prec = default_context_prec + + def test_ieee_context(self): + if not HAVE_CDECIMAL: + return + + def assert_rest(self, context): + self.assertEqual(context.clamp, 1) + for v in context.traps.values(): + self.assertFalse(v) + for v in context.flags.values(): + self.assertFalse(v) + + c = IEEEContext(DECIMAL32) + self.assertEqual(c.prec, 7) + self.assertEqual(c.Emax, 96) + self.assertEqual(c.Emin, -95) + assert_rest(self, c) + + c = IEEEContext(DECIMAL64) + self.assertEqual(c.prec, 16) + self.assertEqual(c.Emax, 384) + self.assertEqual(c.Emin, -383) + assert_rest(self, c) + + c = IEEEContext(DECIMAL128) + self.assertEqual(c.prec, 34) + self.assertEqual(c.Emax, 6144) + self.assertEqual(c.Emin, -6143) + assert_rest(self, c) + + # Invalid values + self.assertRaises(OverflowError, IEEEContext, 2**63) + self.assertRaises(ValueError, IEEEContext, -1) + self.assertRaises(ValueError, IEEEContext, 1024) + +class Coverage(unittest.TestCase): + + def test_invalid_context(self): + if not HAVE_CDECIMAL: + return + + c = DefaultContext.copy() + + int_max = 2**63-1 if HAVE_CONFIG_64 else 2**31-1 + gt_max_emax = 10**18 if HAVE_CONFIG_64 else 10**9 + + # OverflowError, general ValueError + for attr in ('prec', 'rounding', 'Emin', 'Emax', 'capitals', 'clamp', + '_flags', '_traps', '_allcr'): + self.assertRaises(OverflowError, setattr, c, attr, int_max+1) + self.assertRaises(OverflowError, setattr, c, attr, -int_max-2) + if sys.platform != 'win32': + self.assertRaises(ValueError, setattr, c, attr, int_max) + self.assertRaises(ValueError, setattr, c, attr, -int_max-1) + + # OverflowError: unsafe_prec, unsafe_emin, unsafe_emax + self.assertRaises(OverflowError, getattr(c, 'unsafe_setprec'), int_max+1) + self.assertRaises(OverflowError, getattr(c, 'unsafe_setemax'), int_max+1) + self.assertRaises(OverflowError, getattr(c, 'unsafe_setemin'), -int_max-2) + + # Specific: prec, Emax + for attr in ['prec', 'Emax']: + setattr(c, attr, 999999) + self.assertEqual(getattr(c, attr), 999999) + self.assertRaises(ValueError, setattr, c, attr, -1) + self.assertRaises(ValueError, setattr, c, attr, gt_max_emax) + self.assertRaises(TypeError, setattr, c, attr, 'xyz') + + # Specific: Emin + setattr(c, 'Emin', -999999) + self.assertEqual(getattr(c, 'Emin'), -999999) + self.assertRaises(ValueError, setattr, c, 'Emin', 1) + self.assertRaises(ValueError, setattr, c, 'Emin', -gt_max_emax) + self.assertRaises(TypeError, setattr, c, 'Emin', (1,2,3)) + + # Specific: rounding + self.assertRaises(ValueError, setattr, c, 'rounding', -1) + self.assertRaises(ValueError, setattr, c, 'rounding', 9) + self.assertRaises(TypeError, setattr, c, 'rounding', 1.0) + + # Specific: capitals, clamp, _allcr + for attr in ['capitals', 'clamp', '_allcr']: + self.assertRaises(ValueError, setattr, c, attr, -1) + self.assertRaises(ValueError, setattr, c, attr, 2) + self.assertRaises(TypeError, setattr, c, attr, [1,2,3]) + if HAVE_CONFIG_64: + self.assertRaises(ValueError, setattr, c, attr, 2**32) + self.assertRaises(ValueError, setattr, c, attr, 2**32+1) + + # Specific: _flags, _traps + for attr in ['_flags', '_traps']: + self.assertRaises(ValueError, setattr, c, attr, 999999) + self.assertRaises(TypeError, setattr, c, attr, 'x') + + # SignalDict + self.assertRaises(ValueError, c.flags.__setitem__, 801, 0) + self.assertRaises(ValueError, c.traps.__setitem__, 801, 0) + self.assertRaises(ValueError, c.flags.__delitem__, Overflow) + self.assertRaises(ValueError, c.traps.__delitem__, InvalidOperation) + self.assertRaises(TypeError, setattr, c, 'flags', ['x']) + self.assertRaises(TypeError, setattr, c,'traps', ['y']) + self.assertRaises(ValueError, setattr, c, 'flags', {0:1}) + self.assertRaises(ValueError, setattr, c, 'traps', {0:1}) + + self.assertRaises(ValueError, c.setflags, ['x']) + self.assertRaises(ValueError, c.settraps, ['y']) + self.assertRaises(TypeError, c.setflags, 'x') + self.assertRaises(TypeError, c.settraps, 'y') + + # SignalDict cannot be deleted + self.assertRaises(ValueError, c.__delattr__, 'flags') + self.assertRaises(ValueError, c.__delattr__, 'traps') + + # Invalid attributes + self.assertRaises(TypeError, getattr, c, 9) + self.assertRaises(TypeError, setattr, c, 9) + + # Invalid values in constructor + self.assertRaises(ValueError, Context, prec=gt_max_emax) + self.assertRaises(ValueError, Context, Emax=gt_max_emax) + self.assertRaises(ValueError, Context, Emin=-gt_max_emax) + self.assertRaises(ValueError, Context, rounding=999999) + self.assertRaises(ValueError, Context, clamp=2) + self.assertRaises(ValueError, Context, capitals=-1) + self.assertRaises(ValueError, Context, flags=["P"]) + self.assertRaises(ValueError, Context, traps=["Q"]) + self.assertRaises(ValueError, Context, _allcr=2) + + # Overflow in conversion + self.assertRaises(OverflowError, Context, prec=int_max+1) + self.assertRaises(OverflowError, Context, Emax=int_max+1) + self.assertRaises(OverflowError, Context, Emin=-int_max-2) + self.assertRaises(OverflowError, Context, rounding=int_max+1) + self.assertRaises(OverflowError, Context, clamp=int_max+1) + self.assertRaises(OverflowError, Context, capitals=int_max+1) + self.assertRaises(OverflowError, Context, _allcr=int_max+1) + + # Type error in conversion + self.assertRaises(TypeError, Context, flags=(0,1)) + self.assertRaises(TypeError, Context, traps=(1,0)) + + def test_context_repr(self): + if not HAVE_CDECIMAL: + return + + c = DefaultContext.copy() + + c.prec = 425000000 + c.Emax = 425000000 + c.Emin = -425000000 + c.rounding = ROUND_HALF_DOWN + c.capitals = 0 + c.clamp = 1 + for sig in OrderedSignals: + c.flags[sig] = True + c.traps[sig] = True + c.flags[FloatOperation] = True + c.traps[FloatOperation] = True + + s = c.__repr__() + t = "Context(prec=425000000, rounding=ROUND_HALF_DOWN, " \ + "Emin=-425000000, Emax=425000000, capitals=0, clamp=1, " \ + "flags=[Clamped, InvalidOperation, DivisionByZero, Inexact, " \ + "FloatOperation, Overflow, Rounded, Subnormal, Underflow], " \ + "traps=[Clamped, InvalidOperation, DivisionByZero, Inexact, " \ + "FloatOperation, Overflow, Rounded, Subnormal, Underflow])" + self.assertEqual(s, t) + + def test_valid_context(self): + if not HAVE_CDECIMAL: + return + + c = DefaultContext.copy() + + # Exercise all getters and setters + c.prec = 34 + c.rounding = ROUND_HALF_UP + c.Emax = 3000 + c.Emin = -3000 + c.capitals = 1 + c.clamp = 0 + c._flags = DecUnderflow + c._traps = DecClamped + c._allcr = 0 + + self.assertEqual(c.prec, 34) + self.assertEqual(c.rounding, ROUND_HALF_UP) + self.assertEqual(c.Emin, -3000) + self.assertEqual(c.Emax, 3000) + self.assertEqual(c.capitals, 1) + self.assertEqual(c.clamp, 0) + self.assertEqual(c._flags, DecUnderflow) + self.assertEqual(c._traps, DecClamped) + self.assertEqual(c._allcr, 0) + + self.assertEqual(c.Etiny(), -3033) + self.assertEqual(c.Etop(), 2967) + + # Set traps/flags from list + c.settraps([Clamped, Underflow]) + self.assertEqual(c._traps, DecClamped|DecUnderflow) + + c.setflags([Inexact, Rounded, Subnormal]) + self.assertEqual(c._flags, DecInexact|DecRounded|DecSubnormal) + + # Exercise all unsafe setters + c.unsafe_setprec(999999999) + c.unsafe_setemax(999999999) + c.unsafe_setemin(-999999999) + + self.assertEqual(c.prec, 999999999) + self.assertEqual(c.Emax, 999999999) + self.assertEqual(c.Emin, -999999999) + + def test_apply(self): + if not HAVE_CDECIMAL: + return + + with localcontext() as c: + c.prec = 5 + c.Emax = 99 + c.Emin = -99 + + d = c.copy() + d.prec = 4 + + x = Decimal("123456") + self.assertEqual(str(x.apply()), "1.2346E+5") + self.assertEqual(str(c.apply(x)), "1.2346E+5") + + self.assertEqual(str(x.apply(d)), "1.235E+5") + self.assertEqual(str(d.apply(x)), "1.235E+5") + + self.assertRaises(TypeError, x.apply, "p") + self.assertRaises(TypeError, x.apply, "p", "q") + self.assertRaises(TypeError, c.apply, "p") + + def test_integral(self): + if HAVE_CDECIMAL: + x = Decimal(10) + self.assertEqual(x.to_integral(), 10) + self.assertRaises(TypeError, x.to_integral, '10') + self.assertRaises(TypeError, x.to_integral, 10, 'x') + self.assertRaises(ValueError, x.to_integral, 10) + + self.assertEqual(x.to_integral_value(), 10) + self.assertRaises(TypeError, x.to_integral_value, '10') + self.assertRaises(TypeError, x.to_integral_value, 10, 'x') + self.assertRaises(ValueError, x.to_integral_value, 10) + + self.assertEqual(x.to_integral_exact(), 10) + self.assertRaises(TypeError, x.to_integral_exact, '10') + self.assertRaises(TypeError, x.to_integral_exact, 10, 'x') + self.assertRaises(ValueError, x.to_integral_exact, 10) + + with localcontext() as c: + x = Decimal("99999999999999999999999999.9").to_integral_value(ROUND_UP) + self.assertEqual(x, Decimal('100000000000000000000000000')) + + x = Decimal("99999999999999999999999999.9").to_integral_exact(ROUND_UP) + self.assertEqual(x, Decimal('100000000000000000000000000')) + + c.traps[Inexact] = True + self.assertRaises(Inexact, Decimal("999.9").to_integral_exact, ROUND_UP) + + def test_round(self): + # Python3 behavior: round() returns Decimal + c = getcontext() + c.prec = 28 + int_max = 2**63-1 if HAVE_CONFIG_64 else 2**31-1 + + self.assertEqual(str(Decimal("9.99").__round__()), "10") + self.assertEqual(str(Decimal("9.99e-5").__round__()), "0") + self.assertEqual(str(Decimal("1.23456789").__round__(5)), "1.23457") + self.assertEqual(str(Decimal("1.2345").__round__(10)), "1.2345000000") + self.assertEqual(str(Decimal("1.2345").__round__(-10)), "0E+10") + + self.assertRaises(TypeError, Decimal("1.23").__round__, "5") + self.assertRaises(TypeError, Decimal("1.23").__round__, 5, 8) + + if HAVE_CDECIMAL: + with localcontext() as c: + c.traps[InvalidOperation] = True + self.assertRaises(InvalidOperation, Decimal("1.23").__round__, + -int_max-1) + self.assertRaises(InvalidOperation, Decimal("1.23").__round__, + int_max) + self.assertRaises(InvalidOperation, Decimal("1").__round__, + int(MAX_EMAX+1)) + self.assertRaises(InvalidOperation, Decimal("1").__round__, + -int(MIN_ETINY-1)) + self.assertRaises(OverflowError, Decimal("1.23").__round__, + -int_max-2) + self.assertRaises(OverflowError, Decimal("1.23").__round__, + int_max+1) + + def test_format(self): + if not HAVE_CDECIMAL: + return + + self.assertRaises(TypeError, Decimal(1).__format__, "=10.10", {}, 9) + self.assertRaises(TypeError, Decimal(1).__format__, "=10.10", 9) + self.assertRaises(TypeError, Decimal(1).__format__, []) + + with localcontext() as c: + c.traps[InvalidOperation] = True + c.traps[Rounded] = True + self.assertRaises(ValueError, Decimal(1).__format__, "<>=10.10") + maxsize = 2**63-1 if HAVE_CONFIG_64 else 2**31-1 + self.assertRaises(InvalidOperation, Decimal("1.23456789").__format__, + "=%d.1" % maxsize) + + def test_funcs(self): + if not HAVE_CDECIMAL: + return + + # Invalid arguments + self.assertRaises(TypeError, pow, Decimal(1), 2, "3") + self.assertRaises(TypeError, Decimal(9).number_class, "x", "y") + self.assertRaises(TypeError, Decimal(9).divmod, 8, "x", "y") + self.assertRaises(TypeError, Decimal(9).same_quantum, 3, "x", "y") + self.assertRaises(TypeError, Decimal(9).to_sci, 3, "x", "y") + self.assertRaises(TypeError, Decimal(9).to_eng, 3, "x", "y") + + self.assertEqual(Decimal("1.234e2007").sign(), 1) + self.assertEqual(Decimal("-1.234e2007").sign(), -1) + + with localcontext() as c: + c.clear_traps() + + # Invalid arguments + self.assertRaises(TypeError, c.copy_sign, Decimal(1), "x", "y") + self.assertRaises(TypeError, c.canonical, 200) + self.assertRaises(TypeError, c.is_canonical, 200) + self.assertRaises(TypeError, c.divmod, 9, 8, "x", "y") + self.assertRaises(TypeError, c.same_quantum, 9, 3, "x", "y") + + self.assertEqual(str(c.canonical(Decimal(200))), '200') + self.assertEqual(c.radix(), 10) + + c.traps[DivisionByZero] = True + self.assertRaises(DivisionByZero, Decimal(9).__divmod__, 0) + self.assertRaises(DivisionByZero, Decimal(9).divmod, 0) + self.assertRaises(DivisionByZero, c.divmod, 9, 0) + self.assertTrue(c.flags[InvalidOperation]) + + c.clear_flags() + c.traps[InvalidOperation] = True + self.assertRaises(InvalidOperation, Decimal(9).__divmod__, 0) + self.assertRaises(InvalidOperation, Decimal(9).divmod, 0) + self.assertRaises(InvalidOperation, c.divmod, 9, 0) + self.assertTrue(c.flags[DivisionByZero]) + + c.traps[InvalidOperation] = True + c.prec = 2 + self.assertRaises(InvalidOperation, pow, Decimal(1000), 1, 501) + + c.prec = 10 + x = Decimal(2).invroot() + self.assertEqual(str(x), '0.7071067812') + + x = c.invroot(3) + self.assertEqual(str(x), '0.5773502692') + + c.prec = 28 + x = Decimal(2).power(8) + self.assertEqual(str(x), '256') + + x = Decimal(2).powmod(8, 31) + self.assertEqual(str(x), '8') + + def test_signal_dict(self): + if not HAVE_CDECIMAL: + return + + import itertools + def assertIsExclusivelySet(signal, signal_dict): + for sig in signal_dict: + if sig == signal: + self.assertTrue(signal_dict[sig]) + else: + self.assertFalse(signal_dict[sig]) + + c = DefaultContext.copy() + + # Signal dict methods + self.assertTrue(Overflow in c.traps) + self.assertTrue(c.traps.has_key(Overflow)) + c.clear_traps() + for k in c.traps.keys(): + c.traps[k] = True + for v in c.traps.values(): + self.assertTrue(v) + c.clear_traps() + for k, v in c.traps.items(): + self.assertFalse(v) + + self.assertFalse(c.flags.get(Overflow)) + self.assertIs(c.flags.get("x"), None) + self.assertEqual(c.flags.get("x", "y"), "y") + self.assertRaises(TypeError, c.flags.get, "x", "y", "z") + + self.assertEqual(len(c.flags), len(c.traps)) + s = sys.getsizeof(c.flags) + s = sys.getsizeof(c.traps) + s = c.flags.__repr__() + + # Set flags/traps. + c.clear_flags() + c._flags = DecClamped + self.assertTrue(c.flags[Clamped]) + + c.clear_traps() + c._traps = DecInvalidOperation + self.assertTrue(c.traps[InvalidOperation]) + + # Set flags/traps from dictionary. + c.clear_flags() + d = c.flags.copy() + d[DivisionByZero] = True + c.flags = d + assertIsExclusivelySet(DivisionByZero, c.flags) + + c.clear_traps() + d = c.traps.copy() + d[Underflow] = True + c.traps = d + assertIsExclusivelySet(Underflow, c.traps) + + # Random constructors + IntSignals = { + Clamped: DecClamped, + Rounded: DecRounded, + Inexact: DecInexact, + Subnormal: DecSubnormal, + Underflow: DecUnderflow, + Overflow: DecOverflow, + DivisionByZero: DecDivisionByZero, + InvalidOperation: DecIEEEInvalidOperation + } + IntCond = [ + DecDivisionImpossible, DecDivisionUndefined, DecFpuError, + DecInvalidContext, DecInvalidOperation, DecMallocError, + DecConversionSyntax, + ] + + for r in range(len(OrderedSignals)): + for t in range(len(OrderedSignals)): + for round in RoundingDict.values(): + flags = random.sample(OrderedSignals, r) + traps = random.sample(OrderedSignals, t) + prec = random.randrange(1, 10000) + emin = random.randrange(-10000, 0) + emax = random.randrange(0, 10000) + clamp = random.randrange(0, 2) + caps = random.randrange(0, 2) + cr = random.randrange(0, 2) + c = Context(prec=prec, rounding=round, Emin=emin, Emax=emax, + capitals=caps, clamp=clamp, flags=list(flags), + traps=list(traps), _allcr=cr) + + self.assertEqual(c.prec, prec) + self.assertEqual(c.rounding, round) + self.assertEqual(c.Emin, emin) + self.assertEqual(c.Emax, emax) + self.assertEqual(c.capitals, caps) + self.assertEqual(c.clamp, clamp) + self.assertEqual(c._allcr, cr) + + f = 0 + for x in flags: + f |= IntSignals[x] + self.assertEqual(c._flags, f) + + f = 0 + for x in traps: + f |= IntSignals[x] + self.assertEqual(c._traps, f) + + for cond in IntCond: + c._flags = cond + self.assertTrue(c._flags&DecIEEEInvalidOperation) + assertIsExclusivelySet(InvalidOperation, c.flags) + + for cond in IntCond: + c._traps = cond + self.assertTrue(c._traps&DecIEEEInvalidOperation) + assertIsExclusivelySet(InvalidOperation, c.traps) + + def test_bignum(self): + b1 = 10**35 + b2 = 10**36 + with localcontext() as c: + c.prec = 1000000 + for i in range(5): + a = random.randrange(b1, b2) + b = random.randrange(1000, 1200) + x = a ** b + y = Decimal(a) ** Decimal(b) + self.assertEqual(x, y) + +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 + is enabled in regrtest.py + """ + + init() + global TEST_ALL, DEBUG + TEST_ALL = arith or is_resource_enabled('decimal') + DEBUG = debug + + if todo_tests is None: + test_classes = [ + DecimalExplicitConstructionTest, + DecimalImplicitConstructionTest, + DecimalArithmeticOperatorsTest, + DecimalFormatTest, + DecimalUseOfContextTest, + DecimalUsabilityTest, + DecimalPythonAPItests, + ContextAPItests, + DecimalTest, + WithStatementTest, + ContextFlags, + SpecialContexts, + Coverage + ] + 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) + if todo_tests is None: + if HAVE_CDECIMAL: + import cdecimal as DecimalModule + else: + import decimal as DecimalModule + run_doctest(DecimalModule, verbose) + finally: + setcontext(ORIGINAL_CONTEXT) + +if __name__ == '__main__': + 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: + test_main(arith=True, verbose=True) diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/LIBTEST.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/LIBTEST.txt Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,152 @@ + + +## ====================================================================== +## Prepare: copy source files +## ====================================================================== + +# Unix: +cp ../../../Modules/cdecimal/* . + +# Windows: +copy ..\..\..\Modules\cdecimal\* . + + +# ====================================================================== +# Unix: short library tests +# ====================================================================== + +./configure +make # gmake +make check + + +# ====================================================================== +# Unix: long library tests +# ====================================================================== + +./configure +make # gmake +cd tests && runalltests.sh + + +# ====================================================================== +# Unix: all configurations +# ====================================================================== + +# +# Here is the list of possible configurations: +# +# 1. x64 - 64-bit OS with x86_64 processor (AMD, Intel) +# +# 2. uint128 - 64-bit OS, compiler has __uint128_t (should be +# the case for gcc) +# +# 3. ansi64 - 64-bit OS, double width multiplication and +# division in ANSI C. +# +# 3. ppro - 32-bit OS with any x86 processor that has at +# least PentiumPro capabilities +# +# 5. ansi32 - 32-bit or 64-bit OS, produces 32-bit library +# +# 6. ansi-legacy - 32-bit OS, compiler without uint64_t +# +# TESTING ONLY: +# +# 7. full_coverage - 64bit OS, produces 64-bit library, +# using CONFIG_32. +# + +# On amd64 with multilib it is possible to run all configs. Otherwise, +# edit runallconfigs.sh and delete configs as appropriate. +cd tests && runallconfigs.sh + +# With Valgrind: +cd tests && runallconfigs.sh --valgrind + + +# ====================================================================== +# Unix: code coverage tests +# ====================================================================== + +# These tests require gcc/gcov and take quite long. To achieve 100% +# coverage of the various multiplication functions, 4-8GB of RAM is +# required for CONFIG_32, 1TB for CONFIG_64. +# +# So, realistically it is only possible to get 100% coverage using +# ./configure MACHINE=full_coverage on a 64-bit machine with 8GB of +# memory. +# +# !!! MACHINE=full_coverage is for testing only and does not work +# for pycoverage. + +# Library coverage: +./configure +make libcoverage # gmake +python tests/covreport.py +make distclean + +# 100% library coverage (64-bit OS): +patch < tests/fullcov_header.patch +./configure MACHINE=full_coverage +make libcoverage # gmake +python tests/covreport.py +make distclean +patch -R < tests/fullcov_header.patch + +# Module coverage: +./configure +make pycoverage # gmake +python tests/covreport.py +make distclean + +# lib/pycoverage: +./configure +make coverage # gmake +python tests/covreport.py +make distclean + + +# ====================================================================== +# 64-bit Windows +# ====================================================================== + +copy Makefile.vc Makefile + +# Find the path to vcvarsamd64.bat (or vcvars64.bat) and execute it. Example: +"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat" + +# Build static library: +nmake MACHINE=x64 +# Short tests +nmake MACHINE=x64 check +# Long tests +make MACHINE=x64 extended +cd tests && runalltests.bat +# Long tests requires gmp, edit paths to gmp libs in Makefile: +make MACHINE=x64 extended_gmp +cd tests && runalltests.bat + + +# ====================================================================== +# 32-bit Windows +# ====================================================================== + +copy Makefile.vc Makefile + +# Find the path to vcvars32.bat and execute it. Example: +"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" + +# Build static library: +nmake MACHINE=ppro +# Short tests +nmake MACHINE=ppro check +# Long tests +make MACHINE=ppro extended +cd tests && runalltests.bat +# Long tests requires gmp, edit paths to gmp libs in Makefile: +make MACHINE=x64 extended_gmp +cd tests && runalltests.bat + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/Makefile.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/Makefile.in Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,262 @@ + +# ============================================================================== +# Unix Makefile for libmpdec +# ============================================================================== + +include vars.mk + +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +LIBSTATIC = libmpdec.a +LIBSONAME = @LIBSHARED@ +LIBSHARED = @LIBSHARED@ + +CC = @CC@ +LD = @CC@ +AR = @AR@ +GCOV ?= gcov +INC= -I../../../ -I../../../Include +prefix = @prefix@ +exec_prefix = @exec_prefix@ +includedir = @includedir@ +libdir = @libdir@ +datarootdir = @datarootdir@ +docdir = @docdir@ + +MPD_HEADER = @MPD_HEADER@ +MPD_WARN = @MPD_WARN@ +MPD_CONFIG = @MPD_CONFIG@ +MPD_OPT = @MPD_OPT@ + +MPD_CCOV = @MPD_CCOV@ +MPD_LDCOV = @MPD_LDCOV@ +MPD_PGEN = @MPD_PGEN@ +MPD_PUSE = @MPD_PUSE@ +MPD_PREC = @MPD_PREC@ +MPD_DPREC = @MPD_DPREC@ + +ifneq (, $(findstring debug, $(MAKECMDGOALS))) + CFLAGS = $(MPD_WARN) $(MPD_CONFIG) -O0 -g -fpic +endif +ifeq ($(MAKECMDGOALS), check) + ifdef SAVED_CFLAGS + CFLAGS = $(SAVED_CFLAGS) + endif + ifdef SAVED_LDFLAGS + LDFLAGS = $(SAVED_LDFLAGS) + endif +endif +ifeq ($(MAKECMDGOALS), libcoverage) + CFLAGS = $(MPD_WARN) $(MPD_CONFIG) $(MPD_CCOV) + LDFLAGS = $(MPD_LDCOV) +endif +ifeq ($(MAKECMDGOALS), pycoverage) + CFLAGS = $(MPD_WARN) $(MPD_CONFIG) $(MPD_CCOV) + LDFLAGS = $(MPD_LDCOV) +endif +ifeq ($(MAKECMDGOALS), coverage) + CFLAGS = $(MPD_WARN) $(MPD_CONFIG) $(MPD_CCOV) + LDFLAGS = $(MPD_LDCOV) +endif + +CONFIGURE_CFLAGS = @CONFIGURE_CFLAGS@ +CFLAGS ?= $(CONFIGURE_CFLAGS) + +CONFIGURE_LDFLAGS = @CONFIGURE_LDFLAGS@ +LDFLAGS ?= $(CONFIGURE_LDFLAGS) + +ifeq ($(MAKECMDGOALS), profile_gen) + CFLAGS += $(MPD_PGEN) + LDFLAGS += $(MPD_PGEN) +endif +ifeq ($(MAKECMDGOALS), profile_use) + CFLAGS += $(MPD_PUSE) + LDFLAGS += $(MPD_PUSE) +endif + +CC := $(strip $(CC)) +CFLAGS := $(strip $(CFLAGS)) +LDFLAGS := $(strip $(LDFLAGS)) + +NEWVARS = +ifneq ($(SAVED_CC), $(CC)) + NEWVARS = NEWVARS +endif +ifneq ($(SAVED_CFLAGS), $(CFLAGS)) + NEWVARS = NEWVARS +endif +ifneq ($(SAVED_LDFLAGS), $(LDFLAGS)) + NEWVARS = NEWVARS +endif + + +default: $(LIBSTATIC) $(LIBSHARED) +debug: default + + +OBJS := basearith.o context.o constants.o convolute.o crt.o mpdecimal.o \ + mpsignal.o difradix2.o fnt.o fourstep.o io.o memory.o numbertheory.o \ + sixstep.o transpose.o + +$(LIBSTATIC): Makefile vars.mk $(OBJS) + $(AR) rc $(LIBSTATIC) $(OBJS) + ranlib $(LIBSTATIC) + +$(LIBSHARED): Makefile vars.mk $(OBJS) + $(LD) $(LDFLAGS) -shared -Wl,-soname,$(LIBSONAME) -o $(LIBSHARED) $(OBJS) -lm + + +$(NEWVARS): + +vars.mk: $(NEWVARS) + @echo "SAVED_CC=$(CC)" > vars.mk + @echo "SAVED_CFLAGS=$(CFLAGS)" >> vars.mk + @echo "SAVED_LDFLAGS=$(LDFLAGS)" >> vars.mk + + +basearith.o:\ +Makefile vars.mk basearith.c mpdecimal.h constants.h memory.h \ +typearith.h basearith.h + $(CC) $(INC) $(CFLAGS) -c basearith.c + +constants.o:\ +Makefile vars.mk constants.c mpdecimal.h constants.h + $(CC) $(INC) $(CFLAGS) -c constants.c + +context.o:\ +Makefile vars.mk context.c mpdecimal.h + $(CC) $(INC) $(CFLAGS) -c context.c + +convolute.o:\ +Makefile vars.mk convolute.c mpdecimal.h bits.h constants.h fnt.h fourstep.h \ +numbertheory.h sixstep.h umodarith.h typearith.h convolute.h vccompat.h + $(CC) $(INC) $(CFLAGS) -c convolute.c + +crt.o:\ +Makefile vars.mk crt.c mpdecimal.h numbertheory.h constants.h umodarith.h \ +typearith.h crt.h + $(CC) $(INC) $(CFLAGS) -c crt.c + +difradix2.o:\ +Makefile vars.mk difradix2.c mpdecimal.h bits.h numbertheory.h constants.h \ +umodarith.h typearith.h difradix2.h vccompat.h + $(CC) $(INC) $(CFLAGS) -c difradix2.c + +fnt.o:\ +Makefile vars.mk fnt.c bits.h mpdecimal.h difradix2.h numbertheory.h \ +constants.h fnt.h vccompat.h + $(CC) $(INC) $(CFLAGS) -c fnt.c + +fourstep.o:\ +Makefile vars.mk fourstep.c mpdecimal.h numbertheory.h constants.h sixstep.h \ +transpose.h umodarith.h typearith.h fourstep.h + $(CC) $(INC) $(CFLAGS) -c fourstep.c + +io.o:\ +Makefile vars.mk io.c mpdecimal.h bits.h constants.h memory.h typearith.h \ +io.h vccompat.h + $(CC) $(INC) $(CFLAGS) -c io.c + +memory.o:\ +Makefile vars.mk memory.c mpdecimal.h typearith.h memory.h + $(CC) $(INC) $(CFLAGS) -c memory.c + +mpdecimal.o:\ +Makefile vars.mk mpdecimal.c basearith.h mpdecimal.h typearith.h bits.h \ +convolute.h crt.h memory.h umodarith.h constants.h mptest.h mptypes.h \ +vccompat.h + $(CC) $(INC) $(CFLAGS) -c mpdecimal.c + +mpsignal.o:\ +Makefile vars.mk mpdecimal.c mpdecimal.h vccompat.h + $(CC) $(INC) $(CFLAGS) -c mpsignal.c + +numbertheory.o:\ +Makefile vars.mk numbertheory.c mpdecimal.h bits.h umodarith.h constants.h \ +typearith.h numbertheory.h vccompat.h + $(CC) $(INC) $(CFLAGS) -c numbertheory.c + +sixstep.o:\ +Makefile vars.mk sixstep.c mpdecimal.h bits.h difradix2.h numbertheory.h \ +constants.h mptypes.h transpose.h umodarith.h typearith.h sixstep.h \ +vccompat.h + $(CC) $(INC) $(CFLAGS) -c sixstep.c + +transpose.o:\ +Makefile vars.mk transpose.c mpdecimal.h bits.h constants.h typearith.h \ +transpose.h vccompat.h + $(CC) $(INC) $(CFLAGS) -c transpose.c + + +# pycoverage +PYTHON3EXEC=../../../../python +cdecimal.o:\ +Makefile vars.mk cdecimal.c mpdecimal.h docstrings.h memory.h mptypes.h + $(CC) $(INC) -Wno-missing-field-initializers $(CFLAGS) -pthread -c cdecimal.c + +cdecimal.so:\ +Makefile vars.mk cdecimal.o $(LIBSTATIC) + $(CC) $(INC) $(LDFLAGS) -pthread -shared -o cdecimal.so cdecimal.o $(LIBSTATIC) +# end pycoverage + + +check: $(LIBSTATIC) FORCE + cd tests && $(MAKE) "CFLAGS=$(CFLAGS)" "LDFLAGS=$(LDFLAGS)" && ./runshort.sh + +extended:\ +Makefile $(LIBSTATIC) + cd tests && $(MAKE) extended + +build_libcoverage: clean $(LIBSTATIC) + cd tests && $(MAKE) build_libcoverage + +build_pycoverage: build_libcoverage cdecimal.so + +libcoverage: build_libcoverage + cd tests && ./runshort.sh && ./cov && ./test_transpose && ./fntcov + for file in *.c; do $(GCOV) -l "$$file"; done + +pycoverage: build_pycoverage + cd python && cp ../cdecimal.so . && ./gettests.sh && $(PYTHON3EXEC) ../../test_cdecimal.py && $(PYTHON3EXEC) deccheck.py + for file in *.c; do $(GCOV) -l "$$file"; done + +coverage: build_libcoverage build_pycoverage libcoverage pycoverage + + +FORCE: + +bench: FORCE $(LIBSTATIC) + $(CC) $(INC) $(CFLAGS) -o bench bench.c $(LIBSTATIC) -lm + +profile_gen: clean bench + ./bench $(MPD_PREC) 1000 + ./bench $(MPD_DPREC) 1000 + rm -f *.o *.gch $(LIBSTATIC) $(LIBSHARED) bench runtest + +profile_use: bench + ./bench $(MPD_PREC) 1000 + ./bench $(MPD_DPREC) 1000 + +profile: + $(MAKE) profile_gen + $(MAKE) profile_use + +install: FORCE + mkdir -p $(DESTDIR)$(includedir) && cp mpdecimal.h $(DESTDIR)$(includedir) + mkdir -p $(DESTDIR)$(libdir) && cp $(LIBSTATIC) $(LIBSHARED) $(DESTDIR)$(libdir) + mkdir -p $(DESTDIR)$(docdir) && cp -R doc/* $(DESTDIR)$(docdir) + +clean: FORCE + rm -f *.o *.so *.gch *.gcda *.gcno *.gcov *.dyn *.dpi *.lock \ + $(LIBSTATIC) $(LIBSHARED) bench + rm -rf build + cd python && rm -f cdecimal*.so *.pyc + cd tests && if [ -f Makefile ]; then $(MAKE) clean; else exit 0; fi + +distclean: clean + rm -rf config.h config.log config.status Makefile + echo "" > vars.mk + cd tests && rm -rf Makefile testdata + cd python && rm -rf decimaltestdata build __pycache__ + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/Makefile.vc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/Makefile.vc Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,228 @@ + +# ====================================================================== +# Visual C (nmake) Makefile for libmpdec +# ====================================================================== + + +INSTALLDIR = . +LIBSTATIC = libmpdec-@RELEASE_VERSION@.lib +LIBIMPORT = libmpdec-@RELEASE_VERSION@.dll.lib +LIBSHARED = libmpdec-@RELEASE_VERSION@.dll + + +OBJS = basearith.obj context.obj constants.obj convolute.obj crt.obj \ + mpdecimal.obj mpsignal.obj difradix2.obj fnt.obj fourstep.obj \ + io.obj memory.obj numbertheory.obj sixstep.obj transpose.obj + + +MPD_PREC = 9 +MPD_DPREC = 18 +GMPLIB = "C:\Program Files (x86)\gmp\gmp.lib" +GMPINC = "C:\Program Files (x86)\gmp" + +!if "$(MACHINE)" == "x64" +CONFIG = /DCONFIG_64 /DMASM +MPD_PREC = 19 +MPD_DPREC = 38 +GMPLIB = "C:\Program Files\gmp\gmp.lib" +GMPINC = "C:\Program Files\gmp" +OBJS = $(OBJS) vcdiv64.obj +!endif +!if "$(MACHINE)" == "ansi64" +CONFIG = /DCONFIG_64 /DANSI +MPD_PREC = 19 +MPD_DPREC = 38 +GMPLIB = "C:\Program Files\gmp\gmp.lib" +GMPINC = "C:\Program Files\gmp" +!endif +!if "$(MACHINE)" == "full_coverage" +CONFIG = /DCONFIG_32 /DANSI +GMPLIB = "C:\Program Files\gmp\gmp.lib" +GMPINC = "C:\Program Files\gmp" +!endif +!if "$(MACHINE)" == "ppro" +CONFIG = /DCONFIG_32 /DPPRO /DMASM +!endif +!if "$(MACHINE)" == "ansi32" +CONFIG = /DCONFIG_32 /DANSI +!endif +!if "$(MACHINE)" == "ansi-legacy" +CONFIG = /DCONFIG_32 /DANSI /DLEGACY_COMPILER +!endif + +!if "$(DLL)" == "1" +BFLAGS= /DBUILD_DLL +UFLAGS= /DUSE_DLL +LFLAGS= $(LFLAGS) /DLL +BUILDLIB = $(LIBSHARED) +USELIB = $(LIBIMPORT) +!if "$(DEBUG)" == "1" +OPT = /MDd /Od /Zi +!else +OPT = /MD /Ox /GS /EHsc +!endif +!else +BUILDLIB = $(LIBSTATIC) +USELIB = $(LIBSTATIC) +!if "$(DEBUG)" == "1" +OPT = /MTd /Od /Zi +!else +OPT = /MT /Ox /GS /EHsc +!endif +!endif + +CFLAGS = /W3 /D_CRT_SECURE_NO_WARNINGS /nologo $(CONFIG) $(OPT) + + +default: $(BUILDLIB) + + +$(LIBSTATIC): Makefile $(OBJS) + -@if exist $@ del $(LIBSTATIC) + lib $(LFLAGS) /out:$(LIBSTATIC) $(OBJS) + + +$(LIBSHARED): Makefile $(OBJS) + -@if exist $@ del $(LIBSHARED) + link $(LFLAGS) /out:$(LIBSHARED) /implib:$(LIBIMPORT) $(OBJS) + mt -manifest $(LIBSHARED).manifest -outputresource:$(LIBSHARED);2 + + +basearith.obj:\ +Makefile basearith.c constants.h mpdecimal.h memory.h typearith.h \ +basearith.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c basearith.c + +constants.obj:\ +Makefile constants.c mpdecimal.h constants.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c constants.c + +context.obj:\ +Makefile context.c mpdecimal.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c context.c + +convolute.obj:\ +Makefile convolute.c bits.h mpdecimal.h constants.h fnt.h fourstep.h \ +numbertheory.h sixstep.h umodarith.h typearith.h convolute.h vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c convolute.c + +crt.obj:\ +Makefile crt.c mpdecimal.h numbertheory.h constants.h umodarith.h \ +typearith.h crt.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c crt.c + +difradix2.obj:\ +Makefile difradix2.c bits.h mpdecimal.h numbertheory.h constants.h \ +umodarith.h typearith.h difradix2.h vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c difradix2.c + +fnt.obj:\ +Makefile fnt.c bits.h mpdecimal.h difradix2.h numbertheory.h constants.h \ +fnt.h vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c fnt.c + +fourstep.obj:\ +Makefile fourstep.c mpdecimal.h numbertheory.h constants.h sixstep.h \ +transpose.h umodarith.h typearith.h fourstep.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c fourstep.c + +io.obj:\ +Makefile io.c bits.h mpdecimal.h constants.h memory.h typearith.h io.h \ +vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c io.c + +memory.obj:\ +Makefile memory.c mpdecimal.h typearith.h memory.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c memory.c + +mpdecimal.obj:\ +Makefile mpdecimal.c basearith.h mpdecimal.h typearith.h bits.h \ +convolute.h crt.h memory.h umodarith.h constants.h mptest.h mptypes.h \ +vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c mpdecimal.c + +mpsignal.obj:\ +Makefile mpdecimal.c mpdecimal.h vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c mpsignal.c + +numbertheory.obj:\ +Makefile numbertheory.c bits.h mpdecimal.h umodarith.h constants.h \ +typearith.h numbertheory.h vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c numbertheory.c + +sixstep.obj:\ +Makefile sixstep.c bits.h mpdecimal.h difradix2.h numbertheory.h \ +constants.h mptypes.h transpose.h umodarith.h typearith.h sixstep.h \ +vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c sixstep.c + +transpose.obj:\ +Makefile transpose.c bits.h mpdecimal.h constants.h typearith.h \ +transpose.h vccompat.h + $(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c transpose.c + +vcdiv64.obj:\ +Makefile vcdiv64.asm + ml64 /c /Cx vcdiv64.asm + + +check:\ +$(BUILDLIB) + -@copy /y $(BUILDLIB) tests + -@cd tests + -@copy /y Makefile.vc Makefile + -@nmake UFLAGS="$(UFLAGS)" CFLAGS="$(CFLAGS)" USELIB="$(USELIB)" + -@runshort.bat + +extended:\ +Makefile $(BUILDLIB) + -@copy /y $(BUILDLIB) tests + -@cd tests + -@copy /y Makefile.vc Makefile + -@nmake UFLAGS="$(UFLAGS)" CFLAGS="$(CFLAGS)" USELIB="$(USELIB)" extended + +extended_gmp:\ +Makefile $(BUILDLIB) + -@copy /y $(BUILDLIB) tests + -@cd tests + -@copy /y Makefile.vc Makefile + -@nmake UFLAGS="$(UFLAGS)" CFLAGS="$(CFLAGS)" USELIB="$(USELIB)" GMPINC=$(GMPINC) GMPLIB=$(GMPLIB) extended_gmp + + +FORCE: + +bench.exe: Makefile bench.obj + $(CC) $(UFLAGS) $(CFLAGS) $(PFLAGS) bench.obj $(USELIB) + +bench.obj: FORCE + $(CC) $(UFLAGS) $(CFLAGS) $(PFLAGS) -c bench.c + +profile: FORCE + nmake clean + nmake "DLL=1" "PFLAGS=/GL" "LFLAGS=/DLL /LTCG:PGI" + nmake "DLL=1" "PFLAGS=/GL" bench.exe + bench.exe $(MPD_PREC) 1000 + bench.exe $(MPD_DPREC) 1000 + del /Q *.dll bench.exe + link /DLL /LTCG:PGO /out:$(LIBSHARED) /implib:$(LIBIMPORT) $(OBJS) + mt -manifest $(LIBSHARED).manifest -outputresource:$(LIBSHARED);2 + $(CC) $(UFLAGS) $(CFLAGS) $(PFLAGS) bench.c $(USELIB) + bench.exe $(MPD_PREC) 1000 + bench.exe $(MPD_DPREC) 1000 + +clean: FORCE + -@if exist *.obj del *.obj + -@if exist *.dll del *.dll + -@if exist *.exp del *.exp + -@if exist *.lib del *.lib + -@if exist *.ilk del *.ilk + -@if exist *.pdb del *.pdb + -@if exist *.pgc del *.pgc + -@if exist *.pgd del *.pgd + -@if exist *.manifest del *.manifest + -@if exist *.exe del *.exe + -@if exist python\cdecimal.pyd del python\cdecimal.pyd + -@if exist python\*.pyc del python\*.pyc + -@cd tests && copy /y Makefile.vc Makefile && nmake clean + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/PYTEST.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/PYTEST.txt Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,19 @@ + + +Assuming that the module has been built as part of the Python build: + + +cd python + +# gettests.bat +./gettests.sh + +../../../../python deccheck.py [--short|--medium|--long|--all] +../../../../python ctx-deccheck.py [--short|--medium|--long|--all] + + +Small benchmark (requires gmpy): + +../../../../python bench.py + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/config.h.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/config.h.in Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,100 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define if we can use x64 gcc inline assembler. */ +#undef HAVE_GCC_ASM_FOR_X64 + +/* Define if we can use x87 gcc inline assembler. */ +#undef HAVE_GCC_ASM_FOR_X87 + +/* Define if glibc has incorrect _FORTIFY_SOURCE wrappers for memmove and + bcopy. */ +#undef HAVE_GLIBC_MEMMOVE_BUG + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if gcc has the ipa-pure-const bug. */ +#undef HAVE_IPA_PURE_CONST_BUG + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define if your compiler provides __uint128_t. */ +#undef HAVE_UINT128_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* The size of `size_t', as computed by sizeof. */ +#undef SIZEOF_SIZE_T + +/* The size of `__uint128_t', as computed by sizeof. */ +#undef SIZEOF___UINT128_T + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define for Solaris 2.5.1 so the uint32_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT32_T + +/* Define for Solaris 2.5.1 so the uint64_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT64_T + +/* Define to the type of a signed integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +#undef int32_t + +/* Define to the type of a signed integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +#undef int64_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to the type of an unsigned integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +#undef uint32_t + +/* Define to the type of an unsigned integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +#undef uint64_t diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/configure --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/configure Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,5427 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.67 for mpdecimal @RELEASE_VERSION@. +# +# Report bugs to . +# +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: mpdecimal-bugs@bytereef.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='mpdecimal' +PACKAGE_TARNAME='mpdecimal' +PACKAGE_VERSION='@RELEASE_VERSION@' +PACKAGE_STRING='mpdecimal @RELEASE_VERSION@' +PACKAGE_BUGREPORT='mpdecimal-bugs@bytereef.org' +PACKAGE_URL='http://www.bytereef.org/mpdecimal/index.html' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +CONFIGURE_LDFLAGS +CONFIGURE_CFLAGS +MPD_DPREC +MPD_PREC +MPD_PUSE +MPD_PGEN +MPD_LDCOV +MPD_CCOV +MPD_OPT +MPD_CONFIG +MPD_WARN +MPD_HEADER +AR +GMPPATH +GMPDEPS +EGREP +GREP +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +LIBSHARED +MACHINE +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +' + ac_precious_vars='build_alias +host_alias +target_alias +MACHINE +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures mpdecimal @RELEASE_VERSION@ to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/mpdecimal] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of mpdecimal @RELEASE_VERSION@:";; + esac + cat <<\_ACEOF + +Some influential environment variables: + MACHINE force configuration: x64, uint128, ansi64, ppro, ansi32, + ansi-legacy + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +mpdecimal home page: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +mpdecimal configure @RELEASE_VERSION@ +generated by GNU Autoconf 2.67 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval "test \"\${$3+set}\"" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------ ## +## Report this to mpdecimal-bugs@bytereef.org ## +## ------------------------------------------ ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_type + +# ac_fn_c_find_intX_t LINENO BITS VAR +# ----------------------------------- +# Finds a signed integer type with width BITS, setting cache variable VAR +# accordingly. +ac_fn_c_find_intX_t () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 +$as_echo_n "checking for int$2_t... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + # Order is important - never check a type that is potentially smaller + # than half of the expected target width. + for ac_type in int$2_t 'int' 'long int' \ + 'long long int' 'short int' 'signed char'; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + enum { N = $2 / 2 - 1 }; +int +main () +{ +static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + enum { N = $2 / 2 - 1 }; +int +main () +{ +static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) + < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + case $ac_type in #( + int$2_t) : + eval "$3=yes" ;; #( + *) : + eval "$3=\$ac_type" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if eval test \"x\$"$3"\" = x"no"; then : + +else + break +fi + done +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_find_intX_t + +# ac_fn_c_find_uintX_t LINENO BITS VAR +# ------------------------------------ +# Finds an unsigned integer type with width BITS, setting cache variable VAR +# accordingly. +ac_fn_c_find_uintX_t () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 +$as_echo_n "checking for uint$2_t... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + # Order is important - never check a type that is potentially smaller + # than half of the expected target width. + for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ + 'unsigned long long int' 'unsigned short int' 'unsigned char'; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + case $ac_type in #( + uint$2_t) : + eval "$3=yes" ;; #( + *) : + eval "$3=\$ac_type" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if eval test \"x\$"$3"\" = x"no"; then : + +else + break +fi + done +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_find_uintX_t + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 &5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by mpdecimal $as_me @RELEASE_VERSION@, which was +generated by GNU Autoconf 2.67. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_config_headers="$ac_config_headers config.h" + +ac_config_files="$ac_config_files Makefile tests/Makefile" + + + +LIBSHARED=libmpdec.so.$PACKAGE_VERSION + + +# Language and compiler: +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +saved_cflags=$CFLAGS +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CFLAGS=$saved_cflags + +# System and machine type: +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking system as reported by uname -s" >&5 +$as_echo_n "checking system as reported by uname -s... " >&6; } +ac_sys_system=`uname -s` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_sys_system" >&5 +$as_echo "$ac_sys_system" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking machine type as reported by uname -m" >&5 +$as_echo_n "checking machine type as reported by uname -m... " >&6; } +ac_sys_machine=`uname -m` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_sys_machine" >&5 +$as_echo "$ac_sys_machine" >&6; } + +# Checks for header files: + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in inttypes.h stdint.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Type availability checks: +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = x""yes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" +case $ac_cv_c_int32_t in #( + no|yes) ;; #( + *) + +cat >>confdefs.h <<_ACEOF +#define int32_t $ac_cv_c_int32_t +_ACEOF +;; +esac + +ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" +case $ac_cv_c_int64_t in #( + no|yes) ;; #( + *) + +cat >>confdefs.h <<_ACEOF +#define int64_t $ac_cv_c_int64_t +_ACEOF +;; +esac + +ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" +case $ac_cv_c_uint32_t in #( + no|yes) ;; #( + *) + +$as_echo "#define _UINT32_T 1" >>confdefs.h + + +cat >>confdefs.h <<_ACEOF +#define uint32_t $ac_cv_c_uint32_t +_ACEOF +;; + esac + +ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" +case $ac_cv_c_uint64_t in #( + no|yes) ;; #( + *) + +$as_echo "#define _UINT64_T 1" >>confdefs.h + + +cat >>confdefs.h <<_ACEOF +#define uint64_t $ac_cv_c_uint64_t +_ACEOF +;; + esac + +ac_fn_c_check_type "$LINENO" "__uint128_t" "ac_cv_type___uint128_t" "$ac_includes_default" +if test "x$ac_cv_type___uint128_t" = x""yes; then : + +$as_echo "#define HAVE_UINT128_T 1" >>confdefs.h + +fi + + +# Sizes of various types: +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 +$as_echo_n "checking size of size_t... " >&6; } +if test "${ac_cv_sizeof_size_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_size_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (size_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_size_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 +$as_echo "$ac_cv_sizeof_size_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of __uint128_t" >&5 +$as_echo_n "checking size of __uint128_t... " >&6; } +if test "${ac_cv_sizeof___uint128_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (__uint128_t))" "ac_cv_sizeof___uint128_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type___uint128_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (__uint128_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof___uint128_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof___uint128_t" >&5 +$as_echo "$ac_cv_sizeof___uint128_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF___UINT128_T $ac_cv_sizeof___uint128_t +_ACEOF + + + +# x64 with gcc asm: +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x64 gcc inline assembler" >&5 +$as_echo_n "checking for x64 gcc inline assembler... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + __asm__ __volatile__ ("movq %rcx, %rax"); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + have_gcc_asm_for_x64=yes +else + have_gcc_asm_for_x64=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gcc_asm_for_x64" >&5 +$as_echo "$have_gcc_asm_for_x64" >&6; } +if test "$have_gcc_asm_for_x64" = yes; then + +$as_echo "#define HAVE_GCC_ASM_FOR_X64 1" >>confdefs.h + +fi + +# x87 with gcc asm: +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x87 gcc inline assembler" >&5 +$as_echo_n "checking for x87 gcc inline assembler... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + unsigned short cw; + __asm__ __volatile__ ("fnstcw %0" : "=m" (cw)); + __asm__ __volatile__ ("fldcw %0" : : "m" (cw)); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + have_gcc_asm_for_x87=yes +else + have_gcc_asm_for_x87=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gcc_asm_for_x87" >&5 +$as_echo "$have_gcc_asm_for_x87" >&6; } +if test "$have_gcc_asm_for_x87" = yes; then + +$as_echo "#define HAVE_GCC_ASM_FOR_X87 1" >>confdefs.h + +fi + +# gmp for extended tests: +GMPDEPS= +GMPPATH= +saved_ldflags="$LDFLAGS" +saved_cflags="$CFLAGS" +LDFLAGS=-lgmp +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gmp" >&5 +$as_echo_n "checking for gmp... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main () +{ + + mpz_t x; + mpz_init(x); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + have_gmp=yes +else + have_gmp=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test $have_gmp = no; then + LDFLAGS="-L/usr/local/lib -lgmp" + CFLAGS="-I/usr/local/include" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + +int +main () +{ + + mpz_t x; + mpz_init(x); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + have_gmp=yes +else + have_gmp=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test $have_gmp = yes; then + GMPPATH=/usr/local + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gmp" >&5 +$as_echo "$have_gmp" >&6; } +LDFLAGS="$saved_ldflags" +CFLAGS="$saved_cflags" + +if test $have_gmp = yes; then + GMPDEPS="mpd_mpz_add mpd_mpz_divmod mpd_mpz_mul mpd_mpz_sub" +fi + + + +# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: +# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for glibc _FORTIFY_SOURCE/memmove bug" >&5 +$as_echo_n "checking for glibc _FORTIFY_SOURCE/memmove bug... " >&6; } +saved_cflags="$CFLAGS" +CFLAGS="-O2 -D_FORTIFY_SOURCE=2" +if test "$cross_compiling" = yes; then : + have_glibc_memmove_bug=undefined +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +void foo(void *p, void *q) { memmove(p, q, 19); } +int main() { + char a[32] = "123456789000000000"; + foo(&a[9], a); + if (strcmp(a, "123456789123456789000000000") != 0) + return 1; + foo(a, &a[9]); + if (strcmp(a, "123456789000000000") != 0) + return 1; + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + have_glibc_memmove_bug=no +else + have_glibc_memmove_bug=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +CFLAGS="$saved_cflags" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_glibc_memmove_bug" >&5 +$as_echo "$have_glibc_memmove_bug" >&6; } +if test "$have_glibc_memmove_bug" = yes; then + +$as_echo "#define HAVE_GLIBC_MEMMOVE_BUG 1" >>confdefs.h + +fi + +# suncc is dectected as cc: +case $ac_sys_system in +sun*|Sun*) + case $CC in + cc) + CC=suncc + ;; + esac +esac + +# Compiler dependent settings: +AR=ar +MPD_WARN="-Wall" +MPD_OPT="-O2 -fpic" +MPD_PGEN= +MPD_PUSE= +MPD_CCOV= +MPD_LDCOV= +case $CC in + *gcc*) + MPD_WARN="-Wall -W -Wno-unknown-pragmas" + MPD_OPT="-O2 -fpic -s" + MPD_PGEN="-fprofile-generate -fprofile-values" + MPD_PUSE="-fprofile-use -freorder-blocks" + MPD_CCOV="-DTEST_COVERAGE -O0 -g -fno-inline -fprofile-arcs -ftest-coverage -fpic" + MPD_LDCOV="-fprofile-arcs" + ;; + *icc*) + AR=xiar + MPD_WARN="-Wall -Wno-unknown-pragmas" + MPD_OPT="-O2 -fpic -s" + MPD_PGEN="-wd11505 -prof-gen" + MPD_PUSE="-wd11505 -prof-use" + ;; + *clang*) + MPD_WARN="-Wall -W -Wno-unknown-pragmas" + MPD_OPT="-O2 -fpic" + ;; + *suncc*) + MPD_WARN= + MPD_OPT="-O2 -fpic -s" + ;; +esac + +# Auto-detect machine dependent settings: +M64= +M32= +if test -n "$MACHINE"; then + M64="-m64 " + M32="-m32 " + case "$MACHINE" in + x64|uint128|ansi64|full_coverage|ppro|ansi32|ansi-legacy|universal) + : ;; + *) + echo "configure: error: invalid MACHINE variable: $MACHINE" + exit 1 ;; + esac +elif test $ac_cv_sizeof_size_t -eq 8; then + if test $have_gcc_asm_for_x64 = yes; then + MACHINE="x64" + elif test $ac_cv_sizeof__uint128_t -eq 8; then + MACHINE="uint128" + else + MACHINE="ansi64" + fi +else + MACHINE="ansi32" + if test $have_gcc_asm_for_x87 = yes; then + case $CC in + *gcc*|*clang*) # icc >= 11.0 works as well + case $ac_sys_system in + darwin*|Darwin*) + ;; + *) + MACHINE="ppro" + ;; + esac + ;; + esac + fi +fi + +# Set configuration variables: +MPD_PREC=9 +MPD_DPREC=18 +CONFIGURE_LDFLAGS= +case "$MACHINE" in + x64) + MPD_CONFIG=$M64"-DCONFIG_64 -DASM" + CONFIGURE_LDFLAGS=$M64 + MPD_PREC=19 + MPD_DPREC=38 + ;; + uint128) + MPD_CONFIG=$M64"-DCONFIG_64 -DANSI -DHAVE_UINT128_T" + CONFIGURE_LDFLAGS=$M64 + MPD_PREC=19 + MPD_DPREC=38 + ;; + ansi64) + MPD_CONFIG=$M64"-DCONFIG_64 -DANSI" + CONFIGURE_LDFLAGS=$M64 + MPD_PREC=19 + MPD_DPREC=38 + ;; + full_coverage) + # Formerly ansi64c32, for testing only! + MPD_CONFIG=$M64"-DCONFIG_32 -DANSI" + CONFIGURE_LDFLAGS=$M64 + ;; + ppro) + MPD_CONFIG=$M32"-DCONFIG_32 -DPPRO -DASM" + CONFIGURE_LDFLAGS=$M32 + # Some versions of gcc miscompile inline asm: + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 + # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html + case $CC in + *gcc*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc ipa-pure-const bug" >&5 +$as_echo_n "checking for gcc ipa-pure-const bug... " >&6; } + saved_cflags="$CFLAGS" + CFLAGS="-O2" + if test "$cross_compiling" = yes; then : + have_ipa_pure_const_bug=undefined +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + __attribute__((noinline)) int + foo(int *p) { + int r; + asm ( "movl \$6, (%1)\n\t" + "xorl %0, %0\n\t" + : "=r" (r) : "r" (p) : "memory" + ); + return r; + } + int main() { + int p = 8; + if ((foo(&p) ? : p) != 6) + return 1; + return 0; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + have_ipa_pure_const_bug=no +else + have_ipa_pure_const_bug=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$saved_cflags" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ipa_pure_const_bug" >&5 +$as_echo "$have_ipa_pure_const_bug" >&6; } + if test "$have_ipa_pure_const_bug" = yes; then + MPD_CONFIG="$MPD_CONFIG -fno-ipa-pure-const" + +$as_echo "#define HAVE_IPA_PURE_CONST_BUG 1" >>confdefs.h + + fi + ;; + esac + ;; + ansi32) + MPD_CONFIG=$M32"-DCONFIG_32 -DANSI" + CONFIGURE_LDFLAGS=$M32 + ;; + ansi-legacy) + MPD_CONFIG=$M32"-DCONFIG_32 -DANSI -DLEGACY_COMPILER" + CONFIGURE_LDFLAGS=$M32 + ;; + universal) + MPD_CONFIG="-DUNIVERSAL" +esac + + +# Substitute variables and generate output: + + + + + + + + + + + + + +if test -z "$CFLAGS"; then + CONFIGURE_CFLAGS="$MPD_WARN $MPD_CONFIG $MPD_OPT" +else + CONFIGURE_CFLAGS="$MPD_CONFIG -fpic $CFLAGS" +fi +if test "$have_glibc_memmove_bug" = yes; then + CONFIGURE_CFLAGS="$CONFIGURE_CFLAGS -U_FORTIFY_SOURCE" +fi + +if test -n "$LDFLAGS"; then + CONFIGURE_LDFLAGS="$LDFLAGS" +fi + + + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by mpdecimal $as_me @RELEASE_VERSION@, which was +generated by GNU Autoconf 2.67. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to . +mpdecimal home page: ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +mpdecimal config.status @RELEASE_VERSION@ +configured by $0, generated by GNU Autoconf 2.67, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +GLIBC_MEMMOVE_BUG_WARN=" +***************************** WARNING ********************************* + +Detected glibc _FORTIFY_SOURCE/memmove bug. See: + + http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html + +Enabling -U_FORTIFY_SOURCE workaround. If -D_FORTIFY_SOURCE is also +present in the command line, make sure that the order of the two +options is: + + ... -D_FORTIFY_SOURCE=2 ... -U_FORTIFY_SOURCE ... + +A better solution is to upgrade glibc or to report the bug to your +OS vendor. + +***************************** WARNING ********************************* +" +if test "$have_glibc_memmove_bug" = yes; then + echo "$GLIBC_MEMMOVE_BUG_WARN" +fi + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/configure.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/configure.in Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,353 @@ +dnl Some parts taken from Python's configure.in. + +AC_PREREQ([2.67]) +AC_INIT(mpdecimal, @RELEASE_VERSION@, mpdecimal-bugs@bytereef.org, mpdecimal, http://www.bytereef.org/mpdecimal/index.html) +AC_CONFIG_HEADER(config.h) +AC_CONFIG_FILES([Makefile tests/Makefile]) +AC_ARG_VAR(MACHINE, [force configuration: x64, uint128, ansi64, ppro, ansi32, ansi-legacy]) + +LIBSHARED=libmpdec.so.$PACKAGE_VERSION +AC_SUBST(LIBSHARED) + +# Language and compiler: +AC_LANG_C +saved_cflags=$CFLAGS +AC_PROG_CC +CFLAGS=$saved_cflags + +# System and machine type: +AC_MSG_CHECKING(system as reported by uname -s) +ac_sys_system=`uname -s` +AC_MSG_RESULT($ac_sys_system) + +AC_MSG_CHECKING(machine type as reported by uname -m) +ac_sys_machine=`uname -m` +AC_MSG_RESULT($ac_sys_machine) + +# Checks for header files: +AC_HEADER_STDC +AC_CHECK_HEADERS(inttypes.h stdint.h) + +# Type availability checks: +AC_TYPE_SIZE_T +AC_TYPE_INT32_T +AC_TYPE_INT64_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_CHECK_TYPE(__uint128_t, AC_DEFINE(HAVE_UINT128_T, 1, + [Define if your compiler provides __uint128_t.]),,) + +# Sizes of various types: +AC_CHECK_SIZEOF(size_t, 4) +AC_CHECK_SIZEOF(__uint128_t, 8) + +# x64 with gcc asm: +AC_MSG_CHECKING(for x64 gcc inline assembler) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ + __asm__ __volatile__ ("movq %rcx, %rax"); +]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no]) +AC_MSG_RESULT($have_gcc_asm_for_x64) +if test "$have_gcc_asm_for_x64" = yes; then + AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1, + [Define if we can use x64 gcc inline assembler.]) +fi + +# x87 with gcc asm: +AC_MSG_CHECKING(for x87 gcc inline assembler) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ + unsigned short cw; + __asm__ __volatile__ ("fnstcw %0" : "=m" (cw)); + __asm__ __volatile__ ("fldcw %0" : : "m" (cw)); +]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no]) +AC_MSG_RESULT($have_gcc_asm_for_x87) +if test "$have_gcc_asm_for_x87" = yes; then + AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1, + [Define if we can use x87 gcc inline assembler.]) +fi + +# gmp for extended tests: +GMPDEPS= +GMPPATH= +saved_ldflags="$LDFLAGS" +saved_cflags="$CFLAGS" +LDFLAGS=-lgmp +AC_MSG_CHECKING(for gmp) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +]], [[ + mpz_t x; + mpz_init(x); +]])], [have_gmp=yes], [have_gmp=no]) +if test $have_gmp = no; then + LDFLAGS="-L/usr/local/lib -lgmp" + CFLAGS="-I/usr/local/include" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + ]], [[ + mpz_t x; + mpz_init(x); + ]])], [have_gmp=yes], [have_gmp=no]) + if test $have_gmp = yes; then + GMPPATH=/usr/local + fi +fi +AC_MSG_RESULT($have_gmp) +LDFLAGS="$saved_ldflags" +CFLAGS="$saved_cflags" + +if test $have_gmp = yes; then + GMPDEPS="mpd_mpz_add mpd_mpz_divmod mpd_mpz_mul mpd_mpz_sub" +fi +AC_SUBST(GMPDEPS) +AC_SUBST(GMPPATH) + +# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: +# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html +AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug) +saved_cflags="$CFLAGS" +CFLAGS="-O2 -D_FORTIFY_SOURCE=2" +AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +void foo(void *p, void *q) { memmove(p, q, 19); } +int main() { + char a[32] = "123456789000000000"; + foo(&a[9], a); + if (strcmp(a, "123456789123456789000000000") != 0) + return 1; + foo(a, &a[9]); + if (strcmp(a, "123456789000000000") != 0) + return 1; + return 0; +} +]])], +[have_glibc_memmove_bug=no], +[have_glibc_memmove_bug=yes], +[have_glibc_memmove_bug=undefined]) +CFLAGS="$saved_cflags" +AC_MSG_RESULT($have_glibc_memmove_bug) +if test "$have_glibc_memmove_bug" = yes; then + AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1, + [Define if glibc has incorrect _FORTIFY_SOURCE wrappers + for memmove and bcopy.]) +fi + +# suncc is dectected as cc: +case $ac_sys_system in +sun*|Sun*) + case $CC in + cc) + CC=suncc + ;; + esac +esac + +# Compiler dependent settings: +AR=ar +MPD_WARN="-Wall" +MPD_OPT="-O2 -fpic" +MPD_PGEN= +MPD_PUSE= +MPD_CCOV= +MPD_LDCOV= +case $CC in + *gcc*) + MPD_WARN="-Wall -W -Wno-unknown-pragmas" + MPD_OPT="-O2 -fpic -s" + MPD_PGEN="-fprofile-generate -fprofile-values" + MPD_PUSE="-fprofile-use -freorder-blocks" + MPD_CCOV="-DTEST_COVERAGE -O0 -g -fno-inline -fprofile-arcs -ftest-coverage -fpic" + MPD_LDCOV="-fprofile-arcs" + ;; + *icc*) + AR=xiar + MPD_WARN="-Wall -Wno-unknown-pragmas" + MPD_OPT="-O2 -fpic -s" + MPD_PGEN="-wd11505 -prof-gen" + MPD_PUSE="-wd11505 -prof-use" + ;; + *clang*) + MPD_WARN="-Wall -W -Wno-unknown-pragmas" + MPD_OPT="-O2 -fpic" + ;; + *suncc*) + MPD_WARN= + MPD_OPT="-O2 -fpic -s" + ;; +esac + +# Auto-detect machine dependent settings: +M64= +M32= +if test -n "$MACHINE"; then + M64="-m64 " + M32="-m32 " + case "$MACHINE" in + x64|uint128|ansi64|full_coverage|ppro|ansi32|ansi-legacy|universal) + : ;; + *) + echo "configure: error: invalid MACHINE variable: $MACHINE" + exit 1 ;; + esac +elif test $ac_cv_sizeof_size_t -eq 8; then + if test $have_gcc_asm_for_x64 = yes; then + MACHINE="x64" + elif test $ac_cv_sizeof__uint128_t -eq 8; then + MACHINE="uint128" + else + MACHINE="ansi64" + fi +else + MACHINE="ansi32" + if test $have_gcc_asm_for_x87 = yes; then + case $CC in + *gcc*|*clang*) # icc >= 11.0 works as well + case $ac_sys_system in + darwin*|Darwin*) + ;; + *) + MACHINE="ppro" + ;; + esac + ;; + esac + fi +fi + +# Set configuration variables: +MPD_PREC=9 +MPD_DPREC=18 +CONFIGURE_LDFLAGS= +case "$MACHINE" in + x64) + MPD_CONFIG=$M64"-DCONFIG_64 -DASM" + CONFIGURE_LDFLAGS=$M64 + MPD_PREC=19 + MPD_DPREC=38 + ;; + uint128) + MPD_CONFIG=$M64"-DCONFIG_64 -DANSI -DHAVE_UINT128_T" + CONFIGURE_LDFLAGS=$M64 + MPD_PREC=19 + MPD_DPREC=38 + ;; + ansi64) + MPD_CONFIG=$M64"-DCONFIG_64 -DANSI" + CONFIGURE_LDFLAGS=$M64 + MPD_PREC=19 + MPD_DPREC=38 + ;; + full_coverage) + # Formerly ansi64c32, for testing only! + MPD_CONFIG=$M64"-DCONFIG_32 -DANSI" + CONFIGURE_LDFLAGS=$M64 + ;; + ppro) + MPD_CONFIG=$M32"-DCONFIG_32 -DPPRO -DASM" + CONFIGURE_LDFLAGS=$M32 + # Some versions of gcc miscompile inline asm: + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 + # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html + case $CC in + *gcc*) + AC_MSG_CHECKING(for gcc ipa-pure-const bug) + saved_cflags="$CFLAGS" + CFLAGS="-O2" + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + __attribute__((noinline)) int + foo(int *p) { + int r; + asm ( "movl \$6, (%1)\n\t" + "xorl %0, %0\n\t" + : "=r" (r) : "r" (p) : "memory" + ); + return r; + } + int main() { + int p = 8; + if ((foo(&p) ? : p) != 6) + return 1; + return 0; + } + ]])], + [have_ipa_pure_const_bug=no], + [have_ipa_pure_const_bug=yes], + [have_ipa_pure_const_bug=undefined]) + CFLAGS="$saved_cflags" + AC_MSG_RESULT($have_ipa_pure_const_bug) + if test "$have_ipa_pure_const_bug" = yes; then + MPD_CONFIG="$MPD_CONFIG -fno-ipa-pure-const" + AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1, + [Define if gcc has the ipa-pure-const bug.]) + fi + ;; + esac + ;; + ansi32) + MPD_CONFIG=$M32"-DCONFIG_32 -DANSI" + CONFIGURE_LDFLAGS=$M32 + ;; + ansi-legacy) + MPD_CONFIG=$M32"-DCONFIG_32 -DANSI -DLEGACY_COMPILER" + CONFIGURE_LDFLAGS=$M32 + ;; + universal) + MPD_CONFIG="-DUNIVERSAL" +esac + + +# Substitute variables and generate output: +AC_SUBST(AR) +AC_SUBST(MPD_HEADER) +AC_SUBST(MPD_WARN) +AC_SUBST(MPD_CONFIG) +AC_SUBST(MPD_OPT) + +AC_SUBST(MPD_CCOV) +AC_SUBST(MPD_LDCOV) +AC_SUBST(MPD_PGEN) +AC_SUBST(MPD_PUSE) +AC_SUBST(MPD_PREC) +AC_SUBST(MPD_DPREC) + +if test -z "$CFLAGS"; then + CONFIGURE_CFLAGS="$MPD_WARN $MPD_CONFIG $MPD_OPT" +else + CONFIGURE_CFLAGS="$MPD_CONFIG -fpic $CFLAGS" +fi +if test "$have_glibc_memmove_bug" = yes; then + CONFIGURE_CFLAGS="$CONFIGURE_CFLAGS -U_FORTIFY_SOURCE" +fi + +if test -n "$LDFLAGS"; then + CONFIGURE_LDFLAGS="$LDFLAGS" +fi + +AC_SUBST(CONFIGURE_CFLAGS) +AC_SUBST(CONFIGURE_LDFLAGS) + +AC_OUTPUT + +GLIBC_MEMMOVE_BUG_WARN=" +***************************** WARNING ********************************* + +Detected glibc _FORTIFY_SOURCE/memmove bug. See: + + http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html + +Enabling -U_FORTIFY_SOURCE workaround. If -D_FORTIFY_SOURCE is also +present in the command line, make sure that the order of the two +options is: + + ... -D_FORTIFY_SOURCE=2 ... -U_FORTIFY_SOURCE ... + +A better solution is to upgrade glibc or to report the bug to your +OS vendor. + +***************************** WARNING ********************************* +" +if test "$have_glibc_memmove_bug" = yes; then + echo "$GLIBC_MEMMOVE_BUG_WARN" +fi + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/bench.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/bench.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,145 @@ +#!/usr/bin/env python + +# +# Copyright (C) 2001-2010 Python Software Foundation. All Rights Reserved. +# Modified and extended by Stefan Krah. +# + + +import time +from math import log, ceil +import decimal +import cdecimal +from gmpy import mpf, mpz, set_minprec + + +Decimal = decimal.Decimal +Cdecimal = cdecimal.Decimal + + +# Pi function from the decimal.py documentation +def pi_native(prec=None): + """native float""" + lasts, t, s, n, na, d, da = 0, 3.0, 3, 1, 0, 0, 24 + while s != lasts: + lasts = s + n, na = n+na, na+8 + d, da = d+da, da+32 + t = (t * n) / d + s += t + return s + +def pi_decimal(prec): + """Decimal""" + decimal.getcontext().prec = prec + lasts, t, s, n, na, d, da = Decimal(0), Decimal(3), Decimal(3), Decimal(1), Decimal(0), Decimal(0), Decimal(24) + while s != lasts: + lasts = s + n, na = n+na, na+8 + d, da = d+da, da+32 + t = (t * n) / d + s += t + return s + +def pi_Cdecimal(prec): + """cdecimal.Cdecimal""" + cdecimal.getcontext().prec = prec + lasts, t, s, n, na, d, da = Cdecimal(0), Cdecimal(3), Cdecimal(3), Cdecimal(1), Cdecimal(0), Cdecimal(0), Cdecimal(24) + while s != lasts: + lasts = s + n, na = n+na, na+8 + d, da = d+da, da+32 + t = (t * n) / d + s += t + return s + +def pi_mpf(prec): + """gmp.mpf""" + set_minprec(prec) + lasts, t, s, n, na, d, da = mpf(0), mpf(3), mpf(3), mpf(1), mpf(0), mpf(0), mpf(24) + while s != lasts: + lasts = s + n, na = n+na, na+8 + d, da = d+da, da+32 + t = (t * n) / d + s += t + return s + + +def factorial(n, m): + if (n > m): + return factorial(m, n) + elif m == 0: + return 1 + elif n == m: + return n + else: + return factorial(n, (n+m)//2) * factorial((n+m)//2 + 1, m) + + +d = { + "native": pi_native, + "cdecimal": pi_Cdecimal, + "gmpy": pi_mpf, + "decimal": pi_decimal, +} + + +def prec_to_bits(prec): + return ceil(prec * log(10) / log(2)) + + + +print("\n# ======================================================================") +print("# Calculating pi, 10000 iterations") +print("# ======================================================================\n") + +for prec in [9, 19, 38, 100]: + print("\nPrecision: %d decimal digits\n" % prec) + for name in ["native", "cdecimal", "gmpy", "decimal"]: + if prec > 19 and (name == "native" or name == "decimal"): + continue + p = prec + if name == "gmpy": + p = int(prec_to_bits(prec)) + func = d[name] + start = time.time() + for i in range(10000): + x = func(p) + print("%s:" % name) + print("result: %s" % str(x)) + print("time: %fs\n" % (time.time()-start)) + + +print("\n# ======================================================================") +print("# Factorial") +print("# ======================================================================\n") + +cdecimal.getcontext().prec = cdecimal.MAX_PREC + +for n in [100000, 1000000, 10000000, 100000000]: + + print("n = %d\n" % n) + + start_calc = time.time() + x = factorial(Cdecimal(n), 0) + end_calc = time.time() + start_conv = time.time() + sx = str(x) + end_conv = time.time() + print("cdecimal:") + print("calculation time: %fs" % (end_calc-start_calc)) + print("conversion time: %fs\n" % (end_conv-start_conv)) + + start_calc = time.time() + y = factorial(mpz(n), 0) + end_calc = time.time() + start_conv = time.time() + sy = str(y) + end_conv = time.time() + + print("gmpy:") + print("calculation time: %fs" % (end_calc-start_calc)) + print("conversion time: %fs\n\n" % (end_conv-start_conv)) + + assert(sx == sy) diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/ctx-deccheck.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/ctx-deccheck.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,1075 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2008-2010 Stefan Krah. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +# Usage: python ctx-deccheck.py [--short|--medium|--long|--all] + + +import cdecimal, decimal +import sys, inspect +from copy import copy +from randdec import * + + +EXIT_STATUS = 0 +py_minor = sys.version_info[1] +py_micro = sys.version_info[2] + + +# Translate symbols. +deccond = { + cdecimal.Clamped: decimal.Clamped, + cdecimal.ConversionSyntax: decimal.ConversionSyntax, + cdecimal.DivisionByZero: decimal.DivisionByZero, + cdecimal.DivisionImpossible: decimal.InvalidOperation, + cdecimal.DivisionUndefined: decimal.DivisionUndefined, + cdecimal.Inexact: decimal.Inexact, + cdecimal.InvalidContext: decimal.InvalidContext, + cdecimal.InvalidOperation: decimal.InvalidOperation, + cdecimal.Overflow: decimal.Overflow, + cdecimal.Rounded: decimal.Rounded, + cdecimal.Subnormal: decimal.Subnormal, + cdecimal.Underflow: decimal.Underflow, +} + +mpdcond = { + decimal.Clamped: cdecimal.Clamped, + decimal.ConversionSyntax: cdecimal.ConversionSyntax, + decimal.DivisionByZero: cdecimal.DivisionByZero, + decimal.InvalidOperation: cdecimal.DivisionImpossible, + decimal.DivisionUndefined: cdecimal.DivisionUndefined, + decimal.Inexact: cdecimal.Inexact, + decimal.InvalidContext: cdecimal.InvalidContext, + decimal.InvalidOperation: cdecimal.InvalidOperation, + decimal.Overflow: cdecimal.Overflow, + decimal.Rounded: cdecimal.Rounded, + decimal.Subnormal: cdecimal.Subnormal, + decimal.Underflow: cdecimal.Underflow +} + +decround = { + cdecimal.ROUND_UP: decimal.ROUND_UP, + cdecimal.ROUND_DOWN: decimal.ROUND_DOWN, + cdecimal.ROUND_CEILING: decimal.ROUND_CEILING, + cdecimal.ROUND_FLOOR: decimal.ROUND_FLOOR, + cdecimal.ROUND_HALF_UP: decimal.ROUND_HALF_UP, + cdecimal.ROUND_HALF_DOWN: decimal.ROUND_HALF_DOWN, + cdecimal.ROUND_HALF_EVEN: decimal.ROUND_HALF_EVEN, + cdecimal.ROUND_05UP: decimal.ROUND_05UP +} + + +class Context(object): + """Provides a convenient way of syncing the cdecimal and decimal contexts""" + + __slots__ = ['f', 'd'] + + def __init__(self, mpdctx=cdecimal.getcontext()): + """Initialization is from the cdecimal context""" + self.f = mpdctx + self.d = decimal.getcontext() + self.d.prec = self.f.prec + self.d.Emin = self.f.Emin + self.d.Emax = self.f.Emax + self.d.rounding = decround[self.f.rounding] + self.d.capitals = self.f.capitals + self.settraps([sig for sig in self.f.traps if self.f.traps[sig]]) + self.setstatus([sig for sig in self.f.flags if self.f.flags[sig]]) + self.d._clamp = self.f._clamp + + def getprec(self): + assert(self.f.prec == self.d.prec) + return self.f.prec + + def setprec(self, val): + self.f.prec = val + self.d.prec = val + + def getemin(self): + assert(self.f.Emin == self.d.Emin) + return self.f.Emin + + def setemin(self, val): + self.f.Emin = val + self.d.Emin = val + + def getemax(self): + assert(self.f.Emax == self.d.Emax) + return self.f.Emax + + def setemax(self, val): + self.f.Emax = val + self.d.Emax = val + + def getround(self): + return self.d.rounding + + def setround(self, val): + self.f.rounding = val + self.d.rounding = decround[val] + + def getcapitals(self): + assert(self.f.capitals == self.d.capitals) + return self.f.capitals + + def setcapitals(self, val): + self.f.capitals = val + self.d.capitals = val + + def getclamp(self): + assert(self.f._clamp == self.d._clamp) + return self.f._clamp + + def setclamp(self, val): + self.f._clamp = val + self.d._clamp = val + + prec = property(getprec, setprec) + Emin = property(getemin, setemin) + Emax = property(getemax, setemax) + rounding = property(getround, setround) + clamp = property(getclamp, setclamp) + capitals = property(getcapitals, setcapitals) + + def clear_traps(self): + self.f.clear_traps() + for trap in self.d.traps: + self.d.traps[trap] = False + + def clear_status(self): + self.f.clear_flags() + self.d.clear_flags() + + def settraps(self, lst): # cdecimal signal list + self.clear_traps() + for signal in lst: + self.f.traps[signal] = True + self.d.traps[deccond[signal]] = True + + def setstatus(self, lst): # cdecimal signal list + self.clear_status() + for signal in lst: + self.f.flags[signal] = True + self.d.flags[deccond[signal]] = True + + def assert_eq_status(self): + """assert equality of cdecimal and decimal status""" + for signal in self.f.flags: + if signal == cdecimal.FloatOperation: + continue + if self.f.flags[signal] == (not self.d.flags[deccond[signal]]): + return False + return True + + +# We don't want exceptions so that we can compare the status flags. +context = Context() +context.Emin = cdecimal.MIN_EMIN +context.Emax = cdecimal.MAX_EMAX +context.clear_traps() + + +_exc_fmt = "\ +cdecimal_sci: %s\n\ +decimal_sci: %s\n\ +cdecimal_eng: %s\n\ +decimal_eng: %s\n" + +_exc_fmt_tuple = "\ +cdecimal_tuple: %s\n\ +decimal_tuple: %s\n" + +_exc_fmt_obj = "\ +cdecimal: %s\n\ +decimal: %s\n\n" + +class CdecException(ArithmeticError): + def __init__(self, result, funcname, operands, fctxstr, dctxstr): + self.errstring = "Error in %s(%s" % (funcname, operands[0].dec) + for op in operands[1:]: + if op: self.errstring += ", %s" % op.dec + self.errstring += "):\n\n" + if isinstance(result, cdec): + self.errstring += _exc_fmt % (str(result.mpd), + str(result.dec), + result.mpd.to_eng(), + result.dec.to_eng_string()) + mpd_tuple = result.mpd.as_tuple() + dec_tuple = result.dec.as_tuple() + if mpd_tuple != dec_tuple: + self.errstring += _exc_fmt_tuple % (str(mpd_tuple), + str(dec_tuple)) + else: + self.errstring += _exc_fmt_obj % (str(result[0]), str(result[1])) + self.errstring += "%s\n%s\n\n" % (fctxstr, dctxstr) + def __str__(self): + return self.errstring + + +class dHandlerCdec: + """For cdec return values: + + Handle known disagreements between decimal.py and cdecimal.so. + This is just a temporary measure against cluttered output. + Detection is crude and possibly unreliable.""" + + def __init__(self): + self.logb_round_if_gt_prec = 0 + self.ulpdiff = 0 + self.powmod_zeros = 0 + self.total_mag_nan = 0 + self.quantize_status = 0 + self.maxctx = decimal.Context(Emax=10**18, Emin=-10**18) + + def default(self, result, operands): + return False + + def harrison_ulp(self, dec): + """Harrison ULP: ftp://ftp.inria.fr/INRIA/publication/publi-pdf/RR/RR-5504.pdf""" + a = dec.next_plus() + b = dec.next_minus() + return abs(a - b) + + def standard_ulp(self, dec, prec): + return decimal._dec_from_triple(0, '1', dec._exp+len(dec._int)-prec) + + def rounding_direction(self, x, mode): + """Determine the effective direction of the rounding when + the exact result x is rounded according to mode. + Return -1 for downwards, 0 for undirected, 1 for upwards, + 2 for ROUND_05UP.""" + d = decimal + cmp = 1 if x.compare_total(d.Decimal("+0")) >= 0 else -1 + + if mode in (d.ROUND_HALF_EVEN, d.ROUND_HALF_UP, d.ROUND_HALF_DOWN): + return 0 + elif mode == d.ROUND_CEILING: + return 1 + elif mode == d.ROUND_FLOOR: + return -1 + elif mode == d.ROUND_UP: + return cmp + elif mode == d.ROUND_DOWN: + return -cmp + elif mode == d.ROUND_05UP: + return 2 + else: + raise ValueError("Unexpected rounding mode: %s" % mode) + + def check_ulpdiff(self, exact, rounded): + # current precision + p = context.d.prec + + # Convert infinities to the largest representable number + 1. + x = exact + if exact.is_infinite(): + x = decimal._dec_from_triple(exact._sign, '10', context.d.Emax) + y = rounded + if rounded.is_infinite(): + y = decimal._dec_from_triple(rounded._sign, '10', context.d.Emax) + + # err = (rounded - exact) / ulp(rounded) + self.maxctx.prec = p * 2 + t = self.maxctx.subtract(y, x) + if context.f._flags & cdecimal.DecClamped or \ + context.f._flags & cdecimal.DecUnderflow: + # The standard ulp does not work in Underflow territory. + ulp = self.harrison_ulp(y) + else: + ulp = self.standard_ulp(y, p) + # Error in ulps. + err = self.maxctx.divide(t, ulp) + + d = decimal + dir = self.rounding_direction(x, context.d.rounding) + if dir == 0: + if d.Decimal("-0.6") < err < d.Decimal("0.6"): + return True + elif dir == 1: # directed, upwards + if d.Decimal("-0.1") < err < d.Decimal("1.1"): + return True + elif dir == -1: # directed, downwards + if d.Decimal("-1.1") < err < d.Decimal("0.1"): + return True + else: # ROUND_05UP + if d.Decimal("-1.1") < err < d.Decimal("1.1"): + return True + + print("ulp: %s error: %s exact: %s mpd_rounded: %s" + % (ulp, err, exact, rounded)) + return False + + def un_resolve_ulp(self, result, funcname, operands): + """Check if results of cdecimal's exp, ln and log10 functions are + within the allowed ulp ranges. This function is only called if + context.f._allcr is 0.""" + # "exact" result, double precision, half_even + self.maxctx.prec = context.d.prec * 2 + op = operands[0].dec + exact = getattr(op, funcname)(context=self.maxctx) + + # cdecimal's rounded result + s = str(result.mpd) + rounded = decimal.Decimal(s) + + self.ulpdiff += 1 + return self.check_ulpdiff(exact, rounded) + + def bin_resolve_ulp(self, result, funcname, operands): + """Check if results of cdecimal's power function are within the + allowed ulp ranges.""" + # "exact" result, double precision, half_even + self.maxctx.prec = context.d.prec * 2 + op1 = operands[0].dec + op2 = operands[1].dec + exact = getattr(op1, funcname)(op2, context=self.maxctx) + + # cdecimal's rounded result + s = str(result.mpd) + rounded = decimal.Decimal(s) + + self.ulpdiff += 1 + return self.check_ulpdiff(exact, rounded) + + def exp(self, result, operands): + if result.mpd.is_nan() or result.dec.is_nan(): + return False + if context.f._allcr: + return False + return self.un_resolve_ulp(result, "exp", operands) + + def log10(self, result, operands): + if result.mpd.is_nan() or result.dec.is_nan(): + return False + if context.f._allcr: + return False + return self.un_resolve_ulp(result, "log10", operands) + + def ln(self, result, operands): + if result.mpd.is_nan() or result.dec.is_nan(): + return False + if context.f._allcr: + return False + return self.un_resolve_ulp(result, "ln", operands) + + def __pow__(self, result, operands): + if operands[2] is not None: # three argument __pow__ + # issue7049: third arg must fit into precision + if (operands[0].mpd.is_zero() != operands[1].mpd.is_zero()): + if (result.mpd == 0 or result.mpd == 1) and result.dec.is_nan(): + if (not context.f.flags[cdecimal.InvalidOperation]) and \ + context.d.flags[decimal.InvalidOperation]: + self.powmod_zeros += 1 + return True + # issue7049: ideal exponent + if decimal.Decimal(str(result.mpd)) == result.dec: + return True + elif result.mpd.is_nan() or result.dec.is_nan(): + return False + elif context.f.flags[cdecimal.Rounded] and \ + context.f.flags[cdecimal.Inexact] and \ + context.d.flags[decimal.Rounded] and \ + context.d.flags[decimal.Inexact]: + # decimal.py: correctly-rounded pow() + return self.bin_resolve_ulp(result, "__pow__", operands) + else: + return False + power = __pow__ + + if py_minor < 2: + def rotate(self, result, operands): + """truncate excess digits before the operation""" + if len(operands[0].dec._int) > context.f.prec: + return True + return False + shift = rotate + + def compare_total_mag(self, result, operands): + if operands[0].mpd.is_nan() and operands[1].mpd.is_nan() and \ + abs(result.mpd) == 1 and abs(result.dec) == 1: + self.total_mag_nan += 1 + return True + return False + compare_total = compare_total_mag + + def logb(self, result, operands): + if context.f.flags[cdecimal.Rounded] and \ + (not context.d.flags[decimal.Rounded]): + self.logb_round_if_gt_prec += 1 + return True + return False + + +class dHandlerObj(): + """For non-decimal return values: + + Handle known disagreements between decimal.py and cdecimal.so. + Currently there are none.""" + + def __init__(self): + pass + + def default(self, result, operands): + return False + __eq__ = __ne__ = __ge__ = __gt__ = __le__ = __lt__ = \ + __repr__ = __str__ = default + + if py_minor <= 1: + # Fixed in release31-maint, but a lot of distributed + # versions do not have the fix yet. + def is_normal(self, result, operands): + # Issue7099 + if operands[0].mpd.is_normal(): + return True + + +dhandler_cdec = dHandlerCdec() +def cdec_known_disagreement(result, funcname, operands): + return getattr(dhandler_cdec, funcname, dhandler_cdec.default)(result, operands) + +dhandler_obj = dHandlerObj() +def obj_known_disagreement(result, funcname, operands): + return getattr(dhandler_obj, funcname, dhandler_obj.default)(result, operands) + + +def verify(result, funcname, operands): + """Verifies that after operation 'funcname' with operand(s) 'operands' + result[0] and result[1] as well as the context flags have the same + values.""" + global EXIT_STATUS + if result[0] != result[1] or not context.assert_eq_status(): + if obj_known_disagreement(result, funcname, operands): + return # skip known disagreements + EXIT_STATUS = 1 + raise CdecException(result, funcname, operands, + str(context.f), str(context.d)) + + +class cdec(object): + """Joins cdecimal.so and decimal.py for redundant calculations with error + checking. Always calls the context methods of cdecimal and decimal. This + is not very clean, but an easy way of adapting deccheck.py for testing + context methods.""" + + __slots__ = ['mpd', 'dec'] + + def __new__(cls, value=None): + self = object.__new__(cls) + self.mpd = None + self.dec = None + if value is not None: + context.clear_status() + if isinstance(value, float): + self.mpd = context.f.create_decimal_from_float(value) + self.dec = context.d.create_decimal_from_float(value) + else: + self.mpd = context.f.create_decimal(value) + self.dec = context.d.create_decimal(value) + self.verify('__xnew__', (value,)) + return self + + def verify(self, funcname, operands): + """Verifies that after operation 'funcname' with operand(s) 'operands' + self.mpd and self.dec as well as the context flags have the same + values.""" + global EXIT_STATUS + mpdstr = str(self.mpd) + decstr = str(self.dec) + mpdstr_eng = self.mpd.to_eng_string() + decstr_eng = self.dec.to_eng_string() + if mpdstr != decstr or mpdstr_eng != decstr_eng or \ + not context.assert_eq_status(): + if cdec_known_disagreement(self, funcname, operands): + return # skip known disagreements + EXIT_STATUS = 1 + raise CdecException(self, funcname, operands, + str(context.f), str(context.d)) + + def unaryfunc(self, funcname): + "unary function returning a cdec, uses the context methods" + context.clear_status() + c = cdec() + c.mpd = getattr(context.f, funcname)(self.mpd) + c.dec = getattr(context.d, funcname)(self.dec) + c.verify(funcname, (self,)) + return c + + def obj_unaryfunc(self, funcname): + "unary function returning an object other than a cdec" + context.clear_status() + r_mpd = getattr(context.f, funcname)(self.mpd) + r_dec = getattr(context.d, funcname)(self.dec) + verify((r_mpd, r_dec), funcname, (self,)) + return r_mpd + + def binaryfunc(self, other, funcname): + "binary function returning a cdec, uses the context methods" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + c.mpd = getattr(context.f, funcname)(self.mpd, other_mpd) + c.dec = getattr(context.d, funcname)(self.dec, other_dec) + c.verify(funcname, (self, other)) + return c + + def obj_binaryfunc(self, other, funcname): + "binary function returning an object other than a cdec" + context.clear_status() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + r_mpd = getattr(context.f, funcname)(self.mpd, other_mpd) + r_dec = getattr(context.d, funcname)(self.dec, other_dec) + verify((r_mpd, r_dec), funcname, (self, other)) + return r_mpd + + def ternaryfunc(self, other, third, funcname): + "ternary function returning a cdec, uses the context methods" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + third_mpd = third_dec = third + if isinstance(third, cdec): + third_mpd = third.mpd + third_dec = third.dec + if funcname == 'power': + if (third is not None): + c.mpd = context.f.powmod(self.mpd, other_mpd, third_mpd) + else: + c.mpd = context.f.pow(self.mpd, other_mpd) + else: + c.mpd = getattr(context.f, funcname)(self.mpd, other_mpd, third_mpd) + c.dec = getattr(context.d, funcname)(self.dec, other_dec, third_dec) + c.verify(funcname, (self, other, third)) + return c + + def __repr__(self): + self.obj_unaryfunc('__repr__') + return "cdec('" + str(self.mpd) + "')" + + def __str__(self): + self.obj_unaryfunc('__str__') + return str(self.mpd) + + def abs(self): + return self.unaryfunc('abs') + + def add(self, other): + return self.binaryfunc(other, 'add') + + def compare(self, other): + return self.binaryfunc(other, 'compare') + + def compare_signal(self, other): + return self.binaryfunc(other, 'compare_signal') + + def compare_total(self, other): + return self.binaryfunc(other, 'compare_total') + + def compare_total_mag(self, other): + return self.binaryfunc(other, 'compare_total_mag') + + def copy_abs(self): + return self.unaryfunc('copy_abs') + + def copy_decimal(self): + return self.unaryfunc('copy_decimal') + + def copy_negate(self): + return self.unaryfunc('copy_negate') + + def copy_sign(self, other): + return self.binaryfunc(other, 'copy_sign') + + def create_decimal(self): + return self.unaryfunc('create_decimal') + + def divide(self, other): + return self.binaryfunc(other, 'divide') + + def divide_int(self, other): + return self.binaryfunc(other, 'divide_int') + + def divmod(self, other): + context.clear_status() + q = cdec() + r = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + q.mpd, r.mpd = context.f.divmod(self.mpd, other_mpd) + q.dec, r.dec = context.d.divmod(self.dec, other_dec) + q.verify('divmod', (self, other)) + r.verify('divmod', (self, other)) + return (q, r) + + def exp(self): + return self.unaryfunc('exp') + + def fma(self, other, third): + return self.ternaryfunc(other, third, 'fma') + + # imag + # invroot + + def is_canonical(self): + return self.obj_unaryfunc('is_canonical') + + def is_finite(self): + return self.obj_unaryfunc('is_finite') + + def is_infinite(self): + return self.obj_unaryfunc('is_infinite') + + def is_nan(self): + return self.obj_unaryfunc('is_nan') + + def is_normal(self): + return self.obj_unaryfunc('is_normal') + + def is_qnan(self): + return self.obj_unaryfunc('is_qnan') + + def is_signed(self): + return self.obj_unaryfunc('is_signed') + + def is_snan(self): + return self.obj_unaryfunc('is_snan') + + def is_subnormal(self): + return self.obj_unaryfunc('is_subnormal') + + def is_zero(self): + return self.obj_unaryfunc('is_zero') + + def ln(self): + return self.unaryfunc('ln') + + def log10(self): + return self.unaryfunc('log10') + + def logb(self): + return self.unaryfunc('logb') + + def logical_and(self, other): + return self.binaryfunc(other, 'logical_and') + + def logical_invert(self): + return self.unaryfunc('logical_invert') + + def logical_or(self, other): + return self.binaryfunc(other, 'logical_or') + + def logical_xor(self, other): + return self.binaryfunc(other, 'logical_xor') + + def max(self, other): + return self.binaryfunc(other, 'max') + + def max_mag(self, other): + return self.binaryfunc(other, 'max_mag') + + def min(self, other): + return self.binaryfunc(other, 'min_mag') + + def min_mag(self, other): + return self.binaryfunc(other, 'min_mag') + + def minus(self): + return self.unaryfunc('minus') + + def multiply(self, other): + return self.binaryfunc(other, 'multiply') + + def next_minus(self): + return self.unaryfunc('next_minus') + + def next_plus(self): + return self.unaryfunc('next_plus') + + def next_toward(self, other): + return self.binaryfunc(other, 'next_toward') + + def normalize(self): + return self.unaryfunc('normalize') + + def number_class(self): + return self.obj_unaryfunc('number_class') + + def plus(self): + return self.unaryfunc('plus') + + def power(self, other, mod=None): + return self.ternaryfunc(other, mod, 'power') + + # powmod: same as __pow__ or power with three arguments + + def quantize(self, other): + return self.binaryfunc(other, 'quantize') + + # real + # reduce: same as normalize + + def remainder(self, other): + return self.binaryfunc(other, 'remainder') + + def remainder_near(self, other): + return self.binaryfunc(other, 'remainder_near') + + def rotate(self, other): + return self.binaryfunc(other, 'rotate') + + def same_quantum(self, other): + return self.obj_binaryfunc(other, 'same_quantum') + + def scaleb(self, other): + return self.binaryfunc(other, 'scaleb') + + def shift(self, other): + return self.binaryfunc(other, 'shift') + + # sign + + def sqrt(self): + return self.unaryfunc('sqrt') + + def subtract(self, other): + return self.binaryfunc(other, 'subtract') + + def to_eng_string(self): + return self.obj_unaryfunc('to_eng_string') + + def to_integral(self): + return self.unaryfunc('to_integral') + + def to_integral_exact(self): + return self.unaryfunc('to_integral_exact') + + def to_integral_value(self): + return self.unaryfunc('to_integral_value') + + def to_sci_string(self): + return self.obj_unaryfunc('to_sci_string') + + +def log(fmt, args=None): + if args: + sys.stdout.write(''.join((fmt, '\n')) % args) + else: + sys.stdout.write(''.join((str(fmt), '\n'))) + sys.stdout.flush() + +def test_unary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for rounding in sorted(decround): + context.rounding = rounding + rprec = 10**prec + exprange = context.f.Emax + if method in ['__int__', '__long__', '__trunc__', 'to_integral', \ + 'to_integral_value', 'to_integral_value']: + exprange = 9999 + for a in un_close_to_pow10(prec, exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_incr_digits_tuple(prec, exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for i in range(1000): + try: + s = randdec(prec, exprange) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + try: + s = randtuple(prec, exprange) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + +def test_un_logical(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for rounding in sorted(decround): + context.rounding = rounding + for a in logical_un_incr_digits(prec, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for i in range(1000): + try: + s = randdec(prec, 999999) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + +def test_binary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for rounding in sorted(decround): + context.rounding = rounding + exprange = context.f.Emax + if method in ['__pow__', '__rpow__', 'power']: + exprange = 9999 + for a, b in bin_close_to_pow10(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_incr_digits(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, exprange) + s2 = randdec(prec, exprange) + try: + x = cdec(s1) + y = cdec(s2) + getattr(x, method)(y) + except CdecException as err: + log(err) + +def test_bin_logical(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for rounding in sorted(decround): + context.rounding = rounding + for a, b in logical_bin_incr_digits(prec, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, 999999) + s2 = randdec(prec, 999999) + try: + x = cdec(s1) + y = cdec(s2) + getattr(x, method)(y) + except CdecException as err: + log(err) + +def test_ternary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for rounding in sorted(decround): + context.rounding = rounding + exprange = context.f.Emax + if method in ['__pow__', 'power']: + exprange = 9999 + for a, b, c in tern_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for a, b, c in tern_incr_digits(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, 2*exprange) + s2 = randdec(prec, 2*exprange) + s3 = randdec(prec, 2*exprange) + try: + x = cdec(s1) + y = cdec(s2) + z = cdec(s3) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + +def test_from_float(prec_lst): + log("testing create_decimal_from_float ...") + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for rounding in sorted(decround): + context.rounding = rounding + exprange = 384 + for i in range(1000): + intpart = str(random.randrange(100000000000000000000000000000000000000)) + fracpart = str(random.randrange(100000000000000000000000000000000000000)) + exp = str(random.randrange(-384, 384)) + fstring = intpart + '.' + fracpart + 'e' + exp + f = float(fstring) + try: + c = cdec(f) + except CdecException as err: + log(err) + + +if __name__ == '__main__': + + import time + + samples = 1 + iterations = 1 + + if '--short' in sys.argv: + samples = 1 + iterations = 1 + elif '--medium' in sys.argv: + samples = 1 + iterations = None + elif '--long' in sys.argv: + samples = 5 + iterations = None + elif '--all' in sys.argv: + samples = 100 + iterations = None + + all_context_methods = set(dir(cdecimal.getcontext()) + dir(decimal.getcontext())) + all_cdec_methods = [m for m in dir(cdec) if m in all_context_methods] + untested_methods = [m for m in all_context_methods if not (m in all_cdec_methods)] + + unary_methods = [] + binary_methods = [] + ternary_methods = [] + for m in all_cdec_methods: + try: + l = len(inspect.getargspec(getattr(cdec, m))[0]) + except TypeError: + continue + if l == 1: + unary_methods.append(m) + elif l == 2: + binary_methods.append(m) + elif l == 3: + ternary_methods.append(m) + else: + raise ValueError((m, l)) + + unary_methods.remove('__repr__') + unary_methods.remove('__str__') + binary_methods.remove('__new__') + untested_methods.append('__repr__') + untested_methods.append('__str__') + untested_methods.append('__new__') + untested_methods.remove('create_decimal_from_float') + + binary_methods.append('power') + + untested_methods.sort() + unary_methods.sort() + binary_methods.sort() + ternary_methods.sort() + + + x = int(time.time()) + random.seed(x) + log("\nRandom seed: %d\n\n", x) + log("Skipping tests: \n\n%s\n", untested_methods) + + + for method in unary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_unary(method, prec_lst, iterations) + + for method in binary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_binary(method, prec_lst, iterations) + + for method in ternary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_ternary(method, prec_lst, iterations) + + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_un_logical('logical_invert', prec_lst, iterations) + + for method in ['logical_and', 'logical_or', 'logical_xor']: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_bin_logical(method, prec_lst, iterations) + + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_from_float(prec_lst) + + + sys.exit(EXIT_STATUS) diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/deccheck.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/deccheck.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,1537 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2008-2010 Stefan Krah. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + + +# +# The cdec (for "check decimal") class checks cdecimal.so against decimal.py. +# A cdec object consists of a cdecimal.Decimal and a decimal.Decimal. Every +# operation is carried out on both types. If the results don't match, an +# exception is raised. +# +# Usage: python deccheck.py [--short|--medium|--long|--all] +# + + +import cdecimal, decimal +import sys, inspect +import array + +from copy import copy +from randdec import * +from randfloat import * + + +EXIT_STATUS = 0 +py_minor = sys.version_info[1] +py_micro = sys.version_info[2] + + +# Translate symbols. +deccond = { + cdecimal.Clamped: decimal.Clamped, + cdecimal.ConversionSyntax: decimal.ConversionSyntax, + cdecimal.DivisionByZero: decimal.DivisionByZero, + cdecimal.DivisionImpossible: decimal.InvalidOperation, + cdecimal.DivisionUndefined: decimal.DivisionUndefined, + cdecimal.Inexact: decimal.Inexact, + cdecimal.InvalidContext: decimal.InvalidContext, + cdecimal.InvalidOperation: decimal.InvalidOperation, + cdecimal.Overflow: decimal.Overflow, + cdecimal.Rounded: decimal.Rounded, + cdecimal.Subnormal: decimal.Subnormal, + cdecimal.Underflow: decimal.Underflow, +} + +mpdcond = { + decimal.Clamped: cdecimal.Clamped, + decimal.ConversionSyntax: cdecimal.ConversionSyntax, + decimal.DivisionByZero: cdecimal.DivisionByZero, + decimal.InvalidOperation: cdecimal.DivisionImpossible, + decimal.DivisionUndefined: cdecimal.DivisionUndefined, + decimal.Inexact: cdecimal.Inexact, + decimal.InvalidContext: cdecimal.InvalidContext, + decimal.InvalidOperation: cdecimal.InvalidOperation, + decimal.Overflow: cdecimal.Overflow, + decimal.Rounded: cdecimal.Rounded, + decimal.Subnormal: cdecimal.Subnormal, + decimal.Underflow: cdecimal.Underflow +} + +decround = { + cdecimal.ROUND_UP: decimal.ROUND_UP, + cdecimal.ROUND_DOWN: decimal.ROUND_DOWN, + cdecimal.ROUND_CEILING: decimal.ROUND_CEILING, + cdecimal.ROUND_FLOOR: decimal.ROUND_FLOOR, + cdecimal.ROUND_HALF_UP: decimal.ROUND_HALF_UP, + cdecimal.ROUND_HALF_DOWN: decimal.ROUND_HALF_DOWN, + cdecimal.ROUND_HALF_EVEN: decimal.ROUND_HALF_EVEN, + cdecimal.ROUND_05UP: decimal.ROUND_05UP +} + + +class Context(object): + """Provides a convenient way of syncing the cdecimal and decimal contexts""" + + __slots__ = ['f', 'd'] + + def __init__(self, mpdctx=cdecimal.getcontext()): + """Initialization is from the cdecimal context""" + self.f = mpdctx + self.d = decimal.getcontext() + self.d.prec = self.f.prec + self.d.Emin = self.f.Emin + self.d.Emax = self.f.Emax + self.d.rounding = decround[self.f.rounding] + self.d.capitals = self.f.capitals + self.settraps([sig for sig in self.f.traps if self.f.traps[sig]]) + self.setstatus([sig for sig in self.f.flags if self.f.flags[sig]]) + self.d._clamp = self.f._clamp + + def getprec(self): + assert(self.f.prec == self.d.prec) + return self.f.prec + + def setprec(self, val): + self.f.prec = val + self.d.prec = val + + def getemin(self): + assert(self.f.Emin == self.d.Emin) + return self.f.Emin + + def setemin(self, val): + self.f.Emin = val + self.d.Emin = val + + def getemax(self): + assert(self.f.Emax == self.d.Emax) + return self.f.Emax + + def setemax(self, val): + self.f.Emax = val + self.d.Emax = val + + def getround(self): + return self.d.rounding + + def setround(self, val): + self.f.rounding = val + self.d.rounding = decround[val] + + def getcapitals(self): + assert(self.f.capitals == self.d.capitals) + return self.f.capitals + + def setcapitals(self, val): + self.f.capitals = val + self.d.capitals = val + + def getclamp(self): + assert(self.f._clamp == self.d._clamp) + return self.f._clamp + + def setclamp(self, val): + self.f._clamp = val + self.d._clamp = val + + prec = property(getprec, setprec) + Emin = property(getemin, setemin) + Emax = property(getemax, setemax) + rounding = property(getround, setround) + clamp = property(getclamp, setclamp) + capitals = property(getcapitals, setcapitals) + + def clear_traps(self): + self.f.clear_traps() + for trap in self.d.traps: + self.d.traps[trap] = False + + def clear_status(self): + self.f.clear_flags() + self.d.clear_flags() + + def settraps(self, lst): # cdecimal signal list + self.clear_traps() + for signal in lst: + self.f.traps[signal] = True + self.d.traps[deccond[signal]] = True + + def setstatus(self, lst): # cdecimal signal list + self.clear_status() + for signal in lst: + self.f.flags[signal] = True + self.d.flags[deccond[signal]] = True + + def assert_eq_status(self): + """assert equality of cdecimal and decimal status""" + for signal in self.f.flags: + if signal == cdecimal.FloatOperation: + continue + if self.f.flags[signal] == (not self.d.flags[deccond[signal]]): + return False + return True + + +# We don't want exceptions so that we can compare the status flags. +context = Context() +context.Emin = cdecimal.MIN_EMIN +context.Emax = cdecimal.MAX_EMAX +context.clear_traps() + +# When creating decimals, cdecimal is ultimately limited by the maximum +# context values. We emulate this restriction for decimal.py. +maxcontext = decimal.Context( + prec=cdecimal.MAX_PREC, + Emin=cdecimal.MIN_EMIN, + Emax=cdecimal.MAX_EMAX, + rounding=decimal.ROUND_HALF_UP, + capitals=1 +) +maxcontext._clamp = 0 + +def decimal_new(value): + maxcontext.traps = copy(context.d.traps) + maxcontext.clear_flags() + dec = maxcontext.create_decimal(value) + if maxcontext.flags[decimal.Inexact] or \ + maxcontext.flags[decimal.Rounded]: + dec = decimal.Decimal("NaN") + context.d.flags[decimal.InvalidOperation] = True + return dec + + +_exc_fmt = "\ +cdecimal_sci: %s\n\ +decimal_sci: %s\n\ +cdecimal_eng: %s\n\ +decimal_eng: %s\n" + +_exc_fmt_tuple = "\ +cdecimal_tuple: %s\n\ +decimal_tuple: %s\n" + +_exc_fmt_obj = "\ +cdecimal: %s\n\ +decimal: %s\n\n" + +class CdecException(ArithmeticError): + def __init__(self, result, funcname, operands, fctxstr, dctxstr): + self.errstring = "Error in %s(%s" % (funcname, operands[0]) + for op in operands[1:]: + self.errstring += ", %s" % op + self.errstring += "):\n\n" + if isinstance(result, cdec): + self.errstring += _exc_fmt % (str(result.mpd), + str(result.dec), + result.mpd.to_eng(), + result.dec.to_eng_string()) + mpd_tuple = result.mpd.as_tuple() + dec_tuple = result.dec.as_tuple() + if mpd_tuple != dec_tuple: + self.errstring += _exc_fmt_tuple % (str(mpd_tuple), + str(dec_tuple)) + else: + self.errstring += _exc_fmt_obj % (str(result[0]), str(result[1])) + self.errstring += "%s\n%s\n\n" % (fctxstr, dctxstr) + def __str__(self): + return self.errstring + + +class dHandlerCdec: + """For cdec return values: + + Handle known disagreements between decimal.py and cdecimal.so. + This is just a temporary measure against cluttered output. + Detection is crude and possibly unreliable.""" + + def __init__(self): + self.logb_round_if_gt_prec = 0 + self.ulpdiff = 0 + self.powmod_zeros = 0 + self.total_mag_nan = 0 + self.quantize_status = 0 + self.max_status = 0 + self.maxctx = decimal.Context(Emax=10**18, Emin=-10**18) + + def default(self, result, operands): + return False + + def harrison_ulp(self, dec): + """Harrison ULP: ftp://ftp.inria.fr/INRIA/publication/publi-pdf/RR/RR-5504.pdf""" + a = dec.next_plus() + b = dec.next_minus() + return abs(a - b) + + def standard_ulp(self, dec, prec): + return decimal._dec_from_triple(0, '1', dec._exp+len(dec._int)-prec) + + def rounding_direction(self, x, mode): + """Determine the effective direction of the rounding when + the exact result x is rounded according to mode. + Return -1 for downwards, 0 for undirected, 1 for upwards, + 2 for ROUND_05UP.""" + d = decimal + cmp = 1 if x.compare_total(d.Decimal("+0")) >= 0 else -1 + + if mode in (d.ROUND_HALF_EVEN, d.ROUND_HALF_UP, d.ROUND_HALF_DOWN): + return 0 + elif mode == d.ROUND_CEILING: + return 1 + elif mode == d.ROUND_FLOOR: + return -1 + elif mode == d.ROUND_UP: + return cmp + elif mode == d.ROUND_DOWN: + return -cmp + elif mode == d.ROUND_05UP: + return 2 + else: + raise ValueError("Unexpected rounding mode: %s" % mode) + + def check_ulpdiff(self, exact, rounded): + # current precision + p = context.d.prec + + # Convert infinities to the largest representable number + 1. + x = exact + if exact.is_infinite(): + x = decimal._dec_from_triple(exact._sign, '10', context.d.Emax) + y = rounded + if rounded.is_infinite(): + y = decimal._dec_from_triple(rounded._sign, '10', context.d.Emax) + + # err = (rounded - exact) / ulp(rounded) + self.maxctx.prec = p * 2 + t = self.maxctx.subtract(y, x) + if context.f._flags & cdecimal.DecClamped or \ + context.f._flags & cdecimal.DecUnderflow: + # The standard ulp does not work in Underflow territory. + ulp = self.harrison_ulp(y) + else: + ulp = self.standard_ulp(y, p) + # Error in ulps. + err = self.maxctx.divide(t, ulp) + + d = decimal + dir = self.rounding_direction(x, context.d.rounding) + if dir == 0: + if d.Decimal("-0.6") < err < d.Decimal("0.6"): + return True + elif dir == 1: # directed, upwards + if d.Decimal("-0.1") < err < d.Decimal("1.1"): + return True + elif dir == -1: # directed, downwards + if d.Decimal("-1.1") < err < d.Decimal("0.1"): + return True + else: # ROUND_05UP + if d.Decimal("-1.1") < err < d.Decimal("1.1"): + return True + + print("ulp: %s error: %s exact: %s mpd_rounded: %s" + % (ulp, err, exact, rounded)) + return False + + def un_resolve_ulp(self, result, funcname, operands): + """Check if results of cdecimal's exp, ln and log10 functions are + within the allowed ulp ranges. This function is only called if + context.f._allcr is 0.""" + # "exact" result, double precision, half_even + self.maxctx.prec = context.d.prec * 2 + op = operands[0].dec + exact = getattr(op, funcname)(context=self.maxctx) + + # cdecimal's rounded result + s = str(result.mpd) + rounded = decimal.Decimal(s) + + self.ulpdiff += 1 + return self.check_ulpdiff(exact, rounded) + + def bin_resolve_ulp(self, result, funcname, operands): + """Check if results of cdecimal's power function are within the + allowed ulp ranges.""" + # "exact" result, double precision, half_even + self.maxctx.prec = context.d.prec * 2 + op1 = operands[0].dec + op2 = operands[1].dec + exact = getattr(op1, funcname)(op2, context=self.maxctx) + + # cdecimal's rounded result + s = str(result.mpd) + rounded = decimal.Decimal(s) + + self.ulpdiff += 1 + return self.check_ulpdiff(exact, rounded) + + def exp(self, result, operands): + if result.mpd.is_nan() or result.dec.is_nan(): + return False + if context.f._allcr: + return False + return self.un_resolve_ulp(result, "exp", operands) + + def log10(self, result, operands): + if result.mpd.is_nan() or result.dec.is_nan(): + return False + if context.f._allcr: + return False + return self.un_resolve_ulp(result, "log10", operands) + + def ln(self, result, operands): + if result.mpd.is_nan() or result.dec.is_nan(): + return False + if context.f._allcr: + return False + return self.un_resolve_ulp(result, "ln", operands) + + def __pow__(self, result, operands): + if operands[2] is not None: # three argument __pow__ + # issue7049: third arg must fit into precision + if (operands[0].mpd.is_zero() != operands[1].mpd.is_zero()): + if (result.mpd == 0 or result.mpd == 1) and result.dec.is_nan(): + if (not context.f.flags[cdecimal.InvalidOperation]) and \ + context.d.flags[decimal.InvalidOperation]: + self.powmod_zeros += 1 + return True + # issue7049: ideal exponent + if decimal.Decimal(str(result.mpd)) == result.dec: + return True + elif result.mpd.is_nan() or result.dec.is_nan(): + return False + elif context.f.flags[cdecimal.Rounded] and \ + context.f.flags[cdecimal.Inexact] and \ + context.d.flags[decimal.Rounded] and \ + context.d.flags[decimal.Inexact]: + # decimal.py: correctly-rounded pow() + return self.bin_resolve_ulp(result, "__pow__", operands) + else: + return False + power = __pow__ + + def __radd__(self, result, operands): + """decimal.py gives preference to the first nan""" + if operands[0].mpd.is_nan() and operands[1].mpd.is_nan() and \ + result.mpd.is_nan() and result.dec.is_nan(): + return True + return False + __rmul__ = __radd__ + + if py_minor <= 1: + def rotate(self, result, operands): + """truncate excess digits before the operation""" + if len(operands[0].dec._int) > context.f.prec: + return True + return False + shift = rotate + + def compare_total_mag(self, result, operands): + if operands[0].mpd.is_nan() and operands[1].mpd.is_nan() and \ + abs(result.mpd) == 1 and abs(result.dec) == 1: + self.total_mag_nan += 1 + return True + return False + compare_total = compare_total_mag + + def logb(self, result, operands): + if context.f.flags[cdecimal.Rounded] and \ + (not context.d.flags[decimal.Rounded]): + self.logb_round_if_gt_prec += 1 + return True + return False + + +class dHandlerObj(): + """For non-decimal return values: + + Handle known disagreements between decimal.py and cdecimal.so.""" + + def __init__(self): + pass + + def default(self, result, operands): + return False + __ge__ = __gt__ = __le__ = __lt__ = __repr__ = __str__ = default + + if py_minor >= 2: + __ne__ = __eq__ = default + + if py_minor <= 1: + def __eq__(self, result, operands): + """cdecimal raises for all sNaN comparisons""" + if operands[0].mpd.is_snan() or operands[1].mpd.is_snan(): + return True + __ne__ = __eq__ + + if py_minor <= 1: + # Fixed in release31-maint, but a lot of distributed + # versions do not have the fix yet. + def is_normal(self, result, operands): + # Issue7099 + if operands[0].mpd.is_normal(): + return True + + +dhandler_cdec = dHandlerCdec() +def cdec_known_disagreement(result, funcname, operands): + return getattr(dhandler_cdec, funcname, dhandler_cdec.default)(result, operands) + +dhandler_obj = dHandlerObj() +def obj_known_disagreement(result, funcname, operands): + return getattr(dhandler_obj, funcname, dhandler_obj.default)(result, operands) + + +def verify(result, funcname, operands): + """Verifies that after operation 'funcname' with operand(s) 'operands' + result[0] and result[1] as well as the context flags have the same + values.""" + global EXIT_STATUS + if result[0] != result[1] or not context.assert_eq_status(): + if obj_known_disagreement(result, funcname, operands): + return # skip known disagreements + EXIT_STATUS = 1 + raise CdecException(result, funcname, operands, + str(context.f), str(context.d)) + + +class cdec(object): + """Joins cdecimal.so and decimal.py for redundant calculations + with error checking.""" + + __slots__ = ['mpd', 'dec'] + + def __new__(cls, value=None): + self = object.__new__(cls) + self.mpd = None + self.dec = None + if value is not None: + context.clear_status() + if py_minor <= 1 and isinstance(value, float): + self.mpd = cdecimal.Decimal.from_float(value) + self.dec = decimal.Decimal.from_float(value) + else: + self.mpd = cdecimal.Decimal(value) + self.dec = decimal_new(value) + self.verify('__xnew__', (value,)) + return self + + def verify(self, funcname, operands): + """Verifies that after operation 'funcname' with operand(s) 'operands' + self.mpd and self.dec as well as the context flags have the same + values.""" + global EXIT_STATUS + mpdstr = str(self.mpd) + decstr = str(self.dec) + mpdstr_eng = self.mpd.to_eng_string() + decstr_eng = self.dec.to_eng_string() + mpd_tuple = self.mpd.as_tuple() + dec_tuple = self.dec.as_tuple() + if mpd_tuple != dec_tuple: # XXX + if mpd_tuple[2] == 'F' and dec_tuple[2] == 'F' and \ + mpd_tuple[1] == () and dec_tuple[1] == (0,): + return + if mpdstr != decstr or mpdstr_eng != decstr_eng or mpd_tuple != dec_tuple \ + or not context.assert_eq_status(): + if cdec_known_disagreement(self, funcname, operands): + return # skip known disagreements + EXIT_STATUS = 1 + raise CdecException(self, funcname, operands, + str(context.f), str(context.d)) + + def unaryfunc(self, funcname): + "unary function returning a cdec" + context.clear_status() + c = cdec() + c.mpd = getattr(self.mpd, funcname)() + c.dec = getattr(self.dec, funcname)() + c.verify(funcname, (self,)) + return c + + def unaryfunc_ctx(self, funcname): + "unary function returning a cdec, uses the context methods of decimal.py" + context.clear_status() + c = cdec() + c.mpd = getattr(self.mpd, funcname)() + c.dec = getattr(context.d, funcname)(self.dec) + c.verify(funcname, (self,)) + return c + + def obj_unaryfunc(self, funcname): + "unary function returning an object other than a cdec" + context.clear_status() + r_mpd = getattr(self.mpd, funcname)() + r_dec = getattr(self.dec, funcname)() + verify((r_mpd, r_dec), funcname, (self,)) + return r_mpd + + def binaryfunc(self, other, funcname): + "binary function returning a cdec" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + c.mpd = getattr(self.mpd, funcname)(other_mpd) + c.dec = getattr(self.dec, funcname)(other_dec) + c.verify(funcname, (self, other)) + return c + + def binaryfunc_ctx(self, other, funcname): + "binary function returning a cdec, uses the context methods of decimal.py" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + c.mpd = getattr(self.mpd, funcname)(other_mpd) + c.dec = getattr(context.d, funcname)(self.dec, other_dec) + c.verify(funcname, (self, other)) + return c + + def obj_binaryfunc(self, other, funcname): + "binary function returning an object other than a cdec" + context.clear_status() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + r_mpd = getattr(self.mpd, funcname)(other_mpd) + r_dec = getattr(self.dec, funcname)(other_dec) + verify((r_mpd, r_dec), funcname, (self, other)) + return r_mpd + + def ternaryfunc(self, other, third, funcname): + "ternary function returning a cdec" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + third_mpd = third_dec = third + if isinstance(third, cdec): + third_mpd = third.mpd + third_dec = third.dec + c.mpd = getattr(self.mpd, funcname)(other_mpd, third_mpd) + c.dec = getattr(self.dec, funcname)(other_dec, third_dec) + c.verify(funcname, (self, other, third)) + return c + + def __abs__(self): + return self.unaryfunc('__abs__') + + def __add__(self, other): + return self.binaryfunc(other, '__add__') + + def __bool__(self): + return self.obj_unaryfunc('__bool__') + + def __copy__(self): + return self.unaryfunc('__copy__') + + def __deepcopy__(self, memo=None): + context.clear_status() + c = cdec() + c.mpd = self.mpd.__deepcopy__(memo) + c.dec = self.dec.__deepcopy__(memo) + c.verify('__deepcopy__', (self,)) + return c + + def __div__(self, other): + return self.binaryfunc(other, '__div__') + + def __divmod__(self, other): + context.clear_status() + q = cdec() + r = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + q.mpd, r.mpd = self.mpd.__divmod__(other_mpd) + q.dec, r.dec = self.dec.__divmod__(other_dec, context.d) + q.verify('__divmod__', (self, other)) + r.verify('__divmod__', (self, other)) + return (q, r) + + def __eq__(self, other): + return self.obj_binaryfunc(other, '__eq__') + + def __float__(self): + if (self.mpd.is_nan() and self.dec.is_nan()): + return float("NaN") + try: + return self.obj_unaryfunc('__float__') + except ValueError: + return None + + def __floordiv__(self, other): + return self.binaryfunc(other, '__floordiv__') + + def __ge__(self, other): + return self.obj_binaryfunc(other, '__ge__') + + def __gt__(self, other): + return self.obj_binaryfunc(other, '__gt__') + + def __hash__(self): + if self.mpd.is_snan() or (py_minor <= 1 and self.mpd.is_nan()): + return None # for testing + raise ValueError('Cannot hash a NaN value.') + return self.obj_unaryfunc('__hash__') + + def __int__(self): + # ValueError or OverflowError + if self.mpd.is_special(): + return (None, None) + return self.obj_unaryfunc('__int__') + + def __le__(self, other): + return self.obj_binaryfunc(other, '__le__') + + def __long__(self): + # ValueError or OverflowError + if self.mpd.is_special(): + return (None, None) + return self.obj_unaryfunc('__long__') + + def __lt__(self, other): + return self.obj_binaryfunc(other, '__lt__') + + def __mod__(self, other): + return self.binaryfunc(other, '__mod__') + + def __mul__(self, other): + return self.binaryfunc(other, '__mul__') + + def __ne__(self, other): + return self.obj_binaryfunc(other, '__ne__') + + def __neg__(self): + return self.unaryfunc('__neg__') + + def __nonzero__(self): + return self.obj_unaryfunc('__nonzero__') + + def __pos__(self): + return self.unaryfunc('__pos__') + + def __pow__(self, other, mod=None): + return self.ternaryfunc(other, mod, '__pow__') + + def __radd__(self, other): + return self.binaryfunc(other, '__radd__') + + def __rdiv__(self, other): + return self.binaryfunc(other, '__rdiv__') + + def __rdivmod__(self, other): + context.clear_status() + q = cdec() + r = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + q.mpd, r.mpd = self.mpd.__rdivmod__(other_mpd) + q.dec, r.dec = self.dec.__rdivmod__(other_dec, context.d) + q.verify('__rdivmod__', (self, other)) + r.verify('__rdivmod__', (self, other)) + return (q, r) + + # __reduce__ + + def __repr__(self): + self.obj_unaryfunc('__repr__') + return "cdec('" + str(self.mpd) + "')" + + def __rfloordiv__(self, other): + return self.binaryfunc(other, '__rfloordiv__') + + def __rmod__(self, other): + return self.binaryfunc(other, '__rmod__') + + def __rmul__(self, other): + return self.binaryfunc(other, '__rmul__') + + def __rsub__(self, other): + return self.binaryfunc(other, '__rsub__') + + def __rtruediv__(self, other): + return self.binaryfunc(other, '__rtruediv__') + + def __rpow__(self, other): + return other.__pow__(self) + + def __str__(self): + self.obj_unaryfunc('__str__') + return str(self.mpd) + + def __sub__(self, other): + return self.binaryfunc(other, '__sub__') + + def __truediv__(self, other): + return self.binaryfunc(other, '__truediv__') + + def __trunc__(self): + # ValueError or OverflowError + if self.mpd.is_special(): + return (None, None) + return self.obj_unaryfunc('__trunc__') + + def _apply(self): + return self.unaryfunc('_apply') + + def abs(self): + return self.unaryfunc_ctx('abs') + + def add(self, other): + return self.binaryfunc_ctx(other, 'add') + + def adjusted(self): + return self.obj_unaryfunc('adjusted') + + def canonical(self): + return self.unaryfunc('canonical') + + def compare(self, other): + return self.binaryfunc(other, 'compare') + + def compare_signal(self, other): + return self.binaryfunc(other, 'compare_signal') + + def compare_total(self, other): + return self.binaryfunc(other, 'compare_total') + + def compare_total_mag(self, other): + return self.binaryfunc(other, 'compare_total_mag') + + def copy_abs(self): + return self.unaryfunc('copy_abs') + + def copy_negate(self): + return self.unaryfunc('copy_negate') + + def copy_sign(self, other): + return self.binaryfunc(other, 'copy_sign') + + def divide(self, other): + return self.binaryfunc_ctx(other, 'divide') + + def divide_int(self, other): + return self.binaryfunc_ctx(other, 'divide_int') + + def divmod(self, other): + context.clear_status() + q = cdec() + r = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + q.mpd, r.mpd = self.mpd.divmod(other_mpd) + q.dec, r.dec = context.d.divmod(self.dec, other_dec) + q.verify('divmod', (self, other)) + r.verify('divmod', (self, other)) + return (q, r) + + def exp(self): + return self.unaryfunc('exp') + + def fma(self, other, third): + return self.ternaryfunc(other, third, 'fma') + + # imag + # invroot + + def is_canonical(self): + return self.obj_unaryfunc('is_canonical') + + def is_finite(self): + return self.obj_unaryfunc('is_finite') + + def is_infinite(self): + return self.obj_unaryfunc('is_infinite') + + def is_nan(self): + return self.obj_unaryfunc('is_nan') + + def is_normal(self): + return self.obj_unaryfunc('is_normal') + + def is_qnan(self): + return self.obj_unaryfunc('is_qnan') + + def is_signed(self): + return self.obj_unaryfunc('is_signed') + + def is_snan(self): + return self.obj_unaryfunc('is_snan') + + def is_subnormal(self): + return self.obj_unaryfunc('is_subnormal') + + def is_zero(self): + return self.obj_unaryfunc('is_zero') + + def ln(self): + return self.unaryfunc('ln') + + def log10(self): + return self.unaryfunc('log10') + + def logb(self): + return self.unaryfunc('logb') + + def logical_and(self, other): + return self.binaryfunc(other, 'logical_and') + + def logical_invert(self): + return self.unaryfunc('logical_invert') + + def logical_or(self, other): + return self.binaryfunc(other, 'logical_or') + + def logical_xor(self, other): + return self.binaryfunc(other, 'logical_xor') + + def max(self, other): + return self.binaryfunc(other, 'max') + + def max_mag(self, other): + return self.binaryfunc(other, 'max_mag') + + def min(self, other): + return self.binaryfunc(other, 'min_mag') + + def min_mag(self, other): + return self.binaryfunc(other, 'min_mag') + + def minus(self): + return self.unaryfunc_ctx('minus') + + def multiply(self, other): + return self.binaryfunc_ctx(other, 'multiply') + + def next_minus(self): + return self.unaryfunc('next_minus') + + def next_plus(self): + return self.unaryfunc('next_plus') + + def next_toward(self, other): + return self.binaryfunc(other, 'next_toward') + + def normalize(self): + return self.unaryfunc('normalize') + + def number_class(self): + return self.obj_unaryfunc('number_class') + + def plus(self): + return self.unaryfunc_ctx('plus') + + def power(self, other, third=None): + "ternary function returning a cdec, uses the context methods of decimal.py" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + third_mpd = third_dec = third + if isinstance(third, cdec): + third_mpd = third.mpd + third_dec = third.dec + c.mpd = pow(self.mpd, other_mpd, third_mpd) + c.dec = pow(self.dec, other_dec, third_dec) + c.verify('power', (self, other, third)) + return c + + # powmod: same as __pow__ or power with three arguments + + def quantize(self, other): + return self.binaryfunc(other, 'quantize') + + def radix(self): + return self.obj_unaryfunc('radix') + + # real + # reduce: same as normalize + + def remainder(self, other): + return self.binaryfunc_ctx(other, 'remainder') + + def remainder_near(self, other): + return self.binaryfunc(other, 'remainder_near') + + def rotate(self, other): + return self.binaryfunc(other, 'rotate') + + def same_quantum(self, other): + return self.obj_binaryfunc(other, 'same_quantum') + + def scaleb(self, other): + return self.binaryfunc(other, 'scaleb') + + def shift(self, other): + return self.binaryfunc(other, 'shift') + + # sign + + def sqrt(self): + return self.unaryfunc('sqrt') + + def subtract(self, other): + return self.binaryfunc_ctx(other, 'subtract') + + def to_eng_string(self): + return self.obj_unaryfunc('to_eng_string') + + def to_integral(self): + return self.unaryfunc('to_integral') + + def to_integral_exact(self): + return self.unaryfunc('to_integral_exact') + + def to_integral_value(self): + return self.unaryfunc('to_integral_value') + + def to_sci_string(self): + context.clear_status() + r_mpd = self.mpd.to_sci_string() + r_dec = context.d.to_sci_string(self.dec) + verify((r_mpd, r_dec), 'to_sci_string', (self,)) + return r_mpd + + +def log(fmt, args=None): + if args: + sys.stdout.write(''.join((fmt, '\n')) % args) + else: + sys.stdout.write(''.join((str(fmt), '\n'))) + sys.stdout.flush() + +def test_method(method, testspecs, testfunc): + log("testing %s ...", method) + for spec in testspecs: + if 'samples' in spec: + spec['prec'] = sorted(random.sample(range(1, 101), spec['samples'])) + for prec in spec['prec']: + context.prec = prec + for expts in spec['expts']: + emin, emax = expts + if emin == 'rand': + context.Emin = random.randrange(-1000, 0) + context.Emax = random.randrange(prec, 1000) + else: + context.Emin, context.Emax = emin, emax + if prec > context.Emax: continue + log(" prec: %d emin: %d emax: %d", + (context.prec, context.Emin, context.Emax)) + restr_range = 9999 if context.Emax > 9999 else context.Emax+99 + for rounding in sorted(decround): + context.rounding = rounding + context.capitals = random.randrange(2) + if spec['clamp'] == 2: + context.clamp = random.randrange(2) + else: + context.clamp = spec['clamp'] + exprange = context.f.Emax + testfunc(method, prec, exprange, restr_range, spec['iter']) + +def test_unary(method, prec, exprange, restr_range, iter): + if method in ['__int__', '__long__', '__trunc__', 'to_integral', + 'to_integral_value', 'to_integral_value']: + exprange = restr_range + for a in un_close_to_pow10(prec, exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_incr_digits_tuple(prec, exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_randfloat(): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for i in range(1000): + try: + s = randdec(prec, exprange) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + try: + s = randtuple(prec, exprange) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + +def test_un_logical(method, prec, exprange, restr_range, iter): + for a in logical_un_incr_digits(prec, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for i in range(1000): + try: + s = randdec(prec, restr_range) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + +def test_binary(method, prec, exprange, restr_range, iter): + if method in ['__pow__', '__rpow__', 'power']: + exprange = restr_range + for a, b in bin_close_to_pow10(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_incr_digits(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_randfloat(): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, exprange) + s2 = randdec(prec, exprange) + try: + x = cdec(s1) + y = cdec(s2) + getattr(x, method)(y) + except CdecException as err: + log(err) + +def test_bin_logical(method, prec, exprange, restr_range, iter): + for a, b in logical_bin_incr_digits(prec, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, restr_range) + s2 = randdec(prec, restr_range) + try: + x = cdec(s1) + y = cdec(s2) + getattr(x, method)(y) + except CdecException as err: + log(err) + +def test_ternary(method, prec, exprange, restr_range, iter): + if method in ['__pow__', 'power']: + exprange = restr_range + for a, b, c in tern_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for a, b, c in tern_incr_digits(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for a, b, c in tern_randfloat(): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, 2*exprange) + s2 = randdec(prec, 2*exprange) + s3 = randdec(prec, 2*exprange) + try: + x = cdec(s1) + y = cdec(s2) + z = cdec(s3) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + +def test_format(method, prec, exprange, restr_range, iter): + for a in un_incr_digits_tuple(prec, restr_range, iter): + context.clear_status() + try: + fmt = rand_format(chr(random.randrange(32, 128))) + x = format(context.f.create_decimal(a), fmt) + y = format(context.d.create_decimal(a), fmt) + except Exception as err: + print(err, fmt) + continue + if x != y: + print(context.f) + print(context.d) + print("\n%s %s" % (a, fmt)) + print("%s %s\n" % (x, y)) + for i in range(1000): + context.clear_status() + try: + a = randdec(99, 9999) + fmt = rand_format(chr(random.randrange(32, 128))) + x = format(context.f.create_decimal(a), fmt) + y = format(context.d.create_decimal(a), fmt) + except Exception as err: + print(err, fmt) + continue + if x != y: + print(context.f) + print(context.d) + print("\n%s %s" % (a, fmt)) + print("%s %s\n" % (x, y)) + +def test_locale(method, prec, exprange, restr_range, iter): + for a in un_incr_digits_tuple(prec, restr_range, iter): + context.clear_status() + try: + fmt = rand_locale() + x = format(context.f.create_decimal(a), fmt) + y = format(context.d.create_decimal(a), fmt) + except Exception as err: + print(err, fmt) + continue + if x != y: + print(context.f) + print(context.d) + print(locale.setlocale(locale.LC_NUMERIC)) + print("%s %s" % (a, fmt)) + print(list(array.array('u', x))) + print(list(array.array('u', y))) + for i in range(1000): + context.clear_status() + try: + a = randdec(99, 9999) + fmt = rand_locale() + x = format(context.f.create_decimal(a), fmt) + y = format(context.d.create_decimal(a), fmt) + except Exception as err: + print(err, fmt) + continue + if x != y: + print(context.f) + print(context.d) + print(locale.setlocale(locale.LC_NUMERIC)) + print("%s %s" % (a, fmt)) + print(list(array.array('u', x))) + print(list(array.array('u', y))) + +def test_round(method, prec, exprange, restr_range, iter): + for a in un_incr_digits_tuple(prec, restr_range, 1): + context.clear_status() + try: + n = random.randrange(10) + x = (context.f.create_decimal(a)).__round__(n) + y = (context.d.create_decimal(a)).__round__(n) + except Exception as err: + print(err) + continue + if str(x) != str(y): + print(context.f) + print(context.d) + print("\n%s %s" % (a, n)) + print("%s %s\n" % (x, y)) + exit(1) + for i in range(1000): + context.clear_status() + try: + a = randdec(99, 9999) + n = random.randrange(10) + x = context.f.create_decimal(a).__round__(n) + y = context.d.create_decimal(a).__round__(n) + except Exception as err: + print(err) + continue + if str(x) != str(y): + print(context.f) + print(context.d) + print("\n%s %s" % (a, n)) + print("%s %s\n" % (x, y)) + +def test_from_float(method, prec, exprange, restr_range, iter): + for rounding in sorted(decround): + context.rounding = rounding + exprange = 384 + for i in range(1000): + intpart = str(random.randrange(100000000000000000000000000000000000000)) + fracpart = str(random.randrange(100000000000000000000000000000000000000)) + exp = str(random.randrange(-384, 384)) + fstring = intpart + '.' + fracpart + 'e' + exp + f = float(fstring) + try: + c = cdec(f) + except CdecException as err: + log(err) + +def assert_eq_status(c, d): + """assert equality of cdecimal and decimal status""" + for signal in c.flags: + if signal == cdecimal.FloatOperation: + continue + if c.flags[signal] == (not d.flags[deccond[signal]]): + return False + return True + +def test_quantize_api(method, prec, exprange, restr_range, iter): + for a in un_incr_digits(prec, restr_range, 1): + emax = random.randrange(exprange) + emin = random.randrange(-exprange, 0) + clamp = random.randrange(2) + exp = randdec(2*prec, exprange) + for rounding in sorted(decround): + try: + c = cdecimal.Context(prec=prec, Emax=emax, Emin=emin, clamp=clamp, traps=[]) + d = decimal.Context(prec=prec, Emax=emax, Emin=emin, traps=[]) + attr = 'clamp' if py_minor >= 2 else "_clamp" + setattr(d, attr, clamp) + + x = cdecimal.Decimal(a) + y = cdecimal.Decimal(exp) + cresult = x.quantize(y, rounding, c) + + u = decimal.Decimal(a) + v = decimal.Decimal(exp) + dresult = u.quantize(v, decround[rounding], d) + except Exception as err: + print(err) + continue + if str(cresult) != str(dresult) or \ + not assert_eq_status(c, d): + print("%s\n%s\n" % (c, d)) + print("x: %s\ny: %s\nu: %s\nv: %s\n" % (x, y, u, v)) + print("a: %s exp: %s\n" % (a, exp)) + print("cresult: %s\ndresult: %s\n" % (cresult, dresult)) + for i in range(1000): + a = randdec(prec, 9999) + prec = random.randrange(1, 50) + emax = random.randrange(exprange) + emin = random.randrange(-exprange, 0) + clamp = random.randrange(2) + exp = randdec(2*prec, exprange) + for rounding in sorted(decround): + try: + c = cdecimal.Context(prec=prec, Emax=emax, Emin=emin, clamp=clamp, traps=[]) + d = decimal.Context(prec=prec, Emax=emax, Emin=emin, traps=[]) + attr = 'clamp' if py_minor >= 2 else "_clamp" + setattr(d, attr, clamp) + + x = cdecimal.Decimal(a) + y = cdecimal.Decimal(exp) + cresult = x.quantize(context=c, exp=y, rounding=rounding) + + u = decimal.Decimal(a) + v = decimal.Decimal(exp) + dresult = u.quantize(context=d, exp=v, rounding=decround[rounding]) + except Exception as err: + print(err) + continue + if str(cresult) != str(dresult) or \ + not assert_eq_status(c, d): + print("%s\n%s\n" % (c, d)) + print("x: %s\ny: %s\nu: %s\nv: %s\n" % (x, y, u, v)) + print("a: %s exp: %s\n" % (a, exp)) + print("cresult: %s\ndresult: %s\n" % (cresult, dresult)) + + +if __name__ == '__main__': + + import time + + randseed = int(time.time()) + random.seed(randseed) + + base_expts = [(cdecimal.MIN_EMIN, cdecimal.MAX_EMAX)] + if cdecimal.MAX_EMAX == 999999999999999999: + base_expts.append((-999999999, 999999999)) + + base = { + 'name': 'base', + 'expts': base_expts, + 'prec': [], + 'clamp': 2, + 'iter': None, + 'samples': None, + } + small = { + 'name': 'small', + 'prec': [1, 2, 3, 4, 5], + 'expts': [(-1,1), (-2,2), (-3,3), (-4,4), (-5,5)], + 'clamp': 2, + 'iter': None + } + ieee = [ + {'name': 'decimal32', 'prec': [7], 'expts': [(-95, 96)], 'clamp': 1, 'iter': None}, + {'name': 'decimal64', 'prec': [16], 'expts': [(-383, 384)], 'clamp': 1, 'iter': None}, + {'name': 'decimal128', 'prec': [34], 'expts': [(-6143, 6144)], 'clamp': 1, 'iter': None} + ] + + if '--medium' in sys.argv: + base['expts'].append(('rand', 'rand')) + base['samples'] = None + testspecs = [small] + ieee + [base] + if '--long' in sys.argv: + base['expts'].append(('rand', 'rand')) + base['samples'] = 5 + testspecs = [small] + ieee + [base] + elif '--all' in sys.argv: + base['expts'].append(('rand', 'rand')) + base['samples'] = 100 + testspecs = [small] + ieee + [base] + else: # --short + rand_ieee = random.choice(ieee) + base['iter'] = small['iter'] = rand_ieee['iter'] = 1 + base['samples'] = 1 + base['expts'] = [random.choice(base_expts)] + prec = random.randrange(1, 6) + small['prec'] = [prec] + small['expts'] = [(-prec, prec)] + testspecs = [small, rand_ieee, base] + + + all_decimal_methods = set(dir(cdecimal.Decimal) + dir(decimal.Decimal)) + all_cdec_methods = [m for m in dir(cdec) if m in all_decimal_methods] + untested_methods = [m for m in all_decimal_methods if not (m in all_cdec_methods)] + + unary_methods = [] + binary_methods = [] + ternary_methods = [] + for m in all_cdec_methods: + try: + l = len(inspect.getargspec(getattr(cdec, m))[0]) + except TypeError: + continue + if l == 1: + unary_methods.append(m) + elif l == 2: + binary_methods.append(m) + elif l == 3: + ternary_methods.append(m) + else: + raise ValueError((m, l)) + + unary_methods.append('__deepcopy__') + binary_methods.remove('__deepcopy__') + binary_methods.remove('__new__') + binary_methods.append('power') + untested_methods.remove('from_float') + if py_minor < 6: + unary_methods.remove('__trunc__') + for elem in ['__ge__', '__gt__', '__le__', '__lt__']: + binary_methods.remove(elem) + + untested_methods.sort() + unary_methods.sort() + binary_methods.sort() + ternary_methods.sort() + + + log("\nRandom seed: %d\n\n", randseed) + log("Skipping tests: \n\n%s\n", untested_methods) + + + for method in unary_methods: + test_method(method, testspecs, test_unary) + + for method in binary_methods: + test_method(method, testspecs, test_binary) + + for method in ternary_methods: + test_method(method, testspecs, test_ternary) + + test_method('logical_invert', testspecs, test_un_logical) + + for method in ['logical_and', 'logical_or', 'logical_xor']: + test_method(method, testspecs, test_bin_logical) + + test_method('quantize_api', testspecs, test_quantize_api) + + + if py_minor >= 2: + # Some tests will fail with 3.1, since alignment has been changed + # in decimal.py 3.2. + from genlocale import * + test_method('format', testspecs, test_format) + test_method('locale', testspecs, test_locale) + test_method('round', testspecs, test_round) + test_method('from_float', testspecs, test_from_float) + + + sys.exit(EXIT_STATUS) diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/formathelper.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/formathelper.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,231 @@ +# +# Copyright (c) 2008-2010 Stefan Krah. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + + +import os, sys, locale, random +import platform, subprocess +from randdec import * +from decimal import * + + +windows_lang_strings = [ + "chinese", "chinese-simplified", "chinese-traditional", "czech", "danish", + "dutch", "belgian", "english", "australian", "canadian", "english-nz", + "english-uk", "english-us", "finnish", "french", "french-belgian", + "french-canadian", "french-swiss", "german", "german-austrian", + "german-swiss", "greek", "hungarian", "icelandic", "italian", "italian-swiss", + "japanese", "korean", "norwegian", "norwegian-bokmal", "norwegian-nynorsk", + "polish", "portuguese", "portuguese-brazil", "russian", "slovak", "spanish", + "spanish-mexican", "spanish-modern", "swedish", "turkish", +] + +preferred_encoding = { + 'cs_CZ': 'ISO8859-2', + 'cs_CZ.iso88592': 'ISO8859-2', + 'czech': 'ISO8859-2', + 'eesti': 'ISO8859-1', + 'estonian': 'ISO8859-1', + 'et_EE': 'ISO8859-15', + 'et_EE.ISO-8859-15': 'ISO8859-15', + 'et_EE.iso885915': 'ISO8859-15', + 'et_EE.iso88591': 'ISO8859-1', + 'fi_FI.iso88591': 'ISO8859-1', + 'fi_FI': 'ISO8859-15', + 'fi_FI@euro': 'ISO8859-15', + 'fi_FI.iso885915@euro': 'ISO8859-15', + 'finnish': 'ISO8859-1', + 'lv_LV': 'ISO8859-13', + 'lv_LV.iso885913': 'ISO8859-13', + 'nb_NO': 'ISO8859-1', + 'nb_NO.iso88591': 'ISO8859-1', + 'bokmal': 'ISO8859-1', + 'nn_NO': 'ISO8859-1', + 'nn_NO.iso88591': 'ISO8859-1', + 'no_NO': 'ISO8859-1', + 'norwegian': 'ISO8859-1', + 'nynorsk': 'ISO8859-1', + 'ru_RU': 'ISO8859-5', + 'ru_RU.iso88595': 'ISO8859-5', + 'russian': 'ISO8859-5', + 'ru_RU.KOI8-R': 'KOI8-R', + 'ru_RU.koi8r': 'KOI8-R', + 'ru_RU.CP1251': 'CP1251', + 'ru_RU.cp1251': 'CP1251', + 'sk_SK': 'ISO8859-2', + 'sk_SK.iso88592': 'ISO8859-2', + 'slovak': 'ISO8859-2', + 'sv_FI': 'ISO8859-1', + 'sv_FI.iso88591': 'ISO8859-1', + 'sv_FI@euro': 'ISO8859-15', + 'sv_FI.iso885915@euro': 'ISO8859-15', + 'uk_UA': 'KOI8-U', + 'uk_UA.koi8u': 'KOI8-U' +} + +integers = [ + "", + "1", + "12", + "123", + "1234", + "12345", + "123456", + "1234567", + "12345678", + "123456789", + "1234567890", + "12345678901", + "123456789012", + "1234567890123", + "12345678901234", + "123456789012345", + "1234567890123456", + "12345678901234567", + "123456789012345678", + "1234567890123456789", + "12345678901234567890", + "123456789012345678901", + "1234567890123456789012", +] + +numbers = [ + "0", "-0", "+0", + "0.0", "-0.0", "+0.0", + "0e0", "-0e0", "+0e0", + ".0", "-.0", + ".1", "-.1", + "1.1", "-1.1", + "1e1", "-1e1" +] + +py_major = sys.version_info[0] + +if platform.system() == 'Windows': + locale_list = windows_lang_strings +else: + try: + # On Ubuntu, `locale -a` gives the wrong case for some locales, + # so we get the correct names directly: + f = open("/var/lib/locales/supported.d/local") + locale_list = [loc.split()[0] for loc in f.readlines()] + except: + locale_list = subprocess.Popen(["locale", "-a"], + stdout=subprocess.PIPE).communicate()[0] + if py_major == 3: + locale_list = locale_list.decode() + locale_list = locale_list.split('\n') + + +if py_major < 3: + # issue7327 (min_width and multibyte separators): wont_fix + save_loc = locale.setlocale(locale.LC_NUMERIC) + for loc in locale_list[:]: + try: + locale.setlocale(locale.LC_NUMERIC, loc) + except locale.Error: + locale_list.remove(loc) + continue + d = locale.localeconv() + if len(d['thousands_sep']) > 1 or len(d['decimal_point']) > 1: + locale_list.remove(loc) + locale.setlocale(locale.LC_NUMERIC, save_loc) + +try: + locale_list.remove('') +except ValueError: + pass + +# Debian +if os.path.isfile("/etc/locale.alias"): + with open("/etc/locale.alias") as f: + while 1: + try: + line = f.readline() + except UnicodeDecodeError: + continue + if line == "": + break + if line.startswith('#'): + continue + x = line.split() + if len(x) == 2: + if x[0] in locale_list: + locale_list.remove(x[0]) + +if platform.system() == 'FreeBSD': + # http://www.freebsd.org/cgi/query-pr.cgi?pr=142173 + # en_GB.US-ASCII has 163 as the currency symbol. + for loc in ['it_CH.ISO8859-1', 'it_CH.ISO8859-15', 'it_CH.UTF-8', 'it_IT.ISO8859-1', + 'it_IT.ISO8859-15', 'it_IT.UTF-8', 'sl_SI.ISO8859-2', 'sl_SI.UTF-8', + 'en_GB.US-ASCII']: + try: + locale_list.remove(loc) + except ValueError: + pass + + +def get_preferred_encoding(): + loc = locale.setlocale(locale.LC_CTYPE) + if loc in preferred_encoding: + return preferred_encoding[loc] + else: + return locale.getpreferredencoding() + +if py_major < 3: + def printit(testno, s, fmt, encoding=None): + if not encoding: + encoding = get_preferred_encoding() + try: + result = format(Decimal(s), fmt) + if isinstance(fmt, unicode): + fmt = repr(fmt.encode(encoding))[1:-1] + if isinstance(result, unicode): + result = repr(result.encode(encoding))[1:-1] + if "'" in result: + sys.stdout.write("xfmt%d format %s '%s' -> \"%s\"\n" + % (testno, s, fmt, result)) + else: + sys.stdout.write("xfmt%d format %s '%s' -> '%s'\n" + % (testno, s, fmt, result)) + except Exception as err: + sys.stderr.write("%s %s %s\n" % (err, s, fmt)) +else: + def printit(testno, s, fmt, encoding=None): + if not encoding: + encoding = get_preferred_encoding() + try: + result = format(Decimal(s), fmt) + fmt = str(fmt.encode(encoding))[2:-1] + result = str(result.encode(encoding))[2:-1] + if "'" in result: + sys.stdout.write("xfmt%d format %s '%s' -> \"%s\"\n" + % (testno, s, fmt, result)) + else: + sys.stdout.write("xfmt%d format %s '%s' -> '%s'\n" + % (testno, s, fmt, result)) + except Exception as err: + sys.stderr.write("%s %s %s\n" % (err, s, fmt)) diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/genlocale.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/genlocale.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,194 @@ +# +# Copyright (c) 2008-2010 Stefan Krah. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + + +# +# Very extensive test that comes close to brute force testing +# all format string combinations containing either a thousands +# separator or the 'n' specifier. +# +# Usage: python3.2 genlocale.py | ../runtest - +# + + +from formathelper import * + + +# Generate random format strings, no 'n' specifier +# [[fill]align][sign][#][0][width][.precision][type] +def _gen_format_sep(): + for align in ('', '<', '>', '=', '^'): + for fill in ('', 'x'): + if align == '': fill = '' + for sign in ('', '+', '-', ' '): + for zeropad in ('', '0'): + if align != '': zeropad = '' + for width in ['']+[str(y) for y in range(1, 15)]+['101']: + for prec in ['']+['.'+str(y) for y in range(15)]: + # for type in ('', 'E', 'e', 'G', 'g', 'F', 'f', '%'): + type = random.choice(('', 'E', 'e', 'G', 'g', 'F', 'f', '%')) + yield ''.join((fill, align, sign, zeropad, width, ',', prec, type)) + + +# Generate random format strings with 'n' specifier +# [[fill]align][sign][#][0][width][.precision][type] +def _gen_format_locale(): + for align in ('', '<', '>', '=', '^'): + for fill in ('', 'x'): + if align == '': fill = '' + for sign in ('', '+', '-', ' '): + for zeropad in ('', '0'): + if align != '': zeropad = '' + for width in ['']+[str(y) for y in range(1, 20)]+['101']: + for prec in ['']+['.'+str(y) for y in range(1, 20)]: + yield ''.join((fill, align, sign, zeropad, width, prec, 'n')) + + +# Generate random format strings with a unicode fill character +# [[fill]align][sign][#][0][width][.precision][type] +def randf(fill): + active = sorted(random.sample(range(5), random.randrange(6))) + s = '' + s += str(fill) + s += random.choice('<>=^') + have_align = 1 + for elem in active: + if elem == 0: # sign + s += random.choice('+- ') + elif elem == 1: # width + s += str(random.randrange(1, 100)) + elif elem == 2: # thousands separator + s += ',' + elif elem == 3: # prec + s += '.' + # decimal.py does not support prec=0 + s += str(random.randrange(1, 100)) + elif elem == 4: + if 2 in active: c = 'EeGgFf%' + else: c = 'EeGgFfn%' + s += random.choice(c) + return s + +# Generate random format strings with random locale setting +# [[fill]align][sign][#][0][width][.precision][type] +def rand_locale(): + try: + loc = random.choice(locale_list) + locale.setlocale(locale.LC_ALL, loc) + except locale.Error as err: + pass + active = sorted(random.sample(range(5), random.randrange(6))) + s = '' + have_align = 0 + for elem in active: + if elem == 0: # fill+align + s += chr(random.randrange(32, 128)) + s += random.choice('<>=^') + have_align = 1 + elif elem == 1: # sign + s += random.choice('+- ') + elif elem == 2 and not have_align: # zeropad + s += '0' + elif elem == 3: # width + s += str(random.randrange(1, 100)) + elif elem == 4: # prec + s += '.' + # decimal.py does not support prec=0 + s += str(random.randrange(1, 100)) + s += 'n' + return s + + +if __name__ == '__main__': + + testno = 0 + print("rounding: half_even") + + if not unicode_chars: + unicode_chars = gen_unicode_chars() + + # unicode fill character test + for x in range(10): + for fill in unicode_chars: + intpart = fracpart = '' + while (not intpart) and (not fracpart): + intpart = random.choice(integers) + fracpart = random.choice(integers) + s = ''.join((random.choice(('', '-')), intpart, '.', fracpart)) + fmt = randf(fill) + testno += 1 + printit(testno, s, fmt, 'utf-8') + + # thousands separator test + for fmt in _gen_format_sep(): + for s in un_incr_digits(15, 384, 30): + testno += 1 + for sign in ('', '-'): + for intpart in integers: + for fracpart in integers: + if (not intpart) and (not fracpart): + continue + s = ''.join((sign, intpart, '.', fracpart)) + testno += 1 + printit(testno, s, fmt) + for s in numbers: + testno += 1 + printit(testno, s, fmt) + for x in range(100): + s = randdec(20, 425) + testno += 1 + printit(testno, s, fmt) + for x in range(100): + s = randint(20) + testno += 1 + printit(testno, s, fmt) + + # locale test + for loc in locale_list: + try: + locale.setlocale(locale.LC_ALL, loc) + except locale.Error as err: + sys.stderr.write("%s: %s\n" % (loc, err)) + continue + print("locale: %s" % loc) + for fmt in _gen_format_locale(): + for sign in ('', '-'): + intpart = fracpart = '' + while (not intpart) and (not fracpart): + intpart = random.choice(integers) + fracpart = random.choice(integers) + s = ''.join((sign, intpart, '.', fracpart)) + testno += 1 + printit(testno, s, fmt) + for s in random.sample(numbers, 3): + testno += 1 + printit(testno, s, fmt) + getcontext().prec = 300 + for x in range(10): + s = randdec(20, 425000000) + testno += 1 + printit(testno, s, fmt) diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/genrandformat.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/genrandformat.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,55 @@ +# +# Copyright (c) 2008-2010 Stefan Krah. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + + +# +# Test formatting using random format strings. This must be run +# in a UFT-8 terminal. +# +# Usage: python3.2 genrandformat.py | ../runtest - +# + + +from formathelper import * +print("rounding: half_even") + + +testno = 0 +for x in range(1000): + for sign in ('', '-'): + intpart = fracpart = '' + while (not intpart) and (not fracpart): + intpart = random.choice(integers) + fracpart = random.choice(integers) + s = ''.join((sign, intpart, '.', fracpart)) + fmt = rand_format(rand_unicode()) + testno += 1 + printit(testno, s, fmt, 'utf-8') + for s in un_incr_digits(15, 384, 30): + fmt = rand_format(rand_unicode()) + testno += 1 + printit(testno, s, fmt, 'utf-8') diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/genrandlocale.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/genrandlocale.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,61 @@ +# +# Copyright (c) 2008-2010 Stefan Krah. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + + +# +# For each possible locale setting, test formatting using random +# format strings. +# +# Usage: python3.2 genrandlocale.py | ../runtest - +# + + +from formathelper import * +print("rounding: half_even") + + +testno = 0 +for loc in locale_list: + try: + locale.setlocale(locale.LC_ALL, loc) + except locale.Error as err: + sys.stderr.write("%s: %s\n" % (loc, err)) + continue + print("locale: %s" % loc) + for sign in ('', '-'): + intpart = fracpart = '' + while (not intpart) and (not fracpart): + intpart = random.choice(integers) + fracpart = random.choice(integers) + s = ''.join((sign, intpart, '.', fracpart)) + fmt = rand_format('x') + testno += 1 + printit(testno, s, fmt) + for s in un_incr_digits(15, 384, 30): + fmt = rand_format('x') + testno += 1 + printit(testno, s, fmt) diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/gettests.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/gettests.bat Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,3 @@ +@ECHO OFF + +if not exist decimaltestdata mkdir decimaltestdata && copy /y ..\..\decimaltestdata\* decimaltestdata diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/gettests.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/gettests.sh Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,5 @@ +#!/bin/sh + +if ! [ -d decimaltestdata ]; then + cp -a ../../decimaltestdata . +fi diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/randdec.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/randdec.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,506 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2008-2010 Stefan Krah. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + + +# +# Grammar from http://speleotrove.com/decimal/daconvs.html +# +# sign ::= '+' | '-' +# digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | +# '8' | '9' +# indicator ::= 'e' | 'E' +# digits ::= digit [digit]... +# decimal-part ::= digits '.' [digits] | ['.'] digits +# exponent-part ::= indicator [sign] digits +# infinity ::= 'Infinity' | 'Inf' +# nan ::= 'NaN' [digits] | 'sNaN' [digits] +# numeric-value ::= decimal-part [exponent-part] | infinity +# numeric-string ::= [sign] numeric-value | [sign] nan +# + + +import random, sys + + +def sign(): + if random.randrange(2): + if random.randrange(2): return '+' + return '' + return '-' + +def indicator(): + return "eE"[random.randrange(2)] + +def digits(maxprec): + if maxprec == 0: return '' + return str(random.randrange(10**maxprec)) + +def dot(): + if random.randrange(2): return '.' + return '' + +def decimal_part(maxprec): + if random.randrange(100) > 60: # integers + return digits(maxprec) + if random.randrange(2): + intlen = random.randrange(1, maxprec+1) + fraclen = maxprec-intlen + intpart = digits(intlen) + fracpart = digits(fraclen) + return ''.join((intpart, '.', fracpart)) + else: + return ''.join((dot(), digits(maxprec))) + +def expdigits(maxexp): + return str(random.randrange(maxexp)) + +def exponent_part(maxexp): + return ''.join((indicator(), sign(), expdigits(maxexp))) + +def infinity(): + if random.randrange(2): return 'Infinity' + return 'Inf' + +def nan(): + d = '' + if random.randrange(2): + d = digits(random.randrange(99)); + if random.randrange(2): + return ''.join(('NaN', d)) + else: + return ''.join(('sNaN', d)) + +def numeric_value(maxprec, maxexp): + if random.randrange(100) > 90: + return infinity() + exp_part = '' + if random.randrange(100) > 60: + exp_part = exponent_part(maxexp) + return ''.join((decimal_part(maxprec), exp_part)) + +def numeric_string(maxprec, maxexp): + if random.randrange(100) > 95: + return ''.join((sign(), nan())) + else: + return ''.join((sign(), numeric_value(maxprec, maxexp))) + +def randdec(maxprec, maxexp): + return numeric_string(maxprec, maxexp) + +def randint(maxprec): + return digits(maxprec) + +def rand_adjexp(maxprec, maxadjexp): + d = digits(maxprec) + maxexp = maxadjexp-len(d)+1 + if maxexp == 0: maxexp = 1 + exp = str(random.randrange(maxexp-2*(abs(maxexp)), maxexp)) + return ''.join((sign(), d, 'E', exp)) + + +def ndigits(n): + if n < 1: return 0 + return random.randrange(10**(n-1), 10**n) + +def randtuple(maxprec, maxexp): + n = random.randrange(100) + sign = (0,1)[random.randrange(1)] + coeff = ndigits(maxprec) + if n >= 95: + coeff = () + exp = 'F' + elif n >= 85: + coeff = tuple(map(int, str(ndigits(maxprec)))) + exp = "nN"[random.randrange(1)] + else: + coeff = tuple(map(int, str(ndigits(maxprec)))) + exp = random.randrange(-maxexp, maxexp) + return (sign, coeff, exp) + + +def from_triple(sign, coeff, exp): + return ''.join((str(sign*coeff), indicator(), str(exp))) + + +# Close to 10**n +def un_close_to_pow10(prec, maxexp, itertns=None): + if itertns is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), itertns) + nines = [10**n - 1 for n in lst] + pow10 = [10**n for n in lst] + for coeff in nines: + yield coeff + yield -coeff + yield from_triple(1, coeff, random.randrange(2*maxexp)) + yield from_triple(-1, coeff, random.randrange(2*maxexp)) + for coeff in pow10: + yield coeff + yield -coeff + +# Close to 10**n +def bin_close_to_pow10(prec, maxexp, itertns=None): + if itertns is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), itertns) + nines = [10**n - 1 for n in lst] + pow10 = [10**n for n in lst] + for coeff in nines: + yield coeff, 1 + yield -coeff, -1 + yield 1, coeff + yield -1, -coeff + yield from_triple(1, coeff, random.randrange(2*maxexp)), 1 + yield from_triple(-1, coeff, random.randrange(2*maxexp)), -1 + yield 1, from_triple(1, coeff, -random.randrange(2*maxexp)) + yield -1, from_triple(-1, coeff, -random.randrange(2*maxexp)) + for coeff in pow10: + yield coeff, -1 + yield -coeff, 1 + yield 1, -coeff + yield -coeff, 1 + +# Close to 1: +def close_to_one_greater(prec, emax, emin): + rprec = 10**prec + return ''.join(("1.", '0'*random.randrange(prec), + str(random.randrange(rprec)))) + +def close_to_one_less(prec, emax, emin): + rprec = 10**prec + return ''.join(("0.9", '9'*random.randrange(prec), + str(random.randrange(rprec)))) + +# Close to 0: +def close_to_zero_greater(prec, emax, emin): + rprec = 10**prec + return ''.join(("0.", '0'*random.randrange(prec), + str(random.randrange(rprec)))) + +def close_to_zero_less(prec, emax, emin): + rprec = 10**prec + return ''.join(("-0.", '0'*random.randrange(prec), + str(random.randrange(rprec)))) + +# Close to emax: +def close_to_emax_less(prec, emax, emin): + rprec = 10**prec + return ''.join(("9.", '9'*random.randrange(prec), + str(random.randrange(rprec)), "E", str(emax))) + +def close_to_emax_greater(prec, emax, emin): + rprec = 10**prec + return ''.join(("1.", '0'*random.randrange(prec), + str(random.randrange(rprec)), "E", str(emax+1))) + +# Close to emin: +def close_to_emin_greater(prec, emax, emin): + rprec = 10**prec + return ''.join(("1.", '0'*random.randrange(prec), + str(random.randrange(rprec)), "E", str(emin))) + +def close_to_emin_less(prec, emax, emin): + rprec = 10**prec + return ''.join(("9.", '9'*random.randrange(prec), + str(random.randrange(rprec)), "E", str(emin-1))) + +# Close to etiny: +def close_to_etiny_greater(prec, emax, emin): + rprec = 10**prec + etiny = emin - (prec - 1) + return ''.join(("1.", '0'*random.randrange(prec), + str(random.randrange(rprec)), "E", str(etiny))) + +def close_to_etiny_less(prec, emax, emin): + rprec = 10**prec + etiny = emin - (prec - 1) + return ''.join(("9.", '9'*random.randrange(prec), + str(random.randrange(rprec)), "E", str(etiny-1))) + + +def close_to_min_etiny_greater(prec, max_prec, min_emin): + rprec = 10**prec + etiny = min_emin - (max_prec - 1) + return ''.join(("1.", '0'*random.randrange(prec), + str(random.randrange(rprec)), "E", str(etiny))) + +def close_to_min_etiny_less(prec, max_prec, min_emin): + rprec = 10**prec + etiny = min_emin - (max_prec - 1) + return ''.join(("9.", '9'*random.randrange(prec), + str(random.randrange(rprec)), "E", str(etiny-1))) + + +close_funcs = [ + close_to_one_greater, close_to_one_less, close_to_zero_greater, + close_to_zero_less, close_to_emax_less, close_to_emax_greater, + close_to_emin_greater, close_to_emin_less, close_to_etiny_greater, + close_to_etiny_less, close_to_min_etiny_greater, close_to_min_etiny_less +] + + +def un_close_numbers(prec, emax, emin, itertns=None): + if itertns is None: + itertns = 1000 + for i in range(itertns): + for func in close_funcs: + yield func(prec, emax, emin) + +def bin_close_numbers(prec, emax, emin, itertns=None): + if itertns is None: + itertns = 1000 + for i in range(itertns): + for func1 in close_funcs: + for func2 in close_funcs: + yield func1(prec, emax, emin), func2(prec, emax, emin) + for func in close_funcs: + yield randdec(prec, emax), func(prec, emax, emin) + yield func(prec, emax, emin), randdec(prec, emax) + +def tern_close_numbers(prec, emax, emin, itertns): + if itertns is None: + itertns = 1000 + for i in range(itertns): + for func1 in close_funcs: + for func2 in close_funcs: + for func3 in close_funcs: + yield (func1(prec, emax, emin), func2(prec, emax, emin), + func3(prec, emax, emin)) + for func in close_funcs: + yield (randdec(prec, emax), func(prec, emax, emin), + func(prec, emax, emin)) + yield (func(prec, emax, emin), randdec(prec, emax), + func(prec, emax, emin)) + yield (func(prec, emax, emin), func(prec, emax, emin), + randdec(prec, emax)) + for func in close_funcs: + yield (randdec(prec, emax), randdec(prec, emax), + func(prec, emax, emin)) + yield (randdec(prec, emax), func(prec, emax, emin), + randdec(prec, emax)) + yield (func(prec, emax, emin), randdec(prec, emax), + randdec(prec, emax)) + + +# If itertns == None, test all digit lengths up to prec + 30 +def un_incr_digits(prec, maxexp, itertns): + if itertns is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), itertns) + for m in lst: + yield from_triple(1, ndigits(m), 0) + yield from_triple(-1, ndigits(m), 0) + yield from_triple(1, ndigits(m), random.randrange(maxexp)) + yield from_triple(-1, ndigits(m), random.randrange(maxexp)) + +# If itertns == None, test all digit lengths up to prec + 30 +# Also output decimals im tuple form. +def un_incr_digits_tuple(prec, maxexp, itertns): + if itertns is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), itertns) + for m in lst: + yield from_triple(1, ndigits(m), 0) + yield from_triple(-1, ndigits(m), 0) + yield from_triple(1, ndigits(m), random.randrange(maxexp)) + yield from_triple(-1, ndigits(m), random.randrange(maxexp)) + # test from tuple + yield (0, tuple(map(int, str(ndigits(m)))), 0) + yield (1, tuple(map(int, str(ndigits(m)))), 0) + yield (0, tuple(map(int, str(ndigits(m)))), random.randrange(maxexp)) + yield (1, tuple(map(int, str(ndigits(m)))), random.randrange(maxexp)) + +# If itertns == None, test all combinations of digit lengths up to prec + 30 +def bin_incr_digits(prec, maxexp, itertns): + if itertns is None: + lst1 = range(prec+30) + lst2 = range(prec+30) + else: + lst1 = random.sample(range(prec+30), itertns) + lst2 = random.sample(range(prec+30), itertns) + for m in lst1: + x = from_triple(1, ndigits(m), 0) + yield x, x + x = from_triple(-1, ndigits(m), 0) + yield x, x + x = from_triple(1, ndigits(m), random.randrange(maxexp)) + yield x, x + x = from_triple(-1, ndigits(m), random.randrange(maxexp)) + yield x, x + for m in lst1: + for n in lst2: + x = from_triple(1, ndigits(m), 0) + y = from_triple(1, ndigits(n), 0) + yield x, y + x = from_triple(-1, ndigits(m), 0) + y = from_triple(1, ndigits(n), 0) + yield x, y + x = from_triple(1, ndigits(m), 0) + y = from_triple(-1, ndigits(n), 0) + yield x, y + x = from_triple(-1, ndigits(m), 0) + y = from_triple(-1, ndigits(n), 0) + yield x, y + x = from_triple(1, ndigits(m), random.randrange(maxexp)) + y = from_triple(1, ndigits(n), random.randrange(maxexp)) + yield x, y + x = from_triple(-1, ndigits(m), random.randrange(maxexp)) + y = from_triple(1, ndigits(n), random.randrange(maxexp)) + yield x, y + x = from_triple(1, ndigits(m), random.randrange(maxexp)) + y = from_triple(-1, ndigits(n), random.randrange(maxexp)) + yield x, y + x = from_triple(-1, ndigits(m), random.randrange(maxexp)) + y = from_triple(-1, ndigits(n), random.randrange(maxexp)) + yield x, y + + +def randsign(): + return (1, -1)[random.randrange(2)] + +# If itertns == None, test all combinations of digit lengths up to prec + 30 +def tern_incr_digits(prec, maxexp, itertns): + if itertns is None: + lst1 = range(prec+30) + lst2 = range(prec+30) + lst3 = range(prec+30) + else: + lst1 = random.sample(range(prec+30), itertns) + lst2 = random.sample(range(prec+30), itertns) + lst3 = random.sample(range(prec+30), itertns) + for m in lst1: + for n in lst2: + for p in lst3: + x = from_triple(randsign(), ndigits(m), 0) + y = from_triple(randsign(), ndigits(n), 0) + z = from_triple(randsign(), ndigits(p), 0) + yield x, y, z + + +# Tests for the 'logical' functions +def bindigits(prec): + z = 0 + for i in range(prec): + z += random.randrange(2) * 10**i + return z + +def logical_un_incr_digits(prec, itertns): + if itertns is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), itertns) + for m in lst: + yield from_triple(1, bindigits(m), 0) + +def logical_bin_incr_digits(prec, itertns): + if itertns is None: + lst1 = range(prec+30) + lst2 = range(prec+30) + else: + lst1 = random.sample(range(prec+30), itertns) + lst2 = random.sample(range(prec+30), itertns) + for m in lst1: + x = from_triple(1, bindigits(m), 0) + yield x, x + for m in lst1: + for n in lst2: + x = from_triple(1, bindigits(m), 0) + y = from_triple(1, bindigits(n), 0) + yield x, y + + +py_major = sys.version_info[0] +if py_major == 2: + def touni(c): return unichr(c) +else: + def touni(c): return chr(c) + +# Generate list of all unicode characters that are accepted +# as fill characters by decimal.py. +def gen_unicode_chars(): + from decimal import Decimal + sys.stderr.write("\ngenerating unicode chars ... ") + r = [] + for c in range(32, 0x110001): + try: + x = touni(c) + try: + x.encode('utf-8').decode() + format(Decimal(0), x + '<19g') + r.append(x) + except: + pass + except ValueError: + pass + r.remove(touni(ord("'"))) + r.remove(touni(ord('"'))) + r.remove(touni(ord('\\'))) + sys.stderr.write("DONE\n\n") + return r + +unicode_chars = [] +def rand_unicode(): + global unicode_chars + if not unicode_chars: + unicode_chars = gen_unicode_chars() + return random.choice(unicode_chars) + + +# Generate random format strings +# [[fill]align][sign][#][0][width][.precision][type] +def rand_format(fill): + active = sorted(random.sample(range(7), random.randrange(8))) + have_align = 0 + s = '' + for elem in active: + if elem == 0: # fill+align + s += fill + s += random.choice('<>=^') + have_align = 1 + elif elem == 1: # sign + s += random.choice('+- ') + elif elem == 2 and not have_align: # zeropad + s += '0' + elif elem == 3: # width + s += str(random.randrange(1, 100)) + elif elem == 4: # thousands separator + s += ',' + elif elem == 5: # prec + s += '.' + # decimal.py does not support prec=0 + s += str(random.randrange(1, 100)) + elif elem == 6: + if 4 in active: c = 'EeGgFf%' + else: c = 'EeGgFfn%' + s += random.choice(c) + return s diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/python/randfloat.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/python/randfloat.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,263 @@ +# Copyright (c) 2010 Python Software Foundation. All Rights Reserved. +# Adapted from Python's Lib/test/test_strtod.py (by Mark Dickinson) + +# Tests for the correctly-rounded string -> float conversions +# introduced in Python 2.7 and 3.1. + +import random + +TEST_SIZE = 16 + + +def test_short_halfway_cases(): + # exact halfway cases with a small number of significant digits + for k in 0, 5, 10, 15, 20: + # upper = smallest integer >= 2**54/5**k + upper = -(-2**54//5**k) + # lower = smallest odd number >= 2**53/5**k + lower = -(-2**53//5**k) + if lower % 2 == 0: + lower += 1 + for i in range(10 * TEST_SIZE): + # Select a random odd n in [2**53/5**k, + # 2**54/5**k). Then n * 10**k gives a halfway case + # with small number of significant digits. + n, e = random.randrange(lower, upper, 2), k + + # Remove any additional powers of 5. + while n % 5 == 0: + n, e = n // 5, e + 1 + assert n % 10 in (1, 3, 7, 9) + + # Try numbers of the form n * 2**p2 * 10**e, p2 >= 0, + # until n * 2**p2 has more than 20 significant digits. + digits, exponent = n, e + while digits < 10**20: + s = '{}e{}'.format(digits, exponent) + yield s + # Same again, but with extra trailing zeros. + s = '{}e{}'.format(digits * 10**40, exponent - 40) + yield s + digits *= 2 + + # Try numbers of the form n * 5**p2 * 10**(e - p5), p5 + # >= 0, with n * 5**p5 < 10**20. + digits, exponent = n, e + while digits < 10**20: + s = '{}e{}'.format(digits, exponent) + yield s + # Same again, but with extra trailing zeros. + s = '{}e{}'.format(digits * 10**40, exponent - 40) + yield s + digits *= 5 + exponent -= 1 + +def test_halfway_cases(): + # test halfway cases for the round-half-to-even rule + for i in range(1000): + for j in range(TEST_SIZE): + # bit pattern for a random finite positive (or +0.0) float + bits = random.randrange(2047*2**52) + + # convert bit pattern to a number of the form m * 2**e + e, m = divmod(bits, 2**52) + if e: + m, e = m + 2**52, e - 1 + e -= 1074 + + # add 0.5 ulps + m, e = 2*m + 1, e - 1 + + # convert to a decimal string + if e >= 0: + digits = m << e + exponent = 0 + else: + # m * 2**e = (m * 5**-e) * 10**e + digits = m * 5**-e + exponent = e + s = '{}e{}'.format(digits, exponent) + yield s + +def test_boundaries(): + # boundaries expressed as triples (n, e, u), where + # n*10**e is an approximation to the boundary value and + # u*10**e is 1ulp + boundaries = [ + (10000000000000000000, -19, 1110), # a power of 2 boundary (1.0) + (17976931348623159077, 289, 1995), # overflow boundary (2.**1024) + (22250738585072013831, -327, 4941), # normal/subnormal (2.**-1022) + (0, -327, 4941), # zero + ] + for n, e, u in boundaries: + for j in range(1000): + for i in range(TEST_SIZE): + digits = n + random.randrange(-3*u, 3*u) + exponent = e + s = '{}e{}'.format(digits, exponent) + yield s + n *= 10 + u *= 10 + e -= 1 + +def test_underflow_boundary(): + # test values close to 2**-1075, the underflow boundary; similar + # to boundary_tests, except that the random error doesn't scale + # with n + for exponent in range(-400, -320): + base = 10**-exponent // 2**1075 + for j in range(TEST_SIZE): + digits = base + random.randrange(-1000, 1000) + s = '{}e{}'.format(digits, exponent) + yield s + +def test_bigcomp(): + for ndigs in 5, 10, 14, 15, 16, 17, 18, 19, 20, 40, 41, 50: + dig10 = 10**ndigs + for i in range(100 * TEST_SIZE): + digits = random.randrange(dig10) + exponent = random.randrange(-400, 400) + s = '{}e{}'.format(digits, exponent) + yield s + +def test_parsing(): + # make '0' more likely to be chosen than other digits + digits = '000000123456789' + signs = ('+', '-', '') + + # put together random short valid strings + # \d*[.\d*]?e + for i in range(1000): + for j in range(TEST_SIZE): + s = random.choice(signs) + intpart_len = random.randrange(5) + s += ''.join(random.choice(digits) for _ in range(intpart_len)) + if random.choice([True, False]): + s += '.' + fracpart_len = random.randrange(5) + s += ''.join(random.choice(digits) + for _ in range(fracpart_len)) + else: + fracpart_len = 0 + if random.choice([True, False]): + s += random.choice(['e', 'E']) + s += random.choice(signs) + exponent_len = random.randrange(1, 4) + s += ''.join(random.choice(digits) + for _ in range(exponent_len)) + + if intpart_len + fracpart_len: + yield s + +test_particular = [ + # squares + '1.00000000100000000025', + '1.0000000000000000000000000100000000000000000000000' #... + '00025', + '1.0000000000000000000000000000000000000000000010000' #... + '0000000000000000000000000000000000000000025', + '1.0000000000000000000000000000000000000000000000000' #... + '000001000000000000000000000000000000000000000000000' #... + '000000000025', + '0.99999999900000000025', + '0.9999999999999999999999999999999999999999999999999' #... + '999000000000000000000000000000000000000000000000000' #... + '000025', + '0.9999999999999999999999999999999999999999999999999' #... + '999999999999999999999999999999999999999999999999999' #... + '999999999999999999999999999999999999999990000000000' #... + '000000000000000000000000000000000000000000000000000' #... + '000000000000000000000000000000000000000000000000000' #... + '0000000000000000000000000000025', + + '1.0000000000000000000000000000000000000000000000000' #... + '000000000000000000000000000000000000000000000000000' #... + '100000000000000000000000000000000000000000000000000' #... + '000000000000000000000000000000000000000000000000001', + '1.0000000000000000000000000000000000000000000000000' #... + '000000000000000000000000000000000000000000000000000' #... + '500000000000000000000000000000000000000000000000000' #... + '000000000000000000000000000000000000000000000000005', + '1.0000000000000000000000000000000000000000000000000' #... + '000000000100000000000000000000000000000000000000000' #... + '000000000000000000250000000000000002000000000000000' #... + '000000000000000000000000000000000000000000010000000' #... + '000000000000000000000000000000000000000000000000000' #... + '0000000000000000001', + '1.0000000000000000000000000000000000000000000000000' #... + '000000000100000000000000000000000000000000000000000' #... + '000000000000000000249999999999999999999999999999999' #... + '999999999999979999999999999999999999999999999999999' #... + '999999999999999999999900000000000000000000000000000' #... + '000000000000000000000000000000000000000000000000000' #... + '00000000000000000000000001', + + '0.9999999999999999999999999999999999999999999999999' #... + '999999999900000000000000000000000000000000000000000' #... + '000000000000000000249999999999999998000000000000000' #... + '000000000000000000000000000000000000000000010000000' #... + '000000000000000000000000000000000000000000000000000' #... + '0000000000000000001', + '0.9999999999999999999999999999999999999999999999999' #... + '999999999900000000000000000000000000000000000000000' #... + '000000000000000000250000001999999999999999999999999' #... + '999999999999999999999999999999999990000000000000000' #... + '000000000000000000000000000000000000000000000000000' #... + '1', + + # tough cases for ln etc. + '1.000000000000000000000000000000000000000000000000' #... + '00000000000000000000000000000000000000000000000000' #... + '00100000000000000000000000000000000000000000000000' #... + '00000000000000000000000000000000000000000000000000' #... + '0001', + '0.999999999999999999999999999999999999999999999999' #... + '99999999999999999999999999999999999999999999999999' #... + '99899999999999999999999999999999999999999999999999' #... + '99999999999999999999999999999999999999999999999999' #... + '99999999999999999999999999999999999999999999999999' #... + '9999' + ] + + +TESTCASES = [ + [x for x in test_short_halfway_cases()], + [x for x in test_halfway_cases()], + [x for x in test_boundaries()], + [x for x in test_underflow_boundary()], + [x for x in test_bigcomp()], + [x for x in test_parsing()], + test_particular +] + +def un_randfloat(): + for i in range(1000): + l = random.choice(TESTCASES[:6]) + yield random.choice(l) + for v in test_particular: + yield v + +def bin_randfloat(): + for i in range(1000): + l1 = random.choice(TESTCASES) + l2 = random.choice(TESTCASES) + yield random.choice(l1), random.choice(l2) + +def tern_randfloat(): + for i in range(1000): + l1 = random.choice(TESTCASES) + l2 = random.choice(TESTCASES) + l3 = random.choice(TESTCASES) + yield random.choice(l1), random.choice(l2), random.choice(l3) + + +if __name__ == '__main__': + + for s in un_randfloat(): + print(s) + + for s in bin_randfloat(): + print(s) + + for s in tern_randfloat(): + print(s) diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/Makefile.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/Makefile.in Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,98 @@ + +SRCDIR = .. +INC = -I$(SRCDIR) -I../../../../ + +CC = @CC@ +LD = @CC@ +AR = @AR@ + +MPD_WARN = @MPD_WARN@ +MPD_CONFIG = @MPD_CONFIG@ +MPD_CCOV = @MPD_CCOV@ + +CONFIGURE_CFLAGS = @CONFIGURE_CFLAGS@ +CFLAGS ?= $(CONFIGURE_CFLAGS) + +GMPDEPS = @GMPDEPS@ +GMPPATH = @GMPPATH@ +ifneq ($(strip $(GMPPATH)),) + INC += -I$(GMPPATH)/include -L$(GMPPATH)/lib + ifeq ($(CC), suncc) + INC += -R$(GMPPATH)/lib + endif +endif + + +default: runtest cov fntcov test_transpose ppro_mulmod +extended: default karatsuba_fnt karatsuba_fnt2 $(GMPDEPS) +build_libcoverage: CFLAGS = $(MPD_WARN) $(MPD_CONFIG) $(MPD_CCOV) +build_libcoverage: default + + +# dectest +runtest:\ +runtest.c $(SRCDIR)/io.h $(SRCDIR)/mpdecimal.h $(SRCDIR)/memory.h \ + $(SRCDIR)/mptest.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a \ + malloc_fail.c malloc_fail.h + $(CC) $(INC) $(CFLAGS) -o runtest runtest.c malloc_fail.c $(SRCDIR)/libmpdec.a -lm + +cov:\ +cov.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a \ + malloc_fail.c malloc_fail.h + $(CC) $(INC) $(CFLAGS) -o cov cov.c malloc_fail.c $(SRCDIR)/libmpdec.a -lm + +fntcov:\ +fntcov.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a \ + malloc_fail.c malloc_fail.h + $(CC) $(INC) $(CFLAGS) -o fntcov fntcov.c malloc_fail.c $(SRCDIR)/libmpdec.a -lm + +# extended tests +karatsuba_fnt:\ +karatsuba_fnt.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a + $(CC) $(INC) $(CFLAGS) -o karatsuba_fnt karatsuba_fnt.c $(SRCDIR)/libmpdec.a -lm + +karatsuba_fnt2:\ +karatsuba_fnt2.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a + $(CC) $(INC) $(CFLAGS) -o karatsuba_fnt2 karatsuba_fnt2.c $(SRCDIR)/libmpdec.a -lm + +ppro_mulmod:\ +ppro_mulmod.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/constants.h \ + $(SRCDIR)/numbertheory.h $(SRCDIR)/mptypes.h \ + $(SRCDIR)/mptest.h $(SRCDIR)/umodarith.h \ + $(SRCDIR)/typearith.h $(SRCDIR)/libmpdec.a + $(CC) $(INC) $(CFLAGS) -o ppro_mulmod ppro_mulmod.c $(SRCDIR)/libmpdec.a -lm + +test_transpose:\ +test_transpose.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/constants.h $(SRCDIR)/mptypes.h \ + $(SRCDIR)/mptest.h $(SRCDIR)/typearith.h \ + $(SRCDIR)/transpose.h $(SRCDIR)/libmpdec.a + $(CC) $(INC) $(CFLAGS) -o test_transpose test_transpose.c $(SRCDIR)/libmpdec.a -lm + +# tests against gmp +mpd_mpz_add:\ +mpd_mpz_add.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a + $(CC) $(INC) $(CFLAGS) -o mpd_mpz_add mpd_mpz_add.c $(SRCDIR)/libmpdec.a -lm -lgmp + +mpd_mpz_divmod:\ +mpd_mpz_divmod.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a + $(CC) $(INC) $(CFLAGS) -o mpd_mpz_divmod mpd_mpz_divmod.c $(SRCDIR)/libmpdec.a -lm -lgmp + +mpd_mpz_mul:\ +mpd_mpz_mul.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a + $(CC) $(INC) $(CFLAGS) -o mpd_mpz_mul mpd_mpz_mul.c $(SRCDIR)/libmpdec.a -lm -lgmp + +mpd_mpz_sub:\ +mpd_mpz_sub.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h $(SRCDIR)/libmpdec.a + $(CC) $(INC) $(CFLAGS) -o mpd_mpz_sub mpd_mpz_sub.c $(SRCDIR)/libmpdec.a -lm -lgmp + + +FORCE: + +clean: FORCE + rm -f *.o *.gch *.gcda *.gcno *.gcov *.dyn *.dpi *.lock \ + runtest cov fntcov karatsuba_fnt karatsuba_fnt2 ppro_mulmod \ + test_transpose mpd_mpz_add mpd_mpz_divmod mpd_mpz_mul mpd_mpz_sub + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/Makefile.vc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/Makefile.vc Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,89 @@ + + +CC = cl.exe +LD = $(CC) + +SRCDIR = .. +INC = -I$(SRCDIR) + +OBJS = +!if "$(MACHINE)" == "x64" +OBJS = $(SRCDIR)\vcdiv64.obj +!endif + +default: runtest cov fntcov test_transpose +extended: default karatsuba_fnt karatsuba_fnt2 ppro_mulmod +extended_gmp: extended mpd_mpz_add mpd_mpz_divmod mpd_mpz_mul mpd_mpz_sub + + +# dectest +runtest:\ +Makefile runtest.c $(SRCDIR)\io.h $(SRCDIR)\mpdecimal.h $(SRCDIR)\memory.h \ + $(SRCDIR)\mptest.h $(SRCDIR)\mptypes.h $(SRCDIR)\$(USELIB) \ + malloc_fail.c malloc_fail.h + $(CC) -I$(SRCDIR) $(UFLAGS) $(CFLAGS) runtest.c malloc_fail.c $(SRCDIR)\$(USELIB) + +# coverage +cov:\ +cov.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(SRCDIR)\$(USELIB) \ + malloc_fail.c malloc_fail.h + $(CC) -I$(SRCDIR) $(UFLAGS) $(CFLAGS) cov.c malloc_fail.c $(SRCDIR)\$(USELIB) + +fntcov:\ +fntcov.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(SRCDIR)\$(USELIB) \ + malloc_fail.c malloc_fail.h + $(CC) -I$(SRCDIR) $(UFLAGS) $(CFLAGS) fntcov.c malloc_fail.c $(SRCDIR)\$(USELIB) + +# extended tests +karatsuba_fnt:\ +Makefile karatsuba_fnt.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h \ + $(SRCDIR)\mptest.h $(SRCDIR)\$(USELIB) + $(CC) -I$(SRCDIR) $(UFLAGS) $(CFLAGS) karatsuba_fnt.c $(SRCDIR)\$(USELIB) +karatsuba_fnt2:\ +Makefile karatsuba_fnt2.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h \ + $(SRCDIR)\mptest.h $(SRCDIR)\$(USELIB) + $(CC) -I$(SRCDIR) $(UFLAGS) $(CFLAGS) karatsuba_fnt2.c $(SRCDIR)\$(USELIB) +ppro_mulmod:\ +Makefile ppro_mulmod.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\constants.h \ + $(SRCDIR)\numbertheory.h $(SRCDIR)\mptypes.h \ + $(SRCDIR)\mptest.h $(SRCDIR)\umodarith.h \ + $(SRCDIR)\typearith.h $(SRCDIR)\$(USELIB) + $(CC) -I$(SRCDIR) $(UFLAGS) $(CFLAGS) ppro_mulmod.c $(SRCDIR)\$(USELIB) +test_transpose:\ +Makefile test_transpose.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\constants.h $(SRCDIR)\mptypes.h \ + $(SRCDIR)\mptest.h $(SRCDIR)\typearith.h \ + $(SRCDIR)\transpose.h $(SRCDIR)\$(USELIB) + $(CC) -I$(SRCDIR) $(UFLAGS) -wd4273 $(CFLAGS) test_transpose.c $(SRCDIR)\constants.c $(OBJS) $(SRCDIR)\$(USELIB) + +# gmp tests +mpd_mpz_add:\ +Makefile mpd_mpz_add.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(SRCDIR)\$(USELIB) + $(CC) -I$(SRCDIR) -I"$(GMPINC)" $(UFLAGS) $(CFLAGS) mpd_mpz_add.c $(SRCDIR)\$(USELIB) "$(GMPLIB)" +mpd_mpz_divmod:\ +Makefile mpd_mpz_divmod.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(SRCDIR)\$(USELIB) + $(CC) -I$(SRCDIR) -I"$(GMPINC)" $(UFLAGS) $(CFLAGS) mpd_mpz_divmod.c $(SRCDIR)\$(USELIB) "$(GMPLIB)" +mpd_mpz_mul:\ +Makefile mpd_mpz_mul.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(SRCDIR)\$(USELIB) + $(CC) -I$(SRCDIR) -I"$(GMPINC)" $(UFLAGS) $(CFLAGS) mpd_mpz_divmod.c $(SRCDIR)\$(USELIB) "$(GMPLIB)" +mpd_mpz_sub:\ +Makefile mpd_mpz_sub.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(SRCDIR)\$(USELIB) + $(CC) -I$(SRCDIR) -I"$(GMPINC)" $(UFLAGS) $(CFLAGS) mpd_mpz_sub.c $(SRCDIR)\$(USELIB) "$(GMPLIB)" + + +FORCE: + +clean: FORCE + -@if exist *.obj del *.obj + -@if exist *.dll del *.dll + -@if exist *.exp del *.exp + -@if exist *.lib del *.lib + -@if exist *.ilk del *.ilk + -@if exist *.pdb del *.pdb + -@if exist *.pgc del *.pgc + -@if exist *.pgd del *.pgd + -@if exist *.manifest del *.manifest + -@if exist *.exe del *.exe + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/additional.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/additional.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,29 @@ + +-- Additional Tests + +Dectest: ./testdata/baseconv.decTest + +Dectest: ./testdata/binop_eq.decTest + +Dectest: ./testdata/divmod.decTest +Dectest: ./testdata/divmod_eq.decTest + +Dectest: ./testdata/fma_eq.decTest + +Dectest: ./testdata/format.decTest + +Dectest: ./testdata/invroot.decTest + +Dectest: ./testdata/largeint.decTest + +Dectest: ./testdata/powmod.decTest +Dectest: ./testdata/powmod_eq.decTest + +Dectest: ./testdata/shiftlr.decTest + +Dectest: ./testdata/getint.decTest + +Dectest: ./testdata/cov.decTest +Dectest: ./testdata/extra.decTest + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/cov.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/cov.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,1346 @@ +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" +#include "malloc_fail.h" + + +/* This file contains coverage tests for rarely exercised code paths. */ + +#ifndef _MSC_VER + #include + #define ASSERT(p) if (!(p)) {abort();} + mpd_uint_t mpd_qsshiftr(mpd_t *result, const mpd_t *a, mpd_ssize_t n); +#else + #define ASSERT(p) if (!(p)) {mpd_err_fatal("assertion failed");} +#endif + +#define BUFSIZE 500 +#if MPD_MAX_FLAG_LIST > BUFSIZE + #error "insufficient buffer length" +#endif + + +static void mpd_testcontext(mpd_context_t *ctx) +{ + mpd_defaultcontext(ctx); + ctx->prec = 28; +} + +static void +test_traphandler(mpd_context_t *ctx UNUSED) +{ + ; +} + +uint64_t +randbits(void) +{ + return (uint64_t)rand()<<48 | (uint64_t)rand()<<32 | + (uint64_t)rand()<<16 | (uint64_t)rand(); +} + + +/*****************************************************************************/ +/* Inttype conversion functions */ +/*****************************************************************************/ + +#define TEST_GETSET_INTTYPE(TYPE, FMTSPEC) \ +static void \ +getset_##TYPE( \ + mpd_t *a, TYPE x, mpd_context_t *ctx, \ + TYPE (* getfunc)(const mpd_t *, mpd_context_t *ctx), \ + void (* setfunc)(mpd_t *, TYPE, mpd_context_t *ctx)) \ +{ \ + char buf[BUFSIZE]; \ + char *s; \ + TYPE y; \ + \ + setfunc(a, x, ctx); \ + \ + if (getfunc != NULL) { \ + y = getfunc(a, ctx); \ + ASSERT(x == y) \ + } \ + \ + snprintf(buf, BUFSIZE, "%" FMTSPEC, x); \ + s = mpd_to_sci(a, 0); \ + ASSERT(strcmp(s, buf) == 0) \ + mpd_free(s); \ +} + +TEST_GETSET_INTTYPE(mpd_ssize_t, PRI_mpd_ssize_t) +TEST_GETSET_INTTYPE(int32_t, PRIi32) +TEST_GETSET_INTTYPE(int64_t, PRIi64) +TEST_GETSET_INTTYPE(mpd_uint_t, PRI_mpd_size_t) +TEST_GETSET_INTTYPE(uint32_t, PRIu32) +TEST_GETSET_INTTYPE(uint64_t, PRIu64) + +static void +test_int_conversions(void) +{ + uint32_t status; + mpd_context_t ctx; + mpd_t *a; + mpd_uint_t data[MPD_MINALLOC_MAX]; + mpd_t b = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, data}; + int i; + + mpd_testcontext(&ctx); + a = mpd_new(&ctx); + +#ifdef CONFIG_64 + #define mpd_get_i32 NULL + #define mpd_get_u32 NULL +#else + #define mpd_get_i64 NULL + #define mpd_get_u64 NULL +#endif + + /* mpd_ssize_t */ + getset_mpd_ssize_t(a, MPD_SSIZE_MIN, &ctx, mpd_get_ssize, mpd_set_ssize); + getset_mpd_ssize_t(a, MPD_SSIZE_MAX, &ctx, mpd_get_ssize, mpd_set_ssize); + for (i = 0; i < 100000; i++) { + getset_mpd_ssize_t(a, (mpd_ssize_t)randbits(), &ctx, + mpd_get_ssize, mpd_set_ssize); + } + + getset_mpd_ssize_t(&b, MPD_SSIZE_MIN, &ctx, mpd_get_ssize, mpd_sset_ssize); + getset_mpd_ssize_t(&b, MPD_SSIZE_MAX, &ctx, mpd_get_ssize, mpd_sset_ssize); + for (i = 0; i < 100000; i++) { + getset_mpd_ssize_t(&b, (mpd_ssize_t)randbits(), &ctx, + mpd_get_ssize, mpd_sset_ssize); + } + + /* int32_t */ + getset_int32_t(a, INT32_MIN, &ctx, mpd_get_i32, mpd_set_i32); + getset_int32_t(a, INT32_MAX, &ctx, mpd_get_i32, mpd_set_i32); + for (i = 0; i < 100000; i++) { + getset_int32_t(a, (int32_t)randbits(), &ctx, + mpd_get_i32, mpd_set_i32); + } + + getset_int32_t(&b, INT32_MIN, &ctx, mpd_get_i32, mpd_sset_i32); + getset_int32_t(&b, INT32_MAX, &ctx, mpd_get_i32, mpd_sset_i32); + for (i = 0; i < 100000; i++) { + getset_int32_t(&b, (int32_t)randbits(), &ctx, + mpd_get_i32, mpd_sset_i32); + } + + /* int64_t */ + getset_int64_t(a, INT64_MIN, &ctx, mpd_get_i64, mpd_set_i64); + getset_int64_t(a, INT64_MAX, &ctx, mpd_get_i64, mpd_set_i64); + for (i = 0; i < 100000; i++) { + getset_int64_t(a, (int64_t)randbits(), &ctx, + mpd_get_i64, mpd_set_i64); + } + +#ifdef CONFIG_64 + getset_int64_t(&b, INT64_MIN, &ctx, mpd_get_i64, mpd_sset_i64); + getset_int64_t(&b, INT64_MAX, &ctx, mpd_get_i64, mpd_sset_i64); + for (i = 0; i < 100000; i++) { + getset_int64_t(&b, (int64_t)randbits(), &ctx, + mpd_get_i64, mpd_sset_i64); + } +#endif + + /* mpd_uint_t */ + getset_mpd_uint_t(a, 0, &ctx, mpd_get_uint, mpd_set_uint); + getset_mpd_uint_t(a, MPD_UINT_MAX, &ctx, mpd_get_uint, mpd_set_uint); + for (i = 0; i < 100000; i++) { + getset_mpd_uint_t(a, (mpd_uint_t)randbits(), &ctx, + mpd_get_uint, mpd_set_uint); + } + + getset_mpd_uint_t(&b, 0, &ctx, mpd_get_uint, mpd_sset_uint); + getset_mpd_uint_t(&b, MPD_UINT_MAX, &ctx, mpd_get_uint, mpd_sset_uint); + for (i = 0; i < 100000; i++) { + getset_mpd_uint_t(&b, (mpd_uint_t)randbits(), &ctx, + mpd_get_uint, mpd_sset_uint); + } + + /* uint32_t */ + getset_uint32_t(a, 0, &ctx, mpd_get_u32, mpd_set_u32); + getset_uint32_t(a, UINT32_MAX, &ctx, mpd_get_u32, mpd_set_u32); + for (i = 0; i < 100000; i++) { + getset_uint32_t(a, (uint32_t)randbits(), &ctx, + mpd_get_u32, mpd_set_u32); + } + + getset_uint32_t(&b, 0, &ctx, mpd_get_u32, mpd_sset_u32); + getset_uint32_t(&b, UINT32_MAX, &ctx, mpd_get_u32, mpd_sset_u32); + for (i = 0; i < 100000; i++) { + getset_uint32_t(&b, (uint32_t)randbits(), &ctx, + mpd_get_u32, mpd_sset_u32); + } + + /* uint64_t */ + getset_uint64_t(a, 0, &ctx, mpd_get_u64, mpd_set_u64); + getset_uint64_t(a, UINT64_MAX, &ctx, mpd_get_u64, mpd_set_u64); + for (i = 0; i < 100000; i++) { + getset_uint64_t(a, (uint64_t)randbits(), &ctx, + mpd_get_u64, mpd_set_u64); + } + +#ifdef CONFIG_64 + getset_uint64_t(&b, 0, &ctx, mpd_get_u64, mpd_sset_u64); + getset_uint64_t(&b, UINT64_MAX, &ctx, mpd_get_u64, mpd_sset_u64); + for (i = 0; i < 100000; i++) { + getset_uint64_t(&b, (uint64_t)randbits(), &ctx, + mpd_get_u64, mpd_sset_u64); + } +#endif + + /* specials */ + status = 0; + mpd_set_string(a, "nan", &ctx); + ASSERT(mpd_qget_uint(a, &status) == MPD_UINT_MAX) + ASSERT(status&MPD_Invalid_operation) + + /* non-integer */ + status = 0; + mpd_set_string(a, "2345e-1", &ctx); + ASSERT(mpd_qget_uint(a, &status) == MPD_UINT_MAX) + ASSERT(status&MPD_Invalid_operation) + + /* too large */ + status = 0; + mpd_set_uint(a, 8, &ctx); + a->exp = MPD_RDIGITS; + ASSERT(mpd_qget_uint(a, &status) == MPD_UINT_MAX) + ASSERT(status&MPD_Invalid_operation) + + /* too large */ + status = 0; + mpd_set_uint(a, ((uint64_t)MPD_SSIZE_MAX)+1, &ctx); + ASSERT(mpd_qget_ssize(a, &status) == MPD_SSIZE_MAX) + ASSERT(status&MPD_Invalid_operation) + + mpd_del(a); +} + + +/*****************************************************************************/ +/* Mixed arithmetic functions */ +/*****************************************************************************/ + +#define TEST_ARITH_INTTYPE(TYPE, FMTSPEC) \ +static void \ +arith_##TYPE( \ + mpd_t *tmp, const mpd_t *a, TYPE x, mpd_context_t *ctx, \ + void (* func)(mpd_t *, const mpd_t *, TYPE, mpd_context_t *ctx), \ + void (* ctrl)(mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *ctx)) \ +{ \ + char buf[BUFSIZE]; \ + char *s1, *s2; \ + \ + func(tmp, a, x, ctx); \ + s1 = mpd_to_sci(tmp, 0); \ + \ + snprintf(buf, BUFSIZE, "%" FMTSPEC, x); \ + mpd_set_string(tmp, buf, ctx); \ + ctrl(tmp, a, tmp, ctx); \ + s2 = mpd_to_sci(tmp, 0); \ + \ + ASSERT(strcmp(s1, s2) == 0) \ + mpd_free(s1); \ + mpd_free(s2); \ +} + +TEST_ARITH_INTTYPE(mpd_ssize_t, PRI_mpd_ssize_t) +TEST_ARITH_INTTYPE(int32_t, PRIi32) +TEST_ARITH_INTTYPE(mpd_uint_t, PRI_mpd_size_t) +TEST_ARITH_INTTYPE(uint32_t, PRIu32) +#ifdef CONFIG_64 +TEST_ARITH_INTTYPE(int64_t, PRIi64) +TEST_ARITH_INTTYPE(uint64_t, PRIu64) +#endif + +static void (*ssize_funcs[])(mpd_t*, const mpd_t*, mpd_ssize_t, mpd_context_t*) = + {mpd_add_ssize, mpd_sub_ssize, mpd_mul_ssize, mpd_div_ssize, NULL}; + +static void (*i32_funcs[])(mpd_t*, const mpd_t*, int32_t, mpd_context_t*) = + {mpd_add_i32, mpd_sub_i32, mpd_mul_i32, mpd_div_i32, NULL}; + +static void (*uint_funcs[])(mpd_t*, const mpd_t*, mpd_uint_t, mpd_context_t*) = + {mpd_add_uint, mpd_sub_uint, mpd_mul_uint, mpd_div_uint, NULL}; + +static void (*u32_funcs[])(mpd_t*, const mpd_t*, uint32_t, mpd_context_t*) = + {mpd_add_u32, mpd_sub_u32, mpd_mul_u32, mpd_div_u32, NULL}; + +#ifdef CONFIG_64 +static void (*i64_funcs[])(mpd_t*, const mpd_t*, int64_t, mpd_context_t*) = + {mpd_add_i64, mpd_sub_i64, mpd_mul_i64, mpd_div_i64, NULL}; + +static void (*u64_funcs[])(mpd_t*, const mpd_t*, uint64_t, mpd_context_t*) = + {mpd_add_u64, mpd_sub_u64, mpd_mul_u64, mpd_div_u64, NULL}; +#endif + +static void (*control_funcs[])(mpd_t*, const mpd_t*, const mpd_t*, mpd_context_t*) = + {mpd_add, mpd_sub, mpd_mul, mpd_div, NULL}; + + +/* mixed mpd_t and integer operations */ +static void +test_mixed_arith(void) +{ + mpd_context_t ctx; + mpd_t *tmp, *a; + int i, k; + + mpd_testcontext(&ctx); + tmp = mpd_new(&ctx); + a = mpd_new(&ctx); + + ctx.traps &= ~MPD_Division_by_zero; + + for (i = 0; ssize_funcs[i] != NULL; i++) { + mpd_set_string(a, "123456e2", &ctx); + arith_mpd_ssize_t(tmp, a, MPD_SSIZE_MIN, &ctx, + ssize_funcs[i], control_funcs[i]); + arith_mpd_ssize_t(tmp, a, MPD_SSIZE_MAX, &ctx, + ssize_funcs[i], control_funcs[i]); + for (k = 0; k < 100000; k++) { + arith_mpd_ssize_t(tmp, a, (mpd_ssize_t)randbits(), &ctx, + ssize_funcs[i], control_funcs[i]); + } + } + + for (i = 0; i32_funcs[i] != NULL; i++) { + mpd_set_string(a, "-123456e2", &ctx); + arith_int32_t(tmp, a, INT32_MIN, &ctx, + i32_funcs[i], control_funcs[i]); + arith_int32_t(tmp, a, INT32_MAX, &ctx, + i32_funcs[i], control_funcs[i]); + for (k = 0; k < 100000; k++) { + arith_int32_t(tmp, a, (int32_t)randbits(), &ctx, + i32_funcs[i], control_funcs[i]); + } + } + + for (i = 0; uint_funcs[i] != NULL; i++) { + mpd_set_string(a, "456789e2", &ctx); + arith_mpd_uint_t(tmp, a, 0, &ctx, + uint_funcs[i], control_funcs[i]); + arith_mpd_uint_t(tmp, a, MPD_UINT_MAX, &ctx, + uint_funcs[i], control_funcs[i]); + for (k = 0; k < 100000; k++) { + arith_mpd_uint_t(tmp, a, (mpd_uint_t)randbits(), &ctx, + uint_funcs[i], control_funcs[i]); + } + } + + for (i = 0; u32_funcs[i] != NULL; i++) { + mpd_set_string(a, "987654e2", &ctx); + arith_uint32_t(tmp, a, 0, &ctx, + u32_funcs[i], control_funcs[i]); + arith_uint32_t(tmp, a, UINT32_MAX, &ctx, + u32_funcs[i], control_funcs[i]); + for (k = 0; k < 100000; k++) { + arith_uint32_t(tmp, a, (uint32_t)randbits(), &ctx, + u32_funcs[i], control_funcs[i]); + } + } + +#ifdef CONFIG_64 + for (i = 0; i64_funcs[i] != NULL; i++) { + mpd_set_string(a, "-123456e2", &ctx); + arith_int64_t(tmp, a, INT64_MIN, &ctx, + i64_funcs[i], control_funcs[i]); + arith_int64_t(tmp, a, INT64_MAX, &ctx, + i64_funcs[i], control_funcs[i]); + for (k = 0; k < 100000; k++) { + arith_int64_t(tmp, a, (int64_t)randbits(), &ctx, + i64_funcs[i], control_funcs[i]); + } + } + + for (i = 0; u64_funcs[i] != NULL; i++) { + mpd_set_string(a, "-123456e2", &ctx); + arith_uint64_t(tmp, a, 0, &ctx, + u64_funcs[i], control_funcs[i]); + arith_uint64_t(tmp, a, UINT64_MAX, &ctx, + u64_funcs[i], control_funcs[i]); + for (k = 0; k < 100000; k++) { + arith_uint64_t(tmp, a, (uint64_t)randbits(), &ctx, + u64_funcs[i], control_funcs[i]); + } + } +#endif + + mpd_del(tmp); + mpd_del(a); +} + +static void +test_context(void) +{ + mpd_context_t ctx; + mpd_ssize_t ssize; + + /* context.c */ + mpd_traphandler = test_traphandler; + mpd_init(&ctx, MPD_MAX_PREC+1); + ASSERT(ctx.status&MPD_Invalid_context) + ASSERT(ctx.newtrap == MPD_Invalid_context) + mpd_traphandler = mpd_dflt_traphandler; + + mpd_init(&ctx, 100); + ASSERT(MPD_MINALLOC_MIN <= MPD_MINALLOC && + MPD_MINALLOC <= MPD_MINALLOC_MAX) + + fprintf(stderr, " This warning is part of the coverage test: "); + ssize = MPD_MINALLOC; + mpd_setminalloc(2000); + ASSERT(MPD_MINALLOC == ssize) + + /* DON'T do this */ + MPD_MINALLOC = MPD_MINALLOC_MIN; + + mpd_basiccontext(&ctx); + ASSERT(mpd_getprec(&ctx) == 9) + ASSERT(mpd_getemax(&ctx) == MPD_MAX_EMAX) + ASSERT(mpd_getemin(&ctx) == MPD_MIN_EMIN) + ASSERT(mpd_getround(&ctx) == MPD_ROUND_HALF_UP) + ASSERT(mpd_gettraps(&ctx) == (MPD_Traps|MPD_Clamped)) + ASSERT(mpd_getstatus(&ctx) == 0) + ASSERT(mpd_getclamp(&ctx) == 0) + ASSERT(mpd_getcr(&ctx) == 1) + + ASSERT(mpd_ieee_context(&ctx, MPD_IEEE_CONTEXT_MAX_BITS*2) < 0) + + mpd_ieee_context(&ctx, 128); + ASSERT(mpd_getprec(&ctx) == 34) + ASSERT(mpd_getemax(&ctx) == 6144) + ASSERT(mpd_getemin(&ctx) == -6143) + ASSERT(mpd_getround(&ctx) == MPD_ROUND_HALF_EVEN) + ASSERT(mpd_gettraps(&ctx) == 0) + ASSERT(mpd_getstatus(&ctx) == 0) + ASSERT(mpd_getclamp(&ctx) == 1) + ASSERT(mpd_getcr(&ctx) == 1) + + ASSERT(!mpd_qsetprec(&ctx, -1)) + ASSERT(!mpd_qsetprec(&ctx, 0)) + ASSERT(!mpd_qsetprec(&ctx, MPD_MAX_PREC+1)) + + ASSERT(!mpd_qsetemax(&ctx, -1)) + ASSERT(!mpd_qsetemax(&ctx, MPD_MAX_EMAX+1)) + + ASSERT(!mpd_qsetemin(&ctx, 1)) + ASSERT(!mpd_qsetemin(&ctx, MPD_MIN_EMIN-1)) + + ASSERT(!mpd_qsetround(&ctx, -1)) + ASSERT(!mpd_qsetround(&ctx, MPD_ROUND_GUARD)) + + ASSERT(!mpd_qsettraps(&ctx, MPD_Max_status+1)) + ASSERT(!mpd_qsetstatus(&ctx, MPD_Max_status+1)) + + ASSERT(!mpd_qsetclamp(&ctx, -1)) + ASSERT(!mpd_qsetclamp(&ctx, 2)) + + ASSERT(!mpd_qsetcr(&ctx, -1)) + ASSERT(!mpd_qsetcr(&ctx, 2)) + + mpd_qsetprec(&ctx, 2*MPD_RDIGITS); + ASSERT(ctx.prec == 2*MPD_RDIGITS) + + mpd_qsetemax(&ctx, MPD_MAX_EMAX); + ASSERT(ctx.emax == MPD_MAX_EMAX) + + mpd_qsetemin(&ctx, MPD_MIN_EMIN); + ASSERT(ctx.emin == MPD_MIN_EMIN) + + mpd_qsetround(&ctx, MPD_ROUND_HALF_UP); + ASSERT(ctx.round == MPD_ROUND_HALF_UP) + + mpd_qsettraps(&ctx, MPD_Traps); + ASSERT(ctx.traps == MPD_Traps) + + mpd_qsetstatus(&ctx, 0); + ASSERT(ctx.status == 0) + + mpd_qsetclamp(&ctx, 0); + ASSERT(ctx.clamp == 0) + + mpd_qsetcr(&ctx, 1); + ASSERT(ctx.allcr == 1) +} + +/* + * NOTE: Using setters like in this function is dangerous or meaningless + * at best. This is only for testing. + */ +static void +test_attributes(void) +{ + mpd_context_t ctx; + mpd_uint_t adata[MPD_MINALLOC_MAX]; + mpd_uint_t bdata[MPD_MINALLOC_MAX]; + mpd_t a = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, adata}; + mpd_t b = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, bdata}; + char *s; + + mpd_testcontext(&ctx); + + /* specials */ + mpd_set_infinity(&a); + ASSERT(mpd_isinfinite(&a)) + mpd_set_snan(&a); + ASSERT(mpd_issnan(&a)) + + /* data flags */ + mpd_set_dynamic(&a); + ASSERT(mpd_isdynamic(&a)) + mpd_set_static(&a); + ASSERT(mpd_isstatic(&a)) + mpd_set_const_data(&a); + ASSERT(mpd_isconst_data(&a)) + + mpd_set_static_data(&a); + mpd_clear_flags(&a); + + /* switch to dynamic data */ + mpd_set_string(&a, "-2.3854727e+1875", &ctx); + ASSERT(mpd_isstatic(&a)) + ASSERT(mpd_isstatic_data(&a)) + ASSERT(mpd_resize(&a, 2*MPD_MINALLOC_MAX, &ctx)) + ASSERT(a.alloc == 2*MPD_MINALLOC_MAX) + ASSERT(mpd_isstatic(&a)) + ASSERT(mpd_isdynamic_data(&a)) + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "-2.3854727e+1875") == 0) + mpd_free(s); + + /* switch to dynamic data, zero new memory */ + mpd_set_string(&b, "123456789", &ctx); + ASSERT(mpd_isstatic(&b)) + ASSERT(mpd_isstatic_data(&b)) + ASSERT(mpd_resize_zero(&b, 3*MPD_MINALLOC_MAX, &ctx)) + ASSERT(b.alloc == 3*MPD_MINALLOC_MAX) + ASSERT(mpd_isstatic(&b)) + ASSERT(mpd_isdynamic_data(&b)) + ASSERT(b.data[0] == 0) + + + /* rarely used attributes */ + mpd_set_string(&a, "2.3854727e+1875", &ctx); + ASSERT(mpd_iscanonical(&a)) + ASSERT(mpd_isfinite(&a)) + ASSERT(!mpd_issigned(&a)) + mpd_set_negative(&a); + ASSERT(mpd_issigned(&a)) + + mpd_set_string(&a, "123000e-3", &ctx); + ASSERT(mpd_isinteger(&a)) + ASSERT(mpd_isodd(&a)) + ASSERT(!mpd_iseven(&a)) + + mpd_set_string(&a, "123000e-2", &ctx); + ASSERT(mpd_isinteger(&a)) + ASSERT(mpd_iseven(&a)) + ASSERT(!mpd_isodd(&a)) + + mpd_del(&a); + mpd_del(&b); +} + +static void +test_shift(void) +{ + mpd_context_t ctx; + mpd_uint_t adata[MPD_MINALLOC_MAX]; + mpd_uint_t bdata[MPD_MINALLOC_MAX]; + mpd_t a = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, adata}; + mpd_t b = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, bdata}; + char *s; + + /* mpd_qsshiftr */ + mpd_testcontext(&ctx); + ctx.prec = 100; + ctx.emax = MPD_MAX_EMAX; + ctx.emin = MPD_MIN_EMIN; + + mpd_set_string(&a, "123456789123456789", &ctx); + mpd_qsshiftr(&a, &a, 0); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "123456789123456789") == 0) + mpd_free(s); + + mpd_set_string(&a, "0", &ctx); + mpd_qsshiftr(&a, &a, 0); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "0") == 0) + mpd_free(s); + + mpd_set_string(&a, "123", &ctx); + mpd_qsshiftr(&a, &a, 7); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "0") == 0) + mpd_free(s); + + mpd_set_string(&a, "123456789123456789", &ctx); + mpd_qsshiftr(&b, &a, 0); + s = mpd_to_sci(&b, 0); + ASSERT(strcmp(s, "123456789123456789") == 0) + mpd_free(s); + + mpd_set_string(&a, "0", &ctx); + mpd_qsshiftr(&b, &a, 0); + s = mpd_to_sci(&b, 0); + ASSERT(strcmp(s, "0") == 0) + mpd_free(s); + + mpd_set_string(&a, "123", &ctx); + mpd_qsshiftr(&b, &a, 7); + s = mpd_to_sci(&b, 0); + ASSERT(strcmp(s, "0") == 0) + mpd_free(s); + + /* mpd_qrotate */ + ctx.traps = 0; + ctx.status = 0; + mpd_set_string(&a, "1234556789", &ctx); + mpd_set_string(&b, "1e100", &ctx); + mpd_rotate(&a, &a, &b, &ctx); + ASSERT(mpd_isnan(&a)) + ASSERT(ctx.status&MPD_Invalid_operation) + + mpd_del(&a); + mpd_del(&b); +} + +static void +test_check_nans(void) +{ + mpd_context_t ctx; + mpd_uint_t adata[MPD_MINALLOC_MAX]; + mpd_uint_t bdata[MPD_MINALLOC_MAX]; + mpd_t a = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, adata}; + mpd_t b = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, bdata}; + + mpd_testcontext(&ctx); + + /* check nans */ + ctx.status = 0; + mpd_set_string(&a, "NaN", &ctx); + ASSERT(mpd_check_nan(&b, &a, &ctx)) + ASSERT(ctx.status == 0) + ASSERT(mpd_isqnan(&b)) + + ctx.status = 0; + mpd_set_string(&a, "1", &ctx); + ASSERT(!mpd_check_nan(&b, &a, &ctx)) + ASSERT(ctx.status == 0) + + mpd_traphandler = test_traphandler; + ctx.status = 0; + mpd_set_string(&a, "sNaN", &ctx); + mpd_set_string(&b, "1", &ctx); + ASSERT(mpd_check_nans(&b, &a, &b, &ctx)) + ASSERT(ctx.status == MPD_Invalid_operation) + ASSERT(mpd_isqnan(&b)) + mpd_traphandler = mpd_dflt_traphandler; + + ctx.status = 0; + mpd_set_string(&a, "2", &ctx); + mpd_set_string(&b, "1", &ctx); + ASSERT(!mpd_check_nans(&b, &a, &b, &ctx)) + ASSERT(ctx.status == 0) + + mpd_del(&a); + mpd_del(&b); +} + +static void +test_finalize_round(void) +{ + mpd_context_t ctx; + mpd_uint_t adata[MPD_MINALLOC_MAX]; + mpd_uint_t bdata[MPD_MINALLOC_MAX]; + mpd_t a = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, adata}; + mpd_t b = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, bdata}; + char *s; + + mpd_testcontext(&ctx); + + /* finalize */ + ctx.prec = 5; + ctx.status = 0; + mpd_set_string(&a, "8.89871263726722323e201", &ctx); + mpd_finalize(&a, &ctx); + s = mpd_to_sci(&a, 1); + ASSERT(strcmp(s, "8.8987E+201") == 0) + ASSERT(ctx.status == (MPD_Rounded|MPD_Inexact)) + mpd_free(s); + + /* apply_round_excess, apply_round_fit */ + ctx.prec = MPD_RDIGITS + 1; + ctx.emax = 99; + ctx.emin = -99; + ctx.traps &= ~MPD_Underflow; + +#ifdef CONFIG_64 + ctx.status = 0; + mpd_set_string(&a, "99999999999999999999e-119", &ctx); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "1.0000000000000000000e-99") == 0) + ASSERT(ctx.status == (MPD_Underflow|MPD_Subnormal|MPD_Rounded|MPD_Inexact)) + mpd_free(s); + + ctx.status = 0; + mpd_set_string(&a, "99999999999999999999e79", &ctx); + mpd_set_string(&b, "1e80", &ctx); + mpd_quantize(&a, &a, &b, &ctx); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "1.0000000000000000000e+99") == 0) + ASSERT(ctx.status == (MPD_Rounded|MPD_Inexact)) + mpd_free(s); +#else + ctx.status = 0; + mpd_set_string(&a, "9999999999e-109", &ctx); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "1.000000000e-99") == 0) + ASSERT(ctx.status == (MPD_Underflow|MPD_Subnormal|MPD_Rounded|MPD_Inexact)) + mpd_free(s); + + ctx.status = 0; + mpd_set_string(&a, "9999999999e89", &ctx); + mpd_set_string(&b, "1e90", &ctx); + mpd_quantize(&a, &a, &b, &ctx); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "1.000000000e+99") == 0) + ASSERT(ctx.status == (MPD_Rounded|MPD_Inexact)) + mpd_free(s); +#endif + + mpd_del(&a); + mpd_del(&b); +} + +static void +test_baseconv(void) +{ + mpd_context_t ctx; + mpd_uint_t adata[MPD_MINALLOC_MAX]; + mpd_t a = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, adata}; + uint32_t u32data; + uint16_t u16data; + + mpd_testcontext(&ctx); + mpd_traphandler = test_traphandler; + + /* special or non-integer values */ + mpd_set_string(&a, "inf", &ctx); + + ctx.status = 0; + ASSERT(mpd_export_u16(&u16data, 1, 1<<15, &a, &ctx) == SIZE_MAX) + ASSERT(ctx.status & MPD_Invalid_operation) + + ctx.status = 0; + ASSERT(mpd_export_u32(&u32data, 1, 1<<15, &a, &ctx) == SIZE_MAX) + ASSERT(ctx.status & MPD_Invalid_operation) + + mpd_set_string(&a, "9.12987391", &ctx); + + ctx.status = 0; + ASSERT(mpd_export_u16(&u16data, 1, 1<<15, &a, &ctx) == SIZE_MAX) + ASSERT(ctx.status & MPD_Invalid_operation) + + ctx.status = 0; + ASSERT(mpd_export_u32(&u32data, 1, 1<<15, &a, &ctx) == SIZE_MAX) + ASSERT(ctx.status & MPD_Invalid_operation) + + /* exceeding limits */ +#if MPD_SIZE_MAX < SIZE_MAX + mpd_set_string(&a, "123456789", &ctx); + ctx.status = 0; + ASSERT(mpd_export_u32(&u32data, (size_t)MPD_SSIZE_MAX+1, 1<<15, &a, &ctx) == SIZE_MAX) + ASSERT(ctx.status & MPD_Invalid_operation) +#endif + + mpd_set_string(&a, "123456789", &ctx); + + ctx.status = 0; + mpd_import_u16(&a, &u16data, SIZE_MAX-1, MPD_POS, 1<<15, &ctx); + ASSERT(ctx.status & MPD_Invalid_operation) + + ctx.status = 0; + mpd_import_u16(&a, &u16data, MPD_SIZE_MAX/(sizeof (mpd_uint_t))+1, MPD_POS, 2, &ctx); + ASSERT(ctx.status & MPD_Invalid_operation) + + ctx.status = 0; + mpd_import_u32(&a, &u32data, SIZE_MAX-1, MPD_POS, 1<<15, &ctx); + ASSERT(ctx.status & MPD_Invalid_operation) + + ctx.status = 0; + mpd_import_u32(&a, &u32data, MPD_SIZE_MAX/(sizeof (mpd_uint_t))+1, MPD_POS, 2, &ctx); + ASSERT(ctx.status & MPD_Invalid_operation) + + mpd_traphandler = mpd_dflt_traphandler; + mpd_del(&a); +} + +static void +test_set_string(void) +{ + mpd_context_t ctx; + mpd_uint_t adata[MPD_MINALLOC_MAX]; + mpd_uint_t bdata[MPD_MINALLOC_MAX]; + mpd_t a = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, adata}; + mpd_t b = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, bdata}; + char buf[BUFSIZE]; + char *s, *t; + mpd_ssize_t mem; + int n; + + mpd_testcontext(&ctx); + ctx.traps = MPD_Malloc_error; + + /* Exponent limits */ + ctx.status = 0; + ctx.prec = 28; + snprintf(buf, BUFSIZE, "0.0000000000000000000000001e%" PRI_mpd_ssize_t, + (mpd_ssize_t)MPD_MAX_EMAX+20); + mpd_set_string(&a, buf, &ctx); + t = mpd_to_sci(&a, 1); + snprintf(buf, BUFSIZE, "1E+%" PRI_mpd_ssize_t, (mpd_ssize_t)MPD_MAX_EMAX-5); + ASSERT(strcmp(t, buf) == 0) + ASSERT(ctx.status == 0) + mpd_free(t); + + ctx.status = 0; + ctx.prec = MPD_MAX_PREC; + snprintf(buf, BUFSIZE, "0.0000000000000000000000001e%" PRI_mpd_ssize_t, + (mpd_ssize_t)MPD_MAX_EMAX+30); + mpd_set_string(&a, buf, &ctx); + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, "Infinity") == 0) + ASSERT(ctx.status == (MPD_Inexact|MPD_Overflow|MPD_Rounded)) + mpd_free(t); + + ctx.status = 0; + ctx.prec = MPD_MAX_PREC; + snprintf(buf, BUFSIZE, "1000000000000000000000000000e%" PRI_mpd_ssize_t, mpd_etiny(&ctx)-27); + mpd_set_string(&a, buf, &ctx); + t = mpd_to_sci(&a, 1); + snprintf(buf, BUFSIZE, "1E%" PRI_mpd_ssize_t, mpd_etiny(&ctx)); + ASSERT(strcmp(t, buf) == 0) + ASSERT(ctx.status == (MPD_Subnormal|MPD_Rounded)) + mpd_free(t); + + ctx.status = 0; + ctx.prec = 28; + snprintf(buf, BUFSIZE, "-0.0000000000000000000000001e%" PRI_mpd_ssize_t, MPD_SSIZE_MAX); + mpd_set_string(&a, buf, &ctx); + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, "-Infinity") == 0) + ASSERT(ctx.status == (MPD_Overflow|MPD_Rounded|MPD_Inexact)) + mpd_free(t); + + ctx.status = 0; + ctx.prec = 28; + snprintf(buf, BUFSIZE, "-0.0000000000000000000000001e%" PRI_mpd_ssize_t, MPD_SSIZE_MIN); + mpd_set_string(&a, buf, &ctx); + snprintf(buf, BUFSIZE, "-0E%" PRI_mpd_ssize_t, mpd_etiny(&ctx)); + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, buf) == 0) + ASSERT(ctx.status == (MPD_Subnormal|MPD_Inexact| + MPD_Clamped|MPD_Underflow| + MPD_Rounded)) + mpd_free(t); + + ctx.status = 0; + n = snprintf(buf, BUFSIZE, "1e%s", "184467440737095516161"); + mpd_set_string(&a, buf, &ctx); + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, "Infinity") == 0) + ASSERT(ctx.status == (MPD_Inexact|MPD_Overflow|MPD_Rounded)) + mpd_free(t); + + ctx.status = 0; + n = snprintf(buf, BUFSIZE, "-1e%s", "-184467440737095516161"); + mpd_set_string(&a, buf, &ctx); + t = mpd_to_sci(&a, 1); + snprintf(buf, BUFSIZE, "-0E%" PRI_mpd_ssize_t, mpd_etiny(&ctx)); + ASSERT(strcmp(t, buf) == 0) + ASSERT(ctx.status == (MPD_Subnormal|MPD_Inexact| + MPD_Clamped|MPD_Underflow| + MPD_Rounded)) + mpd_free(t); + + + /* Exponent and precision limits: requires large amounts of memory. */ + mem = MPD_MAX_PREC+10+23+1; + if ((s = malloc(mem)) == NULL) { + mpd_del(&a); + mpd_del(&b); + return; + } + + ctx.prec = MPD_MAX_PREC; + + /* .000...0001e2147483647 -> Infinity */ + s[0] = '.'; + memset(s+1, '0', MPD_MAX_PREC-1); + s[MPD_MAX_PREC] = '1'; + s[MPD_MAX_PREC+1] = 'e'; + s[MPD_MAX_PREC+2] = '\0'; + + ctx.status = 0; + n = snprintf(s+MPD_MAX_PREC+2, 23, "%" PRI_mpd_ssize_t, MPD_SSIZE_MAX); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, "Infinity") == 0) + ASSERT(ctx.status == (MPD_Inexact|MPD_Overflow|MPD_Rounded)) + mpd_free(t); + + } + + /* .000...0001e184467440737095516161 -> Infinity */ + ctx.status = 0; + s[MPD_MAX_PREC+2] = '\0'; + n = snprintf(s+MPD_MAX_PREC+2, 23, "%s", "184467440737095516161"); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, "Infinity") == 0) + ASSERT(ctx.status == (MPD_Inexact|MPD_Overflow|MPD_Rounded)) + mpd_free(t); + } + + /* .000...0001e425000000 -> 1 */ + ctx.status = 0; + s[MPD_MAX_PREC+2] = '\0'; + n = snprintf(s+MPD_MAX_PREC+2, 23, "%" PRI_mpd_ssize_t, (mpd_ssize_t)MPD_MAX_EMAX); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, "1") == 0) + ASSERT(ctx.status == 0) + mpd_free(t); + } + + /* .000...0001e850000000 -> 1 */ + ctx.status = 0; + s[MPD_MAX_PREC+2] = '\0'; + n = snprintf(s+MPD_MAX_PREC+2, 23, "%" PRI_mpd_ssize_t, 2*(mpd_ssize_t)MPD_MAX_EMAX); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + snprintf(buf, BUFSIZE, "1E+%" PRI_mpd_ssize_t, (mpd_ssize_t)MPD_MAX_EMAX); + ASSERT(strcmp(t, buf) == 0) + ASSERT(ctx.status == 0) + mpd_free(t); + } + + /* .000...0005e424999999 -> 0.5 */ + ctx.status = 0; + s[MPD_MAX_PREC] = '5'; + s[MPD_MAX_PREC+1] = 'e'; + s[MPD_MAX_PREC+2] = '\0'; + n = snprintf(s+MPD_MAX_PREC+2, 23, "%" PRI_mpd_ssize_t, (mpd_ssize_t)MPD_MAX_EMAX-1); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, "0.5") == 0) + ASSERT(ctx.status == 0) + mpd_free(t); + } + + /* .000...0001e-2147483648 -> 0E-849999999 */ + ctx.status = 0; + s[MPD_MAX_PREC] = '1'; + s[MPD_MAX_PREC+1] = 'e'; + s[MPD_MAX_PREC+2] = '\0'; + n = snprintf(s+MPD_MAX_PREC+2, 23, "%" PRI_mpd_ssize_t, MPD_SSIZE_MIN); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + snprintf(buf, BUFSIZE, "0E%" PRI_mpd_ssize_t, mpd_etiny(&ctx)); + ASSERT(strcmp(t, buf) == 0) + ASSERT(ctx.status == (MPD_Subnormal|MPD_Inexact| + MPD_Clamped|MPD_Underflow| + MPD_Rounded)) + mpd_free(t); + } + + /* .000...0001e-184467440737095516161 -> 0E-849999999 */ + ctx.status = 0; + s[MPD_MAX_PREC] = '1'; + s[MPD_MAX_PREC+1] = 'e'; + s[MPD_MAX_PREC+2] = '\0'; + n = snprintf(s+MPD_MAX_PREC+2, 23, "%s", "-184467440737095516161"); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + snprintf(buf, BUFSIZE, "0E%" PRI_mpd_ssize_t, mpd_etiny(&ctx)); + ASSERT(strcmp(t, buf) == 0) + ASSERT(ctx.status == (MPD_Subnormal|MPD_Inexact| + MPD_Clamped|MPD_Underflow| + MPD_Rounded)) + mpd_free(t); + + } + + /* 10000...0000e-425000000 -> 0.1 */ + ctx.status = 0; + s[0] = '1'; + memset(s+1, '0', MPD_MAX_PREC-1); + s[MPD_MAX_PREC] = 'e'; + s[MPD_MAX_PREC+1] = '\0'; + n = snprintf(s+MPD_MAX_PREC+1, 23, "%" PRI_mpd_ssize_t, (mpd_ssize_t)MPD_MIN_EMIN); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + mpd_set_string(&b, "0.1", &ctx); + ASSERT(mpd_cmp(&a, &b, &ctx) == 0) + ASSERT(ctx.status == 0) + } + + /* 10000...0000e-1275000000 -> 1 */ + ctx.status = 0; + s[0] = '1'; + memset(s+1, '0', MPD_MAX_PREC-1); + s[MPD_MAX_PREC] = 'e'; + s[MPD_MAX_PREC+1] = '\0'; + n = snprintf(s+MPD_MAX_PREC+1, 23, "%" PRI_mpd_ssize_t, 3*(mpd_ssize_t)MPD_MIN_EMIN+2); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + snprintf(buf, BUFSIZE, "1E%" PRI_mpd_ssize_t, mpd_etiny(&ctx)); + ASSERT(strcmp(t, buf) == 0) + ASSERT(ctx.status == (MPD_Subnormal|MPD_Rounded)) + mpd_free(t); + } + + /* Too many fraction digits: .000...0001e184467440737095516161 -> NaN */ + s[0] = '.'; + memset(s+1, '0', MPD_MAX_PREC); + s[MPD_MAX_PREC+1] = '1'; + s[MPD_MAX_PREC+2] = 'e'; + + ctx.status = 0; + s[MPD_MAX_PREC+3] = '\0'; + n = snprintf(s+MPD_MAX_PREC+3, 23, "%s", "184467440737095516161"); + mpd_set_string(&a, s, &ctx); + if (n > 0 && !(ctx.status&MPD_Malloc_error)) { + t = mpd_to_sci(&a, 1); + ASSERT(strcmp(t, "NaN") == 0) + ASSERT(ctx.status == MPD_Conversion_syntax) + mpd_free(t); + } + + /* Exactly MPD_MAX_PREC digits */ + ctx.status = 0; + ctx.prec = MPD_MAX_PREC; + memset(s, '9', MPD_MAX_PREC); + s[MPD_MAX_PREC] = '\0'; + mpd_set_string(&a, s, &ctx); + if (!(ctx.status&MPD_Malloc_error)) { + ASSERT(ctx.status == 0) + t = mpd_to_sci(&a, 0); + if (t != NULL) { + ASSERT(strcmp(t, s) == 0) + mpd_free(t); + } + } + + /* Too many digits: 99999...9999 -> NaN */ + ctx.status = 0; + memset(s, '9', MPD_MAX_PREC+1); + s[MPD_MAX_PREC+1] = '\0'; + mpd_set_string(&a, s, &ctx); + if (!(ctx.status&MPD_Malloc_error)) { + ASSERT(ctx.status == MPD_Conversion_syntax) + } + + mpd_del(&a); + mpd_del(&b); + free(s); +} + +static void +test_memory(void) +{ + mpd_context_t ctx; + mpd_uint_t bdata[MPD_MINALLOC_MAX]; + mpd_t b = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, bdata}; + mpd_t *a; + + mpd_testcontext(&ctx); + ctx.traps = 0; + + /* Allocation failures */ + ctx.status = 0; + a = mpd_new(&ctx); + mpd_set_alloc_fail(&ctx); + mpd_resize(a, 20, &ctx); + mpd_set_alloc(&ctx); + ASSERT(ctx.status & MPD_Malloc_error) + ASSERT(mpd_isnan(a)) + mpd_del(a); + + ctx.status = 0; + mpd_set_alloc_fail(&ctx); + mpd_resize_zero(&b, MPD_MINALLOC_MAX+1, &ctx); + mpd_set_alloc(&ctx); + ASSERT(ctx.status & MPD_Malloc_error) + ASSERT(mpd_isnan(&b)) + + for (alloc_fail = 1; alloc_fail <= 10; alloc_fail++) { + ctx.status = 0; + + mpd_set_alloc_fail(&ctx); + a = mpd_new(&ctx); + mpd_set_alloc(&ctx); + + if (!(ctx.status & MPD_Malloc_error)) { + mpd_del(a); + break; + } + ASSERT(a == NULL) + } + ASSERT(alloc_fail == 3) + +#if MPD_SIZE_MAX < SIZE_MAX +{ + char *s; + s = mpd_callocfunc_em((size_t)MPD_SIZE_MAX+1, 16); + ASSERT(s == NULL) + s = mpd_callocfunc_em(16, (size_t)MPD_SIZE_MAX+1); + ASSERT(s == NULL) +} +#endif + + mpd_del(&b); +} + +static void +test_output(void) +{ + uint32_t status; + mpd_context_t ctx; + mpd_uint_t adata[MPD_MINALLOC_MAX]; + mpd_t a = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, adata}; + FILE *fp; + char buf[BUFSIZE]; + char *s; + int n; + + mpd_testcontext(&ctx); + ctx.traps = 0; + + /* printing of flags and signals */ + status = MPD_Max_status; + + s = "Clamped Conversion_syntax Division_by_zero Division_impossible " + "Division_undefined Fpu_error Inexact Invalid_context Invalid_operation " + "Malloc_error Not_implemented Overflow Rounded Subnormal Underflow"; + + n = mpd_snprint_flags(buf, BUFSIZE, status); + ASSERT(n > 0 && (size_t)n == strlen(s)) + ASSERT(strcmp(buf, s) == 0) + + s = "[Clamped, Conversion_syntax, Division_by_zero, Division_impossible, " + "Division_undefined, Fpu_error, Inexact, Invalid_context, Invalid_operation, " + "Malloc_error, Not_implemented, Overflow, Rounded, Subnormal, Underflow]"; + + n = mpd_lsnprint_flags(buf, BUFSIZE, status, NULL); + ASSERT(n > 0 && (size_t)n == strlen(s)) + ASSERT(strcmp(buf, s) == 0) + + s = "[Clamped, IEEE_Invalid_operation, Division_by_zero, Inexact, " + "Not_implemented, Overflow, Rounded, Subnormal, Underflow]"; + + n = mpd_lsnprint_signals(buf, BUFSIZE, status, NULL); + ASSERT(n > 0 && (size_t)n == strlen(s)) + ASSERT(strcmp(buf, s) == 0) + + /* simple printing to file */ + if ((fp = tmpfile()) != NULL) { + mpd_set_string(&a, "1.23456789e441", &ctx); + mpd_fprint(fp, &a); + rewind(fp); + if (fgets(buf, BUFSIZE, fp) != NULL) { + ASSERT(strcmp(buf, "1.23456789e441\n")) + } + fclose(fp); + } + + /* simple printing to stdout */ + mpd_set_string(&a, "1.23456789e441", &ctx); + printf(" This line is part of the coverage test: "); + mpd_print(&a); + + /* mpd_qformat_spec */ + + /* min_width > MPD_MAX_PREC */ + ctx.status = 0; + ctx.prec = MPD_MAX_PREC; + mpd_set_string(&a, "1.23456789e441", &ctx); + snprintf(buf, BUFSIZE, "%" PRI_mpd_ssize_t ".10", (mpd_ssize_t)MPD_MAX_PREC+1); + s = mpd_format(&a, buf, &ctx); + ASSERT(s == NULL && (ctx.status&MPD_Invalid_operation)) + + mpd_del(&a); +} + +static sig_atomic_t sigfpe_raised = 0; +void +sigfpe_handler(int signum) +{ + (void)signum; + sigfpe_raised = 1; +} + +static void +test_misc(void) +{ + mpd_context_t ctx; + mpd_uint_t adata[MPD_MINALLOC_MAX]; + mpd_uint_t bdata[MPD_MINALLOC_MAX]; + mpd_t a = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, adata}; + mpd_t b = {MPD_STATIC|MPD_STATIC_DATA, 0, 0, 0, MPD_MINALLOC_MAX, bdata}; + char buf[BUFSIZE]; + char *s, *t; + + mpd_testcontext(&ctx); + ctx.traps = 0; + + /* signcpy */ + mpd_set_string(&b, "3", &ctx); + mpd_signcpy(&b, &a); + s = mpd_to_sci(&b, 0); + ASSERT(strcmp(s, "-3")) + mpd_free(s); + + /* maxcoeff */ + ctx.prec = 28; + ctx.status = 0; + mpd_set_string(&a, "1e2025", &ctx); + mpd_maxcoeff(&a, &ctx); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "9999999999999999999999999999e2025")) + ASSERT(ctx.status == 0) + mpd_free(s); + + /* canonical */ + ctx.status = 0; + mpd_set_string(&a, "1.182736812e999999", &ctx); + mpd_canonical(&b, &a, &ctx); + s = mpd_to_sci(&a, 0); + t = mpd_to_sci(&b, 0); + ASSERT(strcmp(s, t) == 0) + ASSERT(ctx.status == 0) + mpd_free(s); + mpd_free(t); + + /* mpd_msword */ + mpd_set_string(&a, "2.3854727e+1875", &ctx); + ASSERT(mpd_msd(mpd_msword(&a)) == 2) + + /* mpd_radix */ + ASSERT(mpd_radix() == 10) + + /* rescale, greater than emax */ + ctx.status = 0; + mpd_set_string(&a, "3.3", &ctx); + mpd_rescale(&a, &a, MPD_MAX_EMAX+1, &ctx); + s = mpd_to_sci(&a, 1); + ASSERT(strcmp(s, "NaN") == 0) + ASSERT(ctx.status == MPD_Invalid_operation) + mpd_free(s); + + /* CONFIG_64: Over/Underflow in power */ + ctx.status = 0; + mpd_set_string(&a, "1.000000001", &ctx); + mpd_set_string(&b, "12345676891234567891123456789", &ctx); + mpd_pow(&a, &a, &b, &ctx); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "Infinity") == 0) + ASSERT(ctx.status == (MPD_Rounded|MPD_Overflow|MPD_Inexact)) + mpd_free(s); + + ctx.status = 0; + mpd_set_string(&a, "1.000000001", &ctx); + mpd_set_string(&b, "-12345676891234567891123456789", &ctx); + mpd_pow(&a, &a, &b, &ctx); + s = mpd_to_sci(&a, 1); + snprintf(buf, BUFSIZE, "0E%" PRI_mpd_ssize_t, mpd_etiny(&ctx)); + ASSERT(strcmp(s, buf) == 0) + ASSERT(ctx.status == (MPD_Underflow|MPD_Rounded|MPD_Clamped|MPD_Inexact|MPD_Subnormal)) + mpd_free(s); + + ctx.status = 0; + mpd_set_string(&a, "2.2122163", &ctx); + mpd_set_string(&b, "2899999999999999999.891239129", &ctx); + mpd_pow(&a, &a, &b, &ctx); + s = mpd_to_sci(&a, 0); + ASSERT(strcmp(s, "Infinity") == 0) + ASSERT(ctx.status == (MPD_Rounded|MPD_Overflow|MPD_Inexact)) + mpd_free(s); + +#ifdef CONFIG_32 + /* Allocation failure in mpd_set_u64 */ + mpd_resize(&a, MPD_MINALLOC_MAX+1, &ctx); + mpd_minalloc(&a); + + ctx.status = 0; + mpd_set_alloc_fail(&ctx); + mpd_set_u64(&a, UINT64_MAX, &ctx); + mpd_set_alloc(&ctx); + + ASSERT(ctx.status & MPD_Malloc_error) + ASSERT(mpd_isnan(&a)) +#endif + + /* Default trap handler: SIGFPE */ + signal(SIGFPE, sigfpe_handler); + ctx.traps = MPD_Rounded; + mpd_set_string(&a, "1", &ctx); + ASSERT(sigfpe_raised == 0) + mpd_div_uint(&a, &a, 7, &ctx); + ASSERT(sigfpe_raised == 1) + + mpd_del(&a); + mpd_del(&b); +} + + +int +main(void) +{ + srand((unsigned int)time(NULL)); + fprintf(stderr, "Running cov ... \n\n"); + + /* context.c */ + test_context(); /* Run this first! */ + + /* mpdecimal.c */ + test_check_nans(); + test_finalize_round(); + test_attributes(); + + test_int_conversions(); + test_mixed_arith(); + test_shift(); + test_baseconv(); + test_misc(); + + /* memory.c */ + test_memory(); + + /* io.c */ + test_set_string(); + test_output(); + + /* Valgrind */ + mpd_del(&mpd_ln10); + + fprintf(stderr, "\ncov: PASS\n"); + return 0; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/covreport.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/covreport.py Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,120 @@ +#!/usr/bin/python + +import os +from glob import glob +from collections import defaultdict + + +# +# gcov *.c is buggy, so getting a nice coverage report for .h files +# requires more steps: +# +# (1) for file in *.c; do gcov -l $file; done +# +# (2) generate a cumulative coverage for each .h file +# +# Tested with gcc/gcov 4.4.3. +# + +NOCOV_EXPECTED = ['constants.c', 'bench.c'] + + +def update_count(line, results): + first, rest = line.split(':', 1) + first = first.lstrip() + try: + results['count'] += int(first) + except ValueError: + results[first] += 1 + return first, rest + + +d = defaultdict(list) +for filename in glob("*##*.h.gcov"): + k = filename.split('##')[1] + d[k].append(filename) + +for outfile, lst in d.items(): + files = [open(x) for x in lst] + out = open(outfile, "w") + for line in files[0]: + results = {'-': 0, '#####': 0, 'count': 0} + first, rest = update_count(line, results) + for f in files[1:]: + fst, rst = update_count(f.readline(), results) + if rst != rest and not 'gcda' in rest and not 'gcno' in rest \ + and not ':Runs:' in rest and not ':Programs:' in rest: + print(line.rstrip(), rst.rstrip(), rest.rstrip()) + if results['count'] > 0: + first = results['count'] + elif results['#####'] > 0: + first = '#####' + else: + first = '-' + first = format(str(first), ">10.10") + out.write(':'.join((first, rest))) + out.close() + for f in files: + f.close() + + +def update_total(line, results): + first, rest = line.split(':', 1) + first = first.lstrip() + try: + int(first) + results['count'] += 1 + except ValueError: + if 'GCOV_NOT_REACHED' in rest: + results['not_reached'] += 1 + elif 'GCOV_UNLIKELY' in rest: + results['unlikely'] += 1 + else: + #if '####' in first: + # print(first, rest) + results[first] += 1 + return first, rest + +print("\n%19s%19s%19s%19s\n" % + ("file name:", "lines:", "not executed:", "unaccounted for:")) + +for filename in glob("*.h.gcov"): + if '##' in filename: continue + with open(filename) as f: + results = {'-': 0, '#####': 0, 'not_reached': 0, 'unlikely': 0, + 'count': 0} + for line in f: + update_total(line, results) + print("%19s%19d%19d%19d" % (filename.split('.gcov')[0], results['count'], + results['not_reached']+results['unlikely']+ + results['#####'], results['#####'])) + +print("") + +for filename in glob("*.c.gcov"): + if '##' in filename: continue + with open(filename) as f: + results = {'-': 0, '#####': 0, 'not_reached': 0, 'unlikely': 0, 'count': 0} + for line in f: + update_total(line, results) + print("%19s%19d%19d%19d" % (filename.split('.gcov')[0], results['count'], + results['not_reached']+results['unlikely']+ + results['#####'], results['#####'])) + +print("\n\n%19s\n" % "no coverage:") + +for filename in glob("*.h"): + s = filename + '.gcov' + if not os.path.isfile(s): + with open(filename) as f: + for line in f: + if 'static inline' in line: + print("%19s" % filename) + break + +for filename in glob("*.c"): + s = filename + '.gcov' + if not os.path.isfile(s) and not filename in NOCOV_EXPECTED: + print("%19s" % filename) + +print("") diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/fntcov.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/fntcov.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,375 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" +#include "mptest.h" +#include "malloc_fail.h" + + +/* + * Code coverage for _mpd_fntmul, _mpd_kmul, and _mpd_kmul_fnt. Since + * _mpd_kmul_fnt is only triggered for a result length that exceeds + * 3*MPD_MAXTRANSFORM_2N, the final tests require substantial amounts + * of RAM. + * + * For CONFIG_32, 4-8GB are required, This means that the tests will + * run comfortably on a 64-bit 8GB machine if the compile option + * MACHINE=full_coverage is chosen. + * + * For CONFIG_64, about 1TB of memory would be needed. + */ + + +#ifndef _MSC_VER + #define ASSERT(p) if (!(p)) {abort();} +#else + #define ASSERT(p) if (!(p)) {mpd_err_fatal("assertion failed");} +#endif + +#define MAXWORDS 10000 + + +int +main(void) +{ + uint32_t status = 0; + mpd_context_t ctx; + mpd_uint_t *a, *b; + mpd_uint_t *fntresult, *kresult, *kfntresult; + mpd_size_t rsize; + mpd_t *x, *y, *z; + mpd_ssize_t xl[5] = {MPD_MAXTRANSFORM_2N, 2*MPD_MAXTRANSFORM_2N, + 4*MPD_MAXTRANSFORM_2N, 4*MPD_MAXTRANSFORM_2N-1, + 4*MPD_MAXTRANSFORM_2N-1}; + mpd_ssize_t yl[5] = {MPD_MAXTRANSFORM_2N/2, MPD_MAXTRANSFORM_2N, + 2*MPD_MAXTRANSFORM_2N, 2*MPD_MAXTRANSFORM_2N, + 32}; + mpd_ssize_t k, alen, blen; + mpd_ssize_t xlen, ylen; + time_t seed; + int i; + + + mpd_maxcontext(&ctx); + + a = malloc(MAXWORDS * (sizeof *a)); + b = malloc(MAXWORDS * (sizeof *b)); + + for (k = 0; k < MAXWORDS; k++) { + a[k] = MPD_RADIX-1; + } + for (k = 0; k < MAXWORDS; k++) { + b[k] = MPD_RADIX-1; + } + + fprintf(stderr, "Running fntcov ... \n\n"); + fprintf(stderr, " Testing Karatsuba multiplication and number " + "theoretic transform ... "); + + /* bignum: all digits 9 */ + for (alen = 1200; alen < MAXWORDS; alen += 1000) { + + fntresult = _mpd_fntmul(a, a, alen, alen, &rsize); + kresult = _mpd_kmul(a, a, alen, alen, &rsize); + kfntresult = _mpd_kmul_fnt(a, a, alen, alen, &rsize); + + for (k = 0; k < 2*alen; k++) { + if (kresult[k] != fntresult[k] || kfntresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL\n"); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + mpd_free(kfntresult); + + for (blen = 1200; blen <= alen; blen += 1000) { + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul(a, b, alen, blen, &rsize); + kfntresult = _mpd_kmul_fnt(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k] || kfntresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL\n"); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + mpd_free(kfntresult); + } + } + + /* Bignum: random test */ + seed = time(NULL); + srandom((unsigned int)seed); + + for (alen = 1200; alen < MAXWORDS; alen += 1000) { + + for (k = 0; k < alen; k++) { + a[k] = random()%MPD_RADIX; + } + + fntresult = _mpd_fntmul(a, a, alen, alen, &rsize); + kresult = _mpd_kmul(a, a, alen, alen, &rsize); + kfntresult = _mpd_kmul_fnt(a, a, alen, alen, &rsize); + + for (k = 0; k < 2*alen; k++) { + if (kresult[k] != fntresult[k] || kfntresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + mpd_free(kfntresult); + + for (blen = 1200; blen <= alen; blen += 1000) { + + for (k = 0; k < blen; k++) { + b[k] = random()%MPD_RADIX; + } + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul(a, b, alen, blen, &rsize); + kfntresult = _mpd_kmul_fnt(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k] || kfntresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + mpd_free(kfntresult); + } + } + + /* Excessive lengths */ + fntresult = _mpd_fntmul(a, a, 2*MPD_MAXTRANSFORM_2N, 2*MPD_MAXTRANSFORM_2N, + &rsize); + ASSERT(fntresult == NULL) + + /* Allocation failures */ + for (alen=500, blen = 500; alen <= 4000; alen+=3500, blen+=1500) { + + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + + mpd_set_alloc_fail(&ctx); + fntresult = _mpd_fntmul(a, a, alen, alen, &rsize); + mpd_set_alloc(&ctx); + + if (fntresult != NULL) { + mpd_free(fntresult); + if (alloc_idx < alloc_fail) { + break; + } + } + } + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + + mpd_set_alloc_fail(&ctx); + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + mpd_set_alloc(&ctx); + + if (fntresult != NULL) { + mpd_free(fntresult); + if (alloc_idx < alloc_fail) { + break; + } + } + } + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + + mpd_set_alloc_fail(&ctx); + kresult = _mpd_kmul(a, a, alen, alen, &rsize); + mpd_set_alloc(&ctx); + + if (kresult != NULL) { + mpd_free(kresult); + if (alloc_idx < alloc_fail) { + break; + } + } + } + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + + mpd_set_alloc_fail(&ctx); + kresult = _mpd_kmul(a, b, alen, blen, &rsize); + mpd_set_alloc(&ctx); + + if (kresult != NULL) { + mpd_free(kresult); + if (alloc_idx < alloc_fail) { + break; + } + } + } + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + + mpd_set_alloc_fail(&ctx); + kfntresult = _mpd_kmul_fnt(a, a, alen, alen, &rsize); + mpd_set_alloc(&ctx); + + if (kfntresult != NULL) { + mpd_free(kfntresult); + if (alloc_idx < alloc_fail) { + break; + } + } + } + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + + mpd_set_alloc_fail(&ctx); + kfntresult = _mpd_kmul_fnt(a, b, alen, blen, &rsize); + mpd_set_alloc(&ctx); + + if (kfntresult != NULL) { + mpd_free(kfntresult); + if (alloc_idx < alloc_fail) { + break; + } + } + } + } + + mpd_free(a); + mpd_free(b); + + + /* Huge numbers */ + fprintf(stderr, "\n\n Long test, requires more than 4GB of memory ... \n\n"); + + x = mpd_new(&ctx); + y = mpd_new(&ctx); + z = mpd_new(&ctx); + + ctx.traps = 0; + /* NOT safe, but works for this test. */ + ctx.emax = MPD_SSIZE_MAX; + ctx.prec = MPD_SSIZE_MAX; + for (i = 0; i < 5; i++) { + + xlen = xl[i]; + ylen = yl[i]; + fprintf(stderr, " op1: %11"PRI_mpd_ssize_t" words op2: " + "%11"PRI_mpd_ssize_t" words\n", xlen, ylen); + + if (!mpd_qresize(x, xlen, &status)) { + goto malloc_error; + } + for (k = 0; k < xlen; k++) { + x->data[k] = MPD_RADIX-1; + } + x->len = xlen; + x->exp = 0; + mpd_setdigits(x); + + if (!mpd_qresize(y, ylen, &status)) { + goto malloc_error; + } + for (k = 0; k < ylen; k++) { + y->data[k] = MPD_RADIX-1; + } + y->len = ylen; + y->exp = 0; + mpd_setdigits(y); + + ctx.status = 0; + mpd_mul(z, x, y, &ctx); + if (mpd_isnan(z)) { + ASSERT(ctx.status&MPD_Malloc_error); + goto malloc_error; + } + + ASSERT(z->data[0] == 1) + for (k = 1; k < ylen; k++) { + ASSERT(z->data[k] == 0) + } + for (; k < xlen; k++) { + ASSERT(z->data[k] == MPD_RADIX-1); + } + ASSERT(z->data[k] == MPD_RADIX-2) + k++; + for (; k < xlen+ylen; k++) { + ASSERT(z->data[k] == MPD_RADIX-1); + } + +#if 0 + /* Allocation failures: Only reasonable to test with an + * artificially small MPD_MAXTRANSFORM_2N. For example, + * with MPD_MAXTRANSFORM_2N=4096 coverage of _mpd_kmul_fnt + * is 100%, i.e. also lines tagged with GCOV_UNLIKELY are + * reached. + */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + ctx.status = 0; + + mpd_set_alloc_fail(&ctx); + mpd_mul(z, x, y, &ctx); + mpd_set_alloc(&ctx); + + if (!(ctx.status&MPD_Malloc_error)) { + if (alloc_idx < alloc_fail) { + printf("alloc_idx: %d\n", alloc_idx); + break; + } + } + else { + ASSERT(mpd_isnan(z)); + } + } +#endif + } + + fprintf(stderr, "\nfntcov: PASS\n\n"); + +out: + mpd_del(x); + mpd_del(y); + mpd_del(z); + return 0; + + +malloc_error: + fprintf(stderr, "\nfntcov: out of memory: this test requires large " + "amounts of memory\n\n"); + goto out; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/fullcov_header.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/fullcov_header.patch Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,25 @@ +--- a/mpdecimal.h 2010-11-15 12:28:32.000000000 +0100 ++++ b/mpdecimal.h 2010-11-15 12:30:04.000000000 +0100 +@@ -110,8 +110,9 @@ + typedef uint64_t mpd_uuint_t; /* double width unsigned mod type */ + #endif + +-#define MPD_SIZE_MAX SIZE_MAX +-typedef size_t mpd_size_t; /* unsigned size type */ ++/* enable CONFIG_32+ANSI on 64-bit platforms without resorting to -m32 */ ++#define MPD_SIZE_MAX UINT32_MAX ++typedef uint32_t mpd_size_t; /* unsigned size type */ + + /* type for dec->len, dec->exp, ctx->prec */ + #define MPD_SSIZE_MAX INT32_MAX +@@ -139,8 +140,8 @@ + /* END CONFIG_32 */ + + +-#if MPD_SIZE_MAX != MPD_UINT_MAX +- #error "unsupported platform: need mpd_size_t == mpd_uint_t" ++#if SIZE_MAX < MPD_SIZE_MAX ++ #error "unsupported platform: need size_t >= mpd_size_t" + #endif + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/gettests.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/gettests.bat Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,4 @@ +@ECHO OFF +if not exist testdata mkdir testdata +if not exist testdata\add.decTest copy /y ..\..\decimaltestdata\* testdata && move testdata\randomBound32.decTest testdata\randombound32.decTest && move testdata\remainderNear.decTest testdata\remaindernear.decTest +if not exist testdata\baseconv.decTest copy /y testdata_dist\* testdata diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/gettests.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/gettests.sh Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,16 @@ +#!/bin/sh + +if ! [ -d testdata ]; then + mkdir testdata +fi + +if ! [ -f testdata/add.decTest ]; then + cp ../../decimaltestdata/* testdata + mv testdata/randomBound32.decTest testdata/randombound32.decTest + mv testdata/remainderNear.decTest testdata/remaindernear.decTest +fi + +if ! [ -f testdata/baseconv.decTest ]; then + cp testdata_dist/* testdata +fi + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/karatsuba_fnt.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/karatsuba_fnt.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" +#include "mptest.h" + + +/* + * Test Karatsuba multiplication against FNT multiplication. + */ + + +#define WORDS 1200 + + +int +main(int argc, char **argv) +{ + mpd_uint_t *a, *b; + mpd_uint_t *fntresult, *kresult; + mpd_size_t alen, blen, k; + double total = (WORDS-1)*(WORDS)-12; + double counter = 0; + mpd_size_t rsize; + time_t seed; + int verbose; + + verbose = !(argc > 1 && strcmp(argv[1], "-q") == 0); + + a = malloc(WORDS * (sizeof *a)); + b = malloc(WORDS * (sizeof *b)); + + for (k = 0; k < WORDS; k++) { + a[k] = MPD_RADIX-1; + } + for (k = 0; k < WORDS; k++) { + b[k] = MPD_RADIX-1; + } + + if (!verbose) { + fprintf(stderr, "%s ... ", argv[0]); + } + + /* test with all digits 9 */ + for (alen = 4; alen < WORDS; alen++) { + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", + argv[0], (counter/total*100)); + } + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL\n"); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + } + } + + /* random test */ + seed = time(NULL); + srandom((unsigned int)seed); + + for (alen = 4; alen < WORDS; alen++) { + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + } + + for (k = 0; k < alen; k++) { + a[k] = random()%MPD_RADIX; + } + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + b[k] = random()%MPD_RADIX; + } + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + } + } + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + } + fprintf(stderr, " PASS\n"); + + mpd_free(a); + mpd_free(b); + + return 0; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/karatsuba_fnt2.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/karatsuba_fnt2.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" +#include "mptest.h" + + +/* + * Test Karatsuba multiplication with FNT basecase against + * FNT multiplication. + */ + + +#define WORDS 1200 + + +int +main(int argc, char **argv) +{ + mpd_uint_t *a, *b; + mpd_uint_t *fntresult, *kresult; + mpd_size_t alen, blen, k; + double total = (WORDS-1)*(WORDS)-12; + double counter = 0; + mpd_size_t rsize; + time_t seed; + int verbose; + + verbose = !(argc > 1 && strcmp(argv[1], "-q") == 0); + + a = malloc(WORDS * (sizeof *a)); + b = malloc(WORDS * (sizeof *b)); + + for (k = 0; k < WORDS; k++) { + a[k] = MPD_RADIX-1; + } + for (k = 0; k < WORDS; k++) { + b[k] = MPD_RADIX-1; + } + + if (!verbose) { + fprintf(stderr, "%s ... ", argv[0]); + } + + /* test with all digits 9 */ + for (alen = 4; alen < WORDS; alen++) { + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + } + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul_fnt(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL\n"); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + } + } + + /* random test */ + seed = time(NULL); + srandom((unsigned int)seed); + + for (alen = 4; alen < WORDS; alen++) { + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + } + + for (k = 0; k < alen; k++) { + a[k] = random()%MPD_RADIX; + } + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + b[k] = random()%MPD_RADIX; + } + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul_fnt(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + } + } + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + } + fprintf(stderr, " PASS\n"); + + mpd_free(a); + mpd_free(b); + + return 0; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/malloc_fail.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/malloc_fail.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,99 @@ +#include +#include "mpdecimal.h" +#include "malloc_fail.h" + + +/* Test allocation failures */ +int alloc_count; +int alloc_fail; +int alloc_idx; + +void * +mpd_malloc_count(size_t size) +{ + ++alloc_count; + return malloc(size); +} + +void * +mpd_calloc_count(size_t nmemb, size_t size) +{ + ++alloc_count; + return calloc(nmemb, size); +} + +void * +mpd_realloc_count(void *ptr, size_t size) +{ + ++alloc_count; + return realloc(ptr, size); +} + + +void * +mpd_malloc_fail(size_t size) +{ + + if (++alloc_idx >= alloc_fail) { + return NULL; + } + return malloc(size); +} + +void * +mpd_calloc_fail(size_t nmemb, size_t size) +{ + if (++alloc_idx >= alloc_fail) { + return NULL; + } + if (rand()%2) { + return calloc(nmemb, size); + } + else { + return mpd_callocfunc_em(nmemb, size); + } +} + +void * +mpd_realloc_fail(void *ptr, size_t size) +{ + if (++alloc_idx >= alloc_fail) { + return NULL; + } + return realloc(ptr, size); +} + +void +mpd_set_alloc_count(mpd_context_t *ctx) +{ + mpd_mallocfunc = mpd_malloc_count; + mpd_callocfunc = mpd_calloc_count; + mpd_reallocfunc = mpd_realloc_count; + + ctx->traps = MPD_Malloc_error; + alloc_count = 0; +} + +void +mpd_set_alloc_fail(mpd_context_t *ctx) +{ + mpd_mallocfunc = mpd_malloc_fail; + mpd_callocfunc = mpd_calloc_fail; + mpd_reallocfunc = mpd_realloc_fail; + + ctx->traps = 0; + alloc_idx = 0; +} + +void +mpd_set_alloc(mpd_context_t *ctx) +{ + mpd_mallocfunc = malloc; + mpd_callocfunc = (rand()%2) ? calloc : mpd_callocfunc_em; + mpd_reallocfunc = realloc; + + ctx->traps = MPD_Malloc_error; +} + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/malloc_fail.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/malloc_fail.h Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,24 @@ +#ifndef MALLOC_FAIL_H +#define MALLOC_FAIL_H + + +#include + +extern int alloc_count; +extern int alloc_fail; +extern int alloc_idx; +void *mpd_malloc_count(size_t size); +void *mpd_calloc_count(size_t nmemb, size_t size); +void *mpd_realloc_count(void *ptr, size_t size); +void *mpd_malloc_fail(size_t size); +void *mpd_calloc_fail(size_t nmemb, size_t size); +void *mpd_realloc_fail(void *ptr, size_t size); + +void mpd_set_alloc_count(mpd_context_t *ctx); +void mpd_set_alloc_fail(mpd_context_t *ctx); +void mpd_set_alloc(mpd_context_t *ctx); + + +#endif + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/mpd_mpz_add.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/mpd_mpz_add.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" + + +/* + * Test mpd_add against mpz_add, for all possible lengths + * (in decimal digits) from 1x1 upto (WORDS*MPD_RDIGITS)x(WORDS*MPD_RDIGITS). + */ + + +#define WORDS 80 + + +int +main(int argc, char **argv) +{ + mpd_context_t ctx; + mpd_t *a, *b, *c; + mpz_t x, y, z; + mpd_ssize_t ma; + char *mpdresult, *mpzresult; + char *s; + size_t alen, blen, k; + double total = (WORDS*MPD_RDIGITS)*(WORDS*MPD_RDIGITS)*63; + double counter = 0; + time_t seed; + int verbose; + + verbose = !(argc > 1 && strcmp(argv[1], "-q") == 0); + + mpd_maxcontext(&ctx); + s = malloc(WORDS*MPD_RDIGITS+1); + seed = time(NULL); + srandom((unsigned int)seed); + + if (!verbose) { + fprintf(stderr, "%s ... ", argv[0]); + } + + for (ma = MPD_MINALLOC_MIN; ma <= MPD_MINALLOC_MAX; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + + a = mpd_new(&ctx); + b = mpd_new(&ctx); + c = mpd_new(&ctx); + mpz_init(x); + mpz_init(y); + mpz_init(z); + + for (alen = 1; alen <= WORDS*MPD_RDIGITS; alen++) { + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + } + + for (k = 0; k < alen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + mpd_set_string(a, s, &ctx); + mpz_set_str(x, s, 10); + + for (blen = 1; blen <= WORDS*MPD_RDIGITS; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + + mpd_set_string(b, s, &ctx); + mpz_set_str(y, s, 10); + + mpd_add(c, a, b, &ctx); + mpdresult = mpd_to_sci(c, 1); + + mpz_add(z, x, y); + mpzresult = mpz_get_str(NULL, 10, z); + + if (strcmp(mpzresult, mpdresult) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + + mpd_free(mpdresult); + mpd_free(mpzresult); + } + } + + mpd_del(a); + mpd_del(b); + mpd_del(c); + mpz_clear(x); + mpz_clear(y); + mpz_clear(z); + } + + free(s); + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + } + fprintf(stderr, " PASS\n"); + + return 0; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/mpd_mpz_divmod.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/mpd_mpz_divmod.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" + + +/* + * Test mpd_divmod against mpz_fdiv_qr, for all possible lengths + * (in decimal digits) from 1x1 upto (WORDS*MPD_RDIGITS)x(WORDS*MPD_RDIGITS). + */ + + +#define WORDS 80 + + +int +main(int argc, char **argv) +{ + mpd_context_t ctx; + mpd_t *a, *b, *qd, *rd; + mpz_t x, y, qz, rz; + mpd_ssize_t ma; + char *q_mpd, *r_mpd; + char *q_mpz, *r_mpz; + char *s; + size_t alen, blen, k; + double total = (WORDS*MPD_RDIGITS-1)*((WORDS*MPD_RDIGITS)/2)*63; + double counter = 0; + int have_nonzero; + time_t seed; + int verbose; + + verbose = !(argc > 1 && strcmp(argv[1], "-q") == 0); + + mpd_maxcontext(&ctx); + s = malloc(WORDS*MPD_RDIGITS+1); + seed = time(NULL); + srandom((unsigned int)seed); + + if (!verbose) { + fprintf(stderr, "%s ... ", argv[0]); + } + + for (ma = MPD_MINALLOC_MIN; ma <= MPD_MINALLOC_MAX; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + + a = mpd_new(&ctx); + b = mpd_new(&ctx); + qd = mpd_new(&ctx); + rd = mpd_new(&ctx); + mpz_init(x); + mpz_init(y); + mpz_init(qz); + mpz_init(rz); + + for (alen = 1; alen <= WORDS*MPD_RDIGITS; alen++) { + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.2f%%", argv[0], + (counter/total*100)); + } + + for (k = 0; k < alen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + mpd_set_string(a, s, &ctx); + mpz_set_str(x, s, 10); + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + have_nonzero = 0; + while (!have_nonzero) { + for (k = 0; k < blen; k++) { + s[k] = '0' + random()%10; + if (s[k] != '0') { + have_nonzero = 1; + } + } + s[k] = '\0'; + } + + mpd_set_string(b, s, &ctx); + mpz_set_str(y, s, 10); + + mpd_divmod(qd, rd, a, b, &ctx); + q_mpd = mpd_to_sci(qd, 1); + r_mpd = mpd_to_sci(rd, 1); + + mpz_fdiv_qr(qz, rz, x, y); + q_mpz = mpz_get_str(NULL, 10, qz); + r_mpz = mpz_get_str(NULL, 10, rz); + + if (strcmp(q_mpz, q_mpd) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + if (strcmp(r_mpz, r_mpd) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + + mpd_free(q_mpd); + mpd_free(r_mpd); + mpd_free(q_mpz); + mpd_free(r_mpz); + } + } + + mpd_del(a); + mpd_del(b); + mpd_del(qd); + mpd_del(rd); + mpz_clear(x); + mpz_clear(y); + mpz_clear(qz); + mpz_clear(rz); + } + + free(s); + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + } + fprintf(stderr, " PASS\n"); + + return 0; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/mpd_mpz_mul.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/mpd_mpz_mul.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" + + +/* + * Test mpd_mul against mpz_mul, for all possible factor lengths + * (in decimal digits) from 1x1 upto (WORDS*MPD_RDIGITS)*(WORDS*MPD_RDIGITS). + */ + + +#define WORDS 80 + + +int +main(int argc, char **argv) +{ + mpd_context_t ctx; + mpd_t *a, *b, *c; + mpz_t x, y, z; + mpd_ssize_t ma; + char *mpdresult, *mpzresult; + char *s; + size_t alen, blen, k; + double total = (WORDS*MPD_RDIGITS)*(WORDS*MPD_RDIGITS)*63; + double counter = 0; + time_t seed; + int verbose; + + verbose = !(argc > 1 && strcmp(argv[1], "-q") == 0); + + mpd_maxcontext(&ctx); + s = malloc(WORDS*MPD_RDIGITS+1); + seed = time(NULL); + srandom((unsigned int)seed); + + if (!verbose) { + fprintf(stderr, "%s ... ", argv[0]); + } + + for (ma = MPD_MINALLOC_MIN; ma <= MPD_MINALLOC_MAX; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + + a = mpd_new(&ctx); + b = mpd_new(&ctx); + c = mpd_new(&ctx); + mpz_init(x); + mpz_init(y); + mpz_init(z); + + for (alen = 1; alen <= WORDS*MPD_RDIGITS; alen++) { + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + } + + for (k = 0; k < alen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + mpd_set_string(a, s, &ctx); + mpz_set_str(x, s, 10); + + for (blen = 1; blen <= WORDS*MPD_RDIGITS; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + + mpd_set_string(b, s, &ctx); + mpz_set_str(y, s, 10); + + mpd_mul(c, a, b, &ctx); + mpdresult = mpd_to_sci(c, 1); + + mpz_mul(z, x, y); + mpzresult = mpz_get_str(NULL, 10, z); + + if (strcmp(mpzresult, mpdresult) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + + mpd_free(mpdresult); + mpd_free(mpzresult); + } + } + + mpd_del(a); + mpd_del(b); + mpd_del(c); + mpz_clear(x); + mpz_clear(y); + mpz_clear(z); + } + + free(s); + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + } + fprintf(stderr, " PASS\n"); + + return 0; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/mpd_mpz_sub.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/mpd_mpz_sub.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" + + +/* + * Test mpd_sub against mpz_sub, for all possible lengths + * (in decimal digits) from 1x1 upto (WORDS*MPD_RDIGITS)x(WORDS*MPD_RDIGITS). + */ + + +#define WORDS 80 + + +int +main(int argc, char **argv) +{ + mpd_context_t ctx; + mpd_t *a, *b, *c; + mpz_t x, y, z; + mpd_ssize_t ma; + char *mpdresult, *mpzresult; + char *s; + size_t alen, blen, k; + double total = (WORDS*MPD_RDIGITS)*(WORDS*MPD_RDIGITS)*63; + double counter = 0; + time_t seed; + int verbose; + + verbose = !(argc > 1 && strcmp(argv[1], "-q") == 0); + + mpd_maxcontext(&ctx); + s = malloc(WORDS*MPD_RDIGITS+1); + seed = time(NULL); + srandom((unsigned int)seed); + + if (!verbose) { + fprintf(stderr, "%s ... ", argv[0]); + } + + for (ma = MPD_MINALLOC_MIN; ma <= MPD_MINALLOC_MAX; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + + a = mpd_new(&ctx); + b = mpd_new(&ctx); + c = mpd_new(&ctx); + mpz_init(x); + mpz_init(y); + mpz_init(z); + + for (alen = 1; alen <= WORDS*MPD_RDIGITS; alen++) { + + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + } + + for (k = 0; k < alen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + mpd_set_string(a, s, &ctx); + mpz_set_str(x, s, 10); + + for (blen = 1; blen <= WORDS*MPD_RDIGITS; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + + mpd_set_string(b, s, &ctx); + mpz_set_str(y, s, 10); + + mpd_sub(c, a, b, &ctx); + mpdresult = mpd_to_sci(c, 1); + + mpz_sub(z, x, y); + mpzresult = mpz_get_str(NULL, 10, z); + + if (strcmp(mpzresult, mpdresult) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + + mpd_free(mpdresult); + mpd_free(mpzresult); + } + } + + mpd_del(a); + mpd_del(b); + mpd_del(c); + mpz_clear(x); + mpz_clear(y); + mpz_clear(z); + } + + free(s); + if (verbose) { + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + } + fprintf(stderr, " PASS\n"); + + return 0; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/official.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/official.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,163 @@ + +-- All tests from the dectest directory. Tests that are skipped are +-- commented out. + +Dectest: ./testdata/abs.decTest +Dectest: ./testdata/add.decTest +Dectest: ./testdata/and.decTest +Dectest: ./testdata/base.decTest +Dectest: ./testdata/clamp.decTest +Dectest: ./testdata/class.decTest +Dectest: ./testdata/compare.decTest +Dectest: ./testdata/comparetotal.decTest +Dectest: ./testdata/comparetotmag.decTest +Dectest: ./testdata/copyabs.decTest +Dectest: ./testdata/copy.decTest +Dectest: ./testdata/copynegate.decTest +Dectest: ./testdata/copysign.decTest +Dectest: ./testdata/ddAbs.decTest +Dectest: ./testdata/ddAdd.decTest +Dectest: ./testdata/ddAnd.decTest +Dectest: ./testdata/ddBase.decTest +-- Dectest: ./testdata/ddCanonical.decTest +Dectest: ./testdata/ddClass.decTest +Dectest: ./testdata/ddCompare.decTest +Dectest: ./testdata/ddCompareSig.decTest +Dectest: ./testdata/ddCompareTotal.decTest +Dectest: ./testdata/ddCompareTotalMag.decTest +Dectest: ./testdata/ddCopyAbs.decTest +Dectest: ./testdata/ddCopy.decTest +Dectest: ./testdata/ddCopyNegate.decTest +Dectest: ./testdata/ddCopySign.decTest +Dectest: ./testdata/ddDivide.decTest +Dectest: ./testdata/ddDivideInt.decTest +-- Dectest: ./testdata/ddEncode.decTest +Dectest: ./testdata/ddFMA.decTest +Dectest: ./testdata/ddInvert.decTest +Dectest: ./testdata/ddLogB.decTest +Dectest: ./testdata/ddMax.decTest +Dectest: ./testdata/ddMaxMag.decTest +Dectest: ./testdata/ddMin.decTest +Dectest: ./testdata/ddMinMag.decTest +Dectest: ./testdata/ddMinus.decTest +Dectest: ./testdata/ddMultiply.decTest +Dectest: ./testdata/ddNextMinus.decTest +Dectest: ./testdata/ddNextPlus.decTest +Dectest: ./testdata/ddNextToward.decTest +Dectest: ./testdata/ddOr.decTest +Dectest: ./testdata/ddPlus.decTest +Dectest: ./testdata/ddQuantize.decTest +Dectest: ./testdata/ddReduce.decTest +Dectest: ./testdata/ddRemainder.decTest +Dectest: ./testdata/ddRemainderNear.decTest +Dectest: ./testdata/ddRotate.decTest +Dectest: ./testdata/ddSameQuantum.decTest +Dectest: ./testdata/ddScaleB.decTest +Dectest: ./testdata/ddShift.decTest +Dectest: ./testdata/ddSubtract.decTest +Dectest: ./testdata/ddToIntegral.decTest +Dectest: ./testdata/ddXor.decTest +-- Dectest: ./testdata/decDouble.decTest +-- Dectest: ./testdata/decQuad.decTest +-- Dectest: ./testdata/decSingle.decTest +Dectest: ./testdata/divide.decTest +Dectest: ./testdata/divideint.decTest +Dectest: ./testdata/dqAbs.decTest +Dectest: ./testdata/dqAdd.decTest +Dectest: ./testdata/dqAnd.decTest +Dectest: ./testdata/dqBase.decTest +-- Dectest: ./testdata/dqCanonical.decTest +Dectest: ./testdata/dqClass.decTest +Dectest: ./testdata/dqCompare.decTest +Dectest: ./testdata/dqCompareSig.decTest +Dectest: ./testdata/dqCompareTotal.decTest +Dectest: ./testdata/dqCompareTotalMag.decTest +Dectest: ./testdata/dqCopyAbs.decTest +Dectest: ./testdata/dqCopy.decTest +Dectest: ./testdata/dqCopyNegate.decTest +Dectest: ./testdata/dqCopySign.decTest +Dectest: ./testdata/dqDivide.decTest +Dectest: ./testdata/dqDivideInt.decTest +-- Dectest: ./testdata/dqEncode.decTest +Dectest: ./testdata/dqFMA.decTest +Dectest: ./testdata/dqInvert.decTest +Dectest: ./testdata/dqLogB.decTest +Dectest: ./testdata/dqMax.decTest +Dectest: ./testdata/dqMaxMag.decTest +Dectest: ./testdata/dqMin.decTest +Dectest: ./testdata/dqMinMag.decTest +Dectest: ./testdata/dqMinus.decTest +Dectest: ./testdata/dqMultiply.decTest +Dectest: ./testdata/dqNextMinus.decTest +Dectest: ./testdata/dqNextPlus.decTest +Dectest: ./testdata/dqNextToward.decTest +Dectest: ./testdata/dqOr.decTest +Dectest: ./testdata/dqPlus.decTest +Dectest: ./testdata/dqQuantize.decTest +Dectest: ./testdata/dqReduce.decTest +Dectest: ./testdata/dqRemainder.decTest +Dectest: ./testdata/dqRemainderNear.decTest +Dectest: ./testdata/dqRotate.decTest +Dectest: ./testdata/dqSameQuantum.decTest +Dectest: ./testdata/dqScaleB.decTest +Dectest: ./testdata/dqShift.decTest +Dectest: ./testdata/dqSubtract.decTest +Dectest: ./testdata/dqToIntegral.decTest +Dectest: ./testdata/dqXor.decTest +Dectest: ./testdata/dsBase.decTest +-- Dectest: ./testdata/dsEncode.decTest +Dectest: ./testdata/exp.decTest +Dectest: ./testdata/fma.decTest +Dectest: ./testdata/inexact.decTest +Dectest: ./testdata/invert.decTest +Dectest: ./testdata/ln.decTest +Dectest: ./testdata/log10.decTest +Dectest: ./testdata/logb.decTest +Dectest: ./testdata/max.decTest +Dectest: ./testdata/maxmag.decTest +Dectest: ./testdata/min.decTest +Dectest: ./testdata/minmag.decTest +Dectest: ./testdata/minus.decTest +Dectest: ./testdata/multiply.decTest +Dectest: ./testdata/nextminus.decTest +Dectest: ./testdata/nextplus.decTest +Dectest: ./testdata/nexttoward.decTest +Dectest: ./testdata/or.decTest +Dectest: ./testdata/plus.decTest +Dectest: ./testdata/power.decTest +Dectest: ./testdata/powersqrt.decTest +Dectest: ./testdata/quantize.decTest +Dectest: ./testdata/randombound32.decTest +Dectest: ./testdata/randoms.decTest +Dectest: ./testdata/reduce.decTest +Dectest: ./testdata/remainder.decTest +Dectest: ./testdata/remaindernear.decTest +Dectest: ./testdata/rescale.decTest +Dectest: ./testdata/rotate.decTest +Dectest: ./testdata/rounding.decTest +Dectest: ./testdata/samequantum.decTest +Dectest: ./testdata/scaleb.decTest +Dectest: ./testdata/shift.decTest +Dectest: ./testdata/squareroot.decTest +Dectest: ./testdata/subtract.decTest +-- Dectest: ./testdata/testall.decTest +Dectest: ./testdata/tointegral.decTest +Dectest: ./testdata/tointegralx.decTest +-- Dectest: ./testdata/trim.decTest +Dectest: ./testdata/xor.decTest + + +-- Summary of functions that are not implemented or do not need testing: + +-- Dectest: ./testdata/ddCanonical.decTest ==> same as copy() +-- Dectest: ./testdata/ddEncode.decTest +-- Dectest: ./testdata/decDouble.decTest +-- Dectest: ./testdata/decQuad.decTest +-- Dectest: ./testdata/decSingle.decTest +-- Dectest: ./testdata/dqCanonical.decTest ==> same as copy() +-- Dectest: ./testdata/dqEncode.decTest +-- Dectest: ./testdata/dsEncode.decTest +-- Dectest: ./testdata/testall.decTest +-- Dectest: ./testdata/trim.decTest + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/ppro_mulmod.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/ppro_mulmod.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include "mpdecimal.h" + + +#ifdef PPRO + +#define ANSI + +#include +#include +#include "constants.h" +#include "numbertheory.h" +#include "mptypes.h" +#include "mptest.h" +#include "umodarith.h" + +/* + * These are random tests for the pentium pro modular multiplication functions. + */ + +int +main(int argc UNUSED, char **argv) +{ + double dmod; + uint32_t dinvmod[3]; + mpd_uint_t umod; + mpd_uint_t a, b, c, d; + mpd_uint_t a1, a2, b1, b2; + long i; + + (void)mpd_set_fenv(); + + fprintf(stderr, "%s:\n", argv[0]); + fprintf(stderr, "testing MULMOD ... "); + + srandom((unsigned int)time(NULL)); + + SETMODULUS(P1); + for (i = 0; i < 100000000; i++) { + a = random()%umod; + b = random()%umod; + c = std_mulmod(a, b, umod); + d = MULMOD(a, b); + if (c != d) { + fprintf(stderr, "FAIL: a: %u b: %u ansi: %u " + "ppro: %u\n", a, b, c, d); + exit(1); + } + } + + SETMODULUS(P2); + for (i = 0; i < 100000000; i++) { + a = random()%umod; + b = random()%umod; + c = std_mulmod(a, b, umod); + d = MULMOD(a, b); + if (c != d) { + fprintf(stderr, "FAIL: a: %u b: %u ansi: %u " + "ppro: %u\n", a, b, c, d); + exit(1); + } + } + + SETMODULUS(P3); + for (i = 0; i < 100000000; i++) { + a = random()%umod; + b = random()%umod; + c = std_mulmod(a, b, umod); + d = MULMOD(a, b); + if (c != d) { + fprintf(stderr, "FAIL: a: %u b: %u ansi: %u " + "ppro: %u\n", a, b, c, d); + exit(1); + } + } + + fprintf(stderr, "PASS\n"); + fprintf(stderr, "testing MULMOD2C ... "); + + SETMODULUS(P1); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + std_mulmod2c(&a1, &b1, c, umod); + MULMOD2C(&a2, &b2, c); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, a1, a2, b1, b2); + exit(1); + } + } + + SETMODULUS(P2); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + std_mulmod2c(&a1, &b1, c, umod); + MULMOD2C(&a2, &b2, c); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, a1, a2, b1, b2); + exit(1); + } + } + + SETMODULUS(P3); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + std_mulmod2c(&a1, &b1, c, umod); + MULMOD2C(&a2, &b2, c); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, a1, a2, b1, b2); + exit(1); + } + } + + fprintf(stderr, "PASS\n"); + fprintf(stderr, "testing MULMOD2 ... "); + + SETMODULUS(P1); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + d = random()%umod; + std_mulmod2(&a1, c, &b1, d, umod); + MULMOD2(&a2, c, &b2, d); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u d: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, d, a1, a2, b1, b2); + exit(1); + } + } + + SETMODULUS(P2); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + d = random()%umod; + std_mulmod2(&a1, c, &b1, d, umod); + MULMOD2(&a2, c, &b2, d); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u d: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, d, a1, a2, b1, b2); + exit(1); + } + } + + SETMODULUS(P3); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + d = random()%umod; + std_mulmod2(&a1, c, &b1, d, umod); + MULMOD2(&a2, c, &b2, d); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u d: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, d, a1, a2, b1, b2); + exit(1); + } + } + + fprintf(stderr, "PASS\n"); + + return 0; +} +/* END PPRO_GCC */ +#else + +int +main(int argc UNUSED, char **argv) +{ + fprintf(stderr, "%s: PASS\n", argv[0]); + return 0; +} + +#endif + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/runallconfigs.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/runallconfigs.bat Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,85 @@ +@ECHO OFF + +cd ..\ +copy /y Makefile.vc Makefile +cd tests +copy /y Makefile.vc Makefile + + +call vcvarsall x64 + +echo. +echo # ======================================================================== +echo # x64 +echo # ======================================================================== +echo. +cd ..\ +nmake clean +nmake MACHINE=x64 extended_gmp +cd tests +call runalltests.bat + + +echo. +echo # ======================================================================== +echo # ansi64 +echo # ======================================================================== +echo. +cd ..\ +nmake clean +nmake MACHINE=ansi64 extended_gmp +cd tests +call runalltests.bat + + +echo. +echo # ======================================================================== +echo # full_coverage +echo # ======================================================================== +echo. +cd ..\ +nmake clean +patch < tests\fullcov_header.patch +nmake MACHINE=full_coverage extended_gmp +patch -R < tests\fullcov_header.patch +cd tests +call runalltests.bat + + +call vcvarsall x86 + +echo. +echo # ======================================================================== +echo # ppro +echo # ======================================================================== +echo. +cd ..\ +nmake clean +nmake MACHINE=ppro extended_gmp +cd tests +call runalltests.bat + +echo. +echo # ======================================================================== +echo # ansi32 +echo # ======================================================================== +echo. +cd ..\ +nmake clean +nmake MACHINE=ansi32 extended_gmp +cd tests +call runalltests.bat + +echo. +echo # ======================================================================== +echo # ansi-legacy +echo # ======================================================================== +echo. +cd ..\ +nmake clean +nmake MACHINE=ansi-legacy extended_gmp +cd tests +call runalltests.bat + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/runallconfigs.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/runallconfigs.sh Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,51 @@ +#!/bin/sh + + +VALGRIND= +if [ X"$1" = X"--valgrind" ]; then + shift + VALGRIND="valgrind --tool=memcheck --leak-check=full --leak-resolution=high --db-attach=yes --show-reachable=yes" +fi +export VALGRIND + +if [ -n "$1" ]; then + CONFIGS="$@" +else + CONFIGS="x64 uint128 ansi64 full_coverage ppro ansi32 ansi-legacy universal" +fi + +GMAKE=`which gmake` +if [ X"$GMAKE" = X"" ]; then + GMAKE=make +fi + + +for config in $CONFIGS; do + printf "\n# ========================================================================\n" + printf "# %s\n" $config + printf "# ========================================================================\n\n" + cd .. + $GMAKE clean + ./configure MACHINE=$config + if [ X"$config" = X"full_coverage" ]; then + patch < tests/fullcov_header.patch + $GMAKE extended + patch -R < tests/fullcov_header.patch + else + $GMAKE extended + fi + cd tests + printf "\n" + if [ X"$config" = X"ppro" ]; then + # Valgrind has no support for 80 bit long double arithmetic. + savevg=$VALGRIND + VALGRIND= + ./runalltests.sh + VALGRIND=$savevg + else + ./runalltests.sh + fi +done + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/runalltests.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/runalltests.bat Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,58 @@ +@ECHO OFF + +if exist ..\..\..\..\PCbuild\python.exe set PYTHON="..\..\..\..\PCbuild\python.exe" +if exist ..\..\..\..\PCbuild\python_d.exe set PYTHON="..\..\..\..\PCbuild\python_d.exe" +if exist ..\..\..\..\PCbuild\amd64\python.exe set PYTHON="..\..\..\..\PCbuild\amd64\python.exe" +if exist ..\..\..\..\PCbuild\amd64\python_d.exe set PYTHON="..\..\..\..\PCbuild\amd64\python_d.exe" + +if not exist runtest.exe goto error + +call gettests.bat + +echo. +echo Running official tests ... +echo. +runtest.exe --all official.decTest + +echo. +echo Running additional tests ... +echo. +runtest.exe --all additional.decTest + +echo. +echo Running coverage tests ... +echo. +cov.exe +test_transpose.exe +fntcov.exe + +echo. +echo Running long tests ... +echo. +ppro_mulmod.exe +if exist mpd_mpz_add.exe mpd_mpz_add.exe -q +if exist mpd_mpz_sub.exe mpd_mpz_sub.exe -q +if exist mpd_mpz_mul.exe mpd_mpz_mul.exe -q +if exist mpd_mpz_divmod.exe mpd_mpz_divmod.exe -q +karatsuba_fnt.exe -q +karatsuba_fnt2.exe -q + + +echo. +echo Running locale and format tests ... +echo. +%PYTHON% ..\python\genrandlocale.py | runtest.exe - +%PYTHON% ..\python\genrandformat.py | runtest.exe - +%PYTHON% ..\python\genlocale.py | runtest.exe - + +goto finish + + +:error +echo. +echo error: the tests must be built first +echo. + +:finish + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/runalltests.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/runalltests.sh Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,50 @@ +#!/bin/sh + + +if ! [ -f runtest ]; then + echo "error: you must build the tests first" + exit 1 +fi + + +./gettests.sh || exit 1 + +printf "\nRunning official tests ... \n\n" +$VALGRIND ./runtest --all official.decTest + +printf "\nRunning additional tests ... \n\n" +$VALGRIND ./runtest --all additional.decTest + +printf "\nRunning coverage tests ... \n\n" +$VALGRIND ./cov +$VALGRIND ./test_transpose +$VALGRIND ./fntcov + +printf "\nRunning long tests ... \n\n" +./ppro_mulmod +if [ -f mpd_mpz_add ]; then + $VALGRIND ./mpd_mpz_add -q +fi +if [ -f mpd_mpz_sub ]; then + $VALGRIND ./mpd_mpz_sub -q +fi +if [ -f mpd_mpz_mul ]; then + $VALGRIND ./mpd_mpz_mul -q +fi +if [ -f mpd_mpz_divmod ]; then + $VALGRIND ./mpd_mpz_divmod -q +fi +$VALGRIND ./karatsuba_fnt -q +$VALGRIND ./karatsuba_fnt2 -q + + +PYTHON=../../../../python + +printf "\nRunning locale and format tests ... \n\n" + +$PYTHON ../python/genrandlocale.py | $VALGRIND ./runtest - +$PYTHON ../python/genrandformat.py | $VALGRIND ./runtest - +$PYTHON ../python/genlocale.py | $VALGRIND ./runtest - + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/runshort.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/runshort.bat Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,12 @@ +@ECHO OFF +call gettests.bat +echo. + +#include +#include +#include +#include +#include +#include +#include +#include +#include "io.h" +#include "memory.h" +#include "mpdecimal.h" +#include "mptest.h" +#include "mptypes.h" +#include "malloc_fail.h" + + +#define MAXLINE 400000 +#define MAXTOKEN 32 + + +#ifndef _MSC_VER + #include + #define ASSERT(p) if (!(p)) {abort();} +#else + #define ASSERT(p) if (!(p)) {mpd_err_fatal("assertion failed");} +#endif + + +int have_fail = 0; +int have_printed = 0; + + +static void +mpd_init_rand(mpd_t *x) +{ + long r = random() % 100; + uint8_t sign = random()%2; + + if (r >= 80) { + mpd_minalloc(x); + } + else if (r >= 60) { + mpd_minalloc(x); + mpd_set_flags(x, sign); + } + else if (r >= 40) { + mpd_setspecial(x, sign, MPD_NAN); + } + else if (r >= 20) { + mpd_setspecial(x, sign, MPD_SNAN); + } + else { + mpd_setspecial(x, sign, MPD_INF); + } +} + +static void +mpd_readcontext(mpd_context_t *ctx) +{ +#if defined(CONFIG_64) + ctx->prec=1070000000000000000; + ctx->emax=1070000000000000000; + ctx->emin=-1070000000000000000; +#elif defined(CONFIG_32) + /* These ranges are needed for the official testsuite + * and are generally not problematic at all. */ + ctx->prec=1070000000; + ctx->emax=1070000000; + ctx->emin=-1070000000; +#else + #error "config not defined" +#endif + ctx->round=MPD_ROUND_HALF_UP; + ctx->traps=MPD_Traps; + ctx->status=0; + ctx->newtrap=0; + ctx->clamp=0; + ctx->allcr=0; +} + +static void +mpd_testcontext(mpd_context_t *ctx) +{ +#if defined(CONFIG_64) + ctx->prec=999999999; + ctx->emax=MPD_MAX_EMAX; + ctx->emin=MPD_MIN_EMIN; +#elif defined(CONFIG_32) + /* These ranges are needed for the official testsuite + * and are generally not problematic at all. */ + ctx->prec=999999999; + ctx->emax=999999999; + ctx->emin=-999999999; +#else + #error "config not defined" +#endif + ctx->round=MPD_ROUND_HALF_UP; + ctx->traps=MPD_Traps; + ctx->status=0; + ctx->newtrap=0; + ctx->clamp=0; + ctx->allcr=0; +} + +/* Known differences that are within the spec */ +struct result_diff { + const char *id; + const char *calc; + const char *expected; +}; + +struct status_diff { + const char *id; + uint32_t calc; + uint32_t expected; +}; + +struct result_diff ulp_cases[] = { + /* Cases where the result is allowed to differ by less than one ULP. + * Only needed if ctx->allcr is 0. */ + { "expx013", "1.001000", "1.001001" }, + { "expx020", "1.000000", "1.000001" }, + { "expx109", "0.999999910000004049999878", "0.999999910000004049999879" }, + { "expx1036", "1.005088", "1.005087" }, + { "expx350", "1.0000000", "1.0000001" }, + { "expx351", "1.0000000", "1.0000001" }, + { "expx352", "1.0000000", "1.0000001" }, + {NULL, NULL, NULL} +}; + +struct status_diff status_cases[] = { + /* With a reduced working precision in mpd_qpow() the status matches. */ + { "pwsx803", MPD_Inexact|MPD_Rounded|MPD_Subnormal|MPD_Underflow, MPD_Inexact|MPD_Rounded }, + {NULL, 0, 0} +}; + +char *skipit[] = { + /* NULL reference, decimal16, decimal32, or decimal128 */ + "absx900", + "addx9990", + "addx9991", + "clam090", + "clam091", + "clam092", + "clam093", + "clam094", + "clam095", + "clam096", + "clam097", + "clam098", + "clam099", + "clam189", + "clam190", + "clam191", + "clam192", + "clam193", + "clam194", + "clam195", + "clam196", + "clam197", + "clam198", + "clam199", + "comx990", + "comx991", + "cotx9990", + "cotx9991", + "ctmx9990", + "ctmx9991", + "ddabs900", + "ddadd9990", + "ddadd9991", + "ddcom9990", + "ddcom9991", + "ddcot9990", + "ddcot9991", + "ddctm9990", + "ddctm9991", + "dddiv9998", + "dddiv9999", + "dddvi900", + "dddvi901", + "ddfma2990", + "ddfma2991", + "ddfma39990", + "ddfma39991", + "ddlogb900", + "ddmax900", + "ddmax901", + "ddmxg900", + "ddmxg901", + "ddmin900", + "ddmin901", + "ddmng900", + "ddmng901", + "ddmul9990", + "ddmul9991", + "ddnextm900", + "ddnextm900", + "ddnextp900", + "ddnextp900", + "ddnextt900", + "ddnextt901", + "ddqua998", + "ddqua999", + "ddred900", + "ddrem1000", + "ddrem1001", + "ddrmn1000", + "ddrmn1001", + "ddsub9990", + "ddsub9991", + "ddintx074", + "ddintx094", + "divx9998", + "divx9999", + "dvix900", + "dvix901", + "dqabs900", + "dqadd9990", + "dqadd9991", + "dqcom990", + "dqcom991", + "dqcot9990", + "dqcot9991", + "dqctm9990", + "dqctm9991", + "dqdiv9998", + "dqdiv9999", + "dqdvi900", + "dqdvi901", + "dqfma2990", + "dqfma2991", + "dqadd39990", + "dqadd39991", + "dqlogb900", + "dqmax900", + "dqmax901", + "dqmxg900", + "dqmxg901", + "dqmin900", + "dqmin901", + "dqmng900", + "dqmng901", + "dqmul9990", + "dqmul9991", + "dqnextm900", + "dqnextp900", + "dqnextt900", + "dqnextt901", + "dqqua998", + "dqqua999", + "dqred900", + "dqrem1000", + "dqrem1001", + "dqrmn1000", + "dqrmn1001", + "dqsub9990", + "dqsub9991", + "dqintx074", + "dqintx094", + "expx900", + "fmax2990", + "fmax2991", + "fmax39990", + "fmax39991", + "lnx900", + "logx900", + "logbx900", + "maxx900", + "maxx901", + "mxgx900", + "mxgx901", + "mnm900", + "mnm901", + "mng900", + "mng901", + "minx900", + "mulx990", + "mulx991", + "nextm900", + "nextp900", + "nextt900", + "nextt901", + "plu900", + "powx900", + "powx901", + "pwsx900", + "quax1022", + "quax1023", + "quax1024", + "quax1025", + "quax1026", + "quax1027", + "quax1028", + "quax1029", + "quax0a2", + "quax0a3", + "quax998", + "quax999", + "redx900", + "remx1000", + "remx1001", + "rmnx900", + "rmnx901", + "sqtx9900", + "subx9990", + "subx9991", + /* operand range violations, invalid context */ + "expx901", + "expx902", + "expx903", + "expx905", + "lnx901", + "lnx902", + "lnx903", + "lnx905", + "logx901", + "logx902", + "logx903", + "logx905", + "powx1183", + "powx1184", + "powx4001", + "powx4002", + "powx4003", + "powx4005", + "powx4008", + "powx4010", + "powx4012", + "powx4014", + "scbx164", + "scbx165", + "scbx166", + /* skipped for decNumber, too */ + "powx4302", + "powx4303", + "powx4303", + "powx4342", + "powx4343", + "pwsx805", + /* disagreement for three arg power */ + "pwmx325", + "pwmx326", + NULL +}; + +static inline int +startswith(const char *token, const char *s) +{ + return strncasecmp(token, s, strlen(s)) == 0; +} + +static inline int +eqtoken(const char *token, const char *s) +{ + return strcasecmp(token, s) == 0; +} + +static int +check_skip(char *id) +{ + int i; + + for (i = 0; skipit[i] != NULL; i++) { + if (eqtoken(id, skipit[i])) { +#if RT_VERBOSITY == 2 + if (!have_printed) { + fputs("\n\n", stderr); + have_printed = 1; + } + fprintf(stderr, "SKIP: %s\n", id); +#endif + return 1; + } + } + + return 0; +} + +static char * +nexttoken(char *cp) +{ + static char *start; + static char *end; + + if (cp == NULL) + cp = end; + + for (; *cp != '\0'; cp++) { + if (isspace((unsigned char)*cp)) { + ; + } + else if (*cp == '"') { + start = end = cp+1; + for (; *end != '\0'; end++) { + if (*end == '"' && *(end+1) == '"') + end += 1; + else if (*end == '"') + break; + } + if (*end == '\0') + return NULL; + *end++ = '\0'; + return start; + } + else if (*cp == '\'') { + start = end = cp+1; + for (; *end != '\0'; end++) { + if (*end == '\'' && *(end+1) == '\'') + end += 1; + else if (*end == '\'') + break; + } + if (*end == '\0') + return NULL; + *end++ = '\0'; + return start; + } + else { + start = end = cp; + for (; *end != '\0'; end++) + if (isspace((unsigned char)*end)) + break; + if (*end == '\0') + return NULL; + *end++ = '\0'; + return start; + } + } + + return NULL; +} + +/* split a line into tokens */ +static int +split(char *token[], char line[]) +{ + char *cp; + size_t len; + int n = 0; + + cp = nexttoken(line); + while (n < MAXTOKEN && cp != NULL) { + len = strlen(cp); + if ((token[n] = malloc(len+1)) == NULL) { + mpd_err_fatal("out of memory"); + } + strcpy(token[n], cp); + cp = nexttoken(NULL); + n++; + } + token[n] = NULL; + + return n; +} + +static void +freetoken(char **token) +{ + while (*token != NULL) { + free(*token++); + } +} + +/* returns all expected conditions in a status flag */ +static uint32_t +scan_conditions(char **token) +{ + char *condition = *token; + uint32_t status = 0; + + while (condition != NULL) { + + if (startswith(condition, "--")) + break; + else if (eqtoken(condition, "Clamped")) + status |= MPD_Clamped; + else if (eqtoken(condition, "Conversion_syntax")) + status |= MPD_Conversion_syntax; + else if (eqtoken(condition, "Division_by_zero")) + status |= MPD_Division_by_zero; + else if (eqtoken(condition, "Division_impossible")) + status |= MPD_Division_impossible; + else if (eqtoken(condition, "Division_undefined")) + status |= MPD_Division_undefined; + else if (eqtoken(condition, "Fpu_error")) + status |= MPD_Fpu_error; + else if (eqtoken(condition, "Inexact")) + status |= MPD_Inexact; + else if (eqtoken(condition, "Invalid_context")) + status |= MPD_Invalid_context; + else if (eqtoken(condition, "Invalid_operation")) + status |= MPD_Invalid_operation; + else if (eqtoken(condition, "Malloc_error")) + status |= MPD_Malloc_error; + else if (eqtoken(condition, "Not_implemented")) + status |= MPD_Not_implemented; + else if (eqtoken(condition, "Overflow")) + status |= MPD_Overflow; + else if (eqtoken(condition, "Rounded")) + status |= MPD_Rounded; + else if (eqtoken(condition, "Subnormal")) + status |= MPD_Subnormal; + else if (eqtoken(condition, "Underflow")) + status |= MPD_Underflow; + else + mpd_err_fatal("unknown status: %s", condition); + + condition = *(++token); + } + + return status; +} + +static void +compare_expected(const char *calc, const char *expected, uint32_t expected_status, + char *id, mpd_context_t *ctx) +{ + char ctxstatus[MPD_MAX_FLAG_STRING]; + char expstatus[MPD_MAX_FLAG_STRING]; + + +#ifndef RT_VERBOSITY + /* Do not print known pseudo-failures. */ + int i; + + /* known ULP diffs */ + if (ctx->allcr == 0) { + for (i = 0; ulp_cases[i].id != NULL; i++) { + if (eqtoken(id, ulp_cases[i].id) && + strcmp(expected, ulp_cases[i].expected) == 0 && + strcmp(calc, ulp_cases[i].calc) == 0) { + return; + } + } + } + + /* known status diffs */ + for (i = 0; status_cases[i].id != NULL; i++) { + if (eqtoken(id, status_cases[i].id) && + expected_status == status_cases[i].expected && + ctx->status == status_cases[i].calc) { + return; + } + } +#endif + + if (strcmp(calc, expected) != 0) { + if (!have_printed) { + fputs("\n\n", stderr); + have_printed = 1; + } + fprintf(stderr, "FAIL: %s calc: %s expected: %s\n", + id, calc, expected); + have_fail = 1; + } + if (ctx->status != expected_status) { + if (!have_printed) { + fputs("\n\n", stderr); + have_printed = 1; + } + mpd_snprint_flags(ctxstatus, MPD_MAX_FLAG_STRING, ctx->status), + mpd_snprint_flags(expstatus, MPD_MAX_FLAG_STRING, expected_status); + fprintf(stderr, "FAIL: %s: status: calc: %s expected: %s\n", + id, ctxstatus, expstatus); + have_fail = 1; + } +} + +static int +equalmem(const mpd_t *a, const mpd_t *b) +{ + mpd_ssize_t i; + + if (a->flags != b->flags) return 0; + if (a->exp != b->exp) return 0; + if (a->len != b->len) return 0; + if (a->digits != b->digits) return 0; + for (i = 0; i < a->len; i++) + if (a->data[i] != b->data[i]) + return 0; + return 1; +} + +static void +check_equalmem(const mpd_t *a, const mpd_t *b, char *id) +{ + if (!equalmem(a, b)) { + fprintf(stderr, "FAIL: const arg changed: %s\n", id); + } +} + +static unsigned long +get_testno(char *token) +{ + char *number; + + number = strpbrk(token, "0123456789"); + return strtoul(number, NULL, 10); +} + +/* scan a single operand and the expected result */ +static int +scan_1op_result(mpd_t *op1, char **result, char *token[], mpd_context_t *ctx) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + mpd_set_string(op1, token[2], ctx); + + /* discard "->" */ + if (token[3] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + + /* expected result */ + if (token[4] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + *result = token[4]; + + return 5; +} + +/* scan a single operand and two results */ +static int +scan_1op_2results(mpd_t *op1, char **result1, char **result2, char *token[], mpd_context_t *ctx) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + mpd_set_string(op1, token[2], ctx); + + /* discard "->" */ + if (token[3] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + + /* expected result1 */ + if (token[4] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + *result1 = token[4]; + + /* expected result2 */ + if (token[5] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + *result2 = token[5]; + + return 6; +} + +/* scan decimal operand, string operand and the expected result */ +static int +scan_1op_str_result(mpd_t *op1, char **op2, char **result, char *token[], mpd_context_t *ctx) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_set_string(op1, token[2], ctx); + + /* operand 2 */ + if (token[3] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *op2 = token[3]; + + /* discard "->" */ + if (token[4] == NULL) { + mpd_err_fatal("%s", token[0]); + } + + /* expected result */ + if (token[5] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result = token[5]; + + return 6; +} + +/* scan two operands and the expected result */ +static int +scan_2ops_result(mpd_t *op1, mpd_t *op2, char **result, char *token[], mpd_context_t *ctx) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_set_string(op1, token[2], ctx); + + /* operand 2 */ + if (token[3] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_set_string(op2, token[3], ctx); + + /* discard "->" */ + if (token[4] == NULL) { + mpd_err_fatal("%s", token[0]); + } + + /* expected result */ + if (token[5] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result = token[5]; + + return 6; +} + +/* scan two operands and two results */ +static int +scan_2ops_2results(mpd_t *op1, mpd_t *op2, char **result1, char **result2, char *token[], mpd_context_t *ctx) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_set_string(op1, token[2], ctx); + + /* operand 2 */ + if (token[3] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_set_string(op2, token[3], ctx); + + /* discard "->" */ + if (token[4] == NULL) { + mpd_err_fatal("%s", token[0]); + } + + /* expected result1 */ + if (token[5] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result1 = token[5]; + + /* expected result2 */ + if (token[6] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result2 = token[6]; + + return 7; +} + +/* scan three operands and the expected result */ +static int +scan_3ops_result(mpd_t *op1, mpd_t *op2, mpd_t *op3, char **result, char *token[], mpd_context_t *ctx) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_set_string(op1, token[2], ctx); + + /* operand 2 */ + if (token[3] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_set_string(op2, token[3], ctx); + + /* operand 2 */ + if (token[4] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_set_string(op3, token[4], ctx); + + /* discard "->" */ + if (token[5] == NULL) { + mpd_err_fatal("%s", token[0]); + } + + /* expected result */ + if (token[6] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result = token[6]; + + return 7; +} + +mpd_t *op, *op1, *op2, *op3; +mpd_t *tmp, *tmp1, *tmp2, *tmp3; +mpd_t *result, *result1, *result2; + + +/* + * Test a function returning pointer to char, accepting: + * op1, context + * + * This function is used for "toSci", "toEng" and "apply" + * and does not use a maxctx for the conversion of the operand. + */ +static void +_cp_MpdCtx(char **token, char *(*func)(const mpd_t *, int), mpd_context_t *ctx) +{ + char *calc; + char *expected, *expected_fail; + uint32_t expstatus; + int n; + + ctx->status = 0; + /* status should be set in conversion */ + n = scan_1op_result(op, &expected, token, ctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + /* Allocation failures for mpd_set_string */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + (void)scan_1op_result(tmp, &expected_fail, token, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp)) + } + ASSERT(strcmp(expected, expected_fail) == 0) + ASSERT(mpd_cmp_total(tmp, op) == 0) + + + /* make a copy of the operand */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + + calc = func(tmp, 1); + + /* compare the calculated result to the expected result */ + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + + mpd_set_alloc_fail(ctx); + calc = func(tmp, 1); + mpd_set_alloc(ctx); + + if (calc != NULL) { + break; + } + } + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op, token[0]); +} + +/* Quick and dirty: parse hex escape sequences as printed in bytestring + * output of Python3x. */ +static char * +parse_escapes(const char *s) +{ + char hex[5]; + char *result, *cp; + unsigned int u; + int n; + + cp = result = malloc(strlen(s)+1); + if (result == NULL) { + return NULL; + } + + hex[0] = '0'; + hex[1] = '\0'; + while (*s) { + if (*s == '\\' && *(s+1) == 'x') { + for (n = 1; n < 4; n++) { + if (!s[n]) { + free(result); + return NULL; + } + hex[n] = s[n]; + } + hex[n] = '\0'; + sscanf(hex, "%x%n", &u, &n); + *cp++ = u; + s += n; + } + else { + *cp++ = *s++; + } + } + + *cp = '\0'; + return result; +} + +/* + * Test a function returning pointer to char, accepting: + * op1, fmt, context + * + * This function is used for "mpd_format". + */ +static void +_cp_MpdFmtCtx(char **token, char *(*func)(const mpd_t *, const char *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *fmt; + char *calc; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + /* conversion should be done as if there were no limits */ + n = scan_1op_str_result(op1, &fmt, &expected, token, &maxctx); + + fmt = parse_escapes(fmt); + expected = parse_escapes(expected); + + expstatus = scan_conditions(token+n); + + mpd_init_rand(tmp); + mpd_copy(tmp, op1, ctx); + ctx->status = 0; + + calc = func(tmp, fmt, ctx); + + if (calc == NULL) { + calc = strdup("NULL"); + } + /* compare the calculated result to the expected result */ + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op1, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op1, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + calc = func(tmp, fmt, ctx); + mpd_set_alloc(ctx); + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(calc == NULL) + } + if (calc == NULL) { + calc = strdup("NULL"); + } + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op1, token[0]); + + free(fmt); + free(expected); +} + +/* + * Test a function returning pointer to const char, accepting: + * op1, context + */ +static void +_ccp_MpdCtx(char **token, const char *(*func)(const mpd_t *, const mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + const char *calc; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + /* conversion should be done as if there were no limits */ + n = scan_1op_result(op, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + calc = func(tmp, ctx); + + compare_expected(calc, expected, expstatus, token[0], ctx); + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + calc = func(tmp, ctx); + mpd_set_alloc(ctx); + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(calc == NULL) + } + compare_expected(calc, expected, expstatus, token[0], ctx); + check_equalmem(tmp, op, token[0]); +} + +/* Test a unary function */ +static void +_Res_Op_Ctx(char *token[], void (*func)(mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + int n, incr; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* result and tmp are distinct decimals */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_init_rand(result); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(result, tmp, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op, token[0]); + + + /* result equals operand */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp, tmp, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); +} + +/* Test a binary function */ +static void +_Res_Binop_Ctx(char *token[], void (*func)(mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + int n, incr; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* three distinct decimals */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(result, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a binary function where op1 == op2. */ +static void +_Res_EqualBinop_Ctx(char *token[], void (*func)(mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands, distinct result */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_init_rand(result); + ctx->status = 0; + + func(result, tmp, tmp, ctx); + + /* hack #1 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && ctx->status&MPD_Division_impossible) { + expstatus = MPD_Division_impossible; + } + /* hack #2 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && ctx->status&MPD_Division_undefined) { + expstatus = MPD_Division_undefined; + } + /* hack #3 to resolve disagreement with results generated by decimal.py (power) */ + if ((startswith(expected, "-0E") || startswith(expected, "0E")) && mpd_isnan(result)) { + expected = "NaN"; + expstatus = MPD_Invalid_operation; + } + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op, token[0]); + + + /* all parameters equal */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + func(tmp, tmp, tmp, ctx); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp, tmp, tmp, ctx); + mpd_set_alloc(ctx); + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp)) + } + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); +} + +/* Test a binary function with a binary result */ +static void +_Binres_Binop_Ctx(char *token[], void (*func)(mpd_t *, mpd_t*, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected1, *expected2; + uint32_t expstatus; + int n, incr; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_2results(op1, op2, &expected1, &expected2, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* four distinct decimals */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result1); + mpd_init_rand(result2); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(result1, result2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + /* hack #1 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && ctx->status&MPD_Division_impossible) { + expstatus = MPD_Division_impossible; + } + /* hack #2 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && ctx->status&MPD_Division_undefined) { + expstatus = MPD_Division_undefined; + } + /* hack #3 to resolve disagreement with results generated by decimal.py */ + if ((startswith(expected1, "-Inf") || startswith(expected1, "Inf")) && mpd_isnan(result1)) { + expected1 = "NaN"; + } + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result1); + mpd_minalloc(result2); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result1, result2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result1)) + ASSERT(mpd_isnan(result2)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result1 == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result2); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp1, result2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail <= INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result2); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp1, result2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + ASSERT(mpd_isnan(result2)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp2, op2, token[0]); + + + /* result2 == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result1); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(result1, tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result1); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result1, tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result1)) + ASSERT(mpd_isnan(tmp1)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp2, op2, token[0]); + + + /* result1 == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result2); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp2, result2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result2); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp2, result2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + ASSERT(mpd_isnan(result2)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + + + /* result2 == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result1); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(result1, tmp2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result1); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result1, tmp2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result1)) + ASSERT(mpd_isnan(tmp2)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + + + /* result1 == tmp1, result2 == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp1, tmp2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp1, tmp2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + ASSERT(mpd_isnan(tmp2)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + + /* result1 == tmp2, result2 == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp2, tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp2, tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + ASSERT(mpd_isnan(tmp1)) + + if (alloc_fail > 50) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); +} + +/* Test a binary function with a binary result; equal operands */ +static void +_Binres_EqualBinop_Ctx(char *token[], void (*func)(mpd_t *, mpd_t*, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected1, *expected2; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_2results(op, &expected1, &expected2, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct results */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_init_rand(result1); + mpd_init_rand(result2); + ctx->status = 0; + + func(result1, result2, tmp, tmp, ctx); + + /* hack #1 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && ctx->status&MPD_Division_impossible) { + expstatus = MPD_Division_impossible; + } + /* hack #2 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && ctx->status&MPD_Division_undefined) { + expstatus = MPD_Division_undefined; + } + /* hack #3 to resolve disagreement with results generated by decimal.py */ + if ((startswith(expected1, "-Inf") || startswith(expected1, "Inf")) && mpd_isnan(result1)) { + expected1 = "NaN"; + } + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_minalloc(result1); + mpd_minalloc(result2); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result1, result2, tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result1)) + ASSERT(mpd_isnan(result2)) + } + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + check_equalmem(tmp, op, token[0]); + + + /* result1 == tmp */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_init_rand(result2); + ctx->status = 0; + + func(tmp, result2, tmp, tmp, ctx); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_minalloc(result2); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp, result2, tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp)) + ASSERT(mpd_isnan(result2)) + } + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + + /* result2 == tmp */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_init_rand(result1); + ctx->status = 0; + + func(result1, tmp, tmp, tmp, ctx); + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_minalloc(result1); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result1, tmp, tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result1)) + ASSERT(mpd_isnan(tmp)) + } + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx); + free(calc); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx); + free(calc); +} + +/* Test a ternary function */ +static void +_Res_Ternop_Ctx(char *token[], void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + int n, incr; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_3ops_result(op1, op2, op3, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* four distinct decimals */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_init_rand(tmp3); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_copy(tmp3, op3, ctx); + mpd_init_rand(result); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(result, tmp1, tmp2, tmp3, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + check_equalmem(tmp3, op3, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_init_rand(tmp3); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_copy(tmp3, op3, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp1, tmp2, tmp3, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + + if (alloc_fail > 100) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + check_equalmem(tmp3, op3, token[0]); + + + /* result == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_init_rand(tmp3); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_copy(tmp3, op3, ctx); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp1, tmp1, tmp2, tmp3, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + check_equalmem(tmp3, op3, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_init_rand(tmp3); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_copy(tmp3, op3, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp1, tmp1, tmp2, tmp3, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + + if (alloc_fail > 100) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + check_equalmem(tmp3, op3, token[0]); + + + /* result == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_init_rand(tmp3); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_copy(tmp3, op3, ctx); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp2, tmp1, tmp2, tmp3, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp3, op3, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_init_rand(tmp3); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_copy(tmp3, op3, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp2, tmp1, tmp2, tmp3, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + + if (alloc_fail > 100) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp3, op3, token[0]); + + + /* result == tmp3 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_init_rand(tmp3); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_copy(tmp3, op3, ctx); + ctx->status = 0; + + mpd_set_alloc_count(ctx); + func(tmp3, tmp1, tmp2, tmp3, ctx); + mpd_set_alloc(ctx); + + calc = mpd_to_sci(tmp3, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + incr = 1; + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail += incr) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_init_rand(tmp3); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_copy(tmp3, op3, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp3, tmp1, tmp2, tmp3, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp3)) + + if (alloc_fail > 100) { + incr = (int)(alloc_count*0.02) + 1; + } + } + calc = mpd_to_sci(tmp3, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); +} + +/* Test a ternary function, first and second operand equal */ +static void +_Res_EqEqOp_Ctx(char *token[], void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct result */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result); + ctx->status = 0; + + func(result, tmp1, tmp1, tmp2, ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + func(tmp1, tmp1, tmp1, tmp2, ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp1, tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + func(tmp2, tmp1, tmp1, tmp2, ctx); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp2, tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a ternary function, first and third operand equal */ +static void +_Res_EqOpEq_Ctx(char *token[], void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct result */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result); + ctx->status = 0; + + func(result, tmp1, tmp2, tmp1, ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp1, tmp2, tmp1, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + func(tmp1, tmp1, tmp2, tmp1, ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp1, tmp1, tmp2, tmp1, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + func(tmp2, tmp1, tmp2, tmp1, ctx); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp2, tmp1, tmp2, tmp1, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a ternary function, second and third operand equal */ +static void +_Res_OpEqEq_Ctx(char *token[], void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct result */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result); + ctx->status = 0; + + func(result, tmp2, tmp1, tmp1, ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp2, tmp1, tmp1, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + func(tmp1, tmp2, tmp1, tmp1, ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp1, tmp2, tmp1, tmp1, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + func(tmp2, tmp2, tmp1, tmp1, ctx); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp2, tmp2, tmp1, tmp1, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a ternary function, first, second and third operand equal */ +static void +_Res_EqEqEq_Ctx(char *token[], void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct result */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_init_rand(result); + ctx->status = 0; + + func(result, tmp, tmp, tmp, ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp, tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp, op, token[0]); + + + /* result == tmp */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + func(tmp, tmp, tmp, tmp, ctx); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp, tmp, tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp)) + } + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); +} + +/* + * Test a binary function that returns an additional integer result. + * Used for the comparison functions. + */ +static void +_Int_Res_Binop_Ctx(char *token[], int (*func)(mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + int int_result; + char buf[11]; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* three distinct decimals */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result); + ctx->status = 0; + + int_result = func(result, tmp1, tmp2, ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(result, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + int_result = func(tmp1, tmp1, tmp2, ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp1, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp2, op2, token[0]); + + + + /* result == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + int_result = func(tmp2, tmp1, tmp2, ctx); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp2, tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); +} + +/* + * Test a binary function that returns an additional integer result. + * Equal operands. + * Used for the comparison functions. + */ +static void +_Int_Res_EqualBinop_Ctx(char *token[], int (*func)(mpd_t *, const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + int int_result; + char buf[11]; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_init_rand(result); + ctx->status = 0; + + int_result = func(result, tmp, tmp, ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(result, tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp, op, token[0]); + + + /* all parameters equal */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + int_result = func(tmp, tmp, tmp, ctx); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp, tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp)) + } + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } +} + +/* + * Test a binary function that returns an additional integer result. + * Function does not take a context argument. + * Used for the comparison functions. + */ +static void +_Int_Res_Binop(char *token[], int (*func)(mpd_t *, const mpd_t *, const mpd_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + int int_result; + char buf[11]; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* three distinct decimals */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_init_rand(result); + ctx->status = 0; + + int_result = func(result, tmp1, tmp2); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(result, tmp1, tmp2); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + int_result = func(tmp1, tmp1, tmp2); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp1, tmp1, tmp2); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + int_result = func(tmp2, tmp1, tmp2); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp2, tmp1, tmp2); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp2)) + } + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); +} + +/* + * Test a binary function that returns an additional integer result. + * Function does not take a context argument. + * Equal operands. + * Used for the comparison functions. + */ +static void +_Int_Res_EqualBinop(char *token[], int (*func)(mpd_t *, const mpd_t *, const mpd_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + int int_result; + char buf[11]; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_init_rand(result); + ctx->status = 0; + + int_result = func(result, tmp, tmp); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(result, tmp, tmp); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp, op, token[0]); + + + /* all parameters equal */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + int_result = func(tmp, tmp, tmp); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp, tmp, tmp); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp)) + } + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } +} + +/* + * Test a binary function that returns only an integer result. + * Used for the cmp functions. + */ +enum {SKIP_NONE, SKIP_NAN, SKIP_NONINT}; +static void +_Int_Binop_Ctx(int skip, char *token[], int (*func)(const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + int int_result; + char buf[11]; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* two distinct decimals */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + int_result = func(tmp1, tmp2, ctx); + + snprintf(buf, 11, "%d", int_result); + if (!(skip && int_result == INT_MAX)) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp1, tmp2, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(int_result== INT_MAX) + } + snprintf(buf, 11, "%d", int_result); + if (!(skip && int_result == INT_MAX)) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); +} + +/* + * Test a binary function that returns only an integer result. + * Equal operands. + * Used for the cmp functions. + */ +static void +_Int_EqualBinop_Ctx(int skip, char *token[], int (*func)(const mpd_t *, const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + int int_result; + char buf[11]; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + int_result = func(tmp, tmp, ctx); + + snprintf(buf, 11, "%d", int_result); + if (!(skip && int_result == INT_MAX)) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp, tmp, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(int_result== INT_MAX) + } + snprintf(buf, 11, "%d", int_result); + if (!(skip && int_result == INT_MAX)) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx); + } + check_equalmem(tmp, op, token[0]); +} + +/* + * Test a binary function that returns an int. + * The function does not take a context argument. + */ +static void +_Int_Binop(char *token[], int (*func)(const mpd_t *, const mpd_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + int int_result; + char buf[11]; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* two distinct decimals */ + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + int_result = func(tmp1, tmp2); + + snprintf(buf, 11, "%d", int_result); + compare_expected(buf, expected, expstatus, token[0], ctx); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_init_rand(tmp2); + mpd_copy(tmp1, op1, ctx); + mpd_copy(tmp2, op2, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp1, tmp2); + mpd_set_alloc(ctx); + + if (int_result != INT_MAX) { + break; + } + } + snprintf(buf, 11, "%d", int_result); + compare_expected(buf, expected, expstatus, token[0], ctx); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); +} + +/* + * Test a binary function that returns an int. + * Equal operands. + * The function does not take a context argument. + */ +static void +_Int_EqualBinop(char *token[], int (*func)(const mpd_t *, const mpd_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + int int_result; + char buf[11]; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands */ + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + int_result = func(tmp, tmp); + + snprintf(buf, 11, "%d", int_result); + compare_expected(buf, expected, expstatus, token[0], ctx); + check_equalmem(tmp, op, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + int_result = func(tmp, tmp); + mpd_set_alloc(ctx); + + if (int_result != INT_MAX) { + break; + } + } + snprintf(buf, 11, "%d", int_result); + compare_expected(buf, expected, expstatus, token[0], ctx); + check_equalmem(tmp, op, token[0]); +} + +static mpd_ssize_t +scan_ssize(char *token[]) +{ + errno = 0; + if (token[1] == NULL) { + errno = 1; + return MPD_SSIZE_MAX; + } + return mpd_strtossize(token[1], NULL, 10); +} + +/* + * Test a function with an mpd_t and an mpd_ssize_t operand. + * Used for the shift functions. + */ +static void +_Res_Op_Lsize_Ctx(int skip, char *token[], void (*func)(mpd_t *, const mpd_t *, mpd_ssize_t, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + mpd_ssize_t ssize; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* only integers are allowed for ssize */ + if (skip && (mpd_isspecial(op2) || op2->exp != 0)) { + /* fprintf(stderr, "SKIP: %s\n", token[0]); */ + return; + } + ssize = mpd_get_ssize(op2, &maxctx); + if (maxctx.status&MPD_Invalid_operation) { + return; + } + + /* two distinct decimals */ + mpd_init_rand(tmp1); + mpd_copy(tmp1, op1, ctx); + mpd_init_rand(result); + ctx->status = 0; + + func(result, tmp1, ssize, ctx); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_copy(tmp1, op1, ctx); + mpd_minalloc(result); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(result, tmp1, ssize, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + check_equalmem(tmp1, op1, token[0]); + + + /* result == tmp1 */ + mpd_init_rand(tmp1); + mpd_copy(tmp1, op1, ctx); + ctx->status = 0; + + func(tmp1, tmp1, ssize, ctx); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); + + /* Allocation failures */ + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + mpd_init_rand(tmp1); + mpd_copy(tmp1, op1, ctx); + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + func(tmp1, tmp1, ssize, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(tmp1)) + } + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + free(calc); +} + +static void +_Baseconv(char *token[], mpd_context_t *ctx) +{ + mpd_context_t maxctx; + uint32_t base; + uint16_t *data16; + uint32_t *data32; + size_t len16, len32; + size_t exp_len16, exp_len32; + char *expected; + uint32_t expstatus; + char *calc; + int n = 0; + int i, iter = 0; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op1, &expected, token, &maxctx); + ASSERT(mpd_isinteger(op1)) + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + base = (1<<15); + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc((mpd_size_t)len16, sizeof *data16); + exp_len16 = mpd_export_u16(data16, len16, base, op1, ctx); + if (exp_len16 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u16(result, data16, exp_len16, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data16); + + /* Allocation failures */ + base = (1<<15); + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc((mpd_size_t)len16, sizeof *data16); + + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + exp_len16 = mpd_export_u16(data16, len16, base, op1, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(exp_len16 == SIZE_MAX) + } + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + mpd_import_u16(result, data16, exp_len16, MPD_POS, base, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + mpd_free(calc); + mpd_free(data16); + + + base = (1U<<16); + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc((mpd_size_t)len16, sizeof *data16); + len16 = mpd_export_u16(data16, len16, base, op1, ctx); + if (len16 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u16(result, data16, len16, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data16); + + + base = 9999; + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc((mpd_size_t)len16, sizeof *data16); + exp_len16 = mpd_export_u16(data16, len16, base, op1, ctx); + if (exp_len16 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u16(result, data16, exp_len16, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data16); + + +#ifdef RT_EXT_BASECONV + iter = 16; +#endif + for (i = 2; i <= iter; i++) { + + base = i; + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc((mpd_size_t)len16, sizeof *data16); + len16 = mpd_export_u16(data16, len16, base, op1, ctx); + if (len16 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u16(result, data16, len16, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data16); + } + +#ifdef RT_EXT_BASECONV + iter = 100; +#endif + for (i = 0; i < iter; i++) { + + base = random() % UINT16_MAX; + if (base < 2) base = 2; + + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc((mpd_size_t)len16, sizeof *data16); + len16 = mpd_export_u16(data16, len16, base, op1, ctx); + if (len16 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u16(result, data16, len16, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data16); + } + + + base = 1000000000; + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + exp_len32 = mpd_export_u32(data32, len32, base, op1, ctx); + if (exp_len32 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u32(result, data32, len32, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data32); + + /* Allocation failures */ + base = 1000000000; + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + exp_len32 = mpd_export_u32(data32, len32, base, op1, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(exp_len32 == SIZE_MAX) + } + for (alloc_fail = 1; alloc_fail < INT_MAX; alloc_fail++) { + ctx->status = 0; + + mpd_set_alloc_fail(ctx); + mpd_import_u32(result, data32, exp_len32, MPD_POS, base, ctx); + mpd_set_alloc(ctx); + + if (!(ctx->status&MPD_Malloc_error)) { + break; + } + ASSERT(mpd_isnan(result)) + } + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + mpd_free(calc); + mpd_free(data32); + + + base = (1<<30); + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + len32 = mpd_export_u32(data32, len32, base, op1, ctx); + if (len32 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u32(result, data32, len32, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data32); + + for (i = 2; i <= 16; i++) { + + base = i; + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + len32 = mpd_export_u32(data32, len32, base, op1, ctx); + if (len32 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u32(result, data32, len32, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data32); + } + + for (i = 0; i < 100; i++) { + + base = random() % UINT32_MAX; + if (base < 2) base = 2; + + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + len32 = mpd_export_u32(data32, len32, base, op1, ctx); + if (len32 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_import_u32(result, data32, len32, MPD_POS, base, ctx); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx); + + mpd_free(calc); + mpd_free(data32); + } +} + +/* + * Test a function returning an mpd_uint_t, accepting: + * op, context + * + * This function is used for: + * - mpd_get_uint + * - mpd_abs_uint + * - mpd_get_u64 + * - mpd_get_u32 + */ +static void +_uint_MpdCtx(char **token, mpd_uint_t (*func)(const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + mpd_uint_t calc_uint; + char calc[23]; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + /* conversion should be done as if there were no limits */ + n = scan_1op_result(op, &expected, token, &maxctx); + + expstatus = scan_conditions(token+n); + + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + calc_uint = func(tmp, ctx); + snprintf(calc, 23, "%" PRI_mpd_size_t, calc_uint); + + /* compare the calculated result to the expected result */ + compare_expected(calc, expected, expstatus, token[0], ctx); + check_equalmem(tmp, op, token[0]); +} + +/* + * Test a function returning an mpd_ssize_t, accepting: + * op, fmt, context + * + * This function is used for: + * - mpd_get_ssize + * - mpd_get_i64 + * - mpd_get_i32 + */ +static void +_ssize_MpdCtx(char **token, mpd_ssize_t (*func)(const mpd_t *, mpd_context_t *), mpd_context_t *ctx) +{ + mpd_context_t maxctx; + mpd_ssize_t calc_ssize; + char calc[23]; + char *expected; + uint32_t expstatus; + int n; + + mpd_readcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + /* conversion should be done as if there were no limits */ + n = scan_1op_result(op, &expected, token, &maxctx); + + expstatus = scan_conditions(token+n); + + mpd_init_rand(tmp); + mpd_copy(tmp, op, ctx); + ctx->status = 0; + + calc_ssize = func(tmp, ctx); + snprintf(calc, 23, "%" PRI_mpd_ssize_t, calc_ssize); + + /* compare the calculated result to the expected result */ + compare_expected(calc, expected, expstatus, token[0], ctx); + check_equalmem(tmp, op, token[0]); +} + + +/* process a file */ +static void +doit(char *filename) +{ + FILE *file; + mpd_context_t ctx; + char *line; + char *tmpline; + char *token[MAXTOKEN+1]; + uint32_t testno; + mpd_ssize_t l; + + + mpd_testcontext(&ctx); + + ctx.traps = MPD_Malloc_error; + + if (strcmp(filename, "-") == 0) { + file = stdin; + } + else { + if ((file = fopen(filename, "r")) == NULL) { + mpd_err_fatal("could not open %s", filename); + } + } + + if ((line = mpd_alloc(MAXLINE+1, sizeof *line)) == NULL) { + mpd_err_fatal("out of memory"); + } + if ((tmpline = mpd_alloc(MAXLINE+1, sizeof *line)) == NULL) { + mpd_err_fatal("out of memory"); + } + + + while (fgets(line, MAXLINE+1, file) != NULL) { + + /* split a line into tokens */ + strcpy(tmpline, line); + if (split(token, tmpline) == 0) { + goto cleanup; + } + + + /* comments */ + if (startswith(token[0], "--")) { + goto cleanup; + } + /* end comments */ + + /* skip bool* tests in extra.decTest */ + if (startswith(token[0], "bool")) { + goto cleanup; + } + /* end skips */ + + + /* directives */ + if (startswith(token[0], "Precision")) { + l = scan_ssize(token); + if (errno != 0) { + mpd_err_fatal("%s: %s", filename, line); + } + /*if (!mpd_qsetprec(&ctx, l)) { + mpd_err_fatal("%s: %s", filename, line); + }*/ + /* use a wider range than officially allowed */ + ctx.prec = l; + goto cleanup; + } + + if (startswith(token[0], "Rounding")) { + if (eqtoken(token[1], "Ceiling")) + ctx.round = MPD_ROUND_CEILING; + else if (eqtoken(token[1], "Up")) + ctx.round = MPD_ROUND_UP; + else if (eqtoken(token[1], "Half_up")) + ctx.round = MPD_ROUND_HALF_UP; + else if (eqtoken(token[1], "Half_even")) + ctx.round = MPD_ROUND_HALF_EVEN; + else if (eqtoken(token[1], "Half_down")) + ctx.round = MPD_ROUND_HALF_DOWN; + else if (eqtoken(token[1], "Down")) + ctx.round = MPD_ROUND_DOWN; + else if (eqtoken(token[1], "Floor")) + ctx.round = MPD_ROUND_FLOOR; + else if (eqtoken(token[1], "05up")) + ctx.round = MPD_ROUND_05UP; + else + mpd_err_fatal("%s: %s", filename, line); + goto cleanup; + } + + if (startswith(token[0], "MaxExponent")) { + l = scan_ssize(token); + if (errno != 0) { + mpd_err_fatal("%s: %s", filename, line); + } + /*if (!mpd_qsetemax(&ctx, l)) { + mpd_err_fatal("%s: %s", filename, line); + }*/ + /* use a wider range than officially allowed */ + ctx.emax = l; + goto cleanup; + } + + if (startswith(token[0], "MinExponent")) { + l = scan_ssize(token); + if (errno != 0) { + mpd_err_fatal("%s: %s", filename, line); + } + /*if (!mpd_qsetemin(&ctx, l)) { + mpd_err_fatal("%s: %s", filename, line); + }*/ + /* use a wider range than officially allowed */ + ctx.emin = l; + goto cleanup; + } + + if (startswith(token[0], "Dectest")) { + if (token[1] == NULL) { + mpd_err_fatal("%s: %s", filename, line); + } + doit(token[1]); + goto cleanup; + } + /* end directives */ + + + /* optional directives */ + if (startswith(token[0], "Version")) { + goto cleanup; + } + + if (startswith(token[0], "Extended")) { + goto cleanup; + } + + if (startswith(token[0], "Clamp")) { + l = scan_ssize(token); + if (errno != 0) { + mpd_err_fatal("%s: %s", filename, line); + } + if (!mpd_qsetclamp(&ctx, (int)l)) { + mpd_err_fatal("%s: %s", filename, line); + } + goto cleanup; + } + if (startswith(token[0], "Locale")) { + if (token[1] == NULL) { + mpd_err_fatal("%s: %s", filename, line); + } + fprintf(stderr, "locale: %s\n", token[1]); + if (setlocale(LC_NUMERIC, token[1]) == NULL) { + mpd_err_fatal("%s: %s", filename, line); + } + goto cleanup; + } + /* end optional directives */ + + + /* + * Actual tests start here: + * - token[0] is the id + * - token[1] is the operation type + * - testno can be used for setting a watchpoint in the debugger + */ + testno = get_testno(token[0]); + (void)testno; + + /* The id is in the skip list */ + if (check_skip(token[0])) { + goto cleanup; + } +#ifdef CONFIG_32 + /* Skip coverage tests with excessive run time. */ + if (startswith(token[0], "cov64")) { + goto cleanup; + } +#endif + /* Translate operation type for powmod */ + if (startswith(token[0], "pwmx")) { + free(token[1]); + token[1] = malloc(sizeof("powmod")); + strcpy(token[1], "powmod"); + } + /* end skips */ + + + /* Unary functions with char * result */ + if (eqtoken(token[1], "tosci") || eqtoken(token[1], "apply")) { + _cp_MpdCtx(token, mpd_to_sci, &ctx); + } + else if (eqtoken(token[1], "toeng")) { + _cp_MpdCtx(token, mpd_to_eng, &ctx); + } + else if (eqtoken(token[1], "format")) { + _cp_MpdFmtCtx(token, mpd_format, &ctx); + } + /* Unary function with const char * result */ + else if (eqtoken(token[1], "class")) { + _ccp_MpdCtx(token, mpd_class, &ctx); + } + + /* Unary functions with mpd_t * result */ + else if (eqtoken(token[1], "abs")) { + _Res_Op_Ctx(token, mpd_abs, &ctx); + } + else if (eqtoken(token[1], "copy")) { + _Res_Op_Ctx(token, mpd_copy, &ctx); + } + else if (eqtoken(token[1], "copyabs")) { + _Res_Op_Ctx(token, mpd_copy_abs, &ctx); + } + else if (eqtoken(token[1], "copynegate")) { + _Res_Op_Ctx(token, mpd_copy_negate, &ctx); + } + else if (eqtoken(token[1], "exp")) { + ctx.allcr = 0; + _Res_Op_Ctx(token, mpd_exp, &ctx); + ctx.allcr = 1; + _Res_Op_Ctx(token, mpd_exp, &ctx); + } + else if (eqtoken(token[1], "invert")) { + _Res_Op_Ctx(token, mpd_invert, &ctx); + } + else if (eqtoken(token[1], "invroot")) { + _Res_Op_Ctx(token, mpd_invroot, &ctx); + } + else if (eqtoken(token[1], "ln")) { + ctx.allcr = 0; + _Res_Op_Ctx(token, mpd_ln, &ctx); + ctx.allcr = 1; + _Res_Op_Ctx(token, mpd_ln, &ctx); + } + else if (eqtoken(token[1], "log10")) { + ctx.allcr = 0; + _Res_Op_Ctx(token, mpd_log10, &ctx); + ctx.allcr = 1; + _Res_Op_Ctx(token, mpd_log10, &ctx); + } + else if (eqtoken(token[1], "logb")) { + _Res_Op_Ctx(token, mpd_logb, &ctx); + } + else if (eqtoken(token[1], "minus")) { + _Res_Op_Ctx(token, mpd_minus, &ctx); + } + else if (eqtoken(token[1], "nextminus")) { + _Res_Op_Ctx(token, mpd_next_minus, &ctx); + } + else if (eqtoken(token[1], "nextplus")) { + _Res_Op_Ctx(token, mpd_next_plus, &ctx); + } + else if (eqtoken(token[1], "plus")) { + _Res_Op_Ctx(token, mpd_plus, &ctx); + } + else if (eqtoken(token[1], "reduce")) { + _Res_Op_Ctx(token, mpd_reduce, &ctx); + } + else if (eqtoken(token[1], "squareroot")) { + _Res_Op_Ctx(token, mpd_sqrt, &ctx); + } + else if (eqtoken(token[1], "tointegral")) { + _Res_Op_Ctx(token, mpd_round_to_int, &ctx); + } + else if (eqtoken(token[1], "tointegralx")) { + _Res_Op_Ctx(token, mpd_round_to_intx, &ctx); + } + else if (eqtoken(token[1], "floor")) { + _Res_Op_Ctx(token, mpd_floor, &ctx); + } + else if (eqtoken(token[1], "ceil")) { + _Res_Op_Ctx(token, mpd_ceil, &ctx); + } + else if (eqtoken(token[1], "trunc")) { + _Res_Op_Ctx(token, mpd_trunc, &ctx); + } + + + /* Binary function returning an int */ + else if (eqtoken(token[1], "samequantum")) { + _Int_Binop(token, mpd_same_quantum, &ctx); + } + /* Binary function returning an int, equal operands */ + else if (eqtoken(token[1], "samequantum_eq")) { + _Int_EqualBinop(token, mpd_same_quantum, &ctx); + } + + /* Binary functions with mpd_t * result */ + else if (eqtoken(token[1], "add")) { + _Res_Binop_Ctx(token, mpd_add, &ctx); + } + else if (eqtoken(token[1], "and")) { + _Res_Binop_Ctx(token, mpd_and, &ctx); + } + else if (eqtoken(token[1], "copysign")) { + _Res_Binop_Ctx(token, mpd_copy_sign, &ctx); + } + else if (eqtoken(token[1], "divide")) { + _Res_Binop_Ctx(token, mpd_div, &ctx); + _Res_Binop_Ctx(token, mpd_test_newtondiv, &ctx); + } + else if (eqtoken(token[1], "divideint")) { + _Res_Binop_Ctx(token, mpd_divint, &ctx); + _Res_Binop_Ctx(token, mpd_test_newtondivint, &ctx); + } + else if (eqtoken(token[1], "max")) { + _Res_Binop_Ctx(token, mpd_max, &ctx); + } + else if (eqtoken(token[1], "maxmag")) { + _Res_Binop_Ctx(token, mpd_max_mag, &ctx); + } + else if (eqtoken(token[1], "min")) { + _Res_Binop_Ctx(token, mpd_min, &ctx); + } + else if (eqtoken(token[1], "minmag")) { + _Res_Binop_Ctx(token, mpd_min_mag, &ctx); + } + else if (eqtoken(token[1], "multiply")) { + _Res_Binop_Ctx(token, mpd_mul, &ctx); + } + else if (eqtoken(token[1], "nexttoward")) { + _Res_Binop_Ctx(token, mpd_next_toward, &ctx); + } + else if (eqtoken(token[1], "or")) { + _Res_Binop_Ctx(token, mpd_or, &ctx); + } + else if (eqtoken(token[1], "power")) { + ctx.allcr = 0; + _Res_Binop_Ctx(token, mpd_pow, &ctx); + ctx.allcr = 1; + _Res_Binop_Ctx(token, mpd_pow, &ctx); + } + else if (eqtoken(token[1], "quantize")) { + _Res_Binop_Ctx(token, mpd_quantize, &ctx); + } + else if (eqtoken(token[1], "resc")) { + _Res_Op_Lsize_Ctx(SKIP_NONINT, token, mpd_rescale, &ctx); + } + else if (eqtoken(token[1], "remainder")) { + _Res_Binop_Ctx(token, mpd_rem, &ctx); + _Res_Binop_Ctx(token, mpd_test_newtonrem, &ctx); + } + else if (eqtoken(token[1], "remaindernear")) { + _Res_Binop_Ctx(token, mpd_rem_near, &ctx); + } + else if (eqtoken(token[1], "rotate")) { + _Res_Binop_Ctx(token, mpd_rotate, &ctx); + } + else if (eqtoken(token[1], "scaleb")) { + _Res_Binop_Ctx(token, mpd_scaleb, &ctx); + } + else if (eqtoken(token[1], "shift")) { + _Res_Binop_Ctx(token, mpd_shift, &ctx); + _Res_Op_Lsize_Ctx(SKIP_NONINT, token, mpd_shiftn, &ctx); + } + else if (eqtoken(token[1], "subtract")) { + _Res_Binop_Ctx(token, mpd_sub, &ctx); + } + else if (eqtoken(token[1], "xor")) { + _Res_Binop_Ctx(token, mpd_xor, &ctx); + } + + /* Binary functions with mpd_t result, equal operands */ + else if (eqtoken(token[1], "add_eq")) { + _Res_EqualBinop_Ctx(token, mpd_add, &ctx); + } + else if (eqtoken(token[1], "and_eq")) { + _Res_EqualBinop_Ctx(token, mpd_and, &ctx); + } + else if (eqtoken(token[1], "copysign_eq")) { + _Res_EqualBinop_Ctx(token, mpd_copy_sign, &ctx); + } + else if (eqtoken(token[1], "divide_eq")) { + _Res_EqualBinop_Ctx(token, mpd_div, &ctx); + _Res_EqualBinop_Ctx(token, mpd_test_newtondiv, &ctx); + } + else if (eqtoken(token[1], "divideint_eq")) { + _Res_EqualBinop_Ctx(token, mpd_divint, &ctx); + _Res_EqualBinop_Ctx(token, mpd_test_newtondivint, &ctx); + } + else if (eqtoken(token[1], "max_eq")) { + _Res_EqualBinop_Ctx(token, mpd_max, &ctx); + } + else if (eqtoken(token[1], "maxmag_eq")) { + _Res_EqualBinop_Ctx(token, mpd_max_mag, &ctx); + } + else if (eqtoken(token[1], "min_eq")) { + _Res_EqualBinop_Ctx(token, mpd_min, &ctx); + } + else if (eqtoken(token[1], "minmag_eq")) { + _Res_EqualBinop_Ctx(token, mpd_min_mag, &ctx); + } + else if (eqtoken(token[1], "multiply_eq")) { + _Res_EqualBinop_Ctx(token, mpd_mul, &ctx); + } + else if (eqtoken(token[1], "nexttoward_eq")) { + _Res_EqualBinop_Ctx(token, mpd_next_toward, &ctx); + } + else if (eqtoken(token[1], "or_eq")) { + _Res_EqualBinop_Ctx(token, mpd_or, &ctx); + } + else if (eqtoken(token[1], "power_eq")) { + ctx.allcr = 0; + _Res_EqualBinop_Ctx(token, mpd_pow, &ctx); + ctx.allcr = 1; + _Res_EqualBinop_Ctx(token, mpd_pow, &ctx); + } + else if (eqtoken(token[1], "quantize_eq")) { + _Res_EqualBinop_Ctx(token, mpd_quantize, &ctx); + } + else if (eqtoken(token[1], "remainder_eq")) { + _Res_EqualBinop_Ctx(token, mpd_rem, &ctx); + _Res_EqualBinop_Ctx(token, mpd_test_newtonrem, &ctx); + } + else if (eqtoken(token[1], "remaindernear_eq")) { + _Res_EqualBinop_Ctx(token, mpd_rem_near, &ctx); + } + else if (eqtoken(token[1], "rotate_eq")) { + _Res_EqualBinop_Ctx(token, mpd_rotate, &ctx); + } + else if (eqtoken(token[1], "scaleb_eq")) { + _Res_EqualBinop_Ctx(token, mpd_scaleb, &ctx); + } + else if (eqtoken(token[1], "shift_eq")) { + _Res_EqualBinop_Ctx(token, mpd_shift, &ctx); + } + else if (eqtoken(token[1], "subtract_eq")) { + _Res_EqualBinop_Ctx(token, mpd_sub, &ctx); + } + else if (eqtoken(token[1], "xor_eq")) { + _Res_EqualBinop_Ctx(token, mpd_xor, &ctx); + } + + /* Binary function with binary result */ + else if (eqtoken(token[1], "divmod")) { + _Binres_Binop_Ctx(token, mpd_divmod, &ctx); + _Binres_Binop_Ctx(token, mpd_test_newtondivmod, &ctx); + } + + /* Binary function with binary result, equal operands */ + else if (eqtoken(token[1], "divmod_eq")) { + _Binres_EqualBinop_Ctx(token, mpd_divmod, &ctx); + _Binres_EqualBinop_Ctx(token, mpd_test_newtondivmod, &ctx); + } + + + /* Ternary functions with mpd_t result */ + else if (eqtoken(token[1], "fma")) { + _Res_Ternop_Ctx(token, mpd_fma, &ctx); + } + else if (eqtoken(token[1], "powmod")) { + _Res_Ternop_Ctx(token, mpd_powmod, &ctx); + } + + /* Ternary functions with mpd_t result, eq_eq_op */ + else if (eqtoken(token[1], "fma_eq_eq_op")) { + _Res_EqEqOp_Ctx(token, mpd_fma, &ctx); + } + else if (eqtoken(token[1], "powmod_eq_eq_op")) { + _Res_EqEqOp_Ctx(token, mpd_powmod, &ctx); + } + + /* Ternary functions with mpd_t result, eq_op_eq */ + else if (eqtoken(token[1], "fma_eq_op_eq")) { + _Res_EqOpEq_Ctx(token, mpd_fma, &ctx); + } + else if (eqtoken(token[1], "powmod_eq_op_eq")) { + _Res_EqOpEq_Ctx(token, mpd_powmod, &ctx); + } + + /* Ternary functions with mpd_t result, op_eq_eq */ + else if (eqtoken(token[1], "fma_op_eq_eq")) { + _Res_OpEqEq_Ctx(token, mpd_fma, &ctx); + } + else if (eqtoken(token[1], "powmod_op_eq_eq")) { + _Res_OpEqEq_Ctx(token, mpd_powmod, &ctx); + } + + /* Ternary functions with mpd_t result, eq_eq_eq */ + else if (eqtoken(token[1], "fma_eq_eq_eq")) { + _Res_EqEqEq_Ctx(token, mpd_fma, &ctx); + } + else if (eqtoken(token[1], "powmod_eq_eq_eq")) { + _Res_EqEqEq_Ctx(token, mpd_powmod, &ctx); + } + + /* Special cases for the comparison functions */ + else if (eqtoken(token[1], "compare")) { + _Int_Res_Binop_Ctx(token, mpd_compare, &ctx); + _Int_Binop_Ctx(SKIP_NAN, token, mpd_cmp, &ctx); + } + else if (eqtoken(token[1], "comparesig")) { + _Int_Res_Binop_Ctx(token, mpd_compare_signal, &ctx); + } + else if (eqtoken(token[1], "comparetotal")) { + _Int_Res_Binop(token, mpd_compare_total, &ctx); + _Int_Binop(token, mpd_cmp_total, &ctx); + } + else if (eqtoken(token[1], "comparetotmag")) { + _Int_Res_Binop(token, mpd_compare_total_mag, &ctx); + _Int_Binop(token, mpd_cmp_total_mag, &ctx); + } + + /* Special cases for the comparison functions, equal operands */ + else if (eqtoken(token[1], "compare_eq")) { + _Int_Res_EqualBinop_Ctx(token, mpd_compare, &ctx); + _Int_EqualBinop_Ctx(SKIP_NAN, token, mpd_cmp, &ctx); + } + else if (eqtoken(token[1], "comparesig_eq")) { + _Int_Res_EqualBinop_Ctx(token, mpd_compare_signal, &ctx); + } + else if (eqtoken(token[1], "comparetotal_eq")) { + _Int_Res_EqualBinop(token, mpd_compare_total, &ctx); + _Int_EqualBinop(token, mpd_cmp_total, &ctx); + } + else if (eqtoken(token[1], "comparetotmag_eq")) { + _Int_Res_EqualBinop(token, mpd_compare_total_mag, &ctx); + _Int_EqualBinop(token, mpd_cmp_total_mag, &ctx); + } + + /* Special cases for the shift functions */ + else if (eqtoken(token[1], "shiftleft")) { + _Res_Op_Lsize_Ctx(SKIP_NONINT, token, mpd_shiftl, &ctx); + } + else if (eqtoken(token[1], "shiftright")) { + _Res_Op_Lsize_Ctx(SKIP_NONINT, token, + (void (*)(mpd_t *, const mpd_t *, mpd_ssize_t, mpd_context_t *))mpd_shiftr, &ctx); + } + + /* Special case for the base conversion functions */ + else if (eqtoken(token[1], "baseconv")) { + _Baseconv(token, &ctx); + } + + /* Special cases for the get_int functions */ +#ifdef CONFIG_64 + else if (eqtoken(token[1], "get_uint64")) { + _uint_MpdCtx(token, mpd_get_uint, &ctx); + } + else if (eqtoken(token[1], "get_uint64_abs")) { + _uint_MpdCtx(token, mpd_abs_uint, &ctx); + } + else if (eqtoken(token[1], "get_u64")) { + _uint_MpdCtx(token, mpd_get_u64, &ctx); + } + else if (eqtoken(token[1], "get_ssize64")) { + _ssize_MpdCtx(token, mpd_get_ssize, &ctx); + } + else if (eqtoken(token[1], "get_i64")) { + _ssize_MpdCtx(token, mpd_get_i64, &ctx); + } +#else + else if (eqtoken(token[1], "get_uint32")) { + _uint_MpdCtx(token, mpd_get_uint, &ctx); + } + else if (eqtoken(token[1], "get_uint32_abs")) { + _uint_MpdCtx(token, mpd_abs_uint, &ctx); + } + else if (eqtoken(token[1], "get_u32")) { + _uint_MpdCtx(token, mpd_get_u32, &ctx); + } + else if (eqtoken(token[1], "get_ssize32")) { + _ssize_MpdCtx(token, mpd_get_ssize, &ctx); + } + else if (eqtoken(token[1], "get_i32")) { + _ssize_MpdCtx(token, mpd_get_i32, &ctx); + } +#endif + + else if (startswith(token[1], "get_")) { + ; + } + + else if (eqtoken(token[1], "rescale")) { + ; + } + + /* unknown operation */ + else { + mpd_err_fatal("%s: unknown operation: %s", filename, line); + } + /* end tests */ + + cleanup: + freetoken(token); + } + + mpd_free(line); + mpd_free(tmpline); + if (file != stdin) { + fclose(file); + } +} + + +int main(int argc, char **argv) +{ + mpd_ssize_t ma, limit; + int n = 1; + + if (argc == 2) { + limit = 2; + } + else if (argc == 3) { + if (strcmp(argv[n++], "--all") != 0) { + fputs("runtest: usage: runtest [--all] testfile\n", stderr); + exit(EXIT_FAILURE); + } + limit = MPD_MINALLOC_MAX; + } + else { + fputs("runtest: usage: runtest [--all] testfile\n", stderr); + exit(EXIT_FAILURE); + } + + srand((unsigned int)time(NULL)); + + for (ma = MPD_MINALLOC_MIN; ma <= limit; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + if (n == 2) { + fprintf(stderr, "minalloc: %" PRI_mpd_ssize_t "\n", MPD_MINALLOC); + } + + op = mpd_qnew(); + op1 = mpd_qnew(); + op2 = mpd_qnew(); + op3 = mpd_qnew(); + tmp = mpd_qnew(); + tmp1 = mpd_qnew(); + tmp2 = mpd_qnew(); + tmp3 = mpd_qnew(); + result = mpd_qnew(); + result1 = mpd_qnew(); + result2 = mpd_qnew(); + + doit(argv[n]); + + mpd_del(op); + mpd_del(op1); + mpd_del(op2); + mpd_del(op3); + mpd_del(tmp); + mpd_del(tmp1); + mpd_del(tmp2); + mpd_del(tmp3); + mpd_del(result); + mpd_del(result1); + mpd_del(result2); + + if (have_printed) { + fputc('\n', stderr); + } + } + + /* Valgrind */ + mpd_del(&mpd_ln10); + + return have_fail; +} + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/test_transpose.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/test_transpose.c Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,474 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +#include +#include +#include +#include +#include "bits.h" +#include "constants.h" +#include "mpdecimal.h" +#include "mptypes.h" +#include "typearith.h" +#include "transpose.h" + + + +/* + * All the following is pasted from transpose.c for the sole reason of + * running the tests with uint8_t arrays, which allow greater sizes. + */ + + +#define BUFSIZE 4096 +#define SIDE 128 + + +static inline void pointerswap_c(uint8_t **a, uint8_t **b) +{ + uint8_t *tmp; + + tmp = *b; + *b = *a; + *a = tmp; +} + +/* Definition of the matrix transpose */ +static void +std_trans_c(uint8_t dest[], uint8_t src[], mpd_size_t rows, mpd_size_t cols) +{ + mpd_size_t idest, isrc; + mpd_size_t r, c; + + for (r = 0; r < rows; r++) { + isrc = r * cols; + idest = r; + for (c = 0; c < cols; c++) { + dest[idest] = src[isrc]; + isrc += 1; + idest += rows; + } + } +} + +/* + * Swap half-rows of 2^n * (2*2^n) matrix. + * FORWARD_CYCLE: even/odd permutation of the halfrows. + * BACKWARD_CYCLE: reverse the even/odd permutation. + */ +static int +swap_halfrows_pow2_c(uint8_t *matrix, mpd_size_t rows, mpd_size_t cols, int dir) +{ + uint8_t buf1[BUFSIZE]; + uint8_t buf2[BUFSIZE]; + uint8_t *readbuf, *writebuf, *hp; + mpd_size_t *done, dbits; + mpd_size_t b = BUFSIZE, stride; + mpd_size_t hn, hmax; /* halfrow number */ + mpd_size_t m, r=0; + mpd_size_t offset; + mpd_size_t next; + + + assert(cols == mul_size_t(2, rows)); + + if (dir == FORWARD_CYCLE) { + r = rows; + } + else if (dir == BACKWARD_CYCLE) { + r = 2; + } + else { + mpd_err_fatal("swap_halfrows_pow2_c: illegal argument for \"dir\""); + } + + m = cols - 1; + hmax = rows; /* cycles start at odd halfrows */ + dbits = 8 * sizeof *done; + if ((done = mpd_calloc(hmax/(sizeof *done) + 1, sizeof *done)) == NULL) { + return 0; + } + + for (hn = 1; hn <= hmax; hn += 2) { + + if (done[hn/dbits] & mpd_bits[hn%dbits]) { + continue; + } + + readbuf = buf1; writebuf = buf2; + + for (offset = 0; offset < cols/2; offset += b) { + + stride = (offset + b < cols/2) ? b : cols/2-offset; + + hp = matrix + hn*cols/2; + memcpy(readbuf, hp+offset, stride*(sizeof *readbuf)); + pointerswap_c(&readbuf, &writebuf); + + next = mulmod_size_t(hn, r, m); + hp = matrix + next*cols/2; + + while (next != hn) { + + memcpy(readbuf, hp+offset, stride*(sizeof *readbuf)); + memcpy(hp+offset, writebuf, stride*(sizeof *writebuf)); + pointerswap_c(&readbuf, &writebuf); + + done[next/dbits] |= mpd_bits[next%dbits]; + + next = mulmod_size_t(next, r, m); + hp = matrix + next*cols/2; + + } + + memcpy(hp+offset, writebuf, stride*(sizeof *writebuf)); + + done[hn/dbits] |= mpd_bits[hn%dbits]; + } + } + + mpd_free(done); + return 1; +} + +/* In-place transpose of a square matrix */ +static inline void +squaretrans_c(uint8_t *buf, mpd_size_t cols) +{ + uint8_t tmp; + mpd_size_t idest, isrc; + mpd_size_t r, c; + + for (r = 0; r < cols; r++) { + c = r+1; + isrc = r*cols + c; + idest = c*cols + r; + for (c = r+1; c < cols; c++) { + tmp = buf[isrc]; + buf[isrc] = buf[idest]; + buf[idest] = tmp; + isrc += 1; + idest += cols; + } + } +} + +/* + * Transpose 2^n * 2^n matrix. For cache efficiency, the matrix is split into + * square blocks with side length 'SIDE'. First, the blocks are transposed, + * then a square tranposition is done on each individual block. + */ +static void +squaretrans_pow2_c(uint8_t *matrix, mpd_size_t size) +{ + uint8_t buf1[SIDE*SIDE]; + uint8_t buf2[SIDE*SIDE]; + uint8_t *to, *from; + mpd_size_t b = size; + mpd_size_t r, c; + mpd_size_t i; + + while (b > SIDE) b >>= 1; + + for (r = 0; r < size; r += b) { + + for (c = r; c < size; c += b) { + + from = matrix + r*size + c; + to = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += size; + to += b; + } + squaretrans_c(buf1, b); + + if (r == c) { + to = matrix + r*size + c; + from = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + continue; + } + else { + from = matrix + c*size + r; + to = buf2; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += size; + to += b; + } + squaretrans_c(buf2, b); + + to = matrix + c*size + r; + from = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + + to = matrix + r*size + c; + from = buf2; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + } + } + } + +} + +/* + * In-place transposition of a 2^n x 2^n or a 2^n x (2*2^n) + * or a (2*2^n) x 2^n matrix. + */ +static int +transpose_pow2_c(uint8_t *matrix, mpd_size_t rows, mpd_size_t cols) +{ + mpd_size_t size = mul_size_t(rows, cols); + + assert(ispower2(rows)); + assert(ispower2(cols)); + + if (cols == rows) { + squaretrans_pow2_c(matrix, rows); + } + else if (cols == mul_size_t(2, rows)) { + if (!swap_halfrows_pow2_c(matrix, rows, cols, FORWARD_CYCLE)) { + return 0; + } + squaretrans_pow2_c(matrix, rows); + squaretrans_pow2_c(matrix+(size/2), rows); + } + else if (rows == mul_size_t(2, cols)) { + squaretrans_pow2_c(matrix, cols); + squaretrans_pow2_c(matrix+(size/2), cols); + if (!swap_halfrows_pow2_c(matrix, cols, rows, BACKWARD_CYCLE)) { + return 0; + } + } + else { + mpd_err_fatal("transpose_pow2_c: illegal matrix size"); + } + + return 1; +} + + +#include +#define UMOD_ARRAY (1ULL<<28) +#define UCHAR_ARRAY (1ULL<<29) + +/* The faster in-place functions are tested against std_trans(). */ +static int +testit_uint(void (* func)(mpd_uint_t *, mpd_size_t, mpd_size_t), mpd_size_t rows, mpd_size_t cols) +{ + mpd_uint_t *a = NULL, *src = NULL, *dest = NULL; + clock_t start_fast, end_fast, start_std, end_std; + mpd_size_t msize; + mpd_size_t i; + int ret = 1; + + msize = mul_size_t(rows, cols); + if ((a = mpd_alloc(msize, sizeof *a)) == NULL) { + goto error; + } + if ((src = mpd_alloc(msize, sizeof *src)) == NULL) { + goto error; + } + if ((dest = mpd_alloc(msize, sizeof *dest)) == NULL) { + goto error; + } + + for (i = 0; i < msize; i++) { + a[i] = src[i] = random(); + } + + start_std= clock(); + std_trans(dest, src, rows, cols); + end_std= clock(); + + start_fast = clock(); + func(a, rows, cols); + end_fast = clock(); + + for (i = 0; i < msize; i++) { + if (a[i] != dest[i]) { + fprintf(stderr, "FAIL: a[%"PRI_mpd_size_t"] = %"PRI_mpd_size_t + "\tdest[%"PRI_mpd_size_t"] = %"PRI_mpd_size_t"\n", + i, a[i], i, dest[i]); + exit(1); + } + } + + fprintf(stderr, "size: %10"PRI_mpd_size_t"\tstd_trans: %6.2f sec\t " + "in_place_trans: %6.2f sec\n", + msize, + (double)(end_std-start_std)/(double)CLOCKS_PER_SEC, + (double)(end_fast-start_fast)/(double)CLOCKS_PER_SEC); + + +out: + if (a) mpd_free(a); + if (src) mpd_free(src); + if (dest) mpd_free(dest); + return ret; + +error: + ret = 0; + goto out; +} + +/* The faster in-place functions are tested against std_trans(). */ +static int +testit_uchar(void (* func)(uint8_t *, mpd_size_t, mpd_size_t), mpd_size_t rows, mpd_size_t cols) +{ + uint8_t *a = NULL, *src = NULL, *dest = NULL; + clock_t start_fast, end_fast, start_std, end_std; + mpd_size_t msize; + mpd_size_t i; + int ret = 1; + + msize = mul_size_t(rows, cols); + if ((a = mpd_alloc(msize, sizeof *a)) == NULL) { + goto error; + } + if ((src = mpd_alloc(msize, sizeof *src)) == NULL) { + goto error; + } + if ((dest = mpd_alloc(msize, sizeof *dest)) == NULL) { + goto error; + } + + for (i = 0; i < msize; i++) { + a[i] = src[i] = random(); + } + + start_std= clock(); + std_trans_c(dest, src, rows, cols); + end_std= clock(); + + start_fast = clock(); + func(a, rows, cols); + end_fast = clock(); + + for (i = 0; i < msize; i++) { + if (a[i] != dest[i]) { + fprintf(stderr, "FAIL: a[%"PRI_mpd_size_t"] = %d\t" + "dest[%"PRI_mpd_size_t"] = %d\n", + i, a[i], i, dest[i]); + exit(1); + } + } + + fprintf(stderr, "size: %10"PRI_mpd_size_t"\tstd_trans: %6.2f sec\t " + "in_place_trans: %6.2f sec\n", + msize, + (double)(end_std-start_std)/(double)CLOCKS_PER_SEC, + (double)(end_fast-start_fast)/(double)CLOCKS_PER_SEC); + + +out: + if (a) mpd_free(a); + if (src) mpd_free(src); + if (dest) mpd_free(dest); + return ret; + +error: + ret = 0; + goto out; +} + + +#define transfunc_uint (void (*)(mpd_uint_t *, mpd_size_t, mpd_size_t)) +#define transfunc_uchar (void (*)(uint8_t *, mpd_size_t, mpd_size_t)) + + +int main(void) +{ + mpd_size_t rows, cols; + + + fprintf(stderr, "Running test_transpose ... \n"); + + fprintf(stderr, "\n2^n * 2^n mpd_uint_t matrices:\n\n"); + for (rows = 1; mul_size_t(rows, rows) <= UMOD_ARRAY; rows *= 2) { + if (!testit_uint(transfunc_uint transpose_pow2, rows, rows)) { + break; + } + } + + fprintf(stderr, "\n2^n * 2*2^n mpd_uint_t matrices:\n\n"); + for (rows = 8, cols = 16; mul_size_t(rows, cols) <= UMOD_ARRAY; rows *= 2, cols*=2) { + if (!testit_uint(transfunc_uint transpose_pow2, rows, cols)) { + break; + } + } + + fprintf(stderr, "\n2*2^n * 2^n mpd_uint_t matrices:\n\n"); + for (rows = 16, cols = 8; mul_size_t(rows, cols) <= UMOD_ARRAY; rows *= 2, cols*=2) { + if (!testit_uint(transfunc_uint transpose_pow2, rows, cols)) { + break; + } + } + + + fprintf(stderr, "\n2^n * 2^n uint8_t matrices:\n\n"); + for (rows = 1; mul_size_t(rows, rows) <= UCHAR_ARRAY; rows *= 2) { + if (!testit_uchar(transfunc_uchar transpose_pow2_c, rows, rows)) { + break; + } + } + + fprintf(stderr, "\n2^n * 2*2^n uint8_t matrices:\n\n"); + for (rows = 8, cols = 16; mul_size_t(rows, cols) <= UCHAR_ARRAY; rows *= 2, cols*=2) { + if (!testit_uchar(transfunc_uchar transpose_pow2_c, rows, cols)) { + break; + } + } + + fprintf(stderr, "\n2*2^n * 2^n uint8_t matrices:\n\n"); + for (rows = 16, cols = 8; mul_size_t(rows, cols) <= UCHAR_ARRAY; rows *= 2, cols*=2) { + if (!testit_uchar(transfunc_uchar transpose_pow2_c, rows, cols)) { + break; + } + } + + fprintf(stderr, "\ntest_transpose: PASS\n\n"); + + return 0; +} + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/testdata_dist/baseconv.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/testdata_dist/baseconv.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,406 @@ +Precision: 425000000 +Maxexponent: 425000000 +Minexponent: -425000000 + + +bconv0 baseconv 0 -> 0 +bconv1 baseconv 1 -> 1 +bconv2 baseconv 2 -> 2 +bconv3 baseconv 3 -> 3 +bconv4 baseconv 4 -> 4 +bconv5 baseconv 5 -> 5 +bconv6 baseconv 6 -> 6 +bconv7 baseconv 7 -> 7 +bconv8 baseconv 8 -> 8 +bconv9 baseconv 9 -> 9 +bconv10 baseconv 10 -> 10 +bconv11 baseconv 11 -> 11 +bconv12 baseconv 12 -> 12 +bconv13 baseconv 13 -> 13 +bconv14 baseconv 14 -> 14 +bconv15 baseconv 15 -> 15 +bconv16 baseconv 16 -> 16 +bconv17 baseconv 17 -> 17 +bconv18 baseconv 18 -> 18 +bconv19 baseconv 19 -> 19 +bconv20 baseconv 20 -> 20 +bconv21 baseconv 21 -> 21 +bconv22 baseconv 22 -> 22 +bconv23 baseconv 23 -> 23 +bconv24 baseconv 24 -> 24 +bconv25 baseconv 25 -> 25 +bconv26 baseconv 26 -> 26 +bconv27 baseconv 27 -> 27 +bconv28 baseconv 28 -> 28 +bconv29 baseconv 29 -> 29 +bconv30 baseconv 30 -> 30 +bconv31 baseconv 31 -> 31 +bconv32 baseconv 32 -> 32 +bconv33 baseconv 33 -> 33 +bconv34 baseconv 34 -> 34 +bconv35 baseconv 35 -> 35 +bconv36 baseconv 36 -> 36 +bconv37 baseconv 37 -> 37 +bconv38 baseconv 38 -> 38 +bconv39 baseconv 39 -> 39 +bconv40 baseconv 40 -> 40 +bconv41 baseconv 41 -> 41 +bconv42 baseconv 42 -> 42 +bconv43 baseconv 43 -> 43 +bconv44 baseconv 44 -> 44 +bconv45 baseconv 45 -> 45 +bconv46 baseconv 46 -> 46 +bconv47 baseconv 47 -> 47 +bconv48 baseconv 48 -> 48 +bconv49 baseconv 49 -> 49 +bconv50 baseconv 50 -> 50 +bconv51 baseconv 51 -> 51 +bconv52 baseconv 52 -> 52 +bconv53 baseconv 53 -> 53 +bconv54 baseconv 54 -> 54 +bconv55 baseconv 55 -> 55 +bconv56 baseconv 56 -> 56 +bconv57 baseconv 57 -> 57 +bconv58 baseconv 58 -> 58 +bconv59 baseconv 59 -> 59 +bconv60 baseconv 60 -> 60 +bconv61 baseconv 61 -> 61 +bconv62 baseconv 62 -> 62 +bconv63 baseconv 63 -> 63 +bconv64 baseconv 64 -> 64 +bconv65 baseconv 65 -> 65 +bconv66 baseconv 66 -> 66 +bconv67 baseconv 67 -> 67 +bconv68 baseconv 68 -> 68 +bconv69 baseconv 69 -> 69 +bconv70 baseconv 70 -> 70 +bconv71 baseconv 71 -> 71 +bconv72 baseconv 72 -> 72 +bconv73 baseconv 73 -> 73 +bconv74 baseconv 74 -> 74 +bconv75 baseconv 75 -> 75 +bconv76 baseconv 76 -> 76 +bconv77 baseconv 77 -> 77 +bconv78 baseconv 78 -> 78 +bconv79 baseconv 79 -> 79 +bconv80 baseconv 80 -> 80 +bconv81 baseconv 81 -> 81 +bconv82 baseconv 82 -> 82 +bconv83 baseconv 83 -> 83 +bconv84 baseconv 84 -> 84 +bconv85 baseconv 85 -> 85 +bconv86 baseconv 86 -> 86 +bconv87 baseconv 87 -> 87 +bconv88 baseconv 88 -> 88 +bconv89 baseconv 89 -> 89 +bconv90 baseconv 90 -> 90 +bconv91 baseconv 91 -> 91 +bconv92 baseconv 92 -> 92 +bconv93 baseconv 93 -> 93 +bconv94 baseconv 94 -> 94 +bconv95 baseconv 95 -> 95 +bconv96 baseconv 96 -> 96 +bconv97 baseconv 97 -> 97 +bconv98 baseconv 98 -> 98 +bconv99 baseconv 99 -> 99 +bconv0 baseconv 1 -> 1 +bconv1 baseconv 10 -> 10 +bconv2 baseconv 100 -> 100 +bconv3 baseconv 1000 -> 1000 +bconv4 baseconv 10000 -> 10000 +bconv5 baseconv 100000 -> 100000 +bconv6 baseconv 1000000 -> 1000000 +bconv7 baseconv 10000000 -> 10000000 +bconv8 baseconv 100000000 -> 100000000 +bconv9 baseconv 1000000000 -> 1000000000 +bconv10 baseconv 10000000000 -> 10000000000 +bconv11 baseconv 100000000000 -> 100000000000 +bconv12 baseconv 1000000000000 -> 1000000000000 +bconv13 baseconv 10000000000000 -> 10000000000000 +bconv14 baseconv 100000000000000 -> 100000000000000 +bconv15 baseconv 1000000000000000 -> 1000000000000000 +bconv16 baseconv 10000000000000000 -> 10000000000000000 +bconv17 baseconv 100000000000000000 -> 100000000000000000 +bconv18 baseconv 1000000000000000000 -> 1000000000000000000 +bconv19 baseconv 10000000000000000000 -> 10000000000000000000 +bconv20 baseconv 100000000000000000000 -> 100000000000000000000 +bconv21 baseconv 1000000000000000000000 -> 1000000000000000000000 +bconv22 baseconv 10000000000000000000000 -> 10000000000000000000000 +bconv23 baseconv 100000000000000000000000 -> 100000000000000000000000 +bconv24 baseconv 1000000000000000000000000 -> 1000000000000000000000000 +bconv25 baseconv 10000000000000000000000000 -> 10000000000000000000000000 +bconv26 baseconv 100000000000000000000000000 -> 100000000000000000000000000 +bconv27 baseconv 1000000000000000000000000000 -> 1000000000000000000000000000 +bconv28 baseconv 10000000000000000000000000000 -> 10000000000000000000000000000 +bconv29 baseconv 100000000000000000000000000000 -> 100000000000000000000000000000 +bconv30 baseconv 1000000000000000000000000000000 -> 1000000000000000000000000000000 +bconv31 baseconv 10000000000000000000000000000000 -> 10000000000000000000000000000000 +bconv32 baseconv 100000000000000000000000000000000 -> 100000000000000000000000000000000 +bconv33 baseconv 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 +bconv34 baseconv 10000000000000000000000000000000000 -> 10000000000000000000000000000000000 +bconv35 baseconv 100000000000000000000000000000000000 -> 100000000000000000000000000000000000 +bconv36 baseconv 1000000000000000000000000000000000000 -> 1000000000000000000000000000000000000 +bconv37 baseconv 10000000000000000000000000000000000000 -> 10000000000000000000000000000000000000 +bconv38 baseconv 100000000000000000000000000000000000000 -> 100000000000000000000000000000000000000 +bconv39 baseconv 1000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000 +bconv40 baseconv 10000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000 +bconv41 baseconv 100000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000 +bconv42 baseconv 1000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000 +bconv43 baseconv 10000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000 +bconv44 baseconv 100000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000 +bconv45 baseconv 1000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000 +bconv46 baseconv 10000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000 +bconv47 baseconv 100000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000 +bconv48 baseconv 1000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000 +bconv49 baseconv 10000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000 +bconv50 baseconv 100000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000 +bconv51 baseconv 1000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000 +bconv52 baseconv 10000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000 +bconv53 baseconv 100000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000 +bconv54 baseconv 1000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000 +bconv55 baseconv 10000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000 +bconv56 baseconv 100000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000 +bconv57 baseconv 1000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000 +bconv58 baseconv 10000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000 +bconv59 baseconv 100000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000 +bconv60 baseconv 1000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000 +bconv61 baseconv 10000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000 +bconv62 baseconv 100000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000 +bconv63 baseconv 1000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000 +bconv64 baseconv 10000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000 +bconv65 baseconv 100000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000 +bconv66 baseconv 1000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000 +bconv67 baseconv 10000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000 +bconv68 baseconv 100000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000 +bconv69 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000 +bconv70 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000 +bconv71 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000 +bconv72 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000 +bconv73 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000 +bconv74 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000 +bconv75 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv76 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv77 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv78 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv79 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv80 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv81 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv82 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv83 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv84 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv85 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv86 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv87 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv88 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv89 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv90 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv91 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv92 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv93 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv94 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv95 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv96 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv97 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv98 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv99 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv0 baseconv 1 -> 1 +bconv1 baseconv 2 -> 2 +bconv2 baseconv 4 -> 4 +bconv3 baseconv 8 -> 8 +bconv4 baseconv 16 -> 16 +bconv5 baseconv 32 -> 32 +bconv6 baseconv 64 -> 64 +bconv7 baseconv 128 -> 128 +bconv8 baseconv 256 -> 256 +bconv9 baseconv 512 -> 512 +bconv10 baseconv 1024 -> 1024 +bconv11 baseconv 2048 -> 2048 +bconv12 baseconv 4096 -> 4096 +bconv13 baseconv 8192 -> 8192 +bconv14 baseconv 16384 -> 16384 +bconv15 baseconv 32768 -> 32768 +bconv16 baseconv 65536 -> 65536 +bconv17 baseconv 131072 -> 131072 +bconv18 baseconv 262144 -> 262144 +bconv19 baseconv 524288 -> 524288 +bconv20 baseconv 1048576 -> 1048576 +bconv21 baseconv 2097152 -> 2097152 +bconv22 baseconv 4194304 -> 4194304 +bconv23 baseconv 8388608 -> 8388608 +bconv24 baseconv 16777216 -> 16777216 +bconv25 baseconv 33554432 -> 33554432 +bconv26 baseconv 67108864 -> 67108864 +bconv27 baseconv 134217728 -> 134217728 +bconv28 baseconv 268435456 -> 268435456 +bconv29 baseconv 536870912 -> 536870912 +bconv30 baseconv 1073741824 -> 1073741824 +bconv31 baseconv 2147483648 -> 2147483648 +bconv32 baseconv 4294967296 -> 4294967296 +bconv33 baseconv 8589934592 -> 8589934592 +bconv34 baseconv 17179869184 -> 17179869184 +bconv35 baseconv 34359738368 -> 34359738368 +bconv36 baseconv 68719476736 -> 68719476736 +bconv37 baseconv 137438953472 -> 137438953472 +bconv38 baseconv 274877906944 -> 274877906944 +bconv39 baseconv 549755813888 -> 549755813888 +bconv40 baseconv 1099511627776 -> 1099511627776 +bconv41 baseconv 2199023255552 -> 2199023255552 +bconv42 baseconv 4398046511104 -> 4398046511104 +bconv43 baseconv 8796093022208 -> 8796093022208 +bconv44 baseconv 17592186044416 -> 17592186044416 +bconv45 baseconv 35184372088832 -> 35184372088832 +bconv46 baseconv 70368744177664 -> 70368744177664 +bconv47 baseconv 140737488355328 -> 140737488355328 +bconv48 baseconv 281474976710656 -> 281474976710656 +bconv49 baseconv 562949953421312 -> 562949953421312 +bconv50 baseconv 1125899906842624 -> 1125899906842624 +bconv51 baseconv 2251799813685248 -> 2251799813685248 +bconv52 baseconv 4503599627370496 -> 4503599627370496 +bconv53 baseconv 9007199254740992 -> 9007199254740992 +bconv54 baseconv 18014398509481984 -> 18014398509481984 +bconv55 baseconv 36028797018963968 -> 36028797018963968 +bconv56 baseconv 72057594037927936 -> 72057594037927936 +bconv57 baseconv 144115188075855872 -> 144115188075855872 +bconv58 baseconv 288230376151711744 -> 288230376151711744 +bconv59 baseconv 576460752303423488 -> 576460752303423488 +bconv60 baseconv 1152921504606846976 -> 1152921504606846976 +bconv61 baseconv 2305843009213693952 -> 2305843009213693952 +bconv62 baseconv 4611686018427387904 -> 4611686018427387904 +bconv63 baseconv 9223372036854775808 -> 9223372036854775808 +bconv64 baseconv 18446744073709551616 -> 18446744073709551616 +bconv65 baseconv 36893488147419103232 -> 36893488147419103232 +bconv66 baseconv 73786976294838206464 -> 73786976294838206464 +bconv67 baseconv 147573952589676412928 -> 147573952589676412928 +bconv68 baseconv 295147905179352825856 -> 295147905179352825856 +bconv69 baseconv 590295810358705651712 -> 590295810358705651712 +bconv70 baseconv 1180591620717411303424 -> 1180591620717411303424 +bconv71 baseconv 2361183241434822606848 -> 2361183241434822606848 +bconv72 baseconv 4722366482869645213696 -> 4722366482869645213696 +bconv73 baseconv 9444732965739290427392 -> 9444732965739290427392 +bconv74 baseconv 18889465931478580854784 -> 18889465931478580854784 +bconv75 baseconv 37778931862957161709568 -> 37778931862957161709568 +bconv76 baseconv 75557863725914323419136 -> 75557863725914323419136 +bconv77 baseconv 151115727451828646838272 -> 151115727451828646838272 +bconv78 baseconv 302231454903657293676544 -> 302231454903657293676544 +bconv79 baseconv 604462909807314587353088 -> 604462909807314587353088 +bconv80 baseconv 1208925819614629174706176 -> 1208925819614629174706176 +bconv81 baseconv 2417851639229258349412352 -> 2417851639229258349412352 +bconv82 baseconv 4835703278458516698824704 -> 4835703278458516698824704 +bconv83 baseconv 9671406556917033397649408 -> 9671406556917033397649408 +bconv84 baseconv 19342813113834066795298816 -> 19342813113834066795298816 +bconv85 baseconv 38685626227668133590597632 -> 38685626227668133590597632 +bconv86 baseconv 77371252455336267181195264 -> 77371252455336267181195264 +bconv87 baseconv 154742504910672534362390528 -> 154742504910672534362390528 +bconv88 baseconv 309485009821345068724781056 -> 309485009821345068724781056 +bconv89 baseconv 618970019642690137449562112 -> 618970019642690137449562112 +bconv90 baseconv 1237940039285380274899124224 -> 1237940039285380274899124224 +bconv91 baseconv 2475880078570760549798248448 -> 2475880078570760549798248448 +bconv92 baseconv 4951760157141521099596496896 -> 4951760157141521099596496896 +bconv93 baseconv 9903520314283042199192993792 -> 9903520314283042199192993792 +bconv94 baseconv 19807040628566084398385987584 -> 19807040628566084398385987584 +bconv95 baseconv 39614081257132168796771975168 -> 39614081257132168796771975168 +bconv96 baseconv 79228162514264337593543950336 -> 79228162514264337593543950336 +bconv97 baseconv 158456325028528675187087900672 -> 158456325028528675187087900672 +bconv98 baseconv 316912650057057350374175801344 -> 316912650057057350374175801344 +bconv99 baseconv 633825300114114700748351602688 -> 633825300114114700748351602688 +bconv0 baseconv 6491583314170016651960765600882241266678157369209968827293693478920422642346481531587856957822735272176502825702006352105971780102301850294086322213302322664347040715971849030973951339424556362307717779218076765556369695864662049459295802567800242575763709155319451802637688617894116374536041436438553255088598018340823760747136302987269567918733314283597905508534002559098376607421780045267678614483953523059894321696806071222585741217040857630480460199343123995957686828057955055817822471099217703508178497070025157348312770738150312853321283542425686124704814692054430786648641233918001350846520921868542146706115842138638604035732907440841257662610929924526023402966747601951086655344453076372535059350343585534773253557333850960007635423214139168749145966886108704409988193837007517140336251823622424393985492337611968149148379319670111733083686958890371624812909716895645978398587519379218716817321602447554096503954940038891579617470595230445818222826319325339987706275220382824180906767151452 -> 6491583314170016651960765600882241266678157369209968827293693478920422642346481531587856957822735272176502825702006352105971780102301850294086322213302322664347040715971849030973951339424556362307717779218076765556369695864662049459295802567800242575763709155319451802637688617894116374536041436438553255088598018340823760747136302987269567918733314283597905508534002559098376607421780045267678614483953523059894321696806071222585741217040857630480460199343123995957686828057955055817822471099217703508178497070025157348312770738150312853321283542425686124704814692054430786648641233918001350846520921868542146706115842138638604035732907440841257662610929924526023402966747601951086655344453076372535059350343585534773253557333850960007635423214139168749145966886108704409988193837007517140336251823622424393985492337611968149148379319670111733083686958890371624812909716895645978398587519379218716817321602447554096503954940038891579617470595230445818222826319325339987706275220382824180906767151452 +bconv1 baseconv 4111279081475686589703492345622963707727266174997802625882189307956954153902192710126460741811610238853328696116227406850135727953626340565034219448900881683684883608691229521286519078350025357285261827715383654277407876218513507584549916689827258877301790157273506446715760963508498885469258966198334440893694548555727773173147536093210593427724829596885869552273915851494583428170108447618828785448908040727858462941432613673636683856145276420428010154140577133784426034632981299516444125975607921808604605790479877488093002169388974010936725862921662219877488692069778006926757706085858986430479679228381497950744698172364364354932687043076968499766229181355411400736380404082838591457713447659358799143029381684625664202305335191893537522455528567800748632454649751212272508551793617234430584411216663042025939557613620312367095302867344424251051570178081633447563541458825805694563136971975316378916225952125882461081260669069949625871045264890932276381748349997938447804782519245868279275475352 -> 4111279081475686589703492345622963707727266174997802625882189307956954153902192710126460741811610238853328696116227406850135727953626340565034219448900881683684883608691229521286519078350025357285261827715383654277407876218513507584549916689827258877301790157273506446715760963508498885469258966198334440893694548555727773173147536093210593427724829596885869552273915851494583428170108447618828785448908040727858462941432613673636683856145276420428010154140577133784426034632981299516444125975607921808604605790479877488093002169388974010936725862921662219877488692069778006926757706085858986430479679228381497950744698172364364354932687043076968499766229181355411400736380404082838591457713447659358799143029381684625664202305335191893537522455528567800748632454649751212272508551793617234430584411216663042025939557613620312367095302867344424251051570178081633447563541458825805694563136971975316378916225952125882461081260669069949625871045264890932276381748349997938447804782519245868279275475352 +bconv2 baseconv 9600797335332092235690111207994089049375445106935598944380399485573174822825377869166990414613498587852823509452222008409000712400416624826815271770380383263075263047060384888381593154421862776767708719168600083946522763268546178543377340193031912449141416981269793084078728504576654693442409980856791320701417892396983663041850360754332772552495358615356273962089696011050766282398256234034836982339869960509240914982904785433483583973779742981292295206102251801464969120684108541500751525623824759490644283465196386670102843548273794500224788944449199133697628700050968582610902336660579177656621845710789382201067989946160402580947720168315431874321966668002843698612531052801151926147468971176444247635962008643173744974022961891904559751410589796142286323691985479739224838423258970926444135643916606765521543073389721638261079195805301217191632151706520777941367381340618851814311534541124394700069511419513100760137605926896495962368746752884289862024927775256038956312359544761436433461272791 -> 9600797335332092235690111207994089049375445106935598944380399485573174822825377869166990414613498587852823509452222008409000712400416624826815271770380383263075263047060384888381593154421862776767708719168600083946522763268546178543377340193031912449141416981269793084078728504576654693442409980856791320701417892396983663041850360754332772552495358615356273962089696011050766282398256234034836982339869960509240914982904785433483583973779742981292295206102251801464969120684108541500751525623824759490644283465196386670102843548273794500224788944449199133697628700050968582610902336660579177656621845710789382201067989946160402580947720168315431874321966668002843698612531052801151926147468971176444247635962008643173744974022961891904559751410589796142286323691985479739224838423258970926444135643916606765521543073389721638261079195805301217191632151706520777941367381340618851814311534541124394700069511419513100760137605926896495962368746752884289862024927775256038956312359544761436433461272791 +bconv3 baseconv 7391857188750838688926825764227067389520943548616283242202404754917931318372010666837031038390661458746271247088740990557650130784333324556842771423189123747055115965433981180219003780005468158937696544938642720016972150003379294733004464283339354283365767131403893643742260321585901979112044055415111875550468044920846892656160098835257261152341044149358306283151659341298340885383066792459518760909303200893733500565570419257141176691352501677872104603472695149194708141862009989045046069217976272761230973716640970061622460016952371487527884064643283124270612278205563307685817019338916023562360693679289303486203686892776512370440999449101169159821841240580776177313468492225025491786937102252424895258707986078084587381798744747683723049832887829922656062251228913742924056046062121265361299904402256389160514737937836491646159281983519255516145101733524659649030957407224920123274864377710913023997875614696779896852423601748304484143171016205991876729973271943704553053974709589492181423319279 -> 7391857188750838688926825764227067389520943548616283242202404754917931318372010666837031038390661458746271247088740990557650130784333324556842771423189123747055115965433981180219003780005468158937696544938642720016972150003379294733004464283339354283365767131403893643742260321585901979112044055415111875550468044920846892656160098835257261152341044149358306283151659341298340885383066792459518760909303200893733500565570419257141176691352501677872104603472695149194708141862009989045046069217976272761230973716640970061622460016952371487527884064643283124270612278205563307685817019338916023562360693679289303486203686892776512370440999449101169159821841240580776177313468492225025491786937102252424895258707986078084587381798744747683723049832887829922656062251228913742924056046062121265361299904402256389160514737937836491646159281983519255516145101733524659649030957407224920123274864377710913023997875614696779896852423601748304484143171016205991876729973271943704553053974709589492181423319279 +bconv4 baseconv 3810312944809156037330447947531565812222415566539036090576331099409637782665851600787099319843033866135488042538934917365940820340820797549748098901796010122900459983471249151829946082755744261111178419062574006617997092675569795239059680479946127950791244158625233081723752938714860889011144827373565865238321030098317014339335278466740284557736877680511037830476589248152692553095292251806612855373747175365425313772655605953292128342938903780907264891639800822117466494476655947032309532878099472930243933079173197542350967400374146431236761555027300506153270803473159970224896568034239437018861021357795008789408604622410923982351692684775466942939834767808784946292286891716007860849129275614267267226400533680419578008432029240296583121485171389459147456717015360473453605523544250780642711790535419038894134289988861827807918994395533473575529508651366584344695782740350763054033994327912466983158199068654685987490986855982699908908070024908329452891704114804725493591316839437780825369503285 -> 3810312944809156037330447947531565812222415566539036090576331099409637782665851600787099319843033866135488042538934917365940820340820797549748098901796010122900459983471249151829946082755744261111178419062574006617997092675569795239059680479946127950791244158625233081723752938714860889011144827373565865238321030098317014339335278466740284557736877680511037830476589248152692553095292251806612855373747175365425313772655605953292128342938903780907264891639800822117466494476655947032309532878099472930243933079173197542350967400374146431236761555027300506153270803473159970224896568034239437018861021357795008789408604622410923982351692684775466942939834767808784946292286891716007860849129275614267267226400533680419578008432029240296583121485171389459147456717015360473453605523544250780642711790535419038894134289988861827807918994395533473575529508651366584344695782740350763054033994327912466983158199068654685987490986855982699908908070024908329452891704114804725493591316839437780825369503285 +bconv5 baseconv 581664078828729394527814192141359952532315020374250650573514758865214035639697481467230138669155013681012285411141892582082940480015406380331044560139168192579068496210381226760275838011032288362321503710350917701271978881023760158155636167413308080567924335721397083086345069663466869008218332774078848618930452320633863085132519051664743279245782924386393783831350980873582281751070154892523902632342109872655636899945710409743770833827628787430788697901131193972931115008142992235521172398754458742331951303042997175644050805744963227496623814654782953338980510324494649885655092311791766190181848805492595062829358056724308720104246455161400109405757805114773952048173975404207567349809495261755140122408322404970089371408815604916043747303955412070895876264678544299565228647120386814322745272992396641738110564515816933340349465146535524257261196750271377184644939359494408817796743968138159504903166545968931680314836698502322818795297311358261187531528463383487383639163344512182961974823199 -> 581664078828729394527814192141359952532315020374250650573514758865214035639697481467230138669155013681012285411141892582082940480015406380331044560139168192579068496210381226760275838011032288362321503710350917701271978881023760158155636167413308080567924335721397083086345069663466869008218332774078848618930452320633863085132519051664743279245782924386393783831350980873582281751070154892523902632342109872655636899945710409743770833827628787430788697901131193972931115008142992235521172398754458742331951303042997175644050805744963227496623814654782953338980510324494649885655092311791766190181848805492595062829358056724308720104246455161400109405757805114773952048173975404207567349809495261755140122408322404970089371408815604916043747303955412070895876264678544299565228647120386814322745272992396641738110564515816933340349465146535524257261196750271377184644939359494408817796743968138159504903166545968931680314836698502322818795297311358261187531528463383487383639163344512182961974823199 +bconv6 baseconv 1597224394916957426933399884230583612104639862888511483918331543496001143084986596238268750856342059758559950609796869219361462753282519959227713376793165082148966467883242625003972828290211442846872783637563675925041812657465357267277979689805945554583733983793325297137473150872901207156306867197974234556666602743077351159781049142721111157102531109180568776365878222621157306803316710993369377551251056075978367047213207196276191716640136792208869116611017117779262947086537506688356841395763194316506751331411834065910515447193074504764739885052789214271633128249195002432841039680256131301866272632771764655682685319651680961500150302937998402225355396697376598748043777520517006966952703804972780573860280435964439028988227174501330209270744041587475823060881868285536437930908473024817379326179043481910640821923730555951877575062410803010077992810632578743139777895363484868415028605858151220981103015288693057936012042461201439738699857479012040063169558179733743022763535724129623801710174 -> 1597224394916957426933399884230583612104639862888511483918331543496001143084986596238268750856342059758559950609796869219361462753282519959227713376793165082148966467883242625003972828290211442846872783637563675925041812657465357267277979689805945554583733983793325297137473150872901207156306867197974234556666602743077351159781049142721111157102531109180568776365878222621157306803316710993369377551251056075978367047213207196276191716640136792208869116611017117779262947086537506688356841395763194316506751331411834065910515447193074504764739885052789214271633128249195002432841039680256131301866272632771764655682685319651680961500150302937998402225355396697376598748043777520517006966952703804972780573860280435964439028988227174501330209270744041587475823060881868285536437930908473024817379326179043481910640821923730555951877575062410803010077992810632578743139777895363484868415028605858151220981103015288693057936012042461201439738699857479012040063169558179733743022763535724129623801710174 +bconv7 baseconv 8494537335500467845803017335439749194665866425449590956859098829595307480455197439262576939094936789928457616118793601350107874469658143763506353198066447541086966098488178696658135213011285714070905546789142098294193815169056323095877646239449646656475541914581502280064977313970533084534992650999132235177084657865857250546997090536269712635726607992754108422522776214712915728655939119658726268871580936369466626718860739593731373436504240887061163908806291218460495488594599164551031312072256435775318731369167697540977550724973584789209120282066365833877498276544998095547772407620241766022441746081249003338436374014851293125970633876119079943143591658862800994849059573686889159389176733059003153379233034613816659792612350870850962288977481684383189663339739491881038826218412717657583061136813919073865983955302240374321847921699285608519193376869374796534203431191622133490411113868972789018853758277298883278108604215524686573147875405580681233813375229835369597122930336579071659011305493 -> 8494537335500467845803017335439749194665866425449590956859098829595307480455197439262576939094936789928457616118793601350107874469658143763506353198066447541086966098488178696658135213011285714070905546789142098294193815169056323095877646239449646656475541914581502280064977313970533084534992650999132235177084657865857250546997090536269712635726607992754108422522776214712915728655939119658726268871580936369466626718860739593731373436504240887061163908806291218460495488594599164551031312072256435775318731369167697540977550724973584789209120282066365833877498276544998095547772407620241766022441746081249003338436374014851293125970633876119079943143591658862800994849059573686889159389176733059003153379233034613816659792612350870850962288977481684383189663339739491881038826218412717657583061136813919073865983955302240374321847921699285608519193376869374796534203431191622133490411113868972789018853758277298883278108604215524686573147875405580681233813375229835369597122930336579071659011305493 +bconv8 baseconv 2919929564262280016326432682972161358466398665016186667001143486624361781190367706444851840197851079596727038093730712199821599251718299339847712563214201624995683686942329198072246518178490343968248165061243767218811498814159781475518688080319940902866549541615061520458199757996522296964801679163389000871217341745667749351644081047030377927111638883433437694480358033912683425282448334012389020309749763957841286214328790748178789279825754956979292994543580131252034787858035703411486731741680089897128428834711018833010096571422396443329799706146308213505878878844626004235264807575864007093926619480833541324015063471078104056420326915116947401067109851932075196138030983716126816420531224588360189015976494005035758026314038292977171140049459616389565699576337363391835485410520435322339155656601552455327045876615610928759606256719025379763038966556553425044449074741425173631085926651516889855508069207136099220288203380161521368983721439855498436947709681774705358138025820342312716902518601 -> 2919929564262280016326432682972161358466398665016186667001143486624361781190367706444851840197851079596727038093730712199821599251718299339847712563214201624995683686942329198072246518178490343968248165061243767218811498814159781475518688080319940902866549541615061520458199757996522296964801679163389000871217341745667749351644081047030377927111638883433437694480358033912683425282448334012389020309749763957841286214328790748178789279825754956979292994543580131252034787858035703411486731741680089897128428834711018833010096571422396443329799706146308213505878878844626004235264807575864007093926619480833541324015063471078104056420326915116947401067109851932075196138030983716126816420531224588360189015976494005035758026314038292977171140049459616389565699576337363391835485410520435322339155656601552455327045876615610928759606256719025379763038966556553425044449074741425173631085926651516889855508069207136099220288203380161521368983721439855498436947709681774705358138025820342312716902518601 +bconv9 baseconv 4443626716871286334620487546377151789025176693244491882959436724484366603768034884502489633564660833009856731580646131411675319919882017589877506937868448502406334198744937656638946567127023414568573508211760000932627934342820738148640158145395011152865009882761742036055119760224421358744931836393477713536940027313145741576813447418061374889876687509017855968575104732154582395247029091962791165645622637986551867577275463143508143180769914404151217527449357643870088881632182984619175942747964816977170294685829354832687433338227420239642880904971272968415767253933179473869456786463849682399363799880300575817039352752950976714029419412544885511510558593153484682012385603963509568541509714291147578741700793254604782043773003984171568431334016620128211596703726226281001856083733522300364401741811461550998767957058404960176412547675707687469107620763960960216261711509428754701027358761185791498601011310619603375093901126951607586513180349052831443595256419965684342691421793872592561337361799 -> 4443626716871286334620487546377151789025176693244491882959436724484366603768034884502489633564660833009856731580646131411675319919882017589877506937868448502406334198744937656638946567127023414568573508211760000932627934342820738148640158145395011152865009882761742036055119760224421358744931836393477713536940027313145741576813447418061374889876687509017855968575104732154582395247029091962791165645622637986551867577275463143508143180769914404151217527449357643870088881632182984619175942747964816977170294685829354832687433338227420239642880904971272968415767253933179473869456786463849682399363799880300575817039352752950976714029419412544885511510558593153484682012385603963509568541509714291147578741700793254604782043773003984171568431334016620128211596703726226281001856083733522300364401741811461550998767957058404960176412547675707687469107620763960960216261711509428754701027358761185791498601011310619603375093901126951607586513180349052831443595256419965684342691421793872592561337361799 +bconv10 baseconv 1379983260050275126662040280723604646692370455950839443636659233046708221508635523843245624754639895760158203939809524597138754045206863299402250888874724022255259118287086780799548920169691742269370474055931677320146112194021520434033403978884513204044886206979544743500199027444529245822948046518453462669157068562264135035866638320311606268725356006573505790752667952838845733950512592079864899075956727747469838881620875654541649015267766468157336998534993076189129919860717264208060443550512004946985594435836401146342820230029829255242839955703978787909712609008504253997989141168796241758138191509829848394288740719759670849184179448070838433146539972380087100607013490138311203014379148698312164236000668592466549171268146190896785659450024963132392937234670239232438182458692716451533268779528479850535110396263068820233830083290801990160104456027045411885593084907281946832353953660620733435160429868604053553016810703677982791127756958214547870412106647432595422414453204760607868194877004 -> 1379983260050275126662040280723604646692370455950839443636659233046708221508635523843245624754639895760158203939809524597138754045206863299402250888874724022255259118287086780799548920169691742269370474055931677320146112194021520434033403978884513204044886206979544743500199027444529245822948046518453462669157068562264135035866638320311606268725356006573505790752667952838845733950512592079864899075956727747469838881620875654541649015267766468157336998534993076189129919860717264208060443550512004946985594435836401146342820230029829255242839955703978787909712609008504253997989141168796241758138191509829848394288740719759670849184179448070838433146539972380087100607013490138311203014379148698312164236000668592466549171268146190896785659450024963132392937234670239232438182458692716451533268779528479850535110396263068820233830083290801990160104456027045411885593084907281946832353953660620733435160429868604053553016810703677982791127756958214547870412106647432595422414453204760607868194877004 +bconv11 baseconv 4448004345146142785629745920492406921764649218759123133036614841100463437011629993211230868726792557532585712700069142158344250332516149356892632985225868080334248588754780661656860500055366984154135010009885132356335418054751384205941100979013354786442763261683125776734514137006625850548304559910700088731913048374843428977968141423787708919133001100785192080257260526304127630707133028535275417603792702320876796709784655885681728626937916613857114266255524165487485164014078045502117716030363584390173296598551817990743667505702424160524751501993088051681468935089580937626823822269740730045193354394033094248754052088555769437778526886414858399214151748299570338391080383194414095504457700964670658371471938937962752629062102133111135965110654972651388800160857073847017908923803154218943527538354613400975236208341063327905151072247074453326667566166621560422749442530002459716596855708664719076429294913819527715642829015343357903395969762624289808091545969969680229018107472919740236991190584 -> 4448004345146142785629745920492406921764649218759123133036614841100463437011629993211230868726792557532585712700069142158344250332516149356892632985225868080334248588754780661656860500055366984154135010009885132356335418054751384205941100979013354786442763261683125776734514137006625850548304559910700088731913048374843428977968141423787708919133001100785192080257260526304127630707133028535275417603792702320876796709784655885681728626937916613857114266255524165487485164014078045502117716030363584390173296598551817990743667505702424160524751501993088051681468935089580937626823822269740730045193354394033094248754052088555769437778526886414858399214151748299570338391080383194414095504457700964670658371471938937962752629062102133111135965110654972651388800160857073847017908923803154218943527538354613400975236208341063327905151072247074453326667566166621560422749442530002459716596855708664719076429294913819527715642829015343357903395969762624289808091545969969680229018107472919740236991190584 +bconv12 baseconv 2675411530661697972430852898801661681502698725601172571530571267139305266067068990605579384929027908364303215846434929394554247086553392279476479296855434807079041303955261516583368959279253834202496061281854706711543327317843903215099744408470007033253076115472469649170930867914277417055267503051837522236460404514404931182596686375579480627613466011047745930273491508669951618778617997711861313935873877372750290889770810876122106979789226450975363691873070029146697956460040693676380099931213890120405670441375528776705152524091709217687625488405936113224802045838772147304101625714510665782464565037104478588470643266375927226542688313423898351945881149049810440655006623442314767290461020158407077494109406746809495626537933971612104303391508777961139105967191744574497198431310802821784957383741617925062521191542542344000749453787214577830269038984475801552098030692122315658253829545295267160142397789592713359314510135489102715798977500916690425600110311037282039995237351296286394154000516 -> 2675411530661697972430852898801661681502698725601172571530571267139305266067068990605579384929027908364303215846434929394554247086553392279476479296855434807079041303955261516583368959279253834202496061281854706711543327317843903215099744408470007033253076115472469649170930867914277417055267503051837522236460404514404931182596686375579480627613466011047745930273491508669951618778617997711861313935873877372750290889770810876122106979789226450975363691873070029146697956460040693676380099931213890120405670441375528776705152524091709217687625488405936113224802045838772147304101625714510665782464565037104478588470643266375927226542688313423898351945881149049810440655006623442314767290461020158407077494109406746809495626537933971612104303391508777961139105967191744574497198431310802821784957383741617925062521191542542344000749453787214577830269038984475801552098030692122315658253829545295267160142397789592713359314510135489102715798977500916690425600110311037282039995237351296286394154000516 +bconv13 baseconv 4457957454927537688461812152803933057893309313661798019888844725916350791923049671091185745445568272000568499916105636792706734333983954150779210807392529079159051278051278262292856024058644300396302761060186609931250532629877809175222068073564884697977277531507942532257281014395414331251905239774181030885476669871480912542821276866009014330598625959273400996805201352616929690225543712626296502785181776274581768976850416282975572063304675361082023309913467922778505608308226543611541487997877655071116584940944135004871269552163099800312817987690937062356716497503037678719348937277376495353097218905809972095176792270051607660593855462162004570037701710694067564048135023380433144703177863199360133492487411261415303726923760045298880744947675329182486533530390893441999080772950540810023230419515085660899162799632900732682585309047544487440036455753860667472938783490922429296280934298800001057796572412100608311248608380585967549537366641301878649954263074006333369819025341934262552309890685 -> 4457957454927537688461812152803933057893309313661798019888844725916350791923049671091185745445568272000568499916105636792706734333983954150779210807392529079159051278051278262292856024058644300396302761060186609931250532629877809175222068073564884697977277531507942532257281014395414331251905239774181030885476669871480912542821276866009014330598625959273400996805201352616929690225543712626296502785181776274581768976850416282975572063304675361082023309913467922778505608308226543611541487997877655071116584940944135004871269552163099800312817987690937062356716497503037678719348937277376495353097218905809972095176792270051607660593855462162004570037701710694067564048135023380433144703177863199360133492487411261415303726923760045298880744947675329182486533530390893441999080772950540810023230419515085660899162799632900732682585309047544487440036455753860667472938783490922429296280934298800001057796572412100608311248608380585967549537366641301878649954263074006333369819025341934262552309890685 +bconv14 baseconv 3901731478067379289321396414220735780483357993523766698533020834981794870543061749700585421631842605264554120650064237776849231193010333912125858536232044522879995336857450253908748494812208231407059194357661803991617918115858949711849246437663986051219000307965439372723683897296674439191008816828076852138736526857966973763732443605971175782980326694206497798763264608229163395058251422643872948895677391283969909824869680456203331471503477925261194825975690758841481994158180416464348234989705882018982843155697677832471562437079133638442212142453990720049730780393460717585117969598323477927436762280026841735600279774322194245541129512682758846245966261565742384251315954742766690109760090572216988257430135321316854504694510840470144404697890543591914116451687894936506325032717134703136027463896647962750522017499458133789196705162230164646819974564691027479003408667421624630291372474382917784211558461382326828652210777230867674043008511866052133772286465654038522233473020187460660858467078 -> 3901731478067379289321396414220735780483357993523766698533020834981794870543061749700585421631842605264554120650064237776849231193010333912125858536232044522879995336857450253908748494812208231407059194357661803991617918115858949711849246437663986051219000307965439372723683897296674439191008816828076852138736526857966973763732443605971175782980326694206497798763264608229163395058251422643872948895677391283969909824869680456203331471503477925261194825975690758841481994158180416464348234989705882018982843155697677832471562437079133638442212142453990720049730780393460717585117969598323477927436762280026841735600279774322194245541129512682758846245966261565742384251315954742766690109760090572216988257430135321316854504694510840470144404697890543591914116451687894936506325032717134703136027463896647962750522017499458133789196705162230164646819974564691027479003408667421624630291372474382917784211558461382326828652210777230867674043008511866052133772286465654038522233473020187460660858467078 +bconv15 baseconv 4654130777947871235106565465151461084422095964715670606799600540876586888520431823265237922949993426848914383289973098627957823808805773242274705666650695023817068332288028053602837119889249722883578055730426987399507049473986719006531206803575340503737373496865980264428850316818313804183401209750356641907562290186962372904449973454829861996980367983026979009094600005922713262266060683650857145428130022094608561372706439532649518814843814449204700558944204035509625563733066128217457931997800137938160343188836384417256521429544967954247542582708910236174322494792390375695183411985047668205931860675174911781721745206295733293972811633532505651050769641655572883401097916816090263881897772298810854275755073672651722154645883152186711420145164721595742845251862241337791179482125602816644393867478451265452176043215132978604355139427712275063409763557305852406678326116558135079952714119015577110992661915124492008146567447428795131052411419705837588440257141317020517357052079636975130227738598 -> 4654130777947871235106565465151461084422095964715670606799600540876586888520431823265237922949993426848914383289973098627957823808805773242274705666650695023817068332288028053602837119889249722883578055730426987399507049473986719006531206803575340503737373496865980264428850316818313804183401209750356641907562290186962372904449973454829861996980367983026979009094600005922713262266060683650857145428130022094608561372706439532649518814843814449204700558944204035509625563733066128217457931997800137938160343188836384417256521429544967954247542582708910236174322494792390375695183411985047668205931860675174911781721745206295733293972811633532505651050769641655572883401097916816090263881897772298810854275755073672651722154645883152186711420145164721595742845251862241337791179482125602816644393867478451265452176043215132978604355139427712275063409763557305852406678326116558135079952714119015577110992661915124492008146567447428795131052411419705837588440257141317020517357052079636975130227738598 +bconv16 baseconv 6649903495575087493771153800953242013577961180039294825715918202194499150476079787233663406652222968364362252354240762502617978661038662922733262331646118100984108166924536086333452849695885092699887063761418150639306461176675118215408077899621015915846473405233244980498161913123975518197703425854340616426702694437109878025845512326109951618461458985590879975476585800012874776322341807433988214260227054910347409817529283536125266823702079634388079248386880483269208890693943579691797774134822687353629137294554151538135718438084289761599848683755669444925895723323735128773089825168205026900265063639996642154127713550940387749894386305836520239159650767511265284302953611296989644915506174898626874724649914780591548426436707748279509955263711360123961926166504566481355303194932535142301013074380419820133190413672212572428476095781855697590992981269974045223785486638733173531369239381887362699000567417791991159639207176177432662607169533803575718624467572452144772728607033970088225282900175 -> 6649903495575087493771153800953242013577961180039294825715918202194499150476079787233663406652222968364362252354240762502617978661038662922733262331646118100984108166924536086333452849695885092699887063761418150639306461176675118215408077899621015915846473405233244980498161913123975518197703425854340616426702694437109878025845512326109951618461458985590879975476585800012874776322341807433988214260227054910347409817529283536125266823702079634388079248386880483269208890693943579691797774134822687353629137294554151538135718438084289761599848683755669444925895723323735128773089825168205026900265063639996642154127713550940387749894386305836520239159650767511265284302953611296989644915506174898626874724649914780591548426436707748279509955263711360123961926166504566481355303194932535142301013074380419820133190413672212572428476095781855697590992981269974045223785486638733173531369239381887362699000567417791991159639207176177432662607169533803575718624467572452144772728607033970088225282900175 +bconv17 baseconv 6996509737946222698867238485076694621072402094269933465387492099143920190430008452426636655634646089930541211959828173942908249372946155950666340823104513423028341919890120057436903702031139750685311557236021391352395003548947349765311587042634256761797972079037345627684387942495896111629633162262050670642880163266515392797316783031120495645608452562147927818125087740040341409692212832018116079662378726408235148798543023397186664678892318065117107346049325182299374158008079604898946210765714053312358673486613834225634180428808852322431968232498746105815007552707092614013713040649910857121689180545859262652255302431621339064799096669259074349938901637338742611849630443991508904205506842943602580668042817746870016056008707055751157074378339256292513649853132024359053663233577846538980614863871469148630959809396046996718160742627778735657199756690312550505304906971080827163200349464601681466034484938492553599162654183170713923036067698101789277789817077614926142926076267939580351751164613 -> 6996509737946222698867238485076694621072402094269933465387492099143920190430008452426636655634646089930541211959828173942908249372946155950666340823104513423028341919890120057436903702031139750685311557236021391352395003548947349765311587042634256761797972079037345627684387942495896111629633162262050670642880163266515392797316783031120495645608452562147927818125087740040341409692212832018116079662378726408235148798543023397186664678892318065117107346049325182299374158008079604898946210765714053312358673486613834225634180428808852322431968232498746105815007552707092614013713040649910857121689180545859262652255302431621339064799096669259074349938901637338742611849630443991508904205506842943602580668042817746870016056008707055751157074378339256292513649853132024359053663233577846538980614863871469148630959809396046996718160742627778735657199756690312550505304906971080827163200349464601681466034484938492553599162654183170713923036067698101789277789817077614926142926076267939580351751164613 +bconv18 baseconv 2116191489308263919842229695571138781766021241069159740738752037964402858674223351204521076524821256755791969175295015726825071758580326486219533321673110521760362531300810374010768467270360551883059931390497457733276857413061518590862834568969071329777624777482160698986908983416052990879749156251779374729403479279235763975000193847000043935597288269667966036560223039666194190128474629654935974693390857486562580101192392344336865753922553121763911200779847981928703530924663154609110960932106742121402848079856596929626043513118690430954732489587924420640003182292969887620959723057268259140753281689542673339334989018519236126840735193611255499741990454998982055551289298915399977830485160133786045165674897211092904631588046969789434726387390025850081843876418781470670389772265799766298216028384685477388376351519666960392987893514723791614620884896648568244970851225259152618635602860192263408161263225316340413871233482525782477895516139728427180060766617995836311771075569755754521011817600 -> 2116191489308263919842229695571138781766021241069159740738752037964402858674223351204521076524821256755791969175295015726825071758580326486219533321673110521760362531300810374010768467270360551883059931390497457733276857413061518590862834568969071329777624777482160698986908983416052990879749156251779374729403479279235763975000193847000043935597288269667966036560223039666194190128474629654935974693390857486562580101192392344336865753922553121763911200779847981928703530924663154609110960932106742121402848079856596929626043513118690430954732489587924420640003182292969887620959723057268259140753281689542673339334989018519236126840735193611255499741990454998982055551289298915399977830485160133786045165674897211092904631588046969789434726387390025850081843876418781470670389772265799766298216028384685477388376351519666960392987893514723791614620884896648568244970851225259152618635602860192263408161263225316340413871233482525782477895516139728427180060766617995836311771075569755754521011817600 +bconv19 baseconv 3657040042388187005449752005773508721366439997895215536309206196053846912612124235946651814867988061086285642444748304248510808131113589460573938621610768020550215610437863758979730599736952685795593974626173569859389589918139817934292825340027189615141761776726092613165279554452207845753530978243066966833901336309557395747038797045769718545056516557961518499578837572752707262714655620719706697257573611516777976662489356063065015549618913961849956103160803527968052164644400918259577486286055618902047069100230870185329523384762479375986191205884796678656663173298967382923840435881655695585395544831070515111803728298446234488834526842163124508944382765785026470495934874129744497219393610952160058482549741625298926474300205119898320251588510907483157020160499964457760009310269992780703907345598149078511197602468887997120082448986866409054761685103267338315908935215667060641522809660805954716651402684172617527591399391859874170975483983020855509846069201137998297873371909477001553808723203 -> 3657040042388187005449752005773508721366439997895215536309206196053846912612124235946651814867988061086285642444748304248510808131113589460573938621610768020550215610437863758979730599736952685795593974626173569859389589918139817934292825340027189615141761776726092613165279554452207845753530978243066966833901336309557395747038797045769718545056516557961518499578837572752707262714655620719706697257573611516777976662489356063065015549618913961849956103160803527968052164644400918259577486286055618902047069100230870185329523384762479375986191205884796678656663173298967382923840435881655695585395544831070515111803728298446234488834526842163124508944382765785026470495934874129744497219393610952160058482549741625298926474300205119898320251588510907483157020160499964457760009310269992780703907345598149078511197602468887997120082448986866409054761685103267338315908935215667060641522809660805954716651402684172617527591399391859874170975483983020855509846069201137998297873371909477001553808723203 +bconv20 baseconv 1907290300779366901668875172193763841989087145111836138769863659204469308435136296787416959119310340505452393350804633310447991517676423170036998132338742466135461248965301062141326103795708839916063047063036192632494906454583674217604242576574267094226403890117973872599991379051480082755531518226394839433698285060291452191292723350752127747720524992813693607046092903905308877425933439510926778650305775042848237025867471460987322373688586656255345989164159354409399460934144745853291332651720120121304556768190072283203161699248244038261036404617128287377578823923303263967968800629523261448086933363365341451104278167418197117594320820097375260567632321120596850440960789648875144459866401734976231298903922816887102453792302823573209977187798936517822870365439650437692621048399349559374424942222932055961494221573113023286117068158511640356530673948373162523061804707818573376705122020437295596158479382403894290215300817040246807634634310157974888632207481833550397293704329123701360403814274 -> 1907290300779366901668875172193763841989087145111836138769863659204469308435136296787416959119310340505452393350804633310447991517676423170036998132338742466135461248965301062141326103795708839916063047063036192632494906454583674217604242576574267094226403890117973872599991379051480082755531518226394839433698285060291452191292723350752127747720524992813693607046092903905308877425933439510926778650305775042848237025867471460987322373688586656255345989164159354409399460934144745853291332651720120121304556768190072283203161699248244038261036404617128287377578823923303263967968800629523261448086933363365341451104278167418197117594320820097375260567632321120596850440960789648875144459866401734976231298903922816887102453792302823573209977187798936517822870365439650437692621048399349559374424942222932055961494221573113023286117068158511640356530673948373162523061804707818573376705122020437295596158479382403894290215300817040246807634634310157974888632207481833550397293704329123701360403814274 +bconv21 baseconv 8328412344011357368290367522944439229409032228696578744651361596318999532108496171340817772581187387192418173158023347185481222055504397931495197777675780884698581348970769415719832334622554398689409623552828941950609808268247216338490168096836094778633394505288615107212721305045534758642753310373006413602629581180049118640023923877038380750468854335183575949093581005089379756478505487068462160099587767722454601624199095499753921546299936767762788071699069263568742532752237287172744750544171703951332022145813717793646206441639319365228865360965994579774363994171221712456133645368925794338746222938853603217313375705740738044103090276908803879718484581435424599650193398252323358235503208373675412086437184679679451678025933986993311321848436400383152155583674981369799366426975966215456068347642477142985913367820490341330688486585340535111257130535692049654058846836932550781187779455705941675984957765321261124949399497002051458474561284647792408852165320773973140760472304867880225855389417 -> 8328412344011357368290367522944439229409032228696578744651361596318999532108496171340817772581187387192418173158023347185481222055504397931495197777675780884698581348970769415719832334622554398689409623552828941950609808268247216338490168096836094778633394505288615107212721305045534758642753310373006413602629581180049118640023923877038380750468854335183575949093581005089379756478505487068462160099587767722454601624199095499753921546299936767762788071699069263568742532752237287172744750544171703951332022145813717793646206441639319365228865360965994579774363994171221712456133645368925794338746222938853603217313375705740738044103090276908803879718484581435424599650193398252323358235503208373675412086437184679679451678025933986993311321848436400383152155583674981369799366426975966215456068347642477142985913367820490341330688486585340535111257130535692049654058846836932550781187779455705941675984957765321261124949399497002051458474561284647792408852165320773973140760472304867880225855389417 +bconv22 baseconv 3315121038768652940226841837053631189007355646557192168697741746644011445033624817385995512923201063642574168250797419031368478058307151407279301815966103873082189098636837520628838577114326829121193713777142906501371351078847040437205965114283690325759508068643058547709123874837372230270155816123290986439667215213492834547149693039386842524862862238608218519477851035441158448519941219447776343525300360515704384334933803837579893117022747558657773292490375981252728912263905250082810734874391494302401911790419857932315996668291676744616309705631968456347189549177461576110195536630394610419034115639346784232281789456099159904848602568218079020991194570834047393672543883052873705792336747276258257811706642737214667938649317459395024679338953204268129881155389186775958574260853719304964487921028029594998601538531171731101589856327194508397584028911542802783359288738613215754262493292449386174119367403622975503466190145175796831773757599253334483168229013517946884835924006753796121456678624 -> 3315121038768652940226841837053631189007355646557192168697741746644011445033624817385995512923201063642574168250797419031368478058307151407279301815966103873082189098636837520628838577114326829121193713777142906501371351078847040437205965114283690325759508068643058547709123874837372230270155816123290986439667215213492834547149693039386842524862862238608218519477851035441158448519941219447776343525300360515704384334933803837579893117022747558657773292490375981252728912263905250082810734874391494302401911790419857932315996668291676744616309705631968456347189549177461576110195536630394610419034115639346784232281789456099159904848602568218079020991194570834047393672543883052873705792336747276258257811706642737214667938649317459395024679338953204268129881155389186775958574260853719304964487921028029594998601538531171731101589856327194508397584028911542802783359288738613215754262493292449386174119367403622975503466190145175796831773757599253334483168229013517946884835924006753796121456678624 +bconv23 baseconv 6804245394199269510260034849949978284687327306683921369181439323876828465556100484976178041716688674305463899900458911076905277468163343462137822632584182743731281984437488681436666726451834179529184078424856695673066640496971437284829916240678022419952687411772136464337324320225373507006271131972344443139360057945368240260971363067201402822727575125099568531251819191664536642544248372067289456726584341697288252957793751361011403471549699801466477354823166069693053656728777101314468017537429026176290497367558839666977995278745969891941831468149748702932620902604503605214651500623972887082337149658187829379376355016799927193548707291452731052528210116066324840524694921179631087998683512916419578405529971986301195979518917420386922728264097722572544898296499789395800327460813295878816222331616588596221312529112368413980403510595503226864025841040537005080129922706121337538857825719544388210087707021436458973221469743142609347923625197028964479981508482347547748024532911494015282509761609 -> 6804245394199269510260034849949978284687327306683921369181439323876828465556100484976178041716688674305463899900458911076905277468163343462137822632584182743731281984437488681436666726451834179529184078424856695673066640496971437284829916240678022419952687411772136464337324320225373507006271131972344443139360057945368240260971363067201402822727575125099568531251819191664536642544248372067289456726584341697288252957793751361011403471549699801466477354823166069693053656728777101314468017537429026176290497367558839666977995278745969891941831468149748702932620902604503605214651500623972887082337149658187829379376355016799927193548707291452731052528210116066324840524694921179631087998683512916419578405529971986301195979518917420386922728264097722572544898296499789395800327460813295878816222331616588596221312529112368413980403510595503226864025841040537005080129922706121337538857825719544388210087707021436458973221469743142609347923625197028964479981508482347547748024532911494015282509761609 +bconv24 baseconv 3686532736301042996488042910928063833489647059297391474122474701750564654110016258961447876266046086834852964908838784834587073241452184635035963961046386305821886799155716293425362673049188661792395475716317976976684769107610705711472976353536366804972042316389741529534690458188594239789604723997641379307797793779518138523424188676397613888973743393771726693858331232740765910599277581866664214078202391294789383117661180484224817280648201737647502698999700953581325303621031625442267785575612996856600367541945211555323989440032278872471874217949251450632203968103482980314632447449153203853357171784778655382011783931470854850604123884194777900839504131153587495521637254979399578885540352544495477433223752505186577601508341374172299226598461655364332506841640420208670096660203392391167006912846780603848291124277608802051055715882837409094312835075322549092043613679068069558022788103362582792012338193726573290684719371733833799193248715968095684163061578300710053097734086131318134072508442 -> 3686532736301042996488042910928063833489647059297391474122474701750564654110016258961447876266046086834852964908838784834587073241452184635035963961046386305821886799155716293425362673049188661792395475716317976976684769107610705711472976353536366804972042316389741529534690458188594239789604723997641379307797793779518138523424188676397613888973743393771726693858331232740765910599277581866664214078202391294789383117661180484224817280648201737647502698999700953581325303621031625442267785575612996856600367541945211555323989440032278872471874217949251450632203968103482980314632447449153203853357171784778655382011783931470854850604123884194777900839504131153587495521637254979399578885540352544495477433223752505186577601508341374172299226598461655364332506841640420208670096660203392391167006912846780603848291124277608802051055715882837409094312835075322549092043613679068069558022788103362582792012338193726573290684719371733833799193248715968095684163061578300710053097734086131318134072508442 +bconv25 baseconv 9806425993239671328964787689608564617574418553508282368444375580341116067815899987605980741331303696938727519029413939870373428052875303489792984890171196972473936801668287197162320517327985197071488157807745918869940805258349578098539677465223440959981935395385316060564419540393298777459389205890799953324298538353919505987331885955502016762413882044537481833192614088945899916184385227531944461676129718921921753347739724401194215163003353869584732936674043658664674098823275556920482819284164873966516006199321915776415829231211413908013546069047895409855580420073719001323986087951105311246597095642947881172848968202435175735519380160089738940599283457821680657206189943586937672628849320700468532705595996038074797550271126672411281331282751684452032124500847395101862340320849995645638709613152547119381445180543376086732985709904442004607047463811239459217966137017602452773783200231982049966238375060398810338741479314473594852526323287888398314240751714108340660375473679080175680982540941 -> 9806425993239671328964787689608564617574418553508282368444375580341116067815899987605980741331303696938727519029413939870373428052875303489792984890171196972473936801668287197162320517327985197071488157807745918869940805258349578098539677465223440959981935395385316060564419540393298777459389205890799953324298538353919505987331885955502016762413882044537481833192614088945899916184385227531944461676129718921921753347739724401194215163003353869584732936674043658664674098823275556920482819284164873966516006199321915776415829231211413908013546069047895409855580420073719001323986087951105311246597095642947881172848968202435175735519380160089738940599283457821680657206189943586937672628849320700468532705595996038074797550271126672411281331282751684452032124500847395101862340320849995645638709613152547119381445180543376086732985709904442004607047463811239459217966137017602452773783200231982049966238375060398810338741479314473594852526323287888398314240751714108340660375473679080175680982540941 +bconv26 baseconv 5916130888921052157563868436065271115971725780622350739858076731106466137697255123313723107278590516969456927830770686259430616477305047671993424735145212659806134287287638001542266925357294137882488836818840569304093986517803426139845072038852269292990680800969209238212679473117880626638045843893226192937862920572923354746205494457476368092131165953754632095472040614753795482618846078204922499068766980579883853147586963630596721642521066731371741755080071899209858124484832480865391717667048153041170504554040212726252583709450749236839364384220162930945690573814746579831780215988682605565267988407477367560243730168405685871433656925714418977440608757588341303558880594720065780582599444281764583014401520157253252207334351799111071355380057269389505231535948957424142627549398508762893929171384459289215449159164498928757202513442408578282203596362868300333913733923522235131526272986498880583818330739060535067111484420019640022198496840864323412417764897401201919435299597412888972729886738 -> 5916130888921052157563868436065271115971725780622350739858076731106466137697255123313723107278590516969456927830770686259430616477305047671993424735145212659806134287287638001542266925357294137882488836818840569304093986517803426139845072038852269292990680800969209238212679473117880626638045843893226192937862920572923354746205494457476368092131165953754632095472040614753795482618846078204922499068766980579883853147586963630596721642521066731371741755080071899209858124484832480865391717667048153041170504554040212726252583709450749236839364384220162930945690573814746579831780215988682605565267988407477367560243730168405685871433656925714418977440608757588341303558880594720065780582599444281764583014401520157253252207334351799111071355380057269389505231535948957424142627549398508762893929171384459289215449159164498928757202513442408578282203596362868300333913733923522235131526272986498880583818330739060535067111484420019640022198496840864323412417764897401201919435299597412888972729886738 +bconv27 baseconv 7275369226125959639152288581118257072486354584593886378635049043920221172449198271838883701950714119646253728366886207200431667633194156185049979953945084319274329428689189570940196597435917503503955733126091393101462333331817625535101453679407634517642160751823322283219139547397583540065078390480388873437631474059635741726218645220222514582640800410149535284105687101924210396486664754344141000519526708507190546015890733341893773711725518795544278775689603064725109311618981653001747651166525191121725854060274403796775730045061561272541678538174953324595712582582966609181850738981313274654973683910198578635364841605686095000492542853598957850649168239127355641352294310703161912533212101994409023855128599075323612962733518940042534688928722761021503474651443122070987854270654460834076028754869251114775457595448695183246026783131165897104690493291655974245507669403553417538538446975373429432818414524762970357885688657753258617452716146032543786726760696399029575673758164951870721717039111 -> 7275369226125959639152288581118257072486354584593886378635049043920221172449198271838883701950714119646253728366886207200431667633194156185049979953945084319274329428689189570940196597435917503503955733126091393101462333331817625535101453679407634517642160751823322283219139547397583540065078390480388873437631474059635741726218645220222514582640800410149535284105687101924210396486664754344141000519526708507190546015890733341893773711725518795544278775689603064725109311618981653001747651166525191121725854060274403796775730045061561272541678538174953324595712582582966609181850738981313274654973683910198578635364841605686095000492542853598957850649168239127355641352294310703161912533212101994409023855128599075323612962733518940042534688928722761021503474651443122070987854270654460834076028754869251114775457595448695183246026783131165897104690493291655974245507669403553417538538446975373429432818414524762970357885688657753258617452716146032543786726760696399029575673758164951870721717039111 +bconv28 baseconv 6936181853903661370294189648248327184827734642073493270422122131281973980787554898303935174911383626495892816275715112673338987288755715868481857300821172506884749192188289982807115712418841300156560406962004223009568721667373354101748696829640867604662898090507583814461683504817651669413529993177123797274962767996915351854056320679498229762727867700522585287428266151756817730538657228416066968330856073220614143749817918368727695675333976756671771168559497265397186285351296289607150944819038053052404298260860833847239961470959510963789777670647424489220427924069052035843610655539573317403576480138140507770258250233937846137745905433789026241541290129894032067761467194927877930901970375621983969081728588244400297449841487055080985108372281612450998413297731552804120065468245488020719508008272467925276208758416542010378563861619491118255936628383662509607074742149818208126190611711579905808043445878961660197452306483614131947589735097400551697760450512428137995480847506688754735583206629 -> 6936181853903661370294189648248327184827734642073493270422122131281973980787554898303935174911383626495892816275715112673338987288755715868481857300821172506884749192188289982807115712418841300156560406962004223009568721667373354101748696829640867604662898090507583814461683504817651669413529993177123797274962767996915351854056320679498229762727867700522585287428266151756817730538657228416066968330856073220614143749817918368727695675333976756671771168559497265397186285351296289607150944819038053052404298260860833847239961470959510963789777670647424489220427924069052035843610655539573317403576480138140507770258250233937846137745905433789026241541290129894032067761467194927877930901970375621983969081728588244400297449841487055080985108372281612450998413297731552804120065468245488020719508008272467925276208758416542010378563861619491118255936628383662509607074742149818208126190611711579905808043445878961660197452306483614131947589735097400551697760450512428137995480847506688754735583206629 +bconv29 baseconv 6598643693280921096277040697343237276354612940998612241915180995498884135486456917941502336856143039655852760319886039890057203623771893671304160111474793308339466148429137395501938619948630730482573531378741497564564478272172826558465171996542010455144732967169803703753153175850488283979722445728025916308259008376565303985907684134811513667076552564501127693845796083868723408308555272045717262999181209882153166393671613963881145827103377487772361618200465096156374703076175272664777364110710702230313312801052930769127495247951688592893534116971268391148600666199131844158004902702590444207540822850471928975467515588814183828088306013611431940021474417877757253302841455495351595543143465513692958962963606252741251648061876917688943307106721157290530319974950613636684454430278850331189346521135177535448718614345941552271157503715618418703044010369802931292837673229022567717006302803135528250568284434770091981809115229562524970028987999906270813570312987067785406168708579050380445152143496 -> 6598643693280921096277040697343237276354612940998612241915180995498884135486456917941502336856143039655852760319886039890057203623771893671304160111474793308339466148429137395501938619948630730482573531378741497564564478272172826558465171996542010455144732967169803703753153175850488283979722445728025916308259008376565303985907684134811513667076552564501127693845796083868723408308555272045717262999181209882153166393671613963881145827103377487772361618200465096156374703076175272664777364110710702230313312801052930769127495247951688592893534116971268391148600666199131844158004902702590444207540822850471928975467515588814183828088306013611431940021474417877757253302841455495351595543143465513692958962963606252741251648061876917688943307106721157290530319974950613636684454430278850331189346521135177535448718614345941552271157503715618418703044010369802931292837673229022567717006302803135528250568284434770091981809115229562524970028987999906270813570312987067785406168708579050380445152143496 +bconv30 baseconv 1004196103346472752674565281340460756966728517262459117954323520421589665427819254142667248662990584242535350070341879422090370943295920871511777118110197784868588411414095230519945091136202145363783889529990295304290900233150081340154309171129047759577137637693000830644427423231541229958760971795349358090445632395232394103411530421494557184062919901350843818778432950317879787413325611976705348300144554688207718145131366219857023385401503395786835765440122315352006748334989418131659627695401721511191840831346883531056207399376758786442181263361990977659310944230849094346885506255005665339603004141435656297078934280499292657930832503603522637716560755051817435846934856130834840354324344976737243935715184209403164420455494024164523600423794139107055254899265022876279581256403089243025870210433900835450349375321300997236945669785889231868991397723295039745819381692990957887095000009927818403461910686945480819856534450846233655354633300191460923627938361343548466791923855656708809373653602 -> 1004196103346472752674565281340460756966728517262459117954323520421589665427819254142667248662990584242535350070341879422090370943295920871511777118110197784868588411414095230519945091136202145363783889529990295304290900233150081340154309171129047759577137637693000830644427423231541229958760971795349358090445632395232394103411530421494557184062919901350843818778432950317879787413325611976705348300144554688207718145131366219857023385401503395786835765440122315352006748334989418131659627695401721511191840831346883531056207399376758786442181263361990977659310944230849094346885506255005665339603004141435656297078934280499292657930832503603522637716560755051817435846934856130834840354324344976737243935715184209403164420455494024164523600423794139107055254899265022876279581256403089243025870210433900835450349375321300997236945669785889231868991397723295039745819381692990957887095000009927818403461910686945480819856534450846233655354633300191460923627938361343548466791923855656708809373653602 +bconv31 baseconv 6752266525911602782261309781182101273913113769485915148140089178958274774606065364647471616727162257211032115563300881118239956504424028638683052023075476886057700162228045438788093014227668254148960390074403458248586810033916508707141095759145754594740061441508007404826827705354166300443543935902562958042346348525597557407385970641687427831021535306457943109637655867177425393712434541225028264700108528124148509580572509801048158964479817437794371869476899571468951093075328706316244378594833011981133468793686815563897806932066916704869658487449478084255890384023679963989773046553602989448081093681804074115952623378079909051486681530374478339690153072449088447631850934413244055912966562232116643709164876283876909834880165297902785336471373481752744050309591967035729193717321345489672215124100912773655784215673962706652767882041886384421822330939545828692146328669692576965861936240738309721988424656215816848239812450750485341730306776309524466777054854468126252423093449386197935663670290 -> 6752266525911602782261309781182101273913113769485915148140089178958274774606065364647471616727162257211032115563300881118239956504424028638683052023075476886057700162228045438788093014227668254148960390074403458248586810033916508707141095759145754594740061441508007404826827705354166300443543935902562958042346348525597557407385970641687427831021535306457943109637655867177425393712434541225028264700108528124148509580572509801048158964479817437794371869476899571468951093075328706316244378594833011981133468793686815563897806932066916704869658487449478084255890384023679963989773046553602989448081093681804074115952623378079909051486681530374478339690153072449088447631850934413244055912966562232116643709164876283876909834880165297902785336471373481752744050309591967035729193717321345489672215124100912773655784215673962706652767882041886384421822330939545828692146328669692576965861936240738309721988424656215816848239812450750485341730306776309524466777054854468126252423093449386197935663670290 +bconv32 baseconv 440257917310780857842885050379591596012036075071213321710948182473797857890030997135164519948347083742128114102407556300875737799780983942275954183063508915004952641113089072574255715897435224666678088129934983100393646248642715641003835014095502488063163943515735856096516326899705087514043632089486677424850306124503171834727275480343810326376593169392613877217949967881808319658787776776410711077590418512166345281650507834288980598016546605895203557155833554212440539414924697400487262258073768695629532591738713885342105556162405739880555951241630882786848561713953645293528153133509469619926532391448370511408130948529847493950976604742114277098648699436364503379391395909014535547756482651213882176818652911095524223923379596043074976709227531637518950502491681028014655168923801167906611729976386248768730674233570453750272640489228917425890079918437257960524790011173183448589629729179813335509345969256152080935282235527666763612946752944717359262890145332816666206536522986834929857422656 -> 440257917310780857842885050379591596012036075071213321710948182473797857890030997135164519948347083742128114102407556300875737799780983942275954183063508915004952641113089072574255715897435224666678088129934983100393646248642715641003835014095502488063163943515735856096516326899705087514043632089486677424850306124503171834727275480343810326376593169392613877217949967881808319658787776776410711077590418512166345281650507834288980598016546605895203557155833554212440539414924697400487262258073768695629532591738713885342105556162405739880555951241630882786848561713953645293528153133509469619926532391448370511408130948529847493950976604742114277098648699436364503379391395909014535547756482651213882176818652911095524223923379596043074976709227531637518950502491681028014655168923801167906611729976386248768730674233570453750272640489228917425890079918437257960524790011173183448589629729179813335509345969256152080935282235527666763612946752944717359262890145332816666206536522986834929857422656 +bconv33 baseconv 3621353659591906193508941253810506896901678343406310586994856313276653053044386287410607428317762846139129646965927449071502639869626408112761769728810904723010711845307914540552831499388815737207970770478797091482893485028243111795169729965554644305570976708388224925905702090112713699364147913641836531255143839947328484917942851975474838601541072125493686621084842258302052974571531215761432665069667504883053907461979969327201761124150368219635334419889799232992470439818171770840319533327219243806435915181225632660122600753485358227736681953614421734470723800561505404821108000842734274203713769000101632463457496443596861734020146282331400706437025446606691234423844959336358952705559868999324825139751226070870320775500819979806400494646682955514937244456822634567159242800461859730120499375643589320058157821284995810648062296525351884262824645523112359005602442729090064605796280713419223146575889922011828760185428898948751655444812589600293065062945975081449295839799302808126472998975032 -> 3621353659591906193508941253810506896901678343406310586994856313276653053044386287410607428317762846139129646965927449071502639869626408112761769728810904723010711845307914540552831499388815737207970770478797091482893485028243111795169729965554644305570976708388224925905702090112713699364147913641836531255143839947328484917942851975474838601541072125493686621084842258302052974571531215761432665069667504883053907461979969327201761124150368219635334419889799232992470439818171770840319533327219243806435915181225632660122600753485358227736681953614421734470723800561505404821108000842734274203713769000101632463457496443596861734020146282331400706437025446606691234423844959336358952705559868999324825139751226070870320775500819979806400494646682955514937244456822634567159242800461859730120499375643589320058157821284995810648062296525351884262824645523112359005602442729090064605796280713419223146575889922011828760185428898948751655444812589600293065062945975081449295839799302808126472998975032 +bconv34 baseconv 308795464510742559038105298998650304693743855190451369231852174029328147828968019648350478584774581215554346346526918171844510869198854254166843295074260340042544887166276876664752431549556107161510308500274009980876373166522982913840289527272231992347198001534349937259004557053378162709310644857639945270377504295414585529256963273256200779045365018036677454863035987215261988585637704991785837763798523983570544859576027424083994485787713082684449909069205930527190273288743083638328440085526809509431265121686599742496560540770977709747428376682194491019161559113803649831195695072597665413143218109307104138026431080332613297706716914987105375345654626687427798906556292847453594207675937769058998973367887583511032056963246095438264673043664061258189467479914955392559746430546324500326847830808190047702458062622776247297602194170423483162848016170210879216185544107801209608310208624210118062804148867599052086976867844545621306890327314696328264871352243288884669295810429126150722004356038 -> 308795464510742559038105298998650304693743855190451369231852174029328147828968019648350478584774581215554346346526918171844510869198854254166843295074260340042544887166276876664752431549556107161510308500274009980876373166522982913840289527272231992347198001534349937259004557053378162709310644857639945270377504295414585529256963273256200779045365018036677454863035987215261988585637704991785837763798523983570544859576027424083994485787713082684449909069205930527190273288743083638328440085526809509431265121686599742496560540770977709747428376682194491019161559113803649831195695072597665413143218109307104138026431080332613297706716914987105375345654626687427798906556292847453594207675937769058998973367887583511032056963246095438264673043664061258189467479914955392559746430546324500326847830808190047702458062622776247297602194170423483162848016170210879216185544107801209608310208624210118062804148867599052086976867844545621306890327314696328264871352243288884669295810429126150722004356038 +bconv35 baseconv 3726041560049006100163654455361941980588163637178625105040559810885265380853813660755795711159298663467502626939222207455776795011811588610725154667543293197865938235542423513004592889500903010573131092713197355793748384727271457585762087222467902810692695066088946860190086424091368150998598721211997257258125099799695191062205677399589742762903614733724680506773107185389405135718823311577607460101130575571498689138483313979792716858273984958318873410404523131884127872978608469487246944318221630200531908398278759310750307522599435665413739802758837182408478435577094399398384171679115775374798853208413837531844250684213948710739334653310823586014699507016691503283407741922804931865316127810210802323179207376593083151896740283801318867157189804347717098485324711798062857615642593358118168628921529175536682368036235022730428002163355353145571774505431895087068942661973353226557773935384585568337201959332169325578170719928539232910297892668474764498160502445962630055590605297452391791541743 -> 3726041560049006100163654455361941980588163637178625105040559810885265380853813660755795711159298663467502626939222207455776795011811588610725154667543293197865938235542423513004592889500903010573131092713197355793748384727271457585762087222467902810692695066088946860190086424091368150998598721211997257258125099799695191062205677399589742762903614733724680506773107185389405135718823311577607460101130575571498689138483313979792716858273984958318873410404523131884127872978608469487246944318221630200531908398278759310750307522599435665413739802758837182408478435577094399398384171679115775374798853208413837531844250684213948710739334653310823586014699507016691503283407741922804931865316127810210802323179207376593083151896740283801318867157189804347717098485324711798062857615642593358118168628921529175536682368036235022730428002163355353145571774505431895087068942661973353226557773935384585568337201959332169325578170719928539232910297892668474764498160502445962630055590605297452391791541743 +bconv36 baseconv 763910724292309486516326277415854118225332049044437015134006833421469612314738033380784731115337197371458681732393523523977599341492606588701422401444374099743578325687621481298789249783813593008548957814059579674887052565189633811888734731294529006436394504452875849915536743426289217024314215755563306884820438175200596397389213836073383556123392632828286911984646171313551189151600580667052605459246569857270359810232738347701166670513010038433944221388753438297395674031133204029575385667008503448682719455099422999994547982773975330618517861295624322461680941813568600806651446117610272011337588720333583866174530342054384298950397765080640768756053011763658354928222772680992044693112829645713742568148323121041527304157173121879422852240330978621677863034185799507545331453179012913449978214038546427613102912784362561820125841308606071796434962184879177846617529826432949065643809170390888677631530384588577149287816456390895559878277577380494507459146979906567844463858286613737185207131233 -> 763910724292309486516326277415854118225332049044437015134006833421469612314738033380784731115337197371458681732393523523977599341492606588701422401444374099743578325687621481298789249783813593008548957814059579674887052565189633811888734731294529006436394504452875849915536743426289217024314215755563306884820438175200596397389213836073383556123392632828286911984646171313551189151600580667052605459246569857270359810232738347701166670513010038433944221388753438297395674031133204029575385667008503448682719455099422999994547982773975330618517861295624322461680941813568600806651446117610272011337588720333583866174530342054384298950397765080640768756053011763658354928222772680992044693112829645713742568148323121041527304157173121879422852240330978621677863034185799507545331453179012913449978214038546427613102912784362561820125841308606071796434962184879177846617529826432949065643809170390888677631530384588577149287816456390895559878277577380494507459146979906567844463858286613737185207131233 +bconv37 baseconv 6411515545958508267730136820938002132508113759229495199541247104652604001059503338423976623452921787201156579581245598712866600199256520892211613414354436773279725384056227551456716358240653787674886753611647804186156853394862677853883332950900858273796500908751310696781256567131321998751357135507574514934672253934561944097811057342562882728600292526208941005701647200982238969900527040553971916032470069621890311699244595775579274839171496623843703670477165252423039634230051398552931354740090014182115836248477494264811315743487512372128756187403475153215582621466879547337803845868875677218447608584482034647674131040792972430980450078326214504048353860255244997647483297098048146469661610342026041301338514520321898973465757980269641911105381237851746688386235286919802211717729068835066589934638629523970293932883686360753917368800885117185991325557106614847018755355002701644869414562432732066345711871930472851440718916540312613617566701117164697552724160814098257993080941501402572355655342 -> 6411515545958508267730136820938002132508113759229495199541247104652604001059503338423976623452921787201156579581245598712866600199256520892211613414354436773279725384056227551456716358240653787674886753611647804186156853394862677853883332950900858273796500908751310696781256567131321998751357135507574514934672253934561944097811057342562882728600292526208941005701647200982238969900527040553971916032470069621890311699244595775579274839171496623843703670477165252423039634230051398552931354740090014182115836248477494264811315743487512372128756187403475153215582621466879547337803845868875677218447608584482034647674131040792972430980450078326214504048353860255244997647483297098048146469661610342026041301338514520321898973465757980269641911105381237851746688386235286919802211717729068835066589934638629523970293932883686360753917368800885117185991325557106614847018755355002701644869414562432732066345711871930472851440718916540312613617566701117164697552724160814098257993080941501402572355655342 +bconv38 baseconv 5174625584624399635838288474476124397203760920636997516118656069770822728294082492749226425608179967823341292123482520809599475995961416113033204588016354020749821257912770919045988476305124209613472190297598127117952435245070935995641443376127236275350158995712787426025492880516833993243056798578723222753765722871885579054282326817290307376724619125441999533393789689705173855158158930760119922239168783730127869648192538407984164482676536809333697348211617179165038177483255555747615585517167803897732394711264086748006469378716987797942387530452026798925622800651506758418722360064878321021237013720855453530839943553473628728898348109463323514238893536755093404757558600965373824422388594361035338899020856603579660866317948378744107552202155377928382155890911406870308625158970319654836274702831571102104395558006228709138525329337571500762473089961969115532087500298686625626553303153317111271265731670675591997951887513670696164727380539163706011247089942921882843877808412750098421753752774 -> 5174625584624399635838288474476124397203760920636997516118656069770822728294082492749226425608179967823341292123482520809599475995961416113033204588016354020749821257912770919045988476305124209613472190297598127117952435245070935995641443376127236275350158995712787426025492880516833993243056798578723222753765722871885579054282326817290307376724619125441999533393789689705173855158158930760119922239168783730127869648192538407984164482676536809333697348211617179165038177483255555747615585517167803897732394711264086748006469378716987797942387530452026798925622800651506758418722360064878321021237013720855453530839943553473628728898348109463323514238893536755093404757558600965373824422388594361035338899020856603579660866317948378744107552202155377928382155890911406870308625158970319654836274702831571102104395558006228709138525329337571500762473089961969115532087500298686625626553303153317111271265731670675591997951887513670696164727380539163706011247089942921882843877808412750098421753752774 +bconv39 baseconv 7163208824566942977148218402930665660687663125682202746391322700451342684941566945643962889878419371252587344191345409455421121862651441157094908122925603939811167255761501922529836164615866567730468003310641456683341227651215776783897261497424016815324650946620339823790757441162270394866242291053815472270918011381537885273997769204549005774733404245486598255591383194160320079197797897693672093342666584962497804702941491250327871060069405925739060917907264492564780120205604616939835556738392439582254619242199495859638526568262688928557403773788067344563251627306375519890338119135501231541471040146227738143000270536117844518543070033436884725515914035040465388084072126791625912299970445080530456380568877946496791520184904260387723710591569546944563044373730264833705711849508322878263146853245514784344288908926879315686479603681521311639279042773336407962820049615921728704542808741590678969226396640480579282556933457717117196373661806557610103528779614190574603333706950356767595599919390 -> 7163208824566942977148218402930665660687663125682202746391322700451342684941566945643962889878419371252587344191345409455421121862651441157094908122925603939811167255761501922529836164615866567730468003310641456683341227651215776783897261497424016815324650946620339823790757441162270394866242291053815472270918011381537885273997769204549005774733404245486598255591383194160320079197797897693672093342666584962497804702941491250327871060069405925739060917907264492564780120205604616939835556738392439582254619242199495859638526568262688928557403773788067344563251627306375519890338119135501231541471040146227738143000270536117844518543070033436884725515914035040465388084072126791625912299970445080530456380568877946496791520184904260387723710591569546944563044373730264833705711849508322878263146853245514784344288908926879315686479603681521311639279042773336407962820049615921728704542808741590678969226396640480579282556933457717117196373661806557610103528779614190574603333706950356767595599919390 +bconv40 baseconv 2442590512156701117031630849457190212515631854179642736927154149600700440091117348527893566301678725981445363707396308072362064192627996877900528379016271258485843917542590411330025226643520492807062043420095626267157212566054324457494027542423685584382725824987540264001060298472929399840148814277659779127514160521181701323428366451327159041320060056644755701962798811149306267781505838684110713067807827509356119600772484650829145745413269832979319281624763361480271814777357901600682023418709682284211749387582567399379397894854112063802397034107651634935041161377371024226477566190149557354212812482218568577263412802676072092824438826362788106625345066467727789258460551135902116876188425340113639931692913189919664142663638442724316612310664449136896951677550235918642162995049238264029634858046113401242567900047528060555287619662603681746132789103481894743474202147194118888177102446780097884374766335791538166576730272590064349313778412822102656012833524867720436833594297581407086029085112 -> 2442590512156701117031630849457190212515631854179642736927154149600700440091117348527893566301678725981445363707396308072362064192627996877900528379016271258485843917542590411330025226643520492807062043420095626267157212566054324457494027542423685584382725824987540264001060298472929399840148814277659779127514160521181701323428366451327159041320060056644755701962798811149306267781505838684110713067807827509356119600772484650829145745413269832979319281624763361480271814777357901600682023418709682284211749387582567399379397894854112063802397034107651634935041161377371024226477566190149557354212812482218568577263412802676072092824438826362788106625345066467727789258460551135902116876188425340113639931692913189919664142663638442724316612310664449136896951677550235918642162995049238264029634858046113401242567900047528060555287619662603681746132789103481894743474202147194118888177102446780097884374766335791538166576730272590064349313778412822102656012833524867720436833594297581407086029085112 +bconv41 baseconv 1462596005916429283054005263808163790493085277256453231136362550444441480911829345109591443209796206205996143605788272858462497102864836795580099108512867538985462460363572315797203463773416440512322096023170114565728430816931447392396454835561720670509142744287685313449298723358830190249313246457363242751828143859005804986813506198858810729333044170595730067552746331339779262417663260428610802775987697888879236785196789738964310600898237498919472772068139976011639976778386479608473763074300198139260661071265553356985348605590760754943853558347054379167855134033261973633120450687421999069146171053425998897271329228658178816747182297407815193265700669387893404841784049557008406972044325991980080200988020008211292852743534484626844455596854632964242521958009293964957224894494458576450042252938179217444854374907750450945728230867014663890313627130176356366699203739386867786915282879269309616437139780723092928085008432838059345028268923873475499721481787352411901385169430155594273302889117 -> 1462596005916429283054005263808163790493085277256453231136362550444441480911829345109591443209796206205996143605788272858462497102864836795580099108512867538985462460363572315797203463773416440512322096023170114565728430816931447392396454835561720670509142744287685313449298723358830190249313246457363242751828143859005804986813506198858810729333044170595730067552746331339779262417663260428610802775987697888879236785196789738964310600898237498919472772068139976011639976778386479608473763074300198139260661071265553356985348605590760754943853558347054379167855134033261973633120450687421999069146171053425998897271329228658178816747182297407815193265700669387893404841784049557008406972044325991980080200988020008211292852743534484626844455596854632964242521958009293964957224894494458576450042252938179217444854374907750450945728230867014663890313627130176356366699203739386867786915282879269309616437139780723092928085008432838059345028268923873475499721481787352411901385169430155594273302889117 +bconv42 baseconv 6003440810579011357507045403594805569479648469548145659676314975675693669555605403166849635619463768037287447283683759357892495488674382913703398731670134123141633248425059632858763785915841384370326798634937968413231654866526023610017045668366783935939450996424348449643388869278053038184741175697746596458028747658017251818090466912148886719813072540787397893148925658020888581382326398733953832989597079154000589107618102335200280135656609005288720668870933525199198931539113380157211442403200039476461777632567144891933528540531448462768277557245603834570087318563441866125250097881324642417557294031750278828906131619039336845594064848455503179335543707564986761779010789905209005665864612210671498279664536789564345869843664582285468055022400799042951851597918357849630840726094858848176940153919452364777054495261694861761379110185958789742113858039058125576792142784114673447347031879914005772415291291687621557738375491780919053257837439454060608958364580485351551249595826247169397001297650 -> 6003440810579011357507045403594805569479648469548145659676314975675693669555605403166849635619463768037287447283683759357892495488674382913703398731670134123141633248425059632858763785915841384370326798634937968413231654866526023610017045668366783935939450996424348449643388869278053038184741175697746596458028747658017251818090466912148886719813072540787397893148925658020888581382326398733953832989597079154000589107618102335200280135656609005288720668870933525199198931539113380157211442403200039476461777632567144891933528540531448462768277557245603834570087318563441866125250097881324642417557294031750278828906131619039336845594064848455503179335543707564986761779010789905209005665864612210671498279664536789564345869843664582285468055022400799042951851597918357849630840726094858848176940153919452364777054495261694861761379110185958789742113858039058125576792142784114673447347031879914005772415291291687621557738375491780919053257837439454060608958364580485351551249595826247169397001297650 +bconv43 baseconv 1930892885265622374044276870708337676283054679224386140053737953615882043569381134303993837045456520856063047650681085219439772289937295606119679527330113425798200499528366612606121904949118540780503011582572413765829037353442053804510263297888686630112839583898430467193615188808253166230639918940163923079913258367053098008008173327297371624183766421877813335411189617019649376072615805990005572079758249229689651653372624609354711132895085329722336426040525879603161827164960280164963826549155566469261174705834914448951779376194003732655331797515490820674887867133338858007686956496864655359146346438455899180907824046602740623937279566625725396576115363574082270342406526226783556135822375085497434833101313279873573516807009956992364962667056138144871066089118413655606360609484287233946958758510470849284132404254082493410759636089433559684148907763897378324494293431521337570825568677336980158347725143065207700294931436564337134040121552210547924978034399816125896806583156081026937672968723 -> 1930892885265622374044276870708337676283054679224386140053737953615882043569381134303993837045456520856063047650681085219439772289937295606119679527330113425798200499528366612606121904949118540780503011582572413765829037353442053804510263297888686630112839583898430467193615188808253166230639918940163923079913258367053098008008173327297371624183766421877813335411189617019649376072615805990005572079758249229689651653372624609354711132895085329722336426040525879603161827164960280164963826549155566469261174705834914448951779376194003732655331797515490820674887867133338858007686956496864655359146346438455899180907824046602740623937279566625725396576115363574082270342406526226783556135822375085497434833101313279873573516807009956992364962667056138144871066089118413655606360609484287233946958758510470849284132404254082493410759636089433559684148907763897378324494293431521337570825568677336980158347725143065207700294931436564337134040121552210547924978034399816125896806583156081026937672968723 +bconv44 baseconv 2128227718880978172629569009101386129143469234047390236985319375081177949255510453146383788406609947830533487946455389647682136675926151876852531056245602176864341646343141309108774297708682259144074848037053716758025297456975761252357335049185823413855793719540456150689763418336345199422245944040220946851227237340366200429484312712081027397321613346477994953512662199783059086828893414729699164757569347048637823566802714179220106095037167923898922319932535318738314133649360497390557153842876264288428047914295018316303728959460861503574522265258336207538910569918423404057814212814078255301175332947024499579836359543804035693201050965026371115670432220956677786149554262014180333503694551658670391204832002197527472206767629703047951711058347082547942544644031172338316258574999017084310088218727010871325879665511714828811142409366445563656896405327456802775618122951317858799233671931686432030388516513809176520437516753761846046491224541379217318649959162716304211059558486737090124874713619 -> 2128227718880978172629569009101386129143469234047390236985319375081177949255510453146383788406609947830533487946455389647682136675926151876852531056245602176864341646343141309108774297708682259144074848037053716758025297456975761252357335049185823413855793719540456150689763418336345199422245944040220946851227237340366200429484312712081027397321613346477994953512662199783059086828893414729699164757569347048637823566802714179220106095037167923898922319932535318738314133649360497390557153842876264288428047914295018316303728959460861503574522265258336207538910569918423404057814212814078255301175332947024499579836359543804035693201050965026371115670432220956677786149554262014180333503694551658670391204832002197527472206767629703047951711058347082547942544644031172338316258574999017084310088218727010871325879665511714828811142409366445563656896405327456802775618122951317858799233671931686432030388516513809176520437516753761846046491224541379217318649959162716304211059558486737090124874713619 +bconv45 baseconv 7112587341013296417883245182232309783033995891092827757735876586944732473748852580345349727993045804248235460727849956179351797880089092025905050220767567285788610972388919790514222434712795678499763686954349499281233857416743630743869400345495572042052411489134144398206084278219131423706940555811702842830805369366275914731128575866358256373239221396704487315057967528991822896730011283375924641204237077417754943121107202767085963141560239532697411010265224271452605423395383338254654603950322214155932723380004506694999620298247780633960338603844429486610040620953645606117414661494286718975579038062506022214247012470633767236546689354833800031601104523742558795104907734575644657628841467033297753882104056251390806528769232910604156190689097743027105720795902968216955803157762556227964539497343869985712107305303563757051687019953021473872487217729507570616444319917712343886700447518225671217138499687269609878420165040533953524324115454492503091456814698467434773089473777616514837129305594 -> 7112587341013296417883245182232309783033995891092827757735876586944732473748852580345349727993045804248235460727849956179351797880089092025905050220767567285788610972388919790514222434712795678499763686954349499281233857416743630743869400345495572042052411489134144398206084278219131423706940555811702842830805369366275914731128575866358256373239221396704487315057967528991822896730011283375924641204237077417754943121107202767085963141560239532697411010265224271452605423395383338254654603950322214155932723380004506694999620298247780633960338603844429486610040620953645606117414661494286718975579038062506022214247012470633767236546689354833800031601104523742558795104907734575644657628841467033297753882104056251390806528769232910604156190689097743027105720795902968216955803157762556227964539497343869985712107305303563757051687019953021473872487217729507570616444319917712343886700447518225671217138499687269609878420165040533953524324115454492503091456814698467434773089473777616514837129305594 +bconv46 baseconv 9699288818276549854335689312945720612571723333931837850529527838873671037566723448610470079396905442950474748706261218079965212657261363655245609034355289244097850206849861185177403434574663556540080597408594579455205712986685487089063400429329730101790849132445713357615860421911863085671131257406207115244013612859267252279732772534348928722883003176038407444582875372461733415683919034177576403950680584882467523210858382654713352234314791425722801777115064170561469572261573844372912528339829198527630890035503396746623001614611640932670232575753384499266601465252231641070361581852054970601407304902021418332566990260912846249837163861932304560797307269825128659595763262962299723570449585845050624429301701413517396256479143720522301033345949704239045155777395853731596108617475273683187458065030875232370157646494259806603125903365610269141807735679317778141172544543397902942704682859135824741836177986154805397512883137015835421200052821416178485135192529026808448820444527873359559175547176 -> 9699288818276549854335689312945720612571723333931837850529527838873671037566723448610470079396905442950474748706261218079965212657261363655245609034355289244097850206849861185177403434574663556540080597408594579455205712986685487089063400429329730101790849132445713357615860421911863085671131257406207115244013612859267252279732772534348928722883003176038407444582875372461733415683919034177576403950680584882467523210858382654713352234314791425722801777115064170561469572261573844372912528339829198527630890035503396746623001614611640932670232575753384499266601465252231641070361581852054970601407304902021418332566990260912846249837163861932304560797307269825128659595763262962299723570449585845050624429301701413517396256479143720522301033345949704239045155777395853731596108617475273683187458065030875232370157646494259806603125903365610269141807735679317778141172544543397902942704682859135824741836177986154805397512883137015835421200052821416178485135192529026808448820444527873359559175547176 +bconv47 baseconv 6012799035139312429408326100257968664231666805057439792483213815042270918792694072622746198116690858047740979869592179482969378755405781085012423013173159696912201318596213081729955668285664859222243423381961343546392744009362817402886453764593862659023853506617447213980074759411478539726305201023070687695279666917686153683068397131632283986621757986801671184822751122332173509257168047679456674846132812446247797046271167539796175037555388918845918920571997379903940944779260648853602433108445980296135729084763891100633805693090404443549368445317362362032070826663170050830091349576633574615281516156191698366157107533728535833879382481125878664850322681467757166471946133948443770671926735438131535304787064914914618089457619620184797550793853420182857316190339257471208275157532556031228171503075040002707917871856288915141013737178161590777415951604123532905781111565862521604155127860595697415897753828827196258455318546805457423115266536992316405693037520374676817264538718440628427782624090 -> 6012799035139312429408326100257968664231666805057439792483213815042270918792694072622746198116690858047740979869592179482969378755405781085012423013173159696912201318596213081729955668285664859222243423381961343546392744009362817402886453764593862659023853506617447213980074759411478539726305201023070687695279666917686153683068397131632283986621757986801671184822751122332173509257168047679456674846132812446247797046271167539796175037555388918845918920571997379903940944779260648853602433108445980296135729084763891100633805693090404443549368445317362362032070826663170050830091349576633574615281516156191698366157107533728535833879382481125878664850322681467757166471946133948443770671926735438131535304787064914914618089457619620184797550793853420182857316190339257471208275157532556031228171503075040002707917871856288915141013737178161590777415951604123532905781111565862521604155127860595697415897753828827196258455318546805457423115266536992316405693037520374676817264538718440628427782624090 +bconv48 baseconv 9919394750026539849552058455142940324804986571394146734628754344884646129540400337188573364384561996629039095484437976838304650267728321324191047492663324697670111224036571949665757517933624370846329296385209317493614452164214622795872352397017525424549137284622743275020996362070081098391439474505221996370196413894684409813360621865922609919658943625701299246634886899150971300063436178595755371976507876544993206828666232702345634907634016774125072429477776468884933618770823018417034257551062282973819554186921879150158146766003769219942048692257272315579679979987502091101699905187309180177277825457017735666405381257212572932433565510486149731214728374524199255191936645406037686369644679402896649555424732277973558272877575566703028017795012846122920442198905343668575803772622886054047408712883224036607929724589831999397971347481661567991667748120359375944349813628143741283558304215254421311864953294659525889872672012252796647940635491318957571904128683274444276904072274816298139561026992 -> 9919394750026539849552058455142940324804986571394146734628754344884646129540400337188573364384561996629039095484437976838304650267728321324191047492663324697670111224036571949665757517933624370846329296385209317493614452164214622795872352397017525424549137284622743275020996362070081098391439474505221996370196413894684409813360621865922609919658943625701299246634886899150971300063436178595755371976507876544993206828666232702345634907634016774125072429477776468884933618770823018417034257551062282973819554186921879150158146766003769219942048692257272315579679979987502091101699905187309180177277825457017735666405381257212572932433565510486149731214728374524199255191936645406037686369644679402896649555424732277973558272877575566703028017795012846122920442198905343668575803772622886054047408712883224036607929724589831999397971347481661567991667748120359375944349813628143741283558304215254421311864953294659525889872672012252796647940635491318957571904128683274444276904072274816298139561026992 +bconv49 baseconv 9233174483737664461625491046802593032578513416662868428994454671378779885631770646941186092718999934888583814715078081648273971810519569902944988673898344036411072326423644291415014771543710084101170197629453857189931052534827770762365497154770603400348185449568970993183249727025554733171076452528668427455303649865923792513669598337391437655324765818931261843079215552927774686787228690905262330190342601372125213353984288927685907074288555016734268380281858164038900625101200147614610331209521799116234489953907220176353809588001367624586415959134731122658518092822318659909563698161843077449455322965542971382450698296201138028978284392955864602626064490594872745888896108166301294814816943809622727265685427875062812097156800905035015577685504710899621905621276607080768286942946472561061238087950967465213808137167802398460211175386983617931863300945063575271565521877968104325881605480106370465224713852826459139171485188400225500972039078132716184835809441358637096071619898150348255381588795 -> 9233174483737664461625491046802593032578513416662868428994454671378779885631770646941186092718999934888583814715078081648273971810519569902944988673898344036411072326423644291415014771543710084101170197629453857189931052534827770762365497154770603400348185449568970993183249727025554733171076452528668427455303649865923792513669598337391437655324765818931261843079215552927774686787228690905262330190342601372125213353984288927685907074288555016734268380281858164038900625101200147614610331209521799116234489953907220176353809588001367624586415959134731122658518092822318659909563698161843077449455322965542971382450698296201138028978284392955864602626064490594872745888896108166301294814816943809622727265685427875062812097156800905035015577685504710899621905621276607080768286942946472561061238087950967465213808137167802398460211175386983617931863300945063575271565521877968104325881605480106370465224713852826459139171485188400225500972039078132716184835809441358637096071619898150348255381588795 +bconv50 baseconv 4773658278267840002596036440176553049013426168298463110992745530786499996857199722504465481275650863282552047289724105114259623114005344649606813472938151621041967905622779312365722730289368336279925000458546320360056506069925427256580562634411935582542300196189152299314961795119325701328593698002218043478211457414754552966763206603095932725768743291305948609920384730358957797020700925464444812450821593661398590529274762767668597215639639084924608296382635924407219898992048052975945795107027548030708406334455622458269822952244015740356221979997678070562061554243501720016988968531585381453053334104779910362463875486237634715139906783301119338089394658517426762218059409611442563091275992906197855105490612045994640670289334486317618559948192751887921347168729185624688493459329011641553734663884742554821014707290494285796089868419253588155541647852437659744082278785414647162099078322033267444285186226158971247217268779735644236987556103812085393444197218249815769366683183205051298829531546 -> 4773658278267840002596036440176553049013426168298463110992745530786499996857199722504465481275650863282552047289724105114259623114005344649606813472938151621041967905622779312365722730289368336279925000458546320360056506069925427256580562634411935582542300196189152299314961795119325701328593698002218043478211457414754552966763206603095932725768743291305948609920384730358957797020700925464444812450821593661398590529274762767668597215639639084924608296382635924407219898992048052975945795107027548030708406334455622458269822952244015740356221979997678070562061554243501720016988968531585381453053334104779910362463875486237634715139906783301119338089394658517426762218059409611442563091275992906197855105490612045994640670289334486317618559948192751887921347168729185624688493459329011641553734663884742554821014707290494285796089868419253588155541647852437659744082278785414647162099078322033267444285186226158971247217268779735644236987556103812085393444197218249815769366683183205051298829531546 +bconv51 baseconv 4094632320924064153761231911482497424314155152945311409551117897660105799751969320171226955014798077982639167608005744221327478580375399026267976689267238211480059795214306669550534361985335416113038520986095059405970306009985490908365755476437328846069538640672353505815812249332294876658407928179340284505072011585167835381010050566490494460274903264966736917232392936579095090524244294501459999891722297108322353817841272816011373661381933022572644403117108688081966160271042655834436305801080916634851382251588543921880768626480132642125936708057518447156537219322320111782473245369234467277066637895823964338340997097539202626954866557695983360175782798393450788228730902161785358425995318732639722818484711563865933227574822771278911983032986071767547298642644476322126039464627551377202504803512892500870402035403985038976381803246692556945361050113256801199120635778734800904433729075919834676133534773946450517427393564388258302574628466258341020331104746426178407338616654459452059342798475 -> 4094632320924064153761231911482497424314155152945311409551117897660105799751969320171226955014798077982639167608005744221327478580375399026267976689267238211480059795214306669550534361985335416113038520986095059405970306009985490908365755476437328846069538640672353505815812249332294876658407928179340284505072011585167835381010050566490494460274903264966736917232392936579095090524244294501459999891722297108322353817841272816011373661381933022572644403117108688081966160271042655834436305801080916634851382251588543921880768626480132642125936708057518447156537219322320111782473245369234467277066637895823964338340997097539202626954866557695983360175782798393450788228730902161785358425995318732639722818484711563865933227574822771278911983032986071767547298642644476322126039464627551377202504803512892500870402035403985038976381803246692556945361050113256801199120635778734800904433729075919834676133534773946450517427393564388258302574628466258341020331104746426178407338616654459452059342798475 +bconv52 baseconv 1195613688712462370161881989925595018995105996850531625209796544182902722193333496655703994623218098757350402402950600588390877213543585813175138154458884174772267583594117191629444294127019377440741892920797253096788840241362167172038198667965230928623364722367646125901761673811034885568702695161278732811884582700694847207660776903749095158752349819697283655239795988638699223941749918908012797892210965773604361822040016295912734277810151708448558789993471291953795386882139051352772553837769661718023417800292552016824846816764941873111114865589826347435137197824596658991275586878913761283282081547885379536437285882792873729874288784602528175738888625608623385170906876256297949136252314631085815621667525299521107807013095240141718850397972742263082543264403546582365503126458148009758981553535042838763563351858626379566066470859529696677757807101362322543604477402978708033954224787673687076159457061279844958619284891322053759905277576341377532876889612956634317541515974021649226322684382 -> 1195613688712462370161881989925595018995105996850531625209796544182902722193333496655703994623218098757350402402950600588390877213543585813175138154458884174772267583594117191629444294127019377440741892920797253096788840241362167172038198667965230928623364722367646125901761673811034885568702695161278732811884582700694847207660776903749095158752349819697283655239795988638699223941749918908012797892210965773604361822040016295912734277810151708448558789993471291953795386882139051352772553837769661718023417800292552016824846816764941873111114865589826347435137197824596658991275586878913761283282081547885379536437285882792873729874288784602528175738888625608623385170906876256297949136252314631085815621667525299521107807013095240141718850397972742263082543264403546582365503126458148009758981553535042838763563351858626379566066470859529696677757807101362322543604477402978708033954224787673687076159457061279844958619284891322053759905277576341377532876889612956634317541515974021649226322684382 +bconv53 baseconv 9499948044070535829617658000073109388317255533160818696004171990892444262466607310445073849981215946633688695059200704326207268272467694691711467087588393758881402434320715744255627690972846993619574537577977178962699161353713899897882183029682903217684523509563381983591114043081050894274344052322317793108904274522259440485781988975321013758944115257129413072546837038124957996751661675596274644497454059997227485645057080907724179993648305437705913134560410868578230840879348358091075170490814100259026828359851846141277765511289021492304068252204856885435121179719724905800150881050023353662023536789236444228860979703993824481841123900294830611488945988856246089733108517317304084609460862729147676217177998497864969056268945139843653602853863265637886328346845623285779260759566732055222069904458152147777699053937960838302815509944344571404628883046719473910600938845106101632722848805019593861914735528570426575802280782817868889233462099542164101168156251956011717993122439249891502735590307 -> 9499948044070535829617658000073109388317255533160818696004171990892444262466607310445073849981215946633688695059200704326207268272467694691711467087588393758881402434320715744255627690972846993619574537577977178962699161353713899897882183029682903217684523509563381983591114043081050894274344052322317793108904274522259440485781988975321013758944115257129413072546837038124957996751661675596274644497454059997227485645057080907724179993648305437705913134560410868578230840879348358091075170490814100259026828359851846141277765511289021492304068252204856885435121179719724905800150881050023353662023536789236444228860979703993824481841123900294830611488945988856246089733108517317304084609460862729147676217177998497864969056268945139843653602853863265637886328346845623285779260759566732055222069904458152147777699053937960838302815509944344571404628883046719473910600938845106101632722848805019593861914735528570426575802280782817868889233462099542164101168156251956011717993122439249891502735590307 +bconv54 baseconv 9681201181288346238161618847971252079317053722777557174860050929517087306003145811583730887554415412269163431310799022759645846508317654822005885690593660193203383584985052675972751012352733288376108146387509156887573116718157199749463765692840989210380774368587807627022401100844443165415781580743816277319667896566395177315449714696435758046861792630882362577222571381967245774608562450349980070290137767329706127528142322516034418205531204936537427350594715389389268666157501423000050981301720365257282545283855204948055125079972651075438323727489171453110884626111787922656372832138247128006763899488284285499432101730775536338063332412034139072744076207749172013795264917873150993264260711793377486271966928067095067225572100261255699461391011000420331725377560660886964853448763697738150442124085830891499994860379939366382720146286282434365772277730713332022886013353980598584107551105313755807966583991388879640960170881288132894265099953913547962938038542484006000610516526113737536843753800 -> 9681201181288346238161618847971252079317053722777557174860050929517087306003145811583730887554415412269163431310799022759645846508317654822005885690593660193203383584985052675972751012352733288376108146387509156887573116718157199749463765692840989210380774368587807627022401100844443165415781580743816277319667896566395177315449714696435758046861792630882362577222571381967245774608562450349980070290137767329706127528142322516034418205531204936537427350594715389389268666157501423000050981301720365257282545283855204948055125079972651075438323727489171453110884626111787922656372832138247128006763899488284285499432101730775536338063332412034139072744076207749172013795264917873150993264260711793377486271966928067095067225572100261255699461391011000420331725377560660886964853448763697738150442124085830891499994860379939366382720146286282434365772277730713332022886013353980598584107551105313755807966583991388879640960170881288132894265099953913547962938038542484006000610516526113737536843753800 +bconv55 baseconv 9131179347186210485354210531777409248283891976203783883553115821608718394283063228562203489420222087084600990598305683322930387205130447096251049481363203196834826757279518719511343992308741248697636433448891267876466457401127568360744155389333217218128820449012892657912424463449376577410301520164080629507138989219074296499522628176569327029008331113882681648558407635554283787639148011707933930752800329014763489669481545570477667563590991337877228940697488891269849643170902977953915538333408880556432346215005831215070180867380833561702241985225082739337224042085880239885734640381830484675976025427641832856929523400894091124961471976444480347814448787528993867409615566713022804642931330884278066080994760159529192295843357999713728956647790190859132479256973735030555572809285144239734673899611474854555418022761308707617796517809089243177699754503820322479457721748975076737681001289558455380655260960564294960096247406484175680073943389491185479014080674905450920168137074522193495576699698 -> 9131179347186210485354210531777409248283891976203783883553115821608718394283063228562203489420222087084600990598305683322930387205130447096251049481363203196834826757279518719511343992308741248697636433448891267876466457401127568360744155389333217218128820449012892657912424463449376577410301520164080629507138989219074296499522628176569327029008331113882681648558407635554283787639148011707933930752800329014763489669481545570477667563590991337877228940697488891269849643170902977953915538333408880556432346215005831215070180867380833561702241985225082739337224042085880239885734640381830484675976025427641832856929523400894091124961471976444480347814448787528993867409615566713022804642931330884278066080994760159529192295843357999713728956647790190859132479256973735030555572809285144239734673899611474854555418022761308707617796517809089243177699754503820322479457721748975076737681001289558455380655260960564294960096247406484175680073943389491185479014080674905450920168137074522193495576699698 +bconv56 baseconv 7698481258094403146365746957977140035675796188881949778279935692808725784247515527819944562646011182663822531793263915434304355340291172618174931130844883140400247300549821476375442490954876902556476720921530658747115171765087488876716545522533746049599568630405953005112902419025791888416044080669819858398123657778169254521282596436578106024316545969926320705196456992531493761155668147188247840593428124249756379938842449859258119623184923042737905971203254863348745747421111929956698767393089978716676780828671351164885913152462462970708833107693224111710452702145778997946491053290885718435918239667278439042874425410167830101967149409121922256716787347830534295885467397602486213807441252894485407823396393272217807341761687939062732449152739912158220633573465017341816078943803097741526255278101589441598502485919872153523958049458445978757638395812408691442581519625719785599517630840215791101031430981383362964880463874948001263987606863863271828983508557349586533621931953310262239703681564 -> 7698481258094403146365746957977140035675796188881949778279935692808725784247515527819944562646011182663822531793263915434304355340291172618174931130844883140400247300549821476375442490954876902556476720921530658747115171765087488876716545522533746049599568630405953005112902419025791888416044080669819858398123657778169254521282596436578106024316545969926320705196456992531493761155668147188247840593428124249756379938842449859258119623184923042737905971203254863348745747421111929956698767393089978716676780828671351164885913152462462970708833107693224111710452702145778997946491053290885718435918239667278439042874425410167830101967149409121922256716787347830534295885467397602486213807441252894485407823396393272217807341761687939062732449152739912158220633573465017341816078943803097741526255278101589441598502485919872153523958049458445978757638395812408691442581519625719785599517630840215791101031430981383362964880463874948001263987606863863271828983508557349586533621931953310262239703681564 +bconv57 baseconv 933060065234974016527711181504861388575102533129269785690302853498231817991947134292360950952101856967471244204652651492419507477989654620300897029910053158332011692601890477477147945347999269327709901969327382754998327046975300678322909722108001744075925483360331204154845618260578492569073508334779352167710947459548176844365443214086024243662366377809095464958025600961255772796769885300359015274605474487418721963066379476080375768055363700277522433801169869102150019595086994654926696439957345818046850460716296421098186533879009817972807294964864576668139398923125135995382958840548745127688451323438746558538934566101891264719832906741260833070035253803704214869788019686954032417776112581957940384236798658123199892655171797413164797100216826009596975610428188835267699359831720631410631897874655923509768303338960725077826723216786174737775813075634307466711571597587069966729884533501458825498058239488183915990645833750784838766328587800878774469119447579906874342772359035662967114904022 -> 933060065234974016527711181504861388575102533129269785690302853498231817991947134292360950952101856967471244204652651492419507477989654620300897029910053158332011692601890477477147945347999269327709901969327382754998327046975300678322909722108001744075925483360331204154845618260578492569073508334779352167710947459548176844365443214086024243662366377809095464958025600961255772796769885300359015274605474487418721963066379476080375768055363700277522433801169869102150019595086994654926696439957345818046850460716296421098186533879009817972807294964864576668139398923125135995382958840548745127688451323438746558538934566101891264719832906741260833070035253803704214869788019686954032417776112581957940384236798658123199892655171797413164797100216826009596975610428188835267699359831720631410631897874655923509768303338960725077826723216786174737775813075634307466711571597587069966729884533501458825498058239488183915990645833750784838766328587800878774469119447579906874342772359035662967114904022 +bconv58 baseconv 8038883002615703704817711911862573631598184532350530435306304742662761818506174740863161107218710591248429474505869142723362424325841608986479857960340812641468931707190856706113567181455663070048287958372239286426769745993344743936462361053162189475316360905577571414784434483605897269253415951627848309488238434241192539532390023707334930322340000989678795699670766612923333981370826878119568603663472145271623717616272357589311783113717275449073067014302505545212079840411851799030366865310043311737018881443143136533978313467111615432603601780757592400884052464821716864423403504520457105469054108324607400721053286538855433939074319618679512117954764457949331315493994536161026129900444056136076609980797546548783741551076295788967514999946510347511692235187508755164405085762930985940197444382124442591154480251201633180499607295170306628565018408429501895249294819056998450607556849233313831723351853975510008950914639767759938908141988175121511842989185772928894936186997526905376566482897707 -> 8038883002615703704817711911862573631598184532350530435306304742662761818506174740863161107218710591248429474505869142723362424325841608986479857960340812641468931707190856706113567181455663070048287958372239286426769745993344743936462361053162189475316360905577571414784434483605897269253415951627848309488238434241192539532390023707334930322340000989678795699670766612923333981370826878119568603663472145271623717616272357589311783113717275449073067014302505545212079840411851799030366865310043311737018881443143136533978313467111615432603601780757592400884052464821716864423403504520457105469054108324607400721053286538855433939074319618679512117954764457949331315493994536161026129900444056136076609980797546548783741551076295788967514999946510347511692235187508755164405085762930985940197444382124442591154480251201633180499607295170306628565018408429501895249294819056998450607556849233313831723351853975510008950914639767759938908141988175121511842989185772928894936186997526905376566482897707 +bconv59 baseconv 3477288854142490731453308883604363698829751766397042638356876850253912557247338116551870168124821056569996127469054311240879102450555238300980462038688068892262081046868630684935628207580363505258992064419769627794897173468730321524808387787706212803483062494226962378618607525039870400474223230921014856338958898766196395346023554116745162253468600784948922588126784720086522242771739618218637975556141323164020918978810455895710128282250206188167283189016982398737778938951187522454071794866807921318653478181070731398786350212822997212049193363719826518933973592933142062520193167778907208306443678518305032512335600961537825398303714858137969205446132451238421168442970087648162807376073119731016520674014003957964377493704707532556500892902334141487232605571926679460386872574429475589785505829312766948386930506654715547070137679370245359252654594742352109687646797295779853417079877636193674529230294434802044049588573118533569908762506547935107248958418026330435976254859127497135719090406579 -> 3477288854142490731453308883604363698829751766397042638356876850253912557247338116551870168124821056569996127469054311240879102450555238300980462038688068892262081046868630684935628207580363505258992064419769627794897173468730321524808387787706212803483062494226962378618607525039870400474223230921014856338958898766196395346023554116745162253468600784948922588126784720086522242771739618218637975556141323164020918978810455895710128282250206188167283189016982398737778938951187522454071794866807921318653478181070731398786350212822997212049193363719826518933973592933142062520193167778907208306443678518305032512335600961537825398303714858137969205446132451238421168442970087648162807376073119731016520674014003957964377493704707532556500892902334141487232605571926679460386872574429475589785505829312766948386930506654715547070137679370245359252654594742352109687646797295779853417079877636193674529230294434802044049588573118533569908762506547935107248958418026330435976254859127497135719090406579 +bconv60 baseconv 2221677747105253129991515895693385979724569432871380145709909530718311585737091713910399124294042457324430994460227074311444159889978483406629658751979986239680446734362375834578888485942564923457487781596423838203566853720781873224044052672664400055133298055288707561289476262511234729770857032076646438500888728322780583472810650158149544948348663360428127471726298380951465255539111140213958366265212137414548632842795281686274550071712160716669612293857952305282110342158240658908386925452263475209078348983063626076468083029240178143711647154226024682823666302924167928636391856500834843184981831601237807608871142898575842709404694094185754791961333009838578605964109011402622847017624478134015740283536363293627429540669280077722066831975856915393445006214492479475917786673418444578474035460021619978830224347366734838082892207246779092722149983149009420076091239392491088817325961950998424399462798695556389318078759893647649874540162041951424428718699396905706394685347502799434450024607265 -> 2221677747105253129991515895693385979724569432871380145709909530718311585737091713910399124294042457324430994460227074311444159889978483406629658751979986239680446734362375834578888485942564923457487781596423838203566853720781873224044052672664400055133298055288707561289476262511234729770857032076646438500888728322780583472810650158149544948348663360428127471726298380951465255539111140213958366265212137414548632842795281686274550071712160716669612293857952305282110342158240658908386925452263475209078348983063626076468083029240178143711647154226024682823666302924167928636391856500834843184981831601237807608871142898575842709404694094185754791961333009838578605964109011402622847017624478134015740283536363293627429540669280077722066831975856915393445006214492479475917786673418444578474035460021619978830224347366734838082892207246779092722149983149009420076091239392491088817325961950998424399462798695556389318078759893647649874540162041951424428718699396905706394685347502799434450024607265 +bconv61 baseconv 6446426203289022446944067871143037197618879166339874942086353847795290392527959325029947698985308278846383220354110601969138538949515123246333393559033666825374012551874900736878906311861971570062529195539956496704084300526582979150268755442065197947576476977166189713910679324122537049102391846344751779647915441175433890634271937654404329151036204407030790779486345967708651224904900903129117720763070841983481288288520372542887040574173556498319598074362332329040146022921765486281866963787213166610242675725213895679450714775512693266280058498003067425875076428907692828653495669685206937799319736371497416359037957424730850136602011598552974929360355776735376606974424054225673374202545263533459147680029943487405708869153706759472899551787354983815693536947175964416495988451139846884463710485969246475516974062004682822653887489507084088674228167842611112165393235719739369051338188836762977960293914749720683073799488793694630490483906002952032073744224976302710045176228512962355488343205725 -> 6446426203289022446944067871143037197618879166339874942086353847795290392527959325029947698985308278846383220354110601969138538949515123246333393559033666825374012551874900736878906311861971570062529195539956496704084300526582979150268755442065197947576476977166189713910679324122537049102391846344751779647915441175433890634271937654404329151036204407030790779486345967708651224904900903129117720763070841983481288288520372542887040574173556498319598074362332329040146022921765486281866963787213166610242675725213895679450714775512693266280058498003067425875076428907692828653495669685206937799319736371497416359037957424730850136602011598552974929360355776735376606974424054225673374202545263533459147680029943487405708869153706759472899551787354983815693536947175964416495988451139846884463710485969246475516974062004682822653887489507084088674228167842611112165393235719739369051338188836762977960293914749720683073799488793694630490483906002952032073744224976302710045176228512962355488343205725 +bconv62 baseconv 4058163341381129988163925181756534464821836830006112445399258125431199638977501538393833228651413348457942321559851603718519535685103294979426663988236497444112625420266257454931961604662935390106351137623206154017299678697090098122349589355298594817912461376487326627468956250288327115841039050839112583124161440117194561258184595566402806102882764334701154619759831535664108595086632091264110374173206374670920920753739197576276401902436609025037848621163010251140662292582615590273551834209681778927596896029873019754707570866120017453538393386512697720377539679664306184483075656672585127596958196904387044715504671353729194771737085689602383400560094063808145252520880489766128458765096981033662005102471346162930149407010064628165779721236051368024416609686846658331125401250706356927765990923632248406753711318575521543531367744508193411411852270736842910798723297818618598991061140777380210327008583967028167436981722517506960790579392485398385850481559309096608615138313611697766282570836002 -> 4058163341381129988163925181756534464821836830006112445399258125431199638977501538393833228651413348457942321559851603718519535685103294979426663988236497444112625420266257454931961604662935390106351137623206154017299678697090098122349589355298594817912461376487326627468956250288327115841039050839112583124161440117194561258184595566402806102882764334701154619759831535664108595086632091264110374173206374670920920753739197576276401902436609025037848621163010251140662292582615590273551834209681778927596896029873019754707570866120017453538393386512697720377539679664306184483075656672585127596958196904387044715504671353729194771737085689602383400560094063808145252520880489766128458765096981033662005102471346162930149407010064628165779721236051368024416609686846658331125401250706356927765990923632248406753711318575521543531367744508193411411852270736842910798723297818618598991061140777380210327008583967028167436981722517506960790579392485398385850481559309096608615138313611697766282570836002 +bconv63 baseconv 8406950892755523931376660654037202098146387857439041752733701540164535058871001088360557390059591304703327011597655300786583404802671361628304338238650834015763131261435738978120016074160349801814322881813215090602918833106312246883246662968423408218102590560005828415774667214358058816218908165140407741028808386573410234772695087736341345800546853400051852565435946321779856248773388131084478853534737063051919742708670239574091146744341484353507359591305645142329283716514049206525995125513678543179711673298132835805657558187822034894673063830270667077717144507131374867555857497241487349223175635123368379509733451513266131470778295874125292318184104285420415290106787149190632979426143432938539130082705142904692619987384214682396023421584099098106616997004420242583521086733427222102959507383836702741247378945251155207199029372749396016571483287604421094881805186053193055926290766231497649774874142816117601569504204785571109899954674170905188244667375034493358961286678829349195105698569686 -> 8406950892755523931376660654037202098146387857439041752733701540164535058871001088360557390059591304703327011597655300786583404802671361628304338238650834015763131261435738978120016074160349801814322881813215090602918833106312246883246662968423408218102590560005828415774667214358058816218908165140407741028808386573410234772695087736341345800546853400051852565435946321779856248773388131084478853534737063051919742708670239574091146744341484353507359591305645142329283716514049206525995125513678543179711673298132835805657558187822034894673063830270667077717144507131374867555857497241487349223175635123368379509733451513266131470778295874125292318184104285420415290106787149190632979426143432938539130082705142904692619987384214682396023421584099098106616997004420242583521086733427222102959507383836702741247378945251155207199029372749396016571483287604421094881805186053193055926290766231497649774874142816117601569504204785571109899954674170905188244667375034493358961286678829349195105698569686 +bconv64 baseconv 5647688966100354364057696188968969015429751356816251620994668637140555851871917355534030523702654179619022948515953760602790154851357593370075652536062282439891965113395509925572338068884604498514271028288558428358683336188255932484378244108914598258026642950898724806096609062135322993895216184994351574543383451289058826354140182936630814334378315448156164414366393500127371296356058022439297207590079530267863802647498160704827735225701131352098900156246616920726629420728242144555825846231688748321741255901840625653736252617643643181798802568589266059683380007034823111463828880641316648151016898222098440888797985538367105598165917764674813454904728893658758599621022207782389612144160989408564639394476394347146791391790897587340385813455563974153162604345037779011378663519524098502262812334457833225038976924794624162776585149230244765098191075549991370014046641083879817819075205118463678334114935856820727294228985903927335458758516518101235510006525099111744003362479932882328513730055697 -> 5647688966100354364057696188968969015429751356816251620994668637140555851871917355534030523702654179619022948515953760602790154851357593370075652536062282439891965113395509925572338068884604498514271028288558428358683336188255932484378244108914598258026642950898724806096609062135322993895216184994351574543383451289058826354140182936630814334378315448156164414366393500127371296356058022439297207590079530267863802647498160704827735225701131352098900156246616920726629420728242144555825846231688748321741255901840625653736252617643643181798802568589266059683380007034823111463828880641316648151016898222098440888797985538367105598165917764674813454904728893658758599621022207782389612144160989408564639394476394347146791391790897587340385813455563974153162604345037779011378663519524098502262812334457833225038976924794624162776585149230244765098191075549991370014046641083879817819075205118463678334114935856820727294228985903927335458758516518101235510006525099111744003362479932882328513730055697 +bconv65 baseconv 4303643024126988377813422678008252137074227312607602958902841494279719418066940860294572640212642986341810157508424117525175727568781972411091870791707959150235359888813728343454667077791290091906713945440123590859266784922331439886087241699669854876593854281538733124785668279591403336336568302343816823470551045529738293770563081676331864762766572662727041867148094538344365432675856819861522023038051110627371108753701062994789389071296990002878768656480929104940365255825579067979693997169155096197312633312996464150383625288961548833164228279244295203251828677253408077267538292334039365205809241284529420311083003350936517276149896533542045491473868435883710276935407588510712498950819735847398823054618846064349494679600895539980821742622931900910741469612604112826527076047997381271355199447570295695672651263700799426192699738726013352555384317577033163225594001365982347480710043230474742810217310250516965581149309286090229155832333270873077496862544454456673571132901197127905894820941626 -> 4303643024126988377813422678008252137074227312607602958902841494279719418066940860294572640212642986341810157508424117525175727568781972411091870791707959150235359888813728343454667077791290091906713945440123590859266784922331439886087241699669854876593854281538733124785668279591403336336568302343816823470551045529738293770563081676331864762766572662727041867148094538344365432675856819861522023038051110627371108753701062994789389071296990002878768656480929104940365255825579067979693997169155096197312633312996464150383625288961548833164228279244295203251828677253408077267538292334039365205809241284529420311083003350936517276149896533542045491473868435883710276935407588510712498950819735847398823054618846064349494679600895539980821742622931900910741469612604112826527076047997381271355199447570295695672651263700799426192699738726013352555384317577033163225594001365982347480710043230474742810217310250516965581149309286090229155832333270873077496862544454456673571132901197127905894820941626 +bconv66 baseconv 5335835484698834876944387633595737636036504202165508279086455820006198045442127520009100419147410481418310384188548200286998275148827760537031777287560961708745676522788474293906099128836292586856951761116483866453754578883428575421057966567029785713601122990542298812305298897558185958135958320187888750093995366388595619625472843981361516921230016506601835539514945240154597661038826270216496857084517022214141028223827296134286120266183100679765421006576219583917546731022060419457554414283660988293753592239015584013028292057752126673644043989399421525099114796194016110250758991374099908959713418677105003232295743420736405802941991296511941478174814055235413811644378166155793547136371895373947683208618280871108974693026337274536234402449637640948433348098220230834897129888411670938495475558490445196033887817289608928795985461110126005249676416480561282969944368908875995104981987298616923906885791503787489529250036531239020442656203742596827949760572879176388068999824193353175642440697264 -> 5335835484698834876944387633595737636036504202165508279086455820006198045442127520009100419147410481418310384188548200286998275148827760537031777287560961708745676522788474293906099128836292586856951761116483866453754578883428575421057966567029785713601122990542298812305298897558185958135958320187888750093995366388595619625472843981361516921230016506601835539514945240154597661038826270216496857084517022214141028223827296134286120266183100679765421006576219583917546731022060419457554414283660988293753592239015584013028292057752126673644043989399421525099114796194016110250758991374099908959713418677105003232295743420736405802941991296511941478174814055235413811644378166155793547136371895373947683208618280871108974693026337274536234402449637640948433348098220230834897129888411670938495475558490445196033887817289608928795985461110126005249676416480561282969944368908875995104981987298616923906885791503787489529250036531239020442656203742596827949760572879176388068999824193353175642440697264 +bconv67 baseconv 9129091747928019647658521399224576461375165290016306906223165566696625834526558333128057952933598410200090827763961361401310443343280365281373936236181125564771699359283222203311361818120518438365620016831594374224828701204091727510634424186798327991718205655447076322053511859816507583554196675368297852454036158180308979651709531932084491488415726926114180975339690954496597653950332090055438059501708751596192253547393886974114215674992857539499149127327172648622584808139655914533962860987370044411883932825928665967576246707952150433909775789244033111097886841015510913489356649504764493139660393909282867438500006930458566961479098010943853253658203508378170139917913005810228284199016726859325182660302051384205209976440472471615133380118443572994088979336213339432663549695022940786447588164053915597304534366557052109427352734925488245976215375939413713456547525640893432265002623220428365126968841314760740005829803839414722416534532318087228727968752113208444581791125880461493882422284019 -> 9129091747928019647658521399224576461375165290016306906223165566696625834526558333128057952933598410200090827763961361401310443343280365281373936236181125564771699359283222203311361818120518438365620016831594374224828701204091727510634424186798327991718205655447076322053511859816507583554196675368297852454036158180308979651709531932084491488415726926114180975339690954496597653950332090055438059501708751596192253547393886974114215674992857539499149127327172648622584808139655914533962860987370044411883932825928665967576246707952150433909775789244033111097886841015510913489356649504764493139660393909282867438500006930458566961479098010943853253658203508378170139917913005810228284199016726859325182660302051384205209976440472471615133380118443572994088979336213339432663549695022940786447588164053915597304534366557052109427352734925488245976215375939413713456547525640893432265002623220428365126968841314760740005829803839414722416534532318087228727968752113208444581791125880461493882422284019 +bconv68 baseconv 6900268356619689735328316924037308197731823978664151646536913448395060888600072144428907591584296316164895762596929158159223240873686583623459715465718416013955231933759988468600214280395215701151779881476822654331428402787838329980501266605629634666039232321654838070390904813276126247705089025960363730017795100421116278990168639641134931401043909104084654864047361458859633461233860093552239801820545348446366618513463235589670924359397456295125078269360780719667676367268772999769827119117523247254472958893414211427072099794161965964526565084372345182751970743069306765132666382655996709403103274830414754150703389454121766348106616371189856004868052566745344982606334278977139056432550805384684663957960585932902801839700120633871029140651911192017752102812898014750252764192143839943538114902737292849329973983868810816104335037222555349216487751849955516160631961554662024099406925850956972723049949156408781107316793143780496034007136738803366213062990156186687113354154240137096750043483483 -> 6900268356619689735328316924037308197731823978664151646536913448395060888600072144428907591584296316164895762596929158159223240873686583623459715465718416013955231933759988468600214280395215701151779881476822654331428402787838329980501266605629634666039232321654838070390904813276126247705089025960363730017795100421116278990168639641134931401043909104084654864047361458859633461233860093552239801820545348446366618513463235589670924359397456295125078269360780719667676367268772999769827119117523247254472958893414211427072099794161965964526565084372345182751970743069306765132666382655996709403103274830414754150703389454121766348106616371189856004868052566745344982606334278977139056432550805384684663957960585932902801839700120633871029140651911192017752102812898014750252764192143839943538114902737292849329973983868810816104335037222555349216487751849955516160631961554662024099406925850956972723049949156408781107316793143780496034007136738803366213062990156186687113354154240137096750043483483 +bconv69 baseconv 5902317478033285052639969958426443415331534100963298572917677485137767710777645791510067987040318815704002046102380559056499576069140225130856023710928274645788720336542561688179656835504067151964603553167820369875037901743403666333946356374149492654740989372381420656107998784874556101744289227529408280165171709363403901488493142660261651414890130272196299763703929030105182053095081485999142807673262280903020694356961712060482350227621125449488408596786220657518228358026972909057360682537642459428945199014596118227915678507873596275380578418781669067343652514458813143705051154895151314182485736623761416158306575176089589598309703147974223695592008076609875305046246341267219118112039891263647272358195902229726581191582355438917227138004383536527416530446888114334055621437548137537151617105080988069350154742754929628014882555546806889633775763716968380233499331929606549710246193613316709215506465990577298515265976613698771776843553680811656116953046619938220006356565765286924768574974365 -> 5902317478033285052639969958426443415331534100963298572917677485137767710777645791510067987040318815704002046102380559056499576069140225130856023710928274645788720336542561688179656835504067151964603553167820369875037901743403666333946356374149492654740989372381420656107998784874556101744289227529408280165171709363403901488493142660261651414890130272196299763703929030105182053095081485999142807673262280903020694356961712060482350227621125449488408596786220657518228358026972909057360682537642459428945199014596118227915678507873596275380578418781669067343652514458813143705051154895151314182485736623761416158306575176089589598309703147974223695592008076609875305046246341267219118112039891263647272358195902229726581191582355438917227138004383536527416530446888114334055621437548137537151617105080988069350154742754929628014882555546806889633775763716968380233499331929606549710246193613316709215506465990577298515265976613698771776843553680811656116953046619938220006356565765286924768574974365 +bconv70 baseconv 7618612588375161987973986123831447508619296856838465164293533739966823894018368729887300038633380083450627587448574134028751880065875262338564382018635166978406432591101743138739499298388611245974265417432879358052242826168409457912513107110950186720266321682523165985361471604318174445688405655205672649458716573299066311194975013589385530855390287294557039673142795989514335820324636631809173139755465221217477350803483231931418787491152967767757274597349476209505357303671510024719654094172114279799325194009355861115285435663306073203048885374201647859066080783247123888390983467494174600931975914093392656394217072436589498313016735514157722284236985627200904536095289967273299885219540575231309698221759603730404909751845431289018037071119511136610349966122938279522557290179469954193393045541041751948180641198956129228604171009531495649354104157212998085753206544094978165257504484578807276864804766426616551743121878029939397287482059538202220979362777420766635472700606552654691456630944882 -> 7618612588375161987973986123831447508619296856838465164293533739966823894018368729887300038633380083450627587448574134028751880065875262338564382018635166978406432591101743138739499298388611245974265417432879358052242826168409457912513107110950186720266321682523165985361471604318174445688405655205672649458716573299066311194975013589385530855390287294557039673142795989514335820324636631809173139755465221217477350803483231931418787491152967767757274597349476209505357303671510024719654094172114279799325194009355861115285435663306073203048885374201647859066080783247123888390983467494174600931975914093392656394217072436589498313016735514157722284236985627200904536095289967273299885219540575231309698221759603730404909751845431289018037071119511136610349966122938279522557290179469954193393045541041751948180641198956129228604171009531495649354104157212998085753206544094978165257504484578807276864804766426616551743121878029939397287482059538202220979362777420766635472700606552654691456630944882 +bconv71 baseconv 7274806580397344519284063172873246281828496073512420391960927384453048993171430811294852993953133663708264940676182576330989070389032188416756346293035717226172734540992730526151308370760779998487899686427975365105921621973758809647457269569506859547747806306991297068405274539447559239528419759016003913683231595280778096964234842143311379517005828368761680253350331820375653177170414943240127688715672454870195944166222433584575825723532119850409069952806340772013421198619665534555202624391346774809212468650895463599943403825940487774964329686020489685248597721079522907711459321744866816990610954240800102338348668095339816266447245172628383539174211561658298581030048802729109320621346110202491421791757970057077622991253600555741918519281783344059958489634830679464823307368001023379421864430160158082185304493791500244706870083457381611799110216505162039835249630972331472319205143569296727787128312968152640568396491580930348551130999142233580349309433232935446943355973407107156214224440615 -> 7274806580397344519284063172873246281828496073512420391960927384453048993171430811294852993953133663708264940676182576330989070389032188416756346293035717226172734540992730526151308370760779998487899686427975365105921621973758809647457269569506859547747806306991297068405274539447559239528419759016003913683231595280778096964234842143311379517005828368761680253350331820375653177170414943240127688715672454870195944166222433584575825723532119850409069952806340772013421198619665534555202624391346774809212468650895463599943403825940487774964329686020489685248597721079522907711459321744866816990610954240800102338348668095339816266447245172628383539174211561658298581030048802729109320621346110202491421791757970057077622991253600555741918519281783344059958489634830679464823307368001023379421864430160158082185304493791500244706870083457381611799110216505162039835249630972331472319205143569296727787128312968152640568396491580930348551130999142233580349309433232935446943355973407107156214224440615 +bconv72 baseconv 6130948253975489346677774988944106163747895783265816819009141290747852451565430157070458633568418091799100581240038365775110987148264812155911759707749008431645333271204025012839981017225764941361557471531893601564045350396896756840122816069474057770363495623100741920342319643357236464606424507006367902011893287733914920442908648126115412153422186144251960891357139215215592026327970026723175114913467734899145209542128404188980472550163684555903818702210116890758734639483837538831670270775867412845106430716975436568801904268966209479051378549439232083487587240656706323144565528743266161960719120375800051306298871290207293418017005955479866176336985731985283764079487364011713883768219165196913353154123285520395957189537840594148405201019435705205048585761314045517222391010397717138713678291199379489644406023369790871408489799126166800211249280667364400757052372503935756443048605432599878481650018018036096762090966416485795787543935549556092000259556169563879061236461507079130681270625925 -> 6130948253975489346677774988944106163747895783265816819009141290747852451565430157070458633568418091799100581240038365775110987148264812155911759707749008431645333271204025012839981017225764941361557471531893601564045350396896756840122816069474057770363495623100741920342319643357236464606424507006367902011893287733914920442908648126115412153422186144251960891357139215215592026327970026723175114913467734899145209542128404188980472550163684555903818702210116890758734639483837538831670270775867412845106430716975436568801904268966209479051378549439232083487587240656706323144565528743266161960719120375800051306298871290207293418017005955479866176336985731985283764079487364011713883768219165196913353154123285520395957189537840594148405201019435705205048585761314045517222391010397717138713678291199379489644406023369790871408489799126166800211249280667364400757052372503935756443048605432599878481650018018036096762090966416485795787543935549556092000259556169563879061236461507079130681270625925 +bconv73 baseconv 2678958050814855438011980110924244323210902342360468724311522260010738198181483026149998432356805208963963777995160925906539233063189268083826650111799451459581886658672068280964914964393628207391282082504655786637944928288796248087211811294173843458515796607606617768871561148449560208060792117386919551441709757668050534993235222494796280077717812390569608054078408592328262644394123921392451017829069514887231300312722917816057215249670096512382379565025509529794789542178756123968570011478858940154429527782037622132071463012809778679141237394162761585003270807195379677938890610594104065381176396282342993743761091890465767646745423865945246575020162172630639737161569848620243918182614571976940777945456694167437277678256741474766859741794654992638619448675100386839533693034646941003248458395060584905946437012088751694250783884538695072973473131512937858343940713533300864618124792139624682150515770784592009091045409633071683675848987325405286883483190515222978186952507953251192484870361219 -> 2678958050814855438011980110924244323210902342360468724311522260010738198181483026149998432356805208963963777995160925906539233063189268083826650111799451459581886658672068280964914964393628207391282082504655786637944928288796248087211811294173843458515796607606617768871561148449560208060792117386919551441709757668050534993235222494796280077717812390569608054078408592328262644394123921392451017829069514887231300312722917816057215249670096512382379565025509529794789542178756123968570011478858940154429527782037622132071463012809778679141237394162761585003270807195379677938890610594104065381176396282342993743761091890465767646745423865945246575020162172630639737161569848620243918182614571976940777945456694167437277678256741474766859741794654992638619448675100386839533693034646941003248458395060584905946437012088751694250783884538695072973473131512937858343940713533300864618124792139624682150515770784592009091045409633071683675848987325405286883483190515222978186952507953251192484870361219 +bconv74 baseconv 1433604913199497674078083474914984329856632815461977485808964290112742699243842118454632257768731064903980996844332397764881040042954540441183450066462705825315928638236440164547779152816344541552057173362160377239921110200948087717995344001956921723233249486869251158297270585414250065333563201135551477824777637564569500840812856514394406672140924513640570751884329574238314876095634048514675248989746921524201575075133617230827469481393704689216637201395892468685969520264008315836936284604180171762514187252148538883776176472924345179343865383884827486803317221574139524252865998797499402116636730467808567569817656360593510938642326360068969637589320557624621985202839567286526486926131587594999476321652210488347596240536648966259299861976821583032299397323373928356009457406421856858993230214235711413831059296448751018420030096070032872351464883917693967225907526345459366982173594073075347012260963163369355523277181104723236080617131840646102841251455769256280107677494490168666994323130447 -> 1433604913199497674078083474914984329856632815461977485808964290112742699243842118454632257768731064903980996844332397764881040042954540441183450066462705825315928638236440164547779152816344541552057173362160377239921110200948087717995344001956921723233249486869251158297270585414250065333563201135551477824777637564569500840812856514394406672140924513640570751884329574238314876095634048514675248989746921524201575075133617230827469481393704689216637201395892468685969520264008315836936284604180171762514187252148538883776176472924345179343865383884827486803317221574139524252865998797499402116636730467808567569817656360593510938642326360068969637589320557624621985202839567286526486926131587594999476321652210488347596240536648966259299861976821583032299397323373928356009457406421856858993230214235711413831059296448751018420030096070032872351464883917693967225907526345459366982173594073075347012260963163369355523277181104723236080617131840646102841251455769256280107677494490168666994323130447 +bconv75 baseconv 9509502087439293521915245914556012667120859453429588799101618722731573819091360650939844804078650572207481579114368041954962927591690413151539514339827409812517143865418129068157137548141538425093778101236468717678225278052294762257694619178735877449349242687058786086953658133226326630635836416906903445634157790895758720446578504578281952712086992016430676892265798993866494945592007642621955012311340761182040069681255863624421559440343018048806657197993910559458637272199081905616558770409596261493882619719522169737246413582412373468772343196102446759619161641353907132443320222236571544065118743662352967211727156497327231828204853316233291931245121981261002714034945910737026280302630694548036668140781375387922334129759545246568883986651913877871123446161111529630342458791066259563697797046846323689489622058506526027808173899921993177412154475515284590741287550290180104689965294436736202097880113113031790963944060391715754049096598243319655925264719458590524909063365293788615391600549199 -> 9509502087439293521915245914556012667120859453429588799101618722731573819091360650939844804078650572207481579114368041954962927591690413151539514339827409812517143865418129068157137548141538425093778101236468717678225278052294762257694619178735877449349242687058786086953658133226326630635836416906903445634157790895758720446578504578281952712086992016430676892265798993866494945592007642621955012311340761182040069681255863624421559440343018048806657197993910559458637272199081905616558770409596261493882619719522169737246413582412373468772343196102446759619161641353907132443320222236571544065118743662352967211727156497327231828204853316233291931245121981261002714034945910737026280302630694548036668140781375387922334129759545246568883986651913877871123446161111529630342458791066259563697797046846323689489622058506526027808173899921993177412154475515284590741287550290180104689965294436736202097880113113031790963944060391715754049096598243319655925264719458590524909063365293788615391600549199 +bconv76 baseconv 4067710689537320871849232028596019890094124528252777462007885299997247441633037514703726893344971731681036853177610970476237991686949525947759101458523337748744105111180336091024763227724041247966098511119921602883212159799916917673257371767804630928878629119716105307837083027827323519419479115170000208740771251424259282440603148004928318427343722466224467840437081495725842063664315946601338872383524986637145038835522730902737295885437161564775084225897608602355703430068054066888671109737692968558105215791951062838049130090345226160565888843510861559829559406688920922633386414214964809977393093311710710293305610560393766382970580823805751664973722002572513997506768317341907969803015335670841722249449604352187087311038724485915587222121563902141070629530397726046741316132604372111408172705209464331334487033647061504991750599409096060547584712215514566838414944330535512232821626204005290769233866562631963708531145880788234634868318151778571100035628380114530308836936226539602390045869124 -> 4067710689537320871849232028596019890094124528252777462007885299997247441633037514703726893344971731681036853177610970476237991686949525947759101458523337748744105111180336091024763227724041247966098511119921602883212159799916917673257371767804630928878629119716105307837083027827323519419479115170000208740771251424259282440603148004928318427343722466224467840437081495725842063664315946601338872383524986637145038835522730902737295885437161564775084225897608602355703430068054066888671109737692968558105215791951062838049130090345226160565888843510861559829559406688920922633386414214964809977393093311710710293305610560393766382970580823805751664973722002572513997506768317341907969803015335670841722249449604352187087311038724485915587222121563902141070629530397726046741316132604372111408172705209464331334487033647061504991750599409096060547584712215514566838414944330535512232821626204005290769233866562631963708531145880788234634868318151778571100035628380114530308836936226539602390045869124 +bconv77 baseconv 3811485366282181991185449609992379835364068910423038084123752549777775495328423022325496354002520125696510063848482205363898048203808352020069352074587796055595132952929486435926665508307191835077206504562365950478641345354404437988748646831254219152328931803561266682295291800994360062160106397654616189431899798197406883807407141275487819300776299215842458595160943031988530907299832371804923983767347515169199263892792934317357299020622216670200593430872334594094812241832634977075619235914127609964096250827939011169465409846825620733974974023090673181994743508948408435450466271071244766160592324527343693663528963823928584931432038490894738677809422764863550247297419446724028390823312956208154768241192636827842253967661698183139989167982144197331546467495827674490051196364311889090339091110789259946267136203559849863668483546801715109310548678105351252184290598725357432253067982366711587217519182604721349738901804566211889856255557444967049226171078141778124247455292456053215501302298179 -> 3811485366282181991185449609992379835364068910423038084123752549777775495328423022325496354002520125696510063848482205363898048203808352020069352074587796055595132952929486435926665508307191835077206504562365950478641345354404437988748646831254219152328931803561266682295291800994360062160106397654616189431899798197406883807407141275487819300776299215842458595160943031988530907299832371804923983767347515169199263892792934317357299020622216670200593430872334594094812241832634977075619235914127609964096250827939011169465409846825620733974974023090673181994743508948408435450466271071244766160592324527343693663528963823928584931432038490894738677809422764863550247297419446724028390823312956208154768241192636827842253967661698183139989167982144197331546467495827674490051196364311889090339091110789259946267136203559849863668483546801715109310548678105351252184290598725357432253067982366711587217519182604721349738901804566211889856255557444967049226171078141778124247455292456053215501302298179 +bconv78 baseconv 1990006068381464682049507550264302037762060389144914435155032181564512582025891607823250149058568412193385329414153759137054000955433528910483683140843695237118579512718408541440729462053300257176045331210843659285088277837145617911786897079697695822903441007426313983594108337849323523801461353403743354205332614568281522016124835207903049932403755935317561601917441459604496836970070735909956513671336330860323860179388331105289023853412948803361252289030773615479632718627401732040030962045909250635807312575103477559082544985107953795183152171682603428723813002693069914001266504241935848121105168305637550903127840183872570436135450397128584518510152749757839238010828541959435668309325917309393438110029245698090678671582148151378731513441520660610414440657938977851671873331032285873152157433944658015277107982301113691126105366410992148669718892349257122548807570025007125466370298794900665689909793941671147289356242383522692067149592303798561909497033391475359270730954911342570894131532358 -> 1990006068381464682049507550264302037762060389144914435155032181564512582025891607823250149058568412193385329414153759137054000955433528910483683140843695237118579512718408541440729462053300257176045331210843659285088277837145617911786897079697695822903441007426313983594108337849323523801461353403743354205332614568281522016124835207903049932403755935317561601917441459604496836970070735909956513671336330860323860179388331105289023853412948803361252289030773615479632718627401732040030962045909250635807312575103477559082544985107953795183152171682603428723813002693069914001266504241935848121105168305637550903127840183872570436135450397128584518510152749757839238010828541959435668309325917309393438110029245698090678671582148151378731513441520660610414440657938977851671873331032285873152157433944658015277107982301113691126105366410992148669718892349257122548807570025007125466370298794900665689909793941671147289356242383522692067149592303798561909497033391475359270730954911342570894131532358 +bconv79 baseconv 6015502869739087840490272225009583235686554415597820260864687529596382958074667901361875270833997129759447836372499555541652650451502594770436693287735337668554595929098876585393766197602427124862906155725316409444214451901418085327300532602678794493356481935382428415228909151655255164373511058123889329082619375667369210764727937344306215620616541202065239644000366634050592525680716301127542499939663309899544761500965235197405555980469459915477937424880270520272510181134527145637344414505867890548334494386092618208486156069437679989693532690668499343526981724430976888868585542016702257206431532422802162575894308454532674685186682402274196609885295851365911976479534913191915118210151797812795159108743079339204564318170806899555009259410527404594039497894336819299935284534331538880011864688710879036892746974953275405849133773110007259543807610050120756488168249583261372342667515892815096343346932768293662319876123910097532366065183592949456550921172097180847279701865234409426840668410766 -> 6015502869739087840490272225009583235686554415597820260864687529596382958074667901361875270833997129759447836372499555541652650451502594770436693287735337668554595929098876585393766197602427124862906155725316409444214451901418085327300532602678794493356481935382428415228909151655255164373511058123889329082619375667369210764727937344306215620616541202065239644000366634050592525680716301127542499939663309899544761500965235197405555980469459915477937424880270520272510181134527145637344414505867890548334494386092618208486156069437679989693532690668499343526981724430976888868585542016702257206431532422802162575894308454532674685186682402274196609885295851365911976479534913191915118210151797812795159108743079339204564318170806899555009259410527404594039497894336819299935284534331538880011864688710879036892746974953275405849133773110007259543807610050120756488168249583261372342667515892815096343346932768293662319876123910097532366065183592949456550921172097180847279701865234409426840668410766 +bconv80 baseconv 4721674509002784842344864141003393673089137680091440668260717371938345795302660565535881788240496853682038707484464310863889151722714658187786119386450529004684034710648752629248535147912138814920166176904926229674566090805847602244383193776500720254132610905647171991232089647680276174361654043546376396157894708786613176450217802422352783707604008874651507753601685162288117251635948934611119586655693590679777088408194900543274105112708385267612004468830226889125841321008539403641032011853954056310027563922203338751062114799121049136446957621664922927963650042590574198841196332234984513656542272799549698840401193003305283764561016970681896533793190753839906709681086564197501303764886900076252600084692622164483878741014064658238710677509984156669556507724226857069599520272720557151925768638001497467599390730948877998183219285938785277230485265916972621101328898463456445570037474012055243061252258859408976670671479137053446114565987363416858266084608753431705108235202206779212956615656596 -> 4721674509002784842344864141003393673089137680091440668260717371938345795302660565535881788240496853682038707484464310863889151722714658187786119386450529004684034710648752629248535147912138814920166176904926229674566090805847602244383193776500720254132610905647171991232089647680276174361654043546376396157894708786613176450217802422352783707604008874651507753601685162288117251635948934611119586655693590679777088408194900543274105112708385267612004468830226889125841321008539403641032011853954056310027563922203338751062114799121049136446957621664922927963650042590574198841196332234984513656542272799549698840401193003305283764561016970681896533793190753839906709681086564197501303764886900076252600084692622164483878741014064658238710677509984156669556507724226857069599520272720557151925768638001497467599390730948877998183219285938785277230485265916972621101328898463456445570037474012055243061252258859408976670671479137053446114565987363416858266084608753431705108235202206779212956615656596 +bconv81 baseconv 9510892144512085249275018397413722351535888803410628276542776410787927123434847518456778687187064714786890066386715732881311830074661041804981173834988813357626357664332734060141367516951356706230731874581947035415957390767207385350129876650445943888250294153598548602119653379910795874829810180533925922043189055449070682598387633907127369536141894111618036481012982562544619189381462522366417048046249419658821886339328607122138996901026714904797108534803209061856381909673693634617534574339342310733046709376826653416507892085968080489984441862034544938076632149184037423758350666641568104387017683563651749512844423775620691271709608581010474996031198621207797055078001455422495530416267114010872474914268815950284203068376243875177350897626724403359371624675822028221636433409884516411003658171567013289001684298493285255722701585168623074041390468611034184099866861509032454298088130296758273871134154763216914951740909725530074990202322051962686179414589290769763667044986291564890577004152222 -> 9510892144512085249275018397413722351535888803410628276542776410787927123434847518456778687187064714786890066386715732881311830074661041804981173834988813357626357664332734060141367516951356706230731874581947035415957390767207385350129876650445943888250294153598548602119653379910795874829810180533925922043189055449070682598387633907127369536141894111618036481012982562544619189381462522366417048046249419658821886339328607122138996901026714904797108534803209061856381909673693634617534574339342310733046709376826653416507892085968080489984441862034544938076632149184037423758350666641568104387017683563651749512844423775620691271709608581010474996031198621207797055078001455422495530416267114010872474914268815950284203068376243875177350897626724403359371624675822028221636433409884516411003658171567013289001684298493285255722701585168623074041390468611034184099866861509032454298088130296758273871134154763216914951740909725530074990202322051962686179414589290769763667044986291564890577004152222 +bconv82 baseconv 3456901425030618394011723130438256490792542318319735523515255306185196939308698752817940822865136996467848018629679285367233218672286722816451896768786204220320586683939393222905940971820644324646129629722387740145771943954328905513705485730905297265414752239534351869403772356050107132008214260482843718173822581181084159755349622083295193667670716324541786008529807599545149693843888823106530719118283570425691982953657691142444783384988527060080133138507780291068300382333834918941607068908852462046319362616584120851220241887029533755241068592099110060289167241261240766570600949484070935606431905912670648928290250704475703033553126233812366842077186976657108776720555272519485274610219573736531176760473936687354077338487468978295230805216233438751757588257783310113962844570833948121068093293399468034885968569831495375430608219776187246141046926597205943086575464162437066336461261879290448349244362708136983100666676756432364748374695161206527985367750583374748236697040433162574257657994893 -> 3456901425030618394011723130438256490792542318319735523515255306185196939308698752817940822865136996467848018629679285367233218672286722816451896768786204220320586683939393222905940971820644324646129629722387740145771943954328905513705485730905297265414752239534351869403772356050107132008214260482843718173822581181084159755349622083295193667670716324541786008529807599545149693843888823106530719118283570425691982953657691142444783384988527060080133138507780291068300382333834918941607068908852462046319362616584120851220241887029533755241068592099110060289167241261240766570600949484070935606431905912670648928290250704475703033553126233812366842077186976657108776720555272519485274610219573736531176760473936687354077338487468978295230805216233438751757588257783310113962844570833948121068093293399468034885968569831495375430608219776187246141046926597205943086575464162437066336461261879290448349244362708136983100666676756432364748374695161206527985367750583374748236697040433162574257657994893 +bconv83 baseconv 1114685497965416656732698379705177154332018255132868450308546205005993405567280072981566695061741881039048516102552874312269051663893747834026795621233419147538326924080953351805348216747199745827176484941805754634850882072791810734029161602760957279716941747344922081910423787336704993154447907572466248131412943004575414810460323173729936766860512018135659466077161376533906814970096913643985088546097058087017433587545159372869081036330282290692599635051036129999032787789351500982758970821530339993622053422466083530988850101164611989418201949687808631372265510607270878926847029899106166493196168843200497034157084670777050096818789192009101112230666951024673468455599767386395901573282160864807212191679488158066023583204287556099026421419828302458850552448077234437815451598944310816734580726283004477487254598344727512076754803216005237951552370014776640778150631007268249727659835185067225850551901050019535365052341639147479041197493091144131435616546556483209665736557431123925160778520001 -> 1114685497965416656732698379705177154332018255132868450308546205005993405567280072981566695061741881039048516102552874312269051663893747834026795621233419147538326924080953351805348216747199745827176484941805754634850882072791810734029161602760957279716941747344922081910423787336704993154447907572466248131412943004575414810460323173729936766860512018135659466077161376533906814970096913643985088546097058087017433587545159372869081036330282290692599635051036129999032787789351500982758970821530339993622053422466083530988850101164611989418201949687808631372265510607270878926847029899106166493196168843200497034157084670777050096818789192009101112230666951024673468455599767386395901573282160864807212191679488158066023583204287556099026421419828302458850552448077234437815451598944310816734580726283004477487254598344727512076754803216005237951552370014776640778150631007268249727659835185067225850551901050019535365052341639147479041197493091144131435616546556483209665736557431123925160778520001 +bconv84 baseconv 4631674675576889759774580763626146757314616877277276688821580847591125241225735322432478386501627625854306251733623874428127495008675943385205168037051093578061722771732017683543179179144921022217700703179037029787433663110453203011907955194739418988523319173536216235147483594651233042156771845192228067507504430126983098504199731847083090992921399795570743065369871623526423674280816910406843708674872183941723181027479292355933701100348267065858817661658539434890633630128909458410130894623225854374629504910047527824037576731766318807423128381424603981879198507514196724903158582298075327249541380671868410844433500977078393764765201588270475184527040319447750509502500248592071105439035508362936062879670073953461728598203549232685754534962081303480388328503169443465060785701125451911129197525848703961391592400511619394502912888633179308354807256663171097995207271107864865900234403718599165590670527562631249338155438288328566019355734457944780825214897697497647022919067727224315808251374972 -> 4631674675576889759774580763626146757314616877277276688821580847591125241225735322432478386501627625854306251733623874428127495008675943385205168037051093578061722771732017683543179179144921022217700703179037029787433663110453203011907955194739418988523319173536216235147483594651233042156771845192228067507504430126983098504199731847083090992921399795570743065369871623526423674280816910406843708674872183941723181027479292355933701100348267065858817661658539434890633630128909458410130894623225854374629504910047527824037576731766318807423128381424603981879198507514196724903158582298075327249541380671868410844433500977078393764765201588270475184527040319447750509502500248592071105439035508362936062879670073953461728598203549232685754534962081303480388328503169443465060785701125451911129197525848703961391592400511619394502912888633179308354807256663171097995207271107864865900234403718599165590670527562631249338155438288328566019355734457944780825214897697497647022919067727224315808251374972 +bconv85 baseconv 5054046050056162480616308689292024548964869387364190422046664401725285272589912290316921591529000996107139664638860857474291630684610120548839746031950778814237657029526620589407213043004465648249228138623631242102783559713715962998576004993902739199314713241903427496721703183412188760822003199242108016386325064523019036728327451956595083438052025928550379054896352039023411102914563041411340310861208383343232255940250328273276066044768014963719305806812780763480860826000566705246728310823754109703346572770708272626973496113309796285567744703659844373782029510124695943291513025323934796579111747179739099339847651916817808633677486719607359693437287945348611501450211335210548158310422843185416620577706151577788251170429894658017301128035163501614461426080704537662209999989390074486940698920319619141918892222935486806938495465456502087109970522080677318154911764017109643515547373078103899589635851628705637553657986340106557721543262227821943218743800561474658667899245079222411395627962954 -> 5054046050056162480616308689292024548964869387364190422046664401725285272589912290316921591529000996107139664638860857474291630684610120548839746031950778814237657029526620589407213043004465648249228138623631242102783559713715962998576004993902739199314713241903427496721703183412188760822003199242108016386325064523019036728327451956595083438052025928550379054896352039023411102914563041411340310861208383343232255940250328273276066044768014963719305806812780763480860826000566705246728310823754109703346572770708272626973496113309796285567744703659844373782029510124695943291513025323934796579111747179739099339847651916817808633677486719607359693437287945348611501450211335210548158310422843185416620577706151577788251170429894658017301128035163501614461426080704537662209999989390074486940698920319619141918892222935486806938495465456502087109970522080677318154911764017109643515547373078103899589635851628705637553657986340106557721543262227821943218743800561474658667899245079222411395627962954 +bconv86 baseconv 498798086249856996078905158527089252178252354616474394172461119910411171631292826073736602556970410082912069200470696003247765310664953329225394473530199291988638309691944270359924785028682212767297352333530901834996778251309520930768516293582423530621731217403165731121251151555770945037545406036989210387357400832932657285754731777142153396155556766391296931072723419377353904084664332660239729906912213077293702082263144782647170522782678472717601795640755406792373723360153845879320728491736575874624660417420637145112254661596762381651155864300611427965335254466320563531053670190079523989944583722257215623345414338537446967131163152599924262184793640362492531320591992541713749468141495745684405707800564874853466580233668785277968189425629507799781330615685510990987541085339778852756645896927436132968727171859406852630944464727944527160320701514605982443736736493640203160533925894246349169821977614700908740834415621048448039933001494956646808220009825648876027231476439483178930098804431 -> 498798086249856996078905158527089252178252354616474394172461119910411171631292826073736602556970410082912069200470696003247765310664953329225394473530199291988638309691944270359924785028682212767297352333530901834996778251309520930768516293582423530621731217403165731121251151555770945037545406036989210387357400832932657285754731777142153396155556766391296931072723419377353904084664332660239729906912213077293702082263144782647170522782678472717601795640755406792373723360153845879320728491736575874624660417420637145112254661596762381651155864300611427965335254466320563531053670190079523989944583722257215623345414338537446967131163152599924262184793640362492531320591992541713749468141495745684405707800564874853466580233668785277968189425629507799781330615685510990987541085339778852756645896927436132968727171859406852630944464727944527160320701514605982443736736493640203160533925894246349169821977614700908740834415621048448039933001494956646808220009825648876027231476439483178930098804431 +bconv87 baseconv 121084496246938756091360326968183447669408003357695636666809434165351641268048810034797802330249990483875867773810508313327536716135763308208501331181295930220779431854631232212252643298451102259222414943353545844517103624925210984235401542435209388315185310776864043097454488263484776327918820928848089893903414946895154202834659531337442361455332848693958803567164818358419400101377269195378942581561478555088084111930102186914135541816369426320520004163316326525600558153337686104116846449762760676421388019724379027306647329766806894319653514150396428629601049286326280060876408923013583131933537846421533082385816840354979038383045769148237482807999001641376034402680082390088048829341450432418674576144627129203205631880795851956476274791549026244858452693841928312590683754547684212576568334042442996455760137191812996355186679921483943941711572378411861774705402169183672753203888713353235469809533415041940845692623738373389551796918423796512694942156566866045678843956187455360350126116818 -> 121084496246938756091360326968183447669408003357695636666809434165351641268048810034797802330249990483875867773810508313327536716135763308208501331181295930220779431854631232212252643298451102259222414943353545844517103624925210984235401542435209388315185310776864043097454488263484776327918820928848089893903414946895154202834659531337442361455332848693958803567164818358419400101377269195378942581561478555088084111930102186914135541816369426320520004163316326525600558153337686104116846449762760676421388019724379027306647329766806894319653514150396428629601049286326280060876408923013583131933537846421533082385816840354979038383045769148237482807999001641376034402680082390088048829341450432418674576144627129203205631880795851956476274791549026244858452693841928312590683754547684212576568334042442996455760137191812996355186679921483943941711572378411861774705402169183672753203888713353235469809533415041940845692623738373389551796918423796512694942156566866045678843956187455360350126116818 +bconv88 baseconv 3137481737709257969498673800458092871980861386091007321911948095053233189128261087722833240292125529604620019280216502476026881444247410867562715300767082875579380442196012176010593786813248040975730912408874428617346092090222073050923633535808533617582795720854509485179351617389335866920030070035436976677262222920765227786329524253192080537960718788349744852406050038158128504037535349581689874764171665428874322444032992147559960663528882817269944494639575999037700918584478363248324361461568174198291278240276477382157142688857722988940751054263417697148253505495273865088092895313510095544438178398818997910540224495283959759019496843768790244096208762693305267120582145971159196622958470378578782511510638566519746278016005922104590038165979540061160654906602140582867267493377424462796039198934864883369751098703135613059224489083381239093433702296894306887513397693253101405485213688643815485747646810201887140599330602036386948395390572760471299638065909323753137250055492175311998736899910 -> 3137481737709257969498673800458092871980861386091007321911948095053233189128261087722833240292125529604620019280216502476026881444247410867562715300767082875579380442196012176010593786813248040975730912408874428617346092090222073050923633535808533617582795720854509485179351617389335866920030070035436976677262222920765227786329524253192080537960718788349744852406050038158128504037535349581689874764171665428874322444032992147559960663528882817269944494639575999037700918584478363248324361461568174198291278240276477382157142688857722988940751054263417697148253505495273865088092895313510095544438178398818997910540224495283959759019496843768790244096208762693305267120582145971159196622958470378578782511510638566519746278016005922104590038165979540061160654906602140582867267493377424462796039198934864883369751098703135613059224489083381239093433702296894306887513397693253101405485213688643815485747646810201887140599330602036386948395390572760471299638065909323753137250055492175311998736899910 +bconv89 baseconv 2046274752132102652044178363915018187996191471099129936085057563665084251800329916037507740480904949808815025253480679644915641694115569208333973860274654636228092750394071421192847367159807217458985278359873738287557215047356486989476970364299183473439826473802435074386745143765137402240377114548259894215298448722134941209647661328655017441203639139184654431025591953069342187753294012484397561486808415192839078718066963498778706567321081645587781132525051084153809411210437209897891178766353450347532715803329831957875980989175465813008789637909513545795020187951251841409542991599712705888791403161544671505051750360940168736268381589442872643007869270333779311675340043386598903905691555406559663117625224081682667164561831570755422842085457569271102177089884660998495831941953998605684252177294606750390252078219918941666127526447626239301212631127530029324651931025029184577610229758483555537728766740503839864160777811101838922959335322519869877028644070845623841344458233546715178955550674 -> 2046274752132102652044178363915018187996191471099129936085057563665084251800329916037507740480904949808815025253480679644915641694115569208333973860274654636228092750394071421192847367159807217458985278359873738287557215047356486989476970364299183473439826473802435074386745143765137402240377114548259894215298448722134941209647661328655017441203639139184654431025591953069342187753294012484397561486808415192839078718066963498778706567321081645587781132525051084153809411210437209897891178766353450347532715803329831957875980989175465813008789637909513545795020187951251841409542991599712705888791403161544671505051750360940168736268381589442872643007869270333779311675340043386598903905691555406559663117625224081682667164561831570755422842085457569271102177089884660998495831941953998605684252177294606750390252078219918941666127526447626239301212631127530029324651931025029184577610229758483555537728766740503839864160777811101838922959335322519869877028644070845623841344458233546715178955550674 +bconv90 baseconv 118602527536459346287751193895858339452846002549469567672070864971092145524351168921356901474700295498090943988126078212996156182208260965087675553829353411264172685784262097902975835505936786187885350305834382769010903305812298167161305432584149340741716813142196798892449073397871436885380305299413074324984593301399377917029044947569039001082971115246671903673763800474556420103836833600126591598131281320412550646566882790480990547073330861095656030934112972929902090660853879104723851870897920221056873164484529692866150707827279262057284693386859303190717797108165415381238767342852108225559390590583594063055600797489006392713705265225186415598014042360384159026486745015499846703494614334336523877321341526209689352446358288246204567860638557940344930196992220212409403846067662601157255298292873989204120276181150905755080578582091637732664052951816628594743961102799491016125721404659205345921999694920153184972342277772759217123721089263939416025455334863658907345554029248989723836157059 -> 118602527536459346287751193895858339452846002549469567672070864971092145524351168921356901474700295498090943988126078212996156182208260965087675553829353411264172685784262097902975835505936786187885350305834382769010903305812298167161305432584149340741716813142196798892449073397871436885380305299413074324984593301399377917029044947569039001082971115246671903673763800474556420103836833600126591598131281320412550646566882790480990547073330861095656030934112972929902090660853879104723851870897920221056873164484529692866150707827279262057284693386859303190717797108165415381238767342852108225559390590583594063055600797489006392713705265225186415598014042360384159026486745015499846703494614334336523877321341526209689352446358288246204567860638557940344930196992220212409403846067662601157255298292873989204120276181150905755080578582091637732664052951816628594743961102799491016125721404659205345921999694920153184972342277772759217123721089263939416025455334863658907345554029248989723836157059 +bconv91 baseconv 141523214243831696736556300460342600164991437925782534056938875593239973798240513308747077020959591382723510242830812715562287973914401103083251377158746287925992865570116456610888001686833962181140883357750299385879321747409378802053920059639577600664323584513509493210890208846766530074890180448612272923888776385753398188650889920755186156716174102510355275398264644143830980598780328955341333863870854267893277618322800225825199698142800067501272826843776047442502095981348280416592394728559086850878362872113166784738034562737547481048712021816109725324286263667609087599720088399605876339426281690899921707322404788744614038093739805335691361866038834727601619137983667959762224522083982537611768463322191011792835742597170769812166435032532577481827369961098718451918623773222349557194994003447199491905464356118150526173572534688020661065721086937847583481054809153151087072641282157075018408142570766926199625674574826493938287132805724356449496651251238196604832668799851646391746245687790 -> 141523214243831696736556300460342600164991437925782534056938875593239973798240513308747077020959591382723510242830812715562287973914401103083251377158746287925992865570116456610888001686833962181140883357750299385879321747409378802053920059639577600664323584513509493210890208846766530074890180448612272923888776385753398188650889920755186156716174102510355275398264644143830980598780328955341333863870854267893277618322800225825199698142800067501272826843776047442502095981348280416592394728559086850878362872113166784738034562737547481048712021816109725324286263667609087599720088399605876339426281690899921707322404788744614038093739805335691361866038834727601619137983667959762224522083982537611768463322191011792835742597170769812166435032532577481827369961098718451918623773222349557194994003447199491905464356118150526173572534688020661065721086937847583481054809153151087072641282157075018408142570766926199625674574826493938287132805724356449496651251238196604832668799851646391746245687790 +bconv92 baseconv 3755450700552863665060044164440695117584422252860478986173745322867745209614779273831966127705061480696706764100640653063971634591772417424084390816709703599482455816117308257634345915584090779505984655443805707415262368382173976373100121233914523389411586661755100602746712444669381841737021307878068126765907353018603600017566799738475118034508504479215123665403317828460935322952577893391668149239321212023827428768855115737489346208924902379096314265342724953280684525139381552163761085944222325645310968913992883000123998156149927369859435314134944162530581569179818418043727395011786716703273773764276795167415314523754634382979497550308615348622193521056016732666235046776787411935055325019689988118053181251754711441077098286631057593405428962426444610044707709312112751391716119181428065839212678467108667920598137851282151341853542029262329368308989554001704532573493495551607537210376600737472576072275509205179692612030860721552552758907794670464048854301950405064249324181471812407661875 -> 3755450700552863665060044164440695117584422252860478986173745322867745209614779273831966127705061480696706764100640653063971634591772417424084390816709703599482455816117308257634345915584090779505984655443805707415262368382173976373100121233914523389411586661755100602746712444669381841737021307878068126765907353018603600017566799738475118034508504479215123665403317828460935322952577893391668149239321212023827428768855115737489346208924902379096314265342724953280684525139381552163761085944222325645310968913992883000123998156149927369859435314134944162530581569179818418043727395011786716703273773764276795167415314523754634382979497550308615348622193521056016732666235046776787411935055325019689988118053181251754711441077098286631057593405428962426444610044707709312112751391716119181428065839212678467108667920598137851282151341853542029262329368308989554001704532573493495551607537210376600737472576072275509205179692612030860721552552758907794670464048854301950405064249324181471812407661875 +bconv93 baseconv 4426029146853417025367720356941836917027374665690585076231982072181802375719225879094506456287598162363440493415597520408360627367807804722812443804182212102710556201664485868653986822911921265542394980866096523331822292089857302503825766321327771183237905376259365828176815054427778913968925205733506946435101071448765190095173850484206969168240307124657049943843457022586339728033712198393245316138542945415417442170167968599828768340428535466623833744709544876932996806493692463913605935402535852488132547124697605104178986160936710519064021308902953927324921667723205719689496299860767067792226694958128596332229027015002027903447940262453023000075291669317898684350240664298882104520447369145419045026184705707568152975652762098104707650014974129272535862471796509436495984413583743333947417250306114061837245520856949355877078169228046739281945076768868416100568966965578154130496745483107654752942312090086395797772317049735055026500775123228843889909232945016464589328812434640081087048664735 -> 4426029146853417025367720356941836917027374665690585076231982072181802375719225879094506456287598162363440493415597520408360627367807804722812443804182212102710556201664485868653986822911921265542394980866096523331822292089857302503825766321327771183237905376259365828176815054427778913968925205733506946435101071448765190095173850484206969168240307124657049943843457022586339728033712198393245316138542945415417442170167968599828768340428535466623833744709544876932996806493692463913605935402535852488132547124697605104178986160936710519064021308902953927324921667723205719689496299860767067792226694958128596332229027015002027903447940262453023000075291669317898684350240664298882104520447369145419045026184705707568152975652762098104707650014974129272535862471796509436495984413583743333947417250306114061837245520856949355877078169228046739281945076768868416100568966965578154130496745483107654752942312090086395797772317049735055026500775123228843889909232945016464589328812434640081087048664735 +bconv94 baseconv 413407499190474245721197465692910644958622579600913565853472039268567791652162926569498188805321540617337163791646710401358612444285196358383191307559495640131471396834119964403690734877144096768341947344066709264888680562181101263567481821983454864512458596952511461723240430185665355805538078457741385224030543001798423357134159475328623269319345988839566717899074071292746576996914030876785981180876783530417782402711186149569023253546669751482836857646495795951764884394064173649164310261889845729207571444055131288806769864413903731285884677081889267276510528616757768402954822263919820875327072313002782675421089097077711511251152353417005893212365773436180534046558288295233081211870361618205643281808406059443286138311705900611735555649996466157009958017918933232162590335690943459553940432074482632197931974705524930098697790174415963631066825802347639934588819616403204859798452365774787980022363637121755679727053200780149141137687144151946275776966273205804764324553145275906291633127239 -> 413407499190474245721197465692910644958622579600913565853472039268567791652162926569498188805321540617337163791646710401358612444285196358383191307559495640131471396834119964403690734877144096768341947344066709264888680562181101263567481821983454864512458596952511461723240430185665355805538078457741385224030543001798423357134159475328623269319345988839566717899074071292746576996914030876785981180876783530417782402711186149569023253546669751482836857646495795951764884394064173649164310261889845729207571444055131288806769864413903731285884677081889267276510528616757768402954822263919820875327072313002782675421089097077711511251152353417005893212365773436180534046558288295233081211870361618205643281808406059443286138311705900611735555649996466157009958017918933232162590335690943459553940432074482632197931974705524930098697790174415963631066825802347639934588819616403204859798452365774787980022363637121755679727053200780149141137687144151946275776966273205804764324553145275906291633127239 +bconv95 baseconv 4520681172690179122037740039999613294057255663272734016948645560400846423498678985416150639182861221351816256638062343564565809241108598064120473492553864621106868100377712775651782960332435071117902507303071761356012183447317894340243374350852674336635677686530295081582125149940043529149042472144875142072371125204575422756989039256493750055126206173936957857223711223392842023193497906156007779757149979675544017556086109407668310760520782670396166925609571394129339909626170620440736755018292780437388858027762778677770232121618213477703702004548714507956410792693743374390048361000309515510251053361456438373404972397367152294319017196837938402122720657271244976683356316930170942271846739396024576861209197805952229495078037698207625789762446755347836696375635545175511611685014700798101157819376657939005968710745756546012795629290878370047738922776362159745410226662256043489876720016077195444613717733053475319593298099836642512122825327858854186179147755511552654961604083141117204553564212 -> 4520681172690179122037740039999613294057255663272734016948645560400846423498678985416150639182861221351816256638062343564565809241108598064120473492553864621106868100377712775651782960332435071117902507303071761356012183447317894340243374350852674336635677686530295081582125149940043529149042472144875142072371125204575422756989039256493750055126206173936957857223711223392842023193497906156007779757149979675544017556086109407668310760520782670396166925609571394129339909626170620440736755018292780437388858027762778677770232121618213477703702004548714507956410792693743374390048361000309515510251053361456438373404972397367152294319017196837938402122720657271244976683356316930170942271846739396024576861209197805952229495078037698207625789762446755347836696375635545175511611685014700798101157819376657939005968710745756546012795629290878370047738922776362159745410226662256043489876720016077195444613717733053475319593298099836642512122825327858854186179147755511552654961604083141117204553564212 +bconv96 baseconv 4752934392506115203776955925114374421888387530452017608298438543417001637871959570232817170915202164912029405619800038334324822516105634767127448499687495203912805111534772015726151501041295928398181015565625988526688120779765901727919555960722521488196012794023719086495224321439131203693047876517094516213849526749245822788006993741407113505990357625149618320986688736271317463030131702394003893446117169451284957928172206561724326823671196352062940410575141913778205064398021138947784958575209694149143987468189846007454178765665941220124399916141385475578948128700218759144360903107297198957777795733106077381886435990980246528154578624667984408319537247518378827211797604316495161767454028441813738269331274246361068766799963883624946544944055846262043689124618439762729180406120501492936736550905857964540348336638021953026440878710394136756855074164023469925934399003240647929056541230411615643763409379492774415376898112917935720874933251752676191115149524402940329413566452554881845625403582 -> 4752934392506115203776955925114374421888387530452017608298438543417001637871959570232817170915202164912029405619800038334324822516105634767127448499687495203912805111534772015726151501041295928398181015565625988526688120779765901727919555960722521488196012794023719086495224321439131203693047876517094516213849526749245822788006993741407113505990357625149618320986688736271317463030131702394003893446117169451284957928172206561724326823671196352062940410575141913778205064398021138947784958575209694149143987468189846007454178765665941220124399916141385475578948128700218759144360903107297198957777795733106077381886435990980246528154578624667984408319537247518378827211797604316495161767454028441813738269331274246361068766799963883624946544944055846262043689124618439762729180406120501492936736550905857964540348336638021953026440878710394136756855074164023469925934399003240647929056541230411615643763409379492774415376898112917935720874933251752676191115149524402940329413566452554881845625403582 +bconv97 baseconv 9440459917940859737378342172502343174665932245324208175145619290395032516234610870287748581194581953230497789517063425451112766475246780379408405805480233601616323311860187678137014412277661309181845742090049365361108712847493832900182576044354227929543851842115981956013992238017506897721214999154224240074880236385458111487366906005595115488232282445545779402862156170051814917490327110748633254506425013425657193896985983945936707437349677120715038924970838207248597726578790595627282787695617262854360845552686317427560136719320839454144810825662155925324280481930396251122861875665282363400812537676534534212255298144149378261891210594916048569660530383085561290634455983667583161703600593574455514882227405682732241081459493903372569117958779207608864201920977655743667175153293670665012521685214989654199506016458748355973187882466079202506231067733853004794890869959253635984166267067113931558452982319482550236235363692233587793277706095095421835317620216908929998627896995578156402084481140 -> 9440459917940859737378342172502343174665932245324208175145619290395032516234610870287748581194581953230497789517063425451112766475246780379408405805480233601616323311860187678137014412277661309181845742090049365361108712847493832900182576044354227929543851842115981956013992238017506897721214999154224240074880236385458111487366906005595115488232282445545779402862156170051814917490327110748633254506425013425657193896985983945936707437349677120715038924970838207248597726578790595627282787695617262854360845552686317427560136719320839454144810825662155925324280481930396251122861875665282363400812537676534534212255298144149378261891210594916048569660530383085561290634455983667583161703600593574455514882227405682732241081459493903372569117958779207608864201920977655743667175153293670665012521685214989654199506016458748355973187882466079202506231067733853004794890869959253635984166267067113931558452982319482550236235363692233587793277706095095421835317620216908929998627896995578156402084481140 +bconv98 baseconv 6704886872507410943521042950791113144577915980841725166060511226204138145394314521104430465504689530540078949710319466249121985246527296056648028474984175774720196046741947700217437210280185308245932651849976382399724052481747749677724507166310908910959976175868245625043071403512812598943508493713790369112251144031591554038385995504194239090851220644540890902596429309453678660681727912003169323034260665137554293950287316648014163760996895994661890730473061402662402938816519578036579623054695262607503915822342733646369296115677530888398689752950928393422090860233673510949078389045234114703739319143306592624524476807557496800809129250211623316637431274033120957833970536207043450663219080219913062475181618134805756777371462456137801488606781977034991206523703225205324401044625775271386324467775015859888342366632607836863630164181334949645837546372900939097845512142401684877569394627266290892397886824734784386115026838858550196257887475567160537308617570136423381156671125001863184307060166 -> 6704886872507410943521042950791113144577915980841725166060511226204138145394314521104430465504689530540078949710319466249121985246527296056648028474984175774720196046741947700217437210280185308245932651849976382399724052481747749677724507166310908910959976175868245625043071403512812598943508493713790369112251144031591554038385995504194239090851220644540890902596429309453678660681727912003169323034260665137554293950287316648014163760996895994661890730473061402662402938816519578036579623054695262607503915822342733646369296115677530888398689752950928393422090860233673510949078389045234114703739319143306592624524476807557496800809129250211623316637431274033120957833970536207043450663219080219913062475181618134805756777371462456137801488606781977034991206523703225205324401044625775271386324467775015859888342366632607836863630164181334949645837546372900939097845512142401684877569394627266290892397886824734784386115026838858550196257887475567160537308617570136423381156671125001863184307060166 +bconv99 baseconv 1155968992608422289594104162818340523170202305209406440396958692240490603649155770909178606143549313015767809829007406432212771080436655252878304905072402738816801551610567766153067073802189286181952144746202629891675215247548892774554807321037972799740861548353429692303649457967202470726168558507714348340834394787597044865285791917229839283803381754995945324742970782152022063374956931939357268847072511766715685009718368127529225488556733251967125395825343393134672282273926070348752742065771661403885298644066488545086645522992379147037625570455758692245653173385562916183902301107591474359052067454234538869737454412735563791526436027650366275283973423818557128399836668678046965511869261784714423275036274417573095996245649139906638721073160619388970589962186269504429261527201672006306620953765275871423637434777343915177962243495106776735301904977080800465873621397235009091525453243093729333196771296396575732423443653180032738027692341835972878252342567845075568912167896200494980620699997 -> 1155968992608422289594104162818340523170202305209406440396958692240490603649155770909178606143549313015767809829007406432212771080436655252878304905072402738816801551610567766153067073802189286181952144746202629891675215247548892774554807321037972799740861548353429692303649457967202470726168558507714348340834394787597044865285791917229839283803381754995945324742970782152022063374956931939357268847072511766715685009718368127529225488556733251967125395825343393134672282273926070348752742065771661403885298644066488545086645522992379147037625570455758692245653173385562916183902301107591474359052067454234538869737454412735563791526436027650366275283973423818557128399836668678046965511869261784714423275036274417573095996245649139906638721073160619388970589962186269504429261527201672006306620953765275871423637434777343915177962243495106776735301904977080800465873621397235009091525453243093729333196771296396575732423443653180032738027692341835972878252342567845075568912167896200494980620699997 +bconv100 baseconv 1155968992608422289594104162818340523170202305209406440396958692240490603649155770909178606143549313015767809829007406432212771080436655252878304905072402738816801551610567766153067073802189286181952144746202629891675215247548892774554807321037972799740861548353429692303649457967202470726168558507714348340834394787597044865285791917229839283803381754995945324742970782152022063374956931939357268847072511766715685009718368127529225488556733251967125395825343393134672282273926000000000000000000000000000e-27 -> 1155968992608422289594104162818340523170202305209406440396958692240490603649155770909178606143549313015767809829007406432212771080436655252878304905072402738816801551610567766153067073802189286181952144746202629891675215247548892774554807321037972799740861548353429692303649457967202470726168558507714348340834394787597044865285791917229839283803381754995945324742970782152022063374956931939357268847072511766715685009718368127529225488556733251967125395825343393134672282273926 diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/testdata_dist/binop_eq.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/testdata_dist/binop_eq.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,4403 @@ +rounding: half_even +minExponent: -425000000 +maxExponent: 425000000 +precision: 116 +add_eq0 add_eq -68882998635339425466863586221872749420664434040997630548413636880417776447375217744441898147384895863101 -> -137765997270678850933727172443745498841328868081995261096827273760835552894750435488883796294769791726202 +precision: 27 +add_eq1 add_eq +926069853 -> 1852139706 +precision: 104 +add_eq2 add_eq -Infinity -> -Infinity +precision: 60 +add_eq3 add_eq -8820.48161934364928397387702871614085555803 -> -17640.96323868729856794775405743228171111606 +precision: 81 +add_eq4 add_eq -Inf -> -Infinity +precision: 65 +add_eq5 add_eq -Infinity -> -Infinity +precision: 21 +add_eq6 add_eq -41146525508063927 -> -82293051016127854 +precision: 100 +add_eq7 add_eq -640779228952153854324783733225497121450750153631275044917206111.363254604874E372237657 -> -1.281558457904307708649567466450994242901500307262550089834412222726509209748E+372237720 +precision: 200 +add_eq8 add_eq -.72116638699980904869901174037193762E-281846212 -> -1.44233277399961809739802348074387524E-281846212 +precision: 9 +add_eq9 add_eq +3963 -> 7926 +precision: 197 +add_eq10 add_eq +Infinity -> Infinity +precision: 25 +add_eq11 add_eq -841927932107286e-405002793 -> -1.683855864214572E-405002778 +precision: 278 +add_eq12 add_eq -3517549183442249435902332621531559266259972062322982119140819412759484205433918206253017294915590806165845935005424341503996896726514682476445398431715443301052137989323169545244329718144192803327334857518333767517480135363761842046382210536060518935444198e398717947 -> -7.035098366884498871804665243063118532519944124645964238281638825518968410867836412506034589831181612331691870010848683007993793453029364952890796863430886602104275978646339090488659436288385606654669715036667535034960270727523684092764421072121037870888396E+398718202 +precision: 11 +add_eq13 add_eq +.76369594E+12091955 -> 1.52739188E+12091955 +precision: 209 +add_eq14 add_eq 32114357810775993591114159996371569108094497047513614776553638227043929220222753032336575946843532666826332077968459480186193928185252093942655055069988232897191850662169080168E210809195 -> 6.4228715621551987182228319992743138216188994095027229553107276454087858440445506064673151893687065333652664155936918960372387856370504187885310110139976465794383701324338160336E+210809370 +precision: 91 +add_eq15 add_eq -683782424084810246040057425006165512383833369904542138586101023485116423473570209518851E-144358604 -> -1.367564848169620492080114850012331024767666739809084277172202046970232846947140419037702E-144358517 +precision: 50 +add_eq16 add_eq +1267347059903124863110810459903860343e+49166897 -> 2.534694119806249726221620919807720686E+49166933 +precision: 270 +add_eq17 add_eq +78335694705835409168279849498675702041507853050549836858612575283244278521895568230879473041358260903726542258255570776755457195670.730087634337415691 -> 156671389411670818336559698997351404083015706101099673717225150566488557043791136461758946082716521807453084516511141553510914391341.460175268674831382 +precision: 16 +add_eq18 add_eq 18782798955 -> 37565597910 +precision: 113 +add_eq19 add_eq -4486843092694772134107751364987281242190440510117042803804564046896411244822763252656467974536213231 -> -8973686185389544268215502729974562484380881020234085607609128093792822489645526505312935949072426462 +precision: 38 +add_eq20 add_eq -901977655537195169885649E-56154430 -> -1.803955311074390339771298E-56154406 +precision: 279 +add_eq21 add_eq -41020926029803077426429938239115259275974555103608e+50687786 -> -8.2041852059606154852859876478230518551949110207216E+50687835 +precision: 152 +add_eq22 add_eq 722590581407189452508623101309612881747559526871370484948419036376573920445450935713374778661e249520908 -> 1.445181162814378905017246202619225763495119053742740969896838072753147840890901871426749557322E+249521001 +precision: 29 +add_eq23 add_eq +NaN17682947140354228 -> NaN17682947140354228 +precision: 92 +add_eq24 add_eq +78187728223254 -> 156375456446508 +precision: 238 +add_eq25 add_eq 12035738496035655654113279124069329789099674489152244040643800319431728361487628565627194976813764326598882877782267641805846186981551451340539388430380183201731.147530052764182929482275247292610015164041288138324209975148651928310754856 -> 24071476992071311308226558248138659578199348978304488081287600638863456722975257131254389953627528653197765755564535283611692373963102902681078776860760366403462.295060105528365858964550494585220030328082576276648419950297303856621509712 +precision: 112 +add_eq26 add_eq +.316263196622360666159649274338764679732457803938000057007804734681046581081544 -> 0.632526393244721332319298548677529359464915607876000114015609469362093162163088 +precision: 231 +add_eq27 add_eq -59152987280932162156481514650568.1285947062956147640295546879923358550787162777520206136269763277635073569161760472149242147259031774687063595845026958470299409595859E-326452505 -> -1.183059745618643243129630293011362571894125912295280591093759846717101574325555040412272539526555270147138323520944298484294518063549374127191690053916940598819191718E-326452473 +precision: 28 +add_eq28 add_eq +2.9 -> 5.8 +precision: 295 +add_eq29 add_eq -166481718.5736723183090642309015096774184499313924931 -> -332963437.1473446366181284618030193548368998627849862 +precision: 23 +add_eq30 add_eq -10035306653863455567418E-141720971 -> -2.0070613307726911134836E-141720949 +precision: 234 +add_eq31 add_eq -423174079716064871547932.282964040855085851149609577090301E-172503494 -> -8.46348159432129743095864565928081710171702299219154180602E-172503471 +precision: 82 +add_eq32 add_eq -.17003636072120956345384192382685586606717196052648183079 -> -0.34007272144241912690768384765371173213434392105296366158 +precision: 90 +add_eq33 add_eq -Infinity -> -Infinity +precision: 214 +add_eq34 add_eq -sNaN569700261294529223612019718361067381689000251635299219367345742029813 -> -NaN569700261294529223612019718361067381689000251635299219367345742029813 Invalid_operation +precision: 287 +add_eq35 add_eq +5771523088748479951946530196652401119286587936706699468953779092626962476851306023704482010546792424614335797557912786200898834618105607501378362356684443032987181495731042582020218582892825972994486684021973962567897318.34887412080471432724266103423565612431830143140392700899 -> 11543046177496959903893060393304802238573175873413398937907558185253924953702612047408964021093584849228671595115825572401797669236211215002756724713368886065974362991462085164040437165785651945988973368043947925135794636.69774824160942865448532206847131224863660286280785401798 +precision: 142 +add_eq36 add_eq 2028600036427364398260742061502856151478098265552449778897236584544445887329861879092498916734655679e-329961115 -> 4.057200072854728796521484123005712302956196531104899557794473169088891774659723758184997833469311358E-329961016 +precision: 210 +add_eq37 add_eq -Infinity -> -Infinity +precision: 211 +add_eq38 add_eq 4568410453503752177388774481356461780004248228202230921355717057115494091647106251171625328193087073160231.691637576449618906621582446029970116748076619911246E+151952700 -> 9.136820907007504354777548962712923560008496456404461842711434114230988183294212502343250656386174146320463383275152899237813243164892059940233496153239822492E+151952805 +precision: 211 +add_eq39 add_eq .52536726643468151065419659927947894515446446983972037683107440234475026741743289E-187150116 -> 1.05073453286936302130839319855895789030892893967944075366214880468950053483486578E-187150116 +precision: 277 +add_eq40 add_eq -NaN -> -NaN +precision: 107 +add_eq41 add_eq -.9898219813603694947950150122 -> -1.9796439627207389895900300244 +precision: 166 +add_eq42 add_eq -Inf -> -Infinity +precision: 69 +add_eq43 add_eq +.67733215748051657183618E-394638690 -> 1.35466431496103314367236E-394638690 +precision: 36 +add_eq44 add_eq -.53567e38218481 -> -1.07134E+38218481 +precision: 241 +add_eq45 add_eq -5933594434192137114522076617896271304795030810595678085104997073130435122883533385569443506418245768215845619782657120227082751786111682799201599877360884493167191623695541057791060179485613449517507232463453576577226627 -> -11867188868384274229044153235792542609590061621191356170209994146260870245767066771138887012836491536431691239565314240454165503572223365598403199754721768986334383247391082115582120358971226899035014464926907153154453254 +precision: 39 +add_eq46 add_eq -694742502821120 -> -1389485005642240 +precision: 18 +add_eq47 add_eq -6322662136772517 -> -12645324273545034 +precision: 96 +add_eq48 add_eq -9811057708849.19690 -> -19622115417698.39380 +precision: 81 +add_eq49 add_eq -6193645583645366942466324000895867674129131722128691323238910038913521320900e251229105 -> -1.2387291167290733884932648001791735348258263444257382646477820077827042641800E+251229181 +precision: 145 +add_eq50 add_eq .5717388168181675479793798739060408912049207989649671796926969366450135894836902236013024655143602745074686249263838743970546398768701908532 -> 1.1434776336363350959587597478120817824098415979299343593853938732900271789673804472026049310287205490149372498527677487941092797537403817064 +precision: 126 +add_eq51 add_eq -742417.16107347101461684E-210860490 -> -1.48483432214694202923368E-210860484 +precision: 70 +add_eq52 add_eq +.4147462128592503113428922134014127094305387978534613164e292173290 -> 8.294924257185006226857844268028254188610775957069226328E+292173289 +precision: 184 +add_eq53 add_eq -59042579837112433.28823459 -> -118085159674224866.57646918 +precision: 78 +add_eq54 add_eq 2138229604703280612812582395860887783091451115517627323984446894987139 -> 4276459209406561225625164791721775566182902231035254647968893789974278 +precision: 55 +add_eq55 add_eq Infinity -> Infinity +precision: 222 +add_eq56 add_eq -Inf -> -Infinity +precision: 279 +add_eq57 add_eq +41094596135399713403246823474078307069107822795335763689946690767396405022667973730807370589925435013992557442771640167438807128906730514443083292367585949216305642230099755191573714077.815996474697569867545140169708787929580752589e-99871031 -> 8.2189192270799426806493646948156614138215645590671527379893381534792810045335947461614741179850870027985114885543280334877614257813461028886166584735171898432611284460199510383147428155631992949395139735090280339417575859161505178E-99870847 +precision: 96 +add_eq58 add_eq +2342 -> 4684 +precision: 189 +add_eq59 add_eq 88363636657384329808587257235557508476723.869186837350558423020210128115479843904174576662967182e339296179 -> 1.76727273314768659617174514471115016953447738373674701116846040420256230959687808349153325934364E+339296220 +precision: 254 +add_eq60 add_eq -3915550331730799919376204001967445446.8238574829622312267204594245909618840193637066697552186398295941958269E-159611691 -> -7.8311006634615998387524080039348908936477149659244624534409188491819237680387274133395104372796591883916538E-159611655 +precision: 61 +add_eq61 add_eq -7448126356976537703479857244852938971. -> -14896252713953075406959714489705877942 +precision: 193 +add_eq62 add_eq -.7443354698489434118719516435014834509600686596305434865861710265366178762661142583163778017665533559112779215400051670312e-366268463 -> -1.4886709396978868237439032870029669019201373192610869731723420530732357525322285166327556035331067118225558430800103340624E-366268463 +precision: 226 +add_eq63 add_eq -427287263481430898626788150413858765928614414513456 -> -854574526962861797253576300827717531857228829026912 +precision: 286 +add_eq64 add_eq -Infinity -> -Infinity +precision: 73 +add_eq65 add_eq +.63040096714975097354768E29087504 -> 1.26080193429950194709536E+29087504 +precision: 55 +add_eq66 add_eq +309368017634711871158101159217.75 -> 618736035269423742316202318435.50 +precision: 73 +add_eq67 add_eq 565530548738927273500157239856350E144402084 -> 1.131061097477854547000314479712700E+144402117 +precision: 275 +add_eq68 add_eq +.2191064293665E+56294531 -> 4.382128587330E+56294530 +precision: 125 +add_eq69 add_eq -9162979361027963961437402257741194518726084932821319541340898958167245082874E-412490594 -> -1.8325958722055927922874804515482389037452169865642639082681797916334490165748E-412490518 +precision: 114 +add_eq70 add_eq +.83976365223031017909241454875373895182262480854965 -> 1.67952730446062035818482909750747790364524961709930 +precision: 276 +add_eq71 add_eq +Infinity -> Infinity +precision: 171 +add_eq72 add_eq +93437126.5656440703974331304880224005670593221387603259963064789530971661208392569522293249553579645328678596428836972354616711296798281362150327077058259553551901 -> 186874253.1312881407948662609760448011341186442775206519926129579061943322416785139044586499107159290657357192857673944709233422593596562724300654154116519107103802 +precision: 81 +add_eq73 add_eq -Infinity -> -Infinity +precision: 70 +add_eq74 add_eq +.57794096682626731208e+379515947 -> 1.15588193365253462416E+379515947 +precision: 85 +add_eq75 add_eq -14.E81271140 -> -2.8E+81271141 +precision: 188 +add_eq76 add_eq -.9775730277544241491641919159161146268812545245448365010502323485315730768639820872219334361751891761721586e-122514192 -> -1.9551460555088482983283838318322292537625090490896730021004646970631461537279641744438668723503783523443172E-122514192 +precision: 231 +add_eq77 add_eq -Inf -> -Infinity +precision: 203 +add_eq78 add_eq -68042781045397771522292816039054557083033306588911360015087581119217856166638733208934376292915624102298 -> -136085562090795543044585632078109114166066613177822720030175162238435712333277466417868752585831248204596 +precision: 58 +add_eq79 add_eq +2735 -> 5470 +precision: 88 +add_eq80 add_eq -19705249430226192533720143206917680527709728894 -> -39410498860452385067440286413835361055419457788 +precision: 55 +add_eq81 add_eq +47268891E+388844743 -> 9.4537782E+388844750 +precision: 201 +add_eq82 add_eq +3719250081060827753353824022158305622506216360754075.343124138338091822866213968351332987878402624804147886759050006497706233809809904852000945896192 -> 7438500162121655506707648044316611245012432721508150.686248276676183645732427936702665975756805249608295773518100012995412467619619809704001891792384 +precision: 147 +add_eq83 add_eq -4507408729632993075285946137322E-89370884 -> -9.014817459265986150571892274644E-89370854 +precision: 213 +add_eq84 add_eq -18946245529698534527477539207880208950270436731425498206E-232510777 -> -3.7892491059397069054955078415760417900540873462850996412E-232510722 +precision: 202 +add_eq85 add_eq -.1160872466843020474546838053439180148944913736126154985031388319394436070740662614711081444253895763299276200973534109640860998120660460037206923900325693893491333 -> -0.2321744933686040949093676106878360297889827472252309970062776638788872141481325229422162888507791526598552401947068219281721996241320920074413847800651387786982666 +precision: 30 +add_eq86 add_eq +6196e75176987 -> 1.2392E+75176991 +precision: 261 +add_eq87 add_eq -20879909611696889805431128844755965033513611733955477497132526447325463645980750E284153687 -> -4.1759819223393779610862257689511930067027223467910954994265052894650927291961500E+284153766 +precision: 260 +add_eq88 add_eq 15777051784869834774217858131277114219650548011830230269.6947702542201715E+267645544 -> 3.15541035697396695484357162625542284393010960236604605393895405084403430E+267645599 +precision: 248 +add_eq89 add_eq -.3314890988993856871148614278938772314142062006887188202057252839938411079203255942778079702275160362202511571e-407488052 -> -6.629781977987713742297228557877544628284124013774376404114505679876822158406511885556159404550320724405023142E-407488053 +precision: 2 +add_eq90 add_eq +71 -> 1.4E+2 Rounded Inexact +precision: 169 +add_eq91 add_eq -1936775583675620553757985801533.70200615809472790357079104472296497694860747244500893262888e+332724190 -> -3.87355116735124110751597160306740401231618945580714158208944592995389721494489001786525776E+332724220 +precision: 28 +add_eq92 add_eq 6028281e-27055986 -> 1.2056562E-27055979 +precision: 19 +add_eq93 add_eq Inf -> Infinity +precision: 146 +add_eq94 add_eq -7568122499468077614447019230803397447228374908277620527455659417553638386889418513078019026614286213332688743684803573734265 -> -15136244998936155228894038461606794894456749816555241054911318835107276773778837026156038053228572426665377487369607147468530 +precision: 196 +add_eq95 add_eq 1604660763980250714158392427075712533728179793879263829846207609818838505030558242648447646527046196504349689732999397279905555406298238798104303993704824017.672662433601 -> 3209321527960501428316784854151425067456359587758527659692415219637677010061116485296895293054092393008699379465998794559811110812596477596208607987409648035.345324867202 +precision: 23 +add_eq96 add_eq -75101505200232748675 -> -150203010400465497350 +precision: 184 +add_eq97 add_eq +31422842452474992352848246575325983693456503121955774052367497919549246742315136900757056630872129996690697436.93112146114244757306664156708427554437066171468 -> 62845684904949984705696493150651967386913006243911548104734995839098493484630273801514113261744259993381394873.86224292228489514613328313416855108874132342936 +precision: 258 +add_eq98 add_eq -997565036538917747114922627947784992637915753143515054590082206601.4515423420808541322e+919186 -> -1.9951300730778354942298452558955699852758315062870301091801644132029030846841617082644E+919252 +precision: 297 +add_eq99 add_eq -NaN3692225015753843658446838674575739549149866 -> -NaN3692225015753843658446838674575739549149866 +precision: 229 +compare_eq0 compare_eq -9007353935772116764312875432306874137572149203516326025449391516289574770569042168835349563719357068848819005785238103768955745133965649225157281302191405217212913946343583511293659606356822479556100 -> 0 +precision: 191 +compare_eq1 compare_eq +5916794372888113130055019620156129327439018422817 -> 0 +precision: 199 +compare_eq2 compare_eq -6385564075788557361489053622233363254132221134310928544266570524036736301587945295E-378058779 -> 0 +precision: 67 +compare_eq3 compare_eq -Inf -> 0 +precision: 138 +compare_eq4 compare_eq -731794.5301062241561263430594144186812202291658812531098345748702914099163010 -> 0 +precision: 64 +compare_eq5 compare_eq -74656378421372356611717350391123636755552143017681237816518 -> 0 +precision: 202 +compare_eq6 compare_eq Infinity -> 0 +precision: 166 +compare_eq7 compare_eq -3135268112676303401003012206988648493047143470525854534119158778.621736466496668e202408875 -> 0 +precision: 72 +compare_eq8 compare_eq -211103475906311804063460111467516.611650629842907514261205948039 -> 0 +precision: 226 +compare_eq9 compare_eq +247151100684288841247818405518420486991489238997113284827328194394728120895752620616393699921722802522238696968765129 -> 0 +precision: 213 +compare_eq10 compare_eq 72473614479866.541342177106008e203745652 -> 0 +precision: 81 +compare_eq11 compare_eq -9893686669365087842005e187770999 -> 0 +precision: 61 +compare_eq12 compare_eq +719798193254487550725262309403794826520972209797933659E-207056196 -> 0 +precision: 86 +compare_eq13 compare_eq -8834904932890140954738312548270317E+326893162 -> 0 +precision: 286 +compare_eq14 compare_eq +4732861923965992367477077756422269542642483872091716920679064371688208226350778614637935127074494636137933801927427678692345623266371997170679032064 -> 0 +precision: 167 +compare_eq15 compare_eq +Inf -> 0 +precision: 299 +compare_eq16 compare_eq +12591.4413976810777576488622 -> 0 +precision: 66 +compare_eq17 compare_eq 116741932974250715770498940508884581291e35597230 -> 0 +precision: 67 +compare_eq18 compare_eq -.990252744417428594382738034117697734761076395891 -> 0 +precision: 296 +compare_eq19 compare_eq -5681060144595797043633127.18524117463305393307681289721041904519730457 -> 0 +precision: 255 +compare_eq20 compare_eq +730304626397709830365997833099650354508726032571144630117923605481854245975456299775845771185393001434918550393807780230521935967322466355895162477917973348986037561856746666031151 -> 0 +precision: 211 +compare_eq21 compare_eq -4254933926287947935464416595245014214493488233384119601501584707345520122558187821633820293312294291107860230328393898898372276632 -> 0 +precision: 162 +compare_eq22 compare_eq -794147335845740783746721412911405606235374996808278547957651329296099323760787267455908892781443755539848741366173255083430990537758465959517213344645528019307 -> 0 +precision: 88 +compare_eq23 compare_eq -.91968073570857866355163324199881176276e-341310937 -> 0 +precision: 115 +compare_eq24 compare_eq -Inf -> 0 +precision: 140 +compare_eq25 compare_eq -1972133465063e-117370946 -> 0 +precision: 33 +compare_eq26 compare_eq -93944508708375045473e+123521832 -> 0 +precision: 98 +compare_eq27 compare_eq .785395940277344662788524612832 -> 0 +precision: 169 +compare_eq28 compare_eq 6893914955473388400778406487797306220247981693781278060 -> 0 +precision: 77 +compare_eq29 compare_eq -56898105733392710386080719824.733278705110711100843350259861546411700e135519815 -> 0 +precision: 2 +compare_eq30 compare_eq -46 -> 0 +precision: 208 +compare_eq31 compare_eq Infinity -> 0 +precision: 60 +compare_eq32 compare_eq +101E170147874 -> 0 +precision: 77 +compare_eq33 compare_eq -66258055451775755467691 -> 0 +precision: 69 +compare_eq34 compare_eq +1897535680623417547587049270013143133467911398584597438977961290554 -> 0 +precision: 201 +compare_eq35 compare_eq +Infinity -> 0 +precision: 81 +compare_eq36 compare_eq -2964. -> 0 +precision: 273 +compare_eq37 compare_eq -198974508394979024808079739951986165355645721532590954539888124910127985871393714979286224869911305505052371.45991079666713713678489912150347030550193749468732910306275099512733633348328775648975332365014 -> 0 +precision: 257 +compare_eq38 compare_eq -Inf -> 0 +precision: 217 +compare_eq39 compare_eq -2066391444308.668277764724131630012831233259119 -> 0 +precision: 39 +compare_eq40 compare_eq -8449260028672859015 -> 0 +precision: 117 +compare_eq41 compare_eq +7996192339752622879894203560570261377931132719630641168832842390103509632 -> 0 +precision: 246 +compare_eq42 compare_eq .621739602491313265130828220442314512048666506402357407931301794294424321070098142999551860110495517374132020686360491901268492799941091583144600365815 -> 0 +precision: 237 +compare_eq43 compare_eq -.6332735827544529163950445507505516703221686705762208884639055540485091879970450169072912989599355324655816810653778594544070895E86713243 -> 0 +precision: 257 +compare_eq44 compare_eq +.1277182288063531468560805784932256275452526473784679302678063160415585510873610306E+224019300 -> 0 +precision: 277 +compare_eq45 compare_eq 89178868201045237051962407667621610959409753235165133715944135920042759819399908871954728392764E-86991959 -> 0 +precision: 265 +compare_eq46 compare_eq +88324386722078668271579193759749782941431898032339143208589736362337433632757799609566350683510071551084177840033813915991941233662802262498578768975408899018494404671188603951211763363140019452409300874009545227.1965293920 -> 0 +precision: 126 +compare_eq47 compare_eq +7439319482112839387765.5161495604875859889324844362597311 -> 0 +precision: 229 +compare_eq48 compare_eq +1786.34818903696689288681914890190e+402589201 -> 0 +precision: 270 +compare_eq49 compare_eq +6920765670667989252208419493317093.4703792 -> 0 +precision: 228 +compare_eq50 compare_eq -418730244981491866838672967268977447561018816066706673443653360744583381585453539650868050155525126641116271455901853690267247104884357672914210921849923618900368186580461149681534e+127960255 -> 0 +precision: 171 +compare_eq51 compare_eq -.860031108648211040650227268088699123347461459509181370871160991605527837826222814417778917710675964122439961988391326866566710085406262326993281 -> 0 +precision: 12 +compare_eq52 compare_eq +312 -> 0 +precision: 289 +compare_eq53 compare_eq -57965161388903348743915079271873493452028466186269316289984350892722208589712921378172501460523645733920822603834667212669193536949921266749407010589444370.168837967967024237574639374901517823535355684209175099642543559722312791910474539475336258596 -> 0 +precision: 112 +compare_eq54 compare_eq -7636834335469345853726083094186228657150351657946659168 -> 0 +precision: 34 +compare_eq55 compare_eq -8490774049191 -> 0 +precision: 265 +compare_eq56 compare_eq +.2290660417697529884599773401290365250016788100209681992341111134875657561490049891 -> 0 +precision: 241 +compare_eq57 compare_eq 846426125581058816461248848698482507469272761120480801201134686535236949958561472015611522446267807686291882835969383458E-397419314 -> 0 +precision: 173 +compare_eq58 compare_eq -24826274437662289781 -> 0 +precision: 199 +compare_eq59 compare_eq 479278501724080635557584933192754760541093858843 -> 0 +precision: 300 +compare_eq60 compare_eq 936862575282440780126712802279886124221523377283079974758143265370.466300240626681434796438678 -> 0 +precision: 10 +compare_eq61 compare_eq +945 -> 0 +precision: 288 +compare_eq62 compare_eq -.145260377713219170355463634611793714594878041876034714155948650069869764430543570286554932697246690056716934633807198845325621241158009676371813189817039187404551192218420909160671293727773714298042649759903982658674247989447892746944118244345112761820780312094060635246227683 -> 0 +precision: 66 +compare_eq63 compare_eq 688405296607045181930448545412977012291569481336 -> 0 +precision: 74 +compare_eq64 compare_eq -237375047118729109400227640042325462522683 -> 0 +precision: 73 +compare_eq65 compare_eq -1912568279265251151469188620017960685182403827445381 -> 0 +precision: 12 +compare_eq66 compare_eq -1.4e+165940976 -> 0 +precision: 218 +compare_eq67 compare_eq +180770399264466643670636337655460136422461479935146367023634970315665002519713045524989630825063567363020323362001624610255654587936969903.4702868763940233805689072889388293140404858557468821871376054990851207938084e-62855166 -> 0 +precision: 158 +compare_eq68 compare_eq 43814162216963469838140237940804555863650417044001367159311129.5851618187237587980353426224277338514683035968957923818834572504473316133863394397070e-256639213 -> 0 +precision: 174 +compare_eq69 compare_eq 8228630788.863469510840782113437262545317700231410304998077667310667412677082755905260 -> 0 +precision: 20 +compare_eq70 compare_eq +13674294218 -> 0 +precision: 40 +compare_eq71 compare_eq -.9593579935840389625267202708174E167047834 -> 0 +precision: 85 +compare_eq72 compare_eq +49.130637018328607972310407605668923247953353912 -> 0 +precision: 110 +compare_eq73 compare_eq -34703055561639688623200472 -> 0 +precision: 104 +compare_eq74 compare_eq 6942423911248970195403525.350602635738 -> 0 +precision: 38 +compare_eq75 compare_eq +2995891e-350109900 -> 0 +precision: 6 +compare_eq76 compare_eq +41.514e-93272807 -> 0 +precision: 83 +compare_eq77 compare_eq 883986733650.665794483121877140316157432 -> 0 +precision: 78 +compare_eq78 compare_eq -.8531432400131245548709746450098421508618538527983099792859794024 -> 0 +precision: 3 +compare_eq79 compare_eq -Infinity -> 0 +precision: 281 +compare_eq80 compare_eq +.71427589545839183943272594085797004917353585532052004005311986996003650685761642549874403348788276151755046948424535426445077677264252404783621862 -> 0 +precision: 36 +compare_eq81 compare_eq +603829499360264303518393077530830400E-226494507 -> 0 +precision: 269 +compare_eq82 compare_eq -776175063291600101366895543999053897412353752444533765805847005790728111619705296477560833600391610579614526217307111556043927146337021099851673441404565920794215496790781984778088515352139335819552 -> 0 +precision: 51 +compare_eq83 compare_eq -17 -> 0 +precision: 265 +compare_eq84 compare_eq -518161597424055338969561061851e+119183938 -> 0 +precision: 8 +compare_eq85 compare_eq 77533103 -> 0 +precision: 41 +compare_eq86 compare_eq -Infinity -> 0 +precision: 288 +compare_eq87 compare_eq -.307735241395178289000380750144607402635680544024548717328034910349575240203536 -> 0 +precision: 14 +compare_eq88 compare_eq -9610128.2e126328502 -> 0 +precision: 26 +compare_eq89 compare_eq -25.5 -> 0 +precision: 287 +compare_eq90 compare_eq 9498912911528E423364418 -> 0 +precision: 113 +compare_eq91 compare_eq -9835834697125510303483901957471429469951199273017395166458433801704118589945935768710890412467603065163833 -> 0 +precision: 298 +compare_eq92 compare_eq +5989973200 -> 0 +precision: 21 +compare_eq93 compare_eq +855.55871 -> 0 +precision: 261 +compare_eq94 compare_eq -170154907914149531616787479918808412704670690785004101130413905778369523828316743207760324803815449646295770057821185763813291181572254116186249751 -> 0 +precision: 153 +compare_eq95 compare_eq 8457584552239694621071976525341210303074870891413068486860208541.7615546033117466805201385747294478 -> 0 +precision: 90 +compare_eq96 compare_eq -2389609473350169301064192444054 -> 0 +precision: 17 +compare_eq97 compare_eq +NaN -> NaN +precision: 151 +compare_eq98 compare_eq -8947511627083754886602209 -> 0 +precision: 130 +compare_eq99 compare_eq 976124138088614126470201135226780680.704702147394065847816730859457932432206409349567706054485514784856262724882464446069787 -> 0 +precision: 248 +comparesig_eq0 comparesig_eq +443218328141977116618499219869427792863703940883837500974693489910900558802508122820265027945576438583080053472499267789810322489682277548554477094690233317889310073639439589694465931676 -> 0 +precision: 255 +comparesig_eq1 comparesig_eq 37997421400698793468295234499258938258888893937595659697398091686412465480 -> 0 +precision: 103 +comparesig_eq2 comparesig_eq +Inf -> 0 +precision: 191 +comparesig_eq3 comparesig_eq -6933701919877978919150970419010899976433950357154499492837634590108537724381523643084717306147027867742153815638220191504998319490472095784410069242528741482 -> 0 +precision: 193 +comparesig_eq4 comparesig_eq -47812518464585119626726035403928385947656659998352074179212502021696385806273985217167217928648389886030152648993468188319199223483710363052017557 -> 0 +precision: 163 +comparesig_eq5 comparesig_eq 360337639872546936929007085256394475943155702027596131443312309878840379766218579145537526500698338603338714019025407380306e-418265056 -> 0 +precision: 242 +comparesig_eq6 comparesig_eq -31760299193180193086039340877196612051E-353127402 -> 0 +precision: 137 +comparesig_eq7 comparesig_eq -.998382178397181588724984523380125082139160955422944628402154086189654343 -> 0 +precision: 94 +comparesig_eq8 comparesig_eq -21521287105485335900058835677997929.685115 -> 0 +precision: 130 +comparesig_eq9 comparesig_eq -784068E248558867 -> 0 +precision: 35 +comparesig_eq10 comparesig_eq +51702787700946121114 -> 0 +precision: 137 +comparesig_eq11 comparesig_eq 4667014531958E-147495966 -> 0 +precision: 166 +comparesig_eq12 comparesig_eq +4760165972926658E381246741 -> 0 +precision: 119 +comparesig_eq13 comparesig_eq +5505737404560022093411498104262575867104894784446366690414229636274784147258688774440827920763 -> 0 +precision: 132 +comparesig_eq14 comparesig_eq -347807043852551101647101869412552583233298278825134385405040508165964901659202085513866758597221085826837780440667693198445 -> 0 +precision: 118 +comparesig_eq15 comparesig_eq -50642681 -> 0 +precision: 190 +comparesig_eq16 comparesig_eq -.94361683541474257700162793360802243112269273008329605231046550673638851756932412089551 -> 0 +precision: 232 +comparesig_eq17 comparesig_eq -252557444700430861780 -> 0 +precision: 89 +comparesig_eq18 comparesig_eq -4183946310068446304739.2285521213055446611619030277e-357595691 -> 0 +precision: 46 +comparesig_eq19 comparesig_eq -365136.924140586E-44399100 -> 0 +precision: 96 +comparesig_eq20 comparesig_eq -861426279194159791435914948351498849796524754107803000188924032541099623936859 -> 0 +precision: 231 +comparesig_eq21 comparesig_eq -Infinity -> 0 +precision: 34 +comparesig_eq22 comparesig_eq -18150478437875.E-281898512 -> 0 +precision: 227 +comparesig_eq23 comparesig_eq 57916107015060486447703111925486531310742653212070825099842127990315480932510789419377847269547151321271440862244938257019568953721526841840680184399775395579 -> 0 +precision: 204 +comparesig_eq24 comparesig_eq -182860817813518478024759693816327277831702667588452582010605829748826591672626251536E111616411 -> 0 +precision: 209 +comparesig_eq25 comparesig_eq -79511531912729216167521329108591865165893985791420024207.6552167446519439569057292654485977374938190502497132123700730185171927276352976878957843271050904682654 -> 0 +precision: 182 +comparesig_eq26 comparesig_eq +1269441806540666651697925608827109930 -> 0 +precision: 8 +comparesig_eq27 comparesig_eq -30. -> 0 +precision: 259 +comparesig_eq28 comparesig_eq +224851905702113858.35886883229993744933464854149639851744288954052052504348415853760382663928441048089622941688310835722566004980632091599264978892685180352267553802511339438517250598851386797430618480301600593962328367979899977 -> 0 +precision: 244 +comparesig_eq29 comparesig_eq -.143093784725095670283239974024223403475502540616850769748698331459416123974359162423020785322549107657527135425710818209687219690060596206609226856701577171841263673918699963154804763074987224764175721736349e-402448170 -> 0 +precision: 233 +comparesig_eq30 comparesig_eq +7962.2 -> 0 +precision: 64 +comparesig_eq31 comparesig_eq .345219 -> 0 +precision: 170 +comparesig_eq32 comparesig_eq +NaN -> NaN Invalid_operation +precision: 45 +comparesig_eq33 comparesig_eq +.6565938761315e227931936 -> 0 +precision: 208 +comparesig_eq34 comparesig_eq +.256549465694027632146005314147130212461745309999148219932655 -> 0 +precision: 263 +comparesig_eq35 comparesig_eq -243405782531174049750660374386612021870199513832409370489204978027636588778346722665138689567246206883577946196596 -> 0 +precision: 140 +comparesig_eq36 comparesig_eq +89 -> 0 +precision: 205 +comparesig_eq37 comparesig_eq +80221990337451797941151796155941669650422003663081570320565e+362981946 -> 0 +precision: 157 +comparesig_eq38 comparesig_eq -886.84405929870625327666400733 -> 0 +precision: 55 +comparesig_eq39 comparesig_eq 651055903500107359323E-129425639 -> 0 +precision: 31 +comparesig_eq40 comparesig_eq +5902.3494 -> 0 +precision: 283 +comparesig_eq41 comparesig_eq +3477271273664033393177320831550843067545772483039052858416451284409114092933143001654879327290678728649861697302720629482367E-36514271 -> 0 +precision: 94 +comparesig_eq42 comparesig_eq +26508299325881366146548994474824862480029.61803942978366096670484716835883415710535382125538727 -> 0 +precision: 67 +comparesig_eq43 comparesig_eq -520856914255828430040461625110456078136061468e+189012675 -> 0 +precision: 300 +comparesig_eq44 comparesig_eq -sNaN1719199864504192981369065046718141571733427655329591740479609134773 -> -NaN1719199864504192981369065046718141571733427655329591740479609134773 Invalid_operation +precision: 254 +comparesig_eq45 comparesig_eq 2669871175002759062327e40673202 -> 0 +precision: 255 +comparesig_eq46 comparesig_eq -750319257079568.4932947848244945128065344527137150220007538078979760184761195291229685807617013571494849406376202075283052581611592260170904089086693363050491590096051640E-276665520 -> 0 +precision: 97 +comparesig_eq47 comparesig_eq -Infinity -> 0 +precision: 277 +comparesig_eq48 comparesig_eq -1734650251013986509105600532769007935247090968914151018389034433138215984519308349073258761124514640635670794074633301133868412210488034440073780752109113864696474607025527475031294996743787010473067392708E158775841 -> 0 +precision: 73 +comparesig_eq49 comparesig_eq -.7501411520050394755732161438414587712441297E-91061421 -> 0 +precision: 174 +comparesig_eq50 comparesig_eq +1.5 -> 0 +precision: 107 +comparesig_eq51 comparesig_eq +.1626902790496728212382616245 -> 0 +precision: 206 +comparesig_eq52 comparesig_eq 103567908430272317023394484604560167490830779769562028191578492814130837349369628148 -> 0 +precision: 151 +comparesig_eq53 comparesig_eq -.306901421160199110759338123050230466990247409003649584967108608347728771906346487981474419593001482740810780495693E-355990929 -> 0 +precision: 133 +comparesig_eq54 comparesig_eq -66488371896601189243959190296625593063199862547 -> 0 +precision: 199 +comparesig_eq55 comparesig_eq -304907749247062928133882971570295578000957765414801583802 -> 0 +precision: 88 +comparesig_eq56 comparesig_eq .667134127807274140872 -> 0 +precision: 25 +comparesig_eq57 comparesig_eq -9785E-161261932 -> 0 +precision: 181 +comparesig_eq58 comparesig_eq -436465003290957681609262971267437650067550190657697683590e88881700 -> 0 +precision: 107 +comparesig_eq59 comparesig_eq sNaN438 -> NaN438 Invalid_operation +precision: 122 +comparesig_eq60 comparesig_eq 6805139245289086722722546114.31357051666639 -> 0 +precision: 24 +comparesig_eq61 comparesig_eq +3493.77E410980512 -> 0 +precision: 222 +comparesig_eq62 comparesig_eq +Infinity -> 0 +precision: 200 +comparesig_eq63 comparesig_eq -24070239476950525376458192588411127714052427247715961763332159094311632715690816062902913890792077975174203706352745765162055691844183496657401554817759382337732665161013248073021508 -> 0 +precision: 160 +comparesig_eq64 comparesig_eq +46199393368388981031556113233383197212396288810445815324696453947831093234885877661436732e-113516827 -> 0 +precision: 299 +comparesig_eq65 comparesig_eq -58078542E-124225520 -> 0 +precision: 38 +comparesig_eq66 comparesig_eq 23180251521379780072690958 -> 0 +precision: 180 +comparesig_eq67 comparesig_eq Inf -> 0 +precision: 173 +comparesig_eq68 comparesig_eq +Infinity -> 0 +precision: 236 +comparesig_eq69 comparesig_eq +48796858471830458601744841E343866752 -> 0 +precision: 152 +comparesig_eq70 comparesig_eq 9019750454498797492154956601651600014317388557535384118850700808998770938959 -> 0 +precision: 124 +comparesig_eq71 comparesig_eq -55355253203515762435293691965595753492244794078050.88038218212797322289001081235138416608 -> 0 +precision: 238 +comparesig_eq72 comparesig_eq +.174405081250299296686158122239013835458639588577324575008695620777917187791497809061971402E-191010293 -> 0 +precision: 12 +comparesig_eq73 comparesig_eq -94379E375088835 -> 0 +precision: 24 +comparesig_eq74 comparesig_eq -57275464382E-11669520 -> 0 +precision: 139 +comparesig_eq75 comparesig_eq -59362155200307923174899701631568702172987363782851967e-90376469 -> 0 +precision: 166 +comparesig_eq76 comparesig_eq -sNaN8022955350797271743521220661860068150004094534978599374117523550281156228863 -> -NaN8022955350797271743521220661860068150004094534978599374117523550281156228863 Invalid_operation +precision: 124 +comparesig_eq77 comparesig_eq -.79043627E368736732 -> 0 +precision: 148 +comparesig_eq78 comparesig_eq 72800120530298499018177574575616336173741182688081604999622875361466150782396787003937195 -> 0 +precision: 91 +comparesig_eq79 comparesig_eq -Inf -> 0 +precision: 205 +comparesig_eq80 comparesig_eq -8303662893166624819399739388821812215976959684873666755907439403057259144785438121 -> 0 +precision: 32 +comparesig_eq81 comparesig_eq 3122.654904272676529013962 -> 0 +precision: 137 +comparesig_eq82 comparesig_eq 530314963994043807989826223043725200083572862835089454046771724202946013583378593983874723309546949515330526 -> 0 +precision: 153 +comparesig_eq83 comparesig_eq +5251054043035114272589353544346869055 -> 0 +precision: 196 +comparesig_eq84 comparesig_eq 32907845717664604077678973990832042999133285502613380782541596162687171382272673758091010865741404165786048168265560811741946949627110114276920983513636935702270914992386941571648162875474393229 -> 0 +precision: 267 +comparesig_eq85 comparesig_eq -145477.36085741942368111299133553495166398813458525407671937406523482289386958918608618028201818180367731747981428205891103639921581098266001822509460098220477243360842780947119931643351266878494818464890877817504979308033410860491032 -> 0 +precision: 87 +comparesig_eq86 comparesig_eq -5300872926384109386495104074509939488361476830.58842994843249445415914568507 -> 0 +precision: 296 +comparesig_eq87 comparesig_eq -Infinity -> 0 +precision: 178 +comparesig_eq88 comparesig_eq -7147837014474e-165622920 -> 0 +precision: 146 +comparesig_eq89 comparesig_eq Inf -> 0 +precision: 190 +comparesig_eq90 comparesig_eq +568917471990264033148495754614160410115160.639994862860671e-377147670 -> 0 +precision: 153 +comparesig_eq91 comparesig_eq -Inf -> 0 +precision: 213 +comparesig_eq92 comparesig_eq 963141918525426785654180839756966764384838965304941870521624822134472348537526025036902323387848493593390039238047.1402879 -> 0 +precision: 204 +comparesig_eq93 comparesig_eq +309931186985392315382335507284494613278564708523419399468209419016658416070375696481 -> 0 +precision: 221 +comparesig_eq94 comparesig_eq -154483148338112844837500671040720359610849173958624132217177909015913440740227481602550034901336077278687502351788154995810376052369153755071413705671971918199359534907415169285808896840853941108708314056398524031e-10384050 -> 0 +precision: 70 +comparesig_eq95 comparesig_eq -841750032910036116233146806114682227725010102053515167 -> 0 +precision: 136 +comparesig_eq96 comparesig_eq +290316105781672314935590622.584881501203837876 -> 0 +precision: 40 +comparesig_eq97 comparesig_eq +.54750471332738278883325527266e-370156793 -> 0 +precision: 299 +comparesig_eq98 comparesig_eq -921945294154951074691990e+247382556 -> 0 +precision: 262 +comparesig_eq99 comparesig_eq 844260893664238275326964864428550816106089231301071144471479560384500194785910249144896316305120894479179697189371088409948850574975751581201843734334445699096 -> 0 +precision: 112 +comparetotal_eq0 comparetotal_eq +5246899448694934.76746583E7239466 -> 0 +precision: 79 +comparetotal_eq1 comparetotal_eq -461866196766787289755310460813711109452546567.23424500338922 -> 0 +precision: 40 +comparetotal_eq2 comparetotal_eq 40559967.8048E-198120324 -> 0 +precision: 266 +comparetotal_eq3 comparetotal_eq -9437982050732575696500348294673631751154677609 -> 0 +precision: 124 +comparetotal_eq4 comparetotal_eq -96811735681867.7984178276098534408383E127638675 -> 0 +precision: 75 +comparetotal_eq5 comparetotal_eq 391. -> 0 +precision: 33 +comparetotal_eq6 comparetotal_eq -9.43680350 -> 0 +precision: 294 +comparetotal_eq7 comparetotal_eq 27959604366359647700745733948049612690243207984915855045328511423008092151246906593884074672578372998798271317716359579245043771207423960210775051701414490278138417968439010305878244389012170592302216620518633267137274550542358977200 -> 0 +precision: 138 +comparetotal_eq8 comparetotal_eq -25528965775279494749526155563572623484078432378058720879126682388159906903511297E-244882723 -> 0 +precision: 244 +comparetotal_eq9 comparetotal_eq -9281850005665851235622347297669259701948183160824762561351343345512852597824887595865158304173994318791300854529231998277183746085679426640138406269E+328418863 -> 0 +precision: 278 +comparetotal_eq10 comparetotal_eq 2517236410289071215454366.91690707483733981740428621255157317707 -> 0 +precision: 141 +comparetotal_eq11 comparetotal_eq -75335785477146958137792573755062761314100934398145573120696144720210794533475576369435058E+40891440 -> 0 +precision: 230 +comparetotal_eq12 comparetotal_eq sNaN76354902994648853221883284 -> 0 +precision: 51 +comparetotal_eq13 comparetotal_eq Inf -> 0 +precision: 33 +comparetotal_eq14 comparetotal_eq -4435 -> 0 +precision: 171 +comparetotal_eq15 comparetotal_eq -125136902630654290263592590336273488708373234272833809704043198875429961901519716584164061228408050181599610778152E-245322156 -> 0 +precision: 189 +comparetotal_eq16 comparetotal_eq +6874353725896231282439388654524433172495557684552967996478859896127711650849984146e-150630391 -> 0 +precision: 253 +comparetotal_eq17 comparetotal_eq +1384678513247367538385942433269265625400190754875E-357438088 -> 0 +precision: 101 +comparetotal_eq18 comparetotal_eq +84859581870254002326819092610960254621188154597905194220312e60785947 -> 0 +precision: 161 +comparetotal_eq19 comparetotal_eq -308691504716542199325069259101332601402222081328057497879628665241073542811853839386107229334350606742707231 -> 0 +precision: 204 +comparetotal_eq20 comparetotal_eq 2323395251698126837624275500346909376803797839576402645628745425783507893301316824840857368994e-358974030 -> 0 +precision: 41 +comparetotal_eq21 comparetotal_eq -1539316683112366155205E-306141337 -> 0 +precision: 265 +comparetotal_eq22 comparetotal_eq +Inf -> 0 +precision: 240 +comparetotal_eq23 comparetotal_eq 65660431867198327895984813239366242355925566099.8249504093 -> 0 +precision: 239 +comparetotal_eq24 comparetotal_eq +NaN95426130324013836829372489285384 -> 0 +precision: 138 +comparetotal_eq25 comparetotal_eq +9226862933823272238525523121537169520021744190878478222402215922328906799625007808566045211083097759351857976 -> 0 +precision: 25 +comparetotal_eq26 comparetotal_eq -203976422855E-424643559 -> 0 +precision: 140 +comparetotal_eq27 comparetotal_eq +Inf -> 0 +precision: 230 +comparetotal_eq28 comparetotal_eq 1684507779913004167040538483691332177958320548101419006793272913153083751817973461035071305306495516690230362427305.860040986789016539749886886164782188826619883923253211514960650441865991095447517135053 -> 0 +precision: 34 +comparetotal_eq29 comparetotal_eq -8956225701919633184514 -> 0 +precision: 87 +comparetotal_eq30 comparetotal_eq -79712539275966426244908074 -> 0 +precision: 25 +comparetotal_eq31 comparetotal_eq -2293.6 -> 0 +precision: 162 +comparetotal_eq32 comparetotal_eq -766371632277150743394633971154707100109240657037620916916637308098741854350933973 -> 0 +precision: 193 +comparetotal_eq33 comparetotal_eq .49258617682794966239719251415318456021079673970955370324256964091194138913316036373 -> 0 +precision: 111 +comparetotal_eq34 comparetotal_eq +25420056938045759278713024822597632359908063 -> 0 +precision: 154 +comparetotal_eq35 comparetotal_eq -5840960840830984347784120310482278912119941937220265966441278135936362 -> 0 +precision: 278 +comparetotal_eq36 comparetotal_eq +.96639830484533114195010430496461447034849244108043088176734470614686243285830258209332 -> 0 +precision: 235 +comparetotal_eq37 comparetotal_eq 609078831558529032357231613361636659161231641302280958182155568939673961288731174121447130638911132410478298871891093352545636582955778 -> 0 +precision: 148 +comparetotal_eq38 comparetotal_eq -492431992367754773794292859191445.75707689810540 -> 0 +precision: 152 +comparetotal_eq39 comparetotal_eq 7561355909241527088878491188609477610745.56913866984929236571987563254893811919073173009 -> 0 +precision: 193 +comparetotal_eq40 comparetotal_eq -97493232450091634024533754846117282879608499337334168603594097362055418324023043571440921960766696878459536651882558781266859634290784442567507200076666682 -> 0 +precision: 66 +comparetotal_eq41 comparetotal_eq 6323256972587367812099554833376066222 -> 0 +precision: 212 +comparetotal_eq42 comparetotal_eq -sNaN926217394308182462513194222805142330965398870390251415736522419 -> 0 +precision: 104 +comparetotal_eq43 comparetotal_eq -2924066411578004754670460010376603422457809677564301378945714E+228725290 -> 0 +precision: 221 +comparetotal_eq44 comparetotal_eq -sNaN72278471691941012585765495930850666349054 -> 0 +precision: 168 +comparetotal_eq45 comparetotal_eq +.72938982485106232415414696665038492709364301452992140 -> 0 +precision: 277 +comparetotal_eq46 comparetotal_eq -22098704582652736945471192619729714687018074157376422989502879209389543641043472913691539953723696853389102482357982355964356173574539813401016366920958455291440803568106903771503864 -> 0 +precision: 137 +comparetotal_eq47 comparetotal_eq 13761698928987.3117534779405790 -> 0 +precision: 218 +comparetotal_eq48 comparetotal_eq 1825092551599698804080668795452734416657433282476615071466652089127279932.57161502563813684832853759287015545841978477072074303259312494513928328499217689010083339592916333185803789411 -> 0 +precision: 62 +comparetotal_eq49 comparetotal_eq -sNaN98062353772402443881044971742534150634093809711501114434449121409989773439185630340922455 -> 0 +precision: 24 +comparetotal_eq50 comparetotal_eq -247 -> 0 +precision: 236 +comparetotal_eq51 comparetotal_eq +Infinity -> 0 +precision: 94 +comparetotal_eq52 comparetotal_eq -8706612392446856160472.23971555226 -> 0 +precision: 238 +comparetotal_eq53 comparetotal_eq -Inf -> 0 +precision: 113 +comparetotal_eq54 comparetotal_eq +54551202290261088647145812168868414947482481970450923380422170040735316593692916176673460638260927128 -> 0 +precision: 210 +comparetotal_eq55 comparetotal_eq -23392464704555833073333845747785043899918881228044989416745 -> 0 +precision: 75 +comparetotal_eq56 comparetotal_eq 5199079612634732927128915818763947707905235863932304759051692352380 -> 0 +precision: 71 +comparetotal_eq57 comparetotal_eq -41658558395 -> 0 +precision: 184 +comparetotal_eq58 comparetotal_eq -4905451675849454718192225946712026065208620927977571081231926543837430234603335787807912513755676844e-132315104 -> 0 +precision: 16 +comparetotal_eq59 comparetotal_eq +12980935747451 -> 0 +precision: 222 +comparetotal_eq60 comparetotal_eq -904310269323972185453804687265334252461135435 -> 0 +precision: 171 +comparetotal_eq61 comparetotal_eq +.13265163777084895000705951208680477910509456697936405162894082154219383112099637343513689070459 -> 0 +precision: 228 +comparetotal_eq62 comparetotal_eq -4661337311843780919273456335702781557558524784620266146060070705730805584862376476303516282248214878433633764223010581705801814025705604093630080705239048291927029355334.31807733785261284880500458858695400723E+178120485 -> 0 +precision: 9 +comparetotal_eq63 comparetotal_eq +713 -> 0 +precision: 243 +comparetotal_eq64 comparetotal_eq 6851722859863430703579216465147621767254669001174906.5848239331451825404461044 -> 0 +precision: 259 +comparetotal_eq65 comparetotal_eq +Inf -> 0 +precision: 194 +comparetotal_eq66 comparetotal_eq +Infinity -> 0 +precision: 187 +comparetotal_eq67 comparetotal_eq +4513619 -> 0 +precision: 137 +comparetotal_eq68 comparetotal_eq -5106697075729303473511829 -> 0 +precision: 66 +comparetotal_eq69 comparetotal_eq 5697586627112889837597481858528E-119520701 -> 0 +precision: 218 +comparetotal_eq70 comparetotal_eq -8651463308652248892998532242397472315383840375227251616774121511 -> 0 +precision: 44 +comparetotal_eq71 comparetotal_eq -0.95e-346395845 -> 0 +precision: 181 +comparetotal_eq72 comparetotal_eq -5504806518340895447721421314834288625084006686420266280149683604363743847003188557150256775994512651031656977572639102247717731742591432037631633265543079086114097094244E-252316798 -> 0 +precision: 70 +comparetotal_eq73 comparetotal_eq +3297800735741806144724070844056308651989.8195189445361340170 -> 0 +precision: 10 +comparetotal_eq74 comparetotal_eq 679.48293e357807815 -> 0 +precision: 127 +comparetotal_eq75 comparetotal_eq 537293600434066560272731611207861123E-54528486 -> 0 +precision: 245 +comparetotal_eq76 comparetotal_eq .341128186 -> 0 +precision: 71 +comparetotal_eq77 comparetotal_eq -116376141.9 -> 0 +precision: 5 +comparetotal_eq78 comparetotal_eq -25450 -> 0 +precision: 114 +comparetotal_eq79 comparetotal_eq -6156275624792929643867440115549636403963333307553031343670612158451755789577444e35642861 -> 0 +precision: 183 +comparetotal_eq80 comparetotal_eq 1436806528596721094903626504703250133609839635221562040328384374527759306314808759113699479834004752000528142 -> 0 +precision: 181 +comparetotal_eq81 comparetotal_eq -21882842429873859342811289020455405947295807297433524273.5033688681369572612689959612895523592269217943993881461958038309740663992250165 -> 0 +precision: 16 +comparetotal_eq82 comparetotal_eq +9104497E+151807076 -> 0 +precision: 88 +comparetotal_eq83 comparetotal_eq +78007340379140382503222146584230561293.6112041572340247811438098 -> 0 +precision: 156 +comparetotal_eq84 comparetotal_eq +29027728861723744.987930411887223347 -> 0 +precision: 55 +comparetotal_eq85 comparetotal_eq +.96407480400037326 -> 0 +precision: 154 +comparetotal_eq86 comparetotal_eq +65803825741020559688830869906427484228979e-211972109 -> 0 +precision: 250 +comparetotal_eq87 comparetotal_eq -.641101115445444382735173970445115273523256615609198145148927922338445262727389076631144187678080873779711150802134879655034822629872274567149949318442373926116664816829103814531433035751336957E-89566219 -> 0 +precision: 174 +comparetotal_eq88 comparetotal_eq -6411257720241023569725249883220203650598911781178552350512 -> 0 +precision: 80 +comparetotal_eq89 comparetotal_eq 79664590522408459087457305685717875175295539479013.9839536e+78085169 -> 0 +precision: 193 +comparetotal_eq90 comparetotal_eq +6431716598993424357379670542672958642624896904007690657231917E-32301189 -> 0 +precision: 134 +comparetotal_eq91 comparetotal_eq -7166075910839705669531272023962865308475807 -> 0 +precision: 129 +comparetotal_eq92 comparetotal_eq -6189266627381367415e+143265950 -> 0 +precision: 33 +comparetotal_eq93 comparetotal_eq 877743875606520142232012637658 -> 0 +precision: 296 +comparetotal_eq94 comparetotal_eq 81e-276983863 -> 0 +precision: 294 +comparetotal_eq95 comparetotal_eq +37990227712894018190245008555216423186177188774589232370547312654192878952827434840555479696803907037593108819308685706534637859453591754877110147238939108347755331645878543383812287278522111658280153264936058968155798527779026989303225033371699490579432216 -> 0 +precision: 163 +comparetotal_eq96 comparetotal_eq 44032 -> 0 +precision: 8 +comparetotal_eq97 comparetotal_eq Infinity -> 0 +precision: 290 +comparetotal_eq98 comparetotal_eq 97731522466945259125738531538118925073980868195733645959420939515288449102211831007042885860705615508898582478034856E196236986 -> 0 +precision: 9 +comparetotal_eq99 comparetotal_eq 3745E-366098382 -> 0 +precision: 254 +comparetotmag_eq0 comparetotmag_eq .758599241688130692588376356255616760550215971262736680716244497795320979910 -> 0 +precision: 111 +comparetotmag_eq1 comparetotmag_eq -.9680035 -> 0 +precision: 280 +comparetotmag_eq2 comparetotmag_eq -2978664146700401661050144467205502091778945285794943.5248293726490459289168834361170650892056840210562147124621253082638290597E+7322343 -> 0 +precision: 295 +comparetotmag_eq3 comparetotmag_eq 373073810351083847308492490954096527470990852948834396384108768226709606406334550611804149162380581619848100884564003356 -> 0 +precision: 154 +comparetotmag_eq4 comparetotmag_eq -135085990223239252869521315004690787363062113045882520688592861094582362232.55964478264515146118847138432934464225278618354764781084094e92097362 -> 0 +precision: 243 +comparetotmag_eq5 comparetotmag_eq -1120585765691099973098517057771041784915627514634982800943025329535288084063510001452857743185000682366687360090711916144882751214203633045047994315 -> 0 +precision: 110 +comparetotmag_eq6 comparetotmag_eq -.20986013404104445 -> 0 +precision: 61 +comparetotmag_eq7 comparetotmag_eq -132623430907907261480242121846759045719458101160804991841698e+137555302 -> 0 +precision: 189 +comparetotmag_eq8 comparetotmag_eq -.648067853225656977027614789502827 -> 0 +precision: 269 +comparetotmag_eq9 comparetotmag_eq 9045859255918240474189386605826358421406783106936386724841465300830461793246494305642676288639156880459745974039110790497439518275879018825694328134297921548322228683153608598436165303878673586307015843876744458212064725189171187795112144991950513531319187108946E357466168 -> 0 +precision: 11 +comparetotmag_eq10 comparetotmag_eq Infinity -> 0 +precision: 87 +comparetotmag_eq11 comparetotmag_eq -.566395295580511589782317514717704373645202839050284415466945646386797218341354193980482 -> 0 +precision: 243 +comparetotmag_eq12 comparetotmag_eq -124668041670319474801622709957866055808699098173829793598656287723081972262818475975608150477147475922020664948964116111683568298751080978937176489654649930812285344 -> 0 +precision: 278 +comparetotmag_eq13 comparetotmag_eq +97028962788304318465566675904657057818764168452694328913600937301641.1959 -> 0 +precision: 212 +comparetotmag_eq14 comparetotmag_eq -sNaN -> 0 +precision: 56 +comparetotmag_eq15 comparetotmag_eq 4383.754031837823371188245102 -> 0 +precision: 79 +comparetotmag_eq16 comparetotmag_eq +234942328155740.248917344733058641280365579285605765248299037985196039831755 -> 0 +precision: 249 +comparetotmag_eq17 comparetotmag_eq +.401719198135011875197940475930593041290481963182726261321731761677653679534094866070618897346798586493963537889847022987903115935359554110352729E307502114 -> 0 +precision: 151 +comparetotmag_eq18 comparetotmag_eq 6921450187264584739745876147764680320341.4174560759053687563289470476219096442911606343671248e189923536 -> 0 +precision: 39 +comparetotmag_eq19 comparetotmag_eq 9002690516378.52168050266097 -> 0 +precision: 91 +comparetotmag_eq20 comparetotmag_eq .663496894776070882688311537371 -> 0 +precision: 95 +comparetotmag_eq21 comparetotmag_eq 560062470258092620667281428698450214 -> 0 +precision: 77 +comparetotmag_eq22 comparetotmag_eq -0.2440E+271150960 -> 0 +precision: 217 +comparetotmag_eq23 comparetotmag_eq 173780887620216.10378226384665941189349 -> 0 +precision: 267 +comparetotmag_eq24 comparetotmag_eq 78230449298101544670042493593344496314553350195042268729345261790243785081385101271583765737474227275159585323320773885662468667519818859252260707490033363050325242288980817360068966775725142286459487068404096780654625219633934135953723359797985546299 -> 0 +precision: 226 +comparetotmag_eq25 comparetotmag_eq -.8205874202182345629002759547579312641404716080698336228400981809432098568638844459806005249323 -> 0 +precision: 97 +comparetotmag_eq26 comparetotmag_eq -645255.672557972731110565424678563646186829759532083400809122074405092887321026499 -> 0 +precision: 194 +comparetotmag_eq27 comparetotmag_eq 3092470339262364953567614029395040731734262949366979977206728754128988018295876990492005938624037794831987754236880957081143 -> 0 +precision: 29 +comparetotmag_eq28 comparetotmag_eq 57.E+143179950 -> 0 +precision: 39 +comparetotmag_eq29 comparetotmag_eq .3052 -> 0 +precision: 231 +comparetotmag_eq30 comparetotmag_eq -11523034296905256789870364631805639650738.8569872996432563014933434893670023802189700019E+331657066 -> 0 +precision: 277 +comparetotmag_eq31 comparetotmag_eq -90515524775419567419279770518554407320709327912893406738600436246462958441943655812062367507691060750753609866999314036367777685660204967220930504662997721388277483671062 -> 0 +precision: 285 +comparetotmag_eq32 comparetotmag_eq 6179140642361415325690186156693793.738730648425831193666593780858158061297770583e-284043812 -> 0 +precision: 293 +comparetotmag_eq33 comparetotmag_eq -12172088235619596465522772857578918098776186867553912568305660067671552271962396974216764816085888606529901044151946652845028927008893668958641199542780135016710856979823739224132381477734142547930675222150548736 -> 0 +precision: 176 +comparetotmag_eq34 comparetotmag_eq +Infinity -> 0 +precision: 255 +comparetotmag_eq35 comparetotmag_eq -Inf -> 0 +precision: 15 +comparetotmag_eq36 comparetotmag_eq -4122e+358531764 -> 0 +precision: 160 +comparetotmag_eq37 comparetotmag_eq +99209836347562423364397936968123504985538596349406640871062 -> 0 +precision: 294 +comparetotmag_eq38 comparetotmag_eq -6274600242410175354765985193668908297288007401220476982196317284223594634095415822680987536077051315546711553877665479455778433609317032076173704844621654218043672370668379691155574270173678230.628837963455285227 -> 0 +precision: 239 +comparetotmag_eq39 comparetotmag_eq -sNaN -> 0 +precision: 62 +comparetotmag_eq40 comparetotmag_eq +371.481520 -> 0 +precision: 41 +comparetotmag_eq41 comparetotmag_eq +76e-119165385 -> 0 +precision: 180 +comparetotmag_eq42 comparetotmag_eq +77636783519329095134842179123187271903894703114026946027324920910818395121805022852402e331721542 -> 0 +precision: 8 +comparetotmag_eq43 comparetotmag_eq -Inf -> 0 +precision: 10 +comparetotmag_eq44 comparetotmag_eq -sNaN258004357732449581097733994906900393084904087680886609307961895378612654084553567 -> 0 +precision: 132 +comparetotmag_eq45 comparetotmag_eq +27527580013485996476119702192322738.661301391490391550658742128695647022830523479E137235779 -> 0 +precision: 48 +comparetotmag_eq46 comparetotmag_eq 82485470817836937096244056 -> 0 +precision: 255 +comparetotmag_eq47 comparetotmag_eq -.4545240480666806992206593718235512911624170660928306647649435395532399656843703851738354664868752615029E-209728468 -> 0 +precision: 240 +comparetotmag_eq48 comparetotmag_eq 1931816872.57165251265451007697949828156045975602078460361600105127665167004424334625775351530702643686935081344072634256952928801848111459899389758378667453219890182379063046413635251740610287617 -> 0 +precision: 159 +comparetotmag_eq49 comparetotmag_eq -Inf -> 0 +precision: 194 +comparetotmag_eq50 comparetotmag_eq -3975066.722711992887449936887029840444361475429401656203490909900304013389842275149581694513982747764579266207914742801 -> 0 +precision: 21 +comparetotmag_eq51 comparetotmag_eq -10079.E-207809009 -> 0 +precision: 229 +comparetotmag_eq52 comparetotmag_eq 10200569899324830050599093453054850477748636453922703395142654674574.849e143375381 -> 0 +precision: 222 +comparetotmag_eq53 comparetotmag_eq +553244289317323190960679433857384003867933584946750514180364343937580712510433597776046547013163399668331676417693173398882560589706077783551097015199004622707168774145783728724551878153041861993173657722 -> 0 +precision: 11 +comparetotmag_eq54 comparetotmag_eq -.17431971258 -> 0 +precision: 196 +comparetotmag_eq55 comparetotmag_eq +5255264846971 -> 0 +precision: 211 +comparetotmag_eq56 comparetotmag_eq -645069289478657195831941675695427668936803813710466 -> 0 +precision: 124 +comparetotmag_eq57 comparetotmag_eq -402162222052349632206088624702767314901350802444258898821.96629303682647 -> 0 +precision: 144 +comparetotmag_eq58 comparetotmag_eq -60288765642662458273692255627283073203.7589 -> 0 +precision: 218 +comparetotmag_eq59 comparetotmag_eq +82723898737736981834833812214896018781760838.67504946419842838453506428526339147317460943437394773674445517765276393459455764643507819387056060221525427923304763086016362161663023960903374034798210858401594801E+139529995 -> 0 +precision: 192 +comparetotmag_eq60 comparetotmag_eq -86658459138938909877666041011301431806896078516385 -> 0 +precision: 14 +comparetotmag_eq61 comparetotmag_eq -38106288821. -> 0 +precision: 245 +comparetotmag_eq62 comparetotmag_eq +251921844373822431667748489929316186367893026227940323994511933330531523485294794.890401065351 -> 0 +precision: 60 +comparetotmag_eq63 comparetotmag_eq 25972806562266801.434808181024e-246852717 -> 0 +precision: 243 +comparetotmag_eq64 comparetotmag_eq -887789849375969853218594838098953417293035613559996425627759335308382047656042193874699493820358889353945264082255272206427387287584432443435408670109261041116740162148654680647174010551977335499655092893643654299464954618202 -> 0 +precision: 121 +comparetotmag_eq65 comparetotmag_eq +1542568744044564799567118813327510841041722742225085261417404285874912547648939539346136 -> 0 +precision: 188 +comparetotmag_eq66 comparetotmag_eq +2698968361205775284700858624261137332628173048875236239217930582962826113306018075561808521467294700562915343125335211998362707946715632629182e-397410055 -> 0 +precision: 70 +comparetotmag_eq67 comparetotmag_eq -116482885017708937489473298172566.222073881734104 -> 0 +precision: 152 +comparetotmag_eq68 comparetotmag_eq +30157549153434595985025934176650081461639551880222E-200363402 -> 0 +precision: 114 +comparetotmag_eq69 comparetotmag_eq -94703923470495586024544728165808807896295365391534080267139373949697385466386898755185862208179639361 -> 0 +precision: 76 +comparetotmag_eq70 comparetotmag_eq Infinity -> 0 +precision: 236 +comparetotmag_eq71 comparetotmag_eq +20260230733108105702624386091366857242323388992.939868104137 -> 0 +precision: 300 +comparetotmag_eq72 comparetotmag_eq -29884613642739544930876448336720158271878961415329808384938325673396839119328027317691672466662261565502902330423154954685183482466003069228343340646813836994765410617220891620839763419568456798 -> 0 +precision: 11 +comparetotmag_eq73 comparetotmag_eq +.79738543011 -> 0 +precision: 112 +comparetotmag_eq74 comparetotmag_eq -Inf -> 0 +precision: 245 +comparetotmag_eq75 comparetotmag_eq +5036207952123906386743813264143578961327.29965706349386738762075535729651808105564177474998772894655500517621948426388931367E224881858 -> 0 +precision: 282 +comparetotmag_eq76 comparetotmag_eq +9627449955373209306095691574757611661964370672475811730059058948050316783506426.7381276120263080515110222168916770315414667219220262242525966031941148759660478319471372558971380576037890381615879816695316871292127124795919219363077e-397864912 -> 0 +precision: 143 +comparetotmag_eq77 comparetotmag_eq -.6953443904663710213 -> 0 +precision: 123 +comparetotmag_eq78 comparetotmag_eq -37742640128075951679066e-244117593 -> 0 +precision: 51 +comparetotmag_eq79 comparetotmag_eq .628523014878458151264084 -> 0 +precision: 171 +comparetotmag_eq80 comparetotmag_eq -.11732018595304957201079694501893772565399000970421406226421725880802203756891058447116150922185710404961048139280008455072605042037318585585840659582798142314478 -> 0 +precision: 230 +comparetotmag_eq81 comparetotmag_eq 1505317821001976798286184626182370244052490460561843852848163310003323468347667238484049104997867911445879495887183069218095179974316877 -> 0 +precision: 71 +comparetotmag_eq82 comparetotmag_eq -.99067885648086185095001805782590965268489428603 -> 0 +precision: 199 +comparetotmag_eq83 comparetotmag_eq -8235459159320233496599885276748996091576894642494073280432387500160680585053232162018151093354587459918164280242221560392920133687603361923E145796403 -> 0 +precision: 280 +comparetotmag_eq84 comparetotmag_eq -18231024313180592685558827417860220978702289145263555466246215110628004200818802355562317.9167736707 -> 0 +precision: 94 +comparetotmag_eq85 comparetotmag_eq 5206800267882191048709543045275136397521137708870288 -> 0 +precision: 46 +comparetotmag_eq86 comparetotmag_eq 586873.28881E-124168073 -> 0 +precision: 108 +comparetotmag_eq87 comparetotmag_eq -.69649504379645759716805001407779641488692098118 -> 0 +precision: 220 +comparetotmag_eq88 comparetotmag_eq -580702524779324576511137546759334311502406788153544114659867030842917830314008995139893078957550013081066060455206847069836701891605018375640628137728358952189994176639437239192969376357e+158185780 -> 0 +precision: 170 +comparetotmag_eq89 comparetotmag_eq 4460768346307719818845307199772996288378412192228806517486662537420364224325750546920164455500014306349435992396838.12958335871954019311031365693280558060 -> 0 +precision: 168 +comparetotmag_eq90 comparetotmag_eq -1176136089459685495679203412653362621650257933937974391276027633752443768086155521325395556304613 -> 0 +precision: 40 +comparetotmag_eq91 comparetotmag_eq 62386449357005012e116467876 -> 0 +precision: 43 +comparetotmag_eq92 comparetotmag_eq -606281907e-39276360 -> 0 +precision: 216 +comparetotmag_eq93 comparetotmag_eq +.487947173448970699477755573313092304386603418905545870716639 -> 0 +precision: 43 +comparetotmag_eq94 comparetotmag_eq +800573993765079033838236 -> 0 +precision: 167 +comparetotmag_eq95 comparetotmag_eq -0.85368756569 -> 0 +precision: 91 +comparetotmag_eq96 comparetotmag_eq -NaN -> 0 +precision: 160 +comparetotmag_eq97 comparetotmag_eq +283289819409.8615540 -> 0 +precision: 79 +comparetotmag_eq98 comparetotmag_eq +7761234803627628382889163604124630400932418210247392910118158865538312807006 -> 0 +precision: 255 +comparetotmag_eq99 comparetotmag_eq sNaN -> 0 +precision: 241 +copysign_eq0 copysign_eq +912849910816424783962776495925326137570904169012007696206741038734E-113244462 -> 9.12849910816424783962776495925326137570904169012007696206741038734E-113244397 +precision: 211 +copysign_eq1 copysign_eq -4172999471644727956817324170469907724355.64974450632070660595561325662300620125198931687808841912359413473051980813682954009458996607 -> -4172999471644727956817324170469907724355.64974450632070660595561325662300620125198931687808841912359413473051980813682954009458996607 +precision: 120 +copysign_eq2 copysign_eq -Inf -> -Infinity +precision: 160 +copysign_eq3 copysign_eq -4077199659268756237260256542619435665987629416188900477748234273613039111e-222850925 -> -4.077199659268756237260256542619435665987629416188900477748234273613039111E-222850853 +precision: 244 +copysign_eq4 copysign_eq -120887661871195892572007431690 -> -120887661871195892572007431690 +precision: 297 +copysign_eq5 copysign_eq -34594668308569067809106512607033738577.833475575387314530658554737788428753440579519182667729987481822439547834620969655008944421852347487992137992930068301492426960534568537729535790546911988465956223429 -> -34594668308569067809106512607033738577.833475575387314530658554737788428753440579519182667729987481822439547834620969655008944421852347487992137992930068301492426960534568537729535790546911988465956223429 +precision: 248 +copysign_eq6 copysign_eq .644884437890644703514857542573232 -> 0.644884437890644703514857542573232 +precision: 106 +copysign_eq7 copysign_eq -.8968331380651131451130741639350893328917278913249552498835203308406112 -> -0.8968331380651131451130741639350893328917278913249552498835203308406112 +precision: 58 +copysign_eq8 copysign_eq Infinity -> Infinity +precision: 172 +copysign_eq9 copysign_eq -Infinity -> -Infinity +precision: 26 +copysign_eq10 copysign_eq -69734643e-193062181 -> -6.9734643E-193062174 +precision: 176 +copysign_eq11 copysign_eq +.40005077964360844604790423067969883599249477124226248244752857 -> 0.40005077964360844604790423067969883599249477124226248244752857 +precision: 81 +copysign_eq12 copysign_eq 68818748766527632480393586306372081912414253184621655649755714658701849352 -> 68818748766527632480393586306372081912414253184621655649755714658701849352 +precision: 36 +copysign_eq13 copysign_eq -827760e-303008524 -> -8.27760E-303008519 +precision: 171 +copysign_eq14 copysign_eq -.51472673604698927879358673904608604855401014039879864011921786465262552249594966126266188054E-62866316 -> -5.1472673604698927879358673904608604855401014039879864011921786465262552249594966126266188054E-62866317 +precision: 7 +copysign_eq15 copysign_eq -92 -> -92 +precision: 207 +copysign_eq16 copysign_eq -.8257883235651203903073605796686406369304920526546040255424913084863918822560531714907335433690033483663577422127040032017983707615122654955329893032316030175034415469549126779260753998070316570188e296583593 -> -8.257883235651203903073605796686406369304920526546040255424913084863918822560531714907335433690033483663577422127040032017983707615122654955329893032316030175034415469549126779260753998070316570188E+296583592 +precision: 165 +copysign_eq17 copysign_eq +795127893760870758881277969219733505281559157132196683561219486975246756080873662536969619165268079260 -> 795127893760870758881277969219733505281559157132196683561219486975246756080873662536969619165268079260 +precision: 42 +copysign_eq18 copysign_eq +8664634899443E-295811181 -> 8.664634899443E-295811169 +precision: 187 +copysign_eq19 copysign_eq +.86633371454 -> 0.86633371454 +precision: 3 +copysign_eq20 copysign_eq -51e414021278 -> -5.1E+414021279 +precision: 291 +copysign_eq21 copysign_eq +.73640768910035155043175015975248409287189976354883215487722767318530316439212449319025870084934185124452773776935663078128296767277423761220923680539650499643919491041296020146887072088646993677464986658781992562673199278496827 -> 0.73640768910035155043175015975248409287189976354883215487722767318530316439212449319025870084934185124452773776935663078128296767277423761220923680539650499643919491041296020146887072088646993677464986658781992562673199278496827 +precision: 294 +copysign_eq22 copysign_eq +66238977336323175258405329887607.4688684375671138394635 -> 66238977336323175258405329887607.4688684375671138394635 +precision: 99 +copysign_eq23 copysign_eq -9706005388566098702237829851886105443850716583076063658128733656537 -> -9706005388566098702237829851886105443850716583076063658128733656537 +precision: 34 +copysign_eq24 copysign_eq -NaN26714072432846552083190711068194605835365212862074369044699 -> -NaN26714072432846552083190711068194605835365212862074369044699 +precision: 297 +copysign_eq25 copysign_eq +1444631177890437751833138978079891110807252417672006058137776916747013332945952745849086784157257786852691893615818837449759516899493328502014077171876302510090644020209814e+228663091 -> 1.444631177890437751833138978079891110807252417672006058137776916747013332945952745849086784157257786852691893615818837449759516899493328502014077171876302510090644020209814E+228663262 +precision: 224 +copysign_eq26 copysign_eq 8756872358197145011503076267370326415749027427967971765036825467368789266879765167669527374051191090871376644186283860953859026704162157186390216102E+152494906 -> 8.756872358197145011503076267370326415749027427967971765036825467368789266879765167669527374051191090871376644186283860953859026704162157186390216102E+152495053 +precision: 20 +copysign_eq27 copysign_eq -95409400172429589239 -> -95409400172429589239 +precision: 287 +copysign_eq28 copysign_eq 44451245 -> 44451245 +precision: 64 +copysign_eq29 copysign_eq 87069e-197024248 -> 8.7069E-197024244 +precision: 294 +copysign_eq30 copysign_eq -91490776988288844281004273227639649748559382214791464172820579465608440973797360268043545943193682557256877.153945352203031004983709628619311521172E+36138865 -> -9.1490776988288844281004273227639649748559382214791464172820579465608440973797360268043545943193682557256877153945352203031004983709628619311521172E+36138971 +precision: 245 +copysign_eq31 copysign_eq -61253345745790146082356378249682833220470116955093184.160402301507069626663735194111348050099498909534706088602221084182115292672163917920862048742169331177187156592 -> -61253345745790146082356378249682833220470116955093184.160402301507069626663735194111348050099498909534706088602221084182115292672163917920862048742169331177187156592 +precision: 259 +copysign_eq32 copysign_eq 7557015985852138820968760902376161045767694984326547795741385.154563135497546100E18448436 -> 7.557015985852138820968760902376161045767694984326547795741385154563135497546100E+18448496 +precision: 44 +copysign_eq33 copysign_eq 2446739636984983317815760152982626579251621E-22064059 -> 2.446739636984983317815760152982626579251621E-22064017 +precision: 276 +copysign_eq34 copysign_eq +783706030678546.5729957761 -> 783706030678546.5729957761 +precision: 289 +copysign_eq35 copysign_eq 6550322914927484174665863728756987541082673935650443257110929 -> 6550322914927484174665863728756987541082673935650443257110929 +precision: 118 +copysign_eq36 copysign_eq -8384469036271302020033 -> -8384469036271302020033 +precision: 38 +copysign_eq37 copysign_eq -.905596447938310724517484948798770440 -> -0.905596447938310724517484948798770440 +precision: 96 +copysign_eq38 copysign_eq -633835.9498591171618397620216367326120312804374133843662099053 -> -633835.9498591171618397620216367326120312804374133843662099053 +precision: 100 +copysign_eq39 copysign_eq -45316454094282713193793313663290917447362835651730640999493591285811411363675169215 -> -45316454094282713193793313663290917447362835651730640999493591285811411363675169215 +precision: 47 +copysign_eq40 copysign_eq -5934505716529203624590813773011140.5029189256879e271431908 -> -5.9345057165292036245908137730111405029189256879E+271431941 +precision: 8 +copysign_eq41 copysign_eq +4233 -> 4233 +precision: 179 +copysign_eq42 copysign_eq +Inf -> Infinity +precision: 235 +copysign_eq43 copysign_eq -.8026518628958656320480277762542718247488409258836562277671379 -> -0.8026518628958656320480277762542718247488409258836562277671379 +precision: 8 +copysign_eq44 copysign_eq -Infinity -> -Infinity +precision: 81 +copysign_eq45 copysign_eq -155435472394140381e-331492010 -> -1.55435472394140381E-331491993 +precision: 58 +copysign_eq46 copysign_eq -2742063025234706e-124677414 -> -2.742063025234706E-124677399 +precision: 194 +copysign_eq47 copysign_eq Infinity -> Infinity +precision: 151 +copysign_eq48 copysign_eq -3076.414 -> -3076.414 +precision: 215 +copysign_eq49 copysign_eq -54903986486304064466403075346468319729401566923918723287008306578450300853217224275074413326128851202685101625573573940.44583713644215717635201400150254847090444728107832437126677626214287502 -> -54903986486304064466403075346468319729401566923918723287008306578450300853217224275074413326128851202685101625573573940.44583713644215717635201400150254847090444728107832437126677626214287502 +precision: 288 +copysign_eq50 copysign_eq +Infinity -> Infinity +precision: 40 +copysign_eq51 copysign_eq -63746.6920325064618262220659 -> -63746.6920325064618262220659 +precision: 28 +copysign_eq52 copysign_eq +60037301417642617712E+314405176 -> 6.0037301417642617712E+314405195 +precision: 243 +copysign_eq53 copysign_eq 44954302072535212005008365198258111335643113581706145226221729418076278119523835612300431558733194.60281373107722805681248852122120697444252693825904755823908254120878753982599971139215856237207550137077117083801903577057675566233497981439 -> 44954302072535212005008365198258111335643113581706145226221729418076278119523835612300431558733194.60281373107722805681248852122120697444252693825904755823908254120878753982599971139215856237207550137077117083801903577057675566233497981439 +precision: 80 +copysign_eq54 copysign_eq -59745.2596022109163881688669 -> -59745.2596022109163881688669 +precision: 72 +copysign_eq55 copysign_eq -5175.20039136928065299637389738531970334746406318954626328421102145024 -> -5175.20039136928065299637389738531970334746406318954626328421102145024 +precision: 138 +copysign_eq56 copysign_eq -8164290077736576 -> -8164290077736576 +precision: 144 +copysign_eq57 copysign_eq -925975316863216059914809728928435878342747311186654918782217009964941855230984468623325162944745.7282929068452782252948e178069539 -> -9.259753168632160599148097289284358783427473111866549187822170099649418552309844686233251629447457282929068452782252948E+178069634 +precision: 88 +copysign_eq58 copysign_eq -3755496225268124403053131000917916553139.660 -> -3755496225268124403053131000917916553139.660 +precision: 45 +copysign_eq59 copysign_eq -.1843943837918771963208967506464645456446E-351312522 -> -1.843943837918771963208967506464645456446E-351312523 +precision: 256 +copysign_eq60 copysign_eq +38063018493737556668111060177144569509969844523795708405760584235465403415062925772738156618120096828741854095364675760983323933127274509971098442433472418E+112960435 -> 3.8063018493737556668111060177144569509969844523795708405760584235465403415062925772738156618120096828741854095364675760983323933127274509971098442433472418E+112960589 +precision: 82 +copysign_eq61 copysign_eq 2.10464 -> 2.10464 +precision: 171 +copysign_eq62 copysign_eq +.353648743094555897881114634720361997191466570127345406599783015 -> 0.353648743094555897881114634720361997191466570127345406599783015 +precision: 181 +copysign_eq63 copysign_eq .876123855498551736011864560563868572477936837830531671096196230903793876249501554965957862473800812364839412325508554600325017595570094E132935073 -> 8.76123855498551736011864560563868572477936837830531671096196230903793876249501554965957862473800812364839412325508554600325017595570094E+132935072 +precision: 5 +copysign_eq64 copysign_eq 47.896 -> 47.896 +precision: 57 +copysign_eq65 copysign_eq -NaN -> -NaN +precision: 245 +copysign_eq66 copysign_eq -8880641688431096098426751713709056972393539357471147813953561588595535300427501136851395528026584030844449281563643199883422269918992481002034949115028025958192726235989085104078572630350340627959960155056085.6351892273092682863e-313403941 -> -8.8806416884310960984267517137090569723935393574711478139535615885955353004275011368513955280265840308444492815636431998834222699189924810020349491150280259581927262359890851040785726303503406279599601550560856351892273092682863E-313403734 +precision: 289 +copysign_eq67 copysign_eq -6568252072712.434465979001 -> -6568252072712.434465979001 +precision: 28 +copysign_eq68 copysign_eq +264174 -> 264174 +precision: 239 +copysign_eq69 copysign_eq +.761355904532995600367657792932288441804234566256584874261263934566363378161675965 -> 0.761355904532995600367657792932288441804234566256584874261263934566363378161675965 +precision: 7 +copysign_eq70 copysign_eq +79 -> 79 +precision: 77 +copysign_eq71 copysign_eq 35796142963750491966821448715208186307325780428336899e+308821427 -> 3.5796142963750491966821448715208186307325780428336899E+308821479 +precision: 39 +copysign_eq72 copysign_eq -2.895 -> -2.895 +precision: 283 +copysign_eq73 copysign_eq Inf -> Infinity +precision: 206 +copysign_eq74 copysign_eq +21223726399.1862025101E-412571479 -> 2.12237263991862025101E-412571469 +precision: 272 +copysign_eq75 copysign_eq -14609896731410240465847146776510 -> -14609896731410240465847146776510 +precision: 70 +copysign_eq76 copysign_eq -909262394393264314832651149149512319844.98907157648321734664640604 -> -909262394393264314832651149149512319844.98907157648321734664640604 +precision: 108 +copysign_eq77 copysign_eq -9560885559796837570931059522730522635 -> -9560885559796837570931059522730522635 +precision: 80 +copysign_eq78 copysign_eq -63020099277467465011390.64 -> -63020099277467465011390.64 +precision: 85 +copysign_eq79 copysign_eq -74.51 -> -74.51 +precision: 160 +copysign_eq80 copysign_eq +970124494627917430165803986650936.93767717 -> 970124494627917430165803986650936.93767717 +precision: 258 +copysign_eq81 copysign_eq -67071158450214361034329987185418147961066306271075974531965006043987810791805423363365212685205640814030310537198311705119 -> -67071158450214361034329987185418147961066306271075974531965006043987810791805423363365212685205640814030310537198311705119 +precision: 12 +copysign_eq82 copysign_eq +6.9938E-269174750 -> 6.9938E-269174750 +precision: 20 +copysign_eq83 copysign_eq -739.4 -> -739.4 +precision: 263 +copysign_eq84 copysign_eq +80458928999489219593795861637209983647531900448E-285757632 -> 8.0458928999489219593795861637209983647531900448E-285757586 +precision: 252 +copysign_eq85 copysign_eq -.943146313695692482085431358850768490676790619479323125473369600983527313464567775159767199136799046416392453409767388138641759176155142355073397521065530361364279282707376381898914116491221347274439694234079703553404586824873174784027737864553E-249520272 -> -9.43146313695692482085431358850768490676790619479323125473369600983527313464567775159767199136799046416392453409767388138641759176155142355073397521065530361364279282707376381898914116491221347274439694234079703553404586824873174784027737864553E-249520273 +precision: 19 +copysign_eq86 copysign_eq 2581989035.14589421 -> 2581989035.14589421 +precision: 177 +copysign_eq87 copysign_eq 862110863918676915038913845144452992327358158529330002571726511830207810741719701085082372 -> 862110863918676915038913845144452992327358158529330002571726511830207810741719701085082372 +precision: 68 +copysign_eq88 copysign_eq +67558387757344553075202840915053.989850564148016169845932560039922371 -> 67558387757344553075202840915053.989850564148016169845932560039922371 +precision: 93 +copysign_eq89 copysign_eq -Inf -> -Infinity +precision: 78 +copysign_eq90 copysign_eq -NaN703219585659222470144078690320919791326760950751 -> -NaN703219585659222470144078690320919791326760950751 +precision: 154 +copysign_eq91 copysign_eq -.29452057074837704902232627615653162767335324872037 -> -0.29452057074837704902232627615653162767335324872037 +precision: 9 +copysign_eq92 copysign_eq -Infinity -> -Infinity +precision: 277 +copysign_eq93 copysign_eq -4346942020604226.7554599261567839779094124098257536258920625972951946463849271776713086 -> -4346942020604226.7554599261567839779094124098257536258920625972951946463849271776713086 +precision: 220 +copysign_eq94 copysign_eq .734759197189807569535777711189738297775385226367756552809155424103813447208285759123412438993939677605813235448392602103137976560723964823903240454 -> 0.734759197189807569535777711189738297775385226367756552809155424103813447208285759123412438993939677605813235448392602103137976560723964823903240454 +precision: 205 +copysign_eq95 copysign_eq -21588602070488075367780849611453796003902050727910781.50291200834737493945012277562858844628654049 -> -21588602070488075367780849611453796003902050727910781.50291200834737493945012277562858844628654049 +precision: 135 +copysign_eq96 copysign_eq -.1108621370656874460039116718332511971544303525855597496500788218945082036415e-393133591 -> -1.108621370656874460039116718332511971544303525855597496500788218945082036415E-393133592 +precision: 209 +copysign_eq97 copysign_eq -4192879427696548638281185597786601766594501050575758008859053447167394245205556438137052004020299359326549562277816404818778578146528497013072238419082115791548670681517743171393878948450.8E+355842331 -> -4.1928794276965486382811855977866017665945010505757580088590534471673942452055564381370520040202993593265495622778164048187785781465284970130722384190821157915486706815177431713938789484508E+355842517 +precision: 78 +copysign_eq98 copysign_eq -713457029083041e-73084822 -> -7.13457029083041E-73084808 +precision: 118 +copysign_eq99 copysign_eq -NaN73645398132195864554900320178027488320088359260627968 -> -NaN73645398132195864554900320178027488320088359260627968 +precision: 101 +divide_eq0 divide_eq -Infinity -> NaN Invalid_operation +precision: 245 +divide_eq1 divide_eq Inf -> NaN Invalid_operation +precision: 110 +divide_eq2 divide_eq -.1476808094725729904095250393485863450763071588976156608004151488204454583149499119086353485308969531e-190874140 -> 1 +precision: 252 +divide_eq3 divide_eq -720139078.7030741104805598019890857679520254017138520961247740866753962780770298439853312381187097077639434494159265440701085632001205589332889414225671314382822069 -> 1 +precision: 199 +divide_eq4 divide_eq -.11423548642039778502853331752699438267880556546060947088900423118459e+136020058 -> 1 +precision: 166 +divide_eq5 divide_eq -Inf -> NaN Invalid_operation +precision: 292 +divide_eq6 divide_eq +57566049327259003 -> 1 +precision: 251 +divide_eq7 divide_eq +9049630897567687826736795538426391297e+136212546 -> 1 +precision: 192 +divide_eq8 divide_eq -20855240434763808890488997795553145644765618694284843107013201034649712050079864080577203494538403684650909889345923214.67401532096608857894045837940385205173579226224086590632078120 -> 1 +precision: 298 +divide_eq9 divide_eq .37845592841851474968276142406962568088880599228852907860357259347451055126118792311 -> 1 +precision: 21 +divide_eq10 divide_eq +756589178925911 -> 1 +precision: 253 +divide_eq11 divide_eq +7616540366726289115759482592801393120310510772984495372247478374918334808998133936134691051600873016564865838467138722091889339721855392169064002992883960439547496411674481.6 -> 1 +precision: 152 +divide_eq12 divide_eq -132464569570673129946108463534952339491361707317524150518897310780087454591671438746372034616705624542012933 -> 1 +precision: 199 +divide_eq13 divide_eq +97295483E69909190 -> 1 +precision: 40 +divide_eq14 divide_eq +16125239727365 -> 1 +precision: 285 +divide_eq15 divide_eq -558912397953805315990901700479302738487872408100224141554032211770060719956670370528357559747385688199453070310642436380872070224846959709862988028030172431889225382997421018958990515641631009043170243901962980389765418921328936769632046245994333949554620532625631437368335 -> 1 +precision: 196 +divide_eq16 divide_eq -581760502091189143431438830346977643468801664263826568776486515235354179191847127022864144411030425924 -> 1 +precision: 171 +divide_eq17 divide_eq Inf -> NaN Invalid_operation +precision: 170 +divide_eq18 divide_eq -57102093068241152366346390834968936561555141453709797113707686008461567265330157104573628277415130 -> 1 +precision: 55 +divide_eq19 divide_eq Inf -> NaN Invalid_operation +precision: 164 +divide_eq20 divide_eq +4933541562001816173660814944425102570689578246623106270773884779497866838635610084037716084760670166505219125910520748434625908599105928077183742147 -> 1 +precision: 263 +divide_eq21 divide_eq 780978739001821784651187055095281139871139144514794451667397831088125667013225075092319109815638757980986767938413567745249111066203822578617871443e+172242403 -> 1 +precision: 24 +divide_eq22 divide_eq -669. -> 1 +precision: 139 +divide_eq23 divide_eq -929026873425924449762295114437344056295088895586400717575061122531902368317373.61379 -> 1 +precision: 28 +divide_eq24 divide_eq 32004438.936296670e-388597605 -> 1 +precision: 97 +divide_eq25 divide_eq +685192356940609723816549351427584811512414782271930939 -> 1 +precision: 15 +divide_eq26 divide_eq +24.4 -> 1 +precision: 264 +divide_eq27 divide_eq -76399839137E-312835605 -> 1 +precision: 166 +divide_eq28 divide_eq +286785230408511189389946035072752552272281497439131116949467362921468915707467195901118328632109569893657252024426064460.8 -> 1 +precision: 285 +divide_eq29 divide_eq -156241995206772934084790541418216073206584870776651480411244245887140889823336601575165267249785697487604122261756039 -> 1 +precision: 213 +divide_eq30 divide_eq -18835613161.85875029301502894096673156458933709200124152477782829434405710251917 -> 1 +precision: 208 +divide_eq31 divide_eq +329503882648611474548629054404411878016829780451326673892970516426794656022912026336043853586758662189289385178796276205400609e-24954863 -> 1 +precision: 68 +divide_eq32 divide_eq -642490193725470129122985393648821604455340877964136 -> 1 +precision: 119 +divide_eq33 divide_eq .1213548802720209817457722469194878972433909233797509 -> 1 +precision: 243 +divide_eq34 divide_eq 88390530580202114893633750458552868273412491465.9653514770700 -> 1 +precision: 12 +divide_eq35 divide_eq 1202980602 -> 1 +precision: 95 +divide_eq36 divide_eq -622432682603042167229028927214099123615e+146590683 -> 1 +precision: 234 +divide_eq37 divide_eq -623685917512840505914725819957208408206512955209119450474903177962467.583807976443798750174844935878748577333589070537241247780392426342246659540059980535170984627883840223725460416803667310116204649587839889122149720871 -> 1 +precision: 70 +divide_eq38 divide_eq +307778499491228339010454626807 -> 1 +precision: 24 +divide_eq39 divide_eq -337901622398684.912979 -> 1 +precision: 213 +divide_eq40 divide_eq 712917884.16171091010393155094288085619923697401198341672010183202041106677130168595980396078140846159780896802775036224934370341322361624E+293973671 -> 1 +precision: 294 +divide_eq41 divide_eq -.3274166911418925254250867444878322152615492228251384507549600134687882983374230329357978235008472416506241930093329341487797874986 -> 1 +precision: 48 +divide_eq42 divide_eq -8263521225725846856681077276094893285576261764 -> 1 +precision: 98 +divide_eq43 divide_eq -91057156340472810571826299969430.30620840013880692959175821E-174986185 -> 1 +precision: 23 +divide_eq44 divide_eq -2.e-411141805 -> 1 +precision: 269 +divide_eq45 divide_eq -845141104644763813738850543179104306995361345173618975906028394090238434137826994961014599912709940817914874809854538221832860989281789090938874879129894476815895991550922865065693207755622009091262775678759898 -> 1 +precision: 283 +divide_eq46 divide_eq -5970255057265614965706607283227776119878517813823118844571266884633952649951183994e-392072151 -> 1 +precision: 31 +divide_eq47 divide_eq -1477080315892761879414599E-346711596 -> 1 +precision: 121 +divide_eq48 divide_eq +86165608170213766602.94134869873594684357724094010230038522061903e-183189626 -> 1 +precision: 199 +divide_eq49 divide_eq -711145549607361830875332328381399788166622564159900.51874082473364669851276652848717E+342044570 -> 1 +precision: 294 +divide_eq50 divide_eq -64450169407069787262103392E76952379 -> 1 +precision: 287 +divide_eq51 divide_eq -90184055520871121698254013571145836444773758648611909 -> 1 +precision: 91 +divide_eq52 divide_eq +6603936296659210086718274400236401200188918056620726611241032.810056 -> 1 +precision: 109 +divide_eq53 divide_eq -8909511328776956796073380205763245742260036040182232805865312603009832060830535281798471351184237 -> 1 +precision: 13 +divide_eq54 divide_eq -56199499 -> 1 +precision: 144 +divide_eq55 divide_eq -267655574e-338719954 -> 1 +precision: 18 +divide_eq56 divide_eq 273837873296020.6e-405686955 -> 1 +precision: 201 +divide_eq57 divide_eq -56929515351505776318208129824525130348917134735034916419394700417605978810461536030019272932090671039700604275289853600484594104342438355523803882253313369404757230918341167057021843E407971284 -> 1 +precision: 192 +divide_eq58 divide_eq +13643852775841014921914835623339788973293544009829640956625028574220654641017020473004526206545e-128059292 -> 1 +precision: 234 +divide_eq59 divide_eq 58799228727009310372528109784658383378303035378522080974337590565283047704780E-192434611 -> 1 +precision: 286 +divide_eq60 divide_eq -166472392467877011168252287.71314609218861339244103788374161096476551943678752281727454808068261357535714773332203907202680750485159686496109690833436573258649837840230186318272253915612405029202994851701283208155988214057879124551751337704149435037248282354727029656271611485793059e-29946188 -> 1 +precision: 240 +divide_eq61 divide_eq -888279360979847835372608590812249939937380776052207856364486893324054001511384417846141562527664481222127963121518087254331437123223476884356595902748226934885912129900564029441423621784532048357586E260225656 -> 1 +precision: 180 +divide_eq62 divide_eq -62.7E-86593580 -> 1 +precision: 110 +divide_eq63 divide_eq -Infinity -> NaN Invalid_operation +precision: 217 +divide_eq64 divide_eq +70754612337129752247973555873491063051430174522261007741319032411562791790827763202539570787528083242885556878553538287488e-74868643 -> 1 +precision: 70 +divide_eq65 divide_eq 1101950788010535E-362477493 -> 1 +precision: 39 +divide_eq66 divide_eq +98308 -> 1 +precision: 62 +divide_eq67 divide_eq 31733412607673.128977400104734019098693401832113 -> 1 +precision: 45 +divide_eq68 divide_eq 7.10105853563856 -> 1 +precision: 207 +divide_eq69 divide_eq +675752852781401543055974814670904049316.8654094126562639791610710442e-145757722 -> 1 +precision: 241 +divide_eq70 divide_eq -4450487237728532937.933231 -> 1 +precision: 47 +divide_eq71 divide_eq -61411634909188873 -> 1 +precision: 100 +divide_eq72 divide_eq -626176102238052754 -> 1 +precision: 297 +divide_eq73 divide_eq -22247593796.5012386878556 -> 1 +precision: 50 +divide_eq74 divide_eq Infinity -> NaN Invalid_operation +precision: 188 +divide_eq75 divide_eq +Infinity -> NaN Invalid_operation +precision: 218 +divide_eq76 divide_eq .60790809857379948768881880713460478086089024585645948799639746721516532020406815043420 -> 1 +precision: 104 +divide_eq77 divide_eq -3254165926721719071401463323692639728745870336031849554799508573339804772298352700812.1222415863576 -> 1 +precision: 118 +divide_eq78 divide_eq -83586027649668501381211209989.44413637926882821730E-289951920 -> 1 +precision: 88 +divide_eq79 divide_eq -778570662317039247646 -> 1 +precision: 240 +divide_eq80 divide_eq 620326677397240.850653812628717127618781977887725260304574302740635134337953478311367 -> 1 +precision: 159 +divide_eq81 divide_eq 5551883711060673923753975456747036 -> 1 +precision: 85 +divide_eq82 divide_eq -16190268238164312872356E143566390 -> 1 +precision: 78 +divide_eq83 divide_eq 81154818347518765537255545758243358694575703847736449901270406 -> 1 +precision: 155 +divide_eq84 divide_eq 355337e+284096276 -> 1 +precision: 270 +divide_eq85 divide_eq 7776158154478 -> 1 +precision: 11 +divide_eq86 divide_eq +46.7501 -> 1 +precision: 72 +divide_eq87 divide_eq -53333221565567759554114159498175163529063463758998569160209746321107E-151636004 -> 1 +precision: 295 +divide_eq88 divide_eq +855.55590520063727890779471997433604933429094232004702426385204730260552951829031931901328048264311000526138587859537382229563852264035973356851333978007448964542800066405850229041474808134084696345 -> 1 +precision: 211 +divide_eq89 divide_eq 672745818294864853476261239748209013136324902029245074291428054800276.35383015557432509866443921 -> 1 +precision: 139 +divide_eq90 divide_eq Inf -> NaN Invalid_operation +precision: 182 +divide_eq91 divide_eq -4910043781384861625190274087609084183424764003136029037441096538943948e249027855 -> 1 +precision: 65 +divide_eq92 divide_eq -415916.87217038152248167615003069e-283790548 -> 1 +precision: 265 +divide_eq93 divide_eq +3485778597372958298.98380318471 -> 1 +precision: 112 +divide_eq94 divide_eq -8616887700305395591016141454363938602556599540120895444357409442326130 -> 1 +precision: 246 +divide_eq95 divide_eq +1982799473361129571751244021744791301677731717665778559164756048438636929326418202415376242630399459755098090613246847 -> 1 +precision: 242 +divide_eq96 divide_eq .473970053984103201091652943216177553884386460012308008589725012515469116148195995185557562847667970300402376038790875544508464804678193114512052980263341053940619 -> 1 +precision: 127 +divide_eq97 divide_eq -.240557624603898147566832979637761107201 -> 1 +precision: 15 +divide_eq98 divide_eq -3803013943816 -> 1 +precision: 191 +divide_eq99 divide_eq -8189 -> 1 +precision: 244 +divideint_eq0 divideint_eq -2908370616319578312063941557274194851663041095277377748986724480242388302053977204812657908848362009053864590869125163078562875951481531607893722343701113669128151095333657285531106914454e+70628990 -> 1 +precision: 146 +divideint_eq1 divideint_eq -1256574716053067901997983102369440625154437304394877782 -> 1 +precision: 48 +divideint_eq2 divideint_eq -.548918 -> 1 +precision: 155 +divideint_eq3 divideint_eq 32033489823530180352278187856323894032970304484771521282 -> 1 +precision: 12 +divideint_eq4 divideint_eq +247 -> 1 +precision: 290 +divideint_eq5 divideint_eq sNaN738420135455820970672439082041 -> NaN738420135455820970672439082041 Invalid_operation +precision: 154 +divideint_eq6 divideint_eq -.88564365385881011147819297802214956637652639618629 -> 1 +precision: 216 +divideint_eq7 divideint_eq -9884933188567325553.77519905302476176408714388097345911E78908392 -> 1 +precision: 205 +divideint_eq8 divideint_eq -5350396155712467491 -> 1 +precision: 234 +divideint_eq9 divideint_eq +6004358545820654718334648210758559991824860952390138598137690580139579473495934597594525805129685369437231986616808441371264778276324910307676711146650002546604936039388892971395984365602782E-199272347 -> 1 +precision: 82 +divideint_eq10 divideint_eq -443736763339300096531.99077517853669822 -> 1 +precision: 87 +divideint_eq11 divideint_eq Infinity -> NaN Invalid_operation +precision: 52 +divideint_eq12 divideint_eq +370695164030916.81799222 -> 1 +precision: 237 +divideint_eq13 divideint_eq NaN8481 -> NaN8481 +precision: 222 +divideint_eq14 divideint_eq 82238825985885512360657.2193113351280794952782825424364332055449866184869603877069771701448761430244616977832957549588845178699507856839E160927102 -> 1 +precision: 184 +divideint_eq15 divideint_eq -1202185937853107090293318245928017185131634933099973941340860888519320536829854521269204353763041931948598706911101644704568386327501811436624630721279906422089114399737446E-285606062 -> 1 +precision: 212 +divideint_eq16 divideint_eq -8999 -> 1 +precision: 132 +divideint_eq17 divideint_eq -13264787870372981492769808151945677174137786452679797229576746419058916024e157878286 -> 1 +precision: 2 +divideint_eq18 divideint_eq 3.6 -> 1 +precision: 60 +divideint_eq19 divideint_eq -1258030159714393.5880857539836422313 -> 1 +precision: 176 +divideint_eq20 divideint_eq 52842529310334863950155288548647656600941538583676136431851411817224865117107058305426027141486412102503702646996254719559538864045123297309580612856661100544955 -> 1 +precision: 169 +divideint_eq21 divideint_eq -597098254464732797344863769410517742685082451098117201998335217751815839395991669907927666850 -> 1 +precision: 21 +divideint_eq22 divideint_eq -.955 -> 1 +precision: 221 +divideint_eq23 divideint_eq -Infinity -> NaN Invalid_operation +precision: 8 +divideint_eq24 divideint_eq +NaN -> NaN +precision: 35 +divideint_eq25 divideint_eq -504981104763665254793727130766237 -> 1 +precision: 188 +divideint_eq26 divideint_eq +928252263160018659536867470102178541255281990402081126496025623238266017805407059555810456186962650736373263418301045526946196313651944537240367412459730411665e-314943780 -> 1 +precision: 135 +divideint_eq27 divideint_eq -sNaN57618544980879995812520729112652122135666362935014001 -> -NaN57618544980879995812520729112652122135666362935014001 Invalid_operation +precision: 55 +divideint_eq28 divideint_eq -49.e-243945635 -> 1 +precision: 24 +divideint_eq29 divideint_eq 543948.1 -> 1 +precision: 35 +divideint_eq30 divideint_eq -68144748254307118885948690E-323697561 -> 1 +precision: 224 +divideint_eq31 divideint_eq sNaN -> NaN Invalid_operation +precision: 276 +divideint_eq32 divideint_eq -8700868367695844338608077858640024559476621310905162076.243575 -> 1 +precision: 100 +divideint_eq33 divideint_eq -273776598077639196306582616387076661209470441299194130996003e-380514960 -> 1 +precision: 72 +divideint_eq34 divideint_eq -806694729211834.97e+204513402 -> 1 +precision: 237 +divideint_eq35 divideint_eq 976018181126506514567133304986460821711165181527654155891264929380451247300975330881111222125949477347065225571806643998108168622938882 -> 1 +precision: 198 +divideint_eq36 divideint_eq -3351153694033693759143552550759684667114200537887889741171670355062477664768135976 -> 1 +precision: 238 +divideint_eq37 divideint_eq -3811106476587934406189323754079849409380066844337492094738040348142839403251075078530745298644255385345345658193608088868567091795633769296358758713994618933453150 -> 1 +precision: 115 +divideint_eq38 divideint_eq -Inf -> NaN Invalid_operation +precision: 143 +divideint_eq39 divideint_eq 752360514372561842392306793359076119859331657991649031514096188375489213269728895855175 -> 1 +precision: 23 +divideint_eq40 divideint_eq -65826272684087e-189901812 -> 1 +precision: 154 +divideint_eq41 divideint_eq -Inf -> NaN Invalid_operation +precision: 145 +divideint_eq42 divideint_eq 9346756156957516795187377095629312073.68927595314817464361343166122628317396293984682878750749652397464184586575e+179318302 -> 1 +precision: 58 +divideint_eq43 divideint_eq -973420415713792696322214 -> 1 +precision: 189 +divideint_eq44 divideint_eq +47114247859996370684107328823566468584346444259104557331421540571100826509821427029368337493105070748869227331098707021690114584178883249327040053324543807385e+197976057 -> 1 +precision: 220 +divideint_eq45 divideint_eq 41629229434806566772235264186616210626738601961827509191888976253174197349572153258105167005453982350268197650983486410981435964014763197868093451880600821296275337419 -> 1 +precision: 203 +divideint_eq46 divideint_eq +580558304844.3971143541089941118037763511616825368650185111033112445359667375539943802771118327409918494034519551505664614756280251364425538993191916175432 -> 1 +precision: 18 +divideint_eq47 divideint_eq -366827704880521e401217436 -> 1 +precision: 97 +divideint_eq48 divideint_eq 88969.849992380750633496e-138384568 -> 1 +precision: 49 +divideint_eq49 divideint_eq -445632069169299394.997270791006185987654891276617 -> 1 +precision: 47 +divideint_eq50 divideint_eq -357177784109492555223519860538873611 -> 1 +precision: 178 +divideint_eq51 divideint_eq -48130418374141952724895846775742663246225122130321759930546932.18959 -> 1 +precision: 206 +divideint_eq52 divideint_eq +83680520978925049.525750755001819649412145135139113066968813355339220784940918687346191750285652758560968743324817575795007386787930804589e-348572820 -> 1 +precision: 43 +divideint_eq53 divideint_eq -49546005227034532863459820331039E-111851760 -> 1 +precision: 87 +divideint_eq54 divideint_eq -.409020013460156742400503188502042913565621425625241744231110494489182996035732 -> 1 +precision: 178 +divideint_eq55 divideint_eq -sNaN -> -NaN Invalid_operation +precision: 51 +divideint_eq56 divideint_eq 167739739308336337299604868E-167615854 -> 1 +precision: 220 +divideint_eq57 divideint_eq -5300924390991611325843577898308932510583029979720544901227984758608363165247154935394674245504898222957637889493955194995842619467356519270 -> 1 +precision: 52 +divideint_eq58 divideint_eq -42651184065238845325304233737813712812 -> 1 +precision: 160 +divideint_eq59 divideint_eq +Inf -> NaN Invalid_operation +precision: 296 +divideint_eq60 divideint_eq +95430223596390508793159877962590069515961834544.6494147401442188720362424000640936757021492011291255745625035788820000915581847243524343038266669934538108614005420466638827705495042289164326067136339396157449e-407784882 -> 1 +precision: 255 +divideint_eq61 divideint_eq -121410613239230278911368994469581498390989145061325120418293384741884952420202154199990781814331376978964064149553438076434112399733295955837885246553638214847379464843337620114E273623794 -> 1 +precision: 275 +divideint_eq62 divideint_eq -187563482316330537787159E-112385481 -> 1 +precision: 110 +divideint_eq63 divideint_eq +21515317087206151725444363496466671364497643357513607420052655.821902302251545278495192674529458969113592533 -> 1 +precision: 213 +divideint_eq64 divideint_eq -1886987509176720549221042721476020002574865555172260813975013733194E+24574208 -> 1 +precision: 189 +divideint_eq65 divideint_eq +28687311737550585944.4177e-33505340 -> 1 +precision: 236 +divideint_eq66 divideint_eq +5006675062343712217596493479021890779566957551625846964589963890609148614541390157258076880316846645663302760804622389184180006899273308957713918674683004665350029 -> 1 +precision: 126 +divideint_eq67 divideint_eq +6815719732515474416961007346323602899979093543072955946681395720331.125314412873076067000567297869 -> 1 +precision: 21 +divideint_eq68 divideint_eq -.792 -> 1 +precision: 281 +divideint_eq69 divideint_eq -.8383348825282366989534716394521356066079031392274329051537498369e182940300 -> 1 +precision: 177 +divideint_eq70 divideint_eq -533418438307368782835414547018323522458181065714916485951533133837656607133903494697352e+216617247 -> 1 +precision: 276 +divideint_eq71 divideint_eq -837478756121790407162.36186256535813229581475852017787150119955838740997259230e-214314979 -> 1 +precision: 80 +divideint_eq72 divideint_eq -51095903532848.94133284549122562773070 -> 1 +precision: 209 +divideint_eq73 divideint_eq -3.3015189510722583289122955034E398579675 -> 1 +precision: 153 +divideint_eq74 divideint_eq -35742507729436918675061614674503020 -> 1 +precision: 28 +divideint_eq75 divideint_eq 56.32623636404638934 -> 1 +precision: 35 +divideint_eq76 divideint_eq +Infinity -> NaN Invalid_operation +precision: 38 +divideint_eq77 divideint_eq 857849415966661550412458225068493.408e-2366498 -> 1 +precision: 152 +divideint_eq78 divideint_eq -353 -> 1 +precision: 118 +divideint_eq79 divideint_eq -36617.25 -> 1 +precision: 20 +divideint_eq80 divideint_eq -.931901204 -> 1 +precision: 163 +divideint_eq81 divideint_eq -889024687096555682605466206734283843817504069813556776171917662633865117389491619048336240572088980616142246280291097043456345078866E-245314465 -> 1 +precision: 217 +divideint_eq82 divideint_eq -719511744944539985837404914536213770456639586192998550449999886650459561943147800231642307240665229289904206011419445726529877851508228981 -> 1 +precision: 276 +divideint_eq83 divideint_eq 38635311730811169411884941975212349138920181925390903350004284821634908119573815531343089808514860724620692003395997608988667052894071632076454632582724008077702696221244258168666412373542526281 -> 1 +precision: 69 +divideint_eq84 divideint_eq -377160544521169 -> 1 +precision: 110 +divideint_eq85 divideint_eq .6382839411149205759751620565412460150380282638623079027720570602606918960251622 -> 1 +precision: 244 +divideint_eq86 divideint_eq -83167632219887.92201177147864817358219598989868240652309419056540E-100575961 -> 1 +precision: 186 +divideint_eq87 divideint_eq -46866659854597783338828542637553964365276529852718550786762008902451475255188384948672064085122095618137174767903859271e85529184 -> 1 +precision: 247 +divideint_eq88 divideint_eq .9273920078284177218690390635524459153491242451236812112099941725079123806e193934064 -> 1 +precision: 239 +divideint_eq89 divideint_eq -NaN5909740711744069586903692332152732281199748863039971497992084820912 -> -NaN5909740711744069586903692332152732281199748863039971497992084820912 +precision: 224 +divideint_eq90 divideint_eq -27675489644781362117231076616909842314387207424897538941017992252395965826543694898934757316552657320248552272040698992242687334754772295031146803477158222618269801814659780916921247518626857018E+99528979 -> 1 +precision: 11 +divideint_eq91 divideint_eq +28.E-365700090 -> 1 +precision: 158 +divideint_eq92 divideint_eq 2661080395562812271520283.931452934712795147 -> 1 +precision: 258 +divideint_eq93 divideint_eq +9132012704571220154227071574821062143837885377313300363948422539955951697856848730532010914894561752737531291267311852389877202801459118053271543193841704731 -> 1 +precision: 30 +divideint_eq94 divideint_eq -329361572097.241299907978 -> 1 +precision: 247 +divideint_eq95 divideint_eq +58163889412647430370505650736.62357340643611516340823425586247480110373134808064686589155225353140800112994772089786466337862984605313179969040728678726692784748288401005105042386648488384915268156121278494329291911e-101624952 -> 1 +precision: 75 +divideint_eq96 divideint_eq 2541387136605309125 -> 1 +precision: 21 +divideint_eq97 divideint_eq 3310590756712741 -> 1 +precision: 46 +divideint_eq98 divideint_eq +5770521035560761100078283398634812198E+401568072 -> 1 +precision: 263 +divideint_eq99 divideint_eq 49475220356.11756009359270024890241783361 -> 1 +precision: 244 +max_eq0 max_eq .61294353288401045160234726659703776857233668892879406879158469530386283829784686098050819994417591592406536447001206247327327803974300306587239104367929855E-108365476 -> 6.1294353288401045160234726659703776857233668892879406879158469530386283829784686098050819994417591592406536447001206247327327803974300306587239104367929855E-108365477 +precision: 107 +max_eq1 max_eq -958729752001 -> -958729752001 +precision: 199 +max_eq2 max_eq -.637566550670430113984667897604832832741908552919926875765957932741785302822548141271360493973713346918868565941e-187260823 -> -6.37566550670430113984667897604832832741908552919926875765957932741785302822548141271360493973713346918868565941E-187260824 +precision: 28 +max_eq3 max_eq -57974311645.849948 -> -57974311645.849948 +precision: 132 +max_eq4 max_eq .668324604065071924776 -> 0.668324604065071924776 +precision: 230 +max_eq5 max_eq -.869973015889144486301646146285255253145557991929351692578558371031535761613541108808398357176829336657303142023672804268136315546673203199228573096410641659930337151745455577814825361374803550942293007421859 -> -0.869973015889144486301646146285255253145557991929351692578558371031535761613541108808398357176829336657303142023672804268136315546673203199228573096410641659930337151745455577814825361374803550942293007421859 +precision: 221 +max_eq6 max_eq 754918800247502604263379996026800987522966083429432015163456664578317020777659634571570823040956000714576255817323020021499116714751061874005618752003899715121928086258729446252267792529700510514903109663220134413 -> 754918800247502604263379996026800987522966083429432015163456664578317020777659634571570823040956000714576255817323020021499116714751061874005618752003899715121928086258729446252267792529700510514903109663220134413 +precision: 37 +max_eq7 max_eq +4888293 -> 4888293 +precision: 83 +max_eq8 max_eq -89038569449765209243731429.7 -> -89038569449765209243731429.7 +precision: 225 +max_eq9 max_eq -99807911226125283362195687098572969950547308536901384240245113421617253175005137180356838842850539991218427299590485301565785735488433036443598493481732070195775307282648099368774410275454101857833040 -> -99807911226125283362195687098572969950547308536901384240245113421617253175005137180356838842850539991218427299590485301565785735488433036443598493481732070195775307282648099368774410275454101857833040 +precision: 133 +max_eq10 max_eq 76732202723321 -> 76732202723321 +precision: 282 +max_eq11 max_eq -.36771565765770022868540325825573706348121784800150866458657240941566719574137913460106946053641536228430323912032867303 -> -0.36771565765770022868540325825573706348121784800150866458657240941566719574137913460106946053641536228430323912032867303 +precision: 219 +max_eq12 max_eq 239933247601545603173599922008736950305620015008789244156257798840933816317109894398670957764863235335487439375025719281522181147254049501362284837406390817235068148063597384425208501298105 -> 239933247601545603173599922008736950305620015008789244156257798840933816317109894398670957764863235335487439375025719281522181147254049501362284837406390817235068148063597384425208501298105 +precision: 234 +max_eq13 max_eq 189308763460111567287781998750146650424865113593517299367404216331183999950659382165580071654658255169613435647719012913937958279857653412909032632962728156511243095178589885282959285369975930321979010843127104949342928487817817e+243863801 -> 1.89308763460111567287781998750146650424865113593517299367404216331183999950659382165580071654658255169613435647719012913937958279857653412909032632962728156511243095178589885282959285369975930321979010843127104949342928487817817E+243864028 +precision: 135 +max_eq14 max_eq Infinity -> Infinity +precision: 80 +max_eq15 max_eq .310272844496420 -> 0.310272844496420 +precision: 25 +max_eq16 max_eq -56107e+184138130 -> -5.6107E+184138134 +precision: 163 +max_eq17 max_eq -6820415058658865347155974649152556481495537428193566039694682736953541238924443832736383992834883045555121467286797440703458901970883919894103136141213 -> -6820415058658865347155974649152556481495537428193566039694682736953541238924443832736383992834883045555121467286797440703458901970883919894103136141213 +precision: 22 +max_eq18 max_eq -13582450391E-170724899 -> -1.3582450391E-170724889 +precision: 37 +max_eq19 max_eq 383709654076225 -> 383709654076225 +precision: 276 +max_eq20 max_eq +.867441613129135766677199502956360957236229406826122 -> 0.867441613129135766677199502956360957236229406826122 +precision: 172 +max_eq21 max_eq -6533339154874443120224881557829358844776352306364542070970231086714569434949672340323847917249387816877796049906104068527030831768417809051238993813563562 -> -6533339154874443120224881557829358844776352306364542070970231086714569434949672340323847917249387816877796049906104068527030831768417809051238993813563562 +precision: 231 +max_eq22 max_eq +sNaN1498932342166733896677841437664426983441980199032 -> NaN1498932342166733896677841437664426983441980199032 Invalid_operation +precision: 250 +max_eq23 max_eq +217000633598458773541156955143262676639421134264928013010145511575172260268955049344424897175.3388963039806724393611473198508859914919 -> 217000633598458773541156955143262676639421134264928013010145511575172260268955049344424897175.3388963039806724393611473198508859914919 +precision: 236 +max_eq24 max_eq +73231166339431677691327226289270885231978212118792088160194951034616585303170547610736996155481982314799037539065093271634531358488783240413280672 -> 73231166339431677691327226289270885231978212118792088160194951034616585303170547610736996155481982314799037539065093271634531358488783240413280672 +precision: 121 +max_eq25 max_eq -924676917348801943335306388524 -> -924676917348801943335306388524 +precision: 222 +max_eq26 max_eq -81795612957899609685636898031285849314459630055420787441.6175e-283740439 -> -8.17956129578996096856368980312858493144596300554207874416175E-283740384 +precision: 13 +max_eq27 max_eq 73246E-313886321 -> 7.3246E-313886317 +precision: 9 +max_eq28 max_eq .655e+226154678 -> 6.55E+226154677 +precision: 166 +max_eq29 max_eq +4005509523237638043925991039746146703751720611134475976536537793212938598146411821835171022127221476667946837728126746233467279781229011299794990635978361843735E-226894112 -> 4.005509523237638043925991039746146703751720611134475976536537793212938598146411821835171022127221476667946837728126746233467279781229011299794990635978361843735E-226893953 +precision: 245 +max_eq30 max_eq -Infinity -> -Infinity +precision: 294 +max_eq31 max_eq -71839888401719648842417671450515779204880259940844845419351459297.224643944589971581612262834276205477107370702335043777702874406576874071356715706456864622e-206977024 -> -7.1839888401719648842417671450515779204880259940844845419351459297224643944589971581612262834276205477107370702335043777702874406576874071356715706456864622E-206976960 +precision: 127 +max_eq32 max_eq +53272187176953593747976766373268542332264864771830720939.61465 -> 53272187176953593747976766373268542332264864771830720939.61465 +precision: 291 +max_eq33 max_eq 3930006161890868126699733674 -> 3930006161890868126699733674 +precision: 24 +max_eq34 max_eq -Inf -> -Infinity +precision: 85 +max_eq35 max_eq 93078292872826821557062804648664023914549949 -> 93078292872826821557062804648664023914549949 +precision: 99 +max_eq36 max_eq -12589227765540231881757 -> -12589227765540231881757 +precision: 237 +max_eq37 max_eq +.658537391911369667168587960845918993179681225105767587482286342578856931277560680081994638430030884403661209711 -> 0.658537391911369667168587960845918993179681225105767587482286342578856931277560680081994638430030884403661209711 +precision: 47 +max_eq38 max_eq -5014.4668884154720700459425691433194109273E-23577926 -> -5.0144668884154720700459425691433194109273E-23577923 +precision: 99 +max_eq39 max_eq 1712263E+241332942 -> 1.712263E+241332948 +precision: 272 +max_eq40 max_eq sNaN -> NaN Invalid_operation +precision: 296 +max_eq41 max_eq 2932838202910929365968075806003398724 -> 2932838202910929365968075806003398724 +precision: 253 +max_eq42 max_eq -5997269884479528705339909263811384503913666244918851610755065988480572220073176294489908561114433931425393639741E-48828073 -> -5.997269884479528705339909263811384503913666244918851610755065988480572220073176294489908561114433931425393639741E-48827962 +precision: 48 +max_eq43 max_eq -.3871527 -> -0.3871527 +precision: 25 +max_eq44 max_eq 357761020156912575.18046E-10375878 -> 3.5776102015691257518046E-10375861 +precision: 85 +max_eq45 max_eq +Inf -> Infinity +precision: 130 +max_eq46 max_eq -Infinity -> -Infinity +precision: 3 +max_eq47 max_eq 594 -> 594 +precision: 270 +max_eq48 max_eq -3118321986631404546919966497133242926239456656999895663931949148352751871236974584267503805297770414798775854392905337998276727349598318370834457710938843 -> -3118321986631404546919966497133242926239456656999895663931949148352751871236974584267503805297770414798775854392905337998276727349598318370834457710938843 +precision: 220 +max_eq49 max_eq +.1314138665592630564212725925252955494928143568658139830691640213610799646320820453081445369755213696680742513666368718984518903479288899579339096022867752007515007583697990402976077826932388413358972112025451664 -> 0.1314138665592630564212725925252955494928143568658139830691640213610799646320820453081445369755213696680742513666368718984518903479288899579339096022867752007515007583697990402976077826932388413358972112025451664 +precision: 23 +max_eq50 max_eq -3.9 -> -3.9 +precision: 102 +max_eq51 max_eq -624149906240773580996E+335551037 -> -6.24149906240773580996E+335551057 +precision: 33 +max_eq52 max_eq 1618e+308227548 -> 1.618E+308227551 +precision: 227 +max_eq53 max_eq -NaN -> -NaN +precision: 57 +max_eq54 max_eq -4.19304296451257399361242187172321466723295293898 -> -4.19304296451257399361242187172321466723295293898 +precision: 181 +max_eq55 max_eq +9178e+407539606 -> 9.178E+407539609 +precision: 266 +max_eq56 max_eq +405901285958716350459499205566933519254497908443400622800098783028506222338639188345653121153796791486.6475319446791209564922510854050390998970 -> 405901285958716350459499205566933519254497908443400622800098783028506222338639188345653121153796791486.6475319446791209564922510854050390998970 +precision: 198 +max_eq57 max_eq -.9996627295307099376957106834610160823838756839094469162405960707045269039 -> -0.9996627295307099376957106834610160823838756839094469162405960707045269039 +precision: 147 +max_eq58 max_eq 855418981263698892251772310416893334120267101214477023706655.50440299261199109961978087532635053129058358558792627194835 -> 855418981263698892251772310416893334120267101214477023706655.50440299261199109961978087532635053129058358558792627194835 +precision: 64 +max_eq59 max_eq -.724930973654359453754376532879555822180532480467904E+59385769 -> -7.24930973654359453754376532879555822180532480467904E+59385768 +precision: 285 +max_eq60 max_eq -541736090308987960995674029925969878064643486932040209067412 -> -541736090308987960995674029925969878064643486932040209067412 +precision: 144 +max_eq61 max_eq .34756763378502577181629253196334156671489441533615334561E344490503 -> 3.4756763378502577181629253196334156671489441533615334561E+344490502 +precision: 200 +max_eq62 max_eq -23305847079475864385863302887649895553776348790901075597760739336649602368700008612937081019397068062416451382583696285126057.732947773953639451560179534453199099612071546497368748871703396299e-256795588 -> -2.3305847079475864385863302887649895553776348790901075597760739336649602368700008612937081019397068062416451382583696285126057732947773953639451560179534453199099612071546497368748871703396299E-256795464 +precision: 177 +max_eq63 max_eq 6078279745316087413813881124110468108596252687470019108851520803744788.34646909488254223294411091614542841e+136372693 -> 6.07827974531608741381388112411046810859625268747001910885152080374478834646909488254223294411091614542841E+136372762 +precision: 9 +max_eq64 max_eq .3325100 -> 0.3325100 +precision: 102 +max_eq65 max_eq +28.34637294368198379664359886457776343512188479384528560409025391502 -> 28.34637294368198379664359886457776343512188479384528560409025391502 +precision: 144 +max_eq66 max_eq 3367976445756630287154311869005044846984031144.495348E+183511724 -> 3.367976445756630287154311869005044846984031144495348E+183511769 +precision: 111 +max_eq67 max_eq -91129.84923210254481652947965589910 -> -91129.84923210254481652947965589910 +precision: 202 +max_eq68 max_eq +58179459916809491728710892146172588938691053076732934148741660486354742820640300695651174984511711201695550672721073553582470612994790475369767058148715698125076e+372242727 -> 5.8179459916809491728710892146172588938691053076732934148741660486354742820640300695651174984511711201695550672721073553582470612994790475369767058148715698125076E+372242887 +precision: 117 +max_eq69 max_eq +918391494580395076142220454191929304 -> 918391494580395076142220454191929304 +precision: 101 +max_eq70 max_eq -21005975106457295488136196880655737041 -> -21005975106457295488136196880655737041 +precision: 257 +max_eq71 max_eq 8726185.791537875056770423674909267602977714470342967872287410309203775690482376885813071181424973202781524748391798701302530574331436356565431 -> 8726185.791537875056770423674909267602977714470342967872287410309203775690482376885813071181424973202781524748391798701302530574331436356565431 +precision: 224 +max_eq72 max_eq -72749754417419091998372956785862468659354007545E-259477633 -> -7.2749754417419091998372956785862468659354007545E-259477587 +precision: 60 +max_eq73 max_eq 60e-376327764 -> 6.0E-376327763 +precision: 187 +max_eq74 max_eq +.4766369278876156091073447746438901720020360676e+316580116 -> 4.766369278876156091073447746438901720020360676E+316580115 +precision: 236 +max_eq75 max_eq -2548657789854748931247107443451260080284196195160630254861879252491944427405730113748158451563143431305482746420981161638846299944893507746210941335709158016766367888214829.727883125135671737594818575823480051 -> -2548657789854748931247107443451260080284196195160630254861879252491944427405730113748158451563143431305482746420981161638846299944893507746210941335709158016766367888214829.727883125135671737594818575823480051 +precision: 142 +max_eq76 max_eq 537458242112174378967021084003121178402e119952675 -> 5.37458242112174378967021084003121178402E+119952713 +precision: 154 +max_eq77 max_eq 30964253838829159775032086592823257655e-336198011 -> 3.0964253838829159775032086592823257655E-336197974 +precision: 28 +max_eq78 max_eq -607377862 -> -607377862 +precision: 3 +max_eq79 max_eq -.88e+410166653 -> -8.8E+410166652 +precision: 246 +max_eq80 max_eq 27021747278823119570615539555270651.39102190987326297254679904e-404096416 -> 2.702174727882311957061553955527065139102190987326297254679904E-404096382 +precision: 165 +max_eq81 max_eq +91002585031115427114044145257118517848891604342007114790214733063517906663536475351202560693812510316329099497016471874.13587749025181315 -> 91002585031115427114044145257118517848891604342007114790214733063517906663536475351202560693812510316329099497016471874.13587749025181315 +precision: 12 +max_eq82 max_eq -348. -> -348 +precision: 140 +max_eq83 max_eq +7393417788365164630255213406316801545754945908014028847485871024411717922077210221000073400440486192122279292366909891007161465204960941919 -> 7393417788365164630255213406316801545754945908014028847485871024411717922077210221000073400440486192122279292366909891007161465204960941919 +precision: 118 +max_eq84 max_eq +33210681838615368770031479055108377877 -> 33210681838615368770031479055108377877 +precision: 219 +max_eq85 max_eq +48775767232835846109677218377648 -> 48775767232835846109677218377648 +precision: 115 +max_eq86 max_eq -875456941378741636184304558421476462979559473084302488737411382985 -> -875456941378741636184304558421476462979559473084302488737411382985 +precision: 139 +max_eq87 max_eq -4538728687277941399086979198039965242256478794374356337702446803724697658701407 -> -4538728687277941399086979198039965242256478794374356337702446803724697658701407 +precision: 79 +max_eq88 max_eq -sNaN -> -NaN Invalid_operation +precision: 37 +max_eq89 max_eq -77430622462625969559352175366 -> -77430622462625969559352175366 +precision: 266 +max_eq90 max_eq 9142033884001296096671583135831468588299294398727238906167719431442787422057487008689372227329651.1510996291063602904361132702144928661913553123537050716011248849539511936344156761137768 -> 9142033884001296096671583135831468588299294398727238906167719431442787422057487008689372227329651.1510996291063602904361132702144928661913553123537050716011248849539511936344156761137768 +precision: 90 +max_eq91 max_eq +.491509 -> 0.491509 +precision: 20 +max_eq92 max_eq +3608660395864.57 -> 3608660395864.57 +precision: 113 +max_eq93 max_eq -.8730363246458466972143244965619864057173311803231078657140695985958568198400e-385985922 -> -8.730363246458466972143244965619864057173311803231078657140695985958568198400E-385985923 +precision: 194 +max_eq94 max_eq -45096915955720628205322338356707614699418798750264297852538217272117969.6025775624510228220668739444521790184282 -> -45096915955720628205322338356707614699418798750264297852538217272117969.6025775624510228220668739444521790184282 +precision: 211 +max_eq95 max_eq -4896126628984028065616830256638418334383630119549561254488289928236.4966194698593368197648713E-146231155 -> -4.8961266289840280656168302566384183343836301195495612544882899282364966194698593368197648713E-146231089 +precision: 77 +max_eq96 max_eq +65142035758588664111383055736335706511502158628361595609377 -> 65142035758588664111383055736335706511502158628361595609377 +precision: 185 +max_eq97 max_eq -628329396971581563666082360438141762504168536778689109179006385053202967638602742493647359482899732375811678001733E+327713952 -> -6.28329396971581563666082360438141762504168536778689109179006385053202967638602742493647359482899732375811678001733E+327714065 +precision: 100 +max_eq98 max_eq 61025963348231601586991752 -> 61025963348231601586991752 +precision: 260 +max_eq99 max_eq -.1560349291628608026040399725259619603339306610102299561369746243409055949304734329833437909256654205234970724625416813742561E10565639 -> -1.560349291628608026040399725259619603339306610102299561369746243409055949304734329833437909256654205234970724625416813742561E+10565638 +precision: 158 +maxmag_eq0 maxmag_eq .48737010816330155615387981604048954941401470648949899340946554397957322384905023328136258323652328055945619174202435294531545423005742073792116642271 -> 0.48737010816330155615387981604048954941401470648949899340946554397957322384905023328136258323652328055945619174202435294531545423005742073792116642271 +precision: 125 +maxmag_eq1 maxmag_eq .867049357676692568304662108070292464722909902766555830155 -> 0.867049357676692568304662108070292464722909902766555830155 +precision: 135 +maxmag_eq2 maxmag_eq NaN6070908532835254314072874 -> NaN6070908532835254314072874 +precision: 246 +maxmag_eq3 maxmag_eq -780459963068683325442595627661381517269900589154880756253673348781541244543635650732536e+169411012 -> -7.80459963068683325442595627661381517269900589154880756253673348781541244543635650732536E+169411098 +precision: 104 +maxmag_eq4 maxmag_eq +65086680884345880097462044459985320.9265728591855989536407992726220606797771007850965603 -> 65086680884345880097462044459985320.9265728591855989536407992726220606797771007850965603 +precision: 125 +maxmag_eq5 maxmag_eq 603622065890933742799997909270348856169538291199118494755591321809949495154997983864 -> 603622065890933742799997909270348856169538291199118494755591321809949495154997983864 +precision: 239 +maxmag_eq6 maxmag_eq -703722741831136946635921160893226762412958163946709466393652260971391985693501522309710921651868602452881560604085580005739928737659730648374925067897929660716157950698627343932416804468375E360578666 -> -7.03722741831136946635921160893226762412958163946709466393652260971391985693501522309710921651868602452881560604085580005739928737659730648374925067897929660716157950698627343932416804468375E+360578854 +precision: 273 +maxmag_eq7 maxmag_eq -92732566108566126746743678018503095277731029045809558744171141606112086139676443804828326777328687742839708037939578018872140714253857655787704648693259655999882886743535459296599554155208951831615469163 -> -92732566108566126746743678018503095277731029045809558744171141606112086139676443804828326777328687742839708037939578018872140714253857655787704648693259655999882886743535459296599554155208951831615469163 +precision: 248 +maxmag_eq8 maxmag_eq -89850528585653235442938416747024496752414541835055401410680700713332850987257062766288031751572641276 -> -89850528585653235442938416747024496752414541835055401410680700713332850987257062766288031751572641276 +precision: 94 +maxmag_eq9 maxmag_eq +408084468001119846905418214753484.393651364200481136258136925247716252418839232526955186 -> 408084468001119846905418214753484.393651364200481136258136925247716252418839232526955186 +precision: 49 +maxmag_eq10 maxmag_eq 3401080926675112148189908232191876 -> 3401080926675112148189908232191876 +precision: 94 +maxmag_eq11 maxmag_eq +1182360832221882161492416431016071805210376980002877006272027440245559047248219489E-254445576 -> 1.182360832221882161492416431016071805210376980002877006272027440245559047248219489E-254445495 +precision: 198 +maxmag_eq12 maxmag_eq .682488968041381672544730962406559541261948517290182481897066407742883906752847231199901 -> 0.682488968041381672544730962406559541261948517290182481897066407742883906752847231199901 +precision: 131 +maxmag_eq13 maxmag_eq +337e103395347 -> 3.37E+103395349 +precision: 167 +maxmag_eq14 maxmag_eq -173117529134826005253027463364141603024507402624336956876087409932509702958993125289839661308276522443543257327995 -> -173117529134826005253027463364141603024507402624336956876087409932509702958993125289839661308276522443543257327995 +precision: 56 +maxmag_eq15 maxmag_eq 2472292267773799030650818951090826959851467867084E-410520767 -> 2.472292267773799030650818951090826959851467867084E-410520719 +precision: 133 +maxmag_eq16 maxmag_eq -639258962129310990184700664613920490784466156856E-406780777 -> -6.39258962129310990184700664613920490784466156856E-406780730 +precision: 152 +maxmag_eq17 maxmag_eq -9641537496500831580504343498906336610110472454860096013102114465460891898789345629841439216866811043465E-138884002 -> -9.641537496500831580504343498906336610110472454860096013102114465460891898789345629841439216866811043465E-138883900 +precision: 259 +maxmag_eq18 maxmag_eq +21430 -> 21430 +precision: 97 +maxmag_eq19 maxmag_eq 675633677731703835008326851579091475211292873824424380488226078 -> 675633677731703835008326851579091475211292873824424380488226078 +precision: 138 +maxmag_eq20 maxmag_eq .8635160459590649471720649841878800447567191618934675566634333008e-98385244 -> 8.635160459590649471720649841878800447567191618934675566634333008E-98385245 +precision: 207 +maxmag_eq21 maxmag_eq +.59064883297743426150428608002578658567996292720588149406009834949530825746678498940172661508133424735024775964995152335297260470472972750401540428510518338567522392691519135285134800187685275837327023105 -> 0.59064883297743426150428608002578658567996292720588149406009834949530825746678498940172661508133424735024775964995152335297260470472972750401540428510518338567522392691519135285134800187685275837327023105 +precision: 268 +maxmag_eq22 maxmag_eq +.220317836639504477711173282628164688363745782099937030746118480743250322025970628100759325584619313567218556490237873454486761694693459765357533291178887885716446786265569107740807042576878160 -> 0.220317836639504477711173282628164688363745782099937030746118480743250322025970628100759325584619313567218556490237873454486761694693459765357533291178887885716446786265569107740807042576878160 +precision: 296 +maxmag_eq23 maxmag_eq +88462756150289777056506590798090696.972395256972587 -> 88462756150289777056506590798090696.972395256972587 +precision: 258 +maxmag_eq24 maxmag_eq -17146050277374876873123591791286495879264918632201694367.30901106492431821456726063201319834471846437864591019929749320175575583445517507363991171392357594727533550235559810780053373536942062132563015538255353873685104434170734343820732320512382154275160 -> -17146050277374876873123591791286495879264918632201694367.30901106492431821456726063201319834471846437864591019929749320175575583445517507363991171392357594727533550235559810780053373536942062132563015538255353873685104434170734343820732320512382154275160 +precision: 192 +maxmag_eq25 maxmag_eq +1439671935609471545303978982569635756769716846697238244611146232838720481552385255702382459513202521313527593806337079273665700680831161571302e-388774214 -> 1.439671935609471545303978982569635756769716846697238244611146232838720481552385255702382459513202521313527593806337079273665700680831161571302E-388774073 +precision: 156 +maxmag_eq26 maxmag_eq 817529365434840899982064725750029621936486318502789312816421110106046605930996839841796658875063679452375300292849 -> 817529365434840899982064725750029621936486318502789312816421110106046605930996839841796658875063679452375300292849 +precision: 35 +maxmag_eq27 maxmag_eq -Infinity -> -Infinity +precision: 247 +maxmag_eq28 maxmag_eq -sNaN572246046135663979022865157586898740115728660233289695 -> -NaN572246046135663979022865157586898740115728660233289695 Invalid_operation +precision: 62 +maxmag_eq29 maxmag_eq -8500539207181190789647635.2308820167639520659563240355430e393787645 -> -8.5005392071811907896476352308820167639520659563240355430E+393787669 +precision: 228 +maxmag_eq30 maxmag_eq +32216302597099892084186123300728089967345521225292564070398090260482108147130163181796011767424411680938742212020127542066886970133260753326703033127247196656422675636462716060790791248053695120 -> 32216302597099892084186123300728089967345521225292564070398090260482108147130163181796011767424411680938742212020127542066886970133260753326703033127247196656422675636462716060790791248053695120 +precision: 261 +maxmag_eq31 maxmag_eq +1430e-232740594 -> 1.430E-232740591 +precision: 241 +maxmag_eq32 maxmag_eq .431005234E-359080603 -> 4.31005234E-359080604 +precision: 213 +maxmag_eq33 maxmag_eq -59520141763315398985873777139991554578468075670396448791405772069407397306759592156042 -> -59520141763315398985873777139991554578468075670396448791405772069407397306759592156042 +precision: 206 +maxmag_eq34 maxmag_eq -17518668915570461873825683930088060045543956730827489986192996575136023394965866305430614187707512695651807.391848159e217114964 -> -1.7518668915570461873825683930088060045543956730827489986192996575136023394965866305430614187707512695651807391848159E+217115070 +precision: 71 +maxmag_eq35 maxmag_eq -.768843016431506579864900122916887 -> -0.768843016431506579864900122916887 +precision: 167 +maxmag_eq36 maxmag_eq 325930759874772605.7324651752440487636426420 -> 325930759874772605.7324651752440487636426420 +precision: 131 +maxmag_eq37 maxmag_eq -301377830381941856522472527111534428476975791648905 -> -301377830381941856522472527111534428476975791648905 +precision: 164 +maxmag_eq38 maxmag_eq -5499498736972806250e-93425423 -> -5.499498736972806250E-93425405 +precision: 193 +maxmag_eq39 maxmag_eq -NaN -> -NaN +precision: 248 +maxmag_eq40 maxmag_eq -615581638102290393944268964626438150262230257349596347621534153083556399614366561555184051232583226121120937933517958577769839507331801476712318890423582558298632615300281265927627885E-108876652 -> -6.15581638102290393944268964626438150262230257349596347621534153083556399614366561555184051232583226121120937933517958577769839507331801476712318890423582558298632615300281265927627885E-108876470 +precision: 70 +maxmag_eq41 maxmag_eq -269785880741346169312838739963181381090407965734163460811739E157490887 -> -2.69785880741346169312838739963181381090407965734163460811739E+157490946 +precision: 223 +maxmag_eq42 maxmag_eq -1817801981240361907979326771993138070908148205560910147915730287713653857633721983176954912415928684818916784073738884009694809973450871878208722276519935992134979950.932653E-43738715 -> -1.817801981240361907979326771993138070908148205560910147915730287713653857633721983176954912415928684818916784073738884009694809973450871878208722276519935992134979950932653E-43738550 +precision: 67 +maxmag_eq43 maxmag_eq 407359651653186795528086.9477521413762 -> 407359651653186795528086.9477521413762 +precision: 111 +maxmag_eq44 maxmag_eq 5131920886842283563.6944209878118551816646209271539008050422623971574E-227217097 -> 5.1319208868422835636944209878118551816646209271539008050422623971574E-227217079 +precision: 173 +maxmag_eq45 maxmag_eq -Inf -> -Infinity +precision: 152 +maxmag_eq46 maxmag_eq +14916597872173098024686459351136345776601936010468891664841249467386845887094955936.27113770776163139648210011306640012039222959676201628340654387903e-296872017 -> 1.491659787217309802468645935113634577660193601046889166484124946738684588709495593627113770776163139648210011306640012039222959676201628340654387903E-296871935 +precision: 178 +maxmag_eq47 maxmag_eq -68439768649279434437684832730611992496270293957713423568308415722118800019626276396175355840371117873422834591 -> -68439768649279434437684832730611992496270293957713423568308415722118800019626276396175355840371117873422834591 +precision: 51 +maxmag_eq48 maxmag_eq -149676. -> -149676 +precision: 4 +maxmag_eq49 maxmag_eq .287E-185732916 -> 2.87E-185732917 +precision: 192 +maxmag_eq50 maxmag_eq +78941755411167870824360219610125748029E187226380 -> 7.8941755411167870824360219610125748029E+187226417 +precision: 88 +maxmag_eq51 maxmag_eq -7881635895059918235997951478260991840145523978255897 -> -7881635895059918235997951478260991840145523978255897 +precision: 85 +maxmag_eq52 maxmag_eq -33362618375151748677E-58580925 -> -3.3362618375151748677E-58580906 +precision: 22 +maxmag_eq53 maxmag_eq -Infinity -> -Infinity +precision: 12 +maxmag_eq54 maxmag_eq -96.6282602E-402007712 -> -9.66282602E-402007711 +precision: 194 +maxmag_eq55 maxmag_eq -46843438496662389695711507055870469379614984845269641324732865383251629391616802790.7063038564505325901986538168052076964673201449E-89326585 -> -4.68434384966623896957115070558704693796149848452696413247328653832516293916168027907063038564505325901986538168052076964673201449E-89326503 +precision: 290 +maxmag_eq56 maxmag_eq +5733548553250324495108224582524323978475287586909666383981755257840973651718904514064080517899633793272096105101195695426798119544854133067348395814080180506089804273143475301095178907833284435639155918366252591401162568695937903130526456257007932403589114461041254224318286 -> 5733548553250324495108224582524323978475287586909666383981755257840973651718904514064080517899633793272096105101195695426798119544854133067348395814080180506089804273143475301095178907833284435639155918366252591401162568695937903130526456257007932403589114461041254224318286 +precision: 126 +maxmag_eq57 maxmag_eq -3208562991558424568227222990314772253427912689909255480632709137811902892115643964360030085212308312343451549656558 -> -3208562991558424568227222990314772253427912689909255480632709137811902892115643964360030085212308312343451549656558 +precision: 31 +maxmag_eq58 maxmag_eq -Infinity -> -Infinity +precision: 251 +maxmag_eq59 maxmag_eq 8.8634711E-60861575 -> 8.8634711E-60861575 +precision: 20 +maxmag_eq60 maxmag_eq -882117864 -> -882117864 +precision: 26 +maxmag_eq61 maxmag_eq -.7299722221592 -> -0.7299722221592 +precision: 213 +maxmag_eq62 maxmag_eq 16978213894191346769767420105922575324E-394637039 -> 1.6978213894191346769767420105922575324E-394637002 +precision: 136 +maxmag_eq63 maxmag_eq 4583705328.6237554802e-381726097 -> 4.5837053286237554802E-381726088 +precision: 223 +maxmag_eq64 maxmag_eq -Inf -> -Infinity +precision: 49 +maxmag_eq65 maxmag_eq -432289.755273829034397961739E+303224974 -> -4.32289755273829034397961739E+303224979 +precision: 44 +maxmag_eq66 maxmag_eq -22426332 -> -22426332 +precision: 264 +maxmag_eq67 maxmag_eq 2477585289780403660019774201102659673286137081907288458565007180233178269049551987397162358720824422706518722851421516688526410673844371316060164935909266467809306069394048985969487297002951114038601783463783289098594103030382192684923652705e-298131158 -> 2.477585289780403660019774201102659673286137081907288458565007180233178269049551987397162358720824422706518722851421516688526410673844371316060164935909266467809306069394048985969487297002951114038601783463783289098594103030382192684923652705E-298130918 +precision: 114 +maxmag_eq68 maxmag_eq Infinity -> Infinity +precision: 289 +maxmag_eq69 maxmag_eq NaN7691932095348383803910914165405794276532805882 -> NaN7691932095348383803910914165405794276532805882 +precision: 74 +maxmag_eq70 maxmag_eq +4067997540825929964667973952522631698731 -> 4067997540825929964667973952522631698731 +precision: 222 +maxmag_eq71 maxmag_eq -NaN -> -NaN +precision: 242 +maxmag_eq72 maxmag_eq -NaN -> -NaN +precision: 150 +maxmag_eq73 maxmag_eq -585864731.35 -> -585864731.35 +precision: 96 +maxmag_eq74 maxmag_eq -76187243653862565417160934422392731 -> -76187243653862565417160934422392731 +precision: 151 +maxmag_eq75 maxmag_eq +2.927e-232753720 -> 2.927E-232753720 +precision: 182 +maxmag_eq76 maxmag_eq -519485983167038436627160564461959219093602981371042003341185307588610545416433045266047963864546491818089655436552966560868236068624809462e45341977 -> -5.19485983167038436627160564461959219093602981371042003341185307588610545416433045266047963864546491818089655436552966560868236068624809462E+45342114 +precision: 253 +maxmag_eq77 maxmag_eq -3328248499253107351579631166254983226486285929376003994675281380715455104575095512624153 -> -3328248499253107351579631166254983226486285929376003994675281380715455104575095512624153 +precision: 217 +maxmag_eq78 maxmag_eq +sNaN -> NaN Invalid_operation +precision: 273 +maxmag_eq79 maxmag_eq +5780335750349426338626573943142239107862195436442339387837790871330753271348646571979223848529293716158390911136875536520712066020487658655591595460663063204295028020618769093609044271361086032620978996213168897854560701495706722047E-204435356 -> 5.780335750349426338626573943142239107862195436442339387837790871330753271348646571979223848529293716158390911136875536520712066020487658655591595460663063204295028020618769093609044271361086032620978996213168897854560701495706722047E-204435125 +precision: 136 +maxmag_eq80 maxmag_eq +23347642734631.37243522 -> 23347642734631.37243522 +precision: 51 +maxmag_eq81 maxmag_eq 74663513019358194854385400e-252137854 -> 7.4663513019358194854385400E-252137829 +precision: 78 +maxmag_eq82 maxmag_eq -.53589064082233001695187796033474562966798565477282816320529867081626 -> -0.53589064082233001695187796033474562966798565477282816320529867081626 +precision: 225 +maxmag_eq83 maxmag_eq 791411412267746516523625175165454891550733100882836142347102510037160397687252450268025839294551830894 -> 791411412267746516523625175165454891550733100882836142347102510037160397687252450268025839294551830894 +precision: 194 +maxmag_eq84 maxmag_eq 4688337430084082391493162531330376555727592195902604383733e-69668533 -> 4.688337430084082391493162531330376555727592195902604383733E-69668476 +precision: 133 +maxmag_eq85 maxmag_eq 262465743569522109715869628385835407044952499067371876940981440 -> 262465743569522109715869628385835407044952499067371876940981440 +precision: 37 +maxmag_eq86 maxmag_eq 46265213588 -> 46265213588 +precision: 51 +maxmag_eq87 maxmag_eq -Infinity -> -Infinity +precision: 55 +maxmag_eq88 maxmag_eq -278600.4478886613268555170002754938480483 -> -278600.4478886613268555170002754938480483 +precision: 60 +maxmag_eq89 maxmag_eq .5941279394263400723029887039614452e-219173570 -> 5.941279394263400723029887039614452E-219173571 +precision: 268 +maxmag_eq90 maxmag_eq Inf -> Infinity +precision: 2 +maxmag_eq91 maxmag_eq -7.8e+291406561 -> -7.8E+291406561 +precision: 263 +maxmag_eq92 maxmag_eq +.14448534656994399157540140573877156107807635464968310509392863286124562406127439512653004849021706845309547489863599156997680194402836499714210717564843062381697119050841151728459718789163919361546324859604002398566428501e-351669773 -> 1.4448534656994399157540140573877156107807635464968310509392863286124562406127439512653004849021706845309547489863599156997680194402836499714210717564843062381697119050841151728459718789163919361546324859604002398566428501E-351669774 +precision: 220 +maxmag_eq93 maxmag_eq -275240692.845 -> -275240692.845 +precision: 181 +maxmag_eq94 maxmag_eq -.4084162061931534009788087745673162665561360487578672995548093618135374268377757445925263070E-89595698 -> -4.084162061931534009788087745673162665561360487578672995548093618135374268377757445925263070E-89595699 +precision: 184 +maxmag_eq95 maxmag_eq -31784399e144820250 -> -3.1784399E+144820257 +precision: 121 +maxmag_eq96 maxmag_eq -51. -> -51 +precision: 103 +maxmag_eq97 maxmag_eq -3950088257099742565855841260917309602648596 -> -3950088257099742565855841260917309602648596 +precision: 253 +maxmag_eq98 maxmag_eq +.876059850568377594354786563248179218717420486551375898432458453596147501748367980675198904021818304186362852601059637353258651208260595670214143107575367822026579908393113348708046E+285712468 -> 8.76059850568377594354786563248179218717420486551375898432458453596147501748367980675198904021818304186362852601059637353258651208260595670214143107575367822026579908393113348708046E+285712467 +precision: 186 +maxmag_eq99 maxmag_eq +55526732406258062188212487659285682211465157264992897125157180455165742988783119699570136409386026143704098702892771814078 -> 55526732406258062188212487659285682211465157264992897125157180455165742988783119699570136409386026143704098702892771814078 +precision: 16 +min_eq0 min_eq 7097E334037297 -> 7.097E+334037300 +precision: 41 +min_eq1 min_eq .6441974486 -> 0.6441974486 +precision: 103 +min_eq2 min_eq 11843922759.53986304284145110278202857571596e-50851319 -> 1.184392275953986304284145110278202857571596E-50851309 +precision: 199 +min_eq3 min_eq .942480380640582646596674040776179396572530806116235431222201573444509333308524379940343524719246430890468683940239795642927858112494180601491235303959089584567604356480170927436344787049047603863 -> 0.942480380640582646596674040776179396572530806116235431222201573444509333308524379940343524719246430890468683940239795642927858112494180601491235303959089584567604356480170927436344787049047603863 +precision: 227 +min_eq4 min_eq +30254371433160372330787517559196846839691959722107107533460029584599718282754661212415149548700177861574065195059757769919.166490366788692940459564675427541005278 -> 30254371433160372330787517559196846839691959722107107533460029584599718282754661212415149548700177861574065195059757769919.166490366788692940459564675427541005278 +precision: 158 +min_eq5 min_eq +1180539.82419882582773941638522128817042612913399384966e-367280054 -> 1.18053982419882582773941638522128817042612913399384966E-367280048 +precision: 133 +min_eq6 min_eq 4099781492916617049075051281339869037732470482972708614320036774834.70819621598486807E-198919584 -> 4.09978149291661704907505128133986903773247048297270861432003677483470819621598486807E-198919518 +precision: 26 +min_eq7 min_eq +4.73879154913 -> 4.73879154913 +precision: 115 +min_eq8 min_eq +4632031388651767810767591955635299736082626250025151809924730797784955104454183425.7 -> 4632031388651767810767591955635299736082626250025151809924730797784955104454183425.7 +precision: 121 +min_eq9 min_eq -8771387303723953E+301493219 -> -8.771387303723953E+301493234 +precision: 132 +min_eq10 min_eq -3721986804529671864820327962762217804E389171719 -> -3.721986804529671864820327962762217804E+389171755 +precision: 213 +min_eq11 min_eq 879698885528342905782072446461820837891775586684142073372195792089224330041874489569685275735839986914282595655998931589898558460841505997508642630008600360648583230 -> 879698885528342905782072446461820837891775586684142073372195792089224330041874489569685275735839986914282595655998931589898558460841505997508642630008600360648583230 +precision: 131 +min_eq12 min_eq +7409797538.273309941717158508677869133434546956e-329172107 -> 7.409797538273309941717158508677869133434546956E-329172098 +precision: 27 +min_eq13 min_eq -1334.40810969 -> -1334.40810969 +precision: 219 +min_eq14 min_eq -56663758054909204875886723862602659999953195811647563037320303917902233794104002667567518630983886.5 -> -56663758054909204875886723862602659999953195811647563037320303917902233794104002667567518630983886.5 +precision: 155 +min_eq15 min_eq -63345026963179.245981759888213281536651955331757 -> -63345026963179.245981759888213281536651955331757 +precision: 128 +min_eq16 min_eq .3007825632655570461642768192280452 -> 0.3007825632655570461642768192280452 +precision: 212 +min_eq17 min_eq +95960915831451771736459835474613202192416936671321121855179886636108100016401312707559866 -> 95960915831451771736459835474613202192416936671321121855179886636108100016401312707559866 +precision: 25 +min_eq18 min_eq -637123427680937339 -> -637123427680937339 +precision: 234 +min_eq19 min_eq -56813725095151850835137821217759546576099014210103086880151622878563025077247808454190012152860929180846912298573676056089624882662347160062204468358043790208526250085952128739425148187183460e-150638618 -> -5.6813725095151850835137821217759546576099014210103086880151622878563025077247808454190012152860929180846912298573676056089624882662347160062204468358043790208526250085952128739425148187183460E-150638428 +precision: 155 +min_eq20 min_eq -47409416000753915252071784143127153324537647872194957581412185930689304500011015202697479378886187588146422394970620706196476918987440661871124229505 -> -47409416000753915252071784143127153324537647872194957581412185930689304500011015202697479378886187588146422394970620706196476918987440661871124229505 +precision: 127 +min_eq21 min_eq +.49446860991155912392880565149890938425635698251039759687653454215E38692156 -> 4.9446860991155912392880565149890938425635698251039759687653454215E+38692155 +precision: 35 +min_eq22 min_eq -.457120 -> -0.457120 +precision: 210 +min_eq23 min_eq .6623857005785525E+259270803 -> 6.623857005785525E+259270802 +precision: 41 +min_eq24 min_eq +3808351061848880948344719675244 -> 3808351061848880948344719675244 +precision: 88 +min_eq25 min_eq -NaN -> -NaN +precision: 159 +min_eq26 min_eq +968850498725657820473208715834E-17459161 -> 9.68850498725657820473208715834E-17459132 +precision: 184 +min_eq27 min_eq -76482589212052759688418867.6711104 -> -76482589212052759688418867.6711104 +precision: 178 +min_eq28 min_eq -2235410054.1350064144657818905936068 -> -2235410054.1350064144657818905936068 +precision: 66 +min_eq29 min_eq +2819549578040290822252e-270142588 -> 2.819549578040290822252E-270142567 +precision: 103 +min_eq30 min_eq +115114844571176904e-199469828 -> 1.15114844571176904E-199469811 +precision: 13 +min_eq31 min_eq +8778122404e+66494217 -> 8.778122404E+66494226 +precision: 172 +min_eq32 min_eq 631545619651343981603904591224987273808111272294156821416141049361763534583103337330130016560394508459756289162430820513721761417808889041736524277E-216099059 -> 6.31545619651343981603904591224987273808111272294156821416141049361763534583103337330130016560394508459756289162430820513721761417808889041736524277E-216098913 +precision: 17 +min_eq33 min_eq -NaN7552458262839381428282407381217450053728526 -> -NaN81217450053728526 +precision: 146 +min_eq34 min_eq -6593963570.9005613497148604558823178850102819867383132767696230896982466525205569151324127605107964896015581018255539405157974401141e+372489617 -> -6.5939635709005613497148604558823178850102819867383132767696230896982466525205569151324127605107964896015581018255539405157974401141E+372489626 +precision: 200 +min_eq35 min_eq -80094213785272516874099.10537231870096553210041090390168862994533266553461992757742455651223159504E-68311120 -> -8.009421378527251687409910537231870096553210041090390168862994533266553461992757742455651223159504E-68311098 +precision: 12 +min_eq36 min_eq 80.6E-412559326 -> 8.06E-412559325 +precision: 186 +min_eq37 min_eq +178489559067530234045840251440293481510468842106954615443107503079344553193577688117067610039274.526970972022877475505049610676873004126613232973970635870191446585079244 -> 178489559067530234045840251440293481510468842106954615443107503079344553193577688117067610039274.526970972022877475505049610676873004126613232973970635870191446585079244 +precision: 288 +min_eq38 min_eq -7544052338431672011550412533856963673506100024716199668011104754284890983255585547.24213793602771840231233019276145228666478506010302305632897927254158860215540258639856294212091779783009398 -> -7544052338431672011550412533856963673506100024716199668011104754284890983255585547.24213793602771840231233019276145228666478506010302305632897927254158860215540258639856294212091779783009398 +precision: 256 +min_eq39 min_eq Inf -> Infinity +precision: 174 +min_eq40 min_eq 5757143964.508841069398182810323863993016781200801242378745777252806365460292014897071440728034646419161629010819099787466469588458945234600759 -> 5757143964.508841069398182810323863993016781200801242378745777252806365460292014897071440728034646419161629010819099787466469588458945234600759 +precision: 222 +min_eq41 min_eq .8240426115710798118448691774120534251534980390452975788899675412279060737564587972373395542602346533612412711548294722748062426046215216021376621796018262445762961609426462052886035701333781169775e-215478472 -> 8.240426115710798118448691774120534251534980390452975788899675412279060737564587972373395542602346533612412711548294722748062426046215216021376621796018262445762961609426462052886035701333781169775E-215478473 +precision: 118 +min_eq42 min_eq -sNaN1120560468805819410849420631510051835839268890172707 -> -NaN1120560468805819410849420631510051835839268890172707 Invalid_operation +precision: 262 +min_eq43 min_eq -962290095538412277275227838194991159614354503285162609021892708325785292726897792650081536714378359905362355080899317473883152581497053601131 -> -962290095538412277275227838194991159614354503285162609021892708325785292726897792650081536714378359905362355080899317473883152581497053601131 +precision: 38 +min_eq44 min_eq .810422653859515502323700E-43999367 -> 8.10422653859515502323700E-43999368 +precision: 216 +min_eq45 min_eq +371317511328736576431618155905716613569005163084235611.102816156144053529270133941247895618785977542E343875215 -> 3.71317511328736576431618155905716613569005163084235611102816156144053529270133941247895618785977542E+343875268 +precision: 50 +min_eq46 min_eq +732.8941603143921262956513792605 -> 732.8941603143921262956513792605 +precision: 43 +min_eq47 min_eq +628583707272834772578468754115 -> 628583707272834772578468754115 +precision: 256 +min_eq48 min_eq -Infinity -> -Infinity +precision: 97 +min_eq49 min_eq +1559331888812581 -> 1559331888812581 +precision: 52 +min_eq50 min_eq -Inf -> -Infinity +precision: 245 +min_eq51 min_eq +.8285139299604400021588683804005994017 -> 0.8285139299604400021588683804005994017 +precision: 70 +min_eq52 min_eq -5757719682458699538469748534816336593481687857888183889E-245167925 -> -5.757719682458699538469748534816336593481687857888183889E-245167871 +precision: 269 +min_eq53 min_eq -Inf -> -Infinity +precision: 248 +min_eq54 min_eq 6200645754884986343276379852089500080763192210960592447891846817774525852342137012158831363112789599959379382548401912808046380972976089546.841690309854726700606544165595868464071372481759082053421474E-310933144 -> 6.200645754884986343276379852089500080763192210960592447891846817774525852342137012158831363112789599959379382548401912808046380972976089546841690309854726700606544165595868464071372481759082053421474E-310933006 +precision: 56 +min_eq55 min_eq -sNaN53128268 -> -NaN53128268 Invalid_operation +precision: 253 +min_eq56 min_eq -85193 -> -85193 +precision: 294 +min_eq57 min_eq 6561260301125510978534804584761979668211023605473860167985021210593261835016760496075842601168022896564524434517523974665965266152032821528642633742981679281047254870 -> 6561260301125510978534804584761979668211023605473860167985021210593261835016760496075842601168022896564524434517523974665965266152032821528642633742981679281047254870 +precision: 170 +min_eq58 min_eq -116008356922660871780780760567E36732836 -> -1.16008356922660871780780760567E+36732865 +precision: 286 +min_eq59 min_eq -9969255082922.21389230016149501975484767296419465410149854661088122852080731780028734975035420184591510422917569510780485238426217924019916458751189155910449438733411899550899823421292568767677960054692944016827559756366596939632137330218794 -> -9969255082922.21389230016149501975484767296419465410149854661088122852080731780028734975035420184591510422917569510780485238426217924019916458751189155910449438733411899550899823421292568767677960054692944016827559756366596939632137330218794 +precision: 108 +min_eq60 min_eq -850224322639428478417316545163308193411243391015442567571703813194075 -> -850224322639428478417316545163308193411243391015442567571703813194075 +precision: 107 +min_eq61 min_eq -3447843580442041469397720218628559103892 -> -3447843580442041469397720218628559103892 +precision: 251 +min_eq62 min_eq -.33662912914885287189077013990462221438479972065192093364163234793000187795934867881584099073841923407743796974891323689257995240829322818908774984598636270306460452740554266679 -> -0.33662912914885287189077013990462221438479972065192093364163234793000187795934867881584099073841923407743796974891323689257995240829322818908774984598636270306460452740554266679 +precision: 34 +min_eq63 min_eq -4678348868 -> -4678348868 +precision: 67 +min_eq64 min_eq +116207606438.512675631704407197 -> 116207606438.512675631704407197 +precision: 147 +min_eq65 min_eq 708762778805006154561084615973055866631 -> 708762778805006154561084615973055866631 +precision: 193 +min_eq66 min_eq -2010202264010036091114298096330100953 -> -2010202264010036091114298096330100953 +precision: 83 +min_eq67 min_eq +.2236137281534572778005741105283265834799010201581448699E-132100813 -> 2.236137281534572778005741105283265834799010201581448699E-132100814 +precision: 266 +min_eq68 min_eq 695686175618626885166891293300433386070057413242663e-206337634 -> 6.95686175618626885166891293300433386070057413242663E-206337584 +precision: 299 +min_eq69 min_eq 5522089369954182983686955458070448526794E47319377 -> 5.522089369954182983686955458070448526794E+47319416 +precision: 246 +min_eq70 min_eq -547.5400834123157546005764730280406556066105230516569739223238101901837237580907978106386613763453230370654354412 -> -547.5400834123157546005764730280406556066105230516569739223238101901837237580907978106386613763453230370654354412 +precision: 91 +min_eq71 min_eq -.448529205584091779991925180362500730234271E+38563611 -> -4.48529205584091779991925180362500730234271E+38563610 +precision: 47 +min_eq72 min_eq +45490920834663004963036206100733837952967689799E+19963413 -> 4.5490920834663004963036206100733837952967689799E+19963459 +precision: 73 +min_eq73 min_eq +5353679537757861806014532243806533068068589698620E+287143228 -> 5.353679537757861806014532243806533068068589698620E+287143276 +precision: 17 +min_eq74 min_eq -6.29755 -> -6.29755 +precision: 60 +min_eq75 min_eq +379242028387e-115922230 -> 3.79242028387E-115922219 +precision: 136 +min_eq76 min_eq +883015405991109780076552338366065381314449244265930702069402 -> 883015405991109780076552338366065381314449244265930702069402 +precision: 200 +min_eq77 min_eq 597993045374462888895744812461166929501716210141156581883072925588503155243211969153635290720672368158452098753869232448821506987841520808020293171074062089514314468928110534497 -> 597993045374462888895744812461166929501716210141156581883072925588503155243211969153635290720672368158452098753869232448821506987841520808020293171074062089514314468928110534497 +precision: 266 +min_eq78 min_eq -13307569794612601790793564801582894832414810098812539215668588431777376340961031355697732994223795662917670037133184135987084217860209399893416312486424866575081080993739743378499345488926219104322345355763017570752724947237110639586035102 -> -13307569794612601790793564801582894832414810098812539215668588431777376340961031355697732994223795662917670037133184135987084217860209399893416312486424866575081080993739743378499345488926219104322345355763017570752724947237110639586035102 +precision: 7 +min_eq79 min_eq 419.6 -> 419.6 +precision: 246 +min_eq80 min_eq -685448434807982585044103102259856642248795871115016945582752601768464824.137882116285928129169312773106 -> -685448434807982585044103102259856642248795871115016945582752601768464824.137882116285928129169312773106 +precision: 152 +min_eq81 min_eq sNaN -> NaN Invalid_operation +precision: 245 +min_eq82 min_eq +509157056095621444491004287874696949047216443205986168889515323506363 -> 509157056095621444491004287874696949047216443205986168889515323506363 +precision: 162 +min_eq83 min_eq -702301631047736721327014499001081924462986929469759303459887006949780049499241753598005084296852022066186.15267101510899557516853740926870814643263 -> -702301631047736721327014499001081924462986929469759303459887006949780049499241753598005084296852022066186.15267101510899557516853740926870814643263 +precision: 261 +min_eq84 min_eq +Inf -> Infinity +precision: 155 +min_eq85 min_eq -485336977074 -> -485336977074 +precision: 170 +min_eq86 min_eq -.87054058768728705991838035268281219983118128870145755042690500724189345370125917981971225932974400859828102734178140232393478332108189020385965E-390126877 -> -8.7054058768728705991838035268281219983118128870145755042690500724189345370125917981971225932974400859828102734178140232393478332108189020385965E-390126878 +precision: 159 +min_eq87 min_eq -38781382575424878941299617764912951220842064984523110751935120597067416714085299766825822887897782500258004637343771297575461841662562483 -> -38781382575424878941299617764912951220842064984523110751935120597067416714085299766825822887897782500258004637343771297575461841662562483 +precision: 16 +min_eq88 min_eq Inf -> Infinity +precision: 143 +min_eq89 min_eq -6902589986971234768684016330307651262428484861998227741359909770064990706650238036403413102910811511882317100002764414820968308102058284792318 -> -6902589986971234768684016330307651262428484861998227741359909770064990706650238036403413102910811511882317100002764414820968308102058284792318 +precision: 81 +min_eq90 min_eq -Infinity -> -Infinity +precision: 78 +min_eq91 min_eq 1384569501173216522.491901768020218721403473420355695023887044710629639 -> 1384569501173216522.491901768020218721403473420355695023887044710629639 +precision: 156 +min_eq92 min_eq Inf -> Infinity +precision: 182 +min_eq93 min_eq -934350170220411432480453331907885722639880711774826161530629012883791803156580874639704409376963640814602614440318659844680110182789882479617546887180e+38556400 -> -9.34350170220411432480453331907885722639880711774826161530629012883791803156580874639704409376963640814602614440318659844680110182789882479617546887180E+38556549 +precision: 153 +min_eq94 min_eq 51363013085036665975663154431827945713909500572530733704272935 -> 51363013085036665975663154431827945713909500572530733704272935 +precision: 176 +min_eq95 min_eq 897223630307102615581133648162033164229000170412277606214648847772449243120262508158595770387248470800821035868831602608877979839468349400157932636e-81421169 -> 8.97223630307102615581133648162033164229000170412277606214648847772449243120262508158595770387248470800821035868831602608877979839468349400157932636E-81421023 +precision: 174 +min_eq96 min_eq 16999388035024078492091270836129604938286869385538665773013799059539551473159892825838452223484471844342661379055053679649146484 -> 16999388035024078492091270836129604938286869385538665773013799059539551473159892825838452223484471844342661379055053679649146484 +precision: 291 +min_eq97 min_eq -102253591679263130414666298406925864131083144076763320189714868675484500544519779959214274898499684733 -> -102253591679263130414666298406925864131083144076763320189714868675484500544519779959214274898499684733 +precision: 130 +min_eq98 min_eq +49451974495684599603106217276738571145224746261949716485e56610869 -> 4.9451974495684599603106217276738571145224746261949716485E+56610924 +precision: 279 +min_eq99 min_eq +6146175.994645965 -> 6146175.994645965 +precision: 90 +minmag_eq0 minmag_eq +619334386544815.606216e+357209456 -> 6.19334386544815606216E+357209470 +precision: 161 +minmag_eq1 minmag_eq -25. -> -25 +precision: 11 +minmag_eq2 minmag_eq -57227026699e+402726035 -> -5.7227026699E+402726045 +precision: 267 +minmag_eq3 minmag_eq +6581196541043406847808351515295479058802416493764645542759747134753457180375244128143865256854408384548181762615495141763366358391724546798242071162692101659217 -> 6581196541043406847808351515295479058802416493764645542759747134753457180375244128143865256854408384548181762615495141763366358391724546798242071162692101659217 +precision: 147 +minmag_eq4 minmag_eq 321548943382273633319.40278531 -> 321548943382273633319.40278531 +precision: 126 +minmag_eq5 minmag_eq -5367761309552950417862676055231912212757297477021961.79421123458486170272449906879102856806966398897450 -> -5367761309552950417862676055231912212757297477021961.79421123458486170272449906879102856806966398897450 +precision: 146 +minmag_eq6 minmag_eq -4175909218757382872473009361088672887922313234498561681751235406240921758004591668690785379262881031895104867000430789328761918955 -> -4175909218757382872473009361088672887922313234498561681751235406240921758004591668690785379262881031895104867000430789328761918955 +precision: 171 +minmag_eq7 minmag_eq 9733996913436748626313792324364156336990632091995976143839169743147933974347317777470899137750852983920408304405877 -> 9733996913436748626313792324364156336990632091995976143839169743147933974347317777470899137750852983920408304405877 +precision: 173 +minmag_eq8 minmag_eq +45089388850525978911634842785017268841967841409146610652415978391057843373512695e+225947827 -> 4.5089388850525978911634842785017268841967841409146610652415978391057843373512695E+225947906 +precision: 168 +minmag_eq9 minmag_eq 2803674117333422286075343514997541643810209638720529332643790341827237855037941045034045234036668102889372583175440285126961066133 -> 2803674117333422286075343514997541643810209638720529332643790341827237855037941045034045234036668102889372583175440285126961066133 +precision: 241 +minmag_eq10 minmag_eq +9481430730431705107015328941561886263205904242022707224819071975718055253569096745083137620279542423196905221661923360485929882063115487178522064271663125799290844692592476340425.463200583210419830899692E196500551 -> 9.481430730431705107015328941561886263205904242022707224819071975718055253569096745083137620279542423196905221661923360485929882063115487178522064271663125799290844692592476340425463200583210419830899692E+196500728 +precision: 234 +minmag_eq11 minmag_eq -Inf -> -Infinity +precision: 180 +minmag_eq12 minmag_eq +79717566564681479526501240473362354303620688119645568267493811384439660321665982330533541912567439526940926696209184478722233501181043023243547 -> 79717566564681479526501240473362354303620688119645568267493811384439660321665982330533541912567439526940926696209184478722233501181043023243547 +precision: 117 +minmag_eq13 minmag_eq +72954290496. -> 72954290496 +precision: 114 +minmag_eq14 minmag_eq 224493930873853962005.76364988805204719638E-88404637 -> 2.2449393087385396200576364988805204719638E-88404617 +precision: 199 +minmag_eq15 minmag_eq -.3034380849218175287652552160547249911485765440205624228516461490957558795694597551071090716313640625668723614757071275673108818330437943593885043707108 -> -0.3034380849218175287652552160547249911485765440205624228516461490957558795694597551071090716313640625668723614757071275673108818330437943593885043707108 +precision: 71 +minmag_eq16 minmag_eq -69417145.845139649083140258546888802910876e215141183 -> -6.9417145845139649083140258546888802910876E+215141190 +precision: 259 +minmag_eq17 minmag_eq -5254786305041184143045843160453555009414973553444366553347178565274772461234685081462383316619634329972285715431716033217192586950012895927482037229707456695924084219046044727938736835718231329993912959488214 -> -5254786305041184143045843160453555009414973553444366553347178565274772461234685081462383316619634329972285715431716033217192586950012895927482037229707456695924084219046044727938736835718231329993912959488214 +precision: 215 +minmag_eq18 minmag_eq -Infinity -> -Infinity +precision: 147 +minmag_eq19 minmag_eq .1062731991843925095781334880049360428725115574083745409177227892127574 -> 0.1062731991843925095781334880049360428725115574083745409177227892127574 +precision: 100 +minmag_eq20 minmag_eq -152708028179618784480090003989985054366208.50 -> -152708028179618784480090003989985054366208.50 +precision: 56 +minmag_eq21 minmag_eq +33480.E-414125855 -> 3.3480E-414125851 +precision: 135 +minmag_eq22 minmag_eq -5623372766096859071709769964603689885381759853809173236350508606021321257959970515212775705297073996372601515040381626045181971538E370835654 -> -5.623372766096859071709769964603689885381759853809173236350508606021321257959970515212775705297073996372601515040381626045181971538E+370835783 +precision: 159 +minmag_eq23 minmag_eq 947103000539594659719919624363501027720280160869456093616857900326252953751025e+68000794 -> 9.47103000539594659719919624363501027720280160869456093616857900326252953751025E+68000871 +precision: 43 +minmag_eq24 minmag_eq 80E-96253372 -> 8.0E-96253371 +precision: 221 +minmag_eq25 minmag_eq 4404422971787571256450125048765638148861001410180017158730484568233130315217530828605274414682.4707708891825387691653959271316841203938550259E-322281828 -> 4.4044229717875712564501250487656381488610014101800171587304845682331303152175308286052744146824707708891825387691653959271316841203938550259E-322281735 +precision: 258 +minmag_eq26 minmag_eq +Infinity -> Infinity +precision: 274 +minmag_eq27 minmag_eq -57633439789778082954233171819722280311760412347313388446001225042913647092583121644052964198994817170972653510415165097485932235E-209605179 -> -5.7633439789778082954233171819722280311760412347313388446001225042913647092583121644052964198994817170972653510415165097485932235E-209605052 +precision: 268 +minmag_eq28 minmag_eq +648659878740172788172033363550088366124354836327107621198068711401394100260736914508076504738359695136691308991848600870161554971876628216885500380512276693760491626840696851291159406951866298e+298514678 -> 6.48659878740172788172033363550088366124354836327107621198068711401394100260736914508076504738359695136691308991848600870161554971876628216885500380512276693760491626840696851291159406951866298E+298514869 +precision: 215 +minmag_eq29 minmag_eq 10527875519891878494355247130312580307005266118983521633233713716866640102103267264766033140E-373245060 -> 1.0527875519891878494355247130312580307005266118983521633233713716866640102103267264766033140E-373244969 +precision: 173 +minmag_eq30 minmag_eq +8.7464815 -> 8.7464815 +precision: 8 +minmag_eq31 minmag_eq +41063.3 -> 41063.3 +precision: 5 +minmag_eq32 minmag_eq +97.319 -> 97.319 +precision: 20 +minmag_eq33 minmag_eq 900187890. -> 900187890 +precision: 113 +minmag_eq34 minmag_eq 621221205479054 -> 621221205479054 +precision: 148 +minmag_eq35 minmag_eq 2491744786568440110529787.979582136671160462624636895284012141845571757822357136783705060859135921715880619643317864560400E-192914947 -> 2.491744786568440110529787979582136671160462624636895284012141845571757822357136783705060859135921715880619643317864560400E-192914923 +precision: 15 +minmag_eq36 minmag_eq -5090132183444 -> -5090132183444 +precision: 235 +minmag_eq37 minmag_eq -78967481285800961903871150379917690267738513857.4229308621676062412565716216819254e-62633844 -> -7.89674812858009619038711503799176902677385138574229308621676062412565716216819254E-62633798 +precision: 236 +minmag_eq38 minmag_eq -8437622739824750677325147861405090437280983451995121523873385334710670693194406072011196358982106767307444370174272 -> -8437622739824750677325147861405090437280983451995121523873385334710670693194406072011196358982106767307444370174272 +precision: 174 +minmag_eq39 minmag_eq -2317370392208895054530748964706673970875229786520568323565481983465 -> -2317370392208895054530748964706673970875229786520568323565481983465 +precision: 275 +minmag_eq40 minmag_eq -.77570094549933764821339384447379292618387125523381156374968302091264059996330443251829461159963396397333455627727508311496714114381944342966670732405994535449684774433627539559861425889328016039338954597385074939659572899980965152240416335946529 -> -0.77570094549933764821339384447379292618387125523381156374968302091264059996330443251829461159963396397333455627727508311496714114381944342966670732405994535449684774433627539559861425889328016039338954597385074939659572899980965152240416335946529 +precision: 185 +minmag_eq41 minmag_eq -.6647793984536 -> -0.6647793984536 +precision: 291 +minmag_eq42 minmag_eq -8645840166911672951616525436292875247197735491905399232.84770283905161276257468136998932278185665079012215117 -> -8645840166911672951616525436292875247197735491905399232.84770283905161276257468136998932278185665079012215117 +precision: 5 +minmag_eq43 minmag_eq -206.6 -> -206.6 +precision: 78 +minmag_eq44 minmag_eq -694868970998506357864191846909018061585793432e-185909994 -> -6.94868970998506357864191846909018061585793432E-185909950 +precision: 192 +minmag_eq45 minmag_eq -571031894586 -> -571031894586 +precision: 29 +minmag_eq46 minmag_eq -922839610.513803 -> -922839610.513803 +precision: 71 +minmag_eq47 minmag_eq 8243587202350714301.144958543298042762147962433e303156223 -> 8.243587202350714301144958543298042762147962433E+303156241 +precision: 46 +minmag_eq48 minmag_eq -Infinity -> -Infinity +precision: 2 +minmag_eq49 minmag_eq -Infinity -> -Infinity +precision: 33 +minmag_eq50 minmag_eq 90.7 -> 90.7 +precision: 113 +minmag_eq51 minmag_eq +Inf -> Infinity +precision: 148 +minmag_eq52 minmag_eq -87006499231222464013994752661901524407154702810629375219619656799461232362262617473230974899677576493023288220527966 -> -87006499231222464013994752661901524407154702810629375219619656799461232362262617473230974899677576493023288220527966 +precision: 59 +minmag_eq53 minmag_eq +12659984 -> 12659984 +precision: 285 +minmag_eq54 minmag_eq -866645322920881282475124283041498927256469183513767256675684484090833800721081527385121118722295634876015971297445189435957882434146792844587586417018030736748032975680915052687662832089299609895246500801379402660271731513823117196441459773927300984373706990145503347861578835486841384E-151960562 -> -8.66645322920881282475124283041498927256469183513767256675684484090833800721081527385121118722295634876015971297445189435957882434146792844587586417018030736748032975680915052687662832089299609895246500801379402660271731513823117196441459773927300984373706990145503347861578835486841384E-151960278 +precision: 230 +minmag_eq55 minmag_eq -7567220192780481464251424848337660615968089.755937140422306E156125807 -> -7.567220192780481464251424848337660615968089755937140422306E+156125849 +precision: 292 +minmag_eq56 minmag_eq 7764751561962887556190204970281573784478568712641114139524123917904546866163126079056138175410147317965014623162239049552630606989340148132711914751251318755884344153442902700380825403498091434381827681180101785343633893406391894643581072254881540141053001337834680366459264E+174524065 -> 7.764751561962887556190204970281573784478568712641114139524123917904546866163126079056138175410147317965014623162239049552630606989340148132711914751251318755884344153442902700380825403498091434381827681180101785343633893406391894643581072254881540141053001337834680366459264E+174524338 +precision: 91 +minmag_eq57 minmag_eq +Infinity -> Infinity +precision: 13 +minmag_eq58 minmag_eq +687165563 -> 687165563 +precision: 79 +minmag_eq59 minmag_eq 268119756605910178341226072431311858392143123 -> 268119756605910178341226072431311858392143123 +precision: 247 +minmag_eq60 minmag_eq -922561169824518123126321971902959165679211335955927675241709594982958282764575172947051767611886676375672143459016078317456923012547761247923529251284889526981405548784670675506814.25654273313210424684251252285056880555704 -> -922561169824518123126321971902959165679211335955927675241709594982958282764575172947051767611886676375672143459016078317456923012547761247923529251284889526981405548784670675506814.25654273313210424684251252285056880555704 +precision: 116 +minmag_eq61 minmag_eq 9999197914235967670842873e-94535512 -> 9.999197914235967670842873E-94535488 +precision: 233 +minmag_eq62 minmag_eq +.257847035807878790609338297119763567215190742752192714925e322964357 -> 2.57847035807878790609338297119763567215190742752192714925E+322964356 +precision: 24 +minmag_eq63 minmag_eq +8773.2 -> 8773.2 +precision: 214 +minmag_eq64 minmag_eq -Infinity -> -Infinity +precision: 83 +minmag_eq65 minmag_eq 6569898991187779E-135486606 -> 6.569898991187779E-135486591 +precision: 67 +minmag_eq66 minmag_eq -4306602578084019062231151114268158542727046093603034629 -> -4306602578084019062231151114268158542727046093603034629 +precision: 68 +minmag_eq67 minmag_eq -sNaN -> -NaN Invalid_operation +precision: 57 +minmag_eq68 minmag_eq -Infinity -> -Infinity +precision: 186 +minmag_eq69 minmag_eq +9270202144847981944455985866034353174533344916452 -> 9270202144847981944455985866034353174533344916452 +precision: 49 +minmag_eq70 minmag_eq -5604616837.1499730135861 -> -5604616837.1499730135861 +precision: 153 +minmag_eq71 minmag_eq -471089252123754055089940736638429327897872868248612126407176314082646728643601168864224076415043442340257.12E-236388301 -> -4.7108925212375405508994073663842932789787286824861212640717631408264672864360116886422407641504344234025712E-236388197 +precision: 2 +minmag_eq72 minmag_eq -Inf -> -Infinity +precision: 34 +minmag_eq73 minmag_eq .380767468994339365769615632 -> 0.380767468994339365769615632 +precision: 112 +minmag_eq74 minmag_eq +4327956 -> 4327956 +precision: 46 +minmag_eq75 minmag_eq -652167036866475 -> -652167036866475 +precision: 106 +minmag_eq76 minmag_eq -909769895141409627386991197786530867268697990916089465308996738973808351746 -> -909769895141409627386991197786530867268697990916089465308996738973808351746 +precision: 285 +minmag_eq77 minmag_eq -6010301972852581097211276922531582652416067889761104928728920607041152941611577587949924475919550111031988516589102049405325292650484013801937698724565035027656244920704321697433347870077594589784496882218450911208317117040034208837312793368779678391053341211898902.401e-233699943 -> -6.010301972852581097211276922531582652416067889761104928728920607041152941611577587949924475919550111031988516589102049405325292650484013801937698724565035027656244920704321697433347870077594589784496882218450911208317117040034208837312793368779678391053341211898902401E-233699679 +precision: 162 +minmag_eq78 minmag_eq +73794090944792747016405182986704467515296328626672673537829504191759525218498005851815258737717417582416053595917920083265459053 -> 73794090944792747016405182986704467515296328626672673537829504191759525218498005851815258737717417582416053595917920083265459053 +precision: 279 +minmag_eq79 minmag_eq -773531952645105341074759866619882793277748890374116238014575789850918754490578915791528759413104940875347460754637966486208305956396017899889238631218470465959808784112679104291786642538252120202514876426825269299913189082773646320485097442672553765 -> -773531952645105341074759866619882793277748890374116238014575789850918754490578915791528759413104940875347460754637966486208305956396017899889238631218470465959808784112679104291786642538252120202514876426825269299913189082773646320485097442672553765 +precision: 22 +minmag_eq80 minmag_eq -13912 -> -13912 +precision: 19 +minmag_eq81 minmag_eq 44365305351714366e165233083 -> 4.4365305351714366E+165233099 +precision: 37 +minmag_eq82 minmag_eq NaN -> NaN +precision: 16 +minmag_eq83 minmag_eq -.81414E-193726306 -> -8.1414E-193726307 +precision: 75 +minmag_eq84 minmag_eq -124100283128303991040113233482454097520e355294831 -> -1.24100283128303991040113233482454097520E+355294869 +precision: 144 +minmag_eq85 minmag_eq 216913172340126890362401717091665795724902052366431865733499315 -> 216913172340126890362401717091665795724902052366431865733499315 +precision: 197 +minmag_eq86 minmag_eq sNaN -> NaN Invalid_operation +precision: 46 +minmag_eq87 minmag_eq -2804904855187272225014E+86511985 -> -2.804904855187272225014E+86512006 +precision: 26 +minmag_eq88 minmag_eq -737001649971147338e128494618 -> -7.37001649971147338E+128494635 +precision: 130 +minmag_eq89 minmag_eq .1196480913915386306272061942393091870882722315252941107567299874908094561816997793327 -> 0.1196480913915386306272061942393091870882722315252941107567299874908094561816997793327 +precision: 117 +minmag_eq90 minmag_eq +163783897153852726500106446624981394313511199559354418249 -> 163783897153852726500106446624981394313511199559354418249 +precision: 164 +minmag_eq91 minmag_eq +645796746134547681389408154125669154755364643751621055711382819987819149676808660104.996 -> 645796746134547681389408154125669154755364643751621055711382819987819149676808660104.996 +precision: 158 +minmag_eq92 minmag_eq -7056784853315467479953443087472781401893720913045776538466249232771032569668890e-4020239 -> -7.056784853315467479953443087472781401893720913045776538466249232771032569668890E-4020161 +precision: 265 +minmag_eq93 minmag_eq +410379929003368495195278912773958252781714746132962E297965086 -> 4.10379929003368495195278912773958252781714746132962E+297965136 +precision: 94 +minmag_eq94 minmag_eq +903209890848663454156871268696607849552213557311E+249375815 -> 9.03209890848663454156871268696607849552213557311E+249375862 +precision: 9 +minmag_eq95 minmag_eq +2009145e+90835593 -> 2.009145E+90835599 +precision: 157 +minmag_eq96 minmag_eq +823595732661955241575481545179547410e+83024492 -> 8.23595732661955241575481545179547410E+83024527 +precision: 3 +minmag_eq97 minmag_eq -Inf -> -Infinity +precision: 180 +minmag_eq98 minmag_eq -585071008625707882283089406228075046396899528902743860623317377995381368414288677477880095024169744038087280728742006273574415538612e+277181126 -> -5.85071008625707882283089406228075046396899528902743860623317377995381368414288677477880095024169744038087280728742006273574415538612E+277181257 +precision: 38 +minmag_eq99 minmag_eq +.856961587954147745564950 -> 0.856961587954147745564950 +precision: 76 +multiply_eq0 multiply_eq +16419229917556917718044035 -> 269591111085596147004142137735461565267426199081225 +precision: 21 +multiply_eq1 multiply_eq +5.27711105277744423e-348158313 -> 0E-425000020 Underflow Rounded Subnormal Clamped Inexact +precision: 278 +multiply_eq2 multiply_eq -6664806075076388444254278574457907452610852619351140118595076295885005928261948442952173366828510943.5651810811283835688616929023851440722615036023551258692569428673415952266628583588357514409494167690245906937983273700631861797209161670422021194047417670493 -> 44419640018375133959657264569994391869252583277792521563745885287478782379373822379877813758225841710455703409646847018096194059833426395490012213317757065764464876001531781992989618090898311438091986.913029698424689156300540510171524758384044321218222478889056070036790662139668 Rounded Inexact +precision: 171 +multiply_eq3 multiply_eq -37118321385762739549301918472781207996855642785071941584989875771332771087734580316212213969140254718406511687e347686222 -> Infinity Overflow Rounded Inexact +precision: 67 +multiply_eq4 multiply_eq -38084957144010564784770754863829912250917 -> 1.450463960661121355486459677321660779936809727333553250390059862263E+81 Rounded Inexact +precision: 76 +multiply_eq5 multiply_eq -.8447151778630887852239296621E-330230694 -> 0E-425000075 Underflow Rounded Subnormal Clamped Inexact +precision: 283 +multiply_eq6 multiply_eq 9841868366641824295924550794398610484890900058146686780872418000114821268572535468508453754918208216197771892838588292719763188723152 -> 96862372946305010425592056799142754400675290905395396312992265316889895284544520751815609934884196522748723384659927360633794242904631269912024570874140282660315046492133298310147702269228171305118524226305618135223344368834539571772901156870440913687722380100815104 +precision: 288 +multiply_eq7 multiply_eq +5517621488005561211381e+9592079 -> 3.0444146884900703462830262436928024163927161E+19184201 +precision: 155 +multiply_eq8 multiply_eq -8222720123898570411160862934400763645993039428631269348e+33325629 -> 6.7613126235966521133377051665297778624131824595329193902744756171052377467007191100578824808902206877724345104E+66651367 +precision: 31 +multiply_eq9 multiply_eq -786857406467766870E-375916382 -> 0E-425000030 Underflow Rounded Subnormal Clamped Inexact +precision: 98 +multiply_eq10 multiply_eq -255173697e+33805822 -> 6.5113615640647809E+67611660 +precision: 163 +multiply_eq11 multiply_eq -3224295653358592867912226530151739391001356610477361093788325988442645292919055879268067751477699800 -> 1.039608246026711525954097921835656904102238846135464249116499425471483442199453935168081050080499801355907690264535912910843181230513276378406351830748001107926565E+199 Rounded Inexact +precision: 265 +multiply_eq12 multiply_eq +.838309758527200323932574280306366768054810343032365927998589937914908134199044400830386855207436380955582018260691693307334036369E-107581381 -> 7.02763251241932916224816088035920235842253365245581459999839052727739346070076316657183665026433036289110323174932656923078689481757117703216302277782248497198572001069579991789969486159370142830529524815440924483171701226272746593934893570575344861814704161E-215162763 +precision: 234 +multiply_eq13 multiply_eq -.5323140491042792336747471718762316634175624345814365396516851466285252836363446055788309356090721920126846646125655755148326477411595658854258810293992558599837231E+278620808 -> Infinity Overflow Rounded Inexact +precision: 46 +multiply_eq14 multiply_eq -2808690174378219992617198697654.7019e-60190545 -> 7.888740495648755829891607413832069980217938975E-120381030 Rounded Inexact +precision: 285 +multiply_eq15 multiply_eq NaN -> NaN +precision: 224 +multiply_eq16 multiply_eq +16257590840112853741382274514361138770622961345141887846933056856813437238310475223516050589385343758731075367463613504830433171285315251866100915250141149768173204291267014960212402874704285661007953479442417121198282366130 -> 2.6430925992452136550432512613303017355771279419180559738999100419827318611838668954611222838891662130136958784771540680451419962276620414708581519516988419765300098142910447926766380108555736550474682125716169032553370027582E+446 Rounded Inexact +precision: 159 +multiply_eq17 multiply_eq -NaN9623175470648510492952684399616499300527860163904479887904840 -> -NaN9623175470648510492952684399616499300527860163904479887904840 +precision: 103 +multiply_eq18 multiply_eq -Infinity -> Infinity +precision: 174 +multiply_eq19 multiply_eq -3951E+180113994 -> 1.5610401E+360227995 +precision: 256 +multiply_eq20 multiply_eq +880116.798802676300818 -> 774605579534.670596057135125422868427469124 +precision: 137 +multiply_eq21 multiply_eq 737787096656999871151824892236574478863952734991893609725652786013503688405865010715538290084740808753590878 -> 5.4432979999356527045060695538098496974858560095551934006335532408162961339717731226574259669538882771354473722836908806101370323930529498E+215 Rounded Inexact +precision: 146 +multiply_eq22 multiply_eq +34742652057044588183237637884723391156905162381525005249421.65338520887526455780661436705079613644755613227159531416884820305048E+19100019 -> 1.2070518719568645547211600136570969424789735298396426307835201179141432289613163239651191635254045653489602115712286793214298094220897870222266684E+38200155 Rounded Inexact +precision: 58 +multiply_eq23 multiply_eq NaN -> NaN +precision: 166 +multiply_eq24 multiply_eq 15228001915691695459421892392713972287707870437027660363965520055556775864199922718488077864112198155248463116357629526872573314740680572503761472028 -> 2.318920423443099467868252069069294668745765557768068694776531568016996335339122499476554881493848945075635598775959452236332923223586335972249200109301871728911279333E+296 Rounded Inexact +precision: 104 +multiply_eq25 multiply_eq -47486327776923.986E-208892737 -> 2.254951325737462510289724022128196E-417785447 +precision: 69 +multiply_eq26 multiply_eq +.769901612640434347322691855695000893701172388426474929E-145786405 -> 5.92748493146341417177972840988347441676568827054603166775255262969640E-291572811 Rounded Inexact +precision: 242 +multiply_eq27 multiply_eq -Infinity -> Infinity +precision: 180 +multiply_eq28 multiply_eq 917889603974165594925849461948899542301069659110461452163672030156175113623209252832831477637311754377003382359607462576712576301974833108761518978013296662356E108824664 -> 8.42521325083850552314492160469312233304478538487659675017667634487691940305422354171007899622672274910305192612413101459411014252090495664057007819187425211405584817699123877123473E+217649645 Rounded Inexact +precision: 159 +multiply_eq29 multiply_eq +Infinity -> Infinity +precision: 51 +multiply_eq30 multiply_eq -554035887727838e293390741 -> Infinity Overflow Rounded Inexact +precision: 181 +multiply_eq31 multiply_eq 7903945132162441126797761249898776835087243243.3973341558949527231638953925112 -> 62472348652234348930805906678946671664946238459969135750783923597534878804040704949286434323.08007540852395157906236098492533394472896619568160031304212544 +precision: 108 +multiply_eq32 multiply_eq .1902528946430918434248828133132101806309710485979570251072978823037 -> 0.0361961639200754050523247727670139227163699237175682963851444692294044451488019386635259766155021016978621565 Rounded Inexact +precision: 253 +multiply_eq33 multiply_eq -84522968139734182734622300153173860895400239299225865206204938261502191109218398874550751814596065104979252921158094007876016481764762786916837056792587689789492393128429713263250677187491238743527032320464837815582204520792742074469582089296E287711602 -> Infinity Overflow Rounded Inexact +precision: 287 +multiply_eq34 multiply_eq -.924018461606422460695946 -> 0.853810117389499619063950224554738171178660834916 +precision: 75 +multiply_eq35 multiply_eq .7042095351108433032404 -> 0.49591106934103004707785839230124326914019216 +precision: 118 +multiply_eq36 multiply_eq -234487610613587019048547324395033553178 -> 54984439531269207623925702083454604623340324464850612714058699480435753899684 +precision: 94 +multiply_eq37 multiply_eq -9930065407265266098105690502011158763928950088536257532285904666806373920 -> 9.860619899256629505796873707054316095749098631775419860635925523772595660811912018250355233755E+145 Rounded Inexact +precision: 49 +multiply_eq38 multiply_eq 7556498145715421797176057790512916931 -> 5.710066422620060799201872221272193114604138350058E+73 Rounded Inexact +precision: 5 +multiply_eq39 multiply_eq .7190 -> 0.51696 Rounded Inexact +precision: 130 +multiply_eq40 multiply_eq +32189410213939877846510382459916914809206525167835153129299079910396824979060948353923029434594 -> 1.036158129921296932472750873497932195432233208042584735321010226286305347931674882016823639964585878662124430563963341185340122381E+189 Rounded Inexact +precision: 125 +multiply_eq41 multiply_eq +1502887313124081185844508822556692 -> 2258670275949320048990811140954620796701965297456130294583553982864 +precision: 5 +multiply_eq42 multiply_eq -28055 -> 7.8708E+8 Rounded Inexact +precision: 211 +multiply_eq43 multiply_eq 1059854516807298982505840201080351093495236751452256836 -> 1123291596796833201393771114133681253642489576023280862220587682630955461442903860167627909360895917708730896 +precision: 166 +multiply_eq44 multiply_eq -7304134603848592782617778041454886851362.6158484556670020045641680222985409910859328400060359753667100673029063068221475308541032471 -> 53350382311138439424469248741839398527069877468492364165880016783496043301456243.72147815549295470643348720828461470562657838924087614409996772594689571657781773118716 Rounded Inexact +precision: 195 +multiply_eq45 multiply_eq -71963353363023980021730116712297529666845048457730009088784882506550485660635997232491234823E-145722234 -> 5.178724227251454775323834190214040046884011536913859914050628294972747964251950788209334138848321699966573872720343745716820391587701665410123563182798127047244786159621331523327841329E-291444285 +precision: 298 +multiply_eq46 multiply_eq -30818343608043702524568140989632564886081076479242706518456175826890107103157983175708E385509233 -> Infinity Overflow Rounded Inexact +precision: 157 +multiply_eq47 multiply_eq -Infinity -> Infinity +precision: 288 +multiply_eq48 multiply_eq Inf -> Infinity +precision: 224 +multiply_eq49 multiply_eq -84787222720728123285551670193787966122922900430723999147189762747052273641068302138973575224465411278935671694780581551507237310290385490182736882946803412673313081 -> 7.1888731366943553007599054010963342472929370133928560173062718656716870454249508028496134238385994956739895193086874330861632484897970971903993755958273592913923397248724933629866695928266500014440238764048855089403843134422E+327 Rounded Inexact +precision: 61 +multiply_eq50 multiply_eq -4188677796396623450290310940559590.27 -> 1.754502168202607329536518054263585391133254952915625695491025E+67 Rounded Inexact +precision: 43 +multiply_eq51 multiply_eq +.5543102731444506856916717008181774600089801E73351313 -> 3.072598789134755270624414692105906698750600E+146702625 Rounded Inexact +precision: 91 +multiply_eq52 multiply_eq +30280027948404201765010023854429232944970 -> 916880092556139572186432280691364932868092790568683662197028979549807619048300900 +precision: 194 +multiply_eq53 multiply_eq -45275504288351776978909081855122322656836776839354313735646021309088249369996574476557995903822552510114687 -> 2.0498712885645601471781593892303578290485916434010092258112807502489658328848002839061551453011003654385765641164538006522275149260782074041728143006903305594236350929401132489478110648273394442E+213 Rounded Inexact +precision: 7 +multiply_eq54 multiply_eq +397057 -> 1.576543E+11 Rounded Inexact +precision: 244 +multiply_eq55 multiply_eq 9274101833222445281491647096053759498502676047675777003442525056043915491896695516816309077888131329807921790703259430992449838273176265659603949776365387559013398 -> 8.600896481297992027469725251866049417732039929087002611865095722747519554545916991742788147428919688925857275664634059415163368109651242476482536861791554025316057116060996026001469573462094069980172796805041526625019044898672082465091285877748E+325 Rounded Inexact +precision: 169 +multiply_eq56 multiply_eq -Inf -> Infinity +precision: 275 +multiply_eq57 multiply_eq -96605972554224867499146596624770450937142149115782314567503512200655059234885346933655256705268.33916555276829580287754340303467757430197636938461119616198883164274995285350047020638773370215476653743655848407321482750638385203 -> 9332713933147648369817736029302338884201285509424752109641258366104124910134631396940385659236128188969800243569838362907233450036590826530179923585699121310972661335466501506999029623862276.4451410318334237777338154269507819975784318299628363233536039881847205093877603886482 Rounded Inexact +precision: 16 +multiply_eq58 multiply_eq 452089533E-294823806 -> 0E-425000015 Underflow Rounded Subnormal Clamped Inexact +precision: 89 +multiply_eq59 multiply_eq -325068625224217046022086392.1750 -> 105669611105162478754195969997946425971039838819307901.23062500 +precision: 215 +multiply_eq60 multiply_eq +96155278391114591368580211541180092272347840058552249589283434267236080497800 -> 9245837562472748678775084993493438952122151779683494312392792166264443345039556131154756423614594203530820279319554459970405584703149610226641495804840000 +precision: 119 +multiply_eq61 multiply_eq +Inf -> Infinity +precision: 153 +multiply_eq62 multiply_eq +41263179030909377905825366338800215063256514765079822798185569704434308703352578579454212603880655741287108536176902301668539134418909204337999 -> 1.70264994373687938756882411048210114796506523629942601587113843662126094732766713843832771353627151201948835694416521568662147925373880833527879662168710E+285 Rounded Inexact +precision: 240 +multiply_eq63 multiply_eq 786 -> 617796 +precision: 286 +multiply_eq64 multiply_eq -869970374645017737415601370701781845794646838186435982730150655303040609761712383901548920156257560446962866471769318887524329056835332568847992.35977551918865e46048962 -> 7.568484527599925209282169173894252701258058294434344214073193450124520536915830522716130342582675408575434052771980398158634458055214386150684893487626563599453160175585788042383609277123411617565916668317112501552521911259207619778301467795898716489283434225884556759895286570799005658E+92098211 Rounded Inexact +precision: 261 +multiply_eq65 multiply_eq 357131092727320121777104034194592593096960701711645955011434993534748701416091466781991379675187815209362834564577538689518973984506330200624834605498850530e-318708829 -> 0E-425000260 Underflow Rounded Subnormal Clamped Inexact +precision: 81 +multiply_eq66 multiply_eq -570790775562895863872734468580575535833.10750241915182428020E+210296576 -> 3.25802109467692158085276970945671733573123759135832619474436436651529319927113500E+420593229 Rounded Inexact +precision: 268 +multiply_eq67 multiply_eq -438812349236686277153020082229007516560349813822 -> 192556277842619523563183943246724124722457450694631284236151256948593241030869286154350062247684 +precision: 289 +multiply_eq68 multiply_eq +409855414936301217922498119478465349821413983279681798107606807992981087773273734859890949552400387844884873578398715733265542525300991251669913868334669157375411598926122744332009140864686700389409298819957291.796008194050411001e-144450574 -> 1.679814611526076434773193440292890738182207134665123443772745095315005255967151734914927781138842512942000497531182690475445311009050536404389062814798592547839775271682952702925914357931001254945351634242558936754689181177972651457739485421353204696454869267819249643277951051880854687337E-288900729 Rounded Inexact +precision: 265 +multiply_eq69 multiply_eq -827994621603.81711087315577190329 -> 685575093404848281106062.2882452589947095085365918301945891128241 +precision: 291 +multiply_eq70 multiply_eq -357691448027818300433728985577 -> 127943171992237440326852955620237697259074151129653474022929 +precision: 49 +multiply_eq71 multiply_eq -5365640556666458506565507995310933.37917E-377689767 -> 0E-425000048 Underflow Rounded Subnormal Clamped Inexact +precision: 230 +multiply_eq72 multiply_eq 294895083879892334502000368021910215.37686531840023133394184285059732628802730379079276055015008336264811295076047744104846944822614193950407840671609482614161939512667E-189988200 -> 8.6963110496528735802272844703083624791536603285834018470397672908320550012661279329659216443108881224255109005004600637387994272056045104545076281577281904120711672329453373188068431411551929709645008778205198439684174201083860511E-379976330 Rounded Inexact +precision: 60 +multiply_eq73 multiply_eq Inf -> Infinity +precision: 16 +multiply_eq74 multiply_eq -34 -> 1156 +precision: 153 +multiply_eq75 multiply_eq +120415123045492984958486146531190873.2569958908389519111664124059811896026604e+273785964 -> Infinity Overflow Rounded Inexact +precision: 286 +multiply_eq76 multiply_eq -.868082417719782572691362256176544619769189140540305901941373981733153312824026789266693023769642706965531347578067761410988450164383232627464216388945370984306744692034414960340748951698031045428774345314313314697420688 -> 0.7535670839542230803508788366788122548221014967467429876661531500186845329227264047783464998658652228988711473317952181327981408192299552945021159760967109633923635038362748155933848586426939466592843706347783294709011333679599350187473134129083038395461496828538233941736682419113175580 Rounded Inexact +precision: 214 +multiply_eq77 multiply_eq -2874233321797786166974837.3847433837913171249423308798989362882324248774185110765488091334076841985 -> 8261217188132736209940357527788264570836071998511.42329873762719090824275668052771246202308318346747617615534976169425758501514426701146342682097242700324869556575855507655848419937620670658740225 +precision: 189 +multiply_eq78 multiply_eq -10927053989556746406552170451544603483861351599505829125417030438748104447163504271585224966049540770696123427887230561035073495653398364080836E-249006495 -> 0E-425000188 Underflow Rounded Subnormal Clamped Inexact +precision: 269 +multiply_eq79 multiply_eq -211199368306250714139984615773096950339091457937206723107686346847481273196206752715031466908126722315646305960044731608832271221106552181702328363851029535948672842877992781863632513527271718277807618771566918e+326510380 -> Infinity Overflow Rounded Inexact +precision: 150 +multiply_eq80 multiply_eq 4729123968490026567418890498093883343425100.9420488027326986340941357089 -> 22364613509346857794115011937782824501810440802072254215310602330810218707091258918298.61046127764731219337278786799274364225216481689010553921 +precision: 240 +multiply_eq81 multiply_eq +84475226313115800156754553308774317304992427341126048712701904406471577793172715136104 -> 7136063860652132062866856942380171225080917203706869150092200437417949255930088287003967414778100353555372769165124579446478955809647384357138222642881068395183423244298816 +precision: 72 +multiply_eq82 multiply_eq -36587533428 -> 1338647602345017431184 +precision: 253 +multiply_eq83 multiply_eq -818146546758629854583419085943906855308293573229539227195520719987672503003962322027236962 -> 669363771973070907015332444336228675153661153691374698288920602595824669486872228153512610120196067297616241447917968794523209159030261700078526815913384861159299228233380098989444 +precision: 272 +multiply_eq84 multiply_eq -28985768513438101931028178763607791e+249244182 -> Infinity Overflow Rounded Inexact +precision: 206 +multiply_eq85 multiply_eq Infinity -> Infinity +precision: 51 +multiply_eq86 multiply_eq +61275585163163618547306473514092243.24929140270 -> 3.75469733708811738102847509517694894443056781083884E+69 Rounded Inexact +precision: 105 +multiply_eq87 multiply_eq +.5778623779669754835231667539281210957382238455E-207501150 -> 3.3392492786964763275388453571941842546634674232102520608670593582913859622611609106480787025E-415002301 +precision: 111 +multiply_eq88 multiply_eq -97 -> 9409 +precision: 187 +multiply_eq89 multiply_eq +418889543445049653436501847e-73928086 -> 1.75468449607602141078718470440922242272952044434411409E-147856119 +precision: 53 +multiply_eq90 multiply_eq -94053805494401104514605783774313224131269335846365817 -> 8.8461183279786353960351562232249914931580034309204177E+105 Rounded Inexact +precision: 263 +multiply_eq91 multiply_eq +8536473205314094627866.319644269595197214315565487355299745503166828240219127233944110249778740156152813769894527750650168 -> 72871374785045492774329223365799544215243163.042261904305010864953078263322785858124586521408469998913698378809558489128651780357229627108292226103843314057086122939753966787609125733913468421900494345381188323535396484641809633136746718428224 +precision: 128 +multiply_eq92 multiply_eq +606431192633665067013393869970388020674407379693467588831818 -> 367758791399089388236916066216359768184732844348287425892619231673886023647820221354056923532649395130259388921889185124 +precision: 28 +multiply_eq93 multiply_eq -sNaN -> -NaN Invalid_operation +precision: 159 +multiply_eq94 multiply_eq +7038e+145971838 -> 4.9533444E+291943683 +precision: 79 +multiply_eq95 multiply_eq -7911783194701843441934946.12214080162935851781433146143988047963583255 -> 62596313319966507933932627357885223354593013743755.43822065110458111172470632858 Rounded Inexact +precision: 299 +multiply_eq96 multiply_eq -9973688148027574124095535366989471368151775403034404762849710875675287972118252454560123210601380677241893836202 -> 99474455274105701333367004951235078034762047391549878426089520240042184324688999969089345576435779826886310948794396630214854845178646757249498988999017482397962504855628450474767971263786842401275783853084365500520005784804 +precision: 180 +multiply_eq97 multiply_eq +81801677027774888001560230139773788507555659311748447309567723831230434168248349695216 -> 6691514364556393834801055287378095035898077165438527302060495411740155755641810503574595947921410834573995020154919147074886788757138373950175728519833982651689880093286656 +precision: 132 +multiply_eq98 multiply_eq 65399967908124902413118521928282124293357153749862840977240444 -> 4277155802383767124083181785232893242629935813631999488389252775540482143717414891601303931490381175050054356400805389317136 +precision: 264 +multiply_eq99 multiply_eq -241845742537868444605345823970698749479269980699517014409201743907113200891868130511408364496283486712322131145797091662081107989318049205966920514011840772E112041248 -> 5.84893631836929504572339796317640198610511667502864490518097490015304130565212482296488155709910789356409214814173995989671481084026440744440376207422647173079767391807114052109953745128651230160767048839225752283768040207328287596491128961347077199440117140544755E+224082806 Rounded Inexact +precision: 34 +nexttoward_eq0 nexttoward_eq -78134744367691536194708531 -> -78134744367691536194708531 +precision: 256 +nexttoward_eq1 nexttoward_eq -.9716552985528761115565754826047804734852935214517890583367718424757677131519850854315753227631657578593783950729321560575735862125122766647317598700566398E386704677 -> -9.716552985528761115565754826047804734852935214517890583367718424757677131519850854315753227631657578593783950729321560575735862125122766647317598700566398E+386704676 +precision: 200 +nexttoward_eq2 nexttoward_eq -.8537008685979470753640770866065301180915124288689 -> -0.8537008685979470753640770866065301180915124288689 +precision: 245 +nexttoward_eq3 nexttoward_eq -70290856388430953986183693893632096272240142430364811680157491852638650363369282531040423127137037103226200281827507764285490036733854749310969803490008848644296653728537977753030133988103839922172 -> -70290856388430953986183693893632096272240142430364811680157491852638650363369282531040423127137037103226200281827507764285490036733854749310969803490008848644296653728537977753030133988103839922172 +precision: 41 +nexttoward_eq4 nexttoward_eq 5 -> 5 +precision: 265 +nexttoward_eq5 nexttoward_eq -670048103273024993560 -> -670048103273024993560 +precision: 211 +nexttoward_eq6 nexttoward_eq +Inf -> Infinity +precision: 36 +nexttoward_eq7 nexttoward_eq 95162 -> 95162 +precision: 161 +nexttoward_eq8 nexttoward_eq -246067591343327950585287005374149807583030609440906178671582218107467143227620126306301146967696144130792347460438406350001843970985084537586470277956856478 -> -246067591343327950585287005374149807583030609440906178671582218107467143227620126306301146967696144130792347460438406350001843970985084537586470277956856478 +precision: 60 +nexttoward_eq9 nexttoward_eq 2256567779.194553368241504820461e-236173066 -> 2.256567779194553368241504820461E-236173057 +precision: 191 +nexttoward_eq10 nexttoward_eq -555416516071327802148724 -> -555416516071327802148724 +precision: 50 +nexttoward_eq11 nexttoward_eq +204.93313839928299475208531778849150495e-786551 -> 2.0493313839928299475208531778849150495E-786549 +precision: 254 +nexttoward_eq12 nexttoward_eq +.25185222903231758246444908048712578178055568438098657322373463503203228444856773958738700757890928951302852682940928001153208743807197816617706408810114874241417541776E-325990973 -> 2.5185222903231758246444908048712578178055568438098657322373463503203228444856773958738700757890928951302852682940928001153208743807197816617706408810114874241417541776E-325990974 +precision: 289 +nexttoward_eq13 nexttoward_eq 466504746661211308664655369345266147509416722150730739590003867929e+150099755 -> 4.66504746661211308664655369345266147509416722150730739590003867929E+150099820 +precision: 2 +nexttoward_eq14 nexttoward_eq -46. -> -46 +precision: 170 +nexttoward_eq15 nexttoward_eq -.880287274016281490821485199588724656290123356406655586361922094219744229099338778939071354644395326450 -> -0.880287274016281490821485199588724656290123356406655586361922094219744229099338778939071354644395326450 +precision: 123 +nexttoward_eq16 nexttoward_eq -7755518556156542781944.72909051583979652829537981930826565394329261640010931751883746580848494628016827710e-214241731 -> -7.75551855615654278194472909051583979652829537981930826565394329261640010931751883746580848494628016827710E-214241710 +precision: 273 +nexttoward_eq17 nexttoward_eq +675870716020308098920940626.5905401618175781636735478602298927548148261389818741408386339796650079841877769121967878566862001106082901291309486226038086498777150426712670811473366388944191823078587018736243671227E+165953299 -> 6.758707160203080989209406265905401618175781636735478602298927548148261389818741408386339796650079841877769121967878566862001106082901291309486226038086498777150426712670811473366388944191823078587018736243671227E+165953325 +precision: 125 +nexttoward_eq18 nexttoward_eq -.772209259374873667605820518160576014686572293990530484286858175869642299646634594203118090712492719275823297209e+100016979 -> -7.72209259374873667605820518160576014686572293990530484286858175869642299646634594203118090712492719275823297209E+100016978 +precision: 17 +nexttoward_eq19 nexttoward_eq 0.91663531398223e-290245841 -> 9.1663531398223E-290245842 +precision: 58 +nexttoward_eq20 nexttoward_eq +.6972510146105181572261254949746 -> 0.6972510146105181572261254949746 +precision: 127 +nexttoward_eq21 nexttoward_eq -.54416660557967051167152342708131579034 -> -0.54416660557967051167152342708131579034 +precision: 208 +nexttoward_eq22 nexttoward_eq 768307133108546267946608073298177950348726364690426748864410710114898040031452626684884841194770 -> 768307133108546267946608073298177950348726364690426748864410710114898040031452626684884841194770 +precision: 92 +nexttoward_eq23 nexttoward_eq -72360942067781663e+412246278 -> -7.2360942067781663E+412246294 +precision: 138 +nexttoward_eq24 nexttoward_eq 7023828439200843350154.2883417350819279143631191e309322786 -> 7.0238284392008433501542883417350819279143631191E+309322807 +precision: 19 +nexttoward_eq25 nexttoward_eq -6427899.1259668E+358582054 -> -6.4278991259668E+358582060 +precision: 208 +nexttoward_eq26 nexttoward_eq -375940732543421101732412182743113735263916910174657168486093711611188446108490727154858815404179248564289457522363819790685461700189109988063465398563728947002206E-123571103 -> -3.75940732543421101732412182743113735263916910174657168486093711611188446108490727154858815404179248564289457522363819790685461700189109988063465398563728947002206E-123570942 +precision: 141 +nexttoward_eq27 nexttoward_eq 24471020614132723154947612492088802206192592493948105468079198 -> 24471020614132723154947612492088802206192592493948105468079198 +precision: 32 +nexttoward_eq28 nexttoward_eq sNaN -> NaN Invalid_operation +precision: 282 +nexttoward_eq29 nexttoward_eq -83225377621647694793313841279E+221505954 -> -8.3225377621647694793313841279E+221505982 +precision: 270 +nexttoward_eq30 nexttoward_eq 28371563699025255201042622314638890053399716782017357129749170759361172839338510950151941821416522048059253131118767504833403972675231336439864831427055611268441444997804311073128488574331274799404000719807739 -> 28371563699025255201042622314638890053399716782017357129749170759361172839338510950151941821416522048059253131118767504833403972675231336439864831427055611268441444997804311073128488574331274799404000719807739 +precision: 223 +nexttoward_eq31 nexttoward_eq -NaN2386089134646771667726627496583057393688330987595628520354639158596045593150321850054681059077 -> -NaN2386089134646771667726627496583057393688330987595628520354639158596045593150321850054681059077 +precision: 87 +nexttoward_eq32 nexttoward_eq .687263005588869965603560051224263089585704631903622770 -> 0.687263005588869965603560051224263089585704631903622770 +precision: 217 +nexttoward_eq33 nexttoward_eq 37608255854020097232006021936815870242993382480302641622575823910564487966012903262767063065350985901191120.2772249319987671043259987491314742190441943082011452403361138217501516219711005302396287144E-383993353 -> 3.76082558540200972320060219368158702429933824803026416225758239105644879660129032627670630653509859011911202772249319987671043259987491314742190441943082011452403361138217501516219711005302396287144E-383993247 +precision: 227 +nexttoward_eq34 nexttoward_eq +94498e-161153743 -> 9.4498E-161153739 +precision: 220 +nexttoward_eq35 nexttoward_eq -1583376316134617581029966230498989279592089008670078727078315651098548428761977512.16508124992212223664954726095e23371325 -> -1.58337631613461758102996623049898927959208900867007872707831565109854842876197751216508124992212223664954726095E+23371406 +precision: 230 +nexttoward_eq36 nexttoward_eq +.9450997161354574525124853935572252378087010777258953966101e-166876616 -> 9.450997161354574525124853935572252378087010777258953966101E-166876617 +precision: 223 +nexttoward_eq37 nexttoward_eq -3669485176500259696884089987.290312778980763e-52056152 -> -3.669485176500259696884089987290312778980763E-52056125 +precision: 5 +nexttoward_eq38 nexttoward_eq +39.9 -> 39.9 +precision: 133 +nexttoward_eq39 nexttoward_eq +12276252031793972024827768671410009811452103003565748359180832913507630337444738238812248136623042442643397861120439976454159183408e350258099 -> 1.2276252031793972024827768671410009811452103003565748359180832913507630337444738238812248136623042442643397861120439976454159183408E+350258229 +precision: 207 +nexttoward_eq40 nexttoward_eq -.35426827680338493697818467897407267880542926060849190098323004082957027865141517569225900567015646130254907205879 -> -0.35426827680338493697818467897407267880542926060849190098323004082957027865141517569225900567015646130254907205879 +precision: 111 +nexttoward_eq41 nexttoward_eq 1680296007584820539921529745284029064727300211749166125809186955166025092140471744405445841074E-305372601 -> 1.680296007584820539921529745284029064727300211749166125809186955166025092140471744405445841074E-305372508 +precision: 182 +nexttoward_eq42 nexttoward_eq -7002049194173484004980130464092758169 -> -7002049194173484004980130464092758169 +precision: 137 +nexttoward_eq43 nexttoward_eq 730750944135984618307828771224063793554232406955753833395691223061832728055225478833664679173894E78737494 -> 7.30750944135984618307828771224063793554232406955753833395691223061832728055225478833664679173894E+78737589 +precision: 235 +nexttoward_eq44 nexttoward_eq -63062388118.905 -> -63062388118.905 +precision: 193 +nexttoward_eq45 nexttoward_eq -2411198856727843218446102367961538416469216161045186262398488905789777100813949029067104481510904362932902604535606670065757897919357511396649309530914379856909867e+5400281 -> -2.411198856727843218446102367961538416469216161045186262398488905789777100813949029067104481510904362932902604535606670065757897919357511396649309530914379856909867E+5400443 +precision: 286 +nexttoward_eq46 nexttoward_eq 70233464446472103615534035744113472378672336776354651673284716360790041611079174297114909713212339265117345155268273924548721393729077355399 -> 70233464446472103615534035744113472378672336776354651673284716360790041611079174297114909713212339265117345155268273924548721393729077355399 +precision: 268 +nexttoward_eq47 nexttoward_eq -sNaN -> -NaN Invalid_operation +precision: 194 +nexttoward_eq48 nexttoward_eq -6703309699806729580254991549360189380863651473993832004628594195600629625.599703949647311447E-321858435 -> -6.703309699806729580254991549360189380863651473993832004628594195600629625599703949647311447E-321858363 +precision: 211 +nexttoward_eq49 nexttoward_eq -Inf -> -Infinity +precision: 132 +nexttoward_eq50 nexttoward_eq Inf -> Infinity +precision: 232 +nexttoward_eq51 nexttoward_eq -180771923615393858999551.90657208381253319887065007786868149112540133421911549575862 -> -180771923615393858999551.90657208381253319887065007786868149112540133421911549575862 +precision: 34 +nexttoward_eq52 nexttoward_eq +37491.12273200 -> 37491.12273200 +precision: 204 +nexttoward_eq53 nexttoward_eq -.536355506726664898658325244898408964259667956331591402152152059571211386496557 -> -0.536355506726664898658325244898408964259667956331591402152152059571211386496557 +precision: 290 +nexttoward_eq54 nexttoward_eq -2742153674879382244640699040554824911177836727743027552124484428863127018189532419468211654361240874514202768000877717436521406900828518781727374074067519565738502978338647966290841515644168699260575383041924581042119619 -> -2742153674879382244640699040554824911177836727743027552124484428863127018189532419468211654361240874514202768000877717436521406900828518781727374074067519565738502978338647966290841515644168699260575383041924581042119619 +precision: 99 +nexttoward_eq55 nexttoward_eq -NaN5698654648330873367577 -> -NaN5698654648330873367577 +precision: 26 +nexttoward_eq56 nexttoward_eq 453.88 -> 453.88 +precision: 232 +nexttoward_eq57 nexttoward_eq -Inf -> -Infinity +precision: 114 +nexttoward_eq58 nexttoward_eq -77384594586952864760886889793958516409271295355680109275499E-384296133 -> -7.7384594586952864760886889793958516409271295355680109275499E-384296075 +precision: 10 +nexttoward_eq59 nexttoward_eq .4357057E-318522993 -> 4.357057E-318522994 +precision: 197 +nexttoward_eq60 nexttoward_eq 90146747989737103108883137428599337992649638032245790490092336.22084971697541900082317728771 -> 90146747989737103108883137428599337992649638032245790490092336.22084971697541900082317728771 +precision: 64 +nexttoward_eq61 nexttoward_eq -791082881927345758638810914851 -> -791082881927345758638810914851 +precision: 163 +nexttoward_eq62 nexttoward_eq -405813636434317598512349823336224821271202269488769694869389390755889587 -> -405813636434317598512349823336224821271202269488769694869389390755889587 +precision: 81 +nexttoward_eq63 nexttoward_eq -.731424573872721179307819 -> -0.731424573872721179307819 +precision: 253 +nexttoward_eq64 nexttoward_eq -85876020361388696709189621603541692639049856939053808741873138116477748006134254888091925052315466124907915898589039456576744223007716433670154806181958402824090985620909274098968456608085413994860073477279002 -> -85876020361388696709189621603541692639049856939053808741873138116477748006134254888091925052315466124907915898589039456576744223007716433670154806181958402824090985620909274098968456608085413994860073477279002 +precision: 57 +nexttoward_eq65 nexttoward_eq -91758358216459340989057475155529741 -> -91758358216459340989057475155529741 +precision: 33 +nexttoward_eq66 nexttoward_eq 5773099399335637167097935173882 -> 5773099399335637167097935173882 +precision: 192 +nexttoward_eq67 nexttoward_eq +974245016900493005401944617238774728303261098181046294214511095134706547662075408841920135617828142E44430867 -> 9.74245016900493005401944617238774728303261098181046294214511095134706547662075408841920135617828142E+44430965 +precision: 253 +nexttoward_eq68 nexttoward_eq -47367913390932087163354546495104036208899633712073347534314607224712526066209598972308372751505622035988479330092891340649055561592311089990794720197e42910478 -> -4.7367913390932087163354546495104036208899633712073347534314607224712526066209598972308372751505622035988479330092891340649055561592311089990794720197E+42910626 +precision: 120 +nexttoward_eq69 nexttoward_eq .349644826051775504856160027113688415216836635135102842609036527586818977245257989 -> 0.349644826051775504856160027113688415216836635135102842609036527586818977245257989 +precision: 94 +nexttoward_eq70 nexttoward_eq -850418546517602534053114597710149620397620521194876461125636453 -> -850418546517602534053114597710149620397620521194876461125636453 +precision: 115 +nexttoward_eq71 nexttoward_eq +589797863906967629635846069743879585985668826349e+186694155 -> 5.89797863906967629635846069743879585985668826349E+186694202 +precision: 68 +nexttoward_eq72 nexttoward_eq -2374771639668965339459261814 -> -2374771639668965339459261814 +precision: 60 +nexttoward_eq73 nexttoward_eq .326727255038186517622546708656150848549720908 -> 0.326727255038186517622546708656150848549720908 +precision: 194 +nexttoward_eq74 nexttoward_eq +Inf -> Infinity +precision: 81 +nexttoward_eq75 nexttoward_eq -902517334527801812433915023717013632.911547827782180627721470697927546734 -> -902517334527801812433915023717013632.911547827782180627721470697927546734 +precision: 226 +nexttoward_eq76 nexttoward_eq -4571205709492999505211046879338420857482957356789567636581349601724526031679638497117312848471373415371619376766903529637842e-79539834 -> -4.571205709492999505211046879338420857482957356789567636581349601724526031679638497117312848471373415371619376766903529637842E-79539711 +precision: 90 +nexttoward_eq77 nexttoward_eq -.5088167e-10893082 -> -5.088167E-10893083 +precision: 211 +nexttoward_eq78 nexttoward_eq -4157694825814771496610032825993626455654159126218605859355538026793134576245506882259276619655841269919160631786117751786619758573815191228176211762594225796728405521 -> -4157694825814771496610032825993626455654159126218605859355538026793134576245506882259276619655841269919160631786117751786619758573815191228176211762594225796728405521 +precision: 226 +nexttoward_eq79 nexttoward_eq +4234.2301325852902111139082640578066512227722918 -> 4234.2301325852902111139082640578066512227722918 +precision: 131 +nexttoward_eq80 nexttoward_eq +74555291306.12236089385948325703866864491942073721610184416035230E+156736621 -> 7.455529130612236089385948325703866864491942073721610184416035230E+156736631 +precision: 270 +nexttoward_eq81 nexttoward_eq -71798062633101742741999181726094034610435635228100033944755210731739562598436187637209717195954134649873275479331477261382885373331093926848857139575018154045976570579259300548621433398254478288384900498029311991868637077754459872290435926067 -> -71798062633101742741999181726094034610435635228100033944755210731739562598436187637209717195954134649873275479331477261382885373331093926848857139575018154045976570579259300548621433398254478288384900498029311991868637077754459872290435926067 +precision: 129 +nexttoward_eq82 nexttoward_eq -NaN -> -NaN +precision: 194 +nexttoward_eq83 nexttoward_eq -Inf -> -Infinity +precision: 247 +nexttoward_eq84 nexttoward_eq 40102902149552782881429358580956050743674745059487 -> 40102902149552782881429358580956050743674745059487 +precision: 82 +nexttoward_eq85 nexttoward_eq -15930896220890339033451243599939294540185825746058575137834996921404777153E-173038624 -> -1.5930896220890339033451243599939294540185825746058575137834996921404777153E-173038551 +precision: 264 +nexttoward_eq86 nexttoward_eq -5469849101174582100619294969316525863921623755187731895217144672853338914881894323820637166489688121504355844814257449383393433609876445158370487061931.1877903696573370850326930 -> -5469849101174582100619294969316525863921623755187731895217144672853338914881894323820637166489688121504355844814257449383393433609876445158370487061931.1877903696573370850326930 +precision: 8 +nexttoward_eq87 nexttoward_eq -5.826 -> -5.826 +precision: 111 +nexttoward_eq88 nexttoward_eq 4229236701227937556331137041031361644246908814604574172918275 -> 4229236701227937556331137041031361644246908814604574172918275 +precision: 235 +nexttoward_eq89 nexttoward_eq +.1480421070101469094741162069930076546581804284369644265392577971843232052458158 -> 0.1480421070101469094741162069930076546581804284369644265392577971843232052458158 +precision: 162 +nexttoward_eq90 nexttoward_eq -5219029708764979502935813628711639739624607821693646295950135605909615656448632458329734999100404034569230321797340082832429475621601696713 -> -5219029708764979502935813628711639739624607821693646295950135605909615656448632458329734999100404034569230321797340082832429475621601696713 +precision: 13 +nexttoward_eq91 nexttoward_eq +.42E88089193 -> 4.2E+88089192 +precision: 274 +nexttoward_eq92 nexttoward_eq 38275669014358860837996346295674356432510462492708056066233041450162979822771617.18150924318112876254573379145568425969358350766612543733406493510748131616962909278278096504752610 -> 38275669014358860837996346295674356432510462492708056066233041450162979822771617.18150924318112876254573379145568425969358350766612543733406493510748131616962909278278096504752610 +precision: 144 +nexttoward_eq93 nexttoward_eq Infinity -> Infinity +precision: 180 +nexttoward_eq94 nexttoward_eq -69501447191835722092149891969121305062554877082317174330500885715083514605008514337070323 -> -69501447191835722092149891969121305062554877082317174330500885715083514605008514337070323 +precision: 7 +nexttoward_eq95 nexttoward_eq -.3506 -> -0.3506 +precision: 291 +nexttoward_eq96 nexttoward_eq -21500340084017455088211276817343582223562176860373321572280572648021869729139625492970499021E-69477832 -> -2.1500340084017455088211276817343582223562176860373321572280572648021869729139625492970499021E-69477741 +precision: 134 +nexttoward_eq97 nexttoward_eq -8282293266655201005765837716244293151507233460430231057785589716874355679092841231550393389602050252e-365370549 -> -8.282293266655201005765837716244293151507233460430231057785589716874355679092841231550393389602050252E-365370450 +precision: 225 +nexttoward_eq98 nexttoward_eq -5354825967650968357768330247506153701588652344589235343640120283721749038287488 -> -5354825967650968357768330247506153701588652344589235343640120283721749038287488 +precision: 63 +nexttoward_eq99 nexttoward_eq -.50587390541575477830305491441E-242877962 -> -5.0587390541575477830305491441E-242877963 +precision: 36 +power_eq0 power_eq -362429158631567479322670636751195 -> -0E-425000035 Underflow Rounded Subnormal Clamped Inexact +precision: 182 +power_eq1 power_eq Inf -> Infinity +precision: 24 +power_eq2 power_eq 336328251898.680440 -> Infinity Overflow Rounded Inexact +precision: 266 +power_eq3 power_eq -Infinity -> NaN Invalid_operation +precision: 249 +power_eq4 power_eq -84148398145563222567972356500153049060301808865655786681709084908640618066628209148190757861103363818833545205916267335277521478237644477014453263486119418709238.73617191403374801288722828575195496082540384620181527e111739739 -> 0E-425000248 Underflow Rounded Subnormal Clamped Inexact +precision: 86 +power_eq5 power_eq -96894973e-104779155 -> NaN Invalid_operation +precision: 43 +power_eq6 power_eq +811348122101671807916378 -> Infinity Overflow Rounded Inexact +precision: 292 +power_eq7 power_eq 53817533037343519747465332046533250780143278180064156998505947836067376175E-288610517 -> 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 80 +power_eq8 power_eq 1765634103742659654793240404818053332869884780233871683068871088533846682e-95475983 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 241 +power_eq9 power_eq -7688667600.4148 -> NaN Invalid_operation +precision: 64 +power_eq10 power_eq -sNaN -> -NaN Invalid_operation +precision: 35 +power_eq11 power_eq -55947032460443.621489307663775485805e+203039834 -> 0E-425000034 Underflow Rounded Subnormal Clamped Inexact +precision: 264 +power_eq12 power_eq +.6302729162804254304212747762501792615338058155857169658848203615324386785087192325386882075848184152741052846519616755963481203110553407436335337664963 -> 0.747563923370209568431142758200770602941652056211712412234599628978714909159050057152343990926248768132411011287051209654890464381800059571594148012412029694391362089442377433072020298391180950596903523553870314556668128175261638628566516305100943642828881348140074 Rounded Inexact +precision: 270 +power_eq13 power_eq -94942461976979685795579473419613216971054577257518719888291326549177224244887041478847900320541775894897231041017722975742137594778504523137041630275302612409348105987406511499678939149458569231177372438985477420767221170055823405805767724242097E-373608178 -> NaN Invalid_operation +precision: 136 +power_eq14 power_eq -10320078013400118 -> 0E-425000135 Underflow Rounded Subnormal Clamped Inexact +precision: 51 +power_eq15 power_eq +.30184065923463985955179681854266823098862 -> 0.696587649756521381251433776384454491557556311517727 Rounded Inexact +precision: 211 +power_eq16 power_eq -525338921683739736490582483132948984202790665376110323601659474129892514523290494503515205005638100490708290921903946386424425280123e-170758465 -> NaN Invalid_operation +precision: 224 +power_eq17 power_eq -646746209836261797477940103476570791348361208967438329900241534505436798073795989031572428 -> 0E-425000223 Underflow Rounded Subnormal Clamped Inexact +precision: 96 +power_eq18 power_eq -.645300907286e-220601334 -> NaN Invalid_operation +precision: 188 +power_eq19 power_eq -Inf -> NaN Invalid_operation +precision: 106 +power_eq20 power_eq -3663240987582367577886398514613731702483866652446941115635573791149545934054602730471.11641988 -> NaN Invalid_operation +precision: 247 +power_eq21 power_eq -488785302819283812385321.655881216348345989192129590859127321051665604182037547377547980482112158452391460908228971 -> NaN Invalid_operation +precision: 276 +power_eq22 power_eq 809675716902293177921418662285213497928073105525829612803544674808011480451348e218151256 -> Infinity Overflow Rounded Inexact +precision: 28 +power_eq23 power_eq -6248633922746878680889354 -> 0E-425000027 Underflow Rounded Subnormal Clamped Inexact +precision: 238 +power_eq24 power_eq -1614388618270226993686.40709176831708861390337724386228227237316101111618604608140410991408961442976638530084060726966968986302379217727396622631077157133525750616874020328736 -> NaN Invalid_operation +precision: 201 +power_eq25 power_eq -82636933206574875204854301055127131926424682626404278252847728377770928210549737101108800894549951893717280567 -> -0E-425000200 Underflow Rounded Subnormal Clamped Inexact +precision: 118 +power_eq26 power_eq -Inf -> NaN Invalid_operation +precision: 80 +power_eq27 power_eq 9178.369e+395285776 -> Infinity Overflow Rounded Inexact +precision: 116 +power_eq28 power_eq -63942.639 -> NaN Invalid_operation +precision: 27 +power_eq29 power_eq -7084704957075 -> -0E-425000026 Underflow Rounded Subnormal Clamped Inexact +precision: 215 +power_eq30 power_eq +947556.3619384524807202260E-369312200 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 226 +power_eq31 power_eq 7746853910633777740534281162440156284189896229141911247918482240083757040587011515345857257831273116288193903723544589819776591001955484373273801323959673534294617935101567810121294150351893788232912006013616 -> Infinity Overflow Rounded Inexact +precision: 224 +power_eq32 power_eq -61971951038050811001678937367477737096187202571352991814082377666779711113283061950090867569187416563136672404032645048631009136874434852842872913641279696056002704765717398667351620636673213989487.959764049373000140002 -> NaN Invalid_operation +precision: 38 +power_eq33 power_eq 9953781420830927411 -> Infinity Overflow Rounded Inexact +precision: 289 +power_eq34 power_eq -8024212522590172944741555.6757732305367379438367781361522367738465 -> NaN Invalid_operation +precision: 109 +power_eq35 power_eq 4960986022345427488469912397884662 -> Infinity Overflow Rounded Inexact +precision: 136 +power_eq36 power_eq 6868044517077647560217354096937951848583318074269698081426902694890142526067332991230019598323795875220348576 -> Infinity Overflow Rounded Inexact +precision: 5 +power_eq37 power_eq +8363. -> 5.1786E+32802 Rounded Inexact +precision: 168 +power_eq38 power_eq -.42913933632491 -> NaN Invalid_operation +precision: 167 +power_eq39 power_eq +.441980445298355222892e-39157041 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 166 +power_eq40 power_eq 1062795436509.382005383 -> Infinity Overflow Rounded Inexact +precision: 215 +power_eq41 power_eq 385201.55438157611614416e+407597746 -> Infinity Overflow Rounded Inexact +precision: 130 +power_eq42 power_eq -614947914649136270527999685021198289254338565927 -> -0E-425000129 Underflow Rounded Subnormal Clamped Inexact +precision: 193 +power_eq43 power_eq +Infinity -> Infinity +precision: 299 +power_eq44 power_eq +98281235535742014523207127191858293883053132876153636.4774606 -> Infinity Overflow Rounded Inexact +precision: 94 +power_eq45 power_eq -557994841532689189203642.24742232402628996802e-337538473 -> NaN Invalid_operation +precision: 43 +power_eq46 power_eq -481.751468610E8173587 -> 0E-425000042 Underflow Rounded Subnormal Clamped Inexact +precision: 105 +power_eq47 power_eq -.68225952093769506095028114003381731997477752756768746714318295 -> NaN Invalid_operation +precision: 207 +power_eq48 power_eq -6426273160092084195699730168209478619977624180370830772749255686020854532521221997654977938238514026859656168480758073523183E+355179861 -> 0E-425000206 Underflow Rounded Subnormal Clamped Inexact +precision: 113 +power_eq49 power_eq -124455889531136908341892905703077046995573210949680941403805789266 -> 0E-425000112 Underflow Rounded Subnormal Clamped Inexact +precision: 52 +power_eq50 power_eq 858258771.4469756966951870E-2354480 -> 1.000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 150 +power_eq51 power_eq +6468465433963.39062983529295319863396794950631136344876579254 -> Infinity Overflow Rounded Inexact +precision: 292 +power_eq52 power_eq -.749188367127585181056545333056228447445847725060006364599672456558040630550009838439063085918403729106169813259299022362325 -> NaN Invalid_operation +precision: 76 +power_eq53 power_eq -4252446136.387206935383 -> NaN Invalid_operation +precision: 23 +power_eq54 power_eq Inf -> Infinity +precision: 278 +power_eq55 power_eq -189203989688114997249296813664864978647604091461309592270474709397479773702904004330576920548003557768670934839256121811707573.5666221741738813494344300292428156380052429260801522982821740869413255616336057072787988 -> NaN Invalid_operation +precision: 162 +power_eq56 power_eq 864016252063876082648653973042182781941479265337756514124654115716878264549505228.8617898946195005816473871887459149561634425121063354 -> Infinity Overflow Rounded Inexact +precision: 39 +power_eq57 power_eq 71524701242299606856477947129663e-344024142 -> 1.00000000000000000000000000000000000000 Rounded Inexact +precision: 282 +power_eq58 power_eq -46386995328710669012824195985058198399976013576994886401291363022427791619608681160948065757196688865481781317007553127108313935471925280739004994496311204364246474450627742832748149241245118782760105047195247921190690973 -> -0E-425000281 Underflow Rounded Subnormal Clamped Inexact +precision: 208 +power_eq59 power_eq 9990057113161832293663359984002792445701294382606492455282402330220701671749812829194014987228100424598772925894051139581470450406688533329071090462468738320698866532524246522291 -> Infinity Overflow Rounded Inexact +precision: 262 +power_eq60 power_eq -529583657531387298997148579887511426101990832277861182505975986493636094040294257044950804147765458024347235286552028991558064390280025377814707657491618909781279915692281660701.295404275661240968806045948871676817591794 -> NaN Invalid_operation +precision: 76 +power_eq61 power_eq 458040718355789904374260920828382011143543106 -> Infinity Overflow Rounded Inexact +precision: 131 +power_eq62 power_eq +9843580022 -> Infinity Overflow Rounded Inexact +precision: 26 +power_eq63 power_eq +64339362182596551924736e-73800091 -> 1.0000000000000000000000000 Rounded Inexact +precision: 217 +power_eq64 power_eq +22222777114312231723267742251440087315952965328923503856501.99237838007582820384651274407935117 -> Infinity Overflow Rounded Inexact +precision: 26 +power_eq65 power_eq -80785500910143210230678632E316722316 -> 0E-425000025 Underflow Rounded Subnormal Clamped Inexact +precision: 11 +power_eq66 power_eq 717156 -> 2.8373376802E+4199388 Rounded Inexact +precision: 220 +power_eq67 power_eq -70849125829842132928349475801239873987335215797973192063932100794933617579828301641076489413182064720177135748641197808466156097953341534822946973745570647195236565573444474493791532 -> 0E-425000219 Underflow Rounded Subnormal Clamped Inexact +precision: 8 +power_eq68 power_eq -50178e-395411401 -> NaN Invalid_operation +precision: 99 +power_eq69 power_eq +1.56899942010995333560226965336967016741799925540741002315042952171966626797322414809721 -> 2.02736541336651896017607024055007722391834603978115506886055562227915484297277873483652658809892840 Rounded Inexact +precision: 144 +power_eq70 power_eq +2235.319607 -> 6.99100985149423923551679946658669320898053559536480468516629394350510547973555114211625522034865583517457915522520135014200955432364177364666121E+7486 Rounded Inexact +precision: 83 +power_eq71 power_eq +92889340341466473427642188192310916 -> Infinity Overflow Rounded Inexact +precision: 164 +power_eq72 power_eq +Infinity -> Infinity +precision: 95 +power_eq73 power_eq .29E+406102454 -> Infinity Overflow Rounded Inexact +precision: 151 +power_eq74 power_eq Inf -> Infinity +precision: 149 +power_eq75 power_eq -312501715771797056323693052854464661893964546965923092988270402739760883857346005440345657724923840468525460664271393051921707967135 -> -0E-425000148 Underflow Rounded Subnormal Clamped Inexact +precision: 84 +power_eq76 power_eq -1041082330465960398675002731965116868E-292534699 -> NaN Invalid_operation +precision: 79 +power_eq77 power_eq -76329043381040339104865157406496790088121010109080110e-148953360 -> NaN Invalid_operation +precision: 113 +power_eq78 power_eq -28872132833606322881390721714017884367320865292169251609509133923.61731518045381138595046559654721070041706314756 -> NaN Invalid_operation +precision: 240 +power_eq79 power_eq 78043510277411598061431863359174008907638492457321459123426890640339880188815887108410370221271884058776462235170455752475803143383511566E-110795004 -> 1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 94 +power_eq80 power_eq -8336946879.93129621022762347949912851 -> NaN Invalid_operation +precision: 225 +power_eq81 power_eq 3287278458263 -> Infinity Overflow Rounded Inexact +precision: 185 +power_eq82 power_eq +21285032370392956545830231140691727083632.212230981204347930752284947324577742651323907282870084991838940675457669537104808839793897618371701373147513371679586214449482622E-76639533 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 40 +power_eq83 power_eq 237 -> 6.536691733735010979201401374972481645578E+562 Rounded Inexact +precision: 275 +power_eq84 power_eq -561650490627777050357556698794902260529882582572433041185785311130776380381168332820247983805818125568329510407488407245060662244385043372378006798225445680169574299496230735682254433945074843062147114533330179623823713091130e+183736831 -> 0E-425000274 Underflow Rounded Subnormal Clamped Inexact +precision: 177 +power_eq85 power_eq -.8895076390129096320992421937362732054439E-113846363 -> NaN Invalid_operation +precision: 100 +power_eq86 power_eq -Infinity -> NaN Invalid_operation +precision: 129 +power_eq87 power_eq +488031399213940017990273147.461194199649184545575958035444040702105446238440920404159356601038376 -> Infinity Overflow Rounded Inexact +precision: 230 +power_eq88 power_eq -2216513.7 -> NaN Invalid_operation +precision: 261 +power_eq89 power_eq 4406905470108275471817759256150927651075467258186882189468768.57346004480914039036137898855304846021884747521627854302872633896760499987283945352645486174165493226035711091040156221145018362787360876 -> Infinity Overflow Rounded Inexact +precision: 216 +power_eq90 power_eq .414851898851124312898581033460349927926858946996600574248877518263743273027105367570072116394840349312 -> 0.694196180155363032046662671043094604564297923084684698676006928759392240568388191727106381242778131770854032954814135133799631509910068536843195346417829931885644564658619813573400226692342128231577981131028578316068 Rounded Inexact +precision: 200 +power_eq91 power_eq +.2411983775347998185262137949927100768461090511515828619222298742118902667394019232482894360351107 -> 0.70962630033086715313348013736373556269497866351224587428690094234906829768843145224483959303898824955211759929288708339580522537790496009103198593207087198182343415234146897579363345533498120609830484 Rounded Inexact +precision: 185 +power_eq92 power_eq -544576857633923754363120488732775.4614727812147693634146223959575085654632536429396791526334512722 -> NaN Invalid_operation +precision: 7 +power_eq93 power_eq -795 -> -1.614852E-2306 Rounded Inexact +precision: 165 +power_eq94 power_eq -26969200337161089684886514719133231865043981663694117406871833142976471147135094925485802413599641522886963482403019356260104405377513e296074619 -> 0E-425000164 Underflow Rounded Subnormal Clamped Inexact +precision: 37 +power_eq95 power_eq 9750398705839207111297424212 -> Infinity Overflow Rounded Inexact +precision: 185 +power_eq96 power_eq -97249147.888816223439395644146 -> NaN Invalid_operation +precision: 217 +power_eq97 power_eq -740224832379721210047010683914507011287418493682712878709012798725681444.245154703994169461347 -> NaN Invalid_operation +precision: 262 +power_eq98 power_eq +57843250191089471286540010894256588908697072726050945329408200344447468966452266743574363981784000300041145488916127068273122224761859432617052712825758665920155664640329688232661148137625978648897929803382542108676952862441 -> Infinity Overflow Rounded Inexact +precision: 289 +power_eq99 power_eq -746575366888433451617578285843158580344519395226425074225881100805991586 -> 0E-425000288 Underflow Rounded Subnormal Clamped Inexact +precision: 91 +quantize_eq0 quantize_eq 290548.8E-1423999 -> 2.905488E-1423994 +precision: 44 +quantize_eq1 quantize_eq +448658.9 -> 448658.9 +precision: 172 +quantize_eq2 quantize_eq -817350403193055 -> -817350403193055 +precision: 244 +quantize_eq3 quantize_eq -Inf -> -Infinity +precision: 2 +quantize_eq4 quantize_eq 32e+69609967 -> 3.2E+69609968 +precision: 10 +quantize_eq5 quantize_eq +32263516e-26480836 -> 3.2263516E-26480829 +precision: 15 +quantize_eq6 quantize_eq +5037 -> 5037 +precision: 209 +quantize_eq7 quantize_eq -7110403823184112878559966189490296022439025870992698565813432699367444117759994118799284821249245701646312303E-57210732 -> -7.110403823184112878559966189490296022439025870992698565813432699367444117759994118799284821249245701646312303E-57210624 +precision: 65 +quantize_eq8 quantize_eq -5186499923298793145080500717723571890228108501e+162460105 -> -5.186499923298793145080500717723571890228108501E+162460150 +precision: 111 +quantize_eq9 quantize_eq -9.2 -> -9.2 +precision: 259 +quantize_eq10 quantize_eq +9257121.113589624748942605425565850754466273753250228279028856152878106989447501950674164300105107897483978307244536 -> 9257121.113589624748942605425565850754466273753250228279028856152878106989447501950674164300105107897483978307244536 +precision: 188 +quantize_eq11 quantize_eq -70559695905893215599571846001514545747928179442544295173868393954.4580823107774609377068010040232999511413831272806254735134555500879908242697072175558570432895061443439123431e+310037880 -> -7.05596959058932155995718460015145457479281794425442951738683939544580823107774609377068010040232999511413831272806254735134555500879908242697072175558570432895061443439123431E+310037944 +precision: 69 +quantize_eq12 quantize_eq -51883582238430845134659126296011415258707432931040996796542941962646 -> -51883582238430845134659126296011415258707432931040996796542941962646 +precision: 92 +quantize_eq13 quantize_eq -981899 -> -981899 +precision: 57 +quantize_eq14 quantize_eq +17536.7223004796422372E77707598 -> 1.75367223004796422372E+77707602 +precision: 193 +quantize_eq15 quantize_eq -8490302843606946392952930760712102510257728717487323000598215037990407864613031204696740005201409124274702686586196749357167824674002 -> -8490302843606946392952930760712102510257728717487323000598215037990407864613031204696740005201409124274702686586196749357167824674002 +precision: 264 +quantize_eq16 quantize_eq +381637552007995294.96394288831521584185220620036368925619408732281416433376040138625591822377458404761200291477e108446804 -> 3.8163755200799529496394288831521584185220620036368925619408732281416433376040138625591822377458404761200291477E+108446821 +precision: 60 +quantize_eq17 quantize_eq +213210180862012996638951529383495534.501239729617 -> 213210180862012996638951529383495534.501239729617 +precision: 170 +quantize_eq18 quantize_eq 827189983197259024088437859212300905507741990105054602377853307574907295886063673334297256548221067386309742664250174624370396962525172556829 -> 827189983197259024088437859212300905507741990105054602377853307574907295886063673334297256548221067386309742664250174624370396962525172556829 +precision: 56 +quantize_eq19 quantize_eq Inf -> Infinity +precision: 218 +quantize_eq20 quantize_eq +68250709883801207250964395068723791548 -> 68250709883801207250964395068723791548 +precision: 225 +quantize_eq21 quantize_eq -Infinity -> -Infinity +precision: 278 +quantize_eq22 quantize_eq +Inf -> Infinity +precision: 148 +quantize_eq23 quantize_eq 27919236890712487919250219194087963193722704772793231879401933900356412060593917244829241820836023255352025560401776396450980660 -> 27919236890712487919250219194087963193722704772793231879401933900356412060593917244829241820836023255352025560401776396450980660 +precision: 132 +quantize_eq24 quantize_eq 898437048931164322050895007405972769526838620886035922465166877145702493523935255651139600514 -> 898437048931164322050895007405972769526838620886035922465166877145702493523935255651139600514 +precision: 139 +quantize_eq25 quantize_eq 17412 -> 17412 +precision: 67 +quantize_eq26 quantize_eq +867243424633396550443015593215676999 -> 867243424633396550443015593215676999 +precision: 176 +quantize_eq27 quantize_eq -80120978957606977020539E-282230056 -> -8.0120978957606977020539E-282230034 +precision: 19 +quantize_eq28 quantize_eq -95542.4E+76419170 -> -9.55424E+76419174 +precision: 175 +quantize_eq29 quantize_eq -2978941608891203266725236855879475011965976301737778658631009733041851274136588549807827845331811445296522795865182509841821182888 -> -2978941608891203266725236855879475011965976301737778658631009733041851274136588549807827845331811445296522795865182509841821182888 +precision: 48 +quantize_eq30 quantize_eq Infinity -> Infinity +precision: 67 +quantize_eq31 quantize_eq 8465122901462739863179190680617120915966139118 -> 8465122901462739863179190680617120915966139118 +precision: 256 +quantize_eq32 quantize_eq +7081079532214410002686780339791718594116093372143539480542373957104211077383709200285271820899501962.18723672986351461682261971721667876237991E+389633177 -> 7.08107953221441000268678033979171859411609337214353948054237395710421107738370920028527182089950196218723672986351461682261971721667876237991E+389633276 +precision: 300 +quantize_eq33 quantize_eq -.295625642533485547554661278791138705733987026103059801914244424613869528559802038284705063217446258211430460565211581659309295263691124087618563179517772081759244589862864506735875255421193924473722271563519559612563274475412905110680335327644682436747623541 -> -0.295625642533485547554661278791138705733987026103059801914244424613869528559802038284705063217446258211430460565211581659309295263691124087618563179517772081759244589862864506735875255421193924473722271563519559612563274475412905110680335327644682436747623541 +precision: 222 +quantize_eq34 quantize_eq -8592981399190121374843148326814236994640255685216980769310460163941611630012410326314.83319393315955090224043726675936495978434716197710305222884611896426668895919819612 -> -8592981399190121374843148326814236994640255685216980769310460163941611630012410326314.83319393315955090224043726675936495978434716197710305222884611896426668895919819612 +precision: 197 +quantize_eq35 quantize_eq -75384980585512904024903701e321225803 -> -7.5384980585512904024903701E+321225828 +precision: 219 +quantize_eq36 quantize_eq -81525227625848252203415017991558387737618358076960364771269846232922220257257375456297493038456.772814904867541382782077606549742492930513714322692676326494063582998042541276 -> -81525227625848252203415017991558387737618358076960364771269846232922220257257375456297493038456.772814904867541382782077606549742492930513714322692676326494063582998042541276 +precision: 115 +quantize_eq37 quantize_eq -Inf -> -Infinity +precision: 269 +quantize_eq38 quantize_eq -3554595657727e-414560976 -> -3.554595657727E-414560964 +precision: 154 +quantize_eq39 quantize_eq 46168224090265929928726.46566082349236072049364565338434224619764824468223781162339659895041814086469317932529162318326009343844800685647248756805250611e+252046439 -> 4.616822409026592992872646566082349236072049364565338434224619764824468223781162339659895041814086469317932529162318326009343844800685647248756805250611E+252046461 +precision: 56 +quantize_eq40 quantize_eq -.1583e32320641 -> -1.583E+32320640 +precision: 53 +quantize_eq41 quantize_eq +sNaN -> NaN Invalid_operation +precision: 40 +quantize_eq42 quantize_eq -79625642943719361401339459726419 -> -79625642943719361401339459726419 +precision: 58 +quantize_eq43 quantize_eq 5791069763096633158 -> 5791069763096633158 +precision: 260 +quantize_eq44 quantize_eq 7760821663097539129401711393960938069306252420460185059 -> 7760821663097539129401711393960938069306252420460185059 +precision: 180 +quantize_eq45 quantize_eq -642181420078075504488075848907596167527537520458728451095988889150607360440904623640199990122225343532653257820529630016422399917940818470695093451005e+92541312 -> -6.42181420078075504488075848907596167527537520458728451095988889150607360440904623640199990122225343532653257820529630016422399917940818470695093451005E+92541461 +precision: 162 +quantize_eq46 quantize_eq 56E-312226813 -> 5.6E-312226812 +precision: 255 +quantize_eq47 quantize_eq 97313463012301454295898013252247275769894565492321137086370724532279401185048728272151151993856619570495E-276655768 -> 9.7313463012301454295898013252247275769894565492321137086370724532279401185048728272151151993856619570495E-276655665 +precision: 273 +quantize_eq48 quantize_eq -Infinity -> -Infinity +precision: 18 +quantize_eq49 quantize_eq 746881 -> 746881 +precision: 43 +quantize_eq50 quantize_eq sNaN -> NaN Invalid_operation +precision: 189 +quantize_eq51 quantize_eq 8984060206418449194333365704085389598788919468437229423998908913847578327559146579636282750131729159256368090630608987121305185285893106660281498862120375304523091899451 -> 8984060206418449194333365704085389598788919468437229423998908913847578327559146579636282750131729159256368090630608987121305185285893106660281498862120375304523091899451 +precision: 189 +quantize_eq52 quantize_eq +76005286894E-270142113 -> 7.6005286894E-270142103 +precision: 73 +quantize_eq53 quantize_eq -442225789279217247841545246112132 -> -442225789279217247841545246112132 +precision: 279 +quantize_eq54 quantize_eq -873119186969684637144787064261158396281514978635433975956334760185192555937425516463737937353576398977098601095927822006277434026691647994183380e+239366196 -> -8.73119186969684637144787064261158396281514978635433975956334760185192555937425516463737937353576398977098601095927822006277434026691647994183380E+239366339 +precision: 128 +quantize_eq55 quantize_eq -56695385467 -> -56695385467 +precision: 68 +quantize_eq56 quantize_eq -.418 -> -0.418 +precision: 84 +quantize_eq57 quantize_eq -5502535390345288021893754390591636093616595153498574270169 -> -5502535390345288021893754390591636093616595153498574270169 +precision: 169 +quantize_eq58 quantize_eq 85336073168919221817964620839167171778748376135317320836679.3953193164418142623329405839555859412166463745239800577525647 -> 85336073168919221817964620839167171778748376135317320836679.3953193164418142623329405839555859412166463745239800577525647 +precision: 204 +quantize_eq59 quantize_eq -.2345866662119098 -> -0.2345866662119098 +precision: 225 +quantize_eq60 quantize_eq -79653854654312886692600743023506553486019965768460326381225277010219813500608260231260086985321417663705652589150947014925072649495054229344434124785389676294124837859087329727585840601212739323 -> -79653854654312886692600743023506553486019965768460326381225277010219813500608260231260086985321417663705652589150947014925072649495054229344434124785389676294124837859087329727585840601212739323 +precision: 132 +quantize_eq61 quantize_eq +.62004820146664440148888872267749940238528462703658e-169618687 -> 6.2004820146664440148888872267749940238528462703658E-169618688 +precision: 11 +quantize_eq62 quantize_eq -.373 -> -0.373 +precision: 235 +quantize_eq63 quantize_eq -Infinity -> -Infinity +precision: 189 +quantize_eq64 quantize_eq 1101572012730753945748851934089962480689976178136800312429258608768326195254210650726774200883533940320397491882268210277989743025494490617613084189822235411665068767197613257824493001249 -> 1101572012730753945748851934089962480689976178136800312429258608768326195254210650726774200883533940320397491882268210277989743025494490617613084189822235411665068767197613257824493001249 +precision: 201 +quantize_eq65 quantize_eq -657550289254.3689081208965240655 -> -657550289254.3689081208965240655 +precision: 137 +quantize_eq66 quantize_eq .421534969074981751671607662863760112327986982775027612734990245584754 -> 0.421534969074981751671607662863760112327986982775027612734990245584754 +precision: 190 +quantize_eq67 quantize_eq +97558927737331.5611054827E+328198930 -> 9.75589277373315611054827E+328198943 +precision: 149 +quantize_eq68 quantize_eq .847525034910320202380420232472743755971510884980824473750656705870728509737665390215628836871333552e-143267263 -> 8.47525034910320202380420232472743755971510884980824473750656705870728509737665390215628836871333552E-143267264 +precision: 165 +quantize_eq69 quantize_eq +sNaN722570960055478324504603248188543 -> NaN722570960055478324504603248188543 Invalid_operation +precision: 206 +quantize_eq70 quantize_eq -.6981388298877867281880647805288436105218625997650 -> -0.6981388298877867281880647805288436105218625997650 +precision: 183 +quantize_eq71 quantize_eq -472205576406261364347325912306387892644523093430916242430469185531568436134410723488275435E+401753669 -> -4.72205576406261364347325912306387892644523093430916242430469185531568436134410723488275435E+401753758 +precision: 181 +quantize_eq72 quantize_eq .47887516418e-33315711 -> 4.7887516418E-33315712 +precision: 95 +quantize_eq73 quantize_eq -5493848330244028419095598833820407035740045960357415894560237906027069840529776e-327618667 -> -5.493848330244028419095598833820407035740045960357415894560237906027069840529776E-327618589 +precision: 29 +quantize_eq74 quantize_eq +84 -> 84 +precision: 229 +quantize_eq75 quantize_eq -355354928668150e-253573304 -> -3.55354928668150E-253573290 +precision: 297 +quantize_eq76 quantize_eq -sNaN -> -NaN Invalid_operation +precision: 7 +quantize_eq77 quantize_eq 74.160 -> 74.160 +precision: 239 +quantize_eq78 quantize_eq -832716912212611398841103935141846054730095929463051195059e-101574675 -> -8.32716912212611398841103935141846054730095929463051195059E-101574619 +precision: 147 +quantize_eq79 quantize_eq Inf -> Infinity +precision: 260 +quantize_eq80 quantize_eq Inf -> Infinity +precision: 233 +quantize_eq81 quantize_eq -96065312091573928416203623119377645877953467097495700274695560821318565497938901152871159834267148640115973613325662240776786544040013423996634697759749532992880673.779 -> -96065312091573928416203623119377645877953467097495700274695560821318565497938901152871159834267148640115973613325662240776786544040013423996634697759749532992880673.779 +precision: 146 +quantize_eq82 quantize_eq -Infinity -> -Infinity +precision: 216 +quantize_eq83 quantize_eq +661.68812974381 -> 661.68812974381 +precision: 127 +quantize_eq84 quantize_eq -158939534424733925067343631640.1362E-162145398 -> -1.589395344247339250673436316401362E-162145369 +precision: 150 +quantize_eq85 quantize_eq +Infinity -> Infinity +precision: 120 +quantize_eq86 quantize_eq 8277132368480015104593332435780392067153227933693935530303308011919268e-130623500 -> 8.277132368480015104593332435780392067153227933693935530303308011919268E-130623431 +precision: 90 +quantize_eq87 quantize_eq 795351e-29931705 -> 7.95351E-29931700 +precision: 278 +quantize_eq88 quantize_eq +8698516181841060137789032610358005286351014389903188353942331434071120204295201449446518297268E-133572772 -> 8.698516181841060137789032610358005286351014389903188353942331434071120204295201449446518297268E-133572679 +precision: 139 +quantize_eq89 quantize_eq -Inf -> -Infinity +precision: 152 +quantize_eq90 quantize_eq 6.32648220e-279816178 -> 6.32648220E-279816178 +precision: 131 +quantize_eq91 quantize_eq +2479995.4716469 -> 2479995.4716469 +precision: 224 +quantize_eq92 quantize_eq -664584248679738325573034158611231917557028904339360014283015490957188345795295420173546.7619457501319848388250378e+65584375 -> -6.645842486797383255730341586112319175570289043393600142830154909571883457952954201735467619457501319848388250378E+65584461 +precision: 29 +quantize_eq93 quantize_eq 43466. -> 43466 +precision: 149 +quantize_eq94 quantize_eq -8840149333425472810331592257345296170.1388756404577438040650971971379203393329026856787867368393723930299016139230505118091670442561290209422144 -> -8840149333425472810331592257345296170.1388756404577438040650971971379203393329026856787867368393723930299016139230505118091670442561290209422144 +precision: 142 +quantize_eq95 quantize_eq -695184463263795170192277714865251447089248895571793508163996910677.42396682340910732633643239516080034295819989969334203684655125777672157937 -> -695184463263795170192277714865251447089248895571793508163996910677.42396682340910732633643239516080034295819989969334203684655125777672157937 +precision: 111 +quantize_eq96 quantize_eq +60536206206365541015275650304551131987295639313E+158900418 -> 6.0536206206365541015275650304551131987295639313E+158900464 +precision: 193 +quantize_eq97 quantize_eq +58153113777083591013856477275365807019410976749417644125139810511571640112415670679051807726795736303887839695 -> 58153113777083591013856477275365807019410976749417644125139810511571640112415670679051807726795736303887839695 +precision: 161 +quantize_eq98 quantize_eq -4197958964e-263966418 -> -4.197958964E-263966409 +precision: 161 +quantize_eq99 quantize_eq -49736044103750520902978 -> -49736044103750520902978 +precision: 110 +remainder_eq0 remainder_eq -Inf -> NaN Invalid_operation +precision: 16 +remainder_eq1 remainder_eq sNaN460775004703274183220066311976364703831583353664689242969039224111678635108913486986092583934266 -> NaN6986092583934266 Invalid_operation +precision: 57 +remainder_eq2 remainder_eq -975534984681769723475932500908516678693056e-17495830 -> -0E-17495830 +precision: 135 +remainder_eq3 remainder_eq +11977297089104076419957660197153508631.85895636320 -> 0E-11 +precision: 226 +remainder_eq4 remainder_eq 917511712849866739046179678409197877089804750534939633061801314093861452333164960426558969900434463678797453330475203252600861226352358315357986517716731814228759606680967352499623E356949449 -> 0E+356949449 +precision: 174 +remainder_eq5 remainder_eq 3458344492050263669709423365061545310537949301960653627511283593054174521508359 -> 0 +precision: 128 +remainder_eq6 remainder_eq -858516401039691011143.e-336363137 -> -0E-336363137 +precision: 173 +remainder_eq7 remainder_eq -7255455584162 -> -0 +precision: 132 +remainder_eq8 remainder_eq 699079.915090065914566157803030258979118185005129013885092078635994E312948369 -> 0E+312948309 +precision: 237 +remainder_eq9 remainder_eq +sNaN -> NaN Invalid_operation +precision: 65 +remainder_eq10 remainder_eq -5321437270901756491141490862881674308176189 -> -0 +precision: 194 +remainder_eq11 remainder_eq -5784322374.20470188486123903878566751572960E-308319571 -> -0E-308319603 +precision: 171 +remainder_eq12 remainder_eq +858067516703710224423613996610.6297533512237212335565098014661651521527955810103863158843918 -> 0E-61 +precision: 52 +remainder_eq13 remainder_eq 641061589793255425134882 -> 0 +precision: 199 +remainder_eq14 remainder_eq 980528190474441136528292314442581300939908364007049627730020434212520789154374427565946318379049056614451716784597043358906807481040069787495294030622792124482423320439473 -> 0 +precision: 246 +remainder_eq15 remainder_eq -437146753750538666226.86724944843262549715601173476958592705435039251979006955952993888469760807155263827765 -> -0E-86 +precision: 255 +remainder_eq16 remainder_eq +Infinity -> NaN Invalid_operation +precision: 16 +remainder_eq17 remainder_eq -.16876217684E325803225 -> -0E+325803214 +precision: 91 +remainder_eq18 remainder_eq +99380629080393406921828180591.339710022002043958e+316275212 -> 0E+316275194 +precision: 64 +remainder_eq19 remainder_eq +7741759432242076336561604211630837.2686904672359269E+373567008 -> 0E+373566992 +precision: 39 +remainder_eq20 remainder_eq -.23530609365782394431955602042586174325 -> -0E-38 +precision: 54 +remainder_eq21 remainder_eq +5580649463769301037154465855.853553425 -> 0E-9 +precision: 65 +remainder_eq22 remainder_eq +848215311974760.1896 -> 0.0000 +precision: 161 +remainder_eq23 remainder_eq 71 -> 0 +precision: 284 +remainder_eq24 remainder_eq -.7072091376479685698583057329845753721934501542790734127589731946196508218831187850290352099065012324773700122366310746623178640100946190743876831029921335811958758845967599839742032141243740351 -> -0E-193 +precision: 73 +remainder_eq25 remainder_eq -4726046499902744114746912591670560820743532897606469074256899497588065e-9554964 -> -0E-9554964 +precision: 18 +remainder_eq26 remainder_eq +357.6E+67804727 -> 0E+67804726 +precision: 77 +remainder_eq27 remainder_eq -55.24905436713541297E-130078901 -> -0E-130078918 +precision: 127 +remainder_eq28 remainder_eq +Infinity -> NaN Invalid_operation +precision: 112 +remainder_eq29 remainder_eq NaN30426854998464840958400892852452426103588824455640339687801907463636142341 -> NaN30426854998464840958400892852452426103588824455640339687801907463636142341 +precision: 53 +remainder_eq30 remainder_eq -9253353344734188638867070934361717914973114450 -> -0 +precision: 37 +remainder_eq31 remainder_eq .55455578594282424624221800003080949 -> 0E-35 +precision: 8 +remainder_eq32 remainder_eq +89.35 -> 0.00 +precision: 27 +remainder_eq33 remainder_eq 3264844e+96266630 -> 0E+96266630 +precision: 102 +remainder_eq34 remainder_eq -2323414000053591731599322541525894545861646450094894881377162120133837292 -> -0 +precision: 166 +remainder_eq35 remainder_eq -.77640809450679565805484129084918602294832660098795769503530220792269916940669923295086265143e-332500918 -> -0E-332501010 +precision: 174 +remainder_eq36 remainder_eq +645677348981702821927195273471094748579708019442275160166379368053775803829883220100839284026228212 -> 0 +precision: 23 +remainder_eq37 remainder_eq 995182334027683 -> 0 +precision: 245 +remainder_eq38 remainder_eq -9372380644555712022768847328350689238489885344106398.9 -> -0.0 +precision: 199 +remainder_eq39 remainder_eq -Inf -> NaN Invalid_operation +precision: 2 +remainder_eq40 remainder_eq -77E-156487829 -> -0E-156487829 +precision: 127 +remainder_eq41 remainder_eq -59387283599480769357566503350171.71635096387731730844462170525112666 -> -0E-35 +precision: 113 +remainder_eq42 remainder_eq -48551354477143543315722383431248161932869775373358362634908759943811083068515868558 -> -0 +precision: 8 +remainder_eq43 remainder_eq 20.927e-75802171 -> 0E-75802174 +precision: 153 +remainder_eq44 remainder_eq +5815105370766934593828371504761474394599166930712722774190759491654588985260682430887013263803680811953300897479607560970456986007530528468285076155966E+272586697 -> 0E+272586697 +precision: 216 +remainder_eq45 remainder_eq Inf -> NaN Invalid_operation +precision: 197 +remainder_eq46 remainder_eq -470447226693385359736266360468463709190881728270352081504992607978062430383873076896060295781842042003705 -> -0 +precision: 2 +remainder_eq47 remainder_eq Inf -> NaN Invalid_operation +precision: 112 +remainder_eq48 remainder_eq -354375269055232670035 -> -0 +precision: 232 +remainder_eq49 remainder_eq -.9732718237088027981324527227773153536588896235566611669878790394181489671240837345321170239051670100980404441353E-278467861 -> -0E-278467973 +precision: 245 +remainder_eq50 remainder_eq 71278354209089966745282314144000e-49927244 -> 0E-49927244 +precision: 16 +remainder_eq51 remainder_eq 2454533923130428 -> 0 +precision: 253 +remainder_eq52 remainder_eq +595684290619560078145745979844632933412247260703383271015595445182021708731622226027818685374146221141351490220453613727110654886258612352261608873251794347605104321438062064077491104903296853638914980e-386089592 -> 0E-386089592 +precision: 145 +remainder_eq53 remainder_eq .566778430877492098783342686491671899833864286168021327770229484849E-171419646 -> 0E-171419712 +precision: 299 +remainder_eq54 remainder_eq -3840050308446959919687768338652332513866.620699 -> -0.000000 +precision: 192 +remainder_eq55 remainder_eq -288182183667133111742908679996431726641.98448103449165878880521944263560312851088843987 -> -0E-47 +precision: 57 +remainder_eq56 remainder_eq 19128106043228601979059.68324853474437975694278 -> 0E-23 +precision: 147 +remainder_eq57 remainder_eq +154143997202760519223936600647524167848367263290608269277044038696.18e+94606684 -> 0E+94606682 +precision: 94 +remainder_eq58 remainder_eq -9798300881913885766710055041723422429836607149112315261998070208079792625583445 -> -0 +precision: 154 +remainder_eq59 remainder_eq -6.21 -> -0.00 +precision: 96 +remainder_eq60 remainder_eq .5368889440634422411076839640469548640938155532542108110781184445879563070877358470 -> 0E-82 +precision: 253 +remainder_eq61 remainder_eq -Infinity -> NaN Invalid_operation +precision: 252 +remainder_eq62 remainder_eq +532351335430389133751565525134128756681667264663653664692205611845411869719122830484512265087578514337810100904203432E125119435 -> 0E+125119435 +precision: 21 +remainder_eq63 remainder_eq +6588.52176383E-181868784 -> 0E-181868792 +precision: 137 +remainder_eq64 remainder_eq 7803230527021687086308141479664389053923001443026964470174249340321653883771530096717540790949130492206549916021088049 -> 0 +precision: 300 +remainder_eq65 remainder_eq -7046629152088889914955727605.82526380134373568351272791636146275588004922613033482637382291365652243788922897863499619969273823815138706532329129049050160382455735507270481 -> -0E-143 +precision: 251 +remainder_eq66 remainder_eq +Inf -> NaN Invalid_operation +precision: 154 +remainder_eq67 remainder_eq -Infinity -> NaN Invalid_operation +precision: 23 +remainder_eq68 remainder_eq -964780019 -> -0 +precision: 156 +remainder_eq69 remainder_eq 515857212280797360533104406818011007679030608894614486884155085776479483339307273570386878503499417095050121746331354909613310691802 -> 0 +precision: 214 +remainder_eq70 remainder_eq 875157008158241594623343914728.196830800387559632598766241220906276568091579554079449407060104465136120980115549064587115483463 -> 0E-96 +precision: 143 +remainder_eq71 remainder_eq -.416186498516827042121917291009009659987359961643215949360207428252204783721887072 -> -0E-81 +precision: 57 +remainder_eq72 remainder_eq -8136405302 -> -0 +precision: 252 +remainder_eq73 remainder_eq -3768650235270870133729717830580653861249546961478.4293753335016794759387001501334645480 -> -0E-37 +precision: 236 +remainder_eq74 remainder_eq .53053078833539221385330748043177496746474730434295738557835880763388848890280122271323 -> 0E-86 +precision: 71 +remainder_eq75 remainder_eq 14783977679222100389448430861927259685281274236246274487503650321904222e-139807650 -> 0E-139807650 +precision: 16 +remainder_eq76 remainder_eq -9751682463.946221 -> -0.000000 +precision: 58 +remainder_eq77 remainder_eq Inf -> NaN Invalid_operation +precision: 247 +remainder_eq78 remainder_eq +470456242891740913671055215586296056043673564 -> 0 +precision: 66 +remainder_eq79 remainder_eq +2851156900429585824663312062431652010314144980106681978543241989 -> 0 +precision: 125 +remainder_eq80 remainder_eq +.53413243558675104462847715640 -> 0E-29 +precision: 238 +remainder_eq81 remainder_eq -77592321627891437154144939759496.5586263904561939056667168728886977730038623427835983214353914536701683260493274364665102803350457 -> -0E-97 +precision: 20 +remainder_eq82 remainder_eq -7.149209766 -> -0E-9 +precision: 16 +remainder_eq83 remainder_eq -.730591E-66461480 -> -0E-66461486 +precision: 260 +remainder_eq84 remainder_eq +155581642252420115031694452969752872872903902902167503874885283654735878878945182862146983740810211586832501988239085304653714809584946 -> 0 +precision: 214 +remainder_eq85 remainder_eq 330880265401797603607519687119948341178192171240649828562751814425029175273293851408568595145279.778499034938529139741376821109502175E122628189 -> 0E+122628153 +precision: 49 +remainder_eq86 remainder_eq +.26051218465023926875 -> 0E-20 +precision: 194 +remainder_eq87 remainder_eq 379754715260450093082689930722218077210538747689368891079034851697910734281958968341287244917689459308321627585348191692821266537593563963412446746163950107657007E+76756563 -> 0E+76756563 +precision: 135 +remainder_eq88 remainder_eq 1671095733991046671876549016477834234 -> 0 +precision: 2 +remainder_eq89 remainder_eq -.7 -> -0.0 +precision: 51 +remainder_eq90 remainder_eq +Inf -> NaN Invalid_operation +precision: 201 +remainder_eq91 remainder_eq -940066666305850890138006447110886362705819041758397291715757633045996334e-353276341 -> -0E-353276341 +precision: 249 +remainder_eq92 remainder_eq 293911532775524418500564696937598820076382318214406311862015465822e-184880018 -> 0E-184880018 +precision: 182 +remainder_eq93 remainder_eq -73695667.368289306679529510498868175221597220246294564 -> -0E-45 +precision: 293 +remainder_eq94 remainder_eq -.2410395288683668659488128539759859736270614170914536522054684080755337279265762000973103034496403456719313229268494375798244142722601359278044949533942337186176234336394219109161654536775828898587246536182776452848639326698105367055986E-305601249 -> -0E-305601484 +precision: 208 +remainder_eq95 remainder_eq -3286467061159789300849601530719392275137914690042739475178537150195858612015894973319 -> -0 +precision: 107 +remainder_eq96 remainder_eq +55632206579070092122941755861705249059978221001496137746653698283321891222 -> 0 +precision: 99 +remainder_eq97 remainder_eq -723235697637543723552026055316562501485537466.6665923465540842101973194910627134149518980561427E-96927573 -> -0E-96927622 +precision: 128 +remainder_eq98 remainder_eq -16405292808754152362066188388623466196.84582308001223610094525622469727207930877005715243114740767364168553479416985024E16049972 -> -0E+16049892 +precision: 261 +remainder_eq99 remainder_eq -85495026195255732721853828661338830201971833445378398216934163771052263424513347.4500048160125913131549485009432711919815082826128013 -> -0E-52 +precision: 222 +remaindernear_eq0 remaindernear_eq +606302560422303238839300023784949387340467879977016801015961108154411606509462813597451715049853691310868412854381471077355940382201615032 -> 0 +precision: 70 +remaindernear_eq1 remaindernear_eq -NaN -> -NaN +precision: 125 +remaindernear_eq2 remaindernear_eq -2353922789310.187 -> -0.000 +precision: 51 +remaindernear_eq3 remaindernear_eq +Inf -> NaN Invalid_operation +precision: 36 +remaindernear_eq4 remaindernear_eq -48380E-99742895 -> -0E-99742895 +precision: 220 +remaindernear_eq5 remaindernear_eq +5098964800274259385458492848916946866191980063594538086443644520609779321064210764884739737185280160857779226169331441727584716167572281698575.33336373615908528762660979371024117620107690582679815 -> 0E-53 +precision: 94 +remaindernear_eq6 remaindernear_eq 599794212013676502049283225325753470245829960223956827008606168465059 -> 0 +precision: 60 +remaindernear_eq7 remaindernear_eq -403822481.3 -> -0.0 +precision: 246 +remaindernear_eq8 remaindernear_eq +302180646645460006078925929169298332165584552847913832703378201303658415424845774874448261470293530343995716348760102258303263896845547628393456795682078985643881877663587915830E-225260778 -> 0E-225260778 +precision: 99 +remaindernear_eq9 remaindernear_eq -8462306725933181151030294775 -> -0 +precision: 58 +remaindernear_eq10 remaindernear_eq +9383207.863e-20427078 -> 0E-20427081 +precision: 290 +remaindernear_eq11 remaindernear_eq +5025736264851039508283448176928801276206923346333487559949229688963366936911803040073626123328237526732998249539191625781729809935935191432583871683398194669482482633636204562686411418523317812748935890532976224990699382707772917163798323937807985533455407011239844892 -> 0 +precision: 168 +remaindernear_eq12 remaindernear_eq -48946020241e-252609518 -> -0E-252609518 +precision: 73 +remaindernear_eq13 remaindernear_eq +39017702548.78114498 -> 0E-8 +precision: 153 +remaindernear_eq14 remaindernear_eq -332026988078914437426596113840 -> -0 +precision: 258 +remaindernear_eq15 remaindernear_eq .441748580632e-66035091 -> 0E-66035103 +precision: 75 +remaindernear_eq16 remaindernear_eq -0.576E-98345482 -> -0E-98345485 +precision: 204 +remaindernear_eq17 remaindernear_eq -3592 -> -0 +precision: 227 +remaindernear_eq18 remaindernear_eq -785957861477783977015793012123461E-187220820 -> -0E-187220820 +precision: 296 +remaindernear_eq19 remaindernear_eq -.972938278858762092767558052746347834459058037676122110104749530522609406581666694868582937656001881338048985684843415515728081283854790858640236551867163561732 -> -0E-159 +precision: 189 +remaindernear_eq20 remaindernear_eq -Infinity -> NaN Invalid_operation +precision: 46 +remaindernear_eq21 remaindernear_eq -NaN2601819083192218332647846718 -> -NaN2601819083192218332647846718 +precision: 135 +remaindernear_eq22 remaindernear_eq +Infinity -> NaN Invalid_operation +precision: 131 +remaindernear_eq23 remaindernear_eq -62093065968928385519253498414164 -> -0 +precision: 23 +remaindernear_eq24 remaindernear_eq 5958.78102799521824146e+264312477 -> 0E+264312460 +precision: 20 +remaindernear_eq25 remaindernear_eq +64613110692025e388110841 -> 0E+388110841 +precision: 62 +remaindernear_eq26 remaindernear_eq +.60917670636707062983 -> 0E-20 +precision: 108 +remaindernear_eq27 remaindernear_eq -3353826543981991554753831688075355002165517116186801417108061947165856583649 -> -0 +precision: 10 +remaindernear_eq28 remaindernear_eq -389 -> -0 +precision: 167 +remaindernear_eq29 remaindernear_eq -34863371662731772305073717356225924083922443593493740 -> -0 +precision: 86 +remaindernear_eq30 remaindernear_eq -94554353087581293962108968580655895810756233 -> -0 +precision: 242 +remaindernear_eq31 remaindernear_eq -69602183864897018887749370831843804231461081519850263122545904351627997957359621651959591355604738567344718534143224448916180573328052671166006177600663367756120947848778674069838059 -> -0 +precision: 246 +remaindernear_eq32 remaindernear_eq +89491922579782964077010356510524436552550650347376091229381397 -> 0 +precision: 51 +remaindernear_eq33 remaindernear_eq -6432644767622795462.4105093808E-149986300 -> -0E-149986310 +precision: 161 +remaindernear_eq34 remaindernear_eq -67300977892329279373311165155739566074674162730203014743229870496647958461583826650608987444068452837099363883269588099588831144082560064369652297739E-247958987 -> -0E-247958987 +precision: 300 +remaindernear_eq35 remaindernear_eq +98814677971827180354822238126541057494712316441656323379391.97395814455837570118653136258432263415968875268973216260625829017367641651535955051922220276145592646012892147267530765594866740316383765998612585774111393728926399556502229736 -> 0E-176 +precision: 32 +remaindernear_eq36 remaindernear_eq -296177117783525327327395 -> -0 +precision: 288 +remaindernear_eq37 remaindernear_eq +.255961351911795070919356594607754868828921006199828 -> 0E-51 +precision: 85 +remaindernear_eq38 remaindernear_eq -79592920018009323045886934246698193595799369 -> -0 +precision: 299 +remaindernear_eq39 remaindernear_eq -sNaN -> -NaN Invalid_operation +precision: 191 +remaindernear_eq40 remaindernear_eq 8867354409558727140125067139256149884946296884662958e-360702705 -> 0E-360702705 +precision: 51 +remaindernear_eq41 remaindernear_eq -NaN -> -NaN +precision: 158 +remaindernear_eq42 remaindernear_eq -846744856787148334881494273627114969348002375719722162917175224051114940681231055794615854309540285997684963358845538083907742E+65482475 -> -0E+65482475 +precision: 30 +remaindernear_eq43 remaindernear_eq +760278408490664941168420973518 -> 0 +precision: 125 +remaindernear_eq44 remaindernear_eq -77685995260E-339305116 -> -0E-339305116 +precision: 34 +remaindernear_eq45 remaindernear_eq -918e423786264 -> -0E+423786264 +precision: 268 +remaindernear_eq46 remaindernear_eq 589955024899835824570456702724287319970695861820634952845012350278100767354081188564509707282164952407573461526428307060338373548090908823998373658965751201278726267831576069137 -> 0 +precision: 52 +remaindernear_eq47 remaindernear_eq 3540195E+199828637 -> 0E+199828637 +precision: 142 +remaindernear_eq48 remaindernear_eq -.588264627168394422500129985235607735447583281693995221317398040088192495665063224464216794746043617774599 -> -0E-105 +precision: 142 +remaindernear_eq49 remaindernear_eq -97700857399977420018591250002666609e323525579 -> -0E+323525579 +precision: 269 +remaindernear_eq50 remaindernear_eq -92704875288085722754525454610770821297757472932211455975620395460057604991362945820692474845245490451269179616842808360367513322609017743462242091642790879480521034e+189879778 -> -0E+189879778 +precision: 139 +remaindernear_eq51 remaindernear_eq +7648419743597366287010014792938216163181345473809558760512080853165021527546948828724550093852311845E-277396445 -> 0E-277396445 +precision: 104 +remaindernear_eq52 remaindernear_eq -84006448219207679878631280295.363574985326049467365190399391868946076036E132890578 -> -0E+132890536 +precision: 256 +remaindernear_eq53 remaindernear_eq 67613952436249968541585362937927984617670223701119715974227871975463848099659123109163200245398224217302215311976174 -> 0 +precision: 189 +remaindernear_eq54 remaindernear_eq +7788351454646450049230167323113500435589263246103817293212539600923717558517294514085207605499514559967420604500463 -> 0 +precision: 254 +remaindernear_eq55 remaindernear_eq +.555783237429177198381777855546100267326126837673790914211885946525303303436769802937520088983944016108888274044429011064642484266511958523489822590564534416460226 -> 0E-162 +precision: 159 +remaindernear_eq56 remaindernear_eq -Inf -> NaN Invalid_operation +precision: 120 +remaindernear_eq57 remaindernear_eq -89290873836440576038035E-243863756 -> -0E-243863756 +precision: 282 +remaindernear_eq58 remaindernear_eq 21242413865505135106480533300417086781738060463211733599389887886390182010438888504481665696286288258889706870253778470909306494905943163805506577794096508318838786340264010115150450487092188162741552E29454108 -> 0E+29454108 +precision: 300 +remaindernear_eq59 remaindernear_eq -7297331464151815024067130645482293383275925776845865791899979474590266567890200528197687369271948684971798430821548262 -> -0 +precision: 232 +remaindernear_eq60 remaindernear_eq +1008828741724469255537470357534310090068205937952949039029641145082850570783544629883830.6335742194270193732847630413098945132671785365600 -> 0E-49 +precision: 28 +remaindernear_eq61 remaindernear_eq -745743806E185249914 -> -0E+185249914 +precision: 62 +remaindernear_eq62 remaindernear_eq -753335857013233270019484400839637586495133745068254716211e+28793933 -> -0E+28793933 +precision: 115 +remaindernear_eq63 remaindernear_eq +164906493403441028753471298592852360524266915811126063645078615292591302735758035 -> 0 +precision: 56 +remaindernear_eq64 remaindernear_eq -71860233684473121552586876942861103551603075 -> -0 +precision: 237 +remaindernear_eq65 remaindernear_eq +.275180126774282888921599 -> 0E-24 +precision: 251 +remaindernear_eq66 remaindernear_eq -.44625456671193628608529529727371061939108302788958301092865448738525405320960822772414585655243828247022971104653348775473961107344028525859896495360497689634574492780328871498801693457298454524791123221508017837791290979615 -> -0E-224 +precision: 250 +remaindernear_eq67 remaindernear_eq +70714860946965783780849287387697722465418989185963840826679393904896876269463529341398961145619466781005007041493020285087379831770642160332977852262622984354229294738523572017901334780333261963433012322694916080695371480527761e+139996010 -> 0E+139996010 +precision: 101 +remaindernear_eq68 remaindernear_eq -87215650264985879034088518741280439676571993450727125720126347338351275489156668003063445E-406364170 -> -0E-406364170 +precision: 40 +remaindernear_eq69 remaindernear_eq -3721487696198e+329062403 -> -0E+329062403 +precision: 2 +remaindernear_eq70 remaindernear_eq -57E-119980987 -> -0E-119980987 +precision: 166 +remaindernear_eq71 remaindernear_eq 627934971401137018687110537939662251724832655120775565722903074467093995150014629844575036967790513698991703063818975651202406236356827031594112631020313794e146583839 -> 0E+146583839 +precision: 54 +remaindernear_eq72 remaindernear_eq +748138.7021707588185785132025676749 -> 0E-28 +precision: 186 +remaindernear_eq73 remaindernear_eq 95492002708289932332412546381329511153002113489532769323805326675260051765598634621121659191676811021899438523623486468430008139 -> 0 +precision: 217 +remaindernear_eq74 remaindernear_eq +265154252736494199743131991453370631753586340964102244960957605354350.1261565178025653178817204 -> 0E-25 +precision: 183 +remaindernear_eq75 remaindernear_eq sNaN9968012941511136464847008021806294602941970895865093333747066229880090 -> NaN9968012941511136464847008021806294602941970895865093333747066229880090 Invalid_operation +precision: 287 +remaindernear_eq76 remaindernear_eq -9728459152395309929221901570665612872241803610359965905624986190602869006340683836812157589.4558670576889243953353827595984659237438664513891696181 -> -0E-55 +precision: 110 +remaindernear_eq77 remaindernear_eq +736818491348267e-410676853 -> 0E-410676853 +precision: 187 +remaindernear_eq78 remaindernear_eq +921468338335591387911039862456658648483274607793568486113275251074050209044953537973958930445223084918200279988969.9571632730937490408286694918 -> 0E-28 +precision: 188 +remaindernear_eq79 remaindernear_eq 82599992169653010120165550178357192682841981083346902709977824815278421821905772291635708366128960217815016884 -> 0 +precision: 279 +remaindernear_eq80 remaindernear_eq -Infinity -> NaN Invalid_operation +precision: 267 +remaindernear_eq81 remaindernear_eq -45341536494066251561428751121610184143122276676404417600205657344736835871516729870855523567308624218184060914794135500829484318575828066316532403208470936879022695038502990871375337.71752001227496337118285591552406407581551765307500465685080435721065E103211596 -> -0E+103211528 +precision: 143 +remaindernear_eq82 remaindernear_eq +5290192 -> 0 +precision: 208 +remaindernear_eq83 remaindernear_eq 73085034398755096874074976294786895616277209.24976304907170395208354696147372305444764890046580613661528866783825904762303630161745773144661 -> 0E-95 +precision: 186 +remaindernear_eq84 remaindernear_eq +31906387488.7442571110674951285406862710719091648893754358176927255255e-132151596 -> 0E-132151654 +precision: 156 +remaindernear_eq85 remaindernear_eq 16795467621899666153527792466165 -> 0 +precision: 140 +remaindernear_eq86 remaindernear_eq -Inf -> NaN Invalid_operation +precision: 44 +remaindernear_eq87 remaindernear_eq +6341173522.20 -> 0.00 +precision: 92 +remaindernear_eq88 remaindernear_eq .41 -> 0.00 +precision: 2 +remaindernear_eq89 remaindernear_eq -13e-243579538 -> -0E-243579538 +precision: 200 +remaindernear_eq90 remaindernear_eq 57018242945763783776684138980107228686920886672473658940124144667783714584368509492418157153767216436773896063596842154660428014176023223693730783775.63828859019758151886086669939426922913291517e-18230152 -> 0E-18230196 +precision: 261 +remaindernear_eq91 remaindernear_eq +1348119855074872278702291815029833671328501764307569933435154165042853352047247117441415.6430717413781943 -> 0E-16 +precision: 296 +remaindernear_eq92 remaindernear_eq +sNaN74214766040412537182718535844872747714904 -> NaN74214766040412537182718535844872747714904 Invalid_operation +precision: 26 +remaindernear_eq93 remaindernear_eq -Inf -> NaN Invalid_operation +precision: 224 +remaindernear_eq94 remaindernear_eq -55697892304945023574559898355515361485232829436675811937807517119356348196443878382681003597491621700923443209973147957320323652884675840730560716224292025348357915496399493907618 -> -0 +precision: 155 +remaindernear_eq95 remaindernear_eq -6975778953786023757193728467119981417395938303538606357727731111194651818901915.22033248096236217632e+34261929 -> -0E+34261909 +precision: 30 +remaindernear_eq96 remaindernear_eq -6363221683064 -> -0 +precision: 235 +remaindernear_eq97 remaindernear_eq 63349880932834945230800885943069785501411145530722619421385141972447786416514039870033607598019323692325868929393339471699660904394910705320306002924 -> 0 +precision: 100 +remaindernear_eq98 remaindernear_eq +27389866393693004444697586144340891859 -> 0 +precision: 81 +remaindernear_eq99 remaindernear_eq 349394818252885093844922090941643428923637208565591617135.43354111856110643e+48064321 -> 0E+48064304 +precision: 113 +scaleb_eq0 scaleb_eq +28258509532563303179334762468260 -> NaN Invalid_operation +precision: 97 +scaleb_eq1 scaleb_eq -355173523612534322755756088153651046755274842352515124622e286352359 -> NaN Invalid_operation +precision: 243 +scaleb_eq2 scaleb_eq +3076125131539695041932655972073595060309801498731436619642463661596236944843686575554514765045119482474211794 -> NaN Invalid_operation +precision: 106 +scaleb_eq3 scaleb_eq +6058768226064406205890208842296452282026.8442726e+399453895 -> NaN Invalid_operation +precision: 72 +scaleb_eq4 scaleb_eq +Inf -> NaN Invalid_operation +precision: 68 +scaleb_eq5 scaleb_eq 2913725987334249761993229664181129.57193116084555994595221304215414 -> NaN Invalid_operation +precision: 210 +scaleb_eq6 scaleb_eq +Infinity -> NaN Invalid_operation +precision: 103 +scaleb_eq7 scaleb_eq -1918699345349348993235 -> NaN Invalid_operation +precision: 217 +scaleb_eq8 scaleb_eq 4553885240.398491278413754040408840781625407178420497052622863641953426194005088042636876764199670187500954754101520849997657782582460131944618593357533292290320866218294589739795677301E-119930725 -> NaN Invalid_operation +precision: 165 +scaleb_eq9 scaleb_eq -7527.67286756583959647255452150059283488799987189883612944549034553473097324819445757336387 -> NaN Invalid_operation +precision: 18 +scaleb_eq10 scaleb_eq -8493722e152026249 -> NaN Invalid_operation +precision: 198 +scaleb_eq11 scaleb_eq 3216803109.9674037063287336017230673895011036939070286296032309685974919389590518231271055309290132872209143337176038594973165139914408511353425207391796 -> NaN Invalid_operation +precision: 224 +scaleb_eq12 scaleb_eq -35029946389178804250466933662990e-112167301 -> NaN Invalid_operation +precision: 252 +scaleb_eq13 scaleb_eq -70459220119449667840748081338345495328871867324778080416583852134210572862301583945564368920676 -> NaN Invalid_operation +precision: 140 +scaleb_eq14 scaleb_eq -316782294170574558051536637479341974980828961560478700699528272801476173435007673983482360307355512874065201816535504e+226909990 -> NaN Invalid_operation +precision: 273 +scaleb_eq15 scaleb_eq 485288087969639.6756659644751657028826097460560728673997175649618566449198574605193939208285177457216275031377685525609099 -> NaN Invalid_operation +precision: 91 +scaleb_eq16 scaleb_eq 8066502956862591807123.508141852 -> NaN Invalid_operation +precision: 235 +scaleb_eq17 scaleb_eq +44375960688122308340439206.8113139386383959035049648300070083 -> NaN Invalid_operation +precision: 86 +scaleb_eq18 scaleb_eq 5742886005504587213.3887109 -> NaN Invalid_operation +precision: 191 +scaleb_eq19 scaleb_eq +Inf -> NaN Invalid_operation +precision: 213 +scaleb_eq20 scaleb_eq 77551618918775374146920484589805537060996121024589719.3346140971995562486338457277743 -> NaN Invalid_operation +precision: 136 +scaleb_eq21 scaleb_eq -7655368179156566873034810924829402517883684011561736818339296429579311898962779162 -> NaN Invalid_operation +precision: 167 +scaleb_eq22 scaleb_eq -62126990321181883440096857636373547210.66118440935923560421485474411916958467474801657332856394913E33940814 -> NaN Invalid_operation +precision: 28 +scaleb_eq23 scaleb_eq 268542 -> 2.68542E+268547 +precision: 124 +scaleb_eq24 scaleb_eq +53378707450771681408785275512672391843550514356991942711820967167 -> NaN Invalid_operation +precision: 173 +scaleb_eq25 scaleb_eq -605310698807419573791386401112828635947238410068420446076567155063421912988178099782345853551867998626785843 -> NaN Invalid_operation +precision: 204 +scaleb_eq26 scaleb_eq +43700154072041972264479649238906618451256047967788500433766515980573093384561 -> NaN Invalid_operation +precision: 58 +scaleb_eq27 scaleb_eq Infinity -> NaN Invalid_operation +precision: 142 +scaleb_eq28 scaleb_eq 2346352105088512289863462408218834103462880445 -> NaN Invalid_operation +precision: 296 +scaleb_eq29 scaleb_eq +67466074714346149708761039738854465897093989704432260889668005178106063513296431285537102750985984377228035E-272491648 -> NaN Invalid_operation +precision: 252 +scaleb_eq30 scaleb_eq -63581738247072750296811844234145879729981882875119095994028909475648354639325384781207068279428250704846692212047647796467513875098255789362512196666.958712291544200361941742323021118004767284484067653746E276219424 -> NaN Invalid_operation +precision: 299 +scaleb_eq31 scaleb_eq +81447402543943 -> NaN Invalid_operation +precision: 125 +scaleb_eq32 scaleb_eq -3251923133678675182176242985039053586554463977402729756952541753184779833776765943513.2741918668249233 -> NaN Invalid_operation +precision: 259 +scaleb_eq33 scaleb_eq -.857365315214046550105390739220786259595416172286400214717174994992481112391081117928645419600520348958 -> NaN Invalid_operation +precision: 20 +scaleb_eq34 scaleb_eq +Infinity -> NaN Invalid_operation +precision: 104 +scaleb_eq35 scaleb_eq -3483210054921467215205960893523961528102062224665537178041954476944301472E153234023 -> NaN Invalid_operation +precision: 73 +scaleb_eq36 scaleb_eq +sNaN -> NaN Invalid_operation +precision: 69 +scaleb_eq37 scaleb_eq +78792901323704141184024073.51 -> NaN Invalid_operation +precision: 280 +scaleb_eq38 scaleb_eq +.23594045506438332644270561991824687015610724042798761071230403066194760849133274686783372951458955076670867414802585722952710071166 -> NaN Invalid_operation +precision: 25 +scaleb_eq39 scaleb_eq -15935579489E+191316626 -> NaN Invalid_operation +precision: 78 +scaleb_eq40 scaleb_eq 4384566200889549465417683 -> NaN Invalid_operation +precision: 15 +scaleb_eq41 scaleb_eq -1479540 -> -1.479540E-1479534 +precision: 218 +scaleb_eq42 scaleb_eq -Inf -> NaN Invalid_operation +precision: 5 +scaleb_eq43 scaleb_eq -27.e-117995185 -> NaN Invalid_operation +precision: 271 +scaleb_eq44 scaleb_eq 51798743778975387851205382060 -> NaN Invalid_operation +precision: 154 +scaleb_eq45 scaleb_eq -.8740502941271956922285575e+414267695 -> NaN Invalid_operation +precision: 96 +scaleb_eq46 scaleb_eq 49324148399117701399013088728422812283542338716305275203086912284263606347006062034 -> NaN Invalid_operation +precision: 87 +scaleb_eq47 scaleb_eq +37693298130788780013869149209805058077513e-49660975 -> NaN Invalid_operation +precision: 101 +scaleb_eq48 scaleb_eq -.5984222149126 -> NaN Invalid_operation +precision: 12 +scaleb_eq49 scaleb_eq -857838368209E352504891 -> NaN Invalid_operation +precision: 227 +scaleb_eq50 scaleb_eq +3380118910676953952180668662957558448578133764970842804938621803909033320131340836302229359806561710526335607775304757767415 -> NaN Invalid_operation +precision: 270 +scaleb_eq51 scaleb_eq -15203679330939016185930981848481508084803716747789058624319E337956550 -> NaN Invalid_operation +precision: 87 +scaleb_eq52 scaleb_eq 93977639330177918323380313922748671531140944619885720200637257554878047420.6074335 -> NaN Invalid_operation +precision: 137 +scaleb_eq53 scaleb_eq -7097261684416661686199E-76401671 -> NaN Invalid_operation +precision: 189 +scaleb_eq54 scaleb_eq +4145140586475512897951896422656663234608115891502468498519929756676495750516677325879773297734775706318510915507564810621806516598968112856526627646337639499634184 -> NaN Invalid_operation +precision: 33 +scaleb_eq55 scaleb_eq 15709510808 -> NaN Invalid_operation +precision: 21 +scaleb_eq56 scaleb_eq -868233814.8126E+251562791 -> NaN Invalid_operation +precision: 29 +scaleb_eq57 scaleb_eq -78663355e-85074432 -> NaN Invalid_operation +precision: 265 +scaleb_eq58 scaleb_eq -41237265089769476283911180668208581065721924281958879459993277449985112909290636386340495904397773235030720675770625862211480212551666309874307063 -> NaN Invalid_operation +precision: 180 +scaleb_eq59 scaleb_eq -sNaN150306602860870952346120391977464328 -> -NaN150306602860870952346120391977464328 Invalid_operation +precision: 67 +scaleb_eq60 scaleb_eq +498339718773144134 -> NaN Invalid_operation +precision: 65 +scaleb_eq61 scaleb_eq .9249181023788278395811701572154111099818325 -> NaN Invalid_operation +precision: 9 +scaleb_eq62 scaleb_eq -237551200 -> -2.37551200E-237551192 +precision: 137 +scaleb_eq63 scaleb_eq -85980862422821254941571783112912941392862111705600045349450677983958830908988483604317296728681899036281453808546270966339 -> NaN Invalid_operation +precision: 177 +scaleb_eq64 scaleb_eq -22860501629833234109122380618228336032750302204812278141837541658 -> NaN Invalid_operation +precision: 239 +scaleb_eq65 scaleb_eq -11952.7184 -> NaN Invalid_operation +precision: 28 +scaleb_eq66 scaleb_eq +.2226197715 -> NaN Invalid_operation +precision: 262 +scaleb_eq67 scaleb_eq +Infinity -> NaN Invalid_operation +precision: 14 +scaleb_eq68 scaleb_eq +9.847 -> NaN Invalid_operation +precision: 94 +scaleb_eq69 scaleb_eq +.72926470138249873694383512 -> NaN Invalid_operation +precision: 275 +scaleb_eq70 scaleb_eq -6892817.6770509041598625187756228311184116433953e-39339214 -> NaN Invalid_operation +precision: 140 +scaleb_eq71 scaleb_eq 2100724448310751592501822545985578829721483193421855391249561382312301031486983147808222124420260911657604583977113634222854696972 -> NaN Invalid_operation +precision: 275 +scaleb_eq72 scaleb_eq +30186613760385131139842102075401110521005601347030195403923931115410222000493780089002422841280065368764600894280682068e-134891412 -> NaN Invalid_operation +precision: 7 +scaleb_eq73 scaleb_eq -545901e-329054749 -> NaN Invalid_operation +precision: 267 +scaleb_eq74 scaleb_eq -24780311122479363452593063147302863616460.292222911863241544395272063490479284169598726930223480784198866905566869195268592546970365078637018857921695191192809882038468355736131547751140132326658238805426561174179529 -> NaN Invalid_operation +precision: 239 +scaleb_eq75 scaleb_eq sNaN7084812 -> NaN7084812 Invalid_operation +precision: 13 +scaleb_eq76 scaleb_eq +7.1 -> NaN Invalid_operation +precision: 270 +scaleb_eq77 scaleb_eq -238664088635606420499898471023231655465289190004926961899040075049133251562876259996438333282578542310087850990117068940165165903695404531144424373961078737254234337682001840727337503478521165571821729268846732305887938684236015694360870 -> NaN Invalid_operation +precision: 59 +scaleb_eq78 scaleb_eq +85306933757567770689 -> NaN Invalid_operation +precision: 277 +scaleb_eq79 scaleb_eq Inf -> NaN Invalid_operation +precision: 40 +scaleb_eq80 scaleb_eq 3583053124800779979592774812138785461 -> NaN Invalid_operation +precision: 239 +scaleb_eq81 scaleb_eq 579098286909822923737649154521793952747555900261028488602816172058573595818910513150272696631886659921433960237675377667475859804616213122353524879056827904553260118505951216783645442144984382416416262503845090 -> NaN Invalid_operation +precision: 216 +scaleb_eq82 scaleb_eq 6399099582214756430069271537268170095597498091738666350140300772729040794252429960025748703090053913468675781810623451915754794468589184301737279466513 -> NaN Invalid_operation +precision: 41 +scaleb_eq83 scaleb_eq -Inf -> NaN Invalid_operation +precision: 194 +scaleb_eq84 scaleb_eq 9.64266014869098e-220895857 -> NaN Invalid_operation +precision: 292 +scaleb_eq85 scaleb_eq -.7530168234417384132857456446300725977874692119163131142964213148326148 -> NaN Invalid_operation +precision: 136 +scaleb_eq86 scaleb_eq -62661848032104023069446261358905406614482037643207744124648 -> NaN Invalid_operation +precision: 252 +scaleb_eq87 scaleb_eq -Infinity -> NaN Invalid_operation +precision: 238 +scaleb_eq88 scaleb_eq 143546845861041990060322684886810107381454139689572725811455288461906047074995527e-127588293 -> NaN Invalid_operation +precision: 188 +scaleb_eq89 scaleb_eq 549594636922986928915266244329120480311386453401718289956222234187138269487793994e+382834954 -> NaN Invalid_operation +precision: 100 +scaleb_eq90 scaleb_eq +76105833567872825324716048.6835667199393662070898309498956632327770577144579639027223E+423695188 -> NaN Invalid_operation +precision: 208 +scaleb_eq91 scaleb_eq .86289711151123983900536359336389723399318519906644048668289593781678004811269496917624510067 -> NaN Invalid_operation +precision: 34 +scaleb_eq92 scaleb_eq +916269671505610925729 -> NaN Invalid_operation +precision: 290 +scaleb_eq93 scaleb_eq -925545362179925226065811738507223023250468376948987768593156999686888829375381542877030737230952724384014871389223682783381310204226037957876313326052240796394179604181189802583242621886579408631269640897354786896501787415653536 -> NaN Invalid_operation +precision: 66 +scaleb_eq94 scaleb_eq .880686941424197683386631881691437128635448 -> NaN Invalid_operation +precision: 258 +scaleb_eq95 scaleb_eq -3709675741916488562724697137368486160074319966072124727025445013286773046104296544630857988625115209971096134701051839178531501762177997843780658964879529312056957703184626337232272654206058998002736504319451012607.72745145550191255373895768227070229253e+306439510 -> NaN Invalid_operation +precision: 149 +scaleb_eq96 scaleb_eq -318427623216498655888407091711921190884499748652676780446018209512913063007760334404201763797287942084677556983333007305056106483994 -> NaN Invalid_operation +precision: 178 +scaleb_eq97 scaleb_eq -71231340763162078630464457351867481226585756943636275526567525779946732784105884892646180177.25214499346204718793029546277 -> NaN Invalid_operation +precision: 281 +scaleb_eq98 scaleb_eq -340219887145696159611037362142956314181385186221234816430614774573529625470528833020101049287176774807699463575637463137372651887826491996103034022115121705369519495054609e-202284746 -> NaN Invalid_operation +precision: 292 +scaleb_eq99 scaleb_eq -2333625653119145104608406475497516506160394226135053851621142635577283859868904203252477078302181491194732386001798828322731623494839249042820917486282 -> NaN Invalid_operation +precision: 33 +shift_eq0 shift_eq +64 -> NaN Invalid_operation +precision: 169 +shift_eq1 shift_eq -386447786368645346510.1434983997906521501294859729181025272575211783388857414313903624919491724794e308674405 -> NaN Invalid_operation +precision: 64 +shift_eq2 shift_eq .1064629116843833794591007955659963903297906158674535586 -> NaN Invalid_operation +precision: 271 +shift_eq3 shift_eq -6004760564421997267465337542056145268077576692427060243147887257835298306846683703091362342173151245516033730629367039345848260215473868275162806395658358744146002456539191927790139484782 -> NaN Invalid_operation +precision: 292 +shift_eq4 shift_eq 5016040850972822158392e+72304768 -> NaN Invalid_operation +precision: 134 +shift_eq5 shift_eq -916543010238684246123647 -> NaN Invalid_operation +precision: 299 +shift_eq6 shift_eq -.692530223907051608797808298942810e-239533460 -> NaN Invalid_operation +precision: 45 +shift_eq7 shift_eq -6830741495103690088657692052185543694324641e-388966750 -> NaN Invalid_operation +precision: 299 +shift_eq8 shift_eq +.55023071217980208334517013292560956175701560737307008458759887723128870874390392422716528877085751586827374527403442676257949626 -> NaN Invalid_operation +precision: 68 +shift_eq9 shift_eq -742.480 -> NaN Invalid_operation +precision: 98 +shift_eq10 shift_eq -28827789104604298713031017607612538166326688451377674218004690823398957 -> NaN Invalid_operation +precision: 234 +shift_eq11 shift_eq -Inf -> NaN Invalid_operation +precision: 243 +shift_eq12 shift_eq -652836419017537467905959659262907641906846627121432678278349199204135985608479229194748471221677408486746560160749133588524689705403242683716162775335255012408877859775935563095198829198626e-304404952 -> NaN Invalid_operation +precision: 138 +shift_eq13 shift_eq -6400480512625468956113632017678063816435851911561986426508.8368764891224739944187745632193278804583821 -> NaN Invalid_operation +precision: 74 +shift_eq14 shift_eq 50.65663 -> NaN Invalid_operation +precision: 149 +shift_eq15 shift_eq +47694117927132457225220247832535341853211279445885087937284097482164496908981342154365490437288868398724902222e-62955980 -> NaN Invalid_operation +precision: 213 +shift_eq16 shift_eq -5670450288624787954119422350461412081266087975125441507206250638667789751962315577 -> NaN Invalid_operation +precision: 278 +shift_eq17 shift_eq -138627046480478792325179756784734135151509634091123491335095114586889484147855742053280134584120971347241772614375528753740910817965224832478160295677709146850979819949961890773792188583381417380E217688532 -> NaN Invalid_operation +precision: 172 +shift_eq18 shift_eq +561495928834182.676992e-222229974 -> NaN Invalid_operation +precision: 230 +shift_eq19 shift_eq +19836162002458314554512874505398304679097941974615637095703516357 -> NaN Invalid_operation +precision: 49 +shift_eq20 shift_eq Infinity -> NaN Invalid_operation +precision: 185 +shift_eq21 shift_eq -51983232827193633807937198937302349561156806074620 -> NaN Invalid_operation +precision: 38 +shift_eq22 shift_eq -42358237111213 -> NaN Invalid_operation +precision: 270 +shift_eq23 shift_eq -sNaN -> -NaN Invalid_operation +precision: 117 +shift_eq24 shift_eq .37768769863590927183280294943790276003745833982954120488005305248124583086745100678463207887922496e+286692409 -> NaN Invalid_operation +precision: 153 +shift_eq25 shift_eq +8820366721283952975343910516353411754182183277171239548414464573475026 -> NaN Invalid_operation +precision: 41 +shift_eq26 shift_eq +244909. -> NaN Invalid_operation +precision: 183 +shift_eq27 shift_eq -1525822407075896618985442741847789737147588428554858478489195691802946884368434933435747492464058461210447052559481176977949549660752966591 -> NaN Invalid_operation +precision: 121 +shift_eq28 shift_eq -296216.2073E165330998 -> NaN Invalid_operation +precision: 13 +shift_eq29 shift_eq +Inf -> NaN Invalid_operation +precision: 220 +shift_eq30 shift_eq -.42314261152947925892489870998457589918041196616694718941447901966145447170131684346864797329534139794174723637577766096722679038926026127559794252393087957554303661e-268085340 -> NaN Invalid_operation +precision: 266 +shift_eq31 shift_eq +4157875631946050618116271406977127163724261416689710022074506534081561216201477607028940973031622944176859942692168090800342575409510987539288061003904463782088153475229413902762453916246907957044364655338544568 -> NaN Invalid_operation +precision: 260 +shift_eq32 shift_eq +173961701567559703277384909764962872878238368253679983254254181961148E+234528901 -> NaN Invalid_operation +precision: 7 +shift_eq33 shift_eq 30 -> NaN Invalid_operation +precision: 151 +shift_eq34 shift_eq -.7570328093818e-138497582 -> NaN Invalid_operation +precision: 176 +shift_eq35 shift_eq +Infinity -> NaN Invalid_operation +precision: 82 +shift_eq36 shift_eq -552045155910112427061598461259141E-148559202 -> NaN Invalid_operation +precision: 220 +shift_eq37 shift_eq -3421614945804565586661233997006776876978398521351523545326176458919228832623905809504907256930683604413 -> NaN Invalid_operation +precision: 70 +shift_eq38 shift_eq Inf -> NaN Invalid_operation +precision: 89 +shift_eq39 shift_eq +.65835219775505683254679076334317816174092922809126518160561763757176637311049109709329794e-410345720 -> NaN Invalid_operation +precision: 68 +shift_eq40 shift_eq +7131464551716429028567681527923774337.1552E-418849530 -> NaN Invalid_operation +precision: 285 +shift_eq41 shift_eq -2132259291878538007699827320202307468796284863762818088825206743586076899827306013980837624833883149962749598787151529700012634296466321814555210163.3978000930806465548081941234102923272663132002747178265670203998448315061693 -> NaN Invalid_operation +precision: 210 +shift_eq42 shift_eq -67639122320381651312646266207798462885970419791777.28 -> NaN Invalid_operation +precision: 271 +shift_eq43 shift_eq -875411636751889557636296171692397864813680411208488138273027374070169807023043285468941313813914706391707458012445538759.72154902287021960396385750098e302580951 -> NaN Invalid_operation +precision: 217 +shift_eq44 shift_eq +99838400437361693957301114433028771958661471706763854143515830385567283781398327989489413752007475033976997650214337e-37816908 -> NaN Invalid_operation +precision: 244 +shift_eq45 shift_eq +96285319343998397594452689986022622608137166022737835544657727488935743571121728150722745062704252030513560056481423846962503550082691E+280982698 -> NaN Invalid_operation +precision: 251 +shift_eq46 shift_eq -84628757113834595271449660075644912278519 -> NaN Invalid_operation +precision: 106 +shift_eq47 shift_eq 96156700883752056493898110039844748092418019857507193966220179.7477367792127500 -> NaN Invalid_operation +precision: 249 +shift_eq48 shift_eq -755813084510154767014537283228855649129701845413738811761416720250850770682150456732002691737618414995864.14446357293324842938738818 -> NaN Invalid_operation +precision: 100 +shift_eq49 shift_eq -.17313382221395196512 -> NaN Invalid_operation +precision: 270 +shift_eq50 shift_eq +789702012967772058649309779452279488475177494868171360E+52290522 -> NaN Invalid_operation +precision: 185 +shift_eq51 shift_eq 103729174011924824294886318787186726583566495035341730560959505599890193739484973823632790014713689964736260721466944400728945769197469046576 -> NaN Invalid_operation +precision: 156 +shift_eq52 shift_eq -.739083680473617073609111140236747783952922852854314599279329013585318e+75001489 -> NaN Invalid_operation +precision: 274 +shift_eq53 shift_eq +NaN864343525309550615455295848 -> NaN864343525309550615455295848 +precision: 253 +shift_eq54 shift_eq +.1999470335956438550050894723235652440089383850597600604183632229 -> NaN Invalid_operation +precision: 34 +shift_eq55 shift_eq -775 -> NaN Invalid_operation +precision: 111 +shift_eq56 shift_eq +966334081278076042412050377504319011093512266117239119679242107814814598000001898027927894024900915481134864 -> NaN Invalid_operation +precision: 203 +shift_eq57 shift_eq +.464786276744473734103980428723084753951070519285022792203034497056011361419419396843274809652910830767993109189311382396723952483718243623985633492738E-104648440 -> NaN Invalid_operation +precision: 219 +shift_eq58 shift_eq -.9257054068297119574788505610422743421986181511809273803654191176099808492164869556113641585377568933347361914528763850398750167008175151765389E-344995490 -> NaN Invalid_operation +precision: 90 +shift_eq59 shift_eq +48356731030138275242810330401328066161373059929337732289780632722243929646664612934 -> NaN Invalid_operation +precision: 257 +shift_eq60 shift_eq -Inf -> NaN Invalid_operation +precision: 126 +shift_eq61 shift_eq -sNaN -> -NaN Invalid_operation +precision: 8 +shift_eq62 shift_eq +8665 -> NaN Invalid_operation +precision: 240 +shift_eq63 shift_eq 13385519941539547204306873720249419611151077748425348662647616061805114607159252657412896097567429972834869001930624552518589032618324233560214063974512359284090441828568016676263219427896496101348329371351583104E125493764 -> NaN Invalid_operation +precision: 20 +shift_eq64 shift_eq +51.7985 -> NaN Invalid_operation +precision: 72 +shift_eq65 shift_eq .43846764562175612750632822E+76797765 -> NaN Invalid_operation +precision: 102 +shift_eq66 shift_eq 2080829 -> NaN Invalid_operation +precision: 262 +shift_eq67 shift_eq +21895050859138951713781269323126711696852420722945583641230879185801330908941224879336665208720778278795696231601358007636617229745765526853750881194479331229595456759913011188577732222264481620192245431e159370255 -> NaN Invalid_operation +precision: 282 +shift_eq68 shift_eq 26 -> 2600000000000000000000000000 +precision: 223 +shift_eq69 shift_eq +262461234151755146110684902221811010510352331760948740885276059467491151419518611752449931047333753339825800920056359602797613146072603882932760350027447295.57651224288688757433314 -> NaN Invalid_operation +precision: 112 +shift_eq70 shift_eq +9156577028697332384061219055945246549582E-342632944 -> NaN Invalid_operation +precision: 149 +shift_eq71 shift_eq -711001361674801040390204828358107087309085675810054430484472131408227971873832884832684069 -> NaN Invalid_operation +precision: 209 +shift_eq72 shift_eq 859922044719593743904252492942092876840815201282147290978034247304667904297282 -> NaN Invalid_operation +precision: 109 +shift_eq73 shift_eq 797877766003749584605438818109419567801994375637308262E-293167887 -> NaN Invalid_operation +precision: 54 +shift_eq74 shift_eq +214099468411.963122022 -> NaN Invalid_operation +precision: 172 +shift_eq75 shift_eq 975683085404289260554748632761338536822979543719988222970785593557538900754715122606126999334941064011356150208e+282282897 -> NaN Invalid_operation +precision: 166 +shift_eq76 shift_eq -1864754575944064295477548037951317330687906299480549235686849592 -> NaN Invalid_operation +precision: 72 +shift_eq77 shift_eq -21124195217509295351705894e30773689 -> NaN Invalid_operation +precision: 128 +shift_eq78 shift_eq -5529318159066270583769971336381968617990e-312309788 -> NaN Invalid_operation +precision: 82 +shift_eq79 shift_eq +29891487166764121879600329483908.87237365149814932449722212291771762197698516498 -> NaN Invalid_operation +precision: 2 +shift_eq80 shift_eq -54. -> NaN Invalid_operation +precision: 177 +shift_eq81 shift_eq -Infinity -> NaN Invalid_operation +precision: 263 +shift_eq82 shift_eq -sNaN6475580351159906899292914180090523594720083903683761860911 -> -NaN6475580351159906899292914180090523594720083903683761860911 Invalid_operation +precision: 125 +shift_eq83 shift_eq -.35139977705512383113476967802449652035597378816150686819620109995236721579024320019887472459307615574769375352804965632 -> NaN Invalid_operation +precision: 8 +shift_eq84 shift_eq .28 -> NaN Invalid_operation +precision: 193 +shift_eq85 shift_eq +2032064149697500180292908870659792357730.3051313560639454680634319210096826285940624668317159074469879505123578151311748383761 -> NaN Invalid_operation +precision: 118 +shift_eq86 shift_eq +634698 -> NaN Invalid_operation +precision: 148 +shift_eq87 shift_eq 2984506394629110011224803185964301.700339719055784475539169431415029088515540979786432E-276272515 -> NaN Invalid_operation +precision: 206 +shift_eq88 shift_eq 14665859202082774967174285825271180824247130258486908497600285790287671010583883380571017259750282544487184282345046752.2744667613921596881257900746549665430320538466963911792838344830510918400292e+31774561 -> NaN Invalid_operation +precision: 212 +shift_eq89 shift_eq -2385899937619527644133304932405667046405836131725965635267498813742567350468609138140707108984118615623E-90759159 -> NaN Invalid_operation +precision: 234 +shift_eq90 shift_eq 5040418230541890608066290758106084809245035.6 -> NaN Invalid_operation +precision: 26 +shift_eq91 shift_eq +81637e388107601 -> NaN Invalid_operation +precision: 168 +shift_eq92 shift_eq +42892329402470 -> NaN Invalid_operation +precision: 219 +shift_eq93 shift_eq -7126242938 -> NaN Invalid_operation +precision: 120 +shift_eq94 shift_eq -1654600.E141220874 -> NaN Invalid_operation +precision: 293 +shift_eq95 shift_eq -2262561079538735951729913863600020717030746938613798106325008079038595967625667763696164353223842016122338093107575477154159491112015780241496900181192530423363213523533787555883898 -> NaN Invalid_operation +precision: 10 +shift_eq96 shift_eq +.5317 -> NaN Invalid_operation +precision: 128 +shift_eq97 shift_eq -26602327315939748332147385634145018748526838818750249.9054001002038412849553E-22041227 -> NaN Invalid_operation +precision: 113 +shift_eq98 shift_eq -81949773146733472812214475960759914227142033552795417 -> NaN Invalid_operation +precision: 199 +shift_eq99 shift_eq -sNaN -> -NaN Invalid_operation +precision: 259 +subtract_eq0 subtract_eq -.784626254375705635359421742211628372073214972658015192255951E-322501478 -> 0E-322501538 +precision: 43 +subtract_eq1 subtract_eq +89690.7376661374 -> 0E-10 +precision: 233 +subtract_eq2 subtract_eq +Infinity -> NaN Invalid_operation +precision: 156 +subtract_eq3 subtract_eq -1696595486664094057000153353905744472872288822732910291230927 -> 0 +precision: 207 +subtract_eq4 subtract_eq -932223855054587073208851893328456 -> 0 +precision: 249 +subtract_eq5 subtract_eq -69506935943178640332772578456921852991436142192006587306848274120043803839683075040553351841270398732583010718890533028284474031982916586017516408027449325 -> 0 +precision: 259 +subtract_eq6 subtract_eq 73008413578764546886980722570522937187505470585898639858485130251398856206130378796715596432510577141810043329393904.85633811124633788207424013696324792785438445058975323257588664548822097457246422187344610018513436338346158935162e-361686425 -> 0E-361686538 +precision: 72 +subtract_eq7 subtract_eq Inf -> NaN Invalid_operation +precision: 300 +subtract_eq8 subtract_eq .6866289246792190335033106899071725521824271654342898500569004024256511280211463495525012692398032460821520922249199603734470543576516763324054582705224717917969242648688822581165948355253575454499878928952611648475 -> 0E-214 +precision: 20 +subtract_eq9 subtract_eq +9.9613298 -> 0E-7 +precision: 207 +subtract_eq10 subtract_eq -NaN2800629440185365174148708536527662046002782613484794451982204659114992004470 -> -NaN2800629440185365174148708536527662046002782613484794451982204659114992004470 +precision: 95 +subtract_eq11 subtract_eq +38502481077709629647441149813564807233258990654979197944822632286329064984250161993207083 -> 0 +precision: 64 +subtract_eq12 subtract_eq +822309406918140999502129203329e+140175266 -> 0E+140175266 +precision: 126 +subtract_eq13 subtract_eq -.8260847844401803040716824650552386406945603781774026899613301432815275165945e-360625326 -> 0E-360625402 +precision: 279 +subtract_eq14 subtract_eq -896360096131092415634197547231343181596614533028637049515427394570899377465149537238826645012356406368181987247841973517748058093699570526783418708378353312913916693256751753846475441222773913965863972461e-60365139 -> 0E-60365139 +precision: 4 +subtract_eq15 subtract_eq -2264 -> 0 +precision: 177 +subtract_eq16 subtract_eq -3620367697982680500854437240935059855111912613131533685630968916646864 -> 0 +precision: 270 +subtract_eq17 subtract_eq -82522081523623544855544797225040376255504646863336943669759408517988856854580378209366074611001706956.916367729532433484574756874992873025640273 -> 0E-42 +precision: 263 +subtract_eq18 subtract_eq 190128 -> 0 +precision: 50 +subtract_eq19 subtract_eq -Infinity -> NaN Invalid_operation +precision: 260 +subtract_eq20 subtract_eq -6218871316990039401473137891426984.97 -> 0.00 +precision: 152 +subtract_eq21 subtract_eq .4482685130185376975052021640415014546864756627740677159648880709963578885784195648822020 -> 0E-88 +precision: 231 +subtract_eq22 subtract_eq -9472476170184967170916388944424428073.762179364482871478927377748220986887757575383768526145177454174581E+213679881 -> 0E+213679815 +precision: 3 +subtract_eq23 subtract_eq +56. -> 0 +precision: 236 +subtract_eq24 subtract_eq +Inf -> NaN Invalid_operation +precision: 122 +subtract_eq25 subtract_eq -79894E-145988177 -> 0E-145988177 +precision: 184 +subtract_eq26 subtract_eq +103353.5250752219059388110692730326272621973176735935204327719242 -> 0E-58 +precision: 197 +subtract_eq27 subtract_eq -5113427982038661575882141067487915156515412197299944909968031227821423562708795539612812428279275786476756374213333236846298280130007195792209864400629418703083906385E160582720 -> 0E+160582720 +precision: 41 +subtract_eq28 subtract_eq -85349735803691540321632391615071309 -> 0 +precision: 77 +subtract_eq29 subtract_eq 7036697875727661049844 -> 0 +precision: 171 +subtract_eq30 subtract_eq 882609617004678952088218496428744604434917294343771925e329016152 -> 0E+329016152 +precision: 52 +subtract_eq31 subtract_eq .10611783212646 -> 0E-14 +precision: 110 +subtract_eq32 subtract_eq 87897339146038196738963670956641932288763089237002161131178937351781985352220980911654809 -> 0 +precision: 126 +subtract_eq33 subtract_eq -1145618753143858381423648685820936483630E+407557285 -> 0E+407557285 +precision: 110 +subtract_eq34 subtract_eq -8029185730312292772341128369772573577943104734083904853726394054980.6695163104110 -> 0E-13 +precision: 275 +subtract_eq35 subtract_eq -785600384399039518794460742627937135275458261013708063831107561523639170871895730369746409497058627520635467714518429438650516834527897328040996843083083187421449481466533801170493887607724616394419186 -> 0 +precision: 244 +subtract_eq36 subtract_eq NaN78 -> NaN78 +precision: 161 +subtract_eq37 subtract_eq -386915269266879289821816865408106199322932374422724693435121007513604E188956348 -> 0E+188956348 +precision: 250 +subtract_eq38 subtract_eq -NaN52162733346091749140089490292822394879994595943362967945 -> -NaN52162733346091749140089490292822394879994595943362967945 +precision: 292 +subtract_eq39 subtract_eq +546500504473398297705158627716940614016851366495326864571184239953894144409507393262667800017044108039617151442099705287378492063981141523015026 -> 0 +precision: 270 +subtract_eq40 subtract_eq 606785121125588261372005202871001932776313606066026434012674E-10716434 -> 0E-10716434 +precision: 81 +subtract_eq41 subtract_eq -30066727443346E-176563152 -> 0E-176563152 +precision: 242 +subtract_eq42 subtract_eq -7099430521688213091161836055747309139553447085157596685710554221717088778548679431392543590244.24132552333131288176201333601141450064276896E-388093596 -> 0E-388093640 +precision: 136 +subtract_eq43 subtract_eq +56944539861e-289258488 -> 0E-289258488 +precision: 251 +subtract_eq44 subtract_eq -810590044389667611634819457938143569716576789459165086753932599256125478978799781735149544943406225684255896089478282450429352126703836367811622767603826209221319446043410409658931975394810487360974358705183622300651128210686551366e-80621037 -> 0E-80621037 +precision: 65 +subtract_eq45 subtract_eq -6140436048281797228904.139052224363381146363401593084991105961e-69973553 -> 0E-69973592 +precision: 227 +subtract_eq46 subtract_eq .66789586385489795490645905418601883434056853152017854291474237222321820375855287e-200737001 -> 0E-200737081 +precision: 210 +subtract_eq47 subtract_eq -193041945619755966149009257309691955464104646051429137191319666773613 -> 0 +precision: 204 +subtract_eq48 subtract_eq -53156962752408745239896930321508294541017212300918658043611177053148851317118002173899964529782806422928329363301145118977370207613834705987023644e361340385 -> 0E+361340385 +precision: 136 +subtract_eq49 subtract_eq 77923357693463067701670562633098422265175300163426338757006090702530387793267441e+130276390 -> 0E+130276390 +precision: 233 +subtract_eq50 subtract_eq -.63680172281755911339211526077176805413314366532566175427265887036805681670367764759467245880573E+67433220 -> 0E+67433125 +precision: 66 +subtract_eq51 subtract_eq +63363260710622901 -> 0 +precision: 235 +subtract_eq52 subtract_eq -Inf -> NaN Invalid_operation +precision: 29 +subtract_eq53 subtract_eq 93965370.1E-191153437 -> 0E-191153438 +precision: 184 +subtract_eq54 subtract_eq -NaN19970 -> -NaN19970 +precision: 257 +subtract_eq55 subtract_eq +.4772676955184643695930468345736390213819557112612244482834897363658338477397376448929161911010356 -> 0E-97 +precision: 203 +subtract_eq56 subtract_eq -881328409836490372092698601413592750003528157199948431280910637886415927198203893720250085131859315530645 -> 0 +precision: 293 +subtract_eq57 subtract_eq 80. -> 0 +precision: 159 +subtract_eq58 subtract_eq +6414774783.e-281590695 -> 0E-281590695 +precision: 247 +subtract_eq59 subtract_eq -Infinity -> NaN Invalid_operation +precision: 92 +subtract_eq60 subtract_eq Inf -> NaN Invalid_operation +precision: 286 +subtract_eq61 subtract_eq +307879416243853256648330793136E-398067194 -> 0E-398067194 +precision: 247 +subtract_eq62 subtract_eq +882830021016837913740547843730175072197339406476406967288626607974464439237698111113411262141234132159278489475964568519898283413415841469832317694488782373986879315855793351192586581239100529104 -> 0 +precision: 2 +subtract_eq63 subtract_eq -sNaN -> -NaN Invalid_operation +precision: 211 +subtract_eq64 subtract_eq -659523529091494518004165669780399742776383806883968746260394901050731145240542453563120904651992889744317237978324019705501089903130431993 -> 0 +precision: 236 +subtract_eq65 subtract_eq -758451741904712653552666981837494823720647872763444329862121366388157498325526572450163431150323779174312784256352133709238828093950307071260780562081557888232504256308 -> 0 +precision: 50 +subtract_eq66 subtract_eq +53223051128459e375001933 -> 0E+375001933 +precision: 123 +subtract_eq67 subtract_eq +Infinity -> NaN Invalid_operation +precision: 79 +subtract_eq68 subtract_eq -Inf -> NaN Invalid_operation +precision: 108 +subtract_eq69 subtract_eq -Infinity -> NaN Invalid_operation +precision: 90 +subtract_eq70 subtract_eq -13110917766559954785645934870849694768016229279629054053e-175876701 -> 0E-175876701 +precision: 232 +subtract_eq71 subtract_eq 592724827123329320751500766118905071768607362935376105923812409893311661716874666184002081652164188444256594660308294639761258845656328252148489975494774447912011040456893201430691341611681749 -> 0 +precision: 281 +subtract_eq72 subtract_eq -74325985524385419906.78261197100230469690438162421900203638279187114 -> 0E-47 +precision: 91 +subtract_eq73 subtract_eq +.5219851052 -> 0E-10 +precision: 179 +subtract_eq74 subtract_eq -21688966901917452973044867315266509574531693030805077269152156287138859345255776425038854543.148978084716379911356724479814908005587949e+389754405 -> 0E+389754363 +precision: 118 +subtract_eq75 subtract_eq +352458526057101.65282289448920 -> 0E-14 +precision: 276 +subtract_eq76 subtract_eq -Inf -> NaN Invalid_operation +precision: 298 +subtract_eq77 subtract_eq -49089516713724335980773372349422180642533976365826056430044789049191604846903426487987785760305319197553483133961584730351040637450679345197893658007750141084026 -> 0 +precision: 271 +subtract_eq78 subtract_eq +.9165987320776988604542543005148927647992887963923331720216606237245980965099745680857380866298029513674826849351051046985376556968190203687245538121377507354774022074456146382060232917152145014413970879460211259893212214472983802787423315855572706130496814 -> 0E-256 +precision: 102 +subtract_eq79 subtract_eq Infinity -> NaN Invalid_operation +precision: 26 +subtract_eq80 subtract_eq -875064.42316832576 -> 0E-11 +precision: 294 +subtract_eq81 subtract_eq -Infinity -> NaN Invalid_operation +precision: 186 +subtract_eq82 subtract_eq -18486.67228238716789548444032480327915222485066788726400961320840035812224544877204911398969565356250521820827501877403027837300576411161449591571109094178123975225362228741180719904 -> 0E-176 +precision: 203 +subtract_eq83 subtract_eq +7090413797206016022307797799814 -> 0 +precision: 132 +subtract_eq84 subtract_eq -4233012281757742696744880729990596936695780407037980021152312685725.347040277449446135 -> 0E-18 +precision: 266 +subtract_eq85 subtract_eq 354988173436847910529293850269444734033125047862259695048868344080925480685010249325998.56419164331527975684E-160937522 -> 0E-160937542 +precision: 107 +subtract_eq86 subtract_eq -9509723875142094709622386775921905708816.594757137228869487803234e+271353563 -> 0E+271353539 +precision: 110 +subtract_eq87 subtract_eq -15652769761458911682614053419656680583759248187686533460363471140657233 -> 0 +precision: 145 +subtract_eq88 subtract_eq 2705666486297163357594911092974214113984646045059798797399409607861313445760508740941294924011573248690232281E-173938906 -> 0E-173938906 +precision: 174 +subtract_eq89 subtract_eq -649777430141529441115920528640986122649598021918973274138559967143177247308027943074275523733179973978465052242055330245474224115636215161397731767339533378E-189633645 -> 0E-189633645 +precision: 97 +subtract_eq90 subtract_eq 58197384589709307992685616379085554162003339711093143914941264901036549251183704091 -> 0 +precision: 250 +subtract_eq91 subtract_eq -.26203093531334752254041929609681161783546715139840861410222e-365927753 -> 0E-365927812 +precision: 292 +subtract_eq92 subtract_eq +NaN -> NaN +precision: 124 +subtract_eq93 subtract_eq +8676552223939835291918165880929525695338268118512315691140014547000302833967897744586553538221931673214600554884785531459 -> 0 +precision: 8 +subtract_eq94 subtract_eq 5612 -> 0 +precision: 115 +subtract_eq95 subtract_eq 189.e-407634206 -> 0E-407634206 +precision: 29 +subtract_eq96 subtract_eq 426101300295420544587421E-79791903 -> 0E-79791903 +precision: 67 +subtract_eq97 subtract_eq -4455991746618922963260236997038066432547374042861936223226294659398 -> 0 +precision: 129 +subtract_eq98 subtract_eq -.75082176424768542833122551238117139905228318521682275623747526787760942295428612113929441343020163705289545 -> 0E-107 +precision: 292 +subtract_eq99 subtract_eq -Infinity -> NaN Invalid_operation +precision: 65 +samequantum_eq0 samequantum_eq 6636023718924230245771726417014590970982891492 -> 1 +precision: 141 +samequantum_eq1 samequantum_eq -659081287982687032640963310 -> 1 +precision: 116 +samequantum_eq2 samequantum_eq +.956099822146866314870e+96185702 -> 1 +precision: 149 +samequantum_eq3 samequantum_eq -17322291811668211169796873906973661143274805238972025027923756544867591724585218264945967539083295638318e340259937 -> 1 +precision: 197 +samequantum_eq4 samequantum_eq .509396036360769292103211472276406936046811061945620981180786871760740262832397290042308949488479710196346139497136968129574832908362698251025799488 -> 1 +precision: 191 +samequantum_eq5 samequantum_eq +84146237284213446821567986513125010003633236814558891298261753200123777404082423873654214050145313163988608010112516577844321123074495743480370115 -> 1 +precision: 258 +samequantum_eq6 samequantum_eq 275955838601353512494577621759462612832442472887865107845123679608218317250659719962585260805411138329795159240303527198350059521776995235155 -> 1 +precision: 157 +samequantum_eq7 samequantum_eq +409867877825863980546884946929229409061872859979460840644908465164727275265653106859513463895533459079158874501257311517113153024256E-175652516 -> 1 +precision: 147 +samequantum_eq8 samequantum_eq +3450520745012120387 -> 1 +precision: 233 +samequantum_eq9 samequantum_eq -863583145831219717539478944666925768512947040647632400477815844776449215448019536350648320339463567702567745268852434273721619912899617431564913 -> 1 +precision: 184 +samequantum_eq10 samequantum_eq 132884900172472808233684759193469.475327331839097561061203440512930482686000622791807e-268685697 -> 1 +precision: 141 +samequantum_eq11 samequantum_eq +.6110731165744071131715605852881334424188713970005216974027 -> 1 +precision: 3 +samequantum_eq12 samequantum_eq 55E-112890844 -> 1 +precision: 229 +samequantum_eq13 samequantum_eq -.8009636924284118062076836454858803719972702060711010971605774931139886447596381875917841623576031864721511037853952037633225269404894288575230072990543882433860896095089095364826600993014083450038974215902791420 -> 1 +precision: 267 +samequantum_eq14 samequantum_eq 55202514881932030952.17255907615942e384076912 -> 1 +precision: 105 +samequantum_eq15 samequantum_eq +.267886639090 -> 1 +precision: 11 +samequantum_eq16 samequantum_eq +.27844 -> 1 +precision: 235 +samequantum_eq17 samequantum_eq +9646182495399112615046112754085510349892669626965787387367544324284173841119067976808704403660205294493405152803924086698985354397619539021524892422990598930110468430458124779047933542344680220922853356938764935109939.146531985043E-2299473 -> 1 +precision: 292 +samequantum_eq18 samequantum_eq -329646180833649789359181380730260369955201414651883457765378021063854867649649673381275668665842926282585642697843189685297545288428581E+366429638 -> 1 +precision: 224 +samequantum_eq19 samequantum_eq 4768818293001023026161929156343776858975937516530388559670260546080042739474198027281711872170934577031609463260183919948708740964528077203582862489387947042177484716262 -> 1 +precision: 274 +samequantum_eq20 samequantum_eq -Infinity -> 1 +precision: 163 +samequantum_eq21 samequantum_eq -68207365541577911098741641113873006256817457201808451514767E+209696746 -> 1 +precision: 226 +samequantum_eq22 samequantum_eq -22034421469638270677732274085990679654382820855276299964792085570742291390405034443726378869480296260313033771303271469094905071578648726962170017041308730570941977507940442033468e+169075718 -> 1 +precision: 244 +samequantum_eq23 samequantum_eq .235039685254851408133013164487206930772647005842420377438877847370827300411494730413E+200895650 -> 1 +precision: 267 +samequantum_eq24 samequantum_eq -37046156342610278865737421022842913796217595538183.501432834601643969158188108046929916882028164933709952243507008158626727196017026992955247572871440510101866724910051261809550926476542174984177564596958576350482 -> 1 +precision: 162 +samequantum_eq25 samequantum_eq -NaN29692247862404002295474583605389385489408066109656694054 -> 1 +precision: 105 +samequantum_eq26 samequantum_eq +.292993135 -> 1 +precision: 235 +samequantum_eq27 samequantum_eq -Inf -> 1 +precision: 128 +samequantum_eq28 samequantum_eq +65207120311698694539729147950925766699309158708298691999790028418135871767915723656556122412491651625e57832031 -> 1 +precision: 231 +samequantum_eq29 samequantum_eq -9233325489791730990232295783171803199007579385390782332213422595915140897432438049508287498184967513240390185247513985E+61111976 -> 1 +precision: 42 +samequantum_eq30 samequantum_eq -29611140897430 -> 1 +precision: 123 +samequantum_eq31 samequantum_eq 73021811403325803065564289752873426338434122121173657354285755578925482684696750e-341987291 -> 1 +precision: 132 +samequantum_eq32 samequantum_eq 77785181196219091516566322094076286013046899681422268919778597126502937308935685230 -> 1 +precision: 141 +samequantum_eq33 samequantum_eq 341533982536562818.767688227389531654195953518805653616526871064682043294178064112019487117263517974948007850061246429932264107E211012554 -> 1 +precision: 4 +samequantum_eq34 samequantum_eq -8389E-329282299 -> 1 +precision: 136 +samequantum_eq35 samequantum_eq -40296223624677956926413576343132258024544885467759849.201577893856649377714503179054324844139350003400471282E-164183575 -> 1 +precision: 292 +samequantum_eq36 samequantum_eq 9622200771076799483566222584291083605039244517111671681385828577686644077561300820845475858005356699414758492459407 -> 1 +precision: 171 +samequantum_eq37 samequantum_eq 429549354152373289462463093983582475613365441302E+159083263 -> 1 +precision: 155 +samequantum_eq38 samequantum_eq +97726677497580231259059047653333038926827.2247802828691860690556607025486624002820502436412947446512530218200552 -> 1 +precision: 109 +samequantum_eq39 samequantum_eq +4712840883561965989631084556865362657520642204681500401383533649072798360974926327212538877473216072E171591299 -> 1 +precision: 110 +samequantum_eq40 samequantum_eq +98698847724100608215039127086241 -> 1 +precision: 95 +samequantum_eq41 samequantum_eq +75146851422435024814063890274004486193724868086410920423351613832E60313368 -> 1 +precision: 24 +samequantum_eq42 samequantum_eq +.1586655 -> 1 +precision: 163 +samequantum_eq43 samequantum_eq +215259 -> 1 +precision: 125 +samequantum_eq44 samequantum_eq .510414543541185700288421636093259649003830074921309777593729931136098850172498877836E-236561715 -> 1 +precision: 148 +samequantum_eq45 samequantum_eq -7047521360841210519607746409591594341093713379938703018332918386400398779773137978955439499347778152 -> 1 +precision: 116 +samequantum_eq46 samequantum_eq 661062352641471598065348975185380583113649876634729207082575012694210298 -> 1 +precision: 196 +samequantum_eq47 samequantum_eq 162776134353855333831263518645278339562691033327503159951505432613.83929480108965765558501027264973888101472311763 -> 1 +precision: 204 +samequantum_eq48 samequantum_eq -Inf -> 1 +precision: 91 +samequantum_eq49 samequantum_eq -.58050631153774822790173694055243609362004059700002406 -> 1 +precision: 7 +samequantum_eq50 samequantum_eq +937. -> 1 +precision: 141 +samequantum_eq51 samequantum_eq -83727364697855217097616308750449386149335340801997468168630488605543238561581071783026561055672057569693 -> 1 +precision: 197 +samequantum_eq52 samequantum_eq NaN -> 1 +precision: 298 +samequantum_eq53 samequantum_eq -86123393608017516943830004881142644470246979135410683323974109871518163695097513062138216873035133906098137665267173095086968608387255678287205325105964765394014881762504596496597391677096764354655986584431506842165100808101434450129970889216320E-12735549 -> 1 +precision: 245 +samequantum_eq54 samequantum_eq -98288247332507445214668001684766323944682028189479117.748114153493190138576569566726071944319363164076891525441811058784342327768577367017793305538694118336111910327259 -> 1 +precision: 15 +samequantum_eq55 samequantum_eq 281154915.3 -> 1 +precision: 193 +samequantum_eq56 samequantum_eq -5472399503047429253644681324875558188850525090918021117342433699058985e+354977599 -> 1 +precision: 198 +samequantum_eq57 samequantum_eq 792339587199573289036600727171448722117970652737871388348972808075872515287826811678830716055295506486988678802288 -> 1 +precision: 138 +samequantum_eq58 samequantum_eq +.137313924180090976883119754321542296386183730838576758627767926418054230482450 -> 1 +precision: 107 +samequantum_eq59 samequantum_eq 6575156871800 -> 1 +precision: 152 +samequantum_eq60 samequantum_eq -80014250060464417177182807169528523333055928790781917727750817726743912036065674252822514297572465074 -> 1 +precision: 278 +samequantum_eq61 samequantum_eq 412925898426131380613527492427249989928732293310624437424533967513397491862007752969989298456679719388001963403815964652027861685525375346605068362086479984381369644817757259894013096201021550937303557508240224E+263812712 -> 1 +precision: 39 +samequantum_eq62 samequantum_eq 4474544931139291277674181.28 -> 1 +precision: 63 +samequantum_eq63 samequantum_eq -979372402302085785729310.12823654438733758920234773048925984817 -> 1 +precision: 55 +samequantum_eq64 samequantum_eq .51823822154 -> 1 +precision: 12 +samequantum_eq65 samequantum_eq +58963 -> 1 +precision: 189 +samequantum_eq66 samequantum_eq -.9896337014234095079049369923073328464027336713012626411632621353013921196853285361957452592222044726933862473927143241246924663495849419905671686267367848047884589491e304887607 -> 1 +precision: 95 +samequantum_eq67 samequantum_eq -3838782301519245468212342602935198130078078634994905648482136973534744587985715870274347698 -> 1 +precision: 82 +samequantum_eq68 samequantum_eq +78385 -> 1 +precision: 251 +samequantum_eq69 samequantum_eq -790385580658836350106598.788782753470203642620895277914992216060606487223288955086858216261e-386263099 -> 1 +precision: 293 +samequantum_eq70 samequantum_eq -37085768638458254452455259577610787679411955797350306007681814148968648761954148303749387554.999250646395952374576447101569912e223686395 -> 1 +precision: 47 +samequantum_eq71 samequantum_eq -4767934421861945062e-224269396 -> 1 +precision: 93 +samequantum_eq72 samequantum_eq +220735962409905.7632637983104 -> 1 +precision: 159 +samequantum_eq73 samequantum_eq 21007214125622205899189081972697637543024595591615723560187802216928477087563133096220569654423968685365055907899291794 -> 1 +precision: 132 +samequantum_eq74 samequantum_eq -15754388646661812890916019755809247780283923067986857644773849979845727794.1776188451415482432224838798079944202695E+195633237 -> 1 +precision: 221 +samequantum_eq75 samequantum_eq +9173910724284584240398259860278507680348364140988998211589499304249081589481190049484715370172220 -> 1 +precision: 152 +samequantum_eq76 samequantum_eq -27654852.6589282110297027341326915430809174 -> 1 +precision: 207 +samequantum_eq77 samequantum_eq -53.6569459704255484942239E+248417561 -> 1 +precision: 233 +samequantum_eq78 samequantum_eq -9304282497063303761E+290956599 -> 1 +precision: 109 +samequantum_eq79 samequantum_eq -332234050119501343140022952097958053186197893214041613064119772547819732426150620 -> 1 +precision: 207 +samequantum_eq80 samequantum_eq -8476106210440444482771969627620796177168109409845354748464659110071505623706552420444738479077423021809075105192625199270277871587044108548440754582805.330149072509047338966912029186880954889352 -> 1 +precision: 198 +samequantum_eq81 samequantum_eq 29874290472513565770058695422422677083299476782520849483518849698389622083530665348133421186227419993360325571470976296083638532042529049626967019771228385845498 -> 1 +precision: 147 +samequantum_eq82 samequantum_eq +Inf -> 1 +precision: 126 +samequantum_eq83 samequantum_eq +87597530015351399251790076073 -> 1 +precision: 160 +samequantum_eq84 samequantum_eq +69398577 -> 1 +precision: 287 +samequantum_eq85 samequantum_eq NaN -> 1 +precision: 106 +samequantum_eq86 samequantum_eq -Infinity -> 1 +precision: 174 +samequantum_eq87 samequantum_eq -61e+112658204 -> 1 +precision: 242 +samequantum_eq88 samequantum_eq +sNaN -> 1 +precision: 292 +samequantum_eq89 samequantum_eq +Inf -> 1 +precision: 186 +samequantum_eq90 samequantum_eq -19201382543454535608999049241930464018454330008332212559522223678041846446843289161049810506499341543.9328104719646818e+276559929 -> 1 +precision: 287 +samequantum_eq91 samequantum_eq 686892402169021883.143942639770199297784573934851178719352132139801877149686701880782e237900536 -> 1 +precision: 165 +samequantum_eq92 samequantum_eq +.46127300805423420554555994480778723952998437699193246530263e+90228093 -> 1 +precision: 107 +samequantum_eq93 samequantum_eq -1059943186953767077520372189330284323518615759030124544624074882349355617299491078589060940715452387 -> 1 +precision: 214 +samequantum_eq94 samequantum_eq 628333539005452432679958649554560240496136263351381798533960885325060412538798492374377924327985577316774146807589265594876943516567E390085418 -> 1 +precision: 274 +samequantum_eq95 samequantum_eq +717867170184432434489E-309257 -> 1 +precision: 281 +samequantum_eq96 samequantum_eq -6541874e52586261 -> 1 +precision: 207 +samequantum_eq97 samequantum_eq +7946179467285238831685666582169154515417786797391811582427614436701637140764646057090631876238695748365001951751228982205798866206615904722823303105470061221294848967122670954258054433875 -> 1 +precision: 130 +samequantum_eq98 samequantum_eq -369104297433255855920185980001743277639e357916372 -> 1 +precision: 192 +samequantum_eq99 samequantum_eq .10230436545631979541026308423306426700600106122403245986318832401922118063405308206074787322577439719950304279579798445836170633987560313215748176850765682832754962300 -> 1 diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/testdata_dist/cov.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/testdata_dist/cov.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,320 @@ +rounding: half_even +precision: 28 +maxexponent: 999999999 +minexponent: -999999999 +clamp: 0 + +covx5000 power 0 123456789123456789123456789 -> 0 +covx5001 power 1 123456789123456789123456789 -> 1 +covx5002 power 1.0000000000000000000000001 123456789123456789123456789 -> 229964.1974081462595554679485 Rounded Inexact +covx5003 power 0.9999999999999999999999 123456789123456789123456789 -> 2.186618503909213300896661045E-5362 Rounded Inexact +covx5004 power 1.0000000000000 123456789123456789123456789 -> 1.000000000000000000000000000 Rounded +covx5005 power -1.0000000000000 123456789123456789123456789 -> -1.000000000000000000000000000 Rounded +covx5006 power -1.0000000000000 123456789123456789123456788 -> 1.000000000000000000000000000 Rounded +covx5007 power 2.2 123456789123456789123456788 -> Infinity Rounded Inexact Overflow +covx5008 power 1.000000001 12345676891234567891 -> Infinity Rounded Inexact Overflow +covx5009 power 2.2 2921000000.891239129 -> Infinity Rounded Inexact Overflow +covx5010 power 1.000000001 -12345676891234567891 -> 0E-1000000026 Rounded Underflow Inexact Clamped Subnormal + +rounding: down +covx5011 power 2.2 123456789123456789123456788 -> 9.999999999999999999999999999E+999999999 Rounded Inexact Overflow + +rounding: down +covx5012 power 2.2 2921000000.891239129 -> 9.999999999999999999999999999E+999999999 Rounded Inexact Overflow + +rounding: half_even +covx5013 power 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 123456789123456789123456789 -> 1.000000000000000000000000000 Rounded Inexact +cov64x5014 power 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 886013654709849645081308674925605694826283789802243405543735074189487465834742319180036014624593846860904930435131772700860508128434438694261797633151142949506896879249157245561407460593132028961535845528274694179216337505913191753559481692707154048632768140689682817292015089434518127901540034405823292330105694814088429740167992213849807871990539611516730286921977913069997289155177811836666722865837593097595894122663434590198518858183763077145744466844419991887333777433091907606368445930669616149201890911877113221697832938362507840167891889569279610082283608856758095047474422147583552867894588678340229051173869970260711800733986 -> 1.000000000000000000000000000 Inexact Rounded +covx5015 power 0.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 123456789 -> 1.000000000000000000000000000 Inexact Rounded +covx5016 power 1.000000000000000000000000001 0.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 -> 1.000000000000000000000000001 Inexact Rounded +cov64x5017 power 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 886013654709849645081308674925605694826283789802243405543735074189487465834742319180036014624593846860904930435131772700860508128434438694261797633151142949506896879249157245561407460593132028961535845528274694179216337505913191753559481692707154048632768140689682817292015089434518127901540034405823292330105694814088429740167992213849807871990539611516730286921977913069997289155177811836666722865837593097595894122663434590198518858183763077145744466844419991887333777433091907606368445930669616149201890911877113221697832938362507840167891889569279610082283608856758095047474422147583552867894588678340229051173869970260711800733986886013654709849645081308674925605694826283789802243405543735074189487465834742319180036014624593846860904930435131772700860508128434438694261797633151142949506896879249157245561407460593132028961535845528274694179216337505913191753559481692707154048632768140689682817292015089434518127901540034405823292330105694814088429740167992213849807871990539611516730286921977913069997289155177811836666722865837593097595894122663434590198518858183763077145744466844419991887333777433091907606368445930669616149201890911877113221697832938362507840167891889569279610082283608856758095047474422147583552867894588678340229051173869970260711800733986 -> 1.353383290376602920222058144E+384790841 Rounded Inexact + +rounding: down +precision: 2000 +covx5018 power 1.0000000000000 8.123 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact + +rounding: up +precision: 2000 +covx5019 power 1.0000000000000000000000000001 -1837128931739183719237129381791 -> 1.6387180602699714384289303583425572317858582373945929626280729501425490421759498243032129599433340137207097665147903323197894483360910280924870198829704172354451881837719514960550456536835995741766292786308530943610601588239315855916907161389681478006928817620668300230655737176091543879950712445069150636437006446727968929391058435852007791676985379548070706164255921176140128586367008551889970720108909090253443681847500221161773738437640908452142526886106513499133828027030461238581678104834445298889843106704348857946356070043080517004296865358930280502148790605684197973896808522723846803516949460463363998614065260638209735528022040635852409581118988850688823932968442452426287408511757866491498147478565960953314683512620234361562404334129762712702113405501703909514829357704212686428328690232088172993912329835267303574215015774525642517336971314159799071106057366225387464934859028210576633495498784298349764651756396263770276274444311357148866309699776168722179590147715895514850787586815446891245782161211475384571269273107012504162935505625922776577647827307941659360639451634287734286172410391140802854850925859952911219874083708211282966760115052685692072970657886903591215949229341693458925018766467158009065224974086957059446294199285371816342603741265609289222649179893153719245068091238973877836829273281309383904699338554759563239554227876171916403177124863342609255835355143095176693691865343091037766256054127503850816893028175263974496389604567367222418405167124365049818399268133976387986720314049059955115689858568714136392934443589882725113861023257237070414882909667862899689846763610486265918688899755080742555219658721924323617653734460903801395865162067682134212478017350578115843523768201016752494306470575094931867117947726304895109947188875478357151334143482680647178615605815616695640299882521362900188851141127422904780310419401375883915222737816752277520587484654361970441604545916118532497374658198909533842984081527196627588423374403166001728803006278450869851973E-80 Inexact Rounded + +rounding: half_even +precision: 28 +covx5020 power 236718261354938974170708190366769793275920120655037576541234643378759600302379302288819188136787458185923663870066562134144443432691985555278465118886877397421379343474146672900415187245029095949235941000058945387337815507437214559892661614721034238904768046989479658613394380534444090101627384814048092453149776154093105082682513541988859603805622919789127008589574232820852766692019214538961627978980913314382489183726758684688110313374827284243395743065079942671231438878136763091677463968189590536183677211017121945156428232095269882445589711205913177799037871552044119612537900517162421397392174102196369162740136899480833671023856474663885076777188069899083688673294567877922359833429729332243761442436236520021282257296787505140275919280569295359374547057650118609684361334256173020143489153498489798119191091836748949684627950126366422188526859898562861064743900063274580281280525423684766963275026652695659139340019977038913120584366929475374368252240455390773487649516609100788234489962449701844914368146124997194797498420791666508106753921777651003340150665156632195381714166922329410117385675279846517475782272531468728543741643426285138791697763963455811121476374840725347434349064394209917077789087888837344179854881762053542857110474238375678767771852458084765087565096836134601919731576798282951205291923236472301680858214261264510134468542387475825594631018571220733328930600017805153289971176821547965275051506079211132978852267134751816048430232533758669052717815736581395766129821654729584663329920777042867410135494705630257120092819243673792327763228839676183404117308561955965788016953480255581601203324642233130774103458521387276573388261339145006776144831369247874051268824102144213763163352340865887163501194634992350980142758082557571633518806457218477777930127752473688265147925301349601882706834465855114160739458420709980031330139718450297556110485192528350417354018135979475686345619913257708509036499261084076793542551244631368154949677330735506237798996076409511404e-1998 2.3456 -> 0.03405634383072396195307070102 Inexact Rounded + +rounding: up +precision: 3000 +covx5021 powmod 2 2 199999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 -> 4 + +rounding: half_even +precision: 4000 +cov64x5022 powmod 82347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982 4e20 347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982 -> 136718261354938974170708190366769793275920120655037576541234643378759600302379302288819188136787458185923663870066562134144443432691985555278465118886877397421379343474146672900415187245029095949235941000058945387337815507437214559892661614721034238904768046989479658613394380534444090101627384814048092453149776154093105082682513541988859603805622919789127008589574232820852766692019214538961627978980913314382489183726758684688110313374827284243395743065079942671231438878136763091677463968189590536183677211017121945156428232095269882445589711205913177799037871552044119612537900517162421397392174102196369162740136899480833671023856474663885076777188069899083688673294567877922359833429729332243761442436236520021282257296787505140275919280569295359374547057650118609684361334256173020143489153498489798119191091836748949684627950126366422188526859898562861064743900063274580281280525423684766963275026652695659139340019977038913120584366929475374368252240455390773487649516609100788234489962449701844914368146124997194797498420791666508106753921777651003340150665156632195381714166922329410117385675279846517475782272531468728543741643426285138791697763963455811121476374840725347434349064394209917077789087888837344179854881762053542857110474238375678767771852458084765087565096836134601919731576798282951205291923236472301680858214261264510134468542387475825594631018571220733328930600017805153289971176821547965275051506079211132978852267134751816048430232533758669052717815736581395766129821654729584663329920777042867410135494705630257120092819243673792327763228839676183404117308561955965788016953480255581601203324642233130774103458521387276573388261339145006776144831369247874051268824102144213763163352340865887163501194634992350980142758082557571633518806457218477777930127752473688265147925301349601882706834465855114160739458420709980031330139718450297556110485192528350417354018135979475686345619913257708509036499261084076793542551244631368154949677330735506237798996076409511404 + +rounding: down +precision: 2000 +cov64x5023 ln 3090669527199124950211484462400831836597633794079395097583113449713642252005016307362142399255803834315815195895539373772453675419762701364143154504732054883780162156859387803131616519272822548033800825773910205364267910284317668969273920152549586584700051081503762914319871159826475751001948381334541023373062711463094627669033222882628571004321894816073610975081890754988618072037540154167081847486061957875988064896324189643448421885601754308515705080447005348594627093704709305477030876818002514915117425862920011301486865067913971588625062612622539695282366278338992371838326428833826086872661157698975234736194485311534893654611174814510241524322793669255264033709791093181090473021309498329489250414764320755071043151064103348880601725318073943909045752329741728591494006192220834603155817982839626442422965665008047212423696488806077059677600344463924688351994548227503966708259345984762118458065877199459293493064054924394895089106443080113123512193071857385844529029829482853845173672049413639376258642295469823675207196002490925078769885778176171693455062903559091550897523190939564303211332336433325898494960424122719944154467969049053725657328956890492128812387415865584277804005293053122665352787245554719984397759220206838712631284331834404723534666035503221111101237803043540189890013828544966290427684778394405577688089180721053995961712982703753222628657737214555491815016805042331027641781975719446725179224588406847565361765243643519601019037818472522161651521599880804306506731981694821720391975928884084089002241551161576747840074759724267866193732048110395047077374488163267401663950496382216424903252259005975121006666071158366676229620218737499355065050800462142892611568317102046732760919453156922817355359801809762149602851329651183499302861066078161710616035105874926588164949816046966110587970518522287152829933065755489018049207548321713643933775272385746943092386706029262667034542084189566514534009150539174993128396183730102139222759337832183578510718500767948800939553299419177752304494039855567370934909592724611265413134782721310840497368577532580208585911172957274915145512966362727561421991632170686846353997584474509862776789586379074007319896438374820466350145266929756072405694230859880171877629829457486608767491112065605753547135126922451755529626220452749942537032259593453703346624957327105503306728286380218022030202524920417001978910299715446239913668784016852633970229806408209900328645880115020014110835767145817098651324709976544088694019194793067004852459945411330697034030383603412420432312354029080037288471884139426822791216960425520800418725055767305027401719165696521221826669013459692382737858522923330671622936243364652903400062577044083152075777028015738890516580170523588571577122036516338024200738082001863290495909944408089683727409086173683091774909453678156659727245641014428835214291592165161019718702159019867330214071718576347205248464069770331632058966119545856117179176021562593622743828469291152728803905282300558924810460748993001926191389074544733861986284147383981899725611354858287087947123558094965200647197147491762183837337953836632481537634866518178789070072223606740625021800001455843924946139772564704404352331389462908920732072548805189174339095256118635724923674521499751881963687591313498878748714894911440809836745881716316146765677725286874484515441936374872430295736480669633218405401018695095492626516527007062380243856522102071916365153281529409298894463902088048061084680681278822218953859884599146297934495523199275519078074845501347609803661677858450336024369159160755726688107209506651654605053544231042444604184718446694881513522219162990216983500101838090461858991237522845323701464643696759896666803973134054006960200313575408701168596369172066743474003403487397288198312769256226532233281701021559938373960270980911462701678942932151541501041813998863396336150086553353616767982429724998639540850145259767923526237704184282455389123194876983069301310168011939845519061575037112113582288389860598352216245 -> 9209.1661746260965778250467841406323088790604539004805358645618673052361821619591556278382110578480422097498170907651248666810006951058813234762423133451536090711870153042381571929251205316301784251397520164557128937039054319405608450075442662024761468207888542894288300341151747308491927464822096370261074473735958842918965599776083319935502491034001481295960125701574447762346705849349638836971006507768813742893030670821204268632837428818193054629902238022699331545925331353601573370221485860275318458200050370532692261264858937308653108305648462108163700505168011019130185410746848404086923923391142863805885168928582748686680052455683805806692567541802470931422006938012938636508340725670727912043544993602197406153746096141685797835034237390196923966832442086545660687722765970040051572607961678796479132096067338256626132517618941620685157975252153640589488963382208192634727818599399847437422291859041002245547056315521874981031112051847960348242652378209938161770429701712683735341108110805365815211032482661080827982802675112247723887220629885867370380930971032095682519650816823548483402139643033120154083898556582689757664770448096314292328623952771343066451248960695809354495978581981261918185850614040216253046134677722286301604333439596640238172051979885167511563998416626180310042698156557811325075504403134868281423381346255360223678667446257362019883337111806758165857287980632878841955877151122243940027878665448190341211582808769337235690021074049152468411926867777124305161497737283609530238024370766619970294656303232915538542686891027791533723156991184326366965180595197692414232854592035718878398934026270529724699127002405367517458173438807821062623143156762489141016222003428043937179720400816221828389440741860596179954983589462984243644500567784346729144777197726988035117341417324957297446708861149092685684624038475044307165276513078390265378501162824248253627175737219545033578397220725199068668782034170716307250739023001491782556041702470142513252196970027313396590024 Inexact Rounded + +rounding: half_even +precision: 100 +covx5024 exp 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 -> 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427 Rounded Inexact + +rounding: half_even +precision: 5000 +covx5025 exp 1e20 -> Infinity Rounded Inexact Overflow + +rounding: half_even +precision: 5000 +covx5026 exp -1e20 -> 0E-1000004998 Rounded Subnormal Clamped Underflow Inexact + +rounding: down +precision: 4 +maxexponent: 4 +minexponent: -4 +covx5027 ln 1.000000000000000000001 -> 0E-7 Subnormal Inexact Clamped Underflow Rounded +covx5028 ln 1e999999999 -> Infinity Inexact Overflow Rounded + +rounding: half_even +precision: 1 +maxexponent: 1 +minexponent: -1 +covx5029 log10 1.000000000000000000001 -> 0.0 Subnormal Inexact Clamped Underflow Rounded + +rounding: half_even +covx5030 log10 12345e100 -> Infinity Inexact Overflow Rounded + +rounding: half_up +precision: 28 +maxexponent: 999999999 +minexponent: -999999999 +covx5031 log10 177.82794100389228012254211972400046751027254035861481049206983723942104337400734839183756638300367799 -> 2.250000000000000000000000001 Inexact Rounded + +rounding: half_even +precision: 100 +maxexponent: 999999999 +minexponent: -999999999 +covx5032 log10 82347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982347298379878237918731983712837239846234982364923490982 -> 1999.915649355564577672566064055132700003763824026110322372742140189117052974715767584842563507422886 Rounded Inexact + +precision: 28 +covx5033 squareroot 199999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 -> 4.472135954999579392818347337E+1304 Inexact Rounded + +rounding: half_even +precision: 10000 +covx5034 rotate 1234 12345678901234567890 -> NaN Invalid_operation +covx5035 rotate 282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234 1238 -> 28237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +rounding: half_even +precision: 2000 +covx5036 rotate 282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234 1238 -> 23423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423471369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741 + +rounding: half_even +precision: 10000 +covx5037 rotate 282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234 6000 -> 3741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234282374623861392871369438712649123741234234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912374123423428237462386139287136943871264912 + +rounding: half_even +precision: 28 +covx5038 divmod 4999999999999999999500000000000000000100000000000000000000000000000000000000 50000000000000000005000000000000000002000000000000000004 -> 99999999999999999979 5.000000000000000000500000000E+55 Inexact Rounded + +rounding: half_even +precision: 28 +covx5039 divide 238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253 123456789 -> 1.933813283142728776635276522E+4506 Rounded Inexact + +rounding: half_even +precision: 5000 +covx5040 divmod 1e7888 238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253e4000 -> 0 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+7888 + +rounding: half_even +precision: 5000 +covx5041 divmod 238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253e4000 1e7888 -> 238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413 9.85124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253238742378462349123461289463487123462893429384729348724723467823563785643788923123903239408234791234194743465385063485734568394175684137563478517845689417561843751573485174564872869508712456413564139851243951204812532387423784623491234612894634871234628934293847293487247234678235637856437889231239032394082347912341947434653850634857345683941756841375634785178456894175618437515734851745648728695087124564135641398512439512048125323874237846234912346128946348712346289342938472934872472346782356378564378892312390323940823479123419474346538506348573456839417568413756347851784568941756184375157348517456487286950871245641356413985124395120481253E+7887 + +rounding: half_even +precision: 22528 +covx5042 divide 1.879128312831e10041 238415910539576618300458744937507028296975516154295237040265857458166748114788276996837973417169372223169621084725639358254048968484877235228953857348742406945678055591448396567598433052146122040368180122106476041488977053304861085410168135322951129710848874205427981505933086588280349234951855766793967513329325848657111896344929119929366683790876656956256370293468458414301372750727419489235316558816812645913595190055612762415284019799993235384242626362068172184094530041815449756083497153850453714598513979596496469158592114517829621611656618476030639847540984299296170198277060244321355509638164759441021953868138146507940096518259161846649244394704735754237357123414417807654469160136457926083659136920034296682454622317265571725063854676386820188282180039627269042378205994391859304798547684609930936274528310591119436482946870003379027705168253183574020672622200957961280794658888641589642645786184370941056354245209305484625042258754364574502048815704253466770992360289921607491667983069782678436889539284799308886218573938666782998559617228540476120433680729438851285177089637319061657828836828176031510713814456055510710012614090084581914449315107846691999946216326282294105946124082411802426823510540967187206832835934985540937177841297998629286823404511511550164078541923392512413103022166671021829516408181841475265583772752472686660120600104271213274947262406742444561418724884438131266947548391154737210633896480426767447344719326992255138428038649821100186666183617364586614663462569331298179408877920615152284847961260597589585000735163185164728749097998406044375680741233902710525751412088338087068599026842898747836444196872155970894995490451145309449398997265858745695672470068103943314676004317174319990288641548938027180004928420802381546796375121994539367715913292851893567750885508905610680360647581157076709083370611490554602886665381397011153843074642232843046385686387241666845264146344238425843579829454335442470806436299344555516036837193874131067392080883120012032076441154630982788629715661398673987405588152413391779879150970815816818980332366440811976577727429686877766867523977775276251574381388434566799988793930494828355457308684781781596870692009455072895148823398144242702512150847683532018306796860312269253422529689247190335050430527893128861530683581187428274325273598746472584995014842910009284588559062366356593966070969758494530313975324850124333793784800886823441120078002308253796216228278591748484613901989671763457470198189442304942275082790686758176158979906592229010139515292806056156496992114601565585881512690628946026284769722877471925915479796866197490039064455850279683425087683386255528264037386484803262569949547235075747498685616150252016940299064493801498491054304064044241779811712028490331834964704327328873564941246713127778578713881920338104859398357700008082105825124353024285740177232136332577567674621615877000749032995975725469935194729522071990052527822074018406345492729106374682132481825284230532302903305952316275167293790366533902770475522914491450188360759990836607147358729239662023137066789900504768927717532034937893126476744831812434936531668957059999425721091246294364950189124842397546452344169280965826394326407957388074502417957397337905117093862159825686568316658664837158640966779852698942186144564235544424833300637278434325288825174739766167830903639141040613613268384294323529696146508875464398687361010153292697144133070305130743696010072023062886461667548392645435734274885893480458655637879657649662467479984544513153905224622446957160335346742467758010853484516806994218120949393926978960081478986304863972909888266795303676960391780955835654660019289629604593930969377384708721021863130381218110868781482642516701823133934433284684505836741404253874274662758645264985033428810781969004462836298431712789219854794595699082155311530803350102984061022547783920121828736977563233531202844213235479415620073373403214980587194478434223343657922219107655352353467755866441042804006960709109485969852166693383478877466077764378552407720048830514611018300902376846591186429356552779538526524323318336227942163431430676673198763326894759930620325363701998731083890504745254777590149844392607504489492691315794079226269441957265417274922617326287890625251417700091538004803783803650150747486693852563415708738222401649147627433962071649319594533473321121594480057087988034031098181409378500065277202773087804583288445251610994250917458087258964388763704698710230024321731234298599938104800568277413454124552947798111983443651828174386713904826359380279097993490728653984054966050438282703807471235087008232048253736360085068150525522626161294095014720835247288031648168550768192115102017799273109551875883694400881181658497073189119259460028239605612874429668248690763230030150355648174458688280814058253484339560291131473429711573651545804178078893220258149470776020733250111193152918384875805198999037104273872188655565963496802747653573398864073718512723222469428747648542691195619598383595647973559048307153185425007135373414337741369365248300171083446086020801146548281852175941404677737205644369290604137127554303137974085689407784865918740348148626843422162888421454961068287669125573683468000766009604475411492189169182568320845364773670721289170292666321000633016172099127868809336290496715683571593154252920132809410879581649387955313487213053131247741773638605152104209176273051754856966250932135000900370835151090941662753781890829785906307527423346082368112357100717125367307944675718540601569241794782078639236400217238397361594017452416074121672460650501950848756465445568588505986938652967235953770327436278325902908863598277478294845860488510897182350543152168764673948660457664311791421452296772916412163889307221862598832088904667658671891483549191483399874226001712799661712350948490223500915059418552053349524905701198975810055734510098919905232111130910594609461737772138514517000459803129568449053228988519755337790374013997596799106739548343790146393676836929773432671818050093076588469352805808776700173367007064710704039937655034920987298137476784002968263947778047261364254578746925718846539100021059407994433513713137217106055549221352225794533575570486547456576646546613472234947398951356534156658354411128740454631242091666861457671231415913682370494597582948171696470476523593217335154217625952408981331077512807629093157585830711526555261838576256910807496015686832008796792838865673370701732425608382353544646219861030267135638842622742122257598922306212684853682569925721071883638947073568472078404516689838397328456682665903609549494205646545266490101528346559248123473286983431801949580517003177871932574745247159623052077550329600974443180003821208180400437090035010590159884392419941621969382512888344635303928334636924565338476191395159105692109486375981973375395960132586638497683567965937506651078019184300918913081900495930642090334160018255896052499456752667587262167526308797604877763216278843656487383164064195505394126830095726226338029117466898129299717391289468780972287128523807308954355400417556049495316776944500327641186464276691510003527286513249347949122249222870147468404046735402857713418553020080160487936783797660272396817580540833317821603564852593792226111733918785291558221687644409930939901303973898017869749421414852190739031440943070558545527469364793904709175107369925012406884352947523543569009507536734985242723199815985531378213782727693937642530210329576840541452800285297925765546271760886134799189722553104510196853903706681249844379204899446525530957623085545745085408533922953490610830579249697806252488918205889383190722807855844636604408667396886612658388583422077167168796442352616743045357197462744824059520659232873600381462584209839738155553564564578397702756087298481422176526316029007222570844989423535914430514160158873731282415416186947656015986760258513947791115261557056252750781929228970291322234994699328108322591881180776167980632699957795799438166467919558794064826863164575794627698841749849203511830004058949911009451089362935865180173480919578703652120092330593676752868859402538634460011540862321910426510600449977154219405350947555123319927040922326563089114838682449591081873461970778372492279938376415218498231397895000600437754429723078006535416148880722866636344152634505648491715835432389879407663780436734899050819970415128633891477793216628529848154067753946426205306389659971248721437542932911237767778360709243047106643915967267184362274338857657528678659707598480827525329103956611827091098968364066481631293306424133190597455656411245166952796713241685194480470200207760756779147149481374016012359968195733244300933976270962336024068996700669548293058362303427022134630659217093272256585548001630841254460012511502734020794373910720813471516846765607203209749826434953406697950805664728076331836333809203623367457967451516487166907820715106253551737288704308173534702598384214576449852679179676323889553485669290656827767072594686840727605050272405793178494440304884853041452579721713497043482846075484629473652267517162690685597768420465948355397451238879124992001290192789209664493329097105138535421207069907359404620969916377077974553332462782019526139521821068010851762955010500746343666826568983015842995093280646757620156253837661482901392547275399433091123746669343547760639922069496730692258309586149593584448182289378554603946904221248904834984652897907348490995771539706600233511960058676222317129100021736918172322048878652634449495839327638637749942303786630407741397100568824632285986845282764981187149835571218158037662024930531864346878481390924728001190115286544590018289677168359297711675052060292346818366004407210553145650875219457657103919201907345854488913764782268328945543966108792694482423822146339646044831040571291785809161646822180565617660755673521767082301895151664344743531880674868782539380562394991630766927396634279677051351306996279695041881948724538447854846034592960141566758264377471800560740976029587125638337642866513244258403889764781010450862850799749830677342583700353172911775330545042879159885094157550751783586.0424929809191341658578962470020502981120534446166287652314402992860195537686977230296823500664128874899363987871432850168107288075865112750218548885501450543639275301484141927770650254579854422221119403699475353181229798774225240379366431797987271708990754275932151977851108099016345566782238655498771263660992622294130477118774553243139308146625392694333594540740076255783064890828163409651720927271074044952444078162825219593015420025761919120982205547741273922997962643655009611063671143069095915646848977645068582749601889559317426163395608954149255376192082370730423125362395257593264496930546328329874067649297970449578942054947346320523091653859382293639190764297594222644460330254593710321862259844113375036980779113369641336886975869806546613245072488152278961583040053985393403592588935848244493657074644782044837475340429962356983040932127217996477117645651627950470770243571853932580642540056851281689630264118429876538918303856285945193325661465163468143304489180108374772912499256862416276072928216910773366542949316935593034684171956470598222819701137317004528274079522432534853264805680570656778137753583391120071607795886017586793620311729799277803337536544522078571887880609499954111604957913389151993158097977062593587257773078695062526039423256281621134400890928667558865100506375920397896870294276640611600006595915265150369118526650747359767668764113673259043173162193115551749230025054292970459193137218938114568440638273584636502593479178108801424474889593939916878664827313710656098979587765978178892302170021405588267214705038086523006025525074324030255645207730239812269728001458124067057194325755844295407475751609306074629551046002389312497861728568304537908648149221249560515529411040243801380511696881108493880951789908936855509571078943041432677710535835951293812438537428874212820365071932106816083249050943909637751266824297618010098586400031073281683563177057769060375719630979193531615172505686898562504223164832440175691615166965230668359745273142796733333922687197340028361826365443084259841453017557802654206481670877068906830852323340664520149536800588355264916639646023305046596014512033450215054769372894384591020101044598944366125651122096172678956810239167589426445209446337523026207620344018616181329878691567347973896652345345035145572455296886374443423751651186920814136688730377113130627614883333182239801320229836490652112530557449479905618821959720206980332156750130565198604696930747287502450339999085064212098781169297735174494977109858323721644699855560604456305833011120550928285148744093659084027170449373704693812654285246835703489789393476003691867950606128738201547757141061372884658672136558459807394450947644795165784717450707578891973393367257961371800962551583390090990107369360735724400968869842586179653726498847104468666184205892912556002386197446527496873238302344072937199116935600120737440517519754092578327818399933322319589873031693791799630587417056403984637652014989386579803047461675019360840010591384088993285008750777135231174017155332654229670248257491106892705821678875007177738126368326370970520618315236298225076996100582746317813841753871679759989826441096171437120113306227647589079013038371175484761279821038096002710193830798940965703100564864276465638983525921594018597755205302093476111307760779206022270152816860061847450504064717523432695005479280484232812187047205996875393158247456952959135728343586096249678191797720369958805994697509384246096265539806192087593567798422196474733614550836125268384033728715193719729269077231322648258917688403959677933824272199732236088288475303432387254461349920098857914323307901337095462794922891515878277519214287203701202642663644802233499691113489892331583126986358308548999995773650009746434962487022107725862459751081627646421438817987222592833662429071602313884928590825986168622193491604289652563318931002077309774668167950927913906783846370283195613924720214955888982584447064513719217343839761344849510147778972327734081446127155148197732022226035975845690441816486138168160605602349242350679521318353462411910186379387350261400133382315935773932616027140038150058254775963700181412431809383722635189835046988975523531796334470724930871856970602405121935042307265466498015545917535952119721600949884097921820634050847721627316020912063108864523168412129899028839449893506396761709530688594023338615602786648064612339922348076248031705835025989996923280136248732697021126314224955985978763322909984165175880550248044887949216652503161571725926784068265445293085145802621112289580113949761887875148696667920352044974171902201074486519795484307493817338806768439425071702442014331594304256280974808796952901790188620516583637688052293206126915685331540394247272747042471499345463380507741464328118790919242252811283462293841166327504775557179268875952620972477923925390071117955665011361974276230051674323261988737327638001851767059147733134324135261140854305481889887740295543196761494132921805851805966688649736149811651317932143526414525356582078395576296938085062564256533243526672968154149675067022950247648886732685295901511417916426093538501534514603576742429108672370870949565993238715707982555163197008205835194778356437211510089448672246283026230384073348966449681414232796749913690745009783250240143988484852256571885903581100750805295060116747654815069460155680550259805501223828145506114764628204982629081835144026289108197796727620369139548451314827586991089357564028734745862715782196476710872018462491432059529345115377023515948029063020250135947415690765233293310512397982758529795750557016096169191097462089770121192763068446286219051539268757326637935952592918431276602192056689221723852424805750744110344640455203562947960290701056933582503762119250559956688332272925860269609913699352943361560803824433910522553375768567512488636962575475944833146657977614656414854244545253413192774497881116780194041981868157464528783978501302804706330404782004723016717761255509308496488327201499030603458374132162985294096911834654266578598257084838926783155924481541143260762831865693431967186175603584353760573227532105104271089633262737260970208818892106633589564145570557821293568292992465160928593277238768457650161039675765837760095394349502855543132489926628259286112612844643184781444920349748289120760247015668622900416912644347692339228909622711130351437179664609690252741359864515187557164466345913573849232073657685880017011508724103626014225570543984132985659565804222732604102627985513585361836378642450721255013911862715473435253890280908955439973828640549804536260310486499221529207515992927041540701476455159168525622817814876619758328626943145873222349916743765675478284629688991499748376462388027801772710358313684774536680167455635018929618015205007737598503700669357542748911320863353660195295830694751058493541896936057304947864708573619226527466690759721267543477518976801983552105292388456298158766441947771166057447485531422666250425574790116609808342372754378312098559412749983124765955325314521989697778725629424578269407175104826974353479754741993956840109961222604086184535752654930841771800362402641800748952205976923007865192315565801417672312014136389118372801300560577050819285385408208976133547508218786282332089956312448949191798475178663334770035902712337327846299642773609206447408513485954608640416357753762592269826019806172700378336688052971432511978452824438763743070169803613087944533011029290659233771368211649118312482310640818342788676352237955979462236594098231415445595053791497982787954422464445847943155773763428531676565258529079953203992536539966102382066784018551097847332250107376187132232666897696421366908750312960021542582185931303911343443457861667648062007665009358743098544680067163256229514696326800624992719690812940160093869922607895144180867160936356014748618877036653673438985521269108229154569298384252587616019914502987893102375988947153772001248783081243611003536765844815778423020926332768274384417664163712898023265647235422387736147890647654109415044144642437839880107586654573980654491253537484778339828820086252614532828441173481664293190993966244835725095869091705741167316191141142555569118776545015066151204877419052841640812991897440502690553857238150438801696060046640258457406163471286293942495008713893511967185825372404722693170872195016339264554344847373708758943885710868443509534278596127374140351259149024700332147002679249888393650277128468613633185618511998002644442666827782463160725507127293068641653971559049458630206786459457874568489155356224080809042058008770442963923709289278731441176292599099440143180357150030444676388155646930710447587699454888960183690293964212100842968148992473563411205449718442876137881707026376987383323096205807640644204823721213722539499924852964588322980572967573929426505684916344619320256615918343754957652259598802258545248045940953418274364294480612513872863560592608840980084866916507234274363710945855988466887009681742581303770862739386368052522729421094357287932828601830096091448980281533976726013391347112411506718525593922606238348390743407108104129550584493298390678043081253247242799666584577361744761765289178237259672999672772529958785656058081721775221078032911912233908035291415749714281815434957746262321229272885771311129188538421564910336497476166207559978492180070202608921358928301927947512355938859438586327275288046582170659925769591175743077741058111951469654050830516445312050347602593797446796351668674012480726409879370035151377676819090670368965444438222504191760429768928561902073545158489504679884953627465756915856890058296145875315178769924036865808926322192641712721997427912035195890889185174728536414236633622015976186616215774692532715682845876840187797108655245520174721744258320667696062011898649918139959122149995882479813746576633199718295703383789012925975925272010687563771492639305049056887751170939838843692748123245591220848941302341297740248148966754260425750291256081427969583476875844627749768143445506100628862284952540768704758312612031995152646518781117379020308150675669610042845091569692068989093079423631548554098382983638885098372129220920020001577462457124042548040800008891197467634222190355292260002295022634891871143895963778194824068480929952760363004315351606967526102826502561468014880824596254434523149328833148992014960460819924756385769348311438165110279171536219037528624054163385111751368027586197546958957051094587726483390306565835371108431858283897912060140791720188781841990228331376625859758638288904087305149296316250488663900074856027493970239710591113399349940102032259169511575090015805659475120364905549477485137525721969072047750447577211253869205557286398945680089366713097718725622727815791667532616689737711248071692431043480220825211620561622182230708908012280504319406468563091527921519348793253942554251249708559699335286329604343198413928263176555206992451342913394233449372482322039822969545832508556087946568605824045945954557532998820586891666562965562671914365823829607918777466303993930397468697130886525658052873079592473364933616515526725771541198729260244342512576378588063374603943683055527692078218096003946563489671116695709314431722195862047324013661148966510584738265707148158075490715667285210336051688892291426219442711554203528331797744043429823340345366505022990304539293610849777209471172211891379612783413245674978567446440713963876715175885088809454431877519819733263538710198200616097782093629461151339758518785465131765779400136089947772452225559470213967430052904850791317173616337731369307791150717361452632869607397118541766891734971687071133941554325602645972203733186743552803655690491437035934333244271999234674529691408303048860022468560984999441424540045731360825869088698067648026694305607819727064538812639270842739395280031646959828675586120683298819423748572453337863779793980392624808459475765161825511119982793561077426212502817082111425060254142326891388010475245528677477780161238978173543287729999562828956871413724179301637550984488108289741592551914394776256655753790377359886060870663339467889752205588867833372512245329667267019468850512947928850819352980011276904922251885869325139279554818075266345815322024985928215828133536048184602113842971033761653898630972942339282687411851267651787222696971694318731398649376665906143099510887757765415058472148264188178955990262475011055337174863469898517491676171436650636826248634693940424754130611553946557913567908288255043877340475149179416898946827557715094594360982651035507583011306320404779236347355560341630417982429200224150907940253562792224 -> 7.881723617262817000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 Inexact Rounded +covx5043 divmod 3.8991237181E+32547 909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649239098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649239098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649234909823472983798782379187319837128372398462349823649239098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098234729837987823791873198371283723984623498236492349098 -> 4285582680465127610131686790700743110909317830410442048607602746907574655676660845016010423096284928403038178000855704866976492545904159646255410430610059165977010501440556334840682351702709540054239935908479401122386000854551587882853617364717062929627803335453109474090118840392447504201419940980207678719705160324865505990984254724253818233965768014844677822335541847790646439322894401304241246278952790466202573588453986671217242854282992617047150620235666929645312669586582717889349050777477405830496178908716162434240698027142652971083757953925619367602837873852493632195088299594119745478474484665581987164551860544465022823208387348561248079681838946567103710833398382698541436342604329895070698892262069125676020688917706956553472211278777278637177209561081147903052171024021241760503265412676393346617389242852309723453578567430872446953314997062594442354408852410402752764015274328139327107692088093599167667482347799566653577678186656488033115818003201007638884571252515246133729479513564387978192881166321152245747507282603012432424051333831529662967737383458814877143046636094959211015670070884233863571963664817434960232222713841664522528365427027211342876316804774667000267071790024569941339103155833130618255879599702105034679731808605527143842448750008045079980832691606127442437831345524883028360490582697538599429071868141520128760700311530166744524555296611315528677952732000515387742526764930603406050890911274115324183680812731394927407998124991103253414798586898881096615392083331644415415118016461022479339915849408081362708018571029728478316462675191012028033043558033345514718975412048864831530643375793346258244054558027381862406303395425983635199167254560789635289676234223177632386909682965387998560550251591592857018008146189060442460628086014065572289221130317144379031944882352363269960146979347605951284662061689894866616974392869930270044801903239065550402742221316064408824788489569353929144866791104045542831900966341038281621385870829615644273540843414913829078239102015189449226946368367328105689080337640344022246100253044674087320192125603927529483272540894976933068065223908154392398204296119088766426963363475193227233864321206237056004036410306487264165720524393913619043198791865981714074562946624934863447658422831302974468855919891411335957657114849127015391338109834486517978322124174965701829623278524472097824953469744153130996114705168532745441000047942668164719270830619427955487745727437668983636681409738903479777639736130368979039673516161547224295512403573355337455705072504242754359276994424835551462840886600242768875963567226952909701812418096548005064326342968331388861990232686075064800614914560510167463755966119006910948279406918242011432717450574702153882214466396028811900056055383143734311892822068686984418766197982224847109228433516840053568261501959062304238173158548295455948111263150682027355996668713422217394831184919074800832728346284506742633010135178687945669191912996665952765030627971653127712759146128406191870948872975135562254044994667435726979356793547460226259638130723206745046050709834967372416179301697416572929281665787775627782157339512436371659154462671674916895251058783597705042846228256289379496203273858210992077847704618734728252183261701638596574936676441907743866259422025398661568064543686091612435503748928407074275572745379746817718535591128245468429196474561594522654928144027441841318387746669909669253979551353497688756643989264822825594307282009319943451105722093997201140828822789262664891140016587432286017092064834640470837448060724411091454426045348742231676227951684466357136211067978002619650244249800076891453239855791751342353055919647133395825906254623732772062603752304745363803559620844041024632900827511918663897643630587971487249631538160677656937911852657284609976883530955731334346933769541946540568524381368869992341040424861912561226815836710150451364444075657098230933889546474442140188162096483411639727453216703150194243727486653175005513670421387087062303495260806214818570432674241181208470092984157901311553300858554983248128242646723369774345586876182309877425575226938128705670973990624536804373001676440620600671774960014062546216565953015043477284042912717357581538310381215057186177504082682686719304224610240756343891824031187603079946712832877213411064207268761891614575260786909127544970253624276175816290124113332135807166951338342612431574732161542504620724791917621160651767296888084723826746397998957174673150359064314058013897490227291232793202823189933198733233834148282183550206214577497422568404816710946556814568531653189037321052494066856782752774081123270400934195868369132984045899578494040892262661484789780717268056357784412135579890579615447320553392402682897705854460550042554123722633758147135196497969268197379420733522615710122585540941094072850386720449600476335928570895443534363011370917047077558795633006826242627805555749810052194888799603120324973891940624191040418045487841954646958982664155920842212993403700142170234916014921686550494572926836232779818547685487221591361218709793997907672716139680586003447142222420648059961517244525948247503859456812417852373418723056785633173441547950700572644026761071641381494952190774468837749002302282429064859541309790176740475727785537287514982907886794800724783656194791132415366103549294882835288467876367075693693305889254747381400816792318261283266321235612135107324181265680172232493144885097881912756664531748234723446415653470294979554290012193715172669668729019322948198093953177284448482313525179974134423686969188649912913789092138212350355137624233133416520318674451096481024201133396300678206906214720665342932772671459339366870380473047263120388156085208157380206930849253357147608993673679121665469954481073645701312118081542423057625050200945082342959315312385368940991562826939969845307302845653145207972369998607786276096836830429297136772911166633212241559730335946095601021002648509766816155542046511260615038479523035281565092887437291026705531471225625998697807827978675919739856661729530608972402027503759552933176461356831278344116536047207646756651652197069397242308106853389488958225543983261893490771870294096609592634974701937777286144660773280350073634880472141702034248318747483242759949121631545438363167125152916446542616199358512446179038563504342771009070030086225993587331707364694380435273637095265815822753053234405802906868157422981830255873772617447666624275439975796682265637992708938889823257726094302974885930097196669344639843988677778648020593934196723819088468803216153487297107492811056507451601395755963725425002385695557937498122413450112806752353565120576736602708703467647822106159499510305257948146496888389754128659462953611729636437986705220001350721221944149626057493285691608110630411119286456519608314648987275215045394515231691845112210917045121641417806538412061828278780617058202097580734860438788389217382060149092299431861376410130424965606136497728641026962287722570874255747623975837882023408573853422677658874155612358010230151643871139736456459652261140654954824944141055420740622427636319750584568252713506808683875820155116309957726169899250330408707780219237091041991140625629118931758145638239364572803368787850594050288112268951858856957512075140063622703852270236162501193419640893290156896070870635797112799319106433134707455255006616896607037391678456431479383437915513848676492446560185439239956677286042479226528026413922682049108317305550350451958079790759572260663288827512768923241740653154141583026907819078328533113057391303263818836598098936157736733562828443148399384679230035222370270636569835172744137040974102496895683541518607471656168956319558976499536851180530550702629835363504482868663499138539248600286019337887435107438790391615304489879833287664893012181106901324723568597827962372328547101754163820496427922892749572758539200708445876461077049910833143533826412635800811547870820729980608325812543893476476905410404353690571165121429005084069903833288028352826197219388820578860784536438560334129324355743958322495012033570059742705428704947453924587372785916851961857169916908967519064657319664482714158835732371786863302554067220915967700620054321937068575385741517420701963892120139986877578185658542676118560154415168176854993576154981852744393689622637715919767101451100423509976397216989972649379457500144622967321294351790870816952575638925765997474409897982695478641539059245066947002825781185193924500060337971120446440058348440997561352691832179216747066511440483348756921174192500122242231131585224814797702854756036479570258572833886917355765076674811933344829763766475541619184666466204870381042333588210620596189300773194582608040195821110270063361890946118804236979831669794499856386517903587069128974695208219218424374691980095972441902057259638983666176754265466268729092742795265577329942188328689409918395437415626077242353179875945582842714737257026911739425039545481764744646112174055314875705970836134741769908968003645074317385084669130334325814080345238310690845927984057210994851090978449187511864157303579857959620115468030973276325794003725734236500583451207529563020788946015658164435227450878781335199063375232264320631004801955555265135853332536617965065205272841749171967334714016397119118373521166326908323290161041127076783602410463426292570245312330198578744201729209916807445838010552465540688604261824605754348426271991312100606030465814133732482933991900289724123627744020058165884629288069672186394444949995444156532892783979770789117736387153912624899482662245524169691425507917608397797424065102678259864709199344137392521445513264364198007012661562111786544873273416473325349718326346757171551488567604866265853970900701608386508236125356977508251272775422470094491774534413410568571676741670535673808522743203910301692882667284590712277111339619420056844550617829024139839101139887289548193801847037871813459364242067882 7.241829387549714467411896585806652167829451771397240507071359482133755675786123260553387479655523368581202535489986882775831799997141523876405653997177692505565880021653710566480028275549143278357502804119063808541784718679644299642791169870858791361375563330626705129993920970983634202993003140518420749015341198357040073528320499423382916210181299763146628132999791061996035209792266306483534541703173460766092014750726143218015839240825116301208951860583016101840630821670153922639497889818519239165025050755058844720097109382531712605570003512106666819975595553821596570201727542428819411771187171336856304780503223934240134821839268729307108815275698400332016508527978130710686854935623337857764920159354293953356634813374065303088399592058637770267383834996836944122342910127594918313894470974482383837346701264010636369346150069693226266821510656146464797131201812516717579163039429985569020998636671452707444608365404832254083264123509473468094833357695961651871105305739081578938553020269049016063509741263335879794673493849590285788052810978290778888226394316128258370916430605738174944810564229740741998575340994902773580144243637350493424770927959608673332796234581006782328933102312498145334476433779733497637107532160857784393597435921308536683639445622418951119358750984770939503244496972345942064388730722535723675642496936818568196625246350654037883563147179928280316066067978220496239968610818970543329929100220566703556490484545372100689975664719142074067570847093499441020125632884175408725598896566985888866930617745520657636259180629450250881524934275348939974350767486677137406021772252020694203832394572325183244975326513081640254202681449980808961535766169832078590597600967333782214031035362045937682392493623036991853620698967026794359361308321364054705474067343717609238063598982734816859394679240738054670162964724318319461750365242010049221642591318982235023934849172260380116914837728276026663390508725515158602288769151839455818349152887887730606662857948146533966273861604226030813208724185745767518907256407316538947446770707392757007014553474750056648097978591718790039572557360249078521421473334744010715726098369531437453923544546681430748809640468500167951345512202143876961770338717093593714467898472866214147350719470975609418337030424777371889867564980491294775226089043187476820435578797421287602552108822960165380804369343546129455261702454237291667852518106986411922579730065216110411803381348383715681409370269707100799385189898984206887140614261547725435830383191068794240908196853355742926229828874142816674274832962623101421414513927732553266351896203149686272983259268694354546737336088636517747090933126218209795320454987271274077734226416199757375472852468552254854166839481056423189588831761262059101797649502332982257691508934455187703018107094455239180078884305751569830311452936656717789556409986235318043764168858274313547450062733567050517078729157358143572121930229953637038615580124088747779679227093160389912728463168015176490983629828584327064532788518469455460597757505896468193382716373900544299266316817509449659976855955246296552173364002455768669940785670810942345870013211782132914482379841699664440308151448035104571079162757362194911270821682622713892335782080564297808622219026511312094648807258544004987309226097935702915634611846846753135105923232157841342603942161472799372988508052296058186981118375714288814083181943357399464105444057198716476462418426307623665694702963204077731721306093880435622412352245359711757605936125355640225894511275936743130356313794856412789726844466835868631013195883728003375751847268589651837209343464336455600530862067404940698842324897823880229677457386035837580756639016548088549496144936464580524457179605423203452028156364108898356866089888647069114651552012147861304135799460861118647290092063446828630431447130644998534575588909232964950618843086069714279320859280988107972935403162203507835661830001325243777487205025120425633670635658726181663500546990550064891769013452796796529642996404751682299691600264219425548960032481007486108689130684031093073902437889211337200735212782362014546164322926334031183133683380485857180125233851887107622345482534102084401743696920244182307326781802623932550747485112093972286954799001534927357531876657406408023115043143467608859667712084246222784355578143562578394784557151295325486925073180952560293715697635361177602519497601132184616805286954630191472047569152920859579753552417333703051132842708608023276550463859379458820016018946732753281942180126941285255746860305705019133214914270097716523082352167617785190110092204832722600701643934270130018448646797677618265986897718277792665346110280493194801560065275223432509111244656496101657824870233446568681225183934663452583165471149487969834678294866420579321445179332145781128397926510479632214621297111219432585760410538528795946669447017903401213712099442023036705901953176091802832154600178235554887091624063256730289800836542460725573581210691107117513473182782336476262782111241533779759098117860176275043949882866768482752692567717235844377024329669870631275818421490430514550689157210578863767642584227662589215771636771958139912114465974539444812124005622502682902628524607067969973373667134838318206423661413331352725965056330569914720905610794321025257321194687824299643560608290259153124200764895002326650394206504670580492060287026640108258265195120030926020404096238036745760153881161390171437095317701678446654126809587930725804102894920779608222031546448731163922352683207566076948050112165866753337043803230747167482283284614534852201505211962944598747825013572694313092712406839397605958881096387127809383527231544593250524840586716233983343930851372455897322999507831215382305549714679243506891403043568544165774955099756349836205300696149605467180235105690059635537116894004021982254586141931121543272594802130911644691601330535960045439318975228027263621516546374214848989178933482903836865096723318934557788180094473810004425731324652395622338653095678652816549660819052146137843609086880921911586416136312544772420200352442565060628581181413572944876054373337760645338875368303523509174103726656384798344061024117551494093560705235418012977009167486984156986249761943079636368189678762114079630796641118222120347736098588587174284279171449326492195725613606523356021268010535374522680316507969165557661700429439879866275328444339984511218488996524270188845040831008341819312369450542032846516871072504530768598566979949506011716009179387096895044940506603801991341797342988267369678678865076641120800923430077579146424695941622325202735060170611598701288427419647654490895017176414724806340570029963122689093865469211328285377950095759189374004397973489150237949833429173741494635292719625398730461578046079807727162809294995275238048410461358877423923354191212497941362109545969734648655374403953334860972009447947376779617237674137073843812414442414614911639455385164606227706235511500705946536942433137435332870611583561456016561069342381700962748983938090626677451142024754112810495536008345994553480913808947757520003241158204833973344493268449647997197124880176079228738927113742617656683729595499188806947677611759991573902391076159042386260339934582730625166043336350745547406092183256012031940584973035383368199472274419977117187708068410880453841137690945199632281768483101712522104338880524683283633254903466030162179870855857703551742779485168055812334050583316303924945087987588436782868565758795789315042100230272706925899057762434919732305932140344938325078011796147134015342743173518472732987109683365082726425295647241829387549714467411896585806652167829451771397240507071359482133755675786123260553387479655523368581202535489986882775831799997141523876405653997177692505565880021653710566480028275549143278357502804119063808541784718679644299642791169870858791361375563330626705129993920970983634202993003140518420749015341198357040073528320499423382916210181299763146628132999791061996035209792266306483534541703173460766092014750726143218015839240825116301208951860583016101840630821670153922639497889818519239165025050755058844720097109382531712605570003512106666819975595553821596570201727542428819411771187171336856304780503223934240134821839268729307108815275698400332016508527978130710686854935623337857764920159354293953356634813374065303088399592058637770267383834996836944122342910127594918313894470974482383837346701264010636369346150069693226266821510656146464797131201812516717579163039429985569020998636671452707444608365404832254083264123509473468094833357695961651871105305739081578938553020269049016063509741263335879794673493849590285788052810978290778888226394316128258370916430605738174944810564229740741998575340994902773580144243637350493424770927959608673332796234581006782328933102312498145334476433779733497637107532160857784393597435921308536683639445622418951119358750984770939503244496972345942064388730722535723675642496936818568196625246350654037883563147179928280316066067978220496239968610818970543329929100220566703556490484545372100689975664719142074067570847093499441020125632884175408725598896566985888866930617745520657636259180629450250881524934275348939974350767486677137406021772252020694203832394572325183244975326513081640254202681449980808961535766169832078590597600967333782214031035362045937682392493623036991853620698967026794359361308321364054705474067343717609238063598982734816859394679240738054670162964724318319461750365242010049221642591318982235023934849172260380116914837728276026663390508725515158602288769151839455818349152887887730606662857948146533966273861604226030813208724185745767518907256407316538947446770707392757007014553474750056648097978591718790039572557360249078521421473334744010715726098369531437453923544546681430748809640468500167951345512202143876961770338717093593714467898472866214147350719470975609418337030424777371889867564980491294775226089043187476820435578797421287602552108822960165380804369343546129455261702454237291667852518106986411922579730065216110411803381348383715681409370269707100799385189898984206887140614261547725435830383191068794240908196853355742926229828874142816674274832962623101421414513927732553266351896203149686272983259268694354546737336088636517747090933126218209795320454987271274077734226416199757375472852468552254854166839481056423189588831761262059101797649502332982257691508934455187703018107094455239180078884305751569830311452936656717789556409986235318043764168858274313547450062733567050517078729157358143572121930229953637038615580124088747779679227093160389912728463168015176490983629828584327064532788518469455460597757505896468193382716373900544299266316817509449659976855955246296552173364002455768669940785670810942345870013211782132914482379841699664440308151448035104571079162757362194911270821682622713892335782080564297808622219026511312094648807258544004987309226097935702915634611846846753135105923232157841342603942161472799372988508052296058186981118375714288814083181943357399464105444057198716476462418426307623665694702963204077731721306093880435622412352245359711757605936125355640225894511275936743130356313794856412789726844466835868631013195883728003375751847268589651837209343464336455600530862067404940698842324897823880229677457386035837580756639016548088549496144936464580524457179605423203452028156364108898356866089888647069114651552012147861304135799460861118647290092063446828630431447130644998534575588909232964950618843086069714279320859280988107972935403162203507835661830001325243777487205025120425633670635658726181663500546990550064891769013452796796529642996404751682299691600264219425548960032481007486108689130684031093073902437889211337200735212782362014546164322926334031183133683380485857180125233851887107622345482534102084401743696920244182307326781802623932550747485112093972286954799001534927357531876657406408023115043143467608859667712084246222784355578143562578394784557151295325486925073180952560293715697635361177602519497601132184616805286954630191472047569152920859579753552417333703051132842708608023276550463859379458820016018946732753281942180126941285255746860305705019133214914270097716523082352167617785190110092204832722600701643934270130018448646797677618265986897718277792665346110280493194801560065275223432509111244656496101657824870233446568681225183934663452583165471149487969834678294866420579321445179332145781128397926510479632214621297111219432585760410538528795946669447017903401213712099442023036705901953176091802832154600178235554887091624063256730289800836542460725573581210691107117513473182782336476262782111241533779759098117860176275043949882866768482752692567717235844377024329669870631275818421490430514550689157210578863767642584227662589215771636771958139912114465974539444812124005622502682902628524607067969973373667134838318206423661413331352725965056330569914720905610794321064248558375687824299643560608290259153124200764895002326650394206504670580492060287026640108258265195120030926020404096238036745760153881161390171437095317701678446654126809587930725804102894920779608222031546448731163922352683207566076948050112165866753337043803230747167482283284614534852201505211962944598747825013572694313092712406839397605958881096387127809383527231544593250524840586716233983343930851372455897322999507831215382305549714679243506891403043568544165774955099756349836205300696149605467180235105690059635537116894004021982254586141931121543272594802130911644691601330535960045439318975228027263621516546374214848989178933482903836865096723318934557788180094473810004425731324652395622338653095678652816549660819052146137843609086880921911586416136312544772420200352442565060628581181413572944876054373337760645338875368303523509174103726656384798344061024117551494093560705235418012977009167486984156986249761943079636368189678762114079630796641118222120347736098588587174284279171449326492195725613606523356021268010535374522680316507969165557661700429439879866275328444339984511218488996524270188845040831008341819312369450542032846516871072504530768598566979949506011716009179387096895044940506603801991341797342988267369678678865076641120800923430077579146424695941622325202735060170611598701288427419647654490895017176414724806340570029963122689093865469211328285377950095759189374004397973489150237949833429173741494635292719625398730461578046079807727162809294995275238048410461358877423923354191212497941362109545969734648655374403953334860972009447947376779617237674137073843812414442414614911639455385164606227706235511500705946536942433137435332870611583561456016561069342381700962748983938090626677451142024754112810495536008345994553480913808947757520003241158204833973344493268449647997197124880176079228738927113742617656683729595499188806947677611759991573902391076159042386260339934582730625166043336350745547406092183256012031940584973035383368199472274419977117187708068410880453841137690945199632281768483101712522104338880524683283633254903466030162179870855857703551742779485168055812334050583316303924945087987588436782868565758795789315042100230272706925899057762434919732305932140344938325078011796147134015342743173518472732987109683365082726425295647241829387549714467411896585806652167829451771397240507071359482133755675786123260553387479655523368581202535489986882775831799997141523876405653997177692505565880021653710566480028275549143278357502804119063808541784718679644299642791169870858791361375563330626705129993920970983634202993003140518420749015341198357040073528320499423382916210181299763146628132999791061996035209792266306483534541703173460766092014750726143218015839240825116301208951860583016101840630821670153922639497889818519239165025050755058844720097109382531712605570003512106666819975595553821596570201727542428819411771187171336856304780503223934240134821839268729307108815275698400332016508527978130710686854935623337857764920159354293953356634813374065303088399592058637770267383834996836944122342910127594918313894470974482383837346701264010636369346150069693226266821510656146464797131201812516717579163039429985569020998636671452707444608365404832254083264123509473468094833357695961651871105305739081578938553020269049016063509741263335879794673493849590285788052810978290778888226394316128258370916430605738174944810564229740741998575340994902773580144243637350493424770927959608673332796234581006782328933102312498145334476433779733497637107532160857784393597435921308536683639445622418951119358750984770939503244496972345942064388730722535723675642496936818568196625246350654037883563147179928280316066067978220496239968610818970543329929100220566703556490484545372100689975664719142074067570847093499441020125632884175408725598896566985888866930617745520657636259180629450250881524934275348939974350767486677137406021772252020694203832394572325183244975326513081640254202681449980808961535766169832078590597600967333782214031035362045937682392493623036991853620698967026794359361308321364054705474067343717609238063598982734816859394679240738054670162964724318319461750365242010049221642591318982235023934849172260380116914837728276026663390508725515158602288769151839455818349152887887730606662857948146533966273861604226030813208724185745767518907256407316538947446770707392757007014553474750056648097978591718790039572557360249078521421473334744010715726098369531437453923544546681430748809640468500167951345512202143876961770338717093593714467898472866214147350719470975609418337030424777371889867564980491294775226089043187476820435578797421287602552108822960165380804369343546129455261702454237291667852518106986411922579730065216110411803381348383715681409370269707100799385189898984206887140614261547725435830383191068794240908196853355742926229828874142816674274832962623101421414513927732553266351896203149686272983259268694354546737336088636517747090933126218209795320454987271274077734226416199757375472852468552254854166839481056423189588831761262059101797649502332982257691508934455187703018107094455239180078884305751569830311452936656717789556409986235318043764168858274313547450062733567050517078729157358143572121930229953637038615580124088747779679227093160389912728463168015176490983629828584327064532788518469455460597757505896468193382716373900544299266316817509449659976855955246296552173364002455768669940785670810942345870013211782132914482379841699664440308151448035104571079162757362194911270821682622713892335782080564297808622219026511312094648807258544004987309226097935702915634611846846753135105923232157841342603942161472799372988508052296058186981118375714288814083181943357399464105444057198716476462418426307623665694702963204077731721306093880435622412352245359711757605936125355640225894511275936743130356313794856412789726844466835868631013195883728003375751847268589651837209343464336455600530862067404940698842324897823880229677457386035837580756639016548088549496144936464580524457179605423203452028156364108898356866089888647069114651552012147861304135799460861118647290092063446828630431447130644998534575588909232964950618843086069714279320859280988107972935403162203507835661830001325243777487205025120425633670635658726181663500546990550064891769013452796796529642996404751682299691600264219425548960032481007486108689130684031093073902437889211337200735212782362014546164322926334031183133683380485857180125233851887107622345482534102084401743696920244182307326781802623932550747485112093972286954799001534927357531876657406408023115043143467608859667712084246222784355578143562578394784557151295325486925073180952560293715697635361177602519497601132184616805286954630191472047569152920859579753552417333703051132842708608023276550463859379458820016018946732753281942180126941285255746860305705019133214914270097716523082352167617785190110092204832722600701643934270130018448646797677618265986897718277792665346110280493194801560065275223432509111244656496101657824870233446568681225183934663452583165471149487969834678294866420579321445179332145781128397926510479632214621297111219432585760410538528795946669447017903401213712099442023036705901953176091802832154600178235554887091624063256730289800836542460725573581210691107117513473182782336476262782111241533779759098117860176275043949882866768482752692567717235844377024329669870631275818421490430514550689157210578863767642584227662589215771636771958139912114465974539444812124005622502682902628524607067969973373667134838318206423661413331352725965056330569914720905610794321025257321194687824299643560608290259153124200764895002326650394206504670580492060287026640108258265195120030926020404096238036745760153881161390171437095317701678446654126809587930725804102894920779608222031546448731163922352683207566076948050112165866753337043803230747167482283284614534852201505211962944598747825013572694313092712406839397605958881096387127809383527231544593250524840586716233983343930851372455897322999507831215382305549714679243506891403043568544165774955099756349836205300696149605467180235105690059635537116894004021982254586141931121543272594802130911644691601330535960045439318975228027263621516546374214848989178933482903836865096723318934557788180094473810004425731324652395622338653095678652816549660819052146137843609086880921911586416136312544772420200352442565060628581181413572944876054373337760645338875368303523509174103726656384798344061024117551494093560705235418012977009167486984156986249761943079636368189678762114079630796641118222120347736098588587174284279171449326492195725613606523356021268010535374522680316507969165557661700429439879866275328444339984511218488996524270188845040831008341819312369450542032846516871072504530768598566979949506011716009179387096895044940506603801991341797342988267369678678865076641120800923430077579146424695941622325202735060170611598701288427419647654490895017176414724806340570029963122689093865469211328285377950095759189374004397973489150237949833429173741494635292719625398730461578046079807727162809294995275238048410461358877423923354191212497941362109545969734648655374403953334860972009447947376779617237674137073843812414442414614911639455385164606227706235511500705946536942433137435332870611583561456016561069342381700962748983938090626677451142024754112810495536008345994553480913808947757520003241158204833973344493268449647997197124880176079228738927113742617656683729595499188806947677611759991573902391076159042386260339934582730625166043336350745547406092183256012031940584973035383368199472274419977117187708068410880453841137690945199632281768483101712522104338880524683283633254903466030162179870855857703551742779485168055812334050583E+22688 Inexact Rounded + +rounding: half_even +precision: 2000 +covx5044 divmod 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> NaN NaN Division_impossible + +rounding: half_even +precision: 425000000 +maxexponent: 425000000 +minexponent: -425000000 +covx5045 remainder 1E+1234 17291065 -> 14846085 + +rounding: half_up +precision: 24 +maxexponent: 999999999 +minexponent: -999999999 +covx5046 remaindernear 999999999999999999999999 1 -> 0 +covx5047 remaindernear 999999999999999999999999.4 1 -> 0.4 +covx5048 remaindernear 999999999999999999999999.5 1 -> NaN Division_impossible +covx5049 remaindernear 999999999999999999999999.9 1 -> NaN Division_impossible +covx5050 remaindernear 999999999999999999999999.999 1 -> NaN Division_impossible +covx5051 remaindernear 999999999999999999999998.5 1 -> 0.5 +covx5052 remaindernear 9999999999999999999 0.5 -> 0.0 +covx5053 remaindernear 2 199999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999919999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 -> 2 + +rounding: half_even +precision: 2000 +maxexponent: 999 +minexponent: -999 +covx5054 remaindernear 90000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1522 1000000000000000000 -> 100000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +covx5055 remaindernear 90000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-1522 -1000000000000000000 -> 100000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +rounding: half_even +precision: 28 +maxexponent: 99 +minexponent: -99 +covx5056 apply 9999999999999999999999999999E-127 -> 1.000000000000000000000000000E-99 Underflow Subnormal Rounded Inexact +covx5057 quantize 9999999999999999999999999999e71 1e72 -> 1.000000000000000000000000000E+99 Rounded Inexact + +rounding: half_even +precision: 58 +maxexponent: 99 +minexponent: -99 +covx5058 apply 999999999999999999999999999999999999999999999999E-159 -> 1.000000000000000000000000000000000000000000000E-111 Underflow Subnormal Rounded Inexact +covx5059 quantize 999999999999999999999999999999999999999999999999e51 1e52 -> 1.00000000000000000000000000000000000000000000000E+99 Rounded Inexact + +covx5060 tointegralx 999999999999999999999999999999999999999999999.9 -> 1000000000000000000000000000000000000000000000 Inexact Rounded +covx5061 tointegralx 9999999999999999999999999999999999999999999999999999999999999999999999999999.9 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000 Inexact Rounded + +rounding: half_even +precision: 28 +maxexponent: 999999999 +minexponent: -999999999 +covx5062 copy 899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871 -> 899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871 +covx5063 copysign 899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871 -1 -> -899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871 +covx5064 copynegate 899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871 -> -899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871 +covx5065 copyabs -899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871 -> 899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871899081274391283718912387123981273192387129381723918237192837991823719238718990812743912837189123871239812731923871293817239182371928379918237192387189908127439128371891238712398127319238712938172391823719283799182371923871 + +rounding: half_even +precision: 2000 +covx5066 nextminus Inf -> 9.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999E+999999999 +covx5067 nextminus 1E1000000000 -> 9.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999E+999999999 +covx5068 nextminus 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 9.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999E+2119 +covx5069 nextplus -Inf -> -9.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999E+999999999 +covx5070 nextplus 9.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999E+2119 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+2120 +covx5071 quantize 9999999999999999999999999999999999999999999999999999999999 1e1 -> 1.000000000000000000000000000000000000000000000000000000000E+58 Rounded Inexact +covx5072 and 100000010010011000000000000000000000000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001000000000000 1081000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000010101000000000000000000000000000000000000000000000000000000000000000000000000000000100001010010100000100101010000101000100000100101000100100000010001010010000000000000000000000000000000000010101001010000000000000000000000000000000000000000001 -> NaN Invalid_operation +covx5073 invert 1081000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000010101000000000000000000000000000000000000000000000000000000000000000000000000000000100001010010100000100101010000101000100000100101000100100000010001010010000000000000000000000000000000000010101001010000000000000000000000000000000000000000001 -> NaN Invalid_operation +covx5074 or 100000010010011000000000000000000000000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001000000000000 1081000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000010101000000000000000000000000000000000000000000000000000000000000000000000000000000100001010010100000100101010000101000100000100101000100100000010001010010000000000000000000000000000000000010101001010000000000000000000000000000000000000000001 -> NaN Invalid_operation +covx5075 xor 100000010010011000000000000000000000000101001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001000000000000 1081000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000010101000000000000000000000000000000000000000000000000000000000000000000000000000000100001010010100000100101010000101000100000100101000100100000010001010010000000000000000000000000000000000010101001010000000000000000000000000000000000000000001 -> NaN Invalid_operation + +rounding: half_even +precision: 28 +covx5076 shift 123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789 -20 -> 91234567 + +rounding: half_even +precision: 80 +covx5077 reduce 9892345673.0123456780000000000000000000000000000000000000000000000000000000000000000000000 -> 9892345673.012345678 Rounded + +rounding: down +precision: 28 +covx5078 resc Infinity 1000000000 -> Infinity + +rounding: half_even +precision: 58 +maxexponent: 99 +minexponent: -99 +covx5079 resc 999999999e200 100 -> 9.999999990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+208 + +rounding: half_even +covx5080 resc 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999e100 120 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000E+190 Inexact Rounded + +rounding: half_even +precision: 58 +maxexponent: 999 +minexponent: -999 +covx5081 resc 1E-1000 -1005 -> 1.00000E-1000 Subnormal + + +-- extreme cases for NaN payloads +maxexponent: 1 +minexponent: -1 +precision: 1 +clamp: 1 +covx5082 plus NaN123 -> NaN +covx5083 plus NaN0 -> NaN + +-- decapitating leads to NaN0 => NaN +maxexponent: 999 +minexponent: -999 +precision: 6 +covx5084 plus NaN123000000 -> NaN +covx5085 plus NaN12300000 -> NaN +covx5086 plus NaN1230000 -> NaN30000 + +clamp: 0 +covx5087 plus NaN123000000 -> NaN +covx5088 plus NaN12300000 -> NaN300000 +covx5089 plus NaN1230000 -> NaN230000 + + +-- floor, ceil, trunc +rounding: half_even +precision: 2000 +maxexponent: 999 +minexponent: -999 +clamp: 0 + +floor10000 floor 0 -> 0 +floor10001 floor 0.0 -> 0 +floor10002 floor -0.0 -> -0 +floor10003 floor 1e-200 -> 0 +floor10004 floor -1e-200 -> -1 +floor10005 floor 0.5 -> 0 +floor10006 floor -0.5 -> -1 +floor10007 floor 0.999999999999 -> 0 +floor10008 floor -0.99999999999 -> -1 +floor10009 floor -1.0 -> -1 +floor10010 floor 1.0 -> 1 +floor10011 floor 9.9 -> 9 +floor10012 floor -9.9 -> -10 +floor10013 floor 9.333e+80 -> 9.333E+80 +floor10014 floor -9.333e+80 -> -9.333E+80 +floor10015 floor 100.0 -> 100 +floor10016 floor -100.0 -> -100 +ceil10017 ceil 0 -> 0 +ceil10018 ceil 0.0 -> 0 +ceil10019 ceil -0.0 -> -0 +ceil10020 ceil 1e-200 -> 1 +ceil10021 ceil -1e-200 -> -0 +ceil10022 ceil 0.5 -> 1 +ceil10023 ceil -0.5 -> -0 +ceil10024 ceil 0.999999999999 -> 1 +ceil10025 ceil -0.99999999999 -> -0 +ceil10026 ceil -1.0 -> -1 +ceil10027 ceil 1.0 -> 1 +ceil10028 ceil 9.9 -> 10 +ceil10029 ceil -9.9 -> -9 +ceil10030 ceil 9.333e+80 -> 9.333E+80 +ceil10031 ceil -9.333e+80 -> -9.333E+80 +ceil10032 ceil 100.0 -> 100 +ceil10033 ceil -100.0 -> -100 +trunc10034 trunc 0 -> 0 +trunc10035 trunc 0.0 -> 0 +trunc10036 trunc -0.0 -> -0 +trunc10037 trunc 1e-200 -> 0 +trunc10038 trunc -1e-200 -> -0 +trunc10039 trunc 0.5 -> 0 +trunc10040 trunc -0.5 -> -0 +trunc10041 trunc 0.999999999999 -> 0 +trunc10042 trunc -0.99999999999 -> -0 +trunc10043 trunc -1.0 -> -1 +trunc10044 trunc 1.0 -> 1 +trunc10045 trunc 9.9 -> 9 +trunc10046 trunc -9.9 -> -9 +trunc10047 trunc 9.333e+80 -> 9.333E+80 +trunc10048 trunc -9.333e+80 -> -9.333E+80 +trunc10049 trunc 100.0 -> 100 +trunc10050 trunc -100.0 -> -100 + + +-- negative etop: trigger allocation failure in mpd_qshiftl. +maxexponent: 50 +minexponent: -50 +precision: 100 +clamp: 1 +etop10051 apply 1e+50 -> 100000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000 Clamped + + + diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/testdata_dist/divmod.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/testdata_dist/divmod.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,2012 @@ +-- +-- Short random test for divmod. +-- + +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + + + +precision: 4 +divmod0 divmod +.19e-911565689 3 -> 0 1.9E-911565690 +precision: 134 +divmod1 divmod -7511169757701755204403067994764250868266023726415875410280423917144182133410083809891399408586918959074 4246476766758966627011583811854662354887063790038443 -> -1768800389183453909698778567576755142065118498146502 -2797376381641405358930320502134014338018800092982688 +precision: 262 +divmod2 divmod -Inf +7.905442548849169790507598032704018880614786823147752534821712985326338770302489617E486798639 -> -Infinity NaN Invalid_operation +precision: 216 +divmod3 divmod -757719995173294752327540483701116946913961037738625667311193429926112129713646725612959034118065582310312494071362898125823373077706316701639971503.7061421 62623122235568293491576846461787522859478144460815517209962234575328066320595 -> -12099684080314501435119346718279324158329411218353503927245988982340212 -27825671910110331254919071614638382146665442212850800774501568154918287705363.7061421 +precision: 9 +divmod4 divmod 58874 71 -> 829 15 +precision: 116 +divmod5 divmod +3063381499118251189501526595347827951861335053395539502198531440261650283119762539089812335694541778324502355. -76749343404.801352414257193436129675283483836083180040 -> -39914106925462107547516026578786697339811753476585911930459847553164645698379574738124471247887325 65485070510.377475623744069994407636169843182391007000 +precision: 283 +divmod6 divmod 95278944315426441161268668778245716190365285291981028721055159872588435895652229864009295064155047238968855611752168694053328381.14909336E658980559 +18040019163941167631186142057368746456016977211755934999856876663470 -> NaN NaN Invalid_operation +precision: 277 +divmod7 divmod -960844681639178696822800383823190011066535408855585593389704044686042551945657391933477890981818985694456829172359882833715427345447350422194974660885488266545254468740121537348553950677899772903977774952209337946261758103111395779963602437779507102716027099349e-937535433 -4135373772592782415894426263434928319350907173926886268437928383930213988895761946878830469875372904457219769344565180985406404576e+683803724 -> 0 -9.60844681639178696822800383823190011066535408855585593389704044686042551945657391933477890981818985694456829172359882833715427345447350422194974660885488266545254468740121537348553950677899772903977774952209337946261758103111395779963602437779507102716027099349E-937535173 +precision: 55 +divmod8 divmod +158876768812 -773546 -> -205387 476510 +precision: 289 +divmod9 divmod 50947250081216918161706808870464861718990251782783004768889691455353730587 -5981129016058069760853924837734920386e-352163026 -> NaN NaN Invalid_operation +precision: 282 +divmod10 divmod 16185773577934747568221191480696684920984706832876871467198848888724529920070608027836128911875.524356902566291e-920047206 +sNaN5732084142444230736746243019792893792765745282 -> NaN5732084142444230736746243019792893792765745282 NaN5732084142444230736746243019792893792765745282 Invalid_operation +precision: 59 +divmod11 divmod -Inf -7244664E38763763 -> Infinity NaN Invalid_operation +precision: 78 +divmod12 divmod +.478536 +449. -> 0 0.478536 +precision: 223 +divmod13 divmod 22018697323333630054226483729348219322430402559596643e54209663 984796586037718.64226130961 -> NaN NaN Invalid_operation +precision: 195 +divmod14 divmod -475199998271606118563252102.802817799112702924176260428E-480759377 -154301726514172474100424010 -> 0 -4.75199998271606118563252102802817799112702924176260428E-480759351 +precision: 244 +divmod15 divmod -7514971566202107510330228184865473013967457743899072281809471427133840766219052629651745828416600099444352306458725219539250055200933782841388213669701297234588219505478662268475330850e+97278644 57942577980656735092266671077431813770108226505323423817708309944228184050029326545283590212e-154531224 -> NaN NaN Invalid_operation +precision: 226 +divmod16 divmod -.6410850156 87904 -> -0 -0.6410850156 +precision: 245 +divmod17 divmod 231197.15452134146890695612321457e+818649808 1193854219024762E+997408976 -> 0 2.3119715452134146890695612321457E+818649813 +precision: 52 +divmod18 divmod +98624949624597968479064127073302423541404e-413796284 26741316.665082928014 -> 0 9.8624949624597968479064127073302423541404E-413796244 +precision: 68 +divmod19 divmod +4620506488e+462352211 36873 -> NaN NaN Invalid_operation +precision: 197 +divmod20 divmod -9093104978581144244260517666379081942669839648021820354035884780963322607048016833328390419717986010726821586964114465469691571698490758148844408595673599009029028964815417105610626448253747583198E-597311333 -3040224350668899866283530264271390903834179189526458392484973888387344792073.8712200766642597472234e-254848673 -> 0 -9.093104978581144244260517666379081942669839648021820354035884780963322607048016833328390419717986010726821586964114465469691571698490758148844408595673599009029028964815417105610626448253747583198E-597311138 +precision: 17 +divmod21 divmod -222. +Inf -> -0 -222 +precision: 147 +divmod22 divmod +Infinity -Infinity -> NaN NaN Invalid_operation +precision: 185 +divmod23 divmod +884906904484052585245232010921648770121311961951047695213151115351995538806947425.3209078197729965665124749924898516108999609799168 -Inf -> -0 884906904484052585245232010921648770121311961951047695213151115351995538806947425.3209078197729965665124749924898516108999609799168 +precision: 277 +divmod24 divmod 20555693380562544678359266818486517458570825253490966813528395387981978059097988510183259736171482117957962919235048905220998503185929376503197e-670166370 94711973907076355538449056746762218069650530382044205916108650316434715 -> 0 2.0555693380562544678359266818486517458570825253490966813528395387981978059097988510183259736171482117957962919235048905220998503185929376503197E-670166228 +precision: 271 +divmod25 divmod 94141069299048180819866071155858389621745969357675329432366776102572315372673963803208301770515872284007927833656439133560841669961967098867711 +97596084591484893617586908092791319816427668681537211794256029804493171e-982162147 -> NaN NaN Invalid_operation +precision: 6 +divmod26 divmod -89e-964603805 4E-810846152 -> -0 -8.9E-964603804 +precision: 13 +divmod27 divmod -4612e329539252 .14 -> NaN NaN Invalid_operation +precision: 77 +divmod28 divmod -.7668428128414658245374475479286275106336632663053266162 -149789.2772741451013253614 -> 0 -0.7668428128414658245374475479286275106336632663053266162 +precision: 96 +divmod29 divmod +35.39 -4.e-784735656 -> NaN NaN Invalid_operation +precision: 264 +divmod30 divmod -6038006437931361143428531856707793138838390398882156436007334387434138249220383258667665378532762954254771014223031915876431341638983183769248583568985890131960387E-677345570 -15832188347329921343692031644797080336134306792863981635680.5378673730314278373792E-341976749 -> 0 -6.038006437931361143428531856707793138838390398882156436007334387434138249220383258667665378532762954254771014223031915876431341638983183769248583568985890131960387E-677345408 +precision: 10 +divmod31 divmod -78273. +1.5e-213179468 -> NaN NaN Invalid_operation +precision: 99 +divmod32 divmod 3515200834773.55219096874995084234437876043913834436796531358411152041286418552512E613479058 -6824309203143832356363701884392920849367 -> NaN NaN Invalid_operation +precision: 180 +divmod33 divmod +227481090101976963156893924734511262272077621784929975642803847391513170360125702004991421675900502227847690565191872064269712336565705023466200732757119696299938333506 439677976294995885323446574830623451906948293205505201666574025279055728122765390623. -> 517381134299416574358021793720614360465363287175501812358711480791039358398860198233 104048424643529895379325907674228112163218033084229471083948047619622998258478964347 +precision: 199 +divmod34 divmod -.82983667474428066946738427265714785722388923640155595139206641972276812010079785956518467768669551932903244505273534039698e-78356216 -963220462799821194915324604001776503982741689156.5804242836138 -> 0 -8.2983667474428066946738427265714785722388923640155595139206641972276812010079785956518467768669551932903244505273534039698E-78356217 +precision: 118 +divmod35 divmod -59562319022462366067011255229614928383350531769816460799929149597805195125054608 +.6829642923311529608562640801448874023400E-881094763 -> NaN NaN Invalid_operation +precision: 251 +divmod36 divmod -632390350498297725110279714077626226362857411549087035314619504343134923788007074057246523085968880157673672327643701347840296442396435630340384436 9836565041395204562.881487778408146134447826759978190142657824233968526306 -> -64289754384483830591996750407666005252460721156481300663569187187626801352864879247689930459770539134891395266700474073900178522 -2407461735403577619.135843055540900503593727112496404657958965457346800268 +precision: 247 +divmod37 divmod -4621226385583621060785676572915683898 -.391798620291681202e-916472046 -> NaN NaN Invalid_operation +precision: 293 +divmod38 divmod -66249.714239715764832047860456268401060169641335374279420077878528644130464673869084744677570548242020177846450005281391876832603742 -.73262361608930656111769288631715885733216982255698254862543052862E713835367 -> 0 -66249.714239715764832047860456268401060169641335374279420077878528644130464673869084744677570548242020177846450005281391876832603742 +precision: 264 +divmod39 divmod -21246596290329306444577899927878430637441050358124854564053466059281394572077509028844061953341372694199140.5754862714906 +213990277459730420944526131417186432011728744246188737737684 -> -99287671115467286432188953818839450414213831568 -35454200320408672856705985711328348977680180325806951790628.5754862714906 +precision: 248 +divmod40 divmod -251267938950125114287965632981485791172785995153225283.5221 75407021061639076370247946450e+713350130 -> -0 -251267938950125114287965632981485791172785995153225283.5221 +precision: 284 +divmod41 divmod +2210484708807004801147643774831368888485134737 -2924761098153755646.3193 -> -755782997183039972839049219 1524651296464485847.3733 +precision: 45 +divmod42 divmod -Inf 1793057787185332. -> -Infinity NaN Invalid_operation +precision: 28 +divmod43 divmod -29199. -57 -> 512 -15 +precision: 246 +divmod44 divmod 156814943541406966774944582436787847953534606689167974829625894761391244961266787548294349367621081779789278952611657344911075750181.324379 -.180141604153620668247399305471265843245024273777894822130012247041495 -> -870509310040776282034759855039887187403025932309067017629316147173053209478029120774192423219610255348411426263432800058625955076552 0.009306182858650485602164541762099868715562524749395799733461754474760 +precision: 26 +divmod45 divmod +11229E-754938308 +34 -> 0 1.1229E-754938304 +precision: 138 +divmod46 divmod +.2132761304435706664382196980322095494868793793760281410759080790420276933820686053463294594177334793567044308725283436345E-594254118 53477061107476077565898945438626361386596996053885848736587 -> 0 2.132761304435706664382196980322095494868793793760281410759080790420276933820686053463294594177334793567044308725283436345E-594254119 +precision: 231 +divmod47 divmod -.34033046308691982746814236395116366374422170478453710403315516718868629668556399812952338543855739366877501234450613309819173980663269334445425335293435142151180102850880544503158759855553084980965651073469e754318188 -.34225336728815975648671770726362583117491318557494996930473542502874143863477015229912135994584874118791 -> NaN NaN Invalid_operation +precision: 261 +divmod48 divmod 164142387289982071388670323709695842374342399500819716419272351466990229166034621887910852949900856675800608973438966207410258621564298561387265427895136074014835537677743452649554837288697861503047517604857973007.1820199684292643012870854960 6663042317307811969.58835128485359157302007613081591171246824516250021258131013059849889886147675572500417717920910665813e-811861274 -> NaN NaN Invalid_operation +precision: 248 +divmod49 divmod -186932846866581178007800664810668570234480429397183753448691119225943879746002988621398334607255341383698402603311974871980565932427672.1394098365109540190941326509541095825303 -527158404564447303314877460356971999001889309178970774823339181843630385338236249259210 -> 354604698033848498524190179391583380818301496448 -335843385879494379966538461697092074049981128648522073280765721996425540410291486141592.1394098365109540190941326509541095825303 +precision: 250 +divmod50 divmod -79723610556767546735595880122908196870981458722223710364901611996120984676570345516373555461373113844016839532E-279085616 +149593.6132457553787693610512699936712502015927072864171 -> -0 -7.9723610556767546735595880122908196870981458722223710364901611996120984676570345516373555461373113844016839532E-279085507 +precision: 185 +divmod51 divmod +3254610873826986780274153485956327365873530646517053E+659652312 501097875306257.94382491956 -> NaN NaN Invalid_operation +precision: 43 +divmod52 divmod -496846631004839577237180.332093 +3088622709552.96e-875185508 -> NaN NaN Invalid_operation +precision: 69 +divmod53 divmod 230579451776550921155507489693031237006334283823 -816967534276708239294624 -> -282238206663489376712466 754188849266674426701039 +precision: 105 +divmod54 divmod Inf .310086577427191866605 -> Infinity NaN Invalid_operation +precision: 136 +divmod55 divmod +24754072511862945173415243651143527887441752428559111390051731396931084012069872680552638654790117045448552145877545776803837 +86249044066776896067110334700543117141005983879351865222059429 -> 287006920247110378284686020876367377547098440162771722479884862 26769515812380340020464554747255582391034272009680219335340039 +precision: 55 +divmod56 divmod -720943649253002893757141 -26392.4136260 -> 27316321253118681846 -9611.7664040 +precision: 197 +divmod57 divmod -sNaN -Infinity -> -NaN -NaN Invalid_operation +precision: 252 +divmod58 divmod -2408425551394149152418140570685647658216989050073416954734589774283215790906039391731445593169730778797428522123803833223728397188768559906290497430.18188042518985679834381347662556028203e-946016217 -117471939198401043778915855916747426611237041754153087529958793423044698574647735380436214041 -> 0 -2.40842555139414915241814057068564765821698905007341695473458977428321579090603939173144559316973077879742852212380383322372839718876855990629049743018188042518985679834381347662556028203E-946016070 +precision: 73 +divmod59 divmod -46838900822243252001 6067131332E+361997441 -> -0 -46838900822243252001 +precision: 119 +divmod60 divmod .29710504707442803271433301062233400148972305067963266041512977334667175052716876430358025717559782571789385135307807427e+408570266 316018911136590957402752480309236024133069474131769799.16590 -> NaN NaN Invalid_operation +precision: 140 +divmod61 divmod -214687667640839295841829261181379942033639E-240743052 +186568236910233017488.e571569835 -> -0 -2.14687667640839295841829261181379942033639E-240743011 +precision: 23 +divmod62 divmod -.523534241 +1.22e+155587078 -> -0 -0.523534241 +precision: 272 +divmod63 divmod -NaN -44485102142991032450162050929317053656048214616015526446319357869250131578e-695277730 -> -NaN -NaN +precision: 156 +divmod64 divmod -9488789631032893765681067886064875200742855421092235928282782779713188704059279530632045806885763621143417873513339568693035931768200783e882997064 -3558808259032011203710019484713657180741302425340044662120068190543E-88424819 -> NaN NaN Invalid_operation +precision: 140 +divmod65 divmod .821471151709654628597012210965e-954108783 -939215019598697.e+527182836 -> -0 8.21471151709654628597012210965E-954108784 +precision: 212 +divmod66 divmod +sNaN -74283981155218351447551175198448789535094967644058320798472768622437169705e+400017002 -> NaN NaN Invalid_operation +precision: 280 +divmod67 divmod -.8035036460133777812744126685458972421247380319467237061443011718322029524244469228538973320139410755629636 -5085810292113960324519794570011199337454932977392610E-685718704 -> NaN NaN Invalid_operation +precision: 242 +divmod68 divmod -Infinity -.575890607087314269179363100808413489594023146302653881524598888357812861740124828879327281891811408 -> Infinity NaN Invalid_operation +precision: 278 +divmod69 divmod -743634247418936401431226004065033694694334038832806446983595295599279121431067674896829732412242732551758216397334718375716374938735128617362.169616637086142228560E+763998530 .680036254008426298956553270564536882756609534039825022755801682050279784327600154 -> NaN NaN Invalid_operation +precision: 23 +divmod70 divmod 7 +6 -> 1 1 +precision: 133 +divmod71 divmod -8727780368289174581243 -Inf -> 0 -8727780368289174581243 +precision: 253 +divmod72 divmod -970E-583510498 -9 -> 0 -9.70E-583510496 +precision: 151 +divmod73 divmod -96165659260709401212850337659307351858065528330354218246221850226286604628 -.2076940636792702835753348366615107239 -> 463015926200049549432938645578853244935478889996674682094694481055324790867 -0.0469447565229846465575188319547213787 +precision: 59 +divmod74 divmod -Infinity -Inf -> NaN NaN Invalid_operation +precision: 233 +divmod75 divmod +14061186924277037992085289958918001647546172008085569067065242793427906587119912547743728201543341559691562008162340843981052704986588682729989654256736535477 -8111178742569144483812498776454850239976275602862091195316409761491579705347154 -> -1733556536053264285494828444779092676535588822369737968413795323604303602935527 5043935532468382727069071380517313007933745652526231048882618930744603721595319 +precision: 160 +divmod76 divmod 7035011056077616549221289.230217842717433998785231761704675e+340216512 -350421628718469097258.86497669 -> NaN NaN Invalid_operation +precision: 278 +divmod77 divmod 5856395735436252038840467493370798423648098150728601153208311857848817207044629993122893881792049518937739959533790426809349367085986420587420904806667219225590016442344841819655681799 +29114612635912500502339509060466156402693237577217113238540886977336237227488889759150571992 -> 201149704743537036319444269302166186024779094270152456004089734868809880557215100883741980574 14106746714137661631908940655250202529232539007335706861944742728905136530793309724603198391 +precision: 239 +divmod78 divmod -44205699775358667790073304770763018856068221332387986143773232620263572337988440419306832485846296511951723310556973459851693336300122670681231532478112698217 +Inf -> -0 -44205699775358667790073304770763018856068221332387986143773232620263572337988440419306832485846296511951723310556973459851693336300122670681231532478112698217 +precision: 149 +divmod79 divmod .7169138207197493454717274223879399877030718226863240189185380588874370366203594943381001189251941054440224389250838133532 -991659710882437678706810708297924273843245819993872736915034e+740179395 -> -0 0.7169138207197493454717274223879399877030718226863240189185380588874370366203594943381001189251941054440224389250838133532 +precision: 300 +divmod80 divmod -10575313748269576905560526803840058241990189010299829317895166729151666561703937836051367162855756051538839503001480208092184244526061300889167687521986639715658163363820.24564405630109129381429770482385531603641037294525359578720867175859509408740840965781011208632286844045804698014509539e-636072511 -158877471688640708919355246084822626370916770044741070410141755684952828819785701749573217702989981066776146780152023513783668397904572107348902. -> 0 -1.057531374826957690556052680384005824199018901029982931789516672915166656170393783605136716285575605153883950300148020809218424452606130088916768752198663971565816336382024564405630109129381429770482385531603641037294525359578720867175859509408740840965781011208632286844045804698014509539E-636072342 +precision: 101 +divmod81 divmod +7162475425615567358631.223525319188927736806526927856754687 +.11109742714045329867509607424 -> 64470218707770005103898 0.101057544145941666503405540336754687 +precision: 16 +divmod82 divmod -.39423023150e-185945130 321323e-577378552 -> NaN NaN Invalid_operation +precision: 108 +divmod83 divmod +.1538937684544802256592642134657630667545346608579556965528409184091120083064601179721480523959009153491209e708933087 +.34351981908398099192296625490809289872628898852728074E+829974862 -> 0 1.538937684544802256592642134657630667545346608579556965528409184091120083064601179721480523959009153491209E+708933086 +precision: 190 +divmod84 divmod -44764585967256313695844 +38272517592.e-686185357 -> NaN NaN Invalid_operation +precision: 251 +divmod85 divmod 3522307160388626302778576568513981403760576663354038877695878112516948256980711014499532808149405212443382654975043808241943295190404276140939824918543332816125062424175228093445054484235880378741798168118132442217 -891759780646762822195509797479085846.18196965272431890242985757719329145229648514487779134115820445586429266 -> -3949838551626557517442600296555084585795483847899449886913562108937247183615775024501459492298816642913603896781934088978290693849259802270090891952268784057467957991831252592403 14867105815841923700563805962719404.55881164887940411130921220293585958041359811771217170045467041511533802 +precision: 30 +divmod86 divmod -18872455.E-971883317 1413 -> -0 -1.8872455E-971883310 +precision: 80 +divmod87 divmod 7719471272699699485363770491344536266221261639882234282e-215115052 839769180691320016.75941197 -> 0 7.719471272699699485363770491344536266221261639882234282E-215114998 +precision: 36 +divmod88 divmod -Inf -861 -> Infinity NaN Invalid_operation +precision: 171 +divmod89 divmod 5.496 -26 -> -0 5.496 +precision: 149 +divmod90 divmod +2685186666520932059977826005820637796951289635950787437122475192682106e162388613 +9135330210656333488134081939730169 -> NaN NaN Invalid_operation +precision: 257 +divmod91 divmod -5774319230886218996012278847294.673811E140925772 -912685959252539623 -> NaN NaN Invalid_operation +precision: 285 +divmod92 divmod -Infinity +6053525259831955078036367E647293920 -> -Infinity NaN Invalid_operation +precision: 62 +divmod93 divmod -813.9733885661447924236687032459684914e631560368 +.850873190761175275 -> NaN NaN Invalid_operation +precision: 27 +divmod94 divmod 839895643636027394 -209904868E+820944050 -> -0 839895643636027394 +precision: 26 +divmod95 divmod -.3073215903110714195 623.523609 -> -0 -0.3073215903110714195 +precision: 53 +divmod96 divmod +10716690565.42819848132072657071722 7919239.5879960602E+231896674 -> 0 10716690565.42819848132072657071722 +precision: 114 +divmod97 divmod -86.e963883885 2 -> NaN NaN Invalid_operation +precision: 105 +divmod98 divmod -Inf -38913.89417119305197203125381322218665553961146150 -> Infinity NaN Invalid_operation +precision: 270 +divmod99 divmod -.7750272692898839114914863075291175669308e417763229 +54386644431129155555 -> NaN NaN Invalid_operation +precision: 218 +divmod100 divmod +363428784324467773136779002881077636615285630363949376863630322944545013804541316580009120723414084464890867771841592427927482591561415882349597076163310940128643483850707688855163497 +Infinity -> 0 363428784324467773136779002881077636615285630363949376863630322944545013804541316580009120723414084464890867771841592427927482591561415882349597076163310940128643483850707688855163497 +precision: 2 +divmod101 divmod +0.0E+303158629 -1 -> -0 0 +precision: 78 +divmod102 divmod -.5749354078993745 -5295322.4E761038718 -> 0 -0.5749354078993745 +precision: 32 +divmod103 divmod -93906.561e-65404130 -1105 -> 0 -9.3906561E-65404126 +precision: 154 +divmod104 divmod +.40984770482965756 +NaN56759548430164575986140923006176125025952350895213000365200861789245690992178 -> NaN56759548430164575986140923006176125025952350895213000365200861789245690992178 NaN56759548430164575986140923006176125025952350895213000365200861789245690992178 +precision: 257 +divmod105 divmod -909221290495276348213915735102117928638142997933077564265277512012452730118111477515674826931683319223803659854282230581939758419505684106219490112555561910039596622119861087096159 -1622874178190952265481998642725226544974606.8290485920426420464257681998438233933865124438e-801721624 -> NaN NaN Invalid_operation +precision: 72 +divmod106 divmod +4905567085901846170635551068776479605307047241451012545943164428817 -Inf -> -0 4905567085901846170635551068776479605307047241451012545943164428817 +precision: 175 +divmod107 divmod -70772401532332037468898551821262487138937960169041355089711934907497666736682554324370904890600441281388323165830986 Infinity -> -0 -70772401532332037468898551821262487138937960169041355089711934907497666736682554324370904890600441281388323165830986 +precision: 194 +divmod108 divmod +960198539421340854407290721070295691645029449746410064708 -7061411287209424330862487263 -> -135978276914783493017148512265 3103051768495009888448284013 +precision: 167 +divmod109 divmod -9009433734713295.119036719e-415575626 .563444856787 -> -0 -9.009433734713295119036719E-415575611 +precision: 239 +divmod110 divmod -60114.830021794 -6864461.E-135286754 -> NaN NaN Invalid_operation +precision: 89 +divmod111 divmod 877121008086007516143808904269771 -Inf -> -0 877121008086007516143808904269771 +precision: 82 +divmod112 divmod +9650938569039296218314027413936499791369754360285852380 -119520668110420276626136418 -> -80747026615707897504970114681 38255970468957600875299722 +precision: 196 +divmod113 divmod 3497613538383952082208968990605098812601229299714792667390223929006895131319588.58335548960400028774365761114155412587500298694450725207705121 -5584203449746885577893902091874767001.822395670974946130502115699391536e-855926274 -> NaN NaN Invalid_operation +precision: 180 +divmod114 divmod -2091583936766111660418405432154426709 +Infinity -> -0 -2091583936766111660418405432154426709 +precision: 111 +divmod115 divmod -533758817389542810130225388783983847472024473338059635934518165642861889905545854133729156002096649377 -605893913256928615359242360810040183403856677769282 -> 880944346379665641246250817970849774795419416574636 -134426812127509398610695386778682060098936155518025 +precision: 71 +divmod116 divmod -4812656305742150220373849176631406964473517560996457378796536135 +649993.50996174085230039953613485 -> -7404160552349864374088532037967169024031240622472636176048 -481124.54383060918193149793192720 +precision: 177 +divmod117 divmod +704912763170299935.38525733349015E+334504187 -5425962330.625072e-464504008 -> NaN NaN Invalid_operation +precision: 79 +divmod118 divmod -452421274711950456915967213737752848906 -1653062207623072726 -> 273686781190457455113 -764147602473300868 +precision: 3 +divmod119 divmod -sNaN +.0E-251312611 -> -NaN -NaN Invalid_operation +precision: 263 +divmod120 divmod 234573682437864959986634400287983066231031 -792119350626055280173 -> -296134265944227393450 287169589621811164181 +precision: 144 +divmod121 divmod 14470173589794391386673238238014119797674290709771747879758720895328055994494891840245679367860460086824234636083948536551694398558508018 -Infinity -> -0 14470173589794391386673238238014119797674290709771747879758720895328055994494891840245679367860460086824234636083948536551694398558508018 +precision: 56 +divmod122 divmod 1334164e-167977713 +735e-285823620 -> NaN NaN Invalid_operation +precision: 50 +divmod123 divmod -79713420891403117599723 65399311176e239486132 -> -0 -79713420891403117599723 +precision: 245 +divmod124 divmod -446058243488042211607281758874420.633 579137.492203020537 -> -770211304730506894755526566 -246338.673852914058 +precision: 200 +divmod125 divmod 38950226171182285084336990683382763887221112366695053798051829720287521891376017832727218263751337587684477726349752065604136825799709132798127796 -.9351633396483943154185155537608072091448273598765603376954253212209851791e-337890536 -> NaN NaN Invalid_operation +precision: 220 +divmod126 divmod 13.612798e634479407 -8002 -> NaN NaN Invalid_operation +precision: 75 +divmod127 divmod .557301018378633741705440295536899068045636515E-758336583 +Inf -> 0 5.57301018378633741705440295536899068045636515E-758336584 +precision: 26 +divmod128 divmod +245371 +5.0E-741771260 -> NaN NaN Invalid_operation +precision: 250 +divmod129 divmod +46490103880529 -7793205 -> -5965466 4421999 +precision: 74 +divmod130 divmod +55933999840403723036930 -5011886481 -> -11160268703700 2298357230 +precision: 274 +divmod131 divmod -4788925068117183607490313282038472099947078593020448717002832265225408104519221079866995624264916247582858156007287656791685101777850.6590560844894198067255558111117947966790897961690521686202483623518957565937256229475385441226235262614098911118460 -.9787401480610208706247671644360161512743299983200299921511537332793364700547219973421060880970591016952859621253301154861946 -> 4892948427225048945819841442698132528827334280036408659134279902922332337245723059070773124263956120784921887848726895567951447703261 -0.1888169799142302758885471445009328086447005023763734531136214559508524319922644097089669376087905297677328409979054770994094 +precision: 109 +divmod132 divmod -69330315520007602260578 -53.975201990 -> 1284484595960427312901 -33.592127010 +precision: 207 +divmod133 divmod -188272447033011690956525728977820565712347363832493581916020250350471833497434129656948648270595213124853240137889E806432882 -961254207828491787736355347956884816452435834982293347047 -> NaN NaN Invalid_operation +precision: 37 +divmod134 divmod +.280872024291785E-964496847 -1962644 -> -0 2.80872024291785E-964496848 +precision: 218 +divmod135 divmod +Infinity -.419181315801919162594537922733701819033617479153899335540503043888392738793582325E-136999333 -> -Infinity NaN Invalid_operation +precision: 174 +divmod136 divmod -Infinity -28189321519475376104808848472638770966811370962525853425306362010842003768304e+645741422 -> Infinity NaN Invalid_operation +precision: 26 +divmod137 divmod +.660554547369247 487091.2 -> 0 0.660554547369247 +precision: 195 +divmod138 divmod -Inf -1590773075570846002422437033818812.86530681e316268058 -> Infinity NaN Invalid_operation +precision: 240 +divmod139 divmod -.217099393965614870562715904957313821572034631 -81.1304590757837240516 -> 0 -0.217099393965614870562715904957313821572034631 +precision: 117 +divmod140 divmod -69670439597538544544560887433970616887221821713806772855806025982148 +5664346516302910228771202611846773 -> -12299819475559217961759095069613392 -5062464863329417687975457773198132 +precision: 161 +divmod141 divmod -311982464973091232838280743251186559519561067984334858684918456369107252662832139086503754170999628865E932520878 -37822591377753673511592509033391627867636503125723 -> NaN NaN Invalid_operation +precision: 31 +divmod142 divmod -.78384 -90 -> 0 -0.78384 +precision: 287 +divmod143 divmod -17728882684376439581763346467148964348616740823340443691834.9327501579 -Inf -> 0 -17728882684376439581763346467148964348616740823340443691834.9327501579 +precision: 203 +divmod144 divmod 1524293522351935350946310410043328489340063564275060647871377431954E-354788772 +421286643239365921065245721.551866E181243478 -> 0 1.524293522351935350946310410043328489340063564275060647871377431954E-354788706 +precision: 75 +divmod145 divmod +.453291279508350337069413219062522147247 665018315.60170428900 -> 0 0.453291279508350337069413219062522147247 +precision: 222 +divmod146 divmod -9967019962213925395741599277327681110990872.20298482959148238627846234045916208406974603442980925684984736196594868347660528636112585638 +5966958229802755216615246113585284818792849756972521643709005908721e-75321286 -> NaN NaN Invalid_operation +precision: 30 +divmod147 divmod 3011443 -537 -> -5607 484 +precision: 19 +divmod148 divmod 930080 -986 -> -943 282 +precision: 174 +divmod149 divmod 717824919532758100684713485976829495807274469518929528231342180742991485100213157609326 +5426258039629499092697423157281976772410308E-870809929 -> NaN NaN Invalid_operation +precision: 3 +divmod150 divmod -572e-211443746 +9 -> -0 -5.72E-211443744 +precision: 240 +divmod151 divmod +28049530837159499758194431497877839317393617717730260816126406992842854902684061051996042265544183870602418223752055046102006943782315782415823.3266725638352716605 .608370691549976835447444670526761402705193169291083261089444866798808488401823367 -> 46105986410516076713754625979286639574663747650846680919097188232664130621700812224349344214432368691938483596735385067068265691493447997667119 0.407196013011573375831293573435669824987129932267480590232509366611431918098230327 +precision: 122 +divmod152 divmod 8760582412e-583654913 +61696 -> 0 8.760582412E-583654904 +precision: 96 +divmod153 divmod -15390558237249561483275299093671197257801333.75880300873645817193816876424717274301e408717588 +40174109057973124165485727261996299972649 -> NaN NaN Invalid_operation +precision: 166 +divmod154 divmod +489716931701909254869257080278885427811982813338452883401184367085436267017522930995547302566852193885916724060581708957240668 -4953290758624661789713915481715780607818461551702097095304515e534224891 -> -0 489716931701909254869257080278885427811982813338452883401184367085436267017522930995547302566852193885916724060581708957240668 +precision: 253 +divmod155 divmod -301179236121989073923651665413778825778942045652 .971138863279568588491979 -> -310129938683430574147274120261275761023841567394 -0.769958013204029843067274 +precision: 141 +divmod156 divmod +85295650338847291696411905839374922237456705.8819018265319169958921850 8186943162091385555997073477585334 -> 10418497924 692195782972810063076659425610089.8819018265319169958921850 +precision: 25 +divmod157 divmod +6203129626.2e590620421 Inf -> 0 6.2031296262E+590620430 +precision: 297 +divmod158 divmod -14385036488739725764219800696977198887350661857645014350650338674962555159248077343954653224635561419798854842716383412988689102667302067255807729920420574438476825288985792643975972.7982971260154630747613008412184504296426671700883292594678260 .4713737720458929497515925356916075332423177736256683314468345134568702060236586347566573319328796542605180550768577923867 -> -30517261124446267733537282612652742720020595533583674253649746562192990941255732540895446411039615905859423855212511099029010095304289203182132884470535486149314687437867980892148837 -0.4267413013372475739832055203724575552012770182864588076182500534133819906038964407263942532105531623831556670418181407321 +precision: 124 +divmod159 divmod -88215981846702128308160713724802404453949036220301802523619683011153971780 .8148131628105619384043482681813964174 -> -108265288133559146528265982178943532074463690659989084523357256247404163988 -0.6836897481040651478913438187347034088 +precision: 93 +divmod160 divmod +487743940408090276433745096838510184212857774949445061141892000915290687764575503296809556 -Infinity -> -0 487743940408090276433745096838510184212857774949445061141892000915290687764575503296809556 +precision: 282 +divmod161 divmod -574753871169E992231882 96.4140 -> NaN NaN Invalid_operation +precision: 133 +divmod162 divmod 39435807109760385174526053949329299055369121396474539 -93989976032587499713050661 -> -419574605446090313289879354 33581267139727917416521545 +precision: 132 +divmod163 divmod 619567009931408282909171306643e+881220211 +.129026720372765 -> NaN NaN Invalid_operation +precision: 124 +divmod164 divmod 479764366982182578269601525966602708556991145289765876828415269152815219653802469624955064854193025201347890 -Inf -> -0 479764366982182578269601525966602708556991145289765876828415269152815219653802469624955064854193025201347890 +precision: 135 +divmod165 divmod -633389558432744423239278999883110740172847958681957080264447170.33987073e+576730598 -63.572357987649222012537879980917363 -> NaN NaN Invalid_operation +precision: 132 +divmod166 divmod -Inf -28692818645 -> Infinity NaN Invalid_operation +precision: 271 +divmod167 divmod -3252228018638560077859989067775950262975041442080000133036350042622312707327780077335301995067147776959479570075036962963708068078670254151193788368545810701306230562860750776887735111330E-120215683 -163628405591787741995660796092176102837688317056867494749327374316773768677369073796067248606 -> 0 -3.252228018638560077859989067775950262975041442080000133036350042622312707327780077335301995067147776959479570075036962963708068078670254151193788368545810701306230562860750776887735111330E-120215497 +precision: 74 +divmod168 divmod -31.460364807392473547966741584891869874216043585351325313296301821 +.21437586655732746904422195169155 -> -146 -0.161488290022663067510336637925569874216043585351325313296301821 +precision: 115 +divmod169 divmod -7.72614650585920009311705087753607809650433764774523586525699 244723970404118620522649687577 -> -0 -7.72614650585920009311705087753607809650433764774523586525699 +precision: 108 +divmod170 divmod -455464291306804232091994952805459059595343426521232754552674599 -219022545555651098939831678365E-799613238 -> NaN NaN Invalid_operation +precision: 33 +divmod171 divmod 1583434906351634313049004574514 +772955189155951. -> 2048546835012141 121632377173423 +precision: 91 +divmod172 divmod +50419915954933715325206355131292907748659689838946165933102341005 -4678232695620123.4664375207642682e-972116511 -> NaN NaN Invalid_operation +precision: 124 +divmod173 divmod +883632545841149251134215874001448265746611263726374036518750613589411306306104651 +Infinity -> 0 883632545841149251134215874001448265746611263726374036518750613589411306306104651 +precision: 40 +divmod174 divmod -9468382280758722202092704 -sNaN199189593453928764076617370972428883060885854827339151 -> -NaN8764076617370972428883060885854827339151 -NaN8764076617370972428883060885854827339151 Invalid_operation +precision: 209 +divmod175 divmod 59173272369789189767549057186812654359030282499964.4965193759494854869099138920068337642944876167702627586390049000985051737516954506528571952443955963455375514445004795275618358904132961822372042300904 -sNaN -> -NaN -NaN Invalid_operation +precision: 76 +divmod176 divmod 6105133569856829505250792888430263119036582E-3318946 -613576944558197164010 -> -0 6.105133569856829505250792888430263119036582E-3318904 +precision: 227 +divmod177 divmod -9968426740367088E419950805 +5.5626971E+823490253 -> -0 -9.968426740367088E+419950820 +precision: 87 +divmod178 divmod -61523114396 -15999 -> 3845434 -15830 +precision: 175 +divmod179 divmod -47696092580589842105871751596243898574999451728268493520742314380430464214161743662156159480015584036 -NaN -> -NaN -NaN +precision: 72 +divmod180 divmod 51974475.7981 +232811e-763638231 -> NaN NaN Invalid_operation +precision: 243 +divmod181 divmod -76616447915161787027563003728491780991844070260531784 NaN -> NaN NaN +precision: 170 +divmod182 divmod 226348471948455452951288565448658045508562123801396057718548785698167919167085676706619019571040549917641382355487490633437711613877084330 -68676722201592979504076607885460882814225850711637153402815.5047337795E+371481055 -> -0 226348471948455452951288565448658045508562123801396057718548785698167919167085676706619019571040549917641382355487490633437711613877084330 +precision: 110 +divmod183 divmod -999039005748076774611455630442234574488024681930464346 -9046662339394.16684095679780 -> 110431777850015346924630277736340959043353 -2744007589461.32290974497660 +precision: 134 +divmod184 divmod 119024486363235385678375.7276502421335050042923063632245702425609454597931428408733331928571426404791754454605313045858776629322826818 +349307196355030061283347697747224957569421248727617096025571086057 -> 0 119024486363235385678375.7276502421335050042923063632245702425609454597931428408733331928571426404791754454605313045858776629322826818 +precision: 105 +divmod185 divmod +7202926554865904812936210511332 -10507352.2178559 -> -685513001327342316795597 5748598.0995277 +precision: 131 +divmod186 divmod -Infinity +Infinity -> NaN NaN Invalid_operation +precision: 46 +divmod187 divmod -NaN 272.3131191681846 -> -NaN -NaN +precision: 213 +divmod188 divmod -291872252720381905736744798305856735975605578316690794194512660138095519853432156514063323371745174941601815366513 -404289633758260084047887602692125331768337470412545141301e-351346230 -> NaN NaN Invalid_operation +precision: 98 +divmod189 divmod -3628127538565989624569334180433363518040441493345135164564638 -Inf -> 0 -3628127538565989624569334180433363518040441493345135164564638 +precision: 7 +divmod190 divmod 7383.514e-662258557 -122 -> -0 7.383514E-662258554 +precision: 144 +divmod191 divmod -1.4436465622369997 12512422 -> -0 -1.4436465622369997 +precision: 285 +divmod192 divmod .644396412552730502169047761264515E-641256023 +9735324210052432e-893036613 -> NaN NaN Invalid_operation +precision: 262 +divmod193 divmod +3094021638156276661698876320195589425193579383342205759262147756E-871594726 -34405397372855903907575295112960 -> -0 3.094021638156276661698876320195589425193579383342205759262147756E-871594663 +precision: 298 +divmod194 divmod -0.29943454E+72170125 +.5444E-309976139 -> NaN NaN Invalid_operation +precision: 46 +divmod195 divmod -.88230999634181056208011478996720090151709e771254853 -35220448980207632204 -> NaN NaN Invalid_operation +precision: 103 +divmod196 divmod +13906553166398823835420881.782493032922183610 -6623242210141493416153e-311458191 -> NaN NaN Invalid_operation +precision: 19 +divmod197 divmod -246119380 -.62178 -> 395830325 -0.52150 +precision: 36 +divmod198 divmod 78158823443827434028964132E-9790027 +5404227538214 -> 0 7.8158823443827434028964132E-9790002 +precision: 170 +divmod199 divmod -75882235305218267270774626614445090632566686929861284727356778858878e954050199 -9255134906461903502255721718861013e696855587 -> NaN NaN Invalid_operation +precision: 218 +divmod200 divmod -386645203670667600984874475439752174649137190441215477549811026970076817615917099234497998297307148182140493989879718340429525539825039852972794321773461145124122630803298795426019648243298 1830313381506852024097879110735497011894745336926265517749691898756205931992226257385094764292 -> -211245356984907200553212376748994129071649411085806411519135259946530472348708428269936318326229 -1152575765877732301288712709618542476015998725789212067482702930565390164677344883582932028430 +precision: 291 +divmod201 divmod -26442233471869345158816252962419512370880605987308499655800242041199259942581399241774940150444974284942695609155117824880481214226119290314564793275882168 -767114331392527868599707452341635125530159870565318960769077679974098.4481235E130662771 -> 0 -26442233471869345158816252962419512370880605987308499655800242041199259942581399241774940150444974284942695609155117824880481214226119290314564793275882168 +precision: 120 +divmod202 divmod +729022242757622387399432325746920223817.8e116302535 -.85289177269742218437 -> NaN NaN Invalid_operation +precision: 180 +divmod203 divmod 94842649898868458507367663344386148821 -244481926.2618681435E-525162652 -> NaN NaN Invalid_operation +precision: 132 +divmod204 divmod 77830260311982 184.3204 -> 422255270235 158.7060 +precision: 170 +divmod205 divmod +253437433348953524862283772714859169876797998034012805104865775111937629592159185791171131817711502636240200430076305847436459943283337078119673384281906936370E-860058711 -9004344206731718115871502279453373231834813060237152110160633467285615835063329 -> -0 2.53437433348953524862283772714859169876797998034012805104865775111937629592159185791171131817711502636240200430076305847436459943283337078119673384281906936370E-860058553 +precision: 45 +divmod206 divmod 91332925055.48187535E+313821141 -6.74594198E-809774484 -> NaN NaN Invalid_operation +precision: 61 +divmod207 divmod -13773845439430577743349258182933405e+385599678 -2632440649544850.2 -> NaN NaN Invalid_operation +precision: 6 +divmod208 divmod -.9766E-29860889 -13. -> 0 -9.766E-29860890 +precision: 80 +divmod209 divmod +.7810107327775675189E+32169708 +.158929517E-689298025 -> NaN NaN Invalid_operation +precision: 186 +divmod210 divmod -Infinity -441610448850298407118076.34961467212525243069408400645367562E305279921 -> Infinity NaN Invalid_operation +precision: 134 +divmod211 divmod -38693337030497996669440905903813537547043235731.5165814023123413732057223405155294016867370938013737152032497541684035307 Infinity -> -0 -38693337030497996669440905903813537547043235731.5165814023123413732057223405155294016867370938013737152032497541684035307 +precision: 4 +divmod212 divmod 1671. 68.e845303089 -> 0 1671 +precision: 235 +divmod213 divmod +.616243142625367449445370294842594553206325520455080437768811407097411528169763237355274335613362183889187685535353896213179926083610803872664308636e+714788583 -5346260694819956472082090404053431836036799832633787190467440330361847504 -> NaN NaN Invalid_operation +precision: 216 +divmod214 divmod +586126205361493279447761113847359505139519782271568258969985751212369082278865155799265402285244332085333389906559873652181555988171782418605419889464594646344522801271514980 +576942542625530978.399521493201993912561612417764480637141650266535899717481001947221719 -> 1015917811666599577506025321162894571296470704898588557588012042444902014537856790109170512092024340817393511267436583395665993964663767755945019814854090469 316952465919938963.188652121818339003904126711892047387721724488391731842167222772303789 +precision: 278 +divmod215 divmod 993912101583271564198937361713410073362433.3671372816266549336140462892092867421270809 -5769071628756951641667317322777729217682047E+233433187 -> -0 993912101583271564198937361713410073362433.3671372816266549336140462892092867421270809 +precision: 256 +divmod216 divmod +.845403892876970602288255595204239348354997037029447446939457227740474151295791686855926348743752524328323828041089123568874495008694135948041560599710125356676870833997867365092197552275176771394514363639694813068386E-680697580 -384793689565381718385091217972813680364826633998736542024413478492197882254078840014188071465161453735243765E-434574770 -> -0 8.45403892876970602288255595204239348354997037029447446939457227740474151295791686855926348743752524328323828041089123568874495008694135948041560599710125356676870833997867365092197552275176771394514363639694813068386E-680697581 +precision: 35 +divmod217 divmod +280787571220292580441641132294317 -5415227130043441 -> -51851485538343448 5191025714569749 +precision: 38 +divmod218 divmod 971501492858936.49E-327987913 +408.4844 -> 0 9.7150149285893649E-327987899 +precision: 48 +divmod219 divmod 75779007383809604649872.2515 7658234669079E+316336828 -> 0 75779007383809604649872.2515 +precision: 222 +divmod220 divmod +203785439484713013565.22926193109841685548526702150739150549822261991334925319617883182490204363117262640831612895270508655161019329481e382055407 -6512624258445.210438448827396279893523316711577868360235754072699062e-830360049 -> NaN NaN Invalid_operation +precision: 92 +divmod221 divmod +.98864E-515182880 -7.2 -> -0 9.8864E-515182881 +precision: 4 +divmod222 divmod -Inf -.60e+918768485 -> Infinity NaN Invalid_operation +precision: 49 +divmod223 divmod +1651752682151241232116595881159351882906 -61320679119772.83239e+299517790 -> -0 1651752682151241232116595881159351882906 +precision: 217 +divmod224 divmod +NaN 693633458997215338 -> NaN NaN +precision: 115 +divmod225 divmod +57820125940992756926416607022594026186537115674433083750459464091584188703778702176473484593862 +Inf -> 0 57820125940992756926416607022594026186537115674433083750459464091584188703778702176473484593862 +precision: 182 +divmod226 divmod +588002187300412973740185895021303872475536460074118795449346845885379755992220378405051133722238511299948868091594855240228825765604568635 +4887906605152184089977323126028779093675762800084.88476911158895471540 -> 120297345018953289055691444355231045475776938737966267739092415300746327372226195682894760 4132514517644044323122122399205074881009423037251.34539764797604869600 +precision: 83 +divmod227 divmod 91.920 -36e486533441 -> -0 91.920 +precision: 274 +divmod228 divmod -sNaN -.195108841575223099941529583105881344893881725845456598260893371811991244648637081296100051149865E902540108 -> -NaN -NaN Invalid_operation +precision: 258 +divmod229 divmod 86169432349423069501359904254114655468093743388224330840306e+28187897 +40051662472307093229214842852 -> NaN NaN Invalid_operation +precision: 222 +divmod230 divmod -19463032246387332843998949335991876653247712703713459122770805454720383953624238227966343E-623478889 315548606593391859.53629160875746201462910624e653668073 -> -0 -1.9463032246387332843998949335991876653247712703713459122770805454720383953624238227966343E-623478801 +precision: 118 +divmod231 divmod -646349143888110268674825744430662981012760117589145429920 -1551232747500762324942404837 -> 416668062822592411921624015783 -359825239617420527881887549 +precision: 222 +divmod232 divmod 82470406553101997.1773857072606336491308922987831618084585626896321001966335175975704564684450743897763581200355126171862044127584612500713611811288909621065636164889557431256885037180194628760037021389451344045680912588 525340009878979780964393378886208568058425609844200.7198520837247878830054971147176551527763496713434644861E-411292175 -> NaN NaN Invalid_operation +precision: 153 +divmod233 divmod -379381828279859387479171586839885892786853117784412357256 8526348.476338633489891075084 -> -44495229034172988543451938727754481241398879310179 -3078073.744241356645385519964 +precision: 65 +divmod234 divmod -32952778843251441427352296616711137971217731333520466207257023699E-200607449 +46603325420340175085502887329731 -> -0 -3.2952778843251441427352296616711137971217731333520466207257023699E-200607385 +precision: 34 +divmod235 divmod +Infinity -24740E+451846435 -> -Infinity NaN Invalid_operation +precision: 186 +divmod236 divmod -7757759093696423743837099889882858995219291276822452145949349421845619280255548077760421915589035941732817955742919394591346923911555782032780076672906121555623177182070614914e951410213 -298766145617945428411942883466577225653159890261952052489815844855030450823190989204423 -> NaN NaN Invalid_operation +precision: 52 +divmod237 divmod +305182809573329525267360563582 755494592837443E411637411 -> 0 305182809573329525267360563582 +precision: 107 +divmod238 divmod 5545372940688522424083909151129084556439411304287283236330345862203906833196198746944014385 -175467249924153311537052993963327649392536473 -> -31603464139806947011740163165901545180561013596 49207235155206009513785866276914504665127477 +precision: 165 +divmod239 divmod 2110546305500663541893923835276917736808249358214629585702200088640965847387963760111297541569605558971155873951688853492 -.525669232268566597326762983645770701835567715144209938952379e-245166361 -> NaN NaN Invalid_operation +precision: 63 +divmod240 divmod +84740 5.9 -> 14362 4.2 +precision: 16 +divmod241 divmod 9696 +Inf -> 0 9696 +precision: 292 +divmod242 divmod +Inf 41234270072018.2774869485244534512607600188761121347993605447374283332763008142442221178059344165286745238 -> Infinity NaN Invalid_operation +precision: 71 +divmod243 divmod +79447311559005794688036688703528652246215119833178503395037e-387115032 -Inf -> -0 7.9447311559005794688036688703528652246215119833178503395037E-387114974 +precision: 292 +divmod244 divmod 5721101671479067384055699727450213 -9222426.6177134479E-7845307 -> NaN NaN Invalid_operation +precision: 287 +divmod245 divmod -439054302279635259339475845118349.32143134073674124786126690316400603409237344000323295916040 +6750679799651.2795484008524638194508545870226615 -> -65038531719770729681 -3352631826007.85405655337732675727778576549802453409237344000323295916040 +precision: 120 +divmod246 divmod -329990002023258726 +34.4203655 -> -9587056884194292 -22.3462740 +precision: 298 +divmod247 divmod +854221094821672290689142808122752461973521194276188402314394569351e340759199 -Infinity -> -0 8.54221094821672290689142808122752461973521194276188402314394569351E+340759264 +precision: 200 +divmod248 divmod +9343871472815147376232547377566997313770122642276997376075281e961984897 +51597829508512352832033.5247338e-597709058 -> NaN NaN Invalid_operation +precision: 48 +divmod249 divmod -34842162997690845791128E-32978560 10879812265 -> -0 -3.4842162997690845791128E-32978538 +precision: 105 +divmod250 divmod .584056649454977841560762 810220416611e-307598347 -> NaN NaN Invalid_operation +precision: 221 +divmod251 divmod -44107584701293266372938802991964302022E+553895035 +.5037773402080065348 -> NaN NaN Invalid_operation +precision: 260 +divmod252 divmod +.299281762754051091202150981148604574060549143811340859809541175467472248304265168494489425565 -.8852986179508124536015932021920711388632049778 -> -0 0.299281762754051091202150981148604574060549143811340859809541175467472248304265168494489425565 +precision: 283 +divmod253 divmod -7804577128664417950809020752452754929090956268233056764828812779585236257101237272245586562726424118802335309621790615836578849282296726573422046278129023151698447408667226289794354840912309757098021 -25855186698571.5400470802935602843152729745638231701530628495747439483502892049861375044464908004613 -> 301857310861948215244229835373882882415064621782144862151065044652857335095836483565196510011038301082830355986973880705615073053562476301217610064464433579485998886941307093063987408044 -5514257824530.1690168648348403636666654426949699745352582694771987602027445942211667860906134693028 +precision: 240 +divmod254 divmod 62125584624905167281457216593091376480958302346719573383961957051603339120928421667806826870766282991761834120881153416498029399060938245826777137874027700277226585605720420560489642601954905 69591058368912294649342804032629276570338116654175866334058007526444585024818090152766328210431E-834138049 -> NaN NaN Invalid_operation +precision: 220 +divmod255 divmod Inf +701657838368086684321161595947051580806341962318000746540655256.487315715425392443812256430357078429390 -> Infinity NaN Invalid_operation +precision: 228 +divmod256 divmod -9275359388017839117146746096336710608664552843669349715046769428091615251170806369048925 16583879604022603610836828604841187109443302 -> -559299730189068545996205554204141260725532990 -13513511488378993431386838723666430233515945 +precision: 243 +divmod257 divmod 5893411040049996759E147477830 +15304006e-248907082 -> NaN NaN Invalid_operation +precision: 106 +divmod258 divmod +sNaN9148594846885208041482465965639798645039507780620345458767279642798598 -3264808954.1940762874264210200570901103843631414 -> NaN9148594846885208041482465965639798645039507780620345458767279642798598 NaN9148594846885208041482465965639798645039507780620345458767279642798598 Invalid_operation +precision: 56 +divmod259 divmod -sNaN22732887069657929393354348402843182308766016343895109111861968038 +31520197447143882096086707 -> -NaN69657929393354348402843182308766016343895109111861968038 -NaN69657929393354348402843182308766016343895109111861968038 Invalid_operation +precision: 127 +divmod260 divmod .81872481971477102394807849139574183708841385 +6610584981142240081822 -> 0 0.81872481971477102394807849139574183708841385 +precision: 149 +divmod261 divmod +81975684469767989257967125011 NaN387838675301094241755798214598571 -> NaN387838675301094241755798214598571 NaN387838675301094241755798214598571 +precision: 80 +divmod262 divmod -290802775702299162568241758791931491661459305990269693948E-523776555 +3327110260698569449852033048 -> -0 -2.90802775702299162568241758791931491661459305990269693948E-523776499 +precision: 233 +divmod263 divmod -621101221453193812994967485623637188326081497429e554156234 -620757365134828262030093 -> NaN NaN Invalid_operation +precision: 250 +divmod264 divmod -23617583497886890620918852821913634307584262435923089134914141854586468012097512067212633265480613308721144917874675046993643875136487503168939544220468389778709572461320704870650288158707851993995613520840523018570458131996426787140541 -.4370650469137909452973643334747630567260009660496533113977762810151138175172063556627410239295056044976098153051552193 -> 54036770189370346739550722546938360376440430396284605738589435021733713456926354044644634346038586174654517705772730379769795539365097703629678554704853944542926972213775676156755151101495694454394687973141783234583415641526976506905980 -0.3868091174358986929087037985102590696753096846221587288927186169460341320386223760372462962475440343669754577086185860 +precision: 70 +divmod265 divmod -.22115004811672795582421798770933605114387831321982706924469578387094E+832226264 -7530077337902943991324910363966408E-110759612 -> NaN NaN Invalid_operation +precision: 31 +divmod266 divmod -.2880986961073725E221898497 +24216016 -> NaN NaN Invalid_operation +precision: 89 +divmod267 divmod 16562048620044490576636852801413E-555139572 5961150364696640 -> 0 1.6562048620044490576636852801413E-555139541 +precision: 284 +divmod268 divmod 882197657585960712660665271138417702084982858242984370900201321164598980798657873196676125960.484478369106749081674683409538476494 -8470777126961388606905433097606237503437.170752547798843268189412 -> -104146012150176824652870752988267962739158770977592699 7628113347236726652237115889729816440228.664670768536240961371695409538476494 +precision: 249 +divmod269 divmod -NaN45144453732835894320331708170255865402871531372362507234849846257404327668294804182323675 -82834350040868368368 -> -NaN45144453732835894320331708170255865402871531372362507234849846257404327668294804182323675 -NaN45144453732835894320331708170255865402871531372362507234849846257404327668294804182323675 +precision: 61 +divmod270 divmod -217607381089613 +6113.777 -> -35592953601 -1752.023 +precision: 195 +divmod271 divmod -627012506608325059530479E760409385 -868697283655 -> NaN NaN Invalid_operation +precision: 148 +divmod272 divmod -387088043785311160. +Infinity -> -0 -387088043785311160 +precision: 134 +divmod273 divmod +33418078038302824638674823890539146953327046152794815673272969285264972169008109316673292058240150183895703422134534605375657325006890 -4385014920515243057912483468578919253436119769284651341619991365752. -> -7620972481064254046657700224803023086267575538167694731437078387496 2464353676626576456711625792014396813440733438591494123330405569898 +precision: 298 +divmod274 divmod -711513787292050042608421048763262195892447621469605071092997127885067062525024426889471870518805053647193442826157336707987637 -994961178156930940221501021658100125301431032901876285510149165 -> 715117135132910721692004718836280196138707672450338431068703340 -969013674661891568298683562753881428484542160202756370174276537 +precision: 32 +divmod275 divmod -6426.1611E-630617448 -796.1 -> 0 -6.4261611E-630617445 +precision: 155 +divmod276 divmod -7578808838840987669062306 50324111100e+452044282 -> -0 -7578808838840987669062306 +precision: 282 +divmod277 divmod +188536827276698439246392594348325861858736339280644632405296875252707799642556497199031662185023765648499219182785629158042311425940970649134465289223233612318175634112298694356604826672881546624646411 +4743481058162990621979128056141356204059544263439121686060012524543639606753842865056701998468580414e-363794400 -> NaN NaN Invalid_operation +precision: 23 +divmod278 divmod +.6873732 -507 -> -0 0.6873732 +precision: 295 +divmod279 divmod +29044955543068982310348338547615916770599720308192407563055981985922540397289878064073914747102864919630935601707360956273359122821578724106 +.2542088384201371589695409853506396429089009695184811600919067388258862 -> 114256277333149505042633264394291372655684500630184039324971920753826341620793518264965860365609063455049905373272124306472234182682454945622 0.0829595547013596340289216808961560427990997257390999501960772530397836 +precision: 133 +divmod280 divmod -5461599222063081554318834.9032331230962413205378348024091545997235226898071357363032189e261161486 2110470909119750830749951829051199341812552 -> NaN NaN Invalid_operation +precision: 186 +divmod281 divmod -668070961321153785779645836162754876 -Infinity -> 0 -668070961321153785779645836162754876 +precision: 272 +divmod282 divmod -Inf +327383341048126791144172139268356928769530332523608279650751685522532767850185955859765264176048991650532142057098994315852E-920003171 -> -Infinity NaN Invalid_operation +precision: 145 +divmod283 divmod -26.563 -4 -> 6 -2.563 +precision: 250 +divmod284 divmod 7755495749895420025465667135984366218794379756697949811927033.8495549289104563286641559739344506551112173752097214062548968634723614212606705918566563386774483205732752196668909844101832108440360295250232537249764540213951612205555616E-135061760 310739448502599009292574810910387118704751226366429857033091807257288459299932097984868018012735430163550623204094173E678290460 -> 0 7.7554957498954200254656671359843662187943797566979498119270338495549289104563286641559739344506551112173752097214062548968634723614212606705918566563386774483205732752196668909844101832108440360295250232537249764540213951612205555616E-135061700 +precision: 39 +divmod285 divmod +249043547807160707166690402528155236915 +3438562371916419848 -> 72426648369434939377 2405004671395682219 +precision: 279 +divmod286 divmod -332194120057570846446219964024266.4251194864470 -64337760549792598924287 -> 5163283851 -1321839021128925235029.4251194864470 +precision: 278 +divmod287 divmod -879061030561563020970273993117630921072.60224844915586069605364160485655246466942789716979325247E-826118464 +5063644099535438668089148617682809099.5832348132E-308585909 -> -0 -8.7906103056156302097027399311763092107260224844915586069605364160485655246466942789716979325247E-826118426 +precision: 88 +divmod288 divmod -28035964510438233069361578526957629885666953904157754685871477701934266619637078511409 +82244686463261994044253232757879476889006.75 -> -340884812333276525226770857307448528732468923 -56297356752417967817282071749378913799178.75 +precision: 290 +divmod289 divmod -8850735487720619108641242964843621042915286575323749991745077547356991621504688244047790322874139208968792475861470944998171321246481182523286605618649621097913756069243762009460663967177710093047109801387993908353447551 +52701607605793492081213104239146802374685702370428706099104985934372597310608294755776494760885507686502479984 -> -167940521927222140843025930700346721381455481865588503769031696989367213557054048015645507726406303133457386758 -51636323305322219552920531425313442983402049999317499824578198096143795115036661246607806417705554357511795679 +precision: 216 +divmod290 divmod -3414842567299524766816589099722796366411001550665e+814255574 -349370823600487468955449 -> NaN NaN Invalid_operation +precision: 18 +divmod291 divmod +6622026766308E-288013480 -sNaN19089550370006704241278780243068807199056755378103371163142213481053766757700915962394 -> -NaN766757700915962394 -NaN766757700915962394 Invalid_operation +precision: 285 +divmod292 divmod 57063920079914196170729834778678999920065459482596817201124237352313737366674888264896420250323393312956840139235896852745043900002458782417253661207791339324740267196280808846911953502484844198331888559639546218885801999453783018387949509419808194023731492 -63660383243769946487400869905895567178719189432071184654234662208639395798947262007363887847480821402350473631294605717950331228 -> -896380404456624034825298578053744725833135439971159145662696696242599098586946980696847629750024913063402010716273692837954573110 19107766792550473789554607270948359794484425368162872723699133695601692288298403851451054767249879399042377176131163852181652412 +precision: 35 +divmod293 divmod -Inf -9947837416373 -> Infinity NaN Invalid_operation +precision: 192 +divmod294 divmod -5270292945193977701619768.9306180e+764543323 +954575890632773 -> NaN NaN Invalid_operation +precision: 25 +divmod295 divmod -597E-346495898 +Infinity -> -0 -5.97E-346495896 +precision: 293 +divmod296 divmod +Infinity -5319174150859870629218859051681060774367977006063 -> -Infinity NaN Invalid_operation +precision: 79 +divmod297 divmod -360.9 +Inf -> -0 -360.9 +precision: 64 +divmod298 divmod -83522351801234856197494825694778.27917372483484403807722341732235 -.86134162082970485128447405503004 -> 96967741696703626713916424023933 -0.49217595157762538139028742337503 +precision: 143 +divmod299 divmod +305341087733750980235428485606062E-491525223 +7794343847798054 -> 0 3.05341087733750980235428485606062E-491525191 +precision: 171 +divmod300 divmod +737283651167166284734378981637.5326347233498826095 -879660674339288175295179E-711174031 -> NaN NaN Invalid_operation +precision: 223 +divmod301 divmod +46770216172536961216863169044886724791478463084352246978987882785.9208095019788866193155980 -480114382222849855314811057797253726788744980E-1521510 -> NaN NaN Invalid_operation +precision: 231 +divmod302 divmod -455125833998624335197809728360296706088196043939974748666010142492132497449160191293602081317622482533098340243121540152810926306428837599730209382108019127330193e-758380832 +1152455850464463119283243118382682355357634073931571913.29929902038411640497358782 -> -0 -4.55125833998624335197809728360296706088196043939974748666010142492132497449160191293602081317622482533098340243121540152810926306428837599730209382108019127330193E-758380671 +precision: 96 +divmod303 divmod 114.53640165158887E504474680 -7.360110 -> NaN NaN Invalid_operation +precision: 210 +divmod304 divmod 199794817075674013258638852375866065400175131301814400016773822376149736830875516333889900215029558200197303937582536234238506542772083080005000870419052962380211913729530799546868 -882113052190299535820078100120629584285623827894570722850365608842305693494063198781784821E559428706 -> -0 199794817075674013258638852375866065400175131301814400016773822376149736830875516333889900215029558200197303937582536234238506542772083080005000870419052962380211913729530799546868 +precision: 191 +divmod305 divmod -527091986713058234575662830E+215798625 -963447646669E-571199059 -> NaN NaN Invalid_operation +precision: 26 +divmod306 divmod 20.164725004 -781.38E-973643216 -> NaN NaN Invalid_operation +precision: 204 +divmod307 divmod 586544143280701081422511649207071975320382324758572150697874372575241396975188513851928060383407283625012366919.222751329228543702012077938302 +2059699109020993271344825568682280300933382430003071412160980590405008 -> 284771761424655153629811048729964446791888 392378034184398453147112395871666824231888267153529944105504803391815.222751329228543702012077938302 +precision: 128 +divmod308 divmod -.5295688891420803503939454483069157898584920 +8587188656060145142E-655604199 -> NaN NaN Invalid_operation +precision: 282 +divmod309 divmod -540142712790531380323344790024485997705402435236788506470852675725765327356178228590613334420416052790922592835343722890680928498929067414710880137114271702722681223669558473730150935508084760380612593673018078249.655299323912140912411925993357189521330049472232e-905993374 -4966456233710853496743918183173318964527932287488333018461417720378641602581943218157874577339798088142553712772536151.18278875358 -> 0 -5.40142712790531380323344790024485997705402435236788506470852675725765327356178228590613334420416052790922592835343722890680928498929067414710880137114271702722681223669558473730150935508084760380612593673018078249655299323912140912411925993357189521330049472232E-905993162 +precision: 206 +divmod310 divmod -981852741950941185707336180779592622083786915 +1532999135158679255023E+997237226 -> -0 -981852741950941185707336180779592622083786915 +precision: 66 +divmod311 divmod +70353589693685673979799989156879587994891659168730E+736725722 -NaN6385678473951246938739954234885984826684516851552558391363159546639757939397 -> -NaN951246938739954234885984826684516851552558391363159546639757939397 -NaN951246938739954234885984826684516851552558391363159546639757939397 +precision: 9 +divmod312 divmod -Inf 5 -> -Infinity NaN Invalid_operation +precision: 121 +divmod313 divmod +772125651597071395227669.8453912078501145852516E-525667357 -.30865268597405353678885E-849851145 -> NaN NaN Invalid_operation +precision: 287 +divmod314 divmod -73325623257530834005617.783280178661562517484281150597715534618417368017000434035929233888205408702006069188297900355049080226228235185899600710544112553246375599895864592005670734288836728490895215915142587325156066377205982848788756708075393473450990453376999722 -13722477530154336162488142190813788394078004972678136155475396299885041450389021726964251367976984601591943414893.28723229757036730E-778750590 -> NaN NaN Invalid_operation +precision: 235 +divmod315 divmod Infinity -97964.915737333133 -> -Infinity NaN Invalid_operation +precision: 267 +divmod316 divmod -26687905306181010E819605444 -59076907e+633682092 -> NaN NaN Invalid_operation +precision: 146 +divmod317 divmod -6940.63701347e-128150735 -607717. -> 0 -6.94063701347E-128150732 +precision: 185 +divmod318 divmod -494165090778250925799172222819917729854885370646866140041459099249226287124259603482023266642707639835480992839810886255211799880401157580385260250939448352988677e34804343 +834447095035559458020077950171727185730392035660983205568800885452235937043764462 -> NaN NaN Invalid_operation +precision: 203 +divmod319 divmod 516393982689340434734.776659560794792E797228035 +Inf -> 0 5.16393982689340434734776659560794792E+797228055 +precision: 285 +divmod320 divmod Inf -2312851461492801513026197162.1764603769011410e633592655 -> -Infinity NaN Invalid_operation +precision: 31 +divmod321 divmod -720660522725.821e821607786 +5918.988E+992540089 -> -0 -7.20660522725821E+821607797 +precision: 89 +divmod322 divmod 99655706164145182376803514566634940372115837979351923440391899249968662777469 -1230737617782699497506867059498642.8654 -> -80972341077609372935420733130046747636024232 940548610944858569246217175469154.6272 +precision: 37 +divmod323 divmod -789157812274429679.10943167310889e-68733215 -4201886809631103e+648930656 -> 0 -7.8915781227442967910943167310889E-68733198 +precision: 277 +divmod324 divmod 979016499901148558605179233085384992384800626223117905227952744136495352916592353e-750830494 1565467532955537290126026683046247274326 -> 0 9.79016499901148558605179233085384992384800626223117905227952744136495352916592353E-750830414 +precision: 212 +divmod325 divmod 877682598503985142668343660469525042984.7287275457652071026864467907043931698174162069e+769512445 +Infinity -> 0 8.776825985039851426683436604695250429847287275457652071026864467907043931698174162069E+769512483 +precision: 263 +divmod326 divmod -73876070761222428202682187929822948895592066194636821905977908298232321505166410915563513 +19417680587274127271269718596499044968681284E-837998720 -> NaN NaN Invalid_operation +precision: 256 +divmod327 divmod -Inf +.601002206479990715735250416600321373498670E-204021118 -> -Infinity NaN Invalid_operation +precision: 203 +divmod328 divmod 6219994997717667741006938560591841290080447228747265955767158230202281811714726518996426170165E354577250 +4796938521991179719497445156476490983259942012e+594288623 -> 0 6.219994997717667741006938560591841290080447228747265955767158230202281811714726518996426170165E+354577343 +precision: 288 +divmod329 divmod +51107628725866577491864738038392446919827862110219339030978126264652854403204893590811364135026038712484915730315169330721435713351240869664581529453763261942691228269098363695875753676853119228324686790201298311586705757603398210355156031043526095740219615808981829797124516121379 -.57248769829699936987329707857873808071988208684821627179054587751317670165217654767998104354408875770742880061602628012389580287311843515022 -> -89272885474916505121204404654596832229210766611713553740192591801688328129402691558905246802392113698535855287656048027123745537692302723736469487441259570889199360427706943889615231424636375660335866983773206067860207492848289894649889654966025061808269013712711279965959148523397 0.50257257490452955821607426430365985486056155873081654184649495571462274080761225136908879523726057838974706102811064801941143866718512030266 +precision: 257 +divmod330 divmod -.83289601438226034138437095354857367214702149150696044680430351 -1820795034258064772669162002626 -> 0 -0.83289601438226034138437095354857367214702149150696044680430351 +precision: 133 +divmod331 divmod 64302788458707413727603048222520445890186315758071523338596765e-913221313 -5948557.117968925077771784918811e-251877061 -> -0 6.4302788458707413727603048222520445890186315758071523338596765E-913221252 +precision: 211 +divmod332 divmod 906874479643490083468590877.517402980478848304959221 -7315546514041174367953538 -> -123 7062258416425636210305703.517402980478848304959221 +precision: 240 +divmod333 divmod Infinity 6397534977799714026335209995652964376533543885675244 -> Infinity NaN Invalid_operation +precision: 289 +divmod334 divmod -Inf -309421604609251.89065742395370052895436617224906829885466351375726 -> Infinity NaN Invalid_operation +precision: 284 +divmod335 divmod .63605508716583244209386314223286485400331447950194734840854865511661619268954536789426E-372988794 Infinity -> 0 6.3605508716583244209386314223286485400331447950194734840854865511661619268954536789426E-372988795 +precision: 148 +divmod336 divmod 29823469368630167139841136939786670196296619707923646541640543603936930896479553204456 -6108512981355697289908611460226807581937121 -> -4882279772451473727367448725672832319978182 2525237790954025683875607091167751537310434 +precision: 207 +divmod337 divmod -.31238946665801130650348892811113818645E-669235737 -806.8519446649228674 -> 0 -3.1238946665801130650348892811113818645E-669235738 +precision: 234 +divmod338 divmod -60345848701888602780563829555.749439474495184960838865884431602158502863909541785591518755861192380290997660159753024858806789929575316063221402667397478785193999242268835242681035771658091901046097129581147890623331085240469e243864130 -9908427043880606288195915261121433874673881275893738024062515396363630902887388707480690053534225531517001476936.E-31687339 -> NaN NaN Invalid_operation +precision: 250 +divmod339 divmod -98495851121966800559889957941233116870947868345617.34510839192321286320554055252699116314064155581187248887776583552827478915669063949414515905975796656601757228599 971815724508352305070078271698993001357309129101010253657701540829899086581036238E469447318 -> -0 -98495851121966800559889957941233116870947868345617.34510839192321286320554055252699116314064155581187248887776583552827478915669063949414515905975796656601757228599 +precision: 200 +divmod340 divmod +127149660292121E+887700704 -Infinity -> -0 1.27149660292121E+887700718 +precision: 175 +divmod341 divmod -131625626879875399.25008377857241112742189658645173210199752796202 -67092368412938976860535441052981 -> 0 -131625626879875399.25008377857241112742189658645173210199752796202 +precision: 159 +divmod342 divmod 32412698737.974525 -46535 -> -696523 932.974525 +precision: 281 +divmod343 divmod +6090531619585901530827.27195861984011662987087229933304848401371294289E+940052622 -Infinity -> -0 6.09053161958590153082727195861984011662987087229933304848401371294289E+940052643 +precision: 66 +divmod344 divmod -68871011820401925642103238340 +Infinity -> -0 -68871011820401925642103238340 +precision: 199 +divmod345 divmod -29096432218250392426785059733733121083497796291306942145694288376412441828347224932758735408877358639013295566852832055209646692612791169874914137602723910327 +Inf -> -0 -29096432218250392426785059733733121083497796291306942145694288376412441828347224932758735408877358639013295566852832055209646692612791169874914137602723910327 +precision: 170 +divmod346 divmod +31. -Inf -> -0 31 +precision: 281 +divmod347 divmod +90017555042251489077132555 8372699.352919 -> 10751318212670372693 3408887.559133 +precision: 105 +divmod348 divmod -8058450604709.1190677595160888987815437 -.8291199050952671445e358021826 -> 0 -8058450604709.1190677595160888987815437 +precision: 16 +divmod349 divmod -781884095070 +969715e+494471456 -> -0 -781884095070 +precision: 201 +divmod350 divmod -634079.7706912528008745299727260063583620392271131170140413782366169364E-973492774 +.37986931813614181697608837789737581 -> -0 -6.340797706912528008745299727260063583620392271131170140413782366169364E-973492769 +precision: 50 +divmod351 divmod -4051162528362642040110 .94259288154 -> -4297892131058626454169 -0.36954385974 +precision: 257 +divmod352 divmod -171023604561538097861556619230545652235205277419718311372797630815914685557685883562533284709849625157082755952580029583020674237438599179152431177555075492191870358240619254604508630727041920485465010408723334261231781054123589473604762043201133541e+88664952 -8232751368931245956437141388354976180347620562621733056426908319269761464018424375079173964761631313245924348814766767391217 -> NaN NaN Invalid_operation +precision: 197 +divmod353 divmod -5122437775948709679497993545232536816373631299924328037977e-640068419 68163505657099738935383713678e-955028662 -> NaN NaN Invalid_operation +precision: 169 +divmod354 divmod -.35240846870997443895348412535 +Inf -> -0 -0.35240846870997443895348412535 +precision: 234 +divmod355 divmod -2804126286059273498453954093409745178428914933760068194249001514415659742947560344672488093938963070315539220265195970994898853306402122535E653424316 +2357848097123126229831296934243523337.75586001702238920520414944977895 -> NaN NaN Invalid_operation +precision: 251 +divmod356 divmod -638352230e559601472 -7535E-408171842 -> NaN NaN Invalid_operation +precision: 48 +divmod357 divmod -2787970608432330284791991 738473915242 -> -3775313590485 -539697119621 +precision: 189 +divmod358 divmod +Infinity -7.939872E+377594345 -> -Infinity NaN Invalid_operation +precision: 223 +divmod359 divmod -.30166054385357118293753113398275381187885240455756998805048702724015044146952302530703895598357321950293195257611410519694289228556018752506615306523039324278841302733671433473968183467 -33484014009911447915536921607153993833760155599424762488370716528098289700379030.793704276712e-926414177 -> NaN NaN Invalid_operation +precision: 269 +divmod360 divmod -5802277489023560613609741593774547810381305360363308591205776547850924189169848596210225654907485815432130553809132982075490869341540553630281155465521772897449382132132452049923144751995734143233E-735967641 -3962090838183627530427634.8735966071530211817336721139105391323285822076792959795475072129556148139E+873457435 -> 0 -5.802277489023560613609741593774547810381305360363308591205776547850924189169848596210225654907485815432130553809132982075490869341540553630281155465521772897449382132132452049923144751995734143233E-735967446 +precision: 205 +divmod361 divmod -827489580608024011102733736399019793659826403778157014122811.3266130861 32272303532064685365479039080410315 -> -25640858880304529194983551 -3538735253697525074995344258394246.3266130861 +precision: 177 +divmod362 divmod -1891892623762490248752989493582.2290E979599513 467069556361856026E-132120828 -> NaN NaN Invalid_operation +precision: 167 +divmod363 divmod +.2289813058203838377055919514490809744859806398229197714921553331073180179064478381062389178021100583574792505855458291580140E-279561377 -3684026891741636626.5857090951932967631878282553355273153206773E-861867524 -> NaN NaN Invalid_operation +precision: 270 +divmod364 divmod 16778376424200759981491887434084949026984650448493307529973179893112185655841694079646893165823349515930042978234182184116324688226936090818719684860927109769931031688011824548293609818457950937596100329918146165863201828064967339212536824557828325e-365732233 Infinity -> 0 1.6778376424200759981491887434084949026984650448493307529973179893112185655841694079646893165823349515930042978234182184116324688226936090818719684860927109769931031688011824548293609818457950937596100329918146165863201828064967339212536824557828325E-365731986 +precision: 116 +divmod365 divmod -478488704380804038925351.6107192617151647952305535394530402016506 +57.612531285537511431245534535293 -> -8305288688138567895866 -6.3539969378096510472434277407150402016506 +precision: 174 +divmod366 divmod -89.1650711116624468830005919566919143384401302918490433686134380589326513720e160862436 9617175967841979842924344429164022257 -> NaN NaN Invalid_operation +precision: 280 +divmod367 divmod 2974952959338904.37207905 +404289225634 -> 7358 192837123932.37207905 +precision: 158 +divmod368 divmod -142130921.1596060791200755467843643064946860 +sNaN -> NaN NaN Invalid_operation +precision: 176 +divmod369 divmod +.90340308149694868446461585997541557032184371130956784887509735344734315867638559655268283858742363157531218363 sNaN -> NaN NaN Invalid_operation +precision: 276 +divmod370 divmod +908784095829730215678569623525181554758280062408213128364882024474434990579938768577060015405672711269150123038185143921793390443473088330321507090630763548318008E+896199262 +27254987646931305308581.773104497541343708165702777877858564759734850426059791819 -> NaN NaN Invalid_operation +precision: 142 +divmod371 divmod 129077538586974452307659829258838081783322740669522759910E-8534402 -9286887225808475962275381994e757107425 -> -0 1.29077538586974452307659829258838081783322740669522759910E-8534346 +precision: 79 +divmod372 divmod -1829248157480.820972639331414757923920 -835930284775717261 -> 0 -1829248157480.820972639331414757923920 +precision: 54 +divmod373 divmod -Inf 1203970774451930887067e-657535828 -> -Infinity NaN Invalid_operation +precision: 142 +divmod374 divmod 3683455000796675477024975266099722553152334540423308144788296564040285424747974851583346658562222657727576457476309073773805804936797654e-106879718 -sNaN -> -NaN -NaN Invalid_operation +precision: 77 +divmod375 divmod -753321.35 -2697 -> 279 -858.35 +precision: 84 +divmod376 divmod 25716184763316974763302880006462115458256 -68260223999196.166714 -> -376737479847997699065395020 63737811066070.635720 +precision: 116 +divmod377 divmod -695271121932597865729487711321399 .3848787316974280 -> -1806468024009142985562481334377837 -0.1888426868967640 +precision: 58 +divmod378 divmod +Infinity 6728445114.0 -> Infinity NaN Invalid_operation +precision: 212 +divmod379 divmod 53100658678877200900683332041599488124.9352289e347633831 -26101798286757609.88920E-211826909 -> NaN NaN Invalid_operation +precision: 52 +divmod380 divmod 892309349946835620174804493383975843271033714299 +NaN160287124507573600544004080351733884508950488075147844886870 -> NaN4507573600544004080351733884508950488075147844886870 NaN4507573600544004080351733884508950488075147844886870 +precision: 44 +divmod381 divmod -.232567731708720115439076124078 +303137838823654E863150064 -> -0 -0.232567731708720115439076124078 +precision: 183 +divmod382 divmod -17155858.391350336811492084677275278581566081 +3204347794300649205233E-640226968 -> NaN NaN Invalid_operation +precision: 200 +divmod383 divmod -6491683242654919793158535241960594150653182239990740310631988216105099427121806561058986379.65589839181070790665377407690470046003551033952851859140160e-266512648 -32170306253056384211264615017548.7081637260765034483256119388495911827582650E-31024139 -> 0 -6.49168324265491979315853524196059415065318223999074031063198821610509942712180656105898637965589839181070790665377407690470046003551033952851859140160E-266512558 +precision: 257 +divmod384 divmod .110650404141326096517366984 -4022817931606 -> -0 0.110650404141326096517366984 +precision: 63 +divmod385 divmod 9132273817077816717936478246501936558135320849801e423103175 603410010.817675472294207 -> NaN NaN Invalid_operation +precision: 126 +divmod386 divmod -5454033423575484724579966442844.27077820125666700969 -2199889084274250568232148 -> 2479231 -209281150214051209924656.27077820125666700969 +precision: 285 +divmod387 divmod Infinity -787314891862116622110821463242133597349622905297157 -> -Infinity NaN Invalid_operation +precision: 187 +divmod388 divmod +.47844273941792152236152910455894543226151609378862952734060269842707655268341 386776935.17325380953887138754163217815 -> 0 0.47844273941792152236152910455894543226151609378862952734060269842707655268341 +precision: 199 +divmod389 divmod -Inf -74598315790667795223073235234103914024769607189539256460485108e+213394861 -> Infinity NaN Invalid_operation +precision: 204 +divmod390 divmod 1723992370235839574.194626014062243490044266659974072018929126481539862640365621925826722968436753026947 +88370794911042064192252082322935798907319181958032 -> 0 1723992370235839574.194626014062243490044266659974072018929126481539862640365621925826722968436753026947 +precision: 232 +divmod391 divmod -284250687265664371818160430669338873102688590059326589077141646647851446821308493748954559085767996366679499774317582869382153037711 -796491550125864694.973206836093852759921340383579402485542463975309 -> 356878471869219418352695583627556116481123937504749351464803332086941055985722748938786090316945341843563543570948 -182445810502040523.692249385224312514301704373536353976718438277068 +precision: 173 +divmod392 divmod -692710280490800196673190230980912368767577564599803051276204844406675286521286229220327801042734745791289445785354 44284465620588420783033909374934059604138041228960.6568694e-583867231 -> NaN NaN Invalid_operation +precision: 140 +divmod393 divmod +233421531147225 +24344270E+440968808 -> 0 233421531147225 +precision: 294 +divmod394 divmod +74872439336653041032556620E-740905067 -79479.20454679E-799697578 -> NaN NaN Invalid_operation +precision: 263 +divmod395 divmod +9633 60. -> 160 33 +precision: 49 +divmod396 divmod -sNaN -327711914395612.811617e+624139191 -> -NaN -NaN Invalid_operation +precision: 181 +divmod397 divmod +56439518084429886920431355448070853630391642715290106499513368463569925904278328966914073893034914887e-653454324 +.47091042759547504982742431623233339464302309583215e812793529 -> 0 5.6439518084429886920431355448070853630391642715290106499513368463569925904278328966914073893034914887E-653454224 +precision: 229 +divmod398 divmod -4988251723276375118597793218290408322314465441440614588797665244810422693717876215669548132287501597207812782972293019771060042909150 +914842279863623399173708460983394134471310294982549425243850205.59 -> -5452581098481783761172937565862996685668698784153833348707138191398416 -147444156473748786485891055351567734647255101624387215531708804.56 +precision: 281 +divmod399 divmod -6.5283381714708884350689891456076097670863678351797749954676004880045506365936769351039928828135863844701038929466532979460390487871454708224054093204934570 +295976782966294797950852396553125.7279423250137522114921289388544445794649727 -> -0 -6.5283381714708884350689891456076097670863678351797749954676004880045506365936769351039928828135863844701038929466532979460390487871454708224054093204934570 +precision: 104 +divmod400 divmod -57695663973016983647090268654947430051870039256075262814375098956212191 -80972255618316.288871567023154007372 -> 712536208018959578415943668534698270873506430603879040539 -38185961184374.350923670563707146492 +precision: 55 +divmod401 divmod +424209 -28.5 -> -14884 15.0 +precision: 229 +divmod402 divmod 616074405677191197109121826144222953427177224128931108120578 15.2469243014775172942555878423 -> 40406471068888952069172425243891904739353685024539086412819 14.2905924237365599483447295563 +precision: 256 +divmod403 divmod +Infinity Inf -> NaN NaN Invalid_operation +precision: 255 +divmod404 divmod +1364480338844537331796705218142022118457039142961580501118515706992663846212438060540581893485041256968754371704091832692689713191272963519912291433680848405906946555407032027894748540216184102 .258801281158079999808831508631917541859474349312346692057650603071290395604213526935650518571783e245849268 -> 0 1364480338844537331796705218142022118457039142961580501118515706992663846212438060540581893485041256968754371704091832692689713191272963519912291433680848405906946555407032027894748540216184102 +precision: 111 +divmod405 divmod -16095978884562527027288974545289842517943E-847700907 -77013460437124925788E-645838676 -> 0 -1.6095978884562527027288974545289842517943E-847700867 +precision: 288 +divmod406 divmod Inf -5589535054E+424305478 -> -Infinity NaN Invalid_operation +precision: 82 +divmod407 divmod -91135812420861036408709014967197711642830826002565819870970040963444e947660786 -7700486085545972339916875627862863e953771935 -> 0 -9.1135812420861036408709014967197711642830826002565819870970040963444E+947660853 +precision: 81 +divmod408 divmod +1319248522673387750626620099e+8718996 -7413742534530e-530080200 -> NaN NaN Invalid_operation +precision: 284 +divmod409 divmod -5872196589226605082435479913854157674815567357303249083514018052129681624357112219526466792994102282216959009933643649967399403303892310468075807476011058679956450057960229341371482149517311290134886382622082326806139286083700 Inf -> -0 -5872196589226605082435479913854157674815567357303249083514018052129681624357112219526466792994102282216959009933643649967399403303892310468075807476011058679956450057960229341371482149517311290134886382622082326806139286083700 +precision: 191 +divmod410 divmod -7501716553704212243523278428338999997835964056423346979376091741.6527786 5786598344871514900520032998238038 -> -1296394894999538743788967011782 -4186512885844906669214067389528025.6527786 +precision: 69 +divmod411 divmod +Infinity 6305953624427677709. -> Infinity NaN Invalid_operation +precision: 234 +divmod412 divmod sNaN642188 -650638025694573623335 -> NaN642188 NaN642188 Invalid_operation +precision: 233 +divmod413 divmod 82516396651225576418049882841782625587255227654548041753.491863208490899 Inf -> 0 82516396651225576418049882841782625587255227654548041753.491863208490899 +precision: 98 +divmod414 divmod +37487308318.6498557483774647160412106628250545865442993 101658050463702569.503473447 -> 0 37487308318.6498557483774647160412106628250545865442993 +precision: 273 +divmod415 divmod -708454271131544887499134170547742837413633062514771829120968030E-43817285 -9957883339282189136280574358167 -> 0 -7.08454271131544887499134170547742837413633062514771829120968030E-43817223 +precision: 212 +divmod416 divmod +1872070772968e-167534092 -9.53669e-60148117 -> -0 1.872070772968E-167534080 +precision: 253 +divmod417 divmod -484889255511209827799166727051998248034345252259154578466593197308137243454912339973014496949910404218970577692188927579108.50791334925533449207920 +3989509690262864737716512472671780596964615266963344566767951147377177007e-552053275 -> NaN NaN Invalid_operation +precision: 191 +divmod418 divmod -5096897417377480599979585510616e-385907634 .788069093606420 -> -0 -5.096897417377480599979585510616E-385907604 +precision: 273 +divmod419 divmod -9717841123068706385766146470585226397998793052221160854932029676517496496043 .15276821817360163245117310136530577268e-885110774 -> NaN NaN Invalid_operation +precision: 185 +divmod420 divmod 74691090868448466201459853414271594873692269933628686027200776259269473506344174706240946231592736405459945921557816766188826580595620978805600.810937448151746545217810618757387675589 Infinity -> 0 74691090868448466201459853414271594873692269933628686027200776259269473506344174706240946231592736405459945921557816766188826580595620978805600.810937448151746545217810618757387675589 +precision: 6 +divmod421 divmod 372 -0 -> -Infinity NaN Division_by_zero Invalid_operation +precision: 154 +divmod422 divmod 5417682436655992785416322314431763537191.75959398721706073207164569663316766027655427645056016253473052899112367220904312601423123971E+625151717 +Inf -> 0 5.41768243665599278541632231443176353719175959398721706073207164569663316766027655427645056016253473052899112367220904312601423123971E+625151756 +precision: 93 +divmod423 divmod -.86562457510446588137741374351 436100561.85783E-832434401 -> NaN NaN Invalid_operation +precision: 243 +divmod424 divmod -37819654882192112907763065140408.9709376366379377310090256571527015 995443764454236492447345921962470 -> -0 -37819654882192112907763065140408.9709376366379377310090256571527015 +precision: 173 +divmod425 divmod +734162903427925696840141561303898412993159326515089798617459403068660640257027495516111301780517142091249e266070121 +7957909533551561636199252556227572341486625614564051 -> NaN NaN Invalid_operation +precision: 2 +divmod426 divmod sNaN92093417291700554454902968805249579244515 +4 -> NaN15 NaN15 Invalid_operation +precision: 246 +divmod427 divmod -551966672513708641567611541677326820476.88056911638316869795671391517162706476225148432334863 -3435333149590009011255264323513842849229461007e25851213 -> 0 -551966672513708641567611541677326820476.88056911638316869795671391517162706476225148432334863 +precision: 168 +divmod428 divmod -12947465080806131.7728723504182394759802314429772437203622826316104819520830130075102191137633147167360272328137271783741213246199562993002352572009276423981 608667182922203851531733893940957753912424916638761664556263682460853165824315 -> -0 -12947465080806131.7728723504182394759802314429772437203622826316104819520830130075102191137633147167360272328137271783741213246199562993002352572009276423981 +precision: 154 +divmod429 divmod 79773231452473031118778361634666254497218661671139648729690457480034904540329850933747126436258596239466783650998910 -3523809402171784637648691536512036123687180902523575880884 -> -22638350247691435816344564608399360226745631020347752615981 1055270346441146430587750578980620195902740682816200191706 +precision: 131 +divmod430 divmod +211445925570553 7489.728 -> 28231455878 331.816 +precision: 184 +divmod431 divmod -306987330402125819037620754829475753631522731724491034108427962325788922392889181814234159589723303115386118098523019008512871722.341017344287715542047002351595609577669239470 -693402415965037396663638546908914322508323649413359018272871391278092112377912705881141E84313894 -> 0 -306987330402125819037620754829475753631522731724491034108427962325788922392889181814234159589723303115386118098523019008512871722.341017344287715542047002351595609577669239470 +precision: 287 +divmod432 divmod -.4879824443046314533261504284853091010692123628227623323548909363935260900174495630191160191357906431271434957136591787452024200418296648570880135736711675224276587554930347106139956765788305151114666513734404592448097938533631073405208E+391202335 Inf -> -0 -4.879824443046314533261504284853091010692123628227623323548909363935260900174495630191160191357906431271434957136591787452024200418296648570880135736711675224276587554930347106139956765788305151114666513734404592448097938533631073405208E+391202334 +precision: 96 +divmod433 divmod -4678.e-117068450 -Inf -> 0 -4.678E-117068447 +precision: 2 +divmod434 divmod +45.e918934309 -0 -> -Infinity NaN Division_by_zero Invalid_operation +precision: 114 +divmod435 divmod -.14367970339182304378837903076989053594213341617201459913711373871636e-229482236 +1370484327221486121306797172027318 -> -0 -1.4367970339182304378837903076989053594213341617201459913711373871636E-229482237 +precision: 95 +divmod436 divmod 4489984147392718031196136944211007723238864871783270321134479727E-745090152 +71554901469052406148639899731.446 -> 0 4.489984147392718031196136944211007723238864871783270321134479727E-745090089 +precision: 178 +divmod437 divmod 558280627577129471613083677224600687526163679609715905633583348675154725910319592349734048503968534317517722196150065252967901574339876835028884112087879749758E-354085849 -.478476399575338545168292105329709835344817281884843614632541185146060185299735E+675349483 -> -0 5.58280627577129471613083677224600687526163679609715905633583348675154725910319592349734048503968534317517722196150065252967901574339876835028884112087879749758E-354085691 +precision: 235 +divmod438 divmod +53841281690447162029142049817357874191916314241572562064.66521710 -.41086089248594087335049989583655e686132750 -> -0 53841281690447162029142049817357874191916314241572562064.66521710 +precision: 89 +divmod439 divmod -Inf -15E185788057 -> Infinity NaN Invalid_operation +precision: 180 +divmod440 divmod .110202023293248662137418192581845915697517927476618 +Inf -> 0 0.110202023293248662137418192581845915697517927476618 +precision: 246 +divmod441 divmod 8602651746019050707940916596127775514543393344023617835198298069020156830254534783874614406210213945837172261322115402170439020661052993098381622739677232166751772015315362767217358.519071877629966108915499011857e-908107730 -905584440129116781220440170731197831844310624758806222449704426230406171105376300481994851190596808642446 -> -0 8.602651746019050707940916596127775514543393344023617835198298069020156830254534783874614406210213945837172261322115402170439020661052993098381622739677232166751772015315362767217358519071877629966108915499011857E-908107550 +precision: 131 +divmod442 divmod -Infinity 70983979842.76 -> -Infinity NaN Invalid_operation +precision: 38 +divmod443 divmod -7067219902921191973404017756468251 .9971615749040051 -> -7087336777494199130793718813933319 -0.6391542225640731 +precision: 183 +divmod444 divmod -818089508866099487592798573417735970888328223226984547537020079088249416151796579875607124340363856442782106963274987788286028753740853969951047133189257386821575499.141413 +1805063087648034362103358432419602025809463345428597899339956485836261330351920276824e-25434312 -> NaN NaN Invalid_operation +precision: 88 +divmod445 divmod -.94779825567 -.838550 -> 1 -0.10924825567 +precision: 84 +divmod446 divmod 81773907946662926745653349 +938879251118E425091966 -> 0 81773907946662926745653349 +precision: 132 +divmod447 divmod 4192522383353430958879924784211183702233897506558038654340881750751193857509494298180935264949804183855774 -.93626170044603043109288468453253563881343212790950093E39467846 -> -0 4192522383353430958879924784211183702233897506558038654340881750751193857509494298180935264949804183855774 +precision: 134 +divmod448 divmod -267455863607963518067979768670298128346556507121635159780408075088057126142418918757199199575837446682 800333849847151217873972294726691802827511362182360e-895696023 -> NaN NaN Invalid_operation +precision: 296 +divmod449 divmod -8443578396905368.8365465 -41888421297 -> 201573 -3650805187.8365465 +precision: 208 +divmod450 divmod 94423987691964813686793337136762602351375565054365694287309673425077688.6223615839934011014705154617375200320517919484115831070898112940294260614748455783622162142986176094903617121324E-512432846 -Inf -> -0 9.44239876919648136867933371367626023513755650543656942873096734250776886223615839934011014705154617375200320517919484115831070898112940294260614748455783622162142986176094903617121324E-512432776 +precision: 126 +divmod451 divmod -233277968607217545818573494232176 .9274823563284819E+550531472 -> -0 -233277968607217545818573494232176 +precision: 50 +divmod452 divmod +42113115164447921096912249931726786256679431 +9281004387844328671477 -> 4537560096362524110183 1737476784592299329140 +precision: 259 +divmod453 divmod -6386254212130624712534441573192962601510189089028092932593267711198947761617274740235729664020010385321433130024459603933061443254848026320605571e-782938757 +402395299572760090727026752335313256047995325261289871420951455038476586 -> -0 -6.386254212130624712534441573192962601510189089028092932593267711198947761617274740235729664020010385321433130024459603933061443254848026320605571E-782938613 +precision: 279 +divmod454 divmod 7811015644022679890736587134204613193473453559431172427990878323383297118590897373803071744616793832012 3373674726445876075880885139516611051.33362759959951e+795484167 -> 0 7811015644022679890736587134204613193473453559431172427990878323383297118590897373803071744616793832012 +precision: 177 +divmod455 divmod 9988484520609.265242913601638207552930882753779613463406262635505061100884792996779750286275087949369461967784030884192615796548104572006815081272 +185258302004237175728849728303176407889813152262232596521985641252455354 -> 0 9988484520609.265242913601638207552930882753779613463406262635505061100884792996779750286275087949369461967784030884192615796548104572006815081272 +precision: 63 +divmod456 divmod +.969286231711641208213837677790095923465056138855 71221709790423539552646E-146140050 -> NaN NaN Invalid_operation +precision: 143 +divmod457 divmod +87467962380027279239524476149685966757E-997211347 -5378050291003311116 -> -0 8.7467962380027279239524476149685966757E-997211310 +precision: 163 +divmod458 divmod -Infinity -70500695515786287766276347421e969760892 -> Infinity NaN Invalid_operation +precision: 17 +divmod459 divmod 1162685504237 +855682E978294482 -> 0 1162685504237 +precision: 79 +divmod460 divmod +1178594349717872338318011223098 -15463443009570e-462891834 -> NaN NaN Invalid_operation +precision: 209 +divmod461 divmod -.53662945822753041733065683545513535461818735509363701966128048430866633415828802936039222701645702642561289380766031709100158739463131107038369412236446763432417153973290740169838638231249332524184183e-817114198 -6957775724024401712213653693877857265414220236825334286597297511795862609283412273657506547251640191 -> 0 -5.3662945822753041733065683545513535461818735509363701966128048430866633415828802936039222701645702642561289380766031709100158739463131107038369412236446763432417153973290740169838638231249332524184183E-817114199 +precision: 93 +divmod462 divmod 85599.510104223050210124212032610182984733871732443e+23982228 +NaN -> NaN NaN +precision: 195 +divmod463 divmod +Inf -88743600534933e82182420 -> -Infinity NaN Invalid_operation +precision: 22 +divmod464 divmod -Inf -1237886702 -> Infinity NaN Invalid_operation +precision: 156 +divmod465 divmod +292783585 -sNaN5446261226431216091415684499290577181945468406213519 -> -NaN5446261226431216091415684499290577181945468406213519 -NaN5446261226431216091415684499290577181945468406213519 Invalid_operation +precision: 158 +divmod466 divmod Infinity 265256467694977464417362453093281992581832568594990765295308613632570955 -> Infinity NaN Invalid_operation +precision: 164 +divmod467 divmod -301760885027419959328245360182476667117076501070103821568049172796825980120958443320402307434907331347424413600136348224968486447281E-618996735 +3045449643467175324449926577994019428038980.98577547931271928432425 -> -0 -3.01760885027419959328245360182476667117076501070103821568049172796825980120958443320402307434907331347424413600136348224968486447281E-618996604 +precision: 56 +divmod468 divmod -Infinity NaN -> NaN NaN +precision: 244 +divmod469 divmod +.9591343612737043e-622765571 -.85349022 -> -0 9.591343612737043E-622765572 +precision: 230 +divmod470 divmod -6138202573215604853537183915445829354185952831365633837320721524369865524271617307490608147748059246009664947926221586351899248388866285599910210701016540480774418188689829233636173507734262210283105785 -.71977295262980498793864299823961865874132484943447134646528153255292638217853460527619420891384029177 -> 8527970592377367408304409096545292694583355289260761131320985475157392126390540722261476153299865292142252438854922530996931888475666890515326826347419470370247657057570265424425887469599080555636486328 -0.48582678644167150120724527160405621254013922204848042899914916900601607229078950284863139196286407944 +precision: 99 +divmod471 divmod -2381954568843304039894.4790237378556748589435208484334064496608568 -795911018102296036295050952589630 -> 0 -2381954568843304039894.4790237378556748589435208484334064496608568 +precision: 121 +divmod472 divmod -50411117246435144867789365588632537845784997624787983734732268224048952265628233943733979422997366506486309457 -2324309562188724396725031018154032775279418612222458460E-509041872 -> NaN NaN Invalid_operation +precision: 240 +divmod473 divmod -.358347659855595180796886213549877904103160082723143595374286944300488824860503622642878472527643419127938090529 -4652461804458978059098366862838908648684102.875846410684E-957900580 -> NaN NaN Invalid_operation +precision: 288 +divmod474 divmod -.400977031022035915e-747075748 899455423E-445688089 -> -0 -4.00977031022035915E-747075749 +precision: 180 +divmod475 divmod -2682894223828119581027717647846884564382296146930803638075188867692173747538503210399960340247979386431449704807536513853470832258415953638453063477331171991156643e+275022525 -51729236977321717.7977365007936362925559348172012710702425120954970299430486172912E273969257 -> NaN NaN Invalid_operation +precision: 77 +divmod476 divmod 44867127261429559255 -4265387.29E+21412379 -> -0 44867127261429559255 +precision: 170 +divmod477 divmod +21685069906187150428073630391387944634463948244387279239854483142119218927875271E464565409 -6135713584858318577575842151061187372324 -> NaN NaN Invalid_operation +precision: 231 +divmod478 divmod -sNaN 581593462337084261882565026136230819081556583749781578897 -> -NaN -NaN Invalid_operation +precision: 193 +divmod479 divmod -159878223983581972419377844015578350145981744960565688455571877763418163809119571e-799064955 sNaN5178128527856010203135877854546617283745716037845944681720 -> NaN5178128527856010203135877854546617283745716037845944681720 NaN5178128527856010203135877854546617283745716037845944681720 Invalid_operation +precision: 69 +divmod480 divmod Infinity -98353306183 -> -Infinity NaN Invalid_operation +precision: 134 +divmod481 divmod 739244313546332670559865010254103079636917118958017098722371913169232.503017e-367891982 -2618856870395316611991630633728223149e+633953249 -> -0 7.39244313546332670559865010254103079636917118958017098722371913169232503017E-367891914 +precision: 19 +divmod482 divmod -31651491401E+640980036 +Inf -> -0 -3.1651491401E+640980046 +precision: 91 +divmod483 divmod -78890097251061976422129080868359601152635546662481824136956080 -471666942.547966760136661192871 -> 167258058885564466351469303579106344869032400830192615 -329014114.417519466521405152335 +precision: 131 +divmod484 divmod 802230715362 -.899345 -> -892016651409 0.572895 +precision: 215 +divmod485 divmod -607714865592026653590017413882716067629745735017901223839905671068045467647952819700551539132618178531238170033348005320769272300050925907662095368177917282834082198391157980357100770715615771346210785481988249178 +6437201398678483010855762504809619243918028969722481652318350627592274404685367513356677265192979269665205 -> -94406688241381836521356474557851397690931619805767961602275839882409444838418941840477114001200855602345583 -4636518390788144670418251727894034305015299144866501096994623287806437071413390001786591695341804867709663 +precision: 4 +divmod486 divmod -124 9E-269337103 -> NaN NaN Invalid_operation +precision: 108 +divmod487 divmod Inf -95237596316531894 -> -Infinity NaN Invalid_operation +precision: 69 +divmod488 divmod -6554090183787.3925189 738776.9880 -> -8871540 -583665.8725189 +precision: 277 +divmod489 divmod 723634757575311013298436867040856848781206576391053400718238991855182610292109601267416256314155280 +8440917595817849416344837921541144236469240905993 -> 85729394862691735322691334102490607626731987079790 1031961228125117062761009923977493862426333973810 +precision: 159 +divmod490 divmod -109105912522137528359729234229255191052996025740814421303718239879834776892187030167879561255442e-837179506 -355357001235743450574363249190945621924556124561 -> 0 -1.09105912522137528359729234229255191052996025740814421303718239879834776892187030167879561255442E-837179411 +precision: 136 +divmod491 divmod +844100814552796483230419002896907158802790398E-935414981 -1220114143390972840901E-90245067 -> -0 8.44100814552796483230419002896907158802790398E-935414937 +precision: 83 +divmod492 divmod -657123340247333684255493176668 -136488344426861 -> 4814501509317240 -97236266793028 +precision: 244 +divmod493 divmod -Infinity -88055291267001203522562441076642801917034424321156236166692820898199917009824178694494991859019260120811180429820724684 -> Infinity NaN Invalid_operation +precision: 193 +divmod494 divmod -760465773991929363 669191600e-509164468 -> NaN NaN Invalid_operation +precision: 101 +divmod495 divmod +752010591555092499130364179746 +58580426519.1551e-724228815 -> NaN NaN Invalid_operation +precision: 261 +divmod496 divmod +65034567131560276494434075743272439766484613221 -86373756906761012.957895E-963966212 -> NaN NaN Invalid_operation +precision: 148 +divmod497 divmod -1804302005777935224105688409376930254917985346832551107013385360320025460630439.35432574188221855352e-781140461 +641503077984937594183711064435331074788508502702E563746423 -> -0 -1.80430200577793522410568840937693025491798534683255110701338536032002546063043935432574188221855352E-781140383 +precision: 219 +divmod498 divmod 28964204954403197748716371701294883604856163184151454633427540335366978333612274643732200055449308795131597398380284516870705888434882189073726279004462089409017529523329999257 -.1697610798484773878494912222573988992849370351297937405596844256951514878531605109437298 -> -170617464145819534103969663597102533857861271011327038883701675530311513921365404209426181084421361947823630493165445961310966143683795377013819800240051877857144197524862604704 0.0591541864098795822360861009708485314212725149233945837665442857215655415078799952150208 +precision: 169 +divmod499 divmod +9256007327950309946765042988987696260407918812024760655685863307763383958126680202987961730484787311510454521479890344203226452577890848621137899254479740620877E-90376023 -29694339376628965615461772049488914093247129741069620755160720208070906622093056 -> -0 9.256007327950309946765042988987696260407918812024760655685863307763383958126680202987961730484787311510454521479890344203226452577890848621137899254479740620877E-90375864 +precision: 119 +divmod500 divmod +2567546283164375772429515888554323440330240618797483674122800211588658e-399817625 -2300547679246128985574399940421.402 -> -0 2.567546283164375772429515888554323440330240618797483674122800211588658E-399817556 +precision: 22 +divmod501 divmod +8.40593006866126292 +994983707E443880287 -> 0 8.40593006866126292 +precision: 28 +divmod502 divmod .1984252397796034101 -Inf -> -0 0.1984252397796034101 +precision: 291 +divmod503 divmod -7581064779858757800493501174208887927008890959579682889619354391694895346204379541156291999673380134617826343327154060565017 Infinity -> -0 -7581064779858757800493501174208887927008890959579682889619354391694895346204379541156291999673380134617826343327154060565017 +precision: 185 +divmod504 divmod +22791776015513797897797675510849078040126665654509369789154111E53628698 -2886204875591678417587288441798 -> NaN NaN Invalid_operation +precision: 134 +divmod505 divmod -628429869476503629709539502448900034510855760171815294933283014378207314993144073029675429522866616642198813442376714964374182.944431e237960572 +260413814538119005469836624918033158847208794224950845478213499853e+597635478 -> -0 -6.28429869476503629709539502448900034510855760171815294933283014378207314993144073029675429522866616642198813442376714964374182944431E+237960697 +precision: 86 +divmod506 divmod 2700378005276832057823715300553.2077960547966711071576716080E-148193564 -19109185533633911584421684100 -> -0 2.7003780052768320578237153005532077960547966711071576716080E-148193534 +precision: 9 +divmod507 divmod -.6792 -49e999260339 -> 0 -0.6792 +precision: 277 +divmod508 divmod 73808921748820650058183730371378946829462851691625353839470415950241855633164627181463089060369301522491198E-98361765 +59966154542194706064868563064430894025750482004473639 -> 0 7.3808921748820650058183730371378946829462851691625353839470415950241855633164627181463089060369301522491198E-98361659 +precision: 229 +divmod509 divmod -82577059642719459556564235444315038624639589206691528930825998650345828273689047731905526506059784457477681923663281372322922836814339589899065421234275807200899083033105070699441834899277359268345098368865813400178274046251857E347470906 -NaN -> -NaN -NaN +precision: 87 +divmod510 divmod -382519297737311948362155477761167809958957827980400425463E-279869133 -9848273315193768165096886415e-666840744 -> NaN NaN Invalid_operation +precision: 279 +divmod511 divmod -Infinity +99923.349498400499336819718391614875467049459779264473124035261691e-897680620 -> -Infinity NaN Invalid_operation +precision: 138 +divmod512 divmod Infinity 40671098445565129805.3297274602680259636e+589044260 -> Infinity NaN Invalid_operation +precision: 120 +divmod513 divmod -57897449449716489595999661301540953824278915838911491608 1359610029810585.188170062854 -> -42583864623139404392731001610970278815981 -285460757911993.950530330226 +precision: 228 +divmod514 divmod .15900780056146540856656245592190675084204676916923820533330135108426851050223011869965417283313538396495979986561149891497839926088921869405635768095037779247822944768006002523521459531385505748671 -Inf -> -0 0.15900780056146540856656245592190675084204676916923820533330135108426851050223011869965417283313538396495979986561149891497839926088921869405635768095037779247822944768006002523521459531385505748671 +precision: 295 +divmod515 divmod .57858912706147494361517388076334199681198993935416060313546118947665891301454468 -9477552311696790559648761237283766166324 -> -0 0.57858912706147494361517388076334199681198993935416060313546118947665891301454468 +precision: 86 +divmod516 divmod +10946500046414 -3.15552e+970861638 -> -0 10946500046414 +precision: 267 +divmod517 divmod 90044897892818027144287102960873e+853944861 8048546040641212E-696850828 -> NaN NaN Invalid_operation +precision: 292 +divmod518 divmod -.414308131873443896428316906138419127330215293188e-137890672 -663994229078852747650985 -> 0 -4.14308131873443896428316906138419127330215293188E-137890673 +precision: 266 +divmod519 divmod 95475817599790936508648410909880519659720330955950567529684241253641174400724316104515.468896411279454981851416 +5354904410233925645057097604.15452377599245635746158422e-318236012 -> NaN NaN Invalid_operation +precision: 205 +divmod520 divmod 3258885329796497073885733179657844.5510334877161793845611330389126950365060419335717672882927556e+782748572 -.198195390213694625641154357807404835061340164145e+592230120 -> NaN NaN Invalid_operation +precision: 179 +divmod521 divmod -48840701589967121371389584332911336468174195576187717335382296929508621837 8752769049619414935697401519184432293 -> -5580028595875130158193887116922744226 -1181947718812698256964196814054931619 +precision: 111 +divmod522 divmod -69670257605332620035675744125876387610733292116532925400310276217581895275900289661411904969495011628891 +51896092215944354071462308361933.29517738487255150471 -> -1342495256009418765727472906553392194689077944697189334188185017593190933 -34266849319856159463149218859442.77972415676052120557 +precision: 173 +divmod523 divmod 48816821939284579824355 +0.4881201981e-520474552 -> NaN NaN Invalid_operation +precision: 183 +divmod524 divmod .86931423045231611066515850681699627181344487300186092045039769290446803448637891690260366140668798073220896507573285274268948459e-998754016 4331779394971517774331633691253011753655632410002770740990335867e+740158340 -> 0 8.6931423045231611066515850681699627181344487300186092045039769290446803448637891690260366140668798073220896507573285274268948459E-998754017 +precision: 118 +divmod525 divmod 8710450520128744831444 -26372872097 -> -330280694802 7306091650 +precision: 182 +divmod526 divmod -4542707414.2046007047166036592257495121547551073704823000408967763223390601577402157553714452147 -NaN -> -NaN -NaN +precision: 17 +divmod527 divmod -6180274 +415.9 -> -14860 -0.0 +precision: 36 +divmod528 divmod +87844422154486308718.5177053788704188e713105698 -2.6927012829628757 -> NaN NaN Invalid_operation +precision: 267 +divmod529 divmod -642878136022742433620660764383626812737621748290779786755476887034501729783852578495857950532489435843405216613567446492162493200463915548203053129532538371531037892966591470924859860149101831460669396129 +93471578561014109002207499550252944522637346438373326727511147159420471518621512335495708491888847301 -> -6877792650127333017824344108759265720264300074238307071201358141916251620619992352908951092755734211760 -55437853880198771689073613508421813244019140480718710802984785126921108548011085303542770904430936369 +precision: 240 +divmod530 divmod -6941374808709050821850403676166497234068783454085282796465766 -365322099560711943445255720196 -> 19000697787119450002992255649081 -61210739118635660172695925890 +precision: 71 +divmod531 divmod +3135249078904916081643825879883985426652371322 -sNaN7767899162610210401635850790179124645907710577213794270011343419831605798780 -> -NaN99162610210401635850790179124645907710577213794270011343419831605798780 -NaN99162610210401635850790179124645907710577213794270011343419831605798780 Invalid_operation +precision: 279 +divmod532 divmod -.154880947305349008609009154333878687274390586667863041242794353532460720755343126590 +923778043344755435154733219817465923910066 -> -0 -0.154880947305349008609009154333878687274390586667863041242794353532460720755343126590 +precision: 136 +divmod533 divmod 94.673396204030 +4854518e+818429283 -> 0 94.673396204030 +precision: 80 +divmod534 divmod -4410060915204969688725377097639230864773388396574 656899066824626064926509 -> -6713452854367251420873341 -250099586486711626100005 +precision: 183 +divmod535 divmod 46683400010.9911065042526144792588273897556888017702160939091366078394997084828911415458498022814950754250641078356269128667793562060979040084641171062843540 322651368163796465730032575144358796337534009084900489842556747093531137271470 -> 0 46683400010.9911065042526144792588273897556888017702160939091366078394997084828911415458498022814950754250641078356269128667793562060979040084641171062843540 +precision: 94 +divmod536 divmod +611429542927920689 -Infinity -> -0 611429542927920689 +precision: 38 +divmod537 divmod -75619 -.35e25703774 -> 0 -75619 +precision: 264 +divmod538 divmod 278491929000741168769849904323427917474018784394263735252433727692365673746851070189560588858710668302285264318997671732869666452179762612466923734346473978539597851827 -85955190569732652095691018389817990792215724972748312781463041801932292879656290.5440 -> -3239966395918926144215869352541899236876283110133229355104040018703870112738931924661444 1846811413013474987463260882426440747138107754371819161878703426288667295753241.4640 +precision: 231 +divmod539 divmod -.8051446829189366976707956678558570087133400916450109351490927414403901740666E+867402713 +2.7003500046328718577446842699514436456 -> NaN NaN Invalid_operation +precision: 238 +divmod540 divmod -1938264856256364966856329985483306291208388907887888779060750813280203268127932985906551029326569333791112943716881080780879537774528517409438148770421717676523838113285265418137187970769441463635090765602e-857156932 .95434373022534672167548713245113734005001424327938954438291302308994737230487025639373208554504971796 -> -0 -1.938264856256364966856329985483306291208388907887888779060750813280203268127932985906551029326569333791112943716881080780879537774528517409438148770421717676523838113285265418137187970769441463635090765602E-857156728 +precision: 26 +divmod541 divmod -34719677772.16121085 -970083168 -> 35 -766766892.16121085 +precision: 112 +divmod542 divmod -3347361 -993. -> 3370 -951 +precision: 161 +divmod543 divmod -.61065527605966813636689758467364064186860179688E-159569181 +25895340945837536336608E-575547731 -> NaN NaN Invalid_operation +precision: 21 +divmod544 divmod -53369168077170614468e803184494 1524746331 -> NaN NaN Invalid_operation +precision: 19 +divmod545 divmod +3179094.4734 -7.517 -> -422920 4.8334 +precision: 73 +divmod546 divmod -61911563965616153911336841465177029890443854 +4632203676251147404144e-95697829 -> NaN NaN Invalid_operation +precision: 41 +divmod547 divmod 634159992571751E+974976513 -.84522034 -> NaN NaN Invalid_operation +precision: 216 +divmod548 divmod 693194401170339005384733560912950677955286227160150866358157365310113388293232181260143874389623854130321216009097383934730626341426461463370877617434920418775517979000038410576E880194221 -3852145958845684223144187235159785277094035397151010467230920129127257544329879007323266 -> NaN NaN Invalid_operation +precision: 256 +divmod549 divmod -9366879032446785233864871331943889961843022670354821252444719028340048969262011354521412777727315839015785313222004298154247066637710079594551575575183470040024913574228074072801495945154 -4821294738155798953089743177348982551274984676475930383509137090595761892848934274.84301337074 -> 1942814024273845761892297585856715252258450872240795039544979295753257487385906512325370905764658606888777 -1899784472654804200969397815927245682191357858931004374437969184902800350445343595.51695381502 +precision: 261 +divmod550 divmod -1909943168905193391503982333566733752334601195768049032121131456589486212474495421864491200362048629243601215940 -13466172964669302799211165612240750384510884688604568427e-497816756 -> NaN NaN Invalid_operation +precision: 195 +divmod551 divmod +313535790986050695901883743440311514951632695453236600570069109180996207755604011014502048331524629861698174 +652152167129576342030470608680279278393586113046136548 -> 480770910209601680281258226904816961600149936581245063 467741438033685107161098274279509306928636942112835650 +precision: 36 +divmod552 divmod +324068.5517383731513558751316745005 +13237372573762714 -> 0 324068.5517383731513558751316745005 +precision: 241 +divmod553 divmod .62939505406231005553261748771889089256865437557659132571926245527150690267307349528363594687192417774172028600462E642424937 36726447079982636580027598660974381623057114915446430095 -> NaN NaN Invalid_operation +precision: 188 +divmod554 divmod 783010086181434181034799475690288039962062722086511729870815054514549.7898592903797172016396900664330200748215e456915612 -65204201259091049903598223899688086.8820000185075573635 -> NaN NaN Invalid_operation +precision: 270 +divmod555 divmod -.4671360312009126762917865581177124036680478446863459666313439502007155619267336779420465635896005556728270718406666227231437057318554795532253830708694589 +Inf -> -0 -0.4671360312009126762917865581177124036680478446863459666313439502007155619267336779420465635896005556728270718406666227231437057318554795532253830708694589 +precision: 279 +divmod556 divmod -97529609088984500573469848230739976526464605584015217724769837128937775942 +79.768439362198420485314442320117268E+386008150 -> -0 -97529609088984500573469848230739976526464605584015217724769837128937775942 +precision: 245 +divmod557 divmod -4602e-21911787 58e816091629 -> -0 -4.602E-21911784 +precision: 232 +divmod558 divmod -344046572847341319651741947894611757500597504403727922666677570197278059602730784616591365660312206233E+662082140 +.666898064681439703094049462484987150926855887459562 -> NaN NaN Invalid_operation +precision: 298 +divmod559 divmod -Infinity -663379331569778614709290883318449911819360348094386603007711328614456113659874639650725.479924711871614363086130775756311 -> Infinity NaN Invalid_operation +precision: 260 +divmod560 divmod -35457281634761138.394948327854610628837668999784139681162894696302929198446315006463e-539565672 841091763070512958930725688473217968051048 -> -0 -3.5457281634761138394948327854610628837668999784139681162894696302929198446315006463E-539565656 +precision: 58 +divmod561 divmod -5367311636662158142139.859518379911388e+265243526 +854485693699022308E307118995 -> -0 -5.367311636662158142139859518379911388E+265243547 +precision: 268 +divmod562 divmod +517364454361125207174499053718950459.288447659656819248170740978308260298469203844214038108234518325504097153267311984536455292845663546424359447164551258018775300049479396002586738131996503082827184251783282554709926966493785099034802581648089279958243374741141416 .520016869406281654864016529665126479866237670133634413190213061103098376125992323243127023945348473425294313669253401955969112422842 -> 994899367306709132549248596286524862 0.388421840726915299009019639367326442740482377570863245489890339578844743505337849033834735462949655667317926915330551175726010351675396002586738131996503082827184251783282554709926966493785099034802581648089279958243374741141416 +precision: 197 +divmod563 divmod +4282026237091954764768993348888339687611289690076042999911269892918648510838519106493461536668172759168097294520.8444881433049996698163762266178572157780845376030065666834477430644724283553903305E-631884227 .33724286938466956835621813390281595875784156959157125863567846263616707617313694685128549535600E-737254915 -> NaN NaN Invalid_operation +precision: 127 +divmod564 divmod 415325450209688854702752569085757166663508536575754538144026970100330340510319605144107859880252210e-524534914 2054374778158771876436809146038904483152726159026e-492345447 -> 0 4.15325450209688854702752569085757166663508536575754538144026970100330340510319605144107859880252210E-524534816 +precision: 256 +divmod565 divmod -2159435783394655686809638832512687198885270607.249866987204355270156861121295231783948766929106437790436262959610000305E556383137 -62254941047436911474025954874530100316173267681514630571475E-214801949 -> NaN NaN Invalid_operation +precision: 121 +divmod566 divmod -76489202609278592619045346528883535486640569440032840075846990847e+353390046 932607130610428103107301723343225 -> NaN NaN Invalid_operation +precision: 74 +divmod567 divmod -5661664033273261629814164773035375575892787372504726246929746157 -474467599409700995.48912271094379 -> 11932667352453788813244744243339744314556782753 -193206962762083606.33583337554613 +precision: 201 +divmod568 divmod -.806696188072039823523345918061119324128311995063263224928250634148876206677574894425864540844819319294977098173935462568067072 -546423751758564655009135584616763563578509318831067899825760735 -> 0 -0.806696188072039823523345918061119324128311995063263224928250634148876206677574894425864540844819319294977098173935462568067072 +precision: 91 +divmod569 divmod +91069956747072909697850823794672595687805632879876286589 +1957186346331305602657292459e-996630141 -> NaN NaN Invalid_operation +precision: 124 +divmod570 divmod -927586442414246615432083749552057715283177080160808580491607002947173944025723902899596156703070 +.505856017610584093348527730500118067441424905332e+48467526 -> -0 -927586442414246615432083749552057715283177080160808580491607002947173944025723902899596156703070 +precision: 91 +divmod571 divmod -9503410521317045835016080805028728597427885419761313507632521831701506719115 28814231959066216172412892259037634167E-678342145 -> NaN NaN Invalid_operation +precision: 48 +divmod572 divmod +962459451014057681510460901442372E951354557 -Inf -> -0 9.62459451014057681510460901442372E+951354589 +precision: 244 +divmod573 divmod +88515999977214136203927802873637903239.130369961403883850276933788421052582942262838154226872080652189007876216922486289641984068571810515917433235 6903765346775306091662625948212129108083957506085881155036254235189227187 -> 0 88515999977214136203927802873637903239.130369961403883850276933788421052582942262838154226872080652189007876216922486289641984068571810515917433235 +precision: 155 +divmod574 divmod +.555443032717713075665891077603443719572531210480020668782738303680512096185503235789363211930275288592814605593095610362749808499831856070040482556 752077.1632872344653214295487951366038151802282302899607909320605905282177 -> 0 0.555443032717713075665891077603443719572531210480020668782738303680512096185503235789363211930275288592814605593095610362749808499831856070040482556 +precision: 273 +divmod575 divmod 86852580059.5509787065482422686385030197952634989154409094302071908711052833E830488815 36694308343.38374563951550544522816364 -> NaN NaN Invalid_operation +precision: 111 +divmod576 divmod -287126414.868908101169868415435220E+828257279 +22158262880959920 -> NaN NaN Invalid_operation +precision: 261 +divmod577 divmod -Infinity 96777383952659836402319594170996355766367960910393101689245019668008878518184.7E477824686 -> -Infinity NaN Invalid_operation +precision: 9 +divmod578 divmod -917005E393139220 -.986 -> NaN NaN Invalid_operation +precision: 79 +divmod579 divmod -84938601734958617765202688578953805871178300333751 -416705648207450802510534. -> 203833574371598580260241509 -379332794540855943777945 +precision: 286 +divmod580 divmod 985204378082578457560746592129621750553951389215441663061478584761879992365133069922606325238241934521609913280513240070301044194505557369356173189051217364090032626682878702262378792.394488808822514490986889143886221143182186029 +669011276057273187474356970385366719350964556005791198854934417240475166467857765766091315045461875861574791466770 -> 1472627462856450253314837193907698513541103959500998217020979273849587 223238262776954362082379538280966891034532727791892618091686831022783742866405464269904340541389885698086173654802.394488808822514490986889143886221143182186029 +precision: 74 +divmod581 divmod -29782671068547175.68667698628220081196 -208129631512623246 -> 0 -29782671068547175.68667698628220081196 +precision: 224 +divmod582 divmod -83882836230085.5954418414670990468343810291903593867184611944442906 +860847628463206326425243928135140e+312565990 -> -0 -83882836230085.5954418414670990468343810291903593867184611944442906 +precision: 75 +divmod583 divmod -640957082553224984783028378 -3202897749546 -> 200117872212460 -2842802485218 +precision: 200 +divmod584 divmod -260510.687043836341013342732772319e+92909780 -.4329004228531895 -> NaN NaN Invalid_operation +precision: 144 +divmod585 divmod -1455614420605409841168069556128694814512590106446791827138760929195438088254394981849141995385716591142881009937075689825679479 +143940211448278937151036601709365967201437896308025464681731197 -> -10112632223890027617392643432142113488722072170699999809302197192 -28432724248537806393581738074017189297372973756419975393480655 +precision: 83 +divmod586 divmod 10577.5514708928 0.254273e-791266316 -> NaN NaN Invalid_operation +precision: 58 +divmod587 divmod +.794457363833297883954604 -492381639.213 -> -0 0.794457363833297883954604 +precision: 281 +divmod588 divmod 18254577884262845254534186152.5250446638935761638781498205496923719058261624470161205926510602426669053207005e754922838 -458429278995528576842184166273472703289018997832073259 -> NaN NaN Invalid_operation +precision: 293 +divmod589 divmod -7505149577360006106192023226979322533779580672831024699818274890136516609701 +72873963764421319189507882620297326462e-234960391 -> NaN NaN Invalid_operation +precision: 139 +divmod590 divmod -.65848704254155497794563143905896959363769494731496605221869634e-202152328 -1430322410830667995033718210645 -> 0 -6.5848704254155497794563143905896959363769494731496605221869634E-202152329 +precision: 212 +divmod591 divmod Inf 7912318545190925057651299917938457832 -> Infinity NaN Invalid_operation +precision: 127 +divmod592 divmod 1614971608323392137825493618307996874023493863322562508137254205407636134212374434340177179845390247.58120074402386 -121534033977876760488646313442922685726282641019582810171 -> -13288225161828913913623827233705190561960420 119485136636702910918163281927915637659518705461369958427.58120074402386 +precision: 224 +divmod593 divmod -5209393486462072290734789334862473236458642800556015164330816596484066695208950308899110751645126959626182245109982424311003487321521440772098474863657566995466888625665E702047064 .119725108363299846232635161399452133102147570389498089125080834971937331885052202594E+626299293 -> NaN NaN Invalid_operation +precision: 48 +divmod594 divmod -.3357731111387109013059718193e296972187 +98334.535480064E-891779348 -> NaN NaN Invalid_operation +precision: 96 +divmod595 divmod -347662541191758495202517353789589830363 5136349873830232828e+993483161 -> -0 -347662541191758495202517353789589830363 +precision: 218 +divmod596 divmod -461606.3395932471671910878034345686 98.3432521743505855 -> -4693 -81.4571390198694395878034345686 +precision: 87 +divmod597 divmod -233680685161676786939632065831951 Infinity -> -0 -233680685161676786939632065831951 +precision: 246 +divmod598 divmod +6080246.8703060103337757281730196913251422000179176122237009053072136631491625512425012 +1939713596792498188301996650022252023118921 -> 0 6080246.8703060103337757281730196913251422000179176122237009053072136631491625512425012 +precision: 6 +divmod599 divmod -880.4e-769009042 -15. -> 0 -8.804E-769009040 +precision: 133 +divmod600 divmod -7163797103607194931920857394262519263673707008544471084208475474322040955686997598556265218405865310745297417171115.143641257012 -887916390581778799732899411323281001641593991236518413016768592 -> 8068098730459684538977248291593596405487087817231382 -47101631195674000695684318168685181720120823249433207802816971.143641257012 +precision: 75 +divmod601 divmod +69954029639043033581049025056293173717672e732035815 58051735004979494381e+14867809 -> NaN NaN Invalid_operation +precision: 164 +divmod602 divmod -7305543867171614594117605347186146967352958475205202881509741864872491303.581590086649E996097760 -988525330520256161704902644374338144067541E+51312540 -> NaN NaN Invalid_operation +precision: 19 +divmod603 divmod -325 -8 -> 40 -5 +precision: 192 +divmod604 divmod 69631871441231.229477265993206295462700097411793939297356233 -.802132775558941657916916374070 -> -86808410730642 0.747470798319846581920616844471793939297356233 +precision: 36 +divmod605 divmod 76928256343409619721727E+301097247 -52630465765 -> NaN NaN Invalid_operation +precision: 141 +divmod606 divmod -64398 -68. -> 947 -2 +precision: 80 +divmod607 divmod 42373518490811253818555118394847071418354021e458203400 -Inf -> -0 4.2373518490811253818555118394847071418354021E+458203443 +precision: 264 +divmod608 divmod 621299470475.2332629028231365e-211835456 -Infinity -> -0 6.212994704752332629028231365E-211835445 +precision: 156 +divmod609 divmod -584769263861963857191676898315.985411607771892725094480939615434513719072400046292318041079 -522593018820876956715046062209909144984346075e+955688331 -> 0 -584769263861963857191676898315.985411607771892725094480939615434513719072400046292318041079 +precision: 128 +divmod610 divmod -.13144202002989791284956390897623499841830567970713136243338545911690931269934840584755070832147313578607511354E-742533808 +263736112.8108088201942239780719731134743027038270539849 -> -0 -1.3144202002989791284956390897623499841830567970713136243338545911690931269934840584755070832147313578607511354E-742533809 +precision: 158 +divmod611 divmod +5407567342214094562.8967130749 +20327004978549 -> 266028 14861780661190.8967130749 +precision: 3 +divmod612 divmod +54 +3. -> 18 0 +precision: 226 +divmod613 divmod -98233652932088950644896823241900654788318896894079e-721944612 2064463428559347167836904 -> -0 -9.8233652932088950644896823241900654788318896894079E-721944563 +precision: 284 +divmod614 divmod -857371113915170315791956009308615934222509159775559.35411598421 +493942480973997615118667411860 -> -1735771161501503867611 -362936745616650990331708509099.35411598421 +precision: 202 +divmod615 divmod -942139798395928537689783326978589767331002021023582608e889058901 -439900641067147983535020051E-145869419 -> NaN NaN Invalid_operation +precision: 213 +divmod616 divmod -NaN -73023565139404560676377537120781239361364007657221.545083411340892189153775 -> -NaN -NaN +precision: 223 +divmod617 divmod .628659649544271695479075419670492081725061811208484423280176468644651723589679833636188002386177759357911882437477478323077046708408279204341070499928854390067675069830893142522787795001e-576524382 -597514384835509765075480789044918059865182455579.443916137310456019534619936323103155250851368E-607703771 -> NaN NaN Invalid_operation +precision: 25 +divmod618 divmod -726312797579e+422743639 -377331 -> NaN NaN Invalid_operation +precision: 181 +divmod619 divmod +.476929053207647400479940272837389482320390999886714e-90781922 2703050847087131983052741 -> 0 4.76929053207647400479940272837389482320390999886714E-90781923 +precision: 299 +divmod620 divmod -.631741773063388821893733736523086997986392672208318278027426770091945515808239773222458561482275698566946239840157125519595527190471337657766266645682599629795952217332655966806567037250632280513551666042169162678520344002 -906450645645060168779593165198677524212510820199669523565390540093081557468120281933763432184003597721059832447e-276861615 -> NaN NaN Invalid_operation +precision: 201 +divmod621 divmod -6597984314453346611598493356740167485964128888490234425360946703125091564615035053 -82966491727654698181561340469926349539885 -> 79525892647261135820923695238897862640264 -54299407166577103332330869957076940105413 +precision: 277 +divmod622 divmod -.96591509807556705238989537066407865861021767995997764964030435780324897973122623206867959136602488449789125595693688785475800408975505564859427124238191566308416459128495952306041772424200923526750991033668166908747053371241578 42882007470572649685063883273819486311393498968295303308770838511859880388701805581450542193653859962642592817169 -> -0 -0.96591509807556705238989537066407865861021767995997764964030435780324897973122623206867959136602488449789125595693688785475800408975505564859427124238191566308416459128495952306041772424200923526750991033668166908747053371241578 +precision: 223 +divmod623 divmod -.682092733449869642710895926976870519837837318228427660628999995954336295771441938323779969037251812928751164896952437791545854173494170080611669686009742444349293142704127591616659899983842138812459414974e-143641787 540320549886060610741421606053748613713398708666409587126319925441579658190398482461147328591300288688 -> -0 -6.82092733449869642710895926976870519837837318228427660628999995954336295771441938323779969037251812928751164896952437791545854173494170080611669686009742444349293142704127591616659899983842138812459414974E-143641788 +precision: 300 +divmod624 divmod .8911847767490549318605100167607688932303412584850663784555907895625472355021994166435552334953594668503648472311606455972513942675825680063368914012043934669321902514792836540 +1741384995218626058155210075542255304077499.939987946149512416539316081507266560478026458 -> 0 0.8911847767490549318605100167607688932303412584850663784555907895625472355021994166435552334953594668503648472311606455972513942675825680063368914012043934669321902514792836540 +precision: 43 +divmod625 divmod -61533129825898528.695 -134676838.0 -> 456894672 -101891392.695 +precision: 272 +divmod626 divmod +645085811090069167129664035529326275298316308664765295692422911546107854147621326916029950560021891889655794200001035793593334830410218858010878047507365839817478345243826267590039280384305 -Inf -> -0 645085811090069167129664035529326275298316308664765295692422911546107854147621326916029950560021891889655794200001035793593334830410218858010878047507365839817478345243826267590039280384305 +precision: 219 +divmod627 divmod -1600728139221868543572315933696731868248446486539241414 -632633969019880293773556914e-542873260 -> NaN NaN Invalid_operation +precision: 183 +divmod628 divmod -614557421719.63137107268 +Inf -> -0 -614557421719.63137107268 +precision: 273 +divmod629 divmod -Inf -791382126196521509019618809646558396841190719473140123926246558e-95744022 -> Infinity NaN Invalid_operation +precision: 44 +divmod630 divmod +23990 68e-498298473 -> NaN NaN Invalid_operation +precision: 178 +divmod631 divmod 233208144738128333331510108525648371090768928580093968545909 -612050232953105591322884791913 -> -381027785273298647713205388044 432445304725359555276610457737 +precision: 255 +divmod632 divmod -8623097822137791141684e+665980724 -90216055717 -> NaN NaN Invalid_operation +precision: 17 +divmod633 divmod +10.6734648355 +9323.40E912427396 -> 0 10.6734648355 +precision: 139 +divmod634 divmod +4763455172805384724374914696107547291530183956124171003523715208205121552180312430469e173200958 Inf -> 0 4.763455172805384724374914696107547291530183956124171003523715208205121552180312430469E+173201042 +precision: 78 +divmod635 divmod -775450755741508716327557067176897 -1492880428663609 -> 519432595439457774 -1363526661230531 +precision: 184 +divmod636 divmod +2.549023 -5831.E-799815691 -> NaN NaN Invalid_operation +precision: 75 +divmod637 divmod -89952533795934304441289866803.7 -.77536098911655 -> 116013747220409746720893009518 -0.31702643867710 +precision: 224 +divmod638 divmod +61729345290225509491097216818353943663864508094336737060960656355086458168014444710985559773495210132559762785770978003858073141182443214211223714291766306984839543318013406118421.5193105329542245843125758556384378452e-900495481 621754330658802405298229307135409977373376015828012013711539122778862561934077876239894048943985429588969010E-524712968 -> 0 6.17293452902255094910972168183539436638645080943367370609606563550864581680144447109855597734952101325597627857709780038580731411824432142112237142917663069848395433180134061184215193105329542245843125758556384378452E-900495303 +precision: 184 +divmod639 divmod .18031865147065322450743120784389856146152e+641211808 -19997077657509916405 -> NaN NaN Invalid_operation +precision: 137 +divmod640 divmod 87.849937e-444222070 -2422 -> -0 8.7849937E-444222069 +precision: 23 +divmod641 divmod -19192766396466526631 +43884.9115e215967530 -> -0 -19192766396466526631 +precision: 269 +divmod642 divmod -2548831058318384185416345870615146946747445940996236581061882140688171453839891330696541353991723903102624189949587823361158039445593420774206719858664732310949766997778412151159581556.3405899398421361031881499502626237687496331055340234177962592255715684878149106588864 55403222207247525477591961629249396479245301194540623143056523470020374119289926708550068615565904711172495274306419757158527269709115e-904260785 -> NaN NaN Invalid_operation +precision: 296 +divmod643 divmod -518674366467411828511032291617344021306442702059741378454793332237153929542319776560758699704686098749467347326.9536553e-66369657 +.4178966096507973466342885841979490558594640560110721284496 -> -0 -5.186743664674118285110322916173440213064427020597413784547933322371539295423197765607586997046860987494673473269536553E-66369547 +precision: 37 +divmod644 divmod 72421e-434556227 -50e-452440141 -> NaN NaN Invalid_operation +precision: 232 +divmod645 divmod -55361436545759049388963221284140207782077955430487609.46588713293393241578011566891846288989841467042513459205476604084961664932153894077556726152651075024381561546637652548787865584763 -26753670911768047237547080553167591918013804016965806956033846567072151102600231584579022150e+280487412 -> 0 -55361436545759049388963221284140207782077955430487609.46588713293393241578011566891846288989841467042513459205476604084961664932153894077556726152651075024381561546637652548787865584763 +precision: 65 +divmod646 divmod +188087154759679781262355018529740 -2401644353508857 -> -78315989827919430 828010631138230 +precision: 63 +divmod647 divmod NaN -Inf -> NaN NaN +precision: 136 +divmod648 divmod +749072417129163303818288876883907.767254425710E-893931216 -4463233286991.201455538 -> -0 7.49072417129163303818288876883907767254425710E-893931184 +precision: 66 +divmod649 divmod -212907407495524179.766974228054475048266988E184345309 sNaN81260222139795876287256967671943301598391680415917986 -> NaN81260222139795876287256967671943301598391680415917986 NaN81260222139795876287256967671943301598391680415917986 Invalid_operation +precision: 272 +divmod650 divmod 841461901330216688757423212256775577679187039095835845654167293902675034555835077051564736553754835024893537523228166138906490557103041871496277479141270951436793.559661469085516563e-315232854 -891245276351515716992776512353636688607579847726577346903336193837809705861222068503143072 -> -0 8.41461901330216688757423212256775577679187039095835845654167293902675034555835077051564736553754835024893537523228166138906490557103041871496277479141270951436793559661469085516563E-315232693 +precision: 234 +divmod651 divmod +730474418641397.2823466462971828654126983192622591131692767638245092488116576771824215988389877494934636989355245041169858625720340857882855710441784414002857880067799517665042 +295816094329160376611275459815184129597402138911625379485217206645594799697239686727315 -> 0 730474418641397.2823466462971828654126983192622591131692767638245092488116576771824215988389877494934636989355245041169858625720340857882855710441784414002857880067799517665042 +precision: 33 +divmod652 divmod +61340556.51678813343 +54.698526 -> 1121429 43.20313413343 +precision: 51 +divmod653 divmod -545523235803500423110821519760987158821576817335617E-359593942 .6348322473865422531959480 -> -0 -5.45523235803500423110821519760987158821576817335617E-359593892 +precision: 244 +divmod654 divmod -.652427694458791062979510281756674011414375287 -.3006627971234826680338 -> 2 -0.051102100211825726911910281756674011414375287 +precision: 96 +divmod655 divmod -606666367138385646527297668191362531407614710184886939906044 +625362341954641475804487439804e901162673 -> -0 -606666367138385646527297668191362531407614710184886939906044 +precision: 36 +divmod656 divmod 72814892405616.97759936012566103 -.5842547909953117e+220616127 -> -0 72814892405616.97759936012566103 +precision: 183 +divmod657 divmod 6475095103368501995555013281987 -791646400189811 -> -8179276886519013 97444752905444 +precision: 181 +divmod658 divmod -628829301383.6839e-339030835 -sNaN2169416481307002560677795697242456221685525433078645429339 -> -NaN2169416481307002560677795697242456221685525433078645429339 -NaN2169416481307002560677795697242456221685525433078645429339 Invalid_operation +precision: 24 +divmod659 divmod +496249651981190209. +.35101062 -> 1413773896588058244 0.17744872 +precision: 189 +divmod660 divmod +506047 -686 -> -737 465 +precision: 144 +divmod661 divmod -651180500703286174640591236919615890136128783778993066128047334354501356056379122195392609399. +346438524620882378053826346825842323072196741 -> -1879642286942226441402830413056133364973902495131 -118946995110544637125684763418582682166041328 +precision: 204 +divmod662 divmod -850546368317464563721535081950745456311111986196016862716880509220391967056149758251498065985209497297153335348618776251883236517111202869774345 NaN7642419504237847974166012955573500862314667541605 -> NaN7642419504237847974166012955573500862314667541605 NaN7642419504237847974166012955573500862314667541605 +precision: 142 +divmod663 divmod 7722935286970470489067444303287216390425462550411513689365810155.468423368e+542064531 +.528214112155297120939365002316415747E-210794201 -> NaN NaN Invalid_operation +precision: 237 +divmod664 divmod -43812314670625462837817521905690564720776332453671674504205434291045206853128826997150113003469912684102263096039894043359084007257744528612121738087981920242467351888208e-185075763 -25423542659129450112327744835010330522687311148661271286358003244141416193426072091.60 -> 0 -4.3812314670625462837817521905690564720776332453671674504205434291045206853128826997150113003469912684102263096039894043359084007257744528612121738087981920242467351888208E-185075594 +precision: 13 +divmod665 divmod 6122 89E-646846816 -> NaN NaN Invalid_operation +precision: 229 +divmod666 divmod +29132133861046101384109618654689 -1435498554198341E-600912478 -> NaN NaN Invalid_operation +precision: 136 +divmod667 divmod -4673758799785895759846280467721988538520688246141597662001107826682344536714422335235391075658840616026964768026361664145566468464E+537801575 30711808524427255064557181787235193428891423430378701927510046182. -> NaN NaN Invalid_operation +precision: 11 +divmod668 divmod -59 +Inf -> -0 -59 +precision: 207 +divmod669 divmod -Inf 92510679205850914123057541637168320833688144253059638610989801895912926538676657531029 -> -Infinity NaN Invalid_operation +precision: 10 +divmod670 divmod +0.1 -4 -> -0 0.1 +precision: 29 +divmod671 divmod -9996195332784.81 -65574697 -> 152439 -54096801.81 +precision: 196 +divmod672 divmod +22291558672730300716288536 -9796601078396E206209542 -> -0 22291558672730300716288536 +precision: 118 +divmod673 divmod -9347687903724197513669895028679150664621200633736377091886738555.918810818689545719278088808802031904972553271205e985391522 -2492357065036489897969628283366721912481080819339.2180839E921518751 -> NaN NaN Invalid_operation +precision: 27 +divmod674 divmod +142382649 15332e781393598 -> 0 142382649 +precision: 50 +divmod675 divmod -9161 +9.8 -> -934 -7.8 +precision: 150 +divmod676 divmod +92474176857877 -6826750e+600379186 -> -0 92474176857877 +precision: 193 +divmod677 divmod -283754369150700201576345178842320711884210.358404134680396719435859778212169999698874799269049292907057918092078825834121027084853856322891e+887179142 -239286224029770071952958262205830509253341258059847437230799895967071 -> NaN NaN Invalid_operation +precision: 141 +divmod678 divmod +937033004867585752912572075073030314179583203.22E-432329990 -32098733970014156184769e-928020290 -> NaN NaN Invalid_operation +precision: 257 +divmod679 divmod -Inf -679922860250675493652e-192218679 -> Infinity NaN Invalid_operation +precision: 42 +divmod680 divmod -456414086561555550112725661106 -195869861622817E-695433839 -> NaN NaN Invalid_operation +precision: 28 +divmod681 divmod -.22755394 79.49E-349611458 -> NaN NaN Invalid_operation +precision: 80 +divmod682 divmod -715392197E-582675046 -sNaN -> -NaN -NaN Invalid_operation +precision: 181 +divmod683 divmod -141964971109851809686069280058762741573105471245740589083505457332541475115418862657387256367551453995877577023240210252951844698015820921347207484346E14929093 -84303933493965.932229442103985047528270547184004770933271918910585254396675e+924899148 -> 0 -1.41964971109851809686069280058762741573105471245740589083505457332541475115418862657387256367551453995877577023240210252951844698015820921347207484346E+14929242 +precision: 138 +divmod684 divmod +922198230467412744.885263091545020502666770754048891761487751859648416210582704658791615385902896524883 -369094381421572386587988051710466697322954607199675 -> -0 922198230467412744.885263091545020502666770754048891761487751859648416210582704658791615385902896524883 +precision: 279 +divmod685 divmod -.569508769699226698865939862798237944839018665693273820463268960422461370294324104788344668519506025237150365733229990344676257982331410281090557596034570098753715950442E397751335 565356994294988178440923781485545051927912336080540679907836718998274484277560595254 -> NaN NaN Invalid_operation +precision: 263 +divmod686 divmod -155096605259056430868220717791891023098277055378107858303968590211309677674322844235731644277951145274848534037336117956457477424254447329475131782669527585709022898428551680590897944944015373769446447734.48494550985433756574271285535474069658805364932 +Inf -> -0 -155096605259056430868220717791891023098277055378107858303968590211309677674322844235731644277951145274848534037336117956457477424254447329475131782669527585709022898428551680590897944944015373769446447734.48494550985433756574271285535474069658805364932 +precision: 226 +divmod687 divmod sNaN4 -.67040667420 -> NaN4 NaN4 Invalid_operation +precision: 282 +divmod688 divmod -Infinity 22226184416334608186261776710792553128133 -> -Infinity NaN Invalid_operation +precision: 96 +divmod689 divmod 31445850158578803776080404463062757291683989401483809097519762516692757519e432275750 -1183734621943356972233603832879060017 -> NaN NaN Invalid_operation +precision: 39 +divmod690 divmod .15603329928729630711 +.2035539999 -> 0 0.15603329928729630711 +precision: 94 +divmod691 divmod -4949100607410 +585433. -> -8453743 -481691 +precision: 60 +divmod692 divmod -6775349121589369208918 +56783442713 -> -119319097220 -30621651058 +precision: 267 +divmod693 divmod +510156490587761.3619370021649297472835716187173400573898612838928212606850959275147812064460747151309323910296216626 -7311338097649292717259680169297373856820760751057132805262 -> -0 510156490587761.3619370021649297472835716187173400573898612838928212606850959275147812064460747151309323910296216626 +precision: 218 +divmod694 divmod 3287172251526972637297775784942993841859296894040653056.37715335766590077900257911375581311365294197051628451355934 .132107492329571077548481731362303350569096784886519781707E-564439318 -> NaN NaN Invalid_operation +precision: 87 +divmod695 divmod -NaN75595912978247168431381216767973229999363579548734322557126517606606714831065691994538847 +6634125507 -> -NaN595912978247168431381216767973229999363579548734322557126517606606714831065691994538847 -NaN595912978247168431381216767973229999363579548734322557126517606606714831065691994538847 +precision: 209 +divmod696 divmod +661003347776751756476523676684214617198237698419096502511074577945748917524839491048531980440928383989913065869515110621672124958791863447165100216019110362 697783106368577860657628602332117375214155352177265649060194966314816406673680 -> 947290557400799883235585712456460826197432662029256269290615974186855466701783 64083070647124910477946146732956260277662822775526200123664078311556463938922 +precision: 287 +divmod697 divmod Inf -545029562408.7061977871541466160690349853311994798629401861686150945077924748582330703774181060001 -> -Infinity NaN Invalid_operation +precision: 115 +divmod698 divmod -1789186367525061254368422092619985799444777753525598592980524 486834960088043319657873731155 -> -3675139450136222297948397906368 -1295587667165816692098485484 +precision: 127 +divmod699 divmod -872435051904404344808704712212581050727073766070744968828722779895540752426786998420460956430168699459948 -8432235367501602208495113288798218055982937134210583e+987679287 -> 0 -872435051904404344808704712212581050727073766070744968828722779895540752426786998420460956430168699459948 +precision: 254 +divmod700 divmod -677848675914981252227151950620421313840482074246836653204071483464071627551076013211235818093752640581436944813879677027446929857733345957551650176885898787660627011045146363322681396672 -179662493671695918185522706431063785385659454828223666408095681624286320873860671429611312058 -> 3772900298008998029063115431930942329775887653990733103525978241527525523751418581194646059952 -92681597136032517850040988170790900652231414388470335539898060175203908091499670423832895456 +precision: 110 +divmod701 divmod -Inf -3903. -> Infinity NaN Invalid_operation +precision: 187 +divmod702 divmod 28551158764019024658599572715177697114697826486200626020843162910656051100492891697332340813849006932611782785643303662676725944018867076216626054688490141230456562703E+431812038 -67218662814933546786680309100545609871143125589324377043426667880357846842688593427 -> NaN NaN Invalid_operation +precision: 214 +divmod703 divmod 6620800681493791057347893002113269515464828980319971051773910066363083116356667481 +892661323769659990036112.21214066848030784 -> 7416923423470966098013212517919973439847486996743284350873 550950290174599657366163.00145576238725568 +precision: 180 +divmod704 divmod -1389756727543170026083858280045303411468365173576794049043300172458607188138666346578539275334471244764096515020085E233754079 +998605195011659502708677.620870888476868192474237733111023 -> NaN NaN Invalid_operation +precision: 254 +divmod705 divmod -299115099738093354265195182551731125503486552490140754126781531937567610582358908012987254967914433081417644593553320409735501411948662125356545308274324984859741909741444487123135058383802136538970771197083062614398340244022472484e-410311612 +656684265806322515024392977612546528595534590153827290406.1611719853014153903209781138357840532726707652251471552779e963409325 -> -0 -2.99115099738093354265195182551731125503486552490140754126781531937567610582358908012987254967914433081417644593553320409735501411948662125356545308274324984859741909741444487123135058383802136538970771197083062614398340244022472484E-410311382 +precision: 256 +divmod706 divmod +2012664298362192721005061787150524812681433620062278744366336164152559942567966373420798322022070018014577577602382104041 .713463553286753507639206177002497444165668482466888196397425 -> 2820977033921826223347857838641333100857369293543322573981522124779188364597291909800336905929171993141709666595538591884 0.587563777687151206690942408763491047263760852167073856501300 +precision: 135 +divmod707 divmod -2380435. -16e35103931 -> 0 -2380435 +precision: 15 +divmod708 divmod -66374202e-601795321 -280.2e-322723706 -> 0 -6.6374202E-601795314 +precision: 281 +divmod709 divmod -8486099141626668903910658616123611785555392095888533659095200576946899251322707738468007741835274938755916091411933306162167709128951274576105642822557331179967279320354824025651666135482089397613310257035570732256678976591822972291350301121061134186049046108760513541908E-543137112 630863958342869681332649891005934796722256918927109542414554988652556709845840525162838479378188121392216726634326601962652986714051448 -> -0 -8.486099141626668903910658616123611785555392095888533659095200576946899251322707738468007741835274938755916091411933306162167709128951274576105642822557331179967279320354824025651666135482089397613310257035570732256678976591822972291350301121061134186049046108760513541908E-543136842 +precision: 94 +divmod710 divmod -934644450010.34844 +62408581e874287969 -> -0 -934644450010.34844 +precision: 33 +divmod711 divmod -59560e-871487822 -36e-307287320 -> 0 -5.9560E-871487818 +precision: 254 +divmod712 divmod -.4318338501844584529506352288128648075659096909032914131292643064619107729269750900890314080835696420458792798043512574601209039576539392751225195029780733861225350833E+227510962 NaN540625987654637350499791715507 -> NaN540625987654637350499791715507 NaN540625987654637350499791715507 +precision: 197 +divmod713 divmod -2903125370813437048024904126384171784876236886809936890745406486233854440320967269002766113643534791.682379144259378817566475389224367733 +440932466326557428827579132900555164993823977616865152668.82718887564 -> -6584058994338973605051963926506073188250584 -104714416124995557051899480774206134064986679712369156129.044845770499378817566475389224367733 +precision: 119 +divmod714 divmod -.5447750494093126052647090200044258754760795916020604893034868167143955888287 +.90213087057046027483059374203098907818 -> -0 -0.5447750494093126052647090200044258754760795916020604893034868167143955888287 +precision: 25 +divmod715 divmod -NaN1716555739043085793400496260536991 -870750612e-334684377 -> -NaN9043085793400496260536991 -NaN9043085793400496260536991 +precision: 242 +divmod716 divmod -680448653346905153658952368871947015332259504479952088742689876658183322974384864211684099077785667018021509406868164054675133868696984503391763293725553329720287006086129734541881434594957283210929363605 519991693595388608369708545796570860203878715965789628503095230607223550434667206860.80587527652658172 -> -1308576005593600716891810985606714469651905092494583481573615819893303245746189040460120964111012033796878096035804579201 -196256060106940653810755389417213331496880355480823350605475918044543287835942125158.47110862446119428 +precision: 26 +divmod717 divmod -333080064961623407641457E-43782448 -sNaN -> -NaN -NaN Invalid_operation +precision: 277 +divmod718 divmod .8382003761505493912176018393280891600981763961766606141902058794933047144319580514927571001409635346833490551273686662834155722918130695060236191677609569893289284376095640329311268816090e96183489 -271552679831145422247662998272458709881331644628190758751071960626855260468789520180216893227 -> NaN NaN Invalid_operation +precision: 288 +divmod719 divmod 268537505.355848880850715597420579276975402006096437362616743222456334698543868521535829524025010251622282700585211705759245363E-692979050 -713208995122178551714446820962127549144020607265063044285859789 -> -0 2.68537505355848880850715597420579276975402006096437362616743222456334698543868521535829524025010251622282700585211705759245363E-692979042 +precision: 203 +divmod720 divmod -33209196107934709.4753936921940104126360274336553 -453015384093788063209963 -> 0 -33209196107934709.4753936921940104126360274336553 +precision: 277 +divmod721 divmod 8094779069827764148700554889970731898444746594911291438564289411058926285660468230630739033338636805939919104153650543504686322405686656085773416842271111372894311126210931586445564994314741161875529420225186690580363734385587805474737106255894216746334418633387561138310735e-798776410 +44209539609120155806151852067258633493828675309623120669371318919701489862667277111805684377460287698551049322776516377815117340113718740e+900611697 -> 0 8.094779069827764148700554889970731898444746594911291438564289411058926285660468230630739033338636805939919104153650543504686322405686656085773416842271111372894311126210931586445564994314741161875529420225186690580363734385587805474737106255894216746334418633387561138310735E-798776137 +precision: 104 +divmod722 divmod +.61953721156468567639133906661091939133661 -3.828446184602272887 -> -0 0.61953721156468567639133906661091939133661 +precision: 285 +divmod723 divmod 528198453214203781.2703141513950651215612050762720609604908E-645054839 7175765936410.9623847471655684e+86822695 -> 0 5.281984532142037812703141513950651215612050762720609604908E-645054822 +precision: 175 +divmod724 divmod 145847836336748079959096526 820.4602758835 -> 177763434286558341617358 741.7276142070 +precision: 28 +divmod725 divmod Infinity +Infinity -> NaN NaN Invalid_operation +precision: 231 +divmod726 divmod +48488208839160640313665343754808517577201988228443711255.458401325784344816940857929750237129467788539953866816494623561965859562176406410959166553998319682616523797715937602253318489829612585964619457427506 2242702904940524036178729351752677099967510387752971491108031456891760511739424900118049823036721595419 -> 0 48488208839160640313665343754808517577201988228443711255.458401325784344816940857929750237129467788539953866816494623561965859562176406410959166553998319682616523797715937602253318489829612585964619457427506 +precision: 46 +divmod727 divmod -4015406154021335 +44040528e-496765553 -> NaN NaN Invalid_operation +precision: 160 +divmod728 divmod 302263676981047965742312.698511022298757664686360853167627603672281016435858 6424546872504800600015507731389459.558 -> 0 302263676981047965742312.698511022298757664686360853167627603672281016435858 +precision: 24 +divmod729 divmod -.79049013860824224064908 Inf -> -0 -0.79049013860824224064908 +precision: 289 +divmod730 divmod -63413434391860437964529619132939737502775856652956943995123483016186266656952278043482257113697900858264311559508392909340356487897821758389326087300 +57935924295345943753206878722024006342638025663079614514078902.961565679968E44493753 -> -0 -63413434391860437964529619132939737502775856652956943995123483016186266656952278043482257113697900858264311559508392909340356487897821758389326087300 +precision: 15 +divmod731 divmod 6.6 +1.E-151808301 -> NaN NaN Invalid_operation +precision: 232 +divmod732 divmod +634586390725051660324125941543366323489640886157010931365779891401503725192416501001733691030216198193540765677790112134938363980730977042956036528352667324215673575709152462100359610343705797064444683524188377071274107771196669519 1561651277029522752236100289802437450067514803291232781033788506316078435558707700373045909180630288068334692174740 -> 406356015622209177981072762404138107009638192553855181980370878143224452295357058654629034930016183796801303010764939 54502778765602977445865482312815592912361457492650633340519599967165288084311973348889063762106487628706343228659 +precision: 136 +divmod733 divmod 1352477721152656711280398 +689558392.994e+168411242 -> 0 1352477721152656711280398 +precision: 10 +divmod734 divmod -335 +6 -> -55 -5 +precision: 169 +divmod735 divmod -7383733751283337979512038710627799522142420730410973990663803082442751876402358706263889038561046684464242544140181143742276793437945.224455284182754965 -33065591024904626510707902551396141419352786090724704450652320453294.688596e+649341674 -> 0 -7383733751283337979512038710627799522142420730410973990663803082442751876402358706263889038561046684464242544140181143742276793437945.224455284182754965 +precision: 229 +divmod736 divmod -32142528093257339328213988143317241671082768282741688237317437147608185941081026112102750029197756410223076805695138084224019151948997757349345008255e-694581450 Inf -> -0 -3.2142528093257339328213988143317241671082768282741688237317437147608185941081026112102750029197756410223076805695138084224019151948997757349345008255E-694581302 +precision: 270 +divmod737 divmod +.709976726919256925975367287560923953852170193357540273447060809139738672e-337965552 -NaN291205309049877248139711045790617 -> -NaN291205309049877248139711045790617 -NaN291205309049877248139711045790617 +precision: 6 +divmod738 divmod +7.23E-523342367 +2. -> 0 7.23E-523342367 +precision: 76 +divmod739 divmod 6771167029343801790020911003518123454951369416E-695033968 -1805842444274144.2067189 -> -0 6.771167029343801790020911003518123454951369416E-695033923 +precision: 93 +divmod740 divmod +1723. -Inf -> -0 1723 +precision: 118 +divmod741 divmod 72419072340377219055896032529820729927622917749117677564942184211777328456832019910866057 -653305669073258180437542994.15234796488247627 -> -110850212647177464146953691022278810752636281618607744844375403 519503060455341529111158860.23789437188081319 +precision: 119 +divmod742 divmod 3772184815619033038088771182008975948895942321640227911273434882621495022417907898 -785328549979.57903534031563425565210455246 -> -4803320617488211117076580530110176974574725554687866688874983612467702 129667540547.13061190491816990511108535308 +precision: 106 +divmod743 divmod +86 8 -> 10 6 +precision: 250 +divmod744 divmod +sNaN -60366074858276897051089865632608019813178353875388761917338478069272779343250241436227090414280201E-851215283 -> NaN NaN Invalid_operation +precision: 285 +divmod745 divmod 21985264E+146237577 -338.1 -> NaN NaN Invalid_operation +precision: 39 +divmod746 divmod -.661941941174457208E444834263 +345229553 -> NaN NaN Invalid_operation +precision: 67 +divmod747 divmod +.1978E+730508054 -45 -> NaN NaN Invalid_operation +precision: 38 +divmod748 divmod 681795336E859720959 -6098e-511958775 -> NaN NaN Invalid_operation +precision: 31 +divmod749 divmod +.764361E136699659 +919. -> NaN NaN Invalid_operation +precision: 144 +divmod750 divmod 3.37 0E+523862383 -> Infinity NaN Division_by_zero Invalid_operation +precision: 198 +divmod751 divmod 425.7642081858E929116602 +981419e934065864 -> 0 4.257642081858E+929116604 +precision: 233 +divmod752 divmod -.96252702740170503130477646165325574711887504529116044047200964464040551404512106215715717470025310005725908990064082 -7567396548642942258914747931652913691971521241647190940816 -> 0 -0.96252702740170503130477646165325574711887504529116044047200964464040551404512106215715717470025310005725908990064082 +precision: 38 +divmod753 divmod 25401104762454878.e-752679734 -.39497727 -> -0 2.5401104762454878E-752679718 +precision: 84 +divmod754 divmod -.19390604613987509879422E+228850349 -72570542747 -> NaN NaN Invalid_operation +precision: 6 +divmod755 divmod +8646 -66 -> -131 0 +precision: 178 +divmod756 divmod Infinity +.126202339501980745939433901869154558806848189057619390596643989143E+647452821 -> Infinity NaN Invalid_operation +precision: 241 +divmod757 divmod -546116261631751188264094545806355190112363292828.8856369410283476637665699294057549180629153129648303045915114041470421811053357053886560372788808189110592451978143740210246928735613E-796949708 -6014946952269754153644811876701089044742727947926611181148649784333287183.13707662827422658E856520612 -> 0 -5.461162616317511882640945458063551901123632928288856369410283476637665699294057549180629153129648303045915114041470421811053357053886560372788808189110592451978143740210246928735613E-796949661 +precision: 53 +divmod758 divmod +.850721E-147674336 -795 -> -0 8.50721E-147674337 +precision: 243 +divmod759 divmod -332649956359292963742222867656361601673974274927687383553558623645.5758977671757974178244323190623032307479003489183454 -Infinity -> 0 -332649956359292963742222867656361601673974274927687383553558623645.5758977671757974178244323190623032307479003489183454 +precision: 166 +divmod760 divmod +3453480996034973707841651276529807929579238809606117194789899254689817317956985902884923 +sNaN -> NaN NaN Invalid_operation +precision: 246 +divmod761 divmod -3365940257088.379677135904439565542435046505328357556122517531679216278307020802364548954595001282896275512804305715973406069331251417075449674803560584350065444267088492103 2959713796526717096214659849994474281142642136635164123757666370302629067414432040483 -> -0 -3365940257088.379677135904439565542435046505328357556122517531679216278307020802364548954595001282896275512804305715973406069331251417075449674803560584350065444267088492103 +precision: 33 +divmod762 divmod -3636960 -858 -> 4238 -756 +precision: 75 +divmod763 divmod -18782515101E757043302 -429.9e-909016188 -> NaN NaN Invalid_operation +precision: 227 +divmod764 divmod -268658019917530050422526919200037233115357353452869846201439605583035562022677268549486452622980128634335488829573462394451759611389356874226100998169943304e+417277751 -1919947.65324748180371630192380426491969930305565386259052051589340627209174762 -> NaN NaN Invalid_operation +precision: 222 +divmod765 divmod -.33548544804798689462645096413637289389366478486101101212582344422859287958421044107998581216655935089313023301290751362169988020459761436109283493308301267719615862924338 -3488343480104273604093189042923527081744356079040012532997830009048049140105174033595e+986160344 -> 0 -0.33548544804798689462645096413637289389366478486101101212582344422859287958421044107998581216655935089313023301290751362169988020459761436109283493308301267719615862924338 +precision: 269 +divmod766 divmod -663396948126782606705903428410851661122241248367952295392693496243570821263974330133759164132550912794224600195048306197095776371659807593844581586645107962062385636187436217498651641767209727826251038520822756611197351178740312058319340482679201547423524726391322e+394894246 -885140305528673129579169670627195526580762315854151737316126367070627609585626778650885588744139274803155995348888790387822213623972 -> NaN NaN Invalid_operation +precision: 176 +divmod767 divmod +5719728715268.152944675289453174327904103974203 +94846876551427388022813 -> 0 5719728715268.152944675289453174327904103974203 +precision: 235 +divmod768 divmod 998820146746704090478283426271522954288468432503158237941726031962616710036990414076673050291433671983067732747837967656132944156426174538482844436298520062605669195379464185502282021 38733544.2032426573655296324685932570788050690712072345700000810278530639921317785966080056E955080762 -> 0 998820146746704090478283426271522954288468432503158237941726031962616710036990414076673050291433671983067732747837967656132944156426174538482844436298520062605669195379464185502282021 +precision: 20 +divmod769 divmod 580367476313716270E+643587442 .1678535319E-107501399 -> NaN NaN Invalid_operation +precision: 56 +divmod770 divmod -36367067441127425 -246.95508E-646633423 -> NaN NaN Invalid_operation +precision: 256 +divmod771 divmod -42911610817534419125127243397646005186884E+188008953 -92463050964079637165 -> NaN NaN Invalid_operation +precision: 184 +divmod772 divmod -3183433905103394565106886568273559659610479407972800580250225559332597225463875490580139763850704640825910731795358076511864166749962090387258931304124185667877119561582912775142 +56181563376855092134262271183000629783634890408614936677001571829798359234577358853729469 -> -56663320024569873155975007679695874117046292671116363455820733458263460913836072506819854 -29000672739607777614015977566238015012805874318488666534531629346030527852003038078697616 +precision: 138 +divmod773 divmod -394852592953041516202414930615773871021505990642350410095786986666933 +1620210100939851495306489530647551E-930352060 -> NaN NaN Invalid_operation +precision: 105 +divmod774 divmod -83940.40E-292019060 693e+510328170 -> -0 -8.394040E-292019056 +precision: 297 +divmod775 divmod +4677960158801510908501115716611192716786819551590100535938060056298591745369300283024600494277145851916970161 -356162894630342768804733050311.113873734371908107546430 -> -13134327661102120436536579881538724590162334613896007769340974417610977116064367 313521588849238037989309417108.532692637753345678940190 +precision: 277 +divmod776 divmod -672031777442363978300937709511574641888129648493218303130054067650798147482449775361745356644798236534435571410698338700475642741399676342375185682159417119494181342135846201074575347109646186820988313582303920337516604509557 -9029280287421029864018012065559770865971315661480405754935453641169664486129442216066513210193333989911389414577 -> 74428055841681232336163677638687150555723459908171079062942753378627578447546762012429078743236133259804566505315 -8680245181495888852398933881620369094744188722452462447819028693314472190302232271001009417522756092215995532802 +precision: 206 +divmod777 divmod 93852777807669442719069628681.533749082478858071269430360324896278457428472575021787085640748220163002698442551758719844111357398836453934003589766613837964762581436951 -.258131255381014993283404075617894390621409694232480795242593902508349253833573847725e+435345375 -> -0 93852777807669442719069628681.533749082478858071269430360324896278457428472575021787085640748220163002698442551758719844111357398836453934003589766613837964762581436951 +precision: 183 +divmod778 divmod Infinity -3966 -> -Infinity NaN Invalid_operation +precision: 13 +divmod779 divmod 37742857268E976210488 -18947E610563525 -> NaN NaN Invalid_operation +precision: 157 +divmod780 divmod +Inf -Infinity -> NaN NaN Invalid_operation +precision: 221 +divmod781 divmod sNaN +45397807783149190066182910285779588.E566044165 -> NaN NaN Invalid_operation +precision: 170 +divmod782 divmod 91966179180325874400454073646249343207280514867498965777813335532284082153473217979986700384345329801676038567915234127410769435302 8002094230947577876110674978712744623082079648547931893224552379 -> 11492763834828721537712446742204641472580899176898797047149443106145 3120636784641157664053170782193184193458996733821726915760166347 +precision: 124 +divmod783 divmod 9685840732434903845644239230369660401190641363704085585410388021951166687185779620296768886733742650385149708147309307433627 74869584139358474904588769116556798233380088224903395366784625e+615203266 -> 0 9685840732434903845644239230369660401190641363704085585410388021951166687185779620296768886733742650385149708147309307433627 +precision: 249 +divmod784 divmod -793353760625756101907671677068380024894195031824674406834539580815164337568145929371588185653675097982158296921736391669415763584921092599351822934992967242298893926867885 -3350066849627091062314400521811357344360723222805244327380107820793198278285362290162E-534666396 -> NaN NaN Invalid_operation +precision: 165 +divmod785 divmod +6741815940851974898643115077060785149951640722139480107943494777000358102131236596854596853410378e-253515246 .813773095365695102817541601768318117375428285895e+510365696 -> 0 6.741815940851974898643115077060785149951640722139480107943494777000358102131236596854596853410378E-253515150 +precision: 167 +divmod786 divmod +6038254795704263374924549228888529154168077694681991956980154284890433587962063229754331698391594092504022139443748587759167 +76686492068524403619216252534111394278793634741342442650367245E266226820 -> 0 6038254795704263374924549228888529154168077694681991956980154284890433587962063229754331698391594092504022139443748587759167 +precision: 277 +divmod787 divmod +NaN779879974307 +50950802327934308392473812591354375459301801693452091724462131052178730768564481308493962402070219039747237808608024456 -> NaN779879974307 NaN779879974307 +precision: 49 +divmod788 divmod -.966198 -233 -> 0 -0.966198 +precision: 199 +divmod789 divmod -613645560148425252320978869363418658481731.88214960917e-915783795 -601038478349192601922010955. -> 0 -6.1364556014842525232097886936341865848173188214960917E-915783754 +precision: 171 +divmod790 divmod -5334453130742179216989878538079551504015413839783917528121401836256526353044038753902479050717405394872607076 -251301648724.526741022276104355939747110239035212009451e-201725906 -> NaN NaN Invalid_operation +precision: 114 +divmod791 divmod -502050962855511.36574904392675794739 -33509370539388595 -> 0 -502050962855511.36574904392675794739 +precision: 27 +divmod792 divmod +64925237 -3096E-116134570 -> NaN NaN Invalid_operation +precision: 150 +divmod793 divmod -19555494414641997596635672594081093825175398701630444049208330494868871320174424518444760.341708832986514550231187945499940429636223501721144850 +.21625323222291105580098914502252479310608809371856860624469494956691315 -> -90428680365269384652356536020378140389022987228611404523225243727198728255499876575028774 -0.17336443045031101895862617848791378163449666619872340561877670039102190 +precision: 3 +divmod794 divmod 134e-284511461 -9. -> -0 1.34E-284511459 +precision: 61 +divmod795 divmod -.364559644380903141565890672992312967835 -Inf -> 0 -0.364559644380903141565890672992312967835 +precision: 244 +divmod796 divmod .78168675387428836464457475395710410600207174881653369283311691361367126181584701339541312999591985518615546465541834526039141901013 76391091874742811718862539558037112882533278839533893982710421165E54449178 -> 0 0.78168675387428836464457475395710410600207174881653369283311691361367126181584701339541312999591985518615546465541834526039141901013 +precision: 235 +divmod797 divmod +3083612020283261826766394661494070303236686164E+581177016 -.60888605336112044997212 -> NaN NaN Invalid_operation +precision: 2 +divmod798 divmod -74 -8.e-584167694 -> NaN NaN Invalid_operation +precision: 196 +divmod799 divmod -.98560826235498738080631906433918572498785432468482464031850196303767E913718014 -5372772682698253805741188026463431e-627767580 -> NaN NaN Invalid_operation +precision: 33 +divmod800 divmod 5380669 .515e-476955210 -> NaN NaN Invalid_operation +precision: 20 +divmod801 divmod +871632.56 -.3160 -> -2758330 0.2800 +precision: 61 +divmod802 divmod -14395960.96727899801841054365674429011520E-760088132 -Inf -> 0 -1.439596096727899801841054365674429011520E-760088125 +precision: 210 +divmod803 divmod -616914500027754010208762899541028761143206263 +756331973915233883040.e-518599844 -> NaN NaN Invalid_operation +precision: 155 +divmod804 divmod 85611245313442430044484038440271.879214292084e582252547 +66412612039321.5190037 -> NaN NaN Invalid_operation +precision: 251 +divmod805 divmod -455066573248566768381054514247547538723230151847973883880458783752018750 +763392740863483817404203449077262817 -> -596110689674406432612321625966584148 -501928302381711058777933692609993834 +precision: 241 +divmod806 divmod +Infinity -631584.256 -> -Infinity NaN Invalid_operation +precision: 120 +divmod807 divmod -177469.56916805750151869653664700650033191422283920009291907766096904E-907778733 -3103666011118412200208412264283085 -> 0 -1.7746956916805750151869653664700650033191422283920009291907766096904E-907778728 +precision: 278 +divmod808 divmod -157355780372983388411135748690430033867179495685563974787136030737475702019054150426343316995 +544834006132864313626951443923263666502619394 -> -288814168355361967194943740675494008270135225285 -316831447748645995985550264322800385543139705 +precision: 76 +divmod809 divmod Infinity +591576e-132969154 -> Infinity NaN Invalid_operation +precision: 114 +divmod810 divmod 872.1353E425726299 -.862E394488751 -> NaN NaN Invalid_operation +precision: 240 +divmod811 divmod -.24293493069258970194 -Inf -> 0 -0.24293493069258970194 +precision: 271 +divmod812 divmod +Inf -302.44303324802578049998746301218178990684590615 -> -Infinity NaN Invalid_operation +precision: 256 +divmod813 divmod +32672460024506198.23006E479520265 80123018535 -> NaN NaN Invalid_operation +precision: 39 +divmod814 divmod 20285334557825811488190902849822 -.3868037053068788 -> -52443485622072874283021476428974 0.1963905781736488 +precision: 41 +divmod815 divmod -14.8 -8.e+3229653 -> 0 -14.8 +precision: 289 +divmod816 divmod -37628509788017674234346694294250303885692485780077901584581859789474306967 +23760696017329081473071.57464088953757 -> -1583645098635770572362735336726217512475452865947734 -10948136532614686088620.10955695063362 +precision: 151 +divmod817 divmod 85158963361446825221409705771855958019870584734204344349908155592875805333474297349629015884173089014779148717428569143505429 -2821588312031545781167058901360127627854173539777809934141989 -> -30181214955534142154139480420860638553395948662493704442743735802 2472398751659204257310979737005693598038974916240771772715251 +precision: 288 +divmod818 divmod -3606063190552329940348642325139642621321503016581174861668662602942401551905424414656457872652359109040271563404113894581045819539446100614581491675434228.860732690937838056438285738642590401246405889335387813e-177944484 -73321116854989956298731079076775557289433141787558256717390061866678482529937131048974000497044879575203 -> 0 -3.606063190552329940348642325139642621321503016581174861668662602942401551905424414656457872652359109040271563404113894581045819539446100614581491675434228860732690937838056438285738642590401246405889335387813E-177944331 +precision: 198 +divmod819 divmod +.18296419665668057690973361491006124413547088772299280813785173421970315359963479188376585861410018010962543005294385420E-588056934 79608252469962260814.224266039315740884258480469096056933374 -> 0 1.8296419665668057690973361491006124413547088772299280813785173421970315359963479188376585861410018010962543005294385420E-588056935 +precision: 147 +divmod820 divmod -2455623803389748239507793622011949946783358228975516335601592094044761687360335235381 +143383189254616547370902058514278697525817 -> -17126302017380212896583916509035937279670560 -24889196579789684050637832068715480387861 +precision: 239 +divmod821 divmod 4413216785560995521042669066988606113918323770195256483593361304656430356032786e-148043681 +4718630721524884353510.25318067911210000e-63879732 -> 0 4.413216785560995521042669066988606113918323770195256483593361304656430356032786E-148043603 +precision: 299 +divmod822 divmod +7655270700986961223794879098330472041862255343444818607513216617491193836520317209 +Inf -> 0 7655270700986961223794879098330472041862255343444818607513216617491193836520317209 +precision: 153 +divmod823 divmod -718814165189340442694962531230940647801694358612351564476624655962736751132368396036001162472650834753786302438435385788215469544396363770687917166329e-601932769 31972550589429690066097650149868070392154176761647618318482514993887419503 -> -0 -7.18814165189340442694962531230940647801694358612351564476624655962736751132368396036001162472650834753786302438435385788215469544396363770687917166329E-601932620 +precision: 134 +divmod824 divmod -63513367994797105E+977118370 -90222279.8E415974394 -> NaN NaN Invalid_operation +precision: 48 +divmod825 divmod -846849 56 -> -15122 -17 +precision: 75 +divmod826 divmod -48262304956031471369374008046148000165256872E+995935611 5130563420585594828225 -> NaN NaN Invalid_operation +precision: 196 +divmod827 divmod 68258132367390683540544787152464748575617632356513197614404497852562011657683077065953834935628810406414298550609003756966331 -Inf -> -0 68258132367390683540544787152464748575617632356513197614404497852562011657683077065953834935628810406414298550609003756966331 +precision: 151 +divmod828 divmod 659006609206515013043784023232283671018468944234090236569489931576568433912718227340371940154549981140 .346444222923033126335279111917737311476932756612902 -> 1902201178724580697804165678384997753601918534729019931601685946794601175966413032268377734084943646317 0.276738649842605958107783585980805094213809633018066 +precision: 21 +divmod829 divmod 84 -7E59845500 -> -0 84 +precision: 210 +divmod830 divmod 409415528607268621230989493623158547454729994532715649738489603 +4062119977649343533905393065258 -> 100788635210176159862378229565925 1312650428145919230611200355953 +precision: 219 +divmod831 divmod +.43938227932179775 1.9301110 -> 0 0.43938227932179775 +precision: 281 +divmod832 divmod -584146277199566.66260190981305237222521977413754310433536902394014449304207860300206681374137717818379735E762540120 -469622197755562052971935973051022951233078702814317 -> NaN NaN Invalid_operation +precision: 18 +divmod833 divmod +2225934137e-601769817 -12527 -> -0 2.225934137E-601769808 +precision: 164 +divmod834 divmod -31268715573974976027605859205063774924263331642773514499258 62230795875802086454072532319E-137497623 -> NaN NaN Invalid_operation +precision: 11 +divmod835 divmod +73.419e-825245510 -1.3 -> -0 7.3419E-825245509 +precision: 193 +divmod836 divmod +3515989501695122361563540270591446290589190 -758943239364183757287E300238372 -> -0 3515989501695122361563540270591446290589190 +precision: 52 +divmod837 divmod -4179089710556 -895443 -> 4667063 -816647 +precision: 6 +divmod838 divmod .8233 97e-465115737 -> NaN NaN Invalid_operation +precision: 111 +divmod839 divmod 5616748461179813004169921389418560530281624470591350605041769131475E+182659465 123361898296137245044604026223631 -> NaN NaN Invalid_operation +precision: 15 +divmod840 divmod 1013722 6.20e+790695990 -> 0 1013722 +precision: 111 +divmod841 divmod -214750.2709047 -4360.34 -> 49 -1093.6109047 +precision: 183 +divmod842 divmod +17.4537E+105346078 -141 -> NaN NaN Invalid_operation +precision: 177 +divmod843 divmod 67333924366266452228416804246160333138751377459995073454496664636352 -867352837412554366746112.4785204448 -> -77631526020176293228206296966236192533513342 263448740365347353014804.6794254784 +precision: 213 +divmod844 divmod -91637571440373139652097221144133487865 -NaN608084453943072253054517119633950566151992629946435244279813645350472465558454756630921913219 -> -NaN608084453943072253054517119633950566151992629946435244279813645350472465558454756630921913219 -NaN608084453943072253054517119633950566151992629946435244279813645350472465558454756630921913219 +precision: 176 +divmod845 divmod -.693861 +824E-746693936 -> NaN NaN Invalid_operation +precision: 290 +divmod846 divmod +307662662052342523033153600397454647036 NaN -> NaN NaN +precision: 60 +divmod847 divmod -Infinity -5787110384803151.38095 -> Infinity NaN Invalid_operation +precision: 250 +divmod848 divmod -84897296456768157559065484543852689337764572403136093651415683063942489256678094919801683123132861474823317891772193435459924975705744999683526791437930 -771853178472391662345177525582483628028.1752545717102838396788748299686670010E+964717447 -> 0 -84897296456768157559065484543852689337764572403136093651415683063942489256678094919801683123132861474823317891772193435459924975705744999683526791437930 +precision: 163 +divmod849 divmod -77529779554715384699572078928708374331954523680376407254436838616.e302337635 -151413722537642619931920321313417e+394932833 -> 0 -7.7529779554715384699572078928708374331954523680376407254436838616E+302337699 +precision: 179 +divmod850 divmod -693844.80201858201075356707138741613358546713769557100439000990160706291245157267182834785497654720892256474756639867086701078227037142034359325543770584085387769472320076548e-267067315 -Inf -> 0 -6.9384480201858201075356707138741613358546713769557100439000990160706291245157267182834785497654720892256474756639867086701078227037142034359325543770584085387769472320076548E-267067310 +precision: 245 +divmod851 divmod +Inf 8215556651622264425370016280958485129396828300451544e+226105783 -> Infinity NaN Invalid_operation +precision: 49 +divmod852 divmod 9518776561e-443743042 2499 -> 0 9.518776561E-443743033 +precision: 196 +divmod853 divmod .9936361 -.833 -> -1 0.1606361 +precision: 53 +divmod854 divmod +NaN3423817046070778834769592263170970774102999436307253353337610769588028088 26376104831758440472405306 -> NaN69592263170970774102999436307253353337610769588028088 NaN69592263170970774102999436307253353337610769588028088 +precision: 121 +divmod855 divmod -Inf 36397592061796269748430855243 -> -Infinity NaN Invalid_operation +precision: 168 +divmod856 divmod -19124665080851301137113523583478971116264025896367658157811761247121605539627624930109669689496712721514675828196710075219990408930809363435957523510E+745848589 +.79902409790675912561840022493352439429885620582276126177583974382257074491 -> NaN NaN Invalid_operation +precision: 217 +divmod857 divmod 7310310962480623575935578390577812755400733048 9591596309567691664932 -> 762157906415278521195068 8985274073752133777672 +precision: 253 +divmod858 divmod -664996987908921455061528862910155173952041248982693418677209222660883593850197793586618551954794120418204689442169459556277790340664495206.58864853993357558985659460929848053601449451354345205662213729911113220113366421999996216035495965985430667391e-15073479 -3504110519599408175240304054188606855983869240346633168570333763150993812997562893720569265201043720540783020042444686927192 -> 0 -6.6499698790892145506152886291015517395204124898269341867720922266088359385019779358661855195479412041820468944216945955627779034066449520658864853993357558985659460929848053601449451354345205662213729911113220113366421999996216035495965985430667391E-15073342 +precision: 220 +divmod859 divmod -82100127667038105980685913451124139649545849161333324371168204826787491134431904609382174607094678.38480665772435860939768924465438894224040659503864 .46707899182523898918590513105882675513735968965162868786122858171627900066E-531931909 -> NaN NaN Invalid_operation +precision: 206 +divmod860 divmod +3500853659002257270 +204.107029 -> 17152048492177392 47.911632 +precision: 83 +divmod861 divmod sNaN -21485067726E-78387361 -> NaN NaN Invalid_operation +precision: 61 +divmod862 divmod -2503053229202957737.99561355869013205417959492713151 +NaN888362077462749323 -> NaN888362077462749323 NaN888362077462749323 +precision: 295 +divmod863 divmod -.138104793333978873418633044569534E+959989510 Infinity -> -0 -1.38104793333978873418633044569534E+959989509 +precision: 65 +divmod864 divmod +Inf -35982637998801 -> -Infinity NaN Invalid_operation +precision: 97 +divmod865 divmod +.2985 30e+54491282 -> 0 0.2985 +precision: 290 +divmod866 divmod sNaN48394069834396137341908105251000425438773708631520361854165084707420970705885607903300 -88843161.426e-819276102 -> NaN48394069834396137341908105251000425438773708631520361854165084707420970705885607903300 NaN48394069834396137341908105251000425438773708631520361854165084707420970705885607903300 Invalid_operation +precision: 71 +divmod867 divmod +53853647575553585451167089209539999012838233770977706684743339e467932298 -.4940424451897103954871076420839 -> NaN NaN Invalid_operation +precision: 78 +divmod868 divmod -625898.45840403636658363E-852846482 -.49694971324e-808615270 -> 0 -6.2589845840403636658363E-852846477 +precision: 85 +divmod869 divmod -1646790206943622152419753582.603206612010362807608066143222735596926160269e+584282180 -.75733768093789943054298953846618832 -> NaN NaN Invalid_operation +precision: 290 +divmod870 divmod +73343893769760351870709002791324842228221648425666721003322407396214407 -82862259298873174876600743370486342 -> -885130267872840137416205268192097509 27159091193528990551854060979492329 +precision: 42 +divmod871 divmod -62953606385416470 +41844183e-541981856 -> NaN NaN Invalid_operation +precision: 8 +divmod872 divmod -911E+347482425 4 -> NaN NaN Invalid_operation +precision: 4 +divmod873 divmod -7196 -6.e-322125227 -> NaN NaN Invalid_operation +precision: 214 +divmod874 divmod 6846338485096671924689032843357870140390223767039936854471372552683673613679720427701772543E+398328023 -229788002632234590347188457012968866259951431e886540943 -> -0 6.846338485096671924689032843357870140390223767039936854471372552683673613679720427701772543E+398328113 +precision: 153 +divmod875 divmod 209640345144653571193571054259558692079415275002992699277E-910738014 +1668657654991612106140788285e-746830019 -> 0 2.09640345144653571193571054259558692079415275002992699277E-910737958 +precision: 245 +divmod876 divmod -144340509059903480906628865370880834591476631 -99073.72128677691481093e-884128719 -> NaN NaN Invalid_operation +precision: 234 +divmod877 divmod +58595297412071798653603935672754321494310622738289 -4540340688994900061488571 -> -12905484725870450166160661 1063065600021479021432858 +precision: 188 +divmod878 divmod -731207904554029568961425206972689191544636079274898525703602080054969978272038102317751773570179327372746774644732 .477000212654487159690125664768899749793674192555803999529 -> -1532929934108177315407551113043955158679940751224198522532930717236631839683810241003627901246220795486767483616094 -0.423894019507280576294766704520260960036564459975207180274 +precision: 181 +divmod879 divmod -329312647075682783463552478651153055083803653787730572187063766283574294359342151394062260773725489178907879493140600389663600621.1088718618E-653963951 -183671746329753668478734442.980288901842048188510383014446970166242042 -> 0 -3.293126470756827834635524786511530550838036537877305721870637662835742943593421513940622607737254891789078794931406003896636006211088718618E-653963823 +precision: 227 +divmod880 divmod sNaN3721498361150223077274096026882 +159207124520295440965235104.12281240223802775736897962491325125088E-304620846 -> NaN3721498361150223077274096026882 NaN3721498361150223077274096026882 Invalid_operation +precision: 274 +divmod881 divmod +731489393471636727714573514505041.269072053063926344918E+795589771 -816732786302814399040854052E-918593172 -> NaN NaN Invalid_operation +precision: 73 +divmod882 divmod 5354829509071467739885116620128091203170810085366978837367.6 20133104640064714206271894539E516929410 -> 0 5354829509071467739885116620128091203170810085366978837367.6 +precision: 122 +divmod883 divmod +1623614306540415668418137 -419188049521 -> -3873236148777 355268832320 +precision: 120 +divmod884 divmod -6827556358798286290097808120398213513370126745150632399e792737071 .605748256166077110986040007 -> NaN NaN Invalid_operation +precision: 158 +divmod885 divmod -4480491127405E+869774174 -.494336e-876938374 -> NaN NaN Invalid_operation +precision: 249 +divmod886 divmod -156790742484810818 +0.25332153 -> -618939663299881451 -0.01405997 +precision: 236 +divmod887 divmod -241579954585892373429970634357244.5327343839434098564656864111999949959 +64136233593161479187238140274597051 -> -0 -241579954585892373429970634357244.5327343839434098564656864111999949959 +precision: 111 +divmod888 divmod +Infinity -.23998281156765343088 -> -Infinity NaN Invalid_operation +precision: 248 +divmod889 divmod 86915785688952398712774897473107953.77994340309884160178079 -96434509443997564320123248225E-658406364 -> NaN NaN Invalid_operation +precision: 198 +divmod890 divmod +147095524977041605260913542096800447775122486435092 +1412508789350170613484343e799511643 -> 0 147095524977041605260913542096800447775122486435092 +precision: 253 +divmod891 divmod -812445317228823071296178637570220177941291267228573141651143260082595241223692729340107.233662911489724279183501696371 -5856253933754133418884221176584379394154163485271959693817 -> 138731230991550860020144513444 -1244251683893229484693983709543365545377320555370049164359.233662911489724279183501696371 +precision: 33 +divmod892 divmod +91450268737635673266672458612782 5838803534303987 -> 15662501435499486 4530815752362100 +precision: 25 +divmod893 divmod 67052402423820200113053E-166607678 -66376590068e608748558 -> -0 6.7052402423820200113053E-166607656 +precision: 20 +divmod894 divmod -.216041828 -sNaN748806008631346347897452215589992026746664733612621367385824207198931390587617692491 -> -NaN98931390587617692491 -NaN98931390587617692491 Invalid_operation +precision: 80 +divmod895 divmod -.5245778702260037454104224642688 -.4227495746726426 -> 1 -0.1018282955533611454104224642688 +precision: 262 +divmod896 divmod +46978034173420691009052784663490977711875745292641026 -sNaN -> -NaN -NaN Invalid_operation +precision: 148 +divmod897 divmod 641892245885019093168003.909884782304984306 -685209324854271843441E+28259917 -> -0 641892245885019093168003.909884782304984306 +precision: 298 +divmod898 divmod +1605087959611896933797672616559780191393504494807961250149359366429565781401818650953985079948071929243924100482144.94674914694 +7978155558720010459974924031605744828245979874.9596320524959494e-959686940 -> NaN NaN Invalid_operation +precision: 257 +divmod899 divmod -5579443161973294310880334903508747533064880339727616182598254043320571034140840 +69592011904041812829186179040111746466E-845050285 -> NaN NaN Invalid_operation +precision: 135 +divmod900 divmod -30813964645928337843035766720104421846570778005.1660606132324 +29134297809796031.3052195767772 -> -1057652559436923867124954403550 -1139783272316354.7876033741724 +precision: 2 +divmod901 divmod -57e+668436457 -2e-909786598 -> NaN NaN Invalid_operation +precision: 11 +divmod902 divmod -86171510431 -97697 -> 882028 -20915 +precision: 32 +divmod903 divmod .911901e+726286597 -374. -> NaN NaN Invalid_operation +precision: 119 +divmod904 divmod -6556239128132023994056707090450464066682442160447914848035244452225346230303745323951E-546997187 -sNaN70413664899473772535 -> -NaN70413664899473772535 -NaN70413664899473772535 Invalid_operation +precision: 113 +divmod905 divmod +590153406688198499463533516488301547977486040487757926759770895302213 -.61458380968087546581414266293257073e687732205 -> -0 590153406688198499463533516488301547977486040487757926759770895302213 +precision: 287 +divmod906 divmod -149895334352788152587610698334955358299967597505557544503474452660896945505015799271154535791635862013055357282715600823039070250328774748650694614814605798087306020325687471857433005154227201999082439323093509524070525190105931877905203392118948088166858114074163149e-479025951 -.3063957370200973876658142531721516061971689359480628295023390659596449428556789553858524201838360322411769343282805654150751002702229 -> 0 -1.49895334352788152587610698334955358299967597505557544503474452660896945505015799271154535791635862013055357282715600823039070250328774748650694614814605798087306020325687471857433005154227201999082439323093509524070525190105931877905203392118948088166858114074163149E-479025685 +precision: 153 +divmod907 divmod -49949484299346098310602939409731797590153041848376950467223740249881757454320374426132972808745684934318015232392380507640106987 +Infinity -> -0 -49949484299346098310602939409731797590153041848376950467223740249881757454320374426132972808745684934318015232392380507640106987 +precision: 283 +divmod908 divmod +93711123948785371299080726856063624872227416137071239 8077499226593483169164737 -> 11601502063938430526208423042 4540521689172639052401285 +precision: 183 +divmod909 divmod -46298701357041040172491356213386500121 -8959997556.251372591 -> 5167267185774903221593450225 -6192657289.312217025 +precision: 38 +divmod910 divmod -28993.847087716348912188E+463060901 -757390534756e-574802843 -> NaN NaN Invalid_operation +precision: 79 +divmod911 divmod -612147120456254413440E-747485050 -35348.76446E-128398080 -> 0 -6.12147120456254413440E-747485030 +precision: 237 +divmod912 divmod 47501927966648431987403455519505605002706687137045235062171273790073e-127202157 -4100299594906559353394657089939571e-330090743 -> NaN NaN Invalid_operation +precision: 218 +divmod913 divmod 87743337613976961271893258012696352647869826490195009008369849288380231235204859667526891157307173399274639843429232678607557359483395419 -.44124658690084089253951761996746011768322745145884499260027100322192E+256829482 -> -0 87743337613976961271893258012696352647869826490195009008369849288380231235204859667526891157307173399274639843429232678607557359483395419 +precision: 73 +divmod914 divmod +1900926956032156709378408281658212292853800351661247727371 -.9549064751242956742425232e+568733017 -> -0 1900926956032156709378408281658212292853800351661247727371 +precision: 40 +divmod915 divmod -.86580 -19. -> 0 -0.86580 +precision: 51 +divmod916 divmod +29691715531447.4094303050611475055908425900234594E-230361115 829477020404783680795118E704470477 -> 0 2.96917155314474094303050611475055908425900234594E-230361102 +precision: 254 +divmod917 divmod +345914988856568228867233823451483305869503353495413654023455596591267157291635670950708787929918257163961405851093571237 -765698732323462061199575229415724455568445588681962955123336 -> -451763825972275177468669879524084606839669833270718884770015 419655492543406970298652238792286463551531800096684774001197 +precision: 73 +divmod918 divmod -99055870844818044663974810371929000185610562 -6912002503368820025629E73845022 -> 0 -99055870844818044663974810371929000185610562 +precision: 88 +divmod919 divmod -794851786200645474257205582798105653540580694561154962628 +0.483882685326948224468320063 -> -1642653912411812574318967667247185376082302566441510856706 -0.213858812304759628262107522 +precision: 230 +divmod920 divmod -5453024657112767354073903784228390139.71461 Inf -> -0 -5453024657112767354073903784228390139.71461 +precision: 109 +divmod921 divmod -8234202012896019771485150592222578364224.184558850233250173223292306792780109 .56627738511396520477169486483696897103 -> -14540933876847049550881502553137403552219 -0.36725952453403359473463978418947689343 +precision: 163 +divmod922 divmod 190125738245523082327455762996992458197805793139298.5065700037739009187777898618129515309717571548415945297866496092 -Infinity -> -0 190125738245523082327455762996992458197805793139298.5065700037739009187777898618129515309717571548415945297866496092 +precision: 255 +divmod923 divmod -4043614.8706 .56622 -> -7141420 -0.03820 +precision: 42 +divmod924 divmod -3695.2689639673218923902030348203 -9074710658766668 -> 0 -3695.2689639673218923902030348203 +precision: 132 +divmod925 divmod -97416885862163271606179221143.90722398128769672079967078864741017241972173766402007428503521 +69609231430322869900563919989489655421245.213e-480607860 -> NaN NaN Invalid_operation +precision: 263 +divmod926 divmod -5701213402 +90224 -> -63189 -49066 +precision: 45 +divmod927 divmod -1982543821068766727303921951470370E-586549506 -82286431155895709 -> 0 -1.982543821068766727303921951470370E-586549473 +precision: 169 +divmod928 divmod .4672891738432864325049265571210803804680250214804659076878455324215069877775111934625425565763648975245250862854922660141690386e179137126 -.942018187032558887257589185704232804149684486748949994514149571e587865649 -> -0 4.672891738432864325049265571210803804680250214804659076878455324215069877775111934625425565763648975245250862854922660141690386E+179137125 +precision: 99 +divmod929 divmod 781548417841682876491132562937910492356193313560734080529774556872526492404215068E-336988529 2374791287528455367743610345386833750163e302653449 -> 0 7.81548417841682876491132562937910492356193313560734080529774556872526492404215068E-336988449 +precision: 91 +divmod930 divmod +182156485721038278756801581004648700890156954212828e-775144218 -7622362701704683575961347e+721878446 -> -0 1.82156485721038278756801581004648700890156954212828E-775144168 +precision: 38 +divmod931 divmod 49001432 5206. -> 9412 2560 +precision: 96 +divmod932 divmod 9772638306405482671807525080372883856919 +48681.42890391814013 -> 200746743192226405690800470653196010 42451.13640046311870 +precision: 298 +divmod933 divmod 6279901731171405649153663444747928724262908948565287871042994543774428435891910946543668494016207869273446693873768397381516313022824101669165774713632.2160489662556163422286760013543881506105 -Infinity -> -0 6279901731171405649153663444747928724262908948565287871042994543774428435891910946543668494016207869273446693873768397381516313022824101669165774713632.2160489662556163422286760013543881506105 +precision: 204 +divmod934 divmod -9999301241827709327567573891564977176655815838681766137363968640619410690070439231591490841569444995193991008986937194406312383815195354936466733879628630241395047361243793 -96361989351220054673594857554355271582777612968532539135784708658497075455628423543314 -> 103768107208561967731913326618649974058588703467455765588689000817566226819261233735136 -83537717504867549595303079930847283020359315049481910813144197768993186881731261563089 +precision: 252 +divmod935 divmod -821939363223520510088017581184617505300540462013665405949259909105109410337768718319544012931834948124839299 143002260899861330491248149742550808699091065211836725e+74348519 -> -0 -821939363223520510088017581184617505300540462013665405949259909105109410337768718319544012931834948124839299 +precision: 112 +divmod936 divmod +.97 -7 -> -0 0.97 +precision: 214 +divmod937 divmod -30441635329627899905266755773546151171986467544965292293133234669507089392669333467148243708542285429266494011180954086658238790257212867904562146446175803428724E-132112846 +61698609687278270570344714701093147493765868992238790005229085365135809727595043e85988107 -> -0 -3.0441635329627899905266755773546151171986467544965292293133234669507089392669333467148243708542285429266494011180954086658238790257212867904562146446175803428724E-132112686 +precision: 60 +divmod938 divmod +228386433925488155385584823346243476475485707039357e-546423224 +9823868637119189327409370e-614929623 -> NaN NaN Invalid_operation +precision: 31 +divmod939 divmod 1447755274677 +NaN3837279293541255606010930 -> NaN3837279293541255606010930 NaN3837279293541255606010930 +precision: 20 +divmod940 divmod -45800404e+380914700 -141 -> NaN NaN Invalid_operation +precision: 54 +divmod941 divmod +5444112048432038898792510459146 -49515994400757 -> -109946535747019338 14132309620280 +precision: 150 +divmod942 divmod -77037348362318319743998769449175772206574443722193628725754541306475064879110195468 .2092556389875634348032927829262626950751 -> -368149449807165456500111205383044084009538130263493342507602399063394905803082993506 -0.0060499037818768975815760086534085176994 +precision: 131 +divmod943 divmod -3438499344287708445946932756129303156644763392252296697712582125287791049906503945971251461499274860 65135489917911823516666473745114511546451508504503e-424827172 -> NaN NaN Invalid_operation +precision: 220 +divmod944 divmod +73828589924459461023234675683299987330005899582404475068576564026327748228627950742407704573683192813414181692114774966523555031315590688239102862524069870681881979645048918258035999052595286252093224469904846926711 +82825095772361515748304133446419728585009118452700545141672347361465601508631000900411552535785611231659202E-749517297 -> NaN NaN Invalid_operation +precision: 189 +divmod945 divmod 424804024548996620908283922070640370325048760806360924344329953444046090824697532840200131527295651604675657184545 .767751684141629255813905328020787597190282871582629229470 -> 553309140603111798696665170401691906130903087951309503427474733995525183396107087622728888439324658197007575810443 0.136684785229128679672574867960938074110823955984130644790 +precision: 218 +divmod946 divmod -Inf 12825049552921484653205584576320290875592013739216028178.3112156055224239145644974320375906416063112 -> -Infinity NaN Invalid_operation +precision: 36 +divmod947 divmod 30493585323374252887940490 Infinity -> 0 30493585323374252887940490 +precision: 222 +divmod948 divmod -9799215371983085056773437957004981728983709309347072931870319423576 -7396554.27778197600207483818690488 -> 1324835187300430558795475980577884179796001572337988814802879 -3113751.51449692490526932367685048 +precision: 121 +divmod949 divmod +2862763319600286 -44303900 -> -64616508 10819086 +precision: 163 +divmod950 divmod -8714729862031719496419703026029430724320.291594167959640503125088295450457524792390e-278814435 42811013276109440952673280450233301486061 -> -0 -8.714729862031719496419703026029430724320291594167959640503125088295450457524792390E-278814396 +precision: 245 +divmod951 divmod +865112584839166309777747452394442442805116510 +Inf -> 0 865112584839166309777747452394442442805116510 +precision: 75 +divmod952 divmod -589566234232871314132898983745562002970090988302068187993263639574076045 +496897267076346974143169096209443914 -> -1186495224056617711163331409384523775 -16836233392003529075375249112020695 +precision: 145 +divmod953 divmod +.63668512E+666905625 -.2128E-712480353 -> NaN NaN Invalid_operation +precision: 11 +divmod954 divmod -14.1814924e-594425224 -53225 -> 0 -1.41814924E-594425223 +precision: 221 +divmod955 divmod 75026479277192669932558650199463085523285879603696239205124935678297877011488308291877850500854948559297018828596689099780601100644086180E-874705284 483046610291998595507884900238879911527205392.82806762332810782184545e515254434 -> 0 7.5026479277192669932558650199463085523285879603696239205124935678297877011488308291877850500854948559297018828596689099780601100644086180E-874705148 +precision: 46 +divmod956 divmod -26477746988069526107573259e-747395134 79084264.65948 -> -0 -2.6477746988069526107573259E-747395109 +precision: 105 +divmod957 divmod +Infinity 545548438096 -> Infinity NaN Invalid_operation +precision: 204 +divmod958 divmod +Inf -569118287268320855877786773507622882720432897190116517359227685277771074 -> -Infinity NaN Invalid_operation +precision: 87 +divmod959 divmod 465482074716256195222013624300282775521371186807580 8912789716134293772244681e+587474053 -> 0 465482074716256195222013624300282775521371186807580 +precision: 211 +divmod960 divmod -75001758336119035177849952860650480569151e-411476382 -83280624192220929099.e-692436210 -> NaN NaN Invalid_operation +precision: 184 +divmod961 divmod 92187667332545920235119187.24314529428053349004218694835947749117284713091401454257488854205 -296107103318790256163625449745477954145616149 -> -0 92187667332545920235119187.24314529428053349004218694835947749117284713091401454257488854205 +precision: 294 +divmod962 divmod -Infinity -74928996104994418144305125418367258257018195762.8944676611587864 -> Infinity NaN Invalid_operation +precision: 71 +divmod963 divmod -553803408436346757841544266336473 -.7186659572750232E+788968998 -> 0 -553803408436346757841544266336473 +precision: 178 +divmod964 divmod .23417395633185561966698886270714 .4312102223067150 -> 0 0.23417395633185561966698886270714 +precision: 66 +divmod965 divmod +1516287537121155996912960480695309 -89.932244586751540 -> -16860332399003965662032064521717 79.069555186805820 +precision: 259 +divmod966 divmod +NaN 602817063878.751495144599184528989700017408859551323965130180477407229885918337936E+919904537 -> NaN NaN +precision: 24 +divmod967 divmod -8363261193640.65e826887668 -5764618 -> NaN NaN Invalid_operation +precision: 108 +divmod968 divmod 3214407624469518142878896486 +Infinity -> 0 3214407624469518142878896486 +precision: 121 +divmod969 divmod 847268837935438645810579622932262100888356891 -53396632.86422721986690 -> -15867458161450134019429873629145172815 28070312.71219820167650 +precision: 130 +divmod970 divmod -.4868149478611481352554040786837041083077890244526292847327265157850 -387139917063384084450556.629985853 -> 0 -0.4868149478611481352554040786837041083077890244526292847327265157850 +precision: 152 +divmod971 divmod -733403311460207e-387854926 +4272048 -> -0 -7.33403311460207E-387854912 +precision: 282 +divmod972 divmod +Infinity 607600695.692958 -> Infinity NaN Invalid_operation +precision: 255 +divmod973 divmod -30021646139587110569654675069411558697589232876500190638615242464108634501897322999213113694282437552908866199943481316028382367210238735746261394977781434962598993056753017087130987537628605257974346e480826965 -3596417558752872519079695010859377519192314911234750227795231406486717646566994618196000030558224080E77194166 -> NaN NaN Invalid_operation +precision: 161 +divmod974 divmod -967586638321934345562249760462355747330796145918429425277224746892485929147515199077.74081675574 32824987657025788235109280375275788619806586644 -> -29477136394743905637854716446989819022 -6162693246139891603876629648799496502392856909.74081675574 +precision: 132 +divmod975 divmod +744095291701514589871638455166614512288600810760589350149756113021136198162615E-32598807 770126283204683155232358631108683540232E715835843 -> 0 7.44095291701514589871638455166614512288600810760589350149756113021136198162615E-32598730 +precision: 174 +divmod976 divmod -367495429831045070954020688423485855971623610606684377535404265 30678.1647991494855530168697049 -> -11979055208714226297859924628147614297453592888491143417818 -29519.1685295820209238329380918 +precision: 94 +divmod977 divmod +947108428.6146619616e-292792895 +1.62570580e-155400554 -> 0 9.471084286146619616E-292792887 +precision: 40 +divmod978 divmod 369788717451 477827e+622579013 -> 0 369788717451 +precision: 154 +divmod979 divmod +Inf -3279654533764681853355553530430767025384741.2097280272 -> -Infinity NaN Invalid_operation +precision: 152 +divmod980 divmod -Infinity .241540e-172576784 -> -Infinity NaN Invalid_operation +precision: 71 +divmod981 divmod -86499254394345603939 +2828762512 -> -30578478761 -1240596307 +precision: 3 +divmod982 divmod -73 +7E+811771295 -> -0 -73 +precision: 191 +divmod983 divmod 855689859582960627303630450 87419921031.82 -> 9788270790950472 73582874430.96 +precision: 241 +divmod984 divmod 27493248394888623231146089246405054748841928158747740368426161844899679969865288254128063029366308116359228E571091314 +.77915967308492009644379372357322997510830140343909452 -> NaN NaN Invalid_operation +precision: 222 +divmod985 divmod -347190822755705982061917984244654029159299339609.76026983434605351445046174805681158684085244117230911397498447611760450314 -7305244112880977827760632832620562992257972149113333771102747E+837861036 -> 0 -347190822755705982061917984244654029159299339609.76026983434605351445046174805681158684085244117230911397498447611760450314 +precision: 166 +divmod986 divmod -6211881551375378829621038E+446472945 -398046977993 -> NaN NaN Invalid_operation +precision: 150 +divmod987 divmod NaN -60.9220233168007000363296180296660159211e-530030862 -> NaN NaN +precision: 164 +divmod988 divmod -.299681455008444198449777222108021092022325552603082042684853319571089861280853062174945130592598246956703005909391086135607415659560100978345920657659e-275612771 -143712164364188922672275952317498836374104867006218414957299.81154877505361 -> 0 -2.99681455008444198449777222108021092022325552603082042684853319571089861280853062174945130592598246956703005909391086135607415659560100978345920657659E-275612772 +precision: 237 +divmod989 divmod +75872400323363057556041616567454113910770761029367160464361775948692405125707571161155357049473680906311797530739306886012089725765102039858888351383181935747125792617374854824562839 -8227492686848226360918207587105123682933903085963365442995637022455658082750150509375393984e-872536823 -> NaN NaN Invalid_operation +precision: 163 +divmod990 divmod +57397.952466577101501629926317 -.18674508741475 -> -307359 0.169143866956251629926317 +precision: 225 +divmod991 divmod -.71502712387191884923704980192304733566801791013901922425099011950214546329824581434461777820933572871e+79661258 81956940898555052842031604594894061364739716350810 -> NaN NaN Invalid_operation +precision: 6 +divmod992 divmod -96.602e-810003995 Infinity -> -0 -9.6602E-810003994 +precision: 98 +divmod993 divmod 348406073797567000509031060610196663219488388598058173117907628123455567786689648126 -1441404836142096521878099.38031526185862244 -> -241712851977152964782922198614251952651585514109561331621437 751859481162464736015342.65626349560675372 +precision: 203 +divmod994 divmod -Infinity +47869891600794358138726074076943856579449607468453502866035235497010 -> -Infinity NaN Invalid_operation +precision: 144 +divmod995 divmod 6206299448622738812046239863847920175001372849397381662236546491305455435987826101260659050396806119871206896998155523057468669 -349427275515578763746010489856513389329379456291009722536506584 -> -17761348021459873035610368801375269026499575819872672762974216182 347358923375911184768799206851519577098664381693295715175126381 +precision: 292 +divmod996 divmod -.5664126996338399292007237667910241957890725322542829037284349821344091353621732420923932869950571876068 -497575294878909221828663018854024250562639510430114e797401815 -> 0 -0.5664126996338399292007237667910241957890725322542829037284349821344091353621732420923932869950571876068 +precision: 176 +divmod997 divmod +806614933117739.8964725205766493528327537588783124768302278197677251423346010684093332508168391556116593560918385629404009043173105562482534344465076075066792975666E+974426778 -144551761358325394794540277788936464846.9199666401804653740897169451441454017099898 -> NaN NaN Invalid_operation +precision: 236 +divmod998 divmod -.6182 +95. -> -0 -0.6182 +precision: 194 +divmod999 divmod +94069942403404916171145225972851900103507611374066740020893301062941.867844770653854825769680556761173045515350217 +.24855606912973496315299700953081116891838043954058079768 -> 378465682744220921701372210558238088360740897685588580141922521360510 0.21795046618719005106736628927103289438008050566534838320 +precision: 10000 +divmod1000: divmod 91113953422676098552546440888874799973353526885071564293844550489234167531961689206895161719617055330847161739377343833870050355026001119008729355649051192836400034712779126295391881462111854045038851504609082024285208815843758613980681584657173919259404735335272893629794927883798934149777958906302462772156369379986004369846541276268378890412351965936891874779513775692513340387454619340379180077334925659778817216926701809911829715657037977076688242754670376911139534226760985525464408888747999733535268850715642938445504892341675319616892068951617196170553308471617393773438338700503550260011190087293556490511928364000347127791262953918814621118540450388515046090820242852088158437586139806815846571739192594047353352728936297949278837989341497779589063024627721563693799860043698465412762683788904123519659368918747795137756925133403874546193403791800773349256597788172169267018099118297156570379770766882427546703769111395342267609855254644088887479997335352688507156429384455048923416753196168920689516171961705533084716173937734383387005035502600111900872935564905119283640003471277912629539188146211185404503885150460908202428520881584375861398068158465717391925940473533527289362979492788379893414977795890630246277215636937998600436984654127626837889041235196593689187477951377569251334038745461934037918007733492565977881721692670180991182971565703797707668824275467037691113953422676098552546440888874799973353526885071564293844550489234167531961689206895161719617055330847161739377343833870050355026001119008729355649051192836400034712779126295391881462111854045038851504609082024285208815843758613980681584657173919259404735335272893629794927883798934149777958906302462772156369379986004369846541276268378890412351965936891874779513775692513340387454619340379180077334925659778817216926701809911829715657037977076688242754670376911139534226760985525464408888747999733535268850715642938445504892341675319616892068951617196170553308471617393773438338700503550260011190087293556490511928364000347127791262953918814621118540450388515046090820242852088158437586139806815846571739192594047353352728936297949278837989341497779589063024627721563693799860043698465412762683788904123519659368918747795137756925133403874546193403791800773349256597788172169267018099118297156570379770766882427546703769111395342267609855254644088887479997335352688507156429384455048923416753196168920689516171961705533084716173937734383387005035502600111900872935564905119283640003471277912629539188146211185404503885150460908202428520881584375861398068158465717391925940473533527289362979492788379893414977795890630246277215636937998600436984654127626837889041235196593689187477951377569251334038745461934037918007733492565977881721692670180991182971565703797707668824275467037691113953422676098552546440888874799973353526885071564293844550489234167531961689206895161719617055330847161739377343833870050355026001119008729355649051192836400034712779126295391881462111854045038851504609082024285208815843758613980681584657173919259404735335272893629794927883798934149777958906302462772156369379986004369846541276268378890412351965936891874779 870050355026001119008729355649051192836400034712779126295391881462111854045038851504609082024285208815843758613980681584657173919259404735335272893629794927883798934149777958906302462772156369379986004369846541276268378890412351965936891874779513775692513340387454619340379180077334925659778817216926701809911829715657037977076688242754670376911139534226760985525464408888747999733535268850715642938445504892341675319616892068951617196170553308471617393773438338700503550260011190087293556490511928364000347127791262953918814621118540450388515046090820242852088158437586139806815846571739192594047353352728936297949278837989341497779589063024627721563693799860043698465412762683788904123519659368918747795137756925133403874546193403791800773349256597788172169267018099118297156570379770766882427546703769111395342267609855254644088887479997335352688507156429384455048923416753196168920689516171961705533084716173937734383387005035502600111900872935564905119283640003471277912629539188146211185404503885150460908202428520881584375861398068158465717391925940473533527289362979492788379893414977795890630246277215636937998600436984654127626837889041235196593689187477951377569251334038745461934037918007733492565977881721692670180991182971565703797707668824275467037691113953422676098552546440888874799973353526885071564293844550489234167531961689206895161719617055330847161739377343833870050355026001119008729355649051192836400034712779126295391881462111854045038851504609082024285208815843758613980681584657173919259404735335272893629794927883798934149777958906302462772156369379986004369846541276268378890412351965936891874779 -> 104722620818829725350471250319381322442157142939968746733189534636092461498160888621832863704154313714640064033652072834004316069180066185557152532492065016582484008443550106334469623189224853297031909462051036813831122069975066805428482757909459896429712070788438473257566353363661157193335036258403963664951376916077188739303904311848634024503400904210167196609986757481596536293981527981899941040428603879926993235784453616827221413484821814696587123990593067199022674714215875418063182264044616290670605966737622659515813845924704582451558921212625569326026092769738482064361640560957912895107073658050961798777382366895928190136910677041730764142108002390172363142435546238423201716393926816638170651973860116595291967520824213116282805961807367596808145815519397027510870046459763829838460028376410229603457790848809378977644665485318191625070252796678138784106766681767235888714072651650404258856085637696999110851113359786490114390146581229051957605886758110930716924573392822113555544929363190711403820232751300125252405036998510743547348040724191558656498439308147616087584130241616548063224013691730238718192155349606213033236337706396968977213763941442735628210157029634305577082373190747684396092206944789810642641658977612103963849878366342938485104506535583616564963253139643593896020097015626004128755127008354460700838018466643329489536049203557837960825027267407734618086452776900179732919953525612984392200760786061573171335083818793734646660214781154060379450482486064402888567721675 674731545332880553341040804953927850625374801445634156851377716569548352090641769929083988780816186205658802901628970639146528674563494131857914708615854832215935981630688821354419877613655457109321276154776684748386561809647811234757418029978723731808599934391155316094300820339146409047712138201060956258047923979394350829176994260874363652564754380578500340822228547536060090648730252234558782701233954262771754652911253850103564790462211293890960556358541835437513857965740882867427012711690564340029855979153143011574307528930167374679265881751722979910818485868308122204069454672046185479318667518121907895336222856618854986606533971540270706576951817330805209514478248351043131793530635759470019940898283329120423607377877399076655021525732305989924343314050772383923372379801718706955883119516891272014451806630020862598610590317993418402664904596356220555480041179680938666434180913266110398208192615861666643589238282010299392642366621106734350761648570987951324391235828359822291272749476575708956592511501429370509351836646745682036389193303472972212396347330993474124541564892089510775404221463976041180365585708006807117094136097350053875066982096206453693259911817803698069501217961098908552423987947790368630978531627434104532412790814372964611433756604762670881606453848216321297107304912307738436342968691849322115459412023526721152052111597218981684668487515846688228599011150024923502619396577743839308754858576839715874263613700362853114266472393942299547176632817734393326356600262176635927014158526858293836416431895641020013032518285415674391684949817169518109560474316833485378908547614804741467739954 diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/testdata_dist/divmod_eq.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/testdata_dist/divmod_eq.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,2010 @@ +-- +-- Tests binary functions with both operands pointing to the same decimal. +-- The tests are random. +-- + +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + + +precision: 287 +divmod_eq0 divmod_eq 53464363333374808283597687012581545556435043430877416069601812915742085729084642883631769946846145248101886580777706430843020189140428608578077608617960084403336009490995063314174483207370023308095611980240 -> 1 0 +precision: 150 +divmod_eq1 divmod_eq +60282411403474423437251944856221834213664804070443619110124159546725081821627.9520731524443948144720661450464724117304412956005906597494085920338030465 -> 1 0E-73 +precision: 85 +divmod_eq2 divmod_eq -63467629447618961271624908961051190267743022525700e648470929 -> 1 -0E+648470929 +precision: 108 +divmod_eq3 divmod_eq -762879944390665.371815875601 -> 1 -0E-12 +precision: 288 +divmod_eq4 divmod_eq +997594334066627951033394333915508375011722549244112196997015462663582982961809024613180076099282803800482019887107098847480355044678421823378359002130300510590127911433084709732427595232911169827362243916e+685827935 -> 1 0E+685827935 +precision: 152 +divmod_eq5 divmod_eq NaN832667949710977289184673168 -> NaN832667949710977289184673168 NaN832667949710977289184673168 +precision: 61 +divmod_eq6 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 12 +divmod_eq7 divmod_eq -250606270412 -> 1 -0 +precision: 135 +divmod_eq8 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 24 +divmod_eq9 divmod_eq -76055012871 -> 1 -0 +precision: 182 +divmod_eq10 divmod_eq 83542251601461897232191794166173085401568082209284348867004240280628151957E-123881576 -> 1 0E-123881576 +precision: 268 +divmod_eq11 divmod_eq 25217609567122285964471898171122472313775219353867927954644050658215682980863474205227115302147969044815699324981589251023600550104018301454854034696303525434325473109274633035048576419282966532100961091E+428438078 -> 1 0E+428438078 +precision: 146 +divmod_eq12 divmod_eq 237891543845203059343898625842339741522959606167929795593236668287030561164857178.8674834023214818099624e495341870 -> 1 0E+495341848 +precision: 175 +divmod_eq13 divmod_eq -624486520641684870510222593233263369549269541865020921753746257084232388554067883696480034366518491.803050265063571939817816022574699692118789939353658564018862657150469250e271339981 -> 1 -0E+271339909 +precision: 38 +divmod_eq14 divmod_eq -.49549945556281437721075847786E-293934761 -> 1 -0E-293934790 +precision: 160 +divmod_eq15 divmod_eq 6439721575376014220466555296780909616861282020535698034e+523268522 -> 1 0E+523268522 +precision: 209 +divmod_eq16 divmod_eq +.864382208890765802588387146087984270777777183E-78681381 -> 1 0E-78681426 +precision: 287 +divmod_eq17 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 105 +divmod_eq18 divmod_eq -2296114411619668321102132320210732170325581199648640154523045481418066212280947402212308087990889 -> 1 -0 +precision: 216 +divmod_eq19 divmod_eq -72499760135762907318683393547388270191276962617907889270937493824626.8609387535086072123734512291064149494599650674785561301557964790991109627223994876880975667071725232264 -> 1 -0E-103 +precision: 177 +divmod_eq20 divmod_eq -602329874961556145732709262519020399030 -> 1 -0 +precision: 120 +divmod_eq21 divmod_eq 605346465368949707205 -> 1 0 +precision: 299 +divmod_eq22 divmod_eq -NaN -> -NaN -NaN +precision: 215 +divmod_eq23 divmod_eq +.859210872763380019695755516617812057083304606701831278736432420104323678594526580219315082439316330854718463797399802289467720618008821966135758410422345129280452816607546072439372254699203545710518 -> 1 0E-198 +precision: 71 +divmod_eq24 divmod_eq -2187562097781110568369202126752208478245925935058306 -> 1 -0 +precision: 254 +divmod_eq25 divmod_eq 8095321441539552219030352339253094741310342509803565261892869350935285482654276530.60967719649351174547788312045006521831612745351745541033 -> 1 0E-56 +precision: 165 +divmod_eq26 divmod_eq +98476117314065604303184933585802184337242433967355435689143782636521990578857919074666975607367373104866007913836751769234055465314494844E-774349744 -> 1 0E-774349744 +precision: 107 +divmod_eq27 divmod_eq -62284353301034 -> 1 -0 +precision: 208 +divmod_eq28 divmod_eq -405703916584946187339588755122298833227050382148619889574233323470871927925383628683023471580384585665209218581358227457521399861319625088667058199283670965579234990162231856227991059751296617924383500005115 -> 1 -0 +precision: 249 +divmod_eq29 divmod_eq -2385680788988254374730807959458616979585725543859186026963966406590096468981873292469401851945034377497902483187421521277018000832569821451797.5280369733419139368208020768984127681840 -> 1 -0E-40 +precision: 20 +divmod_eq30 divmod_eq -51.482237 -> 1 -0.000000 +precision: 144 +divmod_eq31 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 125 +divmod_eq32 divmod_eq +5197142681717416592985957649160129100928119150921314012534558482721058592924e+533525987 -> 1 0E+533525987 +precision: 133 +divmod_eq33 divmod_eq -42223760256214305217288191645583486423066815206309438645534904343220690074186227399974896087788E-883972441 -> 1 -0E-883972441 +precision: 99 +divmod_eq34 divmod_eq -540288412703989088324101602638520539 -> 1 -0 +precision: 276 +divmod_eq35 divmod_eq -42 -> 1 -0 +precision: 189 +divmod_eq36 divmod_eq -414770529362441743.502800784854148E-924883872 -> 1 -0E-924883887 +precision: 226 +divmod_eq37 divmod_eq -122103740689866609813149805358597902815117162755424791485849336568303923370578525587223684979.77668042705559094381 -> 1 -0E-20 +precision: 256 +divmod_eq38 divmod_eq -93429962092663391728680017614256726146956696242118543189766822043606551265409299488963361819462007518894007390733026454601256090251457894245829231587850963044445786811654183538041329178407314949868722063974455473105186197129532461226010105530975 -> 1 -0 +precision: 257 +divmod_eq39 divmod_eq +5363.678189 -> 1 0.000000 +precision: 15 +divmod_eq40 divmod_eq -1.11 -> 1 -0.00 +precision: 30 +divmod_eq41 divmod_eq 1484.957E-18415126 -> 1 0E-18415129 +precision: 147 +divmod_eq42 divmod_eq +.724365549601958373061594204603726255265461738E-846772663 -> 1 0E-846772708 +precision: 14 +divmod_eq43 divmod_eq 2.235343528191 -> 1 0E-12 +precision: 271 +divmod_eq44 divmod_eq -3112862458167369216150698235682116.74266524076306991 -> 1 -0E-17 +precision: 129 +divmod_eq45 divmod_eq +2473727781802613137059572213.889177 -> 1 0.000000 +precision: 195 +divmod_eq46 divmod_eq 4923403255739504086409612423068733041095492282024351686209100681564418463954508076395026323050251666626116755500368387153233787830687470280617641354052927183009455269009506212788497026 -> 1 0 +precision: 54 +divmod_eq47 divmod_eq -341.154353941696390403305091822463 -> 1 -0E-30 +precision: 235 +divmod_eq48 divmod_eq -348849317976202851 -> 1 -0 +precision: 142 +divmod_eq49 divmod_eq -53281607984204574454992.85153993230543592391240521932346680770305738574055522 -> 1 -0E-53 +precision: 89 +divmod_eq50 divmod_eq +639322655075658284864501796148572695116980237109129131740966911 -> 1 0 +precision: 86 +divmod_eq51 divmod_eq +3118520608155038015097966 -> 1 0 +precision: 275 +divmod_eq52 divmod_eq +968958421369594655202604230528305465566154249.279146578148372305691666256569545838652560927549195430822655157798930178784969279192586555404772182319932983240140556698438836877731188744737943342648577927870 -> 1 0E-159 +precision: 106 +divmod_eq53 divmod_eq -5383839463.11353306259257099633E126493576 -> 1 -0E+126493556 +precision: 152 +divmod_eq54 divmod_eq -926891096999095630862429037881226804420485799805109773388345011078027185049653736399061221337784709078330702640028602101977211194450167477766358966 -> 1 -0 +precision: 180 +divmod_eq55 divmod_eq -sNaN181293545943518158696883231497008283253210761505960375779161042209981 -> -NaN181293545943518158696883231497008283253210761505960375779161042209981 -NaN181293545943518158696883231497008283253210761505960375779161042209981 Invalid_operation +precision: 63 +divmod_eq56 divmod_eq -153378400604553963250338755763742790055406127429824E+149881683 -> 1 -0E+149881683 +precision: 153 +divmod_eq57 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 90 +divmod_eq58 divmod_eq +713176 -> 1 0 +precision: 298 +divmod_eq59 divmod_eq +565998932303460438714500951746078107780951734345615650834505308212468209352517951724996822757702128281770743151617518219664946374794686715791235824879596349532571366818130166877120341581373119055758 -> 1 0 +precision: 292 +divmod_eq60 divmod_eq .97870393172360230443100647033317015054169636315777107902529431594158694332662248031989750429360287729873006062041960203417490856472131939678413967794241443875917420335399307011538922669649466404776340393342620127273932320097610173562059473092416540152869415 -> 1 0E-257 +precision: 43 +divmod_eq61 divmod_eq -2229541013528323048628399 -> 1 -0 +precision: 118 +divmod_eq62 divmod_eq +7674519950072794467599738284 -> 1 0 +precision: 31 +divmod_eq63 divmod_eq -9588654 -> 1 -0 +precision: 39 +divmod_eq64 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 280 +divmod_eq65 divmod_eq 2481002409183328634392591820527821585715925899241928261627100002588761787432751456 -> 1 0 +precision: 133 +divmod_eq66 divmod_eq 16222162494747464113974374182947930026667980137372748705619064155988595916264e+991871225 -> 1 0E+991871225 +precision: 146 +divmod_eq67 divmod_eq +671390474584 -> 1 0 +precision: 279 +divmod_eq68 divmod_eq +277811721684566295357369923.84595668648455793441455098892582432404960347223389364643398424613011058932940959599611915995896384903396700045509201464884341045299481518805809731503486151671071827506131912134200851345578312863109269801667900536593183932090316352249526984657746280664e-627295248 -> 1 0E-627295499 +precision: 134 +divmod_eq69 divmod_eq -532376460267931555633274345263150500518938362494755630052898.598731277931103864139494415071962 -> 1 -0E-33 +precision: 86 +divmod_eq70 divmod_eq -55388722348496010330451537276370455593198227804672813986163.246707808241894741 -> 1 -0E-18 +precision: 36 +divmod_eq71 divmod_eq +5520513112268662150249031703626137 -> 1 0 +precision: 89 +divmod_eq72 divmod_eq +3571034308487975436825268866624235456145236510447948 -> 1 0 +precision: 32 +divmod_eq73 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 202 +divmod_eq74 divmod_eq -54455912284423905204535947714484914600905457451.67699563511653477423610580947001300622433244305013119152676624118986975906673721625083808740189472923229907629273857781442793430182778340442 -> 1 -0E-140 +precision: 236 +divmod_eq75 divmod_eq 737142819863460365258620882839024713096639010132687321805052197979887237289394762058948006 -> 1 0 +precision: 65 +divmod_eq76 divmod_eq -.4844271484531862901316355961882132 -> 1 -0E-34 +precision: 131 +divmod_eq77 divmod_eq -82055961057053823844 -> 1 -0 +precision: 49 +divmod_eq78 divmod_eq +.1278017114524 -> 1 0E-13 +precision: 16 +divmod_eq79 divmod_eq .26593E+867916136 -> 1 0E+867916131 +precision: 57 +divmod_eq80 divmod_eq -2928 -> 1 -0 +precision: 202 +divmod_eq81 divmod_eq .2436323487472693944483338472060043701142931170235641463232780177433084598344826971233971473693838557135322655666862504924399245975424690098105307163352034998870273624506443485010273741010889466900203608 -> 1 0E-202 +precision: 50 +divmod_eq82 divmod_eq 3229118766282116389 -> 1 0 +precision: 128 +divmod_eq83 divmod_eq -353217 -> 1 -0 +precision: 237 +divmod_eq84 divmod_eq +8952945727256741368484117984533237136797532694624451799425154416318349214077171987911741267360243984867724.24083293855144702715914245533417014003733762831596064439183e379300807 -> 1 0E+379300748 +precision: 241 +divmod_eq85 divmod_eq .8802964692482340897876789908522346079238644307908 -> 1 0E-49 +precision: 214 +divmod_eq86 divmod_eq -2667732491032129698862578439011099389667186127491417742984096074955327525 -> 1 -0 +precision: 240 +divmod_eq87 divmod_eq -.416532628180938439246293272193123930651122611174329589457565176645866576348391528647008177485915098310297410099346101509095856384803903453615121178770752304640192030591 -> 1 -0E-168 +precision: 224 +divmod_eq88 divmod_eq -.15505333323504875956096576743893722845824504875196741466681416293705282853643 -> 1 -0E-77 +precision: 50 +divmod_eq89 divmod_eq -45490444275117551622386486537015139196713012461529 -> 1 -0 +precision: 65 +divmod_eq90 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 72 +divmod_eq91 divmod_eq -7967511917180 -> 1 -0 +precision: 122 +divmod_eq92 divmod_eq .647994470911796025803235101546481548974 -> 1 0E-39 +precision: 173 +divmod_eq93 divmod_eq 543249666827706649565525870978211465783115952872288787045121 -> 1 0 +precision: 246 +divmod_eq94 divmod_eq 197310568047035387852382184816617724129357344414939176906413141183744558314848880712048491398604699714774965453168118423060229443350867739117842410595557474518588350014227639426307312424575274781260 -> 1 0 +precision: 233 +divmod_eq95 divmod_eq -67294738367873681345043093621762171404406801145879502217316626782273714636857845968781631779727222557166291714266478599780772252555641354152146583770584712291276471077440259309611531349 -> 1 -0 +precision: 142 +divmod_eq96 divmod_eq +9315310416417575888949704.7570337998257958966782984779562365077621770730098012049297412269569552e-228103043 -> 1 0E-228103113 +precision: 20 +divmod_eq97 divmod_eq +985765373882 -> 1 0 +precision: 131 +divmod_eq98 divmod_eq -.3762828208341E-106659662 -> 1 -0E-106659675 +precision: 11 +divmod_eq99 divmod_eq -481903E+890412410 -> 1 -0E+890412410 +precision: 79 +divmod_eq100 divmod_eq -740640783097689747743726944019728629880766 -> 1 -0 +precision: 136 +divmod_eq101 divmod_eq .818529386468828597598305678387729826871 -> 1 0E-39 +precision: 265 +divmod_eq102 divmod_eq -55520858.126755899541 -> 1 -0E-12 +precision: 260 +divmod_eq103 divmod_eq 5338369612062216799220058852896243244078070467380015626597662433795140766339246370604010755152309835070971402004903878375376405395966328736017695756964241030224661897468567209388670144624397 -> 1 0 +precision: 263 +divmod_eq104 divmod_eq -4229493779774760132802843932516116658783601633557875037028346232812704526632013210875339293503208416523116722112419420011080285497497905884655845001106e263891020 -> 1 -0E+263891020 +precision: 79 +divmod_eq105 divmod_eq -61660677337165.71901401e-901402713 -> 1 -0E-901402721 +precision: 176 +divmod_eq106 divmod_eq -64109340231793728683.9238039098025613313390 -> 1 -0E-22 +precision: 289 +divmod_eq107 divmod_eq 80551060.16958 -> 1 0.00000 +precision: 258 +divmod_eq108 divmod_eq +.88146564183215174603063964854027598581321659898936005999999016339243256500874953537254688203079455629165603570624186498103150398216479557241567191220209935645 -> 1 0E-158 +precision: 9 +divmod_eq109 divmod_eq -.7744 -> 1 -0.0000 +precision: 55 +divmod_eq110 divmod_eq 43187566607251452279858472124925846446517913700876595 -> 1 0 +precision: 286 +divmod_eq111 divmod_eq -82509343023671236033514434832079986468381029199396218848681393935443730893594469609414819654223603679893679715242618488404644749419991986055486295843844302660663441258047921026958375229601964537327040542693721224482177515908341829692386428683369 -> 1 -0 +precision: 296 +divmod_eq112 divmod_eq 69085850583646107215461854371705601235972378.60615503795642165777143341660150037619992984575445859937600695215242413816474293357701134031633948296880835415042533376414558513430938984601118689262172147 -> 1 0E-155 +precision: 151 +divmod_eq113 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 193 +divmod_eq114 divmod_eq +61945128660490526165418557875474853986311581735442381205499972605454068180649011815841754238935443829113562.215816187980342987912898321865879084967375631289378213352528334999776324231 -> 1 0E-75 +precision: 276 +divmod_eq115 divmod_eq -233844972717621521204775431471981096560139614804088847837964685892430575598071317864284905914095328729608585331824990952628882169696908616824102921530793861557404819266356543156122040328283379695011049379604934984055292172173 -> 1 -0 +precision: 183 +divmod_eq116 divmod_eq .46771809967513682604779822390705624963795075301981584942103268785116075795846623992808196702336538355713747397740378447298475514633756010891187645578439464975978 -> 1 0E-161 +precision: 250 +divmod_eq117 divmod_eq 23084291723761901387529178158028297781327756723548055673188879848695667042924380354791399024228744432616104074972262126580269005592412100044495350306080703703778407e+398290276 -> 1 0E+398290276 +precision: 61 +divmod_eq118 divmod_eq -.65889075881E-863088406 -> 1 -0E-863088417 +precision: 195 +divmod_eq119 divmod_eq -471294746.36135846e-875673014 -> 1 -0E-875673022 +precision: 25 +divmod_eq120 divmod_eq -.818e+66460883 -> 1 -0E+66460880 +precision: 146 +divmod_eq121 divmod_eq .90762008743696182031755911567457678414532499114089158641604082039941725117579151140146562680789222122753097843288869014E-709174583 -> 1 0E-709174702 +precision: 179 +divmod_eq122 divmod_eq -8139301187136441115318934932949983468004640340798805076557366152758731488829849130463472780050601997874712318836693993647316 -> 1 -0 +precision: 72 +divmod_eq123 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 6 +divmod_eq124 divmod_eq +.22641 -> 1 0.00000 +precision: 30 +divmod_eq125 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 190 +divmod_eq126 divmod_eq -.8439231523459774551780424262834507291133795825668861072859916976946669245685049195345267060214798662287111429194688457214567082211571 -> 1 -0E-133 +precision: 107 +divmod_eq127 divmod_eq -1798217333802960749958934893787460899409413.9522546 -> 1 -0E-7 +precision: 103 +divmod_eq128 divmod_eq +61416004456357307661168571110E737033803 -> 1 0E+737033803 +precision: 119 +divmod_eq129 divmod_eq -25202258100323.8355522798869826944383335370574406134988770423848050496737996781905372898195377973350105644441 -> 1 -0E-94 +precision: 143 +divmod_eq130 divmod_eq -1903355119798219264732627027589177327620962781466657835048047115043620729585272563847813953677298040558007128260340176205 -> 1 -0 +precision: 155 +divmod_eq131 divmod_eq 49097325383342488901572076166453036807 -> 1 0 +precision: 156 +divmod_eq132 divmod_eq -.8792269347027352531326383505 -> 1 -0E-28 +precision: 85 +divmod_eq133 divmod_eq -479.2535980486669604759296298949037509358944428007518491160353740694865654113331727091e-614715456 -> 1 -0E-614715538 +precision: 136 +divmod_eq134 divmod_eq .20386536154489439234353518719801814499913231535990330706 -> 1 0E-56 +precision: 166 +divmod_eq135 divmod_eq 57535588947813935235634997773625116603788775.6584671091034090475841840543520261006866494929305054702533763632798199893361624779798057E686739163 -> 1 0E+686739075 +precision: 185 +divmod_eq136 divmod_eq -655717399149.9818158E-847497216 -> 1 -0E-847497223 +precision: 114 +divmod_eq137 divmod_eq -15766604008601505966951523998914892259032003239488752611820734247760406991024343170972 -> 1 -0 +precision: 197 +divmod_eq138 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 177 +divmod_eq139 divmod_eq -52159698716033245149190361837975512407201452114768658384306632837002078341490913773606159662566673412770836698942756244795204e-432859200 -> 1 -0E-432859200 +precision: 113 +divmod_eq140 divmod_eq -34464.0e+98307558 -> 1 -0E+98307557 +precision: 263 +divmod_eq141 divmod_eq -.78743210652646091022659480768123649392557868364765625529960642796205787203913751428450158677753156705494596266227976964594765603 -> 1 -0E-128 +precision: 82 +divmod_eq142 divmod_eq -102579850840778145498307399785703261.79924751883457340736983499391896960862019575 -> 1 -0E-44 +precision: 178 +divmod_eq143 divmod_eq -3312007797153734983895498806816359812940899662753451088 -> 1 -0 +precision: 196 +divmod_eq144 divmod_eq 7365340924095387151136850125363764055566564669398431666759761010857963359769344302382500998146811598564014541701340199244077987 -> 1 0 +precision: 94 +divmod_eq145 divmod_eq -.75712284307697401892473126e-222133997 -> 1 -0E-222134023 +precision: 167 +divmod_eq146 divmod_eq -40306138948914940192283648124276210987649398364552486820649584533792965203848608823957280494757102977833438455520784474806510149 -> 1 -0 +precision: 73 +divmod_eq147 divmod_eq 2576202718283462462778890468584E630374296 -> 1 0E+630374296 +precision: 248 +divmod_eq148 divmod_eq -400740262097842642582630638495734075085559568160839023706273417009206801184990e+872755931 -> 1 -0E+872755931 +precision: 110 +divmod_eq149 divmod_eq -48039656425751.4748870 -> 1 -0E-7 +precision: 299 +divmod_eq150 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 269 +divmod_eq151 divmod_eq .743994948194398864716485775699465201 -> 1 0E-36 +precision: 149 +divmod_eq152 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 3 +divmod_eq153 divmod_eq -.459 -> 1 -0.000 +precision: 81 +divmod_eq154 divmod_eq -7360849693031.99693764399119182348491360611486456686154101671562748847 -> 1 -0E-56 +precision: 282 +divmod_eq155 divmod_eq -.1498372072498109826410030863461801235622635284582334148923217685229920836215810502044270521964942477276802486386765743782427506038265292455800938995529947996151 -> 1 -0E-160 +precision: 299 +divmod_eq156 divmod_eq NaN -> NaN NaN +precision: 226 +divmod_eq157 divmod_eq .7574089928610457501798781552584858205375108672225755639453166186318383378311237617023320917469549416796953327592778255539633176583365040300896416955261020901855007445 -> 1 0E-166 +precision: 240 +divmod_eq158 divmod_eq 965263311479684544403932835376454511961514650279766828256808703191516377854468604690528321510348392446438600434711801357322576221153530194200284536199127120452670961898122779598557677340372529234433838882156633996814441393020882 -> 1 0 +precision: 267 +divmod_eq159 divmod_eq -17999697341685907599259485914181550833171764882268242229588466202302511867248181602565251345956742250704569718389485715411578146474219748936388972229919097774596043430438719E-543001688 -> 1 -0E-543001688 +precision: 45 +divmod_eq160 divmod_eq -996221.771449987638060051033e+321708067 -> 1 -0E+321708046 +precision: 140 +divmod_eq161 divmod_eq -185819062050219354269888038659381978096230875996.72311050213380319905240994071822347190305E+746874085 -> 1 -0E+746874044 +precision: 244 +divmod_eq162 divmod_eq 99758885187076848236011536113889274286765296536251739003924787778169012484451873118614492644857901807e+855468716 -> 1 0E+855468716 +precision: 29 +divmod_eq163 divmod_eq 58376021086 -> 1 0 +precision: 209 +divmod_eq164 divmod_eq 1201572181995586625791578282718743423302551740943585659767613543884332151323048986542829580040766367691083641623851193361231753795340585916398488988570649539299485620129 -> 1 0 +precision: 59 +divmod_eq165 divmod_eq +9250283034289048919570 -> 1 0 +precision: 229 +divmod_eq166 divmod_eq -286109404288911314513741947714041420403547188556091720323740742104618631693861178547024779981511748584563841440868608614184442467989100363178897866376104474133135923692038250736305784396198504111.1726994820953641218 -> 1 -0E-19 +precision: 136 +divmod_eq167 divmod_eq 20987963710668352169342399955440515618203374491084787745.961266071135244221103420921586 -> 1 0E-30 +precision: 100 +divmod_eq168 divmod_eq -615328975.1678748784798578997 -> 1 -0E-19 +precision: 16 +divmod_eq169 divmod_eq +50996 -> 1 0 +precision: 98 +divmod_eq170 divmod_eq -7017833005092151380323167583186272019699151896500566099644500015027531548458093410 -> 1 -0 +precision: 72 +divmod_eq171 divmod_eq -.24349571856273952568351548132493480853110629651503903628909919919122 -> 1 -0E-68 +precision: 244 +divmod_eq172 divmod_eq -.9655125268589106318914199135112143718039380992157156205967914247441501655943077698688317781197747423966598089141338295278047681012855769730996843486046404890563782696511836597725665416255767667058724848234337619935059474885068072963258770083 -> 1 -0E-241 +precision: 270 +divmod_eq173 divmod_eq -6359372690652682586899850373271156159518476399884434758290255761552007760961448463596200504418236858205586414573131454778092937641350735169081365473754256906957236195925568116742440085573832330455 -> 1 -0 +precision: 235 +divmod_eq174 divmod_eq +1278820515796428013094960237720692222290021406883288784539066403050339419788272810681054759509485819674520738253348767937656.9158339046349610982158264158699760326873353534491587955785244367120971458118512427092903566642838391 -> 1 0E-100 +precision: 77 +divmod_eq175 divmod_eq 56399 -> 1 0 +precision: 278 +divmod_eq176 divmod_eq -801365268002792821910630618649795016.22270E-871893515 -> 1 -0E-871893520 +precision: 7 +divmod_eq177 divmod_eq -79E+479385319 -> 1 -0E+479385319 +precision: 80 +divmod_eq178 divmod_eq +.9301106553173610199e-260901071 -> 1 0E-260901090 +precision: 219 +divmod_eq179 divmod_eq +7825767247889492041341904236211441870170336195849926102101587205173762504158688288091879341890170963058424708485239434985424664818838215331512785628385910713 -> 1 0 +precision: 266 +divmod_eq180 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 83 +divmod_eq181 divmod_eq -870631362244229888385612219698987146068651185454679404027E37262213 -> 1 -0E+37262213 +precision: 250 +divmod_eq182 divmod_eq 226364720391915745529709983786509738.351524712112148540169294854288693720738E-712510778 -> 1 0E-712510817 +precision: 132 +divmod_eq183 divmod_eq +3621394231420636208712363904786779675160814683493630051778939803928616804617 -> 1 0 +precision: 277 +divmod_eq184 divmod_eq -.146370867914922902682974999958606926844961305046584461329075331450225255307407984534778539506761534379792339348257705134229978305343817499138853690680955989725 -> 1 -0E-159 +precision: 288 +divmod_eq185 divmod_eq -972029121035446548852241169171174398901261904939169556225888792932044877930777147405106164529691109 -> 1 -0 +precision: 208 +divmod_eq186 divmod_eq -.2997132792596149334499580836653284341713428886037765368743099113039962367562256120414697769992751 -> 1 -0E-97 +precision: 86 +divmod_eq187 divmod_eq 27172320652971343e742570996 -> 1 0E+742570996 +precision: 224 +divmod_eq188 divmod_eq +72373842043333636042424711090233399975197054211893120932299018989646895957774280360396335478443172533373152122440015438737085308140125948 -> 1 0 +precision: 270 +divmod_eq189 divmod_eq +43148664815631926155150671721461026945898163059950485756525729018945622422378723119778919580111315098086488637519229725217862528823209E-714280748 -> 1 0E-714280748 +precision: 12 +divmod_eq190 divmod_eq 67136. -> 1 0 +precision: 138 +divmod_eq191 divmod_eq +57709862635521448929079528243838312350803255454118969234791105424121827678119744056119155960405e-406220045 -> 1 0E-406220045 +precision: 283 +divmod_eq192 divmod_eq -.83897932337021685243575786288560054975142121039975410332290038905659395423180 -> 1 -0E-77 +precision: 45 +divmod_eq193 divmod_eq 315 -> 1 0 +precision: 47 +divmod_eq194 divmod_eq -.8085871084032661037474775523 -> 1 -0E-28 +precision: 41 +divmod_eq195 divmod_eq -18.983488 -> 1 -0.000000 +precision: 229 +divmod_eq196 divmod_eq +7627002452425918119414394650047051 -> 1 0 +precision: 170 +divmod_eq197 divmod_eq 6910932880820270492537015152507020202936114574691653341734192466162214657196311304305346540266741446276513616601782782685642152679245E-896568081 -> 1 0E-896568081 +precision: 255 +divmod_eq198 divmod_eq -739725470518992390926008392445364623498899646955466855574776208747928431663437363541129690074885278823751469026511161221993903388488317534835162118191863682941393369e-566745935 -> 1 -0E-566745935 +precision: 204 +divmod_eq199 divmod_eq -4018889997341760809779224195616670067172597487512709086441241824597703165749220508043878198293681815733786581725857552648874460915824201937710150615080752437809709099695395891469438e-770208123 -> 1 -0E-770208123 +precision: 145 +divmod_eq200 divmod_eq -706394259884580005733047900707818331229407690152485758629e-305730456 -> 1 -0E-305730456 +precision: 20 +divmod_eq201 divmod_eq 5551575953.47385496 -> 1 0E-8 +precision: 297 +divmod_eq202 divmod_eq .811936447816230264256078610828829019672387954850182349493187035287389160034529569495488918882349093481777803992125157389151489634183901037253549919230109251602688415043746812109652991113326674880700062741548557574599389701174978142087883704081599410103567173920326632108486843343170206124603E-213641173 -> 1 0E-213641464 +precision: 224 +divmod_eq203 divmod_eq +.7009870555372628111315305686579155658588448134076585960910374771568639357678201774095278742943162075027132578119120963423073027601787326521348248030852456691933324183263177278195448963048534812162 -> 1 0E-196 +precision: 185 +divmod_eq204 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 167 +divmod_eq205 divmod_eq -.190384424118737790716827383387923916157045164939155205149417687569796065450836645287286351522660204824559e+743619280 -> 1 -0E+743619175 +precision: 79 +divmod_eq206 divmod_eq +4131917622 -> 1 0 +precision: 217 +divmod_eq207 divmod_eq -.23145355497834420400076390683927612360517381223534670822050243876331873402937689829330139530061012202717571674622358738409416796 -> 1 -0E-128 +precision: 43 +divmod_eq208 divmod_eq -722919139049e-170415738 -> 1 -0E-170415738 +precision: 186 +divmod_eq209 divmod_eq -21079017612E+807773075 -> 1 -0E+807773075 +precision: 219 +divmod_eq210 divmod_eq -217076302473891195309880023944280918800519537645114812507371658778383750597983704280697630814014534864994918054942491475e-642094143 -> 1 -0E-642094143 +precision: 74 +divmod_eq211 divmod_eq +1690728029878025570379336979309437400020815269 -> 1 0 +precision: 131 +divmod_eq212 divmod_eq -96747732967075254846654081300593355811460345314781971856594205127520534834875969438455850397794916429741936710 -> 1 -0 +precision: 289 +divmod_eq213 divmod_eq -980014654096133625043625416817241128385308250828191806793677256370652686996240181581168505985217155627900149562940097800170856290667811112167421864706774239239893360602499473224E+55221766 -> 1 -0E+55221766 +precision: 238 +divmod_eq214 divmod_eq .270982762263070361554367950680839878507879612027452510538719140938076164 -> 1 0E-72 +precision: 36 +divmod_eq215 divmod_eq +632400592664992213065E-798215546 -> 1 0E-798215546 +precision: 154 +divmod_eq216 divmod_eq -636229225 -> 1 -0 +precision: 255 +divmod_eq217 divmod_eq -426609080120921910988683054767920677095674401039245057610302600888869964400.20495518600344478E+623543633 -> 1 -0E+623543616 +precision: 106 +divmod_eq218 divmod_eq -132691313484063733676312935e814304116 -> 1 -0E+814304116 +precision: 219 +divmod_eq219 divmod_eq -sNaN200291912083935301100159010082279542866665627045061515197672190347661636611613 -> -NaN200291912083935301100159010082279542866665627045061515197672190347661636611613 -NaN200291912083935301100159010082279542866665627045061515197672190347661636611613 Invalid_operation +precision: 288 +divmod_eq220 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 264 +divmod_eq221 divmod_eq +227374286549067911226242306712445839893424391644309023720288202593225721034202424151773958906365212211702112452.919667194437731739115784127107208733887 -> 1 0E-39 +precision: 117 +divmod_eq222 divmod_eq -2885493664618949873185079399275947897610709995046239459078770215586981400300800939 -> 1 -0 +precision: 295 +divmod_eq223 divmod_eq +.106212041843578100157489181898193923514371086792301540862522207402668859412327013596890421761803937085795200609828563344880188745905452632933844667 -> 1 0E-147 +precision: 262 +divmod_eq224 divmod_eq +4659789677361664285673239269560665678674971590730123419877517039665450398084874649184020114955268925494074027415944071987211965743696783319452296389562860960693452 -> 1 0 +precision: 106 +divmod_eq225 divmod_eq +571729476815890537807495898829433262695535253052144197 -> 1 0 +precision: 191 +divmod_eq226 divmod_eq 140673167743592469130622871415612 -> 1 0 +precision: 56 +divmod_eq227 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 32 +divmod_eq228 divmod_eq +87126 -> 1 0 +precision: 100 +divmod_eq229 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 184 +divmod_eq230 divmod_eq .401819146433868215217721175861430023423804384071758281011418040464434554232085379970404769305679123077350965434446180694074177529007611507689453466 -> 1 0E-147 +precision: 245 +divmod_eq231 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 198 +divmod_eq232 divmod_eq -.7017373697458102497465426001314924679862485603168188467637098855213188178049181786748697213533179057372871707294611698502847511150891056526222702968164196568 -> 1 -0E-157 +precision: 31 +divmod_eq233 divmod_eq 61966085100.636327894057 -> 1 0E-12 +precision: 72 +divmod_eq234 divmod_eq -7239709312295049030483877347594351553322436 -> 1 -0 +precision: 199 +divmod_eq235 divmod_eq 412124138359409020846410455446750919422 -> 1 0 +precision: 260 +divmod_eq236 divmod_eq -4298917544571885442567138710268645474222448557455235959232502907805020354315072045883000141370214069607920865297349756711267611925038925924102166814846785885277567751566397749233513E775399610 -> 1 -0E+775399610 +precision: 275 +divmod_eq237 divmod_eq 81231829003772602221777612631385555640458375116824910952550618.99398795331124116928691723995592124511972157674477722837756750824920 -> 1 0E-68 +precision: 125 +divmod_eq238 divmod_eq -952129799881562963298100449721310400446413969E-448370081 -> 1 -0E-448370081 +precision: 6 +divmod_eq239 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 249 +divmod_eq240 divmod_eq +45391007593547390985849432148145038092324610865949894167283510153092363894126826016663763321369997036784780627545079132418935331762535811862924179106049899175698404141384668440747 -> 1 0 +precision: 209 +divmod_eq241 divmod_eq -3804503743374.457875068054519699098467695500166125741142184788585 -> 1 -0E-51 +precision: 55 +divmod_eq242 divmod_eq -496091.71152309e188618407 -> 1 -0E+188618399 +precision: 281 +divmod_eq243 divmod_eq -38900582853176129358645.46219534301522628554205660766831918345 -> 1 -0E-38 +precision: 232 +divmod_eq244 divmod_eq -.380514884804066043092905129319757134456348741858019995753570175143258541080484238860621E-484574797 -> 1 -0E-484574884 +precision: 154 +divmod_eq245 divmod_eq -540259373832671617749779786910777277422476823959599380637940556301107135392374852502689553343 -> 1 -0 +precision: 39 +divmod_eq246 divmod_eq -2919384945540206245 -> 1 -0 +precision: 54 +divmod_eq247 divmod_eq -435703847482202227938497546124e+872312620 -> 1 -0E+872312620 +precision: 111 +divmod_eq248 divmod_eq -.99694179535205745294906793136489714163165035688042526521894746493774646175429622156 -> 1 -0E-83 +precision: 113 +divmod_eq249 divmod_eq 5089812028969170557920406817250318943263965744e-343080668 -> 1 0E-343080668 +precision: 217 +divmod_eq250 divmod_eq -3497056694364872155201365898148929485418245740 -> 1 -0 +precision: 159 +divmod_eq251 divmod_eq .2681 -> 1 0.0000 +precision: 14 +divmod_eq252 divmod_eq -4987773837 -> 1 -0 +precision: 35 +divmod_eq253 divmod_eq +27.70195e144737033 -> 1 0E+144737028 +precision: 134 +divmod_eq254 divmod_eq -793017446123071842163388216879 -> 1 -0 +precision: 141 +divmod_eq255 divmod_eq +604165257037682761058689242365001750017216246219539.60466023442458461735533131419468166529191559422345754e-80614608 -> 1 0E-80614661 +precision: 182 +divmod_eq256 divmod_eq +.73752831171658829698130664449200922342818709902621175996068140723877E469175566 -> 1 0E+469175498 +precision: 270 +divmod_eq257 divmod_eq -69294817174946743030309117372193553064418e448035025 -> 1 -0E+448035025 +precision: 72 +divmod_eq258 divmod_eq .360394060830907817117794816182E510001819 -> 1 0E+510001789 +precision: 253 +divmod_eq259 divmod_eq 12990614273021172468405199287195591916114284480953514565023783561873328138477623059188234000588247801180093374502164060500085597501117556236721778003255244E-512608518 -> 1 0E-512608518 +precision: 42 +divmod_eq260 divmod_eq 41441907298400843835577195201676532e-202617833 -> 1 0E-202617833 +precision: 240 +divmod_eq261 divmod_eq -6489932372626863836896029367443995006873403119900992800144719833349037811070898720812966664229903195818440142001870796751644458207273691310173661010512750921664862556512557119864881062126137771591300 -> 1 -0 +precision: 163 +divmod_eq262 divmod_eq +6261495608772873745620463634509417696103399848283192240929140989254149919519197436387206744537927e-136737872 -> 1 0E-136737872 +precision: 199 +divmod_eq263 divmod_eq 38465392875857315275053422901774553029584123812429902979691946950566172173409514246602063794766787317789505561340290649444687769703029742403665106558300631627028334446 -> 1 0 +precision: 26 +divmod_eq264 divmod_eq +3816853876.41914844334425e+221107871 -> 1 0E+221107857 +precision: 274 +divmod_eq265 divmod_eq -12665735744726552.85769157622233657679271272359976365598897079892729914156002483920440480855744228244118759361716135935699028743631780196153525670730359653845951908270364148309474974217 -> 1 -0E-167 +precision: 156 +divmod_eq266 divmod_eq -944436674043274913557924459631287E-668410384 -> 1 -0E-668410384 +precision: 198 +divmod_eq267 divmod_eq -6014222280848161691989565635136851256147019391354554751040178322992370888511840923986662 -> 1 -0 +precision: 190 +divmod_eq268 divmod_eq -79910022227366428312003331786182688143770222844647503183709428518967151771718868432987472893862765985013113071187151568422922894742844001642375779860161908849366342879912844564192079E-401805923 -> 1 -0E-401805923 +precision: 12 +divmod_eq269 divmod_eq +2.67E+792803716 -> 1 0E+792803714 +precision: 138 +divmod_eq270 divmod_eq 4.8552630 -> 1 0E-7 +precision: 104 +divmod_eq271 divmod_eq -7606111709234747 -> 1 -0 +precision: 278 +divmod_eq272 divmod_eq +126.688278089954985404059E-782958077 -> 1 0E-782958098 +precision: 88 +divmod_eq273 divmod_eq +86612247E+243230505 -> 1 0E+243230505 +precision: 111 +divmod_eq274 divmod_eq +8888400719231085522731165648427607E956797154 -> 1 0E+956797154 +precision: 113 +divmod_eq275 divmod_eq -93199042152897733880678240.6210611235514910 -> 1 -0E-16 +precision: 240 +divmod_eq276 divmod_eq .21023829304046108855044379734718446484234494499283164911641471083234574127514174984600003742064000108641222318692160014450630352392661236262382941120896888562723329702955113509962532629459562060263980980081e-203047195 -> 1 0E-203047401 +precision: 176 +divmod_eq277 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 186 +divmod_eq278 divmod_eq -476863283770282523463109878604154427727751933294836700724712397e369887431 -> 1 -0E+369887431 +precision: 272 +divmod_eq279 divmod_eq -463346776326194917072654304932114812156645129014098131440918185503934262860745604136610440560749561634347492889961136613785606941493540132764053525963656176931649620775464247000370171131337484535985151806039011253373 -> 1 -0 +precision: 50 +divmod_eq280 divmod_eq -678626674246256095793125498861521990923185e+388834833 -> 1 -0E+388834833 +precision: 108 +divmod_eq281 divmod_eq -7.59277651021991131347367053 -> 1 -0E-26 +precision: 192 +divmod_eq282 divmod_eq sNaN619546676563305793589168845713994335413387907344463727395027417573928 -> NaN619546676563305793589168845713994335413387907344463727395027417573928 NaN619546676563305793589168845713994335413387907344463727395027417573928 Invalid_operation +precision: 173 +divmod_eq283 divmod_eq -861707084873714254686786146400875423964843114991 -> 1 -0 +precision: 87 +divmod_eq284 divmod_eq .802530984785827813890391057116947370 -> 1 0E-36 +precision: 299 +divmod_eq285 divmod_eq -903803753668047402052077088109746792933167232983040248427208925553710520093217640951170816718073155296116089886386643872097812152051094998736425956 -> 1 -0 +precision: 222 +divmod_eq286 divmod_eq 810537.31862867 -> 1 0E-8 +precision: 122 +divmod_eq287 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 40 +divmod_eq288 divmod_eq 69001782314.35424818e-230340994 -> 1 0E-230341002 +precision: 88 +divmod_eq289 divmod_eq +552921 -> 1 0 +precision: 236 +divmod_eq290 divmod_eq +.24756465741281511300284909783407353957469294096211985976393134482913116202276425132568440001701268949791835855264161172505947678974149861867892277888250754910511815e+521155075 -> 1 0E+521154911 +precision: 103 +divmod_eq291 divmod_eq -6911338372997289073725678731571486571863792996658970072291094263620547756507994741561107531029E62962848 -> 1 -0E+62962848 +precision: 159 +divmod_eq292 divmod_eq -8682165511953427714807153954553342750050041115130366367317008502671675050733497256587226434522776485324 -> 1 -0 +precision: 40 +divmod_eq293 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 47 +divmod_eq294 divmod_eq -94173001878111506927856651749840295 -> 1 -0 +precision: 153 +divmod_eq295 divmod_eq +813206314996735549185312638710233565538935721711993224368836466053591988916209323896506114990395531825805020659787791626217392953304299999564716287E-46826953 -> 1 0E-46826953 +precision: 171 +divmod_eq296 divmod_eq -4062272430848156783529114865548079466122411294327154484102334459071114786252677649769024609895074932260622205682115570141675822011543231198937455157234470461983E-742145080 -> 1 -0E-742145080 +precision: 80 +divmod_eq297 divmod_eq +66455458362681382313612353018276910841221296690158501982459700894689959128403 -> 1 0 +precision: 179 +divmod_eq298 divmod_eq -16e68173557 -> 1 -0E+68173557 +precision: 53 +divmod_eq299 divmod_eq -71207181607922296892334776156636627205.309276213675 -> 1 -0E-12 +precision: 237 +divmod_eq300 divmod_eq +262939669313886873329363989758265847327E-574153877 -> 1 0E-574153877 +precision: 233 +divmod_eq301 divmod_eq -98123261994660429885685349993633896090723100804362840650987527574652479038300643911646166401722597606E-612981464 -> 1 -0E-612981464 +precision: 92 +divmod_eq302 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 159 +divmod_eq303 divmod_eq -652942670e828596976 -> 1 -0E+828596976 +precision: 113 +divmod_eq304 divmod_eq -752390972306355e-126707509 -> 1 -0E-126707509 +precision: 118 +divmod_eq305 divmod_eq -729173814212386326980099922353811081051576314 -> 1 -0 +precision: 268 +divmod_eq306 divmod_eq -111550382413296597970.e563443854 -> 1 -0E+563443854 +precision: 244 +divmod_eq307 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 7 +divmod_eq308 divmod_eq -.210947 -> 1 -0.000000 +precision: 131 +divmod_eq309 divmod_eq +.33252758865477765940599221579231776706715657995892102221361347828631757098033866645 -> 1 0E-83 +precision: 21 +divmod_eq310 divmod_eq +63 -> 1 0 +precision: 150 +divmod_eq311 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 3 +divmod_eq312 divmod_eq +642e-969290440 -> 1 0E-969290440 +precision: 130 +divmod_eq313 divmod_eq 8529033969223255798909664497534806148598997359654068673124538150497002 -> 1 0 +precision: 269 +divmod_eq314 divmod_eq -816380754272063628472903287481767545913109737756013600470967935793699786600095809942597237830818924341095069183539760347928600295208802435800554505874803701734190647975583182707773783471606383881825890181477025325515758157331397712410089022428359924158703615e-307567946 -> 1 -0E-307567946 +precision: 248 +divmod_eq315 divmod_eq 314540838118451591432246935337179513550039357002500304257637138364373322960093510117060279860301402192362462480087689698461857077358072709645786018764533650954381655674.99211935177108991480944000517958832404419663142733623593 -> 1 0E-56 +precision: 148 +divmod_eq316 divmod_eq -685472420854137765815748.920823846320441842812195795441061172222139343411309 -> 1 -0E-51 +precision: 46 +divmod_eq317 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 126 +divmod_eq318 divmod_eq -41006 -> 1 -0 +precision: 134 +divmod_eq319 divmod_eq 47618223758391166518451028494199577273771383319675869 -> 1 0 +precision: 80 +divmod_eq320 divmod_eq -816480715637 -> 1 -0 +precision: 48 +divmod_eq321 divmod_eq +61558146549768824e-335889290 -> 1 0E-335889290 +precision: 121 +divmod_eq322 divmod_eq .324305393491073801643699911581855444454734970932825369948172071 -> 1 0E-63 +precision: 49 +divmod_eq323 divmod_eq +7459190592867645.79975944 -> 1 0E-8 +precision: 219 +divmod_eq324 divmod_eq -674926013077737893546184791239424080600157454725217152921244131088904886934759157047861681338710575094019098736541527194437352735666 -> 1 -0 +precision: 233 +divmod_eq325 divmod_eq +7377755570233368018898260672677759296060960166147674582700053773620676460214E-418811731 -> 1 0E-418811731 +precision: 103 +divmod_eq326 divmod_eq +.3277166134234131842738157606634e-930849436 -> 1 0E-930849467 +precision: 198 +divmod_eq327 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 51 +divmod_eq328 divmod_eq +976171162527535698247390765939750091644993469067E-422480066 -> 1 0E-422480066 +precision: 28 +divmod_eq329 divmod_eq -837399302 -> 1 -0 +precision: 64 +divmod_eq330 divmod_eq 931 -> 1 0 +precision: 43 +divmod_eq331 divmod_eq -3504722789645875179254875175394E+872214912 -> 1 -0E+872214912 +precision: 229 +divmod_eq332 divmod_eq +sNaN4152060737202136144314624530584159113747 -> NaN4152060737202136144314624530584159113747 NaN4152060737202136144314624530584159113747 Invalid_operation +precision: 198 +divmod_eq333 divmod_eq +.885235739411369550820263686510823813961392601681832172256723840332483267 -> 1 0E-72 +precision: 242 +divmod_eq334 divmod_eq -3963158773811298036687967859878464266520228277309532638986459515095797899261507544883051 -> 1 -0 +precision: 260 +divmod_eq335 divmod_eq -156508623085642348756016827322829432764818851958001036919E262012608 -> 1 -0E+262012608 +precision: 224 +divmod_eq336 divmod_eq -6543517004170311793546071870355877457723805211271532299592145258736782506024302798043620507698164732785658414226950933273056222985360847860101602148016571148704834232570784597 -> 1 -0 +precision: 225 +divmod_eq337 divmod_eq +203738910022757394016772703699295096244278411285917339542029.4794735764314115294862296575221726230839536471221741142366031960548428352859941280163280122484303010723195370246925497282418858255796162464952107043250 -> 1 0E-151 +precision: 138 +divmod_eq338 divmod_eq -409894357437526513334074533718895631761004134990269291670659054889333537730234956082522503232513534485294130448143034101962 -> 1 -0 +precision: 109 +divmod_eq339 divmod_eq 80494402768990854006540158788996712385823187685646211960054950806762366908841818978021084429042699e-198062577 -> 1 0E-198062577 +precision: 46 +divmod_eq340 divmod_eq .3560724730087360243989 -> 1 0E-22 +precision: 62 +divmod_eq341 divmod_eq +8.18517549E424818831 -> 1 0E+424818823 +precision: 280 +divmod_eq342 divmod_eq +610027737999659490833503400155160907799347541599735882470382326608451929070372613581125993818032659130220772912537828120247886161225061088928887023690258741141245799458976396736738925 -> 1 0 +precision: 45 +divmod_eq343 divmod_eq -.49e-723613403 -> 1 -0E-723613405 +precision: 28 +divmod_eq344 divmod_eq 488146527599046573 -> 1 0 +precision: 290 +divmod_eq345 divmod_eq +.88710016007956796980408148871613078724059388273353295275672344763569450865128775465619954758588093446294661548468331331431029191394869981598651530447683e+920561829 -> 1 0E+920561677 +precision: 279 +divmod_eq346 divmod_eq +56200052385704999062882491196729893581857214992098781491.781718577546370556812168726711398402117205906536665528752774428763201486138654952101500659780376e773314102 -> 1 0E+773314006 +precision: 249 +divmod_eq347 divmod_eq -.66590379069859416146801045448650472885580130089096470846368070072024233857027335577777412778111879860607685797085241168155851096087793698391728597366002954207953411695043888109545691788170845659165753903586626974751040607999722725586 -> 1 -0E-233 +precision: 177 +divmod_eq348 divmod_eq -301305360577111978825109331980770622109138518091915685799226051222394201233324158544220464963288711365059349522460164930364590279416483681931368907464552895774.68 -> 1 -0.00 +precision: 242 +divmod_eq349 divmod_eq -.89069388310409880067436315269544433810181647859144285295666802440201837752849819426559177199 -> 1 -0E-92 +precision: 162 +divmod_eq350 divmod_eq 4005887.86914203345804597361387212297086961303744607417524741864772561506 -> 1 0E-65 +precision: 144 +divmod_eq351 divmod_eq +87.6809 -> 1 0.0000 +precision: 80 +divmod_eq352 divmod_eq -9820638601712818 -> 1 -0 +precision: 157 +divmod_eq353 divmod_eq -.74681722652673810933067996779349098975017665323137459259323110738454404225391622366407640808959713429500667700524192452827352507836760047446852 -> 1 -0E-143 +precision: 53 +divmod_eq354 divmod_eq -8817046 -> 1 -0 +precision: 274 +divmod_eq355 divmod_eq -45309634177393925589656043045478368589109.1334411002150315020942453389040797740494583 -> 1 -0E-43 +precision: 159 +divmod_eq356 divmod_eq -998300914155867783923365103607820057e-139357218 -> 1 -0E-139357218 +precision: 75 +divmod_eq357 divmod_eq -6346839436 -> 1 -0 +precision: 240 +divmod_eq358 divmod_eq +38431357177512911937217717836244780932114838631711199485889365789021 -> 1 0 +precision: 212 +divmod_eq359 divmod_eq -79885510202073328545126094851287625536441848074365579241920838656559446593162208372939398937766873683327777055E-4714068 -> 1 -0E-4714068 +precision: 32 +divmod_eq360 divmod_eq -25679490222380420698869731e-647254822 -> 1 -0E-647254822 +precision: 93 +divmod_eq361 divmod_eq 58889361939084323123414507469000265142003450428883831227522471976009041182 -> 1 0 +precision: 102 +divmod_eq362 divmod_eq -.688818671592909304028199863605314750879655139231130873216714950733188246079776E-694730108 -> 1 -0E-694730186 +precision: 90 +divmod_eq363 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 212 +divmod_eq364 divmod_eq -536503933205792.5138608794168801225805421365162513e+535107346 -> 1 -0E+535107312 +precision: 58 +divmod_eq365 divmod_eq 40912208785 -> 1 0 +precision: 179 +divmod_eq366 divmod_eq -68628134404402696913115209307763747041710160100300956389103740919728909281765301508843985630880E72459491 -> 1 -0E+72459491 +precision: 150 +divmod_eq367 divmod_eq 5134.2568841 -> 1 0E-7 +precision: 3 +divmod_eq368 divmod_eq -8. -> 1 -0 +precision: 177 +divmod_eq369 divmod_eq 27421228704036513910667506431996749127626839128457215989735117 -> 1 0 +precision: 130 +divmod_eq370 divmod_eq 104985869965944066.1991464735938758871421534376 -> 1 0E-28 +precision: 200 +divmod_eq371 divmod_eq +21112035632322733468452656635135053294662909849992528449974646415175895416784924430933835794226000762335900744080828578353417751217217043720432571636879395353327028061722318507040872061986726828E794526880 -> 1 0E+794526880 +precision: 118 +divmod_eq372 divmod_eq .5054441947130525035248383296419E404271307 -> 1 0E+404271276 +precision: 120 +divmod_eq373 divmod_eq +sNaN -> NaN NaN Invalid_operation +precision: 271 +divmod_eq374 divmod_eq .673985817185337071822038e+186409101 -> 1 0E+186409077 +precision: 143 +divmod_eq375 divmod_eq +1525776440068593552466990335793785624275501951481884929702158754054496219361308124690445389691363665004538510608585552346465816665971243 -> 1 0 +precision: 133 +divmod_eq376 divmod_eq -8543976202819628993150212269009E902768398 -> 1 -0E+902768398 +precision: 160 +divmod_eq377 divmod_eq -4760219335826528817567582838786776067964907978656437353042275E748145783 -> 1 -0E+748145783 +precision: 44 +divmod_eq378 divmod_eq -.877920498295e-831042934 -> 1 -0E-831042946 +precision: 277 +divmod_eq379 divmod_eq -3324334999787190680181324277268888637315192331201336273730985238608420744754749358418787484299908304508738937949967034605181124250949364172404966149724715421654 -> 1 -0 +precision: 49 +divmod_eq380 divmod_eq +35740161636934 -> 1 0 +precision: 197 +divmod_eq381 divmod_eq +92617329659803174747922083494106906216423515271914.38231417826848642130 -> 1 0E-20 +precision: 79 +divmod_eq382 divmod_eq -75146058596485722433968192174097723626664E-983805215 -> 1 -0E-983805215 +precision: 229 +divmod_eq383 divmod_eq +61313579996709927063188476150299611924316342142832432339243886680013935170675469362128959335482161020276536556366505611420049397012234160441782037633835267761358754557854308017719512647217516304373903319060 -> 1 0 +precision: 299 +divmod_eq384 divmod_eq -410246 -> 1 -0 +precision: 51 +divmod_eq385 divmod_eq -606106940e738880496 -> 1 -0E+738880496 +precision: 245 +divmod_eq386 divmod_eq 154513898242833235789282903252431927598254592108868575119384381366932440907327475107061919012035669550127237378420277476934990433249117692457870585814184378418776791353203987642993931485945967996920877457008567672871949711621973097073 -> 1 0 +precision: 188 +divmod_eq387 divmod_eq -594034360457847087816937598257997060257603280324178551649077454990720774466777443701491868075336639676866886108141042101444221213740625007296641524619331.72644900490235298203557778021547E-744211432 -> 1 -0E-744211464 +precision: 116 +divmod_eq388 divmod_eq -857970919579711008044557008470716125827575891430099591630106073447380373570734047227474733e-165028324 -> 1 -0E-165028324 +precision: 283 +divmod_eq389 divmod_eq -.15864202961574127389503584876442964413600143217145706 -> 1 -0E-53 +precision: 98 +divmod_eq390 divmod_eq -3789459316938929520019224834879405334243896026383121180600918519184541387184493 -> 1 -0 +precision: 59 +divmod_eq391 divmod_eq -63941.7760 -> 1 -0.0000 +precision: 71 +divmod_eq392 divmod_eq 90397326641528877.22 -> 1 0.00 +precision: 273 +divmod_eq393 divmod_eq +42025319972111.95E-359189882 -> 1 0E-359189884 +precision: 173 +divmod_eq394 divmod_eq 87424798180698219774358335662465473406 -> 1 0 +precision: 199 +divmod_eq395 divmod_eq 39205379457912787096081389492512512104502373398591829874574615136621225447228011042207599229823861139093598342880033633395495527796077939916081155297880793375568893e-653908914 -> 1 0E-653908914 +precision: 220 +divmod_eq396 divmod_eq -9146981017563922867993602352588365830636958111.82205098726697180038465205132274756514148921451069271778089199238633960493173809368577372164946009651778902146164902219793936324103685748382348681732139322998 -> 1 -0E-158 +precision: 134 +divmod_eq397 divmod_eq .1731695894970410406160752964184483815261755829989811437797582225559396993930421706225941841224459258921495284276729684921880E-12592075 -> 1 0E-12592199 +precision: 21 +divmod_eq398 divmod_eq +125851264588288e+730011370 -> 1 0E+730011370 +precision: 227 +divmod_eq399 divmod_eq +94593998225503171379726905283202128213299.9435350942364108899333 -> 1 0E-22 +precision: 152 +divmod_eq400 divmod_eq +67538152461717505904925656309960926791069377141326526796750157801726999327891729317519089058811138091388922779682202147024755 -> 1 0 +precision: 115 +divmod_eq401 divmod_eq -3021348116198451541306378124161006440381079231328968314564834272912954606344354167219041026228485168 -> 1 -0 +precision: 12 +divmod_eq402 divmod_eq 215.5E-261474745 -> 1 0E-261474746 +precision: 102 +divmod_eq403 divmod_eq +797492929183595571568688966617802601179704869637218017873755065193499290175918328218455665920027e+977977035 -> 1 0E+977977035 +precision: 136 +divmod_eq404 divmod_eq 1178772556975498997228387938412811896833650081956385249109913048907.28021794967915337926577925412362667164053479703772564850 -> 1 0E-56 +precision: 186 +divmod_eq405 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 128 +divmod_eq406 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 215 +divmod_eq407 divmod_eq -6687423395142231494344340026734473333565367217982407160618278508051448207777914131901385658444727478796118540939362368322534674243499371393982034124574803646540504262368373634692390797e835983000 -> 1 -0E+835983000 +precision: 161 +divmod_eq408 divmod_eq -68576209.85 -> 1 -0.00 +precision: 180 +divmod_eq409 divmod_eq +3223763969010265240649650988394470377104916983007862508483483870846676194835.6309148126911445615104923893398941423717160086141031105138016592555342988679945033039943470540817535044e+379850336 -> 1 0E+379850233 +precision: 126 +divmod_eq410 divmod_eq +3498.50848 -> 1 0.00000 +precision: 20 +divmod_eq411 divmod_eq 2016.24298 -> 1 0.00000 +precision: 50 +divmod_eq412 divmod_eq -654779597004975093159516714910672568455e942648888 -> 1 -0E+942648888 +precision: 245 +divmod_eq413 divmod_eq -86594378792660089738837537865732935142020453.180181178847022693059462570504345825835921696291076813e276754776 -> 1 -0E+276754722 +precision: 185 +divmod_eq414 divmod_eq -.8410025518982276507821162032976437571474936784207322943420401369049650149406718405153933533545967341947041605764092 -> 1 -0E-115 +precision: 299 +divmod_eq415 divmod_eq -95634.599416677287964556368995784389952176838663997393365923286547794999022479496676025586670136259538941279514639554550993606023991548578278817905486945833550E131940412 -> 1 -0E+131940259 +precision: 263 +divmod_eq416 divmod_eq -233644129248346837162717993538.418322901199592833023839060724777342128610510922249960288637786127248198259e145857081 -> 1 -0E+145857006 +precision: 263 +divmod_eq417 divmod_eq -2.9883637841902467810673905582689533276140665222456762332921 -> 1 -0E-58 +precision: 289 +divmod_eq418 divmod_eq 265021651163657645308471686683829777325372818958537294301277769378836130797043639928183493713546.7765821721659429 -> 1 0E-16 +precision: 89 +divmod_eq419 divmod_eq +45875146918724022274236466725233163223123E+575958754 -> 1 0E+575958754 +precision: 99 +divmod_eq420 divmod_eq 53641371674233642887342755902.92118867752551e-694735761 -> 1 0E-694735775 +precision: 22 +divmod_eq421 divmod_eq +.620056180542618489124E-777642248 -> 1 0E-777642269 +precision: 91 +divmod_eq422 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 226 +divmod_eq423 divmod_eq -63852965.94072432036102986047796359646632911152717886198195396975180022149103866855295332e-59444147 -> 1 -0E-59444227 +precision: 293 +divmod_eq424 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 239 +divmod_eq425 divmod_eq -52566986254574519122039551705706813571.97819575050115907395057119759126916723387590634511379144220360276505395700746888244313846321E+90481938 -> 1 -0E+90481846 +precision: 202 +divmod_eq426 divmod_eq 46764073311688230245375630098897674910812325227296978722854565339001561598054220143248724540003756215424697028339550029559827825351511318856842978697699846600848515269 -> 1 0 +precision: 137 +divmod_eq427 divmod_eq +6771352479646683662582264745243068491015131139509441725006630879153468469928691412530449130004329786618955880 -> 1 0 +precision: 123 +divmod_eq428 divmod_eq 21823404978953591097142868915808223616606986.396527917999820 -> 1 0E-15 +precision: 196 +divmod_eq429 divmod_eq 88896352290701645815722888916844568469.984426573689723344100303457452198014804780904410793644255463843495 -> 1 0E-66 +precision: 3 +divmod_eq430 divmod_eq 63.5E-242983760 -> 1 0E-242983761 +precision: 46 +divmod_eq431 divmod_eq +382137666974004596733298877594619244 -> 1 0 +precision: 74 +divmod_eq432 divmod_eq -193370112961645039.518197251945 -> 1 -0E-12 +precision: 196 +divmod_eq433 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 181 +divmod_eq434 divmod_eq +20615183815398032276714008862077053734177636419555972399425694205864314127048508187739602977216499450382550532211429756640329560909321948928006E-976074493 -> 1 0E-976074493 +precision: 228 +divmod_eq435 divmod_eq +9585936870102042201677066635265621313262599893674607572643607236559932.8384075500256698965085348877133761649296795940550632745445077294234919432452148828544389519227797571822975889805842498416178887749041 -> 1 0E-133 +precision: 226 +divmod_eq436 divmod_eq -865192150680034480320864117450955946808002681554936928619512774343307430989534247755181736041949928384908969510641388876638.1817691903763525431322305646397347697359 -> 1 -0E-40 +precision: 100 +divmod_eq437 divmod_eq -94942272544142139340201468202559086528752151 -> 1 -0 +precision: 249 +divmod_eq438 divmod_eq -7637201344327736676148580812596174864903725968025783639559528615636758138535451968812841601862098262228085732550821.88009445230099374318110026150486777611701760691201010607811475061268 -> 1 -0E-68 +precision: 118 +divmod_eq439 divmod_eq +6491871289865891277815573838274901622686190248552094007549380059308904007 -> 1 0 +precision: 18 +divmod_eq440 divmod_eq -7497 -> 1 -0 +precision: 130 +divmod_eq441 divmod_eq -3671450732275416171096045715420649298128924724236994848594957318339359.E-234554726 -> 1 -0E-234554726 +precision: 255 +divmod_eq442 divmod_eq 4901E-194624870 -> 1 0E-194624870 +precision: 267 +divmod_eq443 divmod_eq -904407948048951453730797403974479639915821674459102139691761352415000104988272143906427419477771125874917241598970962638205996708325e+465695482 -> 1 -0E+465695482 +precision: 219 +divmod_eq444 divmod_eq -295945049892540131009363599364696871487668744844901957144620470476009655e703832704 -> 1 -0E+703832704 +precision: 246 +divmod_eq445 divmod_eq +1663675626282255722795429664437986853752684761074963497859 -> 1 0 +precision: 42 +divmod_eq446 divmod_eq -4628733077603.5410632750e+371578982 -> 1 -0E+371578972 +precision: 67 +divmod_eq447 divmod_eq -99550160014606304147020128469753921426456916152168956010831518014 -> 1 -0 +precision: 148 +divmod_eq448 divmod_eq -9812443144551981074209958097289721738242526779444909975207585295269882278435065.83736612331838427363767632941240774511490397 -> 1 -0E-44 +precision: 262 +divmod_eq449 divmod_eq -39000785336130439813689735519751973477239005576968824131253516711484853118867505980363929779592094890438732772115112112366151970 -> 1 -0 +precision: 258 +divmod_eq450 divmod_eq +7358920452524134838568149898704339967193349870806211329421481219405146598685.78845517371155586685587590864873853421152628816041992393569029251626904757E-860103391 -> 1 0E-860103465 +precision: 35 +divmod_eq451 divmod_eq 30161926544570937159 -> 1 0 +precision: 244 +divmod_eq452 divmod_eq +4624420780348137720463044627706.67032112706952228367815849 -> 1 0E-26 +precision: 32 +divmod_eq453 divmod_eq +19121410746633173.89589593E-543793506 -> 1 0E-543793514 +precision: 228 +divmod_eq454 divmod_eq +34972399328348504855077044124773355240194512742167518769659590423615481 -> 1 0 +precision: 90 +divmod_eq455 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 7 +divmod_eq456 divmod_eq +463.6 -> 1 0.0 +precision: 289 +divmod_eq457 divmod_eq +7111266734227836245360680073200478981201686740009606490311141701027277306887767740874441613101149453596150354979983171305525702506080134934467525638830900012475861011370112280194379013507169278552792391286346002818655658525074 -> 1 0 +precision: 65 +divmod_eq458 divmod_eq +32.758613812981501617538605868719547109693141e+162116484 -> 1 0E+162116442 +precision: 29 +divmod_eq459 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 148 +divmod_eq460 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 71 +divmod_eq461 divmod_eq 839501209.0 -> 1 0.0 +precision: 279 +divmod_eq462 divmod_eq 4156444312114896013968630479830087218264875789303041678587552558629992459643433120553821407015494900738661121955020734594198411725504232 -> 1 0 +precision: 80 +divmod_eq463 divmod_eq +87179587352038136063072293022558233193778541898035750847954709808090600730 -> 1 0 +precision: 279 +divmod_eq464 divmod_eq -NaN -> -NaN -NaN +precision: 22 +divmod_eq465 divmod_eq -8.38535 -> 1 -0.00000 +precision: 257 +divmod_eq466 divmod_eq +sNaN -> NaN NaN Invalid_operation +precision: 106 +divmod_eq467 divmod_eq 87198195253083035634080824374303067097913629311565862496905096990799598211461025096906 -> 1 0 +precision: 212 +divmod_eq468 divmod_eq -197. -> 1 -0 +precision: 65 +divmod_eq469 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 162 +divmod_eq470 divmod_eq -7187130307160040082207800462170577827633576514.44868174193195 -> 1 -0E-14 +precision: 41 +divmod_eq471 divmod_eq -75750056 -> 1 -0 +precision: 144 +divmod_eq472 divmod_eq -65445E693857346 -> 1 -0E+693857346 +precision: 123 +divmod_eq473 divmod_eq -.86186047790142848067949773063197266251281141370625261490855635081442440595770235 -> 1 -0E-80 +precision: 19 +divmod_eq474 divmod_eq 14626 -> 1 0 +precision: 264 +divmod_eq475 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 158 +divmod_eq476 divmod_eq -.748274668077823991461415750 -> 1 -0E-27 +precision: 274 +divmod_eq477 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 16 +divmod_eq478 divmod_eq 277198294887. -> 1 0 +precision: 26 +divmod_eq479 divmod_eq +42467305612 -> 1 0 +precision: 288 +divmod_eq480 divmod_eq -608051667135769921609875740350485118589739596612315313932498656242559524219710846921541709352131284838264964715385902235580878291266870904134060778515182567586119683011568622808610484356234206 -> 1 -0 +precision: 158 +divmod_eq481 divmod_eq +155633042210420338001359932709878055108723099291977002943.109375569173009519273384828526530699480448 -> 1 0E-42 +precision: 166 +divmod_eq482 divmod_eq 6664092816866928120.4916408596323973316854543686214283389877515948840368711263819642521524179863917258844E-152648825 -> 1 0E-152648910 +precision: 47 +divmod_eq483 divmod_eq -293763334976451744965998815434333623e-682159360 -> 1 -0E-682159360 +precision: 299 +divmod_eq484 divmod_eq -9505002555305743902548943324887188819285082574369157359091657515246078872662168535837547290537949.69288212409835739017387338872555921824808145579723766751826215819873065582998766106094438192565212188721496933564547 -> 1 -0E-116 +precision: 58 +divmod_eq485 divmod_eq +8839751458908E-94896988 -> 1 0E-94896988 +precision: 53 +divmod_eq486 divmod_eq .677124262494 -> 1 0E-12 +precision: 263 +divmod_eq487 divmod_eq +79059962052601794207173349634630176025720454624031641213930716767336639217989843714934372071480259566689578225820706614119458410150009066977680466643386880298118865305257170472504632742724647623776279661409e105034407 -> 1 0E+105034407 +precision: 32 +divmod_eq488 divmod_eq 413593595607819264800818362890E-287351272 -> 1 0E-287351272 +precision: 262 +divmod_eq489 divmod_eq 3998549453076813015149003897575058e+414749686 -> 1 0E+414749686 +precision: 88 +divmod_eq490 divmod_eq +19079.587833E+788892578 -> 1 0E+788892572 +precision: 77 +divmod_eq491 divmod_eq 59592552796975383.817338639 -> 1 0E-9 +precision: 90 +divmod_eq492 divmod_eq 3265053971877486986289549449194641 -> 1 0 +precision: 83 +divmod_eq493 divmod_eq 2520033380807233537208854141377683336693886359402027510339683124463054835 -> 1 0 +precision: 227 +divmod_eq494 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 103 +divmod_eq495 divmod_eq +624704629398610022217666309020254328484001820437352028803378799486101637441859294228289732.813477 -> 1 0.000000 +precision: 69 +divmod_eq496 divmod_eq -6790667.798446744 -> 1 -0E-9 +precision: 159 +divmod_eq497 divmod_eq -17082312810782035246497064059743770903154199953585422246649468501175195947844393274729043605040190168257418363109918785738169171334761 -> 1 -0 +precision: 20 +divmod_eq498 divmod_eq +695.727E+897544624 -> 1 0E+897544621 +precision: 118 +divmod_eq499 divmod_eq -8718032724305360185042602058929924259428835847752717094789405060 -> 1 -0 +precision: 37 +divmod_eq500 divmod_eq -602972340252772e-357892488 -> 1 -0E-357892488 +precision: 208 +divmod_eq501 divmod_eq -76163159465303995968695036645044495856356335552.9901154461858253336611676996249349249198 -> 1 -0E-40 +precision: 212 +divmod_eq502 divmod_eq +.3680268109640594122967121413986835980608690625271801918358808522992931757452528070997234850151158505336954672993024965407519487264448 -> 1 0E-133 +precision: 48 +divmod_eq503 divmod_eq -38777481445.38546663858717973462 -> 1 -0E-20 +precision: 25 +divmod_eq504 divmod_eq -.32 -> 1 -0.00 +precision: 162 +divmod_eq505 divmod_eq +9486566443988112046478347658062391545175397195561851e-951968344 -> 1 0E-951968344 +precision: 119 +divmod_eq506 divmod_eq 969642.39896795395622559567372027611509376637486426298418550652561303344548452228444695933e959680167 -> 1 0E+959680084 +precision: 279 +divmod_eq507 divmod_eq 789570917773528249435799198482002366612.182350714776779207648810 -> 1 0E-24 +precision: 13 +divmod_eq508 divmod_eq -193686 -> 1 -0 +precision: 215 +divmod_eq509 divmod_eq 20503284239769631868433936259087101921041773564191505027685393654164596606378262806906331332678683383103637158947243198 -> 1 0 +precision: 68 +divmod_eq510 divmod_eq +503046407860607819633103767917822774 -> 1 0 +precision: 98 +divmod_eq511 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 41 +divmod_eq512 divmod_eq -4450844334.52005 -> 1 -0.00000 +precision: 224 +divmod_eq513 divmod_eq 57174676411665294301310080309173812709496172346457158569682760905785978136791218723916083250225456169646412131439522788499102891284431556735257162E-254302617 -> 1 0E-254302617 +precision: 290 +divmod_eq514 divmod_eq 22359498331278487371154423160191431175177844345273905769911425552409210117315412632482294634730061338475190535873750720592441521245434109652852025181616068041866956153782300452901065084487131379873488466459827319057607307900391621468548559094343297822024633521347031774161 -> 1 0 +precision: 173 +divmod_eq515 divmod_eq -15756340549094185833447009386306499682618414875743261368035605949596753533502599959922121883.E-167912311 -> 1 -0E-167912311 +precision: 291 +divmod_eq516 divmod_eq +812107824264559212841705086338438800 -> 1 0 +precision: 227 +divmod_eq517 divmod_eq -6621059127520271475766297644129249491648190877933658983051827564762955290439666811903456301565359118299484034354896033183110450465282341071786264460740156930580174712701016086136006908736016015124416186476 -> 1 -0 +precision: 74 +divmod_eq518 divmod_eq -76645569435711.468574343E870258484 -> 1 -0E+870258475 +precision: 288 +divmod_eq519 divmod_eq -4841245117975284473280254813134828719145810370239637045341198306365848146300384608652233274094255029107554448965377767413655609746181935096E244024068 -> 1 -0E+244024068 +precision: 44 +divmod_eq520 divmod_eq -73107965305356430e+690589557 -> 1 -0E+690589557 +precision: 131 +divmod_eq521 divmod_eq -864317913086124244546724768596877369005167700180182762420048708177229017492145869011861597050869724632 -> 1 -0 +precision: 129 +divmod_eq522 divmod_eq +39722481350e-808381749 -> 1 0E-808381749 +precision: 236 +divmod_eq523 divmod_eq -8545862838795734275325 -> 1 -0 +precision: 47 +divmod_eq524 divmod_eq -689638646285406730271713 -> 1 -0 +precision: 176 +divmod_eq525 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 264 +divmod_eq526 divmod_eq .654817573018216518071695928830920899542657113979594197020569740238067660276582001237132497949327776951333463936034963075627414579287014765463349923021658918622030150725021023155644216553829721723e-517725901 -> 1 0E-517726096 +precision: 284 +divmod_eq527 divmod_eq +.3872604254127092033705340152347101985114076034751965396234228412409957528751025935016883227927370654339730766035293581423582779926221694564154660251494240102157221951707189988332464158830490277793693524582661261100018487746984523 -> 1 0E-229 +precision: 56 +divmod_eq528 divmod_eq sNaN961430659500649003027303237543257015198633281764083229213384050797282460894989317655 -> NaN43257015198633281764083229213384050797282460894989317655 NaN43257015198633281764083229213384050797282460894989317655 Invalid_operation +precision: 225 +divmod_eq529 divmod_eq -8432401840705767896227477916971765138137780734687525191 -> 1 -0 +precision: 173 +divmod_eq530 divmod_eq 65165040003179746618208247905699196063923148510143431570728554330906154033023500191402462118630774961036306342296277853624.51736747947968114185782618576373876563562766 -> 1 0E-44 +precision: 177 +divmod_eq531 divmod_eq 83681311036585925355618727949880434366756202326502705584818912.400873150718700265239049185132441 -> 1 0E-33 +precision: 141 +divmod_eq532 divmod_eq -371493393289469.620661645651119509096225903691168091698046366E-441671948 -> 1 -0E-441671993 +precision: 17 +divmod_eq533 divmod_eq 9954473011. -> 1 0 +precision: 47 +divmod_eq534 divmod_eq -1381977516476212503441810109342781E-892795596 -> 1 -0E-892795596 +precision: 186 +divmod_eq535 divmod_eq -6.34166992382333698408481032522602872708211443823059678504354034101718534858e+418100333 -> 1 -0E+418100259 +precision: 223 +divmod_eq536 divmod_eq -.72599225297033390298296675982799917974946284656161113882690646344617329960487494750898927e-98850640 -> 1 -0E-98850729 +precision: 170 +divmod_eq537 divmod_eq -96986136434938783942736284631584043683049156 -> 1 -0 +precision: 259 +divmod_eq538 divmod_eq -190467185056385246289884224855317848169684051945255771384488790621258284547219561287165639980161843580422597495575589384044872106719358105817592145606760759782327788443659340646957313684273834925967803792890105171 -> 1 -0 +precision: 267 +divmod_eq539 divmod_eq -7901619302493857521969257328638263817590698611674334734333500228829216450460992683103473307215076934709386376476794159721468121009126832125872012061143672729213502380344152668334896187565457095 -> 1 -0 +precision: 260 +divmod_eq540 divmod_eq 60131508966041854631527559344880649737512447668537526910983049764101225879346409446678241015736811203266817120084749943655254646486107489314634030891941907140525702214768415822472757177531094115978869630065104765778987e+267040201 -> 1 0E+267040201 +precision: 13 +divmod_eq541 divmod_eq +53367842 -> 1 0 +precision: 33 +divmod_eq542 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 272 +divmod_eq543 divmod_eq +.5708017298630578350292872877470050654716114174638850346545989446837360673103907463610958707353434522797660052814488478888233382726690507122063 -> 1 0E-142 +precision: 99 +divmod_eq544 divmod_eq +53765704824.9650712110743 -> 1 0E-13 +precision: 171 +divmod_eq545 divmod_eq +217922111128228958224152999486448175047409832931016392805757079572981617860569688340905244939942342256267065882807553727067738568968290822081313635376187794137264972955 -> 1 0 +precision: 85 +divmod_eq546 divmod_eq -4277556188895385205231525056865526917226137858239180763209580679902245071625086323846e83044315 -> 1 -0E+83044315 +precision: 193 +divmod_eq547 divmod_eq .24324643566195501475158030155935825378715515527439283161207790004979683931778761052436843092319927280314916180949098259950647563061593345563951854733767585882175604319e-29259246 -> 1 0E-29259413 +precision: 177 +divmod_eq548 divmod_eq NaN -> NaN NaN +precision: 248 +divmod_eq549 divmod_eq .988715385993486305074978355569182186824055265312180517406342930629014658618752246526702782207630281652333657228032523305139207748059242620334633041879676215156013720967684912202888660354843841220281921300537625511530886612732337427 -> 1 0E-231 +precision: 100 +divmod_eq550 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 275 +divmod_eq551 divmod_eq -26140954239807870296248820499731344306413456993706731260977808408631199871.320076410326698005739173537 -> 1 -0E-27 +precision: 80 +divmod_eq552 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 78 +divmod_eq553 divmod_eq +365 -> 1 0 +precision: 156 +divmod_eq554 divmod_eq -.1703337641265451440324574154155140550612153542640056339533653092667195102091848376893937487322255296699639736451472377477109147974347584938380360714102090 -> 1 -0E-154 +precision: 289 +divmod_eq555 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 184 +divmod_eq556 divmod_eq 1071958036205665584096120380333919568758037689590192734574541102126065480929712215 -> 1 0 +precision: 87 +divmod_eq557 divmod_eq -.974157974661702083206003116837577673717247947740393961989225e-686231621 -> 1 -0E-686231681 +precision: 226 +divmod_eq558 divmod_eq -6704911610068005949208376488235424390283525743875674590556560894544814461965835316423971327898693001340302776461421807920607907067924180088415010252290115163393691939623E173115428 -> 1 -0E+173115428 +precision: 168 +divmod_eq559 divmod_eq -645624767021999426552361271686390111690038103156381654962645340248521854342693980877062E+64537787 -> 1 -0E+64537787 +precision: 272 +divmod_eq560 divmod_eq -213983230634859161142794521532642015319969716492145525113073413209755479358820988408828770288702861276278189602955340000205017638901047193829265153126464924634443566988850933081879323882019490082385446376948937905061131198893093472152871585586492283475865 -> 1 -0 +precision: 126 +divmod_eq561 divmod_eq +666553789999059821034020138728621947610565830111665670303185104284615583416265854475205243619146539263725053226361548746782E-479128693 -> 1 0E-479128693 +precision: 71 +divmod_eq562 divmod_eq +6321750818353982059508484240198908973698342194.10460177 -> 1 0E-8 +precision: 250 +divmod_eq563 divmod_eq -384863230727867964106915776138538875396371453409665 -> 1 -0 +precision: 162 +divmod_eq564 divmod_eq -50123114750152673123263010057968337473928274420990872625184781198.6025891133111111130720562162500104729723613010863556260086278236127534582621437386622563 -> 1 -0E-88 +precision: 290 +divmod_eq565 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 90 +divmod_eq566 divmod_eq -377441331176481650631887619662318 -> 1 -0 +precision: 7 +divmod_eq567 divmod_eq -1.1E341467129 -> 1 -0E+341467128 +precision: 105 +divmod_eq568 divmod_eq 38409276120515.654245860145736588390075133334011813611575665367002518 -> 1 0E-54 +precision: 291 +divmod_eq569 divmod_eq -9859443699.770277965835607037039846508455334001094983718072387594267051229130457228543911460129772 -> 1 -0E-87 +precision: 52 +divmod_eq570 divmod_eq 48856987284925e-734545909 -> 1 0E-734545909 +precision: 228 +divmod_eq571 divmod_eq -8614925881064.93738698951271228299472033616779389910500116682982519080632859476206477794798598445594 -> 1 -0E-86 +precision: 152 +divmod_eq572 divmod_eq 312492546446446382745394692837897450886325414230622788354886530031452465791211337101970963450376034090086951398927124700892936877209e182934930 -> 1 0E+182934930 +precision: 81 +divmod_eq573 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 177 +divmod_eq574 divmod_eq +3782832931274761934191224254051877090511311095858945128283237031040377240716908640057963022263957680414561147.995941009748e+152109631 -> 1 0E+152109619 +precision: 56 +divmod_eq575 divmod_eq +NaN45173224542048962961758368338427 -> NaN45173224542048962961758368338427 NaN45173224542048962961758368338427 +precision: 153 +divmod_eq576 divmod_eq -40460232.5 -> 1 -0.0 +precision: 246 +divmod_eq577 divmod_eq 8576088168496984297931026455383813689654852996547422403366745257276692937028005934672630037793E+303453357 -> 1 0E+303453357 +precision: 82 +divmod_eq578 divmod_eq .255979533E-146595647 -> 1 0E-146595656 +precision: 120 +divmod_eq579 divmod_eq .2110 -> 1 0.0000 +precision: 17 +divmod_eq580 divmod_eq -98.38623885 -> 1 -0E-8 +precision: 237 +divmod_eq581 divmod_eq sNaN -> NaN NaN Invalid_operation +precision: 55 +divmod_eq582 divmod_eq 105239925990022247589841167605821736257684466133068977 -> 1 0 +precision: 136 +divmod_eq583 divmod_eq +881454030745968009002500250086051525498208532014691135711581428278073064136686423426634309725593331384770 -> 1 0 +precision: 115 +divmod_eq584 divmod_eq -29550652176.25352099644351161932688343268294392861779277E-550348704 -> 1 -0E-550348748 +precision: 276 +divmod_eq585 divmod_eq -8158856424692527933.504671173279422 -> 1 -0E-15 +precision: 27 +divmod_eq586 divmod_eq NaN5405225870575464341549737694836007681136327450608311618 -> NaN836007681136327450608311618 NaN836007681136327450608311618 +precision: 261 +divmod_eq587 divmod_eq -3863300910379861536999299671664737984953665677492664180036725771929476281404179229526759019441758326852473400113 -> 1 -0 +precision: 121 +divmod_eq588 divmod_eq +6964831026701709938369386745682622297577176113105543139025880827459679504009441157795513E-672480319 -> 1 0E-672480319 +precision: 169 +divmod_eq589 divmod_eq -7579544774.7931256633670734886 -> 1 -0E-19 +precision: 139 +divmod_eq590 divmod_eq -9443542402136464005563275647699704923461725352903392257291351366698751660235087780976559498402279319677472845379141641672 -> 1 -0 +precision: 291 +divmod_eq591 divmod_eq +928096063836978451058104986959489458531359946112847273058131776406460535856507811820478929381587588588750243671125926369831080246578223260950257498561664 -> 1 0 +precision: 254 +divmod_eq592 divmod_eq 44478306308565841961679889997774503603520626486361598170444316244691295799830271796762154163098685623041436703 -> 1 0 +precision: 72 +divmod_eq593 divmod_eq +745760396452102701896125953649118993371563704719570881193750334397219e+36863864 -> 1 0E+36863864 +precision: 237 +divmod_eq594 divmod_eq +462438244020280469040489126478122489107057126844323729473271493564426553063208332259323000141686448150309360773248691934390832011174751371519452468020200059398038248990974173675709305189765671511013345352814111191195791607956 -> 1 0 +precision: 223 +divmod_eq595 divmod_eq -16202986876553279352544125302160860102028131708055292108076175906596912607327661397481211788468658024088205876864014389159639217206715982782666075666630883911438868141200660313304880.73949578 -> 1 -0E-8 +precision: 110 +divmod_eq596 divmod_eq -8232063730149771563532866953478842642169837487687.54286005297475965108349 -> 1 -0E-23 +precision: 253 +divmod_eq597 divmod_eq -557082282116300527936540263920590769865235580903395873299037937039923944960498344928222585144530863466168789555442716503430460612973648026780606324325298671927367947366226865224232049081067822931652637e-290907274 -> 1 -0E-290907274 +precision: 250 +divmod_eq598 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 47 +divmod_eq599 divmod_eq -356701419894145122101470362005791091771 -> 1 -0 +precision: 191 +divmod_eq600 divmod_eq -81940904546777092892011612346199331963431891340081341043870074869319128963953173807507268320e+984335198 -> 1 -0E+984335198 +precision: 124 +divmod_eq601 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 251 +divmod_eq602 divmod_eq 975816174048445648533680336668258493685513491073656280.233849520595447065363808106243451624326511406527673708659490282530 -> 1 0E-66 +precision: 78 +divmod_eq603 divmod_eq +.3239432336255527867423914752179360552560903546945160304637605722239 -> 1 0E-67 +precision: 96 +divmod_eq604 divmod_eq +718991370524421112159386.7828815849146694823018735580071754913344326816860E-170864995 -> 1 0E-170865044 +precision: 121 +divmod_eq605 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 280 +divmod_eq606 divmod_eq 435790636165749849621650728547998802640390202027095901950150475833200694013771458090069662761436438171120829776489760105423008169542 -> 1 0 +precision: 235 +divmod_eq607 divmod_eq -399166572149206194440222683943835630907427646501031423282740510013258238051521611042317351232304990978475478503048265194216337418598404133420074946997407588383653940349541884308101129006832095352 -> 1 -0 +precision: 128 +divmod_eq608 divmod_eq +467686448396730403256679347104782333198253882436213606848390134289343628246929648208139976 -> 1 0 +precision: 141 +divmod_eq609 divmod_eq +2437.786234082216772883162814669693793849769704035493767738010E-4028158 -> 1 0E-4028215 +precision: 265 +divmod_eq610 divmod_eq 808541700964247280606446477356579245014426230972156836813754521724633709998531780166349808907443812360400458420698847264856588582775460323114535244689255404947555606621365013754608350299271586283430432540326662965456905161520655635384318804E574570588 -> 1 0E+574570588 +precision: 215 +divmod_eq611 divmod_eq -6329564934552997683945748013164615003904481259993862139238442058082955735758358149693202850 -> 1 -0 +precision: 171 +divmod_eq612 divmod_eq -4227049029399961677168500810773423 -> 1 -0 +precision: 134 +divmod_eq613 divmod_eq -55567137.90500079872353 -> 1 -0E-14 +precision: 238 +divmod_eq614 divmod_eq -639509866733606279644681403324822807533204473805925629873699982564170278744 -> 1 -0 +precision: 284 +divmod_eq615 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 216 +divmod_eq616 divmod_eq -4453226812814133177164047245839913251706048704865223282319848659534835061023014831597748E-851890897 -> 1 -0E-851890897 +precision: 182 +divmod_eq617 divmod_eq -6043.58387025914583079942327578837716768221272537842565007835711293213274 -> 1 -0E-68 +precision: 297 +divmod_eq618 divmod_eq -.6601299097017622877051321635176346914287804662684214958372895891090016653152527102096192424533381363993329413182365881490780843176858980831376783986134405676735932571236658825 -> 1 -0E-175 +precision: 66 +divmod_eq619 divmod_eq -66156436678333004144457606492238701897414e41742015 -> 1 -0E+41742015 +precision: 263 +divmod_eq620 divmod_eq -.292212177896505872519431586126298346919343415706848148391758130522098624541 -> 1 -0E-75 +precision: 229 +divmod_eq621 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 89 +divmod_eq622 divmod_eq -611914873614909559123220521607089607013278.902446552004611719953465191e-581594846 -> 1 -0E-581594873 +precision: 222 +divmod_eq623 divmod_eq +69722 -> 1 0 +precision: 282 +divmod_eq624 divmod_eq 13442659917333623515916991980891190989466428138236588581989208854911937.59448203490162732161043121926667265772760710844868712816860302190615642043085355055953056616905396638266 -> 1 0E-104 +precision: 19 +divmod_eq625 divmod_eq 467582777771261745 -> 1 0 +precision: 186 +divmod_eq626 divmod_eq -75239460285687973266562067634510055425893809560075181713842505023034527715767 -> 1 -0 +precision: 92 +divmod_eq627 divmod_eq -43677207293741263940408754.789059845404674980218678361615187707749912 -> 1 -0E-42 +precision: 202 +divmod_eq628 divmod_eq 234592176777526150905232773666341467601739733291e+635242666 -> 1 0E+635242666 +precision: 261 +divmod_eq629 divmod_eq -2.83677104E802987642 -> 1 -0E+802987634 +precision: 284 +divmod_eq630 divmod_eq -890629849946462071.2740458107070 -> 1 -0E-13 +precision: 241 +divmod_eq631 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 195 +divmod_eq632 divmod_eq 891642899261882573623180641072332799529528863638118813799714937273301e422551576 -> 1 0E+422551576 +precision: 53 +divmod_eq633 divmod_eq +5488718 -> 1 0 +precision: 292 +divmod_eq634 divmod_eq .6762451206776231089020243795643131448460352708258200810314516420470221361378669375965834535470952865899750831602042116102570670441486141714970762256072866050778582313731917298331054989067653736E+762846958 -> 1 0E+762846765 +precision: 86 +divmod_eq635 divmod_eq .88787010184018122152274583588318125703657898645738539487075521757285272434 -> 1 0E-74 +precision: 280 +divmod_eq636 divmod_eq 615800414702206989.85489405519871723396550596634259134153608975919096422748063411570438334 -> 1 0E-71 +precision: 168 +divmod_eq637 divmod_eq 659382872511501997986703803425871851932687646879501643917766791662686309220799717727634522308397286174474785214767243640118098092340311796167617314877908357543880 -> 1 0 +precision: 5 +divmod_eq638 divmod_eq +29440.E571832034 -> 1 0E+571832034 +precision: 22 +divmod_eq639 divmod_eq -673.33719773094070 -> 1 -0E-14 +precision: 162 +divmod_eq640 divmod_eq +2502892973210436991869e413859207 -> 1 0E+413859207 +precision: 20 +divmod_eq641 divmod_eq +82.77e-762048873 -> 1 0E-762048875 +precision: 145 +divmod_eq642 divmod_eq 4563312539565899877608558747808752276220313434168 -> 1 0 +precision: 247 +divmod_eq643 divmod_eq 2853410116755449144878973234075472293673292762068042512432113547360771458957500489087705604483311491508077886492470174355362102241029139652779921126395177710102519245159313936925522956170525255955828021228760603092880096568 -> 1 0 +precision: 3 +divmod_eq644 divmod_eq -24 -> 1 -0 +precision: 227 +divmod_eq645 divmod_eq 3424146075921540418977.9017107688456087002288373314009788784927428607796791696051158894105331117647677847356390612568850659752 -> 1 0E-103 +precision: 164 +divmod_eq646 divmod_eq +30371275011600299581185129948108331212356849845310351081767746784864223973744456713737533999059779618538178e248342252 -> 1 0E+248342252 +precision: 30 +divmod_eq647 divmod_eq 2417542337 -> 1 0 +precision: 288 +divmod_eq648 divmod_eq 96498231753171195804919022130512852668295308811734108 -> 1 0 +precision: 76 +divmod_eq649 divmod_eq +159589642081032.2 -> 1 0.0 +precision: 20 +divmod_eq650 divmod_eq -3857805303877179 -> 1 -0 +precision: 277 +divmod_eq651 divmod_eq 5319031209354093764651668668311129708961965699507193069282105659576481678914325593556E-389685600 -> 1 0E-389685600 +precision: 172 +divmod_eq652 divmod_eq +.7467144297090340293470990896915158602677578 -> 1 0E-43 +precision: 216 +divmod_eq653 divmod_eq +464977872700668178482691416525217968434205974923163824636481883922505252674687637292522860750800175452872169200299209118921682863 -> 1 0 +precision: 299 +divmod_eq654 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 211 +divmod_eq655 divmod_eq -105049623122482119875158400660208815452832312348 -> 1 -0 +precision: 148 +divmod_eq656 divmod_eq 653334286667973734841772 -> 1 0 +precision: 51 +divmod_eq657 divmod_eq -33075683732641187847698147616338831310538E-864937504 -> 1 -0E-864937504 +precision: 228 +divmod_eq658 divmod_eq -.27057500312526848270694480105208826957042104039899598338509213253469178916082446633563998898819126930087549423151977897492408 -> 1 -0E-125 +precision: 231 +divmod_eq659 divmod_eq +.115729533514533768970011605326978899757003273960310682172811174627585429884398626895356702420859 -> 1 0E-96 +precision: 150 +divmod_eq660 divmod_eq -8635440885670859969340840168344864693745930733723064729727740762385660064759713500551442587865078360357508625051223656624621890234196192972e-379150212 -> 1 -0E-379150212 +precision: 133 +divmod_eq661 divmod_eq +.187439325816262283481935887425274450411643449318267009972643379475478809176913769962701314207147126945015239974903481381 -> 1 0E-120 +precision: 283 +divmod_eq662 divmod_eq -88791692911554468664358557542182233474529767033938909787979710130482727181511125631728768117323849408E-193930091 -> 1 -0E-193930091 +precision: 31 +divmod_eq663 divmod_eq +917101570579528289042457 -> 1 0 +precision: 24 +divmod_eq664 divmod_eq 5.211586249193004668 -> 1 0E-18 +precision: 287 +divmod_eq665 divmod_eq -7672084742227500548673175016311492670221816019360656164709493842905215 -> 1 -0 +precision: 3 +divmod_eq666 divmod_eq .0e49002077 -> NaN NaN Invalid_operation +precision: 89 +divmod_eq667 divmod_eq -2486125595.7824804719213644181939944323 -> 1 -0E-28 +precision: 206 +divmod_eq668 divmod_eq +4198043792649633390349623022954899983341969E533980563 -> 1 0E+533980563 +precision: 145 +divmod_eq669 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 95 +divmod_eq670 divmod_eq +426962.517921125308281978778928 -> 1 0E-24 +precision: 69 +divmod_eq671 divmod_eq -6583020800865939394617142640434636387381058033586847374237259666708e-895045131 -> 1 -0E-895045131 +precision: 293 +divmod_eq672 divmod_eq -620319602166629094089561178011293486620919351314722926838116132205225372662053118714048457539076679972107953153573186032556965867 -> 1 -0 +precision: 141 +divmod_eq673 divmod_eq 844724588980572117147337790573953183040057123241730852500780469726679897985086768327825457943341527092091533102161142360065568172962622 -> 1 0 +precision: 244 +divmod_eq674 divmod_eq 47878248427173838537E+932226408 -> 1 0E+932226408 +precision: 83 +divmod_eq675 divmod_eq 7175926367258256143627140487529877040581986788670844938 -> 1 0 +precision: 80 +divmod_eq676 divmod_eq -32214030317540395628322379708424690974910124458 -> 1 -0 +precision: 70 +divmod_eq677 divmod_eq +sNaN -> NaN NaN Invalid_operation +precision: 42 +divmod_eq678 divmod_eq -858649764229157479720.e-527609059 -> 1 -0E-527609059 +precision: 107 +divmod_eq679 divmod_eq +.7236856096530227431751263837290413000167415277129E973226881 -> 1 0E+973226832 +precision: 238 +divmod_eq680 divmod_eq -sNaN523751392602614304571102923843350981619734907656886627735124062927210615001734443116561 -> -NaN523751392602614304571102923843350981619734907656886627735124062927210615001734443116561 -NaN523751392602614304571102923843350981619734907656886627735124062927210615001734443116561 Invalid_operation +precision: 275 +divmod_eq681 divmod_eq -21308914951682086872600053203319559107300330787084405467145740990312156655960239073938440980568579439307889151087772571891335798197574723058289053917662e-700390392 -> 1 -0E-700390392 +precision: 134 +divmod_eq682 divmod_eq +406728.2041 -> 1 0.0000 +precision: 63 +divmod_eq683 divmod_eq -NaN31704670101557659613838 -> -NaN31704670101557659613838 -NaN31704670101557659613838 +precision: 181 +divmod_eq684 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 80 +divmod_eq685 divmod_eq -721107623799502372865851164843732844124011136548950384954397716e+961862608 -> 1 -0E+961862608 +precision: 242 +divmod_eq686 divmod_eq .36 -> 1 0.00 +precision: 40 +divmod_eq687 divmod_eq +3721223421294419458 -> 1 0 +precision: 176 +divmod_eq688 divmod_eq +929773128009018304522652919819262484972977750961289400243146620907915500012592946052225364791835E+823837004 -> 1 0E+823837004 +precision: 296 +divmod_eq689 divmod_eq .1058898336023801518943639248880440712581449549723550019090321522028523009597986556408910012247693079876620720493154067860797171750819240928526318195729295251585445208379903411426160028619485997266891896364862206857626284344024769220633387369524197800757520845943217891096059592288584 -> 1 0E-283 +precision: 58 +divmod_eq690 divmod_eq -.50067489312944279940342732932944 -> 1 -0E-32 +precision: 233 +divmod_eq691 divmod_eq +14382452069299297319380420398.47786649231585431747007560453407411e837348911 -> 1 0E+837348876 +precision: 160 +divmod_eq692 divmod_eq -44399590570829422789500910440277147492828717746603854258772189436512907829824113188134788637440462423 -> 1 -0 +precision: 254 +divmod_eq693 divmod_eq -66490615048586946253496183767484438927107588769562393366498E594039577 -> 1 -0E+594039577 +precision: 175 +divmod_eq694 divmod_eq -389966682825200180223349589124148023737854918187429208315.3340768530084159462949 -> 1 -0E-22 +precision: 28 +divmod_eq695 divmod_eq -554359549027471484.631 -> 1 -0.000 +precision: 232 +divmod_eq696 divmod_eq NaN604970057170380 -> NaN604970057170380 NaN604970057170380 +precision: 286 +divmod_eq697 divmod_eq -9229137627163924248956109933973558553856398095876921595124909734624064364464529330446130400346531523400277818969139996155687561362454425012215698234786481272498360445616902759046542363429379502977252700416990585861005488853366860813 -> 1 -0 +precision: 212 +divmod_eq698 divmod_eq 731549551902429 -> 1 0 +precision: 212 +divmod_eq699 divmod_eq 421352405187264157688423976022045844869920522761419185612912396070146076947777104861981485184786977079645947196076030557327801771400058963035165631928183627670647171271123379104915308736E94479972 -> 1 0E+94479972 +precision: 84 +divmod_eq700 divmod_eq -.7101616733028358722293083544479120067437630295227912697139296345313334988 -> 1 -0E-73 +precision: 115 +divmod_eq701 divmod_eq -7500130592483121577985261425498517174822107971550844063235999529789606921982238386. -> 1 -0 +precision: 173 +divmod_eq702 divmod_eq -1114402.8426903496804995186156e-26087029 -> 1 -0E-26087051 +precision: 42 +divmod_eq703 divmod_eq +585025701008857 -> 1 0 +precision: 86 +divmod_eq704 divmod_eq -.14506471400454848207117107842969090526073619928550810737 -> 1 -0E-56 +precision: 53 +divmod_eq705 divmod_eq sNaN902625985243479294796741083687487848991891088029413 -> NaN902625985243479294796741083687487848991891088029413 NaN902625985243479294796741083687487848991891088029413 Invalid_operation +precision: 139 +divmod_eq706 divmod_eq +9168020217.7754311074679565405771941432228670000978600780748212833565443745045649 -> 1 0E-70 +precision: 63 +divmod_eq707 divmod_eq +986680930912182783686718176 -> 1 0 +precision: 299 +divmod_eq708 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 61 +divmod_eq709 divmod_eq -8263380.7842239848044506419296881895229972526422e+383679637 -> 1 -0E+383679597 +precision: 45 +divmod_eq710 divmod_eq .2650045e131054594 -> 1 0E+131054587 +precision: 296 +divmod_eq711 divmod_eq -5823143673750255830816103827932501946779280439874827834066439513773422234456738102935712042114380560637940665660143738118206534872547520334559550677142493827407182745159784736867707560596379069975816874617864 -> 1 -0 +precision: 61 +divmod_eq712 divmod_eq -69859565249279613250244392E+836730945 -> 1 -0E+836730945 +precision: 150 +divmod_eq713 divmod_eq -553586393776388468835716993360642249452182142279338266029907147479238456951040306799548903320 -> 1 -0 +precision: 4 +divmod_eq714 divmod_eq -.3643 -> 1 -0.0000 +precision: 77 +divmod_eq715 divmod_eq -1806268769050407242 -> 1 -0 +precision: 23 +divmod_eq716 divmod_eq 690e942946468 -> 1 0E+942946468 +precision: 237 +divmod_eq717 divmod_eq -37529632190481836832800402019860511818633420970180727594128 -> 1 -0 +precision: 211 +divmod_eq718 divmod_eq 60377146578517408661535310074199983214.7582655097980659547503 -> 1 0E-22 +precision: 217 +divmod_eq719 divmod_eq 4380128069012346320969282870532395637907837537537202712373309038033655246178956880000052656236074626856794270246173793541238811519104628132757295444661776583282176829299587570345 -> 1 0 +precision: 110 +divmod_eq720 divmod_eq +.31048581048142578876605520605372485593534899566441911 -> 1 0E-53 +precision: 255 +divmod_eq721 divmod_eq -46658194532303786150890734294618438982723545099313406521085783322146785384418116686712599627633512911617514764770337393047775801945891134794591607908159955141490579652808003121107097722878849190220699159116762278604898695462 -> 1 -0 +precision: 53 +divmod_eq722 divmod_eq -87004747111735260288127403940 -> 1 -0 +precision: 261 +divmod_eq723 divmod_eq -30955994660354367567869539681851169912676591656569984860160758756693048340420459802486611936668755225868299675445352874510933429035480091696032043874823815321327331271424900173672107138596245968375317161847510.196230537938836453436666396 -> 1 -0E-27 +precision: 103 +divmod_eq724 divmod_eq .9016235040446107965340888 -> 1 0E-25 +precision: 43 +divmod_eq725 divmod_eq 58023.7 -> 1 0.0 +precision: 90 +divmod_eq726 divmod_eq -27938548618073638665350455527567354724637213036292627331224518987 -> 1 -0 +precision: 128 +divmod_eq727 divmod_eq 5770927952011810543965934715407776581664527002237720552832481619419 -> 1 0 +precision: 7 +divmod_eq728 divmod_eq -4.20636 -> 1 -0.00000 +precision: 163 +divmod_eq729 divmod_eq -2671608227183030454066656931267143698319319675046599320743571943722042155e-173001265 -> 1 -0E-173001265 +precision: 83 +divmod_eq730 divmod_eq -7701957517984626 -> 1 -0 +precision: 199 +divmod_eq731 divmod_eq 237849635087820497544370309402858429745871272457259553868083530558992081459751953477292333389116947465644122558070324476424489848667231 -> 1 0 +precision: 232 +divmod_eq732 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 39 +divmod_eq733 divmod_eq -.3831474747660337466 -> 1 -0E-19 +precision: 111 +divmod_eq734 divmod_eq 503461950286121711671221602712325345208152665394.386231086299650158532727921942886486546528153808605606632273 -> 1 0E-60 +precision: 198 +divmod_eq735 divmod_eq .8764121885360643616913322125558697613796821094222385023801992808238790054628E-759766864 -> 1 0E-759766940 +precision: 188 +divmod_eq736 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 13 +divmod_eq737 divmod_eq +8367.92 -> 1 0.00 +precision: 159 +divmod_eq738 divmod_eq -751005510988109931335080850602776954486241084962429844848139081817024972738069064623405024602227688630023625643880871339899027256195e+640632213 -> 1 -0E+640632213 +precision: 220 +divmod_eq739 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 153 +divmod_eq740 divmod_eq 50129.59746375373183 -> 1 0E-14 +precision: 203 +divmod_eq741 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 215 +divmod_eq742 divmod_eq -306633474080882178150873814617313417562775069482858561901385676925593179323241308363667308414783792350495274953948102145497561802913e-545221863 -> 1 -0E-545221863 +precision: 292 +divmod_eq743 divmod_eq -2725131309693922054433607871315408499316944482399055342905668674810776279451355126108164839048974147218379792036919270022029050332595143336292726332468466147400749152925567469026127455334632765680344862322148472894939202915531895378604e-679423111 -> 1 -0E-679423111 +precision: 282 +divmod_eq744 divmod_eq +3399013298156793241405793308648698413722558075621584041931120452221806555400689959814332082260815096125558377810904391271063012839210811055281630872839825413051024396911307678222816738249964522931240186333957426743794876311180422761 -> 1 0 +precision: 59 +divmod_eq745 divmod_eq +382504762.47380385 -> 1 0E-8 +precision: 293 +divmod_eq746 divmod_eq -761060534977033256361665872851177989263183774384922782452688759599159518727042574018902981819827265830820537372454879073463874624726568300871990843434449224603503816609198838886152536766495549075801046212e+976315442 -> 1 -0E+976315442 +precision: 17 +divmod_eq747 divmod_eq .309923622888 -> 1 0E-12 +precision: 85 +divmod_eq748 divmod_eq +57E560573038 -> 1 0E+560573038 +precision: 208 +divmod_eq749 divmod_eq 4670485953760346709705696294605643820819303434363506423243792422344739220625155904305301401969380381376422051618904178820188866131520448785 -> 1 0 +precision: 88 +divmod_eq750 divmod_eq -314227227427516E+397979338 -> 1 -0E+397979338 +precision: 231 +divmod_eq751 divmod_eq -912.918494 -> 1 -0.000000 +precision: 98 +divmod_eq752 divmod_eq 2033530619818270E-149668445 -> 1 0E-149668445 +precision: 101 +divmod_eq753 divmod_eq -9474937598471588085584259481537052 -> 1 -0 +precision: 129 +divmod_eq754 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 242 +divmod_eq755 divmod_eq -873082.242657506010977395405799815476 -> 1 -0E-30 +precision: 252 +divmod_eq756 divmod_eq -5218085465730952683333608771934211488546031886274240187.5827128934263 -> 1 -0E-13 +precision: 297 +divmod_eq757 divmod_eq -.73656584069912568052600536588127465404248626403951980289963631e+640429494 -> 1 -0E+640429432 +precision: 249 +divmod_eq758 divmod_eq -.895845911288035709028993329468951246468351807708831069700820561045805135122 -> 1 -0E-75 +precision: 80 +divmod_eq759 divmod_eq +8488641153 -> 1 0 +precision: 277 +divmod_eq760 divmod_eq 2612255092996286927616340721354428359850587514159341842 -> 1 0 +precision: 234 +divmod_eq761 divmod_eq -50774599663628335786717429370339832074380609.2885158460990501287 -> 1 -0E-19 +precision: 172 +divmod_eq762 divmod_eq -407194405348996101872503979893695867129569553417943.9755468514547455884365446069839216847562239954873857538389455010446024141699643783588808972 -> 1 -0E-91 +precision: 63 +divmod_eq763 divmod_eq sNaN -> NaN NaN Invalid_operation +precision: 105 +divmod_eq764 divmod_eq +77.145644428341792769240758E-842981262 -> 1 0E-842981286 +precision: 69 +divmod_eq765 divmod_eq +2306683671958410281935251971564629587 -> 1 0 +precision: 270 +divmod_eq766 divmod_eq -152014163389.954 -> 1 -0.000 +precision: 286 +divmod_eq767 divmod_eq +497.7873559 -> 1 0E-7 +precision: 183 +divmod_eq768 divmod_eq 242971881204494404.167770617079454000719302587317917300306741173798584162194684013687579731970008930222100537909620882924417582949175606701146282818098365129 -> 1 0E-138 +precision: 107 +divmod_eq769 divmod_eq +287331223550660.7616 -> 1 0.0000 +precision: 100 +divmod_eq770 divmod_eq -16731955628867020636505107105 -> 1 -0 +precision: 251 +divmod_eq771 divmod_eq -9903688641725454582565056571999074116826683877315450757137903850254299542283781590693047403050846032652e-995584115 -> 1 -0E-995584115 +precision: 172 +divmod_eq772 divmod_eq 546878264955241943669423234102069543091524833358973370137815493213 -> 1 0 +precision: 188 +divmod_eq773 divmod_eq -.340514282482497906e-730565522 -> 1 -0E-730565540 +precision: 13 +divmod_eq774 divmod_eq -76224 -> 1 -0 +precision: 80 +divmod_eq775 divmod_eq +.35660906221779540191680706564699171385974517689379571468957191870e+636419100 -> 1 0E+636419035 +precision: 112 +divmod_eq776 divmod_eq -49336108749862123913058650077422934081112658439621404953372730687124434689506 -> 1 -0 +precision: 11 +divmod_eq777 divmod_eq -5640329831. -> 1 -0 +precision: 40 +divmod_eq778 divmod_eq -.430994381631895658060e+565949670 -> 1 -0E+565949649 +precision: 178 +divmod_eq779 divmod_eq +NaN -> NaN NaN +precision: 15 +divmod_eq780 divmod_eq +3.80E-547677686 -> 1 0E-547677688 +precision: 281 +divmod_eq781 divmod_eq -6525469644280496797154761612600523419169450528034304765454188031326216428567740081366446665297656955659961446852889147919695045665162784365076207768323251218258840675983120115969956345989290389954215772837696128092662364758648850712377536246183338821245780155495011100389179874636 -> 1 -0 +precision: 34 +divmod_eq782 divmod_eq -30311326258375731749088e-364954265 -> 1 -0E-364954265 +precision: 39 +divmod_eq783 divmod_eq +763288167.136E-716460465 -> 1 0E-716460468 +precision: 135 +divmod_eq784 divmod_eq 125034522986353712566301502502603566111561285642255223932317211621390202131659979294616972176929378698563621156589163744004889 -> 1 0 +precision: 27 +divmod_eq785 divmod_eq -71.7745948219842991245625 -> 1 -0E-22 +precision: 162 +divmod_eq786 divmod_eq -7465272354313331146027291273985800868976691041081102142748286283850504347710909274364350296360812518259696213509763303484E410860825 -> 1 -0E+410860825 +precision: 195 +divmod_eq787 divmod_eq -6826927383391642450259819100571861431907680726708825013899182003441791061271955211125852326569305629697037375566979073836443730995834338292968926167913647779388282926975436762379761E+418721891 -> 1 -0E+418721891 +precision: 231 +divmod_eq788 divmod_eq -28580218772247789076242638506209165524163497800468857715765623122607688030400077322768925211547827132759480699661329326299748087127019149003260811209692830351439603299320339292423503286276719512126709664169025 -> 1 -0 +precision: 288 +divmod_eq789 divmod_eq -549554623498399940766972965740039961853867033670.9442119732840592877184840477580085556828546677008119365185872319253487656734373652655234148744172233233139826742643221931937806313242946190243049681992478451456380455293262612483653703995969146E-571018063 -> 1 -0E-571018256 +precision: 30 +divmod_eq790 divmod_eq -17776054898 -> 1 -0 +precision: 80 +divmod_eq791 divmod_eq -8437652587392636052273928042012166662e+458434131 -> 1 -0E+458434131 +precision: 171 +divmod_eq792 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 239 +divmod_eq793 divmod_eq 174303040353562303440912.42123105E+529592449 -> 1 0E+529592441 +precision: 112 +divmod_eq794 divmod_eq -2382742608486633369206258948780874621769718178644910414509400187755487500276565429236712078337685e-962284137 -> 1 -0E-962284137 +precision: 85 +divmod_eq795 divmod_eq 186252292910976 -> 1 0 +precision: 17 +divmod_eq796 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 289 +divmod_eq797 divmod_eq +196128101428952171767649740150442771505692071059141237561013916717552135695507224248754641994685858187002741047554440767e-541103261 -> 1 0E-541103261 +precision: 196 +divmod_eq798 divmod_eq -73979019964219244793662503454650797297012643880139876290 -> 1 -0 +precision: 116 +divmod_eq799 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 228 +divmod_eq800 divmod_eq -2548672422205796881209291241628436910086733686381172394236539698241697271157228023015395801359981698234576011725095311727047247060 -> 1 -0 +precision: 43 +divmod_eq801 divmod_eq -33813391111431737413619268952825509 -> 1 -0 +precision: 274 +divmod_eq802 divmod_eq +299890782910043767520741801016624873893479557359734402240190885827917265411267571e+666580758 -> 1 0E+666580758 +precision: 129 +divmod_eq803 divmod_eq 34454922409122565809393422865.78458933005607809845763899496545861447144 -> 1 0E-41 +precision: 137 +divmod_eq804 divmod_eq -1325870350459904985639271035426902009715257224455292921654091061836 -> 1 -0 +precision: 81 +divmod_eq805 divmod_eq -4519571510225.195 -> 1 -0.000 +precision: 241 +divmod_eq806 divmod_eq 4305462436624742200849125302331048310384873657707558333523464822307317020427528661502426285616558172951459572825295272859142719159261409484057899522606989323199317088261404657850676845133575823025791889018734884E428402521 -> 1 0E+428402521 +precision: 18 +divmod_eq807 divmod_eq -192607.731288 -> 1 -0.000000 +precision: 197 +divmod_eq808 divmod_eq .85018274169593799363913266586603791826693440807423959327706955924259745677409236247522716306482200084873155466583790545482009219968747785852273230936553826230418639804545541505348470599817019540784 -> 1 0E-197 +precision: 156 +divmod_eq809 divmod_eq 912778091982518390318e-808006553 -> 1 0E-808006553 +precision: 97 +divmod_eq810 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 153 +divmod_eq811 divmod_eq 757770949710368280505626751199430680462643530052250553356195675115010000210092053287449 -> 1 0 +precision: 193 +divmod_eq812 divmod_eq -.675141803536640080213353040198275008536285741110822388362427593072179207361813241271350930181045798762265531661830707256139231288883487636e-863734781 -> 1 -0E-863734919 +precision: 171 +divmod_eq813 divmod_eq -4196649014156665853.9630576048746566080734959 -> 1 -0E-25 +precision: 113 +divmod_eq814 divmod_eq +sNaN5896000943063894043269077973450203866087955515 -> NaN5896000943063894043269077973450203866087955515 NaN5896000943063894043269077973450203866087955515 Invalid_operation +precision: 105 +divmod_eq815 divmod_eq -.8717972344095538047138201404249496688379406833854450037143798531019158420880969941123271486620826885223 -> 1 -0E-103 +precision: 12 +divmod_eq816 divmod_eq 37 -> 1 0 +precision: 10 +divmod_eq817 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 206 +divmod_eq818 divmod_eq +8309769181721629567901948173286338164303243343635558653076974345286407743624 -> 1 0 +precision: 180 +divmod_eq819 divmod_eq +.5442495774575376306942638587666176078623190696088910158041929320409169557354301826665438722898599183030481155763275125005259 -> 1 0E-124 +precision: 89 +divmod_eq820 divmod_eq +90504348616966571053180888388192277606468040934 -> 1 0 +precision: 196 +divmod_eq821 divmod_eq +5647263381930734815214287174031055727814212572227373138867149972396764200328218812499298758055615922971980042998725e-830630005 -> 1 0E-830630005 +precision: 98 +divmod_eq822 divmod_eq -.99363780428633770494632821459409492929452688664307123430451585981309228794961589 -> 1 -0E-80 +precision: 284 +divmod_eq823 divmod_eq 1014159228378568949056640718771948516076835006005160962122696426973702587213755286273553431553155956692897767387189091762494300476891802591092054340460743925549968485E-844482431 -> 1 0E-844482431 +precision: 142 +divmod_eq824 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 141 +divmod_eq825 divmod_eq +31267576171139048727437706235359044407265602084953190697e+857783883 -> 1 0E+857783883 +precision: 64 +divmod_eq826 divmod_eq +.815271630337857530512944007767009874 -> 1 0E-36 +precision: 118 +divmod_eq827 divmod_eq -575124598898727892847899049 -> 1 -0 +precision: 165 +divmod_eq828 divmod_eq 2168 -> 1 0 +precision: 11 +divmod_eq829 divmod_eq 41189 -> 1 0 +precision: 55 +divmod_eq830 divmod_eq -722189644149923786872314908646343740302380003176 -> 1 -0 +precision: 281 +divmod_eq831 divmod_eq -.4110 -> 1 -0.0000 +precision: 11 +divmod_eq832 divmod_eq -2270869642 -> 1 -0 +precision: 214 +divmod_eq833 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 63 +divmod_eq834 divmod_eq .97212886463218148596570774135E+977164414 -> 1 0E+977164385 +precision: 140 +divmod_eq835 divmod_eq 3612318134456029199700008240735330.6462600 -> 1 0E-7 +precision: 221 +divmod_eq836 divmod_eq -83369675206828051584786931912027511374816547538666643206277857494535859884873798448982844003650406514429335393463122719863388606440121510786534882029 -> 1 -0 +precision: 104 +divmod_eq837 divmod_eq -738288182474561675992E+455817820 -> 1 -0E+455817820 +precision: 37 +divmod_eq838 divmod_eq -6641121795077E+296122327 -> 1 -0E+296122327 +precision: 290 +divmod_eq839 divmod_eq -3656464309769430219735933480932720239843378500941905481666534298.42912031612818993554249002485031089878812719421452569833824368673667923401659758777577 -> 1 -0E-86 +precision: 100 +divmod_eq840 divmod_eq -.542774115631 -> 1 -0E-12 +precision: 124 +divmod_eq841 divmod_eq -9073381099772760244525457961188362632347066846135960922278783165387265525939721758976948095171242896137E295016306 -> 1 -0E+295016306 +precision: 216 +divmod_eq842 divmod_eq -66628202300623453922073515985802224360558926624516572843584836315850376896690426670835730743963449379434295721543474883294375761824149658755094191448529423389083687047079443030468982312978944225857612976197 -> 1 -0 +precision: 245 +divmod_eq843 divmod_eq +981177692530800947642723387464843.9557721647250366796071855257487002651728563371795928158279353026925662809763727745373984090817873432261004496267303018110318003045890721 -> 1 0E-136 +precision: 228 +divmod_eq844 divmod_eq -9788755298036809359744720358198010254583 -> 1 -0 +precision: 140 +divmod_eq845 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 290 +divmod_eq846 divmod_eq +3845899615163259894610616870076698937186136575711075264047440983821769123205E+650229819 -> 1 0E+650229819 +precision: 273 +divmod_eq847 divmod_eq +850033132612883918227278462530226377041277725902698782032727425245926499330124185740118431198886335871341836674519309212685397202865705995919406766709508205482972170060696984900414849760404993274339879007059417013771566699965586710888240249511139637227439322 -> 1 0 +precision: 295 +divmod_eq848 divmod_eq +61329941896293513092190072472273372091915086368035106032722195472841060417475 -> 1 0 +precision: 76 +divmod_eq849 divmod_eq -3364225749.33523686286854014865211897988064 -> 1 -0E-32 +precision: 104 +divmod_eq850 divmod_eq -34341195331506750946978561857071810106757271147585767759842484202175 -> 1 -0 +precision: 139 +divmod_eq851 divmod_eq 56740682858507165382601329401657124042250347759519842288200434170673262816606196716791253842890215801151743453525677379457453362697456 -> 1 0 +precision: 269 +divmod_eq852 divmod_eq 96925177544649378337408891703587293953712073066341786895132407415144595657750328796200624776257608439585935026745406919721764860982278283 -> 1 0 +precision: 212 +divmod_eq853 divmod_eq -5858044989857763630.1137389992888453803648254728096739600191012543219329621440537927194826312081802653977403378519518474836366e-345553237 -> 1 -0E-345553343 +precision: 186 +divmod_eq854 divmod_eq +336914816973401787746476349900074869810477383356615674644618377273094835422439980681412841992320057123777503000585334575669482194071150041493765571742861858020327645223369E-900156547 -> 1 0E-900156547 +precision: 222 +divmod_eq855 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 260 +divmod_eq856 divmod_eq -69253871739875962804233274716667686099970384410706775826888224775370465994504811394447272516488106728273081283215282074491615132065772043212866536694366973810109339166174264727159824386339039932297400231298834728077160457532979326422759786533703564523656354 -> 1 -0 +precision: 273 +divmod_eq857 divmod_eq -51287026428446660374214576019466624695430411446336288129786458580260664210251198809950569668548948388214811497230879.5543E-373194028 -> 1 -0E-373194032 +precision: 175 +divmod_eq858 divmod_eq +146425741759879281656249873969597531402600301445760463279292072261173488007293105957556852597713968190758565032890422170915983 -> 1 0 +precision: 291 +divmod_eq859 divmod_eq 9727094361949432634948442693.1602987539596178149609082722709629555391455706476139229176621271655301811732897242305892947174242638967423337181994712972111412931991034124009103811606692779607220e944598964 -> 1 0E+944598801 +precision: 92 +divmod_eq860 divmod_eq +7468759504664040423508145738083596109338434394399262434.567076464537110 -> 1 0E-15 +precision: 185 +divmod_eq861 divmod_eq -79432220305622810212567854164952261726514212813 -> 1 -0 +precision: 17 +divmod_eq862 divmod_eq -7045399325 -> 1 -0 +precision: 69 +divmod_eq863 divmod_eq -97919555857479352315479840958778038247055438473703939893227441375 -> 1 -0 +precision: 8 +divmod_eq864 divmod_eq -.93e-605214084 -> 1 -0E-605214086 +precision: 34 +divmod_eq865 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 73 +divmod_eq866 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 286 +divmod_eq867 divmod_eq .814263138117638873794268202019368297945239854126716820726236031436794159196316803028842517784117381500261984377461700008585316797573281026993214520747752414212521412650277742808783456E+722775814 -> 1 0E+722775631 +precision: 91 +divmod_eq868 divmod_eq -47725111523953262003782812474416910404291530.2141586172 -> 1 -0E-10 +precision: 100 +divmod_eq869 divmod_eq +76193212854988145002785926227186180640257141264644725627612115040531180315028813923370786038633 -> 1 0 +precision: 268 +divmod_eq870 divmod_eq 5029040365425419484716827743748171345317034340224795851426150182880203934190366254205512022146599367853079949217285878715306466740198107905689725752689070274165734327144185672981961884678148847563301879067047005472632832576060377063546115415E312206983 -> 1 0E+312206983 +precision: 19 +divmod_eq871 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 29 +divmod_eq872 divmod_eq -445974996900213E-382215927 -> 1 -0E-382215927 +precision: 83 +divmod_eq873 divmod_eq +6903.655194494603095869262159075629076230088298683316453797970422213471714761266e759646864 -> 1 0E+759646789 +precision: 155 +divmod_eq874 divmod_eq -NaN -> -NaN -NaN +precision: 152 +divmod_eq875 divmod_eq -sNaN96288359382817074196340556670554552475567225748072373361975378166522 -> -NaN96288359382817074196340556670554552475567225748072373361975378166522 -NaN96288359382817074196340556670554552475567225748072373361975378166522 Invalid_operation +precision: 109 +divmod_eq876 divmod_eq -.6971497534745501642427837541893905174303955735889007052634624177 -> 1 -0E-64 +precision: 265 +divmod_eq877 divmod_eq -7117613067051004888951886808208306445961542957164795724707649823808867596322375525124100476804411126225717435981435162955709296290 -> 1 -0 +precision: 129 +divmod_eq878 divmod_eq +11947276481316896678184328879608573023598667518636446 -> 1 0 +precision: 138 +divmod_eq879 divmod_eq -94698734452325283498643320344389590558624114879891226681890943634043407581051886916980497016581315858231 -> 1 -0 +precision: 269 +divmod_eq880 divmod_eq -.3095849265902585537665373084266056515646106571143986776544e+999319159 -> 1 -0E+999319101 +precision: 291 +divmod_eq881 divmod_eq 113757814457645201095872104400327601075669814445688424742900764193.863119685098030687860172694076911215370185008301226899858451781740825551713527365554382996541540495297562976342067E-225791 -> 1 0E-225905 +precision: 266 +divmod_eq882 divmod_eq 8235372795582608814203791247659283074005373581243091337933685934684531969341578126495057714419356886124500455611869685763175244870463105683314070214234383156011824370159.464359226184632243716981890162282555234159403217 -> 1 0E-48 +precision: 166 +divmod_eq883 divmod_eq +2053908587977367971874697738300340564995842966062185455130074849353456087294774740079525272600967103.99018485950089835687010814094500698445246314896534868157605586439 -> 1 0E-65 +precision: 71 +divmod_eq884 divmod_eq -286467142972368849565 -> 1 -0 +precision: 128 +divmod_eq885 divmod_eq +26535578301877259760409082894774455853473053705236459608289485227952880575326113 -> 1 0 +precision: 229 +divmod_eq886 divmod_eq 73851860447574306830624758166723121442972528661019977042951998477983039297284888760527774425511301753500269095460739741388714075682456031912164648069227206819294028950858492109624172272756344152749E-673659230 -> 1 0E-673659230 +precision: 159 +divmod_eq887 divmod_eq 97304197689404979174491662411604691921434674551041287003664842474 -> 1 0 +precision: 2 +divmod_eq888 divmod_eq -NaN62130933440770174021118085797080638786991287164284240 -> -NaN40 -NaN40 +precision: 49 +divmod_eq889 divmod_eq 607.51211751769944226214914161372123327594952328 -> 1 0E-44 +precision: 133 +divmod_eq890 divmod_eq +11153640625651561900023388255009888109266958478667900288826898673567880806544468640919859E-375102484 -> 1 0E-375102484 +precision: 62 +divmod_eq891 divmod_eq +17338844563169415412687669280265081864589991585215754.3408275E845793763 -> 1 0E+845793756 +precision: 238 +divmod_eq892 divmod_eq -900529484802180005250127927712054692133207130028918903028216498324576614675832412124701089276111406573197214168587896757674889903403789984205656152780167913014657318869569963349939795077755916e+501158674 -> 1 -0E+501158674 +precision: 97 +divmod_eq893 divmod_eq -5980501.589425492318990869836057419988057220712374998902480611330822580754569711434 -> 1 -0E-75 +precision: 115 +divmod_eq894 divmod_eq +53.5E+448307456 -> 1 0E+448307455 +precision: 48 +divmod_eq895 divmod_eq -7954553707043767721337336336.807616492612848E+263703793 -> 1 -0E+263703778 +precision: 51 +divmod_eq896 divmod_eq +57549644344356474044719973019313441823968080E+687176541 -> 1 0E+687176541 +precision: 230 +divmod_eq897 divmod_eq +344412.2301 -> 1 0.0000 +precision: 28 +divmod_eq898 divmod_eq +18979.71633512 -> 1 0E-8 +precision: 273 +divmod_eq899 divmod_eq -694343737306433040042138124138300812130697529836061158360133960452602542638849663287863547739292492008478299367392704903260074464777 -> 1 -0 +precision: 76 +divmod_eq900 divmod_eq 5920665294505469743727361 -> 1 0 +precision: 219 +divmod_eq901 divmod_eq +sNaN3582512917102019890137289655628317139766068055625769906610764283810 -> NaN3582512917102019890137289655628317139766068055625769906610764283810 NaN3582512917102019890137289655628317139766068055625769906610764283810 Invalid_operation +precision: 29 +divmod_eq902 divmod_eq sNaN25026886746045668050375708314591916968930805599505348419150672850694486 -> NaN5599505348419150672850694486 NaN5599505348419150672850694486 Invalid_operation +precision: 276 +divmod_eq903 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 5 +divmod_eq904 divmod_eq -2.12 -> 1 -0.00 +precision: 180 +divmod_eq905 divmod_eq -398960573935159533669787984269128306200893516273991145575343096637752178 -> 1 -0 +precision: 230 +divmod_eq906 divmod_eq +319341450627555313899441345053025478360759552528389137325552365583696041029398390012072820745321088090219546309476.999225957998768110394665077343696983113068633681683151083763864863427738741360569380158 -> 1 0E-87 +precision: 177 +divmod_eq907 divmod_eq -82699511936795233505038414752253406571174636634780444129338997779795017577753388060545049234532911543819302093683564813619651690 -> 1 -0 +precision: 280 +divmod_eq908 divmod_eq -83037604002334.32803446519944121466109599770478072757079803287168896360927888789226238346725460157940902035511439748233440707260154841206228095132892584582680473e-979994000 -> 1 -0E-979994146 +precision: 235 +divmod_eq909 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 8 +divmod_eq910 divmod_eq -8539005E-990897130 -> 1 -0E-990897130 +precision: 85 +divmod_eq911 divmod_eq -.206854253264775010025298812647670218798137320472633189486592472E401450409 -> 1 -0E+401450346 +precision: 78 +divmod_eq912 divmod_eq 28958634038687067165927410245936079425965347639 -> 1 0 +precision: 180 +divmod_eq913 divmod_eq +4824672516491419312582943788980213763328675767060392853403403864953907850631586319993481592160801160917693030028681995608073900514449e-454645659 -> 1 0E-454645659 +precision: 213 +divmod_eq914 divmod_eq .47101582208987317592388344565738787339193378677 -> 1 0E-47 +precision: 22 +divmod_eq915 divmod_eq +473150631.544893746377 -> 1 0E-12 +precision: 247 +divmod_eq916 divmod_eq +237623941826635654883476595579565745901116647318624657820816140069354802462385219314516 -> 1 0 +precision: 220 +divmod_eq917 divmod_eq -83730498619903253016141624870125819524306774745267098205718321777500821972626915572807285895950738411921731843874382101173447906921870344745898262829826839423519974425904193062426683125 -> 1 -0 +precision: 215 +divmod_eq918 divmod_eq 187717321017257386498298298138550180963680319811857016648118371888398428892E-821636867 -> 1 0E-821636867 +precision: 233 +divmod_eq919 divmod_eq -82351182143758660496852279942177416546850457938983957211374795671637247405397 -> 1 -0 +precision: 114 +divmod_eq920 divmod_eq +67313520193688631282604 -> 1 0 +precision: 10 +divmod_eq921 divmod_eq NaN -> NaN NaN +precision: 69 +divmod_eq922 divmod_eq -263652676109635556278077787078688301012793644301889115544061047009e-461575235 -> 1 -0E-461575235 +precision: 218 +divmod_eq923 divmod_eq +.92646447685005651940545913563 -> 1 0E-29 +precision: 190 +divmod_eq924 divmod_eq -830670827805754941279022136052628382206338941960089096470062280517.5E-233609391 -> 1 -0E-233609392 +precision: 45 +divmod_eq925 divmod_eq -7538823954831835568532138502E-46482427 -> 1 -0E-46482427 +precision: 207 +divmod_eq926 divmod_eq sNaN641153154370919049839219596336518693095618308361734228451689 -> NaN641153154370919049839219596336518693095618308361734228451689 NaN641153154370919049839219596336518693095618308361734228451689 Invalid_operation +precision: 70 +divmod_eq927 divmod_eq 937320704 -> 1 0 +precision: 239 +divmod_eq928 divmod_eq 325405582713.5484273437 -> 1 0E-10 +precision: 244 +divmod_eq929 divmod_eq +162494738031014796599850966382032538503319808288310824.816961434864449741755083595076385436622085117296099977053735393496638522559253648169671208967344853554137714629335997949821409060820425541331268153149348056561520679527663760 -> 1 0E-174 +precision: 24 +divmod_eq930 divmod_eq +1212 -> 1 0 +precision: 86 +divmod_eq931 divmod_eq -58097.80505964243265472514410527527 -> 1 -0E-29 +precision: 4 +divmod_eq932 divmod_eq 14 -> 1 0 +precision: 177 +divmod_eq933 divmod_eq -4660638145183372351937844971935304224658229995024664660795662938491.6469425384189696002560033569733393314110954076944547339280322084788844137259140891427262302229023 -> 1 -0E-97 +precision: 294 +divmod_eq934 divmod_eq -774079701292984.1154527517942510327027861761192773708742701715700874179503459381865493165 -> 1 -0E-73 +precision: 246 +divmod_eq935 divmod_eq -3.711 -> 1 -0.000 +precision: 238 +divmod_eq936 divmod_eq +sNaN6163797316887685792820105850139329784081392713913900690722470073 -> NaN6163797316887685792820105850139329784081392713913900690722470073 NaN6163797316887685792820105850139329784081392713913900690722470073 Invalid_operation +precision: 78 +divmod_eq937 divmod_eq -.7207427785758131164106820266 -> 1 -0E-28 +precision: 241 +divmod_eq938 divmod_eq -.253629499266508398679019 -> 1 -0E-24 +precision: 263 +divmod_eq939 divmod_eq -.546733249356133291085812381437862816091841088701464556936921170153254355004809294988583137805917869003982585348274076005568905326205039915445200832 -> 1 -0E-147 +precision: 219 +divmod_eq940 divmod_eq +798186486578447313634724459728988700253527542383563861812999588818669278411426499648909979422448976025488013472076299604737368960106806237994898998 -> 1 0 +precision: 277 +divmod_eq941 divmod_eq +8834156e+489880157 -> 1 0E+489880157 +precision: 52 +divmod_eq942 divmod_eq NaN1096850364614725644948031240282763961090472251191295535449626735863028684571764480 -> NaN2763961090472251191295535449626735863028684571764480 NaN2763961090472251191295535449626735863028684571764480 +precision: 174 +divmod_eq943 divmod_eq -.690304021135913758964965008623145848370096880402523733996516521424756485431706826041033606441045087652220208682734870922911159220091284811402247943292 -> 1 -0E-150 +precision: 83 +divmod_eq944 divmod_eq .54113098367820046910951401287169720312622877496159783655805844250127226571954576e+433709785 -> 1 0E+433709705 +precision: 22 +divmod_eq945 divmod_eq -223439076767159118 -> 1 -0 +precision: 111 +divmod_eq946 divmod_eq 21276780296290119546837541486062443049 -> 1 0 +precision: 63 +divmod_eq947 divmod_eq -NaN881815317499426449171240750591682325069 -> -NaN881815317499426449171240750591682325069 -NaN881815317499426449171240750591682325069 +precision: 263 +divmod_eq948 divmod_eq -83732084324549666407537356857544214865765804302190676731356808374777351511516474454291738208297234010029051345570650143310154777795593609135208568664638752E-228721523 -> 1 -0E-228721523 +precision: 266 +divmod_eq949 divmod_eq -.13659506662465750384633732441976590797007504254089391887860612766205333890451732779853350283955306157762046281282705100064075601883066069192281772696762030876632417331834622716564499995941695648984916445332509869305008557689249130511671272186495e-598869447 -> 1 -0E-598869692 +precision: 215 +divmod_eq950 divmod_eq +.2516052709796350183215861204783732578009751800792914947154815007709448679728230549844 -> 1 0E-85 +precision: 116 +divmod_eq951 divmod_eq 86735509727721960023211854948665983025940818 -> 1 0 +precision: 83 +divmod_eq952 divmod_eq +sNaN5869256997442437232517258420811035487161248 -> NaN5869256997442437232517258420811035487161248 NaN5869256997442437232517258420811035487161248 Invalid_operation +precision: 226 +divmod_eq953 divmod_eq -9207141812359770002108068865540613671279390970954880242212626744304248114534861857177468442826327948503783567040590131258339928334753713132395708428938287058416542078440992243779755095938492887166210865237752662920920215232e-817927168 -> 1 -0E-817927168 +precision: 113 +divmod_eq954 divmod_eq 683786291602823536914149790855798713756950973680237206147225e-465742970 -> 1 0E-465742970 +precision: 193 +divmod_eq955 divmod_eq -708188387313908090466561877029413483610723706029524503580449898390099012830237042041267593827515708370995741746568495514642293475511596034269626757313929618 -> 1 -0 +precision: 220 +divmod_eq956 divmod_eq 36098191336232025839484747849352803541274066917550668695462689904961717052652120169435517211708182262972296683606123354757315831089274973431952281582119487257437383199055209960500143048189173455151379955537132684898 -> 1 0 +precision: 5 +divmod_eq957 divmod_eq -177E-291580996 -> 1 -0E-291580996 +precision: 246 +divmod_eq958 divmod_eq +1360127157654509933440 -> 1 0 +precision: 90 +divmod_eq959 divmod_eq -508297366703992546565866749.3284968750057576 -> 1 -0E-16 +precision: 127 +divmod_eq960 divmod_eq -385745956726724886.48821927392769329 -> 1 -0E-17 +precision: 250 +divmod_eq961 divmod_eq -547872560984669841109663477419388171138815763395339071640146413562536631147286471758279106393710.9575595102 -> 1 -0E-10 +precision: 42 +divmod_eq962 divmod_eq -138774773067875557344.112159050961021616947 -> 1 -0E-21 +precision: 141 +divmod_eq963 divmod_eq +7782091009001034572465021683709207605942209318061886918165787777277413.759990096075487716181790077281e632019086 -> 1 0E+632019056 +precision: 282 +divmod_eq964 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 61 +divmod_eq965 divmod_eq .825058816624692813599615160593716180128052345996978 -> 1 0E-51 +precision: 264 +divmod_eq966 divmod_eq -3800281013164927746730286121586700997162030673438062395120872981904061452730394929858585470223801101439882722992742549644686383898605311086754414543144106161326961337108710580255186845012897287225041931220912960779846012843093089084244005570478013934065e-453558535 -> 1 -0E-453558535 +precision: 33 +divmod_eq967 divmod_eq -91411272674965247817383605520406 -> 1 -0 +precision: 171 +divmod_eq968 divmod_eq +57.7 -> 1 0.0 +precision: 199 +divmod_eq969 divmod_eq .791325566640678062083021348801967711299690610052261819034010054561018122987488950551809582139605802769562573911414582008621324751911951759473329003041021378539008066842232347158718434787976542971689e71055220 -> 1 0E+71055022 +precision: 231 +divmod_eq970 divmod_eq -62060882066709341105604995723998256839380121197658968386238762804081489806686372667431780634447846361568756981487115896547286684584242916193603339973140475816486747741536937558637914382433876555652900302043698585681276322021E-364237670 -> 1 -0E-364237670 +precision: 251 +divmod_eq971 divmod_eq +90113469 -> 1 0 +precision: 165 +divmod_eq972 divmod_eq 80007543780003038617706346203296054186269288335494925646969007182732557504036092680782815029797566420041660929409144310009997844260077531e-165429206 -> 1 0E-165429206 +precision: 277 +divmod_eq973 divmod_eq -.709969294008661799211549420591887984591424773770638588040749977651721167990305622348776859113314292080908367849877983294074251992466007295812407271352861749454907767967636868088605842916079270746816091484682926464563059201928938333299562408 -> 1 -0E-240 +precision: 244 +divmod_eq974 divmod_eq 47598610663601095597157087052984594056386663259520357973572275869418658375037184414143663086692 -> 1 0 +precision: 41 +divmod_eq975 divmod_eq -9.5835113 -> 1 -0E-7 +precision: 285 +divmod_eq976 divmod_eq -78823048603919674614614322379424400855894250316148840100136 -> 1 -0 +precision: 241 +divmod_eq977 divmod_eq -.6514050082304734667540923 -> 1 -0E-25 +precision: 28 +divmod_eq978 divmod_eq 4017039755039571977360 -> 1 0 +precision: 166 +divmod_eq979 divmod_eq -53063520991591187779777968140604094021825872610086319768056350913610657101371555599298790799302654306247107239960809025 -> 1 -0 +precision: 11 +divmod_eq980 divmod_eq -68197E-855320687 -> 1 -0E-855320687 +precision: 133 +divmod_eq981 divmod_eq -39986829858160084961222E+326439154 -> 1 -0E+326439154 +precision: 258 +divmod_eq982 divmod_eq -89925499422352057708385026058578991112269227250359724334529499706978539789236667740363507434353060038155645685657010527330337308613601 -> 1 -0 +precision: 231 +divmod_eq983 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 212 +divmod_eq984 divmod_eq .353 -> 1 0.000 +precision: 144 +divmod_eq985 divmod_eq -.104892041993278462403155096946939074859506672458218405718152797831528188845817382294053244956794016745230805537570017510400217e-436429920 -> 1 -0E-436430046 +precision: 243 +divmod_eq986 divmod_eq NaN169054674269094646439350719907 -> NaN169054674269094646439350719907 NaN169054674269094646439350719907 +precision: 49 +divmod_eq987 divmod_eq +925221556003062591944514199581221943336953 -> 1 0 +precision: 6 +divmod_eq988 divmod_eq 74e355484854 -> 1 0E+355484854 +precision: 175 +divmod_eq989 divmod_eq +34315010682232319952622219492433916389940597586053.44542604579198509647152147054395272798628538815514755547987229353155567050258666556559266150676541484078 -> 1 0E-104 +precision: 274 +divmod_eq990 divmod_eq -1755688721701332926298855838142270112781001133971648821970344379781689912863370524708160056721513980423050512493374788046662315214750402232470267541578679319903494060771624029445908803330962610464052225463264027427805509671753130016054266585252508260070 -> 1 -0 +precision: 200 +divmod_eq991 divmod_eq 81643885931447222058378704467701769267030829545491683718991687445981373748791731233258143538554705659290324776.759772648069E-46067172 -> 1 0E-46067184 +precision: 206 +divmod_eq992 divmod_eq +742861697104690192003040070177248481254396507354402356573839108625551040047688310368245907662389E-674887303 -> 1 0E-674887303 +precision: 217 +divmod_eq993 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 217 +divmod_eq994 divmod_eq 85856094926073980561952068705618060341350573481145616452257235733981104040153677086588781141088949807463372635616936530544833181491034106257163020113 -> 1 0 +precision: 25 +divmod_eq995 divmod_eq -59817929864285423554763 -> 1 -0 +precision: 174 +divmod_eq996 divmod_eq +86316828984530210955191424087798313133877907940393498.79262290548382320915285060086201E475532754 -> 1 0E+475532722 +precision: 111 +divmod_eq997 divmod_eq -800732873249143224844306188394573179806841173400976347422559450081201391141463290052879780382166599948545518578 -> 1 -0 +precision: 36 +divmod_eq998 divmod_eq -353555.842152e589679505 -> 1 -0E+589679499 +precision: 189 +divmod_eq999 divmod_eq 964767157703212359181510 -> 1 0 diff -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/testdata_dist/extra.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/testdata_dist/extra.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,2747 @@ +-- From Python's decimaltestdata + +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 + +-- max/min/max_mag/min_mag bug in 2.5.2/2.6/3.0: max(NaN, finite) gave +-- incorrect answers when the finite number required rounding; similarly +-- for the other three functions. +maxexponent: 999 +minexponent: -999 +precision: 6 +rounding: half_even +extr1400 max NaN 1234567 -> 1.23457E+6 Inexact Rounded +extr1401 max 3141590E-123 NaN1729 -> 3.14159E-117 Rounded +extr1402 max -7.654321 -NaN -> -7.65432 Inexact Rounded +extr1410 min -NaN -765432.1 -> -765432 Inexact Rounded +extr1411 min 3141592 NaN -> 3.14159E+6 Inexact Rounded +extr1420 maxmag 0.1111111 -NaN123 -> 0.111111 Inexact Rounded +extr1421 maxmag NaN999999999 0.001234567 -> 0.00123457 Inexact Rounded +extr1430 minmag 9181716151 -NaN -> 9.18172E+9 Inexact Rounded +extr1431 minmag NaN4 1.818180E100 -> 1.81818E+100 Rounded + +-- Issue #6794: when comparing NaNs using compare_total, payloads +-- should be compared as though positive integers; not +-- lexicographically as strings. +extr1500 comparetotal NaN123 NaN45 -> 1 +extr1501 comparetotal sNaN123 sNaN45 -> 1 +extr1502 comparetotal -NaN123 -NaN45 -> -1 +extr1503 comparetotal -sNaN123 -sNaN45 -> -1 +extr1504 comparetotal NaN45 NaN123 -> -1 +extr1505 comparetotal sNaN45 sNaN123 -> -1 +extr1506 comparetotal -NaN45 -NaN123 -> 1 +extr1507 comparetotal -sNaN45 -sNaN123 -> 1 + +extr1510 comparetotal -sNaN63450748854172416 -sNaN911993 -> -1 +extr1511 comparetotmag NaN1222222222222 -NaN999999 -> 1 + +-- Issue #7233: rotate and scale should truncate an argument +-- of length greater than the current precision. +precision: 4 +extr1600 rotate 1234567 -5 -> NaN Invalid_operation +extr1601 rotate 1234567 -4 -> 4567 +extr1602 rotate 1234567 -3 -> 5674 +extr1603 rotate 1234567 -2 -> 6745 +extr1604 rotate 1234567 -1 -> 7456 +extr1605 rotate 1234567 0 -> 4567 +extr1606 rotate 1234567 1 -> 5674 +extr1607 rotate 1234567 2 -> 6745 +extr1608 rotate 1234567 3 -> 7456 +extr1609 rotate 1234567 4 -> 4567 +extr1610 rotate 1234567 5 -> NaN Invalid_operation + +extr1650 shift 1234567 -5 -> NaN Invalid_operation +extr1651 shift 1234567 -4 -> 0 +extr1652 shift 1234567 -3 -> 4 +extr1653 shift 1234567 -2 -> 45 +extr1654 shift 1234567 -1 -> 456 +extr1655 shift 1234567 0 -> 4567 +extr1656 shift 1234567 1 -> 5670 +extr1657 shift 1234567 2 -> 6700 +extr1658 shift 1234567 3 -> 7000 +extr1659 shift 1234567 4 -> 0 +extr1660 shift 1234567 5 -> NaN Invalid_operation + +-- Cases where the power function was impossibly slow to determine that the +-- result is inexact. Thanks Stefan Krah for identifying this problem. +precision: 16 +maxExponent: 999999999 +minExponent: -999999999 +extr1700 power 10 1e-999999999 -> 1.000000000000000 Inexact Rounded +extr1701 power 100.0 -557.71e-742888888 -> 1.000000000000000 Inexact Rounded +extr1702 power 10 1e-100 -> 1.000000000000000 Inexact Rounded + +-- A couple of interesting exact cases for power. Note that the specification +-- requires these to be reported as Inexact. +extr1710 power 1e375 56e-3 -> 1.000000000000000E+21 Inexact Rounded +extr1711 power 10000 0.75 -> 1000.000000000000 Inexact Rounded +extr1712 power 1e-24 0.875 -> 1.000000000000000E-21 Inexact Rounded + +-- 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 -> 1 +bool0937 isnormal -1E+1000 -> 1 +bool0938 isnormal 1E+2000 -> 1 +bool0939 isnormal -1E+2000 -> 1 +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 -> 1 +bool0987 isnormal -9E+1000 -> 1 +bool0988 isnormal 9E+2000 -> 1 +bool0989 isnormal -9E+2000 -> 1 +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 -> 1 +bool1037 isnormal -9.99999999E+1000 -> 1 +bool1038 isnormal 9.99999999E+2000 -> 1 +bool1039 isnormal -9.99999999E+2000 -> 1 +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 -r 5738c611ff2a -r 6a1c8fcce229 Lib/test/mpdecimal/tests/testdata_dist/fma_eq.decTest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/mpdecimal/tests/testdata_dist/fma_eq.decTest Sun Mar 06 08:37:10 2011 +0100 @@ -0,0 +1,810 @@ +-- +-- Tests fma with various equal operands pointing to the same decimal. +-- The tests are random. +-- + +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + + +precision: 90 +fma_eq_eq_op0 fma_eq_eq_op 1171338855698368789056737337147116733764903254 6334341367673830006086235053199346622349828839 -> 1.37203471486876402097062945058787905483129562161521709249566934082907767436352197432961736E+90 Rounded Inexact +precision: 159 +fma_eq_eq_op1 fma_eq_eq_op 8846971720773377832118709116655976973169530112542418661239912443 6256181023698902965000946039667715131691025387162696107046936851 -> 78268908628163862019856367747135852723774224319783179476206001612701777270473207771109192335032068044416291512398851733353165100 +precision: 255 +fma_eq_eq_op2 fma_eq_eq_op 43160782777719481063272448014 49812293344537606155996723694 -> 1862853169985486563497651896052778055443061751840329267890 +precision: 93 +fma_eq_eq_op3 fma_eq_eq_op 2032071158752304061247812627062271522999803982027661360583876846812153089899539485250840 6360518457329636924305818275371080716215939771089431758009813661626572665849888335794576 -> 4.12931319423293173438185246065285707617873245447024136224145210538137905488220974932370465884E+174 Rounded Inexact +precision: 227 +fma_eq_eq_op4 fma_eq_eq_op 95019985613539095380134663979529421356656050721802478521977200303668310888 94197867895449893953505329706678321477778056838953868383808842326244093635 -> 9028797665997176656298151698503832425497797348392415467972558968046789558677401017404152498353487199247588110290399071760384180693759079897263442179 +precision: 16 +fma_eq_eq_op5 fma_eq_eq_op 67169 40270 -> 4511714831 +precision: 5 +fma_eq_eq_op6 fma_eq_eq_op 6035 2016 -> 3.6423E+7 Rounded Inexact +precision: 255 +fma_eq_eq_op7 fma_eq_eq_op 919714835167928220697646 3151474554386379581146725 -> 845875378027969376609761190338051688806531088041 +precision: 105 +fma_eq_eq_op8 fma_eq_eq_op 58579003124809768895928117957313023553972689968155401536107 22794089507146936899463699393953759679522227930126086846282 -> 3.43149960709647266874523823106657285395941102795802322964548707530581174913438709191028985167041180921451E+117 Rounded Inexact +precision: 289 +fma_eq_eq_op9 fma_eq_eq_op 6321362770115478028524034566684857904461014331846496299246563180914 32450823797853435926597568489482833970766353654307932459296863082394 -> 39959627271402029920542995495141283901003961831157061583783573635210750339026361102773680005604968764917492752009838209213726756957790 +precision: 55 +fma_eq_eq_op10 fma_eq_eq_op 39761884238052333 77824034961941106 -> 1581007438160274635843692208683995 +precision: 28 +fma_eq_eq_op11 fma_eq_eq_op 29207002 95382734 -> 853049061210738 +precision: 113 +fma_eq_eq_op12 fma_eq_eq_op 9920719456660795669387529712912849276834068505892470380963323514190331190298016458913474135546987 260630857608668459485898773458211679011402442943622770781592317441212422021975265378485821653434 -> 9.8420674537768072843903470170026509979119974651642347484874365516173350444970853431534683067125707754851430995880E+193 Rounded Inexact +precision: 251 +fma_eq_eq_op13 fma_eq_eq_op 2687293332990479408111011206027031441206498772219491635582831064397692054590788181818533617541850913052804269257555046970074678138286341245902 6868680505236553401291011930357017021221331841218539811296027125922992102170075379745347828892152238374532744002915901123324117536171066922318 -> 7.2215454575350796427811037173593786986835121269340288665616432949197399303838961208742351747645215690138308580147807387575417287646389468779244303336903932438309402857067598509803897385135643804460622338311955832363618935013535707023605373671303706398E+282 Rounded Inexact +precision: 270 +fma_eq_eq_op14 fma_eq_eq_op 4142770244507408737694289233754225199473641658092064739266239436764311613758679323664580870116711451279 7032248618403290957205640502249393109300206816717356020722219303857965719999106425326189255844382234130 -> 17162545298775975176388468839741641147214630140789271545826260055507883599248192962413805213756308129007602703363991517876495456414184094838455179469111148081087410436567654384482810332868617575494772969971 +precision: 152 +fma_eq_eq_op15 fma_eq_eq_op 9609039364262843755162443476219003253904241787210398361 4582921401580637664966964943612588298867459030119501898 -> 92333637503952876475944081994454694834775591957949791725766664009421273476790925898319780313776748714430988219 +precision: 112 +fma_eq_eq_op16 fma_eq_eq_op 586383988415267445273220419940131761801076068325345444470214379490294331453039400115120021381 883042758413607078927498338006758859177980474826535853700933576710670188697769748427700340278 -> 3.438461818697965054642125299988054839561426325171779503332210986806412552656799610603777763362193385451418139564E+185 Rounded Inexact +precision: 156 +fma_eq_eq_op17 fma_eq_eq_op 1206433326869742401116446050700669204932833028355736557631070997591867524926617013214183483517803253711718540803593573297989296892464067834575497336 85275614159310039238944599455057818253492804007182045386856554315551326909294071167147634320705362699890189553749778183308328180484738344068863896058 -> 1.45548137218199471224073208879254689512608192993759643946680129831316998230074043077527777902945154239589116847217848426060477592867106615240560513128852631E+294 Rounded Inexact +precision: 219 +fma_eq_eq_op18 fma_eq_eq_op 35727166458674908067967 69952778734247567639155 -> 1276430423165865371540733826980713196259152244 +precision: 82 +fma_eq_eq_op19 fma_eq_eq_op 136831165503 407089955845 -> 18722767853316467198854 +precision: 266 +fma_eq_eq_op20 fma_eq_eq_op 737667968468271760037774478957340970259100526723697860792462847753060807692332619001803815229002289814895181809410240755209853536394645273033904170100971905597314043755427777204515509447421571110125962504912882034447213479 39512155254732703209389643895098290912109353706810590032080671777577209517850490909324619762731759206889254116132653143492713078604153529862634811889474349899076688229927479621594460860339757816962702992682374923901034578573 -> 5.4415403170410717961697584751831598791865919149917171192071576682769208155734785192956894729598938092699432431192678003775639423878379755431417855281758343111785229956369843987790926495260079424986102474931103017727789983576036497596264451118286849765613473500304868E+443 Rounded Inexact +precision: 45 +fma_eq_eq_op21 fma_eq_eq_op 19504819998998669309889754407534565953989 13441506831737592232871798822678997241217 -> 3.80438003193338450258850422277293366111738793E+80 Rounded Inexact +precision: 159 +fma_eq_eq_op22 fma_eq_eq_op 782083265393447452693444388996458570514965908772856096830241405476749549661506614264571050829865402260660845 327185936565608197559176977401077574830757110040013706455325431022079235030822199332348669588343005859320756 -> 6.11654234008477561971644961715520944920726582409557960704532496040381194363875538470107276855339946714787389342211674436957484605701795622398857661510626240063E+215 Rounded Inexact +precision: 24 +fma_eq_eq_op23 fma_eq_eq_op 824230219106550 345201439767974 -> 6.79355454088431765881693E+29 Rounded Inexact +precision: 149 +fma_eq_eq_op24 fma_eq_eq_op 4680091136565499264079325331838686303817566723149494256228270373448947114810568294285051813966589156322061984611657440367048021342473717632 2754438032845676054481241463251416977933854757097325386984591278758436851292015568510355713902887080589901259441453388451924853434844602158 -> 2.1903253046558946682784136790471247234311352215543774586351928266586292728844575229228530720889801760726189467199433801422850383126954587901906336337E+277 Rounded Inexact +precision: 167 +fma_eq_eq_op25 fma_eq_eq_op 4800853161721968330783965083304713968829699125446446720648954175158379057675050623640448627168556683454478279900398246046669076061502 6880412930892811997776805510729734798025589017755091542747528342705200910885541990713367382708697134162487113474399145322182249344547 -> 2.3048191080415819807493423027249113591472064736405285526915814111279556354549685112079927809110005316329284101854151819161792318373943608320356654174800389749526431562E+265 Rounded Inexact +precision: 262 +fma_eq_eq_op26 fma_eq_eq_op 56845219726279424518441179629679026682939674373313592109125578857952747412892339778834350570261053520366828012537771712880270302878278470335474326567061733357693509847539305789604879202733368927819000486605636569262764704926536040997825441058300649935856686 238440661987106453512216345581330742724532255980404733789745631473775878035502893704277890018395812559413024884660566933881000137566871495446238985116849138431575190743684657498833902787617872411881680090732504474847374402552487934283976031214999627833023331 -> 3.231379005728987411371319268172985250425989051224627826082428734465352828173543877953931995842122110243253086634001025841654109015054676601663819641691489985060316431714866460809026507099457948215198472496972370473272600795818215666075729491668191554347574634192E+513 Rounded Inexact +precision: 203 +fma_eq_eq_op27 fma_eq_eq_op 556831127109653204483456865016421621243935346993513988303067101460412503290668244852257385158757760913162731132658140718852279594734661821456687345446500703776744590388648587932027417349350910125 548303346561072486691867262632838888364641333812577535529302895837631664503322468753697427074075037756828590508824731142337340611328514881444320205406299720861446757743454162842856923907390576440 -> 3.1006090411820676387539330325945265445227814946311938037739493128277150651918402239779826626534885924302889230606997109149198733769352712462268012476993704589802824485607085105128927177793161369873391939E+389 Rounded Inexact +precision: 61 +fma_eq_eq_op28 fma_eq_eq_op 38349256718435 53008306141319 -> 1470665490856484993174990544 +precision: 292 +fma_eq_eq_op29 fma_eq_eq_op 18344290834655328742791871479950344534980973 862534216923404836814525750635664078909825958 -> 336513006226419497655736798879847414902577908724729948371741801913656971478144381852687 +precision: 125 +fma_eq_eq_op30 fma_eq_eq_op 7075865937649968789577445285320153574408617647683131013605060692629009690825152828853948416303372617035420079210720 1922991366673920219982386590031242686320345871481290115937004105438859352539147347865540338497610231427681848298470 -> 5.0067878767595072005990790863181010980493507514639522193748735852116365576488807066268279478619997833051745927470016904063647E+229 Rounded Inexact +precision: 90 +fma_eq_eq_op31 fma_eq_eq_op 8788021824837780067252678241448195755954368462439 5147797262341549481926040820281569170341383909015 -> 7.72293275938251460061593236576792734146660055207141459652213159906733560334711742241585223E+97 Rounded Inexact +precision: 249 +fma_eq_eq_op32 fma_eq_eq_op 1531352382614938242535139966246269788195071891529106986854989846587822 20448235172085923436915402193221074770845394222717697114213608402256 -> 2345040119740448209356309654161456301955533392203525705611235020347730307302573907359413953840361315722685839376575625934948513069967105940 +precision: 168 +fma_eq_eq_op33 fma_eq_eq_op 2278556424983748976382810641359609662512673427408972656741873091577920729177701111293471390232910508232262425659154768850 5987329046382942421270262612787698712851528247750716238574387932088021344725887102524951228761384837636130769503260700196 -> 5.19181938183472287644871698862522511032683053252487647895291753389152791229903494079765818660427589003858347861344147812741113837075601291655260273415761273427826919191E+240 Rounded Inexact +precision: 138 +fma_eq_eq_op34 fma_eq_eq_op 743069258948717338590125763846785175434030184136673 172968393152319937240773663998303451093109634135364 -> 552151923594595942575863623478159103862455033899106013394486596285095817633953939490715363803977644293 +precision: 2 +fma_eq_eq_op35 fma_eq_eq_op 56 82 -> 3.2E+3 Rounded Inexact +precision: 292 +fma_eq_eq_op36 fma_eq_eq_op 205752428085972506938477755017298950617784157457100336351186255448214254741160350169679001960182114909684020983571086725337079282324366988593953377940158434799735179384709955024627638699694172933811940340143778906146177557871 108028342770468392110781563654259274375182471046142685222831981751694357636249484084287449116980939207122872261974532297905146453711231126243565987957430717688534370348125541464043959227054531015707628831276511226061524866198 -> 4.233406166327328809506856138688348791184540568733709013468460431879397908184138671134051973924326300298515056283147380089076188812270636210400947866176756300708901945181694839052622021557255181342468573256665942619483736695427657446617972662909026070923854402855621271004608079394510346049681E+448 Rounded Inexact +precision: 50 +fma_eq_eq_op37 fma_eq_eq_op 8697564439859034166666 906046782789596285062 -> 75647627185500394761499247327030338661840618 +precision: 262 +fma_eq_eq_op38 fma_eq_eq_op 942206763350568177696776520800398585826486526190641004 314012393183928641708389641780964790847254787180522579 -> 887753584903553584959875249609130120154997245162244285596103146936434966233430779444796589101822987586650595 +precision: 232 +fma_eq_eq_op39 fma_eq_eq_op 109733323783440637186262596300082 257785018071740245121458304926577 -> 12041402348561418597151161280048407073903996985160442214098133301 +precision: 206 +fma_eq_eq_op40 fma_eq_eq_op 6344557800765208699003697619565350134839009283418510241999356354458664499593540322378496357952805973150300976340554091574298053536809886242699954987024216698819770139742019103367465048489950067299282017 6883026901510833149053923894212844946365097649879184133938497442127210561883874060579963667506714303990256068123025072258596040803213740145747403742965766405420136509031149810680348458374256661229368284 -> 4.0253413687250661640369068275140481117761786903480355437061096237215149841788738086484818594286497729014438557417591187824482048361994920261245510480236253133257209218803494934260736169453339855194611819302E+403 Rounded Inexact +precision: 44 +fma_eq_eq_op41 fma_eq_eq_op 87250607185526 83953278509539 -> 7612668454243045216262406215 +precision: 22 +fma_eq_eq_op42 fma_eq_eq_op 7637259297477 4769315474780 -> 5.832772957690364889404E+25 Rounded Inexact +precision: 190 +fma_eq_eq_op43 fma_eq_eq_op 34893551228236972471470459178334983915287805488951929420551775225843700159015510638904034996694306682869235542787204229174446647940153066903755123871085897 4841134954803021874341047232335343848358755807102398288743670534152787157856628969496924060658168796349008424396048449498979199703009333067617403643925054 -> 1.217559917317597930129816627608063915574512779831669114615667312999662319994160116509337379318008125580912016311076842147592595932851294896646797704313997594779473712919612174040858046966352E+309 Rounded Inexact +precision: 115 +fma_eq_eq_op44 fma_eq_eq_op 31963828069397172171675022972259842422378108991929704539880 87381857357324810694296271270593284949488509481407921914870 -> 1.021686304849982554779581317787830973084042992649874105948350433067194666113466628690542320236538131163114890432329E+117 Rounded Inexact +precision: 185 +fma_eq_eq_op45 fma_eq_eq_op 11317301085042440533794584541266395584828739699889495618840423256785319332081241324432724835228504746795923362629001492184331218938490428246674265606 41615101501043261680382341581635428511189636409358375368209960155352793418822591265209586602949438854861890864933837556447719240304500736964397058669 -> 1.2808130384950280182332466279090558132496418792992141145563618560578755249139070579969887070796498580780097729553700452377829842413921694777581455037338024465740755654049993688356849657E+296 Rounded Inexact +precision: 242 +fma_eq_eq_op46 fma_eq_eq_op 419403190058739337215155289186999237123502568536276039989883873111441249229 349956518291463340964089786077232094982317228330145857520119417749037816752 -> 175899035831447030816493998997275700278393809316037530619027720637071399594420190352117952515460489069706724627036077053917913529460839281469130911193 +precision: 279 +fma_eq_eq_op47 fma_eq_eq_op 7977825179090074887313530550841866395443916653453679676811764244997248872722119236572835886183674811771172569904076182363574281917468878627483225884194213655410006224546529438527916332636595 6186821682734051403443481558740130342197155609693865912004713897683128361655865624921759001771003563902793540026937986500792416575187863450303997732822551235180580722690259774886217512448245 -> 6.36456945881235854490190568771085079808274574677889864552223035803487022821746318402114289744204260917171906702671698868640245392918208748469102082641271604120624619066067069502683429980154522259513780664191216241557392783846649398108033242019027704673364634369118207973843407247E+379 Rounded Inexact +precision: 52 +fma_eq_eq_op48 fma_eq_eq_op 1914890886959830523121 8228806468274681068085 -> 3666807108961806438587533789995007196648726 +precision: 164 +fma_eq_eq_op49 fma_eq_eq_op 558331513528226380087881522024353309491826315304679782667903534491203335163075762204499605932697238035518293829427021229063 254136671632976519542098216837203031155250167174077232217904199543669360007210653496870209040022461673020992339425452374150 -> 3.1173407899872003728098303493394708877360929845564484212757328119720832280223422577820918219512933910202022843885482071110121592398245368131451731936672808007795951E+245 Rounded Inexact +precision: 227 +fma_eq_eq_op50 fma_eq_eq_op 9957834973123833369854645073818390228446531457986181509318110602657164058294457791620643223442458963051038501314361762870681885064931170886590621278889239251626526934246086985112655558437775018054753493568397838679116251509327 4612760212414105647920194160390169408282887282893916291772038025397850681750551443877864620139197940920604797585534832103828085139844353176650508797939831819331076092779506071773051552393773641409930862143296341481721165797125 -> 9.9158477351968135251341391988631423054083448940251425704777543581363522040314850001545147327871729117122040671538881612236555905005473050287412041796556743272550105616319852026497578076977940508848045998278154851202465416121157E+451 Rounded Inexact +precision: 287 +fma_eq_eq_op51 fma_eq_eq_op 6399770919808459529429921820964231541075 7179625636131106026190147373493518931803 -> 40957067826026016132921683447226877738467820308716209172386670125177362931087428 +precision: 278 +fma_eq_eq_op52 fma_eq_eq_op 42145441191473047298020468711292635029429377518455823664011846620276725650723404282683923635109258247206324940673197122960 15340420199174423261900207237933197176641536395421782130534981263269368784657261065012591800055865092835268108775524797728 -> 1776238213223913072639790003318243080589626234127720283004787162864739697372639697986792491941919161427326577100828381190591077293434646175699664586569899248314156943474448407056941413832608800958689349020937927223960279791818879270396883959328 +precision: 204 +fma_eq_eq_op53 fma_eq_eq_op 56427605940374969771790978594207113439308936993146569532627102049171487128310917950706054567438459994447465728734673349557724690 40020191943407292942075335115053006335871748992067079090605165011439318707984469862832095825675985095020614226024122988897064851 -> 3.18407471216224057664420673865154530636270273878143746293502044088948958042471081595063241952632981844662414668256307858750647372962647182257487217487852607384671588017344543823027216421851745500221185963E+255 Rounded Inexact +precision: 41 +fma_eq_eq_op54 fma_eq_eq_op 28246972267082969 44710722526079939 -> 797891442257354410083770855934900 +precision: 270 +fma_eq_eq_op55 fma_eq_eq_op 932762364870906249820540404193009917028701688462806603648463483431125018888400071673238071071 948758757294308549719782580864602151815770279628466824520548935743245810515819598338218865453 -> 870045629319565641568441382321652417776914118194481739692850152102541350612639194746444201753703701981789472605543680002589556948608960801791143932231743888298096098524212019739065952494 +precision: 277 +fma_eq_eq_op56 fma_eq_eq_op 44755432475028441514869479545311018884133902034798595294869451809844868548830204151484055547061185716783839700952139956310684412039634470593839675166038134124511884174078842516992081377662813862167201872945849125809614924919253973058 77981640415275795542451542521115045172372662677710800344792066798292990880847685562565981534084198415347662933635958179006179126019886623010107549764843231153940924297544064540722197655510693617119077767799764148551308685829381030401 -> 2.003048736026830450221456209376890087910686751388996237534782672768946247594606110507463851554599055857884980074678570303911983639238785064018092018469191366460570407168299711743064803410389656062188719754955305132883778654902538096625042624634216513376523269197793846273833432E+465 Rounded Inexact +precision: 155 +fma_eq_eq_op57 fma_eq_eq_op 69578521411563282828762662677392621253545070640152637570963841047046019603 75160185871815188731380402231078753715133033189050621899318227211937905631 -> 4841170641819370203644340431017845034250443903470282765391856898560528523877609455791832749300795307764276628473556254813769958692996433697798183240 +precision: 284 +fma_eq_eq_op58 fma_eq_eq_op 26019907723665241138265260352030784657531055195674817128723901423968515767464423320726748 60279123544799972199958725484770008488056791336389957909340187569989338894481646631391484 -> 677035597948054070791853663084863484129457269044134195468201233641138088887128629475691023557751846582509514336360734206991302247910039385561554789500773683445186320101514046988 +precision: 240 +fma_eq_eq_op59 fma_eq_eq_op 927024371835082 5483050759121106 -> 859374185976233856314965067830 +precision: 246 +fma_eq_eq_op60 fma_eq_eq_op 24144413560019527617627622481560244633105713785127062428572923951778715944947393635911789410619623350194857688260655923787751068207556709588491122430565013980769301365420857009640531184961 67238622304823194647393331407498640744130591686644348268420789982395880662268372589526954868412743279703253863176658538640137984851960528937569520425059768365464744543640558972941853970388 -> 5.82952706157254839351686107876538251585224547672804572259927795854348606085992978188355181835852584555625130625189935382494432218838259043376942290313123003777209784037362682892980610298148676753823025822293052196234367419787502822615808427048227E+374 Rounded Inexact +precision: 265 +fma_eq_eq_op61 fma_eq_eq_op 13198215899922131942999562363157453830884247111682130245668507180884071495173502075845649820391007705927955788445175854051424385 810321163113382417318135988455938832844638637558223535447328457409028411880705221955408943415366305458526016285361693541211120076 -> 174192902940957371143995498783233586113445964139634014433297314570668072912854220330104275168383379818745869540509404229990915361716234919069791370397699408930736180871782322229187216218977720745146439629215712583697581973984864966612150381937588583748301 +precision: 63 +fma_eq_eq_op62 fma_eq_eq_op 70372742581187467646576010289108970248 32839190235676664006961459555098056046 -> 4.95232289839807576643055406036945865017609651444458925591205910E+75 Rounded Inexact +precision: 39 +fma_eq_eq_op63 fma_eq_eq_op 385757927220080789 675121587364522725 -> 148809178413133147597885947051385246 +precision: 140 +fma_eq_eq_op64 fma_eq_eq_op 484241408946576020719122775367829315458066219793403164842947019850860459489338507690376115237818 803348447078271516767084428433273244090326227785161822245452360831496953910485123119294506263176 -> 2.3448974213856507500013653353841992095738568744396113501978746512238428217546897173089829694079123407571455298947684811068669701652056502737E+191 Rounded Inexact +precision: 4 +fma_eq_eq_op65 fma_eq_eq_op 4732 3237 -> 2.240E+7 Rounded Inexact +precision: 157 +fma_eq_eq_op66 fma_eq_eq_op 850764062260643776159856229736330501958392574420097864759893947410314226804103191170973970719114874870052030321174948243 594630915742877925604156546222433488993826688951545568462877123392103170423202184769520166751882866655870557197303266398 -> 7.237994896342325595494912727438406923379973902228956549194128061082345920259501521218674697971089891721288141922979835284433506253818878177668750045026748881E+239 Rounded Inexact +precision: 35 +fma_eq_eq_op67 fma_eq_eq_op 368566295871840314972492732351230 14945143584666617744344450403010 -> 1.3584111445268893520219488136557431E+65 Rounded Inexact +precision: 186 +fma_eq_eq_op68 fma_eq_eq_op 8070760402161295016910106785393231432001888494005344727473067235220751783449893484370327 872079251864278261292623117248702281674170678474389104944642831511568792854833546347548 -> 65137173469094748475062036556766440114296908514327197652874841752342742463503095017591411697866804417591671750083994719104566281196481897108044231386590293933748519469224434477 +precision: 86 +fma_eq_eq_op69 fma_eq_eq_op 750665521941777343 22569557920689070 -> 563498725832121001607695527708828719 +precision: 158 +fma_eq_eq_op70 fma_eq_eq_op 6360677373 3742816852 -> 40458216647136997981 +precision: 220 +fma_eq_eq_op71 fma_eq_eq_op 721445143333551 992437672650841 -> 520483094839568939334514920442 +precision: 213 +fma_eq_eq_op72 fma_eq_eq_op 100638453821693426452964787128372137994438919601311338792490319217408557650210678422660527585704751092258426442503532231993678056905867113283 749675752232054070592872225387966252582247274414124016809749691108370623293591898855771578432922049180534593819677392864715839317496058206224 -> 1.01280983876211202321713939561612205430484170647767547080010342338279821938714319875345837301593241135291751381564165994619244463593569411352288933417785985263029768461552037478381217802410041501343221994864028644E+280 Rounded Inexact +precision: 94 +fma_eq_eq_op73 fma_eq_eq_op 534916244488413060250446667021536055936785044460309389103 637914114191895158301416026315112960211324618676349876273 -> 2.861353886175876956579765783141639143808604698191922671085025628016206004565219115942961691510E+113 Rounded Inexact +precision: 243 +fma_eq_eq_op74 fma_eq_eq_op 40750062087630534952676865928623924968802173332361455036085863786754049439880542847459100782750172367067762781157837364773988679097744640132 47910071687674462178333882011183931799057430251265596371212862855818522795729671380822046295261996134417553023410424341103733310421831370973 -> 1.66056756014574347250860936120654692346072499402637244610195856031090817288387108920340991590666479085937846398586682198405082304046657813575197383178070151966243341073153474646123182583045629316740295261945882733655235388106510727718991865711E+279 Rounded Inexact +precision: 176 +fma_eq_eq_op75 fma_eq_eq_op 753710649317742644212823374391365029539749059092316744367696946182775533927142794540841113716808362072905074252308879081983861019443207713940802018160934362 104470515717127477074847035816541152583288763967340424588194297407834857755076652297384909907259832606797243423679191847853770411952380920598987416382383625 -> 5.6807974289497323027020678722112829223413908844874187514458255485255701998293932045171539191212521487477804938307348108072793718468411283470099318942141246290504684529699173206E+311 Rounded Inexact +precision: 176 +fma_eq_eq_op76 fma_eq_eq_op 29787846939137 16314469850977 -> 887315825269469854252155746 +precision: 88 +fma_eq_eq_op77 fma_eq_eq_op 66338777433282195231986190497677125357363109589759405 41072363836768545385970131567161767692558764342285896 -> 4.400833391342551042863851022058840385027280404084656986417376461886505202295203907045408E+105 Rounded Inexact +precision: 182 +fma_eq_eq_op78 fma_eq_eq_op 556636606470346402438846457295889775196549394294934954679139184670126178654647602767664546024291895922924735811329922233754407350177154256340473318 584464978303992348438207619772521687023561053224918002577379283956886275148980469914091775979605871266645596632785308568565042138565171302912822469 -> 3.0984431166282328641696496737578135306274349888910162127313879471702586424981263065540776486310538376311591038812388936547409401578452549299802906846753503435031826063796021406360319E+293 Rounded Inexact +precision: 248 +fma_eq_eq_op79 fma_eq_eq_op 20960721433721852961185072525362285048458769570797646343247 29481459219677077529860998452710054790716103631647688309538 -> 439351843022086691159494005221613026432069627878408829470433651316587162048032537902393094436945952980106958630812547 +precision: 80 +fma_eq_eq_op80 fma_eq_eq_op 5154938778279163978006211097154878341016 486294814903821806069194644841687452740 -> 26573393807806279715367845945771467977130898149006905402924555404264710075364996 +precision: 149 +fma_eq_eq_op81 fma_eq_eq_op 879542159752376021871396038793532898353033700229609797256048143250366569997796469918480796433794573470756315188195969901100556689995 4337981676774697894689324692470171355862828941873295425398218902433634228458168833224419129237380929200627742916890647264639320396309 -> 7.7359441078187414287926746289605077183452051141538578285226997481867127126504177452270887818631369011306564522452035101924843349773946073300313005770E+263 Rounded Inexact +precision: 236 +fma_eq_eq_op82 fma_eq_eq_op 61905588386537115819097955720649593197224541260214821077963587933076546580413247211308765567771198138208138887692736926293473260594920550577706621276199640765029972028189828265694361397368525838983706030506099646856699585716064 94917742625978865553124769114852454884908739322763281173828133404045824388222993618058642373483981311244813255336903495200451251408695209810093129014014037778406314382272805101076575967317454905758766111853304893574755295510072 -> 3.8323018734833590266216630627163007019067108159925610203289649660434726673104818429210554489850885256663386723760713311239348463745224905262771964845831151946750242183222289710617323709015867090016964981975118743726754263166105276770179E+453 Rounded Inexact +precision: 265 +fma_eq_eq_op83 fma_eq_eq_op 4795424220486646480449572465375447649177689635149472 3737099687042242584083504688735043018762120589311856 -> 22996093454429961038088097375147022216179394275494439621458815929390955137050296393465227237388371190640 +precision: 289 +fma_eq_eq_op84 fma_eq_eq_op 289726725424743448118401598574171821164477538918851309533571973040524410219724838125138792939350204776121799680947835046262327675753280036658336786188582727232328216161741708718742923534349538057220541699615864286902322560908233824 54931335291904106786296424581711050020035976156077199075370648311706385634413067446618523941983498856158251320111664976337504133005244059313576750162133253809210643376144131671983555268205585100398641542025109816961473583736673324 -> 8.394157542534468155751081149882825313476971205063611797870236852837927432448400751916356186169967040377768259604984070278231546084095034999503833244202979566660863210128184733430690678688467491814866465118349106052380753360994310922332378213220895598810130018457494498562447455390522459895E+460 Rounded Inexact +precision: 273 +fma_eq_eq_op85 fma_eq_eq_op 20799235663476243932546889430881426368603714856572244032276473880388504238449666878734190554945596322121615183848567269976679617345859938410586933273187326752096765536803532170172320630632588510249822816362592371796770459588162153503329854439725105674538139 69357423936601857221760869714021518479862516231570135784771421388700172350358658602094944919491666345268684089795519350964220918137525014578345401187174137291037443606696697679975255327584218009921483253066699778275106352627261858567436974178144200237294408 -> 4.32608204184822069141460066424301199870505452606915135479731303768575497363262836649227428847486313321145459431801932040904565916393691522457966854144106355291589175065894294951887117166450328704352591255253214049116077784423043964068787459408057152175429512801873246579634E+512 Rounded Inexact +precision: 41 +fma_eq_eq_op86 fma_eq_eq_op 415680289618377 66554530732600 -> 172790103177217848078826846729 +precision: 220 +fma_eq_eq_op87 fma_eq_eq_op 9470412895108059165509124468 18016938664625081926256629043 -> 89688720403829010853932780005081896739670588090172912067 +precision: 264 +fma_eq_eq_op88 fma_eq_eq_op 2355722527347427402872593994228201594274396766 5898756801444825907897647004877264713194868716 -> 5549428625852150848008854166523360682251455796728202369724192551496270207731848306386127472 +precision: 290 +fma_eq_eq_op89 fma_eq_eq_op 50703550 7039494 -> 2570849989641994 +precision: 200 +fma_eq_eq_op90 fma_eq_eq_op 878452470620663828963060760056770758543575310672980321566641248586514615151178096369642458613966642710153812703876841619325448705795935502226979323955534945239263924291215465507246222501496429805 79369484237608855483623699253427808570905741500748088568512213698925325745766808678914283123306369537493026241121816715779174728840633919135411559112087907704591192174434813017501844556423296698 -> 7.7167874313954824756974011544698276692709036877675714548111017660738658267759825211120129229941775954700333519966829388055575181418370718751715900842369832485705546715669106724043390777434836084084758E+389 Rounded Inexact +precision: 113 +fma_eq_eq_op91 fma_eq_eq_op 41964053984294341258412224337648242 8389567414687763382810539645123344 -> 1760981826796769777171544789237582641995372800215849786637290970813908 +precision: 252 +fma_eq_eq_op92 fma_eq_eq_op 827070378781743428221791947644567020223122717621689844665112313751434047915838745557430800469179864072415714346703926828020116334698827963163664076191982238543813741773699603721026038594719454189811108522292747129943570225673916354078266195229266353 911237299256994813123528906514311447993923680601626860100924933254610859496162948179258384118757345102804976073979413438120211057589873801270645384065347796941742324212503147872712638268634617406565373233120994309552281110424222738936123977574219339 -> 6.84045411458176549967949455519456489082655864777425476118399269618098227007778526297956189671643741802067788643634954540542642058320679023551481819793151580340588010304233970990552449927097851770930080360373767841612237175972603409764311232826375266295E+497 Rounded Inexact +precision: 236 +fma_eq_eq_op93 fma_eq_eq_op 8915161373991765040711659981865598343534439627756925777185015846867345772210861646861075628922565360194494537337224273701421345041688317985014258962943323299105250267702835845047290597332256657788932963 8648467810351376939402850967162222368346461685645522552667857462565144854843030553838740138503675990404006735110637289709659792637534902268171313555758791087104518385956030069135771574255882160817382248 -> 7.9480102324314735894072324898053926240891169690545764924751543161142992328581601696087392103793637033880410517745847086189367271351274057433270552562124164870797796273604598027726563540565403898006443823685622273996237565183357879679264E+403 Rounded Inexact +precision: 273 +fma_eq_eq_op94 fma_eq_eq_op 214862566695958644646494784699348758504083874959022122 9210983405034183715951857150563792624505640181875704803 -> 46165922567175276921614499750425229405020491652465954964467113960664311194019843387944626444284868361087687 +precision: 111 +fma_eq_eq_op95 fma_eq_eq_op 209878347951498897797451558601092714699069293461471084051406111 922103864308072129114787202192991872273526913553584325068602003 -> 4.40489209388504415894523003733071091852366818774151659680895231773906822870108674808130858958180330344058830910E+124 Rounded Inexact +precision: 241 +fma_eq_eq_op96 fma_eq_eq_op 4486393344107764566055106797696261253206560730269739866812015315373641106936169340549452404227910691220953988345220345737431399879667838069444762030792690496135185927800624640159996615471097786175358264520674464 9071755386330930115760089995872452609741469846797088905499773628506938347003617245618487704575087292786413157478517010038779686604144079492727127806679535164669061312177432810221331446227998229374825958288898405 -> 2.012772523805445079974897215048436751641983698152905944161768599477558103346514092893445136052582934856602555207158487264371502747880485740182550532618524489904815281156889856892927844324404883076775364018847495496267736301610016981824863385E+421 Rounded Inexact +precision: 281 +fma_eq_eq_op97 fma_eq_eq_op 772642996028648219098312256213195221913246758068882490363535460327596 459513259209012062737496437476397247012849825151700395524883816529509 -> 596977199312125707669189520825670445086296409019234610220117112565420809027105148032212272761021398237790898270841239004072650099455668725 +precision: 136 +fma_eq_eq_op98 fma_eq_eq_op 903274502394323970812962043768690759432227353770797925068727270712640843209325840498338062027620479456102848628661938 411388176616041049582067972826812966404363727937807525843306321821896777886010867292278459851077612130371633948032769 -> 8.159048266757135808809730444178344396135690199880189780185425209757635022350339918984751232214861327918292784970377735266708625939167886E+233 Rounded Inexact +precision: 124 +fma_eq_eq_op99 fma_eq_eq_op 1271001737971773010556280685223527043 1627641562225585871745449006431644302 -> 1615445417927267538717846958402923423545095939763361509987542255383968151 +precision: 297 +fma_eq_op_eq0 fma_eq_op_eq 7707694623466593197623664898434087270493181481772613014059500867197405509607210296163396133440674504157017327327043456064896434663100866355390862900300493884836563591146011100465795418724503881025923756920085380412931240976554612739176481209179807309673107812697875300690953696 833569419247331981323914366270293897038827426858412740460452927777819647623216017681084883230383147876673487260445558515604737911294141003022961737243794317460386918170257673236772078757969862833593551077542410828156263330714820568596065673113199139107821913961847629074679251 -> 6.42489853101883124031418513229291474242034892987247111416617411630725705981031046036236423612722233814771379536069494331138540659898799103704728705873366317393027279521928821942186629091032042774488540266861239256372750574701774509671740230660024091922788447779720193773524304316953397651596439286E+552 Rounded Inexact +precision: 236 +fma_eq_op_eq1 fma_eq_op_eq 29398140409773691926982623306819161448661642232524417340891284353622716489464066777983986052050366098625815124036942629446983509902547195715697372816885886831466690622758741736630 68837975700903398680383700062262324342079452614048856150054870964400740533538933256377626535418748018551754331140216210267669298749611625192711410773135272269831532733407407445080 -> 2.0237084751797476886208402782082605572153699762191748228346858787806696528725777745585561286788976973757658917052213349471979967530872768199116573719583403642491251566529785606951104167497083565148026241200224199858888877685253567845319E+357 Rounded Inexact +precision: 203 +fma_eq_op_eq2 fma_eq_op_eq 561547017344187513631446787549846209828475312007265509126898012116993700273241928122178615515110141526974070164557538760117985566174090136 830741004045580104548156299609792478246833174349476231303400864561919232000024379723939763542638442598586513283570306739791850808394964594 -> 4.6650013300731112039770519601286248663814558066440461269521915866488422598599211669741117736646086388191014500298938378563490607982411095235033043900148183715267888976445117469708870818662550829103499539E+275 Rounded Inexact +precision: 96 +fma_eq_op_eq3 fma_eq_op_eq 740766784220777507995555777619762 258406424429341487252226125968731 -> 191418896046512655185160464196550580846435725552039032247397281784 +precision: 267 +fma_eq_op_eq4 fma_eq_op_eq 940840559221966399102 54769101606816228156 -> 51528992183841678575219980145666951915014 +precision: 206 +fma_eq_op_eq5 fma_eq_op_eq 99207900985846751792404498409506556238106363253631518881919546044143351842704095267213683678922855818731656665931834259332113197687457831 24648168335121922781839100099466219432205760666514996153856149052022501072196778615682985274013692891745988017920664640368889529141763061 -> 2.4452930436732588939607614884121629118617689378380144761508266673193695209477248362760844300825552313211564432125609621513246916042098634443997802645225168447518474017298302689832835197072259140489149233056E+273 Rounded Inexact +precision: 113 +fma_eq_op_eq6 fma_eq_op_eq 5068 3595 -> 18224528 +precision: 244 +fma_eq_op_eq7 fma_eq_op_eq 2041601281196659351691906279817408919848 5008513532614299603525669514945728882299 -> 10225387645076160373739866457211073027837056702101879715947832299721899325890400 +precision: 55 +fma_eq_op_eq8 fma_eq_op_eq 767855147152124 824028995267434 -> 632734905418693193114008281940 +precision: 101 +fma_eq_op_eq9 fma_eq_op_eq 390198805966743430519815641396787300237643774732461095207699 255459233476062073287895453508181110036803444582089655562974 -> 9.9679887875538952831370003847167599419519683406161398079493718041589552883215822861493718463748718806E+118 Rounded Inexact +precision: 158 +fma_eq_op_eq10 fma_eq_op_eq 86074863087461509281732876135109207519215378581865685103721800009095183 42438830692808189943552377297809136198917458518789736189752954651620204 -> 3652916541475424219214182180150747989572648040122572976014941826986296139682476612342011085629978899600454936901036543117371426316187010972515 +precision: 223 +fma_eq_op_eq11 fma_eq_op_eq 395597983765620947780869051617253741748930862230304190314464329462317362733635180475402581172740920254332581479991721586612382147842837289926669 957761411059650500997481486842144516524772392690608453024191636540175697237003712265083651233157955283020078824909418037579620936365611085389949 -> 3.788884831437138301629752990670616364876438996445729394847761189890200768738005283839819464244184327630229767476402489046127525171902891377088469225598232400524283623973191265966574566229440421493055701192128324970854044068E+287 Rounded Inexact +precision: 125 +fma_eq_op_eq12 fma_eq_op_eq 45536329186105858355404 4347493461499667961087 -> 197968893397291716013764604756220845546519552 +precision: 250 +fma_eq_op_eq13 fma_eq_op_eq 7910900381877640892565140867141244403588975669943834231481949791470576820266387348220148297334424369905172125932238043037337821359091266052070876899548630787462037421 771872058951822863863677567724605624232028855616083722901116909923973813794296694479660652261957724192937086555403520959469114032400054020615418615220273472442984993 -> 6.106202965922656437148248850559179375878099796328072165765091499461390839417141233766263297229845666984676016394058126057384409193842150132273645765678432765199496670670754998955264912731545592790548862873511998411333448660540569391130036565741686384E+330 Rounded Inexact +precision: 253 +fma_eq_op_eq14 fma_eq_op_eq 781665471222511298424 10078493274067241585 -> 7878010194286681104561729818784949060464 +precision: 266 +fma_eq_op_eq15 fma_eq_op_eq 48841673944903339605885303148589837422645895433435723823793663818388866836259820925051913594809569639865738498565316012940079014526746996591767923886301675693915291339459497715864130770023802284010459554527831981336157972689293436022931950241013686692976102330597122 91564376968144179969513823646689905263066690058226949088624924178629393465386704284485779283073803727632112244907798304105573916080249532996327692910407854013932577752656597459720296672661131349737967018602559789321737137718648182521689246625917184627908220217973847 -> 4.4721574448463150410557867270976197715919498242196180850523869089189084329582809477391778392927933581416910456110293413075707614287892358697857009425357294446730891240281995275247002098867687961111207893299466537273944058661579768237409385254484685817847064242320693E+531 Rounded Inexact +precision: 73 +fma_eq_op_eq16 fma_eq_op_eq 70460635762977408460975100089966291282680303871192927356866382593290 857784527906260617247993317114397472737412964257548043699144950057070 -> 6.044004318392055968662526292720381922208482752362433995402813852436634150E+136 Rounded Inexact +precision: 104 +fma_eq_op_eq17 fma_eq_op_eq 118435661874111332064627 8043836124967486070449072 -> 952677055467411126366825230572211760470148240771 +precision: 50 +fma_eq_op_eq18 fma_eq_op_eq 8515841369802 9707133724467 -> 82664410953024763163715336 +precision: 104 +fma_eq_op_eq19 fma_eq_op_eq 194313454176195713648637679947949128727 101722529806389759750367622258912095507 -> 19766056134220619220705771858063973412280586555861476437621818479690410458316 +precision: 24 +fma_eq_op_eq20 fma_eq_op_eq 2030810651695821778610 335546195605486555027 -> 6.81430788171631840620189E+41 Rounded Inexact +precision: 184 +fma_eq_op_eq21 fma_eq_op_eq 16259791276461035366781679986216080028113073375611757855976948660361889829660712605274099155524357085018160719979362660845652335792694190301913854575255204217535709722 99647933016952264292651433245586050378152533852776480616649424129389776926839452327216100109391880818038875943625326417315599457773834588256800810570904904791960102008 -> 1.620254591986414008401606951475319823965445173701525970661004929442262115582915111075556904614283026579355467015928953704776266696947199527318250020914170725379859610349709101748155226E+333 Rounded Inexact +precision: 215 +fma_eq_op_eq22 fma_eq_op_eq 46172873400901156081846799614219759525 763941009906259958168820173886601111118 -> 35273351536158317003267442069977931406516340383322530056530277172109983658475 +precision: 215 +fma_eq_op_eq23 fma_eq_op_eq 80987518647492939599941565354636305189361467191744626014633313970998347335272060741036984027449431758159347135460644918684212829310351360121370212832010202713206002301772406148739445192781341865831430978 44100113245091219660843258236006089694773640054778885751894568011066637814379408425910026746600126698731916028590219063233735557537666668066460107053116002315911498129401618581395037643439526871289210460 -> 3.5715587437933755256789293854379320415892785599145258458188090232559395259381806837756502442043298066492017413751099287196974685944223055081140260507068543151390784614348490736005755168673868493418790478031610156647E+405 Rounded Inexact +precision: 85 +fma_eq_op_eq24 fma_eq_op_eq 5390586213777894631086786010452107864055450578063962 5759173873332869852881843504522282087602574674514643 -> 3.104532328433800702422913317184653588725478678938060194280121752479733418619861454244E+103 Rounded Inexact +precision: 262 +fma_eq_op_eq25 fma_eq_op_eq 1254293303165902020720613182747933611048026902692620518703593720443145049268369008780855368887987579551547578718597783028861157123407967361387385312891725324883464002010143528590296183174894 4814109787133104936261390368823816677385389472754036109029826670532665583196889368769743757600919553544838830869551365245661162598608939091619134676213571833381240489225402794845434681246351 -> 6.038305666706479632805166890686113078271960768950437271093011285610067855045554478205946723832447313749597321123147789136332685360934700806313791062182476023741667333075832832385523884546312185432050384858317054910519058961131863435181919381931537229829222193641E+378 Rounded Inexact +precision: 152 +fma_eq_op_eq26 fma_eq_op_eq 8462987444779480784433907369491079397244905226069509640259626247278824695738059894187103093 7590246958444767503893320106529515959412108178251502589122246967114588470716798241957368748 -> 6.4236164712093708806163996063190959489626955168292715058407536680923155845397300359731902729804032921295623170743958507894730476582086374816652858696126E+181 Rounded Inexact +precision: 110 +fma_eq_op_eq27 fma_eq_op_eq 64574610142694299374819229841310593595350021 82727311902252874173836876560209130050729322 -> 5342083914241053282208706242508812876477279883768329679446158252240087155711972513365783 +precision: 82 +fma_eq_op_eq28 fma_eq_op_eq 577026734107416067550761804595292962317240536174430048620879711211578990 773579376203171668293315514077144111958141210621976819509011884252515945 -> 4.463759810233683227267392718887219028812116885420564668588182758634181441320574309E+143 Rounded Inexact +precision: 91 +fma_eq_op_eq29 fma_eq_op_eq 991539079725779518090826865584280627729254240841543916589996224207717131742168686600989196 977142335095511524733191941655090673886157519462755646886647274129586725148111939348511997 -> 9.688748117017027673396004724696415927558063650712568649679071019592876044849518654405678941E+179 Rounded Inexact +precision: 242 +fma_eq_op_eq30 fma_eq_op_eq 71192081580125168409908898770313521767992393903530503590559270524204887444199 65810855008966545666665077712829889384223942932097506561714849317100275888122 -> 4685211758656135390668233127515078777760306189026492221265584041345831984546401004854247052461586231673803923315646510500554790857272191618967306329348477 +precision: 261 +fma_eq_op_eq31 fma_eq_op_eq 962340298753059692378593935102176389690846318862499736281250435129309332751036290981322061945931274438580432312613922 12830253757588172771916479499713617171887610378923128379569138706381721581957062012974686286658958972709479148207547 -> 12347070234154968894430239221772295012578382716815871599684117261893847669544632979630634746581631583137526583951528267346685051880811655095799490674450709928960372857317066497169524592309204581877931370101712267811670599116850283256 +precision: 187 +fma_eq_op_eq32 fma_eq_op_eq 946134122462693038614806297547817155689089319089539342984746042648215818818427742878697991693437804419303011818885370905962090124426032885239058669192375336603830430871762572 927535743694826369532840399588599280588846960122003367896261519520733138132251325147071923536200003550933033958354923254984329791516673715466942132298172098474263967341684429 -> 8.775732169134859147544048758568263980258464829010724400387994702104972450671041061225633551190964700071924687538368977127481478616221969165150752064739398179536372606533613404087640007129E+347 Rounded Inexact +precision: 275 +fma_eq_op_eq33 fma_eq_op_eq 21129292461280993840512914410795081155985699338008797046990338395639613812182792945 82347647002689396236378163893426362493036753373985081145415262478776144777355607199 -> 1739947517018153488210434390916883258902776583288294986535755883951598393342111848527887912907295683905423053966535265353689781143655323710850246700365847152351204000 +precision: 281 +fma_eq_op_eq34 fma_eq_op_eq 703643348921480 679062390619982 -> 477817734662471045531585934840 +precision: 290 +fma_eq_op_eq35 fma_eq_op_eq 616594936118993501279235109024845955434344301564622769717259221715842426770935084466762891611903932815310373532969154945403321687377830035885161304671544214384051956098583021 742652550202030547298577338495683779057745896067405411831758897658484802922775751024332555259821502554346849186908517089966830355503567477688325157073802837184820682884791047 -> 4.5791580175042863956410380487604416991298215111820104380660924124560551550236668306322423100225752056084497055568907987635446395756516782512887117134942804963845146147547843570284518432738914206742574881734014558458264433638925845461177330975810915202547698050947825627474966589175431375316E+347 Rounded Inexact +precision: 16 +fma_eq_op_eq36 fma_eq_op_eq 9036352 7205227 -> 65108976448256 +precision: 277 +fma_eq_op_eq37 fma_eq_op_eq 1135 9440 -> 10715535 +precision: 116 +fma_eq_op_eq38 fma_eq_op_eq 398966043746657269311582 429219644156723025695655 -> 171244063327555824849730934130183407915767887792 +precision: 131 +fma_eq_op_eq39 fma_eq_op_eq 2614688305795637369728664580140001190904419379670299096902914874893207946194694 5927629223234287269967358409949309929885262863566446340935167071868293804345684 -> 1.5498902811083168523694925219478491403326209618283037013914476367119571415729025685323867549014633709647911700641888854674959975279E+157 Rounded Inexact +precision: 111 +fma_eq_op_eq40 fma_eq_op_eq 20800372037998295325407640397739952219376354924081660932221348712785572028166116464182901 90680793720931828406061039834105104716191647483647809563043876313824550886799990940545000 -> 1.88619424609636179763657508804171108909865100294614445841810831710446229911886670793053498785418196363523425591E+177 Rounded Inexact +precision: 266 +fma_eq_op_eq41 fma_eq_op_eq 26917560071253598673482734743809050688756946539635739733404122055248934774695260576623972115902531176226846294342738573806355060520208672133625059610069251602896917030464981466853344068667819806337156160279 31888328476717747697850851913541332345478408646667219251350304275490257633090211990515403659658944926033210332689360828006984791826453143762744394696238403752590985454128373518574622593209977927522192954098 -> 8.5835599734391673636999960027070509028384110089640638992365986870943748527402225777890813030547605656223487338053782695309040180817037207665784574359585243956752580360413693084671029646366263198826028811237811006153271549364688630282653598602454444797705193317037276E+410 Rounded Inexact +precision: 156 +fma_eq_op_eq42 fma_eq_op_eq 4137961816318052133906613950526831544053421481201474982649150967995784785 2061142875757074874596928576427260364285053554494164053825146983210698319 -> 8528930517858758812856031379031857714137030731260056679873569473203624189877020022436883749492839370514359762761032815390790235443139276281061200 +precision: 134 +fma_eq_op_eq43 fma_eq_op_eq 35412414568228478651359441959360607526925003653818444010282303133272608680670576205734838096676332 49155501310096766125357392920515520709441683220248559446636947560474370238888844319616984457642719 -> 1.7407149907022447888735232467730021375263507672680924233241306393003616674200305272862439914158424369795868893786351286893414343463213E+195 Rounded Inexact +precision: 123 +fma_eq_op_eq44 fma_eq_op_eq 7571399047606814572278045057858772244405832267507373237718954730283401497219271391793313590361599287634252277597194 494049762407855587256932801096324736013249769884986203977746245038785445656282492435312499908628489584254516830991 -> 3.74064790056521081393035902675668288050105798809907728884937372755804928258374883803658444594632104991433441841668440245632E+228 Rounded Inexact +precision: 75 +fma_eq_op_eq45 fma_eq_op_eq 5014632905716672072127 1683159381718959767503 -> 8440426421133624434313235178860037838761008 +precision: 72 +fma_eq_op_eq46 fma_eq_op_eq 45297046456356796733998289 53140573476287433995361710 -> 2407111025472833695156068571064213917833885810112479 +precision: 9 +fma_eq_op_eq47 fma_eq_op_eq 561 190 -> 107151 +precision: 145 +fma_eq_op_eq48 fma_eq_op_eq 4378697283307187771714089827269007915833860 7838301128791541411699998414865719942190990 -> 34321547858383185710570276099332372130555335580152776463967168768991205251689144755260 +precision: 193 +fma_eq_op_eq49 fma_eq_op_eq 62678398721458813030762375786572401 72369693586382007263919313698465319 -> 4536016509957052065557965418727248949406995943380442344409056767633320 +precision: 54 +fma_eq_op_eq50 fma_eq_op_eq 28836430696994499183588591726072724111200042 87424499186719227107687277593933811126721461 -> 2.52101051201728094916834248186472696031468108663197633E+87 Rounded Inexact +precision: 121 +fma_eq_op_eq51 fma_eq_op_eq 823002510413513462774324722978578261626541298271115106231270295339472891835 559840934659785872589830940115379892033431991123595254197143333821422161463 -> 4.607504946572515326979535891864362677882685657991685707920857752545972173318694858087953464979081019853694276251106534626E+149 Rounded Inexact +precision: 84 +fma_eq_op_eq52 fma_eq_op_eq 610641155527221935930345208898496630528770984480455983869622748357182528540934 124747938556985970303930314660116002062074148608743052815865926087285764518313 -> 7.61762253500767958945216063715132813877864851017326634791160202248053720136715705466E+154 Rounded Inexact +precision: 71 +fma_eq_op_eq53 fma_eq_op_eq 629646725766993440450381827100767 442791747424438217281872047725780 -> 27880237396244307423647550