remove python test cases

This commit is contained in:
cinap_lenrek 2011-05-04 05:41:33 +00:00
parent 6c1b421882
commit b8436b026a
476 changed files with 0 additions and 133470 deletions

Binary file not shown.

View file

@ -1,423 +0,0 @@
+++++++++++++++++++++++++++++++
Writing Python Regression Tests
+++++++++++++++++++++++++++++++
:Author: Skip Montanaro
:Contact: skip@mojam.com
Introduction
============
If you add a new module to Python or modify the functionality of an existing
module, you should write one or more test cases to exercise that new
functionality. There are different ways to do this within the regression
testing facility provided with Python; any particular test should use only
one of these options. Each option requires writing a test module using the
conventions of the selected option:
- PyUnit_ based tests
- doctest_ based tests
- "traditional" Python test modules
Regardless of the mechanics of the testing approach you choose,
you will be writing unit tests (isolated tests of functions and objects
defined by the module) using white box techniques. Unlike black box
testing, where you only have the external interfaces to guide your test case
writing, in white box testing you can see the code being tested and tailor
your test cases to exercise it more completely. In particular, you will be
able to refer to the C and Python code in the CVS repository when writing
your regression test cases.
.. _PyUnit:
.. _unittest: http://www.python.org/doc/current/lib/module-unittest.html
.. _doctest: http://www.python.org/doc/current/lib/module-doctest.html
PyUnit based tests
------------------
The PyUnit_ framework is based on the ideas of unit testing as espoused
by Kent Beck and the `Extreme Programming`_ (XP) movement. The specific
interface provided by the framework is tightly based on the JUnit_
Java implementation of Beck's original SmallTalk test framework. Please
see the documentation of the unittest_ module for detailed information on
the interface and general guidelines on writing PyUnit based tests.
The test_support helper module provides two functions for use by
PyUnit based tests in the Python regression testing framework:
- ``run_unittest()`` takes a ``unittest.TestCase`` derived class as a
parameter and runs the tests defined in that class
- ``run_suite()`` takes a populated ``TestSuite`` instance and runs the
tests
``run_suite()`` is preferred because unittest files typically grow multiple
test classes, and you might as well be prepared.
All test methods in the Python regression framework have names that
start with "``test_``" and use lower-case names with words separated with
underscores.
Test methods should *not* have docstrings! The unittest module prints
the docstring if there is one, but otherwise prints the function name
and the full class name. When there's a problem with a test, the
latter information makes it easier to find the source for the test
than the docstring.
All PyUnit-based tests in the Python test suite use boilerplate that
looks like this (with minor variations)::
import unittest
from test import test_support
class MyTestCase1(unittest.TestCase):
# Define setUp and tearDown only if needed
def setUp(self):
unittest.TestCase.setUp(self)
... additional initialization...
def tearDown(self):
... additional finalization...
unittest.TestCase.tearDown(self)
def test_feature_one(self):
# Testing feature one
...unit test for feature one...
def test_feature_two(self):
# Testing feature two
...unit test for feature two...
...etc...
class MyTestCase2(unittest.TestCase):
...same structure as MyTestCase1...
...etc...
def test_main():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(MyTestCase1))
suite.addTest(unittest.makeSuite(MyTestCase2))
...add more suites...
test_support.run_suite(suite)
if __name__ == "__main__":
test_main()
This has the advantage that it allows the unittest module to be used
as a script to run individual tests as well as working well with the
regrtest framework.
.. _Extreme Programming: http://www.extremeprogramming.org/
.. _JUnit: http://www.junit.org/
doctest based tests
-------------------
Tests written to use doctest_ are actually part of the docstrings for
the module being tested. Each test is written as a display of an
interactive session, including the Python prompts, statements that would
be typed by the user, and the output of those statements (including
tracebacks, although only the exception msg needs to be retained then).
The module in the test package is simply a wrapper that causes doctest
to run over the tests in the module. The test for the difflib module
provides a convenient example::
import difflib
from test import test_support
test_support.run_doctest(difflib)
If the test is successful, nothing is written to stdout (so you should not
create a corresponding output/test_difflib file), but running regrtest
with -v will give a detailed report, the same as if passing -v to doctest.
A second argument can be passed to run_doctest to tell doctest to search
``sys.argv`` for -v instead of using test_support's idea of verbosity. This
is useful for writing doctest-based tests that aren't simply running a
doctest'ed Lib module, but contain the doctests themselves. Then at
times you may want to run such a test directly as a doctest, independent
of the regrtest framework. The tail end of test_descrtut.py is a good
example::
def test_main(verbose=None):
from test import test_support, test_descrtut
test_support.run_doctest(test_descrtut, verbose)
if __name__ == "__main__":
test_main(1)
If run via regrtest, ``test_main()`` is called (by regrtest) without
specifying verbose, and then test_support's idea of verbosity is used. But
when run directly, ``test_main(1)`` is called, and then doctest's idea of
verbosity is used.
See the documentation for the doctest module for information on
writing tests using the doctest framework.
"traditional" Python test modules
---------------------------------
The mechanics of how the "traditional" test system operates are fairly
straightforward. When a test case is run, the output is compared with the
expected output that is stored in .../Lib/test/output. If the test runs to
completion and the actual and expected outputs match, the test succeeds, if
not, it fails. If an ``ImportError`` or ``test_support.TestSkipped`` error
is raised, the test is not run.
Executing Test Cases
====================
If you are writing test cases for module spam, you need to create a file
in .../Lib/test named test_spam.py. In addition, if the tests are expected
to write to stdout during a successful run, you also need to create an
expected output file in .../Lib/test/output named test_spam ("..."
represents the top-level directory in the Python source tree, the directory
containing the configure script). If needed, generate the initial version
of the test output file by executing::
./python Lib/test/regrtest.py -g test_spam.py
from the top-level directory.
Any time you modify test_spam.py you need to generate a new expected
output file. Don't forget to desk check the generated output to make sure
it's really what you expected to find! All in all it's usually better
not to have an expected-out file (note that doctest- and unittest-based
tests do not).
To run a single test after modifying a module, simply run regrtest.py
without the -g flag::
./python Lib/test/regrtest.py test_spam.py
While debugging a regression test, you can of course execute it
independently of the regression testing framework and see what it prints::
./python Lib/test/test_spam.py
To run the entire test suite:
- [UNIX, + other platforms where "make" works] Make the "test" target at the
top level::
make test
- [WINDOWS] Run rt.bat from your PCBuild directory. Read the comments at
the top of rt.bat for the use of special -d, -O and -q options processed
by rt.bat.
- [OTHER] You can simply execute the two runs of regrtest (optimized and
non-optimized) directly::
./python Lib/test/regrtest.py
./python -O Lib/test/regrtest.py
But note that this way picks up whatever .pyc and .pyo files happen to be
around. The makefile and rt.bat ways run the tests twice, the first time
removing all .pyc and .pyo files from the subtree rooted at Lib/.
Test cases generate output based upon values computed by the test code.
When executed, regrtest.py compares the actual output generated by executing
the test case with the expected output and reports success or failure. It
stands to reason that if the actual and expected outputs are to match, they
must not contain any machine dependencies. This means your test cases
should not print out absolute machine addresses (e.g. the return value of
the id() builtin function) or floating point numbers with large numbers of
significant digits (unless you understand what you are doing!).
Test Case Writing Tips
======================
Writing good test cases is a skilled task and is too complex to discuss in
detail in this short document. Many books have been written on the subject.
I'll show my age by suggesting that Glenford Myers' `"The Art of Software
Testing"`_, published in 1979, is still the best introduction to the subject
available. It is short (177 pages), easy to read, and discusses the major
elements of software testing, though its publication predates the
object-oriented software revolution, so doesn't cover that subject at all.
Unfortunately, it is very expensive (about $100 new). If you can borrow it
or find it used (around $20), I strongly urge you to pick up a copy.
The most important goal when writing test cases is to break things. A test
case that doesn't uncover a bug is much less valuable than one that does.
In designing test cases you should pay attention to the following:
* Your test cases should exercise all the functions and objects defined
in the module, not just the ones meant to be called by users of your
module. This may require you to write test code that uses the module
in ways you don't expect (explicitly calling internal functions, for
example - see test_atexit.py).
* You should consider any boundary values that may tickle exceptional
conditions (e.g. if you were writing regression tests for division,
you might well want to generate tests with numerators and denominators
at the limits of floating point and integer numbers on the machine
performing the tests as well as a denominator of zero).
* You should exercise as many paths through the code as possible. This
may not always be possible, but is a goal to strive for. In
particular, when considering if statements (or their equivalent), you
want to create test cases that exercise both the true and false
branches. For loops, you should create test cases that exercise the
loop zero, one and multiple times.
* You should test with obviously invalid input. If you know that a
function requires an integer input, try calling it with other types of
objects to see how it responds.
* You should test with obviously out-of-range input. If the domain of a
function is only defined for positive integers, try calling it with a
negative integer.
* If you are going to fix a bug that wasn't uncovered by an existing
test, try to write a test case that exposes the bug (preferably before
fixing it).
* If you need to create a temporary file, you can use the filename in
``test_support.TESTFN`` to do so. It is important to remove the file
when done; other tests should be able to use the name without cleaning
up after your test.
.. _"The Art of Software Testing":
http://www.amazon.com/exec/obidos/ISBN=0471043281
Regression Test Writing Rules
=============================
Each test case is different. There is no "standard" form for a Python
regression test case, though there are some general rules (note that
these mostly apply only to the "classic" tests; unittest_- and doctest_-
based tests should follow the conventions natural to those frameworks)::
* If your test case detects a failure, raise ``TestFailed`` (found in
``test.test_support``).
* Import everything you'll need as early as possible.
* If you'll be importing objects from a module that is at least
partially platform-dependent, only import those objects you need for
the current test case to avoid spurious ``ImportError`` exceptions
that prevent the test from running to completion.
* Print all your test case results using the ``print`` statement. For
non-fatal errors, print an error message (or omit a successful
completion print) to indicate the failure, but proceed instead of
raising ``TestFailed``.
* Use ``assert`` sparingly, if at all. It's usually better to just print
what you got, and rely on regrtest's got-vs-expected comparison to
catch deviations from what you expect. ``assert`` statements aren't
executed at all when regrtest is run in -O mode; and, because they
cause the test to stop immediately, can lead to a long & tedious
test-fix, test-fix, test-fix, ... cycle when things are badly broken
(and note that "badly broken" often includes running the test suite
for the first time on new platforms or under new implementations of
the language).
Miscellaneous
=============
There is a test_support module in the test package you can import for
your test case. Import this module using either::
import test.test_support
or::
from test import test_support
test_support provides the following useful objects:
* ``TestFailed`` - raise this exception when your regression test detects
a failure.
* ``TestSkipped`` - raise this if the test could not be run because the
platform doesn't offer all the required facilities (like large
file support), even if all the required modules are available.
* ``ResourceDenied`` - this is raised when a test requires a resource that
is not available. Primarily used by 'requires'.
* ``verbose`` - you can use this variable to control print output. Many
modules use it. Search for "verbose" in the test_*.py files to see
lots of examples.
* ``forget(module_name)`` - attempts to cause Python to "forget" that it
loaded a module and erase any PYC files.
* ``is_resource_enabled(resource)`` - Returns a boolean based on whether
the resource is enabled or not.
* ``requires(resource [, msg])`` - if the required resource is not
available the ResourceDenied exception is raised.
* ``verify(condition, reason='test failed')``. Use this instead of::
assert condition[, reason]
``verify()`` has two advantages over ``assert``: it works even in -O
mode, and it raises ``TestFailed`` on failure instead of
``AssertionError``.
* ``have_unicode`` - true if Unicode is available, false otherwise.
* ``is_jython`` - true if the interpreter is Jython, false otherwise.
* ``TESTFN`` - a string that should always be used as the filename when
you need to create a temp file. Also use ``try``/``finally`` to
ensure that your temp files are deleted before your test completes.
Note that you cannot unlink an open file on all operating systems, so
also be sure to close temp files before trying to unlink them.
* ``sortdict(dict)`` - acts like ``repr(dict.items())``, but sorts the
items first. This is important when printing a dict value, because
the order of items produced by ``dict.items()`` is not defined by the
language.
* ``findfile(file)`` - you can call this function to locate a file
somewhere along sys.path or in the Lib/test tree - see
test_linuxaudiodev.py for an example of its use.
* ``fcmp(x,y)`` - you can call this function to compare two floating
point numbers when you expect them to only be approximately equal
withing a fuzz factor (``test_support.FUZZ``, which defaults to 1e-6).
* ``check_syntax(statement)`` - make sure that the statement is *not*
correct Python syntax.
Python and C statement coverage results are currently available at
http://www.musi-cal.com/~skip/python/Python/dist/src/
As of this writing (July, 2000) these results are being generated nightly.
You can refer to the summaries and the test coverage output files to see
where coverage is adequate or lacking and write test cases to beef up the
coverage.
Some Non-Obvious regrtest Features
==================================
* Automagic test detection: When you create a new test file
test_spam.py, you do not need to modify regrtest (or anything else)
to advertise its existence. regrtest searches for and runs all
modules in the test directory with names of the form test_xxx.py.
* Miranda output: If, when running test_spam.py, regrtest does not
find an expected-output file test/output/test_spam, regrtest
pretends that it did find one, containing the single line
test_spam
This allows new tests that don't expect to print anything to stdout
to not bother creating expected-output files.
* Two-stage testing: To run test_spam.py, regrtest imports test_spam
as a module. Most tests run to completion as a side-effect of
getting imported. After importing test_spam, regrtest also executes
``test_spam.test_main()``, if test_spam has a ``test_main`` attribute.
This is rarely required with the "traditional" Python tests, and
you shouldn't create a module global with name test_main unless
you're specifically exploiting this gimmick. This usage does
prove useful with PyUnit-based tests as well, however; defining
a ``test_main()`` which is run by regrtest and a script-stub in the
test module ("``if __name__ == '__main__': test_main()``") allows
the test to be used like any other Python test and also work
with the unittest.py-as-a-script approach, allowing a developer
to run specific tests from the command line.

View file

@ -1 +0,0 @@
# Dummy file to make this directory a package.

Binary file not shown.

View file

@ -1,6 +0,0 @@
# This should be equivalent to running regrtest.py from the cmdline.
# It can be especially handy if you're in an interactive shell, e.g.,
# from test import autotest.
from test import regrtest
regrtest.main()

View file

@ -1 +0,0 @@
# -*- coding: uft-8 -*-

View file

@ -1,2 +0,0 @@
#coding: utf8
print ''

View file

@ -1,10 +0,0 @@
"""This is a test"""
from __future__ import nested_scopes
from __future__ import rested_snopes
def f(x):
def g(y):
return x + y
return g
result = f(2)(4)

View file

@ -1,10 +0,0 @@
"""This is a test"""
import __future__
from __future__ import nested_scopes
def f(x):
def g(y):
return x + y
return g
result = f(2)(4)

View file

@ -1,12 +0,0 @@
"""This is a test"""
from __future__ import nested_scopes
import foo
from __future__ import nested_scopes
def f(x):
def g(y):
return x + y
return g
result = f(2)(4)

View file

@ -1,10 +0,0 @@
"""This is a test"""
"this isn't a doc string"
from __future__ import nested_scopes
def f(x):
def g(y):
return x + y
return g
result = f(2)(4)

View file

@ -1,11 +0,0 @@
"""This is a test"""
from __future__ import nested_scopes; import string; from __future__ import \
nested_scopes
def f(x):
def g(y):
return x + y
return g
result = f(2)(4)

View file

@ -1,10 +0,0 @@
"""This is a test"""
from __future__ import *
def f(x):
def g(y):
return x + y
return g
print f(2)(4)

View file

@ -1,10 +0,0 @@
"""This is a test"""
from __future__ import nested_scopes, braces
def f(x):
def g(y):
return x + y
return g
print f(2)(4)

View file

@ -1,2 +0,0 @@
def f(x):
[x for x in x] = x

View file

@ -1,13 +0,0 @@
rem Check for a working sound-card - exit with 0 if OK, 1 otherwise.
set wmi = GetObject("winmgmts:")
set scs = wmi.InstancesOf("win32_sounddevice")
for each sc in scs
set status = sc.Properties_("Status")
wscript.Echo(sc.Properties_("Name") + "/" + status)
if status = "OK" then
wscript.Quit 0 rem normal exit
end if
next
rem No sound card found - exit with status code of 1
wscript.Quit 1

File diff suppressed because it is too large Load diff

View file

@ -1,20 +0,0 @@
This directory only contains tests for outstanding bugs that cause
the interpreter to segfault. Ideally this directory should always
be empty. Sometimes it may not be easy to fix the underlying cause.
Each test should fail when run from the command line:
./python Lib/test/crashers/weakref_in_del.py
Each test should have a link to the bug report:
# http://python.org/sf/BUG#
Put as much info into a docstring or comments to help determine
the cause of the failure. Particularly note if the cause is
system or environment dependent and what the variables are.
Once the crash is fixed, the test case should be moved into an appropriate
test (even if it was originally from the test suite). This ensures the
regression doesn't happen again. And if it does, it should be easier
to track down.

View file

@ -1,19 +0,0 @@
"""
Broken bytecode objects can easily crash the interpreter.
This is not going to be fixed. It is generally agreed that there is no
point in writing a bytecode verifier and putting it in CPython just for
this. Moreover, a verifier is bound to accept only a subset of all safe
bytecodes, so it could lead to unnecessary breakage.
For security purposes, "restricted" interpreters are not going to let
the user build or load random bytecodes anyway. Otherwise, this is a
"won't fix" case.
"""
import types
co = types.CodeType(0, 0, 0, 0, '\x04\x71\x00\x00', (),
(), (), '', '', 1, '')
exec co

View file

@ -1,29 +0,0 @@
"""
_PyType_Lookup() returns a borrowed reference.
This attacks the call in dictobject.c.
"""
class A(object):
pass
class B(object):
def __del__(self):
print 'hi'
del D.__missing__
class D(dict):
class __missing__:
def __init__(self, *args):
pass
d = D()
a = A()
a.cycle = a
a.other = B()
del a
prev = None
while 1:
d[5]
prev = (prev,)

View file

@ -1,38 +0,0 @@
"""
_PyType_Lookup() returns a borrowed reference.
This attacks PyObject_GenericSetAttr().
NB. on my machine this crashes in 2.5 debug but not release.
"""
class A(object):
pass
class B(object):
def __del__(self):
print "hi"
del C.d
class D(object):
def __set__(self, obj, value):
self.hello = 42
class C(object):
d = D()
def g():
pass
c = C()
a = A()
a.cycle = a
a.other = B()
lst = [None] * 1000000
i = 0
del a
while 1:
c.d = 42 # segfaults in PyMethod_New(im_func=D.__set__, im_self=d)
lst[i] = c.g # consume the free list of instancemethod objects
i += 1

View file

@ -1,12 +0,0 @@
# http://python.org/sf/1174712
import types
class X(types.ModuleType, str):
"""Such a subclassing is incorrectly allowed --
see the SF bug report for explanations"""
if __name__ == '__main__':
X('name') # segfault: ModuleType.__init__() reads
# the dict at the wrong offset

View file

@ -1,32 +0,0 @@
"""
gc.get_referrers() can be used to see objects before they are fully built.
Note that this is only an example. There are many ways to crash Python
by using gc.get_referrers(), as well as many extension modules (even
when they are using perfectly documented patterns to build objects).
Identifying and removing all places that expose to the GC a
partially-built object is a long-term project. A patch was proposed on
SF specifically for this example but I consider fixing just this single
example a bit pointless (#1517042).
A fix would include a whole-scale code review, possibly with an API
change to decouple object creation and GC registration, and according
fixes to the documentation for extension module writers. It's unlikely
to happen, though. So this is currently classified as
"gc.get_referrers() is dangerous, use only for debugging".
"""
import gc
def g():
marker = object()
yield marker
# now the marker is in the tuple being constructed
[tup] = [x for x in gc.get_referrers(marker) if type(x) is tuple]
print tup
print tup[1]
tuple(g())

View file

@ -1,11 +0,0 @@
# http://python.org/sf/1202533
import new, operator
class A:
pass
A.__mul__ = new.instancemethod(operator.mul, None, A)
if __name__ == '__main__':
A()*2 # segfault: infinite recursion in C

View file

@ -1,10 +0,0 @@
# http://python.org/sf/1202533
class A(str):
__get__ = getattr
if __name__ == '__main__':
a = A('a')
A.a = a
a.a # segfault: infinite recursion in C

View file

@ -1,7 +0,0 @@
# http://python.org/sf/1202533
if __name__ == '__main__':
lst = [apply]
lst.append(lst)
apply(*lst) # segfault: infinite recursion in C

View file

@ -1,10 +0,0 @@
# http://python.org/sf/1267884
import types
class C:
__str__ = types.InstanceType.__str__
if __name__ == '__main__':
str(C()) # segfault: infinite recursion in C

View file

@ -1,21 +0,0 @@
# http://python.org/sf/1303614
class Strange(object):
def __hash__(self):
return hash('hello')
def __eq__(self, other):
x.__dict__ = {} # the old x.__dict__ is deallocated
return False
class X(object):
pass
if __name__ == '__main__':
v = 123
x = X()
x.__dict__ = {Strange(): 42,
'hello': v+456}
x.hello # segfault: the above dict is accessed after it's deallocated

View file

@ -1,19 +0,0 @@
# http://python.org/sf/1303614
class Y(object):
pass
class type_with_modifiable_dict(Y, type):
pass
class MyClass(object):
"""This class has its __dict__ attribute completely exposed:
user code can read, reassign and even delete it.
"""
__metaclass__ = type_with_modifiable_dict
if __name__ == '__main__':
del MyClass.__dict__ # if we set tp_dict to NULL,
print MyClass # doing anything with MyClass segfaults

View file

@ -1,47 +0,0 @@
# from http://mail.python.org/pipermail/python-dev/2001-June/015239.html
# if you keep changing a dictionary while looking up a key, you can
# provoke an infinite recursion in C
# At the time neither Tim nor Michael could be bothered to think of a
# way to fix it.
class Yuck:
def __init__(self):
self.i = 0
def make_dangerous(self):
self.i = 1
def __hash__(self):
# direct to slot 4 in table of size 8; slot 12 when size 16
return 4 + 8
def __eq__(self, other):
if self.i == 0:
# leave dict alone
pass
elif self.i == 1:
# fiddle to 16 slots
self.__fill_dict(6)
self.i = 2
else:
# fiddle to 8 slots
self.__fill_dict(4)
self.i = 1
return 1
def __fill_dict(self, n):
self.i = 0
dict.clear()
for i in range(n):
dict[i] = i
dict[self] = "OK!"
y = Yuck()
dict = {y: "OK!"}
z = Yuck()
y.make_dangerous()
print dict[z]

View file

@ -1,16 +0,0 @@
# The following example may crash or not depending on the platform.
# E.g. on 32-bit Intel Linux in a "standard" configuration it seems to
# crash on Python 2.5 (but not 2.4 nor 2.3). On Windows the import
# eventually fails to find the module, possibly because we run out of
# file handles.
# The point of this example is to show that sys.setrecursionlimit() is a
# hack, and not a robust solution. This example simply exercices a path
# where it takes many C-level recursions, consuming a lot of stack
# space, for each Python-level recursion. So 1000 times this amount of
# stack space may be too much for standard platforms already.
import sys
if 'recursion_limit_too_high' in sys.modules:
del sys.modules['recursion_limit_too_high']
import recursion_limit_too_high

View file

@ -1,15 +0,0 @@
#!/usr/bin/env python
# No bug report AFAIK, mail on python-dev on 2006-01-10
# This is a "won't fix" case. It is known that setting a high enough
# recursion limit crashes by overflowing the stack. Unless this is
# redesigned somehow, it won't go away.
import sys
sys.setrecursionlimit(1 << 30)
f = lambda f:f(f)
if __name__ == '__main__':
f(f)

View file

@ -1,17 +0,0 @@
import weakref
# http://python.org/sf/1377858
# Fixed for new-style classes in 2.5c1.
ref = None
def test_weakref_in_del():
class Target():
def __del__(self):
global ref
ref = weakref.ref(self)
w = Target()
if __name__ == '__main__':
test_weakref_in_del()

View file

@ -1,161 +0,0 @@
------------------------------------------------------------------------
-- abs.decTest -- decimal absolute value --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of tests primarily tests the existence of the operator.
-- Additon, subtraction, rounding, and more overflows are tested
-- elsewhere.
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
extended: 1
absx001 abs '1' -> '1'
absx002 abs '-1' -> '1'
absx003 abs '1.00' -> '1.00'
absx004 abs '-1.00' -> '1.00'
absx005 abs '0' -> '0'
absx006 abs '0.00' -> '0.00'
absx007 abs '00.0' -> '0.0'
absx008 abs '00.00' -> '0.00'
absx009 abs '00' -> '0'
absx010 abs '-2' -> '2'
absx011 abs '2' -> '2'
absx012 abs '-2.00' -> '2.00'
absx013 abs '2.00' -> '2.00'
absx014 abs '-0' -> '0'
absx015 abs '-0.00' -> '0.00'
absx016 abs '-00.0' -> '0.0'
absx017 abs '-00.00' -> '0.00'
absx018 abs '-00' -> '0'
absx020 abs '-2000000' -> '2000000'
absx021 abs '2000000' -> '2000000'
precision: 7
absx022 abs '-2000000' -> '2000000'
absx023 abs '2000000' -> '2000000'
precision: 6
absx024 abs '-2000000' -> '2.00000E+6' Rounded
absx025 abs '2000000' -> '2.00000E+6' Rounded
precision: 3
absx026 abs '-2000000' -> '2.00E+6' Rounded
absx027 abs '2000000' -> '2.00E+6' Rounded
absx030 abs '+0.1' -> '0.1'
absx031 abs '-0.1' -> '0.1'
absx032 abs '+0.01' -> '0.01'
absx033 abs '-0.01' -> '0.01'
absx034 abs '+0.001' -> '0.001'
absx035 abs '-0.001' -> '0.001'
absx036 abs '+0.000001' -> '0.000001'
absx037 abs '-0.000001' -> '0.000001'
absx038 abs '+0.000000000001' -> '1E-12'
absx039 abs '-0.000000000001' -> '1E-12'
-- examples from decArith
precision: 9
absx040 abs '2.1' -> '2.1'
absx041 abs '-100' -> '100'
absx042 abs '101.5' -> '101.5'
absx043 abs '-101.5' -> '101.5'
-- more fixed, potential LHS swaps/overlays if done by subtract 0
precision: 9
absx060 abs '-56267E-10' -> '0.0000056267'
absx061 abs '-56267E-5' -> '0.56267'
absx062 abs '-56267E-2' -> '562.67'
absx063 abs '-56267E-1' -> '5626.7'
absx065 abs '-56267E-0' -> '56267'
-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
absx120 abs 9.999E+999999999 -> Infinity Inexact Overflow Rounded
-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
absx210 abs 1.00E-999 -> 1.00E-999
absx211 abs 0.1E-999 -> 1E-1000 Subnormal
absx212 abs 0.10E-999 -> 1.0E-1000 Subnormal
absx213 abs 0.100E-999 -> 1.0E-1000 Subnormal Rounded
absx214 abs 0.01E-999 -> 1E-1001 Subnormal
-- next is rounded to Emin
absx215 abs 0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
absx216 abs 0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
absx217 abs 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
absx218 abs 0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
absx219 abs 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
absx220 abs 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
absx230 abs -1.00E-999 -> 1.00E-999
absx231 abs -0.1E-999 -> 1E-1000 Subnormal
absx232 abs -0.10E-999 -> 1.0E-1000 Subnormal
absx233 abs -0.100E-999 -> 1.0E-1000 Subnormal Rounded
absx234 abs -0.01E-999 -> 1E-1001 Subnormal
-- next is rounded to Emin
absx235 abs -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
absx236 abs -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
absx237 abs -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
absx238 abs -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
absx239 abs -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
absx240 abs -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
-- long operand tests
maxexponent: 999
minexponent: -999
precision: 9
absx301 abs 12345678000 -> 1.23456780E+10 Rounded
absx302 abs 1234567800 -> 1.23456780E+9 Rounded
absx303 abs 1234567890 -> 1.23456789E+9 Rounded
absx304 abs 1234567891 -> 1.23456789E+9 Inexact Rounded
absx305 abs 12345678901 -> 1.23456789E+10 Inexact Rounded
absx306 abs 1234567896 -> 1.23456790E+9 Inexact Rounded
precision: 15
absx321 abs 12345678000 -> 12345678000
absx322 abs 1234567800 -> 1234567800
absx323 abs 1234567890 -> 1234567890
absx324 abs 1234567891 -> 1234567891
absx325 abs 12345678901 -> 12345678901
absx326 abs 1234567896 -> 1234567896
-- Specials
precision: 9
-- specials
absx520 abs 'Inf' -> 'Infinity'
absx521 abs '-Inf' -> 'Infinity'
absx522 abs NaN -> NaN
absx523 abs sNaN -> NaN Invalid_operation
absx524 abs NaN22 -> NaN22
absx525 abs sNaN33 -> NaN33 Invalid_operation
absx526 abs -NaN22 -> -NaN22
absx527 abs -sNaN33 -> -NaN33 Invalid_operation
-- Null tests
absx900 abs # -> NaN Invalid_operation

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,197 +0,0 @@
------------------------------------------------------------------------
-- clamp.decTest -- clamped exponent tests (format-independent) --
-- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of tests uses the same limits as the 8-byte concrete
-- representation, but applies clamping without using format-specific
-- conversions.
extended: 1
precision: 16
rounding: half_even
maxExponent: 384
minExponent: -383
clamp: 1
-- General testcases
-- Normality
clam010 apply 1234567890123456 -> 1234567890123456
clam011 apply 1234567890123456.0 -> 1234567890123456 Rounded
clam012 apply 1234567890123456.1 -> 1234567890123456 Rounded Inexact
clam013 apply -1234567890123456 -> -1234567890123456
clam014 apply -1234567890123456.0 -> -1234567890123456 Rounded
clam015 apply -1234567890123456.1 -> -1234567890123456 Rounded Inexact
-- Nmax and similar
clam022 apply 9.999999999999999E+384 -> 9.999999999999999E+384
clam024 apply 1.234567890123456E+384 -> 1.234567890123456E+384
-- fold-downs (more below)
clam030 apply 1.23E+384 -> 1.230000000000000E+384 Clamped
clam032 apply 1E+384 -> 1.000000000000000E+384 Clamped
clam051 apply 12345 -> 12345
clam053 apply 1234 -> 1234
clam055 apply 123 -> 123
clam057 apply 12 -> 12
clam059 apply 1 -> 1
clam061 apply 1.23 -> 1.23
clam063 apply 123.45 -> 123.45
-- Nmin and below
clam071 apply 1E-383 -> 1E-383
clam073 apply 1.000000000000000E-383 -> 1.000000000000000E-383
clam075 apply 1.000000000000001E-383 -> 1.000000000000001E-383
clam077 apply 0.100000000000000E-383 -> 1.00000000000000E-384 Subnormal
clam079 apply 0.000000000000010E-383 -> 1.0E-397 Subnormal
clam081 apply 0.00000000000001E-383 -> 1E-397 Subnormal
clam083 apply 0.000000000000001E-383 -> 1E-398 Subnormal
-- underflows
clam090 apply 1e-398 -> #0000000000000001 Subnormal
clam091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded
clam092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
clam093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
clam094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
clam095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
clam096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
clam097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
clam098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
clam099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
-- Same again, negatives
-- Nmax and similar
clam122 apply -9.999999999999999E+384 -> -9.999999999999999E+384
clam124 apply -1.234567890123456E+384 -> -1.234567890123456E+384
-- fold-downs (more below)
clam130 apply -1.23E+384 -> -1.230000000000000E+384 Clamped
clam132 apply -1E+384 -> -1.000000000000000E+384 Clamped
clam151 apply -12345 -> -12345
clam153 apply -1234 -> -1234
clam155 apply -123 -> -123
clam157 apply -12 -> -12
clam159 apply -1 -> -1
clam161 apply -1.23 -> -1.23
clam163 apply -123.45 -> -123.45
-- Nmin and below
clam171 apply -1E-383 -> -1E-383
clam173 apply -1.000000000000000E-383 -> -1.000000000000000E-383
clam175 apply -1.000000000000001E-383 -> -1.000000000000001E-383
clam177 apply -0.100000000000000E-383 -> -1.00000000000000E-384 Subnormal
clam179 apply -0.000000000000010E-383 -> -1.0E-397 Subnormal
clam181 apply -0.00000000000001E-383 -> -1E-397 Subnormal
clam183 apply -0.000000000000001E-383 -> -1E-398 Subnormal
-- underflows
clam189 apply -1e-398 -> #8000000000000001 Subnormal
clam190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded
clam191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded
clam192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
clam193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
clam194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
clam195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
clam196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
clam197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
clam198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
clam199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
-- zeros
clam401 apply 0E-500 -> 0E-398 Clamped
clam402 apply 0E-400 -> 0E-398 Clamped
clam403 apply 0E-398 -> 0E-398
clam404 apply 0.000000000000000E-383 -> 0E-398
clam405 apply 0E-2 -> 0.00
clam406 apply 0 -> 0
clam407 apply 0E+3 -> 0E+3
clam408 apply 0E+369 -> 0E+369
-- clamped zeros...
clam410 apply 0E+370 -> 0E+369 Clamped
clam411 apply 0E+384 -> 0E+369 Clamped
clam412 apply 0E+400 -> 0E+369 Clamped
clam413 apply 0E+500 -> 0E+369 Clamped
-- negative zeros
clam420 apply -0E-500 -> -0E-398 Clamped
clam421 apply -0E-400 -> -0E-398 Clamped
clam422 apply -0E-398 -> -0E-398
clam423 apply -0.000000000000000E-383 -> -0E-398
clam424 apply -0E-2 -> -0.00
clam425 apply -0 -> -0
clam426 apply -0E+3 -> -0E+3
clam427 apply -0E+369 -> -0E+369
-- clamped zeros...
clam431 apply -0E+370 -> -0E+369 Clamped
clam432 apply -0E+384 -> -0E+369 Clamped
clam433 apply -0E+400 -> -0E+369 Clamped
clam434 apply -0E+500 -> -0E+369 Clamped
-- fold-down full sequence
clam601 apply 1E+384 -> 1.000000000000000E+384 Clamped
clam603 apply 1E+383 -> 1.00000000000000E+383 Clamped
clam605 apply 1E+382 -> 1.0000000000000E+382 Clamped
clam607 apply 1E+381 -> 1.000000000000E+381 Clamped
clam609 apply 1E+380 -> 1.00000000000E+380 Clamped
clam611 apply 1E+379 -> 1.0000000000E+379 Clamped
clam613 apply 1E+378 -> 1.000000000E+378 Clamped
clam615 apply 1E+377 -> 1.00000000E+377 Clamped
clam617 apply 1E+376 -> 1.0000000E+376 Clamped
clam619 apply 1E+375 -> 1.000000E+375 Clamped
clam621 apply 1E+374 -> 1.00000E+374 Clamped
clam623 apply 1E+373 -> 1.0000E+373 Clamped
clam625 apply 1E+372 -> 1.000E+372 Clamped
clam627 apply 1E+371 -> 1.00E+371 Clamped
clam629 apply 1E+370 -> 1.0E+370 Clamped
clam631 apply 1E+369 -> 1E+369
clam633 apply 1E+368 -> 1E+368
-- same with 9s
clam641 apply 9E+384 -> 9.000000000000000E+384 Clamped
clam643 apply 9E+383 -> 9.00000000000000E+383 Clamped
clam645 apply 9E+382 -> 9.0000000000000E+382 Clamped
clam647 apply 9E+381 -> 9.000000000000E+381 Clamped
clam649 apply 9E+380 -> 9.00000000000E+380 Clamped
clam651 apply 9E+379 -> 9.0000000000E+379 Clamped
clam653 apply 9E+378 -> 9.000000000E+378 Clamped
clam655 apply 9E+377 -> 9.00000000E+377 Clamped
clam657 apply 9E+376 -> 9.0000000E+376 Clamped
clam659 apply 9E+375 -> 9.000000E+375 Clamped
clam661 apply 9E+374 -> 9.00000E+374 Clamped
clam663 apply 9E+373 -> 9.0000E+373 Clamped
clam665 apply 9E+372 -> 9.000E+372 Clamped
clam667 apply 9E+371 -> 9.00E+371 Clamped
clam669 apply 9E+370 -> 9.0E+370 Clamped
clam671 apply 9E+369 -> 9E+369
clam673 apply 9E+368 -> 9E+368
-- example from documentation
precision: 7
rounding: half_even
maxExponent: +96
minExponent: -95
clamp: 0
clam700 apply 1.23E+96 -> 1.23E+96
clamp: 1
clam701 apply 1.23E+96 -> 1.230000E+96 Clamped

View file

@ -1,717 +0,0 @@
------------------------------------------------------------------------
-- compare.decTest -- decimal comparison --
-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necesary).
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
-- sanity checks
comx001 compare -2 -2 -> 0
comx002 compare -2 -1 -> -1
comx003 compare -2 0 -> -1
comx004 compare -2 1 -> -1
comx005 compare -2 2 -> -1
comx006 compare -1 -2 -> 1
comx007 compare -1 -1 -> 0
comx008 compare -1 0 -> -1
comx009 compare -1 1 -> -1
comx010 compare -1 2 -> -1
comx011 compare 0 -2 -> 1
comx012 compare 0 -1 -> 1
comx013 compare 0 0 -> 0
comx014 compare 0 1 -> -1
comx015 compare 0 2 -> -1
comx016 compare 1 -2 -> 1
comx017 compare 1 -1 -> 1
comx018 compare 1 0 -> 1
comx019 compare 1 1 -> 0
comx020 compare 1 2 -> -1
comx021 compare 2 -2 -> 1
comx022 compare 2 -1 -> 1
comx023 compare 2 0 -> 1
comx025 compare 2 1 -> 1
comx026 compare 2 2 -> 0
comx031 compare -20 -20 -> 0
comx032 compare -20 -10 -> -1
comx033 compare -20 00 -> -1
comx034 compare -20 10 -> -1
comx035 compare -20 20 -> -1
comx036 compare -10 -20 -> 1
comx037 compare -10 -10 -> 0
comx038 compare -10 00 -> -1
comx039 compare -10 10 -> -1
comx040 compare -10 20 -> -1
comx041 compare 00 -20 -> 1
comx042 compare 00 -10 -> 1
comx043 compare 00 00 -> 0
comx044 compare 00 10 -> -1
comx045 compare 00 20 -> -1
comx046 compare 10 -20 -> 1
comx047 compare 10 -10 -> 1
comx048 compare 10 00 -> 1
comx049 compare 10 10 -> 0
comx050 compare 10 20 -> -1
comx051 compare 20 -20 -> 1
comx052 compare 20 -10 -> 1
comx053 compare 20 00 -> 1
comx055 compare 20 10 -> 1
comx056 compare 20 20 -> 0
comx061 compare -2.0 -2.0 -> 0
comx062 compare -2.0 -1.0 -> -1
comx063 compare -2.0 0.0 -> -1
comx064 compare -2.0 1.0 -> -1
comx065 compare -2.0 2.0 -> -1
comx066 compare -1.0 -2.0 -> 1
comx067 compare -1.0 -1.0 -> 0
comx068 compare -1.0 0.0 -> -1
comx069 compare -1.0 1.0 -> -1
comx070 compare -1.0 2.0 -> -1
comx071 compare 0.0 -2.0 -> 1
comx072 compare 0.0 -1.0 -> 1
comx073 compare 0.0 0.0 -> 0
comx074 compare 0.0 1.0 -> -1
comx075 compare 0.0 2.0 -> -1
comx076 compare 1.0 -2.0 -> 1
comx077 compare 1.0 -1.0 -> 1
comx078 compare 1.0 0.0 -> 1
comx079 compare 1.0 1.0 -> 0
comx080 compare 1.0 2.0 -> -1
comx081 compare 2.0 -2.0 -> 1
comx082 compare 2.0 -1.0 -> 1
comx083 compare 2.0 0.0 -> 1
comx085 compare 2.0 1.0 -> 1
comx086 compare 2.0 2.0 -> 0
-- now some cases which might overflow if subtract were used
maxexponent: 999999999
minexponent: -999999999
comx090 compare 9.99999999E+999999999 9.99999999E+999999999 -> 0
comx091 compare -9.99999999E+999999999 9.99999999E+999999999 -> -1
comx092 compare 9.99999999E+999999999 -9.99999999E+999999999 -> 1
comx093 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0
-- some differing length/exponent cases
comx100 compare 7.0 7.0 -> 0
comx101 compare 7.0 7 -> 0
comx102 compare 7 7.0 -> 0
comx103 compare 7E+0 7.0 -> 0
comx104 compare 70E-1 7.0 -> 0
comx105 compare 0.7E+1 7 -> 0
comx106 compare 70E-1 7 -> 0
comx107 compare 7.0 7E+0 -> 0
comx108 compare 7.0 70E-1 -> 0
comx109 compare 7 0.7E+1 -> 0
comx110 compare 7 70E-1 -> 0
comx120 compare 8.0 7.0 -> 1
comx121 compare 8.0 7 -> 1
comx122 compare 8 7.0 -> 1
comx123 compare 8E+0 7.0 -> 1
comx124 compare 80E-1 7.0 -> 1
comx125 compare 0.8E+1 7 -> 1
comx126 compare 80E-1 7 -> 1
comx127 compare 8.0 7E+0 -> 1
comx128 compare 8.0 70E-1 -> 1
comx129 compare 8 0.7E+1 -> 1
comx130 compare 8 70E-1 -> 1
comx140 compare 8.0 9.0 -> -1
comx141 compare 8.0 9 -> -1
comx142 compare 8 9.0 -> -1
comx143 compare 8E+0 9.0 -> -1
comx144 compare 80E-1 9.0 -> -1
comx145 compare 0.8E+1 9 -> -1
comx146 compare 80E-1 9 -> -1
comx147 compare 8.0 9E+0 -> -1
comx148 compare 8.0 90E-1 -> -1
comx149 compare 8 0.9E+1 -> -1
comx150 compare 8 90E-1 -> -1
-- and again, with sign changes -+ ..
comx200 compare -7.0 7.0 -> -1
comx201 compare -7.0 7 -> -1
comx202 compare -7 7.0 -> -1
comx203 compare -7E+0 7.0 -> -1
comx204 compare -70E-1 7.0 -> -1
comx205 compare -0.7E+1 7 -> -1
comx206 compare -70E-1 7 -> -1
comx207 compare -7.0 7E+0 -> -1
comx208 compare -7.0 70E-1 -> -1
comx209 compare -7 0.7E+1 -> -1
comx210 compare -7 70E-1 -> -1
comx220 compare -8.0 7.0 -> -1
comx221 compare -8.0 7 -> -1
comx222 compare -8 7.0 -> -1
comx223 compare -8E+0 7.0 -> -1
comx224 compare -80E-1 7.0 -> -1
comx225 compare -0.8E+1 7 -> -1
comx226 compare -80E-1 7 -> -1
comx227 compare -8.0 7E+0 -> -1
comx228 compare -8.0 70E-1 -> -1
comx229 compare -8 0.7E+1 -> -1
comx230 compare -8 70E-1 -> -1
comx240 compare -8.0 9.0 -> -1
comx241 compare -8.0 9 -> -1
comx242 compare -8 9.0 -> -1
comx243 compare -8E+0 9.0 -> -1
comx244 compare -80E-1 9.0 -> -1
comx245 compare -0.8E+1 9 -> -1
comx246 compare -80E-1 9 -> -1
comx247 compare -8.0 9E+0 -> -1
comx248 compare -8.0 90E-1 -> -1
comx249 compare -8 0.9E+1 -> -1
comx250 compare -8 90E-1 -> -1
-- and again, with sign changes +- ..
comx300 compare 7.0 -7.0 -> 1
comx301 compare 7.0 -7 -> 1
comx302 compare 7 -7.0 -> 1
comx303 compare 7E+0 -7.0 -> 1
comx304 compare 70E-1 -7.0 -> 1
comx305 compare .7E+1 -7 -> 1
comx306 compare 70E-1 -7 -> 1
comx307 compare 7.0 -7E+0 -> 1
comx308 compare 7.0 -70E-1 -> 1
comx309 compare 7 -.7E+1 -> 1
comx310 compare 7 -70E-1 -> 1
comx320 compare 8.0 -7.0 -> 1
comx321 compare 8.0 -7 -> 1
comx322 compare 8 -7.0 -> 1
comx323 compare 8E+0 -7.0 -> 1
comx324 compare 80E-1 -7.0 -> 1
comx325 compare .8E+1 -7 -> 1
comx326 compare 80E-1 -7 -> 1
comx327 compare 8.0 -7E+0 -> 1
comx328 compare 8.0 -70E-1 -> 1
comx329 compare 8 -.7E+1 -> 1
comx330 compare 8 -70E-1 -> 1
comx340 compare 8.0 -9.0 -> 1
comx341 compare 8.0 -9 -> 1
comx342 compare 8 -9.0 -> 1
comx343 compare 8E+0 -9.0 -> 1
comx344 compare 80E-1 -9.0 -> 1
comx345 compare .8E+1 -9 -> 1
comx346 compare 80E-1 -9 -> 1
comx347 compare 8.0 -9E+0 -> 1
comx348 compare 8.0 -90E-1 -> 1
comx349 compare 8 -.9E+1 -> 1
comx350 compare 8 -90E-1 -> 1
-- and again, with sign changes -- ..
comx400 compare -7.0 -7.0 -> 0
comx401 compare -7.0 -7 -> 0
comx402 compare -7 -7.0 -> 0
comx403 compare -7E+0 -7.0 -> 0
comx404 compare -70E-1 -7.0 -> 0
comx405 compare -.7E+1 -7 -> 0
comx406 compare -70E-1 -7 -> 0
comx407 compare -7.0 -7E+0 -> 0
comx408 compare -7.0 -70E-1 -> 0
comx409 compare -7 -.7E+1 -> 0
comx410 compare -7 -70E-1 -> 0
comx420 compare -8.0 -7.0 -> -1
comx421 compare -8.0 -7 -> -1
comx422 compare -8 -7.0 -> -1
comx423 compare -8E+0 -7.0 -> -1
comx424 compare -80E-1 -7.0 -> -1
comx425 compare -.8E+1 -7 -> -1
comx426 compare -80E-1 -7 -> -1
comx427 compare -8.0 -7E+0 -> -1
comx428 compare -8.0 -70E-1 -> -1
comx429 compare -8 -.7E+1 -> -1
comx430 compare -8 -70E-1 -> -1
comx440 compare -8.0 -9.0 -> 1
comx441 compare -8.0 -9 -> 1
comx442 compare -8 -9.0 -> 1
comx443 compare -8E+0 -9.0 -> 1
comx444 compare -80E-1 -9.0 -> 1
comx445 compare -.8E+1 -9 -> 1
comx446 compare -80E-1 -9 -> 1
comx447 compare -8.0 -9E+0 -> 1
comx448 compare -8.0 -90E-1 -> 1
comx449 compare -8 -.9E+1 -> 1
comx450 compare -8 -90E-1 -> 1
-- testcases that subtract to lots of zeros at boundaries [pgr]
precision: 40
comx470 compare 123.4560000000000000E789 123.456E789 -> 0
comx471 compare 123.456000000000000E-89 123.456E-89 -> 0
comx472 compare 123.45600000000000E789 123.456E789 -> 0
comx473 compare 123.4560000000000E-89 123.456E-89 -> 0
comx474 compare 123.456000000000E789 123.456E789 -> 0
comx475 compare 123.45600000000E-89 123.456E-89 -> 0
comx476 compare 123.4560000000E789 123.456E789 -> 0
comx477 compare 123.456000000E-89 123.456E-89 -> 0
comx478 compare 123.45600000E789 123.456E789 -> 0
comx479 compare 123.4560000E-89 123.456E-89 -> 0
comx480 compare 123.456000E789 123.456E789 -> 0
comx481 compare 123.45600E-89 123.456E-89 -> 0
comx482 compare 123.4560E789 123.456E789 -> 0
comx483 compare 123.456E-89 123.456E-89 -> 0
comx484 compare 123.456E-89 123.4560000000000000E-89 -> 0
comx485 compare 123.456E789 123.456000000000000E789 -> 0
comx486 compare 123.456E-89 123.45600000000000E-89 -> 0
comx487 compare 123.456E789 123.4560000000000E789 -> 0
comx488 compare 123.456E-89 123.456000000000E-89 -> 0
comx489 compare 123.456E789 123.45600000000E789 -> 0
comx490 compare 123.456E-89 123.4560000000E-89 -> 0
comx491 compare 123.456E789 123.456000000E789 -> 0
comx492 compare 123.456E-89 123.45600000E-89 -> 0
comx493 compare 123.456E789 123.4560000E789 -> 0
comx494 compare 123.456E-89 123.456000E-89 -> 0
comx495 compare 123.456E789 123.45600E789 -> 0
comx496 compare 123.456E-89 123.4560E-89 -> 0
comx497 compare 123.456E789 123.456E789 -> 0
-- wide-ranging, around precision; signs equal
precision: 9
comx500 compare 1 1E-15 -> 1
comx501 compare 1 1E-14 -> 1
comx502 compare 1 1E-13 -> 1
comx503 compare 1 1E-12 -> 1
comx504 compare 1 1E-11 -> 1
comx505 compare 1 1E-10 -> 1
comx506 compare 1 1E-9 -> 1
comx507 compare 1 1E-8 -> 1
comx508 compare 1 1E-7 -> 1
comx509 compare 1 1E-6 -> 1
comx510 compare 1 1E-5 -> 1
comx511 compare 1 1E-4 -> 1
comx512 compare 1 1E-3 -> 1
comx513 compare 1 1E-2 -> 1
comx514 compare 1 1E-1 -> 1
comx515 compare 1 1E-0 -> 0
comx516 compare 1 1E+1 -> -1
comx517 compare 1 1E+2 -> -1
comx518 compare 1 1E+3 -> -1
comx519 compare 1 1E+4 -> -1
comx521 compare 1 1E+5 -> -1
comx522 compare 1 1E+6 -> -1
comx523 compare 1 1E+7 -> -1
comx524 compare 1 1E+8 -> -1
comx525 compare 1 1E+9 -> -1
comx526 compare 1 1E+10 -> -1
comx527 compare 1 1E+11 -> -1
comx528 compare 1 1E+12 -> -1
comx529 compare 1 1E+13 -> -1
comx530 compare 1 1E+14 -> -1
comx531 compare 1 1E+15 -> -1
-- LR swap
comx540 compare 1E-15 1 -> -1
comx541 compare 1E-14 1 -> -1
comx542 compare 1E-13 1 -> -1
comx543 compare 1E-12 1 -> -1
comx544 compare 1E-11 1 -> -1
comx545 compare 1E-10 1 -> -1
comx546 compare 1E-9 1 -> -1
comx547 compare 1E-8 1 -> -1
comx548 compare 1E-7 1 -> -1
comx549 compare 1E-6 1 -> -1
comx550 compare 1E-5 1 -> -1
comx551 compare 1E-4 1 -> -1
comx552 compare 1E-3 1 -> -1
comx553 compare 1E-2 1 -> -1
comx554 compare 1E-1 1 -> -1
comx555 compare 1E-0 1 -> 0
comx556 compare 1E+1 1 -> 1
comx557 compare 1E+2 1 -> 1
comx558 compare 1E+3 1 -> 1
comx559 compare 1E+4 1 -> 1
comx561 compare 1E+5 1 -> 1
comx562 compare 1E+6 1 -> 1
comx563 compare 1E+7 1 -> 1
comx564 compare 1E+8 1 -> 1
comx565 compare 1E+9 1 -> 1
comx566 compare 1E+10 1 -> 1
comx567 compare 1E+11 1 -> 1
comx568 compare 1E+12 1 -> 1
comx569 compare 1E+13 1 -> 1
comx570 compare 1E+14 1 -> 1
comx571 compare 1E+15 1 -> 1
-- similar with an useful coefficient, one side only
comx580 compare 0.000000987654321 1E-15 -> 1
comx581 compare 0.000000987654321 1E-14 -> 1
comx582 compare 0.000000987654321 1E-13 -> 1
comx583 compare 0.000000987654321 1E-12 -> 1
comx584 compare 0.000000987654321 1E-11 -> 1
comx585 compare 0.000000987654321 1E-10 -> 1
comx586 compare 0.000000987654321 1E-9 -> 1
comx587 compare 0.000000987654321 1E-8 -> 1
comx588 compare 0.000000987654321 1E-7 -> 1
comx589 compare 0.000000987654321 1E-6 -> -1
comx590 compare 0.000000987654321 1E-5 -> -1
comx591 compare 0.000000987654321 1E-4 -> -1
comx592 compare 0.000000987654321 1E-3 -> -1
comx593 compare 0.000000987654321 1E-2 -> -1
comx594 compare 0.000000987654321 1E-1 -> -1
comx595 compare 0.000000987654321 1E-0 -> -1
comx596 compare 0.000000987654321 1E+1 -> -1
comx597 compare 0.000000987654321 1E+2 -> -1
comx598 compare 0.000000987654321 1E+3 -> -1
comx599 compare 0.000000987654321 1E+4 -> -1
-- check some unit-y traps
precision: 20
comx600 compare 12 12.2345 -> -1
comx601 compare 12.0 12.2345 -> -1
comx602 compare 12.00 12.2345 -> -1
comx603 compare 12.000 12.2345 -> -1
comx604 compare 12.0000 12.2345 -> -1
comx605 compare 12.00000 12.2345 -> -1
comx606 compare 12.000000 12.2345 -> -1
comx607 compare 12.0000000 12.2345 -> -1
comx608 compare 12.00000000 12.2345 -> -1
comx609 compare 12.000000000 12.2345 -> -1
comx610 compare 12.1234 12 -> 1
comx611 compare 12.1234 12.0 -> 1
comx612 compare 12.1234 12.00 -> 1
comx613 compare 12.1234 12.000 -> 1
comx614 compare 12.1234 12.0000 -> 1
comx615 compare 12.1234 12.00000 -> 1
comx616 compare 12.1234 12.000000 -> 1
comx617 compare 12.1234 12.0000000 -> 1
comx618 compare 12.1234 12.00000000 -> 1
comx619 compare 12.1234 12.000000000 -> 1
comx620 compare -12 -12.2345 -> 1
comx621 compare -12.0 -12.2345 -> 1
comx622 compare -12.00 -12.2345 -> 1
comx623 compare -12.000 -12.2345 -> 1
comx624 compare -12.0000 -12.2345 -> 1
comx625 compare -12.00000 -12.2345 -> 1
comx626 compare -12.000000 -12.2345 -> 1
comx627 compare -12.0000000 -12.2345 -> 1
comx628 compare -12.00000000 -12.2345 -> 1
comx629 compare -12.000000000 -12.2345 -> 1
comx630 compare -12.1234 -12 -> -1
comx631 compare -12.1234 -12.0 -> -1
comx632 compare -12.1234 -12.00 -> -1
comx633 compare -12.1234 -12.000 -> -1
comx634 compare -12.1234 -12.0000 -> -1
comx635 compare -12.1234 -12.00000 -> -1
comx636 compare -12.1234 -12.000000 -> -1
comx637 compare -12.1234 -12.0000000 -> -1
comx638 compare -12.1234 -12.00000000 -> -1
comx639 compare -12.1234 -12.000000000 -> -1
precision: 9
-- extended zeros
comx640 compare 0 0 -> 0
comx641 compare 0 -0 -> 0
comx642 compare 0 -0.0 -> 0
comx643 compare 0 0.0 -> 0
comx644 compare -0 0 -> 0
comx645 compare -0 -0 -> 0
comx646 compare -0 -0.0 -> 0
comx647 compare -0 0.0 -> 0
comx648 compare 0.0 0 -> 0
comx649 compare 0.0 -0 -> 0
comx650 compare 0.0 -0.0 -> 0
comx651 compare 0.0 0.0 -> 0
comx652 compare -0.0 0 -> 0
comx653 compare -0.0 -0 -> 0
comx654 compare -0.0 -0.0 -> 0
comx655 compare -0.0 0.0 -> 0
comx656 compare -0E1 0.0 -> 0
comx657 compare -0E2 0.0 -> 0
comx658 compare 0E1 0.0 -> 0
comx659 compare 0E2 0.0 -> 0
comx660 compare -0E1 0 -> 0
comx661 compare -0E2 0 -> 0
comx662 compare 0E1 0 -> 0
comx663 compare 0E2 0 -> 0
comx664 compare -0E1 -0E1 -> 0
comx665 compare -0E2 -0E1 -> 0
comx666 compare 0E1 -0E1 -> 0
comx667 compare 0E2 -0E1 -> 0
comx668 compare -0E1 -0E2 -> 0
comx669 compare -0E2 -0E2 -> 0
comx670 compare 0E1 -0E2 -> 0
comx671 compare 0E2 -0E2 -> 0
comx672 compare -0E1 0E1 -> 0
comx673 compare -0E2 0E1 -> 0
comx674 compare 0E1 0E1 -> 0
comx675 compare 0E2 0E1 -> 0
comx676 compare -0E1 0E2 -> 0
comx677 compare -0E2 0E2 -> 0
comx678 compare 0E1 0E2 -> 0
comx679 compare 0E2 0E2 -> 0
-- trailing zeros; unit-y
precision: 20
comx680 compare 12 12 -> 0
comx681 compare 12 12.0 -> 0
comx682 compare 12 12.00 -> 0
comx683 compare 12 12.000 -> 0
comx684 compare 12 12.0000 -> 0
comx685 compare 12 12.00000 -> 0
comx686 compare 12 12.000000 -> 0
comx687 compare 12 12.0000000 -> 0
comx688 compare 12 12.00000000 -> 0
comx689 compare 12 12.000000000 -> 0
comx690 compare 12 12 -> 0
comx691 compare 12.0 12 -> 0
comx692 compare 12.00 12 -> 0
comx693 compare 12.000 12 -> 0
comx694 compare 12.0000 12 -> 0
comx695 compare 12.00000 12 -> 0
comx696 compare 12.000000 12 -> 0
comx697 compare 12.0000000 12 -> 0
comx698 compare 12.00000000 12 -> 0
comx699 compare 12.000000000 12 -> 0
-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
comx701 compare 12345678000 1 -> 1
comx702 compare 1 12345678000 -> -1
comx703 compare 1234567800 1 -> 1
comx704 compare 1 1234567800 -> -1
comx705 compare 1234567890 1 -> 1
comx706 compare 1 1234567890 -> -1
comx707 compare 1234567891 1 -> 1
comx708 compare 1 1234567891 -> -1
comx709 compare 12345678901 1 -> 1
comx710 compare 1 12345678901 -> -1
comx711 compare 1234567896 1 -> 1
comx712 compare 1 1234567896 -> -1
comx713 compare -1234567891 1 -> -1
comx714 compare 1 -1234567891 -> 1
comx715 compare -12345678901 1 -> -1
comx716 compare 1 -12345678901 -> 1
comx717 compare -1234567896 1 -> -1
comx718 compare 1 -1234567896 -> 1
precision: 15
-- same with plenty of precision
comx721 compare 12345678000 1 -> 1
comx722 compare 1 12345678000 -> -1
comx723 compare 1234567800 1 -> 1
comx724 compare 1 1234567800 -> -1
comx725 compare 1234567890 1 -> 1
comx726 compare 1 1234567890 -> -1
comx727 compare 1234567891 1 -> 1
comx728 compare 1 1234567891 -> -1
comx729 compare 12345678901 1 -> 1
comx730 compare 1 12345678901 -> -1
comx731 compare 1234567896 1 -> 1
comx732 compare 1 1234567896 -> -1
-- residue cases
precision: 5
comx740 compare 1 0.9999999 -> 1
comx741 compare 1 0.999999 -> 1
comx742 compare 1 0.99999 -> 1
comx743 compare 1 1.0000 -> 0
comx744 compare 1 1.00001 -> -1
comx745 compare 1 1.000001 -> -1
comx746 compare 1 1.0000001 -> -1
comx750 compare 0.9999999 1 -> -1
comx751 compare 0.999999 1 -> -1
comx752 compare 0.99999 1 -> -1
comx753 compare 1.0000 1 -> 0
comx754 compare 1.00001 1 -> 1
comx755 compare 1.000001 1 -> 1
comx756 compare 1.0000001 1 -> 1
-- a selection of longies
comx760 compare -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1
comx761 compare -36852134.84194296250843579428931 -36852134.84194296250843579428931 -> 0
comx762 compare -36852134.94194296250843579428931 -36852134.84194296250843579428931 -> -1
comx763 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
-- precisions above or below the difference should have no effect
precision: 11
comx764 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 10
comx765 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 9
comx766 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 8
comx767 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 7
comx768 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 6
comx769 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 5
comx770 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 4
comx771 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 3
comx772 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 2
comx773 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
precision: 1
comx774 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931 -> 1
-- Specials
precision: 9
comx780 compare Inf -Inf -> 1
comx781 compare Inf -1000 -> 1
comx782 compare Inf -1 -> 1
comx783 compare Inf -0 -> 1
comx784 compare Inf 0 -> 1
comx785 compare Inf 1 -> 1
comx786 compare Inf 1000 -> 1
comx787 compare Inf Inf -> 0
comx788 compare -1000 Inf -> -1
comx789 compare -Inf Inf -> -1
comx790 compare -1 Inf -> -1
comx791 compare -0 Inf -> -1
comx792 compare 0 Inf -> -1
comx793 compare 1 Inf -> -1
comx794 compare 1000 Inf -> -1
comx795 compare Inf Inf -> 0
comx800 compare -Inf -Inf -> 0
comx801 compare -Inf -1000 -> -1
comx802 compare -Inf -1 -> -1
comx803 compare -Inf -0 -> -1
comx804 compare -Inf 0 -> -1
comx805 compare -Inf 1 -> -1
comx806 compare -Inf 1000 -> -1
comx807 compare -Inf Inf -> -1
comx808 compare -Inf -Inf -> 0
comx809 compare -1000 -Inf -> 1
comx810 compare -1 -Inf -> 1
comx811 compare -0 -Inf -> 1
comx812 compare 0 -Inf -> 1
comx813 compare 1 -Inf -> 1
comx814 compare 1000 -Inf -> 1
comx815 compare Inf -Inf -> 1
comx821 compare NaN -Inf -> NaN
comx822 compare NaN -1000 -> NaN
comx823 compare NaN -1 -> NaN
comx824 compare NaN -0 -> NaN
comx825 compare NaN 0 -> NaN
comx826 compare NaN 1 -> NaN
comx827 compare NaN 1000 -> NaN
comx828 compare NaN Inf -> NaN
comx829 compare NaN NaN -> NaN
comx830 compare -Inf NaN -> NaN
comx831 compare -1000 NaN -> NaN
comx832 compare -1 NaN -> NaN
comx833 compare -0 NaN -> NaN
comx834 compare 0 NaN -> NaN
comx835 compare 1 NaN -> NaN
comx836 compare 1000 NaN -> NaN
comx837 compare Inf NaN -> NaN
comx838 compare -NaN -NaN -> -NaN
comx839 compare +NaN -NaN -> NaN
comx840 compare -NaN +NaN -> -NaN
comx841 compare sNaN -Inf -> NaN Invalid_operation
comx842 compare sNaN -1000 -> NaN Invalid_operation
comx843 compare sNaN -1 -> NaN Invalid_operation
comx844 compare sNaN -0 -> NaN Invalid_operation
comx845 compare sNaN 0 -> NaN Invalid_operation
comx846 compare sNaN 1 -> NaN Invalid_operation
comx847 compare sNaN 1000 -> NaN Invalid_operation
comx848 compare sNaN NaN -> NaN Invalid_operation
comx849 compare sNaN sNaN -> NaN Invalid_operation
comx850 compare NaN sNaN -> NaN Invalid_operation
comx851 compare -Inf sNaN -> NaN Invalid_operation
comx852 compare -1000 sNaN -> NaN Invalid_operation
comx853 compare -1 sNaN -> NaN Invalid_operation
comx854 compare -0 sNaN -> NaN Invalid_operation
comx855 compare 0 sNaN -> NaN Invalid_operation
comx856 compare 1 sNaN -> NaN Invalid_operation
comx857 compare 1000 sNaN -> NaN Invalid_operation
comx858 compare Inf sNaN -> NaN Invalid_operation
comx859 compare NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
comx860 compare NaN9 -Inf -> NaN9
comx861 compare NaN8 999 -> NaN8
comx862 compare NaN77 Inf -> NaN77
comx863 compare -NaN67 NaN5 -> -NaN67
comx864 compare -Inf -NaN4 -> -NaN4
comx865 compare -999 -NaN33 -> -NaN33
comx866 compare Inf NaN2 -> NaN2
comx867 compare -NaN41 -NaN42 -> -NaN41
comx868 compare +NaN41 -NaN42 -> NaN41
comx869 compare -NaN41 +NaN42 -> -NaN41
comx870 compare +NaN41 +NaN42 -> NaN41
comx871 compare -sNaN99 -Inf -> -NaN99 Invalid_operation
comx872 compare sNaN98 -11 -> NaN98 Invalid_operation
comx873 compare sNaN97 NaN -> NaN97 Invalid_operation
comx874 compare sNaN16 sNaN94 -> NaN16 Invalid_operation
comx875 compare NaN85 sNaN83 -> NaN83 Invalid_operation
comx876 compare -Inf sNaN92 -> NaN92 Invalid_operation
comx877 compare 088 sNaN81 -> NaN81 Invalid_operation
comx878 compare Inf sNaN90 -> NaN90 Invalid_operation
comx879 compare NaN -sNaN89 -> -NaN89 Invalid_operation
-- overflow and underflow tests .. subnormal results now allowed
maxExponent: 999999999
minexponent: -999999999
comx880 compare +1.23456789012345E-0 9E+999999999 -> -1
comx881 compare 9E+999999999 +1.23456789012345E-0 -> 1
comx882 compare +0.100 9E-999999999 -> 1
comx883 compare 9E-999999999 +0.100 -> -1
comx885 compare -1.23456789012345E-0 9E+999999999 -> -1
comx886 compare 9E+999999999 -1.23456789012345E-0 -> 1
comx887 compare -0.100 9E-999999999 -> -1
comx888 compare 9E-999999999 -0.100 -> 1
comx889 compare 1e-599999999 1e-400000001 -> -1
comx890 compare 1e-599999999 1e-400000000 -> -1
comx891 compare 1e-600000000 1e-400000000 -> -1
comx892 compare 9e-999999998 0.01 -> -1
comx893 compare 9e-999999998 0.1 -> -1
comx894 compare 0.01 9e-999999998 -> 1
comx895 compare 1e599999999 1e400000001 -> 1
comx896 compare 1e599999999 1e400000000 -> 1
comx897 compare 1e600000000 1e400000000 -> 1
comx898 compare 9e999999998 100 -> 1
comx899 compare 9e999999998 10 -> 1
comx900 compare 100 9e999999998 -> -1
-- signs
comx901 compare 1e+777777777 1e+411111111 -> 1
comx902 compare 1e+777777777 -1e+411111111 -> 1
comx903 compare -1e+777777777 1e+411111111 -> -1
comx904 compare -1e+777777777 -1e+411111111 -> -1
comx905 compare 1e-777777777 1e-411111111 -> -1
comx906 compare 1e-777777777 -1e-411111111 -> 1
comx907 compare -1e-777777777 1e-411111111 -> -1
comx908 compare -1e-777777777 -1e-411111111 -> 1
-- Null tests
comx990 compare 10 # -> NaN Invalid_operation
comx991 compare # 10 -> NaN Invalid_operation

View file

@ -1,441 +0,0 @@
------------------------------------------------------------------------
-- decimal128.decTest -- decimal sixteen-byte format testcases --
-- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of tests is for the sixteen-byte concrete representation.
-- Its characteristics are:
--
-- 1 bit sign
-- 5 bits combination field
-- 12 bits exponent continuation
-- 110 bits coefficient continuation
--
-- Total exponent length 14 bits
-- Total coefficient length 114 bits (34 digits)
--
-- Elimit = 12287 (maximum encoded exponent)
-- Emax = 6144 (largest exponent value)
-- Emin = -6143 (smallest exponent value)
-- bias = 6176 (subtracted from encoded exponent) = -Etiny
extended: 1
precision: 34
rounding: half_up
maxExponent: 6144
minExponent: -6143
-- General testcases
-- (mostly derived from the Strawman 4 document and examples)
decg001 apply #A20780000000000000000000000003D0 -> -7.50
decg002 apply -7.50 -> #A20780000000000000000000000003D0
-- Normality
decf010 apply 1234567890123456789012345678901234 -> #2608134b9c1e28e56f3c127177823534
decf011 apply 1234567890123456789012345678901234.0 -> #2608134b9c1e28e56f3c127177823534 Rounded
decf012 apply 1234567890123456789012345678901234.1 -> #2608134b9c1e28e56f3c127177823534 Rounded Inexact
decf013 apply -1234567890123456789012345678901234 -> #a608134b9c1e28e56f3c127177823534
decf014 apply -1234567890123456789012345678901234.0 -> #a608134b9c1e28e56f3c127177823534 Rounded
decf015 apply -1234567890123456789012345678901234.1 -> #a608134b9c1e28e56f3c127177823534 Rounded Inexact
-- Nmax and similar
decf022 apply 9.999999999999999999999999999999999E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff
decf023 apply #77ffcff3fcff3fcff3fcff3fcff3fcff -> 9.999999999999999999999999999999999E+6144
decf024 apply 1.234567890123456789012345678901234E+6144 -> #47ffd34b9c1e28e56f3c127177823534
decf025 apply #47ffd34b9c1e28e56f3c127177823534 -> 1.234567890123456789012345678901234E+6144
-- fold-downs (more below)
decf030 apply 1.23E+6144 -> #47ffd300000000000000000000000000 Clamped
decf031 apply #47ffd300000000000000000000000000 -> 1.230000000000000000000000000000000E+6144
decf032 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped
decf033 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144
-- overflows
maxExponent: 9999 -- set high so conversion causes the overflow
minExponent: -9999
decf040 apply 10E+6144 -> #78000000000000000000000000000000 Overflow Rounded Inexact
decf041 apply 1.000000000000000E+6145 -> #78000000000000000000000000000000 Overflow Rounded Inexact
maxExponent: 6144
minExponent: -6143
decf051 apply 12345 -> #220800000000000000000000000049c5
decf052 apply #220800000000000000000000000049c5 -> 12345
decf053 apply 1234 -> #22080000000000000000000000000534
decf054 apply #22080000000000000000000000000534 -> 1234
decf055 apply 123 -> #220800000000000000000000000000a3
decf056 apply #220800000000000000000000000000a3 -> 123
decf057 apply 12 -> #22080000000000000000000000000012
decf058 apply #22080000000000000000000000000012 -> 12
decf059 apply 1 -> #22080000000000000000000000000001
decf060 apply #22080000000000000000000000000001 -> 1
decf061 apply 1.23 -> #220780000000000000000000000000a3
decf062 apply #220780000000000000000000000000a3 -> 1.23
decf063 apply 123.45 -> #220780000000000000000000000049c5
decf064 apply #220780000000000000000000000049c5 -> 123.45
-- Nmin and below
decf071 apply 1E-6143 -> #00084000000000000000000000000001
decf072 apply #00084000000000000000000000000001 -> 1E-6143
decf073 apply 1.000000000000000000000000000000000E-6143 -> #04000000000000000000000000000000
decf074 apply #04000000000000000000000000000000 -> 1.000000000000000000000000000000000E-6143
decf075 apply 1.000000000000000000000000000000001E-6143 -> #04000000000000000000000000000001
decf076 apply #04000000000000000000000000000001 -> 1.000000000000000000000000000000001E-6143
decf077 apply 0.100000000000000000000000000000000E-6143 -> #00000800000000000000000000000000 Subnormal
decf078 apply #00000800000000000000000000000000 -> 1.00000000000000000000000000000000E-6144 Subnormal
decf079 apply 0.000000000000000000000000000000010E-6143 -> #00000000000000000000000000000010 Subnormal
decf080 apply #00000000000000000000000000000010 -> 1.0E-6175 Subnormal
decf081 apply 0.00000000000000000000000000000001E-6143 -> #00004000000000000000000000000001 Subnormal
decf082 apply #00004000000000000000000000000001 -> 1E-6175 Subnormal
decf083 apply 0.000000000000000000000000000000001E-6143 -> #00000000000000000000000000000001 Subnormal
decf084 apply #00000000000000000000000000000001 -> 1E-6176 Subnormal
-- underflows
decf090 apply 1e-6176 -> #00000000000000000000000000000001 Subnormal
decf091 apply 1.9e-6176 -> #00000000000000000000000000000002 Subnormal Underflow Inexact Rounded
decf092 apply 1.1e-6176 -> #00000000000000000000000000000001 Subnormal Underflow Inexact Rounded
decf093 apply 1.00000000001e-6176 -> #00000000000000000000000000000001 Subnormal Underflow Inexact Rounded
decf094 apply 1.00000000000001e-6176 -> #00000000000000000000000000000001 Subnormal Underflow Inexact Rounded
decf095 apply 1.000000000000001e-6176 -> #00000000000000000000000000000001 Subnormal Underflow Inexact Rounded
decf096 apply 0.1e-6176 -> #00000000000000000000000000000000 Subnormal Underflow Inexact Rounded
decf097 apply 0.00000000001e-6176 -> #00000000000000000000000000000000 Subnormal Underflow Inexact Rounded
decf098 apply 0.00000000000001e-6176 -> #00000000000000000000000000000000 Subnormal Underflow Inexact Rounded
decf099 apply 0.000000000000001e-6176 -> #00000000000000000000000000000000 Subnormal Underflow Inexact Rounded
decf100 apply 999999999999999999999999999999999e-6176 -> #00000ff3fcff3fcff3fcff3fcff3fcff Subnormal
-- same again, negatives
-- Nmax and similar
decf122 apply -9.999999999999999999999999999999999E+6144 -> #f7ffcff3fcff3fcff3fcff3fcff3fcff
decf123 apply #f7ffcff3fcff3fcff3fcff3fcff3fcff -> -9.999999999999999999999999999999999E+6144
decf124 apply -1.234567890123456789012345678901234E+6144 -> #c7ffd34b9c1e28e56f3c127177823534
decf125 apply #c7ffd34b9c1e28e56f3c127177823534 -> -1.234567890123456789012345678901234E+6144
-- fold-downs (more below)
decf130 apply -1.23E+6144 -> #c7ffd300000000000000000000000000 Clamped
decf131 apply #c7ffd300000000000000000000000000 -> -1.230000000000000000000000000000000E+6144
decf132 apply -1E+6144 -> #c7ffc000000000000000000000000000 Clamped
decf133 apply #c7ffc000000000000000000000000000 -> -1.000000000000000000000000000000000E+6144
-- overflows
maxExponent: 9999 -- set high so conversion causes the overflow
minExponent: -9999
decf140 apply -10E+6144 -> #f8000000000000000000000000000000 Overflow Rounded Inexact
decf141 apply -1.000000000000000E+6145 -> #f8000000000000000000000000000000 Overflow Rounded Inexact
maxExponent: 6144
minExponent: -6143
decf151 apply -12345 -> #a20800000000000000000000000049c5
decf152 apply #a20800000000000000000000000049c5 -> -12345
decf153 apply -1234 -> #a2080000000000000000000000000534
decf154 apply #a2080000000000000000000000000534 -> -1234
decf155 apply -123 -> #a20800000000000000000000000000a3
decf156 apply #a20800000000000000000000000000a3 -> -123
decf157 apply -12 -> #a2080000000000000000000000000012
decf158 apply #a2080000000000000000000000000012 -> -12
decf159 apply -1 -> #a2080000000000000000000000000001
decf160 apply #a2080000000000000000000000000001 -> -1
decf161 apply -1.23 -> #a20780000000000000000000000000a3
decf162 apply #a20780000000000000000000000000a3 -> -1.23
decf163 apply -123.45 -> #a20780000000000000000000000049c5
decf164 apply #a20780000000000000000000000049c5 -> -123.45
-- Nmin and below
decf171 apply -1E-6143 -> #80084000000000000000000000000001
decf172 apply #80084000000000000000000000000001 -> -1E-6143
decf173 apply -1.000000000000000000000000000000000E-6143 -> #84000000000000000000000000000000
decf174 apply #84000000000000000000000000000000 -> -1.000000000000000000000000000000000E-6143
decf175 apply -1.000000000000000000000000000000001E-6143 -> #84000000000000000000000000000001
decf176 apply #84000000000000000000000000000001 -> -1.000000000000000000000000000000001E-6143
decf177 apply -0.100000000000000000000000000000000E-6143 -> #80000800000000000000000000000000 Subnormal
decf178 apply #80000800000000000000000000000000 -> -1.00000000000000000000000000000000E-6144 Subnormal
decf179 apply -0.000000000000000000000000000000010E-6143 -> #80000000000000000000000000000010 Subnormal
decf180 apply #80000000000000000000000000000010 -> -1.0E-6175 Subnormal
decf181 apply -0.00000000000000000000000000000001E-6143 -> #80004000000000000000000000000001 Subnormal
decf182 apply #80004000000000000000000000000001 -> -1E-6175 Subnormal
decf183 apply -0.000000000000000000000000000000001E-6143 -> #80000000000000000000000000000001 Subnormal
decf184 apply #80000000000000000000000000000001 -> -1E-6176 Subnormal
-- underflows
decf190 apply -1e-6176 -> #80000000000000000000000000000001 Subnormal
decf191 apply -1.9e-6176 -> #80000000000000000000000000000002 Subnormal Underflow Inexact Rounded
decf192 apply -1.1e-6176 -> #80000000000000000000000000000001 Subnormal Underflow Inexact Rounded
decf193 apply -1.00000000001e-6176 -> #80000000000000000000000000000001 Subnormal Underflow Inexact Rounded
decf194 apply -1.00000000000001e-6176 -> #80000000000000000000000000000001 Subnormal Underflow Inexact Rounded
decf195 apply -1.000000000000001e-6176 -> #80000000000000000000000000000001 Subnormal Underflow Inexact Rounded
decf196 apply -0.1e-6176 -> #80000000000000000000000000000000 Subnormal Underflow Inexact Rounded
decf197 apply -0.00000000001e-6176 -> #80000000000000000000000000000000 Subnormal Underflow Inexact Rounded
decf198 apply -0.00000000000001e-6176 -> #80000000000000000000000000000000 Subnormal Underflow Inexact Rounded
decf199 apply -0.000000000000001e-6176 -> #80000000000000000000000000000000 Subnormal Underflow Inexact Rounded
decf200 apply -999999999999999999999999999999999e-6176 -> #80000ff3fcff3fcff3fcff3fcff3fcff Subnormal
-- zeros
decf400 apply 0E-8000 -> #00000000000000000000000000000000 Clamped
decf401 apply 0E-6177 -> #00000000000000000000000000000000 Clamped
decf402 apply 0E-6176 -> #00000000000000000000000000000000
decf403 apply #00000000000000000000000000000000 -> 0E-6176
decf404 apply 0.000000000000000000000000000000000E-6143 -> #00000000000000000000000000000000
decf405 apply #00000000000000000000000000000000 -> 0E-6176
decf406 apply 0E-2 -> #22078000000000000000000000000000
decf407 apply #22078000000000000000000000000000 -> 0.00
decf408 apply 0 -> #22080000000000000000000000000000
decf409 apply #22080000000000000000000000000000 -> 0
decf410 apply 0E+3 -> #2208c000000000000000000000000000
decf411 apply #2208c000000000000000000000000000 -> 0E+3
decf412 apply 0E+6111 -> #43ffc000000000000000000000000000
decf413 apply #43ffc000000000000000000000000000 -> 0E+6111
-- clamped zeros...
decf414 apply 0E+6112 -> #43ffc000000000000000000000000000 Clamped
decf415 apply #43ffc000000000000000000000000000 -> 0E+6111
decf416 apply 0E+6144 -> #43ffc000000000000000000000000000 Clamped
decf417 apply #43ffc000000000000000000000000000 -> 0E+6111
decf418 apply 0E+8000 -> #43ffc000000000000000000000000000 Clamped
decf419 apply #43ffc000000000000000000000000000 -> 0E+6111
-- negative zeros
decf420 apply -0E-8000 -> #80000000000000000000000000000000 Clamped
decf421 apply -0E-6177 -> #80000000000000000000000000000000 Clamped
decf422 apply -0E-6176 -> #80000000000000000000000000000000
decf423 apply #80000000000000000000000000000000 -> -0E-6176
decf424 apply -0.000000000000000000000000000000000E-6143 -> #80000000000000000000000000000000
decf425 apply #80000000000000000000000000000000 -> -0E-6176
decf426 apply -0E-2 -> #a2078000000000000000000000000000
decf427 apply #a2078000000000000000000000000000 -> -0.00
decf428 apply -0 -> #a2080000000000000000000000000000
decf429 apply #a2080000000000000000000000000000 -> -0
decf430 apply -0E+3 -> #a208c000000000000000000000000000
decf431 apply #a208c000000000000000000000000000 -> -0E+3
decf432 apply -0E+6111 -> #c3ffc000000000000000000000000000
decf433 apply #c3ffc000000000000000000000000000 -> -0E+6111
-- clamped zeros...
decf434 apply -0E+6112 -> #c3ffc000000000000000000000000000 Clamped
decf435 apply #c3ffc000000000000000000000000000 -> -0E+6111
decf436 apply -0E+6144 -> #c3ffc000000000000000000000000000 Clamped
decf437 apply #c3ffc000000000000000000000000000 -> -0E+6111
decf438 apply -0E+8000 -> #c3ffc000000000000000000000000000 Clamped
decf439 apply #c3ffc000000000000000000000000000 -> -0E+6111
-- Specials
decf500 apply Infinity -> #78000000000000000000000000000000
decf501 apply #78787878787878787878787878787878 -> #78000000000000000000000000000000
decf502 apply #78000000000000000000000000000000 -> Infinity
decf503 apply #79797979797979797979797979797979 -> #78000000000000000000000000000000
decf504 apply #79000000000000000000000000000000 -> Infinity
decf505 apply #7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #78000000000000000000000000000000
decf506 apply #7a000000000000000000000000000000 -> Infinity
decf507 apply #7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #78000000000000000000000000000000
decf508 apply #7b000000000000000000000000000000 -> Infinity
decf509 apply NaN -> #7c000000000000000000000000000000
decf510 apply #7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #7c003c7c7c7c7c7c7c7c7c7c7c7c7c7c
decf511 apply #7c000000000000000000000000000000 -> NaN
decf512 apply #7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #7c003d7d7d7d7d7d7d7d7d7d7d7d7d7d
decf513 apply #7d000000000000000000000000000000 -> NaN
decf514 apply #7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #7e003e7e7c7e7e7e7e7c7e7e7e7e7c7e
decf515 apply #7e000000000000000000000000000000 -> sNaN
decf516 apply #7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #7e003f7f7c7f7f7f7f7c7f7f7f7f7c7f
decf517 apply #7f000000000000000000000000000000 -> sNaN
decf518 apply #7fffffffffffffffffffffffffffffff -> sNaN999999999999999999999999999999999
decf519 apply #7fffffffffffffffffffffffffffffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
decf520 apply -Infinity -> #f8000000000000000000000000000000
decf521 apply #f8787878787878787878787878787878 -> #f8000000000000000000000000000000
decf522 apply #f8000000000000000000000000000000 -> -Infinity
decf523 apply #f9797979797979797979797979797979 -> #f8000000000000000000000000000000
decf524 apply #f9000000000000000000000000000000 -> -Infinity
decf525 apply #fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #f8000000000000000000000000000000
decf526 apply #fa000000000000000000000000000000 -> -Infinity
decf527 apply #fb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #f8000000000000000000000000000000
decf528 apply #fb000000000000000000000000000000 -> -Infinity
decf529 apply -NaN -> #fc000000000000000000000000000000
decf530 apply #fc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #fc003c7c7c7c7c7c7c7c7c7c7c7c7c7c
decf531 apply #fc000000000000000000000000000000 -> -NaN
decf532 apply #fd7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #fc003d7d7d7d7d7d7d7d7d7d7d7d7d7d
decf533 apply #fd000000000000000000000000000000 -> -NaN
decf534 apply #fe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #fe003e7e7c7e7e7e7e7c7e7e7e7e7c7e
decf535 apply #fe000000000000000000000000000000 -> -sNaN
decf536 apply #ff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #fe003f7f7c7f7f7f7f7c7f7f7f7f7c7f
decf537 apply #ff000000000000000000000000000000 -> -sNaN
decf538 apply #ffffffffffffffffffffffffffffffff -> -sNaN999999999999999999999999999999999
decf539 apply #ffffffffffffffffffffffffffffffff -> #fe000ff3fcff3fcff3fcff3fcff3fcff
decf540 apply NaN -> #7c000000000000000000000000000000
decf541 apply NaN0 -> #7c000000000000000000000000000000
decf542 apply NaN1 -> #7c000000000000000000000000000001
decf543 apply NaN12 -> #7c000000000000000000000000000012
decf544 apply NaN79 -> #7c000000000000000000000000000079
decf545 apply NaN12345 -> #7c0000000000000000000000000049c5
decf546 apply NaN123456 -> #7c000000000000000000000000028e56
decf547 apply NaN799799 -> #7c0000000000000000000000000f7fdf
decf548 apply NaN799799799799799799799799799799799 -> #7c003dff7fdff7fdff7fdff7fdff7fdf
decf549 apply NaN999999999999999999999999999999999 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
decf550 apply NaN1234567890123456789012345678901234 -> #7c000000000000000000000000000000 -- too many digits
-- fold-down full sequence
decf600 apply 1E+6145 -> #78000000000000000000000000000000 Overflow Inexact Rounded
decf601 apply 1E+6144 -> #47ffc000000000000000000000000000 Clamped
decf602 apply #47ffc000000000000000000000000000 -> 1.000000000000000000000000000000000E+6144
decf603 apply 1E+6143 -> #43ffc800000000000000000000000000 Clamped
decf604 apply #43ffc800000000000000000000000000 -> 1.00000000000000000000000000000000E+6143
decf605 apply 1E+6142 -> #43ffc100000000000000000000000000 Clamped
decf606 apply #43ffc100000000000000000000000000 -> 1.0000000000000000000000000000000E+6142
decf607 apply 1E+6141 -> #43ffc010000000000000000000000000 Clamped
decf608 apply #43ffc010000000000000000000000000 -> 1.000000000000000000000000000000E+6141
decf609 apply 1E+6140 -> #43ffc002000000000000000000000000 Clamped
decf610 apply #43ffc002000000000000000000000000 -> 1.00000000000000000000000000000E+6140
decf611 apply 1E+6139 -> #43ffc000400000000000000000000000 Clamped
decf612 apply #43ffc000400000000000000000000000 -> 1.0000000000000000000000000000E+6139
decf613 apply 1E+6138 -> #43ffc000040000000000000000000000 Clamped
decf614 apply #43ffc000040000000000000000000000 -> 1.000000000000000000000000000E+6138
decf615 apply 1E+6137 -> #43ffc000008000000000000000000000 Clamped
decf616 apply #43ffc000008000000000000000000000 -> 1.00000000000000000000000000E+6137
decf617 apply 1E+6136 -> #43ffc000001000000000000000000000 Clamped
decf618 apply #43ffc000001000000000000000000000 -> 1.0000000000000000000000000E+6136
decf619 apply 1E+6135 -> #43ffc000000100000000000000000000 Clamped
decf620 apply #43ffc000000100000000000000000000 -> 1.000000000000000000000000E+6135
decf621 apply 1E+6134 -> #43ffc000000020000000000000000000 Clamped
decf622 apply #43ffc000000020000000000000000000 -> 1.00000000000000000000000E+6134
decf623 apply 1E+6133 -> #43ffc000000004000000000000000000 Clamped
decf624 apply #43ffc000000004000000000000000000 -> 1.0000000000000000000000E+6133
decf625 apply 1E+6132 -> #43ffc000000000400000000000000000 Clamped
decf626 apply #43ffc000000000400000000000000000 -> 1.000000000000000000000E+6132
decf627 apply 1E+6131 -> #43ffc000000000080000000000000000 Clamped
decf628 apply #43ffc000000000080000000000000000 -> 1.00000000000000000000E+6131
decf629 apply 1E+6130 -> #43ffc000000000010000000000000000 Clamped
decf630 apply #43ffc000000000010000000000000000 -> 1.0000000000000000000E+6130
decf631 apply 1E+6129 -> #43ffc000000000001000000000000000 Clamped
decf632 apply #43ffc000000000001000000000000000 -> 1.000000000000000000E+6129
decf633 apply 1E+6128 -> #43ffc000000000000200000000000000 Clamped
decf634 apply #43ffc000000000000200000000000000 -> 1.00000000000000000E+6128
decf635 apply 1E+6127 -> #43ffc000000000000040000000000000 Clamped
decf636 apply #43ffc000000000000040000000000000 -> 1.0000000000000000E+6127
decf637 apply 1E+6126 -> #43ffc000000000000004000000000000 Clamped
decf638 apply #43ffc000000000000004000000000000 -> 1.000000000000000E+6126
decf639 apply 1E+6125 -> #43ffc000000000000000800000000000 Clamped
decf640 apply #43ffc000000000000000800000000000 -> 1.00000000000000E+6125
decf641 apply 1E+6124 -> #43ffc000000000000000100000000000 Clamped
decf642 apply #43ffc000000000000000100000000000 -> 1.0000000000000E+6124
decf643 apply 1E+6123 -> #43ffc000000000000000010000000000 Clamped
decf644 apply #43ffc000000000000000010000000000 -> 1.000000000000E+6123
decf645 apply 1E+6122 -> #43ffc000000000000000002000000000 Clamped
decf646 apply #43ffc000000000000000002000000000 -> 1.00000000000E+6122
decf647 apply 1E+6121 -> #43ffc000000000000000000400000000 Clamped
decf648 apply #43ffc000000000000000000400000000 -> 1.0000000000E+6121
decf649 apply 1E+6120 -> #43ffc000000000000000000040000000 Clamped
decf650 apply #43ffc000000000000000000040000000 -> 1.000000000E+6120
decf651 apply 1E+6119 -> #43ffc000000000000000000008000000 Clamped
decf652 apply #43ffc000000000000000000008000000 -> 1.00000000E+6119
decf653 apply 1E+6118 -> #43ffc000000000000000000001000000 Clamped
decf654 apply #43ffc000000000000000000001000000 -> 1.0000000E+6118
decf655 apply 1E+6117 -> #43ffc000000000000000000000100000 Clamped
decf656 apply #43ffc000000000000000000000100000 -> 1.000000E+6117
decf657 apply 1E+6116 -> #43ffc000000000000000000000020000 Clamped
decf658 apply #43ffc000000000000000000000020000 -> 1.00000E+6116
decf659 apply 1E+6115 -> #43ffc000000000000000000000004000 Clamped
decf660 apply #43ffc000000000000000000000004000 -> 1.0000E+6115
decf661 apply 1E+6114 -> #43ffc000000000000000000000000400 Clamped
decf662 apply #43ffc000000000000000000000000400 -> 1.000E+6114
decf663 apply 1E+6113 -> #43ffc000000000000000000000000080 Clamped
decf664 apply #43ffc000000000000000000000000080 -> 1.00E+6113
decf665 apply 1E+6112 -> #43ffc000000000000000000000000010 Clamped
decf666 apply #43ffc000000000000000000000000010 -> 1.0E+6112
decf667 apply 1E+6111 -> #43ffc000000000000000000000000001
decf668 apply #43ffc000000000000000000000000001 -> 1E+6111
decf669 apply 1E+6110 -> #43ff8000000000000000000000000001
decf670 apply #43ff8000000000000000000000000001 -> 1E+6110
-- Selected DPD codes
decf700 apply #22080000000000000000000000000000 -> 0
decf701 apply #22080000000000000000000000000009 -> 9
decf702 apply #22080000000000000000000000000010 -> 10
decf703 apply #22080000000000000000000000000019 -> 19
decf704 apply #22080000000000000000000000000020 -> 20
decf705 apply #22080000000000000000000000000029 -> 29
decf706 apply #22080000000000000000000000000030 -> 30
decf707 apply #22080000000000000000000000000039 -> 39
decf708 apply #22080000000000000000000000000040 -> 40
decf709 apply #22080000000000000000000000000049 -> 49
decf710 apply #22080000000000000000000000000050 -> 50
decf711 apply #22080000000000000000000000000059 -> 59
decf712 apply #22080000000000000000000000000060 -> 60
decf713 apply #22080000000000000000000000000069 -> 69
decf714 apply #22080000000000000000000000000070 -> 70
decf715 apply #22080000000000000000000000000071 -> 71
decf716 apply #22080000000000000000000000000072 -> 72
decf717 apply #22080000000000000000000000000073 -> 73
decf718 apply #22080000000000000000000000000074 -> 74
decf719 apply #22080000000000000000000000000075 -> 75
decf720 apply #22080000000000000000000000000076 -> 76
decf721 apply #22080000000000000000000000000077 -> 77
decf722 apply #22080000000000000000000000000078 -> 78
decf723 apply #22080000000000000000000000000079 -> 79
decf730 apply #2208000000000000000000000000029e -> 994
decf731 apply #2208000000000000000000000000029f -> 995
decf732 apply #220800000000000000000000000002a0 -> 520
decf733 apply #220800000000000000000000000002a1 -> 521
-- DPD: one of each of the huffman groups
decf740 apply #220800000000000000000000000003f7 -> 777
decf741 apply #220800000000000000000000000003f8 -> 778
decf742 apply #220800000000000000000000000003eb -> 787
decf743 apply #2208000000000000000000000000037d -> 877
decf744 apply #2208000000000000000000000000039f -> 997
decf745 apply #220800000000000000000000000003bf -> 979
decf746 apply #220800000000000000000000000003df -> 799
decf747 apply #2208000000000000000000000000006e -> 888
-- DPD all-highs cases (includes the 24 redundant codes)
decf750 apply #2208000000000000000000000000006e -> 888
decf751 apply #2208000000000000000000000000016e -> 888
decf752 apply #2208000000000000000000000000026e -> 888
decf753 apply #2208000000000000000000000000036e -> 888
decf754 apply #2208000000000000000000000000006f -> 889
decf755 apply #2208000000000000000000000000016f -> 889
decf756 apply #2208000000000000000000000000026f -> 889
decf757 apply #2208000000000000000000000000036f -> 889
decf760 apply #2208000000000000000000000000007e -> 898
decf761 apply #2208000000000000000000000000017e -> 898
decf762 apply #2208000000000000000000000000027e -> 898
decf763 apply #2208000000000000000000000000037e -> 898
decf764 apply #2208000000000000000000000000007f -> 899
decf765 apply #2208000000000000000000000000017f -> 899
decf766 apply #2208000000000000000000000000027f -> 899
decf767 apply #2208000000000000000000000000037f -> 899
decf770 apply #220800000000000000000000000000ee -> 988
decf771 apply #220800000000000000000000000001ee -> 988
decf772 apply #220800000000000000000000000002ee -> 988
decf773 apply #220800000000000000000000000003ee -> 988
decf774 apply #220800000000000000000000000000ef -> 989
decf775 apply #220800000000000000000000000001ef -> 989
decf776 apply #220800000000000000000000000002ef -> 989
decf777 apply #220800000000000000000000000003ef -> 989
decf780 apply #220800000000000000000000000000fe -> 998
decf781 apply #220800000000000000000000000001fe -> 998
decf782 apply #220800000000000000000000000002fe -> 998
decf783 apply #220800000000000000000000000003fe -> 998
decf784 apply #220800000000000000000000000000ff -> 999
decf785 apply #220800000000000000000000000001ff -> 999
decf786 apply #220800000000000000000000000002ff -> 999
decf787 apply #220800000000000000000000000003ff -> 999

View file

@ -1,385 +0,0 @@
------------------------------------------------------------------------
-- decimal32.decTest -- decimal four-byte format testcases --
-- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of tests is for the four-byte concrete representation.
-- Its characteristics are:
--
-- 1 bit sign
-- 5 bits combination field
-- 6 bits exponent continuation
-- 20 bits coefficient continuation
--
-- Total exponent length 8 bits
-- Total coefficient length 24 bits (7 digits)
--
-- Elimit = 191 (maximum encoded exponent)
-- Emax = 96 (largest exponent value)
-- Emin = -95 (smallest exponent value)
-- bias = 101 (subtracted from encoded exponent) = -Etiny
extended: 1
precision: 7
rounding: half_up
maxExponent: 96
minExponent: -95
-- General testcases
-- (mostly derived from the Strawman 4 document and examples)
decd001 apply #A23003D0 -> -7.50
decd002 apply -7.50 -> #A23003D0
-- Normality
decd010 apply 1234567 -> #2654d2e7
decd011 apply 1234567.0 -> #2654d2e7 Rounded
decd012 apply 1234567.1 -> #2654d2e7 Rounded Inexact
decd013 apply -1234567 -> #a654d2e7
decd014 apply -1234567.0 -> #a654d2e7 Rounded
decd015 apply -1234567.1 -> #a654d2e7 Rounded Inexact
-- Nmax and similar
decd022 apply 9.999999E+96 -> #77f3fcff
decd023 apply #77f3fcff -> 9.999999E+96
decd024 apply 1.234567E+96 -> #47f4d2e7
decd025 apply #47f4d2e7 -> 1.234567E+96
-- fold-downs (more below)
decd030 apply 1.23E+96 -> #47f4c000 Clamped
decd031 apply #47f4c000 -> 1.230000E+96
decd032 apply 1E+96 -> #47f00000 Clamped
decd033 apply #47f00000 -> 1.000000E+96
-- overflows
maxExponent: 999 -- set high so conversion causes the overflow
minExponent: -999
decd040 apply 10E+96 -> #78000000 Overflow Rounded Inexact
decd041 apply 1.000000E+97 -> #78000000 Overflow Rounded Inexact
maxExponent: 96
minExponent: -95
decd051 apply 12345 -> #225049c5
decd052 apply #225049c5 -> 12345
decd053 apply 1234 -> #22500534
decd054 apply #22500534 -> 1234
decd055 apply 123 -> #225000a3
decd056 apply #225000a3 -> 123
decd057 apply 12 -> #22500012
decd058 apply #22500012 -> 12
decd059 apply 1 -> #22500001
decd060 apply #22500001 -> 1
decd061 apply 1.23 -> #223000a3
decd062 apply #223000a3 -> 1.23
decd063 apply 123.45 -> #223049c5
decd064 apply #223049c5 -> 123.45
-- Nmin and below
decd071 apply 1E-95 -> #00600001
decd072 apply #00600001 -> 1E-95
decd073 apply 1.000000E-95 -> #04000000
decd074 apply #04000000 -> 1.000000E-95
decd075 apply 1.000001E-95 -> #04000001
decd076 apply #04000001 -> 1.000001E-95
decd077 apply 0.100000E-95 -> #00020000 Subnormal
decd07x apply 1.00000E-96 -> 1.00000E-96 Subnormal
decd078 apply #00020000 -> 1.00000E-96 Subnormal
decd079 apply 0.000010E-95 -> #00000010 Subnormal
decd080 apply #00000010 -> 1.0E-100 Subnormal
decd081 apply 0.000001E-95 -> #00000001 Subnormal
decd082 apply #00000001 -> 1E-101 Subnormal
decd083 apply 1e-101 -> #00000001 Subnormal
decd084 apply #00000001 -> 1E-101 Subnormal
decd08x apply 1e-101 -> 1E-101 Subnormal
-- underflows
decd090 apply 1e-101 -> #00000001 Subnormal
decd091 apply 1.9e-101 -> #00000002 Subnormal Underflow Inexact Rounded
decd092 apply 1.1e-101 -> #00000001 Subnormal Underflow Inexact Rounded
decd093 apply 1.001e-101 -> #00000001 Subnormal Underflow Inexact Rounded
decd094 apply 1.000001e-101 -> #00000001 Subnormal Underflow Inexact Rounded
decd095 apply 1.0000001e-101 -> #00000001 Subnormal Underflow Inexact Rounded
decd096 apply 0.1e-101 -> #00000000 Subnormal Underflow Inexact Rounded
decd097 apply 0.001e-101 -> #00000000 Subnormal Underflow Inexact Rounded
decd098 apply 0.000001e-101 -> #00000000 Subnormal Underflow Inexact Rounded
decd099 apply 0.0000001e-101 -> #00000000 Subnormal Underflow Inexact Rounded
-- same again, negatives --
-- Nmax and similar
decd122 apply -9.999999E+96 -> #f7f3fcff
decd123 apply #f7f3fcff -> -9.999999E+96
decd124 apply -1.234567E+96 -> #c7f4d2e7
decd125 apply #c7f4d2e7 -> -1.234567E+96
-- fold-downs (more below)
decd130 apply -1.23E+96 -> #c7f4c000 Clamped
decd131 apply #c7f4c000 -> -1.230000E+96
decd132 apply -1E+96 -> #c7f00000 Clamped
decd133 apply #c7f00000 -> -1.000000E+96
-- overflows
maxExponent: 999 -- set high so conversion causes the overflow
minExponent: -999
decd140 apply -10E+96 -> #f8000000 Overflow Rounded Inexact
decd141 apply -1.000000E+97 -> #f8000000 Overflow Rounded Inexact
maxExponent: 96
minExponent: -95
decd151 apply -12345 -> #a25049c5
decd152 apply #a25049c5 -> -12345
decd153 apply -1234 -> #a2500534
decd154 apply #a2500534 -> -1234
decd155 apply -123 -> #a25000a3
decd156 apply #a25000a3 -> -123
decd157 apply -12 -> #a2500012
decd158 apply #a2500012 -> -12
decd159 apply -1 -> #a2500001
decd160 apply #a2500001 -> -1
decd161 apply -1.23 -> #a23000a3
decd162 apply #a23000a3 -> -1.23
decd163 apply -123.45 -> #a23049c5
decd164 apply #a23049c5 -> -123.45
-- Nmin and below
decd171 apply -1E-95 -> #80600001
decd172 apply #80600001 -> -1E-95
decd173 apply -1.000000E-95 -> #84000000
decd174 apply #84000000 -> -1.000000E-95
decd175 apply -1.000001E-95 -> #84000001
decd176 apply #84000001 -> -1.000001E-95
decd177 apply -0.100000E-95 -> #80020000 Subnormal
decd178 apply #80020000 -> -1.00000E-96 Subnormal
decd179 apply -0.000010E-95 -> #80000010 Subnormal
decd180 apply #80000010 -> -1.0E-100 Subnormal
decd181 apply -0.000001E-95 -> #80000001 Subnormal
decd182 apply #80000001 -> -1E-101 Subnormal
decd183 apply -1e-101 -> #80000001 Subnormal
decd184 apply #80000001 -> -1E-101 Subnormal
-- underflows
decd190 apply -1e-101 -> #80000001 Subnormal
decd191 apply -1.9e-101 -> #80000002 Subnormal Underflow Inexact Rounded
decd192 apply -1.1e-101 -> #80000001 Subnormal Underflow Inexact Rounded
decd193 apply -1.001e-101 -> #80000001 Subnormal Underflow Inexact Rounded
decd194 apply -1.000001e-101 -> #80000001 Subnormal Underflow Inexact Rounded
decd195 apply -1.0000001e-101 -> #80000001 Subnormal Underflow Inexact Rounded
decd196 apply -0.1e-101 -> #80000000 Subnormal Underflow Inexact Rounded
decd197 apply -0.001e-101 -> #80000000 Subnormal Underflow Inexact Rounded
decd198 apply -0.000001e-101 -> #80000000 Subnormal Underflow Inexact Rounded
decd199 apply -0.0000001e-101 -> #80000000 Subnormal Underflow Inexact Rounded
-- zeros
decd400 apply 0E-400 -> #00000000 Clamped
decd401 apply 0E-101 -> #00000000
decd402 apply #00000000 -> 0E-101
decd403 apply 0.000000E-95 -> #00000000
decd404 apply #00000000 -> 0E-101
decd405 apply 0E-2 -> #22300000
decd406 apply #22300000 -> 0.00
decd407 apply 0 -> #22500000
decd408 apply #22500000 -> 0
decd409 apply 0E+3 -> #22800000
decd410 apply #22800000 -> 0E+3
decd411 apply 0E+90 -> #43f00000
decd412 apply #43f00000 -> 0E+90
-- clamped zeros...
decd413 apply 0E+91 -> #43f00000 Clamped
decd414 apply #43f00000 -> 0E+90
decd415 apply 0E+96 -> #43f00000 Clamped
decd416 apply #43f00000 -> 0E+90
decd417 apply 0E+400 -> #43f00000 Clamped
decd418 apply #43f00000 -> 0E+90
-- negative zeros
decd420 apply -0E-400 -> #80000000 Clamped
decd421 apply -0E-101 -> #80000000
decd422 apply #80000000 -> -0E-101
decd423 apply -0.000000E-95 -> #80000000
decd424 apply #80000000 -> -0E-101
decd425 apply -0E-2 -> #a2300000
decd426 apply #a2300000 -> -0.00
decd427 apply -0 -> #a2500000
decd428 apply #a2500000 -> -0
decd429 apply -0E+3 -> #a2800000
decd430 apply #a2800000 -> -0E+3
decd431 apply -0E+90 -> #c3f00000
decd432 apply #c3f00000 -> -0E+90
-- clamped zeros...
decd433 apply -0E+91 -> #c3f00000 Clamped
decd434 apply #c3f00000 -> -0E+90
decd435 apply -0E+96 -> #c3f00000 Clamped
decd436 apply #c3f00000 -> -0E+90
decd437 apply -0E+400 -> #c3f00000 Clamped
decd438 apply #c3f00000 -> -0E+90
-- Specials
decd500 apply Infinity -> #78000000
decd501 apply #78787878 -> #78000000
decd502 apply #78000000 -> Infinity
decd503 apply #79797979 -> #78000000
decd504 apply #79000000 -> Infinity
decd505 apply #7a7a7a7a -> #78000000
decd506 apply #7a000000 -> Infinity
decd507 apply #7b7b7b7b -> #78000000
decd508 apply #7b000000 -> Infinity
decd509 apply #7c7c7c7c -> #7c0c7c7c
decd510 apply NaN -> #7c000000
decd511 apply #7c000000 -> NaN
decd512 apply #7d7d7d7d -> #7c0d7d7d
decd513 apply #7d000000 -> NaN
decd514 apply #7e7e7e7e -> #7e0e7c7e
decd515 apply #7e000000 -> sNaN
decd516 apply #7f7f7f7f -> #7e0f7c7f
decd517 apply #7f000000 -> sNaN
decd518 apply #7fffffff -> sNaN999999
decd519 apply #7fffffff -> #7e03fcff
decd520 apply -Infinity -> #f8000000
decd521 apply #f8787878 -> #f8000000
decd522 apply #f8000000 -> -Infinity
decd523 apply #f9797979 -> #f8000000
decd524 apply #f9000000 -> -Infinity
decd525 apply #fa7a7a7a -> #f8000000
decd526 apply #fa000000 -> -Infinity
decd527 apply #fb7b7b7b -> #f8000000
decd528 apply #fb000000 -> -Infinity
decd529 apply -NaN -> #fc000000
decd530 apply #fc7c7c7c -> #fc0c7c7c
decd531 apply #fc000000 -> -NaN
decd532 apply #fd7d7d7d -> #fc0d7d7d
decd533 apply #fd000000 -> -NaN
decd534 apply #fe7e7e7e -> #fe0e7c7e
decd535 apply #fe000000 -> -sNaN
decd536 apply #ff7f7f7f -> #fe0f7c7f
decd537 apply #ff000000 -> -sNaN
decd538 apply #ffffffff -> -sNaN999999
decd539 apply #ffffffff -> #fe03fcff
-- diagnostic NaNs
decd540 apply NaN -> #7c000000
decd541 apply NaN0 -> #7c000000
decd542 apply NaN1 -> #7c000001
decd543 apply NaN12 -> #7c000012
decd544 apply NaN79 -> #7c000079
decd545 apply NaN12345 -> #7c0049c5
decd546 apply NaN123456 -> #7c028e56
decd547 apply NaN799799 -> #7c0f7fdf
decd548 apply NaN999999 -> #7c03fcff
decd549 apply NaN1234567 -> #7c000000 -- too many digits
-- fold-down full sequence
decd601 apply 1E+96 -> #47f00000 Clamped
decd602 apply #47f00000 -> 1.000000E+96
decd603 apply 1E+95 -> #43f20000 Clamped
decd604 apply #43f20000 -> 1.00000E+95
decd605 apply 1E+94 -> #43f04000 Clamped
decd606 apply #43f04000 -> 1.0000E+94
decd607 apply 1E+93 -> #43f00400 Clamped
decd608 apply #43f00400 -> 1.000E+93
decd609 apply 1E+92 -> #43f00080 Clamped
decd610 apply #43f00080 -> 1.00E+92
decd611 apply 1E+91 -> #43f00010 Clamped
decd612 apply #43f00010 -> 1.0E+91
decd613 apply 1E+90 -> #43f00001
decd614 apply #43f00001 -> 1E+90
-- Selected DPD codes
decd700 apply #22500000 -> 0
decd701 apply #22500009 -> 9
decd702 apply #22500010 -> 10
decd703 apply #22500019 -> 19
decd704 apply #22500020 -> 20
decd705 apply #22500029 -> 29
decd706 apply #22500030 -> 30
decd707 apply #22500039 -> 39
decd708 apply #22500040 -> 40
decd709 apply #22500049 -> 49
decd710 apply #22500050 -> 50
decd711 apply #22500059 -> 59
decd712 apply #22500060 -> 60
decd713 apply #22500069 -> 69
decd714 apply #22500070 -> 70
decd715 apply #22500071 -> 71
decd716 apply #22500072 -> 72
decd717 apply #22500073 -> 73
decd718 apply #22500074 -> 74
decd719 apply #22500075 -> 75
decd720 apply #22500076 -> 76
decd721 apply #22500077 -> 77
decd722 apply #22500078 -> 78
decd723 apply #22500079 -> 79
decd730 apply #2250029e -> 994
decd731 apply #2250029f -> 995
decd732 apply #225002a0 -> 520
decd733 apply #225002a1 -> 521
-- DPD: one of each of the huffman groups
decd740 apply #225003f7 -> 777
decd741 apply #225003f8 -> 778
decd742 apply #225003eb -> 787
decd743 apply #2250037d -> 877
decd744 apply #2250039f -> 997
decd745 apply #225003bf -> 979
decd746 apply #225003df -> 799
decd747 apply #2250006e -> 888
-- DPD all-highs cases (includes the 24 redundant codes)
decd750 apply #2250006e -> 888
decd751 apply #2250016e -> 888
decd752 apply #2250026e -> 888
decd753 apply #2250036e -> 888
decd754 apply #2250006f -> 889
decd755 apply #2250016f -> 889
decd756 apply #2250026f -> 889
decd757 apply #2250036f -> 889
decd760 apply #2250007e -> 898
decd761 apply #2250017e -> 898
decd762 apply #2250027e -> 898
decd763 apply #2250037e -> 898
decd764 apply #2250007f -> 899
decd765 apply #2250017f -> 899
decd766 apply #2250027f -> 899
decd767 apply #2250037f -> 899
decd770 apply #225000ee -> 988
decd771 apply #225001ee -> 988
decd772 apply #225002ee -> 988
decd773 apply #225003ee -> 988
decd774 apply #225000ef -> 989
decd775 apply #225001ef -> 989
decd776 apply #225002ef -> 989
decd777 apply #225003ef -> 989
decd780 apply #225000fe -> 998
decd781 apply #225001fe -> 998
decd782 apply #225002fe -> 998
decd783 apply #225003fe -> 998
decd784 apply #225000ff -> 999
decd785 apply #225001ff -> 999
decd786 apply #225002ff -> 999
decd787 apply #225003ff -> 999

View file

@ -1,444 +0,0 @@
------------------------------------------------------------------------
-- decimal64.decTest -- decimal eight-byte format testcases --
-- Copyright (c) IBM Corporation, 2000, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of tests is for the eight-byte concrete representation.
-- Its characteristics are:
--
-- 1 bit sign
-- 5 bits combination field
-- 8 bits exponent continuation
-- 50 bits coefficient continuation
--
-- Total exponent length 10 bits
-- Total coefficient length 54 bits (16 digits)
--
-- Elimit = 767 (maximum encoded exponent)
-- Emax = 384 (largest exponent value)
-- Emin = -383 (smallest exponent value)
-- bias = 398 (subtracted from encoded exponent) = -Etiny
extended: 1
precision: 16
rounding: half_up
maxExponent: 384
minExponent: -383
-- General testcases
-- (mostly derived from the Strawman 4 document and examples)
dece001 apply #A2300000000003D0 -> -7.50
dece002 apply -7.50 -> #A2300000000003D0
-- Normality
dece010 apply 1234567890123456 -> #263934b9c1e28e56
dece011 apply 1234567890123456.0 -> #263934b9c1e28e56 Rounded
dece012 apply 1234567890123456.1 -> #263934b9c1e28e56 Rounded Inexact
dece013 apply -1234567890123456 -> #a63934b9c1e28e56
dece014 apply -1234567890123456.0 -> #a63934b9c1e28e56 Rounded
dece015 apply -1234567890123456.1 -> #a63934b9c1e28e56 Rounded Inexact
-- Nmax and similar
dece022 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff
dece023 apply #77fcff3fcff3fcff -> 9.999999999999999E+384
dece024 apply 1.234567890123456E+384 -> #47fd34b9c1e28e56
dece025 apply #47fd34b9c1e28e56 -> 1.234567890123456E+384
-- fold-downs (more below)
dece030 apply 1.23E+384 -> #47fd300000000000 Clamped
dece031 apply #47fd300000000000 -> 1.230000000000000E+384
dece032 apply 1E+384 -> #47fc000000000000 Clamped
dece033 apply #47fc000000000000 -> 1.000000000000000E+384
-- overflows
maxExponent: 999 -- set high so conversion causes the overflow
minExponent: -999
dece040 apply 10E+384 -> #7800000000000000 Overflow Rounded Inexact
dece041 apply 1.000000000000000E+385 -> #7800000000000000 Overflow Rounded Inexact
maxExponent: 384
minExponent: -383
dece051 apply 12345 -> #22380000000049c5
dece052 apply #22380000000049c5 -> 12345
dece053 apply 1234 -> #2238000000000534
dece054 apply #2238000000000534 -> 1234
dece055 apply 123 -> #22380000000000a3
dece056 apply #22380000000000a3 -> 123
dece057 apply 12 -> #2238000000000012
dece058 apply #2238000000000012 -> 12
dece059 apply 1 -> #2238000000000001
dece060 apply #2238000000000001 -> 1
dece061 apply 1.23 -> #22300000000000a3
dece062 apply #22300000000000a3 -> 1.23
dece063 apply 123.45 -> #22300000000049c5
dece064 apply #22300000000049c5 -> 123.45
-- Nmin and below
dece071 apply 1E-383 -> #003c000000000001
dece072 apply #003c000000000001 -> 1E-383
dece073 apply 1.000000000000000E-383 -> #0400000000000000
dece074 apply #0400000000000000 -> 1.000000000000000E-383
dece075 apply 1.000000000000001E-383 -> #0400000000000001
dece076 apply #0400000000000001 -> 1.000000000000001E-383
dece077 apply 0.100000000000000E-383 -> #0000800000000000 Subnormal
dece078 apply #0000800000000000 -> 1.00000000000000E-384 Subnormal
dece079 apply 0.000000000000010E-383 -> #0000000000000010 Subnormal
dece080 apply #0000000000000010 -> 1.0E-397 Subnormal
dece081 apply 0.00000000000001E-383 -> #0004000000000001 Subnormal
dece082 apply #0004000000000001 -> 1E-397 Subnormal
dece083 apply 0.000000000000001E-383 -> #0000000000000001 Subnormal
dece084 apply #0000000000000001 -> 1E-398 Subnormal
-- underflows
dece090 apply 1e-398 -> #0000000000000001 Subnormal
dece091 apply 1.9e-398 -> #0000000000000002 Subnormal Underflow Inexact Rounded
dece092 apply 1.1e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
dece093 apply 1.00000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
dece094 apply 1.00000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
dece095 apply 1.000000000000001e-398 -> #0000000000000001 Subnormal Underflow Inexact Rounded
dece096 apply 0.1e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
dece097 apply 0.00000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
dece098 apply 0.00000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
dece099 apply 0.000000000000001e-398 -> #0000000000000000 Subnormal Underflow Inexact Rounded
-- Same again, negatives
-- Nmax and similar
dece122 apply -9.999999999999999E+384 -> #f7fcff3fcff3fcff
dece123 apply #f7fcff3fcff3fcff -> -9.999999999999999E+384
dece124 apply -1.234567890123456E+384 -> #c7fd34b9c1e28e56
dece125 apply #c7fd34b9c1e28e56 -> -1.234567890123456E+384
-- fold-downs (more below)
dece130 apply -1.23E+384 -> #c7fd300000000000 Clamped
dece131 apply #c7fd300000000000 -> -1.230000000000000E+384
dece132 apply -1E+384 -> #c7fc000000000000 Clamped
dece133 apply #c7fc000000000000 -> -1.000000000000000E+384
-- overflows
maxExponent: 999 -- set high so conversion causes the overflow
minExponent: -999
dece140 apply -10E+384 -> #f800000000000000 Overflow Rounded Inexact
dece141 apply -1.000000000000000E+385 -> #f800000000000000 Overflow Rounded Inexact
maxExponent: 384
minExponent: -383
dece151 apply -12345 -> #a2380000000049c5
dece152 apply #a2380000000049c5 -> -12345
dece153 apply -1234 -> #a238000000000534
dece154 apply #a238000000000534 -> -1234
dece155 apply -123 -> #a2380000000000a3
dece156 apply #a2380000000000a3 -> -123
dece157 apply -12 -> #a238000000000012
dece158 apply #a238000000000012 -> -12
dece159 apply -1 -> #a238000000000001
dece160 apply #a238000000000001 -> -1
dece161 apply -1.23 -> #a2300000000000a3
dece162 apply #a2300000000000a3 -> -1.23
dece163 apply -123.45 -> #a2300000000049c5
dece164 apply #a2300000000049c5 -> -123.45
-- Nmin and below
dece171 apply -1E-383 -> #803c000000000001
dece172 apply #803c000000000001 -> -1E-383
dece173 apply -1.000000000000000E-383 -> #8400000000000000
dece174 apply #8400000000000000 -> -1.000000000000000E-383
dece175 apply -1.000000000000001E-383 -> #8400000000000001
dece176 apply #8400000000000001 -> -1.000000000000001E-383
dece177 apply -0.100000000000000E-383 -> #8000800000000000 Subnormal
dece178 apply #8000800000000000 -> -1.00000000000000E-384 Subnormal
dece179 apply -0.000000000000010E-383 -> #8000000000000010 Subnormal
dece180 apply #8000000000000010 -> -1.0E-397 Subnormal
dece181 apply -0.00000000000001E-383 -> #8004000000000001 Subnormal
dece182 apply #8004000000000001 -> -1E-397 Subnormal
dece183 apply -0.000000000000001E-383 -> #8000000000000001 Subnormal
dece184 apply #8000000000000001 -> -1E-398 Subnormal
-- underflows
dece189 apply -1e-398 -> #8000000000000001 Subnormal
dece190 apply -1.0e-398 -> #8000000000000001 Subnormal Rounded
dece191 apply -1.9e-398 -> #8000000000000002 Subnormal Underflow Inexact Rounded
dece192 apply -1.1e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
dece193 apply -1.00000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
dece194 apply -1.00000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
dece195 apply -1.000000000000001e-398 -> #8000000000000001 Subnormal Underflow Inexact Rounded
dece196 apply -0.1e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
dece197 apply -0.00000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
dece198 apply -0.00000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
dece199 apply -0.000000000000001e-398 -> #8000000000000000 Subnormal Underflow Inexact Rounded
-- zeros
dece401 apply 0E-500 -> #0000000000000000 Clamped
dece402 apply 0E-400 -> #0000000000000000 Clamped
dece403 apply 0E-398 -> #0000000000000000
dece404 apply #0000000000000000 -> 0E-398
dece405 apply 0.000000000000000E-383 -> #0000000000000000
dece406 apply #0000000000000000 -> 0E-398
dece407 apply 0E-2 -> #2230000000000000
dece408 apply #2230000000000000 -> 0.00
dece409 apply 0 -> #2238000000000000
dece410 apply #2238000000000000 -> 0
dece411 apply 0E+3 -> #2244000000000000
dece412 apply #2244000000000000 -> 0E+3
dece413 apply 0E+369 -> #43fc000000000000
dece414 apply #43fc000000000000 -> 0E+369
-- clamped zeros...
dece415 apply 0E+370 -> #43fc000000000000 Clamped
dece416 apply #43fc000000000000 -> 0E+369
dece417 apply 0E+384 -> #43fc000000000000 Clamped
dece418 apply #43fc000000000000 -> 0E+369
dece419 apply 0E+400 -> #43fc000000000000 Clamped
dece420 apply #43fc000000000000 -> 0E+369
dece421 apply 0E+500 -> #43fc000000000000 Clamped
dece422 apply #43fc000000000000 -> 0E+369
-- negative zeros
dece431 apply -0E-400 -> #8000000000000000 Clamped
dece432 apply -0E-400 -> #8000000000000000 Clamped
dece433 apply -0E-398 -> #8000000000000000
dece434 apply #8000000000000000 -> -0E-398
dece435 apply -0.000000000000000E-383 -> #8000000000000000
dece436 apply #8000000000000000 -> -0E-398
dece437 apply -0E-2 -> #a230000000000000
dece438 apply #a230000000000000 -> -0.00
dece439 apply -0 -> #a238000000000000
dece440 apply #a238000000000000 -> -0
dece441 apply -0E+3 -> #a244000000000000
dece442 apply #a244000000000000 -> -0E+3
dece443 apply -0E+369 -> #c3fc000000000000
dece444 apply #c3fc000000000000 -> -0E+369
-- clamped zeros...
dece445 apply -0E+370 -> #c3fc000000000000 Clamped
dece446 apply #c3fc000000000000 -> -0E+369
dece447 apply -0E+384 -> #c3fc000000000000 Clamped
dece448 apply #c3fc000000000000 -> -0E+369
dece449 apply -0E+400 -> #c3fc000000000000 Clamped
dece450 apply #c3fc000000000000 -> -0E+369
dece451 apply -0E+500 -> #c3fc000000000000 Clamped
dece452 apply #c3fc000000000000 -> -0E+369
-- Specials
dece500 apply Infinity -> #7800000000000000
dece501 apply #7878787878787878 -> #7800000000000000
dece502 apply #7800000000000000 -> Infinity
dece503 apply #7979797979797979 -> #7800000000000000
dece504 apply #7900000000000000 -> Infinity
dece505 apply #7a7a7a7a7a7a7a7a -> #7800000000000000
dece506 apply #7a00000000000000 -> Infinity
dece507 apply #7b7b7b7b7b7b7b7b -> #7800000000000000
dece508 apply #7b00000000000000 -> Infinity
dece509 apply NaN -> #7c00000000000000
dece510 apply #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c
dece511 apply #7c00000000000000 -> NaN
dece512 apply #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d
dece513 apply #7d00000000000000 -> NaN
dece514 apply #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e
dece515 apply #7e00000000000000 -> sNaN
dece516 apply #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f
dece517 apply #7f00000000000000 -> sNaN
dece518 apply #7fffffffffffffff -> sNaN999999999999999
dece519 apply #7fffffffffffffff -> #7e00ff3fcff3fcff
dece520 apply -Infinity -> #f800000000000000
dece521 apply #f878787878787878 -> #f800000000000000
dece522 apply #f800000000000000 -> -Infinity
dece523 apply #f979797979797979 -> #f800000000000000
dece524 apply #f900000000000000 -> -Infinity
dece525 apply #fa7a7a7a7a7a7a7a -> #f800000000000000
dece526 apply #fa00000000000000 -> -Infinity
dece527 apply #fb7b7b7b7b7b7b7b -> #f800000000000000
dece528 apply #fb00000000000000 -> -Infinity
dece529 apply -NaN -> #fc00000000000000
dece530 apply #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c
dece531 apply #fc00000000000000 -> -NaN
dece532 apply #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d
dece533 apply #fd00000000000000 -> -NaN
dece534 apply #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e
dece535 apply #fe00000000000000 -> -sNaN
dece536 apply #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f
dece537 apply #ff00000000000000 -> -sNaN
dece538 apply #ffffffffffffffff -> -sNaN999999999999999
dece539 apply #ffffffffffffffff -> #fe00ff3fcff3fcff
-- diagnostic NaNs
dece540 apply NaN -> #7c00000000000000
dece541 apply NaN0 -> #7c00000000000000
dece542 apply NaN1 -> #7c00000000000001
dece543 apply NaN12 -> #7c00000000000012
dece544 apply NaN79 -> #7c00000000000079
dece545 apply NaN12345 -> #7c000000000049c5
dece546 apply NaN123456 -> #7c00000000028e56
dece547 apply NaN799799 -> #7c000000000f7fdf
dece548 apply NaN799799799799799 -> #7c03dff7fdff7fdf
dece549 apply NaN999999999999999 -> #7c00ff3fcff3fcff
dece550 apply NaN1234567890123456 -> #7c00000000000000 -- too many digits
-- fold-down full sequence
dece601 apply 1E+384 -> #47fc000000000000 Clamped
dece602 apply #47fc000000000000 -> 1.000000000000000E+384
dece603 apply 1E+383 -> #43fc800000000000 Clamped
dece604 apply #43fc800000000000 -> 1.00000000000000E+383
dece605 apply 1E+382 -> #43fc100000000000 Clamped
dece606 apply #43fc100000000000 -> 1.0000000000000E+382
dece607 apply 1E+381 -> #43fc010000000000 Clamped
dece608 apply #43fc010000000000 -> 1.000000000000E+381
dece609 apply 1E+380 -> #43fc002000000000 Clamped
dece610 apply #43fc002000000000 -> 1.00000000000E+380
dece611 apply 1E+379 -> #43fc000400000000 Clamped
dece612 apply #43fc000400000000 -> 1.0000000000E+379
dece613 apply 1E+378 -> #43fc000040000000 Clamped
dece614 apply #43fc000040000000 -> 1.000000000E+378
dece615 apply 1E+377 -> #43fc000008000000 Clamped
dece616 apply #43fc000008000000 -> 1.00000000E+377
dece617 apply 1E+376 -> #43fc000001000000 Clamped
dece618 apply #43fc000001000000 -> 1.0000000E+376
dece619 apply 1E+375 -> #43fc000000100000 Clamped
dece620 apply #43fc000000100000 -> 1.000000E+375
dece621 apply 1E+374 -> #43fc000000020000 Clamped
dece622 apply #43fc000000020000 -> 1.00000E+374
dece623 apply 1E+373 -> #43fc000000004000 Clamped
dece624 apply #43fc000000004000 -> 1.0000E+373
dece625 apply 1E+372 -> #43fc000000000400 Clamped
dece626 apply #43fc000000000400 -> 1.000E+372
dece627 apply 1E+371 -> #43fc000000000080 Clamped
dece628 apply #43fc000000000080 -> 1.00E+371
dece629 apply 1E+370 -> #43fc000000000010 Clamped
dece630 apply #43fc000000000010 -> 1.0E+370
dece631 apply 1E+369 -> #43fc000000000001
dece632 apply #43fc000000000001 -> 1E+369
dece633 apply 1E+368 -> #43f8000000000001
dece634 apply #43f8000000000001 -> 1E+368
-- same with 9s
dece641 apply 9E+384 -> #77fc000000000000 Clamped
dece642 apply #77fc000000000000 -> 9.000000000000000E+384
dece643 apply 9E+383 -> #43fc8c0000000000 Clamped
dece644 apply #43fc8c0000000000 -> 9.00000000000000E+383
dece645 apply 9E+382 -> #43fc1a0000000000 Clamped
dece646 apply #43fc1a0000000000 -> 9.0000000000000E+382
dece647 apply 9E+381 -> #43fc090000000000 Clamped
dece648 apply #43fc090000000000 -> 9.000000000000E+381
dece649 apply 9E+380 -> #43fc002300000000 Clamped
dece650 apply #43fc002300000000 -> 9.00000000000E+380
dece651 apply 9E+379 -> #43fc000680000000 Clamped
dece652 apply #43fc000680000000 -> 9.0000000000E+379
dece653 apply 9E+378 -> #43fc000240000000 Clamped
dece654 apply #43fc000240000000 -> 9.000000000E+378
dece655 apply 9E+377 -> #43fc000008c00000 Clamped
dece656 apply #43fc000008c00000 -> 9.00000000E+377
dece657 apply 9E+376 -> #43fc000001a00000 Clamped
dece658 apply #43fc000001a00000 -> 9.0000000E+376
dece659 apply 9E+375 -> #43fc000000900000 Clamped
dece660 apply #43fc000000900000 -> 9.000000E+375
dece661 apply 9E+374 -> #43fc000000023000 Clamped
dece662 apply #43fc000000023000 -> 9.00000E+374
dece663 apply 9E+373 -> #43fc000000006800 Clamped
dece664 apply #43fc000000006800 -> 9.0000E+373
dece665 apply 9E+372 -> #43fc000000002400 Clamped
dece666 apply #43fc000000002400 -> 9.000E+372
dece667 apply 9E+371 -> #43fc00000000008c Clamped
dece668 apply #43fc00000000008c -> 9.00E+371
dece669 apply 9E+370 -> #43fc00000000001a Clamped
dece670 apply #43fc00000000001a -> 9.0E+370
dece671 apply 9E+369 -> #43fc000000000009
dece672 apply #43fc000000000009 -> 9E+369
dece673 apply 9E+368 -> #43f8000000000009
dece674 apply #43f8000000000009 -> 9E+368
-- Selected DPD codes
dece700 apply #2238000000000000 -> 0
dece701 apply #2238000000000009 -> 9
dece702 apply #2238000000000010 -> 10
dece703 apply #2238000000000019 -> 19
dece704 apply #2238000000000020 -> 20
dece705 apply #2238000000000029 -> 29
dece706 apply #2238000000000030 -> 30
dece707 apply #2238000000000039 -> 39
dece708 apply #2238000000000040 -> 40
dece709 apply #2238000000000049 -> 49
dece710 apply #2238000000000050 -> 50
dece711 apply #2238000000000059 -> 59
dece712 apply #2238000000000060 -> 60
dece713 apply #2238000000000069 -> 69
dece714 apply #2238000000000070 -> 70
dece715 apply #2238000000000071 -> 71
dece716 apply #2238000000000072 -> 72
dece717 apply #2238000000000073 -> 73
dece718 apply #2238000000000074 -> 74
dece719 apply #2238000000000075 -> 75
dece720 apply #2238000000000076 -> 76
dece721 apply #2238000000000077 -> 77
dece722 apply #2238000000000078 -> 78
dece723 apply #2238000000000079 -> 79
dece730 apply #223800000000029e -> 994
dece731 apply #223800000000029f -> 995
dece732 apply #22380000000002a0 -> 520
dece733 apply #22380000000002a1 -> 521
-- DPD: one of each of the huffman groups
dece740 apply #22380000000003f7 -> 777
dece741 apply #22380000000003f8 -> 778
dece742 apply #22380000000003eb -> 787
dece743 apply #223800000000037d -> 877
dece744 apply #223800000000039f -> 997
dece745 apply #22380000000003bf -> 979
dece746 apply #22380000000003df -> 799
dece747 apply #223800000000006e -> 888
-- DPD all-highs cases (includes the 24 redundant codes)
dece750 apply #223800000000006e -> 888
dece751 apply #223800000000016e -> 888
dece752 apply #223800000000026e -> 888
dece753 apply #223800000000036e -> 888
dece754 apply #223800000000006f -> 889
dece755 apply #223800000000016f -> 889
dece756 apply #223800000000026f -> 889
dece757 apply #223800000000036f -> 889
dece760 apply #223800000000007e -> 898
dece761 apply #223800000000017e -> 898
dece762 apply #223800000000027e -> 898
dece763 apply #223800000000037e -> 898
dece764 apply #223800000000007f -> 899
dece765 apply #223800000000017f -> 899
dece766 apply #223800000000027f -> 899
dece767 apply #223800000000037f -> 899
dece770 apply #22380000000000ee -> 988
dece771 apply #22380000000001ee -> 988
dece772 apply #22380000000002ee -> 988
dece773 apply #22380000000003ee -> 988
dece774 apply #22380000000000ef -> 989
dece775 apply #22380000000001ef -> 989
dece776 apply #22380000000002ef -> 989
dece777 apply #22380000000003ef -> 989
dece780 apply #22380000000000fe -> 998
dece781 apply #22380000000001fe -> 998
dece782 apply #22380000000002fe -> 998
dece783 apply #22380000000003fe -> 998
dece784 apply #22380000000000ff -> 999
dece785 apply #22380000000001ff -> 999
dece786 apply #22380000000002ff -> 999
dece787 apply #22380000000003ff -> 999

View file

@ -1,818 +0,0 @@
------------------------------------------------------------------------
-- divide.decTest -- decimal division --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
-- sanity checks
divx001 divide 1 1 -> 1
divx002 divide 2 1 -> 2
divx003 divide 1 2 -> 0.5
divx004 divide 2 2 -> 1
divx005 divide 0 1 -> 0
divx006 divide 0 2 -> 0
divx007 divide 1 3 -> 0.333333333 Inexact Rounded
divx008 divide 2 3 -> 0.666666667 Inexact Rounded
divx009 divide 3 3 -> 1
divx010 divide 2.4 1 -> 2.4
divx011 divide 2.4 -1 -> -2.4
divx012 divide -2.4 1 -> -2.4
divx013 divide -2.4 -1 -> 2.4
divx014 divide 2.40 1 -> 2.40
divx015 divide 2.400 1 -> 2.400
divx016 divide 2.4 2 -> 1.2
divx017 divide 2.400 2 -> 1.200
divx018 divide 2. 2 -> 1
divx019 divide 20 20 -> 1
divx020 divide 187 187 -> 1
divx021 divide 5 2 -> 2.5
divx022 divide 5 2.0 -> 2.5
divx023 divide 5 2.000 -> 2.5
divx024 divide 5 0.20 -> 25
divx025 divide 5 0.200 -> 25
divx026 divide 10 1 -> 10
divx027 divide 100 1 -> 100
divx028 divide 1000 1 -> 1000
divx029 divide 1000 100 -> 10
divx030 divide 1 2 -> 0.5
divx031 divide 1 4 -> 0.25
divx032 divide 1 8 -> 0.125
divx033 divide 1 16 -> 0.0625
divx034 divide 1 32 -> 0.03125
divx035 divide 1 64 -> 0.015625
divx040 divide 1 -2 -> -0.5
divx041 divide 1 -4 -> -0.25
divx042 divide 1 -8 -> -0.125
divx043 divide 1 -16 -> -0.0625
divx044 divide 1 -32 -> -0.03125
divx045 divide 1 -64 -> -0.015625
divx050 divide -1 2 -> -0.5
divx051 divide -1 4 -> -0.25
divx052 divide -1 8 -> -0.125
divx053 divide -1 16 -> -0.0625
divx054 divide -1 32 -> -0.03125
divx055 divide -1 64 -> -0.015625
divx060 divide -1 -2 -> 0.5
divx061 divide -1 -4 -> 0.25
divx062 divide -1 -8 -> 0.125
divx063 divide -1 -16 -> 0.0625
divx064 divide -1 -32 -> 0.03125
divx065 divide -1 -64 -> 0.015625
divx070 divide 999999999 1 -> 999999999
divx071 divide 999999999.4 1 -> 999999999 Inexact Rounded
divx072 divide 999999999.5 1 -> 1.00000000E+9 Inexact Rounded
divx073 divide 999999999.9 1 -> 1.00000000E+9 Inexact Rounded
divx074 divide 999999999.999 1 -> 1.00000000E+9 Inexact Rounded
precision: 6
divx080 divide 999999999 1 -> 1.00000E+9 Inexact Rounded
divx081 divide 99999999 1 -> 1.00000E+8 Inexact Rounded
divx082 divide 9999999 1 -> 1.00000E+7 Inexact Rounded
divx083 divide 999999 1 -> 999999
divx084 divide 99999 1 -> 99999
divx085 divide 9999 1 -> 9999
divx086 divide 999 1 -> 999
divx087 divide 99 1 -> 99
divx088 divide 9 1 -> 9
precision: 9
divx090 divide 0. 1 -> 0
divx091 divide .0 1 -> 0.0
divx092 divide 0.00 1 -> 0.00
divx093 divide 0.00E+9 1 -> 0E+7
divx094 divide 0.0000E-50 1 -> 0E-54
divx095 divide 1 1E-8 -> 1E+8
divx096 divide 1 1E-9 -> 1E+9
divx097 divide 1 1E-10 -> 1E+10
divx098 divide 1 1E-11 -> 1E+11
divx099 divide 1 1E-12 -> 1E+12
divx100 divide 1 1 -> 1
divx101 divide 1 2 -> 0.5
divx102 divide 1 3 -> 0.333333333 Inexact Rounded
divx103 divide 1 4 -> 0.25
divx104 divide 1 5 -> 0.2
divx105 divide 1 6 -> 0.166666667 Inexact Rounded
divx106 divide 1 7 -> 0.142857143 Inexact Rounded
divx107 divide 1 8 -> 0.125
divx108 divide 1 9 -> 0.111111111 Inexact Rounded
divx109 divide 1 10 -> 0.1
divx110 divide 1 1 -> 1
divx111 divide 2 1 -> 2
divx112 divide 3 1 -> 3
divx113 divide 4 1 -> 4
divx114 divide 5 1 -> 5
divx115 divide 6 1 -> 6
divx116 divide 7 1 -> 7
divx117 divide 8 1 -> 8
divx118 divide 9 1 -> 9
divx119 divide 10 1 -> 10
divx120 divide 3E+1 0.001 -> 3E+4
divx121 divide 2.200 2 -> 1.100
divx130 divide 12345 4.999 -> 2469.49390 Inexact Rounded
divx131 divide 12345 4.99 -> 2473.94790 Inexact Rounded
divx132 divide 12345 4.9 -> 2519.38776 Inexact Rounded
divx133 divide 12345 5 -> 2469
divx134 divide 12345 5.1 -> 2420.58824 Inexact Rounded
divx135 divide 12345 5.01 -> 2464.07186 Inexact Rounded
divx136 divide 12345 5.001 -> 2468.50630 Inexact Rounded
precision: 9
maxexponent: 999999999
minexponent: -999999999
-- test possibly imprecise results
divx220 divide 391 597 -> 0.654941374 Inexact Rounded
divx221 divide 391 -597 -> -0.654941374 Inexact Rounded
divx222 divide -391 597 -> -0.654941374 Inexact Rounded
divx223 divide -391 -597 -> 0.654941374 Inexact Rounded
-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
divx270 divide 1 1e999999999 -> 1E-999999999
divx271 divide 1 0.9e999999999 -> 1.11111111E-999999999 Inexact Rounded
divx272 divide 1 0.99e999999999 -> 1.01010101E-999999999 Inexact Rounded
divx273 divide 1 0.999999999e999999999 -> 1.00000000E-999999999 Inexact Rounded
divx274 divide 9e999999999 1 -> 9E+999999999
divx275 divide 9.9e999999999 1 -> 9.9E+999999999
divx276 divide 9.99e999999999 1 -> 9.99E+999999999
divx277 divide 9.99999999e999999999 1 -> 9.99999999E+999999999
divx280 divide 0.1 9e-999999999 -> 1.11111111E+999999997 Inexact Rounded
divx281 divide 0.1 99e-999999999 -> 1.01010101E+999999996 Inexact Rounded
divx282 divide 0.1 999e-999999999 -> 1.00100100E+999999995 Inexact Rounded
divx283 divide 0.1 9e-999999998 -> 1.11111111E+999999996 Inexact Rounded
divx284 divide 0.1 99e-999999998 -> 1.01010101E+999999995 Inexact Rounded
divx285 divide 0.1 999e-999999998 -> 1.00100100E+999999994 Inexact Rounded
divx286 divide 0.1 999e-999999997 -> 1.00100100E+999999993 Inexact Rounded
divx287 divide 0.1 9999e-999999997 -> 1.00010001E+999999992 Inexact Rounded
divx288 divide 0.1 99999e-999999997 -> 1.00001000E+999999991 Inexact Rounded
-- Divide into 0 tests
divx301 divide 0 7 -> 0
divx302 divide 0 7E-5 -> 0E+5
divx303 divide 0 7E-1 -> 0E+1
divx304 divide 0 7E+1 -> 0.0
divx305 divide 0 7E+5 -> 0.00000
divx306 divide 0 7E+6 -> 0.000000
divx307 divide 0 7E+7 -> 0E-7
divx308 divide 0 70E-5 -> 0E+5
divx309 divide 0 70E-1 -> 0E+1
divx310 divide 0 70E+0 -> 0
divx311 divide 0 70E+1 -> 0.0
divx312 divide 0 70E+5 -> 0.00000
divx313 divide 0 70E+6 -> 0.000000
divx314 divide 0 70E+7 -> 0E-7
divx315 divide 0 700E-5 -> 0E+5
divx316 divide 0 700E-1 -> 0E+1
divx317 divide 0 700E+0 -> 0
divx318 divide 0 700E+1 -> 0.0
divx319 divide 0 700E+5 -> 0.00000
divx320 divide 0 700E+6 -> 0.000000
divx321 divide 0 700E+7 -> 0E-7
divx322 divide 0 700E+77 -> 0E-77
divx331 divide 0E-3 7E-5 -> 0E+2
divx332 divide 0E-3 7E-1 -> 0.00
divx333 divide 0E-3 7E+1 -> 0.0000
divx334 divide 0E-3 7E+5 -> 0E-8
divx335 divide 0E-1 7E-5 -> 0E+4
divx336 divide 0E-1 7E-1 -> 0
divx337 divide 0E-1 7E+1 -> 0.00
divx338 divide 0E-1 7E+5 -> 0.000000
divx339 divide 0E+1 7E-5 -> 0E+6
divx340 divide 0E+1 7E-1 -> 0E+2
divx341 divide 0E+1 7E+1 -> 0
divx342 divide 0E+1 7E+5 -> 0.0000
divx343 divide 0E+3 7E-5 -> 0E+8
divx344 divide 0E+3 7E-1 -> 0E+4
divx345 divide 0E+3 7E+1 -> 0E+2
divx346 divide 0E+3 7E+5 -> 0.00
maxexponent: 92
minexponent: -92
precision: 7
divx351 divide 0E-92 7E-1 -> 0E-91
divx352 divide 0E-92 7E+1 -> 0E-93
divx353 divide 0E-92 7E+5 -> 0E-97
divx354 divide 0E-92 7E+6 -> 0E-98
divx355 divide 0E-92 7E+7 -> 0E-98 Clamped
divx356 divide 0E-92 777E-1 -> 0E-91
divx357 divide 0E-92 777E+1 -> 0E-93
divx358 divide 0E-92 777E+3 -> 0E-95
divx359 divide 0E-92 777E+4 -> 0E-96
divx360 divide 0E-92 777E+5 -> 0E-97
divx361 divide 0E-92 777E+6 -> 0E-98
divx362 divide 0E-92 777E+7 -> 0E-98 Clamped
divx363 divide 0E-92 7E+92 -> 0E-98 Clamped
divx371 divide 0E-92 700E-1 -> 0E-91
divx372 divide 0E-92 700E+1 -> 0E-93
divx373 divide 0E-92 700E+3 -> 0E-95
divx374 divide 0E-92 700E+4 -> 0E-96
divx375 divide 0E-92 700E+5 -> 0E-97
divx376 divide 0E-92 700E+6 -> 0E-98
divx377 divide 0E-92 700E+7 -> 0E-98 Clamped
divx381 divide 0E+92 7E+1 -> 0E+91
divx382 divide 0E+92 7E+0 -> 0E+92
divx383 divide 0E+92 7E-1 -> 0E+92 Clamped
divx384 divide 0E+90 777E+1 -> 0E+89
divx385 divide 0E+90 777E-1 -> 0E+91
divx386 divide 0E+90 777E-2 -> 0E+92
divx387 divide 0E+90 777E-3 -> 0E+92 Clamped
divx388 divide 0E+90 777E-4 -> 0E+92 Clamped
divx391 divide 0E+90 700E+1 -> 0E+89
divx392 divide 0E+90 700E-1 -> 0E+91
divx393 divide 0E+90 700E-2 -> 0E+92
divx394 divide 0E+90 700E-3 -> 0E+92 Clamped
divx395 divide 0E+90 700E-4 -> 0E+92 Clamped
-- input rounding checks
maxexponent: 999
minexponent: -999
precision: 9
divx401 divide 12345678000 1 -> 1.23456780E+10 Rounded
divx402 divide 1 12345678000 -> 8.10000066E-11 Inexact Rounded
divx403 divide 1234567800 1 -> 1.23456780E+9 Rounded
divx404 divide 1 1234567800 -> 8.10000066E-10 Inexact Rounded
divx405 divide 1234567890 1 -> 1.23456789E+9 Rounded
divx406 divide 1 1234567890 -> 8.10000007E-10 Inexact Rounded
divx407 divide 1234567891 1 -> 1.23456789E+9 Inexact Rounded
divx408 divide 1 1234567891 -> 8.10000007E-10 Inexact Rounded
divx409 divide 12345678901 1 -> 1.23456789E+10 Inexact Rounded
divx410 divide 1 12345678901 -> 8.10000007E-11 Inexact Rounded
divx411 divide 1234567896 1 -> 1.23456790E+9 Inexact Rounded
divx412 divide 1 1234567896 -> 8.10000003E-10 Inexact Rounded
divx413 divide 1 1234567897 -> 8.10000003E-10 Inexact Rounded
divx414 divide 1 1234567898 -> 8.10000002E-10 Inexact Rounded
divx415 divide 1 1234567899 -> 8.10000001E-10 Inexact Rounded
divx416 divide 1 1234567900 -> 8.10000001E-10 Inexact Rounded
divx417 divide 1 1234567901 -> 8.10000000E-10 Inexact Rounded
divx418 divide 1 1234567902 -> 8.09999999E-10 Inexact Rounded
-- some longies
divx421 divide 1234567896.000000000000 1 -> 1.23456790E+9 Inexact Rounded
divx422 divide 1 1234567896.000000000000 -> 8.10000003E-10 Inexact Rounded
divx423 divide 1234567896.000000000001 1 -> 1.23456790E+9 Inexact Rounded
divx424 divide 1 1234567896.000000000001 -> 8.10000003E-10 Inexact Rounded
divx425 divide 1234567896.000000000000000000000000000000000000000009 1 -> 1.23456790E+9 Inexact Rounded
divx426 divide 1 1234567896.000000000000000000000000000000000000000009 -> 8.10000003E-10 Inexact Rounded
divx427 divide 1234567897.900010000000000000000000000000000000000009 1 -> 1.23456790E+9 Inexact Rounded
divx428 divide 1 1234567897.900010000000000000000000000000000000000009 -> 8.10000002E-10 Inexact Rounded
precision: 15
-- still checking...
divx441 divide 12345678000 1 -> 12345678000
divx442 divide 1 12345678000 -> 8.10000066420005E-11 Inexact Rounded
divx443 divide 1234567800 1 -> 1234567800
divx444 divide 1 1234567800 -> 8.10000066420005E-10 Inexact Rounded
divx445 divide 1234567890 1 -> 1234567890
divx446 divide 1 1234567890 -> 8.10000007371000E-10 Inexact Rounded
divx447 divide 1234567891 1 -> 1234567891
divx448 divide 1 1234567891 -> 8.10000006714900E-10 Inexact Rounded
divx449 divide 12345678901 1 -> 12345678901
divx450 divide 1 12345678901 -> 8.10000007305390E-11 Inexact Rounded
divx451 divide 1234567896 1 -> 1234567896
divx452 divide 1 1234567896 -> 8.10000003434400E-10 Inexact Rounded
-- high-lows
divx453 divide 1e+1 1 -> 1E+1
divx454 divide 1e+1 1.0 -> 1E+1
divx455 divide 1e+1 1.00 -> 1E+1
divx456 divide 1e+2 2 -> 5E+1
divx457 divide 1e+2 2.0 -> 5E+1
divx458 divide 1e+2 2.00 -> 5E+1
-- some from IEEE discussions
divx460 divide 3e0 2e0 -> 1.5
divx461 divide 30e-1 2e0 -> 1.5
divx462 divide 300e-2 2e0 -> 1.50
divx464 divide 3000e-3 2e0 -> 1.500
divx465 divide 3e0 20e-1 -> 1.5
divx466 divide 30e-1 20e-1 -> 1.5
divx467 divide 300e-2 20e-1 -> 1.5
divx468 divide 3000e-3 20e-1 -> 1.50
divx469 divide 3e0 200e-2 -> 1.5
divx470 divide 30e-1 200e-2 -> 1.5
divx471 divide 300e-2 200e-2 -> 1.5
divx472 divide 3000e-3 200e-2 -> 1.5
divx473 divide 3e0 2000e-3 -> 1.5
divx474 divide 30e-1 2000e-3 -> 1.5
divx475 divide 300e-2 2000e-3 -> 1.5
divx476 divide 3000e-3 2000e-3 -> 1.5
-- some reciprocals
divx480 divide 1 1.0E+33 -> 1E-33
divx481 divide 1 10E+33 -> 1E-34
divx482 divide 1 1.0E-33 -> 1E+33
divx483 divide 1 10E-33 -> 1E+32
-- RMS discussion table
maxexponent: 96
minexponent: -95
precision: 7
divx484 divide 0e5 1e3 -> 0E+2
divx485 divide 0e5 2e3 -> 0E+2
divx486 divide 0e5 10e2 -> 0E+3
divx487 divide 0e5 20e2 -> 0E+3
divx488 divide 0e5 100e1 -> 0E+4
divx489 divide 0e5 200e1 -> 0E+4
divx491 divide 1e5 1e3 -> 1E+2
divx492 divide 1e5 2e3 -> 5E+1
divx493 divide 1e5 10e2 -> 1E+2
divx494 divide 1e5 20e2 -> 5E+1
divx495 divide 1e5 100e1 -> 1E+2
divx496 divide 1e5 200e1 -> 5E+1
-- tryzeros cases
precision: 7
rounding: half_up
maxExponent: 92
minexponent: -92
divx497 divide 0E+86 1000E-13 -> 0E+92 Clamped
divx498 divide 0E-98 1000E+13 -> 0E-98 Clamped
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
-- focus on trailing zeros issues
precision: 9
divx500 divide 1 9.9 -> 0.101010101 Inexact Rounded
precision: 8
divx501 divide 1 9.9 -> 0.10101010 Inexact Rounded
precision: 7
divx502 divide 1 9.9 -> 0.1010101 Inexact Rounded
precision: 6
divx503 divide 1 9.9 -> 0.101010 Inexact Rounded
precision: 9
divx511 divide 1 2 -> 0.5
divx512 divide 1.0 2 -> 0.5
divx513 divide 1.00 2 -> 0.50
divx514 divide 1.000 2 -> 0.500
divx515 divide 1.0000 2 -> 0.5000
divx516 divide 1.00000 2 -> 0.50000
divx517 divide 1.000000 2 -> 0.500000
divx518 divide 1.0000000 2 -> 0.5000000
divx519 divide 1.00 2.00 -> 0.5
divx521 divide 2 1 -> 2
divx522 divide 2 1.0 -> 2
divx523 divide 2 1.00 -> 2
divx524 divide 2 1.000 -> 2
divx525 divide 2 1.0000 -> 2
divx526 divide 2 1.00000 -> 2
divx527 divide 2 1.000000 -> 2
divx528 divide 2 1.0000000 -> 2
divx529 divide 2.00 1.00 -> 2
divx530 divide 2.40 2 -> 1.20
divx531 divide 2.40 4 -> 0.60
divx532 divide 2.40 10 -> 0.24
divx533 divide 2.40 2.0 -> 1.2
divx534 divide 2.40 4.0 -> 0.6
divx535 divide 2.40 10.0 -> 0.24
divx536 divide 2.40 2.00 -> 1.2
divx537 divide 2.40 4.00 -> 0.6
divx538 divide 2.40 10.00 -> 0.24
divx539 divide 0.9 0.1 -> 9
divx540 divide 0.9 0.01 -> 9E+1
divx541 divide 0.9 0.001 -> 9E+2
divx542 divide 5 2 -> 2.5
divx543 divide 5 2.0 -> 2.5
divx544 divide 5 2.00 -> 2.5
divx545 divide 5 20 -> 0.25
divx546 divide 5 20.0 -> 0.25
divx547 divide 2.400 2 -> 1.200
divx548 divide 2.400 2.0 -> 1.20
divx549 divide 2.400 2.400 -> 1
divx550 divide 240 1 -> 240
divx551 divide 240 10 -> 24
divx552 divide 240 100 -> 2.4
divx553 divide 240 1000 -> 0.24
divx554 divide 2400 1 -> 2400
divx555 divide 2400 10 -> 240
divx556 divide 2400 100 -> 24
divx557 divide 2400 1000 -> 2.4
-- +ve exponent
precision: 5
divx570 divide 2.4E+6 2 -> 1.2E+6
divx571 divide 2.40E+6 2 -> 1.20E+6
divx572 divide 2.400E+6 2 -> 1.200E+6
divx573 divide 2.4000E+6 2 -> 1.2000E+6
divx574 divide 24E+5 2 -> 1.2E+6
divx575 divide 240E+4 2 -> 1.20E+6
divx576 divide 2400E+3 2 -> 1.200E+6
divx577 divide 24000E+2 2 -> 1.2000E+6
precision: 6
divx580 divide 2.4E+6 2 -> 1.2E+6
divx581 divide 2.40E+6 2 -> 1.20E+6
divx582 divide 2.400E+6 2 -> 1.200E+6
divx583 divide 2.4000E+6 2 -> 1.2000E+6
divx584 divide 24E+5 2 -> 1.2E+6
divx585 divide 240E+4 2 -> 1.20E+6
divx586 divide 2400E+3 2 -> 1.200E+6
divx587 divide 24000E+2 2 -> 1.2000E+6
precision: 7
divx590 divide 2.4E+6 2 -> 1.2E+6
divx591 divide 2.40E+6 2 -> 1.20E+6
divx592 divide 2.400E+6 2 -> 1.200E+6
divx593 divide 2.4000E+6 2 -> 1.2000E+6
divx594 divide 24E+5 2 -> 1.2E+6
divx595 divide 240E+4 2 -> 1.20E+6
divx596 divide 2400E+3 2 -> 1.200E+6
divx597 divide 24000E+2 2 -> 1.2000E+6
precision: 9
divx600 divide 2.4E+9 2 -> 1.2E+9
divx601 divide 2.40E+9 2 -> 1.20E+9
divx602 divide 2.400E+9 2 -> 1.200E+9
divx603 divide 2.4000E+9 2 -> 1.2000E+9
divx604 divide 24E+8 2 -> 1.2E+9
divx605 divide 240E+7 2 -> 1.20E+9
divx606 divide 2400E+6 2 -> 1.200E+9
divx607 divide 24000E+5 2 -> 1.2000E+9
-- long operand triangle
precision: 33
divx610 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131097703792 Inexact Rounded
precision: 32
divx611 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813109770379 Inexact Rounded
precision: 31
divx612 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977038 Inexact Rounded
precision: 30
divx613 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131097704 Inexact Rounded
precision: 29
divx614 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813109770 Inexact Rounded
precision: 28
divx615 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977 Inexact Rounded
precision: 27
divx616 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131098 Inexact Rounded
precision: 26
divx617 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813110 Inexact Rounded
precision: 25
divx618 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81311 Inexact Rounded
precision: 24
divx619 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131 Inexact Rounded
precision: 23
divx620 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813 Inexact Rounded
precision: 22
divx621 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81 Inexact Rounded
precision: 21
divx622 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8 Inexact Rounded
precision: 20
divx623 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817798 Inexact Rounded
precision: 19
divx624 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888379681780E+19 Inexact Rounded
precision: 18
divx625 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088837968178E+19 Inexact Rounded
precision: 17
divx626 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408883796818E+19 Inexact Rounded
precision: 16
divx627 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888379682E+19 Inexact Rounded
precision: 15
divx628 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088837968E+19 Inexact Rounded
precision: 14
divx629 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408883797E+19 Inexact Rounded
precision: 13
divx630 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888380E+19 Inexact Rounded
precision: 12
divx631 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088838E+19 Inexact Rounded
precision: 11
divx632 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408884E+19 Inexact Rounded
precision: 10
divx633 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888E+19 Inexact Rounded
precision: 9
divx634 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114089E+19 Inexact Rounded
precision: 8
divx635 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011409E+19 Inexact Rounded
precision: 7
divx636 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101141E+19 Inexact Rounded
precision: 6
divx637 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114E+19 Inexact Rounded
precision: 5
divx638 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011E+19 Inexact Rounded
precision: 4
divx639 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101E+19 Inexact Rounded
precision: 3
divx640 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10E+19 Inexact Rounded
precision: 2
divx641 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1E+19 Inexact Rounded
precision: 1
divx642 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4E+19 Inexact Rounded
-- more zeros, etc.
precision: 16
rounding: half_up
maxExponent: 384
minExponent: -383
divx731 divide 5.00 1E-3 -> 5.00E+3
divx732 divide 00.00 0.000 -> NaN Division_undefined
divx733 divide 00.00 0E-3 -> NaN Division_undefined
divx734 divide 0 -0 -> NaN Division_undefined
divx735 divide -0 0 -> NaN Division_undefined
divx736 divide -0 -0 -> NaN Division_undefined
divx741 divide 0 -1 -> -0
divx742 divide -0 -1 -> 0
divx743 divide 0 1 -> 0
divx744 divide -0 1 -> -0
divx745 divide -1 0 -> -Infinity Division_by_zero
divx746 divide -1 -0 -> Infinity Division_by_zero
divx747 divide 1 0 -> Infinity Division_by_zero
divx748 divide 1 -0 -> -Infinity Division_by_zero
divx751 divide 0.0 -1 -> -0.0
divx752 divide -0.0 -1 -> 0.0
divx753 divide 0.0 1 -> 0.0
divx754 divide -0.0 1 -> -0.0
divx755 divide -1.0 0 -> -Infinity Division_by_zero
divx756 divide -1.0 -0 -> Infinity Division_by_zero
divx757 divide 1.0 0 -> Infinity Division_by_zero
divx758 divide 1.0 -0 -> -Infinity Division_by_zero
divx761 divide 0 -1.0 -> -0E+1
divx762 divide -0 -1.0 -> 0E+1
divx763 divide 0 1.0 -> 0E+1
divx764 divide -0 1.0 -> -0E+1
divx765 divide -1 0.0 -> -Infinity Division_by_zero
divx766 divide -1 -0.0 -> Infinity Division_by_zero
divx767 divide 1 0.0 -> Infinity Division_by_zero
divx768 divide 1 -0.0 -> -Infinity Division_by_zero
divx771 divide 0.0 -1.0 -> -0
divx772 divide -0.0 -1.0 -> 0
divx773 divide 0.0 1.0 -> 0
divx774 divide -0.0 1.0 -> -0
divx775 divide -1.0 0.0 -> -Infinity Division_by_zero
divx776 divide -1.0 -0.0 -> Infinity Division_by_zero
divx777 divide 1.0 0.0 -> Infinity Division_by_zero
divx778 divide 1.0 -0.0 -> -Infinity Division_by_zero
-- Specials
divx780 divide Inf -Inf -> NaN Invalid_operation
divx781 divide Inf -1000 -> -Infinity
divx782 divide Inf -1 -> -Infinity
divx783 divide Inf -0 -> -Infinity
divx784 divide Inf 0 -> Infinity
divx785 divide Inf 1 -> Infinity
divx786 divide Inf 1000 -> Infinity
divx787 divide Inf Inf -> NaN Invalid_operation
divx788 divide -1000 Inf -> -0E-398 Clamped
divx789 divide -Inf Inf -> NaN Invalid_operation
divx790 divide -1 Inf -> -0E-398 Clamped
divx791 divide -0 Inf -> -0E-398 Clamped
divx792 divide 0 Inf -> 0E-398 Clamped
divx793 divide 1 Inf -> 0E-398 Clamped
divx794 divide 1000 Inf -> 0E-398 Clamped
divx795 divide Inf Inf -> NaN Invalid_operation
divx800 divide -Inf -Inf -> NaN Invalid_operation
divx801 divide -Inf -1000 -> Infinity
divx802 divide -Inf -1 -> Infinity
divx803 divide -Inf -0 -> Infinity
divx804 divide -Inf 0 -> -Infinity
divx805 divide -Inf 1 -> -Infinity
divx806 divide -Inf 1000 -> -Infinity
divx807 divide -Inf Inf -> NaN Invalid_operation
divx808 divide -1000 Inf -> -0E-398 Clamped
divx809 divide -Inf -Inf -> NaN Invalid_operation
divx810 divide -1 -Inf -> 0E-398 Clamped
divx811 divide -0 -Inf -> 0E-398 Clamped
divx812 divide 0 -Inf -> -0E-398 Clamped
divx813 divide 1 -Inf -> -0E-398 Clamped
divx814 divide 1000 -Inf -> -0E-398 Clamped
divx815 divide Inf -Inf -> NaN Invalid_operation
divx821 divide NaN -Inf -> NaN
divx822 divide NaN -1000 -> NaN
divx823 divide NaN -1 -> NaN
divx824 divide NaN -0 -> NaN
divx825 divide NaN 0 -> NaN
divx826 divide NaN 1 -> NaN
divx827 divide NaN 1000 -> NaN
divx828 divide NaN Inf -> NaN
divx829 divide NaN NaN -> NaN
divx830 divide -Inf NaN -> NaN
divx831 divide -1000 NaN -> NaN
divx832 divide -1 NaN -> NaN
divx833 divide -0 NaN -> NaN
divx834 divide 0 NaN -> NaN
divx835 divide 1 NaN -> NaN
divx836 divide 1000 NaN -> NaN
divx837 divide Inf NaN -> NaN
divx841 divide sNaN -Inf -> NaN Invalid_operation
divx842 divide sNaN -1000 -> NaN Invalid_operation
divx843 divide sNaN -1 -> NaN Invalid_operation
divx844 divide sNaN -0 -> NaN Invalid_operation
divx845 divide sNaN 0 -> NaN Invalid_operation
divx846 divide sNaN 1 -> NaN Invalid_operation
divx847 divide sNaN 1000 -> NaN Invalid_operation
divx848 divide sNaN NaN -> NaN Invalid_operation
divx849 divide sNaN sNaN -> NaN Invalid_operation
divx850 divide NaN sNaN -> NaN Invalid_operation
divx851 divide -Inf sNaN -> NaN Invalid_operation
divx852 divide -1000 sNaN -> NaN Invalid_operation
divx853 divide -1 sNaN -> NaN Invalid_operation
divx854 divide -0 sNaN -> NaN Invalid_operation
divx855 divide 0 sNaN -> NaN Invalid_operation
divx856 divide 1 sNaN -> NaN Invalid_operation
divx857 divide 1000 sNaN -> NaN Invalid_operation
divx858 divide Inf sNaN -> NaN Invalid_operation
divx859 divide NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
divx861 divide NaN9 -Inf -> NaN9
divx862 divide NaN8 1000 -> NaN8
divx863 divide NaN7 Inf -> NaN7
divx864 divide NaN6 NaN5 -> NaN6
divx865 divide -Inf NaN4 -> NaN4
divx866 divide -1000 NaN3 -> NaN3
divx867 divide Inf NaN2 -> NaN2
divx871 divide sNaN99 -Inf -> NaN99 Invalid_operation
divx872 divide sNaN98 -1 -> NaN98 Invalid_operation
divx873 divide sNaN97 NaN -> NaN97 Invalid_operation
divx874 divide sNaN96 sNaN94 -> NaN96 Invalid_operation
divx875 divide NaN95 sNaN93 -> NaN93 Invalid_operation
divx876 divide -Inf sNaN92 -> NaN92 Invalid_operation
divx877 divide 0 sNaN91 -> NaN91 Invalid_operation
divx878 divide Inf sNaN90 -> NaN90 Invalid_operation
divx879 divide NaN sNaN89 -> NaN89 Invalid_operation
divx881 divide -NaN9 -Inf -> -NaN9
divx882 divide -NaN8 1000 -> -NaN8
divx883 divide -NaN7 Inf -> -NaN7
divx884 divide -NaN6 -NaN5 -> -NaN6
divx885 divide -Inf -NaN4 -> -NaN4
divx886 divide -1000 -NaN3 -> -NaN3
divx887 divide Inf -NaN2 -> -NaN2
divx891 divide -sNaN99 -Inf -> -NaN99 Invalid_operation
divx892 divide -sNaN98 -1 -> -NaN98 Invalid_operation
divx893 divide -sNaN97 NaN -> -NaN97 Invalid_operation
divx894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation
divx895 divide -NaN95 -sNaN93 -> -NaN93 Invalid_operation
divx896 divide -Inf -sNaN92 -> -NaN92 Invalid_operation
divx897 divide 0 -sNaN91 -> -NaN91 Invalid_operation
divx898 divide Inf -sNaN90 -> -NaN90 Invalid_operation
divx899 divide -NaN -sNaN89 -> -NaN89 Invalid_operation
maxexponent: 999999999
minexponent: -999999999
-- Various flavours of divide by 0
divx901 divide 0 0 -> NaN Division_undefined
divx902 divide 0.0E5 0 -> NaN Division_undefined
divx903 divide 0.000 0 -> NaN Division_undefined
divx904 divide 0.0001 0 -> Infinity Division_by_zero
divx905 divide 0.01 0 -> Infinity Division_by_zero
divx906 divide 0.1 0 -> Infinity Division_by_zero
divx907 divide 1 0 -> Infinity Division_by_zero
divx908 divide 1 0.0 -> Infinity Division_by_zero
divx909 divide 10 0.0 -> Infinity Division_by_zero
divx910 divide 1E+100 0.0 -> Infinity Division_by_zero
divx911 divide 1E+1000 0 -> Infinity Division_by_zero
divx921 divide -0.0001 0 -> -Infinity Division_by_zero
divx922 divide -0.01 0 -> -Infinity Division_by_zero
divx923 divide -0.1 0 -> -Infinity Division_by_zero
divx924 divide -1 0 -> -Infinity Division_by_zero
divx925 divide -1 0.0 -> -Infinity Division_by_zero
divx926 divide -10 0.0 -> -Infinity Division_by_zero
divx927 divide -1E+100 0.0 -> -Infinity Division_by_zero
divx928 divide -1E+1000 0 -> -Infinity Division_by_zero
divx931 divide 0.0001 -0 -> -Infinity Division_by_zero
divx932 divide 0.01 -0 -> -Infinity Division_by_zero
divx933 divide 0.1 -0 -> -Infinity Division_by_zero
divx934 divide 1 -0 -> -Infinity Division_by_zero
divx935 divide 1 -0.0 -> -Infinity Division_by_zero
divx936 divide 10 -0.0 -> -Infinity Division_by_zero
divx937 divide 1E+100 -0.0 -> -Infinity Division_by_zero
divx938 divide 1E+1000 -0 -> -Infinity Division_by_zero
divx941 divide -0.0001 -0 -> Infinity Division_by_zero
divx942 divide -0.01 -0 -> Infinity Division_by_zero
divx943 divide -0.1 -0 -> Infinity Division_by_zero
divx944 divide -1 -0 -> Infinity Division_by_zero
divx945 divide -1 -0.0 -> Infinity Division_by_zero
divx946 divide -10 -0.0 -> Infinity Division_by_zero
divx947 divide -1E+100 -0.0 -> Infinity Division_by_zero
divx948 divide -1E+1000 -0 -> Infinity Division_by_zero
-- overflow and underflow tests
precision: 9
maxexponent: 999999999
minexponent: -999999999
divx951 divide 9E+999999999 +0.23456789012345E-0 -> Infinity Inexact Overflow Rounded
divx952 divide +0.100 9E+999999999 -> 1.111111E-1000000001 Inexact Rounded Underflow Subnormal
divx953 divide 9E-999999999 +9.100 -> 9.8901099E-1000000000 Inexact Rounded Underflow Subnormal
divx954 divide -1.23456789 9E+999999999 -> -1.3717421E-1000000000 Subnormal
divx955 divide -1.23456789012345E-0 9E+999999999 -> -1.3717421E-1000000000 Underflow Subnormal Rounded Inexact
divx956 divide -1.23456789012345E-0 7E+999999999 -> -1.7636684E-1000000000 Inexact Rounded Underflow Subnormal
divx957 divide 9E+999999999 -0.83456789012345E-0 -> -Infinity Inexact Overflow Rounded
divx958 divide -0.100 9E+999999999 -> -1.111111E-1000000001 Subnormal Inexact Rounded Underflow
divx959 divide 9E-999999999 -9.100 -> -9.8901099E-1000000000 Inexact Rounded Underflow Subnormal
-- overflow and underflow (additional edge tests in multiply.decTest)
-- 'subnormal' results now possible (all hard underflow or overflow in
-- base arithemtic)
divx960 divide 1e-600000000 1e+400000001 -> 1E-1000000001 Subnormal
divx961 divide 1e-600000000 1e+400000002 -> 1E-1000000002 Subnormal
divx962 divide 1e-600000000 1e+400000003 -> 1E-1000000003 Subnormal
divx963 divide 1e-600000000 1e+400000004 -> 1E-1000000004 Subnormal
divx964 divide 1e-600000000 1e+400000005 -> 1E-1000000005 Subnormal
divx965 divide 1e-600000000 1e+400000006 -> 1E-1000000006 Subnormal
divx966 divide 1e-600000000 1e+400000007 -> 1E-1000000007 Subnormal
divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-- [no equivalent of 'subnormal' for overflow]
divx970 divide 1e+600000000 1e-400000001 -> Infinity Overflow Inexact Rounded
divx971 divide 1e+600000000 1e-400000002 -> Infinity Overflow Inexact Rounded
divx972 divide 1e+600000000 1e-400000003 -> Infinity Overflow Inexact Rounded
divx973 divide 1e+600000000 1e-400000004 -> Infinity Overflow Inexact Rounded
divx974 divide 1e+600000000 1e-400000005 -> Infinity Overflow Inexact Rounded
divx975 divide 1e+600000000 1e-400000006 -> Infinity Overflow Inexact Rounded
divx976 divide 1e+600000000 1e-400000007 -> Infinity Overflow Inexact Rounded
divx977 divide 1e+600000000 1e-400000008 -> Infinity Overflow Inexact Rounded
divx978 divide 1e+600000000 1e-400000009 -> Infinity Overflow Inexact Rounded
divx979 divide 1e+600000000 1e-400000010 -> Infinity Overflow Inexact Rounded
-- Sign after overflow and underflow
divx980 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
divx981 divide 1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
divx982 divide -1e-600000000 1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
divx983 divide -1e-600000000 -1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
divx984 divide 1e+600000000 1e-400000009 -> Infinity Overflow Inexact Rounded
divx985 divide 1e+600000000 -1e-400000009 -> -Infinity Overflow Inexact Rounded
divx986 divide -1e+600000000 1e-400000009 -> -Infinity Overflow Inexact Rounded
divx987 divide -1e+600000000 -1e-400000009 -> Infinity Overflow Inexact Rounded
-- Long operand overflow may be a different path
precision: 3
divx990 divide 1000 9.999E-999999999 -> Infinity Inexact Overflow Rounded
divx991 divide 1000 -9.999E-999999999 -> -Infinity Inexact Overflow Rounded
divx992 divide 9.999E+999999999 0.01 -> Infinity Inexact Overflow Rounded
divx993 divide -9.999E+999999999 0.01 -> -Infinity Inexact Overflow Rounded
-- check for double-rounded subnormals
precision: 5
maxexponent: 79
minexponent: -79
divx1001 divide 1.52444E-80 1 -> 1.524E-80 Inexact Rounded Subnormal Underflow
divx1002 divide 1.52445E-80 1 -> 1.524E-80 Inexact Rounded Subnormal Underflow
divx1003 divide 1.52446E-80 1 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-- a rounding problem in one implementation
precision: 34
rounding: half_up
maxExponent: 6144
minExponent: -6143
-- Unbounded answer to 40 digits:
-- 1.465811965811965811965811965811965811966E+7000
divx1010 divide 343E6000 234E-1000 -> Infinity Overflow Inexact Rounded
-- Null tests
divx9998 divide 10 # -> NaN Invalid_operation
divx9999 divide # 10 -> NaN Invalid_operation

View file

@ -1,470 +0,0 @@
------------------------------------------------------------------------
-- divideint.decTest -- decimal integer division --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
dvix001 divideint 1 1 -> 1
dvix002 divideint 2 1 -> 2
dvix003 divideint 1 2 -> 0
dvix004 divideint 2 2 -> 1
dvix005 divideint 0 1 -> 0
dvix006 divideint 0 2 -> 0
dvix007 divideint 1 3 -> 0
dvix008 divideint 2 3 -> 0
dvix009 divideint 3 3 -> 1
dvix010 divideint 2.4 1 -> 2
dvix011 divideint 2.4 -1 -> -2
dvix012 divideint -2.4 1 -> -2
dvix013 divideint -2.4 -1 -> 2
dvix014 divideint 2.40 1 -> 2
dvix015 divideint 2.400 1 -> 2
dvix016 divideint 2.4 2 -> 1
dvix017 divideint 2.400 2 -> 1
dvix018 divideint 2. 2 -> 1
dvix019 divideint 20 20 -> 1
dvix020 divideint 187 187 -> 1
dvix021 divideint 5 2 -> 2
dvix022 divideint 5 2.0 -> 2
dvix023 divideint 5 2.000 -> 2
dvix024 divideint 5 0.200 -> 25
dvix025 divideint 5 0.200 -> 25
dvix030 divideint 1 2 -> 0
dvix031 divideint 1 4 -> 0
dvix032 divideint 1 8 -> 0
dvix033 divideint 1 16 -> 0
dvix034 divideint 1 32 -> 0
dvix035 divideint 1 64 -> 0
dvix040 divideint 1 -2 -> -0
dvix041 divideint 1 -4 -> -0
dvix042 divideint 1 -8 -> -0
dvix043 divideint 1 -16 -> -0
dvix044 divideint 1 -32 -> -0
dvix045 divideint 1 -64 -> -0
dvix050 divideint -1 2 -> -0
dvix051 divideint -1 4 -> -0
dvix052 divideint -1 8 -> -0
dvix053 divideint -1 16 -> -0
dvix054 divideint -1 32 -> -0
dvix055 divideint -1 64 -> -0
dvix060 divideint -1 -2 -> 0
dvix061 divideint -1 -4 -> 0
dvix062 divideint -1 -8 -> 0
dvix063 divideint -1 -16 -> 0
dvix064 divideint -1 -32 -> 0
dvix065 divideint -1 -64 -> 0
-- similar with powers of ten
dvix160 divideint 1 1 -> 1
dvix161 divideint 1 10 -> 0
dvix162 divideint 1 100 -> 0
dvix163 divideint 1 1000 -> 0
dvix164 divideint 1 10000 -> 0
dvix165 divideint 1 100000 -> 0
dvix166 divideint 1 1000000 -> 0
dvix167 divideint 1 10000000 -> 0
dvix168 divideint 1 100000000 -> 0
dvix170 divideint 1 -1 -> -1
dvix171 divideint 1 -10 -> -0
dvix172 divideint 1 -100 -> -0
dvix173 divideint 1 -1000 -> -0
dvix174 divideint 1 -10000 -> -0
dvix175 divideint 1 -100000 -> -0
dvix176 divideint 1 -1000000 -> -0
dvix177 divideint 1 -10000000 -> -0
dvix178 divideint 1 -100000000 -> -0
dvix180 divideint -1 1 -> -1
dvix181 divideint -1 10 -> -0
dvix182 divideint -1 100 -> -0
dvix183 divideint -1 1000 -> -0
dvix184 divideint -1 10000 -> -0
dvix185 divideint -1 100000 -> -0
dvix186 divideint -1 1000000 -> -0
dvix187 divideint -1 10000000 -> -0
dvix188 divideint -1 100000000 -> -0
dvix190 divideint -1 -1 -> 1
dvix191 divideint -1 -10 -> 0
dvix192 divideint -1 -100 -> 0
dvix193 divideint -1 -1000 -> 0
dvix194 divideint -1 -10000 -> 0
dvix195 divideint -1 -100000 -> 0
dvix196 divideint -1 -1000000 -> 0
dvix197 divideint -1 -10000000 -> 0
dvix198 divideint -1 -100000000 -> 0
-- some long operand cases here
dvix070 divideint 999999999 1 -> 999999999
dvix071 divideint 999999999.4 1 -> 999999999
dvix072 divideint 999999999.5 1 -> 999999999
dvix073 divideint 999999999.9 1 -> 999999999
dvix074 divideint 999999999.999 1 -> 999999999
precision: 6
dvix080 divideint 999999999 1 -> NaN Division_impossible
dvix081 divideint 99999999 1 -> NaN Division_impossible
dvix082 divideint 9999999 1 -> NaN Division_impossible
dvix083 divideint 999999 1 -> 999999
dvix084 divideint 99999 1 -> 99999
dvix085 divideint 9999 1 -> 9999
dvix086 divideint 999 1 -> 999
dvix087 divideint 99 1 -> 99
dvix088 divideint 9 1 -> 9
precision: 9
dvix090 divideint 0. 1 -> 0
dvix091 divideint .0 1 -> 0
dvix092 divideint 0.00 1 -> 0
dvix093 divideint 0.00E+9 1 -> 0
dvix094 divideint 0.0000E-50 1 -> 0
dvix100 divideint 1 1 -> 1
dvix101 divideint 1 2 -> 0
dvix102 divideint 1 3 -> 0
dvix103 divideint 1 4 -> 0
dvix104 divideint 1 5 -> 0
dvix105 divideint 1 6 -> 0
dvix106 divideint 1 7 -> 0
dvix107 divideint 1 8 -> 0
dvix108 divideint 1 9 -> 0
dvix109 divideint 1 10 -> 0
dvix110 divideint 1 1 -> 1
dvix111 divideint 2 1 -> 2
dvix112 divideint 3 1 -> 3
dvix113 divideint 4 1 -> 4
dvix114 divideint 5 1 -> 5
dvix115 divideint 6 1 -> 6
dvix116 divideint 7 1 -> 7
dvix117 divideint 8 1 -> 8
dvix118 divideint 9 1 -> 9
dvix119 divideint 10 1 -> 10
-- from DiagBigDecimal
dvix131 divideint 101.3 1 -> 101
dvix132 divideint 101.0 1 -> 101
dvix133 divideint 101.3 3 -> 33
dvix134 divideint 101.0 3 -> 33
dvix135 divideint 2.4 1 -> 2
dvix136 divideint 2.400 1 -> 2
dvix137 divideint 18 18 -> 1
dvix138 divideint 1120 1000 -> 1
dvix139 divideint 2.4 2 -> 1
dvix140 divideint 2.400 2 -> 1
dvix141 divideint 0.5 2.000 -> 0
dvix142 divideint 8.005 7 -> 1
dvix143 divideint 5 2 -> 2
dvix144 divideint 0 2 -> 0
dvix145 divideint 0.00 2 -> 0
-- Others
dvix150 divideint 12345 4.999 -> 2469
dvix151 divideint 12345 4.99 -> 2473
dvix152 divideint 12345 4.9 -> 2519
dvix153 divideint 12345 5 -> 2469
dvix154 divideint 12345 5.1 -> 2420
dvix155 divideint 12345 5.01 -> 2464
dvix156 divideint 12345 5.001 -> 2468
dvix157 divideint 101 7.6 -> 13
-- Various flavours of divideint by 0
maxexponent: 999999999
minexponent: -999999999
dvix201 divideint 0 0 -> NaN Division_undefined
dvix202 divideint 0.0E5 0 -> NaN Division_undefined
dvix203 divideint 0.000 0 -> NaN Division_undefined
dvix204 divideint 0.0001 0 -> Infinity Division_by_zero
dvix205 divideint 0.01 0 -> Infinity Division_by_zero
dvix206 divideint 0.1 0 -> Infinity Division_by_zero
dvix207 divideint 1 0 -> Infinity Division_by_zero
dvix208 divideint 1 0.0 -> Infinity Division_by_zero
dvix209 divideint 10 0.0 -> Infinity Division_by_zero
dvix210 divideint 1E+100 0.0 -> Infinity Division_by_zero
dvix211 divideint 1E+1000 0 -> Infinity Division_by_zero
dvix214 divideint -0.0001 0 -> -Infinity Division_by_zero
dvix215 divideint -0.01 0 -> -Infinity Division_by_zero
dvix216 divideint -0.1 0 -> -Infinity Division_by_zero
dvix217 divideint -1 0 -> -Infinity Division_by_zero
dvix218 divideint -1 0.0 -> -Infinity Division_by_zero
dvix219 divideint -10 0.0 -> -Infinity Division_by_zero
dvix220 divideint -1E+100 0.0 -> -Infinity Division_by_zero
dvix221 divideint -1E+1000 0 -> -Infinity Division_by_zero
-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
dvix270 divideint 1 1e999999999 -> 0
dvix271 divideint 1 0.9e999999999 -> 0
dvix272 divideint 1 0.99e999999999 -> 0
dvix273 divideint 1 0.999999999e999999999 -> 0
dvix274 divideint 9e999999999 1 -> NaN Division_impossible
dvix275 divideint 9.9e999999999 1 -> NaN Division_impossible
dvix276 divideint 9.99e999999999 1 -> NaN Division_impossible
dvix277 divideint 9.99999999e999999999 1 -> NaN Division_impossible
dvix280 divideint 0.1 9e-999999999 -> NaN Division_impossible
dvix281 divideint 0.1 99e-999999999 -> NaN Division_impossible
dvix282 divideint 0.1 999e-999999999 -> NaN Division_impossible
dvix283 divideint 0.1 9e-999999998 -> NaN Division_impossible
dvix284 divideint 0.1 99e-999999998 -> NaN Division_impossible
dvix285 divideint 0.1 999e-999999998 -> NaN Division_impossible
dvix286 divideint 0.1 999e-999999997 -> NaN Division_impossible
dvix287 divideint 0.1 9999e-999999997 -> NaN Division_impossible
dvix288 divideint 0.1 99999e-999999997 -> NaN Division_impossible
-- overflow and underflow tests [from divide]
maxexponent: 999999999
minexponent: -999999999
dvix330 divideint +1.23456789012345E-0 9E+999999999 -> 0
dvix331 divideint 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
dvix332 divideint +0.100 9E+999999999 -> 0
dvix333 divideint 9E-999999999 +9.100 -> 0
dvix335 divideint -1.23456789012345E-0 9E+999999999 -> -0
dvix336 divideint 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
dvix337 divideint -0.100 9E+999999999 -> -0
dvix338 divideint 9E-999999999 -9.100 -> -0
-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
dvix401 divideint 12345678000 100 -> 123456780
dvix402 divideint 1 12345678000 -> 0
dvix403 divideint 1234567800 10 -> 123456780
dvix404 divideint 1 1234567800 -> 0
dvix405 divideint 1234567890 10 -> 123456789
dvix406 divideint 1 1234567890 -> 0
dvix407 divideint 1234567891 10 -> 123456789
dvix408 divideint 1 1234567891 -> 0
dvix409 divideint 12345678901 100 -> 123456789
dvix410 divideint 1 12345678901 -> 0
dvix411 divideint 1234567896 10 -> 123456789
dvix412 divideint 1 1234567896 -> 0
dvix413 divideint 12345678948 100 -> 123456789
dvix414 divideint 12345678949 100 -> 123456789
dvix415 divideint 12345678950 100 -> 123456789
dvix416 divideint 12345678951 100 -> 123456789
dvix417 divideint 12345678999 100 -> 123456789
precision: 15
dvix441 divideint 12345678000 1 -> 12345678000
dvix442 divideint 1 12345678000 -> 0
dvix443 divideint 1234567800 1 -> 1234567800
dvix444 divideint 1 1234567800 -> 0
dvix445 divideint 1234567890 1 -> 1234567890
dvix446 divideint 1 1234567890 -> 0
dvix447 divideint 1234567891 1 -> 1234567891
dvix448 divideint 1 1234567891 -> 0
dvix449 divideint 12345678901 1 -> 12345678901
dvix450 divideint 1 12345678901 -> 0
dvix451 divideint 1234567896 1 -> 1234567896
dvix452 divideint 1 1234567896 -> 0
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
-- more zeros, etc.
dvix531 divideint 5.00 1E-3 -> 5000
dvix532 divideint 00.00 0.000 -> NaN Division_undefined
dvix533 divideint 00.00 0E-3 -> NaN Division_undefined
dvix534 divideint 0 -0 -> NaN Division_undefined
dvix535 divideint -0 0 -> NaN Division_undefined
dvix536 divideint -0 -0 -> NaN Division_undefined
dvix541 divideint 0 -1 -> -0
dvix542 divideint -0 -1 -> 0
dvix543 divideint 0 1 -> 0
dvix544 divideint -0 1 -> -0
dvix545 divideint -1 0 -> -Infinity Division_by_zero
dvix546 divideint -1 -0 -> Infinity Division_by_zero
dvix547 divideint 1 0 -> Infinity Division_by_zero
dvix548 divideint 1 -0 -> -Infinity Division_by_zero
dvix551 divideint 0.0 -1 -> -0
dvix552 divideint -0.0 -1 -> 0
dvix553 divideint 0.0 1 -> 0
dvix554 divideint -0.0 1 -> -0
dvix555 divideint -1.0 0 -> -Infinity Division_by_zero
dvix556 divideint -1.0 -0 -> Infinity Division_by_zero
dvix557 divideint 1.0 0 -> Infinity Division_by_zero
dvix558 divideint 1.0 -0 -> -Infinity Division_by_zero
dvix561 divideint 0 -1.0 -> -0
dvix562 divideint -0 -1.0 -> 0
dvix563 divideint 0 1.0 -> 0
dvix564 divideint -0 1.0 -> -0
dvix565 divideint -1 0.0 -> -Infinity Division_by_zero
dvix566 divideint -1 -0.0 -> Infinity Division_by_zero
dvix567 divideint 1 0.0 -> Infinity Division_by_zero
dvix568 divideint 1 -0.0 -> -Infinity Division_by_zero
dvix571 divideint 0.0 -1.0 -> -0
dvix572 divideint -0.0 -1.0 -> 0
dvix573 divideint 0.0 1.0 -> 0
dvix574 divideint -0.0 1.0 -> -0
dvix575 divideint -1.0 0.0 -> -Infinity Division_by_zero
dvix576 divideint -1.0 -0.0 -> Infinity Division_by_zero
dvix577 divideint 1.0 0.0 -> Infinity Division_by_zero
dvix578 divideint 1.0 -0.0 -> -Infinity Division_by_zero
-- Specials
dvix580 divideint Inf -Inf -> NaN Invalid_operation
dvix581 divideint Inf -1000 -> -Infinity
dvix582 divideint Inf -1 -> -Infinity
dvix583 divideint Inf -0 -> -Infinity
dvix584 divideint Inf 0 -> Infinity
dvix585 divideint Inf 1 -> Infinity
dvix586 divideint Inf 1000 -> Infinity
dvix587 divideint Inf Inf -> NaN Invalid_operation
dvix588 divideint -1000 Inf -> -0
dvix589 divideint -Inf Inf -> NaN Invalid_operation
dvix590 divideint -1 Inf -> -0
dvix591 divideint -0 Inf -> -0
dvix592 divideint 0 Inf -> 0
dvix593 divideint 1 Inf -> 0
dvix594 divideint 1000 Inf -> 0
dvix595 divideint Inf Inf -> NaN Invalid_operation
dvix600 divideint -Inf -Inf -> NaN Invalid_operation
dvix601 divideint -Inf -1000 -> Infinity
dvix602 divideint -Inf -1 -> Infinity
dvix603 divideint -Inf -0 -> Infinity
dvix604 divideint -Inf 0 -> -Infinity
dvix605 divideint -Inf 1 -> -Infinity
dvix606 divideint -Inf 1000 -> -Infinity
dvix607 divideint -Inf Inf -> NaN Invalid_operation
dvix608 divideint -1000 Inf -> -0
dvix609 divideint -Inf -Inf -> NaN Invalid_operation
dvix610 divideint -1 -Inf -> 0
dvix611 divideint -0 -Inf -> 0
dvix612 divideint 0 -Inf -> -0
dvix613 divideint 1 -Inf -> -0
dvix614 divideint 1000 -Inf -> -0
dvix615 divideint Inf -Inf -> NaN Invalid_operation
dvix621 divideint NaN -Inf -> NaN
dvix622 divideint NaN -1000 -> NaN
dvix623 divideint NaN -1 -> NaN
dvix624 divideint NaN -0 -> NaN
dvix625 divideint NaN 0 -> NaN
dvix626 divideint NaN 1 -> NaN
dvix627 divideint NaN 1000 -> NaN
dvix628 divideint NaN Inf -> NaN
dvix629 divideint NaN NaN -> NaN
dvix630 divideint -Inf NaN -> NaN
dvix631 divideint -1000 NaN -> NaN
dvix632 divideint -1 NaN -> NaN
dvix633 divideint -0 NaN -> NaN
dvix634 divideint 0 NaN -> NaN
dvix635 divideint 1 NaN -> NaN
dvix636 divideint 1000 NaN -> NaN
dvix637 divideint Inf NaN -> NaN
dvix641 divideint sNaN -Inf -> NaN Invalid_operation
dvix642 divideint sNaN -1000 -> NaN Invalid_operation
dvix643 divideint sNaN -1 -> NaN Invalid_operation
dvix644 divideint sNaN -0 -> NaN Invalid_operation
dvix645 divideint sNaN 0 -> NaN Invalid_operation
dvix646 divideint sNaN 1 -> NaN Invalid_operation
dvix647 divideint sNaN 1000 -> NaN Invalid_operation
dvix648 divideint sNaN NaN -> NaN Invalid_operation
dvix649 divideint sNaN sNaN -> NaN Invalid_operation
dvix650 divideint NaN sNaN -> NaN Invalid_operation
dvix651 divideint -Inf sNaN -> NaN Invalid_operation
dvix652 divideint -1000 sNaN -> NaN Invalid_operation
dvix653 divideint -1 sNaN -> NaN Invalid_operation
dvix654 divideint -0 sNaN -> NaN Invalid_operation
dvix655 divideint 0 sNaN -> NaN Invalid_operation
dvix656 divideint 1 sNaN -> NaN Invalid_operation
dvix657 divideint 1000 sNaN -> NaN Invalid_operation
dvix658 divideint Inf sNaN -> NaN Invalid_operation
dvix659 divideint NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
dvix661 divideint NaN9 -Inf -> NaN9
dvix662 divideint NaN8 1000 -> NaN8
dvix663 divideint NaN7 Inf -> NaN7
dvix664 divideint -NaN6 NaN5 -> -NaN6
dvix665 divideint -Inf NaN4 -> NaN4
dvix666 divideint -1000 NaN3 -> NaN3
dvix667 divideint Inf -NaN2 -> -NaN2
dvix671 divideint -sNaN99 -Inf -> -NaN99 Invalid_operation
dvix672 divideint sNaN98 -1 -> NaN98 Invalid_operation
dvix673 divideint sNaN97 NaN -> NaN97 Invalid_operation
dvix674 divideint sNaN96 sNaN94 -> NaN96 Invalid_operation
dvix675 divideint NaN95 sNaN93 -> NaN93 Invalid_operation
dvix676 divideint -Inf sNaN92 -> NaN92 Invalid_operation
dvix677 divideint 0 sNaN91 -> NaN91 Invalid_operation
dvix678 divideint Inf -sNaN90 -> -NaN90 Invalid_operation
dvix679 divideint NaN sNaN89 -> NaN89 Invalid_operation
-- some long operand cases again
precision: 8
dvix710 divideint 100000001 1 -> NaN Division_impossible
dvix711 divideint 100000000.4 1 -> NaN Division_impossible
dvix712 divideint 100000000.5 1 -> NaN Division_impossible
dvix713 divideint 100000000.9 1 -> NaN Division_impossible
dvix714 divideint 100000000.999 1 -> NaN Division_impossible
precision: 6
dvix720 divideint 100000000 1 -> NaN Division_impossible
dvix721 divideint 10000000 1 -> NaN Division_impossible
dvix722 divideint 1000000 1 -> NaN Division_impossible
dvix723 divideint 100000 1 -> 100000
dvix724 divideint 10000 1 -> 10000
dvix725 divideint 1000 1 -> 1000
dvix726 divideint 100 1 -> 100
dvix727 divideint 10 1 -> 10
dvix728 divideint 1 1 -> 1
dvix729 divideint 1 10 -> 0
precision: 9
maxexponent: 999999999
minexponent: -999999999
dvix732 divideint 1 0.99e999999999 -> 0
dvix733 divideint 1 0.999999999e999999999 -> 0
dvix734 divideint 9e999999999 1 -> NaN Division_impossible
dvix735 divideint 9.9e999999999 1 -> NaN Division_impossible
dvix736 divideint 9.99e999999999 1 -> NaN Division_impossible
dvix737 divideint 9.99999999e999999999 1 -> NaN Division_impossible
dvix740 divideint 0.1 9e-999999999 -> NaN Division_impossible
dvix741 divideint 0.1 99e-999999999 -> NaN Division_impossible
dvix742 divideint 0.1 999e-999999999 -> NaN Division_impossible
dvix743 divideint 0.1 9e-999999998 -> NaN Division_impossible
dvix744 divideint 0.1 99e-999999998 -> NaN Division_impossible
dvix745 divideint 0.1 999e-999999998 -> NaN Division_impossible
dvix746 divideint 0.1 999e-999999997 -> NaN Division_impossible
dvix747 divideint 0.1 9999e-999999997 -> NaN Division_impossible
dvix748 divideint 0.1 99999e-999999997 -> NaN Division_impossible
-- Null tests
dvix900 divideint 10 # -> NaN Invalid_operation
dvix901 divideint # 10 -> NaN Invalid_operation

View file

@ -1,215 +0,0 @@
------------------------------------------------------------------------
-- inexact.decTest -- decimal inexact and rounded edge cases --
-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
inx001 add 1 1 -> 2
inx002 add 123456789 0 -> 123456789
inx003 add 123456789 0.0 -> 123456789 Rounded
inx004 add 123456789 0.00 -> 123456789 Rounded
inx005 add 123456789 1 -> 123456790
inx006 add 123456789 0.1 -> 123456789 Inexact Rounded
inx007 add 123456789 0.01 -> 123456789 Inexact Rounded
inx008 add 123456789 0.001 -> 123456789 Inexact Rounded
inx009 add 123456789 0.000001 -> 123456789 Inexact Rounded
inx010 add 123456789 0.000000001 -> 123456789 Inexact Rounded
inx011 add 123456789 0.000000000001 -> 123456789 Inexact Rounded
inx012 add 123456789 0.9 -> 123456790 Inexact Rounded
inx013 add 123456789 0.09 -> 123456789 Inexact Rounded
inx014 add 123456789 0.009 -> 123456789 Inexact Rounded
inx015 add 123456789 0.000009 -> 123456789 Inexact Rounded
inx016 add 123456789 0.000000009 -> 123456789 Inexact Rounded
inx017 add 123456789 0.000000000009 -> 123456789 Inexact Rounded
inx021 add 1 -1 -> 0
inx022 add 123456789 -0 -> 123456789
inx023 add 123456789 -0.0 -> 123456789 Rounded
inx024 add 123456789 -0.00 -> 123456789 Rounded
inx025 add 123456789 -1 -> 123456788
inx026 add 123456789 -0.1 -> 123456789 Inexact Rounded
inx027 add 123456789 -0.01 -> 123456789 Inexact Rounded
inx028 add 123456789 -0.001 -> 123456789 Inexact Rounded
inx029 add 123456789 -0.000001 -> 123456789 Inexact Rounded
inx030 add 123456789 -0.000000001 -> 123456789 Inexact Rounded
inx031 add 123456789 -0.000000000001 -> 123456789 Inexact Rounded
inx032 add 123456789 -0.9 -> 123456788 Inexact Rounded
inx033 add 123456789 -0.09 -> 123456789 Inexact Rounded
inx034 add 123456789 -0.009 -> 123456789 Inexact Rounded
inx035 add 123456789 -0.000009 -> 123456789 Inexact Rounded
inx036 add 123456789 -0.000000009 -> 123456789 Inexact Rounded
inx037 add 123456789 -0.000000000009 -> 123456789 Inexact Rounded
inx042 add 0 123456789 -> 123456789
inx043 add 0.0 123456789 -> 123456789 Rounded
inx044 add 0.00 123456789 -> 123456789 Rounded
inx045 add 1 123456789 -> 123456790
inx046 add 0.1 123456789 -> 123456789 Inexact Rounded
inx047 add 0.01 123456789 -> 123456789 Inexact Rounded
inx048 add 0.001 123456789 -> 123456789 Inexact Rounded
inx049 add 0.000001 123456789 -> 123456789 Inexact Rounded
inx050 add 0.000000001 123456789 -> 123456789 Inexact Rounded
inx051 add 0.000000000001 123456789 -> 123456789 Inexact Rounded
inx052 add 0.9 123456789 -> 123456790 Inexact Rounded
inx053 add 0.09 123456789 -> 123456789 Inexact Rounded
inx054 add 0.009 123456789 -> 123456789 Inexact Rounded
inx055 add 0.000009 123456789 -> 123456789 Inexact Rounded
inx056 add 0.000000009 123456789 -> 123456789 Inexact Rounded
inx057 add 0.000000000009 123456789 -> 123456789 Inexact Rounded
inx062 add -0 123456789 -> 123456789
inx063 add -0.0 123456789 -> 123456789 Rounded
inx064 add -0.00 123456789 -> 123456789 Rounded
inx065 add -1 123456789 -> 123456788
inx066 add -0.1 123456789 -> 123456789 Inexact Rounded
inx067 add -0.01 123456789 -> 123456789 Inexact Rounded
inx068 add -0.001 123456789 -> 123456789 Inexact Rounded
inx069 add -0.000001 123456789 -> 123456789 Inexact Rounded
inx070 add -0.000000001 123456789 -> 123456789 Inexact Rounded
inx071 add -0.000000000001 123456789 -> 123456789 Inexact Rounded
inx072 add -0.9 123456789 -> 123456788 Inexact Rounded
inx073 add -0.09 123456789 -> 123456789 Inexact Rounded
inx074 add -0.009 123456789 -> 123456789 Inexact Rounded
inx075 add -0.000009 123456789 -> 123456789 Inexact Rounded
inx076 add -0.000000009 123456789 -> 123456789 Inexact Rounded
inx077 add -0.000000000009 123456789 -> 123456789 Inexact Rounded
-- some boundaries
inx081 add 999999999 0 -> 999999999
inx082 add 0.999999999 0.000000000 -> 0.999999999
inx083 add 999999999 1 -> 1.00000000E+9 Rounded
inx084 add 0.999999999 0.000000001 -> 1.00000000 Rounded
inx085 add 999999999 2 -> 1.00000000E+9 Inexact Rounded
inx086 add 0.999999999 0.000000002 -> 1.00000000 Inexact Rounded
inx087 add 999999999 3 -> 1.00000000E+9 Inexact Rounded
inx089 add 0.999999999 0.000000003 -> 1.00000000 Inexact Rounded
-- minus, plus, and subtract all assumed to work like add.
-- multiply
precision: 8
inx101 multiply 1000 1000 -> 1000000
inx102 multiply 9000 9000 -> 81000000
inx103 multiply 9999 9999 -> 99980001
inx104 multiply 1000 10000 -> 10000000
inx105 multiply 10000 10000 -> 1.0000000E+8 Rounded
inx106 multiply 10001 10000 -> 1.0001000E+8 Rounded
inx107 multiply 10001 10001 -> 1.0002000E+8 Inexact Rounded
inx108 multiply 10101 10001 -> 1.0102010E+8 Inexact Rounded
inx109 multiply 10001 10101 -> 1.0102010E+8 Inexact Rounded
-- divide
precision: 4
inx201 divide 1000 1000 -> 1
inx202 divide 1000 1 -> 1000
inx203 divide 1000 2 -> 500
inx204 divide 1000 3 -> 333.3 Inexact Rounded
inx205 divide 1000 4 -> 250
inx206 divide 1000 5 -> 200
inx207 divide 1000 6 -> 166.7 Inexact Rounded
inx208 divide 1000 7 -> 142.9 Inexact Rounded
inx209 divide 1000 8 -> 125
inx210 divide 1000 9 -> 111.1 Inexact Rounded
inx211 divide 1000 10 -> 100
inx220 divide 1 1 -> 1
inx221 divide 1 2 -> 0.5
inx222 divide 1 4 -> 0.25
inx223 divide 1 8 -> 0.125
inx224 divide 1 16 -> 0.0625
inx225 divide 1 32 -> 0.03125
inx226 divide 1 64 -> 0.01563 Inexact Rounded
inx227 divide 1 128 -> 0.007813 Inexact Rounded
precision: 5
inx230 divide 1 1 -> 1
inx231 divide 1 2 -> 0.5
inx232 divide 1 4 -> 0.25
inx233 divide 1 8 -> 0.125
inx234 divide 1 16 -> 0.0625
inx235 divide 1 32 -> 0.03125
inx236 divide 1 64 -> 0.015625
inx237 divide 1 128 -> 0.0078125
precision: 3
inx240 divide 1 1 -> 1
inx241 divide 1 2 -> 0.5
inx242 divide 1 4 -> 0.25
inx243 divide 1 8 -> 0.125
inx244 divide 1 16 -> 0.0625
inx245 divide 1 32 -> 0.0313 Inexact Rounded
inx246 divide 1 64 -> 0.0156 Inexact Rounded
inx247 divide 1 128 -> 0.00781 Inexact Rounded
precision: 2
inx250 divide 1 1 -> 1
inx251 divide 1 2 -> 0.5
inx252 divide 1 4 -> 0.25
inx253 divide 1 8 -> 0.13 Inexact Rounded
inx254 divide 1 16 -> 0.063 Inexact Rounded
inx255 divide 1 32 -> 0.031 Inexact Rounded
inx256 divide 1 64 -> 0.016 Inexact Rounded
inx257 divide 1 128 -> 0.0078 Inexact Rounded
precision: 1
inx260 divide 1 1 -> 1
inx261 divide 1 2 -> 0.5
inx262 divide 1 4 -> 0.3 Inexact Rounded
inx263 divide 1 8 -> 0.1 Inexact Rounded
inx264 divide 1 16 -> 0.06 Inexact Rounded
inx265 divide 1 32 -> 0.03 Inexact Rounded
inx266 divide 1 64 -> 0.02 Inexact Rounded
inx267 divide 1 128 -> 0.008 Inexact Rounded
-- power
precision: 4
inx301 power 0.5 2 -> 0.25
inx302 power 0.5 4 -> 0.0625
inx303 power 0.5 8 -> 0.003906 Inexact Rounded
inx304 power 0.5 16 -> 0.00001526 Inexact Rounded
inx305 power 0.5 32 -> 2.328E-10 Inexact Rounded
-- compare, divideInteger, and remainder are always exact
-- rescale
precision: 4
inx401 rescale 0 0 -> 0
inx402 rescale 1 0 -> 1
inx403 rescale 0.1 +2 -> 0E+2 Inexact Rounded
inx404 rescale 0.1 +1 -> 0E+1 Inexact Rounded
inx405 rescale 0.1 0 -> 0 Inexact Rounded
inx406 rescale 0.1 -1 -> 0.1
inx407 rescale 0.1 -2 -> 0.10
-- long operands cause rounding too
precision: 9
inx801 plus 123456789 -> 123456789
inx802 plus 1234567890 -> 1.23456789E+9 Rounded
inx803 plus 1234567891 -> 1.23456789E+9 Inexact Rounded
inx804 plus 1234567892 -> 1.23456789E+9 Inexact Rounded
inx805 plus 1234567899 -> 1.23456790E+9 Inexact Rounded
inx806 plus 1234567900 -> 1.23456790E+9 Rounded

View file

@ -1,376 +0,0 @@
------------------------------------------------------------------------
-- max.decTest -- decimal maximum --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
-- sanity checks
maxx001 max -2 -2 -> -2
maxx002 max -2 -1 -> -1
maxx003 max -2 0 -> 0
maxx004 max -2 1 -> 1
maxx005 max -2 2 -> 2
maxx006 max -1 -2 -> -1
maxx007 max -1 -1 -> -1
maxx008 max -1 0 -> 0
maxx009 max -1 1 -> 1
maxx010 max -1 2 -> 2
maxx011 max 0 -2 -> 0
maxx012 max 0 -1 -> 0
maxx013 max 0 0 -> 0
maxx014 max 0 1 -> 1
maxx015 max 0 2 -> 2
maxx016 max 1 -2 -> 1
maxx017 max 1 -1 -> 1
maxx018 max 1 0 -> 1
maxx019 max 1 1 -> 1
maxx020 max 1 2 -> 2
maxx021 max 2 -2 -> 2
maxx022 max 2 -1 -> 2
maxx023 max 2 0 -> 2
maxx025 max 2 1 -> 2
maxx026 max 2 2 -> 2
-- extended zeros
maxx030 max 0 0 -> 0
maxx031 max 0 -0 -> 0
maxx032 max 0 -0.0 -> 0
maxx033 max 0 0.0 -> 0
maxx034 max -0 0 -> 0 -- note: -0 = 0, but 0 chosen
maxx035 max -0 -0 -> -0
maxx036 max -0 -0.0 -> -0.0
maxx037 max -0 0.0 -> 0.0
maxx038 max 0.0 0 -> 0
maxx039 max 0.0 -0 -> 0.0
maxx040 max 0.0 -0.0 -> 0.0
maxx041 max 0.0 0.0 -> 0.0
maxx042 max -0.0 0 -> 0
maxx043 max -0.0 -0 -> -0.0
maxx044 max -0.0 -0.0 -> -0.0
maxx045 max -0.0 0.0 -> 0.0
maxx050 max -0E1 0E1 -> 0E+1
maxx051 max -0E2 0E2 -> 0E+2
maxx052 max -0E2 0E1 -> 0E+1
maxx053 max -0E1 0E2 -> 0E+2
maxx054 max 0E1 -0E1 -> 0E+1
maxx055 max 0E2 -0E2 -> 0E+2
maxx056 max 0E2 -0E1 -> 0E+2
maxx057 max 0E1 -0E2 -> 0E+1
maxx058 max 0E1 0E1 -> 0E+1
maxx059 max 0E2 0E2 -> 0E+2
maxx060 max 0E2 0E1 -> 0E+2
maxx061 max 0E1 0E2 -> 0E+2
maxx062 max -0E1 -0E1 -> -0E+1
maxx063 max -0E2 -0E2 -> -0E+2
maxx064 max -0E2 -0E1 -> -0E+1
maxx065 max -0E1 -0E2 -> -0E+1
-- Specials
precision: 9
maxx090 max Inf -Inf -> Infinity
maxx091 max Inf -1000 -> Infinity
maxx092 max Inf -1 -> Infinity
maxx093 max Inf -0 -> Infinity
maxx094 max Inf 0 -> Infinity
maxx095 max Inf 1 -> Infinity
maxx096 max Inf 1000 -> Infinity
maxx097 max Inf Inf -> Infinity
maxx098 max -1000 Inf -> Infinity
maxx099 max -Inf Inf -> Infinity
maxx100 max -1 Inf -> Infinity
maxx101 max -0 Inf -> Infinity
maxx102 max 0 Inf -> Infinity
maxx103 max 1 Inf -> Infinity
maxx104 max 1000 Inf -> Infinity
maxx105 max Inf Inf -> Infinity
maxx120 max -Inf -Inf -> -Infinity
maxx121 max -Inf -1000 -> -1000
maxx122 max -Inf -1 -> -1
maxx123 max -Inf -0 -> -0
maxx124 max -Inf 0 -> 0
maxx125 max -Inf 1 -> 1
maxx126 max -Inf 1000 -> 1000
maxx127 max -Inf Inf -> Infinity
maxx128 max -Inf -Inf -> -Infinity
maxx129 max -1000 -Inf -> -1000
maxx130 max -1 -Inf -> -1
maxx131 max -0 -Inf -> -0
maxx132 max 0 -Inf -> 0
maxx133 max 1 -Inf -> 1
maxx134 max 1000 -Inf -> 1000
maxx135 max Inf -Inf -> Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
maxx141 max NaN -Inf -> -Infinity
maxx142 max NaN -1000 -> -1000
maxx143 max NaN -1 -> -1
maxx144 max NaN -0 -> -0
maxx145 max NaN 0 -> 0
maxx146 max NaN 1 -> 1
maxx147 max NaN 1000 -> 1000
maxx148 max NaN Inf -> Infinity
maxx149 max NaN NaN -> NaN
maxx150 max -Inf NaN -> -Infinity
maxx151 max -1000 NaN -> -1000
maxx152 max -1 NaN -> -1
maxx153 max -0 NaN -> -0
maxx154 max 0 NaN -> 0
maxx155 max 1 NaN -> 1
maxx156 max 1000 NaN -> 1000
maxx157 max Inf NaN -> Infinity
maxx161 max sNaN -Inf -> NaN Invalid_operation
maxx162 max sNaN -1000 -> NaN Invalid_operation
maxx163 max sNaN -1 -> NaN Invalid_operation
maxx164 max sNaN -0 -> NaN Invalid_operation
maxx165 max sNaN 0 -> NaN Invalid_operation
maxx166 max sNaN 1 -> NaN Invalid_operation
maxx167 max sNaN 1000 -> NaN Invalid_operation
maxx168 max sNaN NaN -> NaN Invalid_operation
maxx169 max sNaN sNaN -> NaN Invalid_operation
maxx170 max NaN sNaN -> NaN Invalid_operation
maxx171 max -Inf sNaN -> NaN Invalid_operation
maxx172 max -1000 sNaN -> NaN Invalid_operation
maxx173 max -1 sNaN -> NaN Invalid_operation
maxx174 max -0 sNaN -> NaN Invalid_operation
maxx175 max 0 sNaN -> NaN Invalid_operation
maxx176 max 1 sNaN -> NaN Invalid_operation
maxx177 max 1000 sNaN -> NaN Invalid_operation
maxx178 max Inf sNaN -> NaN Invalid_operation
maxx179 max NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
maxx181 max NaN9 -Inf -> -Infinity
maxx182 max NaN8 9 -> 9
maxx183 max -NaN7 Inf -> Infinity
maxx184 max -NaN1 NaN11 -> -NaN1
maxx185 max NaN2 NaN12 -> NaN2
maxx186 max -NaN13 -NaN7 -> -NaN13
maxx187 max NaN14 -NaN5 -> NaN14
maxx188 max -Inf NaN4 -> -Infinity
maxx189 max -9 -NaN3 -> -9
maxx190 max Inf NaN2 -> Infinity
maxx191 max sNaN99 -Inf -> NaN99 Invalid_operation
maxx192 max sNaN98 -1 -> NaN98 Invalid_operation
maxx193 max -sNaN97 NaN -> -NaN97 Invalid_operation
maxx194 max sNaN96 sNaN94 -> NaN96 Invalid_operation
maxx195 max NaN95 sNaN93 -> NaN93 Invalid_operation
maxx196 max -Inf sNaN92 -> NaN92 Invalid_operation
maxx197 max 0 sNaN91 -> NaN91 Invalid_operation
maxx198 max Inf -sNaN90 -> -NaN90 Invalid_operation
maxx199 max NaN sNaN89 -> NaN89 Invalid_operation
-- rounding checks
maxexponent: 999
minexponent: -999
precision: 9
maxx201 max 12345678000 1 -> 1.23456780E+10 Rounded
maxx202 max 1 12345678000 -> 1.23456780E+10 Rounded
maxx203 max 1234567800 1 -> 1.23456780E+9 Rounded
maxx204 max 1 1234567800 -> 1.23456780E+9 Rounded
maxx205 max 1234567890 1 -> 1.23456789E+9 Rounded
maxx206 max 1 1234567890 -> 1.23456789E+9 Rounded
maxx207 max 1234567891 1 -> 1.23456789E+9 Inexact Rounded
maxx208 max 1 1234567891 -> 1.23456789E+9 Inexact Rounded
maxx209 max 12345678901 1 -> 1.23456789E+10 Inexact Rounded
maxx210 max 1 12345678901 -> 1.23456789E+10 Inexact Rounded
maxx211 max 1234567896 1 -> 1.23456790E+9 Inexact Rounded
maxx212 max 1 1234567896 -> 1.23456790E+9 Inexact Rounded
maxx213 max -1234567891 1 -> 1
maxx214 max 1 -1234567891 -> 1
maxx215 max -12345678901 1 -> 1
maxx216 max 1 -12345678901 -> 1
maxx217 max -1234567896 1 -> 1
maxx218 max 1 -1234567896 -> 1
precision: 15
maxx221 max 12345678000 1 -> 12345678000
maxx222 max 1 12345678000 -> 12345678000
maxx223 max 1234567800 1 -> 1234567800
maxx224 max 1 1234567800 -> 1234567800
maxx225 max 1234567890 1 -> 1234567890
maxx226 max 1 1234567890 -> 1234567890
maxx227 max 1234567891 1 -> 1234567891
maxx228 max 1 1234567891 -> 1234567891
maxx229 max 12345678901 1 -> 12345678901
maxx230 max 1 12345678901 -> 12345678901
maxx231 max 1234567896 1 -> 1234567896
maxx232 max 1 1234567896 -> 1234567896
maxx233 max -1234567891 1 -> 1
maxx234 max 1 -1234567891 -> 1
maxx235 max -12345678901 1 -> 1
maxx236 max 1 -12345678901 -> 1
maxx237 max -1234567896 1 -> 1
maxx238 max 1 -1234567896 -> 1
-- from examples
maxx280 max '3' '2' -> '3'
maxx281 max '-10' '3' -> '3'
maxx282 max '1.0' '1' -> '1'
maxx283 max '1' '1.0' -> '1'
maxx284 max '7' 'NaN' -> '7'
-- overflow and underflow tests ...
maxExponent: 999999999
minexponent: -999999999
maxx330 max +1.23456789012345E-0 9E+999999999 -> 9E+999999999
maxx331 max 9E+999999999 +1.23456789012345E-0 -> 9E+999999999
maxx332 max +0.100 9E-999999999 -> 0.100
maxx333 max 9E-999999999 +0.100 -> 0.100
maxx335 max -1.23456789012345E-0 9E+999999999 -> 9E+999999999
maxx336 max 9E+999999999 -1.23456789012345E-0 -> 9E+999999999
maxx337 max -0.100 9E-999999999 -> 9E-999999999
maxx338 max 9E-999999999 -0.100 -> 9E-999999999
maxx339 max 1e-599999999 1e-400000001 -> 1E-400000001
maxx340 max 1e-599999999 1e-400000000 -> 1E-400000000
maxx341 max 1e-600000000 1e-400000000 -> 1E-400000000
maxx342 max 9e-999999998 0.01 -> 0.01
maxx343 max 9e-999999998 0.1 -> 0.1
maxx344 max 0.01 9e-999999998 -> 0.01
maxx345 max 1e599999999 1e400000001 -> 1E+599999999
maxx346 max 1e599999999 1e400000000 -> 1E+599999999
maxx347 max 1e600000000 1e400000000 -> 1E+600000000
maxx348 max 9e999999998 100 -> 9E+999999998
maxx349 max 9e999999998 10 -> 9E+999999998
maxx350 max 100 9e999999998 -> 9E+999999998
-- signs
maxx351 max 1e+777777777 1e+411111111 -> 1E+777777777
maxx352 max 1e+777777777 -1e+411111111 -> 1E+777777777
maxx353 max -1e+777777777 1e+411111111 -> 1E+411111111
maxx354 max -1e+777777777 -1e+411111111 -> -1E+411111111
maxx355 max 1e-777777777 1e-411111111 -> 1E-411111111
maxx356 max 1e-777777777 -1e-411111111 -> 1E-777777777
maxx357 max -1e-777777777 1e-411111111 -> 1E-411111111
maxx358 max -1e-777777777 -1e-411111111 -> -1E-777777777
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
maxx401 max Inf 1.1 -> Infinity
maxx402 max 1.1 1 -> 1.1
maxx403 max 1 1.0 -> 1
maxx404 max 1.0 0.1 -> 1.0
maxx405 max 0.1 0.10 -> 0.1
maxx406 max 0.10 0.100 -> 0.10
maxx407 max 0.10 0 -> 0.10
maxx408 max 0 0.0 -> 0
maxx409 max 0.0 -0 -> 0.0
maxx410 max 0.0 -0.0 -> 0.0
maxx411 max 0.00 -0.0 -> 0.00
maxx412 max 0.0 -0.00 -> 0.0
maxx413 max 0 -0.0 -> 0
maxx414 max 0 -0 -> 0
maxx415 max -0.0 -0 -> -0.0
maxx416 max -0 -0.100 -> -0
maxx417 max -0.100 -0.10 -> -0.100
maxx418 max -0.10 -0.1 -> -0.10
maxx419 max -0.1 -1.0 -> -0.1
maxx420 max -1.0 -1 -> -1.0
maxx421 max -1 -1.1 -> -1
maxx423 max -1.1 -Inf -> -1.1
-- same with operands reversed
maxx431 max 1.1 Inf -> Infinity
maxx432 max 1 1.1 -> 1.1
maxx433 max 1.0 1 -> 1
maxx434 max 0.1 1.0 -> 1.0
maxx435 max 0.10 0.1 -> 0.1
maxx436 max 0.100 0.10 -> 0.10
maxx437 max 0 0.10 -> 0.10
maxx438 max 0.0 0 -> 0
maxx439 max -0 0.0 -> 0.0
maxx440 max -0.0 0.0 -> 0.0
maxx441 max -0.0 0.00 -> 0.00
maxx442 max -0.00 0.0 -> 0.0
maxx443 max -0.0 0 -> 0
maxx444 max -0 0 -> 0
maxx445 max -0 -0.0 -> -0.0
maxx446 max -0.100 -0 -> -0
maxx447 max -0.10 -0.100 -> -0.100
maxx448 max -0.1 -0.10 -> -0.10
maxx449 max -1.0 -0.1 -> -0.1
maxx450 max -1 -1.0 -> -1.0
maxx451 max -1.1 -1 -> -1
maxx453 max -Inf -1.1 -> -1.1
-- largies
maxx460 max 1000 1E+3 -> 1E+3
maxx461 max 1E+3 1000 -> 1E+3
maxx462 max 1000 -1E+3 -> 1000
maxx463 max 1E+3 -1000 -> 1E+3
maxx464 max -1000 1E+3 -> 1E+3
maxx465 max -1E+3 1000 -> 1000
maxx466 max -1000 -1E+3 -> -1000
maxx467 max -1E+3 -1000 -> -1000
-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
maxx500 max 9.999E+999999999 0 -> Infinity Inexact Overflow Rounded
maxx501 max -9.999E+999999999 0 -> 0
-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
maxx510 max 1.00E-999 0 -> 1.00E-999
maxx511 max 0.1E-999 0 -> 1E-1000 Subnormal
maxx512 max 0.10E-999 0 -> 1.0E-1000 Subnormal
maxx513 max 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded
maxx514 max 0.01E-999 0 -> 1E-1001 Subnormal
-- next is rounded to Emin
maxx515 max 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow
maxx516 max 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
maxx517 max 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow
maxx518 max 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow
maxx519 max 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow
maxx520 max 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow
maxx530 max -1.00E-999 0 -> 0
maxx531 max -0.1E-999 0 -> 0
maxx532 max -0.10E-999 0 -> 0
maxx533 max -0.100E-999 0 -> 0
maxx534 max -0.01E-999 0 -> 0
maxx535 max -0.999E-999 0 -> 0
maxx536 max -0.099E-999 0 -> 0
maxx537 max -0.009E-999 0 -> 0
maxx538 max -0.001E-999 0 -> 0
maxx539 max -0.0009E-999 0 -> 0
maxx540 max -0.0001E-999 0 -> 0
-- Null tests
maxx900 max 10 # -> NaN Invalid_operation
maxx901 max # 10 -> NaN Invalid_operation

View file

@ -1,363 +0,0 @@
------------------------------------------------------------------------
-- min.decTest -- decimal minimum --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
-- sanity checks
mnmx001 min -2 -2 -> -2
mnmx002 min -2 -1 -> -2
mnmx003 min -2 0 -> -2
mnmx004 min -2 1 -> -2
mnmx005 min -2 2 -> -2
mnmx006 min -1 -2 -> -2
mnmx007 min -1 -1 -> -1
mnmx008 min -1 0 -> -1
mnmx009 min -1 1 -> -1
mnmx010 min -1 2 -> -1
mnmx011 min 0 -2 -> -2
mnmx012 min 0 -1 -> -1
mnmx013 min 0 0 -> 0
mnmx014 min 0 1 -> 0
mnmx015 min 0 2 -> 0
mnmx016 min 1 -2 -> -2
mnmx017 min 1 -1 -> -1
mnmx018 min 1 0 -> 0
mnmx019 min 1 1 -> 1
mnmx020 min 1 2 -> 1
mnmx021 min 2 -2 -> -2
mnmx022 min 2 -1 -> -1
mnmx023 min 2 0 -> 0
mnmx025 min 2 1 -> 1
mnmx026 min 2 2 -> 2
-- extended zeros
mnmx030 min 0 0 -> 0
mnmx031 min 0 -0 -> -0
mnmx032 min 0 -0.0 -> -0.0
mnmx033 min 0 0.0 -> 0.0
mnmx034 min -0 0 -> -0
mnmx035 min -0 -0 -> -0
mnmx036 min -0 -0.0 -> -0
mnmx037 min -0 0.0 -> -0
mnmx038 min 0.0 0 -> 0.0
mnmx039 min 0.0 -0 -> -0
mnmx040 min 0.0 -0.0 -> -0.0
mnmx041 min 0.0 0.0 -> 0.0
mnmx042 min -0.0 0 -> -0.0
mnmx043 min -0.0 -0 -> -0
mnmx044 min -0.0 -0.0 -> -0.0
mnmx045 min -0.0 0.0 -> -0.0
mnmx046 min 0E1 -0E1 -> -0E+1
mnmx047 min -0E1 0E2 -> -0E+1
mnmx048 min 0E2 0E1 -> 0E+1
mnmx049 min 0E1 0E2 -> 0E+1
mnmx050 min -0E3 -0E2 -> -0E+3
mnmx051 min -0E2 -0E3 -> -0E+3
-- Specials
precision: 9
mnmx090 min Inf -Inf -> -Infinity
mnmx091 min Inf -1000 -> -1000
mnmx092 min Inf -1 -> -1
mnmx093 min Inf -0 -> -0
mnmx094 min Inf 0 -> 0
mnmx095 min Inf 1 -> 1
mnmx096 min Inf 1000 -> 1000
mnmx097 min Inf Inf -> Infinity
mnmx098 min -1000 Inf -> -1000
mnmx099 min -Inf Inf -> -Infinity
mnmx100 min -1 Inf -> -1
mnmx101 min -0 Inf -> -0
mnmx102 min 0 Inf -> 0
mnmx103 min 1 Inf -> 1
mnmx104 min 1000 Inf -> 1000
mnmx105 min Inf Inf -> Infinity
mnmx120 min -Inf -Inf -> -Infinity
mnmx121 min -Inf -1000 -> -Infinity
mnmx122 min -Inf -1 -> -Infinity
mnmx123 min -Inf -0 -> -Infinity
mnmx124 min -Inf 0 -> -Infinity
mnmx125 min -Inf 1 -> -Infinity
mnmx126 min -Inf 1000 -> -Infinity
mnmx127 min -Inf Inf -> -Infinity
mnmx128 min -Inf -Inf -> -Infinity
mnmx129 min -1000 -Inf -> -Infinity
mnmx130 min -1 -Inf -> -Infinity
mnmx131 min -0 -Inf -> -Infinity
mnmx132 min 0 -Inf -> -Infinity
mnmx133 min 1 -Inf -> -Infinity
mnmx134 min 1000 -Inf -> -Infinity
mnmx135 min Inf -Inf -> -Infinity
-- 2004.08.02 754r chooses number over NaN in mixed cases
mnmx141 min NaN -Inf -> -Infinity
mnmx142 min NaN -1000 -> -1000
mnmx143 min NaN -1 -> -1
mnmx144 min NaN -0 -> -0
mnmx145 min NaN 0 -> 0
mnmx146 min NaN 1 -> 1
mnmx147 min NaN 1000 -> 1000
mnmx148 min NaN Inf -> Infinity
mnmx149 min NaN NaN -> NaN
mnmx150 min -Inf NaN -> -Infinity
mnmx151 min -1000 NaN -> -1000
mnmx152 min -1 -NaN -> -1
mnmx153 min -0 NaN -> -0
mnmx154 min 0 -NaN -> 0
mnmx155 min 1 NaN -> 1
mnmx156 min 1000 NaN -> 1000
mnmx157 min Inf NaN -> Infinity
mnmx161 min sNaN -Inf -> NaN Invalid_operation
mnmx162 min sNaN -1000 -> NaN Invalid_operation
mnmx163 min sNaN -1 -> NaN Invalid_operation
mnmx164 min sNaN -0 -> NaN Invalid_operation
mnmx165 min -sNaN 0 -> -NaN Invalid_operation
mnmx166 min -sNaN 1 -> -NaN Invalid_operation
mnmx167 min sNaN 1000 -> NaN Invalid_operation
mnmx168 min sNaN NaN -> NaN Invalid_operation
mnmx169 min sNaN sNaN -> NaN Invalid_operation
mnmx170 min NaN sNaN -> NaN Invalid_operation
mnmx171 min -Inf sNaN -> NaN Invalid_operation
mnmx172 min -1000 sNaN -> NaN Invalid_operation
mnmx173 min -1 sNaN -> NaN Invalid_operation
mnmx174 min -0 sNaN -> NaN Invalid_operation
mnmx175 min 0 sNaN -> NaN Invalid_operation
mnmx176 min 1 sNaN -> NaN Invalid_operation
mnmx177 min 1000 sNaN -> NaN Invalid_operation
mnmx178 min Inf sNaN -> NaN Invalid_operation
mnmx179 min NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
mnmx181 min NaN9 -Inf -> -Infinity
mnmx182 min -NaN8 9990 -> 9990
mnmx183 min NaN71 Inf -> Infinity
mnmx184 min NaN1 NaN54 -> NaN1
mnmx185 min NaN22 -NaN53 -> NaN22
mnmx186 min -NaN3 NaN6 -> -NaN3
mnmx187 min -NaN44 NaN7 -> -NaN44
mnmx188 min -Inf NaN41 -> -Infinity
mnmx189 min -9999 -NaN33 -> -9999
mnmx190 min Inf NaN2 -> Infinity
mnmx191 min sNaN99 -Inf -> NaN99 Invalid_operation
mnmx192 min sNaN98 -11 -> NaN98 Invalid_operation
mnmx193 min -sNaN97 NaN8 -> -NaN97 Invalid_operation
mnmx194 min sNaN69 sNaN94 -> NaN69 Invalid_operation
mnmx195 min NaN95 sNaN93 -> NaN93 Invalid_operation
mnmx196 min -Inf sNaN92 -> NaN92 Invalid_operation
mnmx197 min 088 sNaN91 -> NaN91 Invalid_operation
mnmx198 min Inf -sNaN90 -> -NaN90 Invalid_operation
mnmx199 min NaN sNaN86 -> NaN86 Invalid_operation
-- rounding checks -- chosen is rounded, or not
maxExponent: 999
minexponent: -999
precision: 9
mnmx201 min -12345678000 1 -> -1.23456780E+10 Rounded
mnmx202 min 1 -12345678000 -> -1.23456780E+10 Rounded
mnmx203 min -1234567800 1 -> -1.23456780E+9 Rounded
mnmx204 min 1 -1234567800 -> -1.23456780E+9 Rounded
mnmx205 min -1234567890 1 -> -1.23456789E+9 Rounded
mnmx206 min 1 -1234567890 -> -1.23456789E+9 Rounded
mnmx207 min -1234567891 1 -> -1.23456789E+9 Inexact Rounded
mnmx208 min 1 -1234567891 -> -1.23456789E+9 Inexact Rounded
mnmx209 min -12345678901 1 -> -1.23456789E+10 Inexact Rounded
mnmx210 min 1 -12345678901 -> -1.23456789E+10 Inexact Rounded
mnmx211 min -1234567896 1 -> -1.23456790E+9 Inexact Rounded
mnmx212 min 1 -1234567896 -> -1.23456790E+9 Inexact Rounded
mnmx213 min 1234567891 1 -> 1
mnmx214 min 1 1234567891 -> 1
mnmx215 min 12345678901 1 -> 1
mnmx216 min 1 12345678901 -> 1
mnmx217 min 1234567896 1 -> 1
mnmx218 min 1 1234567896 -> 1
precision: 15
mnmx221 min -12345678000 1 -> -12345678000
mnmx222 min 1 -12345678000 -> -12345678000
mnmx223 min -1234567800 1 -> -1234567800
mnmx224 min 1 -1234567800 -> -1234567800
mnmx225 min -1234567890 1 -> -1234567890
mnmx226 min 1 -1234567890 -> -1234567890
mnmx227 min -1234567891 1 -> -1234567891
mnmx228 min 1 -1234567891 -> -1234567891
mnmx229 min -12345678901 1 -> -12345678901
mnmx230 min 1 -12345678901 -> -12345678901
mnmx231 min -1234567896 1 -> -1234567896
mnmx232 min 1 -1234567896 -> -1234567896
mnmx233 min 1234567891 1 -> 1
mnmx234 min 1 1234567891 -> 1
mnmx235 min 12345678901 1 -> 1
mnmx236 min 1 12345678901 -> 1
mnmx237 min 1234567896 1 -> 1
mnmx238 min 1 1234567896 -> 1
-- from examples
mnmx280 min '3' '2' -> '2'
mnmx281 min '-10' '3' -> '-10'
mnmx282 min '1.0' '1' -> '1.0'
mnmx283 min '1' '1.0' -> '1.0'
mnmx284 min '7' 'NaN' -> '7'
-- overflow and underflow tests .. subnormal results [inputs] now allowed
maxExponent: 999999999
minexponent: -999999999
mnmx330 min -1.23456789012345E-0 -9E+999999999 -> -9E+999999999
mnmx331 min -9E+999999999 -1.23456789012345E-0 -> -9E+999999999
mnmx332 min -0.100 -9E-999999999 -> -0.100
mnmx333 min -9E-999999999 -0.100 -> -0.100
mnmx335 min +1.23456789012345E-0 -9E+999999999 -> -9E+999999999
mnmx336 min -9E+999999999 1.23456789012345E-0 -> -9E+999999999
mnmx337 min +0.100 -9E-999999999 -> -9E-999999999
mnmx338 min -9E-999999999 0.100 -> -9E-999999999
mnmx339 min -1e-599999999 -1e-400000001 -> -1E-400000001
mnmx340 min -1e-599999999 -1e-400000000 -> -1E-400000000
mnmx341 min -1e-600000000 -1e-400000000 -> -1E-400000000
mnmx342 min -9e-999999998 -0.01 -> -0.01
mnmx343 min -9e-999999998 -0.1 -> -0.1
mnmx344 min -0.01 -9e-999999998 -> -0.01
mnmx345 min -1e599999999 -1e400000001 -> -1E+599999999
mnmx346 min -1e599999999 -1e400000000 -> -1E+599999999
mnmx347 min -1e600000000 -1e400000000 -> -1E+600000000
mnmx348 min -9e999999998 -100 -> -9E+999999998
mnmx349 min -9e999999998 -10 -> -9E+999999998
mnmx350 min -100 -9e999999998 -> -9E+999999998
-- signs
mnmx351 min -1e+777777777 -1e+411111111 -> -1E+777777777
mnmx352 min -1e+777777777 +1e+411111111 -> -1E+777777777
mnmx353 min +1e+777777777 -1e+411111111 -> -1E+411111111
mnmx354 min +1e+777777777 +1e+411111111 -> 1E+411111111
mnmx355 min -1e-777777777 -1e-411111111 -> -1E-411111111
mnmx356 min -1e-777777777 +1e-411111111 -> -1E-777777777
mnmx357 min +1e-777777777 -1e-411111111 -> -1E-411111111
mnmx358 min +1e-777777777 +1e-411111111 -> 1E-777777777
-- expanded list from min/max 754r purple prose
-- [explicit tests for exponent ordering]
mnmx401 min Inf 1.1 -> 1.1
mnmx402 min 1.1 1 -> 1
mnmx403 min 1 1.0 -> 1.0
mnmx404 min 1.0 0.1 -> 0.1
mnmx405 min 0.1 0.10 -> 0.10
mnmx406 min 0.10 0.100 -> 0.100
mnmx407 min 0.10 0 -> 0
mnmx408 min 0 0.0 -> 0.0
mnmx409 min 0.0 -0 -> -0
mnmx410 min 0.0 -0.0 -> -0.0
mnmx411 min 0.00 -0.0 -> -0.0
mnmx412 min 0.0 -0.00 -> -0.00
mnmx413 min 0 -0.0 -> -0.0
mnmx414 min 0 -0 -> -0
mnmx415 min -0.0 -0 -> -0
mnmx416 min -0 -0.100 -> -0.100
mnmx417 min -0.100 -0.10 -> -0.10
mnmx418 min -0.10 -0.1 -> -0.1
mnmx419 min -0.1 -1.0 -> -1.0
mnmx420 min -1.0 -1 -> -1
mnmx421 min -1 -1.1 -> -1.1
mnmx423 min -1.1 -Inf -> -Infinity
-- same with operands reversed
mnmx431 min 1.1 Inf -> 1.1
mnmx432 min 1 1.1 -> 1
mnmx433 min 1.0 1 -> 1.0
mnmx434 min 0.1 1.0 -> 0.1
mnmx435 min 0.10 0.1 -> 0.10
mnmx436 min 0.100 0.10 -> 0.100
mnmx437 min 0 0.10 -> 0
mnmx438 min 0.0 0 -> 0.0
mnmx439 min -0 0.0 -> -0
mnmx440 min -0.0 0.0 -> -0.0
mnmx441 min -0.0 0.00 -> -0.0
mnmx442 min -0.00 0.0 -> -0.00
mnmx443 min -0.0 0 -> -0.0
mnmx444 min -0 0 -> -0
mnmx445 min -0 -0.0 -> -0
mnmx446 min -0.100 -0 -> -0.100
mnmx447 min -0.10 -0.100 -> -0.10
mnmx448 min -0.1 -0.10 -> -0.1
mnmx449 min -1.0 -0.1 -> -1.0
mnmx450 min -1 -1.0 -> -1
mnmx451 min -1.1 -1 -> -1.1
mnmx453 min -Inf -1.1 -> -Infinity
-- largies
mnmx460 min 1000 1E+3 -> 1000
mnmx461 min 1E+3 1000 -> 1000
mnmx462 min 1000 -1E+3 -> -1E+3
mnmx463 min 1E+3 -1000 -> -1000
mnmx464 min -1000 1E+3 -> -1000
mnmx465 min -1E+3 1000 -> -1E+3
mnmx466 min -1000 -1E+3 -> -1E+3
mnmx467 min -1E+3 -1000 -> -1E+3
-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
mnmx500 min 9.999E+999999999 0 -> 0
mnmx501 min -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded
-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
mnmx510 min 1.00E-999 0 -> 0
mnmx511 min 0.1E-999 0 -> 0
mnmx512 min 0.10E-999 0 -> 0
mnmx513 min 0.100E-999 0 -> 0
mnmx514 min 0.01E-999 0 -> 0
mnmx515 min 0.999E-999 0 -> 0
mnmx516 min 0.099E-999 0 -> 0
mnmx517 min 0.009E-999 0 -> 0
mnmx518 min 0.001E-999 0 -> 0
mnmx519 min 0.0009E-999 0 -> 0
mnmx520 min 0.0001E-999 0 -> 0
mnmx530 min -1.00E-999 0 -> -1.00E-999
mnmx531 min -0.1E-999 0 -> -1E-1000 Subnormal
mnmx532 min -0.10E-999 0 -> -1.0E-1000 Subnormal
mnmx533 min -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded
mnmx534 min -0.01E-999 0 -> -1E-1001 Subnormal
-- next is rounded to Emin
mnmx535 min -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow
mnmx536 min -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
mnmx537 min -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow
mnmx538 min -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow
mnmx539 min -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow
mnmx540 min -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow
-- Null tests
mnm900 min 10 # -> NaN Invalid_operation
mnm901 min # 10 -> NaN Invalid_operation

View file

@ -1,182 +0,0 @@
------------------------------------------------------------------------
-- minus.decTest -- decimal negation --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of tests primarily tests the existence of the operator.
-- Subtraction, rounding, and more overflows are tested elsewhere.
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
minx001 minus '1' -> '-1'
minx002 minus '-1' -> '1'
minx003 minus '1.00' -> '-1.00'
minx004 minus '-1.00' -> '1.00'
minx005 minus '0' -> '0'
minx006 minus '0.00' -> '0.00'
minx007 minus '00.0' -> '0.0'
minx008 minus '00.00' -> '0.00'
minx009 minus '00' -> '0'
minx010 minus '-2' -> '2'
minx011 minus '2' -> '-2'
minx012 minus '-2.00' -> '2.00'
minx013 minus '2.00' -> '-2.00'
minx014 minus '-0' -> '0'
minx015 minus '-0.00' -> '0.00'
minx016 minus '-00.0' -> '0.0'
minx017 minus '-00.00' -> '0.00'
minx018 minus '-00' -> '0'
-- "lhs" zeros in plus and minus have exponent = operand
minx020 minus '-0E3' -> '0E+3'
minx021 minus '-0E2' -> '0E+2'
minx022 minus '-0E1' -> '0E+1'
minx023 minus '-0E0' -> '0'
minx024 minus '+0E0' -> '0'
minx025 minus '+0E1' -> '0E+1'
minx026 minus '+0E2' -> '0E+2'
minx027 minus '+0E3' -> '0E+3'
minx030 minus '-5E3' -> '5E+3'
minx031 minus '-5E8' -> '5E+8'
minx032 minus '-5E13' -> '5E+13'
minx033 minus '-5E18' -> '5E+18'
minx034 minus '+5E3' -> '-5E+3'
minx035 minus '+5E8' -> '-5E+8'
minx036 minus '+5E13' -> '-5E+13'
minx037 minus '+5E18' -> '-5E+18'
minx050 minus '-2000000' -> '2000000'
minx051 minus '2000000' -> '-2000000'
precision: 7
minx052 minus '-2000000' -> '2000000'
minx053 minus '2000000' -> '-2000000'
precision: 6
minx054 minus '-2000000' -> '2.00000E+6' Rounded
minx055 minus '2000000' -> '-2.00000E+6' Rounded
precision: 3
minx056 minus '-2000000' -> '2.00E+6' Rounded
minx057 minus '2000000' -> '-2.00E+6' Rounded
-- more fixed, potential LHS swaps/overlays if done by 0 subtract x
precision: 9
minx060 minus '56267E-10' -> '-0.0000056267'
minx061 minus '56267E-5' -> '-0.56267'
minx062 minus '56267E-2' -> '-562.67'
minx063 minus '56267E-1' -> '-5626.7'
minx065 minus '56267E-0' -> '-56267'
minx066 minus '56267E+0' -> '-56267'
minx067 minus '56267E+1' -> '-5.6267E+5'
minx068 minus '56267E+2' -> '-5.6267E+6'
minx069 minus '56267E+3' -> '-5.6267E+7'
minx070 minus '56267E+4' -> '-5.6267E+8'
minx071 minus '56267E+5' -> '-5.6267E+9'
minx072 minus '56267E+6' -> '-5.6267E+10'
minx080 minus '-56267E-10' -> '0.0000056267'
minx081 minus '-56267E-5' -> '0.56267'
minx082 minus '-56267E-2' -> '562.67'
minx083 minus '-56267E-1' -> '5626.7'
minx085 minus '-56267E-0' -> '56267'
minx086 minus '-56267E+0' -> '56267'
minx087 minus '-56267E+1' -> '5.6267E+5'
minx088 minus '-56267E+2' -> '5.6267E+6'
minx089 minus '-56267E+3' -> '5.6267E+7'
minx090 minus '-56267E+4' -> '5.6267E+8'
minx091 minus '-56267E+5' -> '5.6267E+9'
minx092 minus '-56267E+6' -> '5.6267E+10'
-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
minx100 minus 9.999E+999999999 -> -Infinity Inexact Overflow Rounded
minx101 minus -9.999E+999999999 -> Infinity Inexact Overflow Rounded
-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
minx110 minus 1.00E-999 -> -1.00E-999
minx111 minus 0.1E-999 -> -1E-1000 Subnormal
minx112 minus 0.10E-999 -> -1.0E-1000 Subnormal
minx113 minus 0.100E-999 -> -1.0E-1000 Subnormal Rounded
minx114 minus 0.01E-999 -> -1E-1001 Subnormal
-- next is rounded to Emin
minx115 minus 0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow
minx116 minus 0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
minx117 minus 0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
minx118 minus 0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
minx119 minus 0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
minx120 minus 0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
minx130 minus -1.00E-999 -> 1.00E-999
minx131 minus -0.1E-999 -> 1E-1000 Subnormal
minx132 minus -0.10E-999 -> 1.0E-1000 Subnormal
minx133 minus -0.100E-999 -> 1.0E-1000 Subnormal Rounded
minx134 minus -0.01E-999 -> 1E-1001 Subnormal
-- next is rounded to Emin
minx135 minus -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
minx136 minus -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
minx137 minus -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
minx138 minus -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
minx139 minus -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
minx140 minus -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
minx301 minus 12345678000 -> -1.23456780E+10 Rounded
minx302 minus 1234567800 -> -1.23456780E+9 Rounded
minx303 minus 1234567890 -> -1.23456789E+9 Rounded
minx304 minus 1234567891 -> -1.23456789E+9 Inexact Rounded
minx305 minus 12345678901 -> -1.23456789E+10 Inexact Rounded
minx306 minus 1234567896 -> -1.23456790E+9 Inexact Rounded
precision: 15
-- still checking
minx321 minus 12345678000 -> -12345678000
minx322 minus 1234567800 -> -1234567800
minx323 minus 1234567890 -> -1234567890
minx324 minus 1234567891 -> -1234567891
minx325 minus 12345678901 -> -12345678901
minx326 minus 1234567896 -> -1234567896
-- specials
minx420 minus 'Inf' -> '-Infinity'
minx421 minus '-Inf' -> 'Infinity'
minx422 minus NaN -> NaN
minx423 minus sNaN -> NaN Invalid_operation
minx424 minus NaN255 -> NaN255
minx425 minus sNaN256 -> NaN256 Invalid_operation
minx426 minus -NaN -> -NaN
minx427 minus -sNaN -> -NaN Invalid_operation
minx428 minus -NaN255 -> -NaN255
minx429 minus -sNaN256 -> -NaN256 Invalid_operation
-- Null tests
minx900 minus # -> NaN Invalid_operation

View file

@ -1,651 +0,0 @@
------------------------------------------------------------------------
-- multiply.decTest -- decimal multiplication --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
-- sanity checks (as base, above)
mulx000 multiply 2 2 -> 4
mulx001 multiply 2 3 -> 6
mulx002 multiply 5 1 -> 5
mulx003 multiply 5 2 -> 10
mulx004 multiply 1.20 2 -> 2.40
mulx005 multiply 1.20 0 -> 0.00
mulx006 multiply 1.20 -2 -> -2.40
mulx007 multiply -1.20 2 -> -2.40
mulx008 multiply -1.20 0 -> -0.00
mulx009 multiply -1.20 -2 -> 2.40
mulx010 multiply 5.09 7.1 -> 36.139
mulx011 multiply 2.5 4 -> 10.0
mulx012 multiply 2.50 4 -> 10.00
mulx013 multiply 1.23456789 1.00000000 -> 1.23456789 Rounded
mulx014 multiply 9.999999999 9.999999999 -> 100.000000 Inexact Rounded
mulx015 multiply 2.50 4 -> 10.00
precision: 6
mulx016 multiply 2.50 4 -> 10.00
mulx017 multiply 9.999999999 9.999999999 -> 100.000 Inexact Rounded
-- 1999.12.21: next one is a edge case if intermediate longs are used
precision: 15
mulx019 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded
precision: 30
mulx160 multiply 999999999999 9765625 -> 9765624999990234375
precision: 9
-----
-- zeros, etc.
mulx020 multiply 0 0 -> 0
mulx021 multiply 0 -0 -> -0
mulx022 multiply -0 0 -> -0
mulx023 multiply -0 -0 -> 0
mulx030 multiply 5.00 1E-3 -> 0.00500
mulx031 multiply 00.00 0.000 -> 0.00000
mulx032 multiply 00.00 0E-3 -> 0.00000 -- rhs is 0
mulx033 multiply 0E-3 00.00 -> 0.00000 -- lhs is 0
mulx034 multiply -5.00 1E-3 -> -0.00500
mulx035 multiply -00.00 0.000 -> -0.00000
mulx036 multiply -00.00 0E-3 -> -0.00000 -- rhs is 0
mulx037 multiply -0E-3 00.00 -> -0.00000 -- lhs is 0
mulx038 multiply 5.00 -1E-3 -> -0.00500
mulx039 multiply 00.00 -0.000 -> -0.00000
mulx040 multiply 00.00 -0E-3 -> -0.00000 -- rhs is 0
mulx041 multiply 0E-3 -00.00 -> -0.00000 -- lhs is 0
mulx042 multiply -5.00 -1E-3 -> 0.00500
mulx043 multiply -00.00 -0.000 -> 0.00000
mulx044 multiply -00.00 -0E-3 -> 0.00000 -- rhs is 0
mulx045 multiply -0E-3 -00.00 -> 0.00000 -- lhs is 0
-- examples from decarith
mulx050 multiply 1.20 3 -> 3.60
mulx051 multiply 7 3 -> 21
mulx052 multiply 0.9 0.8 -> 0.72
mulx053 multiply 0.9 -0 -> -0.0
mulx054 multiply 654321 654321 -> 4.28135971E+11 Inexact Rounded
mulx060 multiply 123.45 1e7 -> 1.2345E+9
mulx061 multiply 123.45 1e8 -> 1.2345E+10
mulx062 multiply 123.45 1e+9 -> 1.2345E+11
mulx063 multiply 123.45 1e10 -> 1.2345E+12
mulx064 multiply 123.45 1e11 -> 1.2345E+13
mulx065 multiply 123.45 1e12 -> 1.2345E+14
mulx066 multiply 123.45 1e13 -> 1.2345E+15
-- test some intermediate lengths
precision: 9
mulx080 multiply 0.1 123456789 -> 12345678.9
mulx081 multiply 0.1 1234567891 -> 123456789 Inexact Rounded
mulx082 multiply 0.1 12345678912 -> 1.23456789E+9 Inexact Rounded
mulx083 multiply 0.1 12345678912345 -> 1.23456789E+12 Inexact Rounded
mulx084 multiply 0.1 123456789 -> 12345678.9
precision: 8
mulx085 multiply 0.1 12345678912 -> 1.2345679E+9 Inexact Rounded
mulx086 multiply 0.1 12345678912345 -> 1.2345679E+12 Inexact Rounded
precision: 7
mulx087 multiply 0.1 12345678912 -> 1.234568E+9 Inexact Rounded
mulx088 multiply 0.1 12345678912345 -> 1.234568E+12 Inexact Rounded
precision: 9
mulx090 multiply 123456789 0.1 -> 12345678.9
mulx091 multiply 1234567891 0.1 -> 123456789 Inexact Rounded
mulx092 multiply 12345678912 0.1 -> 1.23456789E+9 Inexact Rounded
mulx093 multiply 12345678912345 0.1 -> 1.23456789E+12 Inexact Rounded
mulx094 multiply 123456789 0.1 -> 12345678.9
precision: 8
mulx095 multiply 12345678912 0.1 -> 1.2345679E+9 Inexact Rounded
mulx096 multiply 12345678912345 0.1 -> 1.2345679E+12 Inexact Rounded
precision: 7
mulx097 multiply 12345678912 0.1 -> 1.234568E+9 Inexact Rounded
mulx098 multiply 12345678912345 0.1 -> 1.234568E+12 Inexact Rounded
-- test some more edge cases and carries
maxexponent: 9999
minexponent: -9999
precision: 33
mulx101 multiply 9 9 -> 81
mulx102 multiply 9 90 -> 810
mulx103 multiply 9 900 -> 8100
mulx104 multiply 9 9000 -> 81000
mulx105 multiply 9 90000 -> 810000
mulx106 multiply 9 900000 -> 8100000
mulx107 multiply 9 9000000 -> 81000000
mulx108 multiply 9 90000000 -> 810000000
mulx109 multiply 9 900000000 -> 8100000000
mulx110 multiply 9 9000000000 -> 81000000000
mulx111 multiply 9 90000000000 -> 810000000000
mulx112 multiply 9 900000000000 -> 8100000000000
mulx113 multiply 9 9000000000000 -> 81000000000000
mulx114 multiply 9 90000000000000 -> 810000000000000
mulx115 multiply 9 900000000000000 -> 8100000000000000
mulx116 multiply 9 9000000000000000 -> 81000000000000000
mulx117 multiply 9 90000000000000000 -> 810000000000000000
mulx118 multiply 9 900000000000000000 -> 8100000000000000000
mulx119 multiply 9 9000000000000000000 -> 81000000000000000000
mulx120 multiply 9 90000000000000000000 -> 810000000000000000000
mulx121 multiply 9 900000000000000000000 -> 8100000000000000000000
mulx122 multiply 9 9000000000000000000000 -> 81000000000000000000000
mulx123 multiply 9 90000000000000000000000 -> 810000000000000000000000
-- test some more edge cases without carries
mulx131 multiply 3 3 -> 9
mulx132 multiply 3 30 -> 90
mulx133 multiply 3 300 -> 900
mulx134 multiply 3 3000 -> 9000
mulx135 multiply 3 30000 -> 90000
mulx136 multiply 3 300000 -> 900000
mulx137 multiply 3 3000000 -> 9000000
mulx138 multiply 3 30000000 -> 90000000
mulx139 multiply 3 300000000 -> 900000000
mulx140 multiply 3 3000000000 -> 9000000000
mulx141 multiply 3 30000000000 -> 90000000000
mulx142 multiply 3 300000000000 -> 900000000000
mulx143 multiply 3 3000000000000 -> 9000000000000
mulx144 multiply 3 30000000000000 -> 90000000000000
mulx145 multiply 3 300000000000000 -> 900000000000000
mulx146 multiply 3 3000000000000000 -> 9000000000000000
mulx147 multiply 3 30000000000000000 -> 90000000000000000
mulx148 multiply 3 300000000000000000 -> 900000000000000000
mulx149 multiply 3 3000000000000000000 -> 9000000000000000000
mulx150 multiply 3 30000000000000000000 -> 90000000000000000000
mulx151 multiply 3 300000000000000000000 -> 900000000000000000000
mulx152 multiply 3 3000000000000000000000 -> 9000000000000000000000
mulx153 multiply 3 30000000000000000000000 -> 90000000000000000000000
maxexponent: 999999999
minexponent: -999999999
precision: 9
-- test some cases that are close to exponent overflow/underflow
mulx170 multiply 1 9e999999999 -> 9E+999999999
mulx171 multiply 1 9.9e999999999 -> 9.9E+999999999
mulx172 multiply 1 9.99e999999999 -> 9.99E+999999999
mulx173 multiply 9e999999999 1 -> 9E+999999999
mulx174 multiply 9.9e999999999 1 -> 9.9E+999999999
mulx176 multiply 9.99e999999999 1 -> 9.99E+999999999
mulx177 multiply 1 9.99999999e999999999 -> 9.99999999E+999999999
mulx178 multiply 9.99999999e999999999 1 -> 9.99999999E+999999999
mulx180 multiply 0.1 9e-999999998 -> 9E-999999999
mulx181 multiply 0.1 99e-999999998 -> 9.9E-999999998
mulx182 multiply 0.1 999e-999999998 -> 9.99E-999999997
mulx183 multiply 0.1 9e-999999998 -> 9E-999999999
mulx184 multiply 0.1 99e-999999998 -> 9.9E-999999998
mulx185 multiply 0.1 999e-999999998 -> 9.99E-999999997
mulx186 multiply 0.1 999e-999999997 -> 9.99E-999999996
mulx187 multiply 0.1 9999e-999999997 -> 9.999E-999999995
mulx188 multiply 0.1 99999e-999999997 -> 9.9999E-999999994
mulx190 multiply 1 9e-999999998 -> 9E-999999998
mulx191 multiply 1 99e-999999998 -> 9.9E-999999997
mulx192 multiply 1 999e-999999998 -> 9.99E-999999996
mulx193 multiply 9e-999999998 1 -> 9E-999999998
mulx194 multiply 99e-999999998 1 -> 9.9E-999999997
mulx195 multiply 999e-999999998 1 -> 9.99E-999999996
mulx196 multiply 1e-599999999 1e-400000000 -> 1E-999999999
mulx197 multiply 1e-600000000 1e-399999999 -> 1E-999999999
mulx198 multiply 1.2e-599999999 1.2e-400000000 -> 1.44E-999999999
mulx199 multiply 1.2e-600000000 1.2e-399999999 -> 1.44E-999999999
mulx201 multiply 1e599999999 1e400000000 -> 1E+999999999
mulx202 multiply 1e600000000 1e399999999 -> 1E+999999999
mulx203 multiply 1.2e599999999 1.2e400000000 -> 1.44E+999999999
mulx204 multiply 1.2e600000000 1.2e399999999 -> 1.44E+999999999
-- long operand triangle
precision: 33
mulx246 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511992830 Inexact Rounded
precision: 32
mulx247 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199283 Inexact Rounded
precision: 31
mulx248 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928 Inexact Rounded
precision: 30
mulx249 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511993 Inexact Rounded
precision: 29
mulx250 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199 Inexact Rounded
precision: 28
mulx251 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165120 Inexact Rounded
precision: 27
mulx252 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916512 Inexact Rounded
precision: 26
mulx253 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651 Inexact Rounded
precision: 25
mulx254 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165 Inexact Rounded
precision: 24
mulx255 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671917 Inexact Rounded
precision: 23
mulx256 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967192 Inexact Rounded
precision: 22
mulx257 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719 Inexact Rounded
precision: 21
mulx258 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369672 Inexact Rounded
precision: 20
mulx259 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967 Inexact Rounded
precision: 19
mulx260 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933697 Inexact Rounded
precision: 18
mulx261 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193370 Inexact Rounded
precision: 17
mulx262 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119337 Inexact Rounded
precision: 16
mulx263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011934 Inexact Rounded
precision: 15
mulx264 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193 Inexact Rounded
precision: 14
mulx265 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119 Inexact Rounded
precision: 13
mulx266 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908012 Inexact Rounded
precision: 12
mulx267 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801 Inexact Rounded
precision: 11
mulx268 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080 Inexact Rounded
precision: 10
mulx269 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908 Inexact Rounded
precision: 9
mulx270 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.291 Inexact Rounded
precision: 8
mulx271 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29 Inexact Rounded
precision: 7
mulx272 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.3 Inexact Rounded
precision: 6
mulx273 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433 Inexact Rounded
precision: 5
mulx274 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.4543E+5 Inexact Rounded
precision: 4
mulx275 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.454E+5 Inexact Rounded
precision: 3
mulx276 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.45E+5 Inexact Rounded
precision: 2
mulx277 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.5E+5 Inexact Rounded
precision: 1
mulx278 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1E+5 Inexact Rounded
-- tryzeros cases
precision: 7
rounding: half_up
maxExponent: 92
minexponent: -92
mulx504 multiply 0E-60 1000E-60 -> 0E-98 Clamped
mulx505 multiply 100E+60 0E+60 -> 0E+92 Clamped
-- mixed with zeros
maxexponent: 999999999
minexponent: -999999999
precision: 9
mulx541 multiply 0 -1 -> -0
mulx542 multiply -0 -1 -> 0
mulx543 multiply 0 1 -> 0
mulx544 multiply -0 1 -> -0
mulx545 multiply -1 0 -> -0
mulx546 multiply -1 -0 -> 0
mulx547 multiply 1 0 -> 0
mulx548 multiply 1 -0 -> -0
mulx551 multiply 0.0 -1 -> -0.0
mulx552 multiply -0.0 -1 -> 0.0
mulx553 multiply 0.0 1 -> 0.0
mulx554 multiply -0.0 1 -> -0.0
mulx555 multiply -1.0 0 -> -0.0
mulx556 multiply -1.0 -0 -> 0.0
mulx557 multiply 1.0 0 -> 0.0
mulx558 multiply 1.0 -0 -> -0.0
mulx561 multiply 0 -1.0 -> -0.0
mulx562 multiply -0 -1.0 -> 0.0
mulx563 multiply 0 1.0 -> 0.0
mulx564 multiply -0 1.0 -> -0.0
mulx565 multiply -1 0.0 -> -0.0
mulx566 multiply -1 -0.0 -> 0.0
mulx567 multiply 1 0.0 -> 0.0
mulx568 multiply 1 -0.0 -> -0.0
mulx571 multiply 0.0 -1.0 -> -0.00
mulx572 multiply -0.0 -1.0 -> 0.00
mulx573 multiply 0.0 1.0 -> 0.00
mulx574 multiply -0.0 1.0 -> -0.00
mulx575 multiply -1.0 0.0 -> -0.00
mulx576 multiply -1.0 -0.0 -> 0.00
mulx577 multiply 1.0 0.0 -> 0.00
mulx578 multiply 1.0 -0.0 -> -0.00
-- Specials
mulx580 multiply Inf -Inf -> -Infinity
mulx581 multiply Inf -1000 -> -Infinity
mulx582 multiply Inf -1 -> -Infinity
mulx583 multiply Inf -0 -> NaN Invalid_operation
mulx584 multiply Inf 0 -> NaN Invalid_operation
mulx585 multiply Inf 1 -> Infinity
mulx586 multiply Inf 1000 -> Infinity
mulx587 multiply Inf Inf -> Infinity
mulx588 multiply -1000 Inf -> -Infinity
mulx589 multiply -Inf Inf -> -Infinity
mulx590 multiply -1 Inf -> -Infinity
mulx591 multiply -0 Inf -> NaN Invalid_operation
mulx592 multiply 0 Inf -> NaN Invalid_operation
mulx593 multiply 1 Inf -> Infinity
mulx594 multiply 1000 Inf -> Infinity
mulx595 multiply Inf Inf -> Infinity
mulx600 multiply -Inf -Inf -> Infinity
mulx601 multiply -Inf -1000 -> Infinity
mulx602 multiply -Inf -1 -> Infinity
mulx603 multiply -Inf -0 -> NaN Invalid_operation
mulx604 multiply -Inf 0 -> NaN Invalid_operation
mulx605 multiply -Inf 1 -> -Infinity
mulx606 multiply -Inf 1000 -> -Infinity
mulx607 multiply -Inf Inf -> -Infinity
mulx608 multiply -1000 Inf -> -Infinity
mulx609 multiply -Inf -Inf -> Infinity
mulx610 multiply -1 -Inf -> Infinity
mulx611 multiply -0 -Inf -> NaN Invalid_operation
mulx612 multiply 0 -Inf -> NaN Invalid_operation
mulx613 multiply 1 -Inf -> -Infinity
mulx614 multiply 1000 -Inf -> -Infinity
mulx615 multiply Inf -Inf -> -Infinity
mulx621 multiply NaN -Inf -> NaN
mulx622 multiply NaN -1000 -> NaN
mulx623 multiply NaN -1 -> NaN
mulx624 multiply NaN -0 -> NaN
mulx625 multiply NaN 0 -> NaN
mulx626 multiply NaN 1 -> NaN
mulx627 multiply NaN 1000 -> NaN
mulx628 multiply NaN Inf -> NaN
mulx629 multiply NaN NaN -> NaN
mulx630 multiply -Inf NaN -> NaN
mulx631 multiply -1000 NaN -> NaN
mulx632 multiply -1 NaN -> NaN
mulx633 multiply -0 NaN -> NaN
mulx634 multiply 0 NaN -> NaN
mulx635 multiply 1 NaN -> NaN
mulx636 multiply 1000 NaN -> NaN
mulx637 multiply Inf NaN -> NaN
mulx641 multiply sNaN -Inf -> NaN Invalid_operation
mulx642 multiply sNaN -1000 -> NaN Invalid_operation
mulx643 multiply sNaN -1 -> NaN Invalid_operation
mulx644 multiply sNaN -0 -> NaN Invalid_operation
mulx645 multiply sNaN 0 -> NaN Invalid_operation
mulx646 multiply sNaN 1 -> NaN Invalid_operation
mulx647 multiply sNaN 1000 -> NaN Invalid_operation
mulx648 multiply sNaN NaN -> NaN Invalid_operation
mulx649 multiply sNaN sNaN -> NaN Invalid_operation
mulx650 multiply NaN sNaN -> NaN Invalid_operation
mulx651 multiply -Inf sNaN -> NaN Invalid_operation
mulx652 multiply -1000 sNaN -> NaN Invalid_operation
mulx653 multiply -1 sNaN -> NaN Invalid_operation
mulx654 multiply -0 sNaN -> NaN Invalid_operation
mulx655 multiply 0 sNaN -> NaN Invalid_operation
mulx656 multiply 1 sNaN -> NaN Invalid_operation
mulx657 multiply 1000 sNaN -> NaN Invalid_operation
mulx658 multiply Inf sNaN -> NaN Invalid_operation
mulx659 multiply NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
mulx661 multiply NaN9 -Inf -> NaN9
mulx662 multiply NaN8 999 -> NaN8
mulx663 multiply NaN71 Inf -> NaN71
mulx664 multiply NaN6 NaN5 -> NaN6
mulx665 multiply -Inf NaN4 -> NaN4
mulx666 multiply -999 NaN33 -> NaN33
mulx667 multiply Inf NaN2 -> NaN2
mulx671 multiply sNaN99 -Inf -> NaN99 Invalid_operation
mulx672 multiply sNaN98 -11 -> NaN98 Invalid_operation
mulx673 multiply sNaN97 NaN -> NaN97 Invalid_operation
mulx674 multiply sNaN16 sNaN94 -> NaN16 Invalid_operation
mulx675 multiply NaN95 sNaN93 -> NaN93 Invalid_operation
mulx676 multiply -Inf sNaN92 -> NaN92 Invalid_operation
mulx677 multiply 088 sNaN91 -> NaN91 Invalid_operation
mulx678 multiply Inf sNaN90 -> NaN90 Invalid_operation
mulx679 multiply NaN sNaN89 -> NaN89 Invalid_operation
mulx681 multiply -NaN9 -Inf -> -NaN9
mulx682 multiply -NaN8 999 -> -NaN8
mulx683 multiply -NaN71 Inf -> -NaN71
mulx684 multiply -NaN6 -NaN5 -> -NaN6
mulx685 multiply -Inf -NaN4 -> -NaN4
mulx686 multiply -999 -NaN33 -> -NaN33
mulx687 multiply Inf -NaN2 -> -NaN2
mulx691 multiply -sNaN99 -Inf -> -NaN99 Invalid_operation
mulx692 multiply -sNaN98 -11 -> -NaN98 Invalid_operation
mulx693 multiply -sNaN97 NaN -> -NaN97 Invalid_operation
mulx694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
mulx695 multiply -NaN95 -sNaN93 -> -NaN93 Invalid_operation
mulx696 multiply -Inf -sNaN92 -> -NaN92 Invalid_operation
mulx697 multiply 088 -sNaN91 -> -NaN91 Invalid_operation
mulx698 multiply Inf -sNaN90 -> -NaN90 Invalid_operation
mulx699 multiply -NaN -sNaN89 -> -NaN89 Invalid_operation
mulx701 multiply -NaN -Inf -> -NaN
mulx702 multiply -NaN 999 -> -NaN
mulx703 multiply -NaN Inf -> -NaN
mulx704 multiply -NaN -NaN -> -NaN
mulx705 multiply -Inf -NaN0 -> -NaN
mulx706 multiply -999 -NaN -> -NaN
mulx707 multiply Inf -NaN -> -NaN
mulx711 multiply -sNaN -Inf -> -NaN Invalid_operation
mulx712 multiply -sNaN -11 -> -NaN Invalid_operation
mulx713 multiply -sNaN00 NaN -> -NaN Invalid_operation
mulx714 multiply -sNaN -sNaN -> -NaN Invalid_operation
mulx715 multiply -NaN -sNaN -> -NaN Invalid_operation
mulx716 multiply -Inf -sNaN -> -NaN Invalid_operation
mulx717 multiply 088 -sNaN -> -NaN Invalid_operation
mulx718 multiply Inf -sNaN -> -NaN Invalid_operation
mulx719 multiply -NaN -sNaN -> -NaN Invalid_operation
-- overflow and underflow tests .. note subnormal results
maxexponent: 999999999
minexponent: -999999999
mulx730 multiply +1.23456789012345E-0 9E+999999999 -> Infinity Inexact Overflow Rounded
mulx731 multiply 9E+999999999 +1.23456789012345E-0 -> Infinity Inexact Overflow Rounded
mulx732 multiply +0.100 9E-999999999 -> 9.00E-1000000000 Subnormal
mulx733 multiply 9E-999999999 +0.100 -> 9.00E-1000000000 Subnormal
mulx735 multiply -1.23456789012345E-0 9E+999999999 -> -Infinity Inexact Overflow Rounded
mulx736 multiply 9E+999999999 -1.23456789012345E-0 -> -Infinity Inexact Overflow Rounded
mulx737 multiply -0.100 9E-999999999 -> -9.00E-1000000000 Subnormal
mulx738 multiply 9E-999999999 -0.100 -> -9.00E-1000000000 Subnormal
mulx739 multiply 1e-599999999 1e-400000001 -> 1E-1000000000 Subnormal
mulx740 multiply 1e-599999999 1e-400000000 -> 1E-999999999
mulx741 multiply 1e-600000000 1e-400000000 -> 1E-1000000000 Subnormal
mulx742 multiply 9e-999999998 0.01 -> 9E-1000000000 Subnormal
mulx743 multiply 9e-999999998 0.1 -> 9E-999999999
mulx744 multiply 0.01 9e-999999998 -> 9E-1000000000 Subnormal
mulx745 multiply 1e599999999 1e400000001 -> Infinity Overflow Inexact Rounded
mulx746 multiply 1e599999999 1e400000000 -> 1E+999999999
mulx747 multiply 1e600000000 1e400000000 -> Infinity Overflow Inexact Rounded
mulx748 multiply 9e999999998 100 -> Infinity Overflow Inexact Rounded
mulx749 multiply 9e999999998 10 -> 9.0E+999999999
mulx750 multiply 100 9e999999998 -> Infinity Overflow Inexact Rounded
-- signs
mulx751 multiply 1e+777777777 1e+411111111 -> Infinity Overflow Inexact Rounded
mulx752 multiply 1e+777777777 -1e+411111111 -> -Infinity Overflow Inexact Rounded
mulx753 multiply -1e+777777777 1e+411111111 -> -Infinity Overflow Inexact Rounded
mulx754 multiply -1e+777777777 -1e+411111111 -> Infinity Overflow Inexact Rounded
mulx755 multiply 1e-777777777 1e-411111111 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
mulx756 multiply 1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
mulx757 multiply -1e-777777777 1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
mulx758 multiply -1e-777777777 -1e-411111111 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
precision: 9
mulx760 multiply 1e-600000000 1e-400000001 -> 1E-1000000001 Subnormal
mulx761 multiply 1e-600000000 1e-400000002 -> 1E-1000000002 Subnormal
mulx762 multiply 1e-600000000 1e-400000003 -> 1E-1000000003 Subnormal
mulx763 multiply 1e-600000000 1e-400000004 -> 1E-1000000004 Subnormal
mulx764 multiply 1e-600000000 1e-400000005 -> 1E-1000000005 Subnormal
mulx765 multiply 1e-600000000 1e-400000006 -> 1E-1000000006 Subnormal
mulx766 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-- [no equivalent of 'subnormal' for overflow]
mulx770 multiply 1e+600000000 1e+400000001 -> Infinity Overflow Inexact Rounded
mulx771 multiply 1e+600000000 1e+400000002 -> Infinity Overflow Inexact Rounded
mulx772 multiply 1e+600000000 1e+400000003 -> Infinity Overflow Inexact Rounded
mulx773 multiply 1e+600000000 1e+400000004 -> Infinity Overflow Inexact Rounded
mulx774 multiply 1e+600000000 1e+400000005 -> Infinity Overflow Inexact Rounded
mulx775 multiply 1e+600000000 1e+400000006 -> Infinity Overflow Inexact Rounded
mulx776 multiply 1e+600000000 1e+400000007 -> Infinity Overflow Inexact Rounded
mulx777 multiply 1e+600000000 1e+400000008 -> Infinity Overflow Inexact Rounded
mulx778 multiply 1e+600000000 1e+400000009 -> Infinity Overflow Inexact Rounded
mulx779 multiply 1e+600000000 1e+400000010 -> Infinity Overflow Inexact Rounded
-- 'subnormal' test edge condition at higher precisions
precision: 99
mulx780 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
mulx781 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
mulx782 multiply 1e-600000000 1e-400000097 -> 1E-1000000097 Subnormal
mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded
precision: 999
mulx784 multiply 1e-600000000 1e-400000997 -> 1E-1000000997 Subnormal
mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded
-- following testcases [through mulx800] not yet run against code
precision: 9999
mulx786 multiply 1e-600000000 1e-400009997 -> 1E-1000009997 Subnormal
mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded
precision: 99999
mulx788 multiply 1e-600000000 1e-400099997 -> 1E-1000099997 Subnormal
mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded
precision: 999999
mulx790 multiply 1e-600000000 1e-400999997 -> 1E-1000999997 Subnormal
mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded
precision: 9999999
mulx792 multiply 1e-600000000 1e-409999997 -> 1E-1009999997 Subnormal
mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded
precision: 99999999
mulx794 multiply 1e-600000000 1e-499999997 -> 1E-1099999997 Subnormal
mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded
precision: 999999999
mulx796 multiply 1e-999999999 1e-999999997 -> 1E-1999999996 Subnormal
mulx797 multiply 1e-999999999 1e-999999998 -> 1E-1999999997 Subnormal
mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded
mulx799 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
mulx800 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
-- test subnormals rounding
precision: 5
maxExponent: 999
minexponent: -999
rounding: half_even
mulx801 multiply 1.0000E-999 1 -> 1.0000E-999
mulx802 multiply 1.000E-999 1e-1 -> 1.000E-1000 Subnormal
mulx803 multiply 1.00E-999 1e-2 -> 1.00E-1001 Subnormal
mulx804 multiply 1.0E-999 1e-3 -> 1.0E-1002 Subnormal
mulx805 multiply 1.0E-999 1e-4 -> 1E-1003 Subnormal Rounded
mulx806 multiply 1.3E-999 1e-4 -> 1E-1003 Underflow Subnormal Inexact Rounded
mulx807 multiply 1.5E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
mulx808 multiply 1.7E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
mulx809 multiply 2.3E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
mulx810 multiply 2.5E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
mulx811 multiply 2.7E-999 1e-4 -> 3E-1003 Underflow Subnormal Inexact Rounded
mulx812 multiply 1.49E-999 1e-4 -> 1E-1003 Underflow Subnormal Inexact Rounded
mulx813 multiply 1.50E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
mulx814 multiply 1.51E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
mulx815 multiply 2.49E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
mulx816 multiply 2.50E-999 1e-4 -> 2E-1003 Underflow Subnormal Inexact Rounded
mulx817 multiply 2.51E-999 1e-4 -> 3E-1003 Underflow Subnormal Inexact Rounded
mulx818 multiply 1E-999 1e-4 -> 1E-1003 Subnormal
mulx819 multiply 3E-999 1e-5 -> 0E-1003 Underflow Subnormal Inexact Rounded
mulx820 multiply 5E-999 1e-5 -> 0E-1003 Underflow Subnormal Inexact Rounded
mulx821 multiply 7E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded
mulx822 multiply 9E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded
mulx823 multiply 9.9E-999 1e-5 -> 1E-1003 Underflow Subnormal Inexact Rounded
mulx824 multiply 1E-999 -1e-4 -> -1E-1003 Subnormal
mulx825 multiply 3E-999 -1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded
mulx826 multiply -5E-999 1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded
mulx827 multiply 7E-999 -1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded
mulx828 multiply -9E-999 1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded
mulx829 multiply 9.9E-999 -1e-5 -> -1E-1003 Underflow Subnormal Inexact Rounded
mulx830 multiply 3.0E-999 -1e-5 -> -0E-1003 Underflow Subnormal Inexact Rounded
mulx831 multiply 1.0E-501 1e-501 -> 1.0E-1002 Subnormal
mulx832 multiply 2.0E-501 2e-501 -> 4.0E-1002 Subnormal
mulx833 multiply 4.0E-501 4e-501 -> 1.60E-1001 Subnormal
mulx834 multiply 10.0E-501 10e-501 -> 1.000E-1000 Subnormal
mulx835 multiply 30.0E-501 30e-501 -> 9.000E-1000 Subnormal
mulx836 multiply 40.0E-501 40e-501 -> 1.6000E-999
-- squares
mulx840 multiply 1E-502 1e-502 -> 0E-1003 Underflow Subnormal Inexact Rounded
mulx841 multiply 1E-501 1e-501 -> 1E-1002 Subnormal
mulx842 multiply 2E-501 2e-501 -> 4E-1002 Subnormal
mulx843 multiply 4E-501 4e-501 -> 1.6E-1001 Subnormal
mulx844 multiply 10E-501 10e-501 -> 1.00E-1000 Subnormal
mulx845 multiply 30E-501 30e-501 -> 9.00E-1000 Subnormal
mulx846 multiply 40E-501 40e-501 -> 1.600E-999
-- cubes
mulx850 multiply 1E-670 1e-335 -> 0E-1003 Underflow Subnormal Inexact Rounded
mulx851 multiply 1E-668 1e-334 -> 1E-1002 Subnormal
mulx852 multiply 4E-668 2e-334 -> 8E-1002 Subnormal
mulx853 multiply 9E-668 3e-334 -> 2.7E-1001 Subnormal
mulx854 multiply 16E-668 4e-334 -> 6.4E-1001 Subnormal
mulx855 multiply 25E-668 5e-334 -> 1.25E-1000 Subnormal
mulx856 multiply 10E-668 100e-334 -> 1.000E-999
-- test from 0.099 ** 999 at 15 digits
precision: 19
mulx860 multiply 6636851557994578716E-520 6636851557994578716E-520 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded
-- Long operand overflow may be a different path
precision: 3
maxExponent: 999999999
minexponent: -999999999
mulx870 multiply 1 9.999E+999999999 -> Infinity Inexact Overflow Rounded
mulx871 multiply 1 -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
mulx872 multiply 9.999E+999999999 1 -> Infinity Inexact Overflow Rounded
mulx873 multiply -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
-- check for double-rounded subnormals
precision: 5
maxexponent: 79
minexponent: -79
mulx881 multiply 1.2347E-40 1.2347E-40 -> 1.524E-80 Inexact Rounded Subnormal Underflow
mulx882 multiply 1.234E-40 1.234E-40 -> 1.523E-80 Inexact Rounded Subnormal Underflow
mulx883 multiply 1.23E-40 1.23E-40 -> 1.513E-80 Inexact Rounded Subnormal Underflow
mulx884 multiply 1.2E-40 1.2E-40 -> 1.44E-80 Subnormal
mulx885 multiply 1.2E-40 1.2E-41 -> 1.44E-81 Subnormal
mulx886 multiply 1.2E-40 1.2E-42 -> 1.4E-82 Subnormal Inexact Rounded Underflow
mulx887 multiply 1.2E-40 1.3E-42 -> 1.6E-82 Subnormal Inexact Rounded Underflow
mulx888 multiply 1.3E-40 1.3E-42 -> 1.7E-82 Subnormal Inexact Rounded Underflow
mulx891 multiply 1.2345E-39 1.234E-40 -> 1.5234E-79 Inexact Rounded
mulx892 multiply 1.23456E-39 1.234E-40 -> 1.5234E-79 Inexact Rounded
mulx893 multiply 1.2345E-40 1.234E-40 -> 1.523E-80 Inexact Rounded Subnormal Underflow
mulx894 multiply 1.23456E-40 1.234E-40 -> 1.523E-80 Inexact Rounded Subnormal Underflow
mulx895 multiply 1.2345E-41 1.234E-40 -> 1.52E-81 Inexact Rounded Subnormal Underflow
mulx896 multiply 1.23456E-41 1.234E-40 -> 1.52E-81 Inexact Rounded Subnormal Underflow
-- Null tests
mulx900 multiply 10 # -> NaN Invalid_operation
mulx901 multiply # 10 -> NaN Invalid_operation

View file

@ -1,225 +0,0 @@
------------------------------------------------------------------------
-- normalize.decTest -- remove trailing zeros --
-- Copyright (c) IBM Corporation, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
nrmx001 normalize '1' -> '1'
nrmx002 normalize '-1' -> '-1'
nrmx003 normalize '1.00' -> '1'
nrmx004 normalize '-1.00' -> '-1'
nrmx005 normalize '0' -> '0'
nrmx006 normalize '0.00' -> '0'
nrmx007 normalize '00.0' -> '0'
nrmx008 normalize '00.00' -> '0'
nrmx009 normalize '00' -> '0'
nrmx010 normalize '0E+1' -> '0'
nrmx011 normalize '0E+5' -> '0'
nrmx012 normalize '-2' -> '-2'
nrmx013 normalize '2' -> '2'
nrmx014 normalize '-2.00' -> '-2'
nrmx015 normalize '2.00' -> '2'
nrmx016 normalize '-0' -> '-0'
nrmx017 normalize '-0.00' -> '-0'
nrmx018 normalize '-00.0' -> '-0'
nrmx019 normalize '-00.00' -> '-0'
nrmx020 normalize '-00' -> '-0'
nrmx021 normalize '-0E+5' -> '-0'
nrmx022 normalize '-0E+1' -> '-0'
nrmx030 normalize '+0.1' -> '0.1'
nrmx031 normalize '-0.1' -> '-0.1'
nrmx032 normalize '+0.01' -> '0.01'
nrmx033 normalize '-0.01' -> '-0.01'
nrmx034 normalize '+0.001' -> '0.001'
nrmx035 normalize '-0.001' -> '-0.001'
nrmx036 normalize '+0.000001' -> '0.000001'
nrmx037 normalize '-0.000001' -> '-0.000001'
nrmx038 normalize '+0.000000000001' -> '1E-12'
nrmx039 normalize '-0.000000000001' -> '-1E-12'
nrmx041 normalize 1.1 -> 1.1
nrmx042 normalize 1.10 -> 1.1
nrmx043 normalize 1.100 -> 1.1
nrmx044 normalize 1.110 -> 1.11
nrmx045 normalize -1.1 -> -1.1
nrmx046 normalize -1.10 -> -1.1
nrmx047 normalize -1.100 -> -1.1
nrmx048 normalize -1.110 -> -1.11
nrmx049 normalize 9.9 -> 9.9
nrmx050 normalize 9.90 -> 9.9
nrmx051 normalize 9.900 -> 9.9
nrmx052 normalize 9.990 -> 9.99
nrmx053 normalize -9.9 -> -9.9
nrmx054 normalize -9.90 -> -9.9
nrmx055 normalize -9.900 -> -9.9
nrmx056 normalize -9.990 -> -9.99
-- some trailing fractional zeros with zeros in units
nrmx060 normalize 10.0 -> 1E+1
nrmx061 normalize 10.00 -> 1E+1
nrmx062 normalize 100.0 -> 1E+2
nrmx063 normalize 100.00 -> 1E+2
nrmx064 normalize 1.1000E+3 -> 1.1E+3
nrmx065 normalize 1.10000E+3 -> 1.1E+3
nrmx066 normalize -10.0 -> -1E+1
nrmx067 normalize -10.00 -> -1E+1
nrmx068 normalize -100.0 -> -1E+2
nrmx069 normalize -100.00 -> -1E+2
nrmx070 normalize -1.1000E+3 -> -1.1E+3
nrmx071 normalize -1.10000E+3 -> -1.1E+3
-- some insignificant trailing zeros with positive exponent
nrmx080 normalize 10E+1 -> 1E+2
nrmx081 normalize 100E+1 -> 1E+3
nrmx082 normalize 1.0E+2 -> 1E+2
nrmx083 normalize 1.0E+3 -> 1E+3
nrmx084 normalize 1.1E+3 -> 1.1E+3
nrmx085 normalize 1.00E+3 -> 1E+3
nrmx086 normalize 1.10E+3 -> 1.1E+3
nrmx087 normalize -10E+1 -> -1E+2
nrmx088 normalize -100E+1 -> -1E+3
nrmx089 normalize -1.0E+2 -> -1E+2
nrmx090 normalize -1.0E+3 -> -1E+3
nrmx091 normalize -1.1E+3 -> -1.1E+3
nrmx092 normalize -1.00E+3 -> -1E+3
nrmx093 normalize -1.10E+3 -> -1.1E+3
-- some significant trailing zeros, were we to be trimming
nrmx100 normalize 11 -> 11
nrmx101 normalize 10 -> 1E+1
nrmx102 normalize 10. -> 1E+1
nrmx103 normalize 1.1E+1 -> 11
nrmx104 normalize 1.0E+1 -> 1E+1
nrmx105 normalize 1.10E+2 -> 1.1E+2
nrmx106 normalize 1.00E+2 -> 1E+2
nrmx107 normalize 1.100E+3 -> 1.1E+3
nrmx108 normalize 1.000E+3 -> 1E+3
nrmx109 normalize 1.000000E+6 -> 1E+6
nrmx110 normalize -11 -> -11
nrmx111 normalize -10 -> -1E+1
nrmx112 normalize -10. -> -1E+1
nrmx113 normalize -1.1E+1 -> -11
nrmx114 normalize -1.0E+1 -> -1E+1
nrmx115 normalize -1.10E+2 -> -1.1E+2
nrmx116 normalize -1.00E+2 -> -1E+2
nrmx117 normalize -1.100E+3 -> -1.1E+3
nrmx118 normalize -1.000E+3 -> -1E+3
nrmx119 normalize -1.00000E+5 -> -1E+5
nrmx120 normalize -1.000000E+6 -> -1E+6
nrmx121 normalize -10.00000E+6 -> -1E+7
nrmx122 normalize -100.0000E+6 -> -1E+8
nrmx123 normalize -1000.000E+6 -> -1E+9
nrmx124 normalize -10000.00E+6 -> -1E+10
nrmx125 normalize -100000.0E+6 -> -1E+11
nrmx126 normalize -1000000.E+6 -> -1E+12
-- examples from decArith
nrmx140 normalize '2.1' -> '2.1'
nrmx141 normalize '-2.0' -> '-2'
nrmx142 normalize '1.200' -> '1.2'
nrmx143 normalize '-120' -> '-1.2E+2'
nrmx144 normalize '120.00' -> '1.2E+2'
nrmx145 normalize '0.00' -> '0'
-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
nrmx160 normalize 9.999E+999999999 -> Infinity Inexact Overflow Rounded
nrmx161 normalize -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
nrmx210 normalize 1.00E-999 -> 1E-999
nrmx211 normalize 0.1E-999 -> 1E-1000 Subnormal
nrmx212 normalize 0.10E-999 -> 1E-1000 Subnormal
nrmx213 normalize 0.100E-999 -> 1E-1000 Subnormal Rounded
nrmx214 normalize 0.01E-999 -> 1E-1001 Subnormal
-- next is rounded to Emin
nrmx215 normalize 0.999E-999 -> 1E-999 Inexact Rounded Subnormal Underflow
nrmx216 normalize 0.099E-999 -> 1E-1000 Inexact Rounded Subnormal Underflow
nrmx217 normalize 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
nrmx218 normalize 0.001E-999 -> 0 Inexact Rounded Subnormal Underflow
nrmx219 normalize 0.0009E-999 -> 0 Inexact Rounded Subnormal Underflow
nrmx220 normalize 0.0001E-999 -> 0 Inexact Rounded Subnormal Underflow
nrmx230 normalize -1.00E-999 -> -1E-999
nrmx231 normalize -0.1E-999 -> -1E-1000 Subnormal
nrmx232 normalize -0.10E-999 -> -1E-1000 Subnormal
nrmx233 normalize -0.100E-999 -> -1E-1000 Subnormal Rounded
nrmx234 normalize -0.01E-999 -> -1E-1001 Subnormal
-- next is rounded to Emin
nrmx235 normalize -0.999E-999 -> -1E-999 Inexact Rounded Subnormal Underflow
nrmx236 normalize -0.099E-999 -> -1E-1000 Inexact Rounded Subnormal Underflow
nrmx237 normalize -0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
nrmx238 normalize -0.001E-999 -> -0 Inexact Rounded Subnormal Underflow
nrmx239 normalize -0.0009E-999 -> -0 Inexact Rounded Subnormal Underflow
nrmx240 normalize -0.0001E-999 -> -0 Inexact Rounded Subnormal Underflow
-- more reshaping
precision: 9
nrmx260 normalize '56260E-10' -> '0.000005626'
nrmx261 normalize '56260E-5' -> '0.5626'
nrmx262 normalize '56260E-2' -> '562.6'
nrmx263 normalize '56260E-1' -> '5626'
nrmx265 normalize '56260E-0' -> '5.626E+4'
nrmx266 normalize '56260E+0' -> '5.626E+4'
nrmx267 normalize '56260E+1' -> '5.626E+5'
nrmx268 normalize '56260E+2' -> '5.626E+6'
nrmx269 normalize '56260E+3' -> '5.626E+7'
nrmx270 normalize '56260E+4' -> '5.626E+8'
nrmx271 normalize '56260E+5' -> '5.626E+9'
nrmx272 normalize '56260E+6' -> '5.626E+10'
nrmx280 normalize '-56260E-10' -> '-0.000005626'
nrmx281 normalize '-56260E-5' -> '-0.5626'
nrmx282 normalize '-56260E-2' -> '-562.6'
nrmx283 normalize '-56260E-1' -> '-5626'
nrmx285 normalize '-56260E-0' -> '-5.626E+4'
nrmx286 normalize '-56260E+0' -> '-5.626E+4'
nrmx287 normalize '-56260E+1' -> '-5.626E+5'
nrmx288 normalize '-56260E+2' -> '-5.626E+6'
nrmx289 normalize '-56260E+3' -> '-5.626E+7'
nrmx290 normalize '-56260E+4' -> '-5.626E+8'
nrmx291 normalize '-56260E+5' -> '-5.626E+9'
nrmx292 normalize '-56260E+6' -> '-5.626E+10'
-- specials
nrmx820 normalize 'Inf' -> 'Infinity'
nrmx821 normalize '-Inf' -> '-Infinity'
nrmx822 normalize NaN -> NaN
nrmx823 normalize sNaN -> NaN Invalid_operation
nrmx824 normalize NaN101 -> NaN101
nrmx825 normalize sNaN010 -> NaN10 Invalid_operation
nrmx827 normalize -NaN -> -NaN
nrmx828 normalize -sNaN -> -NaN Invalid_operation
nrmx829 normalize -NaN101 -> -NaN101
nrmx830 normalize -sNaN010 -> -NaN10 Invalid_operation
-- Null test
nrmx900 normalize # -> NaN Invalid_operation

View file

@ -1,181 +0,0 @@
------------------------------------------------------------------------
-- plus.decTest -- decimal monadic addition --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of tests primarily tests the existence of the operator.
-- Addition and rounding, and most overflows, are tested elsewhere.
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
plux001 plus '1' -> '1'
plux002 plus '-1' -> '-1'
plux003 plus '1.00' -> '1.00'
plux004 plus '-1.00' -> '-1.00'
plux005 plus '0' -> '0'
plux006 plus '0.00' -> '0.00'
plux007 plus '00.0' -> '0.0'
plux008 plus '00.00' -> '0.00'
plux009 plus '00' -> '0'
plux010 plus '-2' -> '-2'
plux011 plus '2' -> '2'
plux012 plus '-2.00' -> '-2.00'
plux013 plus '2.00' -> '2.00'
plux014 plus '-0' -> '0'
plux015 plus '-0.00' -> '0.00'
plux016 plus '-00.0' -> '0.0'
plux017 plus '-00.00' -> '0.00'
plux018 plus '-00' -> '0'
plux020 plus '-2000000' -> '-2000000'
plux021 plus '2000000' -> '2000000'
precision: 7
plux022 plus '-2000000' -> '-2000000'
plux023 plus '2000000' -> '2000000'
precision: 6
plux024 plus '-2000000' -> '-2.00000E+6' Rounded
plux025 plus '2000000' -> '2.00000E+6' Rounded
precision: 3
plux026 plus '-2000000' -> '-2.00E+6' Rounded
plux027 plus '2000000' -> '2.00E+6' Rounded
-- more fixed, potential LHS swaps if done by add 0
precision: 9
plux060 plus '56267E-10' -> '0.0000056267'
plux061 plus '56267E-5' -> '0.56267'
plux062 plus '56267E-2' -> '562.67'
plux063 plus '56267E-1' -> '5626.7'
plux065 plus '56267E-0' -> '56267'
plux066 plus '56267E+0' -> '56267'
plux067 plus '56267E+1' -> '5.6267E+5'
plux068 plus '56267E+2' -> '5.6267E+6'
plux069 plus '56267E+3' -> '5.6267E+7'
plux070 plus '56267E+4' -> '5.6267E+8'
plux071 plus '56267E+5' -> '5.6267E+9'
plux072 plus '56267E+6' -> '5.6267E+10'
plux080 plus '-56267E-10' -> '-0.0000056267'
plux081 plus '-56267E-5' -> '-0.56267'
plux082 plus '-56267E-2' -> '-562.67'
plux083 plus '-56267E-1' -> '-5626.7'
plux085 plus '-56267E-0' -> '-56267'
plux086 plus '-56267E+0' -> '-56267'
plux087 plus '-56267E+1' -> '-5.6267E+5'
plux088 plus '-56267E+2' -> '-5.6267E+6'
plux089 plus '-56267E+3' -> '-5.6267E+7'
plux090 plus '-56267E+4' -> '-5.6267E+8'
plux091 plus '-56267E+5' -> '-5.6267E+9'
plux092 plus '-56267E+6' -> '-5.6267E+10'
-- "lhs" zeros in plus and minus have exponent = operand
plux120 plus '-0E3' -> '0E+3'
plux121 plus '-0E2' -> '0E+2'
plux122 plus '-0E1' -> '0E+1'
plux123 plus '-0E0' -> '0'
plux124 plus '+0E0' -> '0'
plux125 plus '+0E1' -> '0E+1'
plux126 plus '+0E2' -> '0E+2'
plux127 plus '+0E3' -> '0E+3'
plux130 plus '-5E3' -> '-5E+3'
plux131 plus '-5E8' -> '-5E+8'
plux132 plus '-5E13' -> '-5E+13'
plux133 plus '-5E18' -> '-5E+18'
plux134 plus '+5E3' -> '5E+3'
plux135 plus '+5E8' -> '5E+8'
plux136 plus '+5E13' -> '5E+13'
plux137 plus '+5E18' -> '5E+18'
-- specials
plux150 plus 'Inf' -> 'Infinity'
plux151 plus '-Inf' -> '-Infinity'
plux152 plus NaN -> NaN
plux153 plus sNaN -> NaN Invalid_operation
plux154 plus NaN77 -> NaN77
plux155 plus sNaN88 -> NaN88 Invalid_operation
plux156 plus -NaN -> -NaN
plux157 plus -sNaN -> -NaN Invalid_operation
plux158 plus -NaN77 -> -NaN77
plux159 plus -sNaN88 -> -NaN88 Invalid_operation
-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
plux160 plus 9.999E+999999999 -> Infinity Inexact Overflow Rounded
plux161 plus -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
plux210 plus 1.00E-999 -> 1.00E-999
plux211 plus 0.1E-999 -> 1E-1000 Subnormal
plux212 plus 0.10E-999 -> 1.0E-1000 Subnormal
plux213 plus 0.100E-999 -> 1.0E-1000 Subnormal Rounded
plux214 plus 0.01E-999 -> 1E-1001 Subnormal
-- next is rounded to Emin
plux215 plus 0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
plux216 plus 0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
plux217 plus 0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
plux218 plus 0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
plux219 plus 0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
plux220 plus 0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
plux230 plus -1.00E-999 -> -1.00E-999
plux231 plus -0.1E-999 -> -1E-1000 Subnormal
plux232 plus -0.10E-999 -> -1.0E-1000 Subnormal
plux233 plus -0.100E-999 -> -1.0E-1000 Subnormal Rounded
plux234 plus -0.01E-999 -> -1E-1001 Subnormal
-- next is rounded to Emin
plux235 plus -0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow
plux236 plus -0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
plux237 plus -0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
plux238 plus -0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
plux239 plus -0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
plux240 plus -0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
plux301 plus 12345678000 -> 1.23456780E+10 Rounded
plux302 plus 1234567800 -> 1.23456780E+9 Rounded
plux303 plus 1234567890 -> 1.23456789E+9 Rounded
plux304 plus 1234567891 -> 1.23456789E+9 Inexact Rounded
plux305 plus 12345678901 -> 1.23456789E+10 Inexact Rounded
plux306 plus 1234567896 -> 1.23456790E+9 Inexact Rounded
-- still checking
precision: 15
plux321 plus 12345678000 -> 12345678000
plux322 plus 1234567800 -> 1234567800
plux323 plus 1234567890 -> 1234567890
plux324 plus 1234567891 -> 1234567891
plux325 plus 12345678901 -> 12345678901
plux326 plus 1234567896 -> 1234567896
precision: 9
-- Null tests
plu900 plus # -> NaN Invalid_operation

View file

@ -1,651 +0,0 @@
----------------------------------------------------------------------
-- power.decTest -- decimal exponentiation --
-- Copyright (c) IBM Corporation, 1981, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of testcases tests raising numbers to an integer power only.
-- If arbitrary powers were supported, 1 ulp differences would be
-- permitted.
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
-- base checks. Note 0**0 is an error.
powx001 power '0' '0' -> NaN Invalid_operation
powx002 power '0' '1' -> '0'
powx003 power '0' '2' -> '0'
powx004 power '1' '0' -> '1'
powx005 power '1' '1' -> '1'
powx006 power '1' '2' -> '1'
powx010 power '2' '0' -> '1'
powx011 power '2' '1' -> '2'
powx012 power '2' '2' -> '4'
powx013 power '2' '3' -> '8'
powx014 power '2' '4' -> '16'
powx015 power '2' '5' -> '32'
powx016 power '2' '6' -> '64'
powx017 power '2' '7' -> '128'
powx018 power '2' '8' -> '256'
powx019 power '2' '9' -> '512'
powx020 power '2' '10' -> '1024'
powx021 power '2' '11' -> '2048'
powx022 power '2' '12' -> '4096'
powx023 power '2' '15' -> '32768'
powx024 power '2' '16' -> '65536'
powx025 power '2' '31' -> '2.14748365E+9' Inexact Rounded
-- NB 0 not stripped in next
powx026 power '2' '32' -> '4.29496730E+9' Inexact Rounded
precision: 10
powx027 power '2' '31' -> '2147483648'
powx028 power '2' '32' -> '4294967296'
precision: 9
powx030 power '3' '2' -> 9
powx031 power '4' '2' -> 16
powx032 power '5' '2' -> 25
powx033 power '6' '2' -> 36
powx034 power '7' '2' -> 49
powx035 power '8' '2' -> 64
powx036 power '9' '2' -> 81
powx037 power '10' '2' -> 100
powx038 power '11' '2' -> 121
powx039 power '12' '2' -> 144
powx040 power '3' '3' -> 27
powx041 power '4' '3' -> 64
powx042 power '5' '3' -> 125
powx043 power '6' '3' -> 216
powx044 power '7' '3' -> 343
powx050 power '10' '0' -> 1
powx051 power '10' '1' -> 10
powx052 power '10' '2' -> 100
powx053 power '10' '3' -> 1000
powx054 power '10' '4' -> 10000
powx055 power '10' '5' -> 100000
powx056 power '10' '6' -> 1000000
powx057 power '10' '7' -> 10000000
powx058 power '10' '8' -> 100000000
powx059 power '10' '9' -> 1.00000000E+9 Rounded
powx060 power '10' '22' -> 1.00000000E+22 Rounded
powx061 power '10' '77' -> 1.00000000E+77 Rounded
powx062 power '10' '99' -> 1.00000000E+99 Rounded
maxexponent: 999999999
minexponent: -999999999
powx063 power '10' '999999999' -> '1.00000000E+999999999' Rounded
powx064 power '10' '999999998' -> '1.00000000E+999999998' Rounded
powx065 power '10' '999999997' -> '1.00000000E+999999997' Rounded
powx066 power '10' '333333333' -> '1.00000000E+333333333' Rounded
powx070 power '0.3' '0' -> '1'
powx071 power '0.3' '1' -> '0.3'
powx072 power '0.3' '1.00' -> '0.3'
powx073 power '0.3' '2.00' -> '0.09'
powx074 power '0.3' '2.000000000' -> '0.09'
powx075 power '6.0' '1' -> '6.0' -- NB zeros not stripped
powx076 power '6.0' '2' -> '36.00' -- ..
powx077 power '-3' '2' -> '9' -- from NetRexx book
powx078 power '4' '3' -> '64' -- .. (sort of)
powx080 power 0.1 0 -> 1
powx081 power 0.1 1 -> 0.1
powx082 power 0.1 2 -> 0.01
powx083 power 0.1 3 -> 0.001
powx084 power 0.1 4 -> 0.0001
powx085 power 0.1 5 -> 0.00001
powx086 power 0.1 6 -> 0.000001
powx087 power 0.1 7 -> 1E-7
powx088 power 0.1 8 -> 1E-8
powx089 power 0.1 9 -> 1E-9
powx090 power 101 2 -> 10201
powx091 power 101 3 -> 1030301
powx092 power 101 4 -> 104060401
powx093 power 101 5 -> 1.05101005E+10 Inexact Rounded
powx094 power 101 6 -> 1.06152015E+12 Inexact Rounded
powx095 power 101 7 -> 1.07213535E+14 Inexact Rounded
-- negative powers
powx101 power '2' '-1' -> 0.5
powx102 power '2' '-2' -> 0.25
powx103 power '2' '-4' -> 0.0625
powx104 power '2' '-8' -> 0.00390625
powx105 power '2' '-16' -> 0.0000152587891 Inexact Rounded
powx106 power '2' '-32' -> 2.32830644E-10 Inexact Rounded
powx108 power '2' '-64' -> 5.42101086E-20 Inexact Rounded
powx110 power '10' '-8' -> 1E-8
powx111 power '10' '-7' -> 1E-7
powx112 power '10' '-6' -> 0.000001
powx113 power '10' '-5' -> 0.00001
powx114 power '10' '-4' -> 0.0001
powx115 power '10' '-3' -> 0.001
powx116 power '10' '-2' -> 0.01
powx117 power '10' '-1' -> 0.1
powx118 power '10' '-333333333' -> 1E-333333333
powx119 power '10' '-999999998' -> 1E-999999998
powx120 power '10' '-999999999' -> 1E-999999999
powx121 power '10' '-77' -> '1E-77'
powx122 power '10' '-22' -> '1E-22'
powx123 power '2' '-1' -> '0.5'
powx124 power '2' '-2' -> '0.25'
powx125 power '2' '-4' -> '0.0625'
powx126 power '0' '-1' -> Infinity Division_by_zero
powx127 power '0' '-2' -> Infinity Division_by_zero
powx128 power -0 '-1' -> -Infinity Division_by_zero
powx129 power -0 '-2' -> Infinity Division_by_zero
-- out-of-range edge cases
powx181 power '7' '999999998' -> 2.10892313E+845098038 Inexact Rounded
powx182 power '7' '999999999' -> 1.47624619E+845098039 Inexact Rounded
powx183 power '7' '1000000000' -> NaN Invalid_operation
powx184 power '7' '1000000001' -> NaN Invalid_operation
powx185 power '7' '10000000000' -> NaN Invalid_operation
powx186 power '7' '-1000000001' -> NaN Invalid_operation
powx187 power '7' '-1000000000' -> NaN Invalid_operation
powx189 power '7' '-999999999' -> 6.77393787E-845098040 Inexact Rounded
powx190 power '7' '-999999998' -> 4.74175651E-845098039 Inexact Rounded
-- some baddies [more below]
powx191 power '2' '2.000001' -> NaN Invalid_operation
powx192 power '2' '2.00000000' -> 4
powx193 power '2' '2.000000001' -> NaN Invalid_operation
powx194 power '2' '2.0000000001' -> NaN Invalid_operation
-- "0.5" tests from original Rexx diagnostics [loop unrolled]
powx200 power 0.5 0 -> 1
powx201 power 0.5 1 -> 0.5
powx202 power 0.5 2 -> 0.25
powx203 power 0.5 3 -> 0.125
powx204 power 0.5 4 -> 0.0625
powx205 power 0.5 5 -> 0.03125
powx206 power 0.5 6 -> 0.015625
powx207 power 0.5 7 -> 0.0078125
powx208 power 0.5 8 -> 0.00390625
powx209 power 0.5 9 -> 0.001953125
powx210 power 0.5 10 -> 0.0009765625
-- A (rare) case where the last digit is not within 0.5 ULP
precision: 9
powx215 power "-21971575.0E+31454441" "-7" -> "-4.04549503E-220181139" Inexact Rounded
precision: 20
powx216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded
-- The Vienna case. Checks both setup and 1/acc working precision
-- Modified 1998.12.14 as RHS no longer rounded before use (must fit)
-- Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
-- '123456789E+10' -- lhs .. rounded to 1.23E+18
-- '-1.23000e+2' -- rhs .. [was: -1.23455e+2, rounds to -123]
-- Modified 2002.10.06 -- finally, no input rounding
-- With input rounding, result would be 8.74E-2226
precision: 3
powx219 power '123456789E+10' '-1.23000e+2' -> '5.54E-2226' Inexact Rounded
-- whole number checks
precision: 9
powx221 power 1 1234 -> 1
precision: 4
powx222 power 1 1234 -> 1
precision: 3
powx223 power 1 1234 -> 1
powx224 power 1 12.34e+2 -> 1
powx225 power 1 12.3 -> NaN Invalid_operation
powx226 power 1 12.0 -> 1
powx227 power 1 1.01 -> NaN Invalid_operation
powx228 power 2 1.00 -> 2
powx229 power 2 2.00 -> 4
precision: 9
powx230 power 1 1.0001 -> NaN Invalid_operation
powx231 power 1 1.0000001 -> NaN Invalid_operation
powx232 power 1 1.0000000001 -> NaN Invalid_operation
powx233 power 1 1.0000000000001 -> NaN Invalid_operation
precision: 5
powx234 power 1 1.0001 -> NaN Invalid_operation
powx235 power 1 1.0000001 -> NaN Invalid_operation
powx236 power 1 1.0000000001 -> NaN Invalid_operation
powx237 power 1 1.0000000000001 -> NaN Invalid_operation
powx238 power 1 1.0000000000001 -> NaN Invalid_operation
maxexponent: 999999999
minexponent: -999999999
powx239 power 1 5.67E-987654321 -> NaN Invalid_operation
powx240 power 1 100000000 -> 1
powx241 power 1 999999998 -> 1
powx242 power 1 999999999 -> 1
powx243 power 1 1000000000 -> NaN Invalid_operation
powx244 power 1 9999999999 -> NaN Invalid_operation
-- Checks for 'Too much precision needed'
-- For x^12, digits+elength+1 = digits+3
precision: 999999999
powx249 add 1 1 -> 2 -- check basic operation at this precision
powx250 power 2 12 -> Infinity Overflow
precision: 999999998
powx251 power 2 12 -> Infinity Overflow
precision: 999999997
powx252 power 2 12 -> Infinity Overflow
precision: 999999996
powx253 power 2 12 -> 4096
precision: 999999995
powx254 power 2 12 -> 4096
-- zeros
maxexponent: +96
minexponent: -95
precision: 7
powx260 power 0E-34 3 -> 0E-101 Clamped
powx261 power 0E-33 3 -> 0E-99
powx262 power 0E-32 3 -> 0E-96
powx263 power 0E-30 3 -> 0E-90
powx264 power 0E-10 3 -> 0E-30
powx265 power 0E-1 3 -> 0.000
powx266 power 0E+0 3 -> 0
powx267 power 0 3 -> 0
powx268 power 0E+1 3 -> 0E+3
powx269 power 0E+10 3 -> 0E+30
powx270 power 0E+30 3 -> 0E+90
powx271 power 0E+32 3 -> 0E+96
powx272 power 0E+33 3 -> 0E+96 Clamped
-- overflow and underflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 9
powx280 power 9 999999999 -> 3.05550054E+954242508 Inexact Rounded
powx281 power 10 999999999 -> 1.00000000E+999999999 Rounded
powx282 power 10.0001 999999999 -> Infinity Overflow Inexact Rounded
powx283 power 10.1 999999999 -> Infinity Overflow Inexact Rounded
powx284 power 11 999999999 -> Infinity Overflow Inexact Rounded
powx285 power 12 999999999 -> Infinity Overflow Inexact Rounded
powx286 power 999 999999999 -> Infinity Overflow Inexact Rounded
powx287 power 999999 999999999 -> Infinity Overflow Inexact Rounded
powx288 power 999999999 999999999 -> Infinity Overflow Inexact Rounded
powx289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded
powx290 power 0.5 999999999 -> 4.33559594E-301029996 Inexact Rounded
powx291 power 0.1 999999999 -> 1E-999999999 -- unrounded
powx292 power 0.09 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx293 power 0.05 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx294 power 0.01 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx295 power 0.0001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx297 power 0.0000001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx298 power 0.0000000001 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx299 power 1E-999999999 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx310 power -9 999999999 -> -3.05550054E+954242508 Inexact Rounded
powx311 power -10 999999999 -> -1.00000000E+999999999 Rounded
powx312 power -10.0001 999999999 -> -Infinity Overflow Inexact Rounded
powx313 power -10.1 999999999 -> -Infinity Overflow Inexact Rounded
powx314 power -11 999999999 -> -Infinity Overflow Inexact Rounded
powx315 power -12 999999999 -> -Infinity Overflow Inexact Rounded
powx316 power -999 999999999 -> -Infinity Overflow Inexact Rounded
powx317 power -999999 999999999 -> -Infinity Overflow Inexact Rounded
powx318 power -999999999 999999999 -> -Infinity Overflow Inexact Rounded
powx319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded
powx320 power -0.5 999999999 -> -4.33559594E-301029996 Inexact Rounded
powx321 power -0.1 999999999 -> -1E-999999999
powx322 power -0.09 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx323 power -0.05 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx324 power -0.01 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx325 power -0.0001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx327 power -0.0000001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx328 power -0.0000000001 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx329 power -1E-999999999 999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-- note no trim of next result
powx330 power -9 999999998 -> 3.39500060E+954242507 Inexact Rounded
powx331 power -10 999999998 -> 1.00000000E+999999998 Rounded
powx332 power -10.0001 999999998 -> Infinity Overflow Inexact Rounded
powx333 power -10.1 999999998 -> Infinity Overflow Inexact Rounded
powx334 power -11 999999998 -> Infinity Overflow Inexact Rounded
powx335 power -12 999999998 -> Infinity Overflow Inexact Rounded
powx336 power -999 999999998 -> Infinity Overflow Inexact Rounded
powx337 power -999999 999999998 -> Infinity Overflow Inexact Rounded
powx338 power -999999999 999999998 -> Infinity Overflow Inexact Rounded
powx339 power -9.9E999999999 999999998 -> Infinity Overflow Inexact Rounded
powx340 power -0.5 999999998 -> 8.67119187E-301029996 Inexact Rounded
powx341 power -0.1 999999998 -> 1E-999999998 -- NB exact unrounded
powx342 power -0.09 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx343 power -0.05 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx344 power -0.01 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx345 power -0.0001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx347 power -0.0000001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx348 power -0.0000000001 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx349 power -1E-999999999 999999998 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-- some subnormals
precision: 9
-- [precision is 9, so smallest exponent is -1000000007
powx350 power 1e-1 500000000 -> 1E-500000000
powx351 power 1e-2 999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx352 power 1e-2 500000000 -> 1E-1000000000 Subnormal
powx353 power 1e-2 500000001 -> 1E-1000000002 Subnormal
powx354 power 1e-2 500000002 -> 1E-1000000004 Subnormal
powx355 power 1e-2 500000003 -> 1E-1000000006 Subnormal
powx356 power 1e-2 500000004 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
powx360 power 0.010001 500000000 -> 4.34941988E-999978287 Inexact Rounded
powx361 power 0.010000001 500000000 -> 5.18469257E-999999979 Inexact Rounded
powx362 power 0.010000001 500000001 -> 5.18469309E-999999981 Inexact Rounded
powx363 power 0.0100000009 500000000 -> 3.49342003E-999999981 Inexact Rounded
powx364 power 0.0100000001 500000000 -> 1.48413155E-999999998 Inexact Rounded
powx365 power 0.01 500000000 -> 1E-1000000000 Subnormal
powx366 power 0.0099999999 500000000 -> 6.7379E-1000000003 Underflow Subnormal Inexact Rounded
powx367 power 0.0099999998 500000000 -> 4.54E-1000000005 Underflow Subnormal Inexact Rounded
powx368 power 0.0099999997 500000000 -> 3E-1000000007 Underflow Subnormal Inexact Rounded
powx369 power 0.0099999996 500000000 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
powx370 power 0.009 500000000 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-- 1/subnormal -> overflow
powx371 power 1e-1 -500000000 -> 1E+500000000
powx372 power 1e-2 -999999999 -> Infinity Overflow Inexact Rounded
powx373 power 1e-2 -500000000 -> Infinity Overflow Inexact Rounded
powx374 power 1e-2 -500000001 -> Infinity Overflow Inexact Rounded
powx375 power 1e-2 -500000002 -> Infinity Overflow Inexact Rounded
powx376 power 1e-2 -500000003 -> Infinity Overflow Inexact Rounded
powx377 power 1e-2 -500000004 -> Infinity Overflow Inexact Rounded
powx381 power 0.010001 -500000000 -> 2.29915719E+999978286 Inexact Rounded
powx382 power 0.010000001 -500000000 -> 1.92875467E+999999978 Inexact Rounded
powx383 power 0.010000001 -500000001 -> 1.92875448E+999999980 Inexact Rounded
powx384 power 0.0100000009 -500000000 -> 2.86252438E+999999980 Inexact Rounded
powx385 power 0.0100000001 -500000000 -> 6.73794717E+999999997 Inexact Rounded
powx386 power 0.01 -500000000 -> Infinity Overflow Inexact Rounded
powx387 power 0.009999 -500000000 -> Infinity Overflow Inexact Rounded
-- negative power giving subnormal
powx388 power 100.000001 -500000000 -> 6.7379E-1000000003 Underflow Subnormal Inexact Rounded
-- some more edge cases
precision: 15
maxExponent: 999
minexponent: -999
powx391 power 0.1 999 -> 1E-999
powx392 power 0.099 999 -> 4.360732062E-1004 Underflow Subnormal Inexact Rounded
powx393 power 0.098 999 -> 1.71731E-1008 Underflow Subnormal Inexact Rounded
powx394 power 0.097 999 -> 6E-1013 Underflow Subnormal Inexact Rounded
powx395 power 0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded
powx396 power 0.01 999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped
-- multiply tests are here to aid checking and test for consistent handling
-- of underflow
precision: 5
maxexponent: 999
minexponent: -999
-- squares
mulx400 multiply 1E-502 1e-502 -> 0E-1003 Subnormal Inexact Underflow Rounded
mulx401 multiply 1E-501 1e-501 -> 1E-1002 Subnormal
mulx402 multiply 2E-501 2e-501 -> 4E-1002 Subnormal
mulx403 multiply 4E-501 4e-501 -> 1.6E-1001 Subnormal
mulx404 multiply 10E-501 10e-501 -> 1.00E-1000 Subnormal
mulx405 multiply 30E-501 30e-501 -> 9.00E-1000 Subnormal
mulx406 multiply 40E-501 40e-501 -> 1.600E-999
powx400 power 1E-502 2 -> 0E-1003 Underflow Subnormal Inexact Rounded
powx401 power 1E-501 2 -> 1E-1002 Subnormal
powx402 power 2E-501 2 -> 4E-1002 Subnormal
powx403 power 4E-501 2 -> 1.6E-1001 Subnormal
powx404 power 10E-501 2 -> 1.00E-1000 Subnormal
powx405 power 30E-501 2 -> 9.00E-1000 Subnormal
powx406 power 40E-501 2 -> 1.600E-999
-- cubes
mulx410 multiply 1E-670 1e-335 -> 0E-1003 Underflow Subnormal Inexact Rounded
mulx411 multiply 1E-668 1e-334 -> 1E-1002 Subnormal
mulx412 multiply 4E-668 2e-334 -> 8E-1002 Subnormal
mulx413 multiply 9E-668 3e-334 -> 2.7E-1001 Subnormal
mulx414 multiply 16E-668 4e-334 -> 6.4E-1001 Subnormal
mulx415 multiply 25E-668 5e-334 -> 1.25E-1000 Subnormal
mulx416 multiply 10E-668 100e-334 -> 1.000E-999
powx410 power 1E-335 3 -> 0E-1003 Underflow Subnormal Inexact Rounded
powx411 power 1E-334 3 -> 1E-1002 Subnormal
powx412 power 2E-334 3 -> 8E-1002 Subnormal
powx413 power 3E-334 3 -> 2.7E-1001 Subnormal
powx414 power 4E-334 3 -> 6.4E-1001 Subnormal
powx415 power 5E-334 3 -> 1.25E-1000 Subnormal
powx416 power 10E-334 3 -> 1.000E-999
-- negative powers, testing subnormals
precision: 5
maxExponent: 999
minexponent: -999
powx421 power 2.5E-501 -2 -> Infinity Overflow Inexact Rounded
powx422 power 2.5E-500 -2 -> 1.6E+999
powx423 power 2.5E+499 -2 -> 1.6E-999
powx424 power 2.5E+500 -2 -> 1.6E-1001 Subnormal
powx425 power 2.5E+501 -2 -> 2E-1003 Underflow Subnormal Inexact Rounded
powx426 power 2.5E+502 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded
powx427 power 0.25E+499 -2 -> 1.6E-997
powx428 power 0.25E+500 -2 -> 1.6E-999
powx429 power 0.25E+501 -2 -> 1.6E-1001 Subnormal
powx430 power 0.25E+502 -2 -> 2E-1003 Underflow Subnormal Inexact Rounded
powx431 power 0.25E+503 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded
powx432 power 0.04E+499 -2 -> 6.25E-996
powx433 power 0.04E+500 -2 -> 6.25E-998
powx434 power 0.04E+501 -2 -> 6.25E-1000 Subnormal
powx435 power 0.04E+502 -2 -> 6.3E-1002 Underflow Subnormal Inexact Rounded
powx436 power 0.04E+503 -2 -> 1E-1003 Underflow Subnormal Inexact Rounded
powx437 power 0.04E+504 -2 -> 0E-1003 Underflow Subnormal Inexact Rounded
powx441 power 0.04E+334 -3 -> 1.5625E-998
powx442 power 0.04E+335 -3 -> 1.56E-1001 Underflow Subnormal Inexact Rounded
powx443 power 0.04E+336 -3 -> 0E-1003 Underflow Subnormal Inexact Rounded
powx444 power 0.25E+333 -3 -> 6.4E-998
powx445 power 0.25E+334 -3 -> 6.4E-1001 Subnormal
powx446 power 0.25E+335 -3 -> 1E-1003 Underflow Subnormal Inexact Rounded
powx447 power 0.25E+336 -3 -> 0E-1003 Underflow Subnormal Inexact Rounded Clamped
-- check sign for cubes and a few squares
powx448 power -0.04E+334 -3 -> -1.5625E-998
powx449 power -0.04E+335 -3 -> -1.56E-1001 Underflow Subnormal Inexact Rounded
powx450 power -0.04E+336 -3 -> -0E-1003 Underflow Subnormal Inexact Rounded
powx451 power -0.25E+333 -3 -> -6.4E-998
powx452 power -0.25E+334 -3 -> -6.4E-1001 Subnormal
powx453 power -0.25E+335 -3 -> -1E-1003 Underflow Subnormal Inexact Rounded
powx454 power -0.25E+336 -3 -> -0E-1003 Underflow Subnormal Inexact Rounded Clamped
powx455 power -0.04E+499 -2 -> 6.25E-996
powx456 power -0.04E+500 -2 -> 6.25E-998
powx457 power -0.04E+501 -2 -> 6.25E-1000 Subnormal
powx458 power -0.04E+502 -2 -> 6.3E-1002 Underflow Subnormal Inexact Rounded
-- test -0s
precision: 9
powx560 power 0 0 -> NaN Invalid_operation
powx561 power 0 -0 -> NaN Invalid_operation
powx562 power -0 0 -> NaN Invalid_operation
powx563 power -0 -0 -> NaN Invalid_operation
powx564 power 1 0 -> 1
powx565 power 1 -0 -> 1
powx566 power -1 0 -> 1
powx567 power -1 -0 -> 1
powx568 power 0 1 -> 0
powx569 power 0 -1 -> Infinity Division_by_zero
powx570 power -0 1 -> -0
powx571 power -0 -1 -> -Infinity Division_by_zero
powx572 power 0 2 -> 0
powx573 power 0 -2 -> Infinity Division_by_zero
powx574 power -0 2 -> 0
powx575 power -0 -2 -> Infinity Division_by_zero
powx576 power 0 3 -> 0
powx577 power 0 -3 -> Infinity Division_by_zero
powx578 power -0 3 -> -0
powx579 power -0 -3 -> -Infinity Division_by_zero
-- Specials
powx580 power Inf -Inf -> NaN Invalid_operation
powx581 power Inf -1000 -> 0
powx582 power Inf -1 -> 0
powx583 power Inf -0 -> 1
powx584 power Inf 0 -> 1
powx585 power Inf 1 -> Infinity
powx586 power Inf 1000 -> Infinity
powx587 power Inf Inf -> NaN Invalid_operation
powx588 power -1000 Inf -> NaN Invalid_operation
powx589 power -Inf Inf -> NaN Invalid_operation
powx590 power -1 Inf -> NaN Invalid_operation
powx591 power -0 Inf -> NaN Invalid_operation
powx592 power 0 Inf -> NaN Invalid_operation
powx593 power 1 Inf -> NaN Invalid_operation
powx594 power 1000 Inf -> NaN Invalid_operation
powx595 power Inf Inf -> NaN Invalid_operation
powx600 power -Inf -Inf -> NaN Invalid_operation
powx601 power -Inf -1000 -> 0
powx602 power -Inf -1 -> -0
powx603 power -Inf -0 -> 1
powx604 power -Inf 0 -> 1
powx605 power -Inf 1 -> -Infinity
powx606 power -Inf 1000 -> Infinity
powx607 power -Inf Inf -> NaN Invalid_operation
powx608 power -1000 Inf -> NaN Invalid_operation
powx609 power -Inf -Inf -> NaN Invalid_operation
powx610 power -1 -Inf -> NaN Invalid_operation
powx611 power -0 -Inf -> NaN Invalid_operation
powx612 power 0 -Inf -> NaN Invalid_operation
powx613 power 1 -Inf -> NaN Invalid_operation
powx614 power 1000 -Inf -> NaN Invalid_operation
powx615 power Inf -Inf -> NaN Invalid_operation
powx621 power NaN -Inf -> NaN Invalid_operation
powx622 power NaN -1000 -> NaN
powx623 power NaN -1 -> NaN
powx624 power NaN -0 -> NaN
powx625 power NaN 0 -> NaN
powx626 power NaN 1 -> NaN
powx627 power NaN 1000 -> NaN
powx628 power NaN Inf -> NaN Invalid_operation
powx629 power NaN NaN -> NaN
powx630 power -Inf NaN -> NaN
powx631 power -1000 NaN -> NaN
powx632 power -1 NaN -> NaN
powx633 power -0 NaN -> NaN
powx634 power 0 NaN -> NaN
powx635 power 1 NaN -> NaN
powx636 power 1000 NaN -> NaN
powx637 power Inf NaN -> NaN
powx641 power sNaN -Inf -> NaN Invalid_operation
powx642 power sNaN -1000 -> NaN Invalid_operation
powx643 power sNaN -1 -> NaN Invalid_operation
powx644 power sNaN -0 -> NaN Invalid_operation
powx645 power sNaN 0 -> NaN Invalid_operation
powx646 power sNaN 1 -> NaN Invalid_operation
powx647 power sNaN 1000 -> NaN Invalid_operation
powx648 power sNaN NaN -> NaN Invalid_operation
powx649 power sNaN sNaN -> NaN Invalid_operation
powx650 power NaN sNaN -> NaN Invalid_operation
powx651 power -Inf sNaN -> NaN Invalid_operation
powx652 power -1000 sNaN -> NaN Invalid_operation
powx653 power -1 sNaN -> NaN Invalid_operation
powx654 power -0 sNaN -> NaN Invalid_operation
powx655 power 0 sNaN -> NaN Invalid_operation
powx656 power 1 sNaN -> NaN Invalid_operation
powx657 power 1000 sNaN -> NaN Invalid_operation
powx658 power Inf sNaN -> NaN Invalid_operation
powx659 power NaN sNaN -> NaN Invalid_operation
-- NaN propagation
powx660 power NaN3 sNaN7 -> NaN7 Invalid_operation
powx661 power sNaN8 NaN6 -> NaN8 Invalid_operation
powx662 power 1 sNaN7 -> NaN7 Invalid_operation
powx663 power sNaN8 1 -> NaN8 Invalid_operation
powx664 power Inf sNaN7 -> NaN7 Invalid_operation
powx665 power sNaN8 Inf -> NaN Invalid_operation
powx666 power Inf NaN9 -> NaN9
powx667 power NaN6 Inf -> NaN Invalid_operation
powx668 power 1 NaN5 -> NaN5
powx669 power NaN2 1 -> NaN2
powx670 power NaN2 Nan4 -> NaN2
powx671 power NaN Nan4 -> NaN
powx672 power NaN345 Nan -> NaN345
powx673 power Inf -sNaN7 -> -NaN7 Invalid_operation
powx674 power -sNaN8 Inf -> NaN Invalid_operation
powx675 power Inf -NaN9 -> -NaN9
powx676 power -NaN6 Inf -> NaN Invalid_operation
powx677 power -NaN2 -Nan4 -> -NaN2
-- Examples from extended specification
powx690 power Inf -2 -> 0
powx691 power Inf -1 -> 0
powx692 power Inf 0 -> 1
powx693 power Inf 1 -> Infinity
powx694 power Inf 2 -> Infinity
powx695 power -Inf -2 -> 0
powx696 power -Inf -1 -> -0
powx697 power -Inf 0 -> 1
powx698 power -Inf 1 -> -Infinity
powx699 power -Inf 2 -> Infinity
powx700 power 0 0 -> NaN Invalid_operation
-- long operand and RHS range checks
maxexponent: 999
minexponent: -999
precision: 9
powx701 power 12345678000 1 -> 1.23456780E+10 Rounded
powx702 power 1234567800 1 -> 1.23456780E+9 Rounded
powx703 power 1234567890 1 -> 1.23456789E+9 Rounded
powx704 power 1234567891 1 -> 1.23456789E+9 Inexact Rounded
powx705 power 12345678901 1 -> 1.23456789E+10 Inexact Rounded
powx706 power 1234567896 1 -> 1.23456790E+9 Inexact Rounded
powx707 power 1 12345678000 -> NaN Invalid_operation
powx708 power 1 1234567800 -> NaN Invalid_operation
powx709 power 1 1234567890 -> NaN Invalid_operation
powx710 power 1 11234567891 -> NaN Invalid_operation
powx711 power 1 12345678901 -> NaN Invalid_operation
powx712 power 1 1234567896 -> NaN Invalid_operation
powx713 power 1 -1234567896 -> NaN Invalid_operation
powx714 power 1 1000000000 -> NaN Invalid_operation
powx715 power 1 -1000000000 -> NaN Invalid_operation
precision: 15
-- still checking
powx741 power 12345678000 1 -> 12345678000
powx742 power 1234567800 1 -> 1234567800
powx743 power 1234567890 1 -> 1234567890
powx744 power 1234567891 1 -> 1234567891
powx745 power 12345678901 1 -> 12345678901
powx746 power 1234567896 1 -> 1234567896
powx747 power 1 12345678000 -> NaN Invalid_operation
powx748 power 1 -1234567896 -> NaN Invalid_operation
powx749 power 1 1000000000 -> NaN Invalid_operation
powx740 power 1 -1000000000 -> NaN Invalid_operation
-- check for double-rounded subnormals
precision: 5
maxexponent: 79
minexponent: -79
powx750 power 1.2347E-40 2 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-- Null tests
powx900 power 1 # -> NaN Invalid_operation
powx901 power # 1 -> NaN Invalid_operation

View file

@ -1,780 +0,0 @@
------------------------------------------------------------------------
-- quantize.decTest -- decimal quantize operation --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- Most of the tests here assume a "regular pattern", where the
-- sign and coefficient are +1.
-- 2004.03.15 Underflow for quantize is suppressed
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
-- sanity checks
quax001 quantize 0 1e0 -> 0
quax002 quantize 1 1e0 -> 1
quax003 quantize 0.1 1e+2 -> 0E+2 Inexact Rounded
quax005 quantize 0.1 1e+1 -> 0E+1 Inexact Rounded
quax006 quantize 0.1 1e0 -> 0 Inexact Rounded
quax007 quantize 0.1 1e-1 -> 0.1
quax008 quantize 0.1 1e-2 -> 0.10
quax009 quantize 0.1 1e-3 -> 0.100
quax010 quantize 0.9 1e+2 -> 0E+2 Inexact Rounded
quax011 quantize 0.9 1e+1 -> 0E+1 Inexact Rounded
quax012 quantize 0.9 1e+0 -> 1 Inexact Rounded
quax013 quantize 0.9 1e-1 -> 0.9
quax014 quantize 0.9 1e-2 -> 0.90
quax015 quantize 0.9 1e-3 -> 0.900
-- negatives
quax021 quantize -0 1e0 -> -0
quax022 quantize -1 1e0 -> -1
quax023 quantize -0.1 1e+2 -> -0E+2 Inexact Rounded
quax025 quantize -0.1 1e+1 -> -0E+1 Inexact Rounded
quax026 quantize -0.1 1e0 -> -0 Inexact Rounded
quax027 quantize -0.1 1e-1 -> -0.1
quax028 quantize -0.1 1e-2 -> -0.10
quax029 quantize -0.1 1e-3 -> -0.100
quax030 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded
quax031 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded
quax032 quantize -0.9 1e+0 -> -1 Inexact Rounded
quax033 quantize -0.9 1e-1 -> -0.9
quax034 quantize -0.9 1e-2 -> -0.90
quax035 quantize -0.9 1e-3 -> -0.900
quax036 quantize -0.5 1e+2 -> -0E+2 Inexact Rounded
quax037 quantize -0.5 1e+1 -> -0E+1 Inexact Rounded
quax038 quantize -0.5 1e+0 -> -1 Inexact Rounded
quax039 quantize -0.5 1e-1 -> -0.5
quax040 quantize -0.5 1e-2 -> -0.50
quax041 quantize -0.5 1e-3 -> -0.500
quax042 quantize -0.9 1e+2 -> -0E+2 Inexact Rounded
quax043 quantize -0.9 1e+1 -> -0E+1 Inexact Rounded
quax044 quantize -0.9 1e+0 -> -1 Inexact Rounded
quax045 quantize -0.9 1e-1 -> -0.9
quax046 quantize -0.9 1e-2 -> -0.90
quax047 quantize -0.9 1e-3 -> -0.900
-- examples from Specification
quax060 quantize 2.17 0.001 -> 2.170
quax061 quantize 2.17 0.01 -> 2.17
quax062 quantize 2.17 0.1 -> 2.2 Inexact Rounded
quax063 quantize 2.17 1e+0 -> 2 Inexact Rounded
quax064 quantize 2.17 1e+1 -> 0E+1 Inexact Rounded
quax065 quantize -Inf Inf -> -Infinity
quax066 quantize 2 Inf -> NaN Invalid_operation
quax067 quantize -0.1 1 -> -0 Inexact Rounded
quax068 quantize -0 1e+5 -> -0E+5
quax069 quantize +35236450.6 1e-2 -> NaN Invalid_operation
quax070 quantize -35236450.6 1e-2 -> NaN Invalid_operation
quax071 quantize 217 1e-1 -> 217.0
quax072 quantize 217 1e+0 -> 217
quax073 quantize 217 1e+1 -> 2.2E+2 Inexact Rounded
quax074 quantize 217 1e+2 -> 2E+2 Inexact Rounded
-- general tests ..
quax089 quantize 12 1e+4 -> 0E+4 Inexact Rounded
quax090 quantize 12 1e+3 -> 0E+3 Inexact Rounded
quax091 quantize 12 1e+2 -> 0E+2 Inexact Rounded
quax092 quantize 12 1e+1 -> 1E+1 Inexact Rounded
quax093 quantize 1.2345 1e-2 -> 1.23 Inexact Rounded
quax094 quantize 1.2355 1e-2 -> 1.24 Inexact Rounded
quax095 quantize 1.2345 1e-6 -> 1.234500
quax096 quantize 9.9999 1e-2 -> 10.00 Inexact Rounded
quax097 quantize 0.0001 1e-2 -> 0.00 Inexact Rounded
quax098 quantize 0.001 1e-2 -> 0.00 Inexact Rounded
quax099 quantize 0.009 1e-2 -> 0.01 Inexact Rounded
quax100 quantize 92 1e+2 -> 1E+2 Inexact Rounded
quax101 quantize -1 1e0 -> -1
quax102 quantize -1 1e-1 -> -1.0
quax103 quantize -1 1e-2 -> -1.00
quax104 quantize 0 1e0 -> 0
quax105 quantize 0 1e-1 -> 0.0
quax106 quantize 0 1e-2 -> 0.00
quax107 quantize 0.00 1e0 -> 0
quax108 quantize 0 1e+1 -> 0E+1
quax109 quantize 0 1e+2 -> 0E+2
quax110 quantize +1 1e0 -> 1
quax111 quantize +1 1e-1 -> 1.0
quax112 quantize +1 1e-2 -> 1.00
quax120 quantize 1.04 1e-3 -> 1.040
quax121 quantize 1.04 1e-2 -> 1.04
quax122 quantize 1.04 1e-1 -> 1.0 Inexact Rounded
quax123 quantize 1.04 1e0 -> 1 Inexact Rounded
quax124 quantize 1.05 1e-3 -> 1.050
quax125 quantize 1.05 1e-2 -> 1.05
quax126 quantize 1.05 1e-1 -> 1.1 Inexact Rounded
quax127 quantize 1.05 1e0 -> 1 Inexact Rounded
quax128 quantize 1.05 1e-3 -> 1.050
quax129 quantize 1.05 1e-2 -> 1.05
quax130 quantize 1.05 1e-1 -> 1.1 Inexact Rounded
quax131 quantize 1.05 1e0 -> 1 Inexact Rounded
quax132 quantize 1.06 1e-3 -> 1.060
quax133 quantize 1.06 1e-2 -> 1.06
quax134 quantize 1.06 1e-1 -> 1.1 Inexact Rounded
quax135 quantize 1.06 1e0 -> 1 Inexact Rounded
quax140 quantize -10 1e-2 -> -10.00
quax141 quantize +1 1e-2 -> 1.00
quax142 quantize +10 1e-2 -> 10.00
quax143 quantize 1E+10 1e-2 -> NaN Invalid_operation
quax144 quantize 1E-10 1e-2 -> 0.00 Inexact Rounded
quax145 quantize 1E-3 1e-2 -> 0.00 Inexact Rounded
quax146 quantize 1E-2 1e-2 -> 0.01
quax147 quantize 1E-1 1e-2 -> 0.10
quax148 quantize 0E-10 1e-2 -> 0.00
quax150 quantize 1.0600 1e-5 -> 1.06000
quax151 quantize 1.0600 1e-4 -> 1.0600
quax152 quantize 1.0600 1e-3 -> 1.060 Rounded
quax153 quantize 1.0600 1e-2 -> 1.06 Rounded
quax154 quantize 1.0600 1e-1 -> 1.1 Inexact Rounded
quax155 quantize 1.0600 1e0 -> 1 Inexact Rounded
-- base tests with non-1 coefficients
quax161 quantize 0 -9e0 -> 0
quax162 quantize 1 -7e0 -> 1
quax163 quantize 0.1 -1e+2 -> 0E+2 Inexact Rounded
quax165 quantize 0.1 0e+1 -> 0E+1 Inexact Rounded
quax166 quantize 0.1 2e0 -> 0 Inexact Rounded
quax167 quantize 0.1 3e-1 -> 0.1
quax168 quantize 0.1 44e-2 -> 0.10
quax169 quantize 0.1 555e-3 -> 0.100
quax170 quantize 0.9 6666e+2 -> 0E+2 Inexact Rounded
quax171 quantize 0.9 -777e+1 -> 0E+1 Inexact Rounded
quax172 quantize 0.9 -88e+0 -> 1 Inexact Rounded
quax173 quantize 0.9 -9e-1 -> 0.9
quax174 quantize 0.9 0e-2 -> 0.90
quax175 quantize 0.9 1.1e-3 -> 0.9000
-- negatives
quax181 quantize -0 1.1e0 -> -0.0
quax182 quantize -1 -1e0 -> -1
quax183 quantize -0.1 11e+2 -> -0E+2 Inexact Rounded
quax185 quantize -0.1 111e+1 -> -0E+1 Inexact Rounded
quax186 quantize -0.1 71e0 -> -0 Inexact Rounded
quax187 quantize -0.1 -91e-1 -> -0.1
quax188 quantize -0.1 -.1e-2 -> -0.100
quax189 quantize -0.1 -1e-3 -> -0.100
quax190 quantize -0.9 0e+2 -> -0E+2 Inexact Rounded
quax191 quantize -0.9 -0e+1 -> -0E+1 Inexact Rounded
quax192 quantize -0.9 -10e+0 -> -1 Inexact Rounded
quax193 quantize -0.9 100e-1 -> -0.9
quax194 quantize -0.9 999e-2 -> -0.90
-- +ve exponents ..
quax201 quantize -1 1e+0 -> -1
quax202 quantize -1 1e+1 -> -0E+1 Inexact Rounded
quax203 quantize -1 1e+2 -> -0E+2 Inexact Rounded
quax204 quantize 0 1e+0 -> 0
quax205 quantize 0 1e+1 -> 0E+1
quax206 quantize 0 1e+2 -> 0E+2
quax207 quantize +1 1e+0 -> 1
quax208 quantize +1 1e+1 -> 0E+1 Inexact Rounded
quax209 quantize +1 1e+2 -> 0E+2 Inexact Rounded
quax220 quantize 1.04 1e+3 -> 0E+3 Inexact Rounded
quax221 quantize 1.04 1e+2 -> 0E+2 Inexact Rounded
quax222 quantize 1.04 1e+1 -> 0E+1 Inexact Rounded
quax223 quantize 1.04 1e+0 -> 1 Inexact Rounded
quax224 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded
quax225 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded
quax226 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded
quax227 quantize 1.05 1e+0 -> 1 Inexact Rounded
quax228 quantize 1.05 1e+3 -> 0E+3 Inexact Rounded
quax229 quantize 1.05 1e+2 -> 0E+2 Inexact Rounded
quax230 quantize 1.05 1e+1 -> 0E+1 Inexact Rounded
quax231 quantize 1.05 1e+0 -> 1 Inexact Rounded
quax232 quantize 1.06 1e+3 -> 0E+3 Inexact Rounded
quax233 quantize 1.06 1e+2 -> 0E+2 Inexact Rounded
quax234 quantize 1.06 1e+1 -> 0E+1 Inexact Rounded
quax235 quantize 1.06 1e+0 -> 1 Inexact Rounded
quax240 quantize -10 1e+1 -> -1E+1 Rounded
quax241 quantize +1 1e+1 -> 0E+1 Inexact Rounded
quax242 quantize +10 1e+1 -> 1E+1 Rounded
quax243 quantize 1E+1 1e+1 -> 1E+1 -- underneath this is E+1
quax244 quantize 1E+2 1e+1 -> 1.0E+2 -- underneath this is E+1
quax245 quantize 1E+3 1e+1 -> 1.00E+3 -- underneath this is E+1
quax246 quantize 1E+4 1e+1 -> 1.000E+4 -- underneath this is E+1
quax247 quantize 1E+5 1e+1 -> 1.0000E+5 -- underneath this is E+1
quax248 quantize 1E+6 1e+1 -> 1.00000E+6 -- underneath this is E+1
quax249 quantize 1E+7 1e+1 -> 1.000000E+7 -- underneath this is E+1
quax250 quantize 1E+8 1e+1 -> 1.0000000E+8 -- underneath this is E+1
quax251 quantize 1E+9 1e+1 -> 1.00000000E+9 -- underneath this is E+1
-- next one tries to add 9 zeros
quax252 quantize 1E+10 1e+1 -> NaN Invalid_operation
quax253 quantize 1E-10 1e+1 -> 0E+1 Inexact Rounded
quax254 quantize 1E-2 1e+1 -> 0E+1 Inexact Rounded
quax255 quantize 0E-10 1e+1 -> 0E+1
quax256 quantize -0E-10 1e+1 -> -0E+1
quax257 quantize -0E-1 1e+1 -> -0E+1
quax258 quantize -0 1e+1 -> -0E+1
quax259 quantize -0E+1 1e+1 -> -0E+1
quax260 quantize -10 1e+2 -> -0E+2 Inexact Rounded
quax261 quantize +1 1e+2 -> 0E+2 Inexact Rounded
quax262 quantize +10 1e+2 -> 0E+2 Inexact Rounded
quax263 quantize 1E+1 1e+2 -> 0E+2 Inexact Rounded
quax264 quantize 1E+2 1e+2 -> 1E+2
quax265 quantize 1E+3 1e+2 -> 1.0E+3
quax266 quantize 1E+4 1e+2 -> 1.00E+4
quax267 quantize 1E+5 1e+2 -> 1.000E+5
quax268 quantize 1E+6 1e+2 -> 1.0000E+6
quax269 quantize 1E+7 1e+2 -> 1.00000E+7
quax270 quantize 1E+8 1e+2 -> 1.000000E+8
quax271 quantize 1E+9 1e+2 -> 1.0000000E+9
quax272 quantize 1E+10 1e+2 -> 1.00000000E+10
quax273 quantize 1E-10 1e+2 -> 0E+2 Inexact Rounded
quax274 quantize 1E-2 1e+2 -> 0E+2 Inexact Rounded
quax275 quantize 0E-10 1e+2 -> 0E+2
quax280 quantize -10 1e+3 -> -0E+3 Inexact Rounded
quax281 quantize +1 1e+3 -> 0E+3 Inexact Rounded
quax282 quantize +10 1e+3 -> 0E+3 Inexact Rounded
quax283 quantize 1E+1 1e+3 -> 0E+3 Inexact Rounded
quax284 quantize 1E+2 1e+3 -> 0E+3 Inexact Rounded
quax285 quantize 1E+3 1e+3 -> 1E+3
quax286 quantize 1E+4 1e+3 -> 1.0E+4
quax287 quantize 1E+5 1e+3 -> 1.00E+5
quax288 quantize 1E+6 1e+3 -> 1.000E+6
quax289 quantize 1E+7 1e+3 -> 1.0000E+7
quax290 quantize 1E+8 1e+3 -> 1.00000E+8
quax291 quantize 1E+9 1e+3 -> 1.000000E+9
quax292 quantize 1E+10 1e+3 -> 1.0000000E+10
quax293 quantize 1E-10 1e+3 -> 0E+3 Inexact Rounded
quax294 quantize 1E-2 1e+3 -> 0E+3 Inexact Rounded
quax295 quantize 0E-10 1e+3 -> 0E+3
-- round up from below [sign wrong in JIT compiler once]
quax300 quantize 0.0078 1e-5 -> 0.00780
quax301 quantize 0.0078 1e-4 -> 0.0078
quax302 quantize 0.0078 1e-3 -> 0.008 Inexact Rounded
quax303 quantize 0.0078 1e-2 -> 0.01 Inexact Rounded
quax304 quantize 0.0078 1e-1 -> 0.0 Inexact Rounded
quax305 quantize 0.0078 1e0 -> 0 Inexact Rounded
quax306 quantize 0.0078 1e+1 -> 0E+1 Inexact Rounded
quax307 quantize 0.0078 1e+2 -> 0E+2 Inexact Rounded
quax310 quantize -0.0078 1e-5 -> -0.00780
quax311 quantize -0.0078 1e-4 -> -0.0078
quax312 quantize -0.0078 1e-3 -> -0.008 Inexact Rounded
quax313 quantize -0.0078 1e-2 -> -0.01 Inexact Rounded
quax314 quantize -0.0078 1e-1 -> -0.0 Inexact Rounded
quax315 quantize -0.0078 1e0 -> -0 Inexact Rounded
quax316 quantize -0.0078 1e+1 -> -0E+1 Inexact Rounded
quax317 quantize -0.0078 1e+2 -> -0E+2 Inexact Rounded
quax320 quantize 0.078 1e-5 -> 0.07800
quax321 quantize 0.078 1e-4 -> 0.0780
quax322 quantize 0.078 1e-3 -> 0.078
quax323 quantize 0.078 1e-2 -> 0.08 Inexact Rounded
quax324 quantize 0.078 1e-1 -> 0.1 Inexact Rounded
quax325 quantize 0.078 1e0 -> 0 Inexact Rounded
quax326 quantize 0.078 1e+1 -> 0E+1 Inexact Rounded
quax327 quantize 0.078 1e+2 -> 0E+2 Inexact Rounded
quax330 quantize -0.078 1e-5 -> -0.07800
quax331 quantize -0.078 1e-4 -> -0.0780
quax332 quantize -0.078 1e-3 -> -0.078
quax333 quantize -0.078 1e-2 -> -0.08 Inexact Rounded
quax334 quantize -0.078 1e-1 -> -0.1 Inexact Rounded
quax335 quantize -0.078 1e0 -> -0 Inexact Rounded
quax336 quantize -0.078 1e+1 -> -0E+1 Inexact Rounded
quax337 quantize -0.078 1e+2 -> -0E+2 Inexact Rounded
quax340 quantize 0.78 1e-5 -> 0.78000
quax341 quantize 0.78 1e-4 -> 0.7800
quax342 quantize 0.78 1e-3 -> 0.780
quax343 quantize 0.78 1e-2 -> 0.78
quax344 quantize 0.78 1e-1 -> 0.8 Inexact Rounded
quax345 quantize 0.78 1e0 -> 1 Inexact Rounded
quax346 quantize 0.78 1e+1 -> 0E+1 Inexact Rounded
quax347 quantize 0.78 1e+2 -> 0E+2 Inexact Rounded
quax350 quantize -0.78 1e-5 -> -0.78000
quax351 quantize -0.78 1e-4 -> -0.7800
quax352 quantize -0.78 1e-3 -> -0.780
quax353 quantize -0.78 1e-2 -> -0.78
quax354 quantize -0.78 1e-1 -> -0.8 Inexact Rounded
quax355 quantize -0.78 1e0 -> -1 Inexact Rounded
quax356 quantize -0.78 1e+1 -> -0E+1 Inexact Rounded
quax357 quantize -0.78 1e+2 -> -0E+2 Inexact Rounded
quax360 quantize 7.8 1e-5 -> 7.80000
quax361 quantize 7.8 1e-4 -> 7.8000
quax362 quantize 7.8 1e-3 -> 7.800
quax363 quantize 7.8 1e-2 -> 7.80
quax364 quantize 7.8 1e-1 -> 7.8
quax365 quantize 7.8 1e0 -> 8 Inexact Rounded
quax366 quantize 7.8 1e+1 -> 1E+1 Inexact Rounded
quax367 quantize 7.8 1e+2 -> 0E+2 Inexact Rounded
quax368 quantize 7.8 1e+3 -> 0E+3 Inexact Rounded
quax370 quantize -7.8 1e-5 -> -7.80000
quax371 quantize -7.8 1e-4 -> -7.8000
quax372 quantize -7.8 1e-3 -> -7.800
quax373 quantize -7.8 1e-2 -> -7.80
quax374 quantize -7.8 1e-1 -> -7.8
quax375 quantize -7.8 1e0 -> -8 Inexact Rounded
quax376 quantize -7.8 1e+1 -> -1E+1 Inexact Rounded
quax377 quantize -7.8 1e+2 -> -0E+2 Inexact Rounded
quax378 quantize -7.8 1e+3 -> -0E+3 Inexact Rounded
-- some individuals
precision: 9
quax380 quantize 352364.506 1e-2 -> 352364.51 Inexact Rounded
quax381 quantize 3523645.06 1e-2 -> 3523645.06
quax382 quantize 35236450.6 1e-2 -> NaN Invalid_operation
quax383 quantize 352364506 1e-2 -> NaN Invalid_operation
quax384 quantize -352364.506 1e-2 -> -352364.51 Inexact Rounded
quax385 quantize -3523645.06 1e-2 -> -3523645.06
quax386 quantize -35236450.6 1e-2 -> NaN Invalid_operation
quax387 quantize -352364506 1e-2 -> NaN Invalid_operation
rounding: down
quax389 quantize 35236450.6 1e-2 -> NaN Invalid_operation
-- ? should that one instead have been:
-- quax389 quantize 35236450.6 1e-2 -> NaN Invalid_operation
rounding: half_up
-- and a few more from e-mail discussions
precision: 7
quax391 quantize 12.34567 1e-3 -> 12.346 Inexact Rounded
quax392 quantize 123.4567 1e-3 -> 123.457 Inexact Rounded
quax393 quantize 1234.567 1e-3 -> 1234.567
quax394 quantize 12345.67 1e-3 -> NaN Invalid_operation
quax395 quantize 123456.7 1e-3 -> NaN Invalid_operation
quax396 quantize 1234567. 1e-3 -> NaN Invalid_operation
-- some 9999 round-up cases
precision: 9
quax400 quantize 9.999 1e-5 -> 9.99900
quax401 quantize 9.999 1e-4 -> 9.9990
quax402 quantize 9.999 1e-3 -> 9.999
quax403 quantize 9.999 1e-2 -> 10.00 Inexact Rounded
quax404 quantize 9.999 1e-1 -> 10.0 Inexact Rounded
quax405 quantize 9.999 1e0 -> 10 Inexact Rounded
quax406 quantize 9.999 1e1 -> 1E+1 Inexact Rounded
quax407 quantize 9.999 1e2 -> 0E+2 Inexact Rounded
quax410 quantize 0.999 1e-5 -> 0.99900
quax411 quantize 0.999 1e-4 -> 0.9990
quax412 quantize 0.999 1e-3 -> 0.999
quax413 quantize 0.999 1e-2 -> 1.00 Inexact Rounded
quax414 quantize 0.999 1e-1 -> 1.0 Inexact Rounded
quax415 quantize 0.999 1e0 -> 1 Inexact Rounded
quax416 quantize 0.999 1e1 -> 0E+1 Inexact Rounded
quax420 quantize 0.0999 1e-5 -> 0.09990
quax421 quantize 0.0999 1e-4 -> 0.0999
quax422 quantize 0.0999 1e-3 -> 0.100 Inexact Rounded
quax423 quantize 0.0999 1e-2 -> 0.10 Inexact Rounded
quax424 quantize 0.0999 1e-1 -> 0.1 Inexact Rounded
quax425 quantize 0.0999 1e0 -> 0 Inexact Rounded
quax426 quantize 0.0999 1e1 -> 0E+1 Inexact Rounded
quax430 quantize 0.00999 1e-5 -> 0.00999
quax431 quantize 0.00999 1e-4 -> 0.0100 Inexact Rounded
quax432 quantize 0.00999 1e-3 -> 0.010 Inexact Rounded
quax433 quantize 0.00999 1e-2 -> 0.01 Inexact Rounded
quax434 quantize 0.00999 1e-1 -> 0.0 Inexact Rounded
quax435 quantize 0.00999 1e0 -> 0 Inexact Rounded
quax436 quantize 0.00999 1e1 -> 0E+1 Inexact Rounded
quax440 quantize 0.000999 1e-5 -> 0.00100 Inexact Rounded
quax441 quantize 0.000999 1e-4 -> 0.0010 Inexact Rounded
quax442 quantize 0.000999 1e-3 -> 0.001 Inexact Rounded
quax443 quantize 0.000999 1e-2 -> 0.00 Inexact Rounded
quax444 quantize 0.000999 1e-1 -> 0.0 Inexact Rounded
quax445 quantize 0.000999 1e0 -> 0 Inexact Rounded
quax446 quantize 0.000999 1e1 -> 0E+1 Inexact Rounded
precision: 8
quax449 quantize 9.999E-15 1e-23 -> NaN Invalid_operation
quax450 quantize 9.999E-15 1e-22 -> 9.9990000E-15
quax451 quantize 9.999E-15 1e-21 -> 9.999000E-15
quax452 quantize 9.999E-15 1e-20 -> 9.99900E-15
quax453 quantize 9.999E-15 1e-19 -> 9.9990E-15
quax454 quantize 9.999E-15 1e-18 -> 9.999E-15
quax455 quantize 9.999E-15 1e-17 -> 1.000E-14 Inexact Rounded
quax456 quantize 9.999E-15 1e-16 -> 1.00E-14 Inexact Rounded
quax457 quantize 9.999E-15 1e-15 -> 1.0E-14 Inexact Rounded
quax458 quantize 9.999E-15 1e-14 -> 1E-14 Inexact Rounded
quax459 quantize 9.999E-15 1e-13 -> 0E-13 Inexact Rounded
quax460 quantize 9.999E-15 1e-12 -> 0E-12 Inexact Rounded
quax461 quantize 9.999E-15 1e-11 -> 0E-11 Inexact Rounded
quax462 quantize 9.999E-15 1e-10 -> 0E-10 Inexact Rounded
quax463 quantize 9.999E-15 1e-9 -> 0E-9 Inexact Rounded
quax464 quantize 9.999E-15 1e-8 -> 0E-8 Inexact Rounded
quax465 quantize 9.999E-15 1e-7 -> 0E-7 Inexact Rounded
quax466 quantize 9.999E-15 1e-6 -> 0.000000 Inexact Rounded
quax467 quantize 9.999E-15 1e-5 -> 0.00000 Inexact Rounded
quax468 quantize 9.999E-15 1e-4 -> 0.0000 Inexact Rounded
quax469 quantize 9.999E-15 1e-3 -> 0.000 Inexact Rounded
quax470 quantize 9.999E-15 1e-2 -> 0.00 Inexact Rounded
quax471 quantize 9.999E-15 1e-1 -> 0.0 Inexact Rounded
quax472 quantize 9.999E-15 1e0 -> 0 Inexact Rounded
quax473 quantize 9.999E-15 1e1 -> 0E+1 Inexact Rounded
-- long operand checks [rhs checks removed]
maxexponent: 999
minexponent: -999
precision: 9
quax481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
quax482 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded
quax483 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded
quax484 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded
quax485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
quax486 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded
-- a potential double-round
quax487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
quax488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
precision: 15
quax491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
quax492 quantize 1234567800 1e+1 -> 1.23456780E+9 Rounded
quax493 quantize 1234567890 1e+1 -> 1.23456789E+9 Rounded
quax494 quantize 1234567891 1e+1 -> 1.23456789E+9 Inexact Rounded
quax495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
quax496 quantize 1234567896 1e+1 -> 1.23456790E+9 Inexact Rounded
quax497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
quax498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-- Zeros
quax500 quantize 0 1e1 -> 0E+1
quax501 quantize 0 1e0 -> 0
quax502 quantize 0 1e-1 -> 0.0
quax503 quantize 0.0 1e-1 -> 0.0
quax504 quantize 0.0 1e0 -> 0
quax505 quantize 0.0 1e+1 -> 0E+1
quax506 quantize 0E+1 1e-1 -> 0.0
quax507 quantize 0E+1 1e0 -> 0
quax508 quantize 0E+1 1e+1 -> 0E+1
quax509 quantize -0 1e1 -> -0E+1
quax510 quantize -0 1e0 -> -0
quax511 quantize -0 1e-1 -> -0.0
quax512 quantize -0.0 1e-1 -> -0.0
quax513 quantize -0.0 1e0 -> -0
quax514 quantize -0.0 1e+1 -> -0E+1
quax515 quantize -0E+1 1e-1 -> -0.0
quax516 quantize -0E+1 1e0 -> -0
quax517 quantize -0E+1 1e+1 -> -0E+1
-- Suspicious RHS values
maxexponent: 999999999
minexponent: -999999999
precision: 15
quax520 quantize 1.234 1e999999000 -> 0E+999999000 Inexact Rounded
quax521 quantize 123.456 1e999999000 -> 0E+999999000 Inexact Rounded
quax522 quantize 1.234 1e999999999 -> 0E+999999999 Inexact Rounded
quax523 quantize 123.456 1e999999999 -> 0E+999999999 Inexact Rounded
quax524 quantize 123.456 1e1000000000 -> NaN Invalid_operation
quax525 quantize 123.456 1e12345678903 -> NaN Invalid_operation
-- next four are "won't fit" overflows
quax526 quantize 1.234 1e-999999000 -> NaN Invalid_operation
quax527 quantize 123.456 1e-999999000 -> NaN Invalid_operation
quax528 quantize 1.234 1e-999999999 -> NaN Invalid_operation
quax529 quantize 123.456 1e-999999999 -> NaN Invalid_operation
quax530 quantize 123.456 1e-1000000014 -> NaN Invalid_operation
quax531 quantize 123.456 1e-12345678903 -> NaN Invalid_operation
maxexponent: 999
minexponent: -999
precision: 15
quax532 quantize 1.234E+999 1e999 -> 1E+999 Inexact Rounded
quax533 quantize 1.234E+998 1e999 -> 0E+999 Inexact Rounded
quax534 quantize 1.234 1e999 -> 0E+999 Inexact Rounded
quax535 quantize 1.234 1e1000 -> NaN Invalid_operation
quax536 quantize 1.234 1e5000 -> NaN Invalid_operation
quax537 quantize 0 1e-999 -> 0E-999
-- next two are "won't fit" overflows
quax538 quantize 1.234 1e-999 -> NaN Invalid_operation
quax539 quantize 1.234 1e-1000 -> NaN Invalid_operation
quax540 quantize 1.234 1e-5000 -> NaN Invalid_operation
-- [more below]
-- check bounds (lhs maybe out of range for destination, etc.)
precision: 7
quax541 quantize 1E+999 1e+999 -> 1E+999
quax542 quantize 1E+1000 1e+999 -> NaN Invalid_operation
quax543 quantize 1E+999 1e+1000 -> NaN Invalid_operation
quax544 quantize 1E-999 1e-999 -> 1E-999
quax545 quantize 1E-1000 1e-999 -> 0E-999 Inexact Rounded
quax546 quantize 1E-999 1e-1000 -> 1.0E-999
quax547 quantize 1E-1005 1e-999 -> 0E-999 Inexact Rounded
quax548 quantize 1E-1006 1e-999 -> 0E-999 Inexact Rounded
quax549 quantize 1E-1007 1e-999 -> 0E-999 Inexact Rounded
quax550 quantize 1E-998 1e-1005 -> NaN Invalid_operation -- won't fit
quax551 quantize 1E-999 1e-1005 -> 1.000000E-999
quax552 quantize 1E-1000 1e-1005 -> 1.00000E-1000 Subnormal
quax553 quantize 1E-999 1e-1006 -> NaN Invalid_operation
quax554 quantize 1E-999 1e-1007 -> NaN Invalid_operation
-- related subnormal rounding
quax555 quantize 1.666666E-999 1e-1005 -> 1.666666E-999
quax556 quantize 1.666666E-1000 1e-1005 -> 1.66667E-1000 Subnormal Inexact Rounded
quax557 quantize 1.666666E-1001 1e-1005 -> 1.6667E-1001 Subnormal Inexact Rounded
quax558 quantize 1.666666E-1002 1e-1005 -> 1.667E-1002 Subnormal Inexact Rounded
quax559 quantize 1.666666E-1003 1e-1005 -> 1.67E-1003 Subnormal Inexact Rounded
quax560 quantize 1.666666E-1004 1e-1005 -> 1.7E-1004 Subnormal Inexact Rounded
quax561 quantize 1.666666E-1005 1e-1005 -> 2E-1005 Subnormal Inexact Rounded
quax562 quantize 1.666666E-1006 1e-1005 -> 0E-1005 Inexact Rounded
quax563 quantize 1.666666E-1007 1e-1005 -> 0E-1005 Inexact Rounded
-- Specials
quax580 quantize Inf -Inf -> Infinity
quax581 quantize Inf 1e-1000 -> NaN Invalid_operation
quax582 quantize Inf 1e-1 -> NaN Invalid_operation
quax583 quantize Inf 1e0 -> NaN Invalid_operation
quax584 quantize Inf 1e1 -> NaN Invalid_operation
quax585 quantize Inf 1e1000 -> NaN Invalid_operation
quax586 quantize Inf Inf -> Infinity
quax587 quantize -1000 Inf -> NaN Invalid_operation
quax588 quantize -Inf Inf -> -Infinity
quax589 quantize -1 Inf -> NaN Invalid_operation
quax590 quantize 0 Inf -> NaN Invalid_operation
quax591 quantize 1 Inf -> NaN Invalid_operation
quax592 quantize 1000 Inf -> NaN Invalid_operation
quax593 quantize Inf Inf -> Infinity
quax594 quantize Inf 1e-0 -> NaN Invalid_operation
quax595 quantize -0 Inf -> NaN Invalid_operation
quax600 quantize -Inf -Inf -> -Infinity
quax601 quantize -Inf 1e-1000 -> NaN Invalid_operation
quax602 quantize -Inf 1e-1 -> NaN Invalid_operation
quax603 quantize -Inf 1e0 -> NaN Invalid_operation
quax604 quantize -Inf 1e1 -> NaN Invalid_operation
quax605 quantize -Inf 1e1000 -> NaN Invalid_operation
quax606 quantize -Inf Inf -> -Infinity
quax607 quantize -1000 Inf -> NaN Invalid_operation
quax608 quantize -Inf -Inf -> -Infinity
quax609 quantize -1 -Inf -> NaN Invalid_operation
quax610 quantize 0 -Inf -> NaN Invalid_operation
quax611 quantize 1 -Inf -> NaN Invalid_operation
quax612 quantize 1000 -Inf -> NaN Invalid_operation
quax613 quantize Inf -Inf -> Infinity
quax614 quantize -Inf 1e-0 -> NaN Invalid_operation
quax615 quantize -0 -Inf -> NaN Invalid_operation
quax621 quantize NaN -Inf -> NaN
quax622 quantize NaN 1e-1000 -> NaN
quax623 quantize NaN 1e-1 -> NaN
quax624 quantize NaN 1e0 -> NaN
quax625 quantize NaN 1e1 -> NaN
quax626 quantize NaN 1e1000 -> NaN
quax627 quantize NaN Inf -> NaN
quax628 quantize NaN NaN -> NaN
quax629 quantize -Inf NaN -> NaN
quax630 quantize -1000 NaN -> NaN
quax631 quantize -1 NaN -> NaN
quax632 quantize 0 NaN -> NaN
quax633 quantize 1 NaN -> NaN
quax634 quantize 1000 NaN -> NaN
quax635 quantize Inf NaN -> NaN
quax636 quantize NaN 1e-0 -> NaN
quax637 quantize -0 NaN -> NaN
quax641 quantize sNaN -Inf -> NaN Invalid_operation
quax642 quantize sNaN 1e-1000 -> NaN Invalid_operation
quax643 quantize sNaN 1e-1 -> NaN Invalid_operation
quax644 quantize sNaN 1e0 -> NaN Invalid_operation
quax645 quantize sNaN 1e1 -> NaN Invalid_operation
quax646 quantize sNaN 1e1000 -> NaN Invalid_operation
quax647 quantize sNaN NaN -> NaN Invalid_operation
quax648 quantize sNaN sNaN -> NaN Invalid_operation
quax649 quantize NaN sNaN -> NaN Invalid_operation
quax650 quantize -Inf sNaN -> NaN Invalid_operation
quax651 quantize -1000 sNaN -> NaN Invalid_operation
quax652 quantize -1 sNaN -> NaN Invalid_operation
quax653 quantize 0 sNaN -> NaN Invalid_operation
quax654 quantize 1 sNaN -> NaN Invalid_operation
quax655 quantize 1000 sNaN -> NaN Invalid_operation
quax656 quantize Inf sNaN -> NaN Invalid_operation
quax657 quantize NaN sNaN -> NaN Invalid_operation
quax658 quantize sNaN 1e-0 -> NaN Invalid_operation
quax659 quantize -0 sNaN -> NaN Invalid_operation
-- propagating NaNs
quax661 quantize NaN9 -Inf -> NaN9
quax662 quantize NaN8 919 -> NaN8
quax663 quantize NaN71 Inf -> NaN71
quax664 quantize NaN6 NaN5 -> NaN6
quax665 quantize -Inf NaN4 -> NaN4
quax666 quantize -919 NaN31 -> NaN31
quax667 quantize Inf NaN2 -> NaN2
quax671 quantize sNaN99 -Inf -> NaN99 Invalid_operation
quax672 quantize sNaN98 -11 -> NaN98 Invalid_operation
quax673 quantize sNaN97 NaN -> NaN97 Invalid_operation
quax674 quantize sNaN16 sNaN94 -> NaN16 Invalid_operation
quax675 quantize NaN95 sNaN93 -> NaN93 Invalid_operation
quax676 quantize -Inf sNaN92 -> NaN92 Invalid_operation
quax677 quantize 088 sNaN91 -> NaN91 Invalid_operation
quax678 quantize Inf sNaN90 -> NaN90 Invalid_operation
quax679 quantize NaN sNaN88 -> NaN88 Invalid_operation
quax681 quantize -NaN9 -Inf -> -NaN9
quax682 quantize -NaN8 919 -> -NaN8
quax683 quantize -NaN71 Inf -> -NaN71
quax684 quantize -NaN6 -NaN5 -> -NaN6
quax685 quantize -Inf -NaN4 -> -NaN4
quax686 quantize -919 -NaN31 -> -NaN31
quax687 quantize Inf -NaN2 -> -NaN2
quax691 quantize -sNaN99 -Inf -> -NaN99 Invalid_operation
quax692 quantize -sNaN98 -11 -> -NaN98 Invalid_operation
quax693 quantize -sNaN97 NaN -> -NaN97 Invalid_operation
quax694 quantize -sNaN16 sNaN94 -> -NaN16 Invalid_operation
quax695 quantize -NaN95 -sNaN93 -> -NaN93 Invalid_operation
quax696 quantize -Inf -sNaN92 -> -NaN92 Invalid_operation
quax697 quantize 088 -sNaN91 -> -NaN91 Invalid_operation
quax698 quantize Inf -sNaN90 -> -NaN90 Invalid_operation
quax699 quantize NaN -sNaN88 -> -NaN88 Invalid_operation
-- subnormals and underflow
precision: 4
maxexponent: 999
minexponent: -999
quax710 quantize 1.00E-999 1e-999 -> 1E-999 Rounded
quax711 quantize 0.1E-999 2e-1000 -> 1E-1000 Subnormal
quax712 quantize 0.10E-999 3e-1000 -> 1E-1000 Subnormal Rounded
quax713 quantize 0.100E-999 4e-1000 -> 1E-1000 Subnormal Rounded
quax714 quantize 0.01E-999 5e-1001 -> 1E-1001 Subnormal
-- next is rounded to Emin
quax715 quantize 0.999E-999 1e-999 -> 1E-999 Inexact Rounded
quax716 quantize 0.099E-999 10e-1000 -> 1E-1000 Inexact Rounded Subnormal
quax717 quantize 0.009E-999 1e-1001 -> 1E-1001 Inexact Rounded Subnormal
quax718 quantize 0.001E-999 1e-1001 -> 0E-1001 Inexact Rounded
quax719 quantize 0.0009E-999 1e-1001 -> 0E-1001 Inexact Rounded
quax720 quantize 0.0001E-999 1e-1001 -> 0E-1001 Inexact Rounded
quax730 quantize -1.00E-999 1e-999 -> -1E-999 Rounded
quax731 quantize -0.1E-999 1e-999 -> -0E-999 Rounded Inexact
quax732 quantize -0.10E-999 1e-999 -> -0E-999 Rounded Inexact
quax733 quantize -0.100E-999 1e-999 -> -0E-999 Rounded Inexact
quax734 quantize -0.01E-999 1e-999 -> -0E-999 Inexact Rounded
-- next is rounded to Emin
quax735 quantize -0.999E-999 90e-999 -> -1E-999 Inexact Rounded
quax736 quantize -0.099E-999 -1e-999 -> -0E-999 Inexact Rounded
quax737 quantize -0.009E-999 -1e-999 -> -0E-999 Inexact Rounded
quax738 quantize -0.001E-999 -0e-999 -> -0E-999 Inexact Rounded
quax739 quantize -0.0001E-999 0e-999 -> -0E-999 Inexact Rounded
quax740 quantize -1.00E-999 1e-1000 -> -1.0E-999 Rounded
quax741 quantize -0.1E-999 1e-1000 -> -1E-1000 Subnormal
quax742 quantize -0.10E-999 1e-1000 -> -1E-1000 Subnormal Rounded
quax743 quantize -0.100E-999 1e-1000 -> -1E-1000 Subnormal Rounded
quax744 quantize -0.01E-999 1e-1000 -> -0E-1000 Inexact Rounded
-- next is rounded to Emin
quax745 quantize -0.999E-999 1e-1000 -> -1.0E-999 Inexact Rounded
quax746 quantize -0.099E-999 1e-1000 -> -1E-1000 Inexact Rounded Subnormal
quax747 quantize -0.009E-999 1e-1000 -> -0E-1000 Inexact Rounded
quax748 quantize -0.001E-999 1e-1000 -> -0E-1000 Inexact Rounded
quax749 quantize -0.0001E-999 1e-1000 -> -0E-1000 Inexact Rounded
quax750 quantize -1.00E-999 1e-1001 -> -1.00E-999
quax751 quantize -0.1E-999 1e-1001 -> -1.0E-1000 Subnormal
quax752 quantize -0.10E-999 1e-1001 -> -1.0E-1000 Subnormal
quax753 quantize -0.100E-999 1e-1001 -> -1.0E-1000 Subnormal Rounded
quax754 quantize -0.01E-999 1e-1001 -> -1E-1001 Subnormal
-- next is rounded to Emin
quax755 quantize -0.999E-999 1e-1001 -> -1.00E-999 Inexact Rounded
quax756 quantize -0.099E-999 1e-1001 -> -1.0E-1000 Inexact Rounded Subnormal
quax757 quantize -0.009E-999 1e-1001 -> -1E-1001 Inexact Rounded Subnormal
quax758 quantize -0.001E-999 1e-1001 -> -0E-1001 Inexact Rounded
quax759 quantize -0.0001E-999 1e-1001 -> -0E-1001 Inexact Rounded
quax760 quantize -1.00E-999 1e-1002 -> -1.000E-999
quax761 quantize -0.1E-999 1e-1002 -> -1.00E-1000 Subnormal
quax762 quantize -0.10E-999 1e-1002 -> -1.00E-1000 Subnormal
quax763 quantize -0.100E-999 1e-1002 -> -1.00E-1000 Subnormal
quax764 quantize -0.01E-999 1e-1002 -> -1.0E-1001 Subnormal
quax765 quantize -0.999E-999 1e-1002 -> -9.99E-1000 Subnormal
quax766 quantize -0.099E-999 1e-1002 -> -9.9E-1001 Subnormal
quax767 quantize -0.009E-999 1e-1002 -> -9E-1002 Subnormal
quax768 quantize -0.001E-999 1e-1002 -> -1E-1002 Subnormal
quax769 quantize -0.0001E-999 1e-1002 -> -0E-1002 Inexact Rounded
-- rhs must be no less than Etiny
quax770 quantize -1.00E-999 1e-1003 -> NaN Invalid_operation
quax771 quantize -0.1E-999 1e-1003 -> NaN Invalid_operation
quax772 quantize -0.10E-999 1e-1003 -> NaN Invalid_operation
quax773 quantize -0.100E-999 1e-1003 -> NaN Invalid_operation
quax774 quantize -0.01E-999 1e-1003 -> NaN Invalid_operation
quax775 quantize -0.999E-999 1e-1003 -> NaN Invalid_operation
quax776 quantize -0.099E-999 1e-1003 -> NaN Invalid_operation
quax777 quantize -0.009E-999 1e-1003 -> NaN Invalid_operation
quax778 quantize -0.001E-999 1e-1003 -> NaN Invalid_operation
quax779 quantize -0.0001E-999 1e-1003 -> NaN Invalid_operation
quax780 quantize -0.0001E-999 1e-1004 -> NaN Invalid_operation
precision: 9
maxExponent: 999999999
minexponent: -999999999
-- some extremes derived from Rescale testcases
quax801 quantize 0 1e1000000000 -> NaN Invalid_operation
quax802 quantize 0 1e-1000000000 -> 0E-1000000000
quax803 quantize 0 1e2000000000 -> NaN Invalid_operation
quax804 quantize 0 1e-2000000000 -> NaN Invalid_operation
quax805 quantize 0 1e3000000000 -> NaN Invalid_operation
quax806 quantize 0 1e-3000000000 -> NaN Invalid_operation
quax807 quantize 0 1e4000000000 -> NaN Invalid_operation
quax808 quantize 0 1e-4000000000 -> NaN Invalid_operation
quax809 quantize 0 1e5000000000 -> NaN Invalid_operation
quax810 quantize 0 1e-5000000000 -> NaN Invalid_operation
quax811 quantize 0 1e6000000000 -> NaN Invalid_operation
quax812 quantize 0 1e-6000000000 -> NaN Invalid_operation
quax813 quantize 0 1e7000000000 -> NaN Invalid_operation
quax814 quantize 0 1e-7000000000 -> NaN Invalid_operation
quax815 quantize 0 1e8000000000 -> NaN Invalid_operation
quax816 quantize 0 1e-8000000000 -> NaN Invalid_operation
quax817 quantize 0 1e9000000000 -> NaN Invalid_operation
quax818 quantize 0 1e-9000000000 -> NaN Invalid_operation
quax819 quantize 0 1e9999999999 -> NaN Invalid_operation
quax820 quantize 0 1e-9999999999 -> NaN Invalid_operation
quax821 quantize 0 1e10000000000 -> NaN Invalid_operation
quax822 quantize 0 1e-10000000000 -> NaN Invalid_operation
quax843 quantize 0 1e999999999 -> 0E+999999999
quax844 quantize 0 1e1000000000 -> NaN Invalid_operation
quax845 quantize 0 1e-999999999 -> 0E-999999999
quax846 quantize 0 1e-1000000000 -> 0E-1000000000
quax847 quantize 0 1e-1000000001 -> 0E-1000000001
quax848 quantize 0 1e-1000000002 -> 0E-1000000002
quax849 quantize 0 1e-1000000003 -> 0E-1000000003
quax850 quantize 0 1e-1000000004 -> 0E-1000000004
quax851 quantize 0 1e-1000000005 -> 0E-1000000005
quax852 quantize 0 1e-1000000006 -> 0E-1000000006
quax853 quantize 0 1e-1000000007 -> 0E-1000000007
quax854 quantize 0 1e-1000000008 -> NaN Invalid_operation
quax861 quantize 1 1e+2147483649 -> NaN Invalid_operation
quax862 quantize 1 1e+2147483648 -> NaN Invalid_operation
quax863 quantize 1 1e+2147483647 -> NaN Invalid_operation
quax864 quantize 1 1e-2147483647 -> NaN Invalid_operation
quax865 quantize 1 1e-2147483648 -> NaN Invalid_operation
quax866 quantize 1 1e-2147483649 -> NaN Invalid_operation
-- Null tests
quax900 quantize 10 # -> NaN Invalid_operation
quax901 quantize # 1e10 -> NaN Invalid_operation

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,629 +0,0 @@
------------------------------------------------------------------------
-- remainder.decTest -- decimal remainder --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
-- sanity checks (as base, above)
remx001 remainder 1 1 -> 0
remx002 remainder 2 1 -> 0
remx003 remainder 1 2 -> 1
remx004 remainder 2 2 -> 0
remx005 remainder 0 1 -> 0
remx006 remainder 0 2 -> 0
remx007 remainder 1 3 -> 1
remx008 remainder 2 3 -> 2
remx009 remainder 3 3 -> 0
remx010 remainder 2.4 1 -> 0.4
remx011 remainder 2.4 -1 -> 0.4
remx012 remainder -2.4 1 -> -0.4
remx013 remainder -2.4 -1 -> -0.4
remx014 remainder 2.40 1 -> 0.40
remx015 remainder 2.400 1 -> 0.400
remx016 remainder 2.4 2 -> 0.4
remx017 remainder 2.400 2 -> 0.400
remx018 remainder 2. 2 -> 0
remx019 remainder 20 20 -> 0
remx020 remainder 187 187 -> 0
remx021 remainder 5 2 -> 1
remx022 remainder 5 2.0 -> 1.0
remx023 remainder 5 2.000 -> 1.000
remx024 remainder 5 0.200 -> 0.000
remx025 remainder 5 0.200 -> 0.000
remx030 remainder 1 2 -> 1
remx031 remainder 1 4 -> 1
remx032 remainder 1 8 -> 1
remx033 remainder 1 16 -> 1
remx034 remainder 1 32 -> 1
remx035 remainder 1 64 -> 1
remx040 remainder 1 -2 -> 1
remx041 remainder 1 -4 -> 1
remx042 remainder 1 -8 -> 1
remx043 remainder 1 -16 -> 1
remx044 remainder 1 -32 -> 1
remx045 remainder 1 -64 -> 1
remx050 remainder -1 2 -> -1
remx051 remainder -1 4 -> -1
remx052 remainder -1 8 -> -1
remx053 remainder -1 16 -> -1
remx054 remainder -1 32 -> -1
remx055 remainder -1 64 -> -1
remx060 remainder -1 -2 -> -1
remx061 remainder -1 -4 -> -1
remx062 remainder -1 -8 -> -1
remx063 remainder -1 -16 -> -1
remx064 remainder -1 -32 -> -1
remx065 remainder -1 -64 -> -1
remx066 remainder 999999999 1 -> 0
remx067 remainder 999999999.4 1 -> 0.4
remx068 remainder 999999999.5 1 -> 0.5
remx069 remainder 999999999.9 1 -> 0.9
remx070 remainder 999999999.999 1 -> 0.999
precision: 6
remx071 remainder 999999999 1 -> NaN Division_impossible
remx072 remainder 99999999 1 -> NaN Division_impossible
remx073 remainder 9999999 1 -> NaN Division_impossible
remx074 remainder 999999 1 -> 0
remx075 remainder 99999 1 -> 0
remx076 remainder 9999 1 -> 0
remx077 remainder 999 1 -> 0
remx078 remainder 99 1 -> 0
remx079 remainder 9 1 -> 0
precision: 9
remx080 remainder 0. 1 -> 0
remx081 remainder .0 1 -> 0.0
remx082 remainder 0.00 1 -> 0.00
remx083 remainder 0.00E+9 1 -> 0
remx084 remainder 0.00E+3 1 -> 0
remx085 remainder 0.00E+2 1 -> 0
remx086 remainder 0.00E+1 1 -> 0.0
remx087 remainder 0.00E+0 1 -> 0.00
remx088 remainder 0.00E-0 1 -> 0.00
remx089 remainder 0.00E-1 1 -> 0.000
remx090 remainder 0.00E-2 1 -> 0.0000
remx091 remainder 0.00E-3 1 -> 0.00000
remx092 remainder 0.00E-4 1 -> 0.000000
remx093 remainder 0.00E-5 1 -> 0E-7
remx094 remainder 0.00E-6 1 -> 0E-8
remx095 remainder 0.0000E-50 1 -> 0E-54
-- Various flavours of remainder by 0
precision: 9
maxexponent: 999999999
minexponent: -999999999
remx101 remainder 0 0 -> NaN Division_undefined
remx102 remainder 0 -0 -> NaN Division_undefined
remx103 remainder -0 0 -> NaN Division_undefined
remx104 remainder -0 -0 -> NaN Division_undefined
remx105 remainder 0.0E5 0 -> NaN Division_undefined
remx106 remainder 0.000 0 -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception, but
-- IEEE 854 is explicit that it is Invalid operation .. for
-- remainder-near, anyway]
remx107 remainder 0.0001 0 -> NaN Invalid_operation
remx108 remainder 0.01 0 -> NaN Invalid_operation
remx109 remainder 0.1 0 -> NaN Invalid_operation
remx110 remainder 1 0 -> NaN Invalid_operation
remx111 remainder 1 0.0 -> NaN Invalid_operation
remx112 remainder 10 0.0 -> NaN Invalid_operation
remx113 remainder 1E+100 0.0 -> NaN Invalid_operation
remx114 remainder 1E+1000 0 -> NaN Invalid_operation
remx115 remainder 0.0001 -0 -> NaN Invalid_operation
remx116 remainder 0.01 -0 -> NaN Invalid_operation
remx119 remainder 0.1 -0 -> NaN Invalid_operation
remx120 remainder 1 -0 -> NaN Invalid_operation
remx121 remainder 1 -0.0 -> NaN Invalid_operation
remx122 remainder 10 -0.0 -> NaN Invalid_operation
remx123 remainder 1E+100 -0.0 -> NaN Invalid_operation
remx124 remainder 1E+1000 -0 -> NaN Invalid_operation
-- and zeros on left
remx130 remainder 0 1 -> 0
remx131 remainder 0 -1 -> 0
remx132 remainder 0.0 1 -> 0.0
remx133 remainder 0.0 -1 -> 0.0
remx134 remainder -0 1 -> -0
remx135 remainder -0 -1 -> -0
remx136 remainder -0.0 1 -> -0.0
remx137 remainder -0.0 -1 -> -0.0
-- 0.5ers
remx143 remainder 0.5 2 -> 0.5
remx144 remainder 0.5 2.1 -> 0.5
remx145 remainder 0.5 2.01 -> 0.50
remx146 remainder 0.5 2.001 -> 0.500
remx147 remainder 0.50 2 -> 0.50
remx148 remainder 0.50 2.01 -> 0.50
remx149 remainder 0.50 2.001 -> 0.500
-- steadies
remx150 remainder 1 1 -> 0
remx151 remainder 1 2 -> 1
remx152 remainder 1 3 -> 1
remx153 remainder 1 4 -> 1
remx154 remainder 1 5 -> 1
remx155 remainder 1 6 -> 1
remx156 remainder 1 7 -> 1
remx157 remainder 1 8 -> 1
remx158 remainder 1 9 -> 1
remx159 remainder 1 10 -> 1
remx160 remainder 1 1 -> 0
remx161 remainder 2 1 -> 0
remx162 remainder 3 1 -> 0
remx163 remainder 4 1 -> 0
remx164 remainder 5 1 -> 0
remx165 remainder 6 1 -> 0
remx166 remainder 7 1 -> 0
remx167 remainder 8 1 -> 0
remx168 remainder 9 1 -> 0
remx169 remainder 10 1 -> 0
-- some differences from remainderNear
remx171 remainder 0.4 1.020 -> 0.400
remx172 remainder 0.50 1.020 -> 0.500
remx173 remainder 0.51 1.020 -> 0.510
remx174 remainder 0.52 1.020 -> 0.520
remx175 remainder 0.6 1.020 -> 0.600
-- More flavours of remainder by 0
maxexponent: 999999999
minexponent: -999999999
remx201 remainder 0 0 -> NaN Division_undefined
remx202 remainder 0.0E5 0 -> NaN Division_undefined
remx203 remainder 0.000 0 -> NaN Division_undefined
remx204 remainder 0.0001 0 -> NaN Invalid_operation
remx205 remainder 0.01 0 -> NaN Invalid_operation
remx206 remainder 0.1 0 -> NaN Invalid_operation
remx207 remainder 1 0 -> NaN Invalid_operation
remx208 remainder 1 0.0 -> NaN Invalid_operation
remx209 remainder 10 0.0 -> NaN Invalid_operation
remx210 remainder 1E+100 0.0 -> NaN Invalid_operation
remx211 remainder 1E+1000 0 -> NaN Invalid_operation
-- some differences from remainderNear
remx231 remainder -0.4 1.020 -> -0.400
remx232 remainder -0.50 1.020 -> -0.500
remx233 remainder -0.51 1.020 -> -0.510
remx234 remainder -0.52 1.020 -> -0.520
remx235 remainder -0.6 1.020 -> -0.600
-- high Xs
remx240 remainder 1E+2 1.00 -> 0.00
-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
remx270 remainder 1 1e999999999 -> 1
remx271 remainder 1 0.9e999999999 -> 1
remx272 remainder 1 0.99e999999999 -> 1
remx273 remainder 1 0.999999999e999999999 -> 1
remx274 remainder 9e999999999 1 -> NaN Division_impossible
remx275 remainder 9.9e999999999 1 -> NaN Division_impossible
remx276 remainder 9.99e999999999 1 -> NaN Division_impossible
remx277 remainder 9.99999999e999999999 1 -> NaN Division_impossible
remx280 remainder 0.1 9e-999999999 -> NaN Division_impossible
remx281 remainder 0.1 99e-999999999 -> NaN Division_impossible
remx282 remainder 0.1 999e-999999999 -> NaN Division_impossible
remx283 remainder 0.1 9e-999999998 -> NaN Division_impossible
remx284 remainder 0.1 99e-999999998 -> NaN Division_impossible
remx285 remainder 0.1 999e-999999998 -> NaN Division_impossible
remx286 remainder 0.1 999e-999999997 -> NaN Division_impossible
remx287 remainder 0.1 9999e-999999997 -> NaN Division_impossible
remx288 remainder 0.1 99999e-999999997 -> NaN Division_impossible
-- remx3xx are from DiagBigDecimal
remx301 remainder 1 3 -> 1
remx302 remainder 5 5 -> 0
remx303 remainder 13 10 -> 3
remx304 remainder 13 50 -> 13
remx305 remainder 13 100 -> 13
remx306 remainder 13 1000 -> 13
remx307 remainder .13 1 -> 0.13
remx308 remainder 0.133 1 -> 0.133
remx309 remainder 0.1033 1 -> 0.1033
remx310 remainder 1.033 1 -> 0.033
remx311 remainder 10.33 1 -> 0.33
remx312 remainder 10.33 10 -> 0.33
remx313 remainder 103.3 1 -> 0.3
remx314 remainder 133 10 -> 3
remx315 remainder 1033 10 -> 3
remx316 remainder 1033 50 -> 33
remx317 remainder 101.0 3 -> 2.0
remx318 remainder 102.0 3 -> 0.0
remx319 remainder 103.0 3 -> 1.0
remx320 remainder 2.40 1 -> 0.40
remx321 remainder 2.400 1 -> 0.400
remx322 remainder 2.4 1 -> 0.4
remx323 remainder 2.4 2 -> 0.4
remx324 remainder 2.400 2 -> 0.400
remx325 remainder 1 0.3 -> 0.1
remx326 remainder 1 0.30 -> 0.10
remx327 remainder 1 0.300 -> 0.100
remx328 remainder 1 0.3000 -> 0.1000
remx329 remainder 1.0 0.3 -> 0.1
remx330 remainder 1.00 0.3 -> 0.10
remx331 remainder 1.000 0.3 -> 0.100
remx332 remainder 1.0000 0.3 -> 0.1000
remx333 remainder 0.5 2 -> 0.5
remx334 remainder 0.5 2.1 -> 0.5
remx335 remainder 0.5 2.01 -> 0.50
remx336 remainder 0.5 2.001 -> 0.500
remx337 remainder 0.50 2 -> 0.50
remx338 remainder 0.50 2.01 -> 0.50
remx339 remainder 0.50 2.001 -> 0.500
remx340 remainder 0.5 0.5000001 -> 0.5000000
remx341 remainder 0.5 0.50000001 -> 0.50000000
remx342 remainder 0.5 0.500000001 -> 0.500000000
remx343 remainder 0.5 0.5000000001 -> 0.500000000 Rounded
remx344 remainder 0.5 0.50000000001 -> 0.500000000 Rounded
remx345 remainder 0.5 0.4999999 -> 1E-7
remx346 remainder 0.5 0.49999999 -> 1E-8
remx347 remainder 0.5 0.499999999 -> 1E-9
remx348 remainder 0.5 0.4999999999 -> 1E-10
remx349 remainder 0.5 0.49999999999 -> 1E-11
remx350 remainder 0.5 0.499999999999 -> 1E-12
remx351 remainder 0.03 7 -> 0.03
remx352 remainder 5 2 -> 1
remx353 remainder 4.1 2 -> 0.1
remx354 remainder 4.01 2 -> 0.01
remx355 remainder 4.001 2 -> 0.001
remx356 remainder 4.0001 2 -> 0.0001
remx357 remainder 4.00001 2 -> 0.00001
remx358 remainder 4.000001 2 -> 0.000001
remx359 remainder 4.0000001 2 -> 1E-7
remx360 remainder 1.2 0.7345 -> 0.4655
remx361 remainder 0.8 12 -> 0.8
remx362 remainder 0.8 0.2 -> 0.0
remx363 remainder 0.8 0.3 -> 0.2
remx364 remainder 0.800 12 -> 0.800
remx365 remainder 0.800 1.7 -> 0.800
remx366 remainder 2.400 2 -> 0.400
precision: 6
remx371 remainder 2.400 2 -> 0.400
precision: 3
-- long operand, rounded, case
remx372 remainder 12345678900000 12e+12 -> 3.46E+11 Inexact Rounded
-- 12000000000000
precision: 5
remx381 remainder 12345 1 -> 0
remx382 remainder 12345 1.0001 -> 0.7657
remx383 remainder 12345 1.001 -> 0.668
remx384 remainder 12345 1.01 -> 0.78
remx385 remainder 12345 1.1 -> 0.8
remx386 remainder 12355 4 -> 3
remx387 remainder 12345 4 -> 1
remx388 remainder 12355 4.0001 -> 2.6912
remx389 remainder 12345 4.0001 -> 0.6914
remx390 remainder 12345 4.9 -> 1.9
remx391 remainder 12345 4.99 -> 4.73
remx392 remainder 12345 4.999 -> 2.469
remx393 remainder 12345 4.9999 -> 0.2469
remx394 remainder 12345 5 -> 0
remx395 remainder 12345 5.0001 -> 4.7532
remx396 remainder 12345 5.001 -> 2.532
remx397 remainder 12345 5.01 -> 0.36
remx398 remainder 12345 5.1 -> 3.0
precision: 9
-- the nasty division-by-1 cases
remx401 remainder 0.5 1 -> 0.5
remx402 remainder 0.55 1 -> 0.55
remx403 remainder 0.555 1 -> 0.555
remx404 remainder 0.5555 1 -> 0.5555
remx405 remainder 0.55555 1 -> 0.55555
remx406 remainder 0.555555 1 -> 0.555555
remx407 remainder 0.5555555 1 -> 0.5555555
remx408 remainder 0.55555555 1 -> 0.55555555
remx409 remainder 0.555555555 1 -> 0.555555555
-- Specials
remx680 remainder Inf -Inf -> NaN Invalid_operation
remx681 remainder Inf -1000 -> NaN Invalid_operation
remx682 remainder Inf -1 -> NaN Invalid_operation
remx683 remainder Inf 0 -> NaN Invalid_operation
remx684 remainder Inf -0 -> NaN Invalid_operation
remx685 remainder Inf 1 -> NaN Invalid_operation
remx686 remainder Inf 1000 -> NaN Invalid_operation
remx687 remainder Inf Inf -> NaN Invalid_operation
remx688 remainder -1000 Inf -> -1000
remx689 remainder -Inf Inf -> NaN Invalid_operation
remx691 remainder -1 Inf -> -1
remx692 remainder 0 Inf -> 0
remx693 remainder -0 Inf -> -0
remx694 remainder 1 Inf -> 1
remx695 remainder 1000 Inf -> 1000
remx696 remainder Inf Inf -> NaN Invalid_operation
remx700 remainder -Inf -Inf -> NaN Invalid_operation
remx701 remainder -Inf -1000 -> NaN Invalid_operation
remx702 remainder -Inf -1 -> NaN Invalid_operation
remx703 remainder -Inf -0 -> NaN Invalid_operation
remx704 remainder -Inf 0 -> NaN Invalid_operation
remx705 remainder -Inf 1 -> NaN Invalid_operation
remx706 remainder -Inf 1000 -> NaN Invalid_operation
remx707 remainder -Inf Inf -> NaN Invalid_operation
remx708 remainder -Inf -Inf -> NaN Invalid_operation
remx709 remainder -1000 Inf -> -1000
remx710 remainder -1 -Inf -> -1
remx711 remainder -0 -Inf -> -0
remx712 remainder 0 -Inf -> 0
remx713 remainder 1 -Inf -> 1
remx714 remainder 1000 -Inf -> 1000
remx715 remainder Inf -Inf -> NaN Invalid_operation
remx721 remainder NaN -Inf -> NaN
remx722 remainder NaN -1000 -> NaN
remx723 remainder NaN -1 -> NaN
remx724 remainder NaN -0 -> NaN
remx725 remainder -NaN 0 -> -NaN
remx726 remainder NaN 1 -> NaN
remx727 remainder NaN 1000 -> NaN
remx728 remainder NaN Inf -> NaN
remx729 remainder NaN -NaN -> NaN
remx730 remainder -Inf NaN -> NaN
remx731 remainder -1000 NaN -> NaN
remx732 remainder -1 NaN -> NaN
remx733 remainder -0 -NaN -> -NaN
remx734 remainder 0 NaN -> NaN
remx735 remainder 1 -NaN -> -NaN
remx736 remainder 1000 NaN -> NaN
remx737 remainder Inf NaN -> NaN
remx741 remainder sNaN -Inf -> NaN Invalid_operation
remx742 remainder sNaN -1000 -> NaN Invalid_operation
remx743 remainder -sNaN -1 -> -NaN Invalid_operation
remx744 remainder sNaN -0 -> NaN Invalid_operation
remx745 remainder sNaN 0 -> NaN Invalid_operation
remx746 remainder sNaN 1 -> NaN Invalid_operation
remx747 remainder sNaN 1000 -> NaN Invalid_operation
remx749 remainder sNaN NaN -> NaN Invalid_operation
remx750 remainder sNaN sNaN -> NaN Invalid_operation
remx751 remainder NaN sNaN -> NaN Invalid_operation
remx752 remainder -Inf sNaN -> NaN Invalid_operation
remx753 remainder -1000 sNaN -> NaN Invalid_operation
remx754 remainder -1 sNaN -> NaN Invalid_operation
remx755 remainder -0 sNaN -> NaN Invalid_operation
remx756 remainder 0 sNaN -> NaN Invalid_operation
remx757 remainder 1 sNaN -> NaN Invalid_operation
remx758 remainder 1000 sNaN -> NaN Invalid_operation
remx759 remainder Inf -sNaN -> -NaN Invalid_operation
-- propaging NaNs
remx760 remainder NaN1 NaN7 -> NaN1
remx761 remainder sNaN2 NaN8 -> NaN2 Invalid_operation
remx762 remainder NaN3 sNaN9 -> NaN9 Invalid_operation
remx763 remainder sNaN4 sNaN10 -> NaN4 Invalid_operation
remx764 remainder 15 NaN11 -> NaN11
remx765 remainder NaN6 NaN12 -> NaN6
remx766 remainder Inf NaN13 -> NaN13
remx767 remainder NaN14 -Inf -> NaN14
remx768 remainder 0 NaN15 -> NaN15
remx769 remainder NaN16 -0 -> NaN16
-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
remx770 remainder 1 1e999999999 -> 1
remx771 remainder 1 0.9e999999999 -> 1
remx772 remainder 1 0.99e999999999 -> 1
remx773 remainder 1 0.999999999e999999999 -> 1
remx774 remainder 9e999999999 1 -> NaN Division_impossible
remx775 remainder 9.9e999999999 1 -> NaN Division_impossible
remx776 remainder 9.99e999999999 1 -> NaN Division_impossible
remx777 remainder 9.99999999e999999999 1 -> NaN Division_impossible
-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
remx801 remainder 12345678000 100 -> 0
remx802 remainder 1 12345678000 -> 1
remx803 remainder 1234567800 10 -> 0
remx804 remainder 1 1234567800 -> 1
remx805 remainder 1234567890 10 -> 0
remx806 remainder 1 1234567890 -> 1
remx807 remainder 1234567891 10 -> 1
remx808 remainder 1 1234567891 -> 1
remx809 remainder 12345678901 100 -> 1
remx810 remainder 1 12345678901 -> 1
remx811 remainder 1234567896 10 -> 6
remx812 remainder 1 1234567896 -> 1
precision: 15
remx821 remainder 12345678000 100 -> 0
remx822 remainder 1 12345678000 -> 1
remx823 remainder 1234567800 10 -> 0
remx824 remainder 1 1234567800 -> 1
remx825 remainder 1234567890 10 -> 0
remx826 remainder 1 1234567890 -> 1
remx827 remainder 1234567891 10 -> 1
remx828 remainder 1 1234567891 -> 1
remx829 remainder 12345678901 100 -> 1
remx830 remainder 1 12345678901 -> 1
remx831 remainder 1234567896 10 -> 6
remx832 remainder 1 1234567896 -> 1
-- worries from divideint
precision: 8
remx840 remainder 100000000.0 1 -> NaN Division_impossible
remx841 remainder 100000000.4 1 -> NaN Division_impossible
remx842 remainder 100000000.5 1 -> NaN Division_impossible
remx843 remainder 100000000.9 1 -> NaN Division_impossible
remx844 remainder 100000000.999 1 -> NaN Division_impossible
precision: 6
remx850 remainder 100000003 5 -> NaN Division_impossible
remx851 remainder 10000003 5 -> NaN Division_impossible
remx852 remainder 1000003 5 -> 3
remx853 remainder 100003 5 -> 3
remx854 remainder 10003 5 -> 3
remx855 remainder 1003 5 -> 3
remx856 remainder 103 5 -> 3
remx857 remainder 13 5 -> 3
remx858 remainder 1 5 -> 1
-- Vladimir's cases
remx860 remainder 123.0e1 10000000000000000 -> 1230
remx861 remainder 1230 10000000000000000 -> 1230
remx862 remainder 12.3e2 10000000000000000 -> 1230
remx863 remainder 1.23e3 10000000000000000 -> 1230
remx864 remainder 123e1 10000000000000000 -> 1230
remx870 remainder 123e1 1000000000000000 -> 1230
remx871 remainder 123e1 100000000000000 -> 1230
remx872 remainder 123e1 10000000000000 -> 1230
remx873 remainder 123e1 1000000000000 -> 1230
remx874 remainder 123e1 100000000000 -> 1230
remx875 remainder 123e1 10000000000 -> 1230
remx876 remainder 123e1 1000000000 -> 1230
remx877 remainder 123e1 100000000 -> 1230
remx878 remainder 1230 100000000 -> 1230
remx879 remainder 123e1 10000000 -> 1230
remx880 remainder 123e1 1000000 -> 1230
remx881 remainder 123e1 100000 -> 1230
remx882 remainder 123e1 10000 -> 1230
remx883 remainder 123e1 1000 -> 230
remx884 remainder 123e1 100 -> 30
remx885 remainder 123e1 10 -> 0
remx886 remainder 123e1 1 -> 0
remx889 remainder 123e1 20000000000000000 -> 1230
remx890 remainder 123e1 2000000000000000 -> 1230
remx891 remainder 123e1 200000000000000 -> 1230
remx892 remainder 123e1 20000000000000 -> 1230
remx893 remainder 123e1 2000000000000 -> 1230
remx894 remainder 123e1 200000000000 -> 1230
remx895 remainder 123e1 20000000000 -> 1230
remx896 remainder 123e1 2000000000 -> 1230
remx897 remainder 123e1 200000000 -> 1230
remx899 remainder 123e1 20000000 -> 1230
remx900 remainder 123e1 2000000 -> 1230
remx901 remainder 123e1 200000 -> 1230
remx902 remainder 123e1 20000 -> 1230
remx903 remainder 123e1 2000 -> 1230
remx904 remainder 123e1 200 -> 30
remx905 remainder 123e1 20 -> 10
remx906 remainder 123e1 2 -> 0
remx909 remainder 123e1 50000000000000000 -> 1230
remx910 remainder 123e1 5000000000000000 -> 1230
remx911 remainder 123e1 500000000000000 -> 1230
remx912 remainder 123e1 50000000000000 -> 1230
remx913 remainder 123e1 5000000000000 -> 1230
remx914 remainder 123e1 500000000000 -> 1230
remx915 remainder 123e1 50000000000 -> 1230
remx916 remainder 123e1 5000000000 -> 1230
remx917 remainder 123e1 500000000 -> 1230
remx919 remainder 123e1 50000000 -> 1230
remx920 remainder 123e1 5000000 -> 1230
remx921 remainder 123e1 500000 -> 1230
remx922 remainder 123e1 50000 -> 1230
remx923 remainder 123e1 5000 -> 1230
remx924 remainder 123e1 500 -> 230
remx925 remainder 123e1 50 -> 30
remx926 remainder 123e1 5 -> 0
remx929 remainder 123e1 90000000000000000 -> 1230
remx930 remainder 123e1 9000000000000000 -> 1230
remx931 remainder 123e1 900000000000000 -> 1230
remx932 remainder 123e1 90000000000000 -> 1230
remx933 remainder 123e1 9000000000000 -> 1230
remx934 remainder 123e1 900000000000 -> 1230
remx935 remainder 123e1 90000000000 -> 1230
remx936 remainder 123e1 9000000000 -> 1230
remx937 remainder 123e1 900000000 -> 1230
remx939 remainder 123e1 90000000 -> 1230
remx940 remainder 123e1 9000000 -> 1230
remx941 remainder 123e1 900000 -> 1230
remx942 remainder 123e1 90000 -> 1230
remx943 remainder 123e1 9000 -> 1230
remx944 remainder 123e1 900 -> 330
remx945 remainder 123e1 90 -> 60
remx946 remainder 123e1 9 -> 6
remx950 remainder 123e1 10000000000000000 -> 1230
remx951 remainder 123e1 100000000000000000 -> 1230
remx952 remainder 123e1 1000000000000000000 -> 1230
remx953 remainder 123e1 10000000000000000000 -> 1230
remx954 remainder 123e1 100000000000000000000 -> 1230
remx955 remainder 123e1 1000000000000000000000 -> 1230
remx956 remainder 123e1 10000000000000000000000 -> 1230
remx957 remainder 123e1 100000000000000000000000 -> 1230
remx958 remainder 123e1 1000000000000000000000000 -> 1230
remx959 remainder 123e1 10000000000000000000000000 -> 1230
remx960 remainder 123e1 19999999999999999 -> 1230
remx961 remainder 123e1 199999999999999990 -> 1230
remx962 remainder 123e1 1999999999999999999 -> 1230
remx963 remainder 123e1 19999999999999999990 -> 1230
remx964 remainder 123e1 199999999999999999999 -> 1230
remx965 remainder 123e1 1999999999999999999990 -> 1230
remx966 remainder 123e1 19999999999999999999999 -> 1230
remx967 remainder 123e1 199999999999999999999990 -> 1230
remx968 remainder 123e1 1999999999999999999999999 -> 1230
remx969 remainder 123e1 19999999999999999999999990 -> 1230
remx970 remainder 1e1 10000000000000000 -> 10
remx971 remainder 1e1 100000000000000000 -> 10
remx972 remainder 1e1 1000000000000000000 -> 10
remx973 remainder 1e1 10000000000000000000 -> 10
remx974 remainder 1e1 100000000000000000000 -> 10
remx975 remainder 1e1 1000000000000000000000 -> 10
remx976 remainder 1e1 10000000000000000000000 -> 10
remx977 remainder 1e1 100000000000000000000000 -> 10
remx978 remainder 1e1 1000000000000000000000000 -> 10
remx979 remainder 1e1 10000000000000000000000000 -> 10
remx980 remainder 123e1 1000E999999 -> 1.23E+3 -- 123E+1 internally
-- overflow and underflow tests [from divide]
precision: 9
maxexponent: 999999999
minexponent: -999999999
remx990 remainder +1.23456789012345E-0 9E+999999999 -> 1.23456789 Inexact Rounded
remx991 remainder 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
remx992 remainder +0.100 9E+999999999 -> 0.100
remx993 remainder 9E-999999999 +9.100 -> 9E-999999999
remx995 remainder -1.23456789012345E-0 9E+999999999 -> -1.23456789 Inexact Rounded
remx996 remainder 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
remx997 remainder -0.100 9E+999999999 -> -0.100
remx998 remainder 9E-999999999 -9.100 -> 9E-999999999
-- Null tests
remx1000 remainder 10 # -> NaN Invalid_operation
remx1001 remainder # 10 -> NaN Invalid_operation

View file

@ -1,560 +0,0 @@
------------------------------------------------------------------------
-- remainderNear.decTest -- decimal remainder-near (IEEE remainder) --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
rmnx001 remaindernear 1 1 -> 0
rmnx002 remaindernear 2 1 -> 0
rmnx003 remaindernear 1 2 -> 1
rmnx004 remaindernear 2 2 -> 0
rmnx005 remaindernear 0 1 -> 0
rmnx006 remaindernear 0 2 -> 0
rmnx007 remaindernear 1 3 -> 1
rmnx008 remaindernear 2 3 -> -1
rmnx009 remaindernear 3 3 -> 0
rmnx010 remaindernear 2.4 1 -> 0.4
rmnx011 remaindernear 2.4 -1 -> 0.4
rmnx012 remaindernear -2.4 1 -> -0.4
rmnx013 remaindernear -2.4 -1 -> -0.4
rmnx014 remaindernear 2.40 1 -> 0.40
rmnx015 remaindernear 2.400 1 -> 0.400
rmnx016 remaindernear 2.4 2 -> 0.4
rmnx017 remaindernear 2.400 2 -> 0.400
rmnx018 remaindernear 2. 2 -> 0
rmnx019 remaindernear 20 20 -> 0
rmnx020 remaindernear 187 187 -> 0
rmnx021 remaindernear 5 2 -> 1
rmnx022 remaindernear 5 2.0 -> 1.0
rmnx023 remaindernear 5 2.000 -> 1.000
rmnx024 remaindernear 5 0.200 -> 0.000
rmnx025 remaindernear 5 0.200 -> 0.000
rmnx030 remaindernear 1 2 -> 1
rmnx031 remaindernear 1 4 -> 1
rmnx032 remaindernear 1 8 -> 1
rmnx033 remaindernear 1 16 -> 1
rmnx034 remaindernear 1 32 -> 1
rmnx035 remaindernear 1 64 -> 1
rmnx040 remaindernear 1 -2 -> 1
rmnx041 remaindernear 1 -4 -> 1
rmnx042 remaindernear 1 -8 -> 1
rmnx043 remaindernear 1 -16 -> 1
rmnx044 remaindernear 1 -32 -> 1
rmnx045 remaindernear 1 -64 -> 1
rmnx050 remaindernear -1 2 -> -1
rmnx051 remaindernear -1 4 -> -1
rmnx052 remaindernear -1 8 -> -1
rmnx053 remaindernear -1 16 -> -1
rmnx054 remaindernear -1 32 -> -1
rmnx055 remaindernear -1 64 -> -1
rmnx060 remaindernear -1 -2 -> -1
rmnx061 remaindernear -1 -4 -> -1
rmnx062 remaindernear -1 -8 -> -1
rmnx063 remaindernear -1 -16 -> -1
rmnx064 remaindernear -1 -32 -> -1
rmnx065 remaindernear -1 -64 -> -1
rmnx066 remaindernear 999999997 1 -> 0
rmnx067 remaindernear 999999997.4 1 -> 0.4
rmnx068 remaindernear 999999997.5 1 -> -0.5
rmnx069 remaindernear 999999997.9 1 -> -0.1
rmnx070 remaindernear 999999997.999 1 -> -0.001
rmnx071 remaindernear 999999998 1 -> 0
rmnx072 remaindernear 999999998.4 1 -> 0.4
rmnx073 remaindernear 999999998.5 1 -> 0.5
rmnx074 remaindernear 999999998.9 1 -> -0.1
rmnx075 remaindernear 999999998.999 1 -> -0.001
rmnx076 remaindernear 999999999 1 -> 0
rmnx077 remaindernear 999999999.4 1 -> 0.4
rmnx078 remaindernear 999999999.5 1 -> NaN Division_impossible
rmnx079 remaindernear 999999999.9 1 -> NaN Division_impossible
rmnx080 remaindernear 999999999.999 1 -> NaN Division_impossible
precision: 6
rmnx081 remaindernear 999999999 1 -> NaN Division_impossible
rmnx082 remaindernear 99999999 1 -> NaN Division_impossible
rmnx083 remaindernear 9999999 1 -> NaN Division_impossible
rmnx084 remaindernear 999999 1 -> 0
rmnx085 remaindernear 99999 1 -> 0
rmnx086 remaindernear 9999 1 -> 0
rmnx087 remaindernear 999 1 -> 0
rmnx088 remaindernear 99 1 -> 0
rmnx089 remaindernear 9 1 -> 0
precision: 9
rmnx090 remaindernear 0. 1 -> 0
rmnx091 remaindernear .0 1 -> 0.0
rmnx092 remaindernear 0.00 1 -> 0.00
rmnx093 remaindernear 0.00E+9 1 -> 0
rmnx094 remaindernear 0.0000E-50 1 -> 0E-54
-- Various flavours of remaindernear by 0
precision: 9
maxexponent: 999999999
minexponent: -999999999
rmnx101 remaindernear 0 0 -> NaN Division_undefined
rmnx102 remaindernear 0 -0 -> NaN Division_undefined
rmnx103 remaindernear -0 0 -> NaN Division_undefined
rmnx104 remaindernear -0 -0 -> NaN Division_undefined
rmnx105 remaindernear 0.0E5 0 -> NaN Division_undefined
rmnx106 remaindernear 0.000 0 -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception,
-- but IEEE 854 is explicit that it is Invalid operation .. for
-- remaindernear-near, anyway]
rmnx107 remaindernear 0.0001 0 -> NaN Invalid_operation
rmnx108 remaindernear 0.01 0 -> NaN Invalid_operation
rmnx109 remaindernear 0.1 0 -> NaN Invalid_operation
rmnx110 remaindernear 1 0 -> NaN Invalid_operation
rmnx111 remaindernear 1 0.0 -> NaN Invalid_operation
rmnx112 remaindernear 10 0.0 -> NaN Invalid_operation
rmnx113 remaindernear 1E+100 0.0 -> NaN Invalid_operation
rmnx114 remaindernear 1E+1000 0 -> NaN Invalid_operation
rmnx115 remaindernear 0.0001 -0 -> NaN Invalid_operation
rmnx116 remaindernear 0.01 -0 -> NaN Invalid_operation
rmnx119 remaindernear 0.1 -0 -> NaN Invalid_operation
rmnx120 remaindernear 1 -0 -> NaN Invalid_operation
rmnx121 remaindernear 1 -0.0 -> NaN Invalid_operation
rmnx122 remaindernear 10 -0.0 -> NaN Invalid_operation
rmnx123 remaindernear 1E+100 -0.0 -> NaN Invalid_operation
rmnx124 remaindernear 1E+1000 -0 -> NaN Invalid_operation
-- and zeros on left
rmnx130 remaindernear 0 1 -> 0
rmnx131 remaindernear 0 -1 -> 0
rmnx132 remaindernear 0.0 1 -> 0.0
rmnx133 remaindernear 0.0 -1 -> 0.0
rmnx134 remaindernear -0 1 -> -0
rmnx135 remaindernear -0 -1 -> -0
rmnx136 remaindernear -0.0 1 -> -0.0
rmnx137 remaindernear -0.0 -1 -> -0.0
-- 0.5ers
rmmx143 remaindernear 0.5 2 -> 0.5
rmmx144 remaindernear 0.5 2.1 -> 0.5
rmmx145 remaindernear 0.5 2.01 -> 0.50
rmmx146 remaindernear 0.5 2.001 -> 0.500
rmmx147 remaindernear 0.50 2 -> 0.50
rmmx148 remaindernear 0.50 2.01 -> 0.50
rmmx149 remaindernear 0.50 2.001 -> 0.500
-- some differences from remainder
rmnx150 remaindernear 0.4 1.020 -> 0.400
rmnx151 remaindernear 0.50 1.020 -> 0.500
rmnx152 remaindernear 0.51 1.020 -> 0.510
rmnx153 remaindernear 0.52 1.020 -> -0.500
rmnx154 remaindernear 0.6 1.020 -> -0.420
rmnx155 remaindernear 0.49 1 -> 0.49
rmnx156 remaindernear 0.50 1 -> 0.50
rmnx157 remaindernear 1.50 1 -> -0.50
rmnx158 remaindernear 2.50 1 -> 0.50
rmnx159 remaindernear 9.50 1 -> -0.50
rmnx160 remaindernear 0.51 1 -> -0.49
-- the nasty division-by-1 cases
rmnx161 remaindernear 0.4 1 -> 0.4
rmnx162 remaindernear 0.45 1 -> 0.45
rmnx163 remaindernear 0.455 1 -> 0.455
rmnx164 remaindernear 0.4555 1 -> 0.4555
rmnx165 remaindernear 0.45555 1 -> 0.45555
rmnx166 remaindernear 0.455555 1 -> 0.455555
rmnx167 remaindernear 0.4555555 1 -> 0.4555555
rmnx168 remaindernear 0.45555555 1 -> 0.45555555
rmnx169 remaindernear 0.455555555 1 -> 0.455555555
-- with spill...
rmnx171 remaindernear 0.5 1 -> 0.5
rmnx172 remaindernear 0.55 1 -> -0.45
rmnx173 remaindernear 0.555 1 -> -0.445
rmnx174 remaindernear 0.5555 1 -> -0.4445
rmnx175 remaindernear 0.55555 1 -> -0.44445
rmnx176 remaindernear 0.555555 1 -> -0.444445
rmnx177 remaindernear 0.5555555 1 -> -0.4444445
rmnx178 remaindernear 0.55555555 1 -> -0.44444445
rmnx179 remaindernear 0.555555555 1 -> -0.444444445
-- progression
rmnx180 remaindernear 1 1 -> 0
rmnx181 remaindernear 1 2 -> 1
rmnx182 remaindernear 1 3 -> 1
rmnx183 remaindernear 1 4 -> 1
rmnx184 remaindernear 1 5 -> 1
rmnx185 remaindernear 1 6 -> 1
rmnx186 remaindernear 1 7 -> 1
rmnx187 remaindernear 1 8 -> 1
rmnx188 remaindernear 1 9 -> 1
rmnx189 remaindernear 1 10 -> 1
rmnx190 remaindernear 1 1 -> 0
rmnx191 remaindernear 2 1 -> 0
rmnx192 remaindernear 3 1 -> 0
rmnx193 remaindernear 4 1 -> 0
rmnx194 remaindernear 5 1 -> 0
rmnx195 remaindernear 6 1 -> 0
rmnx196 remaindernear 7 1 -> 0
rmnx197 remaindernear 8 1 -> 0
rmnx198 remaindernear 9 1 -> 0
rmnx199 remaindernear 10 1 -> 0
-- Various flavours of remaindernear by 0
maxexponent: 999999999
minexponent: -999999999
rmnx201 remaindernear 0 0 -> NaN Division_undefined
rmnx202 remaindernear 0.0E5 0 -> NaN Division_undefined
rmnx203 remaindernear 0.000 0 -> NaN Division_undefined
rmnx204 remaindernear 0.0001 0 -> NaN Invalid_operation
rmnx205 remaindernear 0.01 0 -> NaN Invalid_operation
rmnx206 remaindernear 0.1 0 -> NaN Invalid_operation
rmnx207 remaindernear 1 0 -> NaN Invalid_operation
rmnx208 remaindernear 1 0.0 -> NaN Invalid_operation
rmnx209 remaindernear 10 0.0 -> NaN Invalid_operation
rmnx210 remaindernear 1E+100 0.0 -> NaN Invalid_operation
rmnx211 remaindernear 1E+1000 0 -> NaN Invalid_operation
-- tests from the extended specification
rmnx221 remaindernear 2.1 3 -> -0.9
rmnx222 remaindernear 10 6 -> -2
rmnx223 remaindernear 10 3 -> 1
rmnx224 remaindernear -10 3 -> -1
rmnx225 remaindernear 10.2 1 -> 0.2
rmnx226 remaindernear 10 0.3 -> 0.1
rmnx227 remaindernear 3.6 1.3 -> -0.3
-- some differences from remainder
rmnx231 remaindernear 0.4 1.020 -> 0.400
rmnx232 remaindernear 0.50 1.020 -> 0.500
rmnx233 remaindernear 0.51 1.020 -> 0.510
rmnx234 remaindernear 0.52 1.020 -> -0.500
rmnx235 remaindernear 0.6 1.020 -> -0.420
-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
rmnx270 remaindernear 1 1e999999999 -> 1
rmnx271 remaindernear 1 0.9e999999999 -> 1
rmnx272 remaindernear 1 0.99e999999999 -> 1
rmnx273 remaindernear 1 0.999999999e999999999 -> 1
rmnx274 remaindernear 9e999999999 1 -> NaN Division_impossible
rmnx275 remaindernear 9.9e999999999 1 -> NaN Division_impossible
rmnx276 remaindernear 9.99e999999999 1 -> NaN Division_impossible
rmnx277 remaindernear 9.99999999e999999999 1 -> NaN Division_impossible
rmnx280 remaindernear 0.1 9e-999999999 -> NaN Division_impossible
rmnx281 remaindernear 0.1 99e-999999999 -> NaN Division_impossible
rmnx282 remaindernear 0.1 999e-999999999 -> NaN Division_impossible
rmnx283 remaindernear 0.1 9e-999999998 -> NaN Division_impossible
rmnx284 remaindernear 0.1 99e-999999998 -> NaN Division_impossible
rmnx285 remaindernear 0.1 999e-999999998 -> NaN Division_impossible
rmnx286 remaindernear 0.1 999e-999999997 -> NaN Division_impossible
rmnx287 remaindernear 0.1 9999e-999999997 -> NaN Division_impossible
rmnx288 remaindernear 0.1 99999e-999999997 -> NaN Division_impossible
-- rmnx3xx are from DiagBigDecimal
rmnx301 remaindernear 1 3 -> 1
rmnx302 remaindernear 5 5 -> 0
rmnx303 remaindernear 13 10 -> 3
rmnx304 remaindernear 13 50 -> 13
rmnx305 remaindernear 13 100 -> 13
rmnx306 remaindernear 13 1000 -> 13
rmnx307 remaindernear .13 1 -> 0.13
rmnx308 remaindernear 0.133 1 -> 0.133
rmnx309 remaindernear 0.1033 1 -> 0.1033
rmnx310 remaindernear 1.033 1 -> 0.033
rmnx311 remaindernear 10.33 1 -> 0.33
rmnx312 remaindernear 10.33 10 -> 0.33
rmnx313 remaindernear 103.3 1 -> 0.3
rmnx314 remaindernear 133 10 -> 3
rmnx315 remaindernear 1033 10 -> 3
rmnx316 remaindernear 1033 50 -> -17
rmnx317 remaindernear 101.0 3 -> -1.0
rmnx318 remaindernear 102.0 3 -> 0.0
rmnx319 remaindernear 103.0 3 -> 1.0
rmnx320 remaindernear 2.40 1 -> 0.40
rmnx321 remaindernear 2.400 1 -> 0.400
rmnx322 remaindernear 2.4 1 -> 0.4
rmnx323 remaindernear 2.4 2 -> 0.4
rmnx324 remaindernear 2.400 2 -> 0.400
rmnx325 remaindernear 1 0.3 -> 0.1
rmnx326 remaindernear 1 0.30 -> 0.10
rmnx327 remaindernear 1 0.300 -> 0.100
rmnx328 remaindernear 1 0.3000 -> 0.1000
rmnx329 remaindernear 1.0 0.3 -> 0.1
rmnx330 remaindernear 1.00 0.3 -> 0.10
rmnx331 remaindernear 1.000 0.3 -> 0.100
rmnx332 remaindernear 1.0000 0.3 -> 0.1000
rmnx333 remaindernear 0.5 2 -> 0.5
rmnx334 remaindernear 0.5 2.1 -> 0.5
rmnx335 remaindernear 0.5 2.01 -> 0.50
rmnx336 remaindernear 0.5 2.001 -> 0.500
rmnx337 remaindernear 0.50 2 -> 0.50
rmnx338 remaindernear 0.50 2.01 -> 0.50
rmnx339 remaindernear 0.50 2.001 -> 0.500
rmnx340 remaindernear 0.5 0.5000001 -> -1E-7
rmnx341 remaindernear 0.5 0.50000001 -> -1E-8
rmnx342 remaindernear 0.5 0.500000001 -> -1E-9
rmnx343 remaindernear 0.5 0.5000000001 -> -1E-10
rmnx344 remaindernear 0.5 0.50000000001 -> -1E-11
rmnx345 remaindernear 0.5 0.4999999 -> 1E-7
rmnx346 remaindernear 0.5 0.49999999 -> 1E-8
rmnx347 remaindernear 0.5 0.499999999 -> 1E-9
rmnx348 remaindernear 0.5 0.4999999999 -> 1E-10
rmnx349 remaindernear 0.5 0.49999999999 -> 1E-11
rmnx350 remaindernear 0.03 7 -> 0.03
rmnx351 remaindernear 5 2 -> 1
rmnx352 remaindernear 4.1 2 -> 0.1
rmnx353 remaindernear 4.01 2 -> 0.01
rmnx354 remaindernear 4.001 2 -> 0.001
rmnx355 remaindernear 4.0001 2 -> 0.0001
rmnx356 remaindernear 4.00001 2 -> 0.00001
rmnx357 remaindernear 4.000001 2 -> 0.000001
rmnx358 remaindernear 4.0000001 2 -> 1E-7
rmnx360 remaindernear 1.2 0.7345 -> -0.2690
rmnx361 remaindernear 0.8 12 -> 0.8
rmnx362 remaindernear 0.8 0.2 -> 0.0
rmnx363 remaindernear 0.8 0.3 -> -0.1
rmnx364 remaindernear 0.800 12 -> 0.800
rmnx365 remaindernear 0.800 1.7 -> 0.800
rmnx366 remaindernear 2.400 2 -> 0.400
precision: 6
rmnx371 remaindernear 2.400 2 -> 0.400
precision: 3
rmnx372 remaindernear 12345678900000 12e+12 -> 3.46E+11 Inexact Rounded
precision: 5
rmnx381 remaindernear 12345 1 -> 0
rmnx382 remaindernear 12345 1.0001 -> -0.2344
rmnx383 remaindernear 12345 1.001 -> -0.333
rmnx384 remaindernear 12345 1.01 -> -0.23
rmnx385 remaindernear 12345 1.1 -> -0.3
rmnx386 remaindernear 12355 4 -> -1
rmnx387 remaindernear 12345 4 -> 1
rmnx388 remaindernear 12355 4.0001 -> -1.3089
rmnx389 remaindernear 12345 4.0001 -> 0.6914
rmnx390 remaindernear 12345 4.9 -> 1.9
rmnx391 remaindernear 12345 4.99 -> -0.26
rmnx392 remaindernear 12345 4.999 -> 2.469
rmnx393 remaindernear 12345 4.9999 -> 0.2469
rmnx394 remaindernear 12345 5 -> 0
rmnx395 remaindernear 12345 5.0001 -> -0.2469
rmnx396 remaindernear 12345 5.001 -> -2.469
rmnx397 remaindernear 12345 5.01 -> 0.36
rmnx398 remaindernear 12345 5.1 -> -2.1
precision: 9
-- some nasty division-by-1 cases [some similar above]
rmnx401 remaindernear 0.4 1 -> 0.4
rmnx402 remaindernear 0.45 1 -> 0.45
rmnx403 remaindernear 0.455 1 -> 0.455
rmnx404 remaindernear 0.4555 1 -> 0.4555
rmnx405 remaindernear 0.45555 1 -> 0.45555
rmnx406 remaindernear 0.455555 1 -> 0.455555
rmnx407 remaindernear 0.4555555 1 -> 0.4555555
rmnx408 remaindernear 0.45555555 1 -> 0.45555555
rmnx409 remaindernear 0.455555555 1 -> 0.455555555
-- some tricky LHSs
rmnx420 remaindernear 99999999.999999999 1E+8 -> -1E-9
rmnx421 remaindernear 999999999.999999999 1E+9 -> -1E-9
precision: 9
rmnx430 remaindernear 0.455555555 1 -> 0.455555555
precision: 8
rmnx431 remaindernear 0.455555555 1 -> 0.45555556 Inexact Rounded
precision: 7
rmnx432 remaindernear 0.455555555 1 -> 0.4555556 Inexact Rounded
precision: 6
rmnx433 remaindernear 0.455555555 1 -> 0.455556 Inexact Rounded
precision: 5
rmnx434 remaindernear 0.455555555 1 -> 0.45556 Inexact Rounded
precision: 4
rmnx435 remaindernear 0.455555555 1 -> 0.4556 Inexact Rounded
precision: 3
rmnx436 remaindernear 0.455555555 1 -> 0.456 Inexact Rounded
precision: 2
rmnx437 remaindernear 0.455555555 1 -> 0.46 Inexact Rounded
precision: 1
rmnx438 remaindernear 0.455555555 1 -> 0.5 Inexact Rounded
-- early tests; from text descriptions
precision: 9
rmnx601 remaindernear 10 6 -> -2
rmnx602 remaindernear -10 6 -> 2
rmnx603 remaindernear 11 3 -> -1
rmnx604 remaindernear 11 5 -> 1
rmnx605 remaindernear 7.7 8 -> -0.3
rmnx606 remaindernear 31.5 3 -> 1.5 -- i=10
rmnx607 remaindernear 34.5 3 -> -1.5 -- i=11
-- Specials
rmnx680 remaindernear Inf -Inf -> NaN Invalid_operation
rmnx681 remaindernear Inf -1000 -> NaN Invalid_operation
rmnx682 remaindernear Inf -1 -> NaN Invalid_operation
rmnx683 remaindernear Inf 0 -> NaN Invalid_operation
rmnx684 remaindernear Inf -0 -> NaN Invalid_operation
rmnx685 remaindernear Inf 1 -> NaN Invalid_operation
rmnx686 remaindernear Inf 1000 -> NaN Invalid_operation
rmnx687 remaindernear Inf Inf -> NaN Invalid_operation
rmnx688 remaindernear -1000 Inf -> -1000
rmnx689 remaindernear -Inf Inf -> NaN Invalid_operation
rmnx691 remaindernear -1 Inf -> -1
rmnx692 remaindernear 0 Inf -> 0
rmnx693 remaindernear -0 Inf -> -0
rmnx694 remaindernear 1 Inf -> 1
rmnx695 remaindernear 1000 Inf -> 1000
rmnx696 remaindernear Inf Inf -> NaN Invalid_operation
rmnx700 remaindernear -Inf -Inf -> NaN Invalid_operation
rmnx701 remaindernear -Inf -1000 -> NaN Invalid_operation
rmnx702 remaindernear -Inf -1 -> NaN Invalid_operation
rmnx703 remaindernear -Inf -0 -> NaN Invalid_operation
rmnx704 remaindernear -Inf 0 -> NaN Invalid_operation
rmnx705 remaindernear -Inf 1 -> NaN Invalid_operation
rmnx706 remaindernear -Inf 1000 -> NaN Invalid_operation
rmnx707 remaindernear -Inf Inf -> NaN Invalid_operation
rmnx708 remaindernear -Inf -Inf -> NaN Invalid_operation
rmnx709 remaindernear -1000 Inf -> -1000
rmnx710 remaindernear -1 -Inf -> -1
rmnx711 remaindernear -0 -Inf -> -0
rmnx712 remaindernear 0 -Inf -> 0
rmnx713 remaindernear 1 -Inf -> 1
rmnx714 remaindernear 1000 -Inf -> 1000
rmnx715 remaindernear Inf -Inf -> NaN Invalid_operation
rmnx721 remaindernear NaN -Inf -> NaN
rmnx722 remaindernear NaN -1000 -> NaN
rmnx723 remaindernear NaN -1 -> NaN
rmnx724 remaindernear NaN -0 -> NaN
rmnx725 remaindernear NaN 0 -> NaN
rmnx726 remaindernear NaN 1 -> NaN
rmnx727 remaindernear NaN 1000 -> NaN
rmnx728 remaindernear NaN Inf -> NaN
rmnx729 remaindernear NaN NaN -> NaN
rmnx730 remaindernear -Inf NaN -> NaN
rmnx731 remaindernear -1000 NaN -> NaN
rmnx732 remaindernear -1 -NaN -> -NaN
rmnx733 remaindernear -0 NaN -> NaN
rmnx734 remaindernear 0 NaN -> NaN
rmnx735 remaindernear 1 NaN -> NaN
rmnx736 remaindernear 1000 NaN -> NaN
rmnx737 remaindernear Inf NaN -> NaN
rmnx741 remaindernear sNaN -Inf -> NaN Invalid_operation
rmnx742 remaindernear sNaN -1000 -> NaN Invalid_operation
rmnx743 remaindernear -sNaN -1 -> -NaN Invalid_operation
rmnx744 remaindernear sNaN -0 -> NaN Invalid_operation
rmnx745 remaindernear sNaN 0 -> NaN Invalid_operation
rmnx746 remaindernear sNaN 1 -> NaN Invalid_operation
rmnx747 remaindernear sNaN 1000 -> NaN Invalid_operation
rmnx749 remaindernear sNaN NaN -> NaN Invalid_operation
rmnx750 remaindernear sNaN sNaN -> NaN Invalid_operation
rmnx751 remaindernear NaN sNaN -> NaN Invalid_operation
rmnx752 remaindernear -Inf sNaN -> NaN Invalid_operation
rmnx753 remaindernear -1000 sNaN -> NaN Invalid_operation
rmnx754 remaindernear -1 sNaN -> NaN Invalid_operation
rmnx755 remaindernear -0 -sNaN -> -NaN Invalid_operation
rmnx756 remaindernear 0 sNaN -> NaN Invalid_operation
rmnx757 remaindernear 1 sNaN -> NaN Invalid_operation
rmnx758 remaindernear 1000 sNaN -> NaN Invalid_operation
rmnx759 remaindernear Inf sNaN -> NaN Invalid_operation
rmnx760 remaindernear NaN sNaN -> NaN Invalid_operation
-- propaging NaNs
rmnx761 remaindernear NaN1 NaN7 -> NaN1
rmnx762 remaindernear sNaN2 NaN8 -> NaN2 Invalid_operation
rmnx763 remaindernear NaN3 -sNaN9 -> -NaN9 Invalid_operation
rmnx764 remaindernear sNaN4 sNaN10 -> NaN4 Invalid_operation
rmnx765 remaindernear 15 NaN11 -> NaN11
rmnx766 remaindernear NaN6 NaN12 -> NaN6
rmnx767 remaindernear Inf -NaN13 -> -NaN13
rmnx768 remaindernear NaN14 -Inf -> NaN14
rmnx769 remaindernear 0 NaN15 -> NaN15
rmnx770 remaindernear -NaN16 -0 -> -NaN16
-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
rmnx780 remaindernear 1 1e999999999 -> 1
rmnx781 remaindernear 1 0.9e999999999 -> 1
rmnx782 remaindernear 1 0.99e999999999 -> 1
rmnx783 remaindernear 1 0.999999999e999999999 -> 1
rmnx784 remaindernear 9e999999999 1 -> NaN Division_impossible
rmnx785 remaindernear 9.9e999999999 1 -> NaN Division_impossible
rmnx786 remaindernear 9.99e999999999 1 -> NaN Division_impossible
rmnx787 remaindernear 9.99999999e999999999 1 -> NaN Division_impossible
-- overflow and underflow tests [from divide]
precision: 9
maxexponent: 999999999
minexponent: -999999999
rmnx790 remaindernear +1.23456789012345E-0 9E+999999999 -> 1.23456789 Inexact Rounded
rmnx791 remaindernear 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
rmnx792 remaindernear +0.100 9E+999999999 -> 0.100
rmnx793 remaindernear 9E-999999999 +9.100 -> 9E-999999999
rmnx795 remaindernear -1.23456789012345E-0 9E+999999999 -> -1.23456789 Inexact Rounded
rmnx796 remaindernear 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
rmnx797 remaindernear -0.100 9E+999999999 -> -0.100
rmnx798 remaindernear 9E-999999999 -9.100 -> 9E-999999999
-- long operands checks
maxexponent: 999
minexponent: -999
precision: 9
rmnx801 remaindernear 12345678000 100 -> 0
rmnx802 remaindernear 1 12345678000 -> 1
rmnx803 remaindernear 1234567800 10 -> 0
rmnx804 remaindernear 1 1234567800 -> 1
rmnx805 remaindernear 1234567890 10 -> 0
rmnx806 remaindernear 1 1234567890 -> 1
rmnx807 remaindernear 1234567891 10 -> 1
rmnx808 remaindernear 1 1234567891 -> 1
rmnx809 remaindernear 12345678901 100 -> 1
rmnx810 remaindernear 1 12345678901 -> 1
rmnx811 remaindernear 1234567896 10 -> -4
rmnx812 remaindernear 1 1234567896 -> 1
precision: 15
rmnx841 remaindernear 12345678000 100 -> 0
rmnx842 remaindernear 1 12345678000 -> 1
rmnx843 remaindernear 1234567800 10 -> 0
rmnx844 remaindernear 1 1234567800 -> 1
rmnx845 remaindernear 1234567890 10 -> 0
rmnx846 remaindernear 1 1234567890 -> 1
rmnx847 remaindernear 1234567891 10 -> 1
rmnx848 remaindernear 1 1234567891 -> 1
rmnx849 remaindernear 12345678901 100 -> 1
rmnx850 remaindernear 1 12345678901 -> 1
rmnx851 remaindernear 1234567896 10 -> -4
rmnx852 remaindernear 1 1234567896 -> 1
-- Null tests
rmnx900 remaindernear 10 # -> NaN Invalid_operation
rmnx901 remaindernear # 10 -> NaN Invalid_operation

View file

@ -1,758 +0,0 @@
------------------------------------------------------------------------
-- rescale.decTest -- decimal rescale operation --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- [obsolete] Quantize.decTest has the improved version
-- 2004.03.15 Underflow for quantize is suppressed
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minexponent: -999
-- sanity checks
resx001 rescale 0 0 -> 0
resx002 rescale 1 0 -> 1
resx003 rescale 0.1 +2 -> 0E+2 Inexact Rounded
resx005 rescale 0.1 +1 -> 0E+1 Inexact Rounded
resx006 rescale 0.1 0 -> 0 Inexact Rounded
resx007 rescale 0.1 -1 -> 0.1
resx008 rescale 0.1 -2 -> 0.10
resx009 rescale 0.1 -3 -> 0.100
resx010 rescale 0.9 +2 -> 0E+2 Inexact Rounded
resx011 rescale 0.9 +1 -> 0E+1 Inexact Rounded
resx012 rescale 0.9 +0 -> 1 Inexact Rounded
resx013 rescale 0.9 -1 -> 0.9
resx014 rescale 0.9 -2 -> 0.90
resx015 rescale 0.9 -3 -> 0.900
-- negatives
resx021 rescale -0 0 -> -0
resx022 rescale -1 0 -> -1
resx023 rescale -0.1 +2 -> -0E+2 Inexact Rounded
resx025 rescale -0.1 +1 -> -0E+1 Inexact Rounded
resx026 rescale -0.1 0 -> -0 Inexact Rounded
resx027 rescale -0.1 -1 -> -0.1
resx028 rescale -0.1 -2 -> -0.10
resx029 rescale -0.1 -3 -> -0.100
resx030 rescale -0.9 +2 -> -0E+2 Inexact Rounded
resx031 rescale -0.9 +1 -> -0E+1 Inexact Rounded
resx032 rescale -0.9 +0 -> -1 Inexact Rounded
resx033 rescale -0.9 -1 -> -0.9
resx034 rescale -0.9 -2 -> -0.90
resx035 rescale -0.9 -3 -> -0.900
resx036 rescale -0.5 +2 -> -0E+2 Inexact Rounded
resx037 rescale -0.5 +1 -> -0E+1 Inexact Rounded
resx038 rescale -0.5 +0 -> -1 Inexact Rounded
resx039 rescale -0.5 -1 -> -0.5
resx040 rescale -0.5 -2 -> -0.50
resx041 rescale -0.5 -3 -> -0.500
resx042 rescale -0.9 +2 -> -0E+2 Inexact Rounded
resx043 rescale -0.9 +1 -> -0E+1 Inexact Rounded
resx044 rescale -0.9 +0 -> -1 Inexact Rounded
resx045 rescale -0.9 -1 -> -0.9
resx046 rescale -0.9 -2 -> -0.90
resx047 rescale -0.9 -3 -> -0.900
-- examples from Specification
resx060 rescale 2.17 -3 -> 2.170
resx061 rescale 2.17 -2 -> 2.17
resx062 rescale 2.17 -1 -> 2.2 Inexact Rounded
resx063 rescale 2.17 0 -> 2 Inexact Rounded
resx064 rescale 2.17 +1 -> 0E+1 Inexact Rounded
resx065 rescale 2 Inf -> NaN Invalid_operation
resx066 rescale -0.1 0 -> -0 Inexact Rounded
resx067 rescale -0 5 -> -0E+5
resx068 rescale +35236450.6 -2 -> NaN Invalid_operation
resx069 rescale -35236450.6 -2 -> NaN Invalid_operation
resx070 rescale 217 -1 -> 217.0
resx071 rescale 217 0 -> 217
resx072 rescale 217 +1 -> 2.2E+2 Inexact Rounded
resx073 rescale 217 +2 -> 2E+2 Inexact Rounded
-- general tests ..
resx089 rescale 12 +4 -> 0E+4 Inexact Rounded
resx090 rescale 12 +3 -> 0E+3 Inexact Rounded
resx091 rescale 12 +2 -> 0E+2 Inexact Rounded
resx092 rescale 12 +1 -> 1E+1 Inexact Rounded
resx093 rescale 1.2345 -2 -> 1.23 Inexact Rounded
resx094 rescale 1.2355 -2 -> 1.24 Inexact Rounded
resx095 rescale 1.2345 -6 -> 1.234500
resx096 rescale 9.9999 -2 -> 10.00 Inexact Rounded
resx097 rescale 0.0001 -2 -> 0.00 Inexact Rounded
resx098 rescale 0.001 -2 -> 0.00 Inexact Rounded
resx099 rescale 0.009 -2 -> 0.01 Inexact Rounded
resx100 rescale 92 +2 -> 1E+2 Inexact Rounded
resx101 rescale -1 0 -> -1
resx102 rescale -1 -1 -> -1.0
resx103 rescale -1 -2 -> -1.00
resx104 rescale 0 0 -> 0
resx105 rescale 0 -1 -> 0.0
resx106 rescale 0 -2 -> 0.00
resx107 rescale 0.00 0 -> 0
resx108 rescale 0 +1 -> 0E+1
resx109 rescale 0 +2 -> 0E+2
resx110 rescale +1 0 -> 1
resx111 rescale +1 -1 -> 1.0
resx112 rescale +1 -2 -> 1.00
resx120 rescale 1.04 -3 -> 1.040
resx121 rescale 1.04 -2 -> 1.04
resx122 rescale 1.04 -1 -> 1.0 Inexact Rounded
resx123 rescale 1.04 0 -> 1 Inexact Rounded
resx124 rescale 1.05 -3 -> 1.050
resx125 rescale 1.05 -2 -> 1.05
resx126 rescale 1.05 -1 -> 1.1 Inexact Rounded
resx127 rescale 1.05 0 -> 1 Inexact Rounded
resx128 rescale 1.05 -3 -> 1.050
resx129 rescale 1.05 -2 -> 1.05
resx130 rescale 1.05 -1 -> 1.1 Inexact Rounded
resx131 rescale 1.05 0 -> 1 Inexact Rounded
resx132 rescale 1.06 -3 -> 1.060
resx133 rescale 1.06 -2 -> 1.06
resx134 rescale 1.06 -1 -> 1.1 Inexact Rounded
resx135 rescale 1.06 0 -> 1 Inexact Rounded
resx140 rescale -10 -2 -> -10.00
resx141 rescale +1 -2 -> 1.00
resx142 rescale +10 -2 -> 10.00
resx143 rescale 1E+10 -2 -> NaN Invalid_operation
resx144 rescale 1E-10 -2 -> 0.00 Inexact Rounded
resx145 rescale 1E-3 -2 -> 0.00 Inexact Rounded
resx146 rescale 1E-2 -2 -> 0.01
resx147 rescale 1E-1 -2 -> 0.10
resx148 rescale 0E-10 -2 -> 0.00
resx150 rescale 1.0600 -5 -> 1.06000
resx151 rescale 1.0600 -4 -> 1.0600
resx152 rescale 1.0600 -3 -> 1.060 Rounded
resx153 rescale 1.0600 -2 -> 1.06 Rounded
resx154 rescale 1.0600 -1 -> 1.1 Inexact Rounded
resx155 rescale 1.0600 0 -> 1 Inexact Rounded
-- +ve exponents ..
resx201 rescale -1 +0 -> -1
resx202 rescale -1 +1 -> -0E+1 Inexact Rounded
resx203 rescale -1 +2 -> -0E+2 Inexact Rounded
resx204 rescale 0 +0 -> 0
resx205 rescale 0 +1 -> 0E+1
resx206 rescale 0 +2 -> 0E+2
resx207 rescale +1 +0 -> 1
resx208 rescale +1 +1 -> 0E+1 Inexact Rounded
resx209 rescale +1 +2 -> 0E+2 Inexact Rounded
resx220 rescale 1.04 +3 -> 0E+3 Inexact Rounded
resx221 rescale 1.04 +2 -> 0E+2 Inexact Rounded
resx222 rescale 1.04 +1 -> 0E+1 Inexact Rounded
resx223 rescale 1.04 +0 -> 1 Inexact Rounded
resx224 rescale 1.05 +3 -> 0E+3 Inexact Rounded
resx225 rescale 1.05 +2 -> 0E+2 Inexact Rounded
resx226 rescale 1.05 +1 -> 0E+1 Inexact Rounded
resx227 rescale 1.05 +0 -> 1 Inexact Rounded
resx228 rescale 1.05 +3 -> 0E+3 Inexact Rounded
resx229 rescale 1.05 +2 -> 0E+2 Inexact Rounded
resx230 rescale 1.05 +1 -> 0E+1 Inexact Rounded
resx231 rescale 1.05 +0 -> 1 Inexact Rounded
resx232 rescale 1.06 +3 -> 0E+3 Inexact Rounded
resx233 rescale 1.06 +2 -> 0E+2 Inexact Rounded
resx234 rescale 1.06 +1 -> 0E+1 Inexact Rounded
resx235 rescale 1.06 +0 -> 1 Inexact Rounded
resx240 rescale -10 +1 -> -1E+1 Rounded
resx241 rescale +1 +1 -> 0E+1 Inexact Rounded
resx242 rescale +10 +1 -> 1E+1 Rounded
resx243 rescale 1E+1 +1 -> 1E+1 -- underneath this is E+1
resx244 rescale 1E+2 +1 -> 1.0E+2 -- underneath this is E+1
resx245 rescale 1E+3 +1 -> 1.00E+3 -- underneath this is E+1
resx246 rescale 1E+4 +1 -> 1.000E+4 -- underneath this is E+1
resx247 rescale 1E+5 +1 -> 1.0000E+5 -- underneath this is E+1
resx248 rescale 1E+6 +1 -> 1.00000E+6 -- underneath this is E+1
resx249 rescale 1E+7 +1 -> 1.000000E+7 -- underneath this is E+1
resx250 rescale 1E+8 +1 -> 1.0000000E+8 -- underneath this is E+1
resx251 rescale 1E+9 +1 -> 1.00000000E+9 -- underneath this is E+1
-- next one tries to add 9 zeros
resx252 rescale 1E+10 +1 -> NaN Invalid_operation
resx253 rescale 1E-10 +1 -> 0E+1 Inexact Rounded
resx254 rescale 1E-2 +1 -> 0E+1 Inexact Rounded
resx255 rescale 0E-10 +1 -> 0E+1
resx256 rescale -0E-10 +1 -> -0E+1
resx257 rescale -0E-1 +1 -> -0E+1
resx258 rescale -0 +1 -> -0E+1
resx259 rescale -0E+1 +1 -> -0E+1
resx260 rescale -10 +2 -> -0E+2 Inexact Rounded
resx261 rescale +1 +2 -> 0E+2 Inexact Rounded
resx262 rescale +10 +2 -> 0E+2 Inexact Rounded
resx263 rescale 1E+1 +2 -> 0E+2 Inexact Rounded
resx264 rescale 1E+2 +2 -> 1E+2
resx265 rescale 1E+3 +2 -> 1.0E+3
resx266 rescale 1E+4 +2 -> 1.00E+4
resx267 rescale 1E+5 +2 -> 1.000E+5
resx268 rescale 1E+6 +2 -> 1.0000E+6
resx269 rescale 1E+7 +2 -> 1.00000E+7
resx270 rescale 1E+8 +2 -> 1.000000E+8
resx271 rescale 1E+9 +2 -> 1.0000000E+9
resx272 rescale 1E+10 +2 -> 1.00000000E+10
resx273 rescale 1E-10 +2 -> 0E+2 Inexact Rounded
resx274 rescale 1E-2 +2 -> 0E+2 Inexact Rounded
resx275 rescale 0E-10 +2 -> 0E+2
resx280 rescale -10 +3 -> -0E+3 Inexact Rounded
resx281 rescale +1 +3 -> 0E+3 Inexact Rounded
resx282 rescale +10 +3 -> 0E+3 Inexact Rounded
resx283 rescale 1E+1 +3 -> 0E+3 Inexact Rounded
resx284 rescale 1E+2 +3 -> 0E+3 Inexact Rounded
resx285 rescale 1E+3 +3 -> 1E+3
resx286 rescale 1E+4 +3 -> 1.0E+4
resx287 rescale 1E+5 +3 -> 1.00E+5
resx288 rescale 1E+6 +3 -> 1.000E+6
resx289 rescale 1E+7 +3 -> 1.0000E+7
resx290 rescale 1E+8 +3 -> 1.00000E+8
resx291 rescale 1E+9 +3 -> 1.000000E+9
resx292 rescale 1E+10 +3 -> 1.0000000E+10
resx293 rescale 1E-10 +3 -> 0E+3 Inexact Rounded
resx294 rescale 1E-2 +3 -> 0E+3 Inexact Rounded
resx295 rescale 0E-10 +3 -> 0E+3
-- round up from below [sign wrong in JIT compiler once]
resx300 rescale 0.0078 -5 -> 0.00780
resx301 rescale 0.0078 -4 -> 0.0078
resx302 rescale 0.0078 -3 -> 0.008 Inexact Rounded
resx303 rescale 0.0078 -2 -> 0.01 Inexact Rounded
resx304 rescale 0.0078 -1 -> 0.0 Inexact Rounded
resx305 rescale 0.0078 0 -> 0 Inexact Rounded
resx306 rescale 0.0078 +1 -> 0E+1 Inexact Rounded
resx307 rescale 0.0078 +2 -> 0E+2 Inexact Rounded
resx310 rescale -0.0078 -5 -> -0.00780
resx311 rescale -0.0078 -4 -> -0.0078
resx312 rescale -0.0078 -3 -> -0.008 Inexact Rounded
resx313 rescale -0.0078 -2 -> -0.01 Inexact Rounded
resx314 rescale -0.0078 -1 -> -0.0 Inexact Rounded
resx315 rescale -0.0078 0 -> -0 Inexact Rounded
resx316 rescale -0.0078 +1 -> -0E+1 Inexact Rounded
resx317 rescale -0.0078 +2 -> -0E+2 Inexact Rounded
resx320 rescale 0.078 -5 -> 0.07800
resx321 rescale 0.078 -4 -> 0.0780
resx322 rescale 0.078 -3 -> 0.078
resx323 rescale 0.078 -2 -> 0.08 Inexact Rounded
resx324 rescale 0.078 -1 -> 0.1 Inexact Rounded
resx325 rescale 0.078 0 -> 0 Inexact Rounded
resx326 rescale 0.078 +1 -> 0E+1 Inexact Rounded
resx327 rescale 0.078 +2 -> 0E+2 Inexact Rounded
resx330 rescale -0.078 -5 -> -0.07800
resx331 rescale -0.078 -4 -> -0.0780
resx332 rescale -0.078 -3 -> -0.078
resx333 rescale -0.078 -2 -> -0.08 Inexact Rounded
resx334 rescale -0.078 -1 -> -0.1 Inexact Rounded
resx335 rescale -0.078 0 -> -0 Inexact Rounded
resx336 rescale -0.078 +1 -> -0E+1 Inexact Rounded
resx337 rescale -0.078 +2 -> -0E+2 Inexact Rounded
resx340 rescale 0.78 -5 -> 0.78000
resx341 rescale 0.78 -4 -> 0.7800
resx342 rescale 0.78 -3 -> 0.780
resx343 rescale 0.78 -2 -> 0.78
resx344 rescale 0.78 -1 -> 0.8 Inexact Rounded
resx345 rescale 0.78 0 -> 1 Inexact Rounded
resx346 rescale 0.78 +1 -> 0E+1 Inexact Rounded
resx347 rescale 0.78 +2 -> 0E+2 Inexact Rounded
resx350 rescale -0.78 -5 -> -0.78000
resx351 rescale -0.78 -4 -> -0.7800
resx352 rescale -0.78 -3 -> -0.780
resx353 rescale -0.78 -2 -> -0.78
resx354 rescale -0.78 -1 -> -0.8 Inexact Rounded
resx355 rescale -0.78 0 -> -1 Inexact Rounded
resx356 rescale -0.78 +1 -> -0E+1 Inexact Rounded
resx357 rescale -0.78 +2 -> -0E+2 Inexact Rounded
resx360 rescale 7.8 -5 -> 7.80000
resx361 rescale 7.8 -4 -> 7.8000
resx362 rescale 7.8 -3 -> 7.800
resx363 rescale 7.8 -2 -> 7.80
resx364 rescale 7.8 -1 -> 7.8
resx365 rescale 7.8 0 -> 8 Inexact Rounded
resx366 rescale 7.8 +1 -> 1E+1 Inexact Rounded
resx367 rescale 7.8 +2 -> 0E+2 Inexact Rounded
resx368 rescale 7.8 +3 -> 0E+3 Inexact Rounded
resx370 rescale -7.8 -5 -> -7.80000
resx371 rescale -7.8 -4 -> -7.8000
resx372 rescale -7.8 -3 -> -7.800
resx373 rescale -7.8 -2 -> -7.80
resx374 rescale -7.8 -1 -> -7.8
resx375 rescale -7.8 0 -> -8 Inexact Rounded
resx376 rescale -7.8 +1 -> -1E+1 Inexact Rounded
resx377 rescale -7.8 +2 -> -0E+2 Inexact Rounded
resx378 rescale -7.8 +3 -> -0E+3 Inexact Rounded
-- some individuals
precision: 9
resx380 rescale 352364.506 -2 -> 352364.51 Inexact Rounded
resx381 rescale 3523645.06 -2 -> 3523645.06
resx382 rescale 35236450.6 -2 -> NaN Invalid_operation
resx383 rescale 352364506 -2 -> NaN Invalid_operation
resx384 rescale -352364.506 -2 -> -352364.51 Inexact Rounded
resx385 rescale -3523645.06 -2 -> -3523645.06
resx386 rescale -35236450.6 -2 -> NaN Invalid_operation
resx387 rescale -352364506 -2 -> NaN Invalid_operation
rounding: down
resx389 rescale 35236450.6 -2 -> NaN Invalid_operation
-- ? should that one instead have been:
-- resx389 rescale 35236450.6 -2 -> NaN Invalid_operation
rounding: half_up
-- and a few more from e-mail discussions
precision: 7
resx391 rescale 12.34567 -3 -> 12.346 Inexact Rounded
resx392 rescale 123.4567 -3 -> 123.457 Inexact Rounded
resx393 rescale 1234.567 -3 -> 1234.567
resx394 rescale 12345.67 -3 -> NaN Invalid_operation
resx395 rescale 123456.7 -3 -> NaN Invalid_operation
resx396 rescale 1234567. -3 -> NaN Invalid_operation
-- some 9999 round-up cases
precision: 9
resx400 rescale 9.999 -5 -> 9.99900
resx401 rescale 9.999 -4 -> 9.9990
resx402 rescale 9.999 -3 -> 9.999
resx403 rescale 9.999 -2 -> 10.00 Inexact Rounded
resx404 rescale 9.999 -1 -> 10.0 Inexact Rounded
resx405 rescale 9.999 0 -> 10 Inexact Rounded
resx406 rescale 9.999 1 -> 1E+1 Inexact Rounded
resx407 rescale 9.999 2 -> 0E+2 Inexact Rounded
resx410 rescale 0.999 -5 -> 0.99900
resx411 rescale 0.999 -4 -> 0.9990
resx412 rescale 0.999 -3 -> 0.999
resx413 rescale 0.999 -2 -> 1.00 Inexact Rounded
resx414 rescale 0.999 -1 -> 1.0 Inexact Rounded
resx415 rescale 0.999 0 -> 1 Inexact Rounded
resx416 rescale 0.999 1 -> 0E+1 Inexact Rounded
resx420 rescale 0.0999 -5 -> 0.09990
resx421 rescale 0.0999 -4 -> 0.0999
resx422 rescale 0.0999 -3 -> 0.100 Inexact Rounded
resx423 rescale 0.0999 -2 -> 0.10 Inexact Rounded
resx424 rescale 0.0999 -1 -> 0.1 Inexact Rounded
resx425 rescale 0.0999 0 -> 0 Inexact Rounded
resx426 rescale 0.0999 1 -> 0E+1 Inexact Rounded
resx430 rescale 0.00999 -5 -> 0.00999
resx431 rescale 0.00999 -4 -> 0.0100 Inexact Rounded
resx432 rescale 0.00999 -3 -> 0.010 Inexact Rounded
resx433 rescale 0.00999 -2 -> 0.01 Inexact Rounded
resx434 rescale 0.00999 -1 -> 0.0 Inexact Rounded
resx435 rescale 0.00999 0 -> 0 Inexact Rounded
resx436 rescale 0.00999 1 -> 0E+1 Inexact Rounded
resx440 rescale 0.000999 -5 -> 0.00100 Inexact Rounded
resx441 rescale 0.000999 -4 -> 0.0010 Inexact Rounded
resx442 rescale 0.000999 -3 -> 0.001 Inexact Rounded
resx443 rescale 0.000999 -2 -> 0.00 Inexact Rounded
resx444 rescale 0.000999 -1 -> 0.0 Inexact Rounded
resx445 rescale 0.000999 0 -> 0 Inexact Rounded
resx446 rescale 0.000999 1 -> 0E+1 Inexact Rounded
precision: 8
resx449 rescale 9.999E-15 -23 -> NaN Invalid_operation
resx450 rescale 9.999E-15 -22 -> 9.9990000E-15
resx451 rescale 9.999E-15 -21 -> 9.999000E-15
resx452 rescale 9.999E-15 -20 -> 9.99900E-15
resx453 rescale 9.999E-15 -19 -> 9.9990E-15
resx454 rescale 9.999E-15 -18 -> 9.999E-15
resx455 rescale 9.999E-15 -17 -> 1.000E-14 Inexact Rounded
resx456 rescale 9.999E-15 -16 -> 1.00E-14 Inexact Rounded
resx457 rescale 9.999E-15 -15 -> 1.0E-14 Inexact Rounded
resx458 rescale 9.999E-15 -14 -> 1E-14 Inexact Rounded
resx459 rescale 9.999E-15 -13 -> 0E-13 Inexact Rounded
resx460 rescale 9.999E-15 -12 -> 0E-12 Inexact Rounded
resx461 rescale 9.999E-15 -11 -> 0E-11 Inexact Rounded
resx462 rescale 9.999E-15 -10 -> 0E-10 Inexact Rounded
resx463 rescale 9.999E-15 -9 -> 0E-9 Inexact Rounded
resx464 rescale 9.999E-15 -8 -> 0E-8 Inexact Rounded
resx465 rescale 9.999E-15 -7 -> 0E-7 Inexact Rounded
resx466 rescale 9.999E-15 -6 -> 0.000000 Inexact Rounded
resx467 rescale 9.999E-15 -5 -> 0.00000 Inexact Rounded
resx468 rescale 9.999E-15 -4 -> 0.0000 Inexact Rounded
resx469 rescale 9.999E-15 -3 -> 0.000 Inexact Rounded
resx470 rescale 9.999E-15 -2 -> 0.00 Inexact Rounded
resx471 rescale 9.999E-15 -1 -> 0.0 Inexact Rounded
resx472 rescale 9.999E-15 0 -> 0 Inexact Rounded
resx473 rescale 9.999E-15 1 -> 0E+1 Inexact Rounded
-- long operand checks [rhs checks removed]
maxexponent: 999
minexponent: -999
precision: 9
resx481 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
resx482 rescale 1234567800 +1 -> 1.23456780E+9 Rounded
resx483 rescale 1234567890 +1 -> 1.23456789E+9 Rounded
resx484 rescale 1234567891 +1 -> 1.23456789E+9 Inexact Rounded
resx485 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
resx486 rescale 1234567896 +1 -> 1.23456790E+9 Inexact Rounded
-- a potential double-round
resx487 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
resx488 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded
precision: 15
resx491 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
resx492 rescale 1234567800 +1 -> 1.23456780E+9 Rounded
resx493 rescale 1234567890 +1 -> 1.23456789E+9 Rounded
resx494 rescale 1234567891 +1 -> 1.23456789E+9 Inexact Rounded
resx495 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
resx496 rescale 1234567896 +1 -> 1.23456790E+9 Inexact Rounded
resx497 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
resx498 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded
-- Zeros
resx500 rescale 0 1 -> 0E+1
resx501 rescale 0 0 -> 0
resx502 rescale 0 -1 -> 0.0
resx503 rescale 0.0 -1 -> 0.0
resx504 rescale 0.0 0 -> 0
resx505 rescale 0.0 +1 -> 0E+1
resx506 rescale 0E+1 -1 -> 0.0
resx507 rescale 0E+1 0 -> 0
resx508 rescale 0E+1 +1 -> 0E+1
resx509 rescale -0 1 -> -0E+1
resx510 rescale -0 0 -> -0
resx511 rescale -0 -1 -> -0.0
resx512 rescale -0.0 -1 -> -0.0
resx513 rescale -0.0 0 -> -0
resx514 rescale -0.0 +1 -> -0E+1
resx515 rescale -0E+1 -1 -> -0.0
resx516 rescale -0E+1 0 -> -0
resx517 rescale -0E+1 +1 -> -0E+1
-- Suspicious RHS values
maxexponent: 999999999
minexponent: -999999999
precision: 15
resx520 rescale 1.234 999999E+3 -> 0E+999999000 Inexact Rounded
resx521 rescale 123.456 999999E+3 -> 0E+999999000 Inexact Rounded
resx522 rescale 1.234 999999999 -> 0E+999999999 Inexact Rounded
resx523 rescale 123.456 999999999 -> 0E+999999999 Inexact Rounded
resx524 rescale 123.456 1000000000 -> NaN Invalid_operation
resx525 rescale 123.456 12345678903 -> NaN Invalid_operation
-- next four are "won't fit" overflows
resx526 rescale 1.234 -999999E+3 -> NaN Invalid_operation
resx527 rescale 123.456 -999999E+3 -> NaN Invalid_operation
resx528 rescale 1.234 -999999999 -> NaN Invalid_operation
resx529 rescale 123.456 -999999999 -> NaN Invalid_operation
resx530 rescale 123.456 -1000000014 -> NaN Invalid_operation
resx531 rescale 123.456 -12345678903 -> NaN Invalid_operation
maxexponent: 999
minexponent: -999
precision: 15
resx532 rescale 1.234E+999 999 -> 1E+999 Inexact Rounded
resx533 rescale 1.234E+998 999 -> 0E+999 Inexact Rounded
resx534 rescale 1.234 999 -> 0E+999 Inexact Rounded
resx535 rescale 1.234 1000 -> NaN Invalid_operation
resx536 rescale 1.234 5000 -> NaN Invalid_operation
resx537 rescale 0 -999 -> 0E-999
-- next two are "won't fit" overflows
resx538 rescale 1.234 -999 -> NaN Invalid_operation
resx539 rescale 1.234 -1000 -> NaN Invalid_operation
resx540 rescale 1.234 -5000 -> NaN Invalid_operation
-- [more below]
-- check bounds (lhs maybe out of range for destination, etc.)
precision: 7
resx541 rescale 1E+999 +999 -> 1E+999
resx542 rescale 1E+1000 +999 -> NaN Invalid_operation
resx543 rescale 1E+999 +1000 -> NaN Invalid_operation
resx544 rescale 1E-999 -999 -> 1E-999
resx545 rescale 1E-1000 -999 -> 0E-999 Inexact Rounded
resx546 rescale 1E-999 -1000 -> 1.0E-999
resx547 rescale 1E-1005 -999 -> 0E-999 Inexact Rounded
resx548 rescale 1E-1006 -999 -> 0E-999 Inexact Rounded
resx549 rescale 1E-1007 -999 -> 0E-999 Inexact Rounded
resx550 rescale 1E-998 -1005 -> NaN Invalid_operation -- won't fit
resx551 rescale 1E-999 -1005 -> 1.000000E-999
resx552 rescale 1E-1000 -1005 -> 1.00000E-1000 Subnormal
resx553 rescale 1E-999 -1006 -> NaN Invalid_operation
resx554 rescale 1E-999 -1007 -> NaN Invalid_operation
-- related subnormal rounding
resx555 rescale 1.666666E-999 -1005 -> 1.666666E-999
resx556 rescale 1.666666E-1000 -1005 -> 1.66667E-1000 Subnormal Inexact Rounded
resx557 rescale 1.666666E-1001 -1005 -> 1.6667E-1001 Subnormal Inexact Rounded
resx558 rescale 1.666666E-1002 -1005 -> 1.667E-1002 Subnormal Inexact Rounded
resx559 rescale 1.666666E-1003 -1005 -> 1.67E-1003 Subnormal Inexact Rounded
resx560 rescale 1.666666E-1004 -1005 -> 1.7E-1004 Subnormal Inexact Rounded
resx561 rescale 1.666666E-1005 -1005 -> 2E-1005 Subnormal Inexact Rounded
resx562 rescale 1.666666E-1006 -1005 -> 0E-1005 Inexact Rounded
resx563 rescale 1.666666E-1007 -1005 -> 0E-1005 Inexact Rounded
-- fractional RHS, some good and some bad
precision: 9
resx564 rescale 222 +2.0 -> 2E+2 Inexact Rounded
resx565 rescale 222 +2.00000000 -> 2E+2 Inexact Rounded
resx566 rescale 222 +2.00100000000 -> NaN Invalid_operation
resx567 rescale 222 +2.000001 -> NaN Invalid_operation
resx568 rescale 222 +2.000000001 -> NaN Invalid_operation
resx569 rescale 222 +2.0000000001 -> NaN Invalid_operation
resx570 rescale 222 +2.00000000001 -> NaN Invalid_operation
resx571 rescale 222 +2.99999999999 -> NaN Invalid_operation
resx572 rescale 222 -2.00000000 -> 222.00
resx573 rescale 222 -2.00100000000 -> NaN Invalid_operation
resx574 rescale 222 -2.0000001000 -> NaN Invalid_operation
resx575 rescale 222 -2.00000000001 -> NaN Invalid_operation
resx576 rescale 222 -2.99999999999 -> NaN Invalid_operation
-- Specials
resx580 rescale Inf -Inf -> Infinity
resx581 rescale Inf -1000 -> NaN Invalid_operation
resx582 rescale Inf -1 -> NaN Invalid_operation
resx583 rescale Inf 0 -> NaN Invalid_operation
resx584 rescale Inf 1 -> NaN Invalid_operation
resx585 rescale Inf 1000 -> NaN Invalid_operation
resx586 rescale Inf Inf -> Infinity
resx587 rescale -1000 Inf -> NaN Invalid_operation
resx588 rescale -Inf Inf -> -Infinity
resx589 rescale -1 Inf -> NaN Invalid_operation
resx590 rescale 0 Inf -> NaN Invalid_operation
resx591 rescale 1 Inf -> NaN Invalid_operation
resx592 rescale 1000 Inf -> NaN Invalid_operation
resx593 rescale Inf Inf -> Infinity
resx594 rescale Inf -0 -> NaN Invalid_operation
resx595 rescale -0 Inf -> NaN Invalid_operation
resx600 rescale -Inf -Inf -> -Infinity
resx601 rescale -Inf -1000 -> NaN Invalid_operation
resx602 rescale -Inf -1 -> NaN Invalid_operation
resx603 rescale -Inf 0 -> NaN Invalid_operation
resx604 rescale -Inf 1 -> NaN Invalid_operation
resx605 rescale -Inf 1000 -> NaN Invalid_operation
resx606 rescale -Inf Inf -> -Infinity
resx607 rescale -1000 Inf -> NaN Invalid_operation
resx608 rescale -Inf -Inf -> -Infinity
resx609 rescale -1 -Inf -> NaN Invalid_operation
resx610 rescale 0 -Inf -> NaN Invalid_operation
resx611 rescale 1 -Inf -> NaN Invalid_operation
resx612 rescale 1000 -Inf -> NaN Invalid_operation
resx613 rescale Inf -Inf -> Infinity
resx614 rescale -Inf -0 -> NaN Invalid_operation
resx615 rescale -0 -Inf -> NaN Invalid_operation
resx621 rescale NaN -Inf -> NaN
resx622 rescale NaN -1000 -> NaN
resx623 rescale NaN -1 -> NaN
resx624 rescale NaN 0 -> NaN
resx625 rescale NaN 1 -> NaN
resx626 rescale NaN 1000 -> NaN
resx627 rescale NaN Inf -> NaN
resx628 rescale NaN NaN -> NaN
resx629 rescale -Inf NaN -> NaN
resx630 rescale -1000 NaN -> NaN
resx631 rescale -1 NaN -> NaN
resx632 rescale 0 NaN -> NaN
resx633 rescale 1 -NaN -> -NaN
resx634 rescale 1000 NaN -> NaN
resx635 rescale Inf NaN -> NaN
resx636 rescale NaN -0 -> NaN
resx637 rescale -0 NaN -> NaN
resx641 rescale sNaN -Inf -> NaN Invalid_operation
resx642 rescale sNaN -1000 -> NaN Invalid_operation
resx643 rescale sNaN -1 -> NaN Invalid_operation
resx644 rescale sNaN 0 -> NaN Invalid_operation
resx645 rescale sNaN 1 -> NaN Invalid_operation
resx646 rescale sNaN 1000 -> NaN Invalid_operation
resx647 rescale -sNaN NaN -> -NaN Invalid_operation
resx648 rescale sNaN -sNaN -> NaN Invalid_operation
resx649 rescale NaN sNaN -> NaN Invalid_operation
resx650 rescale -Inf sNaN -> NaN Invalid_operation
resx651 rescale -1000 sNaN -> NaN Invalid_operation
resx652 rescale -1 sNaN -> NaN Invalid_operation
resx653 rescale 0 sNaN -> NaN Invalid_operation
resx654 rescale 1 -sNaN -> -NaN Invalid_operation
resx655 rescale 1000 sNaN -> NaN Invalid_operation
resx656 rescale Inf sNaN -> NaN Invalid_operation
resx657 rescale NaN sNaN -> NaN Invalid_operation
resx658 rescale sNaN -0 -> NaN Invalid_operation
resx659 rescale -0 sNaN -> NaN Invalid_operation
-- propagating NaNs
resx661 rescale NaN9 -Inf -> NaN9
resx662 rescale NaN81 919 -> NaN81
resx663 rescale NaN72 Inf -> NaN72
resx664 rescale -NaN66 NaN5 -> -NaN66
resx665 rescale -Inf NaN4 -> NaN4
resx666 rescale -919 NaN32 -> NaN32
resx667 rescale Inf NaN2 -> NaN2
resx671 rescale sNaN99 -Inf -> NaN99 Invalid_operation
resx672 rescale -sNaN98 -11 -> -NaN98 Invalid_operation
resx673 rescale sNaN97 NaN -> NaN97 Invalid_operation
resx674 rescale sNaN16 sNaN94 -> NaN16 Invalid_operation
resx675 rescale NaN95 sNaN93 -> NaN93 Invalid_operation
resx676 rescale -Inf sNaN92 -> NaN92 Invalid_operation
resx677 rescale 088 -sNaN91 -> -NaN91 Invalid_operation
resx678 rescale Inf -sNaN90 -> -NaN90 Invalid_operation
resx679 rescale NaN sNaN87 -> NaN87 Invalid_operation
-- subnormals and underflow
precision: 4
maxexponent: 999
minexponent: -999
resx710 rescale 1.00E-999 -999 -> 1E-999 Rounded
resx711 rescale 0.1E-999 -1000 -> 1E-1000 Subnormal
resx712 rescale 0.10E-999 -1000 -> 1E-1000 Subnormal Rounded
resx713 rescale 0.100E-999 -1000 -> 1E-1000 Subnormal Rounded
resx714 rescale 0.01E-999 -1001 -> 1E-1001 Subnormal
-- next is rounded to Emin
resx715 rescale 0.999E-999 -999 -> 1E-999 Inexact Rounded
resx716 rescale 0.099E-999 -1000 -> 1E-1000 Inexact Rounded Subnormal
resx717 rescale 0.009E-999 -1001 -> 1E-1001 Inexact Rounded Subnormal
resx718 rescale 0.001E-999 -1001 -> 0E-1001 Inexact Rounded
resx719 rescale 0.0009E-999 -1001 -> 0E-1001 Inexact Rounded
resx720 rescale 0.0001E-999 -1001 -> 0E-1001 Inexact Rounded
resx730 rescale -1.00E-999 -999 -> -1E-999 Rounded
resx731 rescale -0.1E-999 -999 -> -0E-999 Rounded Inexact
resx732 rescale -0.10E-999 -999 -> -0E-999 Rounded Inexact
resx733 rescale -0.100E-999 -999 -> -0E-999 Rounded Inexact
resx734 rescale -0.01E-999 -999 -> -0E-999 Inexact Rounded
-- next is rounded to Emin
resx735 rescale -0.999E-999 -999 -> -1E-999 Inexact Rounded
resx736 rescale -0.099E-999 -999 -> -0E-999 Inexact Rounded
resx737 rescale -0.009E-999 -999 -> -0E-999 Inexact Rounded
resx738 rescale -0.001E-999 -999 -> -0E-999 Inexact Rounded
resx739 rescale -0.0001E-999 -999 -> -0E-999 Inexact Rounded
resx740 rescale -1.00E-999 -1000 -> -1.0E-999 Rounded
resx741 rescale -0.1E-999 -1000 -> -1E-1000 Subnormal
resx742 rescale -0.10E-999 -1000 -> -1E-1000 Subnormal Rounded
resx743 rescale -0.100E-999 -1000 -> -1E-1000 Subnormal Rounded
resx744 rescale -0.01E-999 -1000 -> -0E-1000 Inexact Rounded
-- next is rounded to Emin
resx745 rescale -0.999E-999 -1000 -> -1.0E-999 Inexact Rounded
resx746 rescale -0.099E-999 -1000 -> -1E-1000 Inexact Rounded Subnormal
resx747 rescale -0.009E-999 -1000 -> -0E-1000 Inexact Rounded
resx748 rescale -0.001E-999 -1000 -> -0E-1000 Inexact Rounded
resx749 rescale -0.0001E-999 -1000 -> -0E-1000 Inexact Rounded
resx750 rescale -1.00E-999 -1001 -> -1.00E-999
resx751 rescale -0.1E-999 -1001 -> -1.0E-1000 Subnormal
resx752 rescale -0.10E-999 -1001 -> -1.0E-1000 Subnormal
resx753 rescale -0.100E-999 -1001 -> -1.0E-1000 Subnormal Rounded
resx754 rescale -0.01E-999 -1001 -> -1E-1001 Subnormal
-- next is rounded to Emin
resx755 rescale -0.999E-999 -1001 -> -1.00E-999 Inexact Rounded
resx756 rescale -0.099E-999 -1001 -> -1.0E-1000 Inexact Rounded Subnormal
resx757 rescale -0.009E-999 -1001 -> -1E-1001 Inexact Rounded Subnormal
resx758 rescale -0.001E-999 -1001 -> -0E-1001 Inexact Rounded
resx759 rescale -0.0001E-999 -1001 -> -0E-1001 Inexact Rounded
resx760 rescale -1.00E-999 -1002 -> -1.000E-999
resx761 rescale -0.1E-999 -1002 -> -1.00E-1000 Subnormal
resx762 rescale -0.10E-999 -1002 -> -1.00E-1000 Subnormal
resx763 rescale -0.100E-999 -1002 -> -1.00E-1000 Subnormal
resx764 rescale -0.01E-999 -1002 -> -1.0E-1001 Subnormal
resx765 rescale -0.999E-999 -1002 -> -9.99E-1000 Subnormal
resx766 rescale -0.099E-999 -1002 -> -9.9E-1001 Subnormal
resx767 rescale -0.009E-999 -1002 -> -9E-1002 Subnormal
resx768 rescale -0.001E-999 -1002 -> -1E-1002 Subnormal
resx769 rescale -0.0001E-999 -1002 -> -0E-1002 Inexact Rounded
-- rhs must be no less than Etiny
resx770 rescale -1.00E-999 -1003 -> NaN Invalid_operation
resx771 rescale -0.1E-999 -1003 -> NaN Invalid_operation
resx772 rescale -0.10E-999 -1003 -> NaN Invalid_operation
resx773 rescale -0.100E-999 -1003 -> NaN Invalid_operation
resx774 rescale -0.01E-999 -1003 -> NaN Invalid_operation
resx775 rescale -0.999E-999 -1003 -> NaN Invalid_operation
resx776 rescale -0.099E-999 -1003 -> NaN Invalid_operation
resx777 rescale -0.009E-999 -1003 -> NaN Invalid_operation
resx778 rescale -0.001E-999 -1003 -> NaN Invalid_operation
resx779 rescale -0.0001E-999 -1003 -> NaN Invalid_operation
precision: 9
maxExponent: 999999999
minexponent: -999999999
-- getInt worries
resx801 rescale 0 1000000000 -> NaN Invalid_operation
resx802 rescale 0 -1000000000 -> 0E-1000000000
resx803 rescale 0 2000000000 -> NaN Invalid_operation
resx804 rescale 0 -2000000000 -> NaN Invalid_operation
resx805 rescale 0 3000000000 -> NaN Invalid_operation
resx806 rescale 0 -3000000000 -> NaN Invalid_operation
resx807 rescale 0 4000000000 -> NaN Invalid_operation
resx808 rescale 0 -4000000000 -> NaN Invalid_operation
resx809 rescale 0 5000000000 -> NaN Invalid_operation
resx810 rescale 0 -5000000000 -> NaN Invalid_operation
resx811 rescale 0 6000000000 -> NaN Invalid_operation
resx812 rescale 0 -6000000000 -> NaN Invalid_operation
resx813 rescale 0 7000000000 -> NaN Invalid_operation
resx814 rescale 0 -7000000000 -> NaN Invalid_operation
resx815 rescale 0 8000000000 -> NaN Invalid_operation
resx816 rescale 0 -8000000000 -> NaN Invalid_operation
resx817 rescale 0 9000000000 -> NaN Invalid_operation
resx818 rescale 0 -9000000000 -> NaN Invalid_operation
resx819 rescale 0 9999999999 -> NaN Invalid_operation
resx820 rescale 0 -9999999999 -> NaN Invalid_operation
resx821 rescale 0 10000000000 -> NaN Invalid_operation
resx822 rescale 0 -10000000000 -> NaN Invalid_operation
resx831 rescale 1 0E-1 -> 1
resx832 rescale 1 0E-2 -> 1
resx833 rescale 1 0E-3 -> 1
resx834 rescale 1 0E-4 -> 1
resx835 rescale 1 0E-100 -> 1
resx836 rescale 1 0E-100000 -> 1
resx837 rescale 1 0E+100 -> 1
resx838 rescale 1 0E+100000 -> 1
resx841 rescale 0 5E-1000000 -> NaN Invalid_operation
resx842 rescale 0 5E-1000000 -> NaN Invalid_operation
resx843 rescale 0 999999999 -> 0E+999999999
resx844 rescale 0 1000000000 -> NaN Invalid_operation
resx845 rescale 0 -999999999 -> 0E-999999999
resx846 rescale 0 -1000000000 -> 0E-1000000000
resx847 rescale 0 -1000000001 -> 0E-1000000001
resx848 rescale 0 -1000000002 -> 0E-1000000002
resx849 rescale 0 -1000000003 -> 0E-1000000003
resx850 rescale 0 -1000000004 -> 0E-1000000004
resx851 rescale 0 -1000000005 -> 0E-1000000005
resx852 rescale 0 -1000000006 -> 0E-1000000006
resx853 rescale 0 -1000000007 -> 0E-1000000007
resx854 rescale 0 -1000000008 -> NaN Invalid_operation
resx861 rescale 1 +2147483649 -> NaN Invalid_operation
resx862 rescale 1 +2147483648 -> NaN Invalid_operation
resx863 rescale 1 +2147483647 -> NaN Invalid_operation
resx864 rescale 1 -2147483647 -> NaN Invalid_operation
resx865 rescale 1 -2147483648 -> NaN Invalid_operation
resx866 rescale 1 -2147483649 -> NaN Invalid_operation
-- Null tests
res900 rescale 10 # -> NaN Invalid_operation
res901 rescale # 10 -> NaN Invalid_operation

File diff suppressed because it is too large Load diff

View file

@ -1,353 +0,0 @@
------------------------------------------------------------------------
-- samequantum.decTest -- check quantums match --
-- Copyright (c) IBM Corporation, 2001, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minExponent: -999
samq001 samequantum 0 0 -> 1
samq002 samequantum 0 1 -> 1
samq003 samequantum 1 0 -> 1
samq004 samequantum 1 1 -> 1
samq011 samequantum 10 1E+1 -> 0
samq012 samequantum 10E+1 10E+1 -> 1
samq013 samequantum 100 10E+1 -> 0
samq014 samequantum 100 1E+2 -> 0
samq015 samequantum 0.1 1E-2 -> 0
samq016 samequantum 0.1 1E-1 -> 1
samq017 samequantum 0.1 1E-0 -> 0
samq018 samequantum 999 999 -> 1
samq019 samequantum 999E-1 99.9 -> 1
samq020 samequantum 111E-1 22.2 -> 1
samq021 samequantum 111E-1 1234.2 -> 1
-- zeros
samq030 samequantum 0.0 1.1 -> 1
samq031 samequantum 0.0 1.11 -> 0
samq032 samequantum 0.0 0 -> 0
samq033 samequantum 0.0 0.0 -> 1
samq034 samequantum 0.0 0.00 -> 0
samq035 samequantum 0E+1 0E+0 -> 0
samq036 samequantum 0E+1 0E+1 -> 1
samq037 samequantum 0E+1 0E+2 -> 0
samq038 samequantum 0E-17 0E-16 -> 0
samq039 samequantum 0E-17 0E-17 -> 1
samq040 samequantum 0E-17 0E-18 -> 0
samq041 samequantum 0E-17 0.0E-15 -> 0
samq042 samequantum 0E-17 0.0E-16 -> 1
samq043 samequantum 0E-17 0.0E-17 -> 0
samq044 samequantum -0E-17 0.0E-16 -> 1
samq045 samequantum 0E-17 -0.0E-17 -> 0
samq046 samequantum 0E-17 -0.0E-16 -> 1
samq047 samequantum -0E-17 0.0E-17 -> 0
samq048 samequantum -0E-17 -0.0E-16 -> 1
samq049 samequantum -0E-17 -0.0E-17 -> 0
-- specials & combinations
samq0110 samequantum -Inf -Inf -> 1
samq0111 samequantum -Inf Inf -> 1
samq0112 samequantum -Inf NaN -> 0
samq0113 samequantum -Inf -7E+3 -> 0
samq0114 samequantum -Inf -7 -> 0
samq0115 samequantum -Inf -7E-3 -> 0
samq0116 samequantum -Inf -0E-3 -> 0
samq0117 samequantum -Inf -0 -> 0
samq0118 samequantum -Inf -0E+3 -> 0
samq0119 samequantum -Inf 0E-3 -> 0
samq0120 samequantum -Inf 0 -> 0
samq0121 samequantum -Inf 0E+3 -> 0
samq0122 samequantum -Inf 7E-3 -> 0
samq0123 samequantum -Inf 7 -> 0
samq0124 samequantum -Inf 7E+3 -> 0
samq0125 samequantum -Inf sNaN -> 0
samq0210 samequantum Inf -Inf -> 1
samq0211 samequantum Inf Inf -> 1
samq0212 samequantum Inf NaN -> 0
samq0213 samequantum Inf -7E+3 -> 0
samq0214 samequantum Inf -7 -> 0
samq0215 samequantum Inf -7E-3 -> 0
samq0216 samequantum Inf -0E-3 -> 0
samq0217 samequantum Inf -0 -> 0
samq0218 samequantum Inf -0E+3 -> 0
samq0219 samequantum Inf 0E-3 -> 0
samq0220 samequantum Inf 0 -> 0
samq0221 samequantum Inf 0E+3 -> 0
samq0222 samequantum Inf 7E-3 -> 0
samq0223 samequantum Inf 7 -> 0
samq0224 samequantum Inf 7E+3 -> 0
samq0225 samequantum Inf sNaN -> 0
samq0310 samequantum NaN -Inf -> 0
samq0311 samequantum NaN Inf -> 0
samq0312 samequantum NaN NaN -> 1
samq0313 samequantum NaN -7E+3 -> 0
samq0314 samequantum NaN -7 -> 0
samq0315 samequantum NaN -7E-3 -> 0
samq0316 samequantum NaN -0E-3 -> 0
samq0317 samequantum NaN -0 -> 0
samq0318 samequantum NaN -0E+3 -> 0
samq0319 samequantum NaN 0E-3 -> 0
samq0320 samequantum NaN 0 -> 0
samq0321 samequantum NaN 0E+3 -> 0
samq0322 samequantum NaN 7E-3 -> 0
samq0323 samequantum NaN 7 -> 0
samq0324 samequantum NaN 7E+3 -> 0
samq0325 samequantum NaN sNaN -> 1
samq0410 samequantum -7E+3 -Inf -> 0
samq0411 samequantum -7E+3 Inf -> 0
samq0412 samequantum -7E+3 NaN -> 0
samq0413 samequantum -7E+3 -7E+3 -> 1
samq0414 samequantum -7E+3 -7 -> 0
samq0415 samequantum -7E+3 -7E-3 -> 0
samq0416 samequantum -7E+3 -0E-3 -> 0
samq0417 samequantum -7E+3 -0 -> 0
samq0418 samequantum -7E+3 -0E+3 -> 1
samq0419 samequantum -7E+3 0E-3 -> 0
samq0420 samequantum -7E+3 0 -> 0
samq0421 samequantum -7E+3 0E+3 -> 1
samq0422 samequantum -7E+3 7E-3 -> 0
samq0423 samequantum -7E+3 7 -> 0
samq0424 samequantum -7E+3 7E+3 -> 1
samq0425 samequantum -7E+3 sNaN -> 0
samq0510 samequantum -7 -Inf -> 0
samq0511 samequantum -7 Inf -> 0
samq0512 samequantum -7 NaN -> 0
samq0513 samequantum -7 -7E+3 -> 0
samq0514 samequantum -7 -7 -> 1
samq0515 samequantum -7 -7E-3 -> 0
samq0516 samequantum -7 -0E-3 -> 0
samq0517 samequantum -7 -0 -> 1
samq0518 samequantum -7 -0E+3 -> 0
samq0519 samequantum -7 0E-3 -> 0
samq0520 samequantum -7 0 -> 1
samq0521 samequantum -7 0E+3 -> 0
samq0522 samequantum -7 7E-3 -> 0
samq0523 samequantum -7 7 -> 1
samq0524 samequantum -7 7E+3 -> 0
samq0525 samequantum -7 sNaN -> 0
samq0610 samequantum -7E-3 -Inf -> 0
samq0611 samequantum -7E-3 Inf -> 0
samq0612 samequantum -7E-3 NaN -> 0
samq0613 samequantum -7E-3 -7E+3 -> 0
samq0614 samequantum -7E-3 -7 -> 0
samq0615 samequantum -7E-3 -7E-3 -> 1
samq0616 samequantum -7E-3 -0E-3 -> 1
samq0617 samequantum -7E-3 -0 -> 0
samq0618 samequantum -7E-3 -0E+3 -> 0
samq0619 samequantum -7E-3 0E-3 -> 1
samq0620 samequantum -7E-3 0 -> 0
samq0621 samequantum -7E-3 0E+3 -> 0
samq0622 samequantum -7E-3 7E-3 -> 1
samq0623 samequantum -7E-3 7 -> 0
samq0624 samequantum -7E-3 7E+3 -> 0
samq0625 samequantum -7E-3 sNaN -> 0
samq0710 samequantum -0E-3 -Inf -> 0
samq0711 samequantum -0E-3 Inf -> 0
samq0712 samequantum -0E-3 NaN -> 0
samq0713 samequantum -0E-3 -7E+3 -> 0
samq0714 samequantum -0E-3 -7 -> 0
samq0715 samequantum -0E-3 -7E-3 -> 1
samq0716 samequantum -0E-3 -0E-3 -> 1
samq0717 samequantum -0E-3 -0 -> 0
samq0718 samequantum -0E-3 -0E+3 -> 0
samq0719 samequantum -0E-3 0E-3 -> 1
samq0720 samequantum -0E-3 0 -> 0
samq0721 samequantum -0E-3 0E+3 -> 0
samq0722 samequantum -0E-3 7E-3 -> 1
samq0723 samequantum -0E-3 7 -> 0
samq0724 samequantum -0E-3 7E+3 -> 0
samq0725 samequantum -0E-3 sNaN -> 0
samq0810 samequantum -0 -Inf -> 0
samq0811 samequantum -0 Inf -> 0
samq0812 samequantum -0 NaN -> 0
samq0813 samequantum -0 -7E+3 -> 0
samq0814 samequantum -0 -7 -> 1
samq0815 samequantum -0 -7E-3 -> 0
samq0816 samequantum -0 -0E-3 -> 0
samq0817 samequantum -0 -0 -> 1
samq0818 samequantum -0 -0E+3 -> 0
samq0819 samequantum -0 0E-3 -> 0
samq0820 samequantum -0 0 -> 1
samq0821 samequantum -0 0E+3 -> 0
samq0822 samequantum -0 7E-3 -> 0
samq0823 samequantum -0 7 -> 1
samq0824 samequantum -0 7E+3 -> 0
samq0825 samequantum -0 sNaN -> 0
samq0910 samequantum -0E+3 -Inf -> 0
samq0911 samequantum -0E+3 Inf -> 0
samq0912 samequantum -0E+3 NaN -> 0
samq0913 samequantum -0E+3 -7E+3 -> 1
samq0914 samequantum -0E+3 -7 -> 0
samq0915 samequantum -0E+3 -7E-3 -> 0
samq0916 samequantum -0E+3 -0E-3 -> 0
samq0917 samequantum -0E+3 -0 -> 0
samq0918 samequantum -0E+3 -0E+3 -> 1
samq0919 samequantum -0E+3 0E-3 -> 0
samq0920 samequantum -0E+3 0 -> 0
samq0921 samequantum -0E+3 0E+3 -> 1
samq0922 samequantum -0E+3 7E-3 -> 0
samq0923 samequantum -0E+3 7 -> 0
samq0924 samequantum -0E+3 7E+3 -> 1
samq0925 samequantum -0E+3 sNaN -> 0
samq1110 samequantum 0E-3 -Inf -> 0
samq1111 samequantum 0E-3 Inf -> 0
samq1112 samequantum 0E-3 NaN -> 0
samq1113 samequantum 0E-3 -7E+3 -> 0
samq1114 samequantum 0E-3 -7 -> 0
samq1115 samequantum 0E-3 -7E-3 -> 1
samq1116 samequantum 0E-3 -0E-3 -> 1
samq1117 samequantum 0E-3 -0 -> 0
samq1118 samequantum 0E-3 -0E+3 -> 0
samq1119 samequantum 0E-3 0E-3 -> 1
samq1120 samequantum 0E-3 0 -> 0
samq1121 samequantum 0E-3 0E+3 -> 0
samq1122 samequantum 0E-3 7E-3 -> 1
samq1123 samequantum 0E-3 7 -> 0
samq1124 samequantum 0E-3 7E+3 -> 0
samq1125 samequantum 0E-3 sNaN -> 0
samq1210 samequantum 0 -Inf -> 0
samq1211 samequantum 0 Inf -> 0
samq1212 samequantum 0 NaN -> 0
samq1213 samequantum 0 -7E+3 -> 0
samq1214 samequantum 0 -7 -> 1
samq1215 samequantum 0 -7E-3 -> 0
samq1216 samequantum 0 -0E-3 -> 0
samq1217 samequantum 0 -0 -> 1
samq1218 samequantum 0 -0E+3 -> 0
samq1219 samequantum 0 0E-3 -> 0
samq1220 samequantum 0 0 -> 1
samq1221 samequantum 0 0E+3 -> 0
samq1222 samequantum 0 7E-3 -> 0
samq1223 samequantum 0 7 -> 1
samq1224 samequantum 0 7E+3 -> 0
samq1225 samequantum 0 sNaN -> 0
samq1310 samequantum 0E+3 -Inf -> 0
samq1311 samequantum 0E+3 Inf -> 0
samq1312 samequantum 0E+3 NaN -> 0
samq1313 samequantum 0E+3 -7E+3 -> 1
samq1314 samequantum 0E+3 -7 -> 0
samq1315 samequantum 0E+3 -7E-3 -> 0
samq1316 samequantum 0E+3 -0E-3 -> 0
samq1317 samequantum 0E+3 -0 -> 0
samq1318 samequantum 0E+3 -0E+3 -> 1
samq1319 samequantum 0E+3 0E-3 -> 0
samq1320 samequantum 0E+3 0 -> 0
samq1321 samequantum 0E+3 0E+3 -> 1
samq1322 samequantum 0E+3 7E-3 -> 0
samq1323 samequantum 0E+3 7 -> 0
samq1324 samequantum 0E+3 7E+3 -> 1
samq1325 samequantum 0E+3 sNaN -> 0
samq1410 samequantum 7E-3 -Inf -> 0
samq1411 samequantum 7E-3 Inf -> 0
samq1412 samequantum 7E-3 NaN -> 0
samq1413 samequantum 7E-3 -7E+3 -> 0
samq1414 samequantum 7E-3 -7 -> 0
samq1415 samequantum 7E-3 -7E-3 -> 1
samq1416 samequantum 7E-3 -0E-3 -> 1
samq1417 samequantum 7E-3 -0 -> 0
samq1418 samequantum 7E-3 -0E+3 -> 0
samq1419 samequantum 7E-3 0E-3 -> 1
samq1420 samequantum 7E-3 0 -> 0
samq1421 samequantum 7E-3 0E+3 -> 0
samq1422 samequantum 7E-3 7E-3 -> 1
samq1423 samequantum 7E-3 7 -> 0
samq1424 samequantum 7E-3 7E+3 -> 0
samq1425 samequantum 7E-3 sNaN -> 0
samq1510 samequantum 7 -Inf -> 0
samq1511 samequantum 7 Inf -> 0
samq1512 samequantum 7 NaN -> 0
samq1513 samequantum 7 -7E+3 -> 0
samq1514 samequantum 7 -7 -> 1
samq1515 samequantum 7 -7E-3 -> 0
samq1516 samequantum 7 -0E-3 -> 0
samq1517 samequantum 7 -0 -> 1
samq1518 samequantum 7 -0E+3 -> 0
samq1519 samequantum 7 0E-3 -> 0
samq1520 samequantum 7 0 -> 1
samq1521 samequantum 7 0E+3 -> 0
samq1522 samequantum 7 7E-3 -> 0
samq1523 samequantum 7 7 -> 1
samq1524 samequantum 7 7E+3 -> 0
samq1525 samequantum 7 sNaN -> 0
samq1610 samequantum 7E+3 -Inf -> 0
samq1611 samequantum 7E+3 Inf -> 0
samq1612 samequantum 7E+3 NaN -> 0
samq1613 samequantum 7E+3 -7E+3 -> 1
samq1614 samequantum 7E+3 -7 -> 0
samq1615 samequantum 7E+3 -7E-3 -> 0
samq1616 samequantum 7E+3 -0E-3 -> 0
samq1617 samequantum 7E+3 -0 -> 0
samq1618 samequantum 7E+3 -0E+3 -> 1
samq1619 samequantum 7E+3 0E-3 -> 0
samq1620 samequantum 7E+3 0 -> 0
samq1621 samequantum 7E+3 0E+3 -> 1
samq1622 samequantum 7E+3 7E-3 -> 0
samq1623 samequantum 7E+3 7 -> 0
samq1624 samequantum 7E+3 7E+3 -> 1
samq1625 samequantum 7E+3 sNaN -> 0
samq1710 samequantum sNaN -Inf -> 0
samq1711 samequantum sNaN Inf -> 0
samq1712 samequantum sNaN NaN -> 1
samq1713 samequantum sNaN -7E+3 -> 0
samq1714 samequantum sNaN -7 -> 0
samq1715 samequantum sNaN -7E-3 -> 0
samq1716 samequantum sNaN -0E-3 -> 0
samq1717 samequantum sNaN -0 -> 0
samq1718 samequantum sNaN -0E+3 -> 0
samq1719 samequantum sNaN 0E-3 -> 0
samq1720 samequantum sNaN 0 -> 0
samq1721 samequantum sNaN 0E+3 -> 0
samq1722 samequantum sNaN 7E-3 -> 0
samq1723 samequantum sNaN 7 -> 0
samq1724 samequantum sNaN 7E+3 -> 0
samq1725 samequantum sNaN sNaN -> 1
-- noisy NaNs
samq1730 samequantum sNaN3 sNaN3 -> 1
samq1731 samequantum sNaN3 sNaN4 -> 1
samq1732 samequantum NaN3 NaN3 -> 1
samq1733 samequantum NaN3 NaN4 -> 1
samq1734 samequantum sNaN3 3 -> 0
samq1735 samequantum NaN3 3 -> 0
samq1736 samequantum 4 sNaN4 -> 0
samq1737 samequantum 3 NaN3 -> 0
samq1738 samequantum Inf sNaN4 -> 0
samq1739 samequantum -Inf NaN3 -> 0

File diff suppressed because it is too large Load diff

View file

@ -1,863 +0,0 @@
------------------------------------------------------------------------
-- subtract.decTest -- decimal subtraction --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
extended: 1
precision: 9
rounding: half_up
maxExponent: 384
minexponent: -383
-- [first group are 'quick confidence check']
subx001 subtract 0 0 -> '0'
subx002 subtract 1 1 -> '0'
subx003 subtract 1 2 -> '-1'
subx004 subtract 2 1 -> '1'
subx005 subtract 2 2 -> '0'
subx006 subtract 3 2 -> '1'
subx007 subtract 2 3 -> '-1'
subx011 subtract -0 0 -> '-0'
subx012 subtract -1 1 -> '-2'
subx013 subtract -1 2 -> '-3'
subx014 subtract -2 1 -> '-3'
subx015 subtract -2 2 -> '-4'
subx016 subtract -3 2 -> '-5'
subx017 subtract -2 3 -> '-5'
subx021 subtract 0 -0 -> '0'
subx022 subtract 1 -1 -> '2'
subx023 subtract 1 -2 -> '3'
subx024 subtract 2 -1 -> '3'
subx025 subtract 2 -2 -> '4'
subx026 subtract 3 -2 -> '5'
subx027 subtract 2 -3 -> '5'
subx030 subtract 11 1 -> 10
subx031 subtract 10 1 -> 9
subx032 subtract 9 1 -> 8
subx033 subtract 1 1 -> 0
subx034 subtract 0 1 -> -1
subx035 subtract -1 1 -> -2
subx036 subtract -9 1 -> -10
subx037 subtract -10 1 -> -11
subx038 subtract -11 1 -> -12
subx040 subtract '5.75' '3.3' -> '2.45'
subx041 subtract '5' '-3' -> '8'
subx042 subtract '-5' '-3' -> '-2'
subx043 subtract '-7' '2.5' -> '-9.5'
subx044 subtract '0.7' '0.3' -> '0.4'
subx045 subtract '1.3' '0.3' -> '1.0'
subx046 subtract '1.25' '1.25' -> '0.00'
subx050 subtract '1.23456789' '1.00000000' -> '0.23456789'
subx051 subtract '1.23456789' '1.00000089' -> '0.23456700'
subx052 subtract '0.5555555559' '0.0000000001' -> '0.555555556' Inexact Rounded
subx053 subtract '0.5555555559' '0.0000000005' -> '0.555555555' Inexact Rounded
subx054 subtract '0.4444444444' '0.1111111111' -> '0.333333333' Inexact Rounded
subx055 subtract '1.0000000000' '0.00000001' -> '0.999999990' Rounded
subx056 subtract '0.4444444444999' '0' -> '0.444444444' Inexact Rounded
subx057 subtract '0.4444444445000' '0' -> '0.444444445' Inexact Rounded
subx060 subtract '70' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx061 subtract '700' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx062 subtract '7000' '10000e+9' -> '-9.99999999E+12' Inexact Rounded
subx063 subtract '70000' '10000e+9' -> '-9.99999993E+12' Rounded
subx064 subtract '700000' '10000e+9' -> '-9.99999930E+12' Rounded
-- symmetry:
subx065 subtract '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded
subx066 subtract '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded
subx067 subtract '10000e+9' '7000' -> '9.99999999E+12' Inexact Rounded
subx068 subtract '10000e+9' '70000' -> '9.99999993E+12' Rounded
subx069 subtract '10000e+9' '700000' -> '9.99999930E+12' Rounded
-- change precision
subx080 subtract '10000e+9' '70000' -> '9.99999993E+12' Rounded
precision: 6
subx081 subtract '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded
precision: 9
-- some of the next group are really constructor tests
subx090 subtract '00.0' '0.0' -> '0.0'
subx091 subtract '00.0' '0.00' -> '0.00'
subx092 subtract '0.00' '00.0' -> '0.00'
subx093 subtract '00.0' '0.00' -> '0.00'
subx094 subtract '0.00' '00.0' -> '0.00'
subx095 subtract '3' '.3' -> '2.7'
subx096 subtract '3.' '.3' -> '2.7'
subx097 subtract '3.0' '.3' -> '2.7'
subx098 subtract '3.00' '.3' -> '2.70'
subx099 subtract '3' '3' -> '0'
subx100 subtract '3' '+3' -> '0'
subx101 subtract '3' '-3' -> '6'
subx102 subtract '3' '0.3' -> '2.7'
subx103 subtract '3.' '0.3' -> '2.7'
subx104 subtract '3.0' '0.3' -> '2.7'
subx105 subtract '3.00' '0.3' -> '2.70'
subx106 subtract '3' '3.0' -> '0.0'
subx107 subtract '3' '+3.0' -> '0.0'
subx108 subtract '3' '-3.0' -> '6.0'
-- the above all from add; massaged and extended. Now some new ones...
-- [particularly important for comparisons]
-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
-- with input rounding.
subx120 subtract '10.23456784' '10.23456789' -> '-5E-8'
subx121 subtract '10.23456785' '10.23456789' -> '-4E-8'
subx122 subtract '10.23456786' '10.23456789' -> '-3E-8'
subx123 subtract '10.23456787' '10.23456789' -> '-2E-8'
subx124 subtract '10.23456788' '10.23456789' -> '-1E-8'
subx125 subtract '10.23456789' '10.23456789' -> '0E-8'
subx126 subtract '10.23456790' '10.23456789' -> '1E-8'
subx127 subtract '10.23456791' '10.23456789' -> '2E-8'
subx128 subtract '10.23456792' '10.23456789' -> '3E-8'
subx129 subtract '10.23456793' '10.23456789' -> '4E-8'
subx130 subtract '10.23456794' '10.23456789' -> '5E-8'
subx131 subtract '10.23456781' '10.23456786' -> '-5E-8'
subx132 subtract '10.23456782' '10.23456786' -> '-4E-8'
subx133 subtract '10.23456783' '10.23456786' -> '-3E-8'
subx134 subtract '10.23456784' '10.23456786' -> '-2E-8'
subx135 subtract '10.23456785' '10.23456786' -> '-1E-8'
subx136 subtract '10.23456786' '10.23456786' -> '0E-8'
subx137 subtract '10.23456787' '10.23456786' -> '1E-8'
subx138 subtract '10.23456788' '10.23456786' -> '2E-8'
subx139 subtract '10.23456789' '10.23456786' -> '3E-8'
subx140 subtract '10.23456790' '10.23456786' -> '4E-8'
subx141 subtract '10.23456791' '10.23456786' -> '5E-8'
subx142 subtract '1' '0.999999999' -> '1E-9'
subx143 subtract '0.999999999' '1' -> '-1E-9'
subx144 subtract '-10.23456780' '-10.23456786' -> '6E-8'
subx145 subtract '-10.23456790' '-10.23456786' -> '-4E-8'
subx146 subtract '-10.23456791' '-10.23456786' -> '-5E-8'
precision: 3
subx150 subtract '12345678900000' '9999999999999' -> 2.35E+12 Inexact Rounded
subx151 subtract '9999999999999' '12345678900000' -> -2.35E+12 Inexact Rounded
precision: 6
subx152 subtract '12345678900000' '9999999999999' -> 2.34568E+12 Inexact Rounded
subx153 subtract '9999999999999' '12345678900000' -> -2.34568E+12 Inexact Rounded
precision: 9
subx154 subtract '12345678900000' '9999999999999' -> 2.34567890E+12 Inexact Rounded
subx155 subtract '9999999999999' '12345678900000' -> -2.34567890E+12 Inexact Rounded
precision: 12
subx156 subtract '12345678900000' '9999999999999' -> 2.34567890000E+12 Inexact Rounded
subx157 subtract '9999999999999' '12345678900000' -> -2.34567890000E+12 Inexact Rounded
precision: 15
subx158 subtract '12345678900000' '9999999999999' -> 2345678900001
subx159 subtract '9999999999999' '12345678900000' -> -2345678900001
precision: 9
-- additional scaled arithmetic tests [0.97 problem]
subx160 subtract '0' '.1' -> '-0.1'
subx161 subtract '00' '.97983' -> '-0.97983'
subx162 subtract '0' '.9' -> '-0.9'
subx163 subtract '0' '0.102' -> '-0.102'
subx164 subtract '0' '.4' -> '-0.4'
subx165 subtract '0' '.307' -> '-0.307'
subx166 subtract '0' '.43822' -> '-0.43822'
subx167 subtract '0' '.911' -> '-0.911'
subx168 subtract '.0' '.02' -> '-0.02'
subx169 subtract '00' '.392' -> '-0.392'
subx170 subtract '0' '.26' -> '-0.26'
subx171 subtract '0' '0.51' -> '-0.51'
subx172 subtract '0' '.2234' -> '-0.2234'
subx173 subtract '0' '.2' -> '-0.2'
subx174 subtract '.0' '.0008' -> '-0.0008'
-- 0. on left
subx180 subtract '0.0' '-.1' -> '0.1'
subx181 subtract '0.00' '-.97983' -> '0.97983'
subx182 subtract '0.0' '-.9' -> '0.9'
subx183 subtract '0.0' '-0.102' -> '0.102'
subx184 subtract '0.0' '-.4' -> '0.4'
subx185 subtract '0.0' '-.307' -> '0.307'
subx186 subtract '0.0' '-.43822' -> '0.43822'
subx187 subtract '0.0' '-.911' -> '0.911'
subx188 subtract '0.0' '-.02' -> '0.02'
subx189 subtract '0.00' '-.392' -> '0.392'
subx190 subtract '0.0' '-.26' -> '0.26'
subx191 subtract '0.0' '-0.51' -> '0.51'
subx192 subtract '0.0' '-.2234' -> '0.2234'
subx193 subtract '0.0' '-.2' -> '0.2'
subx194 subtract '0.0' '-.0008' -> '0.0008'
-- negatives of same
subx200 subtract '0' '-.1' -> '0.1'
subx201 subtract '00' '-.97983' -> '0.97983'
subx202 subtract '0' '-.9' -> '0.9'
subx203 subtract '0' '-0.102' -> '0.102'
subx204 subtract '0' '-.4' -> '0.4'
subx205 subtract '0' '-.307' -> '0.307'
subx206 subtract '0' '-.43822' -> '0.43822'
subx207 subtract '0' '-.911' -> '0.911'
subx208 subtract '.0' '-.02' -> '0.02'
subx209 subtract '00' '-.392' -> '0.392'
subx210 subtract '0' '-.26' -> '0.26'
subx211 subtract '0' '-0.51' -> '0.51'
subx212 subtract '0' '-.2234' -> '0.2234'
subx213 subtract '0' '-.2' -> '0.2'
subx214 subtract '.0' '-.0008' -> '0.0008'
-- more fixed, LHS swaps [really the same as testcases under add]
subx220 subtract '-56267E-12' 0 -> '-5.6267E-8'
subx221 subtract '-56267E-11' 0 -> '-5.6267E-7'
subx222 subtract '-56267E-10' 0 -> '-0.0000056267'
subx223 subtract '-56267E-9' 0 -> '-0.000056267'
subx224 subtract '-56267E-8' 0 -> '-0.00056267'
subx225 subtract '-56267E-7' 0 -> '-0.0056267'
subx226 subtract '-56267E-6' 0 -> '-0.056267'
subx227 subtract '-56267E-5' 0 -> '-0.56267'
subx228 subtract '-56267E-2' 0 -> '-562.67'
subx229 subtract '-56267E-1' 0 -> '-5626.7'
subx230 subtract '-56267E-0' 0 -> '-56267'
-- symmetry ...
subx240 subtract 0 '-56267E-12' -> '5.6267E-8'
subx241 subtract 0 '-56267E-11' -> '5.6267E-7'
subx242 subtract 0 '-56267E-10' -> '0.0000056267'
subx243 subtract 0 '-56267E-9' -> '0.000056267'
subx244 subtract 0 '-56267E-8' -> '0.00056267'
subx245 subtract 0 '-56267E-7' -> '0.0056267'
subx246 subtract 0 '-56267E-6' -> '0.056267'
subx247 subtract 0 '-56267E-5' -> '0.56267'
subx248 subtract 0 '-56267E-2' -> '562.67'
subx249 subtract 0 '-56267E-1' -> '5626.7'
subx250 subtract 0 '-56267E-0' -> '56267'
-- now some more from the 'new' add
precision: 9
subx301 subtract '1.23456789' '1.00000000' -> '0.23456789'
subx302 subtract '1.23456789' '1.00000011' -> '0.23456778'
subx311 subtract '0.4444444444' '0.5555555555' -> '-0.111111111' Inexact Rounded
subx312 subtract '0.4444444440' '0.5555555555' -> '-0.111111112' Inexact Rounded
subx313 subtract '0.4444444444' '0.5555555550' -> '-0.111111111' Inexact Rounded
subx314 subtract '0.44444444449' '0' -> '0.444444444' Inexact Rounded
subx315 subtract '0.444444444499' '0' -> '0.444444444' Inexact Rounded
subx316 subtract '0.4444444444999' '0' -> '0.444444444' Inexact Rounded
subx317 subtract '0.4444444445000' '0' -> '0.444444445' Inexact Rounded
subx318 subtract '0.4444444445001' '0' -> '0.444444445' Inexact Rounded
subx319 subtract '0.444444444501' '0' -> '0.444444445' Inexact Rounded
subx320 subtract '0.44444444451' '0' -> '0.444444445' Inexact Rounded
-- some carrying effects
subx321 subtract '0.9998' '0.0000' -> '0.9998'
subx322 subtract '0.9998' '0.0001' -> '0.9997'
subx323 subtract '0.9998' '0.0002' -> '0.9996'
subx324 subtract '0.9998' '0.0003' -> '0.9995'
subx325 subtract '0.9998' '-0.0000' -> '0.9998'
subx326 subtract '0.9998' '-0.0001' -> '0.9999'
subx327 subtract '0.9998' '-0.0002' -> '1.0000'
subx328 subtract '0.9998' '-0.0003' -> '1.0001'
subx330 subtract '70' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx331 subtract '700' '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx332 subtract '7000' '10000e+9' -> '-9.99999999E+12' Inexact Rounded
subx333 subtract '70000' '10000e+9' -> '-9.99999993E+12' Rounded
subx334 subtract '700000' '10000e+9' -> '-9.99999930E+12' Rounded
subx335 subtract '7000000' '10000e+9' -> '-9.99999300E+12' Rounded
-- symmetry:
subx340 subtract '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded
subx341 subtract '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded
subx342 subtract '10000e+9' '7000' -> '9.99999999E+12' Inexact Rounded
subx343 subtract '10000e+9' '70000' -> '9.99999993E+12' Rounded
subx344 subtract '10000e+9' '700000' -> '9.99999930E+12' Rounded
subx345 subtract '10000e+9' '7000000' -> '9.99999300E+12' Rounded
-- same, higher precision
precision: 15
subx346 subtract '10000e+9' '7' -> '9999999999993'
subx347 subtract '10000e+9' '70' -> '9999999999930'
subx348 subtract '10000e+9' '700' -> '9999999999300'
subx349 subtract '10000e+9' '7000' -> '9999999993000'
subx350 subtract '10000e+9' '70000' -> '9999999930000'
subx351 subtract '10000e+9' '700000' -> '9999999300000'
subx352 subtract '7' '10000e+9' -> '-9999999999993'
subx353 subtract '70' '10000e+9' -> '-9999999999930'
subx354 subtract '700' '10000e+9' -> '-9999999999300'
subx355 subtract '7000' '10000e+9' -> '-9999999993000'
subx356 subtract '70000' '10000e+9' -> '-9999999930000'
subx357 subtract '700000' '10000e+9' -> '-9999999300000'
-- zero preservation
precision: 6
subx360 subtract '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded
subx361 subtract 1 '0.0001' -> '0.9999'
subx362 subtract 1 '0.00001' -> '0.99999'
subx363 subtract 1 '0.000001' -> '0.999999'
subx364 subtract 1 '0.0000001' -> '1.00000' Inexact Rounded
subx365 subtract 1 '0.00000001' -> '1.00000' Inexact Rounded
-- some funny zeros [in case of bad signum]
subx370 subtract 1 0 -> 1
subx371 subtract 1 0. -> 1
subx372 subtract 1 .0 -> 1.0
subx373 subtract 1 0.0 -> 1.0
subx374 subtract 0 1 -> -1
subx375 subtract 0. 1 -> -1
subx376 subtract .0 1 -> -1.0
subx377 subtract 0.0 1 -> -1.0
precision: 9
-- leading 0 digit before round
subx910 subtract -103519362 -51897955.3 -> -51621406.7
subx911 subtract 159579.444 89827.5229 -> 69751.9211
subx920 subtract 333.123456 33.1234566 -> 299.999999 Inexact Rounded
subx921 subtract 333.123456 33.1234565 -> 300.000000 Inexact Rounded
subx922 subtract 133.123456 33.1234565 -> 99.9999995
subx923 subtract 133.123456 33.1234564 -> 99.9999996
subx924 subtract 133.123456 33.1234540 -> 100.000002 Rounded
subx925 subtract 133.123456 43.1234560 -> 90.0000000
subx926 subtract 133.123456 43.1234561 -> 89.9999999
subx927 subtract 133.123456 43.1234566 -> 89.9999994
subx928 subtract 101.123456 91.1234566 -> 9.9999994
subx929 subtract 101.123456 99.1234566 -> 1.9999994
-- more of the same; probe for cluster boundary problems
precision: 1
subx930 subtract 11 2 -> 9
precision: 2
subx932 subtract 101 2 -> 99
precision: 3
subx934 subtract 101 2.1 -> 98.9
subx935 subtract 101 92.01 -> 8.99
precision: 4
subx936 subtract 101 2.01 -> 98.99
subx937 subtract 101 92.01 -> 8.99
subx938 subtract 101 92.006 -> 8.994
precision: 5
subx939 subtract 101 2.001 -> 98.999
subx940 subtract 101 92.001 -> 8.999
subx941 subtract 101 92.0006 -> 8.9994
precision: 6
subx942 subtract 101 2.0001 -> 98.9999
subx943 subtract 101 92.0001 -> 8.9999
subx944 subtract 101 92.00006 -> 8.99994
precision: 7
subx945 subtract 101 2.00001 -> 98.99999
subx946 subtract 101 92.00001 -> 8.99999
subx947 subtract 101 92.000006 -> 8.999994
precision: 8
subx948 subtract 101 2.000001 -> 98.999999
subx949 subtract 101 92.000001 -> 8.999999
subx950 subtract 101 92.0000006 -> 8.9999994
precision: 9
subx951 subtract 101 2.0000001 -> 98.9999999
subx952 subtract 101 92.0000001 -> 8.9999999
subx953 subtract 101 92.00000006 -> 8.99999994
precision: 9
-- more LHS swaps [were fixed]
subx390 subtract '-56267E-10' 0 -> '-0.0000056267'
subx391 subtract '-56267E-6' 0 -> '-0.056267'
subx392 subtract '-56267E-5' 0 -> '-0.56267'
subx393 subtract '-56267E-4' 0 -> '-5.6267'
subx394 subtract '-56267E-3' 0 -> '-56.267'
subx395 subtract '-56267E-2' 0 -> '-562.67'
subx396 subtract '-56267E-1' 0 -> '-5626.7'
subx397 subtract '-56267E-0' 0 -> '-56267'
subx398 subtract '-5E-10' 0 -> '-5E-10'
subx399 subtract '-5E-7' 0 -> '-5E-7'
subx400 subtract '-5E-6' 0 -> '-0.000005'
subx401 subtract '-5E-5' 0 -> '-0.00005'
subx402 subtract '-5E-4' 0 -> '-0.0005'
subx403 subtract '-5E-1' 0 -> '-0.5'
subx404 subtract '-5E0' 0 -> '-5'
subx405 subtract '-5E1' 0 -> '-50'
subx406 subtract '-5E5' 0 -> '-500000'
subx407 subtract '-5E8' 0 -> '-500000000'
subx408 subtract '-5E9' 0 -> '-5.00000000E+9' Rounded
subx409 subtract '-5E10' 0 -> '-5.00000000E+10' Rounded
subx410 subtract '-5E11' 0 -> '-5.00000000E+11' Rounded
subx411 subtract '-5E100' 0 -> '-5.00000000E+100' Rounded
-- more RHS swaps [were fixed]
subx420 subtract 0 '-56267E-10' -> '0.0000056267'
subx421 subtract 0 '-56267E-6' -> '0.056267'
subx422 subtract 0 '-56267E-5' -> '0.56267'
subx423 subtract 0 '-56267E-4' -> '5.6267'
subx424 subtract 0 '-56267E-3' -> '56.267'
subx425 subtract 0 '-56267E-2' -> '562.67'
subx426 subtract 0 '-56267E-1' -> '5626.7'
subx427 subtract 0 '-56267E-0' -> '56267'
subx428 subtract 0 '-5E-10' -> '5E-10'
subx429 subtract 0 '-5E-7' -> '5E-7'
subx430 subtract 0 '-5E-6' -> '0.000005'
subx431 subtract 0 '-5E-5' -> '0.00005'
subx432 subtract 0 '-5E-4' -> '0.0005'
subx433 subtract 0 '-5E-1' -> '0.5'
subx434 subtract 0 '-5E0' -> '5'
subx435 subtract 0 '-5E1' -> '50'
subx436 subtract 0 '-5E5' -> '500000'
subx437 subtract 0 '-5E8' -> '500000000'
subx438 subtract 0 '-5E9' -> '5.00000000E+9' Rounded
subx439 subtract 0 '-5E10' -> '5.00000000E+10' Rounded
subx440 subtract 0 '-5E11' -> '5.00000000E+11' Rounded
subx441 subtract 0 '-5E100' -> '5.00000000E+100' Rounded
-- try borderline precision, with carries, etc.
precision: 15
subx461 subtract '1E+12' '1' -> '999999999999'
subx462 subtract '1E+12' '-1.11' -> '1000000000001.11'
subx463 subtract '1.11' '-1E+12' -> '1000000000001.11'
subx464 subtract '-1' '-1E+12' -> '999999999999'
subx465 subtract '7E+12' '1' -> '6999999999999'
subx466 subtract '7E+12' '-1.11' -> '7000000000001.11'
subx467 subtract '1.11' '-7E+12' -> '7000000000001.11'
subx468 subtract '-1' '-7E+12' -> '6999999999999'
-- 123456789012345 123456789012345 1 23456789012345
subx470 subtract '0.444444444444444' '-0.555555555555563' -> '1.00000000000001' Inexact Rounded
subx471 subtract '0.444444444444444' '-0.555555555555562' -> '1.00000000000001' Inexact Rounded
subx472 subtract '0.444444444444444' '-0.555555555555561' -> '1.00000000000001' Inexact Rounded
subx473 subtract '0.444444444444444' '-0.555555555555560' -> '1.00000000000000' Inexact Rounded
subx474 subtract '0.444444444444444' '-0.555555555555559' -> '1.00000000000000' Inexact Rounded
subx475 subtract '0.444444444444444' '-0.555555555555558' -> '1.00000000000000' Inexact Rounded
subx476 subtract '0.444444444444444' '-0.555555555555557' -> '1.00000000000000' Inexact Rounded
subx477 subtract '0.444444444444444' '-0.555555555555556' -> '1.00000000000000' Rounded
subx478 subtract '0.444444444444444' '-0.555555555555555' -> '0.999999999999999'
subx479 subtract '0.444444444444444' '-0.555555555555554' -> '0.999999999999998'
subx480 subtract '0.444444444444444' '-0.555555555555553' -> '0.999999999999997'
subx481 subtract '0.444444444444444' '-0.555555555555552' -> '0.999999999999996'
subx482 subtract '0.444444444444444' '-0.555555555555551' -> '0.999999999999995'
subx483 subtract '0.444444444444444' '-0.555555555555550' -> '0.999999999999994'
-- and some more, including residue effects and different roundings
precision: 9
rounding: half_up
subx500 subtract '123456789' 0 -> '123456789'
subx501 subtract '123456789' 0.000000001 -> '123456789' Inexact Rounded
subx502 subtract '123456789' 0.000001 -> '123456789' Inexact Rounded
subx503 subtract '123456789' 0.1 -> '123456789' Inexact Rounded
subx504 subtract '123456789' 0.4 -> '123456789' Inexact Rounded
subx505 subtract '123456789' 0.49 -> '123456789' Inexact Rounded
subx506 subtract '123456789' 0.499999 -> '123456789' Inexact Rounded
subx507 subtract '123456789' 0.499999999 -> '123456789' Inexact Rounded
subx508 subtract '123456789' 0.5 -> '123456789' Inexact Rounded
subx509 subtract '123456789' 0.500000001 -> '123456788' Inexact Rounded
subx510 subtract '123456789' 0.500001 -> '123456788' Inexact Rounded
subx511 subtract '123456789' 0.51 -> '123456788' Inexact Rounded
subx512 subtract '123456789' 0.6 -> '123456788' Inexact Rounded
subx513 subtract '123456789' 0.9 -> '123456788' Inexact Rounded
subx514 subtract '123456789' 0.99999 -> '123456788' Inexact Rounded
subx515 subtract '123456789' 0.999999999 -> '123456788' Inexact Rounded
subx516 subtract '123456789' 1 -> '123456788'
subx517 subtract '123456789' 1.000000001 -> '123456788' Inexact Rounded
subx518 subtract '123456789' 1.00001 -> '123456788' Inexact Rounded
subx519 subtract '123456789' 1.1 -> '123456788' Inexact Rounded
rounding: half_even
subx520 subtract '123456789' 0 -> '123456789'
subx521 subtract '123456789' 0.000000001 -> '123456789' Inexact Rounded
subx522 subtract '123456789' 0.000001 -> '123456789' Inexact Rounded
subx523 subtract '123456789' 0.1 -> '123456789' Inexact Rounded
subx524 subtract '123456789' 0.4 -> '123456789' Inexact Rounded
subx525 subtract '123456789' 0.49 -> '123456789' Inexact Rounded
subx526 subtract '123456789' 0.499999 -> '123456789' Inexact Rounded
subx527 subtract '123456789' 0.499999999 -> '123456789' Inexact Rounded
subx528 subtract '123456789' 0.5 -> '123456788' Inexact Rounded
subx529 subtract '123456789' 0.500000001 -> '123456788' Inexact Rounded
subx530 subtract '123456789' 0.500001 -> '123456788' Inexact Rounded
subx531 subtract '123456789' 0.51 -> '123456788' Inexact Rounded
subx532 subtract '123456789' 0.6 -> '123456788' Inexact Rounded
subx533 subtract '123456789' 0.9 -> '123456788' Inexact Rounded
subx534 subtract '123456789' 0.99999 -> '123456788' Inexact Rounded
subx535 subtract '123456789' 0.999999999 -> '123456788' Inexact Rounded
subx536 subtract '123456789' 1 -> '123456788'
subx537 subtract '123456789' 1.00000001 -> '123456788' Inexact Rounded
subx538 subtract '123456789' 1.00001 -> '123456788' Inexact Rounded
subx539 subtract '123456789' 1.1 -> '123456788' Inexact Rounded
-- critical few with even bottom digit...
subx540 subtract '123456788' 0.499999999 -> '123456788' Inexact Rounded
subx541 subtract '123456788' 0.5 -> '123456788' Inexact Rounded
subx542 subtract '123456788' 0.500000001 -> '123456787' Inexact Rounded
rounding: down
subx550 subtract '123456789' 0 -> '123456789'
subx551 subtract '123456789' 0.000000001 -> '123456788' Inexact Rounded
subx552 subtract '123456789' 0.000001 -> '123456788' Inexact Rounded
subx553 subtract '123456789' 0.1 -> '123456788' Inexact Rounded
subx554 subtract '123456789' 0.4 -> '123456788' Inexact Rounded
subx555 subtract '123456789' 0.49 -> '123456788' Inexact Rounded
subx556 subtract '123456789' 0.499999 -> '123456788' Inexact Rounded
subx557 subtract '123456789' 0.499999999 -> '123456788' Inexact Rounded
subx558 subtract '123456789' 0.5 -> '123456788' Inexact Rounded
subx559 subtract '123456789' 0.500000001 -> '123456788' Inexact Rounded
subx560 subtract '123456789' 0.500001 -> '123456788' Inexact Rounded
subx561 subtract '123456789' 0.51 -> '123456788' Inexact Rounded
subx562 subtract '123456789' 0.6 -> '123456788' Inexact Rounded
subx563 subtract '123456789' 0.9 -> '123456788' Inexact Rounded
subx564 subtract '123456789' 0.99999 -> '123456788' Inexact Rounded
subx565 subtract '123456789' 0.999999999 -> '123456788' Inexact Rounded
subx566 subtract '123456789' 1 -> '123456788'
subx567 subtract '123456789' 1.00000001 -> '123456787' Inexact Rounded
subx568 subtract '123456789' 1.00001 -> '123456787' Inexact Rounded
subx569 subtract '123456789' 1.1 -> '123456787' Inexact Rounded
-- symmetry...
rounding: half_up
subx600 subtract 0 '123456789' -> '-123456789'
subx601 subtract 0.000000001 '123456789' -> '-123456789' Inexact Rounded
subx602 subtract 0.000001 '123456789' -> '-123456789' Inexact Rounded
subx603 subtract 0.1 '123456789' -> '-123456789' Inexact Rounded
subx604 subtract 0.4 '123456789' -> '-123456789' Inexact Rounded
subx605 subtract 0.49 '123456789' -> '-123456789' Inexact Rounded
subx606 subtract 0.499999 '123456789' -> '-123456789' Inexact Rounded
subx607 subtract 0.499999999 '123456789' -> '-123456789' Inexact Rounded
subx608 subtract 0.5 '123456789' -> '-123456789' Inexact Rounded
subx609 subtract 0.500000001 '123456789' -> '-123456788' Inexact Rounded
subx610 subtract 0.500001 '123456789' -> '-123456788' Inexact Rounded
subx611 subtract 0.51 '123456789' -> '-123456788' Inexact Rounded
subx612 subtract 0.6 '123456789' -> '-123456788' Inexact Rounded
subx613 subtract 0.9 '123456789' -> '-123456788' Inexact Rounded
subx614 subtract 0.99999 '123456789' -> '-123456788' Inexact Rounded
subx615 subtract 0.999999999 '123456789' -> '-123456788' Inexact Rounded
subx616 subtract 1 '123456789' -> '-123456788'
subx617 subtract 1.000000001 '123456789' -> '-123456788' Inexact Rounded
subx618 subtract 1.00001 '123456789' -> '-123456788' Inexact Rounded
subx619 subtract 1.1 '123456789' -> '-123456788' Inexact Rounded
rounding: half_even
subx620 subtract 0 '123456789' -> '-123456789'
subx621 subtract 0.000000001 '123456789' -> '-123456789' Inexact Rounded
subx622 subtract 0.000001 '123456789' -> '-123456789' Inexact Rounded
subx623 subtract 0.1 '123456789' -> '-123456789' Inexact Rounded
subx624 subtract 0.4 '123456789' -> '-123456789' Inexact Rounded
subx625 subtract 0.49 '123456789' -> '-123456789' Inexact Rounded
subx626 subtract 0.499999 '123456789' -> '-123456789' Inexact Rounded
subx627 subtract 0.499999999 '123456789' -> '-123456789' Inexact Rounded
subx628 subtract 0.5 '123456789' -> '-123456788' Inexact Rounded
subx629 subtract 0.500000001 '123456789' -> '-123456788' Inexact Rounded
subx630 subtract 0.500001 '123456789' -> '-123456788' Inexact Rounded
subx631 subtract 0.51 '123456789' -> '-123456788' Inexact Rounded
subx632 subtract 0.6 '123456789' -> '-123456788' Inexact Rounded
subx633 subtract 0.9 '123456789' -> '-123456788' Inexact Rounded
subx634 subtract 0.99999 '123456789' -> '-123456788' Inexact Rounded
subx635 subtract 0.999999999 '123456789' -> '-123456788' Inexact Rounded
subx636 subtract 1 '123456789' -> '-123456788'
subx637 subtract 1.00000001 '123456789' -> '-123456788' Inexact Rounded
subx638 subtract 1.00001 '123456789' -> '-123456788' Inexact Rounded
subx639 subtract 1.1 '123456789' -> '-123456788' Inexact Rounded
-- critical few with even bottom digit...
subx640 subtract 0.499999999 '123456788' -> '-123456788' Inexact Rounded
subx641 subtract 0.5 '123456788' -> '-123456788' Inexact Rounded
subx642 subtract 0.500000001 '123456788' -> '-123456787' Inexact Rounded
rounding: down
subx650 subtract 0 '123456789' -> '-123456789'
subx651 subtract 0.000000001 '123456789' -> '-123456788' Inexact Rounded
subx652 subtract 0.000001 '123456789' -> '-123456788' Inexact Rounded
subx653 subtract 0.1 '123456789' -> '-123456788' Inexact Rounded
subx654 subtract 0.4 '123456789' -> '-123456788' Inexact Rounded
subx655 subtract 0.49 '123456789' -> '-123456788' Inexact Rounded
subx656 subtract 0.499999 '123456789' -> '-123456788' Inexact Rounded
subx657 subtract 0.499999999 '123456789' -> '-123456788' Inexact Rounded
subx658 subtract 0.5 '123456789' -> '-123456788' Inexact Rounded
subx659 subtract 0.500000001 '123456789' -> '-123456788' Inexact Rounded
subx660 subtract 0.500001 '123456789' -> '-123456788' Inexact Rounded
subx661 subtract 0.51 '123456789' -> '-123456788' Inexact Rounded
subx662 subtract 0.6 '123456789' -> '-123456788' Inexact Rounded
subx663 subtract 0.9 '123456789' -> '-123456788' Inexact Rounded
subx664 subtract 0.99999 '123456789' -> '-123456788' Inexact Rounded
subx665 subtract 0.999999999 '123456789' -> '-123456788' Inexact Rounded
subx666 subtract 1 '123456789' -> '-123456788'
subx667 subtract 1.00000001 '123456789' -> '-123456787' Inexact Rounded
subx668 subtract 1.00001 '123456789' -> '-123456787' Inexact Rounded
subx669 subtract 1.1 '123456789' -> '-123456787' Inexact Rounded
-- lots of leading zeros in intermediate result, and showing effects of
-- input rounding would have affected the following
precision: 9
rounding: half_up
subx670 subtract '123456789' '123456788.1' -> 0.9
subx671 subtract '123456789' '123456788.9' -> 0.1
subx672 subtract '123456789' '123456789.1' -> -0.1
subx673 subtract '123456789' '123456789.5' -> -0.5
subx674 subtract '123456789' '123456789.9' -> -0.9
rounding: half_even
subx680 subtract '123456789' '123456788.1' -> 0.9
subx681 subtract '123456789' '123456788.9' -> 0.1
subx682 subtract '123456789' '123456789.1' -> -0.1
subx683 subtract '123456789' '123456789.5' -> -0.5
subx684 subtract '123456789' '123456789.9' -> -0.9
subx685 subtract '123456788' '123456787.1' -> 0.9
subx686 subtract '123456788' '123456787.9' -> 0.1
subx687 subtract '123456788' '123456788.1' -> -0.1
subx688 subtract '123456788' '123456788.5' -> -0.5
subx689 subtract '123456788' '123456788.9' -> -0.9
rounding: down
subx690 subtract '123456789' '123456788.1' -> 0.9
subx691 subtract '123456789' '123456788.9' -> 0.1
subx692 subtract '123456789' '123456789.1' -> -0.1
subx693 subtract '123456789' '123456789.5' -> -0.5
subx694 subtract '123456789' '123456789.9' -> -0.9
-- input preparation tests
rounding: half_up
precision: 3
subx700 subtract '12345678900000' -9999999999999 -> '2.23E+13' Inexact Rounded
subx701 subtract '9999999999999' -12345678900000 -> '2.23E+13' Inexact Rounded
subx702 subtract '12E+3' '-3456' -> '1.55E+4' Inexact Rounded
subx703 subtract '12E+3' '-3446' -> '1.54E+4' Inexact Rounded
subx704 subtract '12E+3' '-3454' -> '1.55E+4' Inexact Rounded
subx705 subtract '12E+3' '-3444' -> '1.54E+4' Inexact Rounded
subx706 subtract '3456' '-12E+3' -> '1.55E+4' Inexact Rounded
subx707 subtract '3446' '-12E+3' -> '1.54E+4' Inexact Rounded
subx708 subtract '3454' '-12E+3' -> '1.55E+4' Inexact Rounded
subx709 subtract '3444' '-12E+3' -> '1.54E+4' Inexact Rounded
-- overflow and underflow tests [subnormals now possible]
maxexponent: 999999999
minexponent: -999999999
precision: 9
rounding: down
subx710 subtract 1E+999999999 -9E+999999999 -> 9.99999999E+999999999 Overflow Inexact Rounded
subx711 subtract 9E+999999999 -1E+999999999 -> 9.99999999E+999999999 Overflow Inexact Rounded
rounding: half_up
subx712 subtract 1E+999999999 -9E+999999999 -> Infinity Overflow Inexact Rounded
subx713 subtract 9E+999999999 -1E+999999999 -> Infinity Overflow Inexact Rounded
subx714 subtract -1.1E-999999999 -1E-999999999 -> -1E-1000000000 Subnormal
subx715 subtract 1E-999999999 +1.1e-999999999 -> -1E-1000000000 Subnormal
subx716 subtract -1E+999999999 +9E+999999999 -> -Infinity Overflow Inexact Rounded
subx717 subtract -9E+999999999 +1E+999999999 -> -Infinity Overflow Inexact Rounded
subx718 subtract +1.1E-999999999 +1E-999999999 -> 1E-1000000000 Subnormal
subx719 subtract -1E-999999999 -1.1e-999999999 -> 1E-1000000000 Subnormal
precision: 3
subx720 subtract 1 9.999E+999999999 -> -Infinity Inexact Overflow Rounded
subx721 subtract 1 -9.999E+999999999 -> Infinity Inexact Overflow Rounded
subx722 subtract 9.999E+999999999 1 -> Infinity Inexact Overflow Rounded
subx723 subtract -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
subx724 subtract 1 9.999E+999999999 -> -Infinity Inexact Overflow Rounded
subx725 subtract 1 -9.999E+999999999 -> Infinity Inexact Overflow Rounded
subx726 subtract 9.999E+999999999 1 -> Infinity Inexact Overflow Rounded
subx727 subtract -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
-- [more below]
-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
sub731 subtract 12345678000 0 -> 1.23456780E+10 Rounded
sub732 subtract 0 12345678000 -> -1.23456780E+10 Rounded
sub733 subtract 1234567800 0 -> 1.23456780E+9 Rounded
sub734 subtract 0 1234567800 -> -1.23456780E+9 Rounded
sub735 subtract 1234567890 0 -> 1.23456789E+9 Rounded
sub736 subtract 0 1234567890 -> -1.23456789E+9 Rounded
sub737 subtract 1234567891 0 -> 1.23456789E+9 Inexact Rounded
sub738 subtract 0 1234567891 -> -1.23456789E+9 Inexact Rounded
sub739 subtract 12345678901 0 -> 1.23456789E+10 Inexact Rounded
sub740 subtract 0 12345678901 -> -1.23456789E+10 Inexact Rounded
sub741 subtract 1234567896 0 -> 1.23456790E+9 Inexact Rounded
sub742 subtract 0 1234567896 -> -1.23456790E+9 Inexact Rounded
precision: 15
sub751 subtract 12345678000 0 -> 12345678000
sub752 subtract 0 12345678000 -> -12345678000
sub753 subtract 1234567800 0 -> 1234567800
sub754 subtract 0 1234567800 -> -1234567800
sub755 subtract 1234567890 0 -> 1234567890
sub756 subtract 0 1234567890 -> -1234567890
sub757 subtract 1234567891 0 -> 1234567891
sub758 subtract 0 1234567891 -> -1234567891
sub759 subtract 12345678901 0 -> 12345678901
sub760 subtract 0 12345678901 -> -12345678901
sub761 subtract 1234567896 0 -> 1234567896
sub762 subtract 0 1234567896 -> -1234567896
-- Specials
subx780 subtract -Inf Inf -> -Infinity
subx781 subtract -Inf 1000 -> -Infinity
subx782 subtract -Inf 1 -> -Infinity
subx783 subtract -Inf -0 -> -Infinity
subx784 subtract -Inf -1 -> -Infinity
subx785 subtract -Inf -1000 -> -Infinity
subx787 subtract -1000 Inf -> -Infinity
subx788 subtract -Inf Inf -> -Infinity
subx789 subtract -1 Inf -> -Infinity
subx790 subtract 0 Inf -> -Infinity
subx791 subtract 1 Inf -> -Infinity
subx792 subtract 1000 Inf -> -Infinity
subx800 subtract Inf Inf -> NaN Invalid_operation
subx801 subtract Inf 1000 -> Infinity
subx802 subtract Inf 1 -> Infinity
subx803 subtract Inf 0 -> Infinity
subx804 subtract Inf -0 -> Infinity
subx805 subtract Inf -1 -> Infinity
subx806 subtract Inf -1000 -> Infinity
subx807 subtract Inf -Inf -> Infinity
subx808 subtract -1000 -Inf -> Infinity
subx809 subtract -Inf -Inf -> NaN Invalid_operation
subx810 subtract -1 -Inf -> Infinity
subx811 subtract -0 -Inf -> Infinity
subx812 subtract 0 -Inf -> Infinity
subx813 subtract 1 -Inf -> Infinity
subx814 subtract 1000 -Inf -> Infinity
subx815 subtract Inf -Inf -> Infinity
subx821 subtract NaN Inf -> NaN
subx822 subtract -NaN 1000 -> -NaN
subx823 subtract NaN 1 -> NaN
subx824 subtract NaN 0 -> NaN
subx825 subtract NaN -0 -> NaN
subx826 subtract NaN -1 -> NaN
subx827 subtract NaN -1000 -> NaN
subx828 subtract NaN -Inf -> NaN
subx829 subtract -NaN NaN -> -NaN
subx830 subtract -Inf NaN -> NaN
subx831 subtract -1000 NaN -> NaN
subx832 subtract -1 NaN -> NaN
subx833 subtract -0 NaN -> NaN
subx834 subtract 0 NaN -> NaN
subx835 subtract 1 NaN -> NaN
subx836 subtract 1000 -NaN -> -NaN
subx837 subtract Inf NaN -> NaN
subx841 subtract sNaN Inf -> NaN Invalid_operation
subx842 subtract -sNaN 1000 -> -NaN Invalid_operation
subx843 subtract sNaN 1 -> NaN Invalid_operation
subx844 subtract sNaN 0 -> NaN Invalid_operation
subx845 subtract sNaN -0 -> NaN Invalid_operation
subx846 subtract sNaN -1 -> NaN Invalid_operation
subx847 subtract sNaN -1000 -> NaN Invalid_operation
subx848 subtract sNaN NaN -> NaN Invalid_operation
subx849 subtract sNaN sNaN -> NaN Invalid_operation
subx850 subtract NaN sNaN -> NaN Invalid_operation
subx851 subtract -Inf -sNaN -> -NaN Invalid_operation
subx852 subtract -1000 sNaN -> NaN Invalid_operation
subx853 subtract -1 sNaN -> NaN Invalid_operation
subx854 subtract -0 sNaN -> NaN Invalid_operation
subx855 subtract 0 sNaN -> NaN Invalid_operation
subx856 subtract 1 sNaN -> NaN Invalid_operation
subx857 subtract 1000 sNaN -> NaN Invalid_operation
subx858 subtract Inf sNaN -> NaN Invalid_operation
subx859 subtract NaN sNaN -> NaN Invalid_operation
-- propagating NaNs
subx861 subtract NaN01 -Inf -> NaN1
subx862 subtract -NaN02 -1000 -> -NaN2
subx863 subtract NaN03 1000 -> NaN3
subx864 subtract NaN04 Inf -> NaN4
subx865 subtract NaN05 NaN61 -> NaN5
subx866 subtract -Inf -NaN71 -> -NaN71
subx867 subtract -1000 NaN81 -> NaN81
subx868 subtract 1000 NaN91 -> NaN91
subx869 subtract Inf NaN101 -> NaN101
subx871 subtract sNaN011 -Inf -> NaN11 Invalid_operation
subx872 subtract sNaN012 -1000 -> NaN12 Invalid_operation
subx873 subtract -sNaN013 1000 -> -NaN13 Invalid_operation
subx874 subtract sNaN014 NaN171 -> NaN14 Invalid_operation
subx875 subtract sNaN015 sNaN181 -> NaN15 Invalid_operation
subx876 subtract NaN016 sNaN191 -> NaN191 Invalid_operation
subx877 subtract -Inf sNaN201 -> NaN201 Invalid_operation
subx878 subtract -1000 sNaN211 -> NaN211 Invalid_operation
subx879 subtract 1000 -sNaN221 -> -NaN221 Invalid_operation
subx880 subtract Inf sNaN231 -> NaN231 Invalid_operation
subx881 subtract NaN025 sNaN241 -> NaN241 Invalid_operation
-- edge case spills
subx901 subtract 2.E-3 1.002 -> -1.000
subx902 subtract 2.0E-3 1.002 -> -1.0000
subx903 subtract 2.00E-3 1.0020 -> -1.00000
subx904 subtract 2.000E-3 1.00200 -> -1.000000
subx905 subtract 2.0000E-3 1.002000 -> -1.0000000
subx906 subtract 2.00000E-3 1.0020000 -> -1.00000000
subx907 subtract 2.000000E-3 1.00200000 -> -1.000000000
subx908 subtract 2.0000000E-3 1.002000000 -> -1.0000000000
-- subnormals and underflows
precision: 3
maxexponent: 999
minexponent: -999
subx1010 subtract 0 1.00E-999 -> -1.00E-999
subx1011 subtract 0 0.1E-999 -> -1E-1000 Subnormal
subx1012 subtract 0 0.10E-999 -> -1.0E-1000 Subnormal
subx1013 subtract 0 0.100E-999 -> -1.0E-1000 Subnormal Rounded
subx1014 subtract 0 0.01E-999 -> -1E-1001 Subnormal
-- next is rounded to Emin
subx1015 subtract 0 0.999E-999 -> -1.00E-999 Inexact Rounded Subnormal Underflow
subx1016 subtract 0 0.099E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
subx1017 subtract 0 0.009E-999 -> -1E-1001 Inexact Rounded Subnormal Underflow
subx1018 subtract 0 0.001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
subx1019 subtract 0 0.0009E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
subx1020 subtract 0 0.0001E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
subx1030 subtract 0 -1.00E-999 -> 1.00E-999
subx1031 subtract 0 -0.1E-999 -> 1E-1000 Subnormal
subx1032 subtract 0 -0.10E-999 -> 1.0E-1000 Subnormal
subx1033 subtract 0 -0.100E-999 -> 1.0E-1000 Subnormal Rounded
subx1034 subtract 0 -0.01E-999 -> 1E-1001 Subnormal
-- next is rounded to Emin
subx1035 subtract 0 -0.999E-999 -> 1.00E-999 Inexact Rounded Subnormal Underflow
subx1036 subtract 0 -0.099E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow
subx1037 subtract 0 -0.009E-999 -> 1E-1001 Inexact Rounded Subnormal Underflow
subx1038 subtract 0 -0.001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
subx1039 subtract 0 -0.0009E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
subx1040 subtract 0 -0.0001E-999 -> 0E-1001 Inexact Rounded Subnormal Underflow
-- some non-zero subnormal subtracts
-- subx1056 is a tricky case
rounding: half_up
subx1050 subtract 1.00E-999 0.1E-999 -> 9.0E-1000 Subnormal
subx1051 subtract 0.1E-999 0.1E-999 -> 0E-1000
subx1052 subtract 0.10E-999 0.1E-999 -> 0E-1001
subx1053 subtract 0.100E-999 0.1E-999 -> 0E-1001 Clamped
subx1054 subtract 0.01E-999 0.1E-999 -> -9E-1001 Subnormal
subx1055 subtract 0.999E-999 0.1E-999 -> 9.0E-1000 Inexact Rounded Subnormal Underflow
subx1056 subtract 0.099E-999 0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow
subx1057 subtract 0.009E-999 0.1E-999 -> -9E-1001 Inexact Rounded Subnormal Underflow
subx1058 subtract 0.001E-999 0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
subx1059 subtract 0.0009E-999 0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
subx1060 subtract 0.0001E-999 0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow
-- check for double-rounded subnormals
precision: 5
maxexponent: 79
minexponent: -79
subx1101 subtract 0 1.52444E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
subx1102 subtract 0 1.52445E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
subx1103 subtract 0 1.52446E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
subx1104 subtract 1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
subx1105 subtract 1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
subx1106 subtract 1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
subx1111 subtract 1.2345678E-80 1.2345671E-80 -> 0E-83 Inexact Rounded Subnormal Underflow
subx1112 subtract 1.2345678E-80 1.2345618E-80 -> 0E-83 Inexact Rounded Subnormal Underflow
subx1113 subtract 1.2345678E-80 1.2345178E-80 -> 0E-83 Inexact Rounded Subnormal Underflow
subx1114 subtract 1.2345678E-80 1.2341678E-80 -> 0E-83 Inexact Rounded Subnormal Underflow
subx1115 subtract 1.2345678E-80 1.2315678E-80 -> 3E-83 Rounded Subnormal
subx1116 subtract 1.2345678E-80 1.2145678E-80 -> 2.0E-82 Rounded Subnormal
subx1117 subtract 1.2345678E-80 1.1345678E-80 -> 1.00E-81 Rounded Subnormal
subx1118 subtract 1.2345678E-80 0.2345678E-80 -> 1.000E-80 Rounded Subnormal
-- Null tests
subx9990 subtract 10 # -> NaN Invalid_operation
subx9991 subtract # 10 -> NaN Invalid_operation

View file

@ -1,58 +0,0 @@
------------------------------------------------------------------------
-- testall.decTest -- run all general decimal arithmetic testcases --
-- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- core tests (using Extended: 1) --------------------------------------
dectest: base
dectest: abs
dectest: add
dectest: clamp
dectest: compare
dectest: divide
dectest: divideint
dectest: inexact
dectest: max
dectest: min
dectest: minus
dectest: multiply
dectest: normalize
dectest: plus
dectest: power
dectest: quantize
dectest: randoms
dectest: remainder
dectest: remaindernear
dectest: rescale -- [obsolete]
dectest: rounding
dectest: samequantum
dectest: squareroot
dectest: subtract
dectest: tointegral
dectest: trim
-- The next are for the Strawman 4d concrete representations
dectest: decimal32
dectest: decimal64
dectest: decimal128
-- General 31->33-digit boundary tests
dectest: randombound32

View file

@ -1,176 +0,0 @@
------------------------------------------------------------------------
-- tointegral.decTest -- round decimal to integral value --
-- Copyright (c) IBM Corporation, 2001, 2003. All rights reserved. --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases" --
-- at http://www2.hursley.ibm.com/decimal for the description of --
-- these testcases. --
-- --
-- These testcases are experimental ('beta' versions), and they --
-- may contain errors. They are offered on an as-is basis. In --
-- particular, achieving the same results as the tests here is not --
-- a guarantee that an implementation complies with any Standard --
-- or specification. The tests are not exhaustive. --
-- --
-- Please send comments, suggestions, and corrections to the author: --
-- Mike Cowlishaw, IBM Fellow --
-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK --
-- mfc@uk.ibm.com --
------------------------------------------------------------------------
version: 2.39
-- This set of tests tests the extended specification 'round-to-integral
-- value' operation (from IEEE 854, later modified in 754r).
-- All non-zero results are defined as being those from either copy or
-- quantize, so those are assumed to have been tested.
-- Note that 754r requires that Inexact not be set, and we similarly
-- assume Rounded is not set.
extended: 1
precision: 9
rounding: half_up
maxExponent: 999
minExponent: -999
intx001 tointegral 0 -> 0
intx002 tointegral 0.0 -> 0
intx003 tointegral 0.1 -> 0
intx004 tointegral 0.2 -> 0
intx005 tointegral 0.3 -> 0
intx006 tointegral 0.4 -> 0
intx007 tointegral 0.5 -> 1
intx008 tointegral 0.6 -> 1
intx009 tointegral 0.7 -> 1
intx010 tointegral 0.8 -> 1
intx011 tointegral 0.9 -> 1
intx012 tointegral 1 -> 1
intx013 tointegral 1.0 -> 1
intx014 tointegral 1.1 -> 1
intx015 tointegral 1.2 -> 1
intx016 tointegral 1.3 -> 1
intx017 tointegral 1.4 -> 1
intx018 tointegral 1.5 -> 2
intx019 tointegral 1.6 -> 2
intx020 tointegral 1.7 -> 2
intx021 tointegral 1.8 -> 2
intx022 tointegral 1.9 -> 2
-- negatives
intx031 tointegral -0 -> -0
intx032 tointegral -0.0 -> -0
intx033 tointegral -0.1 -> -0
intx034 tointegral -0.2 -> -0
intx035 tointegral -0.3 -> -0
intx036 tointegral -0.4 -> -0
intx037 tointegral -0.5 -> -1
intx038 tointegral -0.6 -> -1
intx039 tointegral -0.7 -> -1
intx040 tointegral -0.8 -> -1
intx041 tointegral -0.9 -> -1
intx042 tointegral -1 -> -1
intx043 tointegral -1.0 -> -1
intx044 tointegral -1.1 -> -1
intx045 tointegral -1.2 -> -1
intx046 tointegral -1.3 -> -1
intx047 tointegral -1.4 -> -1
intx048 tointegral -1.5 -> -2
intx049 tointegral -1.6 -> -2
intx050 tointegral -1.7 -> -2
intx051 tointegral -1.8 -> -2
intx052 tointegral -1.9 -> -2
-- next two would be NaN using quantize(x, 0)
intx053 tointegral 10E+30 -> 1.0E+31
intx054 tointegral -10E+30 -> -1.0E+31
-- numbers around precision
precision: 9
intx060 tointegral '56267E-10' -> '0'
intx061 tointegral '56267E-5' -> '1'
intx062 tointegral '56267E-2' -> '563'
intx063 tointegral '56267E-1' -> '5627'
intx065 tointegral '56267E-0' -> '56267'
intx066 tointegral '56267E+0' -> '56267'
intx067 tointegral '56267E+1' -> '5.6267E+5'
intx068 tointegral '56267E+2' -> '5.6267E+6'
intx069 tointegral '56267E+3' -> '5.6267E+7'
intx070 tointegral '56267E+4' -> '5.6267E+8'
intx071 tointegral '56267E+5' -> '5.6267E+9'
intx072 tointegral '56267E+6' -> '5.6267E+10'
intx073 tointegral '1.23E+96' -> '1.23E+96'
intx074 tointegral '1.23E+384' -> '1.23E+384'
intx075 tointegral '1.23E+999' -> '1.23E+999'
intx080 tointegral '-56267E-10' -> '-0'
intx081 tointegral '-56267E-5' -> '-1'
intx082 tointegral '-56267E-2' -> '-563'
intx083 tointegral '-56267E-1' -> '-5627'
intx085 tointegral '-56267E-0' -> '-56267'
intx086 tointegral '-56267E+0' -> '-56267'
intx087 tointegral '-56267E+1' -> '-5.6267E+5'
intx088 tointegral '-56267E+2' -> '-5.6267E+6'
intx089 tointegral '-56267E+3' -> '-5.6267E+7'
intx090 tointegral '-56267E+4' -> '-5.6267E+8'
intx091 tointegral '-56267E+5' -> '-5.6267E+9'
intx092 tointegral '-56267E+6' -> '-5.6267E+10'
intx093 tointegral '-1.23E+96' -> '-1.23E+96'
intx094 tointegral '-1.23E+384' -> '-1.23E+384'
intx095 tointegral '-1.23E+999' -> '-1.23E+999'
-- subnormal inputs
intx100 tointegral 1E-999 -> 0
intx101 tointegral 0.1E-999 -> 0
intx102 tointegral 0.01E-999 -> 0
intx103 tointegral 0E-999 -> 0
-- specials and zeros
intx120 tointegral 'Inf' -> Infinity
intx121 tointegral '-Inf' -> -Infinity
intx122 tointegral NaN -> NaN
intx123 tointegral sNaN -> NaN Invalid_operation
intx124 tointegral 0 -> 0
intx125 tointegral -0 -> -0
intx126 tointegral 0.000 -> 0
intx127 tointegral 0.00 -> 0
intx128 tointegral 0.0 -> 0
intx129 tointegral 0 -> 0
intx130 tointegral 0E-3 -> 0
intx131 tointegral 0E-2 -> 0
intx132 tointegral 0E-1 -> 0
intx133 tointegral 0E-0 -> 0
intx134 tointegral 0E+1 -> 0E+1
intx135 tointegral 0E+2 -> 0E+2
intx136 tointegral 0E+3 -> 0E+3
intx137 tointegral 0E+4 -> 0E+4
intx138 tointegral 0E+5 -> 0E+5
intx139 tointegral -0.000 -> -0
intx140 tointegral -0.00 -> -0
intx141 tointegral -0.0 -> -0
intx142 tointegral -0 -> -0
intx143 tointegral -0E-3 -> -0
intx144 tointegral -0E-2 -> -0
intx145 tointegral -0E-1 -> -0
intx146 tointegral -0E-0 -> -0
intx147 tointegral -0E+1 -> -0E+1
intx148 tointegral -0E+2 -> -0E+2
intx149 tointegral -0E+3 -> -0E+3
intx150 tointegral -0E+4 -> -0E+4
intx151 tointegral -0E+5 -> -0E+5
-- propagating NaNs
intx152 tointegral NaN808 -> NaN808
intx153 tointegral sNaN080 -> NaN80 Invalid_operation
intx154 tointegral -NaN808 -> -NaN808
intx155 tointegral -sNaN080 -> -NaN80 Invalid_operation
intx156 tointegral -NaN -> -NaN
intx157 tointegral -sNaN -> -NaN Invalid_operation
-- examples
rounding: half_up
precision: 9
intx200 tointegral 2.1 -> 2
intx201 tointegral 100 -> 100
intx202 tointegral 100.0 -> 100
intx203 tointegral 101.5 -> 102
intx204 tointegral -101.5 -> -102
intx205 tointegral 10E+5 -> 1.0E+6
intx206 tointegral 7.89E+77 -> 7.89E+77
intx207 tointegral -Inf -> -Infinity

View file

@ -1,13 +0,0 @@
# Used by test_doctest.py.
class TwoNames:
'''f() and g() are two names for the same method'''
def f(self):
'''
>>> print TwoNames().f()
f
'''
return 'f'
g = f # define an alias for f

View file

@ -1,30 +0,0 @@
from test.test_support import TestFailed
# A test for SF bug 422177: manifest float constants varied way too much in
# precision depending on whether Python was loading a module for the first
# time, or reloading it from a precompiled .pyc. The "expected" failure
# mode is that when test_import imports this after all .pyc files have been
# erased, it passes, but when test_import imports this from
# double_const.pyc, it fails. This indicates a woeful loss of precision in
# the marshal format for doubles. It's also possible that repr() doesn't
# produce enough digits to get reasonable precision for this box.
PI = 3.14159265358979324
TWOPI = 6.28318530717958648
PI_str = "3.14159265358979324"
TWOPI_str = "6.28318530717958648"
# Verify that the double x is within a few bits of eval(x_str).
def check_ok(x, x_str):
assert x > 0.0
x2 = eval(x_str)
assert x2 > 0.0
diff = abs(x - x2)
# If diff is no larger than 3 ULP (wrt x2), then diff/8 is no larger
# than 0.375 ULP, so adding diff/8 to x2 should have no effect.
if x2 + (diff / 8.) != x2:
raise TestFailed("Manifest const %s lost too much precision " % x_str)
check_ok(PI, PI_str)
check_ok(TWOPI, TWOPI_str)

View file

@ -1 +0,0 @@
'Empty VBS file, does nothing. Helper for Lib\test\test_startfile.py.

View file

@ -1,48 +0,0 @@
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- Exception
+-- GeneratorExit
+-- StopIteration
+-- StandardError
| +-- ArithmeticError
| | +-- FloatingPointError
| | +-- OverflowError
| | +-- ZeroDivisionError
| +-- AssertionError
| +-- AttributeError
| +-- EnvironmentError
| | +-- IOError
| | +-- OSError
| | +-- WindowsError (Windows)
| | +-- VMSError (VMS)
| +-- EOFError
| +-- ImportError
| +-- LookupError
| | +-- IndexError
| | +-- KeyError
| +-- MemoryError
| +-- NameError
| | +-- UnboundLocalError
| +-- ReferenceError
| +-- RuntimeError
| | +-- NotImplementedError
| +-- SyntaxError
| | +-- IndentationError
| | +-- TabError
| +-- SystemError
| +-- TypeError
| +-- ValueError
| | +-- UnicodeError
| | +-- UnicodeDecodeError
| | +-- UnicodeEncodeError
| | +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning

View file

@ -1,78 +0,0 @@
"""This test case provides support for checking forking and wait behavior.
To test different wait behavior, overrise the wait_impl method.
We want fork1() semantics -- only the forking thread survives in the
child after a fork().
On some systems (e.g. Solaris without posix threads) we find that all
active threads survive in the child after a fork(); this is an error.
While BeOS doesn't officially support fork and native threading in
the same application, the present example should work just fine. DC
"""
import os, sys, time, thread, unittest
from test.test_support import TestSkipped
LONGSLEEP = 2
SHORTSLEEP = 0.5
NUM_THREADS = 4
class ForkWait(unittest.TestCase):
def setUp(self):
self.alive = {}
self.stop = 0
def f(self, id):
while not self.stop:
self.alive[id] = os.getpid()
try:
time.sleep(SHORTSLEEP)
except IOError:
pass
def wait_impl(self, cpid):
for i in range(10):
# waitpid() shouldn't hang, but some of the buildbots seem to hang
# in the forking tests. This is an attempt to fix the problem.
spid, status = os.waitpid(cpid, os.WNOHANG)
if spid == cpid:
break
time.sleep(2 * SHORTSLEEP)
self.assertEquals(spid, cpid)
self.assertEquals(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
def test_wait(self):
for i in range(NUM_THREADS):
thread.start_new(self.f, (i,))
time.sleep(LONGSLEEP)
a = self.alive.keys()
a.sort()
self.assertEquals(a, range(NUM_THREADS))
prefork_lives = self.alive.copy()
if sys.platform in ['unixware7']:
cpid = os.fork1()
else:
cpid = os.fork()
if cpid == 0:
# Child
time.sleep(LONGSLEEP)
n = 0
for key in self.alive:
if self.alive[key] != prefork_lives[key]:
n += 1
os._exit(n)
else:
# Parent
self.wait_impl(cpid)
# Tell threads to die
self.stop = 1
time.sleep(2*SHORTSLEEP) # Wait for threads to die

File diff suppressed because it is too large Load diff

View file

@ -1,7 +0,0 @@
# For testing http://python.org/sf/742342, which reports that Python
# segfaults (infinite recursion in C) in the presence of infinite
# reload()ing. This module is imported by test_import.py:test_infinite_reload
# to make sure this doesn't happen any more.
import infinite_reload
reload(infinite_reload)

View file

@ -1,56 +0,0 @@
# line 1
'A module docstring.'
import sys, inspect
# line 5
# line 7
def spam(a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h):
eggs(b + d, c + f)
# line 11
def eggs(x, y):
"A docstring."
global fr, st
fr = inspect.currentframe()
st = inspect.stack()
p = x
q = y / 0
# line 20
class StupidGit:
"""A longer,
indented
docstring."""
# line 27
def abuse(self, a, b, c):
"""Another
\tdocstring
containing
\ttabs
\t
"""
self.argue(a, b, c)
# line 40
def argue(self, a, b, c):
try:
spam(a, b, c)
except:
self.ex = sys.exc_info()
self.tr = inspect.trace()
# line 48
class MalodorousPervert(StupidGit):
pass
class ParrotDroppings:
pass
class FesteringGob(MalodorousPervert, ParrotDroppings):
pass

View file

@ -1,99 +0,0 @@
# line 1
def wrap(foo=None):
def wrapper(func):
return func
return wrapper
# line 7
def replace(func):
def insteadfunc():
print 'hello'
return insteadfunc
# line 13
@wrap()
@wrap(wrap)
def wrapped():
pass
# line 19
@replace
def gone():
pass
# line 24
oll = lambda m: m
# line 27
tll = lambda g: g and \
g and \
g
# line 32
tlli = lambda d: d and \
d
# line 36
def onelinefunc(): pass
# line 39
def manyargs(arg1, arg2,
arg3, arg4): pass
# line 43
def twolinefunc(m): return m and \
m
# line 47
a = [None,
lambda x: x,
None]
# line 52
def setfunc(func):
globals()["anonymous"] = func
setfunc(lambda x, y: x*y)
# line 57
def with_comment(): # hello
world
# line 61
multiline_sig = [
lambda (x,
y): x+y,
None,
]
# line 68
def func69():
class cls70:
def func71():
pass
return cls70
extra74 = 74
# line 76
def func77(): pass
(extra78, stuff78) = 'xy'
extra79 = 'stop'
# line 81
class cls82:
def func83(): pass
(extra84, stuff84) = 'xy'
extra85 = 'stop'
# line 87
def func88():
# comment
return 90
# line 92
def f():
class X:
def g():
"doc"
return 42
return X
method_in_dynamic_class = f().g.im_func

View file

@ -1,32 +0,0 @@
This directory contains test cases that are known to leak references.
The idea is that you can import these modules while in the interpreter
and call the leak function repeatedly. This will only be helpful if
the interpreter was built in debug mode. If the total ref count
doesn't increase, the bug has been fixed and the file should be removed
from the repository.
Note: be careful to check for cyclic garbage. Sometimes it may be helpful
to define the leak function like:
def leak():
def inner_leak():
# this is the function that leaks, but also creates cycles
inner_leak()
gc.collect() ; gc.collect() ; gc.collect()
Here's an example interpreter session for test_gestalt which still leaks:
>>> from test.leakers.test_gestalt import leak
[24275 refs]
>>> leak()
[28936 refs]
>>> leak()
[28938 refs]
>>> leak()
[28940 refs]
>>>
Once the leak is fixed, the test case should be moved into an appropriate
test (even if it was originally from the test suite). This ensures the
regression doesn't happen again. And if it does, it should be easier
to track down.

View file

@ -1,16 +0,0 @@
# Taken from Lib/ctypes/test/test_keeprefs.py, PointerToStructure.test().
# When this leak is fixed, remember to remove from Misc/build.sh LEAKY_TESTS.
from ctypes import Structure, c_int, POINTER
import gc
def leak_inner():
class POINT(Structure):
_fields_ = [("x", c_int)]
class RECT(Structure):
_fields_ = [("a", POINTER(POINT))]
def leak():
leak_inner()
gc.collect()

View file

@ -1,14 +0,0 @@
import sys
if sys.platform != 'darwin':
raise ValueError, "This test only leaks on Mac OS X"
def leak():
# taken from platform._mac_ver_lookup()
from gestalt import gestalt
import MacOS
try:
gestalt('sysu')
except MacOS.Error:
pass

View file

@ -1,13 +0,0 @@
# Reference cycles involving only the ob_type field are rather uncommon
# but possible. Inspired by SF bug 1469629.
import gc
def leak():
class T(type):
pass
class U(type):
__metaclass__ = T
U.__class__ = U
del U
gc.collect(); gc.collect(); gc.collect()

View file

@ -1,522 +0,0 @@
"""
Tests common to list and UserList.UserList
"""
import sys
import os
import unittest
from test import test_support, seq_tests
class CommonTest(seq_tests.CommonTest):
def test_init(self):
# Iterable arg is optional
self.assertEqual(self.type2test([]), self.type2test())
# Init clears previous values
a = self.type2test([1, 2, 3])
a.__init__()
self.assertEqual(a, self.type2test([]))
# Init overwrites previous values
a = self.type2test([1, 2, 3])
a.__init__([4, 5, 6])
self.assertEqual(a, self.type2test([4, 5, 6]))
# Mutables always return a new object
b = self.type2test(a)
self.assertNotEqual(id(a), id(b))
self.assertEqual(a, b)
def test_repr(self):
l0 = []
l2 = [0, 1, 2]
a0 = self.type2test(l0)
a2 = self.type2test(l2)
self.assertEqual(str(a0), str(l0))
self.assertEqual(repr(a0), repr(l0))
self.assertEqual(`a2`, `l2`)
self.assertEqual(str(a2), "[0, 1, 2]")
self.assertEqual(repr(a2), "[0, 1, 2]")
a2.append(a2)
a2.append(3)
self.assertEqual(str(a2), "[0, 1, 2, [...], 3]")
self.assertEqual(repr(a2), "[0, 1, 2, [...], 3]")
def test_print(self):
d = self.type2test(xrange(200))
d.append(d)
d.extend(xrange(200,400))
d.append(d)
d.append(400)
try:
fo = open(test_support.TESTFN, "wb")
print >> fo, d,
fo.close()
fo = open(test_support.TESTFN, "rb")
self.assertEqual(fo.read(), repr(d))
finally:
fo.close()
os.remove(test_support.TESTFN)
def test_set_subscript(self):
a = self.type2test(range(20))
self.assertRaises(ValueError, a.__setitem__, slice(0, 10, 0), [1,2,3])
self.assertRaises(TypeError, a.__setitem__, slice(0, 10), 1)
self.assertRaises(ValueError, a.__setitem__, slice(0, 10, 2), [1,2])
self.assertRaises(TypeError, a.__getitem__, 'x', 1)
a[slice(2,10,3)] = [1,2,3]
self.assertEqual(a, self.type2test([0, 1, 1, 3, 4, 2, 6, 7, 3,
9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19]))
def test_reversed(self):
a = self.type2test(range(20))
r = reversed(a)
self.assertEqual(list(r), self.type2test(range(19, -1, -1)))
self.assertRaises(StopIteration, r.next)
self.assertEqual(list(reversed(self.type2test())),
self.type2test())
def test_setitem(self):
a = self.type2test([0, 1])
a[0] = 0
a[1] = 100
self.assertEqual(a, self.type2test([0, 100]))
a[-1] = 200
self.assertEqual(a, self.type2test([0, 200]))
a[-2] = 100
self.assertEqual(a, self.type2test([100, 200]))
self.assertRaises(IndexError, a.__setitem__, -3, 200)
self.assertRaises(IndexError, a.__setitem__, 2, 200)
a = self.type2test([])
self.assertRaises(IndexError, a.__setitem__, 0, 200)
self.assertRaises(IndexError, a.__setitem__, -1, 200)
self.assertRaises(TypeError, a.__setitem__)
a = self.type2test([0,1,2,3,4])
a[0L] = 1
a[1L] = 2
a[2L] = 3
self.assertEqual(a, self.type2test([1,2,3,3,4]))
a[0] = 5
a[1] = 6
a[2] = 7
self.assertEqual(a, self.type2test([5,6,7,3,4]))
a[-2L] = 88
a[-1L] = 99
self.assertEqual(a, self.type2test([5,6,7,88,99]))
a[-2] = 8
a[-1] = 9
self.assertEqual(a, self.type2test([5,6,7,8,9]))
def test_delitem(self):
a = self.type2test([0, 1])
del a[1]
self.assertEqual(a, [0])
del a[0]
self.assertEqual(a, [])
a = self.type2test([0, 1])
del a[-2]
self.assertEqual(a, [1])
del a[-1]
self.assertEqual(a, [])
a = self.type2test([0, 1])
self.assertRaises(IndexError, a.__delitem__, -3)
self.assertRaises(IndexError, a.__delitem__, 2)
a = self.type2test([])
self.assertRaises(IndexError, a.__delitem__, 0)
self.assertRaises(TypeError, a.__delitem__)
def test_setslice(self):
l = [0, 1]
a = self.type2test(l)
for i in range(-3, 4):
a[:i] = l[:i]
self.assertEqual(a, l)
a2 = a[:]
a2[:i] = a[:i]
self.assertEqual(a2, a)
a[i:] = l[i:]
self.assertEqual(a, l)
a2 = a[:]
a2[i:] = a[i:]
self.assertEqual(a2, a)
for j in range(-3, 4):
a[i:j] = l[i:j]
self.assertEqual(a, l)
a2 = a[:]
a2[i:j] = a[i:j]
self.assertEqual(a2, a)
aa2 = a2[:]
aa2[:0] = [-2, -1]
self.assertEqual(aa2, [-2, -1, 0, 1])
aa2[0:] = []
self.assertEqual(aa2, [])
a = self.type2test([1, 2, 3, 4, 5])
a[:-1] = a
self.assertEqual(a, self.type2test([1, 2, 3, 4, 5, 5]))
a = self.type2test([1, 2, 3, 4, 5])
a[1:] = a
self.assertEqual(a, self.type2test([1, 1, 2, 3, 4, 5]))
a = self.type2test([1, 2, 3, 4, 5])
a[1:-1] = a
self.assertEqual(a, self.type2test([1, 1, 2, 3, 4, 5, 5]))
a = self.type2test([])
a[:] = tuple(range(10))
self.assertEqual(a, self.type2test(range(10)))
self.assertRaises(TypeError, a.__setslice__, 0, 1, 5)
self.assertRaises(TypeError, a.__setslice__)
def test_delslice(self):
a = self.type2test([0, 1])
del a[1:2]
del a[0:1]
self.assertEqual(a, self.type2test([]))
a = self.type2test([0, 1])
del a[1L:2L]
del a[0L:1L]
self.assertEqual(a, self.type2test([]))
a = self.type2test([0, 1])
del a[-2:-1]
self.assertEqual(a, self.type2test([1]))
a = self.type2test([0, 1])
del a[-2L:-1L]
self.assertEqual(a, self.type2test([1]))
a = self.type2test([0, 1])
del a[1:]
del a[:1]
self.assertEqual(a, self.type2test([]))
a = self.type2test([0, 1])
del a[1L:]
del a[:1L]
self.assertEqual(a, self.type2test([]))
a = self.type2test([0, 1])
del a[-1:]
self.assertEqual(a, self.type2test([0]))
a = self.type2test([0, 1])
del a[-1L:]
self.assertEqual(a, self.type2test([0]))
a = self.type2test([0, 1])
del a[:]
self.assertEqual(a, self.type2test([]))
def test_append(self):
a = self.type2test([])
a.append(0)
a.append(1)
a.append(2)
self.assertEqual(a, self.type2test([0, 1, 2]))
self.assertRaises(TypeError, a.append)
def test_extend(self):
a1 = self.type2test([0])
a2 = self.type2test((0, 1))
a = a1[:]
a.extend(a2)
self.assertEqual(a, a1 + a2)
a.extend(self.type2test([]))
self.assertEqual(a, a1 + a2)
a.extend(a)
self.assertEqual(a, self.type2test([0, 0, 1, 0, 0, 1]))
a = self.type2test("spam")
a.extend("eggs")
self.assertEqual(a, list("spameggs"))
self.assertRaises(TypeError, a.extend, None)
self.assertRaises(TypeError, a.extend)
def test_insert(self):
a = self.type2test([0, 1, 2])
a.insert(0, -2)
a.insert(1, -1)
a.insert(2, 0)
self.assertEqual(a, [-2, -1, 0, 0, 1, 2])
b = a[:]
b.insert(-2, "foo")
b.insert(-200, "left")
b.insert(200, "right")
self.assertEqual(b, self.type2test(["left",-2,-1,0,0,"foo",1,2,"right"]))
self.assertRaises(TypeError, a.insert)
def test_pop(self):
a = self.type2test([-1, 0, 1])
a.pop()
self.assertEqual(a, [-1, 0])
a.pop(0)
self.assertEqual(a, [0])
self.assertRaises(IndexError, a.pop, 5)
a.pop(0)
self.assertEqual(a, [])
self.assertRaises(IndexError, a.pop)
self.assertRaises(TypeError, a.pop, 42, 42)
a = self.type2test([0, 10, 20, 30, 40])
def test_remove(self):
a = self.type2test([0, 0, 1])
a.remove(1)
self.assertEqual(a, [0, 0])
a.remove(0)
self.assertEqual(a, [0])
a.remove(0)
self.assertEqual(a, [])
self.assertRaises(ValueError, a.remove, 0)
self.assertRaises(TypeError, a.remove)
class BadExc(Exception):
pass
class BadCmp:
def __eq__(self, other):
if other == 2:
raise BadExc()
return False
a = self.type2test([0, 1, 2, 3])
self.assertRaises(BadExc, a.remove, BadCmp())
class BadCmp2:
def __eq__(self, other):
raise BadExc()
d = self.type2test('abcdefghcij')
d.remove('c')
self.assertEqual(d, self.type2test('abdefghcij'))
d.remove('c')
self.assertEqual(d, self.type2test('abdefghij'))
self.assertRaises(ValueError, d.remove, 'c')
self.assertEqual(d, self.type2test('abdefghij'))
# Handle comparison errors
d = self.type2test(['a', 'b', BadCmp2(), 'c'])
e = self.type2test(d)
self.assertRaises(BadExc, d.remove, 'c')
for x, y in zip(d, e):
# verify that original order and values are retained.
self.assert_(x is y)
def test_count(self):
a = self.type2test([0, 1, 2])*3
self.assertEqual(a.count(0), 3)
self.assertEqual(a.count(1), 3)
self.assertEqual(a.count(3), 0)
self.assertRaises(TypeError, a.count)
class BadExc(Exception):
pass
class BadCmp:
def __eq__(self, other):
if other == 2:
raise BadExc()
return False
self.assertRaises(BadExc, a.count, BadCmp())
def test_index(self):
u = self.type2test([0, 1])
self.assertEqual(u.index(0), 0)
self.assertEqual(u.index(1), 1)
self.assertRaises(ValueError, u.index, 2)
u = self.type2test([-2, -1, 0, 0, 1, 2])
self.assertEqual(u.count(0), 2)
self.assertEqual(u.index(0), 2)
self.assertEqual(u.index(0, 2), 2)
self.assertEqual(u.index(-2, -10), 0)
self.assertEqual(u.index(0, 3), 3)
self.assertEqual(u.index(0, 3, 4), 3)
self.assertRaises(ValueError, u.index, 2, 0, -10)
self.assertRaises(TypeError, u.index)
class BadExc(Exception):
pass
class BadCmp:
def __eq__(self, other):
if other == 2:
raise BadExc()
return False
a = self.type2test([0, 1, 2, 3])
self.assertRaises(BadExc, a.index, BadCmp())
a = self.type2test([-2, -1, 0, 0, 1, 2])
self.assertEqual(a.index(0), 2)
self.assertEqual(a.index(0, 2), 2)
self.assertEqual(a.index(0, -4), 2)
self.assertEqual(a.index(-2, -10), 0)
self.assertEqual(a.index(0, 3), 3)
self.assertEqual(a.index(0, -3), 3)
self.assertEqual(a.index(0, 3, 4), 3)
self.assertEqual(a.index(0, -3, -2), 3)
self.assertEqual(a.index(0, -4*sys.maxint, 4*sys.maxint), 2)
self.assertRaises(ValueError, a.index, 0, 4*sys.maxint,-4*sys.maxint)
self.assertRaises(ValueError, a.index, 2, 0, -10)
a.remove(0)
self.assertRaises(ValueError, a.index, 2, 0, 4)
self.assertEqual(a, self.type2test([-2, -1, 0, 1, 2]))
# Test modifying the list during index's iteration
class EvilCmp:
def __init__(self, victim):
self.victim = victim
def __eq__(self, other):
del self.victim[:]
return False
a = self.type2test()
a[:] = [EvilCmp(a) for _ in xrange(100)]
# This used to seg fault before patch #1005778
self.assertRaises(ValueError, a.index, None)
def test_reverse(self):
u = self.type2test([-2, -1, 0, 1, 2])
u2 = u[:]
u.reverse()
self.assertEqual(u, [2, 1, 0, -1, -2])
u.reverse()
self.assertEqual(u, u2)
self.assertRaises(TypeError, u.reverse, 42)
def test_sort(self):
u = self.type2test([1, 0])
u.sort()
self.assertEqual(u, [0, 1])
u = self.type2test([2,1,0,-1,-2])
u.sort()
self.assertEqual(u, self.type2test([-2,-1,0,1,2]))
self.assertRaises(TypeError, u.sort, 42, 42)
def revcmp(a, b):
return cmp(b, a)
u.sort(revcmp)
self.assertEqual(u, self.type2test([2,1,0,-1,-2]))
# The following dumps core in unpatched Python 1.5:
def myComparison(x,y):
return cmp(x%3, y%7)
z = self.type2test(range(12))
z.sort(myComparison)
self.assertRaises(TypeError, z.sort, 2)
def selfmodifyingComparison(x,y):
z.append(1)
return cmp(x, y)
self.assertRaises(ValueError, z.sort, selfmodifyingComparison)
self.assertRaises(TypeError, z.sort, lambda x, y: 's')
self.assertRaises(TypeError, z.sort, 42, 42, 42, 42)
def test_slice(self):
u = self.type2test("spam")
u[:2] = "h"
self.assertEqual(u, list("ham"))
def test_iadd(self):
super(CommonTest, self).test_iadd()
u = self.type2test([0, 1])
u2 = u
u += [2, 3]
self.assert_(u is u2)
u = self.type2test("spam")
u += "eggs"
self.assertEqual(u, self.type2test("spameggs"))
self.assertRaises(TypeError, u.__iadd__, None)
def test_imul(self):
u = self.type2test([0, 1])
u *= 3
self.assertEqual(u, self.type2test([0, 1, 0, 1, 0, 1]))
u *= 0
self.assertEqual(u, self.type2test([]))
s = self.type2test([])
oldid = id(s)
s *= 10
self.assertEqual(id(s), oldid)
def test_extendedslicing(self):
# subscript
a = self.type2test([0,1,2,3,4])
# deletion
del a[::2]
self.assertEqual(a, self.type2test([1,3]))
a = self.type2test(range(5))
del a[1::2]
self.assertEqual(a, self.type2test([0,2,4]))
a = self.type2test(range(5))
del a[1::-2]
self.assertEqual(a, self.type2test([0,2,3,4]))
a = self.type2test(range(10))
del a[::1000]
self.assertEqual(a, self.type2test([1, 2, 3, 4, 5, 6, 7, 8, 9]))
# assignment
a = self.type2test(range(10))
a[::2] = [-1]*5
self.assertEqual(a, self.type2test([-1, 1, -1, 3, -1, 5, -1, 7, -1, 9]))
a = self.type2test(range(10))
a[::-4] = [10]*3
self.assertEqual(a, self.type2test([0, 10, 2, 3, 4, 10, 6, 7, 8 ,10]))
a = self.type2test(range(4))
a[::-1] = a
self.assertEqual(a, self.type2test([3, 2, 1, 0]))
a = self.type2test(range(10))
b = a[:]
c = a[:]
a[2:3] = self.type2test(["two", "elements"])
b[slice(2,3)] = self.type2test(["two", "elements"])
c[2:3:] = self.type2test(["two", "elements"])
self.assertEqual(a, b)
self.assertEqual(a, c)
a = self.type2test(range(10))
a[::2] = tuple(range(5))
self.assertEqual(a, self.type2test([0, 1, 1, 3, 2, 5, 3, 7, 4, 9]))
def test_constructor_exception_handling(self):
# Bug #1242657
class F(object):
def __iter__(self):
yield 23
def __len__(self):
raise KeyboardInterrupt
self.assertRaises(KeyboardInterrupt, list, F())

View file

@ -1,672 +0,0 @@
# tests common to dict and UserDict
import unittest
import UserDict
class BasicTestMappingProtocol(unittest.TestCase):
# This base class can be used to check that an object conforms to the
# mapping protocol
# Functions that can be useful to override to adapt to dictionary
# semantics
type2test = None # which class is being tested (overwrite in subclasses)
def _reference(self):
"""Return a dictionary of values which are invariant by storage
in the object under test."""
return {1:2, "key1":"value1", "key2":(1,2,3)}
def _empty_mapping(self):
"""Return an empty mapping object"""
return self.type2test()
def _full_mapping(self, data):
"""Return a mapping object with the value contained in data
dictionary"""
x = self._empty_mapping()
for key, value in data.items():
x[key] = value
return x
def __init__(self, *args, **kw):
unittest.TestCase.__init__(self, *args, **kw)
self.reference = self._reference().copy()
# A (key, value) pair not in the mapping
key, value = self.reference.popitem()
self.other = {key:value}
# A (key, value) pair in the mapping
key, value = self.reference.popitem()
self.inmapping = {key:value}
self.reference[key] = value
def test_read(self):
# Test for read only operations on mapping
p = self._empty_mapping()
p1 = dict(p) #workaround for singleton objects
d = self._full_mapping(self.reference)
if d is p:
p = p1
#Indexing
for key, value in self.reference.items():
self.assertEqual(d[key], value)
knownkey = self.other.keys()[0]
self.failUnlessRaises(KeyError, lambda:d[knownkey])
#len
self.assertEqual(len(p), 0)
self.assertEqual(len(d), len(self.reference))
#has_key
for k in self.reference:
self.assert_(d.has_key(k))
self.assert_(k in d)
for k in self.other:
self.failIf(d.has_key(k))
self.failIf(k in d)
#cmp
self.assertEqual(cmp(p,p), 0)
self.assertEqual(cmp(d,d), 0)
self.assertEqual(cmp(p,d), -1)
self.assertEqual(cmp(d,p), 1)
#__non__zero__
if p: self.fail("Empty mapping must compare to False")
if not d: self.fail("Full mapping must compare to True")
# keys(), items(), iterkeys() ...
def check_iterandlist(iter, lst, ref):
self.assert_(hasattr(iter, 'next'))
self.assert_(hasattr(iter, '__iter__'))
x = list(iter)
self.assert_(set(x)==set(lst)==set(ref))
check_iterandlist(d.iterkeys(), d.keys(), self.reference.keys())
check_iterandlist(iter(d), d.keys(), self.reference.keys())
check_iterandlist(d.itervalues(), d.values(), self.reference.values())
check_iterandlist(d.iteritems(), d.items(), self.reference.items())
#get
key, value = d.iteritems().next()
knownkey, knownvalue = self.other.iteritems().next()
self.assertEqual(d.get(key, knownvalue), value)
self.assertEqual(d.get(knownkey, knownvalue), knownvalue)
self.failIf(knownkey in d)
def test_write(self):
# Test for write operations on mapping
p = self._empty_mapping()
#Indexing
for key, value in self.reference.items():
p[key] = value
self.assertEqual(p[key], value)
for key in self.reference.keys():
del p[key]
self.failUnlessRaises(KeyError, lambda:p[key])
p = self._empty_mapping()
#update
p.update(self.reference)
self.assertEqual(dict(p), self.reference)
items = p.items()
p = self._empty_mapping()
p.update(items)
self.assertEqual(dict(p), self.reference)
d = self._full_mapping(self.reference)
#setdefault
key, value = d.iteritems().next()
knownkey, knownvalue = self.other.iteritems().next()
self.assertEqual(d.setdefault(key, knownvalue), value)
self.assertEqual(d[key], value)
self.assertEqual(d.setdefault(knownkey, knownvalue), knownvalue)
self.assertEqual(d[knownkey], knownvalue)
#pop
self.assertEqual(d.pop(knownkey), knownvalue)
self.failIf(knownkey in d)
self.assertRaises(KeyError, d.pop, knownkey)
default = 909
d[knownkey] = knownvalue
self.assertEqual(d.pop(knownkey, default), knownvalue)
self.failIf(knownkey in d)
self.assertEqual(d.pop(knownkey, default), default)
#popitem
key, value = d.popitem()
self.failIf(key in d)
self.assertEqual(value, self.reference[key])
p=self._empty_mapping()
self.assertRaises(KeyError, p.popitem)
def test_constructor(self):
self.assertEqual(self._empty_mapping(), self._empty_mapping())
def test_bool(self):
self.assert_(not self._empty_mapping())
self.assert_(self.reference)
self.assert_(bool(self._empty_mapping()) is False)
self.assert_(bool(self.reference) is True)
def test_keys(self):
d = self._empty_mapping()
self.assertEqual(d.keys(), [])
d = self.reference
self.assert_(self.inmapping.keys()[0] in d.keys())
self.assert_(self.other.keys()[0] not in d.keys())
self.assertRaises(TypeError, d.keys, None)
def test_values(self):
d = self._empty_mapping()
self.assertEqual(d.values(), [])
self.assertRaises(TypeError, d.values, None)
def test_items(self):
d = self._empty_mapping()
self.assertEqual(d.items(), [])
self.assertRaises(TypeError, d.items, None)
def test_len(self):
d = self._empty_mapping()
self.assertEqual(len(d), 0)
def test_getitem(self):
d = self.reference
self.assertEqual(d[self.inmapping.keys()[0]], self.inmapping.values()[0])
self.assertRaises(TypeError, d.__getitem__)
def test_update(self):
# mapping argument
d = self._empty_mapping()
d.update(self.other)
self.assertEqual(d.items(), self.other.items())
# No argument
d = self._empty_mapping()
d.update()
self.assertEqual(d, self._empty_mapping())
# item sequence
d = self._empty_mapping()
d.update(self.other.items())
self.assertEqual(d.items(), self.other.items())
# Iterator
d = self._empty_mapping()
d.update(self.other.iteritems())
self.assertEqual(d.items(), self.other.items())
# FIXME: Doesn't work with UserDict
# self.assertRaises((TypeError, AttributeError), d.update, None)
self.assertRaises((TypeError, AttributeError), d.update, 42)
outerself = self
class SimpleUserDict:
def __init__(self):
self.d = outerself.reference
def keys(self):
return self.d.keys()
def __getitem__(self, i):
return self.d[i]
d.clear()
d.update(SimpleUserDict())
i1 = d.items()
i2 = self.reference.items()
i1.sort()
i2.sort()
self.assertEqual(i1, i2)
class Exc(Exception): pass
d = self._empty_mapping()
class FailingUserDict:
def keys(self):
raise Exc
self.assertRaises(Exc, d.update, FailingUserDict())
d.clear()
class FailingUserDict:
def keys(self):
class BogonIter:
def __init__(self):
self.i = 1
def __iter__(self):
return self
def next(self):
if self.i:
self.i = 0
return 'a'
raise Exc
return BogonIter()
def __getitem__(self, key):
return key
self.assertRaises(Exc, d.update, FailingUserDict())
class FailingUserDict:
def keys(self):
class BogonIter:
def __init__(self):
self.i = ord('a')
def __iter__(self):
return self
def next(self):
if self.i <= ord('z'):
rtn = chr(self.i)
self.i += 1
return rtn
raise StopIteration
return BogonIter()
def __getitem__(self, key):
raise Exc
self.assertRaises(Exc, d.update, FailingUserDict())
d = self._empty_mapping()
class badseq(object):
def __iter__(self):
return self
def next(self):
raise Exc()
self.assertRaises(Exc, d.update, badseq())
self.assertRaises(ValueError, d.update, [(1, 2, 3)])
# no test_fromkeys or test_copy as both os.environ and selves don't support it
def test_get(self):
d = self._empty_mapping()
self.assert_(d.get(self.other.keys()[0]) is None)
self.assertEqual(d.get(self.other.keys()[0], 3), 3)
d = self.reference
self.assert_(d.get(self.other.keys()[0]) is None)
self.assertEqual(d.get(self.other.keys()[0], 3), 3)
self.assertEqual(d.get(self.inmapping.keys()[0]), self.inmapping.values()[0])
self.assertEqual(d.get(self.inmapping.keys()[0], 3), self.inmapping.values()[0])
self.assertRaises(TypeError, d.get)
self.assertRaises(TypeError, d.get, None, None, None)
def test_setdefault(self):
d = self._empty_mapping()
self.assertRaises(TypeError, d.setdefault)
def test_popitem(self):
d = self._empty_mapping()
self.assertRaises(KeyError, d.popitem)
self.assertRaises(TypeError, d.popitem, 42)
def test_pop(self):
d = self._empty_mapping()
k, v = self.inmapping.items()[0]
d[k] = v
self.assertRaises(KeyError, d.pop, self.other.keys()[0])
self.assertEqual(d.pop(k), v)
self.assertEqual(len(d), 0)
self.assertRaises(KeyError, d.pop, k)
class TestMappingProtocol(BasicTestMappingProtocol):
def test_constructor(self):
BasicTestMappingProtocol.test_constructor(self)
self.assert_(self._empty_mapping() is not self._empty_mapping())
self.assertEqual(self.type2test(x=1, y=2), {"x": 1, "y": 2})
def test_bool(self):
BasicTestMappingProtocol.test_bool(self)
self.assert_(not self._empty_mapping())
self.assert_(self._full_mapping({"x": "y"}))
self.assert_(bool(self._empty_mapping()) is False)
self.assert_(bool(self._full_mapping({"x": "y"})) is True)
def test_keys(self):
BasicTestMappingProtocol.test_keys(self)
d = self._empty_mapping()
self.assertEqual(d.keys(), [])
d = self._full_mapping({'a': 1, 'b': 2})
k = d.keys()
self.assert_('a' in k)
self.assert_('b' in k)
self.assert_('c' not in k)
def test_values(self):
BasicTestMappingProtocol.test_values(self)
d = self._full_mapping({1:2})
self.assertEqual(d.values(), [2])
def test_items(self):
BasicTestMappingProtocol.test_items(self)
d = self._full_mapping({1:2})
self.assertEqual(d.items(), [(1, 2)])
def test_has_key(self):
d = self._empty_mapping()
self.assert_(not d.has_key('a'))
d = self._full_mapping({'a': 1, 'b': 2})
k = d.keys()
k.sort()
self.assertEqual(k, ['a', 'b'])
self.assertRaises(TypeError, d.has_key)
def test_contains(self):
d = self._empty_mapping()
self.assert_(not ('a' in d))
self.assert_('a' not in d)
d = self._full_mapping({'a': 1, 'b': 2})
self.assert_('a' in d)
self.assert_('b' in d)
self.assert_('c' not in d)
self.assertRaises(TypeError, d.__contains__)
def test_len(self):
BasicTestMappingProtocol.test_len(self)
d = self._full_mapping({'a': 1, 'b': 2})
self.assertEqual(len(d), 2)
def test_getitem(self):
BasicTestMappingProtocol.test_getitem(self)
d = self._full_mapping({'a': 1, 'b': 2})
self.assertEqual(d['a'], 1)
self.assertEqual(d['b'], 2)
d['c'] = 3
d['a'] = 4
self.assertEqual(d['c'], 3)
self.assertEqual(d['a'], 4)
del d['b']
self.assertEqual(d, {'a': 4, 'c': 3})
self.assertRaises(TypeError, d.__getitem__)
def test_clear(self):
d = self._full_mapping({1:1, 2:2, 3:3})
d.clear()
self.assertEqual(d, {})
self.assertRaises(TypeError, d.clear, None)
def test_update(self):
BasicTestMappingProtocol.test_update(self)
# mapping argument
d = self._empty_mapping()
d.update({1:100})
d.update({2:20})
d.update({1:1, 2:2, 3:3})
self.assertEqual(d, {1:1, 2:2, 3:3})
# no argument
d.update()
self.assertEqual(d, {1:1, 2:2, 3:3})
# keyword arguments
d = self._empty_mapping()
d.update(x=100)
d.update(y=20)
d.update(x=1, y=2, z=3)
self.assertEqual(d, {"x":1, "y":2, "z":3})
# item sequence
d = self._empty_mapping()
d.update([("x", 100), ("y", 20)])
self.assertEqual(d, {"x":100, "y":20})
# Both item sequence and keyword arguments
d = self._empty_mapping()
d.update([("x", 100), ("y", 20)], x=1, y=2)
self.assertEqual(d, {"x":1, "y":2})
# iterator
d = self._full_mapping({1:3, 2:4})
d.update(self._full_mapping({1:2, 3:4, 5:6}).iteritems())
self.assertEqual(d, {1:2, 2:4, 3:4, 5:6})
class SimpleUserDict:
def __init__(self):
self.d = {1:1, 2:2, 3:3}
def keys(self):
return self.d.keys()
def __getitem__(self, i):
return self.d[i]
d.clear()
d.update(SimpleUserDict())
self.assertEqual(d, {1:1, 2:2, 3:3})
def test_fromkeys(self):
self.assertEqual(self.type2test.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
d = self._empty_mapping()
self.assert_(not(d.fromkeys('abc') is d))
self.assertEqual(d.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
self.assertEqual(d.fromkeys((4,5),0), {4:0, 5:0})
self.assertEqual(d.fromkeys([]), {})
def g():
yield 1
self.assertEqual(d.fromkeys(g()), {1:None})
self.assertRaises(TypeError, {}.fromkeys, 3)
class dictlike(self.type2test): pass
self.assertEqual(dictlike.fromkeys('a'), {'a':None})
self.assertEqual(dictlike().fromkeys('a'), {'a':None})
self.assert_(dictlike.fromkeys('a').__class__ is dictlike)
self.assert_(dictlike().fromkeys('a').__class__ is dictlike)
# FIXME: the following won't work with UserDict, because it's an old style class
# self.assert_(type(dictlike.fromkeys('a')) is dictlike)
class mydict(self.type2test):
def __new__(cls):
return UserDict.UserDict()
ud = mydict.fromkeys('ab')
self.assertEqual(ud, {'a':None, 'b':None})
# FIXME: the following won't work with UserDict, because it's an old style class
# self.assert_(isinstance(ud, UserDict.UserDict))
self.assertRaises(TypeError, dict.fromkeys)
class Exc(Exception): pass
class baddict1(self.type2test):
def __init__(self):
raise Exc()
self.assertRaises(Exc, baddict1.fromkeys, [1])
class BadSeq(object):
def __iter__(self):
return self
def next(self):
raise Exc()
self.assertRaises(Exc, self.type2test.fromkeys, BadSeq())
class baddict2(self.type2test):
def __setitem__(self, key, value):
raise Exc()
self.assertRaises(Exc, baddict2.fromkeys, [1])
def test_copy(self):
d = self._full_mapping({1:1, 2:2, 3:3})
self.assertEqual(d.copy(), {1:1, 2:2, 3:3})
d = self._empty_mapping()
self.assertEqual(d.copy(), d)
self.assert_(isinstance(d.copy(), d.__class__))
self.assertRaises(TypeError, d.copy, None)
def test_get(self):
BasicTestMappingProtocol.test_get(self)
d = self._empty_mapping()
self.assert_(d.get('c') is None)
self.assertEqual(d.get('c', 3), 3)
d = self._full_mapping({'a' : 1, 'b' : 2})
self.assert_(d.get('c') is None)
self.assertEqual(d.get('c', 3), 3)
self.assertEqual(d.get('a'), 1)
self.assertEqual(d.get('a', 3), 1)
def test_setdefault(self):
BasicTestMappingProtocol.test_setdefault(self)
d = self._empty_mapping()
self.assert_(d.setdefault('key0') is None)
d.setdefault('key0', [])
self.assert_(d.setdefault('key0') is None)
d.setdefault('key', []).append(3)
self.assertEqual(d['key'][0], 3)
d.setdefault('key', []).append(4)
self.assertEqual(len(d['key']), 2)
def test_popitem(self):
BasicTestMappingProtocol.test_popitem(self)
for copymode in -1, +1:
# -1: b has same structure as a
# +1: b is a.copy()
for log2size in range(12):
size = 2**log2size
a = self._empty_mapping()
b = self._empty_mapping()
for i in range(size):
a[repr(i)] = i
if copymode < 0:
b[repr(i)] = i
if copymode > 0:
b = a.copy()
for i in range(size):
ka, va = ta = a.popitem()
self.assertEqual(va, int(ka))
kb, vb = tb = b.popitem()
self.assertEqual(vb, int(kb))
self.assert_(not(copymode < 0 and ta != tb))
self.assert_(not a)
self.assert_(not b)
def test_pop(self):
BasicTestMappingProtocol.test_pop(self)
# Tests for pop with specified key
d = self._empty_mapping()
k, v = 'abc', 'def'
# verify longs/ints get same value when key > 32 bits (for 64-bit archs)
# see SF bug #689659
x = 4503599627370496L
y = 4503599627370496
h = self._full_mapping({x: 'anything', y: 'something else'})
self.assertEqual(h[x], h[y])
self.assertEqual(d.pop(k, v), v)
d[k] = v
self.assertEqual(d.pop(k, 1), v)
class TestHashMappingProtocol(TestMappingProtocol):
def test_getitem(self):
TestMappingProtocol.test_getitem(self)
class Exc(Exception): pass
class BadEq(object):
def __eq__(self, other):
raise Exc()
d = self._empty_mapping()
d[BadEq()] = 42
self.assertRaises(KeyError, d.__getitem__, 23)
class BadHash(object):
fail = False
def __hash__(self):
if self.fail:
raise Exc()
else:
return 42
d = self._empty_mapping()
x = BadHash()
d[x] = 42
x.fail = True
self.assertRaises(Exc, d.__getitem__, x)
def test_fromkeys(self):
TestMappingProtocol.test_fromkeys(self)
class mydict(self.type2test):
def __new__(cls):
return UserDict.UserDict()
ud = mydict.fromkeys('ab')
self.assertEqual(ud, {'a':None, 'b':None})
self.assert_(isinstance(ud, UserDict.UserDict))
def test_pop(self):
TestMappingProtocol.test_pop(self)
class Exc(Exception): pass
class BadHash(object):
fail = False
def __hash__(self):
if self.fail:
raise Exc()
else:
return 42
d = self._empty_mapping()
x = BadHash()
d[x] = 42
x.fail = True
self.assertRaises(Exc, d.pop, x)
def test_mutatingiteration(self):
d = self._empty_mapping()
d[1] = 1
try:
for i in d:
d[i+1] = 1
except RuntimeError:
pass
else:
self.fail("changing dict size during iteration doesn't raise Error")
def test_repr(self):
d = self._empty_mapping()
self.assertEqual(repr(d), '{}')
d[1] = 2
self.assertEqual(repr(d), '{1: 2}')
d = self._empty_mapping()
d[1] = d
self.assertEqual(repr(d), '{1: {...}}')
class Exc(Exception): pass
class BadRepr(object):
def __repr__(self):
raise Exc()
d = self._full_mapping({1: BadRepr()})
self.assertRaises(Exc, repr, d)
def test_le(self):
self.assert_(not (self._empty_mapping() < self._empty_mapping()))
self.assert_(not (self._full_mapping({1: 2}) < self._full_mapping({1L: 2L})))
class Exc(Exception): pass
class BadCmp(object):
def __eq__(self, other):
raise Exc()
d1 = self._full_mapping({BadCmp(): 1})
d2 = self._full_mapping({1: 1})
try:
d1 < d2
except Exc:
pass
else:
self.fail("< didn't raise Exc")
def test_setdefault(self):
TestMappingProtocol.test_setdefault(self)
class Exc(Exception): pass
class BadHash(object):
fail = False
def __hash__(self):
if self.fail:
raise Exc()
else:
return 42
d = self._empty_mapping()
x = BadHash()
d[x] = 42
x.fail = True
self.assertRaises(Exc, d.setdefault, x, [])

View file

@ -1,110 +0,0 @@
test_MimeWriter
From: bwarsaw@cnri.reston.va.us
Date: Mon Feb 12 17:21:48 EST 1996
To: kss-submit@cnri.reston.va.us
MIME-Version: 1.0
Content-Type: multipart/knowbot;
boundary="801spam999";
version="0.1"
This is a multi-part message in MIME format.
--801spam999
Content-Type: multipart/knowbot-metadata;
boundary="802spam999"
--802spam999
Content-Type: message/rfc822
KP-Metadata-Type: simple
KP-Access: read-only
KPMD-Interpreter: python
KPMD-Interpreter-Version: 1.3
KPMD-Owner-Name: Barry Warsaw
KPMD-Owner-Rendezvous: bwarsaw@cnri.reston.va.us
KPMD-Home-KSS: kss.cnri.reston.va.us
KPMD-Identifier: hdl://cnri.kss/my_first_knowbot
KPMD-Launch-Date: Mon Feb 12 16:39:03 EST 1996
--802spam999
Content-Type: text/isl
KP-Metadata-Type: complex
KP-Metadata-Key: connection
KP-Access: read-only
KP-Connection-Description: Barry's Big Bass Business
KP-Connection-Id: B4
KP-Connection-Direction: client
INTERFACE Seller-1;
TYPE Seller = OBJECT
DOCUMENTATION "A simple Seller interface to test ILU"
METHODS
price():INTEGER,
END;
--802spam999
Content-Type: message/external-body;
access-type="URL";
URL="hdl://cnri.kss/generic-knowbot"
Content-Type: text/isl
KP-Metadata-Type: complex
KP-Metadata-Key: generic-interface
KP-Access: read-only
KP-Connection-Description: Generic Interface for All Knowbots
KP-Connection-Id: generic-kp
KP-Connection-Direction: client
--802spam999--
--801spam999
Content-Type: multipart/knowbot-code;
boundary="803spam999"
--803spam999
Content-Type: text/plain
KP-Module-Name: BuyerKP
class Buyer:
def __setup__(self, maxprice):
self._maxprice = maxprice
def __main__(self, kos):
"""Entry point upon arrival at a new KOS."""
broker = kos.broker()
# B4 == Barry's Big Bass Business :-)
seller = broker.lookup('Seller_1.Seller', 'B4')
if seller:
price = seller.price()
print 'Seller wants $', price, '... '
if price > self._maxprice:
print 'too much!'
else:
print "I'll take it!"
else:
print 'no seller found here'
--803spam999--
--801spam999
Content-Type: multipart/knowbot-state;
boundary="804spam999"
KP-Main-Module: main
--804spam999
Content-Type: text/plain
KP-Module-Name: main
# instantiate a buyer instance and put it in a magic place for the KOS
# to find.
__kp__ = Buyer()
__kp__.__setup__(500)
--804spam999--
--801spam999--

View file

@ -1,79 +0,0 @@
test_cProfile
126 function calls (106 primitive calls) in 1.000 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 1.000 1.000 <string>:1(<module>)
8 0.064 0.008 0.080 0.010 test_cProfile.py:103(subhelper)
28 0.028 0.001 0.028 0.001 test_cProfile.py:115(__getattr__)
1 0.270 0.270 1.000 1.000 test_cProfile.py:30(testfunc)
23/3 0.150 0.007 0.170 0.057 test_cProfile.py:40(factorial)
20 0.020 0.001 0.020 0.001 test_cProfile.py:53(mul)
2 0.040 0.020 0.600 0.300 test_cProfile.py:60(helper)
4 0.116 0.029 0.120 0.030 test_cProfile.py:78(helper1)
2 0.000 0.000 0.140 0.070 test_cProfile.py:89(helper2_indirect)
8 0.312 0.039 0.400 0.050 test_cProfile.py:93(helper2)
12 0.000 0.000 0.012 0.001 {hasattr}
4 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
8 0.000 0.000 0.000 0.000 {range}
4 0.000 0.000 0.000 0.000 {sys.exc_info}
Ordered by: standard name
Function called...
ncalls tottime cumtime
<string>:1(<module>) -> 1 0.270 1.000 test_cProfile.py:30(testfunc)
test_cProfile.py:103(subhelper) -> 16 0.016 0.016 test_cProfile.py:115(__getattr__)
8 0.000 0.000 {range}
test_cProfile.py:115(__getattr__) ->
test_cProfile.py:30(testfunc) -> 1 0.014 0.130 test_cProfile.py:40(factorial)
2 0.040 0.600 test_cProfile.py:60(helper)
test_cProfile.py:40(factorial) -> 20/3 0.130 0.147 test_cProfile.py:40(factorial)
20 0.020 0.020 test_cProfile.py:53(mul)
test_cProfile.py:53(mul) ->
test_cProfile.py:60(helper) -> 4 0.116 0.120 test_cProfile.py:78(helper1)
2 0.000 0.140 test_cProfile.py:89(helper2_indirect)
6 0.234 0.300 test_cProfile.py:93(helper2)
test_cProfile.py:78(helper1) -> 4 0.000 0.004 {hasattr}
4 0.000 0.000 {method 'append' of 'list' objects}
4 0.000 0.000 {sys.exc_info}
test_cProfile.py:89(helper2_indirect) -> 2 0.006 0.040 test_cProfile.py:40(factorial)
2 0.078 0.100 test_cProfile.py:93(helper2)
test_cProfile.py:93(helper2) -> 8 0.064 0.080 test_cProfile.py:103(subhelper)
8 0.000 0.008 {hasattr}
{hasattr} -> 12 0.012 0.012 test_cProfile.py:115(__getattr__)
{method 'append' of 'list' objects} ->
{method 'disable' of '_lsprof.Profiler' objects} ->
{range} ->
{sys.exc_info} ->
Ordered by: standard name
Function was called by...
ncalls tottime cumtime
<string>:1(<module>) <-
test_cProfile.py:103(subhelper) <- 8 0.064 0.080 test_cProfile.py:93(helper2)
test_cProfile.py:115(__getattr__) <- 16 0.016 0.016 test_cProfile.py:103(subhelper)
12 0.012 0.012 {hasattr}
test_cProfile.py:30(testfunc) <- 1 0.270 1.000 <string>:1(<module>)
test_cProfile.py:40(factorial) <- 1 0.014 0.130 test_cProfile.py:30(testfunc)
20/3 0.130 0.147 test_cProfile.py:40(factorial)
2 0.006 0.040 test_cProfile.py:89(helper2_indirect)
test_cProfile.py:53(mul) <- 20 0.020 0.020 test_cProfile.py:40(factorial)
test_cProfile.py:60(helper) <- 2 0.040 0.600 test_cProfile.py:30(testfunc)
test_cProfile.py:78(helper1) <- 4 0.116 0.120 test_cProfile.py:60(helper)
test_cProfile.py:89(helper2_indirect) <- 2 0.000 0.140 test_cProfile.py:60(helper)
test_cProfile.py:93(helper2) <- 6 0.234 0.300 test_cProfile.py:60(helper)
2 0.078 0.100 test_cProfile.py:89(helper2_indirect)
{hasattr} <- 4 0.000 0.004 test_cProfile.py:78(helper1)
8 0.000 0.008 test_cProfile.py:93(helper2)
{method 'append' of 'list' objects} <- 4 0.000 0.000 test_cProfile.py:78(helper1)
{method 'disable' of '_lsprof.Profiler' objects} <-
{range} <- 8 0.000 0.000 test_cProfile.py:103(subhelper)
{sys.exc_info} <- 4 0.000 0.000 test_cProfile.py:78(helper1)

View file

@ -1,42 +0,0 @@
test_cgi
'' => []
'&' => []
'&&' => []
'=' => [('', '')]
'=a' => [('', 'a')]
'a' => [('a', '')]
'a=' => [('a', '')]
'a=' => [('a', '')]
'&a=b' => [('a', 'b')]
'a=a+b&b=b+c' => [('a', 'a b'), ('b', 'b c')]
'a=1&a=2' => [('a', '1'), ('a', '2')]
''
'&'
'&&'
';'
';&;'
'='
'=&='
'=;='
'=a'
'&=a'
'=a&'
'=&a'
'b=a'
'b+=a'
'a=b=a'
'a=+b=a'
'&b=a'
'b&=a'
'a=a+b&b=b+c'
'a=a+b&a=b+a'
'x=1&y=2.0&z=2-3.%2b0'
'x=1;y=2.0&z=2-3.%2b0'
'x=1;y=2.0;z=2-3.%2b0'
'Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=env'
'group_id=5470&set=custom&_assigned_to=31392&_status=1&_category=100&SUBMIT=Browse'
Testing log
Testing initlog 1
Testing log 2
Test FieldStorage methods that use readline
Test basic FieldStorage multipart parsing

View file

@ -1,101 +0,0 @@
test_class
__init__: ()
__coerce__: (1,)
__add__: (1,)
__coerce__: (1,)
__radd__: (1,)
__coerce__: (1,)
__sub__: (1,)
__coerce__: (1,)
__rsub__: (1,)
__coerce__: (1,)
__mul__: (1,)
__coerce__: (1,)
__rmul__: (1,)
__coerce__: (1,)
__div__: (1,)
__coerce__: (1,)
__rdiv__: (1,)
__coerce__: (1,)
__mod__: (1,)
__coerce__: (1,)
__rmod__: (1,)
__coerce__: (1,)
__divmod__: (1,)
__coerce__: (1,)
__rdivmod__: (1,)
__coerce__: (1,)
__pow__: (1,)
__coerce__: (1,)
__rpow__: (1,)
__coerce__: (1,)
__rshift__: (1,)
__coerce__: (1,)
__rrshift__: (1,)
__coerce__: (1,)
__lshift__: (1,)
__coerce__: (1,)
__rlshift__: (1,)
__coerce__: (1,)
__and__: (1,)
__coerce__: (1,)
__rand__: (1,)
__coerce__: (1,)
__or__: (1,)
__coerce__: (1,)
__ror__: (1,)
__coerce__: (1,)
__xor__: (1,)
__coerce__: (1,)
__rxor__: (1,)
__contains__: (1,)
__getitem__: (1,)
__setitem__: (1, 1)
__delitem__: (1,)
__getslice__: (0, 42)
__setslice__: (0, 42, 'The Answer')
__delslice__: (0, 42)
__getitem__: (slice(2, 1024, 10),)
__setitem__: (slice(2, 1024, 10), 'A lot')
__delitem__: (slice(2, 1024, 10),)
__getitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),)
__setitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100), 'Strange')
__delitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),)
__getitem__: (slice(0, 42, None),)
__setitem__: (slice(0, 42, None), 'The Answer')
__delitem__: (slice(0, 42, None),)
__neg__: ()
__pos__: ()
__abs__: ()
__int__: ()
__long__: ()
__float__: ()
__oct__: ()
__hex__: ()
__hash__: ()
__repr__: ()
__str__: ()
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__coerce__: (1,)
__cmp__: (1,)
__del__: ()
__getattr__: ('spam',)
__setattr__: ('eggs', 'spam, spam, spam and ham')
__delattr__: ('cardinal',)

View file

@ -1,32 +0,0 @@
test_cookie
<SimpleCookie: chips='ahoy' vienna='finger'>
Set-Cookie: chips=ahoy
Set-Cookie: vienna=finger
chips 'ahoy' 'ahoy'
Set-Cookie: chips=ahoy
vienna 'finger' 'finger'
Set-Cookie: vienna=finger
<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=\n;'>
Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"
keebler 'E=mc2; L="Loves"; fudge=\n;' 'E=mc2; L="Loves"; fudge=\n;'
Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"
<SimpleCookie: keebler='E=mc2'>
Set-Cookie: keebler=E=mc2
keebler 'E=mc2' 'E=mc2'
Set-Cookie: keebler=E=mc2
Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme
<script type="text/javascript">
<!-- begin hiding
document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme; Version=1";
// end hiding -->
</script>
<script type="text/javascript">
<!-- begin hiding
document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme";
// end hiding -->
</script>
If anything blows up after this line, it's from Cookie's doctest.

View file

@ -1,112 +0,0 @@
test_extcall
() {}
(1,) {}
(1, 2) {}
(1, 2, 3) {}
(1, 2, 3, 4, 5) {}
(1, 2, 3, 4, 5) {}
(1, 2, 3, 4, 5) {}
(1, 2, 3) {'a': 4, 'b': 5}
(1, 2, 3, 4, 5) {'a': 6, 'b': 7}
(1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5}
TypeError: g() takes at least 1 argument (0 given)
TypeError: g() takes at least 1 argument (0 given)
TypeError: g() takes at least 1 argument (0 given)
1 () {}
1 (2,) {}
1 (2, 3) {}
1 (2, 3, 4, 5) {}
0 (1, 2) {}
0 (1, 2, 3) {}
1 () {'a': 1, 'b': 2, 'c': 3, 'd': 4}
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2, 'c': 3}
g() got multiple values for keyword argument 'x'
g() got multiple values for keyword argument 'b'
f() keywords must be strings
h() got an unexpected keyword argument 'e'
h() argument after * must be a sequence
dir() argument after * must be a sequence
NoneType object argument after * must be a sequence
h() argument after ** must be a dictionary
dir() argument after ** must be a dictionary
NoneType object argument after ** must be a dictionary
dir() got multiple values for keyword argument 'b'
3 512 True
3
3
za () {} -> za() takes exactly 1 argument (0 given)
za () {'a': 'aa'} -> ok za aa B D E V a
za () {'d': 'dd'} -> za() got an unexpected keyword argument 'd'
za () {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd'
za () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got an unexpected keyword argument 'b'
za (1, 2) {} -> za() takes exactly 1 argument (2 given)
za (1, 2) {'a': 'aa'} -> za() takes exactly 1 non-keyword argument (2 given)
za (1, 2) {'d': 'dd'} -> za() takes exactly 1 non-keyword argument (2 given)
za (1, 2) {'a': 'aa', 'd': 'dd'} -> za() takes exactly 1 non-keyword argument (2 given)
za (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() takes exactly 1 non-keyword argument (2 given)
za (1, 2, 3, 4, 5) {} -> za() takes exactly 1 argument (5 given)
za (1, 2, 3, 4, 5) {'a': 'aa'} -> za() takes exactly 1 non-keyword argument (5 given)
za (1, 2, 3, 4, 5) {'d': 'dd'} -> za() takes exactly 1 non-keyword argument (5 given)
za (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> za() takes exactly 1 non-keyword argument (5 given)
za (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() takes exactly 1 non-keyword argument (5 given)
zade () {} -> zade() takes at least 1 argument (0 given)
zade () {'a': 'aa'} -> ok zade aa B d e V a
zade () {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given)
zade () {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d
zade () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b'
zade (1, 2) {} -> ok zade 1 B 2 e V e
zade (1, 2) {'a': 'aa'} -> zade() got multiple values for keyword argument 'a'
zade (1, 2) {'d': 'dd'} -> zade() got multiple values for keyword argument 'd'
zade (1, 2) {'a': 'aa', 'd': 'dd'} -> zade() got multiple values for keyword argument 'a'
zade (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got multiple values for keyword argument 'a'
zade (1, 2, 3, 4, 5) {} -> zade() takes at most 3 arguments (5 given)
zade (1, 2, 3, 4, 5) {'a': 'aa'} -> zade() takes at most 3 non-keyword arguments (5 given)
zade (1, 2, 3, 4, 5) {'d': 'dd'} -> zade() takes at most 3 non-keyword arguments (5 given)
zade (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zade() takes at most 3 non-keyword arguments (5 given)
zade (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() takes at most 3 non-keyword arguments (5 given)
zabk () {} -> zabk() takes exactly 2 arguments (0 given)
zabk () {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given)
zabk () {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given)
zabk () {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (1 given)
zabk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'}
zabk (1, 2) {} -> ok zabk 1 2 D E V {}
zabk (1, 2) {'a': 'aa'} -> zabk() got multiple values for keyword argument 'a'
zabk (1, 2) {'d': 'dd'} -> ok zabk 1 2 D E V {'d': 'dd'}
zabk (1, 2) {'a': 'aa', 'd': 'dd'} -> zabk() got multiple values for keyword argument 'a'
zabk (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabk() got multiple values for keyword argument 'a'
zabk (1, 2, 3, 4, 5) {} -> zabk() takes exactly 2 arguments (5 given)
zabk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (5 given)
zabk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (5 given)
zabk (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (5 given)
zabk (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabk() takes exactly 2 non-keyword arguments (5 given)
zabdv () {} -> zabdv() takes at least 2 arguments (0 given)
zabdv () {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given)
zabdv () {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given)
zabdv () {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (1 given)
zabdv () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e'
zabdv (1, 2) {} -> ok zabdv 1 2 d E () e
zabdv (1, 2) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a'
zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E () d
zabdv (1, 2) {'a': 'aa', 'd': 'dd'} -> zabdv() got multiple values for keyword argument 'a'
zabdv (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got multiple values for keyword argument 'a'
zabdv (1, 2, 3, 4, 5) {} -> ok zabdv 1 2 3 E (4, 5) e
zabdv (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a'
zabdv (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdv() got multiple values for keyword argument 'd'
zabdv (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabdv() got multiple values for keyword argument 'a'
zabdv (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got multiple values for keyword argument 'a'
zabdevk () {} -> zabdevk() takes at least 2 arguments (0 given)
zabdevk () {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given)
zabdevk () {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given)
zabdevk () {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (1 given)
zabdevk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee () {}
zabdevk (1, 2) {} -> ok zabdevk 1 2 d e () {}
zabdevk (1, 2) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a'
zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e () {}
zabdevk (1, 2) {'a': 'aa', 'd': 'dd'} -> zabdevk() got multiple values for keyword argument 'a'
zabdevk (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdevk() got multiple values for keyword argument 'a'
zabdevk (1, 2, 3, 4, 5) {} -> ok zabdevk 1 2 3 4 (5,) {}
zabdevk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a'
zabdevk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdevk() got multiple values for keyword argument 'd'
zabdevk (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabdevk() got multiple values for keyword argument 'a'
zabdevk (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdevk() got multiple values for keyword argument 'a'

View file

@ -1,4 +0,0 @@
test_frozen
Hello world...
Hello world...
Hello world...

View file

@ -1,5 +0,0 @@
test_global
got SyntaxError as expected
got SyntaxError as expected
got SyntaxError as expected
as expected, no SyntaxError

View file

@ -1,69 +0,0 @@
test_grammar
1. Parser
1.1 Tokens
1.1.1 Backslashes
1.1.2 Numeric literals
1.1.2.1 Plain integers
1.1.2.2 Long integers
1.1.2.3 Floating point
1.1.3 String literals
1.2 Grammar
single_input
file_input
expr_input
eval_input
funcdef
lambdef
simple_stmt
expr_stmt
print_stmt
1 2 3
1 2 3
1 1 1
extended print_stmt
1 2 3
1 2 3
1 1 1
hello world
del_stmt
pass_stmt
flow_stmt
break_stmt
continue_stmt
continue + try/except ok
continue + try/finally ok
testing continue and break in try/except in loop
return_stmt
yield_stmt
raise_stmt
import_name
import_from
global_stmt
exec_stmt
assert_stmt
if_stmt
while_stmt
for_stmt
try_stmt
suite
test
comparison
binary mask ops
shift ops
additive ops
multiplicative ops
unary ops
selectors
[1, (1,), (1, 2), (1, 2, 3)]
atoms
classdef
['Apple', 'Banana', 'Coco nut']
[3, 6, 9, 12, 15]
[3, 4, 5]
[(1, 'Apple'), (1, 'Banana'), (1, 'Coconut'), (2, 'Apple'), (2, 'Banana'), (2, 'Coconut'), (3, 'Apple'), (3, 'Banana'), (3, 'Coconut'), (4, 'Apple'), (4, 'Banana'), (4, 'Coconut'), (5, 'Apple'), (5, 'Banana'), (5, 'Coconut')]
[(1, 'Banana'), (1, 'Coconut'), (2, 'Banana'), (2, 'Coconut'), (3, 'Banana'), (3, 'Coconut'), (4, 'Banana'), (4, 'Coconut'), (5, 'Banana'), (5, 'Coconut')]
[[1], [1, 1], [1, 2, 4], [1, 3, 9, 27], [1, 4, 16, 64, 256]]
[False, False, False]
[[1, 2], [3, 4], [5, 6]]
[('Boeing', 'Airliner'), ('Boeing', 'Engine'), ('Ford', 'Engine'), ('Macdonalds', 'Cheeseburger')]

View file

@ -1,13 +0,0 @@
test_httplib
reply: 'HTTP/1.1 200 Ok\r\n'
Text
reply: 'HTTP/1.1 400.100 Not Ok\r\n'
BadStatusLine raised as expected
InvalidURL raised as expected
InvalidURL raised as expected
reply: 'HTTP/1.1 200 OK\r\n'
header: Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
header: Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"
reply: 'HTTP/1.1 200 OK\r\n'
header: Content-Length: 14432

View file

@ -1,7 +0,0 @@
test_linuxaudiodev
expected rate >= 0, not -1
expected sample size >= 0, not -2
nchannels must be 1 or 2, not 3
unknown audio encoding: 177
for linear unsigned 16-bit little-endian audio, expected sample size 16, not 8
for linear unsigned 8-bit audio, expected sample size 8, not 16

View file

@ -1,525 +0,0 @@
test_logging
-- log_test0 begin ---------------------------------------------------
CRITICAL:ERR:Message 0
ERROR:ERR:Message 1
CRITICAL:INF:Message 2
ERROR:INF:Message 3
WARNING:INF:Message 4
INFO:INF:Message 5
CRITICAL:INF.UNDEF:Message 6
ERROR:INF.UNDEF:Message 7
WARNING:INF.UNDEF:Message 8
INFO:INF.UNDEF:Message 9
CRITICAL:INF.ERR:Message 10
ERROR:INF.ERR:Message 11
CRITICAL:INF.ERR.UNDEF:Message 12
ERROR:INF.ERR.UNDEF:Message 13
CRITICAL:DEB:Message 14
ERROR:DEB:Message 15
WARNING:DEB:Message 16
INFO:DEB:Message 17
DEBUG:DEB:Message 18
CRITICAL:UNDEF:Message 19
ERROR:UNDEF:Message 20
WARNING:UNDEF:Message 21
INFO:UNDEF:Message 22
CRITICAL:INF.BADPARENT.UNDEF:Message 23
CRITICAL:INF.BADPARENT:Message 24
INFO:INF:Finish up, it's closing time. Messages should bear numbers 0 through 24.
-- log_test0 end ---------------------------------------------------
-- log_test1 begin ---------------------------------------------------
-- setting logging level to 'Boring' -----
Boring:root:This should only be seen at the 'Boring' logging level (or lower)
Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower)
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Chatterbox' -----
Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower)
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Garrulous' -----
Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower)
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Talkative' -----
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Verbose' -----
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Sociable' -----
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Effusive' -----
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Terse' -----
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Taciturn' -----
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Silent' -----
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- Filtering at handler level to SOCIABLE --
-- setting logging level to 'Boring' -----
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Chatterbox' -----
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Garrulous' -----
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Talkative' -----
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Verbose' -----
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Sociable' -----
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Effusive' -----
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Terse' -----
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Taciturn' -----
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Silent' -----
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- Filtering using GARRULOUS filter --
-- setting logging level to 'Boring' -----
Boring:root:This should only be seen at the 'Boring' logging level (or lower)
Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Chatterbox' -----
Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Garrulous' -----
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Talkative' -----
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Verbose' -----
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Sociable' -----
Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Effusive' -----
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Terse' -----
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Taciturn' -----
Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Silent' -----
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- Filtering using specific filter for SOCIABLE, TACITURN --
-- setting logging level to 'Boring' -----
Boring:root:This should only be seen at the 'Boring' logging level (or lower)
Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Chatterbox' -----
Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Garrulous' -----
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Talkative' -----
Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Verbose' -----
Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Sociable' -----
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Effusive' -----
Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Terse' -----
Terse:root:This should only be seen at the 'Terse' logging level (or lower)
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Taciturn' -----
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- setting logging level to 'Silent' -----
Silent:root:This should only be seen at the 'Silent' logging level (or lower)
-- log_test1 end ---------------------------------------------------
-- log_test2 begin ---------------------------------------------------
-- logging at DEBUG, nothing should be seen yet --
-- logging at INFO, nothing should be seen yet --
-- logging at WARNING, 3 messages should be seen --
DEBUG:root:Debug message
INFO:root:Info message
WARNING:root:Warn message
-- logging 0 at INFO, messages should be seen every 10 events --
-- logging 1 at INFO, messages should be seen every 10 events --
-- logging 2 at INFO, messages should be seen every 10 events --
-- logging 3 at INFO, messages should be seen every 10 events --
-- logging 4 at INFO, messages should be seen every 10 events --
-- logging 5 at INFO, messages should be seen every 10 events --
-- logging 6 at INFO, messages should be seen every 10 events --
-- logging 7 at INFO, messages should be seen every 10 events --
-- logging 8 at INFO, messages should be seen every 10 events --
-- logging 9 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 0
INFO:root:Info index = 1
INFO:root:Info index = 2
INFO:root:Info index = 3
INFO:root:Info index = 4
INFO:root:Info index = 5
INFO:root:Info index = 6
INFO:root:Info index = 7
INFO:root:Info index = 8
INFO:root:Info index = 9
-- logging 10 at INFO, messages should be seen every 10 events --
-- logging 11 at INFO, messages should be seen every 10 events --
-- logging 12 at INFO, messages should be seen every 10 events --
-- logging 13 at INFO, messages should be seen every 10 events --
-- logging 14 at INFO, messages should be seen every 10 events --
-- logging 15 at INFO, messages should be seen every 10 events --
-- logging 16 at INFO, messages should be seen every 10 events --
-- logging 17 at INFO, messages should be seen every 10 events --
-- logging 18 at INFO, messages should be seen every 10 events --
-- logging 19 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 10
INFO:root:Info index = 11
INFO:root:Info index = 12
INFO:root:Info index = 13
INFO:root:Info index = 14
INFO:root:Info index = 15
INFO:root:Info index = 16
INFO:root:Info index = 17
INFO:root:Info index = 18
INFO:root:Info index = 19
-- logging 20 at INFO, messages should be seen every 10 events --
-- logging 21 at INFO, messages should be seen every 10 events --
-- logging 22 at INFO, messages should be seen every 10 events --
-- logging 23 at INFO, messages should be seen every 10 events --
-- logging 24 at INFO, messages should be seen every 10 events --
-- logging 25 at INFO, messages should be seen every 10 events --
-- logging 26 at INFO, messages should be seen every 10 events --
-- logging 27 at INFO, messages should be seen every 10 events --
-- logging 28 at INFO, messages should be seen every 10 events --
-- logging 29 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 20
INFO:root:Info index = 21
INFO:root:Info index = 22
INFO:root:Info index = 23
INFO:root:Info index = 24
INFO:root:Info index = 25
INFO:root:Info index = 26
INFO:root:Info index = 27
INFO:root:Info index = 28
INFO:root:Info index = 29
-- logging 30 at INFO, messages should be seen every 10 events --
-- logging 31 at INFO, messages should be seen every 10 events --
-- logging 32 at INFO, messages should be seen every 10 events --
-- logging 33 at INFO, messages should be seen every 10 events --
-- logging 34 at INFO, messages should be seen every 10 events --
-- logging 35 at INFO, messages should be seen every 10 events --
-- logging 36 at INFO, messages should be seen every 10 events --
-- logging 37 at INFO, messages should be seen every 10 events --
-- logging 38 at INFO, messages should be seen every 10 events --
-- logging 39 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 30
INFO:root:Info index = 31
INFO:root:Info index = 32
INFO:root:Info index = 33
INFO:root:Info index = 34
INFO:root:Info index = 35
INFO:root:Info index = 36
INFO:root:Info index = 37
INFO:root:Info index = 38
INFO:root:Info index = 39
-- logging 40 at INFO, messages should be seen every 10 events --
-- logging 41 at INFO, messages should be seen every 10 events --
-- logging 42 at INFO, messages should be seen every 10 events --
-- logging 43 at INFO, messages should be seen every 10 events --
-- logging 44 at INFO, messages should be seen every 10 events --
-- logging 45 at INFO, messages should be seen every 10 events --
-- logging 46 at INFO, messages should be seen every 10 events --
-- logging 47 at INFO, messages should be seen every 10 events --
-- logging 48 at INFO, messages should be seen every 10 events --
-- logging 49 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 40
INFO:root:Info index = 41
INFO:root:Info index = 42
INFO:root:Info index = 43
INFO:root:Info index = 44
INFO:root:Info index = 45
INFO:root:Info index = 46
INFO:root:Info index = 47
INFO:root:Info index = 48
INFO:root:Info index = 49
-- logging 50 at INFO, messages should be seen every 10 events --
-- logging 51 at INFO, messages should be seen every 10 events --
-- logging 52 at INFO, messages should be seen every 10 events --
-- logging 53 at INFO, messages should be seen every 10 events --
-- logging 54 at INFO, messages should be seen every 10 events --
-- logging 55 at INFO, messages should be seen every 10 events --
-- logging 56 at INFO, messages should be seen every 10 events --
-- logging 57 at INFO, messages should be seen every 10 events --
-- logging 58 at INFO, messages should be seen every 10 events --
-- logging 59 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 50
INFO:root:Info index = 51
INFO:root:Info index = 52
INFO:root:Info index = 53
INFO:root:Info index = 54
INFO:root:Info index = 55
INFO:root:Info index = 56
INFO:root:Info index = 57
INFO:root:Info index = 58
INFO:root:Info index = 59
-- logging 60 at INFO, messages should be seen every 10 events --
-- logging 61 at INFO, messages should be seen every 10 events --
-- logging 62 at INFO, messages should be seen every 10 events --
-- logging 63 at INFO, messages should be seen every 10 events --
-- logging 64 at INFO, messages should be seen every 10 events --
-- logging 65 at INFO, messages should be seen every 10 events --
-- logging 66 at INFO, messages should be seen every 10 events --
-- logging 67 at INFO, messages should be seen every 10 events --
-- logging 68 at INFO, messages should be seen every 10 events --
-- logging 69 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 60
INFO:root:Info index = 61
INFO:root:Info index = 62
INFO:root:Info index = 63
INFO:root:Info index = 64
INFO:root:Info index = 65
INFO:root:Info index = 66
INFO:root:Info index = 67
INFO:root:Info index = 68
INFO:root:Info index = 69
-- logging 70 at INFO, messages should be seen every 10 events --
-- logging 71 at INFO, messages should be seen every 10 events --
-- logging 72 at INFO, messages should be seen every 10 events --
-- logging 73 at INFO, messages should be seen every 10 events --
-- logging 74 at INFO, messages should be seen every 10 events --
-- logging 75 at INFO, messages should be seen every 10 events --
-- logging 76 at INFO, messages should be seen every 10 events --
-- logging 77 at INFO, messages should be seen every 10 events --
-- logging 78 at INFO, messages should be seen every 10 events --
-- logging 79 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 70
INFO:root:Info index = 71
INFO:root:Info index = 72
INFO:root:Info index = 73
INFO:root:Info index = 74
INFO:root:Info index = 75
INFO:root:Info index = 76
INFO:root:Info index = 77
INFO:root:Info index = 78
INFO:root:Info index = 79
-- logging 80 at INFO, messages should be seen every 10 events --
-- logging 81 at INFO, messages should be seen every 10 events --
-- logging 82 at INFO, messages should be seen every 10 events --
-- logging 83 at INFO, messages should be seen every 10 events --
-- logging 84 at INFO, messages should be seen every 10 events --
-- logging 85 at INFO, messages should be seen every 10 events --
-- logging 86 at INFO, messages should be seen every 10 events --
-- logging 87 at INFO, messages should be seen every 10 events --
-- logging 88 at INFO, messages should be seen every 10 events --
-- logging 89 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 80
INFO:root:Info index = 81
INFO:root:Info index = 82
INFO:root:Info index = 83
INFO:root:Info index = 84
INFO:root:Info index = 85
INFO:root:Info index = 86
INFO:root:Info index = 87
INFO:root:Info index = 88
INFO:root:Info index = 89
-- logging 90 at INFO, messages should be seen every 10 events --
-- logging 91 at INFO, messages should be seen every 10 events --
-- logging 92 at INFO, messages should be seen every 10 events --
-- logging 93 at INFO, messages should be seen every 10 events --
-- logging 94 at INFO, messages should be seen every 10 events --
-- logging 95 at INFO, messages should be seen every 10 events --
-- logging 96 at INFO, messages should be seen every 10 events --
-- logging 97 at INFO, messages should be seen every 10 events --
-- logging 98 at INFO, messages should be seen every 10 events --
-- logging 99 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 90
INFO:root:Info index = 91
INFO:root:Info index = 92
INFO:root:Info index = 93
INFO:root:Info index = 94
INFO:root:Info index = 95
INFO:root:Info index = 96
INFO:root:Info index = 97
INFO:root:Info index = 98
INFO:root:Info index = 99
-- logging 100 at INFO, messages should be seen every 10 events --
-- logging 101 at INFO, messages should be seen every 10 events --
INFO:root:Info index = 100
INFO:root:Info index = 101
-- log_test2 end ---------------------------------------------------
-- log_test3 begin ---------------------------------------------------
Unfiltered...
INFO:a:Info 1
INFO:a.b:Info 2
INFO:a.c:Info 3
INFO:a.b.c:Info 4
INFO:a.b.c.d:Info 5
INFO:a.bb.c:Info 6
INFO:b:Info 7
INFO:b.a:Info 8
INFO:c.a.b:Info 9
INFO:a.bb:Info 10
Filtered with 'a.b'...
INFO:a.b:Info 2
INFO:a.b.c:Info 4
INFO:a.b.c.d:Info 5
-- log_test3 end ---------------------------------------------------
-- log_test4 begin ---------------------------------------------------
config0: ok.
config1: ok.
config2: <type 'exceptions.AttributeError'>
config3: <type 'exceptions.KeyError'>
-- log_test4 end ---------------------------------------------------
-- log_test5 begin ---------------------------------------------------
ERROR:root:just testing
<type 'exceptions.KeyError'>... Don't panic!
-- log_test5 end ---------------------------------------------------
-- logrecv output begin ---------------------------------------------------
ERR -> CRITICAL: Message 0 (via logrecv.tcp.ERR)
ERR -> ERROR: Message 1 (via logrecv.tcp.ERR)
INF -> CRITICAL: Message 2 (via logrecv.tcp.INF)
INF -> ERROR: Message 3 (via logrecv.tcp.INF)
INF -> WARNING: Message 4 (via logrecv.tcp.INF)
INF -> INFO: Message 5 (via logrecv.tcp.INF)
INF.UNDEF -> CRITICAL: Message 6 (via logrecv.tcp.INF.UNDEF)
INF.UNDEF -> ERROR: Message 7 (via logrecv.tcp.INF.UNDEF)
INF.UNDEF -> WARNING: Message 8 (via logrecv.tcp.INF.UNDEF)
INF.UNDEF -> INFO: Message 9 (via logrecv.tcp.INF.UNDEF)
INF.ERR -> CRITICAL: Message 10 (via logrecv.tcp.INF.ERR)
INF.ERR -> ERROR: Message 11 (via logrecv.tcp.INF.ERR)
INF.ERR.UNDEF -> CRITICAL: Message 12 (via logrecv.tcp.INF.ERR.UNDEF)
INF.ERR.UNDEF -> ERROR: Message 13 (via logrecv.tcp.INF.ERR.UNDEF)
DEB -> CRITICAL: Message 14 (via logrecv.tcp.DEB)
DEB -> ERROR: Message 15 (via logrecv.tcp.DEB)
DEB -> WARNING: Message 16 (via logrecv.tcp.DEB)
DEB -> INFO: Message 17 (via logrecv.tcp.DEB)
DEB -> DEBUG: Message 18 (via logrecv.tcp.DEB)
UNDEF -> CRITICAL: Message 19 (via logrecv.tcp.UNDEF)
UNDEF -> ERROR: Message 20 (via logrecv.tcp.UNDEF)
UNDEF -> WARNING: Message 21 (via logrecv.tcp.UNDEF)
UNDEF -> INFO: Message 22 (via logrecv.tcp.UNDEF)
INF.BADPARENT.UNDEF -> CRITICAL: Message 23 (via logrecv.tcp.INF.BADPARENT.UNDEF)
INF.BADPARENT -> CRITICAL: Message 24 (via logrecv.tcp.INF.BADPARENT)
INF -> INFO: Finish up, it's closing time. Messages should bear numbers 0 through 24. (via logrecv.tcp.INF)
-- logrecv output end ---------------------------------------------------

View file

@ -1,28 +0,0 @@
test_math
math module, testing with eps 1e-05
constants
acos
asin
atan
atan2
ceil
cos
cosh
degrees
exp
fabs
floor
fmod
frexp
hypot
ldexp
log
log10
modf
pow
radians
sin
sinh
sqrt
tan
tanh

View file

@ -1,38 +0,0 @@
test_mmap
<type 'mmap.mmap'>
Position of foo: 1.0 pages
Length of file: 2.0 pages
Contents of byte 0: '\x00'
Contents of first 3 bytes: '\x00\x00\x00'
Modifying file's content...
Contents of byte 0: '3'
Contents of first 3 bytes: '3\x00\x00'
Contents of second page: '\x00foobar\x00'
Regex match on mmap (page start, length of match): 1.0 6
Seek to zeroth byte
Seek to 42nd byte
Seek to last byte
Try to seek to negative position...
Try to seek beyond end of mmap...
Try to seek to negative position...
Attempting resize()
Creating 10 byte test data file.
Opening mmap with access=ACCESS_READ
Ensuring that readonly mmap can't be slice assigned.
Ensuring that readonly mmap can't be item assigned.
Ensuring that readonly mmap can't be write() to.
Ensuring that readonly mmap can't be write_byte() to.
Ensuring that readonly mmap can't be resized.
Opening mmap with size too big
Opening mmap with access=ACCESS_WRITE
Modifying write-through memory map.
Opening mmap with access=ACCESS_COPY
Modifying copy-on-write memory map.
Ensuring copy-on-write maps cannot be resized.
Ensuring invalid access parameter raises exception.
Try opening a bad file descriptor...
Ensuring that passing 0 as map length sets map size to current file size.
Ensuring that passing 0 as map length sets map size to current file size.
anonymous mmap.mmap(-1, PAGESIZE)...
Test passed

View file

@ -1,7 +0,0 @@
test_new
new.module()
new.classobj()
new.instance()
new.instancemethod()
new.function()
new.code()

View file

@ -1,2 +0,0 @@
test_nis
nis.maps()

View file

@ -1,6 +0,0 @@
test_opcodes
2. Opcodes
XXX Not yet fully implemented
2.1 try inside for loop
2.2 raise class exceptions
2.3 comparing function objects

View file

@ -1,2 +0,0 @@
test_openpty
Ping!

View file

@ -1,21 +0,0 @@
test_operations
3. Operations
XXX Mostly not yet implemented
3.1 Dictionary lookups fail if __cmp__() raises an exception
raising error
d[x2] = 2: caught the RuntimeError outside
raising error
z = d[x2]: caught the RuntimeError outside
raising error
x2 in d: caught the RuntimeError outside
raising error
d.has_key(x2): caught the RuntimeError outside
raising error
d.get(x2): caught the RuntimeError outside
raising error
d.setdefault(x2, 42): caught the RuntimeError outside
raising error
d.pop(x2): caught the RuntimeError outside
raising error
d.update({x2: 2}): caught the RuntimeError outside
resize bugs not triggered.

View file

@ -1,2 +0,0 @@
test_ossaudiodev
playing test sound file (expected running time: 2.93 sec)

View file

@ -1,3 +0,0 @@
test_pep277
u'\xdf-\u66e8\u66e9\u66eb'
[u'Gr\xfc\xdf-Gott', u'abc', u'ascii', u'\u0393\u03b5\u03b9\u03ac-\u03c3\u03b1\u03c2', u'\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435', u'\u05d4\u05e9\u05e7\u05e6\u05e5\u05e1', u'\u306b\u307d\u3093', u'\u66e8\u05e9\u3093\u0434\u0393\xdf', u'\u66e8\u66e9\u66eb']

Some files were not shown because too many files have changed in this diff Show more